--- loncom/interface/lonstatistics.pm	2009/12/11 00:12:21	1.144.2.1
+++ loncom/interface/lonstatistics.pm	2010/11/09 15:01:53	1.148.2.6
@@ -1,6 +1,6 @@
 # The LearningOnline Network with CAPA
 #
-# $Id: lonstatistics.pm,v 1.144.2.1 2009/12/11 00:12:21 raeburn Exp $
+# $Id: lonstatistics.pm,v 1.148.2.6 2010/11/09 15:01:53 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";
     #
@@ -456,11 +456,20 @@ sub selected_sequences_with_assessments
         return ('Can not open Coursemap');
     }
     #
-    my @sequences = $navmap->retrieveResources(undef,
+    my $mapurl;
+    if (&Apache::loncommon::needs_gci_custom()) {
+        my $cid = $env{'request.course.id'};
+        if ($cid) {
+            $mapurl = '/uploaded/'.$env{'course.'.$cid.'.domain'}.'/'.$env{'course.'.$cid.'.num'}.'/default_1261144274.sequence';
+        }
+    }
+    my @sequences = $navmap->retrieveResources($mapurl,
                                                sub { shift->is_map(); },1,0,1);
-    my $toplevelseq = $navmap->getById('0.0');
-    if (!grep(/^\Q$toplevelseq\E$/,@sequences)) {
-        unshift(@sequences,$toplevelseq);
+    unless (&Apache::loncommon::needs_gci_custom()) {
+        my $toplevelseq = $navmap->getById('0.0');
+        if (!grep(/^\Q$toplevelseq\E$/,@sequences)) {
+            unshift(@sequences,$toplevelseq);
+        }
     }
 
     my @sequences_with_assessments;
@@ -501,16 +510,18 @@ sub map_select {
     my $form = "\n";
     $form .= '<select name="'.$elementname.'" ';
     if ($status ne 'single') {
-        $form .= 'multiple="true" ';
+        $form .= 'multiple="multiple" ';
     }
     $form .= 'size="'.$numvisible.'" >'."\n";
-    #
-    # Put in option for 'all'
-    $form .= '    <option value="all" ';
-    if ($selected_maps[0] eq 'all') {
-        $form .= 'selected ';
+    unless (&Apache::loncommon::needs_gci_custom()) {
+        #
+        # Put in option for 'all'
+        $form .= '    <option value="all" ';
+        if ($selected_maps[0] eq 'all') {
+            $form .= 'selected ';
+        }
+        $form .= ">all</option>\n";
     }
-    $form .= ">all</option>\n";
     #
     # Loop through the sequences
     my @sequences = &selected_sequences_with_assessments('all');
@@ -522,10 +533,14 @@ sub map_select {
     }
     foreach my $seq (@sequences){
         $form .= '    <option value="'.$seq->symb.'" ';
-        foreach (@selected_maps) {
-            if ($seq->symb eq $_) {
-                $form .= 'selected ';
-                last;
+        if ((&Apache::loncommon::needs_gci_custom()) && (@selected_maps == 1)) {
+            $form .= 'selected ';
+        } else {
+            foreach (@selected_maps) {
+                if ($seq->symb eq $_) {
+                    $form .= 'selected ';
+                    last;
+                }
             }
         }
         $form .= '>'.$seq->compTitle."</option>\n";
@@ -550,7 +565,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 +600,7 @@ sub GroupSelect {
     my $Str = "\n";
     $Str .= '<select name="'.$elementname.'" ';
     if ($status ne 'single') {
-        $Str .= 'multiple="true" ';
+        $Str .= 'multiple="multiple" ';
     }
     $Str .= 'size="'.$numvisible.'" >'."\n";
     #
@@ -738,63 +753,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 +845,32 @@ 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)) {
+            my $brcrum = [{href=> '/adm/statistics',
+                           text=> 'Statistics',}];
+            my $args = {bread_crumbs           => $brcrum,
+                        bread_crumbs_component => 'Statistics Main Page'};
+            $r->print(&Apache::loncommon::start_page('Course Statistics',undef,$args));
+            $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 +915,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 +956,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 +976,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',