--- loncom/interface/lonquickgrades.pm 2011/06/25 20:12:56 1.102 +++ loncom/interface/lonquickgrades.pm 2016/01/31 21:25:38 1.108 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Quick Student Grades Display # -# $Id: lonquickgrades.pm,v 1.102 2011/06/25 20:12:56 www Exp $ +# $Id: lonquickgrades.pm,v 1.108 2016/01/31 21:25:38 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 # @@ -144,7 +177,7 @@ sub real_handler { if ($env{'form.udom'}) { $udom=$env{'form.udom'}; } if ($env{'form.id'}) { $stdid=$env{'form.id'}; } if (($stdid) && ($udom)) { - $uname=(&Apache::lonnet::idget($udom,$stdid))[1]; + $uname=(&Apache::lonnet::idget($udom,[$stdid],'ids'))[1]; } if (($stdid) && (!$uname)) { $r->print('

'.&mt("Unknown Student/Employee ID: [_1]",$stdid).'

'); @@ -261,7 +294,7 @@ sub startGradeScreen { if ($env{'form.symb'}) { $r->print("\n".'    '. + '&command=gradingmenu">    '. &mt('Problem Grading').'    '); }