--- loncom/interface/lonsearchcourse.pm 2011/12/25 20:41:53 1.4
+++ loncom/interface/lonsearchcourse.pm 2024/07/04 17:30:17 1.8.2.1
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Search Course
#
-# $Id: lonsearchcourse.pm,v 1.4 2011/12/25 20:41:53 raeburn Exp $
+# $Id: lonsearchcourse.pm,v 1.8.2.1 2024/07/04 17:30:17 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -136,11 +136,12 @@ sub course_search {
foreach (sort(keys(%hash))) {
if ($c->aborted()) { last; }
if (($_=~/^src\_(.+)$/)) {
- if ($hash{'randomout_'.$1} & !$env{'request.role.adv'}) {
+ my $rid = $1;
+ if ($hash{'randomout_'.$rid} & !$env{'request.role.adv'}) {
next;
}
- my $symb=&make_symb($1);
- &checkonthis($r,$1,$hash{$_},0,&Apache::lonnet::gettitle($symb),
+ my $symb=&make_symb($rid);
+ &checkonthis($r,$rid,$hash{$_},0,&Apache::lonnet::gettitle($symb),
$fulltext,$symb,@allwords);
}
}
@@ -261,10 +262,18 @@ sub checkonthis {
}
my $href=$url;
if ($hash{'encrypted_'.$id} && !$env{'request.role.adv'}) {
- $href=&Apache::lonenc::encrypted($href)
- .'?symb='.&Apache::lonenc::encrypted($symb);
+ $href=&Apache::lonenc::encrypted($href);
+ if ($href =~ /\.sequence$/) {
+ $href .= '?navmap=1';
+ } else {
+ $href .= '?symb='.&Apache::lonenc::encrypted($symb);
+ }
} else {
- $href.='?symb='.&escape($symb);
+ if ($href =~ /\.sequence$/) {
+ $href .= '?navmap=1';
+ } else {
+ $href .= '?symb='.&escape($symb);
+ }
}
$r->print(''.($title?$title:$url).
'
');
@@ -311,6 +320,14 @@ sub handler {
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['phase']);
$r->print(&Apache::loncommon::start_page("$crstype Search"));
&Apache::lonhtmlcommon::clear_breadcrumbs();
+ if ($env{'request.course.id'} eq '') {
+ $r->print(&Apache::lonhtmlcommon::breadcrumbs("$crstype Search"));
+ $r->print(&Apache::loncommon::end_page());
+ my $requrl = $r->uri;
+ $env{'user.error.msg'} = "$requrl:bre:0:0:Course not initialized";
+ $env{'user.reinit'} = 1;
+ return HTTP_NOT_ACCEPTABLE;
+ }
&Apache::lonhtmlcommon::add_breadcrumb(
{ href => '/adm/searchcourse',
text => "$crstype Search"});
@@ -321,10 +338,27 @@ sub handler {
}
$r->print(&Apache::lonhtmlcommon::breadcrumbs("$crstype Search"));
&Apache::lonnavdisplay::startContentScreen($r,'coursesearch');
- if ($env{'form.phase'} eq 'results') {
- &course_search($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('search',$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);
+ } elsif ($env{'form.phase'} eq 'results') {
+ &course_search($r);
} else {
- $r->print(&menu());
+ $r->print(&menu());
}
&Apache::lonnavdisplay::endContentScreen($r);
$r->print(&Apache::loncommon::end_page());