--- loncom/interface/loncoursegroups.pm	2006/07/07 16:48:21	1.40
+++ loncom/interface/loncoursegroups.pm	2006/07/07 19:34:20	1.43
@@ -1,6 +1,6 @@
 # The LearningOnline Network with CAPA
 #
-# $Id: loncoursegroups.pm,v 1.40 2006/07/07 16:48:21 albertel Exp $
+# $Id: loncoursegroups.pm,v 1.43 2006/07/07 19:34:20 albertel Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -1182,10 +1182,9 @@ sub general_settings_form {
         $toolprivs,$fixedprivs,$sectioncount,$stored,$states,$navbuttons,
         $rowColor1,$rowColor2,$gpterm,$ucgpterm,$crstype) = @_;
     my ($nexttext,$prevtext);
-    &groupsettings_options($r,$tabcol,$functions,$action,$formname,$stored,1,
+    &groupsettings_options($r,$functions,$action,$formname,$stored,1,
                            $gpterm,$ucgpterm,$crstype);
-    &access_date_settings($r,$tabcol,$action,$formname,$stored,2,$gpterm,
-                          $ucgpterm);
+    &access_date_settings($r,$action,$formname,$stored,2,$gpterm,$ucgpterm);
     if ($action eq 'create') {
         &membership_options($r,$action,$formname,$sectioncount,3,$gpterm,
 			    $ucgpterm);
@@ -1210,7 +1209,7 @@ sub general_settings_form {
 }
 
 sub groupsettings_options {
-    my ($r,$tabcol,$functions,$action,$formname,$stored,$image,$gpterm,
+    my ($r,$functions,$action,$formname,$stored,$image,$gpterm,
         $ucgpterm,$crstype) = @_;
     my %lt = &Apache::lonlocal::texthash(
         'gdat' => "$ucgpterm open and close dates",
@@ -1226,12 +1225,9 @@ sub groupsettings_options {
     my ($crsquota,$freespace,$maxposs) = &get_quota_constraints($action,$stored);
     &topic_bar($r,$image,$lt{'gnde'});
     $r->print('
-   <tr>
-    <td>&nbsp;</td>
-    <td colspan="3">
-     <table border="0" cellpadding="2" cellspacing="2">
+     <table class="LC_descriptive_input">
       <tr>
-       <td><b>'.$lt{'gnam'}.':</b></td>
+       <td class="LC_description">'.$lt{'gnam'}.':</td>
        <td colspan="5">
 ');
     if ($action eq 'create') {
@@ -1244,13 +1240,13 @@ sub groupsettings_options {
        </td>
       <tr>
       <tr>
-       <td><b>$lt{'desc'}:</b></td>
+       <td class="LC_description">$lt{'desc'}:</td>
        <td colspan="5"><input type="text" name="description" size="40"
                                                     value="" />
        </td>
       <tr>
       <tr>
-       <td><b>$lt{'func'}:</b></td>
+       <td class="LC_description">$lt{'func'}:</td>
 END
     my $numitems = keys(%{$functions});
     my $halfnum = int($numitems/2);
@@ -1284,7 +1280,7 @@ END
        </td>
       </tr>
       <tr>
-       <td><b>'.&mt('Granularity:').'</b></td>
+       <td class="LC_description">'.&mt('Granularity:').'</td>
        <td colspan="10">'.$lt{'doyo'}.'&nbsp;<label><input type="radio" name="granularity" value="Yes" />'.&mt('Yes').'</label>&nbsp;<label><input type="radio" name="granularity" value="No" checked="checked" />'.&mt('No').'</label>');
     if ($action eq 'modify') {
         $r->print('&nbsp;&nbsp;('.&mt('Currently set to "[_1]"',
@@ -1294,7 +1290,7 @@ END
        </td>
       </tr>
       <tr>
-       <td valign="top">'.&mt('<b>Disk quota:</b> ').'</td><td colspan="10">');
+       <td class="LC_description">'.&mt('Disk quota: ').'</td><td colspan="10">');
     if ($action eq 'create') {
         $r->print(&mt('If you enable the file repository for the [_1], allocate a disk quota.',$gpterm));
     } else {
@@ -1318,8 +1314,6 @@ END
        </td>
       </tr>
      </table>
-    </td>
-   </tr>
 ');
     return;
 }
@@ -1428,7 +1422,7 @@ sub sections_selection {
 }
 
 sub access_date_settings {
-    my ($r,$tabcol,$action,$formname,$stored,$image,$gpterm,$ucgpterm) = @_;
+    my ($r,$action,$formname,$stored,$image,$gpterm,$ucgpterm) = @_;
     my %lt = &Apache::lonlocal::texthash(
                 'sten' => "Default start and end dates for $gpterm access",
              );
@@ -1440,21 +1434,11 @@ sub access_date_settings {
             $endtime = $$stored{'enddate'};
         }
     }
-    my ($start_table,$end_table) = &date_setting_table
-                                    ($starttime,$endtime,$formname);
+    my ($table) = &date_setting_table($starttime,$endtime,$formname);
     &topic_bar($r,$image,$lt{'sten'});
     $r->print('
-   <tr>
-    <td>&nbsp;</td>
-    <td colspan="3">'.$start_table.'</td>
-   <tr>
-   <tr>
-    <td colspan="4">&nbsp;</td>
-   </tr>
-   <tr>
-    <td>&nbsp;</td>
-    <td colspan="3">'.$end_table.'</td>
-   <tr>');
+    '.$table.'
+    ');
     return;
 }
 
@@ -1472,6 +1456,7 @@ sub choose_members_form {
     my $earlyout = &validate_groupname($groupname,$action,$cdom,$cnum,$gpterm,
                                        $ucgpterm,$crstype);
     if ($earlyout) {
+	$r->print($earlyout)
         &display_navbuttons($r,$formname,$$states{$action}[$page-1],
                            $$navbuttons{'gtps'});
         return;
@@ -1523,13 +1508,7 @@ sub choose_members_form {
 
 sub display_navbuttons {
     my ($r,$formname,$prev,$prevtext,$next,$nexttext) = @_;
-    $r->print('
-    <tr>
-     <td colspan="4">&nbsp;</td>
-    </tr>
-    <tr>
-     <td>&nbsp;</td>
-     <td colspan="3">');
+    $r->print('<div class="LC_navbuttons">');
     if ($prev) {
         $r->print('
       <input type="button" name="previous" value = "'.$prevtext.'"
@@ -1541,10 +1520,7 @@ sub display_navbuttons {
       <input type="button" name="next" value="'.$nexttext.'"
  onclick="javascript:nextPage(document.'.$formname.','."'".$next."'".')" />');
     }
-    $r->print('
-     </td>
-    </tr>
-');
+    $r->print('</div>');
 }
 
 sub check_tools {
@@ -1585,7 +1561,7 @@ sub print_current_settings {
     }
     if ($action eq 'create') {
         $r->print('
-<div><span>'.$lt{'ygrs'}.'</span>
+<div><span style="font-size: larger">'.$lt{'ygrs'}.'</span>
 <br />'.$lt{'tfwa'}.'
 </div>');
     }
@@ -1697,9 +1673,6 @@ sub pick_new_members {
     &topic_bar($r,$img,$lt{'gpme'});
     if (keys(%members) > 0) {
         $r->print('
- <tr>
-  <td>&nbsp;</td>
-  <td colspan="3">
     <table>
      <tr>');
         &check_uncheck_buttons($r,$formname,'member',$lt{'addm'});
@@ -1714,42 +1687,32 @@ sub pick_new_members {
      </fieldset></nobr></td>');
         }
         $r->print('</tr></table>
-  </td>
- </tr>
- <tr>
-  <td colspan="4">&nbsp;</td>
- </tr>
- <tr>
-  <td>&nbsp;</td>
-  <td colspan="3">
         ');
-        $r->print(&Apache::lonhtmlcommon::start_pick_box());
+        $r->print(&Apache::loncommon::start_data_table().
+		  &Apache::loncommon::start_data_table_header_row());
         $r->print('
-   <table border="0" cellpadding="4" cellspacing="1">
-    <tr bgcolor="'.$tabcol.'" align="center">
-     <td><b>'.&mt('Add?').'</b></td>
-     <td><b><a href="javascript:changeSort('."'fullname'".')">'.&mt('Name').'</a></b></td>
-     <td><b><a href="javascript:changeSort('."'username'".')">'.&mt('Username').'</a></b>
-     </td>
-     <td><b><a href="javascript:changeSort('."'domain'".')">'.&mt('Domain').'</a></b></td>
-     <td><b><a href="javascript:changeSort('."'id'".')">ID</a></b></td>
-     <td><b><a href="javascript:changeSort('."'section'".')">Section</a></b></td>
+     <th>'.&mt('Add?').'</b></td>
+     <th><a href="javascript:changeSort('."'fullname'".')">'.&mt('Name').'</a></td>
+     <th><a href="javascript:changeSort('."'username'".')">'.&mt('Username').'</a></td>
+     <th><a href="javascript:changeSort('."'domain'".')">'.&mt('Domain').'</a></td>
+     <th><a href="javascript:changeSort('."'id'".')">'.&mt('ID').'</a></td>
+     <th><a href="javascript:changeSort('."'section'".')">'.&mt('Section').'</a></td>
 ');
         if (@{$available} > 0) {
-            $r->print('<td><b>'.$lt{'func'}.'</b></td>');
+            $r->print('<th>'.$lt{'func'}.'</th>');
         }
-        $r->print('</tr>');
+        $r->print(&Apache::loncommon::end_data_table_header_row());
         if (@{$available} > 0) {
             if ($granularity eq 'Yes') {
-                $r->print('<tr bgcolor="#cccccc">
+                $r->print(&Apache::loncommon::start_data_table_row('LC_data_table_dense LC_data_table_highlight').'
  <td colspan="6">&nbsp;</td>
- <td align="center"><small><nobr><b>'.&mt('All:').'</b>&nbsp;');
+ <td align="center"><nobr><b>'.&mt('All:').'</b>&nbsp;');
                 foreach my $tool (@{$available}) {
                     $r->print('<label><input type="checkbox" name="togglefunc" '.
    'onclick="javascript:toggleTools(document.'.$formname.'.user_'.$tool.',this);"'.
    ' value="'.$tool.'">'.'<b>'.$tool.'</b></label>&nbsp;&nbsp;&nbsp;');
                 }
-                $r->print('</nobr></small></td></tr>');
+                $r->print('</nobr></td></tr>');
             }
         }
         my %Sortby = ();
@@ -1768,27 +1731,22 @@ sub pick_new_members {
                 push(@{$Sortby{$members{$user}[$$idx{fullname}]}},$user);
             }
         }
-        my $rowNum = 0;
-        my $rowColor;
         foreach my $key (sort(keys(%Sortby))) {
             foreach my $user (@{$Sortby{$key}}) {
-                if ($rowNum %2 == 1) {
-                    $rowColor = $rowColor1;
-                } else {
-                    $rowColor = $rowColor2;
-                }
                 my $id = $members{$user}[$$idx{id}];
                 my $fullname = $members{$user}[$$idx{fullname}];
                 my $udom = $members{$user}[$$idx{udom}];
                 my $uname = $members{$user}[$$idx{uname}];
                 my $section = $members{$user}[$$idx{section}];
-                $r->print('<tr bgcolor="'.$rowColor.'"><td align="right">
-   <input type="checkbox" name="member" value="'.$user.'" /></td><td><small>'.
-    $fullname.'</small></td><td><small>'.$uname.'</small></td><td><small>'.
-    $udom.'</small></td><td><small>'.$id.'</small></td>'.
-			  '<td><small>'.$section.'</small></td>');
+                $r->print(&Apache::loncommon::start_data_table_row('LC_data_table_dense').
+			  '<td align="right"><input type="checkbox" name="member" value="'.$user.'" /></td>'.
+			  '<td>'.$fullname.'</td>'.
+			  '<td>'.$uname.'</td>'.
+			  '<td>'.$udom.'</td>'.
+			  '<td>'.$id.'</td>'.
+			  '<td>'.$section.'</td>');
                 if (@{$available} > 0) {
-                    $r->print('<td align="center"><nobr><small>'.
+                    $r->print('<td align="center"><nobr>'.
                               '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;');
                     foreach my $tool (@{$available}) {
                         if ($granularity eq 'Yes') {
@@ -1799,30 +1757,18 @@ sub pick_new_members {
                           $tool.'" value="'.$user.'" />'.$tool.'&nbsp;&nbsp;&nbsp;');
                         }
                     }
-                    $r->print('</small></nobr></td>');
+                    $r->print('</nobr></td>');
                 }
-                $r->print('</tr>'."\n");
-                $rowNum ++;
+                $r->print(&Apache::loncommon::end_data_table_row()."\n");
             }
         }
-        $r->print(&Apache::lonhtmlcommon::end_pick_box());
-        $r->print('
-     </td>
-    </tr>');
+        $r->print(&Apache::loncommon::end_data_table());
     } else {
-        $r->print('
-    <tr>
-     <td>&nbsp;</td>
-     <td colspan="3">
-');
         if ($totalusers > 0) {
             $r->print($lt{'nnew'}.'<br /><br />'.$lt{'yoma'});
         } else { 
             $r->print($lt{'nome'});
         }
-        $r->print('
-     </td>
-    </tr>');
     }
     return $newusers;
 }
@@ -1924,8 +1870,8 @@ sub privilege_specificity {
         } else {
             $r->print($lt{'algm'}.'<br /><br />');
         }
-        &default_privileges($r,$action,$tabcol,$rowColor1,$rowColor2,
-                            $tools,$toolprivs,$fixedprivs,$available);
+        &default_privileges($r,$action,$tools,$toolprivs,$fixedprivs,
+			    $available);
     } else {
         if ($action eq 'create') {
             $r->print($lt{'asyo'});
@@ -1949,79 +1895,70 @@ sub privilege_specificity {
 }
 
 sub default_privileges {
-    my ($r,$action,$tabcol,$rowColor1,$rowColor2,$tools,$toolprivs,
-        $fixedprivs,$available) = @_;
+    my ($r,$action,$tools,$toolprivs,$fixedprivs,$available) = @_;
     my %lt = &Apache::lonlocal::texthash(
                                 'addp' => 'Additional privileges',
                                 'fixp' => 'Fixed privileges',
                                 'oppr' => 'Optional privileges',
                                 'func' => 'Function',
     );
-    $r->print(&Apache::lonhtmlcommon::start_pick_box());
-    $r->print('<tr>
-                <td bgcolor="'.$tabcol.'" valign="top">
-                 <table cellspacing="0" cellpadding="1">
-                  <tr>
-                   <td valign="top"><b>'.$lt{'func'}.'</b></td>
-                  </tr>
-                  <tr>
-                   <td valign="top"><b>'.$lt{'fixp'}.'</b></td>
-                  </tr>
-                  <tr>
-                   <td valign="top"><b>'.$lt{'oppr'}.'</b></td>
-                  </tr>
-                 </table>
-                </td>
-    ');
+    $r->print(&Apache::lonhtmlcommon::start_pick_box('LC_group_priv_box').
+	      &Apache::lonhtmlcommon::row_title($lt{'func'},undef,
+						'LC_groups_functionality'));
+    $r->print(join('</td><td class="LC_groups_functionality">',@{$tools}));
+    $r->print(&Apache::lonhtmlcommon::row_closure(1));
+    my $fixed = '';
+    my $dynamic = '';
     foreach my $tool (@{$tools}) {
-        $r->print('<td align="center" valign="top">
-                    <table cellspacing="0" cellpadding="1">
-                     <tr bgcolor="#cccccc">
-                      <td colspan="2" align="center"><b>'.$tool.'</b></td>
-                     </tr>
-        ');
         my $privcount = 0;
-        my $fixed = '';
-        my $dynamic = '';
+	if ($dynamic ne '') {
+	    $dynamic .= '</td><td class="LC_groups_optional">';
+	}
+	$dynamic .= '<table class="LC_group_priv"><tr>';
         foreach my $priv (sort(keys(%{$$toolprivs{$tool}}))) {
             if (exists($$fixedprivs{$tool}{$priv})) {
+		if ($fixed ne '') {
+		    $fixed .= '</td><td class="LC_groups_fixed">';
+		}
                 $fixed .= '<input type="hidden" name="defpriv" value="'.$priv.'" />'.$$toolprivs{$tool}{$priv}.'&nbsp;';
                 if ($action eq 'modify') {
-                    if (grep/^$tool$/,@{$available}) {
+                    if (grep(/^$tool$/,@{$available})) {
                         $fixed .= '<small>'.&mt('(on)').'<small>&nbsp;';
                     } else {
                         $fixed .= '<small>'.&mt('(off)').'<small>&nbsp;';
                     }
                 }
             } else {
-                $privcount ++;
+                $privcount++;
                 if ($privcount == 3) {
                     $dynamic .= '</tr>
-                                 <tr bgcolor="'.$rowColor1.'">'."\n";
+                                 <tr>'."\n";
                 }
                 $dynamic .= '<td><label><input type="checkbox" name="defpriv" value="'.$priv.'" />'.$$toolprivs{$tool}{$priv}.'</label></td>'."\n";
             }
         }
-        if ($dynamic eq '') {
-            $dynamic = '<td>None</td>'."\n";
+        if ($privcount == 0) {
+            $dynamic .= '<td>None</td>'."\n";
         }
         if ($privcount < 3) {
-            $dynamic .= '</tr>
-                         <tr bgcolor="'.$rowColor1.'">
-                          <td colspan="2">&nbsp;</td>'."\n";
+            $dynamic .= '</td>
+                         <td>&nbsp;</td>'."\n";
         } elsif ($privcount%2) {
             $dynamic = '<td>&nbsp;</td>'."\n";
         }
-        $r->print('<tr bgcolor="'.$rowColor2.'">
-                    <td colspan="2" align="center"><nobr>'.$fixed.'</nobr></td>
-                   </tr>
-                   <tr bgcolor="'.$rowColor1.'">'."\n".$dynamic.'</tr>'."\n".'</table>'."\n".'</td>
-        ');
+	$dynamic .= '</tr></table>';
     }
-    $r->print('</tr>'."\n");
-    $r->print(&Apache::lonhtmlcommon::end_pick_box());
+    $r->print(&Apache::lonhtmlcommon::row_title($lt{'fixp'},undef,
+						'LC_groups_fixed').
+	      $fixed.
+	      &Apache::lonhtmlcommon::row_closure(1));
+    $r->print(&Apache::lonhtmlcommon::row_title($lt{'oppr'},undef,
+						'LC_groups_optional').
+	      $dynamic.
+	      &Apache::lonhtmlcommon::end_pick_box());
     $r->print('<br />');
     return;
+
 }
 
 sub display_defprivs {
@@ -2651,9 +2588,6 @@ sub member_privileges_form {
                 my %total;
                 if (keys(%{$usertools}) > 1) {
                     $r->print('
- <tr>
-  <td>&nbsp;</td>
-  <td colspan="3">
    <table border="0" cellspacing="2" cellpadding="2" border="0">
     <tr>
 ');
@@ -2718,30 +2652,22 @@ END
                                       \@excluded);
                 $r->print('</td>');
                 $r->print(&Apache::lonhtmlcommon::end_pick_box());
-                $r->print('</td></tr>
- <tr>
-  <td colspan="4">&nbsp;</td>
- </tr>
-');
             } else {
-                $r->print('<tr><td>&nbsp;</td><td colspan="3">'.$lt{'forf'}.
-                          '<br />');
+                $r->print($lt{'forf'}.'<br />');
                 &display_defprivs($r,$tabcol,$rowColor1,$rowColor2,$tools,
                             $toolprivs,\@defprivs);
             }
         } else {
             if (keys(%{$usertools}) > 0) {
-                $r->print('<tr><td>&nbsp;</td><td colspan="3">'.$lt{'algr'}.
-                          '<br /><br />');
+                $r->print($lt{'algr'}.'<br /><br />');
                 &display_defprivs($r,$tabcol,$rowColor1,$rowColor2,$tools,
                             $toolprivs,\@defprivs);
             } else {
-                $r->print('<tr><td>&nbsp;</td><td colspan="3">'.$lt{'asno'}.
-                          '<br />');
+                $r->print($lt{'asno'}.'<br />');
             }
         }
     } else {
-        $r->print('<tr><td>&nbsp;</td><td colspan="3">'.$lt{'asng'});
+        $r->print($lt{'asng'});
     }
     return $numchgs;
 }
@@ -3423,23 +3349,18 @@ sub date_setting_table {
                                                       'startdate',$starttime);
     my $endform = &Apache::lonhtmlcommon::date_setter($formname,
                                                       'enddate',$endtime);
-    my $perpetual = '<nobr><label><input type="checkbox" name="no_end_date" />
-                                                no ending date</label></nobr>';
-    my $start_table = '';
-    $start_table .= "<table>\n";
-    $start_table .= '<tr><td align="right">Default starting date for 
-                                           member access</td>'.
+    my $perpetual = 
+	'<nobr><label><input type="checkbox" name="no_end_date" />'.
+	&mt('None').'</label></nobr>';
+    my $table = "<table class=\"LC_descriptive_input\">\n".
+	'<tr><td class="LC_description">'.&mt('Start:').'</td>'.
         '<td>'.$startform.'</td>'.
-        '<td>&nbsp;</td>'."</tr>\n";
-    $start_table .= "</table>";
-    my $end_table = '';
-    $end_table .= "<table>\n";
-    $end_table .= '<tr><td align="right">Default ending date for 
-                                         member access</td>'.
+        '<td>&nbsp;</td>'."</tr>\n".
+	'<tr><td class="LC_description">'.&mt('End:').'</td>'.
         '<td>'.$endform.'</td>'.
-        '<td>'.$perpetual.'</td>'."</tr>\n";
-    $end_table .= "</table>\n";
-    return ($start_table, $end_table);
+        '<td>'.$perpetual.'</td>'."</tr>\n".
+	"</table>\n";
+    return $table;
 }
 
 sub add_group_folder {
@@ -3670,8 +3591,8 @@ sub validate_groupname {
                               "existing $gpterm",    
     );
 
-    my $exitmsg = '<b>'.$lt{'igna'}.'</b><br /><br />'.$lt{'tgne'}.' "'.
-                  $groupname.'" ';
+    my $exitmsg = '<span class="LC_error">'.$lt{'igna'}.'</span><br /><br />'.
+	$lt{'tgne'}.' "'.$groupname.'" ';
     my $dupmsg = $lt{'grna'};
     my $earlyout;
     if (($groupname eq '') || ($groupname =~ /\W/)) {