Diff for /loncom/interface/lonhtmlcommon.pm between versions 1.361 and 1.375

version 1.361, 2015/04/24 21:31:56 version 1.375, 2016/10/31 12:59:03
Line 484  the date/time fields are left empty. Line 484  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 indiciates the form elements are not disabled.   Defaults to empty, which indicates 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 500  The method used to restrict user input w Line 529  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_hh_mm_ss,$defhour,$defmin,$defsec,$nolink,$no_mm_ss,$no_ss) = @_;
     my $now = time;      my $now = time;
   
     my $tzname;      my $tzname;
Line 509  sub date_setter { Line 538  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 644  ENDJS Line 675  ENDJS
     my $minuteselector = qq{<input type="text" name="$dname\_minute" $special $state value="$min" size="3" />};      my $minuteselector = qq{<input type="text" name="$dname\_minute" $special $state value="$min" size="3" />};
     my $secondselector= qq{<input type="text" name="$dname\_second" $special $state value="$sec" size="3" />};      my $secondselector= qq{<input type="text" name="$dname\_second" $special $state value="$sec" size="3" />};
     my $cal_link;      my $cal_link;
     if (!$nolink) {      unless (($nolink) || ($state eq 'disabled')) {
         $cal_link = qq{<a href="javascript:$dname\_opencalendar()">};          $cal_link = qq{<a href="javascript:$dname\_opencalendar()">};
     }      }
     #      #
Line 653  ENDJS Line 684  ENDJS
         $result .= &mt('[_1] [_2] [_3] ',          $result .= &mt('[_1] [_2] [_3] ',
                        $monthselector,$dayselector,$yearselector).                         $monthselector,$dayselector,$yearselector).
                    $tzone;                     $tzone;
         if (!$nolink) {      } elsif ($no_mm_ss) {
             $result .= &mt('[_1]Select Date[_2]',$cal_link,'</a>');          $result .= &mt('[_1] [_2] [_3] [_4]',
         }                        $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) {      }
             $result .= &mt('[_1]Select Date[_2]',$cal_link,'</a>');      unless (($nolink) || ($state eq 'disabled')) {
         }          $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 1156  sub Close_PrgWin { Line 1196  sub Close_PrgWin {
 # ------------------------------------------------------- Puts directory header  # ------------------------------------------------------- Puts directory header
   
 sub crumbs {  sub crumbs {
     my ($uri,$target,$prefix,$form,$skiplast)=@_;      my ($uri,$target,$prefix,$form,$skiplast,$onclick)=@_;
 # You cannot crumbnify uploaded or adm resources  # You cannot crumbnify uploaded or adm resources
     if ($uri=~/^\/*(uploaded|adm)\//) { return &mt('(Internal Course/Group Content)'); }      if ($uri=~/^\/*(uploaded|adm)\//) { return &mt('(Internal Course/Group Content)'); }
     if ($target) {      if ($target) {
Line 1182  sub crumbs { Line 1222  sub crumbs {
             &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"$target>$dir</a>/};                  $output.=qq{<a href="$href"$onclick$target>$dir</a>/};
             } else {              } else {
                 $output.=qq{<a href="$href_path"$target>$dir</a>/};                  $output.=qq{<a href="$href_path"$onclick$target>$dir</a>/};
             }              }
         }          }
     } else {      } else {
Line 1255  sub htmlareaheaders { Line 1295  sub htmlareaheaders {
 ENDEDITOR  ENDEDITOR
  }   }
     $s.=(<<ENDJQUERY);      $s.=(<<ENDJQUERY);
 <script type="text/javascript" src="/adm/jQuery/js/jquery-1.6.2.min.js"></script>  <script type="text/javascript" src="/adm/jQuery/js/jquery-1.11.3.min.js"></script>
 <script type="text/javascript" src="/adm/jQuery/js/jquery-ui-1.8.16.custom.min.js"></script>  <script type="text/javascript" src="/adm/jQuery/js/jquery-ui-1.11.4.custom.min.js"></script>
 <link rel="stylesheet" type="text/css" href="/adm/jQuery/css/smoothness/jquery-ui-1.8.16.custom.css" />  <link rel="stylesheet" type="text/css" href="/adm/jQuery/css/smoothness/jquery-ui-1.11.4.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 1666  sub show_return_link { Line 1706  sub show_return_link {
     if ($env{'request.noversionuri'}=~m{^/priv/} ||      if ($env{'request.noversionuri'}=~m{^/priv/} ||
         $env{'request.uri'}=~m{^/priv/}) { return 1; }          $env{'request.uri'}=~m{^/priv/}) { return 1; }
     return if ($env{'request.noversionuri'} eq '/adm/supplemental');      return if ($env{'request.noversionuri'} eq '/adm/supplemental');
       return if (($env{'course.'.$env{'request.course.id'}.'.type'} eq 'Placement') &&
                  (!$env{'request.role.adv'}));
     if (($env{'request.noversionuri'} =~ m{^/adm/(viewclasslist|navmaps)($|\?)})      if (($env{'request.noversionuri'} =~ m{^/adm/(viewclasslist|navmaps)($|\?)})
         || ($env{'request.noversionuri'} =~ m{^/adm/.*/aboutme($|\?)})) {          || ($env{'request.noversionuri'} =~ m{^/adm/.*/aboutme($|\?)})) {
   
Line 1680  sub show_return_link { Line 1721  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)($|\?)})                m{^/adm/.*/(smppg|bulletinboard|exttools?)($|\?)})
            ));             ));
 }  }
   
Line 1766  the text on the right side of the breadc Line 1807  the text on the right side of the breadc
   
 =item $component_help  =item $component_help
   
   the help item filename (without .tex extension).
   
 =item $menulink  =item $menulink
   
 boolean, controls whether to include a link to /adm/menu  boolean, controls whether to include a link to /adm/menu
Line 1773  boolean, controls whether to include a l Line 1816  boolean, controls whether to include a l
 =item $helplink  =item $helplink
   
 if 'nohelp' don't include the orange help link  if 'nohelp' don't include the orange help link
           
 =item $css_class  =item $css_class
   
 optional name for the class to apply to the table for CSS  optional name for the class to apply to the table for CSS
           
 =item $no_mt   =item $no_mt 
   
 optional flag, 1 if &mt() is _not_ to be applied to $component when including the text on the right  optional flag, 1 if &mt() is _not_ to be applied to $component when including the text on the right
   
   =item $CourseBreadcrumbs
   
   optional flag, 1 if &breadcrumbs called from &docs_breadcrumbs, because breadcrumbs are being
   used to display hierarchy for current folder shown in the Course Editor. 
   
   =item $topic_help
   
   optional help item to be displayed on right side of the breadcrumbs row, using 
   loncommon::help_open_topic() to generate the link. 
   
   =item $topic_help_text
   
   text to include in the link in the optional help item ($topic_help) on the right
   side of the breadcrumbs row.
   
 =back  =back
   
 =back  =back
Line 1813  returns: nothing Line 1871  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) = @_;              $CourseBreadcrumbs,$topic_help,$topic_help_text,$crstype) = @_;
         #          #
         $css_class ||= 'LC_breadcrumbs';          $css_class ||= 'LC_breadcrumbs';
   
Line 1828  returns: nothing Line 1886  returns: nothing
         #          #
         # The first one should be the course or a menu link          # The first one should be the course or a menu link
         if (!defined($menulink)) { $menulink=1; }          if (!defined($menulink)) { $menulink=1; }
           if ((($crstype eq 'Placement') || (($env{'request.course.id'}) &&
               ($env{'course.'.$env{'request.course.id'}.'.type'} eq 'Placement'))) &&
               (!$env{'request.role.adv'})) {
               undef($menulink);
           }
         if ($menulink) {          if ($menulink) {
             my $description = 'Menu';              my $description = 'Menu';
             my $no_mt_descr = 0;              my $no_mt_descr = 0;
Line 1920  returns: nothing Line 1983  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 1932  returns: nothing Line 1999  returns: nothing
         }          }
   
   
         if ($component) {          if (($component) || ($topic_help && $topic_help_text)) {
             $links = &htmltag('span',               $links = &htmltag('span', 
                              ( $no_mt ? $component : mt($component) ).                               ( $no_mt ? $component : mt($component) ).
                              ( $icons ? $icons : '' ),                               ( $icons ? $icons : '' ),
Line 2039  returns: nothing Line 2106  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 2419  sub course_selection { Line 2496  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('."'".&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('."'".&html_escape(&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 2598  sub resource_info_box { Line 2675  sub resource_info_box {
 #  #
   
 sub display_usage {  sub display_usage {
     my ($current_disk_usage,$disk_quota) = @_;      my ($current_disk_usage,$disk_quota,$context) = @_;
     my $usage = $current_disk_usage/1000;      my $usage = $current_disk_usage/1024;
     my $quota = $disk_quota/1000;      my $quota = $disk_quota/1024;
     my $percent;      my $percent;
     if ($disk_quota == 0) {      if ($disk_quota == 0) {
         $percent = 100.0;          $percent = 100.0;
Line 2624  sub display_usage { Line 2701  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" '.$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" 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="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="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="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 2876  sub set_form_elements { Line 2957  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)?');
     my $delfilewarn = &mt('You have indicated you wish to remove some files previously included in your submission.').'\\n'.      &js_escape(\$overwritewarn);
       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 3384  THIRD Line 3467  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 3412  ENDUTILITY Line 3496  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) = @_;          $title,$idx,$suppurl,$todocs) = @_;
     my $jscall;      my ($jscall,$anchor);
     if ($switchserver) {      if ($switchserver) {
         if ($home) {          if ($home) {
             $cfile = '/adm/switchserver?otherserver='.$home.'&amp;role='.              $cfile = '/adm/switchserver?otherserver='.$home.'&amp;role='.
Line 3432  sub jump_to_editres { Line 3516  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 3459  sub jump_to_editres { Line 3552  sub jump_to_editres {
                $cfile .= (($cfile=~/\?/)?'&amp;':'?').'todocs=1';                 $cfile .= (($cfile=~/\?/)?'&amp;':'?').'todocs=1';
             }              }
         }          }
           if ($anchor ne '') {
               $cfile .= '#'.$anchor;
           }
         $jscall = "go('".&Apache::loncommon::escape_single($cfile)."')";          $jscall = "go('".&Apache::loncommon::escape_single($cfile)."')";
     }      }
     return $jscall;      return $jscall;
Line 3606  See htmltag() for more details. Line 3702  See htmltag() for more details.
 =back  =back
   
 =back  =back
    
 returns: XHTML list as String.   returns: XHTML list as String. 
   
 =cut     =cut   
Line 3807  End list of available functions Line 3903  End list of available functions
   
 =back  =back
   
 =back  
   
 Inputs: ./.  Inputs: ./.
   
 Returns: HTML code with function list end  Returns: HTML code with function list end
   
 =cut  =cut
   
 sub end_funclist {  sub end_funclist {
     return "</ul>\n";      return "</ul>\n";
 }  }
   
 =over  =pod
   
 =item &funclist_from_array( \@array, {legend => 'text for legend'} )  =item &funclist_from_array( \@array, {legend => 'text for legend'} )
   
Line 3838  A string that's used as visually highlig Line 3933  A string that's used as visually highlig
 it's value evaluates to false.  it's value evaluates to false.
   
 =back  =back
    
 returns: XHTML list as string.   returns: XHTML list as string. 
   
 =back  =back
Line 3851  sub funclist_from_array { Line 3946  sub funclist_from_array {
     $args->{legend} ||= mt('Functions');      $args->{legend} ||= mt('Functions');
     return list_from_array( [$args->{legend}, @$items],       return list_from_array( [$args->{legend}, @$items], 
                { listattr => {class => 'LC_funclist'} });                 { listattr => {class => 'LC_funclist'} });
 }     }
   
   =pod
   
 =over  =over
   
Line 3871  e.g. a file operation in Authoring Space Line 3968  e.g. a file operation in Authoring Space
 A reference to the array containing text. Details: sub funclist_from_array  A reference to the array containing text. Details: sub funclist_from_array
   
 =back  =back
    
 Returns: XHTML div as string.   Returns: XHTML div as string. 
   
 =back  =back

Removed from v.1.361  
changed lines
  Added in v.1.375


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