--- loncom/interface/lonsearchcat.pm 2001/03/22 14:00:55 1.69 +++ loncom/interface/lonsearchcat.pm 2001/03/27 12:49:18 1.81 @@ -229,9 +229,9 @@ LASTREVISIONDATEEND # ------------------------------------------- Compute customized metadata field $scrout.=< -LIMIT BY OTHER METADATA FIELDS: +LIMIT BY SPECIAL METADATA FIELDS: -For author-specific metadata, enter in an expression in the form of +For resource-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
@@ -239,6 +239,17 @@ CUSTOMMETADATA $scrout.=&simpletextfield('custommetadata',$ENV{'form.custommetadata'}); $scrout.=' initial users of this system do not need to worry about this option'; + $scrout.=< +SHOW SPECIAL METADATA FIELDS: + +Enter in a space-separated list of special metadata fields to show +in a fielded listing for each record result. +
+CUSTOMSHOW +$scrout.=&simpletextfield('customshow',$ENV{'form.customshow'}); +$scrout.=' initial users of this system do not need to worry about this option'; + # ---------------------------------------------------------------- Print screen $r->print(< @@ -487,7 +498,7 @@ sub advancedsearch { 'lastrevisiondatestart_year','lastrevisiondateend_month', 'lastrevisiondateend_day','lastrevisiondateend_year', 'notes','abstract','mime','language','owner', - 'custommetadata') { + 'custommetadata','customshow') { $ENV{"form.$field"}=~s/[^\w\s\(\)\=\-\"\']//g; } for my $field ('title','author','subject','keywords','url','version', @@ -544,7 +555,7 @@ sub advancedsearch { elsif ($datequery) { push @queries,$datequery; } - my $customquery; + my $customquery=''; if ($ENV{'form.custommetadata'}) { $customquery=&build_custommetadata_query('custommetadata', $ENV{'form.custommetadata'}); @@ -552,7 +563,13 @@ sub advancedsearch { if (@queries) { $query=join(" AND ",@queries); $query="select * from metadata where $query"; - my $reply=&Apache::lonnet::metadata_query($query); + my $reply=''; + unless ($customquery) { + $reply=&Apache::lonnet::metadata_query($query); + } + else { + $reply=&Apache::lonnet::metadata_query($query,$customquery); + } &output_results('Advanced',$r,$envhash,$customquery,$reply); } else { @@ -659,6 +676,23 @@ sub output_results { @results=<$fh>; } + my $customshow=''; + my $extrashow=''; + if ($ENV{'form.customshow'}) { + $customshow=$ENV{'form.customshow'}; + $customshow=~s/[^\w\s]//g; + my @fields=map {"$_:"} + split(/\s+/,$customshow); + if ($customshow) { + $extrashow="
  • ".join("
  • ",@fields)."
\n"; + } + } + my $customdata=''; + foreach my $result (@results) { + $result=~/(\&custom.*)$/; # grab all custom metadata + $customdata=$1; + $result=~s/\&custom.*$//; # remove custom metadata + } foreach my $result (@results) { my @fields=map {&Apache::lonnet::unescape($_)} @@ -690,17 +724,20 @@ END if ($viewselect eq 'Detailed Citation View') { $compiledresult.=&detailed_citation_view(@fields, - $hostname,$httphost); + $hostname,$httphost, + $extrashow); } elsif ($viewselect eq 'Summary View') { - $compiledresult.=&summary_view(@fields,$hostname,$httphost); + $compiledresult.=&summary_view(@fields,$hostname,$httphost, + $extrashow); } elsif ($viewselect eq 'Fielded Format') { $compiledresult.=&fielded_format_view(@fields,$hostname, - $httphost); + $httphost,$extrashow); } elsif ($viewselect eq 'XML/SGML') { - $compiledresult.=&xml_sgml_view(@fields,$hostname,$httphost); + $compiledresult.=&xml_sgml_view(@fields,$hostname,$httphost, + $extrashow); } } @@ -741,6 +778,7 @@ SCRIPT

Search Catalog

+$customdata $closebutton @@ -793,7 +831,9 @@ sub build_custommetadata_query { $q->prepare($logic_statement); my $matchexp=${$q}{'-parse'}{'-build'}{'matchstring'}; # quick fix to change literal into xml tag-matching - s/\(\?\:([^\)]*)\\\=([^\)]*)\)/\(\?\:\<$1\>\[\^\\\<\]\*$2\[\^\\\<\]\*\<\/$1\>)/g; + # will eventually have to write a separate builder module + my $oldmatchexp=$matchexp; + $matchexp=~s/(\w+)\\\=(\w+)/\\\<$1\\\>\[\^\\\<\]\*$2\[\^\\\<\]\*\\\<\\\/$1\\\>/g; return $matchexp; } @@ -831,7 +871,7 @@ sub detailed_citation_view { my ($title,$author,$subject,$url,$keywords,$version, $notes,$shortabstract,$mime,$lang, $creationdate,$lastrevisiondate,$owner,$copyright, - $hostname,$httphost)=@_; + $hostname,$httphost,$extrashow)=@_; my $result=<$owner, last revised $lastrevisiondate

$title

@@ -844,6 +884,9 @@ sub detailed_citation_view { MIME Type: $mimetag{$mime}
Language: $language{$lang}
Copyright/Distribution: $cprtag{$copyright}
+

+$extrashow +

$shortabstract

END @@ -855,12 +898,13 @@ sub summary_view { my ($title,$author,$subject,$url,$keywords,$version, $notes,$shortabstract,$mime,$lang, $creationdate,$lastrevisiondate,$owner,$copyright, - $hostname,$httphost)=@_; + $hostname,$httphost,$extrashow)=@_; my $result=<$author
$title
$owner -- $lastrevisiondate
$cprtag{$copyright}
+$extrashow

END return $result; @@ -871,7 +915,7 @@ sub fielded_format_view { my ($title,$author,$subject,$url,$keywords,$version, $notes,$shortabstract,$mime,$lang, $creationdate,$lastrevisiondate,$owner,$copyright, - $hostname,$httphost)=@_; + $hostname,$httphost,$extrashow)=@_; my $result=<URL: $url
@@ -888,6 +932,7 @@ sub fielded_format_view { Copyright/Distribution: $cprtag{$copyright}
Repository Location: $hostname
Abstract: $shortabstract
+$extrashow

END return $result; @@ -898,7 +943,7 @@ sub xml_sgml_view { my ($title,$author,$subject,$url,$keywords,$version, $notes,$shortabstract,$mime,$lang, $creationdate,$lastrevisiondate,$owner,$copyright, - $hostname,$httphost)=@_; + $hostname,$httphost,$extrashow)=@_; my $result=< <LonCapaResource> @@ -927,6 +972,7 @@ sub xml_sgml_view { <shortabstract>$shortabstract</shortabstract> </LonCapaResource> +$extrashow END return $result; }