--- loncom/interface/lonstatistics.pm	2010/04/12 15:55:29	1.149
+++ loncom/interface/lonstatistics.pm	2016/08/14 16:38:05	1.156.2.7
@@ -1,6 +1,6 @@
 # The LearningOnline Network with CAPA
 #
-# $Id: lonstatistics.pm,v 1.149 2010/04/12 15:55:29 bisitz Exp $
+# $Id: lonstatistics.pm,v 1.156.2.7 2016/08/14 16:38:05 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -64,6 +64,7 @@ use Apache::lonpercentage;
 use Apache::lonstudentsubmissions();
 use Apache::lonsurveyreports();
 use Apache::longradinganalysis();
+use Apache::lonquickgrades();
 use LONCAPA;
 
 #
@@ -365,7 +366,7 @@ sub section_or_group_text {
 
 sub get_students {
     if (! @Students) {
-        &PrepareClasslist()
+        &PrepareClasslist();
     }
     return @Students;
 }
@@ -412,7 +413,7 @@ sub StudentDataSelect {
             last;
         }
     }
-    $Str .= ">all</option>\n";
+    $Str .= '>'.&mt('all')."</option>\n";
     #
     # Loop through the student data fields
     foreach my $item (@StudentDataOrder) {
@@ -423,7 +424,7 @@ sub StudentDataSelect {
                 last;
             }
         }
-        $Str .= '>'.$item."</option>\n";
+        $Str .= '>'.&mt($item)."</option>\n";
     }
     $Str .= "</select>\n";
     return $Str;
@@ -510,7 +511,7 @@ sub map_select {
     if ($selected_maps[0] eq 'all') {
         $form .= ' selected="selected"';
     }
-    $form .= ">all</option>\n";
+    $form .= '>'.&mt('all').'</option>'."\n";
     #
     # Loop through the sequences
     my @sequences = &selected_sequences_with_assessments('all');
@@ -546,6 +547,11 @@ sub SectionSelect {
         &PrepareClasslist()
     }
     #
+    # Make sure course's student table is up to date
+    if (@Sections) {
+        &Apache::loncoursedata::ensure_current_sections();
+    }
+    #
     # Build the form element
     my $Str = "\n";
     $Str .= '<select name="'.$elementname.'" ';
@@ -581,6 +587,14 @@ sub GroupSelect {
         &PrepareClasslist();
     }
     #
+    # Make sure course's groupnames and studentgroups tables
+    # are up to date.
+    #
+    if (@Groups) {
+        &Apache::loncoursedata::ensure_current_groups();
+        &Apache::loncoursedata::ensure_current_students_groups();
+    }
+    #
     # Build the form element
     my $Str = "\n";
     $Str .= '<select name="'.$elementname.'" ';
@@ -614,7 +628,7 @@ sub DisplayClasslist {
     # Output some of the standard interface components
     my $Str;
     $Str .= &Apache::lonhtmlcommon::breadcrumbs('Select One Student');
-    $Str .= '<p><table cellspacing="5">'."\n";
+    $Str .= '<table cellspacing="5">'."\n";
     $Str .= '<tr>';
     $Str .= '<th align="center"><b>'.&mt('Sections').'</b></th>';
     $Str .= '<th align="center"><b>'.&mt('Groups').'</b></th>';
@@ -632,7 +646,7 @@ sub DisplayClasslist {
         '</td>';
     
     $Str .= '</tr>'.$/;
-    $Str .= '</table></p>';
+    $Str .= '</table>';
     $Str .= '<input type="submit" name="selectstudent" value="'.
         &mt('Update Display').'" />';
     $r->print($Str);
@@ -690,13 +704,13 @@ sub DisplayClasslist {
     }
 
     $Str .= '<h2>'.&mt('Select One Student').'</h2>'
-           .'<p>'.&mt("Click on a student's name or username to view their chart").'</p>'
+           .'<p>'.&mt("Click on a student's name or username to view their chart.").'</p>'
            .&Apache::loncommon::start_data_table()
            .&Apache::loncommon::start_data_table_header_row();
     foreach my $field (@Fields) {
         $Str .= '<th><a href="/adm/statistics?'.
-            'reportSelected=student_assessment&'.
-            'selectstudent=1&'.
+            'reportSelected=student_assessment&amp;'.
+            'selectstudent=1&amp;'.
             'sort='.$field.'">'.&mt($field).
             '</a></th>';
     }
@@ -711,15 +725,19 @@ sub DisplayClasslist {
             if ($field eq 'fullname' || $field eq 'username') {
                 $Str .= '<a href="/adm/statistics?reportSelected=';
                 $Str .= &escape('student_assessment');
-                $Str .= '&sort='.&escape($env{'form.sort'});
-                $Str .= '&SelectedStudent=';
+                $Str .= '&amp;sort='.&escape($env{'form.sort'});
+                $Str .= '&amp;SelectedStudent=';
                 $Str .= &escape($sname).'">';
-                $Str .= $student->{$field}.'&nbsp;';
+                $Str .= $student->{$field};
                 $Str .= '</a>';
             } elsif ($field eq 'status') {
                 $Str .= &mt($student->{$field});
             } else {
-                $Str .= $student->{$field};
+                if ($student->{$field} eq 'none') {
+                    $Str .= &mt('none')
+                } else {
+                    $Str .= $student->{$field};
+                }
             }
             $Str .= '</td>';
         }
@@ -749,7 +767,7 @@ sub CreateMainMenu {
        
             {url => '/adm/statistics?reportSelected=problem_analysis',
 			 permission => 'F',
-             icon => 'edit-find.png',
+             icon => 'prob_ana.png',
              linktext => ('Detailed Problem Analysis'),
              linktitle => ('Detailed statistics and graphs of student performance on problems.')},
          ]},
@@ -777,7 +795,7 @@ sub CreateMainMenu {
                     
             {url => '/adm/statistics?reportSelected=survey_reports',
 			 permission => 'F',
-             icon => 'docs.png',
+             icon => 'survey_rep.png',
 			 linktext => ('Survey Reports'),
              linktitle => ('Prepare reports on survey results.')},
          ]});
@@ -792,14 +810,6 @@ sub handler {
     my $r=shift;
     my $c = $r->connection();
     #
-    # Check for overloading
-    my $loaderror=&Apache::lonnet::overloaderror($r);
-    if ($loaderror) { return $loaderror; }
-    $loaderror=
-       &Apache::lonnet::overloaderror($r,
-         $env{'course.'.$env{'request.course.id'}.'.home'});
-    if ($loaderror) { return $loaderror; }
-    #
     # Check for access
     if (! &Apache::lonnet::allowed('vgr',$env{'request.course.id'})) {
         $env{'user.error.msg'}=
@@ -852,9 +862,9 @@ ENDSTYLE
     #
         if (! &Apache::lonmysql::verify_sql_connection()) {
             my $serveradmin = $r->dir_config('lonAdmEMail');
-            $r->print('<h2 class="LC_error">'.
+            $r->print('<p class="LC_error">'.
                       &mt('Unable to connect to database!').
-                      '</h2>');
+                      '</p>');
             $r->print('<p>'
                      .&mt('Please notify the server administrator [_1]',
                          ,'<b>'.$serveradmin.'</b>')
@@ -870,16 +880,18 @@ ENDSTYLE
         #
         # Clean out the caches
         if (exists($env{'form.ClearCache'})) {
-            &Apache::loncoursedata::delete_caches($env{'requres.course.id'});
+            &Apache::loncoursedata::delete_caches($env{'request.course.id'});
         }
         #
+        my $GoToPage = $env{'form.reportSelected'};
+        #
         # Begin form output
         $r->print('<form name="Statistics" ');
+        if ($GoToPage eq 'student_submission_reports') {
+            $r->print('onsubmit="return checkanon();" ');
+        }
         $r->print('method="post" action="/adm/statistics">');
         $r->rflush();
-        #
-        my $GoToPage = $env{'form.reportSelected'};
-        #
         $r->print('<input type="hidden" name="reportSelected" value="'.
                   $GoToPage.'" />');
         if($GoToPage eq 'activitylog') {