From 8eb53de49b7872f057cecb4ea607a1fc6e0947f3 Mon Sep 17 00:00:00 2001 From: Jason Etheridge Date: Mon, 13 Jun 2011 15:51:18 -0400 Subject: [PATCH] add Print button and associated template for Holdings Maintenance wire up List Actions for Holdings Maintenance * give List Actions support for nested rows in trees * give util.list.print support for nested rows in trees * we can leverage bib_brief_overlay to populate params.data for printing instead of fleshing out DOM Signed-off-by: Jason Etheridge Signed-off-by: Bill Erickson --- Open-ILS/web/opac/locale/en-US/lang.dtd | 2 + .../chrome/content/OpenILS/data.js | 6 ++ .../staff_client/chrome/content/util/list.js | 83 ++++++++++++------- .../server/cat/bib_brief_overlay.js | 10 ++- .../staff_client/server/cat/copy_browser.js | 21 +++++ .../staff_client/server/cat/copy_browser.xul | 10 +++ 6 files changed, 103 insertions(+), 29 deletions(-) diff --git a/Open-ILS/web/opac/locale/en-US/lang.dtd b/Open-ILS/web/opac/locale/en-US/lang.dtd index 6b90ecd95c..404302432f 100644 --- a/Open-ILS/web/opac/locale/en-US/lang.dtd +++ b/Open-ILS/web/opac/locale/en-US/lang.dtd @@ -2618,6 +2618,8 @@ + + diff --git a/Open-ILS/xul/staff_client/chrome/content/OpenILS/data.js b/Open-ILS/xul/staff_client/chrome/content/OpenILS/data.js index 6b4894df4b..0d59bbc031 100644 --- a/Open-ILS/xul/staff_client/chrome/content/OpenILS/data.js +++ b/Open-ILS/xul/staff_client/chrome/content/OpenILS/data.js @@ -438,6 +438,12 @@ OpenILS.data.prototype = { 'header' : 'This item needs to be routed to %route_to%:
\r\n%route_to_org_fullname%
\r\n%street1%
\r\n%street2%
\r\n%city_state_zip%
\r\n
\r\nBarcode: %item_barcode%
\r\nTitle: %item_title%
\r\nAuthor: %item_author%
\r\n
\r\n%hold_for_msg%
\r\nBarcode: %PATRON_BARCODE%
\r\nNotify by phone: %notify_by_phone%
\r\nNotify by email: %notify_by_email%
\r\n', 'line_item' : '%formatted_note%
\r\n', 'footer' : '
\r\nRequest date: %request_date%
\r\nSlip Date: %TODAY_TRIM%
\r\nPrinted by %STAFF_FIRSTNAME% at %SHORTNAME%
\r\n
\r\n' + }, + 'holdings_maintenance' : { + 'type' : 'items', + 'header' : 'Title: %title%
\r\nAuthor: %author%
\r\nISBN: %isbn% Edition: %edition% PubDate: %pubdate%
\r\nTCN: %tcn_value% Record ID: %mvr_doc_id%
\r\nCreator: %creator% Create Date: %create_date%
\r\nEditor: %editor% Edit Date: %edit_date%
\r\n', + 'line_item' : '%prefix% %tree_location% %suffix% %parts% %acp_status%
\r\n', + 'footer' : '
%SHORTNAME% %TODAY_TRIM%
\r\n
\r\n' } }; diff --git a/Open-ILS/xul/staff_client/chrome/content/util/list.js b/Open-ILS/xul/staff_client/chrome/content/util/list.js index a125c4d79c..d0b0f262fe 100644 --- a/Open-ILS/xul/staff_client/chrome/content/util/list.js +++ b/Open-ILS/xul/staff_client/chrome/content/util/list.js @@ -1165,22 +1165,31 @@ util.list.prototype = { '_dump_tree_with_keys' : function(params) { var obj = this; var dump = []; - for (var i = 0; i < this.treechildren.childNodes.length; i++) { - var row = {}; - var treeitem = this.treechildren.childNodes[i]; - var treerow = treeitem.firstChild; - for (var j = 0; j < treerow.childNodes.length; j++) { - if (typeof obj.columns[j] == 'undefined') { - dump('=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\n'); - dump('_dump_tree_with_keys @ ' + location.href + '\n'); - dump('\ttreerow.childNodes.length='+treerow.childNodes.length+' j='+j+' obj.columns.length='+obj.columns.length+'\n'); - debugger; - } else { - row[ obj.columns[j].id ] = treerow.childNodes[j].getAttribute('label'); + + function process_tree(treechildren) { + for (var i = 0; i < treechildren.childNodes.length; i++) { + var row = {}; + var treeitem = treechildren.childNodes[i]; + var treerow = treeitem.firstChild; + for (var j = 0; j < treerow.childNodes.length; j++) { + if (typeof obj.columns[j] == 'undefined') { + dump('=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\n'); + dump('_dump_tree_with_keys @ ' + location.href + '\n'); + dump('\ttreerow.childNodes.length='+treerow.childNodes.length+' j='+j+' obj.columns.length='+obj.columns.length+'\n'); + debugger; + } else { + row[ obj.columns[j].id ] = treerow.childNodes[j].getAttribute('label'); + } + } + dump.push( row ); + if (treeitem.childNodes.length > 1) { + process_tree(treeitem.lastChild); } } - dump.push( row ); } + + process_tree(this.treechildren); + return dump; }, @@ -1214,16 +1223,25 @@ util.list.prototype = { _dump += '"' + obj.columns[ ord_cols[j][1] ].label.replace(/"/g, '""') + '"'; } _dump += '\r\n'; - for (var i = 0; i < this.treechildren.childNodes.length; i++) { - var row = ''; - var treeitem = this.treechildren.childNodes[i]; - var treerow = treeitem.firstChild; - for (var j = 0; j < ord_cols.length; j++) { - if (row) row += ','; - row += '"' + treerow.childNodes[ ord_cols[j][1] ].getAttribute('label').replace(/"/g, '""') + '"'; + + function process_tree(treechildren) { + for (var i = 0; i < treechildren.childNodes.length; i++) { + var row = ''; + var treeitem = treechildren.childNodes[i]; + var treerow = treeitem.firstChild; + for (var j = 0; j < ord_cols.length; j++) { + if (row) row += ','; + row += '"' + treerow.childNodes[ ord_cols[j][1] ].getAttribute('label').replace(/"/g, '""') + '"'; + } + _dump += row + '\r\n'; + if (treeitem.childNodes.length > 1) { + process_tree(treeitem.lastChild); + } } - _dump += row + '\r\n'; } + + process_tree(this.treechildren); + return _dump; }, @@ -1252,15 +1270,24 @@ util.list.prototype = { if ( Number( a[0] ) > Number( b[0] ) ) return 1; return 0; } ); - for (var i = 0; i < this.treechildren.childNodes.length; i++) { - var row = document.getElementById('offlineStrings').getString('list.dump_extended_format.record_separator') + '\r\n'; - var treeitem = this.treechildren.childNodes[i]; - var treerow = treeitem.firstChild; - for (var j = 0; j < ord_cols.length; j++) { - row += obj.columns[ ord_cols[j][1] ].label + ': ' + treerow.childNodes[ ord_cols[j][1] ].getAttribute('label') + '\r\n'; + + function process_tree(treechildren) { + for (var i = 0; i < treechildren.childNodes.length; i++) { + var row = document.getElementById('offlineStrings').getString('list.dump_extended_format.record_separator') + '\r\n'; + var treeitem = treechildren.childNodes[i]; + var treerow = treeitem.firstChild; + for (var j = 0; j < ord_cols.length; j++) { + row += obj.columns[ ord_cols[j][1] ].label + ': ' + treerow.childNodes[ ord_cols[j][1] ].getAttribute('label') + '\r\n'; + } + _dump += row + '\r\n'; + if (treeitem.childNodes.length > 1) { + process_tree(treeitem.lastChild); + } } - _dump += row + '\r\n'; } + + process_tree(this.treechildren); + return _dump; }, diff --git a/Open-ILS/xul/staff_client/server/cat/bib_brief_overlay.js b/Open-ILS/xul/staff_client/server/cat/bib_brief_overlay.js index d55ea1e08d..b7dc24a55b 100644 --- a/Open-ILS/xul/staff_client/server/cat/bib_brief_overlay.js +++ b/Open-ILS/xul/staff_client/server/cat/bib_brief_overlay.js @@ -35,7 +35,11 @@ function bib_brief_overlay(params) { } JSAN.use('util.widgets'); - function set(name,value) { + function set(name,value) { + if (params.print_data) { + params.print_data[name] = value; + return 1; + } var nodes = document.getElementsByAttribute('name',name); for (var i = 0; i < nodes.length; i++) { util.widgets.set_text( nodes[i], value ); @@ -43,6 +47,10 @@ function bib_brief_overlay(params) { return nodes.length; } function set_tooltip(name,value) { + if (params.print_data) { + params.print_data[name] = value; + return 1; + } var nodes = document.getElementsByAttribute('name',name); for (var i = 0; i < nodes.length; i++) { nodes[i].setAttribute('tooltiptext',value); diff --git a/Open-ILS/xul/staff_client/server/cat/copy_browser.js b/Open-ILS/xul/staff_client/server/cat/copy_browser.js index 2269e30de1..8d29b70da4 100644 --- a/Open-ILS/xul/staff_client/server/cat/copy_browser.js +++ b/Open-ILS/xul/staff_client/server/cat/copy_browser.js @@ -998,6 +998,24 @@ cat.copy_browser.prototype = { } obj.refresh_list(); } + ], + + 'cmd_print_tree' : [ + ['command'], + function() { + try { + var p = { + 'template' : 'holdings_maintenance', + 'mvr_id' : obj.docid, + 'print_data' : {} + }; + bib_brief_overlay(p); + p.data = p.print_data; + obj.list.print(p); + } catch(E) { + alert('Error in copy_browser.js, cmd_print_tree: ' + E); + } + } ] } } @@ -1770,6 +1788,9 @@ cat.copy_browser.prototype = { } ); + $('list_actions').appendChild( obj.list.render_list_actions() ); + obj.list.set_list_actions(); + } catch(E) { this.error.sdump('D_ERROR','cat.copy_browser.list_init: ' + E + '\n'); alert(E); diff --git a/Open-ILS/xul/staff_client/server/cat/copy_browser.xul b/Open-ILS/xul/staff_client/server/cat/copy_browser.xul index 79028aa95e..359dd1265f 100644 --- a/Open-ILS/xul/staff_client/server/cat/copy_browser.xul +++ b/Open-ILS/xul/staff_client/server/cat/copy_browser.xul @@ -34,6 +34,7 @@ vim:noet:sw=4:ts=4: