[LON-CAPA-cvs] cvs: loncom /interface loncommon.pm londocs.pm lonextresedit.pm

raeburn raeburn at source.lon-capa.org
Mon Feb 3 17:52:36 EST 2025


raeburn		Mon Feb  3 22:52:36 2025 EDT

  Modified files:              
    /loncom/interface	loncommon.pm londocs.pm lonextresedit.pm 
  Log:
  - WCAG 2 compliance
  
  
-------------- next part --------------
Index: loncom/interface/loncommon.pm
diff -u loncom/interface/loncommon.pm:1.1449 loncom/interface/loncommon.pm:1.1450
--- loncom/interface/loncommon.pm:1.1449	Mon Feb  3 19:07:54 2025
+++ loncom/interface/loncommon.pm	Mon Feb  3 22:52:36 2025
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # a pile of common routines
 #
-# $Id: loncommon.pm,v 1.1449 2025/02/03 19:07:54 raeburn Exp $
+# $Id: loncommon.pm,v 1.1450 2025/02/03 22:52:36 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -1174,7 +1174,8 @@
         $menuorder,
         $onchangefirst,
         $onchangesecond,
-        $suffix
+        $suffix,
+        $haslabel
         ) = @_;
     my $second = "document.$formname.$secondselectname";
     my $first = "document.$formname.$firstselectname";
@@ -1240,6 +1241,9 @@
         $result.=">".&mt($hashref->{$value}->{'text'})."</option>\n";
     }
     $result .= "</select>\n";
+    if ($haslabel) {
+        $result .= '</label>';
+    }
     my %select2;
     if (ref($hashref->{$firstdefault}) eq 'HASH') {
         if (ref($hashref->{$firstdefault}->{'select2'}) eq 'HASH') {
@@ -1247,6 +1251,9 @@
         }
     }
     $result .= $middletext;
+    if ($middletext ne '') {
+        $result .= '<label>';
+    }
     $result .= "<select size=\"1\" name=\"$secondselectname\"";
     if ($onchangesecond) {
         $result .= ' onchange="'.$onchangesecond.'"';
@@ -1264,6 +1271,9 @@
         $result.=">".&mt($select2{$value})."</option>\n";
     }
     $result .= "</select>\n";
+    if ($middletext ne '') {
+        $result .= '</label>';
+    }
     #    return $debug;
     return $result;
 }   #  end of sub linked_select_forms {
@@ -2300,7 +2310,7 @@
         dire => 'Directory',
         se   => 'Select',
     );
-    $output = $lt{'dire'}.': '.
+    $output = '<label>'.$lt{'dire'}.': '.
               '<select id="'.$firstselectname.'" name="'.$firstselectname.'" '.
               'onchange="populateCrsSelects(this.form,'."'$firstselectname','$secondselectname',1,'$js_only',0,1,0,0,0".');">'.
               '<option value="" selected="selected">'.$lt{'se'}.'</option>';
@@ -2311,10 +2321,10 @@
         next if ($key eq '/');
         $output .= '<option value="'.$key.'">'.$key.'</option>'."\n";
     }
-    $output .= '</select><br />'."\n".
+    $output .= '</select></label><br /><label>'."\n".
                $lt{'fnam'}.': <select id="'.$secondselectname.'" name="'.$secondselectname.'">'."\n".
                '<option value="" selected="selected"></option>'."\n".
-               '</select>'."\n".
+               '</select></label>'."\n".
                '<input type="hidden" id="crsres_include_'.$suffix.'" value="'.$only.'" />';
     return ($numdirs,$output);
 }
Index: loncom/interface/londocs.pm
diff -u loncom/interface/londocs.pm:1.722 loncom/interface/londocs.pm:1.723
--- loncom/interface/londocs.pm:1.722	Tue Jan  7 21:01:37 2025
+++ loncom/interface/londocs.pm	Mon Feb  3 22:52:36 2025
@@ -1,7 +1,7 @@
 # The LearningOnline Network
 # Documents
 #
-# $Id: londocs.pm,v 1.722 2025/01/07 21:01:37 raeburn Exp $
+# $Id: londocs.pm,v 1.723 2025/02/03 22:52:36 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -2526,6 +2526,15 @@
                     &LONCAPA::map::qtescape($env{'docs.markedcopy_title_'.$suffix});
             } else {
                 my $icon = &Apache::loncommon::icon($extension);
+                my $icontext;
+                if ($extension eq 'sequence') {
+                    $icontext = &mt('folder icon');
+                } elsif ($extension eq 'page') {
+                    $icontext = &mt('composite page icon');
+                } else {
+                    $icontext = &mt('file icon');
+                }
+                $icontext = &HTML::Entities::encode($icontext);
                 if ($extension eq 'sequence' &&
                     $url =~ m{/default_\d+\.sequence$}x) {
                     $icon = &Apache::loncommon::lonhttpdurl($r->dir_config('lonIconsURL'));
@@ -2535,7 +2544,7 @@
                 if ($title eq '') {
                     ($title) = ($url =~ m{/([^/]+)$});
                 }
-                $buffer = '<img src="'.$icon.'" alt="" class="LC_icon" />'.
+                $buffer = '<img src="'.$icon.'" alt="'.$icontext.'" class="LC_icon" />'.
                           ': '.
                           &Apache::loncommon::parse_supplemental_title(
                              &LONCAPA::map::qtescape($title));
@@ -4971,16 +4980,18 @@
             if (!$allowed) {
                 $helpitem = 'Supplemental_Navigation';
             }
-            $toolslink = '<table><tr><td>'
+            $toolslink = '<div class="LC_navtools">'
+                       .'<div class="LC_navtools">'
                        .&Apache::loncommon::help_open_menu('Navigation Screen',
                                                            $helpitem,undef,'RAT')
-                       .'</td><td class="LC_middle">'.&mt('Tools:').'</td>'
-                       .'<td align="left"><ul id="LC_toolbar">'
+                       .'</div><div class="LC_navtools">'.&mt('Tools:').'</div>'
+                       .'<div class="LC_navtools">'."\n".'<ul id="LC_toolbar">' 
                        .'<li><a href="/adm/coursedocs?forcesupplement=1&command=editsupp" '
                        .'id="LC_content_toolbar_edittoplevel" '
                        .'class="LC_toolbarItem" '
                        .'title="'.&mt('Supplemental Content Editor').'">'
-                       .'</a></li></ul></td></tr></table><br />';
+                       .'</a></li></ul></div></div>'."\n"
+                       .'<div style="padding:0;clear:both;margin:0;border:0"></div><br />'."\n";
         }
         if ($shown) {
             if ($allowed) {
@@ -5483,7 +5494,7 @@
 	    $copylink=(<<ENDCOPY);
 <form name="$formname" method="post" action="/adm/coursedocs">
 $form_common
-<input type="checkbox" name="copy" id="copy_$orderidx" value="$orderidx" onclick="javascript:singleCheck(this,'$orderidx','copy');" class="LC_hidden" $disabled /><a href="$js" class="LC_docs_copy">$lt{'cp'}</a>
+<label><input type="checkbox" name="copy" id="copy_$orderidx" value="$orderidx" onclick="javascript:singleCheck(this,'$orderidx','copy');" class="LC_hidden" $disabled /><a href="$js" class="LC_docs_copy">$lt{'cp'}</a></label>
 $form_end
 ENDCOPY
             if (($ishash) && (ref($filtersref->{'cancopy'}) eq 'ARRAY')) {
@@ -5501,7 +5512,7 @@
 <form name="$formname" method="post" action="/adm/coursedocs">
 $form_common
 <input type="hidden" name="skip_$orderidx" id="skip_cut_$orderidx" value="$skip_confirm" />
-<input type="checkbox" name="cut" id="cut_$orderidx" value="$orderidx" onclick="javascript:singleCheck(this,'$orderidx','cut');" class="LC_hidden" $disabled /><a href="$js" class="LC_docs_cut">$lt{'ct'}</a>
+<label><input type="checkbox" name="cut" id="cut_$orderidx" value="$orderidx" onclick="javascript:singleCheck(this,'$orderidx','cut');" class="LC_hidden" $disabled /><a href="$js" class="LC_docs_cut">$lt{'ct'}</a></label>
 $form_end
 ENDCUT
             if (($ishash) && (ref($filtersref->{'cancut'}) eq 'ARRAY')) {
@@ -5520,7 +5531,7 @@
 $form_common
 <input type="hidden" name="skip_$orderidx" id="skip_remove_$orderidx" value="$skip_confirm" />
 <input type="hidden" name="confirm_rem_$orderidx" id="confirm_removal_$orderidx" value="$confirm_removal" />
-<input type="checkbox" name="remove" id="remove_$orderidx" value="$orderidx" onclick="javascript:singleCheck(this,'$orderidx','remove');" class="LC_hidden" $disabled /><a href="$js" class="LC_docs_remove">$lt{'rm'}</a>
+<label><input type="checkbox" name="remove" id="remove_$orderidx" value="$orderidx" onclick="javascript:singleCheck(this,'$orderidx','remove');" class="LC_hidden" $disabled /><a href="$js" class="LC_docs_remove">$lt{'rm'}</a></label>
 $form_end
 ENDREM
             if (($ishash) && (ref($filtersref->{'canremove'}) eq 'ARRAY')) {
@@ -5565,8 +5576,17 @@
 </td>
 END
     }
+    my $icontext;
 # Figure out what kind of a resource this is
     my ($extension)=($url=~/\.(\w+)$/);
+    if ($extension eq 'sequence') {
+        $icontext = &mt('folder icon');
+    } elsif ($extension eq 'page') {
+        $icontext = &mt('composite page icon');
+    } else {
+        $icontext = &mt('file icon');
+    }
+    $icontext = &HTML::Entities::encode($icontext);
     my $uploaded=($url=~/^\/*uploaded\//);
     my $icon=&Apache::loncommon::icon($url);
     my $isfolder;
@@ -5908,9 +5928,9 @@
             }
         }
         if ($nolink) {
-            $line .= '<img src="'.$icon.'" alt="" class="LC_icon" /></a>';
+            $line .= '<img src="'.$icon.'" alt="'.$icontext.'" class="LC_icon" /></a>';
         } else {
-            $line.='<a href="'.$url.'"><img src="'.$icon.'" alt="" class="LC_icon" /></a>';
+            $line.='<a href="'.$url.'"><img src="'.$icon.'" alt="'.$icontext.'" class="LC_icon" /></a>';
         }
     } elsif ($url) {
        if ($anchor ne '') {
@@ -5940,16 +5960,16 @@
            }
        }
        if ($nolink) {
-           $line.='<img src="'.$icon.'" alt="" class="LC_icon" />';
+           $line.='<img src="'.$icon.'" alt="'.$icontext.'" class="LC_icon" />';
        } elsif ($nomodal) {
            $line.='<a href="#" onclick="javascript:window.open('."'$link','syllabuspreview','height=400,width=500,scrollbars=1,resizable=1,menubar=0,location=1')".'; return false;" />'.
-                  '<img src="'.$icon.'" alt="" class="LC_icon" border="0" /></a>';
+                  '<img src="'.$icon.'" alt="'.$icontext.'" class="LC_icon" border="0" /></a>';
        } else {
            $line.=&Apache::loncommon::modal_link($link,
-                                                 '<img src="'.$icon.'" alt="" class="LC_icon" />',600,500);
+                                                 '<img src="'.$icon.'" alt="'.$icontext.'" class="LC_icon" />',600,500);
        }
     } else {
-       $line.='<img src="'.$icon.'" alt="" class="LC_icon" />';
+       $line.='<img src="'.$icon.'" alt="'.$icontext.'" class="LC_icon" />';
     }
     $line.='</span></td><td'.$tdwidth.'>';
     if (($url=~m{/adm/(coursedocs|supplemental)}) || (!$allowed && $url)) {
@@ -7591,10 +7611,6 @@
     my $quotainfo = '<p>'.&mt('Currently using [_1] of the [_2] available.',
                               $percent.'%',$quota.' MB').'</p>';
 
-	my $fileupload=(<<FIUP);
-        $quotainfo
-	$lt{'file'}:<br />
-FIUP
 	my $checkbox=(<<CHBO);
 	<!-- <label>$lt{'parse'}?
 	<input type="checkbox" name="parserflag" />
@@ -7613,8 +7629,9 @@
         <form name="uploadims" action="/adm/imsimportdocs" method="post" enctype="multipart/form-data" target="IMSimport">
         <fieldset id="uploadimsform" style="display: none;">
         <legend>$lt{'imsf'}</legend>
-        $fileupload
-        <input type="file" name="uploaddoc" id="uploaddocims" class="LC_flUpload LC_uploaddoc" size="40" $disabled />
+        $quotainfo
+        <label>$lt{'file'}:<br />
+        <input type="file" name="uploaddoc" id="uploaddocims" class="LC_flUpload LC_uploaddoc" size="40" $disabled /></label>
         <input type="hidden" id="LC_free_space_ims" value="$free_space" />
         <br />
         <p>
@@ -7641,12 +7658,14 @@
         <fieldset id="uploaddocform" style="display: none;">
         <legend>$lt{'upfi'}</legend>
 	<input type="hidden" name="active" value="aa" />
-    $fileupload
-        <input type="file" name="uploaddoc" class="LC_flUpload" size="40" $disabled />
+        $quotainfo
+        <label>$lt{'file'}:<br />
+        <input type="file" name="uploaddoc" class="LC_flUpload" size="40" $disabled /></label>
         <input type="hidden" id="LC_free_space" value="$free_space" />
 	<br />
+        <label>
 	$lt{'title'}:<br />
-	<input type="text" size="60" name="comment" $disabled />
+	<input type="text" size="60" name="comment" $disabled /></label>
 	$pathitem
 	<input type="hidden" name="cmd" value="upload_default" />
 	<br />
@@ -7672,11 +7691,11 @@
         <fieldset id="importmapform" style="display: none;">
         <legend>$lt{'impm'}</legend>
 	<input type="hidden" name="active" value="bb" />
-        $lt{'copm'}<br />
+        <label>$lt{'copm'}<br />
         <span class="LC_nobreak">
         <input type="text" name="importmap" size="40" value="" 
         onfocus="this.blur();$mapimportjs" $disabled />
-         <a href="$mapimportjs">$lt{'selm'}</a></span><br />
+         <a href="$mapimportjs">$lt{'selm'}</a></span></label><br />
         <input type="submit" name="loadmap" value="$lt{'load'}" $disabled />
         </fieldset>
         </form>
@@ -7717,9 +7736,9 @@
         <div id="importcrsrescontent" style="display: none;">
         <input type="hidden" name="active" value="bb" />
         $pickfile
-        <p>
+        <p><label>
         $lt{'title'}: <input type="text" name="crsrestitle" value="" $disabled />
-        </p>
+        </label></p>
         <input type="hidden" name="importdetail" value="" />
         <input type="submit" name="crsres" value="$lt{'impo'}" $disabled /><br />
         </div>
@@ -7982,7 +8001,7 @@
             $is_home{'course'} = 1;
         }
         $rolehomes .= '<input type="hidden" id="rolehome_course" name="rolehome_course" value="'.$crshome.'" />'."\n";
-        my $pickdir = $lt{'loca'}.
+        my $pickdir = '<label>'.$lt{'loca'}.
                    '<select name="authorrole" onchange="populateDirSelects(this.form,'."'authorrole','authorpath'".',1,1,0);">'."\n".
                    '<option value="" selected="selected">'.&mt('Select').'</option>'."\n";
         if ($env{'user.author'}) {
@@ -8003,11 +8022,11 @@
         if ($checkcrsres) {
             $pickdir .= '<option value="course">'.&mt('Course Resource').'</option>'."\n";
         }
-        $pickdir .= '</select><br />'."\n".
-                    $lt{'dire'}.
+        $pickdir .= '</select></label><br />'."\n".
+                    '<label>'.$lt{'dire'}.
                     '<select name="authorpath" onchange="toggleCrsResTitle();">'.
                     '<option value=""></option>'.
-                    '</select><br />'."\n";
+                    '</select></label><br />'."\n";
         my %seltemplate_menus;
         my @files = &Apache::lonhomework::get_template_list('problem');
         my @noexamplelink = ('blank.problem','blank.library','script.library');
@@ -8040,12 +8059,17 @@
             }
         }
 
-        my $templates = $lt{'cate'}.' '.
-                        &Apache::loncommon::linked_select_forms('courseresform','<br />'.$lt{'tmpl'}.' ',
-                                                                $defcategory,'tempcategory','template',
-                                                                \%seltemplate_menus,\@catorder,
-                                                                "resize_scrollbox('contentscroll','1','0');",
-                                                                "toggleExampleText();",'template').'<br />';
+        my ($templates,$haslabel);
+        if ($lt{'cate'} ne '') {
+            $templates = '<label>';
+            $haslabel = 1;
+        }
+        $templates .= $lt{'cate'}.' '.
+                      &Apache::loncommon::linked_select_forms('courseresform','<br />'.$lt{'tmpl'}.' ',
+                                                              $defcategory,'tempcategory','template',
+                                                              \%seltemplate_menus,\@catorder,
+                                                              "resize_scrollbox('contentscroll','1','0');",
+                                                              "toggleExampleText();",'template',$haslabel).'<br />';
         my $templatepreview =  '<a href="#" target="sample" onclick="javascript:getExample(600,420,\'yes\',true);  return false;">'.
                                '<span id="newresexample">'.&mt('Example').'</span></a>';
         my $crsresform;
@@ -8066,12 +8090,12 @@
         <label><input type="radio" name="newsubdir" value="0" onclick="toggleNewsubdir(this.form);" checked="checked" $disabled />No</label>
          
         <label><input type="radio" name="newsubdir" value="1" onclick="toggleNewsubdir(this.form);" $disabled />Yes</label>
-        </span><span id="newsubdir"></span>
+        </span><label for="newsubdirname"><span id="newsubdir"></span></label>
         <input type="hidden" name="newsubdirname" id="newsubdirname" value="" autocomplete="off" />
         </p>
         </div>
-        $lt{'fnam'}
-        <input type="text" size="20" name="newresourcename" autocomplete="off" $disabled />
+        <label>$lt{'fnam'}
+        <input type="text" size="20" name="newresourcename" autocomplete="off" $disabled /></label>
         <div id="newresource" style="display:none">
         <p>
         $lt{'addp'}
@@ -8079,7 +8103,7 @@
         $lt{'no'}</label>  
         <label><input type="radio" name="newresourceadd" value="1" onclick="toggleNewInCourse(this.form);" $disabled />
         $lt{'yes'}</label>
-        <span id="newrestitle"></span>
+        <label for="newresourcetitle"><span id="newrestitle"></span></label>
         <input type="hidden" size="20" name="newresourcetitle" id="newresourcetitle" autocomplete="off" $disabled />
         </p>
         </div>
@@ -8274,8 +8298,9 @@
         <fieldset id="uploadsuppdocform" style="display: none;">
         <legend>$lt{'upfi'}</legend>
 	<input type="hidden" name="active" value="ee" />
-	$fileupload
-        <input type="file" name="uploaddoc" id="uploaddocsupp" class="LC_flUpload LC_uploaddoc" size="40" $disabled />
+	$quotainfo
+        <label>$lt{'file'}:<br />
+        <input type="file" name="uploaddoc" id="uploaddocsupp" class="LC_flUpload LC_uploaddoc" size="40" $disabled /></label>
         <input type="hidden" id="LC_free_space_supp" value="$free_space" />
 	<br />
 	<br />
@@ -8283,8 +8308,8 @@
 	$checkbox
 	</span>
 	<br /><br />
-	$lt{'comment'}:<br />
-	<textarea cols="50" rows="4" name="comment"></textarea>
+	<label>$lt{'comment'}:<br />
+	<textarea cols="50" rows="4" name="comment"></textarea></label>
 	<br />
 	$pathitem
 	<input type="hidden" name="cmd" value="upload_supplemental" />
Index: loncom/interface/lonextresedit.pm
diff -u loncom/interface/lonextresedit.pm:1.34 loncom/interface/lonextresedit.pm:1.35
--- loncom/interface/lonextresedit.pm:1.34	Wed Jul 12 00:05:02 2023
+++ loncom/interface/lonextresedit.pm	Mon Feb  3 22:52:36 2025
@@ -1,7 +1,7 @@
 # The LearningOnline Network
 # Documents
 #
-# $Id: lonextresedit.pm,v 1.34 2023/07/12 00:05:02 raeburn Exp $
+# $Id: lonextresedit.pm,v 1.35 2025/02/03 22:52:36 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -709,8 +709,10 @@
         $chooser = "
 <div>
 <span$srcclass>
+<label>
 $extsrc
 $urlelem
+</label>
 $preview
 </span>
 </div>
@@ -728,8 +730,10 @@
 $chooser
 <div $idattr style="$subdivstyle">
 <span$srcclass>
+<label>
 $title
 <input type="text" size="$size" name="exttitle" value="$orig_title" $disabled />
+</label>
 <input type="hidden" name="importdetail" value="" />
 $pathitem
 $hiddenelem


More information about the LON-CAPA-cvs mailing list