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

raeburn lon-capa-cvs-allow@mail.lon-capa.org
Sat, 10 Nov 2007 22:18:14 -0000


This is a MIME encoded message

--raeburn1194733094
Content-Type: text/plain

raeburn		Sat Nov 10 17:18:14 2007 EDT

  Modified files:              
    /loncom/interface	lonuserutils.pm 
  Log:
  - only show columns for photos and clicker IDs if displaying student role of 'Any' role 
  in course context.
  - only display results table if users were found matching the search criteria.
  
  
--raeburn1194733094
Content-Type: text/plain
Content-Disposition: attachment; filename="raeburn-20071110171814.txt"

Index: loncom/interface/lonuserutils.pm
diff -u loncom/interface/lonuserutils.pm:1.3 loncom/interface/lonuserutils.pm:1.4
--- loncom/interface/lonuserutils.pm:1.3	Tue Nov  6 13:23:14 2007
+++ loncom/interface/lonuserutils.pm	Sat Nov 10 17:18:09 2007
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Utility functions for managing LON-CAPA user accounts
 #
-# $Id: lonuserutils.pm,v 1.3 2007/11/06 18:23:14 raeburn Exp $
+# $Id: lonuserutils.pm,v 1.4 2007/11/10 22:18:09 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -1281,12 +1281,16 @@
         }
     } else {
         # Print out the available choices
+        my $usercount;
         if ($env{'form.action'} eq 'modifystudent') {
-            &show_users_list($r,$context,'view','modify',
-                             $env{'form.Status'},\%userlist,$keylist);
+            ($usercount) = &show_users_list($r,$context,'view','modify',
+                                 $env{'form.Status'},\%userlist,$keylist);
         } else {
-            &show_users_list($r,$context,$env{'form.output'},'aboutme',
-                             $env{'form.Status'},\%userlist,$keylist);
+            ($usercount) = &show_users_list($r,$context,$env{'form.output'},
+                               'aboutme',$env{'form.Status'},\%userlist,$keylist);
+        }
+        if (!$usercount) {
+            $r->print('<br />'.&mt('There are no users matching the search criteria.')); 
         }
     }
     $r->print('</form>');
@@ -1699,73 +1703,76 @@
     }
     push(@cols,'email');
 
-    my $rolefilter;
+    my $rolefilter = $env{'form.showrole'};
     if ($env{'form.showrole'} ne 'Any') {
         $rolefilter = &Apache::lonnet::plaintext($env{'form.showrole'});
     }
     my $results_description = &results_header_row($rolefilter,$statusmode,
                                                   $context);
     $r->print('<b>'.$results_description.'</b><br />');
+    my $output;
     if ($mode eq 'html' || $mode eq 'view') {
-        if ($linkto eq 'aboutme') {
-            $r->print(&mt("Select a user name to view the user's personal page."));
-        } elsif ($linkto eq 'modify') {
-            $r->print(&mt("Select a user name to modify the user's information"));
-        }
         $r->print(<<END);
 <input type="hidden" name="sname"  value="" />
 <input type="hidden" name="sdom"   value="" />
 END
-        $r->print("\n<p>\n".
+        if ($linkto eq 'aboutme') {
+            $output = &mt("Select a user name to view the user's personal page.");
+        } elsif ($linkto eq 'modify') {
+            $output = &mt("Select a user name to modify the user's information");
+        }
+        $output .= "\n<p>\n".
                   &Apache::loncommon::start_data_table().
-                  &Apache::loncommon::start_data_table_header_row());
+                  &Apache::loncommon::start_data_table_header_row();
         if ($mode eq 'autoenroll') {
-            $r->print("
+            $output .= "
  <th><a href=\"javascript:document.studentform.sortby.value='type';document.studentform.submit();\">$lt{'type'}</a></th>
-            ");
+            ";
         } else {
-            $r->print("
+            $output .= "
 <th>Count</th>
-            ");
+            ";
         }
         foreach my $item (@cols) {
-            $r->print("<th><a href=\"javascript:document.studentform.sortby.value='$item';document.studentform.submit();\">$lt{$item}</a></th>\n");
+            $output .= "<th><a href=\"javascript:document.studentform.sortby.value='$item';document.studentform.submit();\">$lt{$item}</a></th>\n";
         }
         my %role_types = &role_type_names();
         if ($context eq 'course') {
-            # Clicker display on or off?
-            my %clicker_options = &Apache::lonlocal::texthash(
-                                                        'on' => 'Show',
-                                                        'off' => 'Hide',
-                                                       );
-            my $clickerchg = 'on';
-            if ($displayclickers eq 'on') {
-                $clickerchg = 'off';
-            }
-            $r->print('    <th>'."\n".'     '.
-                '<a href="javascript:document.studentform.displayclickers.value='.
+            if ($env{'form.showrole'} eq 'st' || $env{'form.showrole'} eq 'Any') {
+                # Clicker display on or off?
+                my %clicker_options = &Apache::lonlocal::texthash(
+                                                            'on' => 'Show',
+                                                            'off' => 'Hide',
+                                                           );
+                my $clickerchg = 'on';
+                if ($displayclickers eq 'on') {
+                    $clickerchg = 'off';
+                }
+                $output .= '    <th>'."\n".'     '.
+                    '<a href="javascript:document.studentform.displayclickers.value='.
                       "'".$clickerchg."'".';document.studentform.submit();">'.
                       $clicker_options{$clickerchg}.'</a>&nbsp;'.$lt{'clicker'}."\n".
-                      '    </th>'."\n");
+                      '    </th>'."\n";
 
-            # Photo display on or off?
-            if ($env{'course.'.$env{'request.course.id'}.'.internal.showphoto'}) {
-                my %photo_options = &Apache::lonlocal::texthash(
-                                                        'on' => 'Show',
-                                                        'off' => 'Hide',
-                                                            );
-                my $photochg = 'on';
-                if ($displayphotos eq 'on') {
-                    $photochg = 'off';
-                }
-                $r->print('    <th>'."\n".'     '.
-            '<a href="javascript:document.studentform.displayphotos.value='.
+                # Photo display on or off?
+                if ($env{'course.'.$env{'request.course.id'}.'.internal.showphoto'}) {
+                    my %photo_options = &Apache::lonlocal::texthash(
+                                                            'on' => 'Show',
+                                                            'off' => 'Hide',
+                                                                );
+                    my $photochg = 'on';
+                    if ($displayphotos eq 'on') {
+                        $photochg = 'off';
+                    }
+                    $output .= '    <th>'."\n".'     '.
+                '<a href="javascript:document.studentform.displayphotos.value='.
                       "'".$photochg."'".';document.studentform.submit();">'.
                       $photo_options{$photochg}.'</a>&nbsp;'.$lt{'photo'}."\n".
-                      '    </th>'."\n");
+                      '    </th>'."\n";
+                }
             }
-            $r->print(&Apache::loncommon::end_data_table_header_row());
-        } 
+            $output .= &Apache::loncommon::end_data_table_header_row();
+        }
 # Done with the HTML header line
     } elsif ($mode eq 'csv') {
         #
@@ -1805,10 +1812,13 @@
     foreach my $idx (@$keylist) {
         $index{$idx} = $i++;
     }
+    my $usercount = 0;
     # Get groups, role, permanent e-mail so we can sort on them if
     # necessary.
     foreach my $user (keys(%{$userlist})) {
         my ($uname,$udom,$role,$groups,$email);
+        next if (($statusmode ne 'Any') && 
+                 ($userlist->{$user}->[$index{'status'}] ne $statusmode));
         if ($context eq 'domain') {
             if ($env{'form.roletype'} eq 'domain') {
                 ($role,$uname,$udom) = split(/:/,$user);
@@ -1839,8 +1849,21 @@
         if ($emails{'permanentemail'} =~ /\S/) {
             $userlist->{$user}->[$index{'email'}] = $emails{'permanentemail'};
         }
+        $usercount ++;
+    }
+    my $autocount = 0;
+    my $manualcount = 0;
+    my $lockcount = 0;
+    my $unlockcount = 0;
+    if ($usercount) {
+        $r->print($output);
+    } else {
+        if ($mode eq 'autoenroll') {
+            return ($usercount,$autocount,$manualcount,$lockcount,$unlockcount);
+        } else {
+            return;
+        }
     }
-
     #
     # Sort the users
     my $index  = $index{$sortby};
@@ -1852,18 +1875,14 @@
         lc($userlist->{$a}->[$second]) cmp lc($userlist->{$b}->[$second])            ||
         lc($userlist->{$a}->[$third]) cmp lc($userlist->{$b}->[$third])
         } (keys(%$userlist));
-    my $usercount = 0;
-    my $autocount = 0;
-    my $manualcount = 0;
-    my $lockcount = 0;
-    my $unlockcount = 0;
+    my $rowcount = 0;
     foreach my $user (@sorted_users) {
-        my $sdata = $userlist->{$user};
         my %in;
+        my $sdata = $userlist->{$user};
+        $rowcount ++; 
         foreach my $item (@{$keylist}) {
             $in{$item} = $sdata->[$index{$item}];
         }
-        next if (($statusmode ne 'Any') && ($in{'status'} ne $statusmode));
         $in{'role'}=&Apache::lonnet::plaintext($sdata->[$index{'role'}]); 
         if (! defined($in{'start'}) || $in{'start'} == 0) {
             $in{'start'} = &mt('none');
@@ -1875,10 +1894,9 @@
         } else {
             $in{'end'} = &Apache::lonlocal::locallocaltime($in{'end'});
         }
-        $usercount ++;
         if ($mode eq 'view' || $mode eq 'html' || $mode eq 'autoenroll') {
             $r->print(&Apache::loncommon::start_data_table_row());
-            $r->print("<td>$usercount</td>\n");
+            $r->print("<td>$rowcount</td>\n");
             if ($linkto eq 'aboutme') {
                 $in{'username'} = 
                     &Apache::loncommon::aboutmewrapper($in{'username'},
@@ -1897,23 +1915,25 @@
                 $r->print('<td>'.$in{$item}.'</td>'."\n");
             }
             if ($context eq 'course') {
-                if ($displayclickers eq 'on') {
-                    my $clickers =
+                if ($env{'form.showrole'} eq 'st' || $env{'form.showrole'} eq 'Any') {
+                    if ($displayclickers eq 'on') {
+                        my $clickers =
                    (&Apache::lonnet::userenvironment($in{'domain'},$in{'username'},'clickers'))[1];
-                    if ($clickers!~/\w/) { $clickers='-'; }
-                    $r->print('<td>'.$clickers.'</td>');
-                } else {
-                    $r->print('    <td>&nbsp;</td>  ');
-                }
-                if ($displayphotos eq 'on') {
-                    if ($env{'course.'.$env{'request.course.id'}.
-                        '.internal.showphoto'}) {
-                        my $imgurl =
-               &Apache::lonnet::retrievestudentphoto($in{'domain'},$in{'username'},'gif','thumbnail');
-                        $r->print('    <td align="right"><a href="javascript:photowindow('."'".&Apache::lonnet::studentphoto($in{'domain'},$in{'username'},'jpg')."'".')"><img src="'.$imgurl.'" border="1"></a></td>');
+                        if ($clickers!~/\w/) { $clickers='-'; }
+                        $r->print('<td>'.$clickers.'</td>');
                     } else {
                         $r->print('    <td>&nbsp;</td>  ');
                     }
+                    if ($env{'course.'.$env{'request.course.id'}.'.internal.showphoto'}) {
+                        if ($displayphotos eq 'on' && $sdata->[$index{'role'}] eq 'st') {
+                            my $imgurl =
+                        &Apache::lonnet::retrievestudentphoto($in{'domain'},$in{'username'},
+                                                          'gif','thumbnail');
+                            $r->print('    <td align="right"><a href="javascript:photowindow('."'".&Apache::lonnet::studentphoto($in{'domain'},$in{'username'},'jpg')."'".')"><img src="'.$imgurl.'" border="1"></a></td>');
+                        } else {
+                            $r->print('    <td>&nbsp;</td>  ');
+                        }
+                    }
                 }
             }
             $r->print(&Apache::loncommon::end_data_table_row());
@@ -1968,8 +1988,9 @@
     }
     if ($mode eq 'autoenroll') {
         return ($usercount,$autocount,$manualcount,$lockcount,$unlockcount);
+    } else {
+        return ($usercount);
     }
-    return;
 }
 
 sub role_type_names {

--raeburn1194733094--