--- loncom/interface/lonsearchcat.pm 2006/12/06 22:22:37 1.278 +++ loncom/interface/lonsearchcat.pm 2007/01/19 14:23:23 1.279 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Search Catalog # -# $Id: lonsearchcat.pm,v 1.278 2006/12/06 22:22:37 albertel Exp $ +# $Id: lonsearchcat.pm,v 1.279 2007/01/19 14:23:23 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -832,10 +832,21 @@ sub print_advanced_search_form{ $closebutton END my $srchtype = 'Catalog'; + my $jscript; if ($env{'form.area'} eq 'portfolio') { $srchtype = 'Portfolio'; + $jscript = ''; + } + my $scrout= &Apache::loncommon::start_page("Advanced $srchtype Search", + $jscript); $scrout .= <<"ENDHEADER"; $bread_crumb
@@ -935,33 +946,33 @@ ENDHEADER if ($env{'form.area'} eq 'portfolio') { # Added fields + my $curnumadd = $env{'form.numaddedfields'}; + if ($curnumadd eq '') { + $curnumadd = 1; + } $scrout .= '

'.&mt('Custom Metadata fields').'

'; $scrout .= "\n"; $scrout .= ''.''. - ''. - ''; - for (my $j=1; $j<=$env{'form.numaddedfields'}; $j++) { + &mt('Field Value(s)').''; + + for (my $j=0; $j<$curnumadd; $j++) { my $num = $j+1; $scrout .= ''. + '" size="10" value="'.$env{'form.addedfield_'.$j}. + '" />'. ''; + 'name="addedvalues_'.$j.'" size="15" value="'. + $env{'form.addedvalues_'.$j}.'" />'; } - my $numadded = 1 + $env{'form.numaddedfields'}; - $scrout .= ''. - '
 '. &mt('Field Name').''. - &mt('Field Value(s)').'
'.&mt('1: '). - ''. - '
'.&mt('Custom metadata [_1]: ',$num). ''. '
 
'. - ''. - '
'; + $scrout .= ''. + ''; } else { # # Dynamic metadata @@ -1413,6 +1424,17 @@ sub parse_advanced_search { $fillflag++; } } + if ($env{'form.area'} eq 'portfolio') { + # Added metadata fields + for (my $i=0; $i<$env{'form.numaddedfields'} ; $i++) { + my $field = $env{'form.addedfield_'.$i}; + $field =~ s/^\s*(\S*)\s*$/$1/; + $field =~ s/\W/_/g; + if ($field ne '') { + $fillflag++; + } + } + } if (! $fillflag) { &output_blank_field_error($r,$closebutton, 'phase=disp_adv',$hidden_fields); @@ -1503,9 +1525,25 @@ sub parse_advanced_search { # # Added metadata fields for (my $i=0; $i<$env{'form.numaddedfields'} ; $i++) { - if (($env{'form.addedfield_'.$i} ne '') && - ($env{'form.addedvalue_'.$i} ne '')) { - my $stuff = 1; #FIXME + my $field = $env{'form.addedfield_'.$i}; + $field =~ s/^\s*(\S*)\s*$/$1/; + $field =~ s/\W/_/g; + $field =~ tr/A-Z/a-z/; + if ($field ne '') { + my $value = $env{'form.addedvalues_'.$i}; + if ($value ne '') { + $value =~ s/'/''/g; + my ($error,$query) = + &process_phrase_input($value,0,'pf.value'); + if (!defined($error)) { + push(@queries,"pf.field = '$field' AND $query"); + $pretty_search_string .= + $font.$field.': '. + $env{'form.addedvalues_'.$i}.'
'; + } + } else { + push(@queries,"pf.field = '$field' AND pf.value IS NULL"); + } } } } else { @@ -1598,7 +1636,7 @@ sub parse_advanced_search { # if (@queries) { if ($env{'form.area'} eq 'portfolio') { - $query ="SELECT pm.*,pa.keynum,pa.scope FROM portfolio_metadata pm, portfolio_access pa WHERE (pm.url = pa.url AND (pa.start < NOW() AND (pa.end IS NULL OR pa.end > NOW())) AND (".join(') AND (',@queries).'))'; + $query ="SELECT pm.*,pa.keynum,pa.scope FROM portfolio_metadata pm, portfolio_access pa, portfolio_addedfields pf WHERE (pm.url = pa.url AND pf.url = pm.url AND (pa.start < NOW() AND (pa.end IS NULL OR pa.end > NOW())) AND (".join(') AND (',@queries).'))'; } else { $query="SELECT * FROM metadata WHERE (".join(") AND (",@queries).')'; }