Koha/koha-tmpl/intranet-tmpl/prog/en/modules/members/housebound.tt
Jonathan Druart cee2cf9ff9 Bug 18403: Add sub output_and_exit_if_error - unknown_patron & cannot_see_patron_infos
Test plan:
Login with a patron that is not allowed to see patron's information for patrons
outside of his group. Try to access patron's information from scripts of the patron
module (members/*) and circ/circulation.pl.
You should be able to access patron's information of patrons outside of your group
and get "You are not allowed to see the information of this patron."
If you try and access a patron page with a borrowernumber that does not exist, you
should get "This patron does not exist"

Technical note:
A new C4::Output subroutine is created in this patch: "output_and_exit_if_error"
Executed at the beginning of the script it will permit not to copy/paste all the
different checks to know if the logged in user is authorised to see patron's information.
The design here can be discussed, but I did not find an alternative with as less changes.
On the way I refactor what we did with 'unknowuser' previously: it will now work with all
patron pages, not only the few that used it.
Note that the 'or die "Not logged in";' part should not be needed, but... who trusts
C4::Auth?
I think it could be used as a safeguard later. I am willing to sed and remove them
if required.

Changes in discharge.pl are mainly indentation changes.

With this patch we should now have a $patron variable that refer to the patron we
want to access. That will be very useful to remove plenty of code in members/* and
only pass this variable to the template (instead of 1 variable per patron's attribute).

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

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
2018-02-12 15:41:38 -03:00

433 lines
23 KiB
Text

[% USE Koha %]
[% USE KohaDates %]
[% USE AuthorisedValues %]
[% INCLUDE 'doc-head-open.inc' %]
<title>Koha &rsaquo; Housebound &rsaquo; Details for [% INCLUDE 'patron-title.inc' no_html = 1 %]</title>
[% INCLUDE 'doc-head-close.inc' %]
[% INCLUDE 'calendar.inc' %]
<script type="text/javascript">
//<![CDATA[
$(document).ready(function() {
$("a.delete").click(function(){
return confirm(_("Are you sure you want to delete this delivery?"));
});
});
//]]>
</script>
</head>
<body id="housebound-home" class="housebound">
[% INCLUDE 'header.inc' %]
[% INCLUDE 'patron-search.inc' %]
<div id="breadcrumbs">
<a href="/cgi-bin/koha/mainpage.pl">Home</a>
&rsaquo; <a href="/cgi-bin/koha/members/members-home.pl">Patrons</a>
&rsaquo; Details for [% INCLUDE 'patron-title.inc' %]
</div>
<div id="doc3" class="yui-t2">
<div id="bd">
<div id="yui-main">
<div class="yui-b">
[% INCLUDE 'members-toolbar.inc' %]
<div class="yui-g">
<!-- Title -->
<h3>Housebound details for [% INCLUDE 'patron-title.inc' %]</h3>
<div class="first">
[% FOR m IN messages %]
<div class="dialog [% m.type %]">
[% SWITCH m.code %]
[% CASE 'error_on_profile_store' %]
An error occurred whilst updating this housebound profile.
[% CASE 'error_on_profile_create' %]
An error occurred whilst creating this housebound profile.
[% CASE 'error_on_visit_load' %]
An error occurred whilst loading the housebound visit.
[% CASE 'error_on_visit_delete' %]
An error occurred whilst deleting a housebound visit.
[% CASE 'error_on_visit_store' %]
An error occurred whilst updating a housebound visit.
[% CASE 'error_on_visit_create' %]
An error occurred whilst creating a new housebound visit.
[% CASE %]
[% m.code %]
[% END %]
Please try again later.
</div>
[% END %]
<!-- Create or edit housebound_profile -->
[% IF ( method == 'update_or_create' ) %]
<h4>Manage housebound profile</h4>
<form id="editform" method="post" name="editform"
action="/cgi-bin/koha/members/housebound.pl">
<input type="hidden" name="borrowernumber" value="[% borrowernumber %]" />
[% IF ( housebound_profile ) %]
<input type="hidden" name="method" value="updateconfirm" />
[% ELSE %]
<input type="hidden" name="method" value="createconfirm" />
[% END %]
<fieldset id="houseboundentry" class="rows">
<legend>Housebound details</legend>
<ol>
<li>
<label for="day" class="required">Delivery day:</label>
<select id="day" name="day" class="required" required="required">
<option value="">Select a day</option>
[% IF ( housebound_profile ) %]
[% IF ( housebound_profile.day == 'any' ) %]
<option value="any" selected='selected'>Any</option>
[% ELSE %]
<option value="any">Any</option>
[% END %]
[% IF ( housebound_profile.day == 'monday' ) %]
<option value="monday" selected='selected'>Monday</option>
[% ELSE %]
<option value="monday">Monday</option>
[% END %]
[% IF ( housebound_profile.day == 'tuesday' ) %]
<option value="tuesday" selected='selected'>Tuesday</option>
[% ELSE %]
<option value="tuesday">Tuesday</option>
[% END %]
[% IF ( housebound_profile.day == 'wednesday' ) %]
<option value="wednesday" selected='selected'>Wednesday</option>
[% ELSE %]
<option value="wednesday">Wednesday</option>
[% END %]
[% IF ( housebound_profile.day == 'thursday' ) %]
<option value="thursday" selected='selected'>Thursday</option>
[% ELSE %]
<option value="thursday">Thursday</option>
[% END %]
[% IF ( housebound_profile.day == 'friday' ) %]
<option value="friday" selected='selected'>Friday</option>
[% ELSE %]
<option value="friday">Friday</option>
[% END %]
[% IF ( housebound_profile.day == 'saturday' ) %]
<option value="saturday" selected='selected'>Saturday</option>
[% ELSE %]
<option value="saturday">Saturday</option>
[% END %]
[% IF ( housebound_profile.day == 'sunday' ) %]
<option value="sunday" selected='selected'>Sunday</option>
[% ELSE %]
<option value="sunday">Sunday</option>
[% END %]
[% ELSE %]
<option value="any">Any</option>
<option value="monday">Monday</option>
<option value="tuesday">Tuesday</option>
<option value="wednesday">Wednesday</option>
<option value="thursday">Thursday</option>
<option value="friday">Friday</option>
<option value="saturday">Saturday</option>
<option value="sunday">Sunday</option>
[% END %]
</select>
<span class="required">Required</span>
</li>
<li>
<label for="frequency" class="required">Frequency:</label>
<select id="frequency" name="frequency" class="required" required="required">
<option value="">Select a frequency</option>
[% FOREACH frequency IN AuthorisedValues.GetAuthValueDropbox('HSBND_FREQ') %]
[% IF housebound_profile.frequency == frequency.authorised_value %]
<option value="[% frequency.authorised_value %]" selected="selected">[% frequency.lib %]</option>
[% ELSE %]
<option value="[% frequency.authorised_value %]">[% frequency.lib %]</option>
[% END %]
[% END %]
</select>
<span class="required">Required</span>
</li>
<li>
<label for="fav_itemtypes">Preferred materials:</label>
[% IF ( housebound_profile ) %]
<input id="fav_itemtypes" type="text" size="50" name="fav_itemtypes"
value="[% housebound_profile.fav_itemtypes %]">
[% ELSE %]
<input id="fav_itemtypes" type="text" value="" size="50" name="fav_itemtypes">
[% END %]
</li>
<li>
<label for="fav_subjects">Subjects:</label>
[% IF ( housebound_profile ) %]
<input id="fav_subjects" type="text" size="50" name="fav_subjects"
value="[% housebound_profile.fav_subjects %]">
[% ELSE %]
<input id="fav_subjects" type="text" value="" size="50" name="fav_subjects">
[% END %]
</li>
<li>
<label for="fav_authors">Authors:</label>
[% IF ( housebound_profile ) %]
<input id="fav_authors" type="text" size="50" name="fav_authors"
value="[% housebound_profile.fav_authors %]">
[% ELSE %]
<input id="fav_authors" type="text" value="" size="50" name="fav_authors">
[% END %]
</li>
<li>
<label for="referral">Referral:</label>
[% IF ( housebound_profile ) %]
<input id="referral" type="text" size="50" name="referral"
value="[% housebound_profile.referral %]">
[% ELSE %]
<input id="referral" type="text" value="" size="50" name="referral">
[% END %]
</li>
<li>
<label for="notes">Notes:</label>
[% IF ( housebound_profile ) %]
<input id="notes" type="text" size="50" name="notes"
value="[% housebound_profile.notes %]">
[% ELSE %]
<input id="notes" type="text" value="" size="50" name="notes">
[% END %]
</li>
</ol>
</fieldset>
<fieldset class="action">
<button type="submit" class="btn btn-default btn-sm"><i class="fa fa-save"></i> Save changes</button>
<a class="cancel btn btn-link btn-sm"
href="/cgi-bin/koha/members/housebound.pl?borrowernumber=[% borrowernumber %]">
Cancel
</a>
</fieldset>
</form>
<!-- Create or edit housebound_visit -->
[% ELSIF ( method == 'visit_update_or_create' ) %]
<h4>Manage housebound deliveries</h4>
<form name="form" id="instance_form" method="post"
action="/cgi-bin/koha/members/housebound.pl">
[% IF ( visit ) %]
<input type="hidden" name="method" value="editvisitconfirm" />
<input type="hidden" name="visit_id" value="[% visit.id %]" />
[% ELSE %]
<input type="hidden" name="method" value="addvisitconfirm" />
[% END %]
<input type="hidden" name="borrowernumber" value="[% borrowernumber %]" />
<fieldset class="rows" id="instance">
<legend>Delivery details</legend>
<ol>
<li>
<label for="date" class="required">Date: </label>
[% IF ( visit ) %]
<input type="text" id="date" class="datepicker required"
value="[% visit.appointment_date | $KohaDates %]"
name="date" size="20" required="required"/>
[% ELSE %]
<input type="text" id="date" class="datepicker required"
value="" name="date" size="20" required="required"/>
[% END %]
<span class="required">Required</span>
<div class="hint">[% INCLUDE 'date-format.inc' %]</div>
</li>
<li>
<label for="segment" class="required">Time:</label>
<select id="segment" name="segment" required="required"
class="required">
<option value="">Select a time</option>
[% IF ( visit ) %]
[% IF ( visit.day_segment == 'morning' ) %]
<option value="morning" selected="selected">
Morning
</option>
[% ELSE %]
<option value="morning">Morning</option>
[% END %]
[% IF ( visit.day_segment == 'afternoon' ) %]
<option value="afternoon" selected="selected">
Afternoon
</option>
[% ELSE %]
<option value="afternoon">Afternoon</option>
[% END %]
[% IF ( visit.day_segment == 'evening' ) %]
<option value="evening" selected="selected">
Evening
</option>
[% ELSE %]
<option value="evening">Evening</option>
[% END %]
[% ELSE %]
<option value="morning">Morning</option>
<option value="afternoon">Afternoon</option>
<option value="evening">Evening</option>
[% END %]
</select>
<span class="required">Required</span>
</li>
<li>
<label for="chooser" class="required"> Chooser:</label>
<select id="chooser" name="chooser" class="required" required="required">
<option value="">Select a chooser</option>
[% IF ( visit ) %]
[% FOREACH chooser IN choosers %]
[% IF ( visit.chooser_brwnumber == chooser.borrowernumber ) %]
<option value="[% chooser.borrowernumber %]" selected="selected">
[% INCLUDE 'patron-title.inc' borrowernumber = chooser.borrowernumber category_type = chooser.categorycode firstname = chooser.firstname surname = chooser.surname othernames = chooser.othernames cardnumber = chooser.cardnumber invert_name = 0 %]
</option>
[% ELSE %]
<option value="[% chooser.borrowernumber %]">
[% INCLUDE 'patron-title.inc' borrowernumber = chooser.borrowernumber category_type = chooser.categorycode firstname = chooser.firstname surname = chooser.surname othernames = chooser.othernames cardnumber = chooser.cardnumber invert_name = 0 %]
</option>
[% END %]
[% END %]
[% ELSE %]
[% FOREACH chooser IN choosers %]
<option value="[% chooser.borrowernumber %]">
[% INCLUDE 'patron-title.inc' borrowernumber = chooser.borrowernumber category_type = chooser.categorycode firstname = chooser.firstname surname = chooser.surname othernames = chooser.othernames cardnumber = chooser.cardnumber invert_name = 0 %]
</option>
[% END %]
[% END %]
</select>
<span class="required">Required</span>
</li>
<li>
<label for="deliverer" class="required">Deliverer:</label>
<select id="deliverer" name="deliverer" class="required" required="required">
<option value="">Select a deliverer</option>
[% IF ( visit ) %]
[% FOREACH deliverer IN deliverers %]
[% IF ( visit.deliverer_brwnumber == deliverer.borrowernumber ) %]
<option value="[% deliverer.borrowernumber %]" selected="selected">
[% INCLUDE 'patron-title.inc' borrowernumber = deliverer.borrowernumber category_type = deliverer.categorycode firstname = deliverer.firstname surname = deliverer.surname othernames = deliverer.othernames cardnumber = deliverer.cardnumber invert_name = 0 %]
</option>
[% ELSE %]
<option value="[% deliverer.borrowernumber %]">
[% INCLUDE 'patron-title.inc' borrowernumber = deliverer.borrowernumber category_type = deliverer.categorycode firstname = deliverer.firstname surname = deliverer.surname othernames = deliverer.othernames cardnumber = deliverer.cardnumber invert_name = 0 %]
</option>
[% END %]
[% END %]
[% ELSE %]
[% FOREACH deliverer IN deliverers %]
<option value="[% deliverer.borrowernumber %]">
[% INCLUDE 'patron-title.inc' borrowernumber = deliverer.borrowernumber category_type = deliverer.categorycode firstname = deliverer.firstname surname = deliverer.surname othernames = deliverer.othernames cardnumber = deliverer.cardnumber invert_name = 0 %]
</option>
[% END %]
[% END %]
</select>
<span class="required">Required</span>
</li>
</ol>
</fieldset>
<fieldset class="action">
<button type="submit" class="btn btn-default btn-sm"><i class="fa fa-save"></i> Save</button>
<a class="cancel"
href="/cgi-bin/koha/members/housebound.pl?borrowernumber=[% borrowernumber %]">
Cancel
</a>
</fieldset>
</form>
<!-- Display a housebound_profile -->
[% ELSIF ( housebound_profile ) %]
<div class="rows">
<ol>
<li>
<span class="label" class="required"> Delivery day:</span>
[% hpd = housebound_profile.day %]
[% IF hpd == 'any' %]
Any
[% ELSIF hpd == 'monday' %]
Monday
[% ELSIF hpd == 'tuesday' %]
Tuesday
[% ELSIF hpd == 'wednesday' %]
Wednesday
[% ELSIF hpd == 'thursday' %]
Thursday
[% ELSIF hpd == 'friday' %]
Friday
[% ELSIF hpd == 'saturday' %]
Saturday
[% ELSIF hpd == 'sunday' %]
Sunday
[% END %]
</li>
<li>
<span class="label" class="required">Frequency:</span>
[% AuthorisedValues.GetByCode( 'HSBND_FREQ', housebound_profile.frequency, 0 ) || housebound_profile.frequency %]
</li>
<li>
<span class="label">Material:</span>
[% housebound_profile.fav_itemtypes %]
</li>
<li>
<span class="label">Subjects:</span>
[% housebound_profile.fav_subjects %]
</li>
<li>
<span class="label">Authors:</span>
[% housebound_profile.fav_authors %]
</li>
<li>
<span class="label">Referral:</span>
[% housebound_profile.referral %]
</li>
<li>
<span class="label">Notes:</span>
[% housebound_profile.notes %]
</li>
</ol>
<div class="action">
<a class="btn btn-default btn-xs" href="/cgi-bin/koha/members/housebound.pl?borrowernumber=[% borrowernumber %]&method=update_or_create"><i class="fa fa-pencil"></i> Edit</a>
</div>
</div>
<div>
<h3>Deliveries</h3>
[% housebound_visits = housebound_profile.housebound_visits %]
[% IF housebound_visits.size > 0 %]
<table border="0" width="100%" cellpadding="3" cellspacing="0">
<tr>
<th>ID</th><th>Date</th><th>Chooser</th><th>Deliverer</th><th>Actions</th>
</tr>
[% FOREACH entry IN housebound_visits %]
<tr>
<td>[% entry.id %]</td>
<td>[% entry.appointment_date | $KohaDates %] ([% entry.day_segment %])</td>
<td>
<a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% entry.chooser.borrowernumber %]">
[% INCLUDE 'patron-title.inc' borrowernumber = entry.chooser.borrowernumber category_type = entry.chooser.categorycode firstname = entry.chooser.firstname surname = entry.chooser.surname othernames = entry.chooser.othernames cardnumber = entry.chooser.cardnumber invert_name = 0 %]
</a>
</td>
<td>
<a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% entry.deliverer.borrowernumber %]">
[% INCLUDE 'patron-title.inc' borrowernumber = entry.deliverer.borrowernumber category_type = entry.deliverer.categorycode firstname = entry.deliverer.firstname surname = entry.deliverer.surname othernames = entry.deliverer.othernames cardnumber = entry.deliverer.cardnumber invert_name = 0 %]
</a>
</td>
<td class="actions">
<a class="btn btn-default btn-xs" href="/cgi-bin/koha/members/housebound.pl?method=visit_update_or_create&visit_id=[% entry.id %]&borrowernumber=[% borrowernumber %]"><i class="fa fa-pencil"></i> Edit</a>
<a class="delete btn btn-default btn-xs" href="/cgi-bin/koha/members/housebound.pl?method=visit_delete&visit_id=[% entry.id %]&borrowernumber=[% borrowernumber %]"><i class="fa fa-trash"></i> Delete</a>
</td>
</tr>
[% END %]
</table>
[% END %]
<div class="action">
<a href="/cgi-bin/koha/members/housebound.pl?method=visit_update_or_create&borrowernumber=[% borrowernumber %]"
class="btn btn-default btn-sm">
<i class="fa fa-plus"></i> Add a new delivery
</a>
</div>
</div>
[% END %]
</div> <!-- End yui-u first -->
</div> <!-- End yui-g -->
</div>
</div>
<div class="yui-b">
[% INCLUDE 'circ-menu.inc' %]
</div>
</div>
[% INCLUDE 'intranet-bottom.inc' %]