Diff for /loncom/interface/lonhtmlcommon.pm between versions 1.412 and 1.419

version 1.412, 2024/05/24 03:10:31 version 1.419, 2025/03/03 22:03:02
Line 542  sub date_setter { Line 542  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,$no_mm_ss,$no_ss) = @_;
     my $now = time;      my $now = time;
       my %labels = &Apache::lonlocal::texthash(
                                                  day   => 'day',
                                                  month => 'month',
                                                  year  => 'year',
                                                  sec   => 'seconds',
                                                  min   => 'minutes',
                                                  hour  => 'hours',
                                               );
     my $tzname;      my $tzname;
     my ($sec,$min,$hour,$mday,$month,$year) = ('', '', undef,''.''.'');      my ($sec,$min,$hour,$mday,$month,$year) = ('', '', undef,''.''.'');
     #other potentially useful values:    wkday,yrday,is_daylight_savings      #other potentially useful values:    wkday,yrday,is_daylight_savings
Line 643  document.$formname.$dname\_year.value, Line 650  document.$formname.$dname\_year.value,
 </script>  </script>
 ENDJS  ENDJS
     $result .= '  <span class="LC_nobreak">';      $result .= '  <span class="LC_nobreak">';
     my $monthselector = qq{<select name="$dname\_month" $special $state onchange="javascript:$dname\_checkday()" >};      my $monthselector = qq{<select name="$dname\_month" $special $state onchange="javascript:$dname\_checkday()" aria-label="$labels{'month'}">};
     # Month      # Month
     my @Months = qw/January February  March     April   May      June       my @Months = qw/January February  March     April   May      June 
                     July    August    September October November December/;                      July    August    September October November December/;
Line 657  ENDJS Line 664  ENDJS
     }      }
     $monthselector.= '  </select>';      $monthselector.= '  </select>';
     # Day      # Day
     my $dayselector = qq{<input type="text" name="$dname\_day" $state value="$mday" size="3" $special onchange="javascript:$dname\_checkday()" />};      my $dayselector = qq{<input type="text" name="$dname\_day" $state value="$mday" size="3" $special onchange="javascript:$dname\_checkday()" aria-label="$labels{'day'}" />};
     # Year      # Year
     my $yearselector = qq{<input type="text" name="$dname\_year" $state value="$year" size="5" $special onchange="javascript:$dname\_checkday()" />};      my $yearselector = qq{<input type="text" name="$dname\_year" $state value="$year" size="5" $special onchange="javascript:$dname\_checkday()" aria-label="$labels{'year'}" />};
     #      #
     my $hourselector = qq{<select name="$dname\_hour" $special $state >};      my $hourselector = qq{<select name="$dname\_hour" $special $state aria-label="$labels{'hour'}">};
     if ($includeempty) {       if ($includeempty) { 
         $hourselector.=qq{<option value=''></option>};          $hourselector.=qq{<option value=''></option>};
     }      }
Line 683  ENDJS Line 690  ENDJS
         $hourselector .= $timest." </option>\n";          $hourselector .= $timest." </option>\n";
     }      }
     $hourselector .= "  </select>\n";      $hourselector .= "  </select>\n";
     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" aria-label="$labels{'min'}" />};
     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" aria-label="$labels{'sec'}" />};
     my $cal_link;      my $cal_link;
     unless (($nolink) || ($state eq 'disabled')) {      unless (($nolink) || ($state eq 'disabled')) {
         $cal_link = qq{<a href="javascript:$dname\_opencalendar()">};          $cal_link = qq{<a href="javascript:$dname\_opencalendar()">};
Line 1850  sub dash_to_minus_js { Line 1857  sub dash_to_minus_js {
 document.addEventListener("DOMContentLoaded", (event) => {  document.addEventListener("DOMContentLoaded", (event) => {
     const numresp = document.querySelectorAll("input.LC_numresponse_text");      const numresp = document.querySelectorAll("input.LC_numresponse_text");
     if (numresp.length > 0) {      if (numresp.length > 0) {
         numresp.forEach((el) => {          Array.from(numresp).forEach((el) => {
             el.addEventListener("paste", (e) => {              el.addEventListener("paste", (e) => {
                 e.preventDefault();                  e.preventDefault();
                 e.stopPropagation();                  e.stopPropagation();
                 let p = (e.clipboardData || window.clipboardData).getData("text");                  let p = (e.clipboardData || window.clipboardData).getData("text");
                 p.toString();                  p.toString();
                 p = p.replace(/\p{Dash}/gu, '-');                  var regex;
                   try
                   {
                       regex = new RegExp ("\\p{Dash}", "gu");
                   }
                   catch (e) { regex = new RegExp ("[\\u058A\\u05BE\\u1400\\u1806\\u2010-\\u2015\\u2212\\u2E3A\\u2E3B\\u2E5D\\u301C\\uFE58\\uFE63\\uFF0D]","g"); }
                   p = p.replace(regex,'-');
                 putInText(p);                  putInText(p);
             });              });
         });          });
Line 1909  boolean, controls whether to include a l Line 1922  boolean, controls whether to include a l
   
 if 'nohelp' don't include the orange help link  if 'nohelp' don't include the orange help link
   
 =item $css_class  =item $crumbs_style
   
 optional name for the class to apply to the table for CSS  optional style attribute for div containing breadcrumbs
   unless called from docs_breadcrumbs
   
 =item $no_mt   =item $no_mt 
   
Line 1969  returns: nothing Line 1983  returns: nothing
     my %tools = ();      my %tools = ();
           
     sub breadcrumbs {      sub breadcrumbs {
         my ($component,$component_help,$menulink,$helplink,$css_class,$no_mt,           my ($component,$component_help,$menulink,$helplink,$crumbs_style,$no_mt, 
             $CourseBreadcrumbs,$topic_help,$topic_help_text,$links_target) = @_;              $CourseBreadcrumbs,$topic_help,$topic_help_text,$links_target) = @_;
         #          #
         $css_class ||= 'LC_breadcrumbs';  
   
         # Make the faq and bug data cascade          # Make the faq and bug data cascade
         my $faq  = '';          my $faq  = '';
         my $bug  = '';          my $bug  = '';
Line 2075  returns: nothing Line 2087  returns: nothing
   
         if ($lasttext ne '') {          if ($lasttext ne '') {
             $links .= &htmltag( 'li', htmltag($CourseBreadcrumbs ? 'b' : 'h1',              $links .= &htmltag( 'li', htmltag($CourseBreadcrumbs ? 'b' : 'h1',
                     $lasttext), {title => $lasttext});                      $lasttext));
         }          }
   
         my $icons = '';          my $icons = '';
Line 2127  returns: nothing Line 2139  returns: nothing
         }          }
         if (($links ne '') || ($nav_and_tools)) {          if (($links ne '') || ($nav_and_tools)) {
             &render_tools(\$links);              &render_tools(\$links);
             $links = &htmltag('div', $links,               unless ($CourseBreadcrumbs) {
                               { id => "LC_breadcrumbs" }) unless ($CourseBreadcrumbs) ;                  my $args = { id => 'LC_breadcrumbs' };
                   if ($crumbs_style ne '') {
                       $args->{'style'} = $crumbs_style;
                   }
                   $links = &htmltag('div', $links, $args);
               }
         }          }
         my $adv_tools = 0;          my $adv_tools = 0;
         if (ref($tools{'advtools'}) eq 'ARRAY') {          if (ref($tools{'advtools'}) eq 'ARRAY') {
Line 2145  returns: nothing Line 2162  returns: nothing
   
         # Return the breadcrumb's line          # Return the breadcrumb's line
   
               my $labeltext = &HTML::Entities::encode(&mt('Links for navigation and information'));
           return '<div class="LC_landmark" role="navigation" aria-label="'.$labeltext.'">'.$links.'</div>';
         return "$links";  
     }      }
   
     sub clear_breadcrumbs {      sub clear_breadcrumbs {
Line 2480  END Line 2496  END
 }  }
   
 sub row_title {  sub row_title {
     my ($title,$css_title_class,$css_value_class, $css_value_furtherAttributes) = @_;      my ($title,$css_title_class,$css_value_class,$css_value_furtherAttributes,$nocolon) = @_;
     $row_count[0]++;      $row_count[0]++;
     my $css_class = ($row_count[0] % 2)?'LC_odd_row':'LC_even_row';      my $css_class = ($row_count[0] % 2)?'LC_odd_row':'LC_even_row';
     $css_title_class ||= 'LC_pick_box_title';      $css_title_class ||= 'LC_pick_box_title';
Line 2488  sub row_title { Line 2504  sub row_title {
   
     $css_value_class ||= 'LC_pick_box_value';      $css_value_class ||= 'LC_pick_box_value';
   
     if ($title ne '') {      if (($title ne '') && (!$nocolon)) {
         $title .= ':';          $title .= ':';
     }      }
     my $output = <<"ENDONE";      my $output = <<"ENDONE";
            <tr class="LC_pick_box_row" $css_value_furtherAttributes>              <tr class="LC_pick_box_row" $css_value_furtherAttributes> 
             <td $css_title_class>              <th $css_title_class>
        $title         $title
             </td>              </th>
             <td class="$css_value_class $css_class">              <td class="$css_value_class $css_class">
 ENDONE  ENDONE
     return $output;      return $output;
Line 3960  sub list_from_array { Line 3976  sub list_from_array {
 sub generate_menu {  sub generate_menu {
     my @menu = @_;      my @menu = @_;
     # subs for specific html elements      # subs for specific html elements
     my ($h3, $div, $ul, $li, $a, $img) = inittags( qw(h3 div ul li a img) );       my ($h2, $div, $ul, $li, $a, $img) = inittags( qw(h2 div ul li a img) ); 
           
     my @categories; # each element represents the entire markup for a category      my @categories; # each element represents the entire markup for a category
         
Line 3998  sub generate_menu { Line 4014  sub generate_menu {
                          {class => "LC_menubuttons_inline_text"}));                           {class => "LC_menubuttons_inline_text"}));
         }          }
   
         # wrap categorytitle in <h3>, concatenate with           # wrap categorytitle in <h2>, concatenate with 
         # joined and in <ul> tags wrapped @links          # joined and in <ul> tags wrapped @links
         # and wrap everything in an enclosing <div> and push it into          # and wrap everything in an enclosing <div> and push it into
         # @categories          # @categories
         # such that each element looks like:          # such that each element looks like:
         # <div><h3>title</h3><ul><li>...</li>...</ul></div>          # <div><h2>title</h2><ul><li>...</li>...</ul></div>
         # the category won't be added if there aren't any links          # the category won't be added if there aren't any links
         push(@categories,           push(@categories, 
             $div->($h3->(mt($$category{categorytitle}), {class=>"LC_hcell"}).              $div->($h2->(mt($$category{categorytitle}), {class=>'LC_hcell LC_heading_2'}).
             $ul->(join('' ,@links),  {class =>"LC_ListStyleNormal" }),              $ul->(join('' ,@links),  {class =>"LC_ListStyleNormal" }),
             {class=>"LC_Box LC_400Box"})) if scalar(@links);              {class=>"LC_Box LC_400Box"})) if scalar(@links);
     }      }

Removed from v.1.412  
changed lines
  Added in v.1.419


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