version 1.43, 2001/03/20 12:21:56
|
version 1.46, 2001/03/21 01:01:43
|
Line 51 my $scrout;
|
Line 51 my $scrout;
|
my %metadatafields; |
my %metadatafields; |
my %cprtag; |
my %cprtag; |
my %mimetag; |
my %mimetag; |
|
my $closebutton; |
|
my $viewselect=<<END; |
|
<select name='view'> |
|
<option value='Detailed View'>Detailed View</option> |
|
<option value='Brief View'>Brief View</option> |
|
</select> |
|
END |
|
|
sub handler { |
sub handler { |
my $r = shift; |
my $r = shift; |
Line 76 sub handler {
|
Line 83 sub handler {
|
<input type='hidden' name='catalogmode' value='interactive'> |
<input type='hidden' name='catalogmode' value='interactive'> |
END |
END |
|
|
|
$closebutton=<<END if $ENV{'form.catalogmode' eq 'interactive'; |
|
<input type="button" name="close" value="CLOSE" onClick="self.close()"> |
|
END |
|
|
# ------------------------------------------------ First, check out environment |
# ------------------------------------------------ First, check out environment |
$metadatafields{'owner'}=$ENV{'user.name'}.'@'.$ENV{'user.domain'}; |
$metadatafields{'owner'}=$ENV{'user.name'}.'@'.$ENV{'user.domain'}; |
|
|
Line 248 ENDDOCUMENT
|
Line 259 ENDDOCUMENT
|
<br> |
<br> |
<input type="submit" name="basicsubmit" value="SEARCH"> |
<input type="submit" name="basicsubmit" value="SEARCH"> |
<input type="reset" name="reset" value="RESET"> |
<input type="reset" name="reset" value="RESET"> |
<input type="button" name="close" value="CLOSE" onClick="self.close()"> |
$closebutton |
|
$viewselect |
</p> |
</p> |
<hr> |
<hr> |
<h3>Advanced Search</h3> |
<h3>Advanced Search</h3> |
Line 256 $scrout
|
Line 268 $scrout
|
<p> |
<p> |
<input type="submit" name="advancedsubmit" value="SEARCH"> |
<input type="submit" name="advancedsubmit" value="SEARCH"> |
<input type="reset" name="reset" value="RESET"> |
<input type="reset" name="reset" value="RESET"> |
<input type="button" name="close" value="CLOSE" onClick="self.close()"> |
$closebutton |
|
$viewselect |
</p> |
</p> |
</form> |
</form> |
</body> |
</body> |
Line 448 sub selectbox {
|
Line 461 sub selectbox {
|
return $selout.'</select>'; |
return $selout.'</select>'; |
} |
} |
|
|
# ------------------------------------------------ Performing a advanced search |
# ----------------------------------------------- Performing an advanced search |
sub advancedsearch { |
sub advancedsearch { |
my ($r,$envhash)=@_; |
my ($r,$envhash)=@_; |
my %ENV=%{$envhash}; |
my %ENV=%{$envhash}; |
Line 468 sub advancedsearch {
|
Line 481 sub advancedsearch {
|
} |
} |
|
|
my $query=''; |
my $query=''; |
# my $concatarg=join('," ",', |
|
# ('title', 'author', 'subject', 'notes', 'abstract')); |
|
|
|
$query="select * from metadata where concat(title) like '\%$ENV{'form.title'}\%'"; |
|
my $reply=&Apache::lonnet::metadata_query($query); |
|
|
|
&output_results('Advanced',$r,$envhash,$reply); |
my @queries; |
|
# Go through logical expression AND/OR/NOT phrase fields. |
|
foreach my $field ('title','author','subject','notes','abstract') { |
|
if ($ENV{'form.'.$field}) { |
|
push @queries,&build_SQL_query($field,$ENV{'form.'.$field}); |
|
} |
|
} |
|
if (@queries) { |
|
$query="(" . (join(") and ("),@queries) . ")"; |
|
$query="select * from metadata where $query"; |
|
my $reply=&Apache::lonnet::metadata_query($query); |
|
&output_results('Advanced',$r,$envhash,$query,$reply); |
|
} |
|
else { |
|
&output_results('Advanced',$r,$envhash,$query); |
|
} |
return OK; |
return OK; |
} |
} |
|
|
Line 505 sub basicsearch {
|
Line 528 sub basicsearch {
|
|
|
$query="select * from metadata where concat($concatarg) like '\%$ENV{'form.basicexp'}\%'"; |
$query="select * from metadata where concat($concatarg) like '\%$ENV{'form.basicexp'}\%'"; |
my $reply=&Apache::lonnet::metadata_query($query); |
my $reply=&Apache::lonnet::metadata_query($query); |
&output_results('Basic',$r,$envhash,$reply); |
&output_results('Basic',$r,$envhash,$query,$reply); |
return OK; |
return OK; |
} |
} |
|
|
|
# ---------------- Message to output when there are not enough fields filled in |
sub output_blank_field_error { |
sub output_blank_field_error { |
my ($r)=@_; |
my ($r)=@_; |
# make query information persistent to allow for subsequent revision |
# make query information persistent to allow for subsequent revision |
Line 538 BEGINNING
|
Line 562 BEGINNING
|
$persistent |
$persistent |
<input type='button' value='Revise search request' |
<input type='button' value='Revise search request' |
onClick='this.form.submit();'> |
onClick='this.form.submit();'> |
<input type='button' value='CLOSE' |
$closebutton |
onClick='self.close();'> |
|
<hr> |
<hr> |
<h3>Helpful Message</h3> |
<h3>Helpful Message</h3> |
<p> |
<p> |
Line 555 RESULTS
|
Line 578 RESULTS
|
|
|
# ----------------------------- format and output results based on a reply list |
# ----------------------------- format and output results based on a reply list |
sub output_results { |
sub output_results { |
my ($mode,$r,$envhash,@replylist)=@_; |
my ($mode,$r,$envhash,$query,@replylist)=@_; |
my %ENV=%{$envhash}; |
my %ENV=%{$envhash}; |
|
my $compiledresult=''; |
|
|
foreach my $reply (@replylist) { |
foreach my $reply (@replylist) { |
|
|
my @results; |
my @results; |
Line 579 sub output_results {
|
Line 604 sub output_results {
|
@results=<$fh>; |
@results=<$fh>; |
} |
} |
|
|
my $compiledresult=''; |
|
|
|
foreach my $result (@results) { |
foreach my $result (@results) { |
my ($title,$author,$subject,$url,$keywords,$version, |
my ($title,$author,$subject,$url,$keywords,$version, |
$notes,$abstract,$mime,$lang, |
$notes,$abstract,$mime,$lang, |
Line 665 SCRIPT
|
Line 688 SCRIPT
|
<form method="post" action="/adm/searchcat"> |
<form method="post" action="/adm/searchcat"> |
<input type='button' value='Revise search request' |
<input type='button' value='Revise search request' |
onClick='this.form.submit();'> |
onClick='this.form.submit();'> |
<input type='button' value='CLOSE' |
$closebutton |
onClick='self.close();'> |
|
$persistent |
$persistent |
<hr> |
<hr> |
<h3>Search Query</h3> |
<h3>Search Query</h3> |
Line 677 RESULTS
|
Line 699 RESULTS
|
<b>Basic search:</b> $ENV{'form.basicexp'} |
<b>Basic search:</b> $ENV{'form.basicexp'} |
</p> |
</p> |
RESULTS |
RESULTS |
|
} |
elsif ($mode eq 'Advanced') { |
elsif ($mode eq 'Advanced') { |
$r->print(<<RESULTS); |
$r->print(<<RESULTS); |
<p> |
<p> |
<b>Advanced search</b> |
<b>Advanced search</b> |
|
$query |
</p> |
</p> |
RESULTS |
RESULTS |
} |
} |
|
$r->print(<<RESULTS); |
<h3>Search Results</h3> |
<h3>Search Results</h3> |
$compiledresult |
$compiledresult |
</body> |
</body> |
Line 698 sub build_SQL_query {
|
Line 723 sub build_SQL_query {
|
my $q=new Text::Query('abc', |
my $q=new Text::Query('abc', |
-parse => 'Text::Query::ParseAdvanced', |
-parse => 'Text::Query::ParseAdvanced', |
-build => 'Text::Query::Build'); |
-build => 'Text::Query::Build'); |
$q->prepare($statement); |
$q->prepare($logic_statement); |
my $matchexp=${$q}{'matchexp'}; chomp $matchexp; |
my $matchexp=${$q}{'matchexp'}; chomp $matchexp; |
my $sql_query=&recursive_SQL_query_build($field_name,$matchexp); |
my $sql_query=&recursive_SQL_query_build($field_name,$matchexp); |
|
return $sql_query; |
} |
} |
|
|
# - Recursively parse a reverse notation expression into a SQL query expression |
# - Recursively parse a reverse notation expression into a SQL query expression |
Line 710 sub recursive_SQL_query_build {
|
Line 736 sub recursive_SQL_query_build {
|
return $pattern unless @matches; |
return $pattern unless @matches; |
foreach my $match (@matches) { |
foreach my $match (@matches) { |
$match=~/\[ (\w+)\s(.*) \]/; |
$match=~/\[ (\w+)\s(.*) \]/; |
($key,$value)=($1,$2); |
my ($key,$value)=($1,$2); |
my $replacement=''; |
my $replacement=''; |
if ($key eq 'literal') { |
if ($key eq 'literal') { |
$replacement="($dkey like \"\%$value\%\")"; |
$replacement="($dkey like \"\%$value\%\")"; |