From 55d9fb24446fd979043482ba73fb8717c11a3d47 Mon Sep 17 00:00:00 2001 From: phasefx Date: Fri, 6 Aug 2010 19:45:49 +0000 Subject: [PATCH] menu.js and patron/display.js were passing xulG functions to browser.js differently. This makes browser.js a little smarter (so that it doesn't trampled xulG-destined members sent via passthru_content_params) and sidesteps some security blockers with inspecting xulG. xulG is a namespace/object for shoving foreign data and/or functions into a given window git-svn-id: svn://svn.open-ils.org/ILS/trunk@17122 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- .../chrome/content/util/browser.js | 18 ++--- .../xul/staff_client/server/patron/display.js | 75 +++++++++++-------- 2 files changed, 51 insertions(+), 42 deletions(-) diff --git a/Open-ILS/xul/staff_client/chrome/content/util/browser.js b/Open-ILS/xul/staff_client/chrome/content/util/browser.js index d55291a50c..c45652ee1c 100644 --- a/Open-ILS/xul/staff_client/chrome/content/util/browser.js +++ b/Open-ILS/xul/staff_client/chrome/content/util/browser.js @@ -159,15 +159,15 @@ util.browser.prototype = { cw.IAMXUL = true; cw.XUL_BUILD_ID = '/xul/server/'.split(/\//)[2]; cw.xulG = obj.passthru_content_params || {}; - cw.xulG.set_tab = window.xulG.set_tab; - cw.xulG.new_tab = window.xulG.new_tab; - cw.xulG.new_patron_tab = window.xulG.new_patron_tab; - cw.xulG.set_patron_tab = window.xulG.set_patron_tab; - cw.xulG.volume_item_creator = window.xulG.volume_item_creator; - cw.xulG.get_new_session = window.xulG.get_new_session; - cw.xulG.holdings_maintenance_tab = window.xulG.holdings_maintenance_tab; - cw.xulG.url_prefix = window.xulG.url_prefix; - cw.xulG.urls = window.urls; + if (!cw.xulG.set_tab) { cw.xulG.set_tab = function(a,b,c) { return window.xulG.set_tab(a,b,c); }; } + if (!cw.xulG.new_tab) { cw.xulG.new_tab = function(a,b,c) { return window.xulG.new_tab(a,b,c); }; } + if (!cw.xulG.new_patron_tab) { cw.xulG.new_patron_tab = function(a,b) { return window.xulG.new_patron_tab(a,b); }; } + if (!cw.xulG.set_patron_tab) { cw.xulG.set_patron_tab = function(a,b) { return window.xulG.set_patron_tab(a,b); }; } + if (!cw.xulG.volume_item_creator) { cw.xulG.volume_item_creator = function(a) { return window.xulG.volume_item_creator(a); }; } + if (!cw.xulG.get_new_session) { cw.xulG.get_new_session = function(a) { return window.xulG.get_new_session(a); }; } + if (!cw.xulG.holdings_maintenance_tab) { cw.xulG.holdings_maintenance_tab = function(a,b,c) { return window.xulG.holdings_maintenance_tab(a,b,c); }; } + if (!cw.xulG.url_prefix) { cw.xulG.url_prefix = function(url) { return window.xulG.url_prefix(url); }; } + if (!cw.xulG.urls) { cw.xulG.urls = window.urls; } try { s += ('******** cw = ' + cw + ' cw.xulG = ' + (cw.xulG) + '\n'); } catch(E) { s+=E + '\n'; } obj.error.sdump('D_BROWSER',s); } catch(E) { diff --git a/Open-ILS/xul/staff_client/server/patron/display.js b/Open-ILS/xul/staff_client/server/patron/display.js index 778642b04d..3aa8f41cf8 100644 --- a/Open-ILS/xul/staff_client/server/patron/display.js +++ b/Open-ILS/xul/staff_client/server/patron/display.js @@ -202,9 +202,10 @@ patron.display.prototype = { obj.summary_window.g.summary.controller.render('patron_bill'); obj.bill_window.g.bills.refresh(true); }, - 'url_prefix' : xulG.url_prefix, - 'new_tab' : xulG.new_tab, - 'new_patron_tab' : xulG.new_patron_tab + 'url_prefix' : function(url) { return xulG.url_prefix(url); }, + 'get_new_session' : function(a) { return xulG.get_new_session(a); }, + 'new_tab' : function(a,b,c) { return xulG.new_tab(a,b,c); }, + 'new_patron_tab' : function(a,b) { return xulG.new_patron_tab(a,b); } } ); netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); @@ -241,9 +242,10 @@ patron.display.prototype = { 'passthru_content_params' : { 'spawn_search' : spawn_search, 'spawn_editor' : spawn_editor, - 'url_prefix' : xulG.url_prefix, - 'new_tab' : xulG.new_tab, - 'new_patron_tab' : xulG.new_patron_tab, + 'url_prefix' : function(url) { return xulG.url_prefix(url); }, + 'get_new_session' : function(a) { return xulG.get_new_session(a); }, + 'new_tab' : function(a,b,c) { return xulG.new_tab(a,b,c); }, + 'new_patron_tab' : function(a,b) { return xulG.new_patron_tab(a,b); }, 'params' : p, 'on_save' : function(p_obj) { JSAN.use('patron.util'); @@ -283,9 +285,10 @@ patron.display.prototype = { }, 'spawn_search' : spawn_search, 'spawn_editor' : spawn_editor, - 'url_prefix' : xulG.url_prefix, - 'new_tab' : xulG.new_tab, - 'new_patron_tab' : xulG.new_patron_tab + 'url_prefix' : function(url) { return xulG.url_prefix(url); }, + 'get_new_session' : function(a) { return xulG.get_new_session(a); }, + 'new_tab' : function(a,b,c) { return xulG.new_tab(a,b,c); }, + 'new_patron_tab' : function(a,b) { return xulG.new_patron_tab(a,b); } } } ); @@ -307,9 +310,10 @@ patron.display.prototype = { {}, { 'patron_id' : obj.patron.id(), - 'url_prefix' : xulG.url_prefix, - 'new_tab' : xulG.new_tab, - 'new_patron_tab' : xulG.new_patron_tab + 'url_prefix' : function(url) { return xulG.url_prefix(url); }, + 'get_new_session' : function(a) { return xulG.get_new_session(a); }, + 'new_tab' : function(a,b,c) { return xulG.new_tab(a,b,c); }, + 'new_patron_tab' : function(a,b) { return xulG.new_patron_tab(a,b); } } ); } @@ -334,9 +338,10 @@ patron.display.prototype = { {}, { 'patron_id' : obj.patron.id(), - 'url_prefix' : xulG.url_prefix, - 'new_tab' : xulG.new_tab, - 'new_patron_tab' : xulG.new_patron_tab + 'url_prefix' : function(url) { return xulG.url_prefix(url); }, + 'get_new_session' : function(a) { return xulG.get_new_session(a); }, + 'new_tab' : function(a,b,c) { return xulG.new_tab(a,b,c); }, + 'new_patron_tab' : function(a,b) { return xulG.new_patron_tab(a,b); } } ); } @@ -349,9 +354,10 @@ patron.display.prototype = { {}, { 'patron_id' : obj.patron.id(), - 'url_prefix' : xulG.url_prefix, - 'new_tab' : xulG.new_tab, - 'new_patron_tab' : xulG.new_patron_tab + 'url_prefix' : function(url) { return xulG.url_prefix(url); }, + 'get_new_session' : function(a) { return xulG.get_new_session(a); }, + 'new_tab' : function(a,b,c) { return xulG.new_tab(a,b,c); }, + 'new_patron_tab' : function(a,b) { return xulG.new_patron_tab(a,b); } } ); } @@ -463,9 +469,10 @@ patron.display.prototype = { alert(E); } }, - 'url_prefix' : xulG.url_prefix, - 'new_tab' : xulG.new_tab, - 'new_patron_tab' : xulG.new_patron_tab + 'url_prefix' : function(url) { return xulG.url_prefix(url); }, + 'get_new_session' : function(a) { return xulG.get_new_session(a); }, + 'new_tab' : function(a,b,c) { return xulG.new_tab(a,b,c); }, + 'new_patron_tab' : function(a,b) { return xulG.new_patron_tab(a,b); } } ); } catch(E) { @@ -485,8 +492,9 @@ patron.display.prototype = { { 'display_window' : window, 'patron_id' : obj.patron.id(), - 'url_prefix' : xulG.url_prefix, - 'new_tab' : xulG.new_tab, + 'url_prefix' : function(url) { return xulG.url_prefix(url); }, + 'get_new_session' : function(a) { return xulG.get_new_session(a); }, + 'new_tab' : function(a,b,c) { return xulG.new_tab(a,b,c); }, 'on_money_change' : function(b) { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); obj.summary_window.refresh(); @@ -615,9 +623,9 @@ patron.display.prototype = { 'on_finished' : obj.gen_patron_summary_finish_func(), 'stop_sign_page' : obj.gen_patron_stop_sign_page_func(), 'spawn_group_interface' : function() { obj.spawn_group_interface(); }, - 'new_patron_tab' : xulG.new_patron_tab, - 'new_tab' : xulG.new_tab, - 'set_tab' : xulG.set_tab, + 'new_patron_tab' : function(a,b) { return xulG.new_patron_tab(a,b); }, + 'new_tab' : function(a,b,c) { return xulG.new_tab(a,b,c); }, + 'set_tab' : function(a,b,c) { return xulG.set_tab(a,b,c); }, 'on_error' : function(E) { try { var error; @@ -716,9 +724,9 @@ patron.display.prototype = { { //'id' : list[0], 'spawn_group_interface' : function() { obj.spawn_group_interface(); }, - 'new_patron_tab' : xulG.new_patron_tab, - 'new_tab' : xulG.new_tab, - 'set_tab' : xulG.set_tab, + 'new_patron_tab' : function(a,b) { return xulG.new_patron_tab(a,b); }, + 'new_tab' : function(a,b,c) { return xulG.new_tab(a,b,c); }, + 'set_tab' : function(a,b,c) { return xulG.set_tab(a,b,c); }, 'on_finished' : function(patron) { obj.patron = patron; obj.controller.render(); @@ -796,7 +804,7 @@ patron.display.prototype = { urls.XUL_CHECKOUT, {}, { - 'set_tab' : xulG.set_tab, + 'set_tab' : function(a,b,c) { return xulG.set_tab(a,b,c); }, 'patron_id' : obj.patron.id(), 'patron' : obj.patron, 'check_stop_checkouts' : function() { return obj.check_stop_checkouts(); }, @@ -961,9 +969,10 @@ patron.display.prototype = { {}, { 'patron_id' : obj.patron.id(), - 'url_prefix' : xulG.url_prefix, - 'new_tab' : xulG.new_tab, - 'new_patron_tab' : xulG.new_patron_tab + 'url_prefix' : function(url) { return xulG.url_prefix(url); }, + 'get_new_session' : function(a) { return xulG.get_new_session(a); }, + 'new_tab' : function(a,b,c) { return xulG.new_tab(a,b,c); }, + 'new_patron_tab' : function(a,b) { return xulG.new_patron_tab(a,b); } } ); } catch(E) { -- 2.43.2