--- loncom/interface/lonsearchcat.pm 2001/03/15 13:40:20 1.12
+++ loncom/interface/lonsearchcat.pm 2001/03/15 18:52:17 1.21
@@ -77,7 +77,10 @@ END
}
if ($ENV{'form.basicsubmit'} eq 'SEARCH') {
- return &basicsearch($r,$ENV{'form.basicexp'});
+ return &basicsearch($r,\%ENV);
+ }
+ elsif ($ENV{'form.advancedsubmit'} eq 'SEARCH') {
+ return &advancedsearch($r,\%ENV);
}
$scrout=''; # building a part of screen output
@@ -167,6 +170,19 @@ LASTREVISIONDATEEND
$scrout.=&selectbox('Limit by copyright/distribution','copyright',
$ENV{'form.copyright'},%cprtag);
+# ------------------------------------------- Compute customized metadata field
+ $scrout.=<
+LIMIT BY OTHER METADATA FIELDS:
+
+For author-specific metadata, enter in an expression in the form of
+key=value separated by operators such as AND or OR.
+Example: grandmother=75 OR grandfather=85
+
+CUSTOMMETADATA
+$scrout.=&simpletextfield('custommetadata',$ENV{'form.custommetadata'});
+$scrout.=' initial users of this system do not need to worry about this option';
+
# ---------------------------------------------------------------- Print screen
$r->print(<
@@ -403,55 +419,72 @@ sub selectbox {
return $selout.'';
}
+# ------------------------------------------------ Performing a advanced search
+sub advancedsearch {
+ my ($r,$envhash)=@_;
+ my %ENV=%{$envhash};
+
+}
+
# --------------------------------------------------- Performing a basic search
sub basicsearch {
- my ($r,$expression)=@_;
+ my ($r,$envhash)=@_;
+ my %ENV=%{$envhash};
+
+ my $query=$ENV{'form.basicexp'};
+ $query="select * from metadata where concat(title,\" \",author) like '\%$ENV{'form.basicexp'}\%'";
+ my $reply=&Apache::lonnet::metadata_query($query);
+ &output_results($r,$envhash,$reply);
+ return OK;
+}
- my $query=$expression;
- $query="select * from metadata where concat(title,\" \",author) like '\%$expression\%'";
-# my $reply=&Apache::lonnet::reply("querysend:$query",'msul3');
- my $reply=&Apache::lonnet::metadata_query("querysend:$query",'msul3');
-
- my @results;
-
- my $replyfile='';
- $reply=~/^([\.\w]+)$/; # must do since 'use strict' checks for tainting
- $replyfile=$r->dir_config('lonDaemons').'/tmp/'.$1;
- $reply=~/(.*?)\_/;
- my $hostname=$1;
-
- {
- while (1) {
- last if -e $replyfile;
- sleep 1;
+# ----------------------------- format and output results based on a reply list
+sub output_results {
+ my ($r,$envhash,@replylist)=@_;
+ my %ENV=%{$envhash};
+ foreach my $reply (@replylist) {
+
+ my @results;
+
+ my $replyfile='';
+ $reply=~/^([\.\w]+)$/; # must do since 'use strict' checks for tainting
+ $replyfile=$r->dir_config('lonDaemons').'/tmp/'.$1;
+ $reply=~/(.*?)\_/;
+ my $hostname=$1;
+
+ {
+ while (1) {
+ last if -e $replyfile;
+ sleep 1;
+ }
+ # QUESTION: how should I handle this error condition..
+ # I'm sure there is syntax elsewhere I can use..
+ my $fh=Apache::File->new($replyfile) or
+ ($r->print('file cannot be opened') and return OK);
+ @results=<$fh>;
}
- # QUESTION: how should I handle this error condition..
- # I'm sure there is syntax elsewhere I can use..
- my $fh=Apache::File->new($replyfile) or
- ($r->print('file cannot be opened') and return OK);
- @results=<$fh>;
- }
- my $compiledresult='';
+ my $compiledresult='';
- foreach my $result (@results) {
- my ($title,$author,$subject,$url,$keywords,$version,
- $notes,$abstract,$mime,$lang,
- $creationdate,$lastrevisiondate,$owner,$copyright
- )=map {&Apache::lonnet::unescape($_)} (split(/\,/,$result));
- my $shortabstract=$abstract;
- $shortabstract=substr($abstract,0,200) if length($abstract)>200;
- $compiledresult.=<200;
+ $compiledresult.=<
END
- $compiledresult.=<
END
- $compiledresult.=<URL: $url
+ $compiledresult.=<URL: $url
+ Title: $title Author(s): $author Subject: $subject
@@ -467,31 +500,31 @@ END
Repository Location: $hostname
END
-}
+ }
- unless ($compiledresult) {
- $compiledresult="There were no results that matched your query";
- }
+ unless ($compiledresult) {
+ $compiledresult="There were no results that matched your query";
+ }
- # make query information persistent to allow for subsequent revision
- my $persistent='';
- map {
- if (/^form\./ && !/submit/) {
- my $name=$_;
- my $key=$name;
- $name=~s/^form\.//;
- $persistent.=<
END
- }
- } (keys %ENV);
+ }
+ } (keys %ENV);
- $r->print(<print(<The LearningOnline Network with CAPA
BEGINNING
- $r->print(<
SCRIPT
- $r->print(<print(<
@@ -523,15 +556,14 @@ $persistent