Bug 18403: Use patron-title.inc when hidepatronname is used

There is already a HidePatronName syspref to hide patron's information
on bibliographic
record detail pages and the hold list.

Test plan:
With the HidePatronName enabled, make sure the patron's information are
hidden from
the catalogue and hold list pages. If the logged in user is not allowed
to see the
patron's info, no link and no cardnumber will be displayed
With he HidePatronName disabled, make sure the patron's information are
displayed
if the logged in user is allowed to see the patron's info.

Technical note:
This patch improves the existing patron-title.inc include file to
display patron's
information. Using it everywhere patron's details are displayed will
permit to
homogenise the way they are displayed. The file takes now a patron
object (what
should be, in the future, the only way to use it), that way we can call
the new
method on it to know if patron's information can be shown by the logged
in used.

NOTE: I am not sure this syspref makes sense anymore. Should not we
remove it?

Signed-off-by: Signed-off-by: Jon McGowan <jon.mcgowan@ptfs-europe.com>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
This commit is contained in:
Jonathan Druart 2017-04-05 16:43:41 -03:00
parent e09ed656af
commit 5f80977875
7 changed files with 90 additions and 84 deletions

View File

@ -305,6 +305,7 @@ Returns the related Koha::Patron object for this Hold
=cut
# FIXME Should be renamed with ->patron
sub borrower {
my ($self) = @_;

View File

@ -253,11 +253,6 @@ foreach my $item (@items) {
$itemfields{$_} = 1 if ( $item->{$_} );
}
if (C4::Context->preference('HidePatronName')){
$item->{'hidepatronname'} = 1;
}
# checking for holds
my $item_object = Koha::Items->find( $item->{itemnumber} );
my $holds = $item_object->current_holds;
@ -265,15 +260,15 @@ foreach my $item (@items) {
my $patron = Koha::Patrons->find( $first_hold->borrowernumber );
$item->{backgroundcolor} = 'reserved';
$item->{reservedate} = $first_hold->reservedate;
$item->{ReservedForBorrowernumber} = $first_hold->borrowernumber;
$item->{ReservedForSurname} = $patron->surname;
$item->{ReservedForFirstname} = $patron->firstname;
$item->{ReservedFor} = $patron,
$item->{ExpectedAtLibrary} = $first_hold->branchcode;
$item->{Reservedcardnumber} = $patron->cardnumber;
# Check waiting status
$item->{waitingdate} = $first_hold->waitingdate;
}
if ( my $checkout = $item_object->checkout ) {
$item->{CheckedOutFor} = $checkout->patron;
}
# Check the transit status
my ( $transfertwhen, $transfertfrom, $transfertto ) = GetTransfers($item->{itemnumber});

View File

@ -60,8 +60,6 @@ if($query->cookie("holdfor")){
);
}
my $hidepatronname = C4::Context->preference("HidePatronName");
# get variables
my $biblionumber=$query->param('biblionumber');
@ -186,14 +184,10 @@ foreach my $item (@items){
$item->{'issue'}= 0;
}
unless ($hidepatronname) {
if ( $item->{'borrowernumber'} ) {
my $curr_borrower = Koha::Patrons->find( $item->{borrowernumber} );
$item->{borrowerfirstname} = $curr_borrower->firstname;
$item->{borrowersurname} = $curr_borrower->surname;
}
if ( $item->{'borrowernumber'} ) {
my $curr_borrower = Koha::Patrons->find( $item->{borrowernumber} );
$item->{patron} = $curr_borrower;
}
}
my $mss = Koha::MarcSubfieldStructures->search({ frameworkcode => $fw, kohafield => 'items.itemlost', authorised_value => { not => undef } });
@ -224,7 +218,6 @@ $template->param(
itemnumber => $itemnumber,
z3950_search_params => C4::Search::z3950_search_args(GetBiblioData($biblionumber)),
subtitle => $subtitle,
hidepatronname => $hidepatronname,
);
$template->param(ONLY_ONE => 1) if ( $itemnumber && $showncount != @items );
$template->{'VARS'}->{'searchid'} = $query->param('searchid');

View File

@ -1,35 +1,75 @@
[%# Parameter no_html - if 1, the html tags are NOT generated %]
[%- IF no_html %]
[%- span_start = '' %]
[%- span_end = '' %]
[%- ELSE %]
[%- span_start = '<span class="patron-title">' %]
[%- span_end = '</span>' %]
[%- END %]
[%- IF ( borrower.borrowernumber ) %]
[%- IF borrower.category_type == 'I' %]
[%- borrower.surname | html %] [% IF borrower.othernames %] ([% borrower.othernames | html %]) [% END %]
[%- ELSE %]
[%- IF invert_name %]
[%- IF borrower.title %][% span_start %][%- borrower.title | html %][% span_end %] [% END %][%- borrower.surname | html %], [% borrower.firstname | html %] [% IF borrower.othernames %] ([% borrower.othernames | html %]) [% END %]
[%- ELSE %]
[%- IF borrower.title %][% span_start %][%- borrower.title | html %][% span_end %] [% END %][%- borrower.firstname | html %] [% IF borrower.othernames %] ([% borrower.othernames | html %]) [% END %] [% borrower.surname | html %]
[%- END -%]
[%- END -%]
[%- IF ( borrower.cardnumber ) -%]
([% borrower.cardnumber | html %])
[%- END %]
[%- ELSIF ( borrowernumber ) %]
[%- IF category_type == 'I' %]
[%- surname | html %] [% IF othernames %] ([% othernames | html %]) [% END %]
[%- ELSE %]
[%- IF invert_name %]
[%- IF title %][% span_start %][%- title | html %][% span_end %] [% END %][%- surname | html %], [% firstname | html %] [% IF othernames %] ([% othernames | html %]) [% END %]
[%- ELSE %]
[%- IF title %][% span_start %][%- title | html %][% span_end %] [% END %][%- firstname | html %] [% IF othernames %] ([% othernames | html %]) [% END %] [% surname | html %]
[%- END %]
[%- END -%]
[%- IF ( cardnumber ) -%]
([% cardnumber | html %])
[%- END %]
[%- USE Koha -%]
[%- USE Branches -%]
[%- SET data = {} -%]
[%- IF patron -%]
[%- SET data.category_type = patron.category.category_type -%]
[%- SET data.surname = patron.surname -%]
[%- SET data.othernames = patron.othernames -%]
[%- SET data.firstname = patron.firstname -%]
[%- SET data.cardnumber = patron.cardnumber -%]
[%- SET data.borrowernumber = patron.borrowernumber -%]
[%- SET data.title = patron.title -%]
[%- ELSIF ( borrower.borrowernumber ) -%]
[%- SET data.category_type = borrower.category_type -%]
[%- SET data.surname = borrower.surname -%]
[%- SET data.othernames = borrower.othernames -%]
[%- SET data.firstname = borrower.firstname -%]
[%- SET data.cardnumber = borrower.cardnumber -%]
[%- SET data.borrowernumber = borrower.borrowernumber -%]
[%- SET data.title = borrower.title -%]
[%- ELSIF ( borrowernumber ) -%]
[%- SET data.category_type = category_type -%]
[%- SET data.surname = surname -%]
[%- SET data.othernames = othernames -%]
[%- SET data.firstname = firstname -%]
[%- SET data.cardnumber = cardnumber -%]
[%- SET data.borrowernumber = borrowernumber -%]
[%- SET data.title = title -%]
[%- END -%]
[%# Parameter no_html - if 1, the html tags are NOT generated %]
[% IF data.title %]
[%- IF no_html %]
[%- span_start = '' %]
[%- span_end = '' %]
[%- ELSE %]
[%- span_start = '<span class="patron-title">' %]
[%- span_end = '</span>' %]
[%- END %]
[%- SET data.title = span_start _ data.title _ span_end _ ' ' -%]
[%- END -%]
[%- SET display_patron_name = 1 -%]
[%- SET display_cardnumber = 1 -%]
[%- IF hide_patron_infos_if_needed %] [%# Should only be set if patron is set -%]
[%- SET can_see_patron_infos = logged_in_user.can_see_patron_infos( patron ) -%]
[%- UNLESS can_see_patron_infos -%]
[%- SET display_patron_name = 0 -%]
[%- SET display_cardnumber = 0 -%]
[%- ELSIF Koha.Preference('HidePatronName') -%]
[%- SET display_patron_name = 0 -%]
[%- END -%]
[%- END -%]
[%- IF hide_patron_infos_if_needed AND ( display_patron_name OR display_cardnumber ) -%]
[%- IF link_to == 'circulation_reserves' %]<a href="/cgi-bin/koha/circ/circulation.pl?borrowernumber=[% data.borrowernumber %]#reserves">
[%- ELSE %]<a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% data.borrowernumber %]">
[%- END -%]
[%- END -%]
[%- IF data.category_type == 'I' -%]
[%- UNLESS display_patron_name %][%- data.surname | html %] [% IF data.othernames %] [% END %]([% data.othernames | html %]) [% END -%]
[%- ELSIF display_patron_name -%]
[%- IF invert_name -%]
[% data.title%][%- data.surname | html %], [% data.firstname | html %] [% IF data.othernames %] ([% data.othernames | html %]) [% END -%]
[%- ELSE -%]
[% data.title %][%- data.firstname | html %] [% IF data.othernames %] ([% data.othernames | html %]) [% END %] [% data.surname | html -%]
[%- END -%]
[%- IF display_cardnumber AND data.cardnumber %]([% data.cardnumber | html %])[% END -%]
[%- ELSIF display_cardnumber -%]
[%- IF data.cardnumber -%][%# FIXME Cardnumber should always be defined, right? -%]
[%- data.cardnumber | html -%]
[%- END -%]
[%- ELSE -%]
A patron from library [% Branches.GetName( patron.branchcode ) -%]
[%- END -%]
[%- IF hide_patron_infos_if_needed AND ( display_patron_name OR display_cardnumber ) -%]
</a>
[%- END -%]

View File

@ -373,7 +373,7 @@
<td class="itemcallnumber">[% IF ( item.itemcallnumber ) %] [% item.itemcallnumber %][% END %]</td>
<td class="status">
[% IF ( item.datedue ) %]
[% IF item.CheckedOutFor %]
[% IF item.onsite_checkout %]
<span>Currently in local use
[% ELSE %]
@ -381,16 +381,11 @@
[% END %]
[% UNLESS ( item.NOTSAMEBRANCH ) %]
[% IF item.onsite_checkout %]
by <a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% item.borrowernumber %]">
by
[% ELSE %]
to <a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% item.borrowernumber %]">
to
[% END %]
[% IF ( item.hidepatronname ) %]
[% item.cardnumber %]
[% ELSE %]
[% item.firstname %] [% item.surname %]
[% END %]
</a>
[% INCLUDE 'patron-title.inc' patron=item.CheckedOutFor hide_patron_infos_if_needed=1 %]
[% END %]
: due [% item.datedue %]
</span>
@ -440,13 +435,8 @@
Item-level hold (placed [% item.reservedate | $KohaDates %]) for delivery at [% Branches.GetName( item.ExpectedAtLibrary ) %].
[% END %]
[% IF ( canreservefromotherbranches ) %]
Hold for: <a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% item.ReservedForBorrowernumber %]">
[% IF ( item.hidepatronname ) %]
[% item.Reservedcardnumber %]
[% ELSE %]
[% item.ReservedForFirstname _ " " _ item.ReservedForSurname _ " (" _ item.Reservedcardnumber _ ")" %]
[% END %]
</a>
Hold for:
[% INCLUDE 'patron-title.inc' patron=item.ReservedFor hide_patron_infos_if_needed=1 %]
[% END %]
[% END %]
[% UNLESS ( item.itemnotforloan || item.notforloan_per_itemtype || item.onloan || item.itemlost || item.withdrawn || item.damaged || item.transfertwhen || item.reservedate ) %]

View File

@ -795,13 +795,7 @@ function checkMultiHold() {
[% END %]
<td>
<a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% reserveloo.borrowernumber %]" >
[% IF ( reserveloo.hidename ) %]
[% reserveloo.cardnumber (reserveloo.borrowernumber) %]
[% ELSE %]
[% reserveloo.firstname %] [% reserveloo.surname %]
[% END %]
</a>
[% INCLUDE 'patron-title.inc' patron=reserveloo.patron hide_patron_infos_if_needed=1 %]
</td>
<td>[% reserveloo.notes %]</td>
<td>[% reserveloo.date %]</td>

View File

@ -572,19 +572,12 @@ foreach my $biblionumber (@biblionumbers) {
}
}
# get borrowers reserve info
if ( C4::Context->preference('HidePatronName') ) {
$reserve{'hidename'} = 1;
$reserve{'cardnumber'} = $res->borrower()->cardnumber();
}
$reserve{'expirationdate'} = output_pref( { dt => dt_from_string( $res->expirationdate ), dateonly => 1 } )
unless ( !defined( $res->expirationdate ) || $res->expirationdate eq '0000-00-00' );
$reserve{'date'} = output_pref( { dt => dt_from_string( $res->reservedate ), dateonly => 1 } );
$reserve{'borrowernumber'} = $res->borrowernumber();
$reserve{'biblionumber'} = $res->biblionumber();
$reserve{'borrowernumber'} = $res->borrowernumber();
$reserve{'firstname'} = $res->borrower()->firstname();
$reserve{'surname'} = $res->borrower()->surname();
$reserve{'patron'} = $res->borrower;
$reserve{'notes'} = $res->reservenotes();
$reserve{'waiting_date'} = $res->waitingdate();
$reserve{'ccode'} = $res->item() ? $res->item()->ccode() : undef;