[LON-CAPA-cvs] cvs: loncom /interface groupboards.pm grouproster.pm loncommon.pm longroup.pm lonmsgdisplay.pm
raeburn
raeburn at source.lon-capa.org
Wed Jan 21 15:55:08 EST 2026
raeburn Wed Jan 21 20:55:08 2026 EDT
Modified files:
/loncom/interface groupboards.pm grouproster.pm loncommon.pm
longroup.pm lonmsgdisplay.pm
Log:
- WCAG 2 compliance
- Include landmark for page's main content to support "Skip to main content"
- Sequential headings
- Include labels for form elements
- Replace use of <table> with <div> for layout
-------------- next part --------------
Index: loncom/interface/groupboards.pm
diff -u loncom/interface/groupboards.pm:1.23 loncom/interface/groupboards.pm:1.24
--- loncom/interface/groupboards.pm:1.23 Tue Sep 8 23:54:40 2020
+++ loncom/interface/groupboards.pm Wed Jan 21 20:55:08 2026
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Group Bulletin Boards Manager
#
-# $Id: groupboards.pm,v 1.23 2020/09/08 23:54:40 raeburn Exp $
+# $Id: groupboards.pm,v 1.24 2026/01/21 20:55:08 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -112,13 +112,14 @@
if ($outcome eq 'ok') {
my ($furl,$ferr)= &Apache::lonuserstate::readmap($cdom.'/'.$cnum);
$r->print(&mt('The new discussion board was added successfully.').'<br />');
- $r->print('<table border="0"><tr><td>'.
+ $r->print('<div class="LC_floatleft">'.
'<a href="'.$newurl.'?group='.$group.'&'.$refarg.
- '">'.&mt('Edit [_1] board',$bbtitle).'</a></td>'.
- '<td> </td><td>'.
+ '">'.&mt('Edit [_1] board',$bbtitle).'</a></div>'.
+ '<div class="LC_floatleft">'.
'<a href="/adm/groupboards?group='.$group.'&'.
$refarg.'">'.&mt('View all group discussion boards').
- '</a></td></tr></table>');
+ '</a></div>'."\n".
+ '<div style="padding:0;clear:both;margin:0;border:0"></div>');
if ($lockfreed ne 'ok') {
$r->print(&mt('There was a problem removing a lockfile for the group ([_1]).',$description).'<br />'.
&mt('This may prevent creation of additional discussion boards in this group.').'<br />'.
@@ -130,7 +131,7 @@
$r->print(&mt('There was a problem creating the new discussion board - [_1]','<span class="LC_error">'.$outcome.'</span>').'<br /><a href="/adm/groupboards?group='.$group.'">'.
&mt('Return to discussion boards').'</a>');
}
- $r->print(&Apache::loncommon::end_page());
+ $r->print('</div>'.&Apache::loncommon::end_page());
return OK;
}
}
@@ -191,7 +192,7 @@
.'</p>'
);
}
- $r->print(&Apache::loncommon::end_page());
+ $r->print('</div>'.&Apache::loncommon::end_page());
return OK;
}
@@ -245,7 +246,7 @@
my $output = &boards_header($cdom,$cnum,$group,$description,$gpterm,
$ucgpterm,$bodytitle,$refarg);
$output .= $earlyout;
- $output .= &Apache::loncommon::end_page();
+ $output .= '</div>'.&Apache::loncommon::end_page();
return $output;
}
@@ -279,7 +280,8 @@
text=>"Discussion Boards",
title=>"Display group discussion boards"},);
$output .= &Apache::lonhtmlcommon::breadcrumbs(&mt('Group discussion boards - [_1]',$description),
- undef,undef,undef,undef,1);
+ undef,undef,undef,undef,1)."\n".
+ '<div class="LC_landmark" role="main" id="LC_main_content">'."\n";
return $output;
}
Index: loncom/interface/grouproster.pm
diff -u loncom/interface/grouproster.pm:1.11 loncom/interface/grouproster.pm:1.12
--- loncom/interface/grouproster.pm:1.11 Tue Sep 8 23:54:40 2020
+++ loncom/interface/grouproster.pm Wed Jan 21 20:55:08 2026
@@ -1,6 +1,6 @@
# The LearningOnline Network with CAPA
#
-# $Id: grouproster.pm,v 1.11 2020/09/08 23:54:40 raeburn Exp $
+# $Id: grouproster.pm,v 1.12 2026/01/21 20:55:08 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -126,7 +126,7 @@
&roster_table($r,$cdom,$cnum,$group,$can_view,$view_details,$viewgrps,
$editgrps,$available,$gpterm,$ucgpterm);
- $r->print(&Apache::loncommon::end_page());
+ $r->print('</div>'.&Apache::loncommon::end_page());
return OK;
}
@@ -155,8 +155,9 @@
'<script type="text/javascript">'.
$jscript.'</script>',$args);
if ($env{'form.ref'} eq 'popup') {
- $output .= '<h3>'.&mt('Group membership status - [_1]',$description).
- '</h3>';
+ $output .= '<div class="LC_landmark" role="main" id="LC_main_content">'."\n".
+ '<h1 class="LC_heading_2">'.&mt('Group membership status - [_1]',$description).
+ '</h1>';
} else {
my $view_permission =
&Apache::lonnet::allowed('vcg',$env{'request.course.id'}.($env{'request.course.sec'}?'/'.$env{'request.course.sec'}:''));
@@ -178,7 +179,8 @@
text=>"Membership Roster",
title=>"Display group membership"},);
$output .= &Apache::lonhtmlcommon::breadcrumbs(&mt('Group membership status - [_1]',$description),
- undef,undef,undef,undef,1);
+ undef,undef,undef,undef,1)."\n".
+ '<div class="LC_landmark" role="main" id="LC_main_content">'."\n";
}
return $output;
}
@@ -228,7 +230,7 @@
$r->print(&mt('There are no membership data to display for this '.$gpterm.'.'));
return;
}
- $r->print('<br /><form name="rosterstatus" method="post" action="/adm/grouproster">'.&mt('Membership status: ').'<select name="status">');
+ $r->print('<br /><form name="rosterstatus" method="post" action="/adm/grouproster"><label for="memberstatus">'.&mt('Membership status').'</label>: <select name="status" id="memberstatus">');
foreach my $type ('active','previous','future','all') {
$r->print('<option value="'.$type.'" ');
if ($status eq $type) {
Index: loncom/interface/loncommon.pm
diff -u loncom/interface/loncommon.pm:1.1500 loncom/interface/loncommon.pm:1.1501
--- loncom/interface/loncommon.pm:1.1500 Tue Jan 20 02:31:01 2026
+++ loncom/interface/loncommon.pm Wed Jan 21 20:55:08 2026
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# a pile of common routines
#
-# $Id: loncommon.pm,v 1.1500 2026/01/20 02:31:01 raeburn Exp $
+# $Id: loncommon.pm,v 1.1501 2026/01/21 20:55:08 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -7934,6 +7934,14 @@
padding: 2px 4px 2px 4px;
}
+div.LC_gridcell_even {
+ background-color: $data_table_dark;
+}
+
+div.LC_gridcell_odd {
+ background-color: $data_table_light;
+}
+
div.LC_autoenroll_heading {
margin: 5px;
padding: 5px;
@@ -8476,7 +8484,8 @@
border-spacing: 1px;
}
-table.LC_group_priv_box td.LC_pick_box_title {
+table.LC_group_priv_box td.LC_pick_box_title,
+table.LC_group_priv_box th.LC_pick_box_title {
background: $tabbg;
font-weight: bold;
text-align: right;
@@ -8499,7 +8508,7 @@
font-weight: bold;
}
-table.LC_group_priv td {
+div.LC_group_priv {
text-align: left;
padding: 0;
}
Index: loncom/interface/longroup.pm
diff -u loncom/interface/longroup.pm:1.32 loncom/interface/longroup.pm:1.33
--- loncom/interface/longroup.pm:1.32 Tue Jun 20 14:03:52 2023
+++ loncom/interface/longroup.pm Wed Jan 21 20:55:08 2026
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# accessor routines used to provide information about course groups
#
-# $Id: longroup.pm,v 1.32 2023/06/20 14:03:52 raeburn Exp $
+# $Id: longroup.pm,v 1.33 2026/01/21 20:55:08 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -773,22 +773,26 @@
if ($target eq 'tex') {
$output = '<table cellspacing="4" cellpadding="4">';
} else {
- $output = &Apache::loncommon::start_data_table();
+ $output = '<div role="grid" class="LC_grid" style="border: 1px solid black;">';
}
+ my $count = 0;
foreach my $tool (@available) {
+ $count ++;
if ($target eq 'tex') {
$output .= '<tr><td>'.&mt($menu{$tool}{text}).'</td></tr>';
} else {
- $output .= &Apache::loncommon::start_data_table_row()
- .'<td><a href="'.$menu{$tool}{href}.'">'
- .&mt($menu{$tool}{text}).'</a></td>'
- .&Apache::loncommon::end_data_table_row();
+ my $css = ($count % 2) ? 'LC_gridcell_odd' : 'LC_gridcell_even';
+ $output .= '<div role="row" class="LC_grid_row">'
+ .'<div role="gridcell" class="LC_grid_cell '.$css.'">'
+ .'<a href="'.$menu{$tool}{href}.'">'
+ .&mt($menu{$tool}{text}).'</a></div>'
+ .'</div>';
}
}
if ($target eq 'tex') {
$output .= '</table>';
} else {
- $output .= &Apache::loncommon::end_data_table();
+ $output .= '</div>';
}
if ($target eq 'tex') {
$output = &Apache::lonxml::xmlparse($r,'tex',&mt('Available functions').'<br /><br />'.$output);
Index: loncom/interface/lonmsgdisplay.pm
diff -u loncom/interface/lonmsgdisplay.pm:1.206 loncom/interface/lonmsgdisplay.pm:1.207
--- loncom/interface/lonmsgdisplay.pm:1.206 Tue Dec 16 20:01:18 2025
+++ loncom/interface/lonmsgdisplay.pm Wed Jan 21 20:55:08 2026
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Routines for messaging display
#
-# $Id: lonmsgdisplay.pm,v 1.206 2025/12/16 20:01:18 raeburn Exp $
+# $Id: lonmsgdisplay.pm,v 1.207 2026/01/21 20:55:08 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -647,6 +647,7 @@
'active' => 'Broadcast to Active Members',
'previous' => 'Broadcast (Bcc) to Former Members',
'future' => 'Broadcast (Bcc) to Future Members',
+ 'msgtype' => 'Use Bcc or Ccc for each recipient',
);
foreach my $user (sort(keys(%{$memberinfo}))) {
my $status = $$memberinfo{$user}{status};
@@ -679,7 +680,7 @@
'onclick="javascript:toggleAll('."this.form,'uncheck'".')" />'.
'</span>');
if ($status eq 'active') {
- $r->print((' 'x3).'<select name="groupmail">'.
+ $r->print((' 'x3).'<select name="groupmail" aria-label="'.$lt{'msgtype'}.'">'.
'<option value="bcc" selected="selected">'.&mt('Bcc').'</option>'.
'<option value="cc">'.&mt('Cc').'</option>'.
'</select>');
@@ -693,10 +694,10 @@
foreach my $key (sort(keys(%{$Sortby{$status}}))) {
foreach my $user (@{$Sortby{$status}{$key}}) {
$r->print(&Apache::loncommon::start_data_table_row().
- '<td><span class="LC_nobreak"><input type="checkbox" '.
+ '<td><span class="LC_nobreak"><label><input type="checkbox" '.
'name="selectedusers_forminput" value="'.
$user.':'.$status.'" />'.
- $$memberinfo{$user}{'fullname'}.'</span></td>'.
+ $$memberinfo{$user}{'fullname'}.'</label></span></td>'.
'<td>'.$$memberinfo{$user}{'uname'}.'</td>'.
'<td>'.$$memberinfo{$user}{'udom'}.'</td>'.
&Apache::loncommon::end_data_table_row());
More information about the LON-CAPA-cvs
mailing list