[LON-CAPA-cvs] cvs: loncom /interface courseprefs.pm

raeburn raeburn at source.lon-capa.org
Sat Apr 18 01:52:51 EDT 2026


raeburn		Sat Apr 18 05:52:51 2026 EDT

  Modified files:              
    /loncom/interface	courseprefs.pm 
  Log:
  - WCAG 2.2 compliance -- satisfy minimum spacing between touch targets.
  
  
-------------- next part --------------
Index: loncom/interface/courseprefs.pm
diff -u loncom/interface/courseprefs.pm:1.144 loncom/interface/courseprefs.pm:1.145
--- loncom/interface/courseprefs.pm:1.144	Sat Apr 18 05:50:17 2026
+++ loncom/interface/courseprefs.pm	Sat Apr 18 05:52:51 2026
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Handler to set configuration settings for a course
 #
-# $Id: courseprefs.pm,v 1.144 2026/04/18 05:50:17 raeburn Exp $
+# $Id: courseprefs.pm,v 1.145 2026/04/18 05:52:51 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -6350,12 +6350,14 @@
                    text => &mt($itemtext->{'student_classlist_opt_in'}),
                    input => 'radio',
                    legend => &mt($itemtext->{'student_classlist_opt_in'}),
+                   lineheight => '180%',
                  },
 
         'student_classlist_portfiles' => {
                    text => &mt($itemtext->{'student_classlist_portfiles'}),
                    input => 'radio',
                    legend => &mt($itemtext->{'student_classlist_portfiles'}),
+                   lineheight => '180%',
                  },
     );
     unless (($settings->{'student_classlist_view'} eq 'all') || 
@@ -6391,11 +6393,13 @@
                    text => &mt($itemtext->{'pageseparators'}),
                    input => 'radio',
                    legend => &mt($itemtext->{'pageseparators'}),
+                   lineheight => '180%',
                  },
         'disable_receipt_display' => {
                    text => &mt($itemtext->{'disable_receipt_display'}),
                    input => 'radio',
-                   legend => &mt($itemtext->{'disable_receipt_display'})
+                   legend => &mt($itemtext->{'disable_receipt_display'}),
+                   lineheight => '180%',
                  },
         'texengine'  => {
                    text => &mt($itemtext->{'texengine'}),
@@ -6419,16 +6423,19 @@
                    text => &mt($itemtext->{'uselcmath'}),
                    input => 'radio',
                    legend => &mt($itemtext->{'uselcmath'}),
+                   lineheight => '180%',
                  },
          'usejsme'  => {
                    text => &mt($itemtext->{'usejsme'}),
                    input => 'radio',
                    legend => &mt($itemtext->{'usejsme'}),
+                   lineheight => '180%',
                  },
          'inline_chem' => {
                    text => &mt($itemtext->{'inline_chem'}),
                    input => 'radio',
                    legend => &mt($itemtext->{'inline_chem'}),
+                   lineheight => '180%',
                  },
          'extresource' => {
                    text => &mt($itemtext->{'extresource'}),
@@ -6500,6 +6507,7 @@
                    text => &mt($itemtext->{'disablesigfigs'}),
                    input => 'radio',
                    legend => &mt($itemtext->{'disablesigfigs'}),
+                   lineheight => '180%',
                  },
     );
     return &make_item_rows($cdom,\%items,$ordered,$settings,$rowtotal,$crstype,'grading',$noedit,$cnum);
@@ -6529,11 +6537,13 @@
             text => &mt($itemtext->{'problem_stream_switch'}),
             input => 'radio',
             legend => &mt($itemtext->{'problem_stream_switch'}),
+            lineheight => '180%',
                                  },
         suppress_tries => {
             text => &mt($itemtext->{'suppress_tries'}),
             input => 'radio',
             legend => &mt($itemtext->{'suppress_tries'}),
+            lineheight => '180%',
                           },
         default_paper_size => {
             text => &mt($itemtext->{'default_paper_size'}),
@@ -6561,6 +6571,7 @@
             text => &mt($itemtext->{'disableexampointprint'}),
             input => 'radio',
             legend => &mt($itemtext->{'disableexampointprint'}),
+            lineheight => '180%',
                                  },
         canuse_pdfforms => {
             text  => &mt($itemtext->{'canuse_pdfforms'}),
@@ -6777,7 +6788,7 @@
                 '<label><input type="checkbox" name="ltitools_del" value="'.$item.'" />'.
                 &mt('Delete?').'</label></span></td>'.
                 '<td colspan="2">'.
-                '<fieldset><legend>'.&mt('Required settings').'</legend>'.
+                '<fieldset style="line-height: 190%;"><legend>'.&mt('Required settings').'</legend>'.
                 '<span class="LC_nobreak"><label>'.$lt{'title'}.':<input type="text" size="20" name="ltitools_title_'.$i.'" value="'.$title.'" /></label></span> '.
                 (' 'x2).
                 '<span class="LC_nobreak"><label for="ltitools_version_'.$i.'">'.$lt{'version'}.'</label>:<select name="ltitools_version_'.$i.'" id="ltitools_version_'.$i.'">'.
@@ -6838,13 +6849,13 @@
                                   '</label>  </span><div id="ltitools_divchgsecret_'.$i.'" style="display:none" />'.
                                   '<span class="LC_nobreak">'.&mt('New Secret').':'.
                                   '<input type="password" size="20" name="ltitools_secret_'.$i.'" value="" autocomplete="new-password"'.$disabled.' />'.
-                                  '<label><input type="checkbox" name="ltitools_visible_'.$i.'" id="ltitools_visible_'.$i.'" onclick="if (this.checked) { this.form.ltitools_secret_'.$i.'.type='."'text'".' } else { this.form.ltitools_secret_'.$i.'.type='."'password'".' }"'.$disabled.' />'.&mt('Visible input').'</label>'.
+                                  ' <label><input type="checkbox" name="ltitools_visible_'.$i.'" id="ltitools_visible_'.$i.'" onclick="if (this.checked) { this.form.ltitools_secret_'.$i.'.type='."'text'".' } else { this.form.ltitools_secret_'.$i.'.type='."'password'".' }"'.$disabled.' />'.&mt('Visible input').'</label>'.
                                   '<input type="hidden" name="ltitools_id_'.$i.'" value="'.$item.'" /></span></div>';
                 } else {
                     $datatable .=
                         '<span class="LC_nobreak">'.$lt{'secret'}.':'.
                         '<input type="password" size="20" name="ltitools_secret_'.$i.'" value="" autocomplete="new-password"'.$disabled.' />'.
-                        '<label><input type="checkbox" name="ltitools_visible_'.$i.'" id="ltitools_visible_'.$i.'" onclick="if (this.checked) { this.form.ltitools_secret_'.$i.'.type='."'text'".' } else { this.form.ltitools_secret_'.$i.'.type='."'password'".' }"'.$disabled.' />'.&mt('Visible input').'</label>'.
+                        ' <label><input type="checkbox" name="ltitools_visible_'.$i.'" id="ltitools_visible_'.$i.'" onclick="if (this.checked) { this.form.ltitools_secret_'.$i.'.type='."'text'".' } else { this.form.ltitools_secret_'.$i.'.type='."'password'".' }"'.$disabled.' />'.&mt('Visible input').'</label>'.
                         '<input type="hidden" name="ltitools_id_'.$i.'" value="'.$item.'" /></span>';
                 }
             }
@@ -7092,7 +7103,7 @@
     $datatable .= '</select> '."\n".
                   '<label><input type="checkbox" name="ltitools_add" value="1" />'.&mt('Add').'</label></span></td>'."\n".
                   '<td colspan="2">'.
-                  '<fieldset><legend>'.&mt('Required settings').'</legend>'.
+                  '<fieldset style="line-height: 190%;"><legend>'.&mt('Required settings').'</legend>'.
                   '<span class="LC_nobreak"><label>'.$lt{'title'}.':<input type="text" size="20" name="ltitools_add_title" value="" /></label></span> '."\n".
                   (' 'x2).
                   '<span class="LC_nobreak"><label for="ltitools_add_version">'.$lt{'version'}.'</label>:<select name="ltitools_add_version" id="ltitools_add_version">'.
@@ -7113,7 +7124,7 @@
         $datatable .= '<span class="LC_nobreak"><label>'.$lt{'key'}.':<input type="text" size="25" name="ltitools_add_key" value="" autocomplete="off"'.$disabled.' /></label></span> '."\n".
                       (' 'x2).
                       '<span class="LC_nobreak"><label>'.$lt{'secret'}.':<input type="password" size="20" name="ltitools_secret_add" value="" autocomplete="new-password"'.$disabled.' /></label>'.
-                      '<label><input type="checkbox" name="ltitools_add_visible" id="ltitools_add_visible" onclick="if (this.checked) { this.form.ltitools_secret_add.type='."'text'".' } else { this.form.ltitools_secret_add.type='."'password'".' }"'.$disabled.' />'.&mt('Visible input').'</label></span> '."\n";
+                      ' <label><input type="checkbox" name="ltitools_add_visible" id="ltitools_add_visible" onclick="if (this.checked) { this.form.ltitools_secret_add.type='."'text'".' } else { this.form.ltitools_secret_add.type='."'password'".' }"'.$disabled.' />'.&mt('Visible input').'</label></span> '."\n";
     }
     $datatable .= '<br /><br />'.
                   '</fieldset>'.
@@ -7341,16 +7352,19 @@
 	    subtext => $domdefs,
             input => 'radio',
             legend => &mt($itemtext->{'lti.override'}),
+            lineheight => '180%',
                    },
         'lti.topmenu' => {
             text => &mt($itemtext->{'lti.topmenu'}),
             input => 'radio',
             legend => &mt($itemtext->{'lti.topmenu'}),
+            lineheight => '180%',
                    },
         'lti.inlinemenu' => {
             text => &mt($itemtext->{'lti.inlinemenu'}),
             input => 'radio',
             legend => &mt($itemtext->{'lti.inlinemenu'}),
+            lineheight => '180%',
                       },
         'lti.lcmenu' => {
             text => &mt($itemtext->{'lti.lcmenu'}),
@@ -7506,7 +7520,7 @@
                         $datatable .= &item_table_row_start('<em class="LC_nav_bar">'.$num.'</em>','','','',$count,'','','','LC_left_item');
                         foreach my $category (@order) {
                             if ((ref($categories{$category}) eq 'ARRAY') && (@{$categories{$category}} > 0)) {
-                                $datatable .= '<fieldset style="vertical-align:top; display:inline-block"><legend>'.$menutitles{$category}.'</legend>'."\n";
+                                $datatable .= '<fieldset style="vertical-align: top; display: inline-block; line-height: 185%;"><legend>'.$menutitles{$category}.'</legend>'."\n";
                                 if ($category eq 'text') {
                                     $datatable .= '<i>'.&mt('Header').'</i><br />';
                                 }
@@ -7851,13 +7865,13 @@
                                       '</label>  </span><div id="linkprot_divchgsecret_'.$i.'" style="display:none" />'.
                                       '<span class="LC_nobreak"><label>'.&mt('New Secret').':'.
                                       '<input type="password" size="20" name="linkprot_secret_'.$i.'" value="" autocomplete="new-password"'.$disabled.' /></label>'.
-                                      '<label><input type="checkbox" name="linkprot_visible_'.$i.'" id="linkprot_visible_'.$i.'" onclick="if (this.checked) { this.form.linkprot_secret_'.$i.'.type='."'text'".' } else { this.form.linkprot_secret_'.$i.'.type='."'password'".' }"'.$disabled.' />'.&mt('Visible input').'</label>'.
+                                      ' <label><input type="checkbox" name="linkprot_visible_'.$i.'" id="linkprot_visible_'.$i.'" onclick="if (this.checked) { this.form.linkprot_secret_'.$i.'.type='."'text'".' } else { this.form.linkprot_secret_'.$i.'.type='."'password'".' }"'.$disabled.' />'.&mt('Visible input').'</label>'.
                                       '<input type="hidden" name="linkprot_id_'.$i.'" value="'.$num.'" /></span></div>';
                     } else {
                         $datatable .=
                             '<span class="LC_nobreak"><label>'.$desc{'secret'}.':'.
                             '<input type="password" size="20" name="linkprot_secret_'.$i.'" value="" autocomplete="new-password"'.$disabled.' /></label>'.
-                            '<label><input type="checkbox" name="linkprot_visible_'.$i.'" id="linkprot_visible_'.$i.'" onclick="if (this.checked) { this.form.linkprot_secret_'.$i.'.type='."'text'".' } else { this.form.linkprot_secret_'.$i.'.type='."'password'".' }"'.$disabled.' />'.&mt('Visible input').'</label>'.
+                            ' <label><input type="checkbox" name="linkprot_visible_'.$i.'" id="linkprot_visible_'.$i.'" onclick="if (this.checked) { this.form.linkprot_secret_'.$i.'.type='."'text'".' } else { this.form.linkprot_secret_'.$i.'.type='."'password'".' }"'.$disabled.' />'.&mt('Visible input').'</label>'.
                             '<input type="hidden" name="linkprot_id_'.$i.'" value="'.$num.'" /></span>';
                     }
                 }
@@ -7944,7 +7958,7 @@
         $datatable .= '<span class="LC_nobreak"><label>'.$desc{'key'}.':<input type="text" size="25" name="linkprot_key_add" value="" autocomplete="off"'.$disabled.' /></label></span> '."\n".
                       (' 'x2).
                       '<span class="LC_nobreak"><label>'.$desc{'secret'}.':<input type="password" size="20" name="linkprot_secret_add" value="" autocomplete="new-password"'.$disabled.' /></label>'.
-                      '<label><input type="checkbox" name="linkprot_visible_add" id="linkprot_visible_add" onclick="if (this.checked) { this.form.linkprot_secret_add.type='."'text'".' } else { this.form.linkprot_secret_add.type='."'password'".' }"'.$disabled.' />'.&mt('Visible input').'</label></span> '."\n";
+                      ' <label><input type="checkbox" name="linkprot_visible_add" id="linkprot_visible_add" onclick="if (this.checked) { this.form.linkprot_secret_add.type='."'text'".' } else { this.form.linkprot_secret_add.type='."'password'".' }"'.$disabled.' />'.&mt('Visible input').'</label></span> '."\n";
     }
     $datatable .= '<br /><br />'.
                   '<span class="LC_nobreak">'.$desc{'passback'}.'?'.
@@ -8209,7 +8223,7 @@
 }
 
 sub yesno_radio {
-    my ($item,$legend,$settings,$unsetdefault,$valueyes,$valueno,$noedit,$onclick,$reverse) = @_;
+    my ($item,$legend,$settings,$unsetdefault,$valueyes,$valueno,$noedit,$lineheight,$onclick,$reverse) = @_;
     my $itemon = ' ';
     my $itemoff = ' checked="checked" ';
     if (($valueyes eq '') && ($valueno eq '')) {
@@ -8234,15 +8248,18 @@
     } elsif ($onclick) {
         $onclick = ' onclick="'.$onclick.'"';
     }
-    my ($start_fieldset,$end_fieldset);
+    my ($start_fieldset,$end_fieldset,$spansty);
     if ($legend) {
         $start_fieldset = '<fieldset class="LC_borderless"><legend class="LC_visually_hidden">'.
                           $legend.'</legend>'."\n";
         $end_fieldset = '</fieldset>'."\n";
     }
+    if ($lineheight ne '') {
+        $spansty = ' style="line-height: '.$lineheight.'"';
+    }
     if ($reverse) {
         return $start_fieldset.
-               '<span class="LC_nobreak"><label>'.
+               '<span class="LC_nobreak"'.$spansty.'><label>'.
                '<input type="radio" name="'.$item.'"'.
                $itemoff.' value="'.$valueno.'"'.$disabled.$onclick.' />'.&mt('No').'</label> '.
                '<label><input type="radio" name="'.$item.'"'.
@@ -8250,7 +8267,7 @@
                $end_fieldset;
     } else {
         return $start_fieldset.
-               '<span class="LC_nobreak"><label>'.
+               '<span class="LC_nobreak"'.$spansty.'><label>'.
                '<input type="radio" name="'.$item.'"'.
                $itemon.' value="'.$valueyes.'"'.$disabled.$onclick.' />'.&mt('Yes').'</label> '.
                '<label><input type="radio" name="'.$item.'"'.
@@ -8386,7 +8403,8 @@
                     $valueyes = '1';
                 }
                 $datatable .= &yesno_radio($item,$items->{$item}{legend},$settings,
-                                           $unsetdefault,$valueyes,$valueno,$noedit);
+                                           $unsetdefault,$valueyes,$valueno,$noedit,
+                                           $items->{$item}{'lineheight'});
             } elsif ($items->{$item}{input} eq 'selectbox') {
                 my $curr = $settings->{$item};
                 my ($id,$onchange);
@@ -8455,7 +8473,7 @@
                                   &mt('Hide Course Points Totals').'</legend>'.
                                   '<div style="position: relative; top: 0%; float:left">'.
                                   &yesno_radio('hidetotals','',\%current,$unsetdefault,$valueyes,$valueno,$noedit,
-                                               $onclick,$reverse).'</div>'.
+                                               '',$onclick,$reverse).'</div>'.
                                   $sectionbox.
                                   '</fieldset><div style="padding:0;clear:both;margin:0;border:0"></div>';
                 } elsif ($item eq 'maxsizepdfform') {


More information about the LON-CAPA-cvs mailing list