@@ -, +, @@ "choose" is displayed, working correctly. and so on) are displayed, one for each occurence. In the example of my screenshot, the line with a "Paul, Korky -- Pauline, Korkette" summary possesses two links : "1" will add "Paul, Korky" whereas "2" will add "Pauline, Korkette" (couldn't come up with a better name ;)). also created, when it should not be the case. In our example, "Niclausse, Paul -- Expositions" will create a link "1" for "Niclausse, Paul" and a link "2" for "Expositions". Clicking on the 2nd link leads to the following error: Software error: Can't call method "subfields" on an undefined value at /home/asaurat/workspace/versions/community/authorities/blinddetail-biblio-search.pl line 86. Only the cases 1 and 2 should be handled. The creation of links for subfields like 200$x or 200$y should be removed. - Edit an authority type summary : for example subject (heading on 250) : summary "[250a][ -- 250x]" - Create an authority A1 with one heading and a subdivision : for example a subject : 250$a "History" 250$x "20th century" - Create an authority A2 with several headings. for example a subject : 250$a "History" 250$a "Legends" - Rebuild Zebra queue - Go to OPAC and click on "Authority search" and search on "History" => You will find A1 and A2 : History -- 20th century History | Legends - Go to intranet autorities search and search on "History" => You will find A1 and A2 : History -- 20th century History | Legends - Edit a record using this autorities type as thesaurus : for example on 606$a - Click on thesaurus link and search on "History" => You will find A1 and A2 : History -- 20th century ; 0 times ; choose ; Edit authority History | Legends ; 0 times ; 1 2 ; Edit authority - Click on link "2" to chosse "Legends" => You get "Legends" in heading field : for example 606$a --- C4/AuthoritiesMarc.pm | 21 ++++++++++--------- authorities/auth_finder.pl | 13 ------------ .../en/includes/authorities-search-results.inc | 10 +++++++- .../modules/authorities/searchresultlist-auth.tt | 6 ++-- .../en/includes/authorities-search-results.inc | 10 +++++++- 5 files changed, 30 insertions(+), 30 deletions(-) --- a/C4/AuthoritiesMarc.pm +++ a/C4/AuthoritiesMarc.pm @@ -876,12 +876,13 @@ sub BuildSummary { my ($record,$authid,$authtypecode)=@_; my $dbh=C4::Context->dbh; my %summary; + my $summary_template; # handle $authtypecode is NULL or eq "" if ($authtypecode) { my $authref = GetAuthType($authtypecode); $summary{authtypecode} = $authref->{authtypecode}; $summary{type} = $authref->{authtypetext}; - $summary{summary} = $authref->{summary}; + $summary_template = $authref->{summary}; } my $marc21subfields = 'abcdfghjklmnopqrstuvxyz68'; my %marc21controlrefs = ( 'a' => 'earlier', @@ -914,14 +915,14 @@ sub BuildSummary { # suit the MARC21 version, so for now the "templating" # feature will be enabled only for UNIMARC for backwards # compatibility. - if ($summary{summary} and C4::Context->preference('marcflavour') eq 'UNIMARC') { + if ($summary_template and C4::Context->preference('marcflavour') eq 'UNIMARC') { my @fields = $record->fields(); # $reported_tag = '$9'.$result[$counter]; - my @stringssummary; + my @repets; foreach my $field (@fields) { my $tag = $field->tag(); my $tagvalue = $field->as_string(); - my $localsummary= $summary{summary}; + my $localsummary= $summary_template; $localsummary =~ s/\[(.?.?.?.?)$tag\*(.*?)\]/$1$tagvalue$2\[$1$tag$2\]/g; if ($tag<10) { if ($tag eq '001') { @@ -936,13 +937,13 @@ sub BuildSummary { $localsummary =~ s/\[(.?.?.?.?)$tagsubf(.*?)\]/$1$subfieldvalue$2\[$1$tagsubf$2\]/g; } } - push @stringssummary, $localsummary if ($localsummary ne $summary{summary}); + if ($localsummary ne $summary_template) { + $localsummary =~ s/\[(.*?)\]//g; + $localsummary =~ s/\n/
/g; + push @repets, $localsummary; + } } - my $resultstring; - $resultstring = join(" -- ",@stringssummary); - $resultstring =~ s/\[(.*?)\]//g; - $resultstring =~ s/\n/
/g; - $summary{summary} = $resultstring; + $summary{repets} = \@repets; } my @authorized; my @notes; --- a/authorities/auth_finder.pl +++ a/authorities/auth_finder.pl @@ -72,19 +72,6 @@ if ( $op eq "do_search" ) { $startfrom * $resultsperpage, $resultsperpage, $authtypecode, $orderby); - # If an authority heading is repeated, add an arrayref to those repetions - # First heading -- Second heading - for my $heading ( @$results ) { - my @repets = split / -- /, $heading->{summary}; - if ( @repets > 1 ) { - my @repets_loop; - for (my $i = 0; $i < @repets; $i++) { - push @repets_loop, - { index => $index, repet => $i+1, value => $repets[$i] }; - } - $heading->{repets} = \@repets_loop; - } - } # multi page display gestion my $displaynext = 0; my $displayprev = $startfrom; --- a/koha-tmpl/intranet-tmpl/prog/en/includes/authorities-search-results.inc +++ a/koha-tmpl/intranet-tmpl/prog/en/includes/authorities-search-results.inc @@ -29,18 +29,24 @@ [% END %] [% END %] [% BLOCK authresult %] - [% IF ( summary.summary ) %][% summary.summary | html %]:[% END %] +
+ [% FOREACH repet IN summary.repets %] + [% repet | html %] + [% UNLESS loop.last %] | [% END %] + [% END %] +
[% UNLESS ( summary.summaryonly ) %]
[% FOREACH authorize IN summary.authorized %] [% authorize.heading | html %] + [% UNLESS loop.last %] | [% END %] [% END %]
[% IF ( marcflavour == 'UNIMARC' ) %] [% IF summary.notes %]
[% FOREACH note IN summary.notes %] - [% note.note | html %] + [% note.note | html %] [% END %]
[% END %] --- a/koha-tmpl/intranet-tmpl/prog/en/modules/authorities/searchresultlist-auth.tt +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/authorities/searchresultlist-auth.tt @@ -73,9 +73,9 @@ function doauth(authid, index, repet) [% PROCESS authresult summary=resul.summary %] [% resul.used %] times - [% IF resul.repets %] - [% FOREACH repet IN resul.repets %] - [% repet.repet %] + [% IF resul.summary && resul.summary.repets && resul.summary.repets.size > 1 %] + [% FOREACH repet IN resul.summary.repets %] + [% loop.count %] [% END %] [% ELSE %] choose --- a/koha-tmpl/opac-tmpl/prog/en/includes/authorities-search-results.inc +++ a/koha-tmpl/opac-tmpl/prog/en/includes/authorities-search-results.inc @@ -29,18 +29,24 @@ [% END %] [% END %] [% BLOCK authresult %] - [% IF ( summary.summary ) %][% summary.summary | html %]:[% END %] +
+ [% FOREACH repet IN summary.repets %] + [% repet | html %] + [% UNLESS loop.last %] | [% END %] + [% END %] +
[% UNLESS ( summary.summaryonly ) %]
[% FOREACH authorize IN summary.authorized %] [% authorize.heading | html %] + [% UNLESS loop.last %] | [% END %] [% END %]
[% IF ( marcflavour == 'UNIMARC' ) %] [% IF summary.notes %]
[% FOREACH note IN summary.notes %] - [% note.note | html %] + [% note.note | html %] [% END %]
[% END %] --