Koha/koha-tmpl/intranet-tmpl/prog/en/modules/circ/overdue.tt
Galen Charlton 18e06ecf0b bug 7198: show patron name in overdue list even if name column is null
If the surname or firstname of a patron is NULL, the MySQL concat()
function (properly) returns NULL, leading to the patron name not
displaying in the overdue report.

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
Signed-off-by: Paul Poulain <paul.poulain@biblibre.com>
2011-12-12 16:32:13 +01:00

279 lines
12 KiB
Text

[% INCLUDE 'doc-head-open.inc' %]
<title>Koha &rsaquo; Circulation &rsaquo; Items Overdue as of [% todaysdate %]</title>
[% INCLUDE 'doc-head-close.inc' %]
<script type="text/JavaScript" language="JavaScript">
//<![CDATA[
function clone_parent(node) {
var parent = node.parentNode;
var clone = parent.cloneNode(true);
$("a", clone).attr("style", "visibility: visible");
$("input", clone).attr("value", "");
var theid = $("span", clone).attr("id") || "";
var parts = theid.match(/^pattrodue-getready-(.*)$/);
if (parts && parts.length > 1)
{
var appendid = "-" + Math.floor(Math.random()*1000+1);
$("span", clone).attr("id",theid+appendid);
theid = $("input", clone).attr("id");
$("input", clone).attr("id",theid+appendid);
theid = $("div[id]", clone).attr("id");
$("div[id]", clone).attr("id",theid+appendid);
var attrcode = $("script", clone).attr("x-code");
var newsuffix = parts[1] + appendid;
create_auto_completion_responder(newsuffix,attrcode);
}
parent.parentNode.insertBefore(clone, parent.nextSibling);
}
function delete_parent(node) {
var parent = node.parentNode;
parent.parentNode.removeChild(parent);
}
function create_auto_completion_responder(uniqueid,attrcode) {
YAHOO.util.Event.onContentReady("pattrodue-getready-"+uniqueid, function() {
new function() {
// Define a custom formatter function
this.fnCustomFormatter = function(oResultItem, sQuery) {
var description = oResultItem[0];
var authorised_value = oResultItem[1];
var aMarkup = [
"<div class='pattrodue-result'>",
description,
" (",
authorised_value,
")",
"</div>"];
return (aMarkup.join(""));
};
// Instantiate an XHR DataSource
this.oACDS = new YAHOO.widget.DS_XHR("/cgi-bin/koha/circ/ypattrodue-attr-search-authvalue.pl/"+attrcode, ["\n", "\t"]);
this.oACDS.responseType = YAHOO.widget.DS_XHR.TYPE_FLAT;
this.oACDS.maxCacheEntries = 60;
this.oACDS.queryMatchSubset = true;
// Instantiate an AutoComplete Widget with uniqueid
var myInput = document.getElementById('pattrodue-input-'+uniqueid);
var myContainer = document.getElementById('pattrodue-container-'+uniqueid);
this.oAutoComp = new YAHOO.widget.AutoComplete(myInput,myContainer,this.oACDS);
this.oAutoComp.formatResult = this.fnCustomFormatter;
}
});
}
//]]>
</script>
<style type="text/css">
.sql {display:none;}
</style>
[% INCLUDE 'calendar.inc' %]
</head>
<body>
[% INCLUDE 'header.inc' %]
[% INCLUDE 'circ-search.inc' %]
<div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> &rsaquo; <a href="/cgi-bin/koha/circ/circulation-home.pl">Circulation</a> &rsaquo; Overdues as of [% todaysdate %]</div>
<div id="doc3" class="yui-t2">
<div id="bd">
<div id="yui-main">
<div class="yui-b">
[% IF ( noreport ) %]
<h2>Overdue Report</h2>
<p>Please choose one or more filters to proceed.</p>
[% ELSE %]
<h2>[% nnoverdue %] [% IF ( noverdue_is_plural ) %]Items[% ELSE %]Item[% END %]
Overdue as of [% todaysdate %][% IF ( isfiltered ) %] (filtered)[% END %]</h2>
<p>
[% IF ( isfiltered ) %]
<a href="overdue.pl?op=csv&amp;[% csv_param_string |html %]">Download file of displayed overdues</a>
[% ELSE %]
<a href="overdue.pl?op=csv">Download file of all overdues</a>
[% END %]
</p>
<div class="sql"><pre>[% sql |html %]</pre></div>
<div class="searchresults">
<table id="overduest">
<thead><tr>
<th>Due Date</th>
<th>Patron</th>
<th>Library</th>
<th>Title</th>
<th>Barcode</th>
<th>Call number</th>
</tr></thead>
<tbody>[% FOREACH overdueloo IN overdueloop %]
<tr>
<td>[% overdueloo.duedate %]</td>
<td><a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% overdueloo.borrowernumber %]">[% overdueloo.surname %] [% overdueloo.firstname %]</a>
[% IF ( overdueloo.email ) %][<a href="mailto:[% overdueloo.email %]?subject=Overdue: [% overdueloo.title |html %]">email</a>][% END %]
[% IF ( overdueloo.phone ) %]([% overdueloo.phone %])[% ELSIF ( overdueloo.mobile ) %]([% overdueloo.mobile %])[% ELSIF ( overdueloo.phonepro ) %]([% overdueloo.phonepro %])[% END %]</td>
<td>[% overdueloo.branchcode %]</td>
<td>[% INCLUDE 'biblio-default-view.inc' biblionumber = overdueloo.biblionumber %][% overdueloo.title |html %] [% overdueloo.subtitle %]</a> [% IF ( overdueloo.author ) %], by [% overdueloo.author %][% END %]
</td>
<td><a href="/cgi-bin/koha/catalogue/moredetail.pl?biblionumber=[% overdueloo.biblionumber %]&amp;itemnumber=[% overdueloo.itemnum %]#item[% overdueloo.itemnum %]">[% overdueloo.barcode %]</a></td>
<td>[% overdueloo.itemcallnumber %]</td>
</tr>
[% END %]</tbody>
</table>
</div>
[% END %] <!-- noreport -->
</div>
</div>
<div class="yui-b">
<form method="post" action="/cgi-bin/koha/circ/overdue.pl">
<fieldset class="brief">
<h4>Filter On:</h4>
<fieldset><legend>Date due:</legend>
<ol>
<li><label for="dateduefrom">From:</label>
<input type="text" id="dateduefrom" name="dateduefrom" size="10" value="[% dateduefrom %]" />
<img src="[% themelang %]/lib/calendar/cal.gif" id="dateduefrom_button" alt="Show Calendar" />
<script language="JavaScript" type="text/javascript">
Calendar.setup(
{
inputField : "dateduefrom",
ifFormat : "[% DHTMLcalendar_dateformat %]",
button : "dateduefrom_button"
}
);
</script>
</li>
<li>
<label for="datedueto">To:</label>
<input type="text" id="datedueto" name="datedueto" size="10" value="[% datedueto %]" />
<img src="[% themelang %]/lib/calendar/cal.gif" id="datedueto_button" alt="Show Calendar" />
<script language="JavaScript" type="text/javascript">
Calendar.setup(
{
inputField : "datedueto",
ifFormat : "[% DHTMLcalendar_dateformat %]",
button : "datedueto_button"
}
);
</script>
</li>
</ol></fieldset>
<ol>
<li><label>Name or cardnumber:</label><input type="text" name="borname" value="[% borname |html %]" /></li>
<li><label>Patron category:</label><select name="borcat" id="borcat"><option value="">Any</option>
[% FOREACH borcatloo IN borcatloop %]
[% IF ( borcatloo.selected ) %]<option value="[% borcatloo.value |html %]" selected="selected">[% borcatloo.catname %]</option>[% ELSE %]<option value="[% borcatloo.value |html %]">[% borcatloo.catname %]</option>[% END %]
[% END %]
</select>
</li>
<li><label>Patron flags:</label>
<select name="borflag" size="1" id="borflag">
<option value="">None</option>
[% IF ( borflag_gonenoaddress ) %]<option value="gonenoaddress" selected="selected">Address in question</option>
[% ELSE %]<option value="gonenoaddress">Address in question</option>[% END %]
[% IF ( borflag_debarred ) %]<option value="debarred" selected="selected">Restricted</option>
[% ELSE %]<option value="debarred">Restricted</option>[% END %]
[% IF ( borflag_lost ) %]<option value="lost" selected="selected">Lost Card</option>
[% ELSE %]<option value="lost">Lost Card</option>[% END %]
</select>
</li>
[% FOREACH patron_attr_filter_loo IN patron_attr_filter_loop %]
<!-- domid cgivalue ismany isclone ordinal code description repeatable authorised_value_category -->
<li>
<label>[% patron_attr_filter_loo.description %]:</label>
[% IF ( patron_attr_filter_loo.authorised_value_category ) %]
<script type="text/JavaScript" language="JavaScript" x-code="[% patron_attr_filter_loo.code |html %]">create_auto_completion_responder([% patron_attr_filter_loo.domid %],"[% patron_attr_filter_loo.code |html %]");</script>
<span id="pattrodue-getready-[% patron_attr_filter_loo.domid %]">
<div class="pattrodue-autocomplete">
<input autocomplete="off" id="pattrodue-input-[% patron_attr_filter_loo.domid %]" name="patron_attr_filter_[% patron_attr_filter_loo.code |html %]" value="[% patron_attr_filter_loo.cgivalue |html %]" class="pattrodue-input" type="text" />
<div id="pattrodue-container-[% patron_attr_filter_loo.domid %]" class="pattrodue-container"></div>
</div>
</span>
[% ELSE %]
<input type="text" name="patron_attr_filter_[% patron_attr_filter_loo.code |html %]" value="[% patron_attr_filter_loo.cgivalue |html %]"/>
[% END %]
[% IF ( patron_attr_filter_loo.repeatable ) %]
<a href="#" onclick="clone_parent(this); return false;">Add</a>
[% IF ( patron_attr_filter_loo.isclone ) %]
<a href="#" onclick="delete_parent(this); return false;" style="visibility: visible">Delete</a>
[% ELSIF ( patron_attr_filter_loo.ismany ) %]
<a href="#" onclick="delete_parent(this); return false;" style="visibility: visible">Delete</a>
[% ELSE %]
<a href="#" onclick="delete_parent(this); return false;" style="visibility: hidden">Delete</a>
[% END %]
[% END %]
</li>
[% END %]
<li><label>Item type:</label><select name="itemtype" id="itemtype"><option value="">Any</option>
[% FOREACH itemtypeloo IN itemtypeloop %][% IF ( itemtypeloo.selected ) %]
<option value="[% itemtypeloo.value |html %]" selected="selected">[% itemtypeloo.itemtypename %]</option>[% ELSE %]
<option value="[% itemtypeloo.value |html %]">[% itemtypeloo.itemtypename %]</option>[% END %]
[% END %]
</select>
</li>
<li>
<label>Library of the patron:</label><select name="branch" id="branch">
<option value="">Any</option>
[% FOREACH branchloo IN branchloop %]
[% IF ( branchloo.selected ) %]
<option value="[% branchloo.value |html %]" selected="selected">[% branchloo.branchname %]</option>[% ELSE %]
<option value="[% branchloo.value |html %]">[% branchloo.branchname %]</option>[% END %]
[% END %]
</select>
</li>
<li><label for="order">Sort By:</label> <select name="order" id="order">
[% FOREACH ORDER_LOO IN ORDER_LOOP %]
[% IF ( ORDER_LOO.selected ) %]
<option value="[% ORDER_LOO.ordervalue %]" selected="selected">
[% ELSE %]
<option value="[% ORDER_LOO.ordervalue %]">
[% END %]
[% IF ( ORDER_LOO.order_date_due ) %]Due Date
[% ELSIF ( ORDER_LOO.order_borrower ) %]Patron
[% ELSIF ( ORDER_LOO.order_barcode ) %]Barcode
[% ELSIF ( ORDER_LOO.order_title ) %]Title
[% ELSIF ( ORDER_LOO.order_date_due_desc ) %]Due Date desc
[% ELSIF ( ORDER_LOO.order_borrower_desc ) %]Patron desc
[% ELSIF ( ORDER_LOO.order_barcode_desc ) %]Barcode desc
[% ELSIF ( ORDER_LOO.order_title_desc ) %]Title desc
[% ELSE %][% ORDER_LOO.label %]
[% IF ( ORDER_LOO.desc ) %]desc[% END %]
[% END %]
</option>
[% END %]
[% FOREACH patron_attr_order_loo IN patron_attr_order_loop %]
[% IF ( patron_attr_order_loo.selected ) %]<option value="[% patron_attr_order_loo.value |html %]" selected="selected">[% patron_attr_order_loo.label %]</option>
[% ELSE %]<option value="[% patron_attr_order_loo.value |html %]">[% patron_attr_order_loo.label %]</option>[% END %]
[% END %]
</select></li>
<li class="radio"><label for="showall">Show any items currently checked out:</label>
[% IF ( showall ) %]
<input type="checkbox" id="showall" name="showall" value="show" checked="checked" />
[% ELSE %]
<input type="checkbox" id="showall" name="showall" value="show" />
[% END %]
</li>
</ol>
<fieldset class="action">
<input type="submit" value="Apply Filter" class="submit" />
<input type="hidden" name="op" value="apply filter" />
</fieldset>
</fieldset>
</form>
</div>
</div>
[% INCLUDE 'intranet-bottom.inc' %]