From 1a0a373a6f8da16bfc22b0503fdf6c1f0453469c Mon Sep 17 00:00:00 2001 From: Bill Erickson Date: Fri, 17 Aug 2012 17:15:25 -0400 Subject: [PATCH 1/1] ACQ return-to-[search/invoice] buttons repair With changes in place to support newer version of xulrunner, several buttons no longer work in the staff client. These include: Return to Search in PO and Selection List pages Return to Invoice in PO and Selection List pages Return in lineitem worksheet page This fix avoids using document.referrer (which is no longer available) with an explicit 'source' CGI parameter, which contains the path and params of the source page. Signed-off-by: Bill Erickson Signed-off-by: Lebbeous Fogle-Weekley --- .../src/templates/acq/lineitem/worksheet.tt2 | 7 +++--- Open-ILS/src/templates/acq/po/view.tt2 | 6 ++--- Open-ILS/web/js/dojo/openils/acq/Lineitem.js | 1 + Open-ILS/web/js/dojo/openils/acq/nls/acq.js | 2 +- .../web/js/ui/default/acq/common/li_table.js | 24 ++++++++++++++----- .../web/js/ui/default/acq/picklist/view.js | 14 ++++++----- Open-ILS/web/js/ui/default/acq/po/view_po.js | 16 +++++++------ 7 files changed, 43 insertions(+), 27 deletions(-) diff --git a/Open-ILS/src/templates/acq/lineitem/worksheet.tt2 b/Open-ILS/src/templates/acq/lineitem/worksheet.tt2 index 8b95e03e10..8fdf885b1a 100644 --- a/Open-ILS/src/templates/acq/lineitem/worksheet.tt2 +++ b/Open-ILS/src/templates/acq/lineitem/worksheet.tt2 @@ -3,9 +3,10 @@

Lineitem Worksheet

↖ Return
diff --git a/Open-ILS/src/templates/acq/po/view.tt2 b/Open-ILS/src/templates/acq/po/view.tt2 index 2084e10dad..afa2edc178 100644 --- a/Open-ILS/src/templates/acq/po/view.tt2 +++ b/Open-ILS/src/templates/acq/po/view.tt2 @@ -106,9 +106,6 @@ - - [% l('Allow activation with
zero-copy lineitems') %] - - + [% l('Allow activation with
zero-copy lineitems') %] + diff --git a/Open-ILS/web/js/dojo/openils/acq/Lineitem.js b/Open-ILS/web/js/dojo/openils/acq/Lineitem.js index ec28214d89..ee69ef71b4 100644 --- a/Open-ILS/web/js/dojo/openils/acq/Lineitem.js +++ b/Open-ILS/web/js/dojo/openils/acq/Lineitem.js @@ -181,6 +181,7 @@ openils.acq.Lineitem.fetchAndRender = function(liId, args, callback) { liLink, (po) ? 'foo' : '', // forces class='hiddenfoo' i.e. not hidden (pl) ? 'foo' : '', // ditto + encodeURIComponent(location.pathname + location.search) ], function(str) { // prevent long titles from filling up the page diff --git a/Open-ILS/web/js/dojo/openils/acq/nls/acq.js b/Open-ILS/web/js/dojo/openils/acq/nls/acq.js index 26a0452463..f323a0ef34 100644 --- a/Open-ILS/web/js/dojo/openils/acq/nls/acq.js +++ b/Open-ILS/web/js/dojo/openils/acq/nls/acq.js @@ -62,7 +62,7 @@ "INVOICE_ITEM_DETAILS" : "${0}
${1}
${2}.
Estimated Price: $${3}.
Lineitem ID: ${4}
PO: ${5}
Order Date: ${6}", "INVOICE_CONFIRM_ITEM_DELETE" : "Remove this $${0} '${1}' charge from the invoice?", "INVOICE_CONFIRM_ENTRY_DETACH" : "Remove $${0} charge for item '${1}, ${2} [${3}] from the invoice?", - "LINEITEM_SUMMARY" : "
${0}, by ${1} (${2})
\n
\n${3} Ordered, ${4} Received, ${7} Invoiced, ${8} Claimed, ${9} Cancelled
\n
Estimated $${6}, Encumbered $${16}, Paid $${17}
\n", + "LINEITEM_SUMMARY" : "
${0}, by ${1} (${2})
\n
\n${3} Ordered, ${4} Received, ${7} Invoiced, ${8} Claimed, ${9} Cancelled
\n
Estimated $${6}, Encumbered $${16}, Paid $${17}
\n", "INVOICE_CONFIRM_PRORATE" : "Prorate charges?\n\nAny subsequent changes to the invoice that would affect prorated amounts should be resolved manually.", "INVOICE_EXTRA_COPIES" : "You are attempting to invoice ${0} more copies than originally ordered.

To add these items to the original order, select a fund and choose 'Add New Items' below.
After saving the invoice, you may finish editing and importing the new copies from the lineitem details page.", "INVOICE_ITEM_PO_DETAILS" : "${0}
PO #${3} ${4}
Total Estimated Cost: $${5}", diff --git a/Open-ILS/web/js/ui/default/acq/common/li_table.js b/Open-ILS/web/js/ui/default/acq/common/li_table.js index aba6da960c..0ed491e863 100644 --- a/Open-ILS/web/js/ui/default/acq/common/li_table.js +++ b/Open-ILS/web/js/ui/default/acq/common/li_table.js @@ -423,10 +423,12 @@ function AcqLiTable() { } nodeByName("worksheet_link", row).href = - oilsBasePath + "/acq/lineitem/worksheet/" + li.id(); + oilsBasePath + "/acq/lineitem/worksheet/" + li.id() + + '?source=' + encodeURIComponent(location.pathname + location.search) nodeByName("show_requests_link", row).href = - oilsBasePath + "/acq/picklist/user_request?lineitem=" + li.id(); + oilsBasePath + "/acq/picklist/user_request?lineitem=" + li.id() + + '?source=' + encodeURIComponent(location.pathname + location.search) dojo.query('[attr=title]', row)[0].onclick = function() {self.drawInfo(li.id())}; dojo.query('[name=copieslink]', row)[0].onclick = function() {self.drawCopies(li.id())}; @@ -459,7 +461,11 @@ function AcqLiTable() { if(po && !this.isMeta) { openils.Util.show(nodeByName('po', row), 'inline'); var link = nodeByName('po_link', row); - link.setAttribute('href', oilsBasePath + '/acq/po/view/' + li.purchase_order() + '?focus_li=' + li.id()); + link.setAttribute('href', oilsBasePath + + '/acq/po/view/' + li.purchase_order() + + '?focus_li=' + li.id() + + '&source=' + encodeURIComponent(location.pathname + location.search) + ); link.innerHTML += po.name(); openils.Util.show(nodeByName('pro', row), 'inline'); @@ -485,7 +491,11 @@ function AcqLiTable() { openils.Util.show(nodeByName('pl', row), 'inline'); var link = nodeByName('pl_link', row); - link.setAttribute('href', oilsBasePath + '/acq/picklist/view/' + li.picklist() + '?focus_li=' + li.id()); + link.setAttribute('href', oilsBasePath + + '/acq/picklist/view/' + li.picklist() + + '?focus_li=' + li.id() + + '&source=' + encodeURIComponent(location.pathname + location.search) + ); link.innerHTML += pl.name(); } } @@ -1121,9 +1131,11 @@ function AcqLiTable() { if (typeof force_fetch == "undefined") force_fetch = false; - if (document.referrer.match(/invoice/)) { + var cgi = new openils.CGI(); + var source = cgi.param('source'); + if (source && source.match(/invoice/)) { // got here from the invoice page, show the 'return-to-invoice' button - var cgi = new openils.CGI({url : document.referrer}); + var cgi = new openils.CGI({url : source}); cgi.param('focus_li', liId); openils.Util.show(dojo.byId('acq-lit-copies-back-to-invoice-button-wrapper'), 'inline'); var button = dojo.byId('acq-lit-copies-back-to-invoice-button'); diff --git a/Open-ILS/web/js/ui/default/acq/picklist/view.js b/Open-ILS/web/js/ui/default/acq/picklist/view.js index c125dafef7..818fb6e21f 100644 --- a/Open-ILS/web/js/ui/default/acq/picklist/view.js +++ b/Open-ILS/web/js/ui/default/acq/picklist/view.js @@ -29,15 +29,17 @@ function load() { /* if we got here from the search/invoice page with a focused LI, * return to the previous page with the same LI focused */ var cgi = new openils.CGI(); - if (cgi.param('focus_li')) { + var source = cgi.param('source'); + var focus_li = cgi.param('focus_li'); + if (source && focus_li) { dojo.forEach( ['search', 'invoice'], // perhaps a wee bit too loose - function(source) { - if (document.referrer.match(new RegExp(source))) { - openils.Util.show('acq-pl-return-to-' + source); - var newCgi = new openils.CGI({url : document.referrer}); + function(srcType) { + if (source.match(new RegExp(srcType))) { + openils.Util.show('acq-pl-return-to-' + srcType); + var newCgi = new openils.CGI({url : source}); newCgi.param('focus_li', cgi.param('focus_li')); - dojo.byId('acq-pl-return-to-' + source + '-button').onclick = function() { + dojo.byId('acq-pl-return-to-' + srcType + '-button').onclick = function() { location.href = newCgi.url(); } } diff --git a/Open-ILS/web/js/ui/default/acq/po/view_po.js b/Open-ILS/web/js/ui/default/acq/po/view_po.js index f3cf4df473..4c2a7e712f 100644 --- a/Open-ILS/web/js/ui/default/acq/po/view_po.js +++ b/Open-ILS/web/js/ui/default/acq/po/view_po.js @@ -358,15 +358,17 @@ function renderPo() { /* if we got here from the search/invoice page with a focused LI, * return to the previous page with the same LI focused */ var cgi = new openils.CGI(); - if (cgi.param('focus_li')) { + var source = cgi.param('source'); + var focus_li = cgi.param('focus_li'); + if (focus_li && source) { dojo.forEach( ['search', 'invoice'], // perhaps a wee bit too loose - function(source) { - if (document.referrer.match(new RegExp(source))) { - openils.Util.show('acq-po-return-to-' + source); - var newCgi = new openils.CGI({url : document.referrer}); - newCgi.param('focus_li', cgi.param('focus_li')); - dojo.byId('acq-po-return-to-' + source + '-button').onclick = function() { + function(srcType) { + if (source.match(new RegExp(srcType))) { + openils.Util.show('acq-po-return-to-' + srcType); + var newCgi = new openils.CGI({url : source}); + newCgi.param('focus_li', focus_li); + dojo.byId('acq-po-return-to-' + srcType + '-button').onclick = function() { location.href = newCgi.url(); } } -- 2.43.2