--- loncom/interface/lonstatistics.pm	2008/11/20 14:37:24	1.144
+++ loncom/interface/lonstatistics.pm	2010/09/11 19:08:19	1.148.2.4
@@ -1,6 +1,6 @@
 # The LearningOnline Network with CAPA
 #
-# $Id: lonstatistics.pm,v 1.144 2008/11/20 14:37:24 jms Exp $
+# $Id: lonstatistics.pm,v 1.148.2.4 2010/09/11 19:08:19 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -400,7 +400,7 @@ sub StudentDataSelect {
     my $Str = "\n";
     $Str .= '<select name="'.$elementname.'" ';
     if ($status ne 'single') {
-        $Str .= 'multiple="true" ';
+        $Str .= 'multiple="multiple" ';
     }
     $Str .= 'size="'.$numvisible.'" >'."\n";
     #
@@ -501,7 +501,7 @@ sub map_select {
     my $form = "\n";
     $form .= '<select name="'.$elementname.'" ';
     if ($status ne 'single') {
-        $form .= 'multiple="true" ';
+        $form .= 'multiple="multiple" ';
     }
     $form .= 'size="'.$numvisible.'" >'."\n";
     #
@@ -550,7 +550,7 @@ sub SectionSelect {
     my $Str = "\n";
     $Str .= '<select name="'.$elementname.'" ';
     if ($status ne 'single') {
-        $Str .= 'multiple="true" ';
+        $Str .= 'multiple="multiple" ';
     }
     $Str .= 'size="'.$numvisible.'" >'."\n";
     #
@@ -585,7 +585,7 @@ sub GroupSelect {
     my $Str = "\n";
     $Str .= '<select name="'.$elementname.'" ';
     if ($status ne 'single') {
-        $Str .= 'multiple="true" ';
+        $Str .= 'multiple="multiple" ';
     }
     $Str .= 'size="'.$numvisible.'" >'."\n";
     #
@@ -714,7 +714,7 @@ sub DisplayClasslist {
                 $Str .= '&sort='.&escape($env{'form.sort'});
                 $Str .= '&SelectedStudent=';
                 $Str .= &escape($sname).'">';
-                $Str .= $student->{$field}.'&nbsp';
+                $Str .= $student->{$field}.'&nbsp;';
                 $Str .= '</a>';
             } elsif ($field eq 'status') {
                 $Str .= &mt($student->{$field});
@@ -738,63 +738,65 @@ sub DisplayClasslist {
 sub CreateMainMenu {
     #
     # Define menu data
-    my @reports = ({ internal_name => 'problem_statistics',
-                     name => &mt('Overall Problem Statistics'),
-                     short_description => 
-    &mt('Student performance statistics on all problems.'),
-                 },
-                   { internal_name => 'problem_analysis',
-                     name => &mt('Detailed Problem Analysis'),
-                     short_description => 
-    &mt('Detailed statistics and graphs of student performance on problems.'),
-                 },
-                   { internal_name => 'submissiontime_analysis',
-                     name => &mt('Submission Time Plots'),
-                     short_description => 
-    &mt('Display and analysis of submission times on assessments.'),
-                 },
-                   { internal_name => 'student_submission_reports',
-                     name => &mt('Student Submission Reports'),
-                     short_description => 
-    &mt('Prepare reports of student submissions.'),
-                 },
-                   { internal_name => 'survey_reports',
-                     name => &mt('Survey Reports'),
-                     short_description => 
-    &mt('Prepare reports on survey results.'),
-                 },
-                   { internal_name => 'correct_problems_plot',
-                     name => &mt('Correct Problems Plot'),
-                     short_description => 
-    &mt('Display a histogram of student performance in the course.'),
-                 },
-#                   { internal_name => 'grading_analysis',
-#                     name => &mt('Detailed Grading Analysis'),
-#                     short_description => 
-#    &mt('Display statistics about who graded who.'),
-#                 },
-#                   { internal_name => 'student_assessment',
-#                     name => &mt('Problem Status Chart'),
-#                     short_description => 
-#    &mt('Brief view of each students performance in course.'),
-#                 },
-                   # 'percentage'  => 'Correct-problems Plot',
-                   # 'activitylog' => 'Activity Log',
-                   );
-    #
-    # Create the menu
-    my $Str;
-    $Str .= '<h2>'.&mt('Please select a report to generate').'</h2>';
-    foreach my $reportdata (@reports) {
-        $Str .='    <h3><a href="/adm/statistics?reportSelected='.
-            $reportdata->{'internal_name'}.'" >'.
-            $reportdata->{'name'}."</a></h3>\n";
-        $Str .= '    '.('&nbsp;'x8).$reportdata->{'short_description'}.
-            "\n";
+    my @reports = (
+	    {categorytitle => 'Statistics and Analyses',
+         items => [
+            {url => '/adm/statistics?reportSelected=problem_statistics',
+			 permission => 'F',
+             icon => 'document-open.png',
+             linktext => ('Overall Problem Statistics'),
+             linktitle => ('Student performance statistics on all problems.')},
+       
+            {url => '/adm/statistics?reportSelected=problem_analysis',
+			 permission => 'F',
+             icon => 'edit-find.png',
+             linktext => ('Detailed Problem Analysis'),
+             linktitle => ('Detailed statistics and graphs of student performance on problems.')},
+         ]},
+        {categorytitle => 'Plots',
+         items => [
+            {url => '/adm/statistics?reportSelected=submissiontime_analysis',
+			 permission => 'F',
+             icon => 'subtimpl.png',
+             linktext => ('Submission Time Plots'),
+             linktitle => ('Display and analysis of submission times on assessments.')},
+      
+            {url => '/adm/statistics?reportSelected=correct_problems_plot',
+			 permission => 'F',
+             icon => 'coprplot.png',
+             linktext => ('Correct Problems Plot'),
+             linktitle => ('Display a histogram of student performance in the course.')},
+         ]});
+    if (&Apache::loncommon::needs_gci_custom()) {
+        push(@reports,
+        {categorytitle => 'Reports',
+         items => [
+            {url => '/adm/statistics?reportSelected=student_submission_reports',
+                         permission => 'F',
+             icon => 'edit-copy.png',
+             linktext => ('Student Submission Reports'),
+             linktitle => ('Prepare reports of student submissions.')},
+         ]});
+    } else {
+        push(@reports,
+        {categorytitle => 'Reports',
+         items => [
+            {url => '/adm/statistics?reportSelected=student_submission_reports',
+			 permission => 'F',
+             icon => 'edit-copy.png',
+             linktext => ('Student Submission Reports'),
+             linktitle => ('Prepare reports of student submissions.')},
+                    
+            {url => '/adm/statistics?reportSelected=survey_reports',
+			 permission => 'F',
+             icon => 'docs.png',
+			 linktext => ('Survey Reports'),
+             linktitle => ('Prepare reports on survey results.')},
+         ]});
     }
-    $Str .="</dl>\n";
-    #
-    return $Str;
+    
+return &Apache::lonhtmlcommon::generate_menu(@reports);
+ 
 }
 
 
@@ -828,6 +830,28 @@ sub handler {
     &Apache::loncommon::content_type($r,'text/html');
     $r->send_http_header;
     if ($r->header_only) { return OK; }
+    my $gcicustom = &Apache::loncommon::needs_gci_custom();
+    if ($gcicustom) {
+        my $now = time;
+        my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
+        my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
+        my $courseopt=&Apache::lonnet::get_courseresdata($cnum,$cdom);
+        my $duedate = $courseopt->{$env{'request.course.id'}.'.0.duedate'};
+        if ((!$duedate) || ($duedate > $now)) {
+            $r->print(&Apache::loncommon::start_page("Course Statistics"));
+            $r->print('<h3>'.&mt('Display of statistics').'</h3>');
+            if ($duedate > $now) { 
+                $r->print('<p>'.&mt('Aggregate test performance data will be available after the Concept Test end date: [_1].',
+                         &Apache::lonlocal::locallocaltime($duedate)).'</p>');
+            } else {
+                $r->print('<p>'.
+                          &mt('Aggregate test performance data unavailable without definition of an end date for the Concept Test.').'</p>');
+            }
+            $r->print(&Apache::loncommon::end_page());
+            return OK;
+        }
+    }
+
     #
     # Extract form elements from query string
     &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
@@ -872,7 +896,7 @@ ENDSTYLE
                      .'</p>');
             $r->print('<p>'.
                       &mt('Course Statistics and Charts cannot be '.
-                          'retrieved until the database is restarted.  '.
+                          'retrieved until the database is restarted. '.
                           'Your data is intact but cannot be displayed '.
                           'at this time.').'</p>');
             $r->print(&Apache::loncommon::end_page());
@@ -913,9 +937,9 @@ ENDSTYLE
             &Apache::lonsubmissiontimeanalysis::BuildSubmissionTimePage($r,$c);
         } elsif($GoToPage eq 'student_submission_reports') {
             &Apache::lonhtmlcommon::add_breadcrumb
-                ({href=>
-                  '/adm/statistics?reportselected=student_submission_reports',
-                  text=>'Student Submission Reports'});
+            ({href=>
+              '/adm/statistics?reportselected=student_submission_reports',
+              text=>'Student Submission Reports'});
             &Apache::lonstudentsubmissions::BuildStudentSubmissionsPage($r,$c);
         } elsif($GoToPage eq 'survey_reports') {
             &Apache::lonhtmlcommon::add_breadcrumb
@@ -933,7 +957,11 @@ ENDSTYLE
             &Apache::lonhtmlcommon::add_breadcrumb
                 ({href=>'/adm/statistics?reportselected=student_assessment',
                   text=>'Chart'});
-            &Apache::lonstudentassessment::BuildStudentAssessmentPage($r,$c);
+            if ($gcicustom) {
+                $r->print(&mt('Only aggregate performance data are available for Concept Tests.'));  
+            } else {
+                &Apache::lonstudentassessment::BuildStudentAssessmentPage($r,$c);
+            }
         } elsif($GoToPage eq 'grading_analysis') {
             &Apache::lonhtmlcommon::add_breadcrumb
                 ({href=>'/adm/statistics?reportselected=grading_anaylsis',