--- loncom/interface/lonsearchcat.pm 2004/06/03 19:23:08 1.228
+++ loncom/interface/lonsearchcat.pm 2005/01/19 20:22:36 1.230.2.1
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Search Catalog
#
-# $Id: lonsearchcat.pm,v 1.228 2004/06/03 19:23:08 matthew Exp $
+# $Id: lonsearchcat.pm,v 1.230.2.1 2005/01/19 20:22:36 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -444,10 +444,18 @@ sub hidden_field {
{ # Scope the course search to avoid global variables
#
# Variables For course search
-my %alreadyseen;
my %hash;
my $totalfound;
+sub make_symb {
+ my ($id)=@_;
+ my ($mapid,$resid)=split(/\./,$id);
+ my $map=$hash{'map_id_'.$mapid};
+ my $res=$hash{'src_'.$id};
+ my $symb=&Apache::lonnet::encode_symb($map,$resid,$res);
+ return $symb;
+}
+
sub course_search {
my $r=shift;
my $bodytag=&Apache::loncommon::bodytag('Course Search');
@@ -469,16 +477,18 @@ sub course_search {
$bodytag.'
'.$pretty_search_string.'
');
$r->rflush();
# ======================================================= Go through the course
- undef %alreadyseen;
- %alreadyseen=();
my $c=$r->connection;
if (tie(%hash,'GDBM_File',$ENV{'request.course.fn'}.".db",
&GDBM_READER(),0640)) {
- foreach (keys %hash) {
+ foreach (sort(keys(%hash))) {
if ($c->aborted()) { last; }
- if (($_=~/^src\_(.+)$/) && (!$alreadyseen{$hash{$_}})) {
- &checkonthis($r,$hash{$_},0,$hash{'title_'.$1},$fulltext,
- @allwords);
+ if (($_=~/^src\_(.+)$/)) {
+ if ($hash{'randomout_'.$1} & !$ENV{'request.role.adv'}) {
+ next;
+ }
+ my $symb=&make_symb($1);
+ &checkonthis($r,$1,$hash{$_},0,&Apache::lonnet::gettitle($symb),
+ $fulltext,$symb,@allwords);
}
}
untie(%hash);
@@ -493,15 +503,20 @@ sub course_search {
# =============================== This pulls up a resource and its dependencies
sub checkonthis {
- my ($r,$url,$level,$title,$fulltext,@allwords)=@_;
- $alreadyseen{$url}=1;
+ my ($r,$id,$url,$level,$title,$fulltext,$symb,@allwords)=@_;
$r->rflush();
- my $result=&Apache::lonnet::metadata($url,'title').' '.
- &Apache::lonnet::metadata($url,'subject').' '.
- &Apache::lonnet::metadata($url,'abstract').' '.
- &Apache::lonnet::metadata($url,'keywords');
- if (($url) && ($fulltext)) {
- $result.=&Apache::lonnet::ssi_body($url);
+
+ my $result=$title.' ';
+ if ($ENV{'request.role.adv'} || !$hash{'encrypted_'.$id}) {
+ $result.=&Apache::lonnet::metadata($url,'title').' '.
+ &Apache::lonnet::metadata($url,'subject').' '.
+ &Apache::lonnet::metadata($url,'abstract').' '.
+ &Apache::lonnet::metadata($url,'keywords');
+ }
+ my ($extension)=($url=~/\.(\w+)$/);
+ if (&Apache::loncommon::fileembstyle($extension) eq 'ssi' &&
+ ($url) && ($fulltext)) {
+ $result.=&Apache::lonnet::ssi_body($url.'?symb='.&Apache::lonnet::escape($symb));
}
$result=~s/\s+/ /gs;
my $applies=0;
@@ -518,8 +533,15 @@ sub checkonthis {
for (my $i=0;$i<=$level*5;$i++) {
$r->print(' ');
}
- $r->print(''.
- ($title?$title:$url).'
');
+ my $href=$url;
+ if ($hash{'encrypted_'.$id} && !$ENV{'request.role.adv'}) {
+ $href=&Apache::lonenc::encrypted($href)
+ .'?symb='.&Apache::lonenc::encrypted($symb);
+ } else {
+ $href.='?symb='.&Apache::lonnet::escape($symb);
+ }
+ $r->print(''.($title?$title:$url).
+ '
');
$totalfound++;
} elsif ($fulltext) {
$r->print(' .');
@@ -529,8 +551,8 @@ sub checkonthis {
my $dependencies=
&Apache::lonnet::metadata($url,'dependencies');
foreach (split(/\,/,$dependencies)) {
- if (($_=~/^\/res\//) && (!$alreadyseen{$_})) {
- &checkonthis($r,$_,$level+1,'',$fulltext,@allwords);
+ if (($_=~/^\/res\//)) {
+ &checkonthis($r,$id,$_,$level+1,'',$fulltext,undef,@allwords);
}
}
}
@@ -570,7 +592,7 @@ sub print_basic_search_form {
my ($r,$closebutton,$hidden_fields) = @_;
my $result = ($ENV{'form.catalogmode'} ne 'groupsearch');
my $bodytag=&Apache::loncommon::bodytag('Search').
- &Apache::lonhtmlcommon::breadcrumbs(undef,'Searching','Searching',
+ &Apache::lonhtmlcommon::breadcrumbs(undef,'Searching','Search_Basic',
undef,undef,
$ENV{'form.catalogmode'} ne 'groupsearch');
my $scrout = &search_html_header().$bodytag;
@@ -697,8 +719,9 @@ Prints the advanced search form.
sub print_advanced_search_form{
my ($r,$closebutton,$hidden_fields) = @_;
my $bodytag=&Apache::loncommon::bodytag('Advanced Catalog Search').
- &Apache::lonhtmlcommon::breadcrumbs(undef,'Searching','Searching',
- undef,undef,
+ &Apache::lonhtmlcommon::breadcrumbs(undef,'Searching',
+ 'Search_Advanced',
+ undef,undef,
$ENV{'form.catalogmode'} ne 'groupsearch');
my %lt=&Apache::lonlocal::texthash('srch' => 'Search',
'reset' => 'Reset',
@@ -780,7 +803,7 @@ ENDHEADER
$scrout.=''.
&titlefield(&mt('Copyright/Distribution')).' | '.
&Apache::lonmeta::selectbox('copyright',
- '',,
+ $ENV{'form.copyright'},
\&Apache::loncommon::copyrightdescription,
( undef,
&Apache::loncommon::copyrightids)
@@ -788,7 +811,7 @@ ENDHEADER
$scrout.=' |
'.
&titlefield(&mt('Language')).' | '.
&Apache::lonmeta::selectbox('language',
- 'notset',,
+ $ENV{'form.language'},
\&Apache::loncommon::languagedescription,
('any',&Apache::loncommon::languageids)
).' |
';
@@ -1200,7 +1223,7 @@ sub parse_advanced_search {
my @StatsFields = &statfields();
my @EvalFields = &evalfields();
my $fillflag=0;
- my $pretty_search_string = "
\n";
+ my $pretty_search_string = "";
# Clean up fields for safety
for my $field (@BasicFields,
'creationdatestart_month','creationdatestart_day',
@@ -1326,7 +1349,7 @@ sub parse_advanced_search {
push @queries,"(copyright like \"$ENV{'form.copyright'}\")";
$pretty_search_string.=$font."copyright = ".
&Apache::loncommon::copyrightdescription($ENV{'form.copyright'}).
- "
\n";
+ "
\n";
}
#
# Statistics
@@ -2244,12 +2267,16 @@ $bodytag