--- loncom/interface/lonuserutils.pm	2008/01/05 15:19:32	1.43
+++ loncom/interface/lonuserutils.pm	2008/01/20 22:25:05	1.50
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Utility functions for managing LON-CAPA user accounts
 #
-# $Id: lonuserutils.pm,v 1.43 2008/01/05 15:19:32 raeburn Exp $
+# $Id: lonuserutils.pm,v 1.50 2008/01/20 22:25:05 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -1307,8 +1307,10 @@ sub print_userlist {
     }
     $r->rflush();
     if ($context eq 'course') {
-        my $classlist = &Apache::loncoursedata::get_classlist();
-        %userlist = %{$classlist};
+        if (($env{'form.showrole'} eq 'st') || ($env{'form.showrole'} eq 'Any')) { 
+            my $classlist = &Apache::loncoursedata::get_classlist();
+            %userlist = %{$classlist};
+        }
         if ($env{'form.showrole'} ne 'st') {
             my $showroles;
             if ($env{'form.showrole'} ne 'Any') {
@@ -1465,9 +1467,9 @@ sub section_group_filter {
                                               all  => 'all',
                                               none => 'none',
                                             );
-    my ($output,@options);
+    my $output;
     foreach my $item (@filters) {
-        my $markup; 
+        my ($markup,@options); 
         if ($env{'form.'.$name{$item}} eq '') {
             $env{'form.'.$name{$item}} = 'all';
         }
@@ -1788,6 +1790,8 @@ sub make_keylist_array {
     $index->{'email'} = &Apache::loncoursedata::CL_PERMANENTEMAIL();
     $index->{'role'} = &Apache::loncoursedata::CL_ROLE();
     $index->{'extent'} = &Apache::loncoursedata::CL_EXTENT();
+    $index->{'photo'} = &Apache::loncoursedata::CL_PHOTO();
+    $index->{'thumbnail'} = &Apache::loncoursedata::CL_THUMBNAIL();
     foreach my $key (keys(%{$index})) {
         $keylist->[$index->{$key}] = $key;
     }
@@ -1990,14 +1994,30 @@ function username_display_launch(usernam
         }
     }
     if (target == 'modify') {
-        document.studentform.srchterm.value=username;
-        document.studentform.srchdomain.value=domain;
-        document.studentform.phase.value='get_user_info';
-        document.studentform.action.value = 'singleuser';
-        document.studentform.submit();
+        if (document.studentform.userwin.checked == true) {
+            var url = '/adm/createuser?srchterm='+username+'&srchdomain='+domain+'&phase=get_user_info&action=singleuser&srchin=dom&srchby=uname&srchtype=exact&popup=1';
+            var options = 'height=600,width=800,resizable=yes,scrollbars=yes,location=no,menubar=no,toolbar=no';
+            modifywin = window.open(url,'',options,1);
+            modifywin.focus();
+            return;
+        } else {
+            document.studentform.srchterm.value=username;
+            document.studentform.srchdomain.value=domain;
+            document.studentform.phase.value='get_user_info';
+            document.studentform.action.value = 'singleuser';
+            document.studentform.submit();
+        }
     }
-    else {
-        document.location.href = '/adm/'+domain+'/'+username+'/aboutme';
+    if (target == 'aboutme') {
+        if (document.studentform.userwin.checked == true) {
+            var url = '/adm/'+domain+'/'+username+'/aboutme?popup=1';
+            var options = 'height=600,width=800,resizable=yes,scrollbars=yes,location=no,menubar=no,toolbar=no';
+            aboutmewin = window.open(url,'',options,1);
+            aboutmewin.focus();
+            return;
+        } else {
+            document.location.href = '/adm/'+domain+'/'+username+'/aboutme';
+        }
     }
 }
 </script>
@@ -2032,6 +2052,7 @@ END
                        'ac'         => "Action to take for selected users",
                        'link'       => "Behavior of username links",
                        'aboutme'    => "Display a user's personal page",
+                       'owin'       => "Open in a new window",
                        'modify'     => "Modify a user's information",
                       );
     if ($context eq 'domain' && $env{'form.roletype'} eq 'course') {
@@ -2090,23 +2111,25 @@ END
             $output = '<p>';
             my @linkdests = ('aboutme');
             if ($permission->{'cusr'}) {
-                push (@linkdests,'modify');
-                $output .= '<span class="LC_nobreak">'.$lt{'link'}.':&nbsp;';
-                my $usernamelink = $env{'form.usernamelink'};
-                if ($usernamelink eq '') {
-                    $usernamelink = 'aboutme';
-                }
-                foreach my $item (@linkdests) {
-                    my $checkedstr = '';
-                    if ($item eq $usernamelink) {
-                        $checkedstr = ' checked="checked" ';
-                    }
-                    $output .= '<label><input type="radio" name="usernamelink" value="'.$item.'"'.$checkedstr.'>&nbsp;'.$lt{$item}.'</label>&nbsp;&nbsp;';
+                unshift (@linkdests,'modify');
+            }
+            $output .= '<span class="LC_nobreak">'.$lt{'link'}.':&nbsp;';
+            my $usernamelink = $env{'form.usernamelink'};
+            if ($usernamelink eq '') {
+                $usernamelink = 'aboutme';
+            }
+            foreach my $item (@linkdests) {
+                my $checkedstr = '';
+                if ($item eq $usernamelink) {
+                    $checkedstr = ' checked="checked" ';
                 }
-                $output .= '</span><br />';
-            } else {
-                $output .= &mt("Click on a username to view the user's personal page.").'<br />';
+                $output .= '<label><input type="radio" name="usernamelink" value="'.$item.'"'.$checkedstr.'>&nbsp;'.$lt{$item}.'</label>&nbsp;&nbsp;';
             }
+            my $checkwin;
+            if ($env{'form.userwin'}) { 
+                $checkwin = 'checked = "checked"'; 
+            }
+            $output .= '&nbsp;&nbsp;&nbsp;&nbsp;<input type="checkbox" name="userwin" value="1" $checkwin />'.$lt{'owin'}.'</span><br />';
             if ($actionselect) {
                 $output .= <<"END";
 $lt{'ac'}:&nbsp;$actionselect <input type="button" value="$lt{'go'}" onclick="javascript:opendatebrowser(this.form,'studentform','go')" /></p>
@@ -2240,7 +2263,6 @@ END
     }
 
 # Done with header lines in all formats
-
     my %index;
     my $i;
     foreach my $idx (@$keylist) {
@@ -2339,6 +2361,15 @@ END
                         next;
                     }
                 }
+                if ($env{'course.'.$env{'request.course.id'}.'.internal.showphoto'}) {
+                    if (($displayphotos eq 'on') && ($role eq 'st')) {
+                        $userlist->{$user}->[$index{'photo'}] =
+                            &Apache::lonnet::retrievestudentphoto($udom,$uname,'jpg');
+                        $userlist->{$user}->[$index{'thumbnail'}] =
+                            &Apache::lonnet::retrievestudentphoto($udom,$uname,
+                                                                'gif','thumbnail');
+                    }
+                }
             }
         }
         my %emails   = &Apache::loncommon::getemails($uname,$udom);
@@ -2451,8 +2482,7 @@ END
             }
             foreach my $item (@cols) {
                 if ($item eq 'username') {
-                    $r->print('<td>'.&print_username_link($mode,$permission,
-                                                          \%in).'</td>');
+                    $r->print('<td>'.&print_username_link($mode,\%in).'</td>');
                 } elsif (($item eq 'start' || $item eq 'end') && ($actionselect)) {
                     $r->print('<td>'.$in{$item}.'<input type="hidden" name="'.$checkval.'_'.$item.'" value="'.$sdata->[$index{$item}].'" /></td>'."\n");
                 } else {
@@ -2470,11 +2500,8 @@ END
                         $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>');
+                        if ($displayphotos eq 'on' && $role eq 'st' && $in{'photo'} ne '') {
+                            $r->print('    <td align="right"><a href="javascript:photowindow('."'".$in{'photo'}."'".')"><img src="'.$in{'thumbnail'}.'" border="1"></a></td>');
                         } else {
                             $r->print('    <td>&nbsp;</td>  ');
                         }
@@ -2539,14 +2566,10 @@ END
 }
 
 sub print_username_link {
-    my ($mode,$permission,$in) = @_;
+    my ($mode,$in) = @_;
     my $output;
     if ($mode eq 'autoenroll') {
         $output = $in->{'username'};
-    } elsif (!$permission->{'cusr'}) {
-        $output = &Apache::loncommon::aboutmewrapper($in->{'username'},
-                                                     $in->{'username'},
-                                                     $in->{'domain'});
     } else {
         $output = '<a href="javascript:username_display_launch('.
                   "'$in->{'username'}','$in->{'domain'}'".')" />'.
@@ -2657,20 +2680,14 @@ sub select_actions {
 
 sub date_section_javascript {
     my ($context,$setting) = @_;
-    my $title;
-    if (($context eq 'course') || ($context eq 'domain' && $setting eq 'course'))  {
-        $title = &mt('Date and Section selector');
-    } else {
-        $title = &mt('Date selector');
-    }
+    my $title = 'Date_And_Section_Selector';
     my %nopopup = &Apache::lonlocal::texthash (
         revoke => "Check the boxes for any users for whom roles are to be revoked, and click 'Proceed'",
         delete => "Check the boxes for any users for whom roles are to be deleted, and click 'Proceed'",
         none   => "Choose an action to take for selected users",
     );  
     my $output = '
-<script type="text/javascript">
-    var stdeditbrowser;'."\n";
+<script type="text/javascript">'."\n";
     $output .= <<"ENDONE";
     function opendatebrowser(callingform,formname,calledby) {
         var bulkaction = callingform.bulkaction.options[callingform.bulkaction.selectedIndex].value;