+[% USE raw %]
+[% USE Asset %]
+[% USE KohaDates %]
+[%- USE Branches -%]
+[%- USE Price -%]
+[% SET footerjs = 1 %]
[% INCLUDE 'doc-head-open.inc' %]
-<title>Koha › Circulation › Items Overdue as of [% todaysdate %]</title>
+<title>Koha › Circulation › Items overdue as of [% todaysdate | html %]</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">
+<style>
.sql {display:none;}
</style>
-[% INCLUDE 'calendar.inc' %]
</head>
-<body>
+
+<body id="circ_overdue" class="circ">
[% INCLUDE 'header.inc' %]
[% INCLUDE 'circ-search.inc' %]
-<div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> › <a href="/cgi-bin/koha/circ/circulation-home.pl">Circulation</a> › Overdues as of [% todaysdate %]</div>
-
-<div id="doc3" class="yui-t2">
+<div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> › <a href="/cgi-bin/koha/circ/circulation-home.pl">Circulation</a> › Overdues as of [% todaysdate | html %]</div>
- <div id="bd">
- <div id="yui-main">
- <div class="yui-b">
+<div class="main container-fluid">
+ <div class="row">
+ <div class="col-sm-10 col-sm-push-2">
+ <main>
[% IF ( noreport ) %]
-
-<h2>Overdue Report</h2>
-
-<p>Please choose one or more filters to proceed.</p>
-
+ <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>
+[% IF ( overdueloop ) %]
-<p>
+ <h2>[% nnoverdue | html %] [% IF ( noverdue_is_plural ) %]Items[% ELSE %]Item[% END %] overdue as of [% todaysdate | html %][% IF ( isfiltered ) %] <span style="font-size:70%;">(Filtered. <a href="/cgi-bin/koha/circ/overdue.pl">Reset filter</a>)</span>[% END %]</h2>
+
+ <p>
[% IF ( isfiltered ) %]
- <a href="overdue.pl?op=csv&[% csv_param_string |html %]">Download file of displayed overdues</a>
+ <a href="overdue.pl?op=csv&[% csv_param_string | uri %]">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>
+ </p>
-<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 %]&itemnumber=[% overdueloo.itemnum %]#item[% overdueloo.itemnum %]">[% overdueloo.barcode %]</a></td>
- <td>[% overdueloo.itemcallnumber %]</td>
+ <div class="sql"><pre>[% sql | html %]</pre></div>
+ <div class="searchresults">
+ <table id="overduest">
+ <thead>
+ <tr>
+ <th class="title-string">Due date</th>
+ <th>Patron</th>
+ <th>Library</th>
+ <th>Title</th>
+ <th>Barcode</th>
+ <th>Call number</th>
+ <th>Price</th>
+ <th>Non-public note</th>
+ </tr>
+ </thead>
+ [%- BLOCK subject -%]Overdue:[%- END -%]
+ <tbody>
+ [% FOREACH overdueloo IN overdueloop %]
+ <tr>
+ <td><span title="[% overdueloo.duedate | html %]">[% overdueloo.duedate | $KohaDates %]</span></td>
+ <td>
+ [% INCLUDE 'patron-title.inc' patron=overdueloo.patron hide_patron_infos_if_needed=1 %]
+ [% IF logged_in_user.can_see_patron_infos( overdueloo.patron ) %]
+ [% IF ( overdueloo.email ) %][<a href="mailto:[% overdueloo.email | uri %]?subject=[% INCLUDE subject %] [% overdueloo.title | uri %]">email</a>][% END %]
+ [% IF ( overdueloo.phone ) %]([% overdueloo.phone | html %])[% ELSIF ( overdueloo.mobile ) %]([% overdueloo.mobile | html %])[% ELSIF ( overdueloo.phonepro ) %]([% overdueloo.phonepro | html %])[% END %]</td>
+ [% END %]
+ <td>[% Branches.GetName( overdueloo.patron.branchcode ) | html %]</td>
+ <td>[% INCLUDE 'biblio-default-view.inc' biblionumber = overdueloo.biblionumber %][% INCLUDE 'biblio-title.inc' biblio=overdueloo %]</a> [% IF ( overdueloo.author ) %], by [% overdueloo.author | html %][% END %][% IF ( overdueloo.enumchron ) %], [% overdueloo.enumchron | html %][% END %]</td>
+ <td><a href="/cgi-bin/koha/catalogue/moredetail.pl?biblionumber=[% overdueloo.biblionumber | uri %]&itemnumber=[% overdueloo.itemnum | uri %]#item[% overdueloo.itemnum | uri %]">[% overdueloo.barcode | html %]</a></td>
+ <td>[% overdueloo.itemcallnumber | html %]</td>
+ <td>[% overdueloo.replacementprice | $Price %]</td>
+ <td>[% overdueloo.itemnotes_nonpublic | html %]</td>
</tr>
-[% END %]</tbody>
-</table>
+ [% END %]
+ </tbody>
+ </table>
+ </div>
+
+[% ELSE %]
+
+ <h2>Overdue report</h2>
+ [% IF ( isfiltered ) %]
+ <p>There are no overdues matching your search. <a href="/cgi-bin/koha/circ/overdue.pl">Reset filter</a></p>
+ [% ELSE %]
+ <p>There are no overdues.</p>
+ [% END %]
-</div>
+[% END %] <!-- overdueloop -->
[% END %] <!-- noreport -->
-</div>
-</div>
-<div class="yui-b">
+ </main>
+ </div> <!-- /.col-sm-10.col-sm-push-2 -->
+
+ <div class="col-sm-2 col-sm-pull-10">
+ <aside>
+
<form method="post" action="/cgi-bin/koha/circ/overdue.pl">
<fieldset class="brief">
-<h4>Filter On:</h4>
+<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><label for="from">From:</label>
+ <input type="text" id="from" name="dateduefrom" size="10" value="[% dateduefrom | $KohaDates %]" class="datepickerfrom" />
</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>
+ <label for="to">To:</label>
+ <input type="text" id="to" name="datedueto" size="10" value="[% datedueto | $KohaDates %]" class="datepickerto" />
</li>
</ol></fieldset>
<ol>
- <li><label>Name or cardnumber:</label><input type="text" name="borname" value="[% borname |html %]" /></li>
+ <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 %]
+ [% IF ( borcatloo.selected ) %]<option value="[% borcatloo.value | html %]" selected="selected">[% borcatloo.catname | html %]</option>[% ELSE %]<option value="[% borcatloo.value | html %]">[% borcatloo.catname | html %]</option>[% END %]
[% END %]
</select>
</li>
[% 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 %]
+ [% 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 %]">
+ <label>[% patron_attr_filter_loo.description | html %]:</label>
+ [% IF ( patron_attr_filter_loo.authorised_value_category ) %]
+ <script type="text/javascript" x-code="[% patron_attr_filter_loo.code | html %]">create_auto_completion_responder([% patron_attr_filter_loo.domid | html %],"[% patron_attr_filter_loo.code | html %]");</script>
+ <span id="pattrodue-getready-[% patron_attr_filter_loo.domid | html %]">
<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>
+ <input autocomplete="off" id="pattrodue-input-[% patron_attr_filter_loo.domid | html %]" name="patron_attr_filter_[% patron_attr_filter_loo.code | html %]" value="[% patron_attr_filter_loo.cgivalue | html %]" class="pattrodue-input" type="text" />
</div>
</span>
[% ELSE %]
- <input type="text" name="patron_attr_filter_[% patron_attr_filter_loo.code |html %]" value="[% patron_attr_filter_loo.cgivalue |html %]"/>
+ <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>
<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 %]
+ <option value="[% itemtypeloo.value | html %]" selected="selected">[% itemtypeloo.itemtypename | html %]</option>[% ELSE %]
+ <option value="[% itemtypeloo.value | html %]">[% itemtypeloo.itemtypename | html %]</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>
+ <label>Item home library:</label>
+ <select name="homebranch" id="homebranch">
+ <option value="">Any</option>
+ [% PROCESS options_for_libraries libraries => Branches.all( selected => homebranchfilter ) %]
+ </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>
+ <label>Item holding library:</label>
+ <select name="holdingbranch" id="holdingbranch">
+ <option value="">Any</option>
+ [% PROCESS options_for_libraries libraries => Branches.all( selected => holdingbranchfilter ) %]
+ </select>
+ </li>
+
+ <li>
+ <label>Library of the patron:</label>
+ <select name="branch" id="branch">
+ <option value="">Any</option>
+ [% PROCESS options_for_libraries libraries => Branches.all( selected => branchfilter, only_from_group => 1 ) %]
+ </select>
+ </li>
<li class="radio"><label for="showall">Show any items currently checked out:</label>
[% IF ( showall ) %]
</li>
</ol>
<fieldset class="action">
- <input type="submit" value="Apply Filter" class="submit" />
+ <input type="submit" value="Apply filter" class="submit" />
<input type="hidden" name="op" value="apply filter" />
</fieldset>
</fieldset>
</form>
-</div>
-</div>
+
+ </aside>
+ </div> <!-- /.col-sm-2.col-sm-pull-10 -->
+ </div> <!-- /.row -->
+
+[% MACRO jsinclude BLOCK %]
+ [% INCLUDE 'calendar.inc' %]
+ [% INCLUDE 'datatables.inc' %]
+ <script type="text/javascript">
+ function clone_parent(node) {
+ var parent = node.parentNode;
+ var clone = parent.cloneNode(true);
+ parent.parentNode.insertBefore(clone, parent.nextSibling);
+ $("a", clone).attr("style", "visibility: visible");
+ $("input", clone).attr("value", "");
+
+ var theid = $("span", clone).attr("id") || "";
+ 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);
+ }
+ }
+
+
+ function delete_parent(node) {
+ var parent = node.parentNode;
+ parent.parentNode.removeChild(parent);
+ }
+
+ function create_auto_completion_responder(uniqueid,attrcode) {
+ $("#pattrodue-getready-" + uniqueid).ready(function(){
+ $( "#pattrodue-input-" + uniqueid ).autocomplete({
+ source: "/cgi-bin/koha/circ/ypattrodue-attr-search-authvalue.pl/"+attrcode,
+ select: function( event, ui ) {
+ $( "#pattrodue-input-"+uniqueid ).val( ui.item.description );
+ return false;
+ }
+ })
+ .data( "ui-autocomplete" )._renderItem = function( ul, item ) {
+ return $( "<li></li>" )
+ .data( "ui-autocomplete-item", item )
+ .append( "<a>" + item.description + " (" + item.authorised_value + ")</a>" )
+ .appendTo( ul )
+ .css("font-size","90%").css("width","13em");
+ };
+ });
+ }
+
+ $(document).ready(function(){
+ $("#overduest").dataTable($.extend(true, {}, dataTablesDefaults, {
+ "sPaginationType": "four_button",
+ "aaSorting": [[0, 'asc']],
+ "aoColumnDefs": [
+ { "sType": "title-string", "aTargets": [ "title-string" ] }
+ ]
+ }));
+ });
+ </script>
+[% END %]
[% INCLUDE 'intranet-bottom.inc' %]