Diff for /loncom/interface/lonstatistics.pm between versions 1.65 and 1.71

version 1.65, 2003/03/25 22:20:25 version 1.71, 2003/05/27 14:51:24
Line 51  Main handler for statistics and chart. Line 51  Main handler for statistics and chart.
     use Apache::lonproblemstatistics;      use Apache::lonproblemstatistics;
     use Apache::lonstudentassessment;      use Apache::lonstudentassessment;
     use Apache::lonpercentage;      use Apache::lonpercentage;
       use Apache::lonmysql;
 =over 4  =over 4
   
 =cut  =cut
Line 82  use Apache::lonproblemanalysis(); Line 82  use Apache::lonproblemanalysis();
 use Apache::lonproblemstatistics();  use Apache::lonproblemstatistics();
 use Apache::lonstudentassessment();  use Apache::lonstudentassessment();
 use Apache::lonpercentage;  use Apache::lonpercentage;
   use Apache::lonmysql;
 use Time::HiRes;  use Time::HiRes;
   
 #######################################################  #######################################################
Line 205  upon the calling context. Line 206  upon the calling context.
 #######################################################  #######################################################
 #######################################################  #######################################################
 sub PrepareClasslist {  sub PrepareClasslist {
     my $r = shift;  
     my %Sections;      my %Sections;
     &clear_classlist_variables();      &clear_classlist_variables();
     #      #
Line 229  sub PrepareClasslist { Line 229  sub PrepareClasslist {
         }          }
     }      }
     #      #
       # Deal with instructors with restricted section access
       if ($ENV{'request.course.sec'} !~ /^\s*$/) {
           @SelectedSections = ($ENV{'request.course.sec'});
       }
       #
     # Set up %StudentData      # Set up %StudentData
     @StudentDataOrder = qw/fullname username domain id section status/;      @StudentDataOrder = qw/fullname username domain id section status/;
     foreach my $field (@StudentDataOrder) {      foreach my $field (@StudentDataOrder) {
Line 237  sub PrepareClasslist { Line 242  sub PrepareClasslist {
         $StudentData{$field}->{'width'} =           $StudentData{$field}->{'width'} = 
                                $StudentData{$field}->{'base_width'};                                 $StudentData{$field}->{'base_width'};
     }      }
       #
       # get the status requested
       my $requested_status = 'Active';
       $requested_status = $ENV{'form.Status'} if (exists($ENV{'form.Status'}));
     #      #
     # Process the classlist      # Process the classlist
     while (my ($student,$student_data) = each (%$classlist)) {      while (my ($student,$student_data) = each (%$classlist)) {
Line 265  sub PrepareClasslist { Line 273  sub PrepareClasslist {
         #          #
         # Only put in the list those students we are interested in          # Only put in the list those students we are interested in
         foreach my $sect (@SelectedSections) {          foreach my $sect (@SelectedSections) {
             if (($sect eq 'all') || ($section eq $sect)) {              if ( (($sect eq 'all') || 
                     ($section eq $sect)) &&
                    (($studenthash->{'status'} eq $requested_status) || 
                     ($requested_status eq 'Any')) 
                    ){
                 push (@Students,$studenthash);                  push (@Students,$studenthash);
                 last;                  last;
             }              }
Line 273  sub PrepareClasslist { Line 285  sub PrepareClasslist {
     }      }
     #      #
     # Put the consolidated section data in the right place      # Put the consolidated section data in the right place
     @Sections = sort {$a cmp $b} keys(%Sections);      if ($ENV{'request.course.sec'} !~ /^\s*$/) {
     unshift(@Sections,'all'); # Put 'all' at the front of the list          @Sections = ($ENV{'request.course.sec'});
       } else {
           @Sections = sort {$a cmp $b} keys(%Sections);
           unshift(@Sections,'all'); # Put 'all' at the front of the list
       }
     #      #
     # Sort the Students      # Sort the Students
     my $sortby = 'fullname';      my $sortby = 'fullname';
Line 325  sub PrepareClasslist { Line 341  sub PrepareClasslist {
     return;      return;
 }  }
   
   
   #######################################################
   #######################################################
   
   =pod
   
   =item get_students
   
   Returns a list of the selected students
   
   =cut
   
   #######################################################
   #######################################################
   sub get_students {
       if (! @Students) {
           &PrepareClasslist()
       }
       return @Students;
   }
   
 #######################################################  #######################################################
 #######################################################  #######################################################
   
Line 722  sub MapSelect { Line 759  sub MapSelect {
 Returns html for a selection box allowing the user to choose one (or more)   Returns html for a selection box allowing the user to choose one (or more) 
 of the sections in the course.    of the sections in the course.  
   
   Uses the package variables @Sections and @SelectedSections
 =over 4  =over 4
   
 =item $elementname The name of the HTML form element  =item $elementname The name of the HTML form element
Line 730  of the sections in the course. Line 768  of the sections in the course.
   
 =item $numvisible The number of options to be visible  =item $numvisible The number of options to be visible
   
 =item $selected Array ref to the names of the already selected sections.  
 If undef, $ENV{'form.'.$elementname} is used.    
 If $ENV{'form.'.$elementname} is also empty, none will be selected.  
   
 =item $restriction Code reference to subroutine which returns true or   
 false.  The code must expect a reference to a sequence data structure.  
   
 =back  =back
   
 =cut  =cut
Line 749  sub SectionSelect { Line 780  sub SectionSelect {
         return;          return;
     }      }
     #      #
       # Make sure we have the data we need to continue
       if (! @Sections) {
           &PrepareClasslist()
       }
       #
     # Build the form element      # Build the form element
     my $Str = "\n";      my $Str = "\n";
     $Str .= '<select name="'.$elementname.'" ';      $Str .= '<select name="'.$elementname.'" ';
Line 831  sub CreateMainMenu { Line 867  sub CreateMainMenu {
     #      #
     $Str .= '<table border="0"><tbody><tr>'."\n";      $Str .= '<table border="0"><tbody><tr>'."\n";
     $Str .= '<td></td>'."\n";      $Str .= '<td></td>'."\n";
       $Str .= '<td></td>'."\n";
     $Str .= '<td align="center"><b>Select a Report</b></td>'."\n";      $Str .= '<td align="center"><b>Select a Report</b></td>'."\n";
     $Str .= '<td align="center"><b>Student Status</b></td></tr>'."\n";  
     $Str .= '<tr>'."\n";      $Str .= '<tr>'."\n";
     #      #
     $Str .= '<td align="center"><input type="submit" name="Refresh" ';      $Str .= '<td align="center">'.
     $Str .= 'value="Update Display" /></td>'."\n";          '<input type="submit" name="Refresh" value="Update Display" />'.
               "</td>\n";
       $Str .= '<td align="center">'.
           '<input type="submit" name="ClearCache" value="Clear Caches" />'.
               "</td>\n";
     #      #
     $Str .= '<td align="center">';      $Str .= '<td align="center">';
     $Str .= '<select name="reportSelected" >'."\n";      $Str .= '<select name="reportSelected" >'."\n";
Line 849  sub CreateMainMenu { Line 889  sub CreateMainMenu {
     }      }
     $Str .= '</select></td>'."\n";      $Str .= '</select></td>'."\n";
     #      #
     $Str .= '<td align="center">';  
     $Str .= &Apache::lonhtmlcommon::StatusOptions($status, 'Statistics');  
     $Str .= '</td>'."\n";  
     #  
     $Str .= '</tr></tbody></table>'."\n";      $Str .= '</tr></tbody></table>'."\n";
     $Str .= '<hr>'."\n";      $Str .= '<hr>'."\n";
     #      #
Line 874  sub handler { Line 910  sub handler {
     if ($loaderror) { return $loaderror; }      if ($loaderror) { return $loaderror; }
     #      #
     # Check for access      # Check for access
     unless(&Apache::lonnet::allowed('vgr',$ENV{'request.course.id'})) {      if (! &Apache::lonnet::allowed('vgr',$ENV{'request.course.id'})) {
         $ENV{'user.error.msg'}=          $ENV{'user.error.msg'}=
         $r->uri.":vgr:0:0:Cannot view grades for complete course";              $r->uri.":vgr:0:0:Cannot view grades for complete course";
         return HTTP_NOT_ACCEPTABLE;          if (! &Apache::lonnet::allowed('vgr',
                         $ENV{'request.course.id'}.'/'.$ENV{'request.course.sec'})) {
               $ENV{'user.error.msg'}=
                   $r->uri.":vgr:0:0:Cannot view grades with given role";
               return HTTP_NOT_ACCEPTABLE;
           }
     }      }
     #      #
     # Set document type for header only      # Set document type for header only
Line 908  sub handler { Line 949  sub handler {
     $r->print(&Apache::lonhtmlcommon::Title('Course Statistics and Charts'));      $r->print(&Apache::lonhtmlcommon::Title('Course Statistics and Charts'));
     $r->rflush();      $r->rflush();
     #      #
       if (! &Apache::lonmysql::verify_sql_connection()) {
           my $serveradmin = $r->dir_config('lonAdmEMail');
           $r->print(<<END);
   <h2><font color="Red">Unable to connect to database!</font></h2>
   <p>
   Please notify the server administrator <b>$serveradmin</b>.
   </p><p>
   Course Statistics and Charts cannot be retrieved until the database is
   restarted.  Your data is intact but cannot be displayed at this time.
   </p>
   </body>
   </html>
   END
           return;
       }
       #
       # Clean out the caches
       if (exists($ENV{'form.ClearCache'})) {
           &Apache::loncoursedata::delete_caches($ENV{'requres.course.id'});
       }
       #
     # Set up the statistics and chart environment      # Set up the statistics and chart environment
     &PrepareClasslist($r);      &PrepareClasslist();
     &PrepareCourseData($r);      &PrepareCourseData($r);
     #      #
     # Begin form output      # Begin form output
Line 919  sub handler { Line 981  sub handler {
     # Print main menu      # Print main menu
     my %reports = ('classlist'          => 'Class list',      my %reports = ('classlist'          => 'Class list',
                    'problem_statistics' => 'Problem Statistics',                     'problem_statistics' => 'Problem Statistics',
                    'student_assessment' => 'Student Assessment',                     'student_assessment' => 'Problem Status Chart',
                    'percentage'         => 'Correct-problems Plot',                     'percentage'         => 'Correct-problems Plot',
                    'option_response'    => 'Option Response Analysis',                     'option_response'    => 'Option Response Analysis',
 #                   'activitylog'        => 'Activity Log',  #                   'activitylog'        => 'Activity Log',

Removed from v.1.65  
changed lines
  Added in v.1.71


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>