--- loncom/interface/lonuserutils.pm	2009/08/14 10:37:22	1.97
+++ loncom/interface/lonuserutils.pm	2009/09/07 13:49:49	1.97.2.2
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Utility functions for managing LON-CAPA user accounts
 #
-# $Id: lonuserutils.pm,v 1.97 2009/08/14 10:37:22 raeburn Exp $
+# $Id: lonuserutils.pm,v 1.97.2.2 2009/09/07 13:49:49 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -2122,6 +2122,17 @@ function username_display_launch(usernam
             document.location.href = '/adm/'+domain+'/'+username+'/aboutme';
         }
     }
+    if (target == 'track') {
+        if (document.$formname.userwin.checked == true) {
+            var url = '/adm/trackstudent?selected_student='+username+':'+domain+'&only_body=1';
+            var options = 'height=600,width=800,resizable=yes,scrollbars=yes,location=no,menubar=no,toolbar=no';
+            var trackwin = window.open(url,'',options,1);
+            trackwin.focus();
+            return;
+        } else {
+            document.location.href = '/adm/trackstudent?selected_student='+username+':'+domain;
+        }
+    }
 }
 // ]]>
 </script>
@@ -2156,6 +2167,7 @@ END
                        'aboutme'    => "Display a user's personal information page",
                        'owin'       => "Open in a new window",
                        'modify'     => "Modify a user's information",
+                       'track'      => "View a user's recent activity",
                        'clicker'    => "Clicker-ID",
                       );
     if ($context eq 'domain' && $env{'form.roletype'} eq 'course') {
@@ -2218,7 +2230,7 @@ END
 END
             if ($actionselect) {
                 $output .= <<"END";
-<div class="LC_left_float"><fieldset><legend>$lt{'ac'}</legend>
+<div class="LC_left_float"><fieldset><legend><b>$lt{'ac'}</b></legend>
 $actionselect
 <br/><br /><input type="button" value="$lt{'ca'}" onclick="javascript:checkAll(document.$formname.actionlist)" /> &nbsp;
 <input type="button" value="$lt{'ua'}" onclick="javascript:uncheckAll(document.$formname.actionlist)" /><br /><input type="button" value="$lt{'pr'}" onclick="javascript:verify_action('actionlist')" /></fieldset></div>
@@ -2263,12 +2275,17 @@ END
                     }
                 }
             }
-            $output .= '<div class="LC_left_float"><fieldset><legend>'.$lt{'link'}.'</legend>'.
+            $output .= '<div class="LC_left_float"><fieldset><legend><b>'.$lt{'link'}.'</b></legend>'.
                        '<table><tr>';
             my @linkdests = ('aboutme');
             if ($permission->{'cusr'}) {
                 unshift (@linkdests,'modify');
             }
+            if (&Apache::lonnet::allowed('vsa', $env{'request.course.id'}) ||
+                &Apache::lonnet::allowed('vsa', $env{'request.course.id'}.'/'.
+                                         $env{'request.course.sec'})) {
+                push(@linkdests,'track');
+            }
             $output .= '<td>';
             my $usernamelink = $env{'form.usernamelink'};
             if ($usernamelink eq '') {
@@ -4828,14 +4845,18 @@ sub roles_by_context {
     my ($context,$custom) = @_;
     my @allroles;
     if ($context eq 'course') {
-        @allroles = ('st','ad','ta','ep','in','cc');
+        @allroles = ('st');
+        if ($env{'request.role'} =~ m{^dc\./}) {
+            push(@allroles,'ad');
+        }
+        push(@allroles,('ta','ep','in','cc'));
         if ($custom) {
             push(@allroles,'cr');
         }
     } elsif ($context eq 'author') {
         @allroles = ('ca','aa');
     } elsif ($context eq 'domain') {
-        @allroles = ('li','dg','sc','au','dc');
+        @allroles = ('li','ad','dg','sc','au','dc');
     }
     return @allroles;
 }