3 <title>Printable Pull List</title>
4 <style type="text/css">
5 @import url('/js/dojo/dojo/resources/dojo.css');
6 @import url('/js/dojo/dijit/themes/tundra/tundra.css');
7 @import url('/js/dojo/dojox/widget/Toaster/Toaster.css');
8 @import url('/opac/skin/default/css/layout.css');
10 <style type="text/css">
14 margin: 0px 0px 0px 0px;
15 padding: 0px 0px 0px 0px;
18 body { font-size: 14pt; }
22 border-bottom: 1px #999 dashed;
25 text-align: left; font-weight: bold;
26 border-bottom: 1px #000 solid;
27 border-right: 1px #000 solid;
31 <!-- The OpenSRF API writ JS -->
32 <script language='javascript' src='/opac/common/js/utils.js' type='text/javascript'></script>
33 <script language='javascript' src='/opac/common/js/Cookies.js' type='text/javascript'></script>
34 <script language='javascript' src='/opac/common/js/CGI.js' type='text/javascript'></script>
35 <script language='javascript' src='/opac/common/js/JSON_v1.js' type='text/javascript'></script>
36 <!-- Dojo goodness -->
37 <script type="text/javascript">
38 var djConfig = {parseOnLoad:true,isDebug:false,AutoIDL:['aou','aout','pgt','ahr','acp','acn']};
39 var sort_order = ["acplo.position", "call_number", "request_time"];
41 <script type="text/javascript" src="/js/dojo/dojo/dojo.js"></script>
42 <script type="text/javascript" src="/js/dojo/dojo/openils_dojo.js"></script>
43 <script type="text/javascript" src="/js/dojo/dijit/dijit.js"></script>
44 <script type="text/javascript" src="/js/dojo/openils/AutoIDL.js"></script>
45 <script type="text/javascript" src="/js/dojo/openils/User.js"></script>
46 <script type="text/javascript" src="/js/dojo/openils/Util.js"></script>
47 <script type="text/javascript">
48 dojo.require("dojo.cookie");
49 dojo.require("dojox.xml.parser");
50 dojo.require("openils.BibTemplate");
51 dojo.require("openils.widget.ProgressDialog");
53 function do_pull_list(user, cgi) {
54 progress_dialog.show(true);
58 fieldmapper.standardRequest(
59 ['open-ils.circ','open-ils.circ.hold_pull_list.print.stream'],
63 { org_id : cgi.param('o'),
64 limit : cgi.param('limit'),
65 offset : cgi.param('offset'),
66 chunk_size : cgi.param('chunk_size'),
70 onresponse : function (r) {
72 dojo.forEach( openils.Util.readResponse(r), function (hold_fm) {
75 var hold = hold_fm.toHash(true);
76 hold.usr = hold_fm.usr().toHash(true);
77 hold.usr.card = hold_fm.usr().card().toHash(true);
78 hold.current_copy = hold_fm.current_copy().toHash(true);
79 hold.current_copy.location = hold_fm.current_copy().location().toHash(true);
80 hold.current_copy.call_number = hold_fm.current_copy().call_number().toHash(true);
81 hold.current_copy.call_number.record = hold_fm.current_copy().call_number().record().toHash(true);
83 // clone the template's html
85 dojo.query("tr", dojo.byId('template'))[0]
87 dojo.query("td:not([type])", tr).forEach(
90 dojo.string.substitute(td.innerHTML, hold);
94 new openils.BibTemplate({
96 xml : dojox.xml.parser.parse(hold.current_copy.call_number.record.marc),
100 dojo.place(tr, "target");
103 oncomplete : function () {
104 progress_dialog.hide();
108 alert(dojo.byId("no_results").innerHTML);
114 function do_shelf_expired_holds(user, cgi) {
115 progress_dialog.show(true);
118 fieldmapper.standardRequest(
120 "open-ils.circ.captured_holds.expired.print.stream"], {
124 "org_id": cgi.param("o"),
125 "limit": cgi.param("limit"),
126 "offset": cgi.param("offset"),
127 "chunk_size": cgi.param("chunk_size"),
131 "onresponse": function(r) {
133 openils.Util.readResponse(r),
134 function(hold_fields) {
136 /* munge this object to make it look like
137 the template expects */
141 "barcode": hold_fields.barcode,
143 "label": hold_fields.label,
144 "record": {"marc": hold_fields.marc}
146 "location": {"name": hold_fields.name}
149 if (hold_fields.alias) {
150 hold.usr.display_name = hold_fields.alias;
152 hold.usr.display_name = [
153 (hold_fields.family_name ? hold_fields.family_name : ""),
154 (hold_fields.first_given_name ? hold_fields.first_given_name : ""),
155 (hold_fields.second_given_name ? hold_fields.second_given_name : "")
158 ["first_given_name","second_given_name","family_name","alias"].forEach(function(k) {hold.usr[k] = hold_fields[k]; });
160 // clone the template's html
162 dojo.query("tr", dojo.byId('template'))[0]
164 dojo.query("td:not([type])", tr).forEach(
167 dojo.string.substitute(td.innerHTML, hold);
171 new openils.BibTemplate({
173 "xml": dojox.xml.parser.parse(hold.current_copy.call_number.record.marc),
177 dojo.place(tr, "target");
181 "oncomplete": function() {
182 progress_dialog.hide();
186 alert(dojo.byId("no_results").innerHTML);
194 var ses = (typeof ses == "function" ? ses() : 0) ||
195 cgi.param("ses") || dojo.cookie("ses");
196 var user = new openils.User({"authtoken": ses});
198 if (cgi.param("do") == "shelf_expired_holds") {
199 do_shelf_expired_holds(user, cgi);
201 dojo.query("[only='shelf_expired_holds']").forEach(dojo.destroy);
202 do_pull_list(user, cgi);
205 dojo.addOnLoad(my_init);
208 <body class='tundra'>
210 <div dojoType="openils.widget.ProgressDialog" jsId="progress_dialog"></div>
211 <div class="hide_me" id="no_results">No results</div>
212 <!-- START OF TEMPLATE SECTION -->
219 <th>Shelving Location</th>
222 <th only="shelf_expired_holds">Patron</th>
225 <tbody id='template' class='hide_me'>
227 <td type='opac/slot-data' query='datafield[tag=245]'></td>
228 <td type='opac/slot-data' query='datafield[tag^=1]' limit='1'> </td>
229 <td>${current_copy.location.name}</td>
230 <td>${current_copy.call_number.label}</td>
231 <td>${current_copy.barcode}</td>
232 <td only="shelf_expired_holds">${usr.display_name}</td>
237 <!-- END OF TEMPLATE SECTION -->