From: Thomas Berezansky Date: Fri, 1 Feb 2013 14:36:55 +0000 (-0500) Subject: Advanced Search Summary X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=bb522fb2dfbcd6e29582f6f76ad84bf68abeda73;p=working%2FEvergreen.git Advanced Search Summary Instead of including search filter statements in the basic search box create a "summary" underneath it. Because it may not apply and isn't multi-select the format selector is hidden when doing an advanced search. Due to how advanced searches translate to basic searches the query type is hardocded to keyword in the background. Also, for "Special" searches don't include the search terms as they will not work in basic search. Signed-off-by: Thomas Berezansky --- diff --git a/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Search.pm b/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Search.pm index dea01459d5..8dfc0a48f3 100644 --- a/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Search.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Search.pm @@ -61,7 +61,8 @@ sub _prepare_biblio_search_basics { sub _prepare_biblio_search { my ($cgi, $ctx) = @_; - my $query = _prepare_biblio_search_basics($cgi) || ''; + my $basic_query = _prepare_biblio_search_basics($cgi) || ''; + my $query = $basic_query; $query .= ' ' . $ctx->{global_search_filter} if $ctx->{global_search_filter}; @@ -181,9 +182,9 @@ sub _prepare_biblio_search { return $query; }; - $logger->info("tpac: site=$site, depth=$depth, query=$query"); + $logger->info("tpac: site=$site, depth=$depth, query=$query, basic query=$basic_query"); - return ($query, $site, $depth); + return ($query, $site, $depth, $basic_query); } sub _get_search_limit { @@ -356,7 +357,7 @@ sub load_rresults { $offset = 0; } - my ($query, $site, $depth) = _prepare_biblio_search($cgi, $ctx); + my ($query, $site, $depth, $basic_query) = _prepare_biblio_search($cgi, $ctx); $self->get_staff_search_settings; @@ -407,6 +408,7 @@ sub load_rresults { # Stuff these into the TT context so that templates can use them in redrawing forms $ctx->{processed_search_query} = $query; + $ctx->{processed_basic_search_query} = $basic_query; $query .= " $_" for @facets; diff --git a/Open-ILS/src/templates/opac/css/style.css.tt2 b/Open-ILS/src/templates/opac/css/style.css.tt2 index fb39da263f..b7edbba026 100644 --- a/Open-ILS/src/templates/opac/css/style.css.tt2 +++ b/Open-ILS/src/templates/opac/css/style.css.tt2 @@ -1503,3 +1503,11 @@ a.preflib_change { #patron_usr_barcode_not_found { font-weight: bold; color: [% css_colors.text_alert %]; } + +.search_summary_filters_label { + font-weight: bold; + font-style: italic; +} +.search_summary_label { + font-weight: bold; +} diff --git a/Open-ILS/src/templates/opac/parts/coded_value_summary.tt2 b/Open-ILS/src/templates/opac/parts/coded_value_summary.tt2 new file mode 100644 index 0000000000..611b69b10c --- /dev/null +++ b/Open-ILS/src/templates/opac/parts/coded_value_summary.tt2 @@ -0,0 +1,34 @@ +[%- +IF !attr.size; attr = [attr]; END; +all_values = []; +FOR attr_class IN attr; + all_values = ctx.search_ccvm('ctype', attr_class, 'opac_visible', 't'); + IF all_values.size > 0; LAST; END; +END; +name = name || "fi:" _ attr_class; +values = values || CGI.param(name); + +sorter = []; +FOR o IN all_values; + IF values.grep('^' _ o.code _ '$').size; + display_value = (o.search_label ? o.search_label : o.value) | html; + sorter.push({code => o.code, value => display_value}); + END; +END; +IF sorter.size; + sorter = sorter.sort('value'); + joiner = ''; + display_value = ''; + FOR o IN sorter; + IF joiner != ''; + display_value = display_value _ joiner; + ELSE; + joiner = ', '; + END; + display_value = display_value _ o.value; + -%] + +[%- + END; + display_value; +END -%] diff --git a/Open-ILS/src/templates/opac/parts/filter_group_summary.tt2 b/Open-ILS/src/templates/opac/parts/filter_group_summary.tt2 new file mode 100644 index 0000000000..57ed5011c7 --- /dev/null +++ b/Open-ILS/src/templates/opac/parts/filter_group_summary.tt2 @@ -0,0 +1,35 @@ +[%- +IF !filter_group.size; filter_group = [filter_group]; END; +group = ''; +FOR code IN filter_group; + group = ctx.search_filter_groups.$code; + LAST IF group AND group.entries.size; +END; +name = name || "fg:" _ group.code; +values = values || CGI.param(name); +-%] + +sorter = []; +FOR o IN group.entries; + IF values.grep('^' _ o.id _ '$').size; + display_value = o.query.label | html; + sorter.push({id => o.id, label => display_value, pos => o.pos}); + END; +END; +IF sorter.size; + sorter = sorter.sort('pos'); + joiner = ''; + display_value = ''; + FOR o IN sorter; + IF joiner != ''; + display_value = display_value _ joiner; + ELSE; + joiner = ', '; + END; + display_value = display_value _ o.label; +-%] +[% l('Advanced Search') %] -