--- loncom/interface/lonsearchcat.pm 2001/03/08 20:54:53 1.6 +++ loncom/interface/lonsearchcat.pm 2001/03/14 16:57:04 1.10 @@ -9,6 +9,7 @@ use strict; use Apache::Constants qw(:common); use Apache::lonnet(); use Apache::File(); +use CGI qw(:standard); my %language; my $scrout; @@ -18,15 +19,32 @@ my %mimetag; sub handler { my $r = shift; + +# -------------------------------------- see if called from an interactive mode + map { + my ($name, $value) = split(/=/,$_); + $value =~ tr/+/ /; + $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg; + if ($name eq 'catalogmode') { + $ENV{'form.'.$name}=$value; + } + } (split(/&/,$ENV{'QUERY_STRING'})); + $r->content_type('text/html'); $r->send_http_header; return OK if $r->header_only; %metadatafields=(); + my $hidden=''; + $hidden=< +END + # ------------------------------------------------ First, check out environment $metadatafields{'owner'}=$ENV{'user.name'}.'@'.$ENV{'user.domain'}; +# --------------------------------- Compute various listings of metadata values %language=(); $language{'any'}='Any language'; @@ -62,7 +80,7 @@ sub handler { return &basicsearch($r,$ENV{'form.basicexp'}); } - $scrout=""; + $scrout=''; # building a part of screen output $scrout.=&searchphrasefield('Limit by title','title', ''); @@ -84,404 +102,108 @@ sub handler { $scrout.=&selectbox('Limit by language','language', 'any',%language); - $scrout.=< LIMIT BY CREATION DATE RANGE:
-between: - - -and: - - -

+between: +CREATIONDATESTART + $scrout.=&dateboxes('creationdatestart',1,1,1976); + $scrout.=< LIMIT BY LAST REVISION DATE RANGE: -
between: - - -and: + +Title only +
+ + + +

+
+

Advanced Search

+$scrout +

+ + + +

+ + + +ENDDOCUMENT + return OK; +} + +# --------------------------------------------------------- Various form fields + +sub textfield { + my ($title,$name,$value)=@_; + return "\n

$title:
". + ''; +} + +sub searchphrasefield { + my ($title,$name,$value)=@_; + my $instruction=<$uctitle:". + " $instruction
". + ''; +} + +sub dateboxes { + my ($name,$defaultmonth,$defaultday,$defaultyear)=@_; + return< + @@ -495,8 +217,8 @@ and: - + @@ -529,8 +251,8 @@ and: + @@ -608,70 +330,7 @@ and: - -Title only -
- -

-
-

Advanced Search

-$scrout -

- -

- - - -ENDDOCUMENT - return OK; -} - -# --------------------------------------------------------- Various form fields - -sub textfield { - my ($title,$name,$value)=@_; - return "\n

$title:
". - ''; -} - -sub searchphrasefield { - my ($title,$name,$value)=@_; - my $instruction=<$uctitle:". - ": $instruction
". - ''; } sub selectbox { @@ -692,11 +351,8 @@ sub basicsearch { my ($r,$expression)=@_; my $query=$expression; -# $query="select * from metadata where concat(title,':\@:',author) like '\%Sci\%'"; $query="select * from metadata where concat(title,\" \",author) like '\%$expression\%'"; -# my $reply=&Apache::lonnet::reply("querysend:DESCRIBE metadata","msul3"); my $reply=&Apache::lonnet::reply("querysend:$query",'msul3'); -# my $reply=&Apache::lonnet::reply('querysend:select * from metadata','msul3'); my @results; @@ -721,17 +377,27 @@ sub basicsearch { my $compiledresult=''; foreach my $result (@results) { - my ($title,$author,$subject,$notes,$abstract,$mime,$lang, + 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=< +END + $compiledresult.=< + +
+END + $compiledresult.=<URL: $url
Title: $title
Author(s): $author
Subject: $subject
-Keyword(s): not available yet
+Keyword(s): $keywords
Notes: $notes
Abstract: $shortabstract
MIME Type: $mimetag{$mime}
@@ -749,21 +415,55 @@ END $compiledresult="There were no results that matched your query"; } -# Question... allow to ask question from this page, or click to -# search again? - $r->print(< +END + } + } (keys %ENV); + + $r->print(< The LearningOnline Network with CAPA +BEGINNING + $r->print(< + function select_data(title,url) { + changeTitle(title); + changeURL(url); + } + function changeTitle(val) { + if (opener.inf.document.forms.resinfo.elements.t) { + opener.inf.document.forms.resinfo.elements.t.value=val; + } + } + function changeURL(val) { + if (opener.inf.document.forms.resinfo.elements.u) { + opener.inf.document.forms.resinfo.elements.u.value=val; + } + } + +SCRIPT + $r->print(<

Search Catalog

+ +$persistent

Search Query

-$expression +Basic search: $expression

Search Results

$compiledresult