Diff for /loncom/interface/loncommon.pm between versions 1.1459 and 1.1471

version 1.1459, 2025/02/20 03:05:34 version 1.1471, 2025/03/18 18:57:28
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)
   
 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. 
   
 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 2907  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) = @_;
     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 2916  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.'"';
       }
       my $selectform = "<select name=\"$name\" size=\"1\"$onchange$disabled$id>\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 2970  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 3072  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 4872  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 5345  sub get_student_view { Line 5359  sub get_student_view {
   $userview=~s/\<\/html\>//gi;    $userview=~s/\<\/html\>//gi;
   $userview=~s/\<head\>//gi;    $userview=~s/\<head\>//gi;
   $userview=~s/\<\/head\>//gi;    $userview=~s/\<\/head\>//gi;
     $userview=~s/\Q<div class="LC_landmark" role="main"\E/<div class="LC_landmark"/; 
   $userview=~s/action\s*\=/would_be_action\=/gi;    $userview=~s/action\s*\=/would_be_action\=/gi;
   $userview=&relative_to_absolute($feedurl,$userview);    $userview=&relative_to_absolute($feedurl,$userview);
   if (wantarray) {    if (wantarray) {
Line 7038  sub bodytag { Line 7053  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 7096  END Line 7111  END
                                                             $menucoll,$menuref,                                                              $menucoll,$menuref,
                                                             $args->{'links_disabled'},                                                              $args->{'links_disabled'},
                                                             $args->{'links_target'}).                                                              $args->{'links_target'}).
                             '</div>';                               '</div>';
             }              }
             $bodytag .= Apache::lonmenu::serverform();              $bodytag .= Apache::lonmenu::serverform();
             if ($need_endlcint) {              if ($need_endlcint) {
Line 7358  form, .inline { Line 7373  form, .inline {
   text-align:right;    text-align:right;
 }  }
   
   .LC_left {
     text-align:left;
   }
   
 .LC_center {  .LC_center {
   text-align:center;    text-align:center;
 }  }
Line 7505  div.LC_confirm_box .LC_success img { Line 7524  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 7761  table.LC_nested tr.LC_empty_row td { Line 7781  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 7931  table.LC_data_table tr > td.LC_roles_sel Line 7957  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 8295  table.LC_prior_tries td { Line 8325  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 8471  div.LC_grade_show_user div.LC_Box { Line 8516  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 8501  table.LC_scantron_action tr th { Line 8550  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 8566  img.stift { Line 8621  img.stift {
   vertical-align: middle;    vertical-align: middle;
 }  }
   
 table td.LC_mainmenu_col_fieldset {  div.LC_mainmenu {
   vertical-align: top;    margin: 3px 2px 2px 1px;
     float: left;
 }  }
   
 div.LC_createcourse {  div.LC_createcourse {
Line 8649  fieldset { Line 8705  fieldset {
 }  }
   
 fieldset#LC_selectuser {  fieldset#LC_selectuser {
     margin: 0;    margin: -1px 0 0 0;
     padding: 0;    padding: 0;
     border: 0;
 }  }
   
 article.geogebraweb div {  article.geogebraweb div {
Line 9347  pre.LC_wordwrap { Line 9404  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 10826  sub simple_error_page { Line 10909  sub simple_error_page {
   
     my $page =      my $page =
  &Apache::loncommon::start_page($title,'',\%displayargs)."\n".   &Apache::loncommon::start_page($title,'',\%displayargs)."\n".
         '<div class="LC_landmark" style="clear:both"  role="main">'.          '<div class="LC_landmark" style="clear:both" role="main">'.
  '<p class="LC_error">'.$msg.'</p>'.   '<p class="LC_error">'.$msg.'</p>'.
         '</div>'.          '</div>'.
  &Apache::loncommon::end_page();   &Apache::loncommon::end_page();
Line 10850  sub simple_error_page { Line 10933  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 10897  sub simple_error_page { Line 10985  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 10905  sub simple_error_page { Line 10997  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 19024  Returns: HTML to display with informatio Line 19116  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 19040  sub check_release_result { Line 19132  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 19657  sub create_captcha { Line 19749  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.1459  
changed lines
  Added in v.1.1471


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