[LON-CAPA-cvs] cvs: loncom /interface lonpickstudent.pm
raeburn
raeburn at source.lon-capa.org
Wed Dec 24 17:32:44 EST 2025
raeburn Wed Dec 24 22:32:44 2025 EDT
Modified files:
/loncom/interface lonpickstudent.pm
Log:
- WCAG 2 compliance.
- Support "Skip to main content" when tabbing in page.
- Headings descend sequentially
- Include labels for form elements
- Header for each column in a data table by using <th></th> for screen
reader.
Index: loncom/interface/lonpickstudent.pm
diff -u loncom/interface/lonpickstudent.pm:1.35 loncom/interface/lonpickstudent.pm:1.36
--- loncom/interface/lonpickstudent.pm:1.35 Wed Dec 24 17:23:25 2025
+++ loncom/interface/lonpickstudent.pm Wed Dec 24 22:32:44 2025
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Pick a student from the classlist
#
-# $Id: lonpickstudent.pm,v 1.35 2025/12/24 17:23:25 raeburn Exp $
+# $Id: lonpickstudent.pm,v 1.36 2025/12/24 22:32:44 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -47,7 +47,6 @@
$r->print(&Apache::loncommon::start_page("Selecting a User",undef,
{'no_nav_bar' => 1}));
-
&Apache::loncommon::get_unprocessed_cgi
($ENV{'QUERY_STRING'},['filter','form','unameelement','udomelement',
'roles','courseadv','clicker','identelement']);
@@ -64,7 +63,8 @@
}
unless (($env{'form.roles'}) || ($allowed)) {
- $r->print(&mt('No context.').
+ $r->print("\n".'<div class="LC_landmark" role="main" id="LC_main_content">');
+ $r->print(&mt('No context.').'</div>'.
&Apache::loncommon::end_page());
return OK;
}
@@ -76,7 +76,7 @@
$filter = quotemeta($filter);
my $change = &mt('Change');
my $filterbutton =<<FILTER;
- <input type="text" name="filter" value="$encoded_filter" />
+ <input type="text" name="filter" value="$encoded_filter" /></label>
<input type="submit" name="Change" value="$change" />
FILTER
foreach my $name ('form','unameelement','udomelement','roles','courseadv','clicker','identelement') {
@@ -89,12 +89,13 @@
if ($env{'request.course.id'}) {
my $crstype = &Apache::loncommon::course_type();
my $showrole = &Apache::lonnet::plaintext('st',$crstype);
- $filtermsg = &mt("Showing users with role of '[_1]' with name starting: [_2]",
+ $filtermsg = '<label>'
+ .&mt("Showing users with role of '[_1]' with name starting: [_2]",
$showrole,$filterbutton);
} else {
- $filtermsg =
- &mt('Showing users with a name starting with [_1]',
- $filterbutton);
+ $filtermsg = '<label>'
+ .&mt('Showing users with a name starting with [_1]',
+ $filterbutton);
}
}
if ($filter eq '') {
@@ -146,27 +147,38 @@
</script>
ENDSCRIPT
+ $r->print("\n".'<div class="LC_landmark" role="main" id="LC_main_content">');
$r->print('<form action="">');
if ($allowed && (!$env{'form.roles'})) {
unless ($env{'form.courseadv'} eq 'none') {
# -------------------------------------------------------- Get course personnel
- $r->print('<h3>'.$env{'course.'.$env{'request.course.id'}.'.description'}.
- '</h3>');
+ $r->print('<h1 class="LC_heading_2">'.$env{'course.'.$env{'request.course.id'}.'.description'}.
+ '</h1>');
my %coursepersonnel=
&Apache::lonnet::get_course_adv_roles();
- $r->print(&Apache::loncommon::start_data_table());
- foreach my $role (sort(keys(%coursepersonnel))) {
- foreach my $user (split(/\,/,$coursepersonnel{$role})) {
- my ($puname,$pudom)=split(/\:/,$user);
- $r->print(&Apache::loncommon::start_data_table_row().
- '<td>'.
- '<input type="button" value="'.&mt('Select').'" onclick="gochoose('.
- "'".$puname."','".$pudom."')".'" /></td><td>'.$role.'</td><td>'.
- &Apache::loncommon::aboutmewrapper(&Apache::loncommon::plainname($puname,$pudom),$puname,$pudom).'</td>'.
- &Apache::loncommon::end_data_table_row());
+ if (keys(%coursepersonnel)) {
+ $r->print(&Apache::loncommon::start_data_table().
+ &Apache::loncommon::start_data_table_header_row('LC_visually_hidden').
+ '<th>'.&mt('select').'</th>'.
+ '<th>'.&mt('role').'</th>'.
+ '<th>'.&mt('name').'</th>'.
+ &Apache::loncommon::end_data_table_header_row()."\n");
+ foreach my $role (sort(keys(%coursepersonnel))) {
+ foreach my $user (split(/\,/,$coursepersonnel{$role})) {
+ my ($puname,$pudom)=split(/\:/,$user);
+ $r->print(&Apache::loncommon::start_data_table_row().
+ '<td>'.
+ '<input type="button" value="'.&mt('Select').
+ '" onclick="gochoose('.
+ "'".$puname."','".$pudom."')".'" /></td>'.
+ '<td>'.$role.'</td><td>'.
+ &Apache::loncommon::aboutmewrapper(
+ &Apache::loncommon::plainname($puname,$pudom),$puname,$pudom).
+ '</td>'.&Apache::loncommon::end_data_table_row());
+ }
}
+ $r->print(&Apache::loncommon::end_data_table().'<br /><hr />');
}
- $r->print(&Apache::loncommon::end_data_table().'<br /><hr />');
}
if ($filtermsg ne '') {
@@ -184,7 +196,7 @@
my $clicker=$env{'form.clicker'};
my @fragments=();
if ($clicker) {
- $r->print('<h1>'.&mt('Clicker: [_1]',$clicker).'</h1>');
+ $r->print('<h1 class="LC_heading_2">'.&mt('Clicker: [_1]',$clicker).'</h1>');
my $clicklength=length($clicker);
my $maxlength=$clicklength-1;
if ($maxlength>2) {
@@ -260,8 +272,7 @@
} else {
$r->print(&Apache::loncommon::start_data_table().
&Apache::loncommon::start_data_table_header_row().
- &Apache::loncommon::end_data_table_header_row().
- '<th> </th>'.
+ '<th>'.&mt('select').'</th>'.
'<th>'.&mt('username').'</th>'.
'<th>'.&mt('domain').'</th>'.
'<th>'.&mt('Name').'</th>'.
@@ -275,9 +286,9 @@
}
}
} else {
- $r->print('<h3>'.&mt('Users with Roles Assigned by').' '.
+ $r->print('<h1 class="LC_heading_2">'.&mt('Users with Roles Assigned by').' '.
&Apache::loncommon::plainname($env{'user.name'},
- $env{'user.domain'}).'</h3>');
+ $env{'user.domain'}).'</h1>');
$r->print($filtermsg);
$r->rflush();
@@ -314,7 +325,7 @@
}
$r->print(&Apache::loncommon::end_data_table().'</p>');
}
- $r->print('</form>'.&Apache::loncommon::end_page());
+ $r->print('</form></div>'.&Apache::loncommon::end_page());
return OK;
}
More information about the LON-CAPA-cvs
mailing list