--- loncom/interface/lonuserutils.pm	2009/08/03 15:57:25	1.95
+++ loncom/interface/lonuserutils.pm	2009/08/28 22:47:07	1.98
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Utility functions for managing LON-CAPA user accounts
 #
-# $Id: lonuserutils.pm,v 1.95 2009/08/03 15:57:25 bisitz Exp $
+# $Id: lonuserutils.pm,v 1.98 2009/08/28 22:47:07 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -347,10 +347,13 @@ sub print_upload_manager_header {
               &mt('Ignore First Line').'</label><br />');
     $r->print('<br /><input type="button" value="'.&mt('Reverse Association').'" '.
               'name="Reverse Association" '.
-              'onClick="javascript:this.form.associate.value=\'Reverse Association\';submit(this.form);" />');
+              'onclick="javascript:this.form.associate.value=\'Reverse Association\';submit(this.form);" />');
     $r->print("<br /><br />\n".
               '<script type="text/javascript" language="Javascript">'."\n".
-              $javascript."\n".$javascript_validations.'</script>');
+              '// <![CDATA['."\n".
+              $javascript."\n".$javascript_validations."\n".
+              '// ]]>'."\n".
+              '</script>');
 }
 
 ###############################################################
@@ -785,23 +788,21 @@ sub print_upload_manager_footer {
             &Apache::loncommon::help_open_topic('Auth_Options').
             "</p>\n";
     }
-    $Str .= &set_login($defdom,$krbform,$intform,$locform)
-           .&Apache::lonhtmlcommon::row_closure();
+    $Str .= &set_login($defdom,$krbform,$intform,$locform);
 
     my ($home_server_pick,$numlib) =
         &Apache::loncommon::home_server_form_item($defdom,'lcserver',
                                                   'default','hide');
-#FIXME: Broken?!? $home_server_pick returns empty value on prod (2.8.1) and on dev server. SB 2009-08-03
     if ($numlib > 1) {
-        $Str .= &Apache::lonhtmlcommon::row_title(
+        $Str .= &Apache::lonhtmlcommon::row_closure()
+               .&Apache::lonhtmlcommon::row_title(
                     &mt('LON-CAPA Home Server for New Users'))
                .&mt('LON-CAPA domain: [_1] with home server:','"'.$defdom.'"')
                .$home_server_pick
                .&Apache::lonhtmlcommon::row_closure();
     } else {
-        $Str .= &Apache::lonhtmlcommon::row_title(&mt('Home Server'))
-               .$home_server_pick
-               .&Apache::lonhtmlcommon::row_closure();
+        $Str .= $home_server_pick.
+                &Apache::lonhtmlcommon::row_closure();
     }
 
     $Str .= &Apache::lonhtmlcommon::row_title(&mt('Default domain'))
@@ -886,8 +887,8 @@ sub print_upload_manager_footer {
                .'</p>';
     }
     $Str .= '<p><input type="button"'
-           .'onClick="javascript:verify(this.form,this.form.csec)" '
-           .'value="'.&mt('Update Users').'" />'
+           .' onclick="javascript:verify(this.form,this.form.csec)"'
+           .' value="'.&mt('Update Users').'" />'
            .'</p>'."\n"
            .'</div>';
     $r->print($Str);
@@ -1182,7 +1183,7 @@ sub default_role_selector {
                       '<th>'.$lt{'grs'}.'</th>'.
                       &Apache::loncommon::end_data_table_header_row().
                       &Apache::loncommon::start_data_table_row()."\n".
-                      '<td><input type="text" name="coursedesc" value="" onFocus="this.blur();opencrsbrowser('."'studentform','dccourse','dcdomain','coursedesc',''".')" /></td>'."\n".
+                      '<td><input type="text" name="coursedesc" value="" onfocus="this.blur();opencrsbrowser('."'studentform','dccourse','dcdomain','coursedesc',''".')" /></td>'."\n".
                       '<td><select name="courserole">'."\n".
                       &default_course_roles($context,$checkpriv,%customroles)."\n".
                       '</select></td><td>'.
@@ -1375,9 +1376,9 @@ sub print_userlist {
                                            'html'  => 'HTML');
         my $output_selector = '<select size="1" name="output" >';
         foreach my $outputformat ('html','csv','excel') {
-            my $option = '<option value="'.$outputformat.'" ';
+            my $option = '<option value="'.$outputformat.'"';
             if ($outputformat eq $env{'form.output'}) {
-                $option .= 'selected ';
+                $option .= ' selected="selected"';
             }
             $option .='>'.$lt{$outputformat}.'</option>';
             $output_selector .= "\n".$option;
@@ -1659,7 +1660,7 @@ sub section_group_filter {
             foreach my $option ('all','none',@options) { 
                 $currsel = '';
                 if ($env{'form.'.$name{$item}} eq $option) {
-                    $currsel = ' selected="selected" ';
+                    $currsel = ' selected="selected"';
                 }
                 $markup .= ' <option value="'.$option.'"'.$currsel.'>';
                 if (($option eq 'all') || ($option eq 'none')) {
@@ -2058,6 +2059,7 @@ sub show_users_list {
             if ($env{'course.'.$cid.'.internal.showphoto'}) {
                 $r->print('
 <script type="text/javascript">
+// <![CDATA[
 function photowindow(photolink) {
     var title = "Photo_Viewer";
     var options = "scrollbars=1,resizable=1,menubar=0";
@@ -2065,6 +2067,7 @@ function photowindow(photolink) {
     stdeditbrowser = open(photolink,title,options,"1");
     stdeditbrowser.focus();
 }
+// ]]>
 </script>
                ');
             }
@@ -2081,6 +2084,7 @@ END
         $r->print(<<END);
 
 <script type="text/javascript" language="Javascript">
+// <![CDATA[
 $check_uncheck_js
 
 $verify_action_js
@@ -2118,7 +2122,19 @@ 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>
 $date_sec_selector
 <input type="hidden" name="state" value="$env{'form.state'}" />
@@ -2151,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') {
@@ -2264,6 +2281,12 @@ END
             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 '') {
@@ -2934,9 +2957,9 @@ sub date_section_javascript {
         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">'."\n";
-    $output .= <<"ENDONE";
+    my $output = <<"ENDONE";
+<script type="text/javascript">
+// <![CDATA[
     function opendatebrowser(callingform,formname,calledby) {
         var bulkaction = callingform.bulkaction.options[callingform.bulkaction.selectedIndex].value;
         var url = '/adm/createuser?';
@@ -2959,6 +2982,7 @@ ENDONE
         stdeditbrowser = open(url,title,options,'1');
         stdeditbrowser.focus();
     }
+// ]]>
 </script>
 ENDTWO
     return $output;
@@ -2972,6 +2996,7 @@ sub date_section_selector {
     my $sec_js = &setsections_javascript($formname,$groupslist);
     my $output = <<"END";
 <script type="text/javascript">
+// <![CDATA[
 
 $sec_js
 
@@ -3040,6 +3065,7 @@ END
 
 $verify_action_js
 
+// ]]>
 </script>
 ENDJS
     my %lt = &Apache::lonlocal::texthash (
@@ -3316,7 +3342,9 @@ sub show_drop_list {
 <input type="hidden" name="action" value="$action" />
 <input type="hidden" name="state"  value="done" />
 <script type="text/javascript" language="Javascript">
+// <![CDATA[
 $check_uncheck_js
+// ]]>
 </script>
 <p>
 <input type="hidden" name="phase" value="four" />