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

version 1.358.2.11.2.2, 2018/04/29 16:30:35 version 1.359, 2015/03/31 13:46:01
Line 92  sub raw_href_to_link { Line 92  sub raw_href_to_link {
   
 sub entity_encode {  sub entity_encode {
     my ($text)=@_;      my ($text)=@_;
     return &HTML::Entities::encode($text, '\'<>&"');      return &HTML::Entities::encode($text, '<>&"');
 }  }
   
 sub direct_parm_link {  sub direct_parm_link {
Line 407  sub textbox { Line 407  sub textbox {
 ##############################################  ##############################################
 ##############################################  ##############################################
 sub checkbox {  sub checkbox {
     my ($name,$checked,$value,$special) = @_;      my ($name,$checked,$value) = @_;
     my $Str = '<input type="checkbox" name="'.$name.'" ';      my $Str = '<input type="checkbox" name="'.$name.'" ';
     if (defined($value)) {      if (defined($value)) {
         $Str .= 'value="'.$value.'"';          $Str .= 'value="'.$value.'"';
Line 415  sub checkbox { Line 415  sub checkbox {
     if ($checked) {      if ($checked) {
         $Str .= ' checked="checked"';          $Str .= ' checked="checked"';
     }      }
     $Str .= $special.' />';      $Str .= ' />';
     return $Str;      return $Str;
 }  }
   
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 534  sub date_setter { Line 505  sub date_setter {
   
     if (! defined($state) || $state ne 'disabled') {      if (! defined($state) || $state ne 'disabled') {
         $state = '';          $state = '';
     } else {  
         $state = 'disabled="disabled"';  
     }      }
     if (! defined($no_hh_mm_ss)) {      if (! defined($no_hh_mm_ss)) {
         $no_hh_mm_ss = 0;          $no_hh_mm_ss = 0;
Line 680  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 1160  sub Close_PrgWin { Line 1122  sub Close_PrgWin {
 # ------------------------------------------------------- Puts directory header  # ------------------------------------------------------- Puts directory header
   
 sub crumbs {  sub crumbs {
     my ($uri,$target,$prefix,$form,$skiplast,$onclick)=@_;      my ($uri,$target,$prefix,$form,$skiplast)=@_;
 # You cannot crumbnify uploaded or adm resources  # You cannot crumbnify uploaded or adm resources
     if ($uri=~/^\/*(uploaded|adm)\//) { return &mt('(Internal Course/Community Content)'); }      if ($uri=~/^\/*(uploaded|adm)\//) { return &mt('(Internal Course/Group Content)'); }
     if ($target) {      if ($target) {
         $target = ' target="'.          $target = ' target="'.
                   &Apache::loncommon::escape_single($target).'"';                    &Apache::loncommon::escape_single($target).'"';
Line 1182  sub crumbs { Line 1144  sub crumbs {
             } else {              } else {
                 $path.='/';                   $path.='/'; 
             }              }
             if ($path eq '/res/') {  
                 unless (&Apache::lonnet::allowed('bre',$path)) {  
                     $output.="$dir/";  
                     next;  
                 }  
             }  
             my $href_path = &HTML::Entities::encode($path,'<>&"');              my $href_path = &HTML::Entities::encode($path,'<>&"');
             &Apache::loncommon::inhibit_menu_check(\$href_path);              &Apache::loncommon::inhibit_menu_check(\$href_path);
             if ($form) {              if ($form) {
                 my $href = 'javascript:'.$form.".action='".$href_path."';".$form.'.submit();';                  my $href = 'javascript:'.$form.".action='".$href_path."';".$form.'.submit();';
                 $output.=qq{<a href="$href"$onclick$target>$dir</a>/};                  $output.=qq{<a href="$href"$target>$dir</a>/};
             } else {              } else {
                 $output.=qq{<a href="$href_path"$onclick$target>$dir</a>/};                  $output.=qq{<a href="$href_path"$target>$dir</a>/};
             }              }
         }          }
     } else {      } else {
Line 1265  sub htmlareaheaders { Line 1221  sub htmlareaheaders {
 ENDEDITOR  ENDEDITOR
  }   }
     $s.=(<<ENDJQUERY);      $s.=(<<ENDJQUERY);
 <script type="text/javascript" src="/adm/jQuery/js/jquery-1.11.3.min.js"></script>  <script type="text/javascript" src="/adm/jQuery/js/jquery-1.6.2.min.js"></script>
 <script type="text/javascript" src="/adm/jQuery/js/jquery-ui-1.11.4.custom.min.js"></script>  <script type="text/javascript" src="/adm/jQuery/js/jquery-ui-1.8.16.custom.min.js"></script>
 <link rel="stylesheet" type="text/css" href="/adm/jQuery/css/smoothness/jquery-ui-1.11.4.custom.css" />  <link rel="stylesheet" type="text/css" href="/adm/jQuery/css/smoothness/jquery-ui-1.8.16.custom.css" />
 <script type="text/javascript" src="/adm/jpicker/js/jpicker-1.1.6.min.js" >  <script type="text/javascript" src="/adm/jpicker/js/jpicker-1.1.6.min.js" >
 </script>  </script>
 <link rel="stylesheet" type="text/css" href="/adm/jpicker/css/jPicker-1.1.6.min.css" />  <link rel="stylesheet" type="text/css" href="/adm/jpicker/css/jPicker-1.1.6.min.css" />
Line 1352  sub htmlareaselectactive { Line 1308  sub htmlareaselectactive {
     function startRichEditor(id) {      function startRichEditor(id) {
         // fix character entities inside <m>          // fix character entities inside <m>
         // NOTE: this is not fixing characters inside <parse>          // NOTE: this is not fixing characters inside <parse>
         // NOTE: < and > inside <chem> should fix automatically because there should not be a letter after <.  
         var ta = document.getElementById(id);          var ta = document.getElementById(id);
         var value = ta.value;          var value = ta.value;
         var in_m = false; // in the m element          var in_m = false; // in the m element
Line 1396  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 <chem>          // replace character entities &lt; and &gt; in <m>
         // and "&amp;fctname(" by "&fctname("          // and "&amp;fctname(" by "&fctname("
         // and the quotes inside functions: "&fct(1, &quot;a&quot;)" -> "&fct(1, "a")"          // and the quotes inside functions: "&fct(1, &quot;a&quot;)" -> "&fct(1, "a")"
         var ta = document.getElementById(id);          var ta = document.getElementById(id);
         var value = ta.value;          var value = ta.value;
         var in_element = false; // in the m or chem element          var in_m = false; // in the m element
         var tagname = ""; // m or chem          var in_text = false; // in the text inside the m element
         var in_text = false; // in the text inside the element          var im = -1; // position of <m>
         var im = -1; // position of start tag  
         var it = -1; // position of the text inside          var it = -1; // position of the text inside
         for (var i=0; i<value.length; i++) {          for (var i=0; i<value.length; i++) {
             if (value.substr(i, 2) == "<m" || value.substr(i, 5) == "<chem") {              if (value.substr(i, 2) == "<m") {
                 // ignore previous tags if found twice                  // ignore previous <m> if found twice
                 in_element = true;                  in_m = true;
                 if (value.substr(i, 2) == "<m")  
                     tagname = "m";  
                 else  
                     tagname = "chem";  
                 in_text = false;                  in_text = false;
                 im = i;                  im = i;
                 it = -1;                  it = -1;
             } else if (in_element) {              } else if (in_m) {
                 if (!in_text) {                  if (!in_text) {
                     if (value.charAt(i) == ">") {                      if (value.charAt(i) == ">") {
                         in_text = true;                          in_text = true;
                         it = i+1;                          it = i+1;
                     }                      }
                 } else if (value.substr(i, 3+tagname.length) == "</"+tagname+">") {                  } else if (value.substr(i, 4) == "</m>") {
                     in_element = false;                      in_m = false;
                     var text = value.substr(it, i-it);                      var text = value.substr(it, i-it);
                     var l1 = text.length;                      var l1 = text.length;
                     text = text.replace(/&lt;/g, "<");                      text = text.replace(/&lt;/g, "<");
                     text = text.replace(/&gt;/g, ">");                      text = text.replace(/&gt;/g, ">");
                     var l2 = text.length;                      var l2 = text.length;
                     value = value.substr(0, it) + text + value.substr(i);                      value = value.substr(0, it) + text + "</m>" + value.substr(i+4);
                     i = i + (l2-l1);                      i = i + (l2-l1);
                 }                  }
             }              }
Line 1690  sub show_return_link { Line 1640  sub show_return_link {
             (($env{'request.noversionuri'}=~/^\/adm\//) &&              (($env{'request.noversionuri'}=~/^\/adm\//) &&
              ($env{'request.noversionuri'}!~/^\/adm\/wrapper\//) &&               ($env{'request.noversionuri'}!~/^\/adm\/wrapper\//) &&
              ($env{'request.noversionuri'}!~               ($env{'request.noversionuri'}!~
               m{^/adm/.*/(smppg|bulletinboard|ext\.tool)($|\?)})                m{^/adm/.*/(smppg|bulletinboard)($|\?)})
            ));             ));
 }  }
   
Line 1765  A link to help for the component will be Line 1715  A link to help for the component will be
 All inputs can be undef without problems.  All inputs can be undef without problems.
   
 Inputs: $component (the text on the right side of the breadcrumbs trail),  Inputs: $component (the text on the right side of the breadcrumbs trail),
         $component_help (the help item filename (without .tex extension).          $component_help
         $menulink (boolean, controls whether to include a link to /adm/menu)          $menulink (boolean, controls whether to include a link to /adm/menu)
         $helplink (if 'nohelp' don't include the orange help link)          $helplink (if 'nohelp' don't include the orange help link)
         $css_class (optional name for the class to apply to the table for CSS)          $css_class (optional name for the class to apply to the table for CSS)
         $no_mt (optional flag, 1 if &mt() is _not_ to be applied to $component          $no_mt (optional flag, 1 if &mt() is _not_ to be applied to $component
            when including the text on the right.             when including the text on the right.
         $CourseBreadcrumbs (optional flag, 1 if &breadcrumbs called from &docs_breadcrumbs,  
            because breadcrumbs are being)  
         $topic_help (optional help item to be displayed on right side of the breadcrumbs   
            row, using loncommon::help_open_topic() to generate the link.  
         $topic_help_text (text to include in the link in the optional help item   
            on the right side of the breadcrumbs row.  
   
 Returns a string containing breadcrumbs for the current page.  Returns a string containing breadcrumbs for the current page.
   
 =item &clear_breadcrumbs()  =item &clear_breadcrumbs()
Line 1805  returns: nothing Line 1748  returns: nothing
           
     sub breadcrumbs {      sub breadcrumbs {
         my ($component,$component_help,$menulink,$helplink,$css_class,$no_mt,           my ($component,$component_help,$menulink,$helplink,$css_class,$no_mt, 
             $CourseBreadcrumbs,$topic_help,$topic_help_text) = @_;              $CourseBreadcrumbs) = @_;
         #          #
         $css_class ||= 'LC_breadcrumbs';          $css_class ||= 'LC_breadcrumbs';
   
Line 1830  returns: nothing Line 1773  returns: nothing
                     $env{'course.'.$env{'request.course.id'}.'.description'};                      $env{'course.'.$env{'request.course.id'}.'.description'};
                 $no_mt_descr = 1;                  $no_mt_descr = 1;
                 if ($env{'request.noversionuri'} =~                   if ($env{'request.noversionuri'} =~ 
                     m{^/?public/($match_domain)/($match_courseid)/syllabus$}) {                      m{^/public/($match_domain)/($match_courseid)/syllabus$}) {
                     unless (($env{'course.'.$env{'request.course.id'}.'.domain'} eq $1) &&                      unless (($env{'course.'.$env{'request.course.id'}.'.domain'} eq $1) &&
                             ($env{'course.'.$env{'request.course.id'}.'.num'} eq $2)) {                              ($env{'course.'.$env{'request.course.id'}.'.num'} eq $2)) {
                         $description = 'Menu';                          $description = 'Menu';
Line 1912  returns: nothing Line 1855  returns: nothing
                                                          $component_help,                                                           $component_help,
                                                          $faq,$bug);                                                           $faq,$bug);
         }          }
         if ($topic_help && $topic_help_text) {  
            $icons .= ' '.&Apache::loncommon::help_open_topic($topic_help,&mt($topic_help_text),'',  
                                                              undef,600);  
         }  
         #          #
   
   
Line 1928  returns: nothing Line 1867  returns: nothing
         }          }
   
   
         if (($component) || ($topic_help && $topic_help_text)) {          if ($component) {
             $links = &htmltag('span',               $links = &htmltag('span', 
                              ( $no_mt ? $component : mt($component) ).                               ( $no_mt ? $component : mt($component) ).
                              ( $icons ? $icons : '' ),                               ( $icons ? $icons : '' ),
Line 2031  returns: nothing Line 1970  returns: nothing
         undef(%tools);          undef(%tools);
     }      }
   
 =item &current_breadcrumb_tools()  
   
 returns: a hash containing the current breadcrumb tools.  
   
 =cut  
   
     sub current_breadcrumb_tools {  
         return %tools;  
     }  
   
 =item &render_tools(\$breadcrumbs)  =item &render_tools(\$breadcrumbs)
   
 Creates html for breadcrumb tools (categories navigation and tools) and inserts   Creates html for breadcrumb tools (categories navigation and tools) and inserts 
Line 2403  sub course_selection { Line 2332  sub course_selection {
     if ($totcodes > 0) {      if ($totcodes > 0) {
         my $numtitles = @$codetitles;          my $numtitles = @$codetitles;
         if ($numtitles > 0) {          if ($numtitles > 0) {
             $output .= '<label><input type="radio" name="coursepick" value="category" onclick="coursePick(this.form);alert('."'".&html_escape(&mt('Choose categories, from left to right'))."'".')" />'.&mt('Pick courses by category:').'</label><br />';              $output .= '<label><input type="radio" name="coursepick" value="category" onclick="coursePick(this.form);alert('."'".&mt('Choose categories, from left to right')."'".')" />'.&mt('Pick courses by category:').'</label><br />';
             $output .= '<table><tr><td>'.$$codetitles[0].'<br />'."\n".              $output .= '<table><tr><td>'.$$codetitles[0].'<br />'."\n".
                '<select name="'.$standardnames->[0].                 '<select name="'.$standardnames->[0].
                '" onchange="setPick(this.form);courseSet('."'$$codetitles[0]'".')">'."\n".                 '" onchange="setPick(this.form);courseSet('."'$$codetitles[0]'".')">'."\n".
Line 2582  sub resource_info_box { Line 2511  sub resource_info_box {
 #  #
   
 sub display_usage {  sub display_usage {
     my ($current_disk_usage,$disk_quota,$context) = @_;      my ($current_disk_usage,$disk_quota) = @_;
     my $usage = $current_disk_usage/1024;      my $usage = $current_disk_usage/1000;
     my $quota = $disk_quota/1024;      my $quota = $disk_quota/1000;
     my $percent;      my $percent;
     if ($disk_quota == 0) {      if ($disk_quota == 0) {
         $percent = 100.0;          $percent = 100.0;
Line 2608  sub display_usage { Line 2537  sub display_usage {
     if ($prog_width > 100) {      if ($prog_width > 100) {
         $prog_width = 100;          $prog_width = 100;
     }      }
     my $display = 'block';  
     if ($context eq 'authoring') {  
         $display = 'inline';  
     }  
     return '      return '
   <div id="meter1" align="left" style="display:'.$display.'" '.$cssclass.'>'.&mt('Currently using [_1] of the [_2] available.',$usage.' MB <span style="font-weight:bold;">('.$percent.'%)</span>',$quota.' MB')."\n".    <div id="meter1" align="left" '.$cssclass.'>'.&mt('Currently using [_1] of the [_2] available.',$usage.' MB <span style="font-weight:bold;">('.$percent.'%)</span>',$quota.' MB')."\n".
 '   <div id="meter2" style="display:block; margin-top:3px; margin-bottom:3px; margin-left:0px; margin-right:0px; width:400px; border:1px solid #000000; height:10px;">'."\n".  '   <div id="meter2" style="display:block; margin-top:5px; margin-bottom:5px; margin-left:0px; margin-right:0px; width:400px; border:1px solid #000000; height:10px;">'."\n".
 '    <div id="meter3" style="display:block; background-color:'.$color.'; width:'.$prog_width.'%; height:10px; color:#000000; margin:0px;"></div>'."\n".  '    <div id="meter3" style="display:block; background-color:'.$color.'; width:'.$prog_width.'%; height:10px; color:#000000; margin:0px;"></div>'."\n".
 '   </div>'."\n".  '   </div>'."\n".
 '  </div>';  '  </div>';
Line 2864  sub set_form_elements { Line 2789  sub set_form_elements {
   
 sub file_submissionchk_js {  sub file_submissionchk_js {
     my ($turninpaths,$multiples) = @_;      my ($turninpaths,$multiples) = @_;
     my $overwritewarn = &mt('File(s) you uploaded for your submission will overwrite existing file(s) submitted for this item')."\n".      my $overwritewarn = &mt('File(s) you uploaded for your submission will overwrite existing file(s) submitted for this item').'\\n'.
                       &mt('Continue submission and overwrite the file(s)?');                        &mt('Continue submission and overwrite the file(s)?');
     &js_escape(\$overwritewarn);      my $delfilewarn = &mt('You have indicated you wish to remove some files previously included in your submission.').'\\n'.
     my $delfilewarn = &mt('You have indicated you wish to remove some files previously included in your submission.')."\n".  
                       &mt('Continue submission with these files removed?');                        &mt('Continue submission with these files removed?');
     &js_escape(\$delfilewarn);  
     my ($turninpathtext,$multtext,$arrayindexofjs);      my ($turninpathtext,$multtext,$arrayindexofjs);
     if (ref($turninpaths) eq 'HASH') {      if (ref($turninpaths) eq 'HASH') {
         foreach my $key (sort(keys(%{$turninpaths}))) {          foreach my $key (sort(keys(%{$turninpaths}))) {
Line 3374  THIRD Line 3297  THIRD
 ##############################################  ##############################################
   
 sub javascript_jumpto_resource {  sub javascript_jumpto_resource {
     my $confirm_switch = &mt("Editing requires switching to the resource's home server.")."\n".      my $confirm_switch = &mt("Editing requires switching to the resource's home server.").'\n'.
                          &mt('Switch server?');                           &mt('Switch server?');
     &js_escape(\$confirm_switch);  
     return (<<ENDUTILITY)      return (<<ENDUTILITY)
   
 function go(url) {  function go(url) {
Line 3402  ENDUTILITY Line 3324  ENDUTILITY
   
 sub jump_to_editres {  sub jump_to_editres {
     my ($cfile,$home,$switchserver,$forceedit,$forcereg,$symb,$folderpath,      my ($cfile,$home,$switchserver,$forceedit,$forcereg,$symb,$folderpath,
         $title,$idx,$suppurl,$todocs,$suppanchor) = @_;          $title,$idx,$suppurl,$todocs) = @_;
     my ($jscall,$anchor);      my $jscall;
     if ($switchserver) {      if ($switchserver) {
         if ($home) {          if ($home) {
             $cfile = '/adm/switchserver?otherserver='.$home.'&amp;role='.              $cfile = '/adm/switchserver?otherserver='.$home.'&amp;role='.
Line 3423  sub jump_to_editres { Line 3345  sub jump_to_editres {
         }          }
     } else {      } else {
         unless ($cfile =~ m{^/priv/}) {          unless ($cfile =~ m{^/priv/}) {
             if ($cfile =~ m{^(/adm/wrapper/ext/[^#]+)#([^#]+)$}) {  
                 $cfile = $1;  
                 $anchor = $2;  
             }  
             if ($symb) {              if ($symb) {
                 if ($anchor ne '') {  
                     if ($symb =~ m{^([^#]+)\Q#$anchor\E$}) {  
                         $symb = $1.&escape(&escape('#')).$anchor;  
                     }  
                 }  
                 $cfile .= (($cfile=~/\?/)?'&amp;':'?')."symb=$symb";                  $cfile .= (($cfile=~/\?/)?'&amp;':'?')."symb=$symb";
             } elsif ($folderpath) {              } elsif ($folderpath) {
                 $cfile .= (($cfile=~/\?/)?'&amp;':'?').                  $cfile .= (($cfile=~/\?/)?'&amp;':'?').
Line 3456  sub jump_to_editres { Line 3369  sub jump_to_editres {
                 $cfile .= (($cfile=~/\?/)?'&amp;':'?').'register=1';                  $cfile .= (($cfile=~/\?/)?'&amp;':'?').'register=1';
             }              }
             if ($todocs) {              if ($todocs) {
                 $cfile .= (($cfile=~/\?/)?'&amp;':'?').'todocs=1';                 $cfile .= (($cfile=~/\?/)?'&amp;':'?').'todocs=1';
             }  
             if ($suppanchor ne '') {  
                 $cfile .= (($cfile=~/\?/)?'&amp;':'?').'anchor='.  
                           &HTML::Entities::encode($suppanchor,'"<>&');  
             }              }
         }          }
         if ($anchor ne '') {  
             $cfile .= '#'.$anchor;  
         }  
         $jscall = "go('".&Apache::loncommon::escape_single($cfile)."')";          $jscall = "go('".&Apache::loncommon::escape_single($cfile)."')";
     }      }
     return $jscall;      return $jscall;
Line 3796  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 3840  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 3859  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.11.2.2  
changed lines
  Added in v.1.359


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