Neither of the two patches submitted for bug 3154 apply 3.2.x. If they should, please fixup and resubmit with [3.2.x] in the subject line.
The patches present merge conflicts in multiple places/files. Kind Regards, Chris On Thu, Mar 17, 2011 at 5:33 AM, Marcel de Rooy <[email protected]> wrote: > Based on patch from Fridolyn Somers with input of Frederic Demians. > Added new Searching preference maxRecordsForFacets. > This pref contains number of result records used in facet building. > Also added pref displayFacetCount (with thanks to Frederic). > Follow up patch takes care of install issues; functionality can already be > tested with this patch only. > > Updated on March 17 for changes in include files. > --- > C4/Search.pm | 72 > +++++++++++++------- > catalogue/search.pl | 1 + > .../intranet-tmpl/prog/en/includes/facets.inc | 2 +- > .../en/modules/admin/preferences/searching.pref | 14 ++++ > .../opac-tmpl/prog/en/includes/opac-facets.inc | 2 +- > opac/opac-search.pl | 1 + > 6 files changed, 65 insertions(+), 27 deletions(-) > > diff --git a/C4/Search.pm b/C4/Search.pm > index c486df9..2034327 100644 > --- a/C4/Search.pm > +++ b/C4/Search.pm > @@ -309,6 +309,7 @@ sub getRecords { > my $facets_counter = (); > my $facets_info = (); > my $facets = getFacets(); > + my $facets_maxrecs = C4::Context->preference('maxRecordsForFacets')||20; > > my @facets_loop; # stores the ref to array of hashes for template > facets loop > > @@ -418,7 +419,6 @@ sub getRecords { > for ( my $j = $offset ; $j < $times ; $j++ ) { > my $records_hash; > my $record; > - my $facet_record; > > ## Check if it's an index scan > if ($scan) { > @@ -451,33 +451,55 @@ sub getRecords { > > # warn "RECORD $j:".$record; > $results_hash->{'RECORDS'}[$j] = $record; > - > - # Fill the facets while we're looping, but only for the > biblioserver > - $facet_record = > MARC::Record->new_from_usmarc($record) > - if $servers[ $i - 1 ] =~ /biblioserver/; > - > - #warn $servers[$i-1]."\n".$record; > #.$facet_record->title(); > - if ($facet_record) { > - for ( my $k = 0 ; $k <= @$facets ; $k++ ) { > - ($facets->[$k]) or next; > - my @fields = map {$facet_record->field($_)} > @{$facets->[$k]->{'tags'}} ; > - for my $field (@fields) { > - my @subfields = $field->subfields(); > - for my $subfield (@subfields) { > - my ( $code, $data ) = @$subfield; > - ($code eq > $facets->[$k]->{'subfield'}) or next; > - $facets_counter->{ > $facets->[$k]->{'link_value'} }->{$data}++; > - } > - } > - $facets_info->{ > $facets->[$k]->{'link_value'} }->{'label_value'} = > - $facets->[$k]->{'label_value'}; > - $facets_info->{ > $facets->[$k]->{'link_value'} }->{'expanded'} = > - $facets->[$k]->{'expanded'}; > - } > - } > } > + > } > $results_hashref->{ $servers[ $i - 1 ] } = $results_hash; > + > + # Fill the facets while we're looping, but only for the > biblioserver and not for a scan > + if ( !$scan && $servers[ $i - 1 ] =~ /biblioserver/ ) { > + > + my $jmax = $size>$facets_maxrecs? $facets_maxrecs: $size; > + > + for ( my $k = 0 ; $k <= @$facets ; $k++ ) { > + ($facets->[$k]) or next; > + my @fcodes = @{$facets->[$k]->{'tags'}}; > + my $sfcode = $facets->[$k]->{'subfield'}; > + > + for ( my $j = 0 ; $j < $jmax ; $j++ ) { > + my $render_record = $results[ $i - 1 > ]->record($j)->render(); > + my @used_datas = (); > + > + foreach my $fcode (@fcodes) { > + > + # avoid first line > + my $field_pattern = '\n'.$fcode.' ([^\n]+)'; > + my @field_tokens = ( $render_record =~ > /$field_pattern/g ) ; > + > + foreach my $field_token (@field_tokens) { > + my $subfield_pattern = '\$'.$sfcode.' > ([^\$]+)'; > + my @subfield_values = ( $field_token =~ > /$subfield_pattern/g ); > + > + foreach my $subfield_value > (@subfield_values) { > + > + my $data = $subfield_value; > + $data =~ s/^\s+//; # trim left > + $data =~ s/\s+$//; # trim right > + > + unless ( $data ~~ @used_datas ) { > + $facets_counter->{ > $facets->[$k]->{'link_value'} }->{$data}++; > + push @used_datas, $data; > + } > + } # subfields > + } # fields > + } # field codes > + } # records > + > + $facets_info->{ $facets->[$k]->{'link_value'} > }->{'label_value'} = $facets->[$k]->{'label_value'}; > + $facets_info->{ $facets->[$k]->{'link_value'} > }->{'expanded'} = $facets->[$k]->{'expanded'}; > + } # facets > + } > + # End PROGILONE > } > > # warn "connection ", $i-1, ": $size hits"; > diff --git a/catalogue/search.pl b/catalogue/search.pl > index f3f6008..7f1f0ea 100755 > --- a/catalogue/search.pl > +++ b/catalogue/search.pl > @@ -656,6 +656,7 @@ $template->param( > total => $total, > opacfacets => 1, > facets_loop => $facets, > + displayFacetCount=> > C4::Context->preference('displayFacetCount')||0, > scan => $scan, > search_error => $error, > ); > diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/facets.inc > b/koha-tmpl/intranet-tmpl/prog/en/includes/facets.inc > index b53bfb7..710dc23 100644 > --- a/koha-tmpl/intranet-tmpl/prog/en/includes/facets.inc > +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/facets.inc > @@ -17,7 +17,7 @@ > <!-- TMPL_IF NAME="type_label_Series" -->Series<!-- /TMPL_IF --> > <!-- TMPL_IF NAME="type_label_Libraries" -->Libraries<!-- /TMPL_IF --> > <ul> > - <!-- TMPL_LOOP NAME="facets" --><li><a > href="/cgi-bin/koha/catalogue/search.pl?<!-- TMPL_VAR NAME="query_cgi" > ESCAPE="HTML" --><!-- TMPL_VAR NAME="limit_cgi" ESCAPE="HTML"--><!-- TMPL_IF > NAME="sort_by" -->&sort_by=<!-- TMPL_VAR NAME="sort_by" --><!-- /TMPL_IF > -->&limit=<!-- TMPL_VAR NAME="type_link_value" -->:<!-- TMPL_VAR > NAME="facet_link_value" -->" title="<!-- TMPL_VAR NAME="facet_title_value" > -->"><!-- TMPL_VAR NAME="facet_label_value" --></a> <!-- (<!-- TMPL_VAR > NAME="facet_count" -->) --></li><!-- /TMPL_LOOP --><!-- TMPL_IF > NAME="expandable" --> > + <!-- TMPL_LOOP NAME="facets" --><li><a > href="/cgi-bin/koha/catalogue/search.pl?<!-- TMPL_VAR NAME="query_cgi" > ESCAPE="HTML" --><!-- TMPL_VAR NAME="limit_cgi" ESCAPE="HTML"--><!-- TMPL_IF > NAME="sort_by" -->&sort_by=<!-- TMPL_VAR NAME="sort_by" --><!-- /TMPL_IF > -->&limit=<!-- TMPL_VAR NAME="type_link_value" -->:<!-- TMPL_VAR > NAME="facet_link_value" -->" title="<!-- TMPL_VAR NAME="facet_title_value" > -->"><!-- TMPL_VAR NAME="facet_label_value" --></a> <!-- TMPL_IF > NAME="displayFacetCount" -->(<!-- TMPL_VAR NAME="facet_count" -->)<!-- > /TMPL_IF --></li><!-- /TMPL_LOOP --><!-- TMPL_IF NAME="expandable" --> > <li class="showmore"><a href="/cgi-bin/koha/catalogue/search.pl?<!-- > TMPL_VAR NAME="query_cgi" ESCAPE="HTML" --><!-- TMPL_VAR NAME="limit_cgi" > ESCAPE="HTML" --><!-- TMPL_IF NAME="sort_by" -->&sort_by=<!-- TMPL_VAR > NAME="sort_by" --><!-- /TMPL_IF -->&expand=<!-- TMPL_VAR NAME="expand" > -->#<!-- TMPL_VAR NAME="type_id" -->">Show More</a></li> > <!-- /TMPL_IF --> > </ul></li> > diff --git > a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/searching.pref > b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/searching.pref > index 5ff267f..d0a58e0 100644 > --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/searching.pref > +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/searching.pref > @@ -99,6 +99,14 @@ Searching: > az: from A to Z. > za: from Z to A. > - > + - pref: displayFacetCount > + type: boolean > + default: no > + choices: > + yes: Show > + no: "Don't show" > + - facet counts. The relevance of these numbers highly depends on > the value of the maxRecordsForFacets preference. Applies to OPAC and staff > interface. > + - > - By default, show > - pref: numSearchResults > class: integer > @@ -129,6 +137,12 @@ Searching: > class: integer > - items per biblio in the search results > - > + - Build facets based on > + - pref: maxRecordsForFacets > + class: integer > + default: 20 > + - records from the search results. > + - > - By default, show > - pref: OPACnumSearchResults > class: integer > diff --git a/koha-tmpl/opac-tmpl/prog/en/includes/opac-facets.inc > b/koha-tmpl/opac-tmpl/prog/en/includes/opac-facets.inc > index cc6d235..57f0518 100644 > --- a/koha-tmpl/opac-tmpl/prog/en/includes/opac-facets.inc > +++ b/koha-tmpl/opac-tmpl/prog/en/includes/opac-facets.inc > @@ -18,7 +18,7 @@ > <!-- TMPL_IF NAME="type_label_Libraries" -->Libraries<!-- /TMPL_IF --> > <!-- /TMPL_UNLESS --> > <ul> > - <!-- TMPL_LOOP NAME="facets" --><li><a > href="/cgi-bin/koha/opac-search.pl?<!-- TMPL_VAR NAME="query_cgi" --><!-- > TMPL_VAR NAME="limit_cgi" ESCAPE="HTML" --><!-- TMPL_IF NAME="sort_by" > -->&sort_by=<!-- TMPL_VAR NAME="sort_by" --><!-- /TMPL_IF > -->&limit=<!-- TMPL_VAR NAME="type_link_value" -->:<!-- TMPL_VAR > NAME="facet_link_value" -->" title="<!-- TMPL_VAR NAME="facet_title_value" > ESCAPE="HTML" -->"><!-- TMPL_VAR NAME="facet_label_value" --></a> <!-- (<!-- > TMPL_VAR NAME="facet_count" -->) --></li><!-- /TMPL_LOOP --><!-- TMPL_IF > NAME="expandable" --> > + <!-- TMPL_LOOP NAME="facets" --><li><a > href="/cgi-bin/koha/opac-search.pl?<!-- TMPL_VAR NAME="query_cgi" --><!-- > TMPL_VAR NAME="limit_cgi" ESCAPE="HTML" --><!-- TMPL_IF NAME="sort_by" > -->&sort_by=<!-- TMPL_VAR NAME="sort_by" --><!-- /TMPL_IF > -->&limit=<!-- TMPL_VAR NAME="type_link_value" -->:<!-- TMPL_VAR > NAME="facet_link_value" -->" title="<!-- TMPL_VAR NAME="facet_title_value" > ESCAPE="HTML" -->"><!-- TMPL_VAR NAME="facet_label_value" --></a> <!-- > TMPL_IF NAME="displayFacetCount">(<!-- TMPL_VAR NAME="facet_count" -->)<!-- > /TMPL_IF --></li><!-- /TMPL_LOOP --><!-- TMPL_IF NAME="expandable" --> > <li class="showmore"><a href="/cgi-bin/koha/opac-search.pl?<!-- > TMPL_VAR NAME="query_cgi" --><!-- TMPL_VAR NAME="limit_cgi" ESCAPE="HTML" > --><!-- TMPL_IF NAME="sort_by" -->&sort_by=<!-- TMPL_VAR NAME="sort_by" > --><!-- /TMPL_IF -->&offset=<!-- TMPL_VAR NAME="offset" > -->&expand=<!-- TMPL_VAR NAME="expand" -->#<!-- TMPL_VAR NAME="type_id" > -->">Show More</a></li> > <!-- /TMPL_IF --> > </ul></li> > diff --git a/opac/opac-search.pl b/opac/opac-search.pl > index 0f52650..271f501 100755 > --- a/opac/opac-search.pl > +++ b/opac/opac-search.pl > @@ -628,6 +628,7 @@ $template->param( > total => $total, > opacfacets => 1, > facets_loop => $facets, > + displayFacetCount=> > C4::Context->preference('displayFacetCount')||0, > scan => $scan, > search_error => $error, > ); > -- > 1.6.0.6 > > _______________________________________________ > Koha-patches mailing list > [email protected] > http://lists.koha-community.org/cgi-bin/mailman/listinfo/koha-patches > website : http://www.koha-community.org/ > git : http://git.koha-community.org/ > bugs : http://bugs.koha-community.org/ > _______________________________________________ Koha-patches mailing list [email protected] http://lists.koha-community.org/cgi-bin/mailman/listinfo/koha-patches website : http://www.koha-community.org/ git : http://git.koha-community.org/ bugs : http://bugs.koha-community.org/
