@@ -, +, @@ - Launch a search (OPAC and pro) - Enable some facets - Disable some facets --- catalogue/search.pl | 12 ++++++++ .../intranet-tmpl/prog/en/includes/facets.inc | 27 +++++++++++++++-- .../opac-tmpl/prog/en/includes/opac-facets.inc | 31 +++++++++++++++++--- opac/opac-search.pl | 13 ++++++++ 4 files changed, 76 insertions(+), 7 deletions(-) --- a/catalogue/search.pl +++ a/catalogue/search.pl @@ -411,6 +411,9 @@ my @operands = map uri_unescape($_), $cgi->param('q'); # limits are use to limit to results to a pre-defined category such as branch or language my @limits = map uri_unescape($_), $cgi->param('limit'); +my @nolimits = map uri_unescape($_), $cgi->param('nolimit'); +my %is_nolimit = map { $_ => 1 } @nolimits; +@limits = grep { not $is_nolimit{$_} } @limits; if($params->{'multibranchlimit'}) { my $multibranch = '('.join( " or ", map { "branch: $_ " } @{ GetBranchesInCategory( $params->{'multibranchlimit'} ) } ).')'; @@ -685,6 +688,15 @@ my $gotopage = $cgi->param('gotoPage'); $template->{'VARS'}->{'gotoPage'} = $gotopage if $gotopage =~ m/^(ISBD|labeledMARC|MARC|more)?detail.pl$/; +my @input_values = map { $_->{input_value} } @limit_inputs; +for my $facet ( @$facets ) { + for my $entry ( @{ $facet->{facets} } ) { + my $index = $entry->{type_link_value}; + my $value = $entry->{facet_link_value}; + $entry->{active} = grep { $_ eq qq{$index:$value} } @input_values; + } +} + $template->param( #classlist => $classlist, total => $total, --- a/koha-tmpl/intranet-tmpl/prog/en/includes/facets.inc +++ a/koha-tmpl/intranet-tmpl/prog/en/includes/facets.inc @@ -20,9 +20,30 @@ [% IF ( facets_loo.type_label_Libraries ) %]Libraries[% END %] [% IF ( facets_loo.type_label_Location ) %]Locations[% END %] [% END %] [% END %] --- a/koha-tmpl/opac-tmpl/prog/en/includes/opac-facets.inc +++ a/koha-tmpl/opac-tmpl/prog/en/includes/opac-facets.inc @@ -21,10 +21,33 @@ [% END %] [% IF ( facets_loo.type_label_Location ) %]Locations[% END %] + [% FOREACH facet IN facets_loo.facets %] +
  • + [% SET query_cgi_f = query_cgi | html %] + [% SET limit_cgi_f = limit_cgi | html %] + [% SET url = "/cgi-bin/koha/opac-search.pl?" _ query_cgi_f _ limit_cgi_f %] + [% IF ( sort_by ) %] + [% SET url = url _ "&sort_by=" _ sort_by |html %] + [% END %] + [% IF facet.active %] + [% SET url = url _ "&nolimit=" _ facet.type_link_value _ ":" _ facet.facet_link_value %] + [% facet.facet_label_value %] + [x] + [% ELSE %] + [% SET url = url _ "&limit=" _ facet.type_link_value _ ":" _ facet.facet_link_value %] + [% facet.facet_label_value %] + [% IF ( displayFacetCount ) %] + ([% facet.facet_count %]) + [% END %] + [% END %] +
  • + [% END %] + [% IF ( facets_loo.expandable ) %] +
  • Show more +
  • + [% END %] + + [% END %] [% END %] --- a/opac/opac-search.pl +++ a/opac/opac-search.pl @@ -400,6 +400,9 @@ if ($operands[0] && !$operands[1]) { # limits are use to limit to results to a pre-defined category such as branch or language my @limits = $cgi->param('limit'); +my @nolimits = $cgi->param('nolimit'); +my %is_nolimit = map { $_ => 1 } @nolimits; +@limits = grep { not $is_nolimit{$_} } @limits; @limits = map { uri_unescape($_) } @limits; if($params->{'multibranchlimit'}) { @@ -848,6 +851,16 @@ for (my $i=0;$i<@servers;$i++) { } #/end of the for loop #$template->param(FEDERATED_RESULTS => \@results_array); +my @input_values = map { $_->{input_value} } @limit_inputs; +for my $facet ( @$facets ) { + for my $entry ( @{ $facet->{facets} } ) { + my $index = $entry->{type_link_value}; + my $value = $entry->{facet_link_value}; + $entry->{active} = grep { $_ eq qq{$index:$value} } @input_values; + } +} + + $template->param( #classlist => $classlist, total => $total, --