--- loncom/interface/lonindexcourse.pm 2024/02/12 04:04:06 1.4 +++ loncom/interface/lonindexcourse.pm 2024/12/31 19:28:29 1.5 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Index Course # -# $Id: lonindexcourse.pm,v 1.4 2024/02/12 04:04:06 raeburn Exp $ +# $Id: lonindexcourse.pm,v 1.5 2024/12/31 19:28:29 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -171,7 +171,26 @@ sub handler { text => "$crstype Index"}); $r->print(&Apache::lonhtmlcommon::breadcrumbs("$crstype Index")); &Apache::lonnavdisplay::startContentScreen($r,'courseindex'); - &course_index($r); + my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; + my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'}; + my $clientip = &Apache::lonnet::get_requestor_ip($r); + my ($blocked,$blocktext) = + &Apache::loncommon::blocking_status('index',$clientip,$cnum,$cdom); + if ($blocked) { + my $checkrole = "cm./$cdom/$cnum"; + if ($env{'request.course.sec'} ne '') { + $checkrole .= "/$env{'request.course.sec'}"; + } + if ((&Apache::lonnet::allowed('evb',undef,undef,$checkrole)) && + ($env{'request.role'} !~ m{^st\./$cdom/$cnum})) { + undef($blocked); + } + } + if ($blocked) { + $r->print($blocktext); + } else { + &course_index($r); + } &Apache::lonnavdisplay::endContentScreen($r); $r->print(&Apache::loncommon::end_page()); return OK;