--- loncom/interface/lonquickgrades.pm 2012/01/02 05:08:03 1.103 +++ loncom/interface/lonquickgrades.pm 2015/03/30 22:29:24 1.107 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Quick Student Grades Display # -# $Id: lonquickgrades.pm,v 1.103 2012/01/02 05:08:03 raeburn Exp $ +# $Id: lonquickgrades.pm,v 1.107 2015/03/30 22:29:24 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -29,7 +29,7 @@ package Apache::lonquickgrades; use strict; -use Apache::Constants qw(:common :http); +use Apache::Constants qw(:common :http REDIRECT); use POSIX; use Apache::loncommon; use Apache::lonlocal; @@ -37,6 +37,7 @@ use Apache::lonnet; use Apache::grades; use Apache::loncoursedata; use Apache::lonstudentassessment; +use Apache::lonuserstate; use Time::HiRes; use Spreadsheet::WriteExcel; @@ -75,6 +76,39 @@ sub real_handler { return OK; } + my $cangrade=&Apache::lonnet::allowed('mgr'); + + unless ($cangrade) { + # Check for critical messages and redirect if present. + my ($redirect,$url) = &Apache::loncommon::critical_redirect(300); + if ($redirect) { + &Apache::loncommon::content_type($r,'text/html'); + $r->header_out(Location => $url); + return REDIRECT; + } + + # Check if course needs to be re-initialized + my $loncaparev = $r->dir_config('lonVersion'); + my ($result,@reinit) = &Apache::loncommon::needs_coursereinit($loncaparev); + + if ($result eq 'switch') { + &Apache::loncommon::content_type($r,'text/html'); + $r->send_http_header; + $r->print(&Apache::loncommon::check_release_result(@reinit)); + return OK; + } elsif ($result eq 'update') { + my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'}; + my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; + my ($furl,$ferr) = &Apache::lonuserstate::readmap("$cdom/$cnum"); + if ($ferr) { + my $requrl = $r->uri; + $env{'user.error.msg'}="$requrl:bre:0:0:Course not initialized"; + $env{'user.reinit'} = 1; + return HTTP_NOT_ACCEPTABLE; + } + } + } + # Send header, don't cache this page &Apache::loncommon::no_cache($r); $r->send_http_header; @@ -99,7 +133,6 @@ sub real_handler { &startGradeScreen($r,'quick'); - my $cangrade=&Apache::lonnet::allowed('mgr'); # # Pick student #