--- 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 .= ' '.(' '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',