Diff for /loncom/interface/lonhtmlcommon.pm between versions 1.358.2.1 and 1.359

version 1.358.2.1, 2015/05/11 17:18:36 version 1.359, 2015/03/31 13:46:01
Line 482  the date/time fields are left empty. Line 482  the date/time fields are left empty.
 =item $state  =item $state
   
 Specifies the initial state of the form elements.  Either 'disabled' or empty.  Specifies the initial state of the form elements.  Either 'disabled' or empty.
 Defaults to empty, which indicates the form elements are not disabled.  Defaults to empty, which indiciates the form elements are not disabled. 
   
 =item $no_hh_mm_ss  
   
 If true, text boxes for hours, minutes and seconds are omitted.  
   
 =item $defhour  
   
 Default value for hours (a default of 0 is used otherwise).  
   
 =item $defmin  
   
 Default value for minutes (a default of 0 is used otherwise).  
   
 =item defsec  
   
 Default value for seconds (a default of 0 is used otherwise).  
   
 =item $nolink  
   
 If true, a "Select calendar" link (to pop-up a calendar) is not displayed  
 to the right of the items.  
   
 =item $no_mm_ss  
   
 If true, text boxes for minutes and seconds are omitted.  
   
 =item $no_ss  
   
 If true, text boxes for seconds are omitted.  
   
 =back  =back
   
Line 525  The method used to restrict user input w Line 496  The method used to restrict user input w
 ##############################################  ##############################################
 sub date_setter {  sub date_setter {
     my ($formname,$dname,$currentvalue,$special,$includeempty,$state,      my ($formname,$dname,$currentvalue,$special,$includeempty,$state,
         $no_hh_mm_ss,$defhour,$defmin,$defsec,$nolink,$no_mm_ss,$no_ss) = @_;          $no_hh_mm_ss,$defhour,$defmin,$defsec,$nolink) = @_;
     my $now = time;      my $now = time;
   
     my $tzname;      my $tzname;
Line 678  ENDJS Line 649  ENDJS
         $result .= &mt('[_1] [_2] [_3] ',          $result .= &mt('[_1] [_2] [_3] ',
                        $monthselector,$dayselector,$yearselector).                         $monthselector,$dayselector,$yearselector).
                    $tzone;                     $tzone;
     } elsif ($no_mm_ss) {          if (!$nolink) {
         $result .= &mt('[_1] [_2] [_3] [_4]',              $result .= &mt('[_1]Select Date[_2]',$cal_link,'</a>');
                       $monthselector,$dayselector,$yearselector,          }
                       $hourselector).  
                    $tzone;  
     } elsif ($no_ss) {  
         $result .= &mt('[_1] [_2] [_3] [_4] [_5]m',  
                       $monthselector,$dayselector,$yearselector,  
                       $hourselector,$minuteselector).  
                    $tzone;  
     } else {      } else {
         $result .= &mt('[_1] [_2] [_3] [_4] [_5]m [_6]s ',          $result .= &mt('[_1] [_2] [_3] [_4] [_5]m [_6]s ',
                       $monthselector,$dayselector,$yearselector,                        $monthselector,$dayselector,$yearselector,
                       $hourselector,$minuteselector,$secondselector).                        $hourselector,$minuteselector,$secondselector).
                    $tzone;                     $tzone;
     }          if (!$nolink) {
     if (!$nolink) {              $result .= &mt('[_1]Select Date[_2]',$cal_link,'</a>');
         $result .= &mt('[_1]Select Date[_2]',$cal_link,'</a>');          }
     }      }
     $result .= "</span>\n<!-- end $dname date setting form -->\n";      $result .= "</span>\n<!-- end $dname date setting form -->\n";
     return $result;      return $result;
Line 1342  sub htmlareaselectactive { Line 1306  sub htmlareaselectactive {
     }      }
           
     function startRichEditor(id) {      function startRichEditor(id) {
           // fix character entities inside <m>
           // NOTE: this is not fixing characters inside <parse>
           var ta = document.getElementById(id);
           var value = ta.value;
           var in_m = false; // in the m element
           var in_text = false; // in the text inside the m element
           var im = -1; // position of <m>
           var it = -1; // position of the text inside
           for (var i=0; i<value.length; i++) {
               if (value.substr(i, 2) == "<m") {
                   // ignore previous <m> if found twice
                   in_m = true;
                   in_text = false;
                   im = i;
                   it = -1;
               } else if (in_m) {
                   if (!in_text) {
                       if (value.charAt(i) == ">") {
                           in_text = true;
                           it = i+1;
                       }
                   } else if (value.substr(i, 4) == "</m>") {
                       in_m = false;
                       var text = value.substr(it, i-it);
                       var l1 = text.length;
                       text = text.replace(/</g, "&lt;");
                       text = text.replace(/>/g, "&gt;");
                       var l2 = text.length;
                       value = value.substr(0, it) + text + "</m>" + value.substr(i+4);
                       i = i + (l2-l1);
                   }
               }
           }
           ta.value = value;
     CKEDITOR.replace(id,       CKEDITOR.replace(id, 
     {      {
     customConfig: "/ckeditor/loncapaconfig.js",      customConfig: "/ckeditor/loncapaconfig.js",
Line 1353  sub htmlareaselectactive { Line 1351  sub htmlareaselectactive {
           
     function destroyRichEditor(id) {      function destroyRichEditor(id) {
     CKEDITOR.instances[id].destroy();      CKEDITOR.instances[id].destroy();
           // replace character entities &lt; and &gt; in <m>
           // and "&amp;fctname(" by "&fctname("
           // and the quotes inside functions: "&fct(1, &quot;a&quot;)" -> "&fct(1, "a")"
           var ta = document.getElementById(id);
           var value = ta.value;
           var in_m = false; // in the m element
           var in_text = false; // in the text inside the m element
           var im = -1; // position of <m>
           var it = -1; // position of the text inside
           for (var i=0; i<value.length; i++) {
               if (value.substr(i, 2) == "<m") {
                   // ignore previous <m> if found twice
                   in_m = true;
                   in_text = false;
                   im = i;
                   it = -1;
               } else if (in_m) {
                   if (!in_text) {
                       if (value.charAt(i) == ">") {
                           in_text = true;
                           it = i+1;
                       }
                   } else if (value.substr(i, 4) == "</m>") {
                       in_m = false;
                       var text = value.substr(it, i-it);
                       var l1 = text.length;
                       text = text.replace(/&lt;/g, "<");
                       text = text.replace(/&gt;/g, ">");
                       var l2 = text.length;
                       value = value.substr(0, it) + text + "</m>" + value.substr(i+4);
                       i = i + (l2-l1);
                   }
               }
           }
           // fix function names
           value = value.replace(/&amp;([a-zA-Z_]+)\(/g, "&$1(");
           // fix quotes in functions
           var pos_next_fct = value.search(/&[a-zA-Z_]+\(/);
           var depth = 0;
           for (var i=0; i<value.length; i++) {
               if (i == pos_next_fct) {
                   depth++;
                   var sub = value.substring(i+1);
                   var pos2 = sub.search(/&[a-zA-Z_]+\(/);
                   if (pos2 == -1)
                       pos_next_fct = -1;
                   else
                       pos_next_fct = i + 1 + pos2;
               } else if (depth > 0) {
                   if (value.charAt(i) == ")")
                       depth--;
                   else if (value.substr(i, 6) == "&quot;")
                       value = value.substr(0, i) + "\"" + value.substr(i+6);
               }
           }
           // replace the text value
           ta.value = value;
     }      }
           
     function editorHandler(event) {      function editorHandler(event) {
Line 3647  add_item_funclist Line 3702  add_item_funclist
 Inputs: ./.  Inputs: ./.
   
 Returns: HTML code with function list end  Returns: HTML code with function list end
   
 =cut  =cut
   
 sub end_funclist {  sub end_funclist {
Line 3691  sub funclist_from_array { Line 3745  sub funclist_from_array {
   
 =pod  =pod
   
 =over  
   
 =item &actionbox( \@array )  =item &actionbox( \@array )
   
 Constructs a XHTML list from \@array with the first item being visually  Constructs a XHTML list from \@array with the first item being visually
Line 3710  A reference to the array containing text Line 3762  A reference to the array containing text
   
 =back  =back
     
 Returns: XHTML div as string.  Returns: XHTML div as string. 
   
 =back  =back
   

Removed from v.1.358.2.1  
changed lines
  Added in v.1.359


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>