Diff for /loncom/interface/loncommon.pm between versions 1.1460 and 1.1472

version 1.1460, 2025/02/21 04:29:26 version 1.1472, 2025/03/19 15:18:59
Line 966  ENDSCRT Line 966  ENDSCRT
   
 sub select_timezone {  sub select_timezone {
    my ($name,$selected,$onchange,$includeempty,$id,$disabled)=@_;     my ($name,$selected,$onchange,$includeempty,$id,$disabled)=@_;
    my $output='<select name="'.$name.'" '.$id.$onchange.$disabled.'>'."\n";     my $labeltext = &HTML::Entities::encode(&mt('Select Time Zone'));
      my $output='<select name="'.$name.'" '.$id.$onchange.$disabled.
                 ' aria-label="'.$labeltext.'">'."\n";
    if ($includeempty) {     if ($includeempty) {
        $output .= '<option value=""';         $output .= '<option value=""';
        if (($selected eq '') || ($selected eq 'local')) {         if (($selected eq '') || ($selected eq 'local')) {
Line 1351  sub help_open_topic { Line 1353  sub help_open_topic {
     }      }
     $template.=' <a'.$target.' href="'.$link.'" title="'.$title.'">'      $template.=' <a'.$target.' href="'.$link.'" title="'.$title.'">'
               .'<img src="'.$helpicon.'" border="0"'                .'<img src="'.$helpicon.'" border="0"'
               .' alt="'.&mt('Help: [_1]',$topic).'"'                .' alt="'.&mt('Help icon').'"'
               .' title="'.$title.'" style="vertical-align:middle;"'.$imgid                 .' title="'.$title.'" style="vertical-align:middle;"'.$imgid 
               .' /></a>';                .' /></a>';
     if ($text ne "") {      if ($text ne "") {
Line 2798  sub create_text_file { Line 2800  sub create_text_file {
 # ------------------------------------------  # ------------------------------------------
   
 sub domain_select {  sub domain_select {
     my ($name,$value,$multiple,$incdoms,$excdoms)=@_;      my ($name,$value,$multiple,$incdoms,$excdoms,$id)=@_;
     my @possdoms;      my @possdoms;
     if (ref($incdoms) eq 'ARRAY') {      if (ref($incdoms) eq 'ARRAY') {
         @possdoms = @{$incdoms};          @possdoms = @{$incdoms};
Line 2819  sub domain_select { Line 2821  sub domain_select {
     if ($multiple) {      if ($multiple) {
  $domains{''}=&mt('Any domain');   $domains{''}=&mt('Any domain');
  $domains{'select_form_order'} = [sort {lc($a) cmp lc($b) } (keys(%domains))];   $domains{'select_form_order'} = [sort {lc($a) cmp lc($b) } (keys(%domains))];
  return &multiple_select_form($name,$value,4,\%domains);   return &multiple_select_form($name,$value,4,\%domains,undef,$id);
     } else {      } else {
  $domains{'select_form_order'} = [sort {lc($a) cmp lc($b) } (keys(%domains))];   $domains{'select_form_order'} = [sort {lc($a) cmp lc($b) } (keys(%domains))];
  return &select_form($name,$value,\%domains);   return &select_form($name,$value,\%domains,'','',$id);
     }      }
 }  }
   
Line 2834  sub domain_select { Line 2836  sub domain_select {
   
 =over 4  =over 4
   
 =item * &multiple_select_form($name,$value,$size,$hash,$order)  =item * &multiple_select_form($name,$value,$size,$hash,$order,$id)
   
 Returns a string containing a <select> element int multiple mode  Returns a string containing a <select> element int multiple mode
   
Line 2846  Args: Line 2848  Args:
   $hash - the elements should be 'option' => 'shown text'    $hash - the elements should be 'option' => 'shown text'
           (shown text should already have been &mt())            (shown text should already have been &mt())
   $order - (optional) array ref of the order to show the elements in    $order - (optional) array ref of the order to show the elements in
     $id = (optional) id for <select> element
   
 =cut  =cut
   
 #-------------------------------------------  #-------------------------------------------
 sub multiple_select_form {  sub multiple_select_form {
     my ($name,$value,$size,$hash,$order)=@_;      my ($name,$value,$size,$hash,$order,$id)=@_;
     my %selected = map { $_ => 1 } ref($value)?@{$value}:($value);      my %selected = map { $_ => 1 } ref($value)?@{$value}:($value);
     my $output='';      my $output='';
     if (! defined($size)) {      if (! defined($size)) {
Line 2860  sub multiple_select_form { Line 2863  sub multiple_select_form {
             $size = scalar(keys(%$hash));              $size = scalar(keys(%$hash));
         }          }
     }      }
     $output.="\n".'<select name="'.$name.'" size="'.$size.'" multiple="multiple">';      if ($id ne '') {
           $id = ' id="'.$id.'"'; 
       }
       $output.="\n".'<select name="'.$name.'" size="'.$size.'" multiple="multiple"'.$id.'>';
     my @order;      my @order;
     if (ref($order) eq 'ARRAY')  {      if (ref($order) eq 'ARRAY')  {
         @order = @{$order};          @order = @{$order};
Line 2884  sub multiple_select_form { Line 2890  sub multiple_select_form {
   
 =pod  =pod
   
 =item * &select_form($defdom,$name,$hashref,$onchange,$readonly)  =item * &select_form($defdom,$name,$hashref,$onchange,$readonly,$id,$aria_labelledby)
   
 Returns a string containing a <select name='$name' size='1'> form to   Returns a string containing a <select name='$name' size='1'> form to 
 allow a user to select options from a ref to a hash containing:  allow a user to select options from a ref to a hash containing:
Line 2892  option_name => displayed text. An option Line 2898  option_name => displayed text. An option
 a javascript onchange item, e.g., onchange="this.form.submit();".  a javascript onchange item, e.g., onchange="this.form.submit();".
 An optional arg -- $readonly -- if true will cause the select form  An optional arg -- $readonly -- if true will cause the select form
 to be disabled, e.g., for the case where an instructor has a section-  to be disabled, e.g., for the case where an instructor has a section-
 specific role, and is viewing/modifying parameters.   specific role, and is viewing/modifying parameters. An optional arg
   -- $id -- will be used as the id attribute of the select element. An
   optional arg -- $aria_labelledby -- will be included as the aria-labelledby
   attribute of the select element.
   
 See lonrights.pm for an example invocation and use.  See lonrights.pm for an example invocation and use.
   
Line 2900  See lonrights.pm for an example invocati Line 2909  See lonrights.pm for an example invocati
   
 #-------------------------------------------  #-------------------------------------------
 sub select_form {  sub select_form {
     my ($def,$name,$hashref,$onchange,$readonly) = @_;      my ($def,$name,$hashref,$onchange,$readonly,$id,$aria_labelledby) = @_;
     return unless (ref($hashref) eq 'HASH');      return unless (ref($hashref) eq 'HASH');
     if ($onchange) {      if ($onchange) {
         $onchange = ' onchange="'.$onchange.'"';          $onchange = ' onchange="'.$onchange.'"';
Line 2909  sub select_form { Line 2918  sub select_form {
     if ($readonly) {      if ($readonly) {
         $disabled = ' disabled="disabled"';          $disabled = ' disabled="disabled"';
     }      }
     my $selectform = "<select name=\"$name\" size=\"1\"$onchange$disabled>\n";      if ($id ne '') {
           $id = ' id="'.$id.'"';
       }
       if ($aria_labelledby ne '') {
           $aria_labelledby = ' aria-labelledby="'.$aria_labelledby.'"';
       }
       my $selectform = "<select name=\"$name\" size=\"1\"$onchange$disabled$id$aria_labelledby>\n";
     my @keys;      my @keys;
     if (exists($hashref->{'select_form_order'})) {      if (exists($hashref->{'select_form_order'})) {
  @keys=@{$hashref->{'select_form_order'}};   @keys=@{$hashref->{'select_form_order'}};
Line 2960  sub display_filter { Line 2975  sub display_filter {
     my $onchange = "javascript:toggleHistoryOptions(this,'containingphrase','$context',      my $onchange = "javascript:toggleHistoryOptions(this,'containingphrase','$context',
                                                     '$secondid','$thirdid')";                                                      '$secondid','$thirdid')";
     return '<span class="LC_nobreak"><label>'.&mt('Records: [_1]',      return '<span class="LC_nobreak"><label>'.&mt('Records: [_1]',
        &Apache::lonmeta::selectbox('show',$env{'form.show'},'',undef,         &Apache::lonmeta::selectbox('show',$env{'form.show'},'','',undef,
    (&mt('all'),10,20,50,100,1000,10000))).     (&mt('all'),10,20,50,100,1000,10000))).
    '</label></span> <span class="LC_nobreak">'.     '</label></span> <span class="LC_nobreak">'.
            &mt('Filter: [_1]',             &mt('Filter: [_1]',
Line 3062  sub gradeleveldescription { Line 3077  sub gradeleveldescription {
 }  }
   
 sub select_level_form {  sub select_level_form {
     my ($deflevel,$name)=@_;      my ($deflevel,$name,$id)=@_;
       if ($id ne '') {
           $id = ' id="'.$id.'"';
       }
     unless ($deflevel) { $deflevel=0; }      unless ($deflevel) { $deflevel=0; }
     my $selectform = "<select name=\"$name\" size=\"1\">\n";      my $selectform = "<select name=\"$name\" size=\"1\"$id>\n";
     for (my $i=0; $i<=18; $i++) {      for (my $i=0; $i<=18; $i++) {
         $selectform.="<option value=\"$i\" ".          $selectform.="<option value=\"$i\" ".
             ($i==$deflevel ? 'selected="selected" ' : '').              ($i==$deflevel ? 'selected="selected" ' : '').
Line 4859  sub filemimetype { Line 4877  sub filemimetype {
   
   
 sub filecategoryselect {  sub filecategoryselect {
     my ($name,$value)=@_;      my ($name,$value,$id)=@_;
     return &select_form($value,$name,      return &select_form($value,$name,
                         {'' => &mt('Any category'), map { $_,$_ } sort(keys(%category_extensions))});                          {'' => &mt('Any category'), map { $_,$_ } sort(keys(%category_extensions))},
                           '','',$id);
 }  }
   
 =pod  =pod
Line 7039  sub bodytag { Line 7058  sub bodytag {
             my $alttext = &mt('menu state: '.$menustate);              my $alttext = &mt('menu state: '.$menustate);
             my $tooltip = &mt($tiptext.' standard menus');              my $tooltip = &mt($tiptext.' standard menus');
             $bodytag .= <<"END";              $bodytag .= <<"END";
 <div id="LC_expandingContainer" style="display:inline;">  <div id="LC_expandingContainer" style="display:inline;" role="navigation">
 <div id="LC_collapsible" class="LC_collapse_trigger" style="position: absolute;top: -5px;left: 0px; z-index:101; display:inline;">  <div id="LC_collapsible" class="LC_collapse_trigger" style="position: absolute;top: -5px;left: 0px; z-index:101; display:inline;">
 <a href="#" style="text-decoration:none;"><img class="LC_collapsible_indicator" alt="$alttext" title="$tooltip" src="/res/adm/pages/$menustate.png" style="border:0;margin:0;padding:0;max-width:100%;height:auto" /></a></div>  <a href="#" style="text-decoration:none;"><img class="LC_collapsible_indicator" alt="$alttext" title="$tooltip" src="/res/adm/pages/$menustate.png" style="border:0;margin:0;padding:0;max-width:100%;height:auto" /></a></div>
 <div class="LC_menus_content $divclass">  <div class="LC_menus_content $divclass">
Line 7347  form, .inline { Line 7366  form, .inline {
   font-size: 1.0em;    font-size: 1.0em;
 }  }
   
   h1.LC_search_results {
     font-size: 1.0em;
     font-weight: normal;
   }
   
 .LC_menus_content.shown{  .LC_menus_content.shown{
   display: block;    display: block;
 }  }
Line 7359  form, .inline { Line 7383  form, .inline {
   text-align:right;    text-align:right;
 }  }
   
   .LC_left {
     text-align:left;
   }
   
 .LC_center {  .LC_center {
   text-align:center;    text-align:center;
 }  }
Line 7506  div.LC_confirm_box .LC_success img { Line 7534  div.LC_confirm_box .LC_success img {
   padding: 4px;    padding: 4px;
 }  }
   
 table.LC_pastsubmission {  .LC_pastsubmission {
   border: 1px solid black;    border: 1px solid black;
   margin: 2px;    margin: 2px;
     padding: 2px;
 }  }
   
 table#LC_menubuttons {  table#LC_menubuttons {
Line 7762  table.LC_nested tr.LC_empty_row td { Line 7791  table.LC_nested tr.LC_empty_row td {
 table.LC_caption {  table.LC_caption {
 }  }
   
   caption.LC_caption_prefs {
     font-weight: normal;
     text-align: left;
     padding-bottom: 0.8em;
   }
   
 table.LC_nested tr.LC_empty_row td {  table.LC_nested tr.LC_empty_row td {
   padding: 4ex    padding: 4ex
 }  }
Line 7932  table.LC_data_table tr > td.LC_roles_sel Line 7967  table.LC_data_table tr > td.LC_roles_sel
   border-right: 8px solid #11CC55;    border-right: 8px solid #11CC55;
 }  }
   
   table.LC_data_table tr.LC_prefs_row {
      line-height: 250%;
   }
   
 span.LC_current_location {  span.LC_current_location {
   font-size:larger;    font-size:larger;
   background: $pgbg;    background: $pgbg;
Line 8296  table.LC_prior_tries td { Line 8335  table.LC_prior_tries td {
   padding: 6px;    padding: 6px;
 }  }
   
 .LC_prob_status {  span.LC_prob_status {
   margin-top: 5px;    margin: 5px 0 0 0;
   padding-top: 0;    padding: 0 5px 0 0;
   padding-left: 0;    vertical-align: middle;
   padding-bottom: 0;  }
   padding-right: 5px;  
   div.LC_prob_status_outer {
     display: inline-block;
     margin: -5px 0 0 0;
     padding: 0;
   }
   
   div.LC_prob_status_inner {
     display: inline-block;
     margin: 0 5px 0 0;
     padding: 5px;
   }
   
   caption.LC_filesub_status {
     text-align: left;
     font-weight: bold;
 }  }
   
 .LC_mail_actions {  .LC_mail_actions {
Line 8472  div.LC_grade_show_user div.LC_Box { Line 8526  div.LC_grade_show_user div.LC_Box {
   margin-right: 50px;    margin-right: 50px;
 }  }
   
   div.LC_grade_show_user div.LC_Box table tr th {
     font-weight: normal;
   }
   
 div.LC_grade_submissions,  div.LC_grade_submissions,
 div.LC_grade_message_center,  div.LC_grade_message_center,
 div.LC_grade_info_links {  div.LC_grade_info_links {
Line 8502  table.LC_scantron_action tr th { Line 8560  table.LC_scantron_action tr th {
   font-style:normal;    font-style:normal;
 }  }
   
   div.LC_edit_problem_daxe_header {
     padding: 3px;
     background: $tabbg;
     z-index: 100;
   }
   
 .LC_edit_problem_header,  .LC_edit_problem_header,
 div.LC_edit_problem_footer {  div.LC_edit_problem_footer {
   font-weight: normal;    font-weight: normal;
Line 9350  pre.LC_wordwrap { Line 9414  pre.LC_wordwrap {
 /*  /*
   styles used for response display    styles used for response display
 */  */
 div.LC_radiofoil, div.LC_rankfoil {  div.LC_radiofoil, div.LC_rankfoil, div.LC_optionfoil, div.LC_matchfoil, div.LC_login_links {
   margin: .5em 0em .5em 0em;    margin: .5em 0em .5em 0em;
 }  }
 table.LC_itemgroup {  table.LC_itemgroup {
   margin-top: 1em;    margin-top: 1em;
 }  }
   
   table.LC_itemgroup tr th {
     font-weight: normal;
   }
   
   fieldset.LC_webbubbles {
     margin: 2px 0 0 0;
     padding: 0;
     border: 0;
   }
   
   ul.LC_webbubbles {
     list-style: none;
     padding: 0;
     margin: 0;
     text-align: left;
     float: left;
   }
   
   ul.LC_webbubbles li {
     line-height: 1.8em;
     border: 1px solid black;
     padding: 0 2px 0 5px;
     margin: 0 0 0 -1px;
     float: left;
   }
   
 /*  /*
   styles used by TTH when "Default set of options to pass to tth/m    styles used by TTH when "Default set of options to pass to tth/m
   when converting TeX" in course settings has been set    when converting TeX" in course settings has been set
Line 10853  sub simple_error_page { Line 10943  sub simple_error_page {
         return;          return;
     }      }
   
       sub set_data_table_count {
           my ($count) = @_;
           unshift(@row_count,$count);
       }
   
     sub start_data_table {      sub start_data_table {
  my ($add_class,$id) = @_;   my ($add_class,$id) = @_;
  my $css_class = (join(' ','LC_data_table',$add_class));   my $css_class = (join(' ','LC_data_table',$add_class));
Line 10900  sub simple_error_page { Line 10995  sub simple_error_page {
     }      }
   
     sub start_data_table_header_row {      sub start_data_table_header_row {
  return  '<tr class="LC_header_row">'."\n";;   my ($add_class,$id) = @_;
    my $css_class = 'LC_header_row';
    $css_class = (join(' ',$css_class,$add_class)) unless ($add_class eq '');
    $id = (' id="'.$id.'"') unless ($id eq '');
    return '<tr class="'.$css_class.'"'.$id.'>'."\n";
     }      }
   
     sub end_data_table_header_row {      sub end_data_table_header_row {
Line 10908  sub simple_error_page { Line 11007  sub simple_error_page {
     }      }
   
     sub data_table_caption {      sub data_table_caption {
         my $caption = shift;          my ($caption,$css_class) = @_;
         return "<caption class=\"LC_caption\">$caption</caption>";          return "<caption class=\"LC_caption $css_class\">$caption</caption>";
     }      }
 }  }
   
Line 19027  Returns: HTML to display with informatio Line 19126  Returns: HTML to display with informatio
 sub check_release_result {  sub check_release_result {
     my ($switchwarning,$switchserver) = @_;      my ($switchwarning,$switchserver) = @_;
     my $output = &start_page('Selected course unavailable on this server').      my $output = &start_page('Selected course unavailable on this server').
                  '<p class="LC_warning">';                   '<div class="LC_landmark" role="main"><p class="LC_warning">';
     if ($switchwarning) {      if ($switchwarning) {
         $output .= $switchwarning.'<br /><a href="/adm/roles">';          $output .= $switchwarning.'<br /><a href="/adm/roles">';
         if (&show_course()) {          if (&show_course()) {
Line 19043  sub check_release_result { Line 19142  sub check_release_result {
                    &mt('Switch Server').                     &mt('Switch Server').
                    '</a>';                     '</a>';
     }      }
     $output .= '</p>'.&end_page();      $output .= '</p></div>'.&end_page();
     return $output;      return $output;
 }  }
   
Line 19660  sub create_captcha { Line 19759  sub create_captcha {
             $output = '<input type="hidden" name="crypt" value="'.$md5sum.'" />'."\n".              $output = '<input type="hidden" name="crypt" value="'.$md5sum.'" />'."\n".
                       '<span class="LC_nobreak">'.                        '<span class="LC_nobreak">'.
                       '<label>'.&mt('Type in the letters/numbers shown below').'&nbsp;'.                        '<label>'.&mt('Type in the letters/numbers shown below').'&nbsp;'.
                       '<input type="text" size="5" name="code" value="" autocomplete="new-password" />'.                        '<input type="text" size="5" name="code" value="" autocomplete="new-password" aria-required="true" />'.
                       '</label></span><br />'.                        '</label></span><br />'.
                       '<img src="'.$captcha_params{'www_output_dir'}.'/'.$md5sum.'.png" alt="captcha" />';                        '<img src="'.$captcha_params{'www_output_dir'}.'/'.$md5sum.'.png" alt="captcha" />';
             last;              last;

Removed from v.1.1460  
changed lines
  Added in v.1.1472


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