--- loncom/interface/lonquickgrades.pm 2015/03/13 22:06:10 1.105 +++ loncom/interface/lonquickgrades.pm 2015/03/13 22:34:00 1.106 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Quick Student Grades Display # -# $Id: lonquickgrades.pm,v 1.105 2015/03/13 22:06:10 raeburn Exp $ +# $Id: lonquickgrades.pm,v 1.106 2015/03/13 22:34:00 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -75,12 +75,37 @@ sub real_handler { return OK; } - # 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; + 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 @@ -107,7 +132,6 @@ sub real_handler { &startGradeScreen($r,'quick'); - my $cangrade=&Apache::lonnet::allowed('mgr'); # # Pick student #