--- loncom/interface/lonsearchcat.pm 2001/03/21 12:51:15 1.62 +++ loncom/interface/lonsearchcat.pm 2001/03/27 21:18:55 1.88 @@ -94,7 +94,7 @@ sub handler { END $closebutton=< + END # ------------------------------------------------ First, check out environment @@ -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(< @@ -267,8 +278,8 @@ ENDDOCUMENT $r->print(<Search historic archives

- - + + $closebutton $basicviewselect

@@ -276,8 +287,8 @@ $basicviewselect

Advanced Search

$scrout

- - + + $closebutton $advancedviewselect

@@ -292,14 +303,15 @@ ENDDOCUMENT sub simpletextfield { my ($name,$value)=@_; - return ''; + return ''; } sub simplecheckbox { my ($name,$value)=@_; my $checked=''; $checked="CHECKED" if $value eq 'on'; - return ''; + return ''; } sub searchphrasefield { @@ -311,7 +323,7 @@ END my $uctitle=uc($title); return "\n

$uctitle:". " $instruction
". - ''; + ''; } sub dateboxes { @@ -464,7 +476,7 @@ sub selectbox { my $selout="\n

$uctitle:". "
".' $closebutton @@ -781,6 +854,21 @@ sub build_SQL_query { return $sql_query; } +# ------------------------------------------------- build custom metadata query +sub build_custommetadata_query { + my ($field_name,$logic_statement)=@_; + my $q=new Text::Query('abc', + -parse => 'Text::Query::ParseAdvanced', + -build => 'Text::Query::BuildAdvancedString'); + $q->prepare($logic_statement); + my $matchexp=${$q}{'-parse'}{'-build'}{'matchstring'}; + # quick fix to change literal into xml tag-matching + # will eventually have to write a separate builder module + my $oldmatchexp=$matchexp; + $matchexp=~s/(\w+)\\\=([\w\\\+]+)/\\\<$1\\\>\[\^\\\<\]\*$2\[\^\\\<\]\*\\\<\\\/$1\\\>/g; + return $matchexp; +} + # - Recursively parse a reverse notation expression into a SQL query expression sub recursive_SQL_query_build { my ($dkey,$pattern)=@_; @@ -815,7 +903,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

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

+$extrashow +

$shortabstract

END @@ -839,12 +930,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; @@ -855,7 +947,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
@@ -872,6 +964,7 @@ sub fielded_format_view { Copyright/Distribution: $cprtag{$copyright}
Repository Location: $hostname
Abstract: $shortabstract
+$extrashow

END return $result; @@ -882,7 +975,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> @@ -911,6 +1004,7 @@ sub xml_sgml_view { <shortabstract>$shortabstract</shortabstract> </LonCapaResource> +$extrashow END return $result; } @@ -926,9 +1020,9 @@ sub build_date_queries { "a starting month, day, and year and an ending month, ". "day, and year."; } - my $cnumeric1="$cyear1$cmonth1$cday1"; + my $cnumeric1=sprintf("%d%2d%2d",$cyear1,$cmonth1,$cday1); $cnumeric1+=0; - my $cnumeric2="$cyear2$cmonth2$cday2"; + my $cnumeric2=sprintf("%d%2d%2d",$cyear2,$cmonth2,$cday2); $cnumeric2+=0; if ($cnumeric1>$cnumeric2) { return "Incorrect entry for the creation date. The starting ". @@ -945,9 +1039,9 @@ sub build_date_queries { "specify a starting month, day, and year and an ending ". "month, day, and year."; } - my $lnumeric1="$lyear1$lmonth1$lday1"; + my $lnumeric1=sprintf("%d%2d%2d",$lyear1,$lmonth1,$lday1); $lnumeric1+=0; - my $lnumeric2="$lyear2$lmonth2$lday2"; + my $lnumeric2=sprintf("%d%2d%2d",$lyear2,$lmonth2,$lday2); $lnumeric2+=0; if ($lnumeric1>$lnumeric2) { return "Incorrect entry for the last revision date. The ". @@ -966,17 +1060,7 @@ sub build_date_queries { sub output_date_error { my ($r,$message)=@_; # 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); + my $persistent=&make_persistent(); $r->print(< @@ -1003,5 +1087,21 @@ $message RESULTS } +sub make_persistent { + my $persistent=''; + + map { + if (/^form\./ && !/submit/) { + my $name=$_; + my $key=$name; + $ENV{$key}=~s/\'//g; # do not mess with html field syntax + $name=~s/^form\.//; + $persistent.=< +END + } + } (keys %ENV); + return $persistent; +} 1; __END__