Bug 27873: Improve message consistency: checkout and patron detail pages
This patch creates a new include for showing circulation and patron-related messages on both the checkout page and the patron detail page. This allows the two pages to be consistent with each other. The patch also makes some minor CSS adjustments, including the addition of an SVG to replace an old GIF, arrow-bullet.gif. To test, apply the patch and rebuild the staff interface CSS (https://wiki.koha-community.org/wiki/Working_with_SCSS_in_the_OPAC_and_staff_client). - View both the checkout and patron details page for patrons in the staff interface, confirming that the information is displayed in the same way, including: - Pending modifications - Pending expiration - Expired - Address in doubt - Card lost - Restricted (indefinite and with expiration) - Outstanding overdues - Outstanding return claims - Patron age incorrect for their category - Outstanding charges - Account credit - Waiting holds (at logged-in library or other library) - Circulation note (from borrowers.borrowernotes) - Messages (added at logged-in library or other library) EDIT: Fixed merge error. Signed-off-by: David Nind <david@davidnind.com> Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de> Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
This commit is contained in:
parent
de1ac2b558
commit
dffb3fede8
|
|
@ -465,7 +465,7 @@ if ($patron) {
|
|||
if ( $patron ) {
|
||||
my $noissues;
|
||||
if ( $patron->gonenoaddress ) {
|
||||
$template->param( gna => 1 );
|
||||
$template->param( gonenoaddress => 1 );
|
||||
$noissues = 1;
|
||||
}
|
||||
if ( $patron->lost ) {
|
||||
|
|
@ -473,7 +473,7 @@ if ( $patron ) {
|
|||
$noissues = 1;
|
||||
}
|
||||
if ( $patron->is_debarred ) {
|
||||
$template->param( dbarred=> 1 );
|
||||
$template->param( is_debarred=> 1 );
|
||||
$noissues = 1;
|
||||
}
|
||||
my $account = $patron->account;
|
||||
|
|
@ -542,7 +542,7 @@ if ( $patron ) {
|
|||
}
|
||||
}
|
||||
|
||||
my $messages = Koha::Patron::Messages->search(
|
||||
my $patron_messages = Koha::Patron::Messages->search(
|
||||
{
|
||||
'me.borrowernumber' => $borrowernumber,
|
||||
},
|
||||
|
|
@ -598,7 +598,7 @@ if ($restoreduedatespec || $stickyduedate) {
|
|||
}
|
||||
|
||||
$template->param(
|
||||
messages => $messages,
|
||||
patron_messages => $patron_messages,
|
||||
borrowernumber => $borrowernumber,
|
||||
branch => $branch,
|
||||
was_renewed => scalar $query->param('was_renewed') ? 1 : 0,
|
||||
|
|
|
|||
|
|
@ -1718,18 +1718,15 @@ i {
|
|||
}
|
||||
}
|
||||
|
||||
.blocker {
|
||||
color: #990000;
|
||||
}
|
||||
|
||||
.blocker,
|
||||
.inaccurate-item-statuses {
|
||||
color: #990000;
|
||||
}
|
||||
|
||||
.circmessage {
|
||||
li {
|
||||
list-style: url("../img/arrow-bullet.gif");
|
||||
margin-bottom: .2em;
|
||||
list-style: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='5' height='5' viewBox='0 0 25 25'%3E%3Cpath fill='%23999' d='M9.66.95h4.56l9.21 11.85-9.21 10.53H9.66l5.08-10.53z'/%3E%3C/svg%3E");
|
||||
margin-bottom: .4em;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@
|
|||
[% CASE 'MANUAL' %]
|
||||
Manual
|
||||
[% CASE 'OVERDUES' %]
|
||||
Overdues
|
||||
Overdues
|
||||
[% CASE 'SUSPENSION' %]
|
||||
Suspension
|
||||
[% CASE 'DISCHARGE' %]
|
||||
|
|
|
|||
|
|
@ -0,0 +1,226 @@
|
|||
[% SET ClaimReturnedWarningThreshold = Koha.Preference('ClaimReturnedWarningThreshold') %]
|
||||
[% SET return_claims = patron.return_claims %]
|
||||
|
||||
[% IF ( has_modifications || warndeparture || returnbeforeexpiry || expired || patron.gonenoaddress || patron.lost || userdebarred || odues || ( return_claims.count > ClaimReturnedWarningThreshold ) || age_limitations || charges || charges_guarantors_guarantees || charges_guarantees || credits ) %]
|
||||
<h3>Attention</h3>
|
||||
<ul>
|
||||
[% IF ( has_modifications ) %]
|
||||
<li class="has_modifications">
|
||||
<span class="circ-hlt">Pending modifications:</span> Patron has pending modifications.
|
||||
[% IF CAN_user_borrowers_edit_borrowers && ( !Koha.Preference('IndependentBranchesPatronModifications') || borrower.branch == branch ) %]
|
||||
<a href="/cgi-bin/koha/members/members-update.pl">View all pending patron modifications</a>
|
||||
[% END %]
|
||||
</li>
|
||||
[% END %]
|
||||
|
||||
[% IF ( warndeparture ) %]
|
||||
<li class="warndeparture">
|
||||
<span class="circ-hlt">Expiration:</span> Patron's card will expire soon.
|
||||
Patron's card expires on [% expiry | $KohaDates %] <a href="/cgi-bin/koha/members/setstatus.pl?borrowernumber=[% patron.borrowernumber | uri %]&destination=circ&reregistration=y">Renew</a> or <a href="/cgi-bin/koha/members/memberentry.pl?op=modify&destination=circ&borrowernumber=[% patron.borrowernumber | html %]">Edit details</a>
|
||||
|
||||
</li>
|
||||
[% END %]
|
||||
|
||||
[% IF ( returnbeforeexpiry ) %]
|
||||
<li class="returnbeforeexpiry">
|
||||
<span class="circ-hlt">Set due date to expiry:</span> You have the ReturnBeforeExpiry system preference enabled this means if the expiry date is before the date due, the date due will be set to the expiry date
|
||||
</li>
|
||||
[% END %]
|
||||
|
||||
[% IF ( expired ) %]
|
||||
<li class="expired">
|
||||
<span class="circ-hlt">Expiration:</span> Patron's card has expired.
|
||||
[% IF ( expiry ) %]
|
||||
Patron's card expired on [% expiry | $KohaDates %]
|
||||
[% END %]
|
||||
<a href="/cgi-bin/koha/members/setstatus.pl?borrowernumber=[% patron.borrowernumber | uri %]&destination=circ&reregistration=y">Renew</a> or <a href="/cgi-bin/koha/members/memberentry.pl?op=modify&destination=circ&borrowernumber=[% patron.borrowernumber | html %]">Edit details</a>
|
||||
</li>
|
||||
[% END %]
|
||||
|
||||
[% IF ( patron.gonenoaddress ) %]
|
||||
<li class="gonenoaddress blocker">
|
||||
<span class="circ-hlt">Address:</span> Patron's address in doubt
|
||||
</li>
|
||||
[% END %]
|
||||
|
||||
[% IF ( patron.lost ) %]
|
||||
<li class="lost blocker">
|
||||
<span class="circ-hlt">Lost: </span> Patron's card is lost
|
||||
</li>
|
||||
[% END %]
|
||||
|
||||
[% IF ( userdebarred ) %]
|
||||
<li class="userdebarred blocker">
|
||||
<span class="circ-hlt"> Restricted:</span> Patron's account is restricted
|
||||
|
||||
[% IF ( userdebarreddate ) %]
|
||||
until [% userdebarreddate | $KohaDates %]
|
||||
[% END %]
|
||||
|
||||
[% IF ( debarredcomment ) %]
|
||||
with the explanation: <br/>
|
||||
<em>
|
||||
[% IF debarredcomment.search('OVERDUES_PROCESS') %]
|
||||
Restriction added by overdues process [% debarredcomment.remove('OVERDUES_PROCESS ') | $raw | html_line_break %]
|
||||
[% ELSE %]
|
||||
[% debarredcomment | $raw | html_line_break %]
|
||||
[% END %]
|
||||
</em><br/>
|
||||
[% END %]
|
||||
<a class="btn btn-xs btn-default" href="#reldebarments" onclick="$('#debarments-tab-link').click()"><i class="fa fa-ban"></i> View restrictions</a>
|
||||
|
||||
[% IF (noissues && CAN_user_circulate_force_checkout) %]
|
||||
<span class="override_debarment">
|
||||
<a href="/cgi-bin/koha/circ/circulation.pl?forceallow=1&borrowernumber=[% patron.borrowernumber | uri %]" class="btn btn-xs btn-default">Override restriction temporarily</a>
|
||||
</span>
|
||||
[% END %]
|
||||
</li> <!-- /.blocker -->
|
||||
[% END # /IF userdebarred %]
|
||||
|
||||
[% IF ( odues ) %]
|
||||
<li class="odues blocker">
|
||||
<span class="circ-hlt">Overdues:</span> Patron has ITEMS OVERDUE <a href="#checkouts">See highlighted items below</a>
|
||||
</li>
|
||||
[% END %]
|
||||
|
||||
[% IF return_claims.count > ClaimReturnedWarningThreshold %]
|
||||
<li class="return_claims blocker">
|
||||
<span class="circ-hlt return-claims">Return claims:</span> Patron has [% return_claims.count | html %] RETURN CLAIMS
|
||||
</li>
|
||||
[% END %]
|
||||
|
||||
[% IF age_limitations %]
|
||||
[% INCLUDE 'category-out-of-age-limit.inc' %]
|
||||
[% END %]
|
||||
|
||||
[% IF ( charges ) %]
|
||||
[% INCLUDE 'blocked-fines.inc' fines = chargesamount %]
|
||||
[% END %]
|
||||
|
||||
[% IF ( charges_guarantors_guarantees ) %]
|
||||
<li class="charges_guarantors_guarantees">
|
||||
<span class="circ-hlt">Charges:</span> Patron's guarantors and their other guarantees collectively owe [% charges_guarantors_guarantees | $Price %].
|
||||
[% IF noissues %]
|
||||
<span class="circ-hlt">Checkouts are BLOCKED because fine balance is OVER THE LIMIT.</span>
|
||||
[% END %]
|
||||
</li>
|
||||
[% END %]
|
||||
|
||||
[% IF ( charges_guarantees ) %]
|
||||
<li class="charges_guarantees">
|
||||
<span class="circ-hlt">Charges:</span> Patron's guarantees collectively owe [% chargesamount_guarantees | $Price %].
|
||||
[% IF noissues %]
|
||||
<span class="circ-hlt">Checkouts are BLOCKED because fine balance is OVER THE LIMIT.</span>
|
||||
[% END %]
|
||||
</li>
|
||||
[% END %]
|
||||
|
||||
[% IF ( credits ) %]
|
||||
<li class="credits">
|
||||
<span class="circ-hlt">Credits:</span> Patron has a credit[% IF ( creditsamount ) %] of <span class="credit"><strong>[% creditsamount | $Price %]</strong></span>[% END %]
|
||||
</li>
|
||||
[% END %]
|
||||
|
||||
</ul>
|
||||
|
||||
[% END # /F ( has_modifications || warndeparture... %]
|
||||
|
||||
|
||||
[% IF WaitingHolds.count %]
|
||||
<div id="holdswaiting" class="circmessage">
|
||||
[% SET waiting_here = 0 %]
|
||||
[% SET waiting_elsewhere = 0 %]
|
||||
[% FOREACH w IN WaitingHolds %]
|
||||
[% IF ( w.branch.branchcode == Branches.GetLoggedInBranchcode() ) %]
|
||||
[% waiting_here = waiting_here + 1 %]
|
||||
[% ELSE %]
|
||||
[% waiting_elsewhere = waiting_elsewhere + 1 %]
|
||||
[% END %]
|
||||
[% END %]
|
||||
|
||||
[% IF ( waiting_here > 0 ) %]
|
||||
<h4>Holds waiting here ([% waiting_here | html %])</h4>
|
||||
<ul>
|
||||
[% FOREACH w IN WaitingHolds %]
|
||||
[% IF ( w.branch.branchcode == Branches.GetLoggedInBranchcode() ) %]
|
||||
<li>
|
||||
<a href="/cgi-bin/koha/reserve/request.pl?biblionumber=[% w.biblio.biblionumber | uri %]">[% w.biblio.title | html %]</a>
|
||||
([% ItemTypes.GetDescription( w.item.effective_itemtype ) | html %]),
|
||||
[% IF ( w.biblio.author ) %] by [% w.biblio.author | html %] [% END %]
|
||||
[% IF ( w.item.itemcallnumber ) %] [[% w.item.itemcallnumber | html %]] [% END %]
|
||||
Hold placed on [% w.reservedate | $KohaDates %].
|
||||
<br />
|
||||
<strong class="waitinghere">
|
||||
[% SET expires_on = w.expirationdate %]
|
||||
Waiting here [% IF expires_on %] until [% expires_on | $KohaDates %] [% END %]
|
||||
</strong>
|
||||
</li>
|
||||
[% END %]
|
||||
[% END %]
|
||||
</ul>
|
||||
[% END %]
|
||||
|
||||
[% IF ( waiting_elsewhere > 0 ) %]
|
||||
<h4>Holds waiting at other libraries ([% waiting_elsewhere | html %])</h4>
|
||||
<ul>
|
||||
[% FOREACH w IN WaitingHolds %]
|
||||
[% IF ( w.branch.branchcode != Branches.GetLoggedInBranchcode() ) %]
|
||||
<li>
|
||||
<a href="/cgi-bin/koha/reserve/request.pl?biblionumber=[% w.biblio.biblionumber | uri %]">[% w.biblio.title | html %]</a>
|
||||
([% ItemTypes.GetDescription( w.item.effective_itemtype ) | html %]),
|
||||
[% IF ( w.biblio.author ) %] by [% w.biblio.author | html %] [% END %]
|
||||
[% IF ( w.item.itemcallnumber ) %] [[% w.item.itemcallnumber | html %]] [% END %]
|
||||
Hold placed on [% w.reservedate | $KohaDates %].
|
||||
<br />
|
||||
<strong>
|
||||
[% SET expires_on = w.expirationdate %]
|
||||
Waiting at [% w.branch.branchname | html %] [% IF expires_on %] until [% expires_on | $KohaDates %] [% END %]
|
||||
</strong>
|
||||
</li>
|
||||
[% END %]
|
||||
[% END %]
|
||||
</ul>
|
||||
[% END %]
|
||||
</div>
|
||||
[% END # /IF WaitingHolds.count %]
|
||||
|
||||
[% IF ( patron.borrowernotes ) %]
|
||||
<div id="circnotes" class="circmessage">
|
||||
<h4>Notes</h4>
|
||||
<ul>
|
||||
<li>
|
||||
<span class="circ-hlt">
|
||||
[% patron.borrowernotes | $raw | html_line_break %]
|
||||
</span>
|
||||
</li>
|
||||
</ul>
|
||||
</div> <!-- /#circnotes -->
|
||||
[% END # /IF patron.borrowernotes %]
|
||||
|
||||
[% IF ( patron_messages ) %]
|
||||
<div id="messages" class="circmessage">
|
||||
<h4>Messages</h4>
|
||||
<ul>
|
||||
[% FOREACH patron_message IN patron_messages %]
|
||||
<li>
|
||||
[% IF(patron_message.message_type == "L") %]
|
||||
<span class="circ-hlt">
|
||||
[% ELSE %]
|
||||
<span>
|
||||
[% END %]
|
||||
[% patron_message.message_date | $KohaDates %]
|
||||
[% Branches.GetName( patron_message.branchcode ) | html %]
|
||||
[% IF patron_message.manager_id %]
|
||||
( <a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% patron_message.manager_id | uri %]">[% patron_message.get_column('manager_firstname') | html %] [% patron_message.get_column('manager_surname') | html %]</a> )
|
||||
[% END %]
|
||||
<em>"[% patron_message.message | html %]"</em>
|
||||
</span>
|
||||
[% IF patron_message.branchcode == patron.branchcode OR Koha.Preference('AllowAllMessageDeletion') %]
|
||||
<a class="btn btn-link" href="/cgi-bin/koha/circ/del_message.pl?message_id=[% patron_message.message_id | html %]&borrowernumber=[% patron_message.borrowernumber | html %]&from=moremember" onclick='return confirm(_("Are you sure you want to delete this message? This cannot be undone."));'><i class="fa fa-trash"></i> Delete</a>
|
||||
[% END %]
|
||||
</li>
|
||||
[% END %]
|
||||
</ul>
|
||||
<a id="addnewmessageLabel" href="#add_message_form" class="btn btn-link" data-toggle="modal"><i class="fa fa-plus"></i> Add a new message</a>
|
||||
</div> <!-- /#messages -->
|
||||
[% END # /IF patron_messages %]
|
||||
|
|
@ -750,214 +750,10 @@
|
|||
</h3>
|
||||
[% ELSE %]
|
||||
<div id="circmessages" class="circmessage attention">
|
||||
<h3>Attention:</h3>
|
||||
[% END %]
|
||||
|
||||
<ul>
|
||||
[% IF ( has_modifications ) %]
|
||||
<li><span class="circ-hlt">Pending modifications:</span> Patron has pending modifications.
|
||||
[% IF CAN_user_borrowers_edit_borrowers && ( !Koha.Preference('IndependentBranchesPatronModifications') || borrower.branch == branch ) %]
|
||||
<a href="/cgi-bin/koha/members/members-update.pl">View all pending patron modifications</a>
|
||||
[% END %]
|
||||
</li>
|
||||
[% END %]
|
||||
[% INCLUDE 'patron_messages.inc' %]
|
||||
|
||||
[% IF ( warndeparture ) %]
|
||||
<li>
|
||||
<span class="circ-hlt">Expiration:</span> Patron's card will expire soon.
|
||||
Patron's card expires on [% expiry | $KohaDates %] <a href="/cgi-bin/koha/members/setstatus.pl?borrowernumber=[% patron.borrowernumber | uri %]&destination=circ&reregistration=y">Renew</a> or <a href="/cgi-bin/koha/members/memberentry.pl?op=modify&destination=circ&borrowernumber=[% patron.borrowernumber | html %]">Edit details</a>
|
||||
|
||||
</li>
|
||||
[% END %]
|
||||
|
||||
[% IF ( returnbeforeexpiry ) %]
|
||||
<li>
|
||||
<span class="circ-hlt">Set due date to expiry:</span> You have the ReturnBeforeExpiry system preference enabled this means if the expiry date is before the date due, the date due will be set to the expiry date
|
||||
</li>
|
||||
[% END %]
|
||||
|
||||
[% IF ( expired ) %]
|
||||
<li>
|
||||
<span class="circ-hlt">Expiration:</span> Patron's card has expired.
|
||||
[% IF ( expiry ) %]
|
||||
Patron's card expired on [% expiry | $KohaDates %]
|
||||
[% END %]
|
||||
<a href="/cgi-bin/koha/members/setstatus.pl?borrowernumber=[% patron.borrowernumber | uri %]&destination=circ&reregistration=y">Renew</a> or <a href="/cgi-bin/koha/members/memberentry.pl?op=modify&destination=circ&borrowernumber=[% patron.borrowernumber | html %]">Edit details</a>
|
||||
</li>
|
||||
[% END %]
|
||||
|
||||
[% IF ( gna ) %]
|
||||
<li class="blocker"><span class="circ-hlt">Address:</span> Patron's address in doubt</li>
|
||||
[% END %]
|
||||
|
||||
[% IF ( lost ) %]
|
||||
<li class="blocker"><span class="circ-hlt">Lost: </span>Patron's card is lost</li>
|
||||
[% END %]
|
||||
|
||||
[% IF ( userdebarred ) %]
|
||||
<li class="blocker">
|
||||
<span class="circ-hlt"> Restricted:</span> Patron's account is restricted
|
||||
|
||||
[% IF ( userdebarreddate ) %]
|
||||
until [% userdebarreddate | $KohaDates %]
|
||||
[% END %]
|
||||
|
||||
[% IF ( debarredcomment ) %]
|
||||
with the explanation: <br/>
|
||||
<em>
|
||||
[% IF debarredcomment.search('OVERDUES_PROCESS') %]
|
||||
Restriction added by overdues process [% debarredcomment.remove('OVERDUES_PROCESS ') | $raw | html_line_break %]
|
||||
[% ELSE %]
|
||||
[% debarredcomment | $raw | html_line_break %]
|
||||
[% END %]
|
||||
</em>
|
||||
[% END %]
|
||||
<br/>
|
||||
<a class="btn btn-default" href="#reldebarments" onclick="$('#debarments-tab-link').click()"><i class="fa fa-ban"></i> View restrictions</a>
|
||||
|
||||
[% IF (noissues && patron && CAN_user_circulate_force_checkout) %]
|
||||
<span class="override_debarment">
|
||||
<a href="/cgi-bin/koha/circ/circulation.pl?forceallow=1&borrowernumber=[% patron.borrowernumber | uri %]" class="btn btn-default">Override restriction temporarily</a>
|
||||
</span>
|
||||
[% END %]
|
||||
</li> <!-- /.blocker -->
|
||||
[% END # /IF userdebarred %]
|
||||
|
||||
[% IF ( odues ) %]
|
||||
<li><span class="circ-hlt">Overdues: Patron has ITEMS OVERDUE.</span> <a href="#checkouts">See highlighted items below</a></li>
|
||||
[% END %]
|
||||
|
||||
[% SET ClaimReturnedWarningThreshold = Koha.Preference('ClaimReturnedWarningThreshold') %]
|
||||
[% SET return_claims = patron.return_claims %]
|
||||
[% IF return_claims.count > ClaimReturnedWarningThreshold %]
|
||||
<li><span class="circ-hlt return-claims">Return claims: Patron has [% return_claims.count | html %] RETURN CLAIMS.</span></li>
|
||||
[% END %]
|
||||
|
||||
|
||||
[% IF age_limitations %]
|
||||
[% INCLUDE 'category-out-of-age-limit.inc' %]
|
||||
[% END %]
|
||||
|
||||
[% IF ( charges ) %]
|
||||
[% INCLUDE 'blocked-fines.inc' fines = chargesamount %]
|
||||
[% END %]
|
||||
[% IF ( charges_guarantors_guarantees ) %]
|
||||
<li>
|
||||
<span class="circ-hlt">Charges:</span> Patron's guarantors and their other guarantees collectively owe [% charges_guarantors_guarantees | $Price %].
|
||||
[% IF noissues %]
|
||||
<span class="circ-hlt">Checkouts are BLOCKED because fine balance is OVER THE LIMIT.</span>
|
||||
[% END %]
|
||||
</li>
|
||||
[% END %]
|
||||
[% IF ( charges_guarantees ) %]
|
||||
<li>
|
||||
<span class="circ-hlt">Charges:</span> Patron's guarantees collectively owe [% chargesamount_guarantees | $Price %].
|
||||
[% IF noissues %]
|
||||
<span class="circ-hlt">Checkouts are BLOCKED because fine balance is OVER THE LIMIT.</span>
|
||||
[% END %]
|
||||
</li>
|
||||
[% END %]
|
||||
|
||||
|
||||
[% IF ( credits ) %]
|
||||
<li>
|
||||
<span class="circ-hlt">Credits:</span> Patron has a credit[% IF ( creditsamount ) %] of [% creditsamount | $Price %][% END %]
|
||||
</li>
|
||||
[% END %]
|
||||
|
||||
</ul>
|
||||
|
||||
[% IF WaitingHolds.count %]
|
||||
<div id="holdswaiting" class="circmessage">
|
||||
[% SET waiting_here = 0 %]
|
||||
[% SET waiting_elsewhere = 0 %]
|
||||
[% FOREACH w IN WaitingHolds %]
|
||||
[% IF ( w.branch.branchcode == Branches.GetLoggedInBranchcode() ) %]
|
||||
[% waiting_here = waiting_here + 1 %]
|
||||
[% ELSE %]
|
||||
[% waiting_elsewhere = waiting_elsewhere + 1 %]
|
||||
[% END %]
|
||||
[% END %]
|
||||
|
||||
[% IF ( waiting_here > 0 ) %]
|
||||
<h4>Holds waiting here ([% waiting_here | html %])</h4>
|
||||
<ul>
|
||||
[% FOREACH w IN WaitingHolds %]
|
||||
[% IF ( w.branch.branchcode == Branches.GetLoggedInBranchcode() ) %]
|
||||
<li>
|
||||
<a href="/cgi-bin/koha/reserve/request.pl?biblionumber=[% w.biblio.biblionumber | uri %]">[% w.biblio.title | html %]</a>
|
||||
([% ItemTypes.GetDescription( w.item.effective_itemtype ) | html %]),
|
||||
[% IF ( w.biblio.author ) %] by [% w.biblio.author | html %] [% END %]
|
||||
[% IF ( w.item.itemcallnumber ) %] [[% w.item.itemcallnumber | html %]] [% END %]
|
||||
Hold placed on [% w.reservedate | $KohaDates %].
|
||||
<br />
|
||||
<strong class="waitinghere">
|
||||
[% SET expires_on = w.expirationdate %]
|
||||
Waiting here [% IF expires_on %] until [% expires_on | $KohaDates %] [% END %]
|
||||
</strong>
|
||||
</li>
|
||||
[% END %]
|
||||
[% END %]
|
||||
</ul>
|
||||
[% END %]
|
||||
|
||||
[% IF ( waiting_elsewhere > 0 ) %]
|
||||
<h4>Holds waiting at other libraries ([% waiting_elsewhere | html %])</h4>
|
||||
<ul>
|
||||
[% FOREACH w IN WaitingHolds %]
|
||||
[% IF ( w.branch.branchcode != Branches.GetLoggedInBranchcode() ) %]
|
||||
<li>
|
||||
<a href="/cgi-bin/koha/reserve/request.pl?biblionumber=[% w.biblio.biblionumber | uri %]">[% w.biblio.title | html %]</a>
|
||||
([% ItemTypes.GetDescription( w.item.effective_itemtype ) | html %]),
|
||||
[% IF ( w.biblio.author ) %] by [% w.biblio.author | html %] [% END %]
|
||||
[% IF ( w.item.itemcallnumber ) %] [[% w.item.itemcallnumber | html %]] [% END %]
|
||||
Hold placed on [% w.reservedate | $KohaDates %].
|
||||
<br />
|
||||
<strong>
|
||||
[% SET expires_on = w.expirationdate %]
|
||||
Waiting at [% w.branch.branchname | html %] [% IF expires_on %] until [% expires_on | $KohaDates %] [% END %]
|
||||
</strong>
|
||||
</li>
|
||||
[% END %]
|
||||
[% END %]
|
||||
</ul>
|
||||
[% END %]
|
||||
|
||||
</div>
|
||||
[% END # /IF WaitingHolds.count %]
|
||||
|
||||
[% IF ( notes ) %]
|
||||
<div id="circnotes" class="circmessage">
|
||||
<h4>Notes:</h4>
|
||||
<p><span class="circ-hlt">[% notesmsg | $raw %]</span></p>
|
||||
</div>
|
||||
[% END %]
|
||||
|
||||
<div id="messages" class="circmessage">
|
||||
<h4>Messages:</h4>
|
||||
<ul>
|
||||
[% FOREACH message IN messages %]
|
||||
<li>
|
||||
[% IF(message.message_type == "L") %]
|
||||
<span class="circ-hlt">
|
||||
[% ELSE %]
|
||||
<span>
|
||||
[% END %]
|
||||
[% message.message_date | $KohaDates %]
|
||||
[% Branches.GetName( message.branchcode ) | html %]
|
||||
[% IF message.manager_id %]
|
||||
( <a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% message.manager_id | uri %]">[% message.get_column('manager_firstname') | html %] [% message.get_column('manager_surname') | html %]</a> )
|
||||
[% END %]
|
||||
<em>"[% message.message | html %]"</em>
|
||||
</span>
|
||||
[% IF message.branchcode == branch OR Koha.Preference('AllowAllMessageDeletion') %]
|
||||
<a class="btn btn-link" href="/cgi-bin/koha/circ/del_message.pl?message_id=[% message.message_id | html %]&borrowernumber=[% message.borrowernumber | html %]" onclick='return confirm(_("Are you sure you want to delete this message? This cannot be undone."));'><i class="fa fa-trash"></i> Delete</a>
|
||||
[% END %]
|
||||
</li>
|
||||
[% END %]
|
||||
</ul>
|
||||
<a id="addnewmessageLabel" href="#add_message_form" class="btn btn-link" data-toggle="modal"><i class="fa fa-plus"></i> Add a new message</a>
|
||||
</div> <!-- /.messages -->
|
||||
</div> <!-- /#circmessages -->
|
||||
</div> <!-- /div or div.col-sm-6 -->
|
||||
</div> <!-- /.row -->
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
[% USE Asset %]
|
||||
[% USE Koha %]
|
||||
[% USE Branches %]
|
||||
[% USE ItemTypes %]
|
||||
[% USE KohaDates %]
|
||||
[% USE AuthorisedValues %]
|
||||
[% USE TablesSettings %]
|
||||
|
|
@ -83,119 +84,23 @@
|
|||
|
||||
<div class="row">
|
||||
|
||||
[% IF ( was_renewed ) %]
|
||||
<div class="dialog message">
|
||||
Patron's account has been renewed until [% patron.dateexpiry | $KohaDates %]
|
||||
</div>
|
||||
[% END %]
|
||||
|
||||
[% IF fines || age_limitations %]
|
||||
<div id="circmessages" class="circmessage attention">
|
||||
<ul>
|
||||
[% IF fines %]
|
||||
[% INCLUDE 'blocked-fines.inc' %]
|
||||
[% END %]
|
||||
[% IF age_limitations %]
|
||||
[% INCLUDE 'category-out-of-age-limit.inc' %]
|
||||
[% END %]
|
||||
</ul>
|
||||
</div>
|
||||
[% END %]
|
||||
|
||||
[% IF ( patron_messages ) %]
|
||||
<div id="messages" class="circmessage">
|
||||
<h4>Messages:</h4>
|
||||
<ul>
|
||||
[% FOREACH patron_message IN patron_messages %]
|
||||
<li>
|
||||
[% IF(patron_message.message_type == "L") %]
|
||||
<span class="circ-hlt">
|
||||
[% ELSE %]
|
||||
<span>
|
||||
[% END %]
|
||||
[% patron_message.message_date | $KohaDates %]
|
||||
[% Branches.GetName( patron_message.branchcode ) | html %]
|
||||
[% IF patron_message.manager_id %]
|
||||
( <a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% patron_message.manager_id | uri %]">[% patron_message.get_column('manager_firstname') | html %] [% patron_message.get_column('manager_surname') | html %]</a> )
|
||||
[% END %]
|
||||
<em>"[% patron_message.message | html %]"</em>
|
||||
</span>
|
||||
[% IF patron_message.branchcode == patron.branchcode OR Koha.Preference('AllowAllMessageDeletion') %]
|
||||
<a class="btn btn-link" href="/cgi-bin/koha/circ/del_message.pl?message_id=[% patron_message.message_id | html %]&borrowernumber=[% patron_message.borrowernumber | html %]&from=moremember" onclick='return confirm(_("Are you sure you want to delete this message? This cannot be undone."));'><i class="fa fa-trash"></i> Delete</a>
|
||||
[% END %]
|
||||
</li>
|
||||
[% END %]
|
||||
</ul>
|
||||
<a id="addnewmessageLabel" href="#add_message_form" class="btn btn-link" data-toggle="modal"><i class="fa fa-plus"></i> Add a new message</a>
|
||||
</div>
|
||||
[% END %]
|
||||
|
||||
[% IF ( patron.borrowernotes ) %]
|
||||
<div id="circnotes" class="circmessage">
|
||||
<h4>Notes: </h4>
|
||||
<ul><li>
|
||||
<span class="circ-hlt">
|
||||
[% patron.borrowernotes | $raw | html_line_break %]
|
||||
</span>
|
||||
</li></ul>
|
||||
</div>
|
||||
[% END %]
|
||||
|
||||
[% IF ( flagged ) %]
|
||||
<div id="circmessages" class="circmessage attention">
|
||||
<ul>
|
||||
[% IF ( patron.is_debarred ) %]
|
||||
<li class="blocker">Patron's account is restricted
|
||||
[% IF ( userdebarreddate ) %]
|
||||
until [% userdebarreddate | $KohaDates %]
|
||||
[% END %]
|
||||
|
||||
[% IF ( patron.debarredcomment ) %]
|
||||
with the explanation: <em>
|
||||
[% IF patron.debarredcomment.search('OVERDUES_PROCESS') %]
|
||||
Restriction added by overdues process [% patron.debarredcomment.remove('OVERDUES_PROCESS ') | html_line_break %]
|
||||
[% ELSE %]
|
||||
[% patron.debarredcomment | html_line_break %]
|
||||
[% END %]
|
||||
</em>
|
||||
[% END %]
|
||||
<a href="#reldebarments" id="view_restrictions">View restrictions</a>
|
||||
</li>
|
||||
[% END %]
|
||||
[% IF ( patron.gonenoaddress ) %]
|
||||
<li class="blocker">Patron's address is in doubt.</li>
|
||||
[% END %]
|
||||
[% IF ( patron.lost ) %]
|
||||
<li class="blocker">Patron's card has been reported lost.</li>
|
||||
[% END %]
|
||||
[% IF ( patron.is_expired ) %]
|
||||
<li class="blocker">
|
||||
<span class="circ-hlt">Expiration:</span>
|
||||
[% IF ( patron.dateexpiry ) %]
|
||||
Patron's card expired on [% patron.dateexpiry | $KohaDates %].
|
||||
[% ELSE %]
|
||||
Patron's card has expired.
|
||||
[% END %]
|
||||
<a href="/cgi-bin/koha/members/setstatus.pl?borrowernumber=[% patron.borrowernumber | uri %]&reregistration=y">Renew</a> or <a href="/cgi-bin/koha/members/memberentry.pl?op=modify&borrowernumber=[% patron.borrowernumber | html %]">Edit details</a>
|
||||
</li>
|
||||
[% ELSIF ( patron.is_going_to_expire ) %]
|
||||
<li>
|
||||
<span class="circ-hlt">Expiration:</span> Patron's card will expire soon.
|
||||
Patron's card expires on [% patron.dateexpiry | $KohaDates %]
|
||||
<a href="/cgi-bin/koha/members/setstatus.pl?borrowernumber=[% patron.borrowernumber | uri %]&reregistration=y">Renew</a> or <a href="/cgi-bin/koha/members/memberentry.pl?op=modify&borrowernumber=[% patron.borrowernumber | html %]">Edit details</a>
|
||||
</li>
|
||||
[% END %]
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
[% END %]
|
||||
|
||||
<h3>
|
||||
[% UNLESS ( I ) %]
|
||||
[% patron.title | html %] [% patron.firstname | html %]
|
||||
[% END %]
|
||||
[% patron.surname | html %] ([% patron.cardnumber | html %])
|
||||
</h3>
|
||||
|
||||
[% IF ( was_renewed ) %]
|
||||
<div class="dialog message">
|
||||
Patron's account has been renewed until [% patron.dateexpiry | $KohaDates %]
|
||||
</div>
|
||||
[% END %]
|
||||
|
||||
<div id="patron_messages" class="circmessage attention">
|
||||
[% INCLUDE 'patron_messages.inc' %]
|
||||
</div>
|
||||
|
||||
<div class="col-sm-6">
|
||||
|
||||
<div id="patron-information" class="patroninfo-section">
|
||||
|
|
|
|||
Binary file not shown.
|
Before Width: | Height: | Size: 48 B |
|
|
@ -34,11 +34,13 @@ use C4::Auth;
|
|||
use C4::Output;
|
||||
use C4::Form::MessagingPreferences;
|
||||
use List::MoreUtils qw/uniq/;
|
||||
use Scalar::Util qw( looks_like_number );
|
||||
use Koha::Patron::Attribute::Types;
|
||||
use Koha::Patron::Debarments qw(GetDebarments);
|
||||
use Koha::Patron::Messages;
|
||||
use Koha::DateUtils;
|
||||
use Koha::CsvProfiles;
|
||||
use Koha::Holds;
|
||||
use Koha::Patrons;
|
||||
use Koha::Patron::Files;
|
||||
use Koha::Token;
|
||||
|
|
@ -80,12 +82,16 @@ for (qw(gonenoaddress lost borrowernotes is_debarred)) {
|
|||
|
||||
if ( $patron->is_debarred ) {
|
||||
$template->param(
|
||||
debarments => scalar GetDebarments({ borrowernumber => $borrowernumber }),
|
||||
'debarments' => scalar GetDebarments({ borrowernumber => $borrowernumber }),
|
||||
'userdebarred' => $patron->debarred,
|
||||
'debarredcomment' => $patron->debarredcomment,
|
||||
);
|
||||
|
||||
if ( $patron->debarred ne "9999-12-31" ) {
|
||||
$template->param( 'userdebarreddate' => $patron->debarred );
|
||||
}
|
||||
}
|
||||
|
||||
$template->param( flagged => 1 ) if $patron->account_locked;
|
||||
|
||||
my @relatives;
|
||||
|
|
@ -187,6 +193,71 @@ if ( $patron->is_expired || $patron->is_going_to_expire ) {
|
|||
);
|
||||
}
|
||||
|
||||
my $holds = Koha::Holds->search( { borrowernumber => $borrowernumber } ); # FIXME must be Koha::Patron->holds
|
||||
my $waiting_holds = $holds->waiting;
|
||||
$template->param(
|
||||
holds_count => $holds->count(),
|
||||
WaitingHolds => $waiting_holds,
|
||||
);
|
||||
|
||||
my $no_issues_charge_guarantees = C4::Context->preference("NoIssuesChargeGuarantees");
|
||||
$no_issues_charge_guarantees = undef unless looks_like_number( $no_issues_charge_guarantees );
|
||||
if ( defined $no_issues_charge_guarantees ) {
|
||||
my $guarantees_non_issues_charges = 0;
|
||||
my $guarantees = $patron->guarantee_relationships->guarantees;
|
||||
while ( my $g = $guarantees->next ) {
|
||||
$guarantees_non_issues_charges += $g->account->non_issues_charges;
|
||||
}
|
||||
if ( $guarantees_non_issues_charges > $no_issues_charge_guarantees ) {
|
||||
$template->param(
|
||||
charges_guarantees => 1,
|
||||
chargesamount_guarantees => $guarantees_non_issues_charges,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if ( $patron->has_overdues ) {
|
||||
$template->param( odues => 1 );
|
||||
}
|
||||
my $issues = $patron->checkouts;
|
||||
|
||||
my $balance = 0;
|
||||
$balance = $patron->account->balance;
|
||||
|
||||
my $account = $patron->account;
|
||||
if( ( my $owing = $account->non_issues_charges ) > 0 ) {
|
||||
my $noissuescharge = C4::Context->preference("noissuescharge") || 5; # FIXME If noissuescharge == 0 then 5, why??
|
||||
$template->param(
|
||||
charges => 1,
|
||||
chargesamount => $owing,
|
||||
)
|
||||
} elsif ( $balance < 0 ) {
|
||||
$template->param(
|
||||
credits => 1,
|
||||
creditsamount => -$balance,
|
||||
);
|
||||
}
|
||||
|
||||
# if the expiry date is before today ie they have expired
|
||||
if ( $patron->is_expired ) {
|
||||
#borrowercard expired, no issues
|
||||
$template->param(
|
||||
expired => "1",
|
||||
);
|
||||
}
|
||||
# check for NotifyBorrowerDeparture
|
||||
elsif ( $patron->is_going_to_expire ) {
|
||||
# borrower card soon to expire warn librarian
|
||||
$template->param( "warndeparture" => $patron->dateexpiry ,
|
||||
);
|
||||
if (C4::Context->preference('ReturnBeforeExpiry')){
|
||||
$template->param("returnbeforeexpiry" => 1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
my $has_modifications = Koha::Patron::Modifications->search( { borrowernumber => $borrowernumber } )->count;
|
||||
|
||||
$template->param(
|
||||
patron => $patron,
|
||||
issuecount => $patron->checkouts->count,
|
||||
|
|
@ -201,6 +272,8 @@ $template->param(
|
|||
relatives_borrowernumbers => \@relatives,
|
||||
logged_in_user => $logged_in_user,
|
||||
files => Koha::Patron::Files->new( borrowernumber => $borrowernumber ) ->GetFilesInfo(),
|
||||
#debarments => scalar GetDebarments({ borrowernumber => $borrowernumber }),
|
||||
has_modifications => $has_modifications,
|
||||
);
|
||||
|
||||
output_html_with_http_headers $input, $cookie, $template->output;
|
||||
|
|
|
|||
Loading…
Reference in New Issue