From: Jason Etheridge Date: Thu, 22 Mar 2012 04:12:34 +0000 (-0400) Subject: utility functions for Javascript Shell X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=0e06c711fe06322a44f8a019d63027c92201463a;p=contrib%2FConifer.git utility functions for Javascript Shell win_list() returns an array of "eg_main" chrome windows get_tab() takes two forms: get_tab(chrome_window,tab_index) get_tab(tab_index) The latter invocation assumes the first chrome window returned by win_list(). get_tab returns an object with the keys 'name' and 'content', pointing to the tab label and the tab panel -> iframe -> contentWindow, respectively. So let's say you had a patron account open in tab 1, and the Javascript Shell open in tab 2. In the shell, you could do: var o = get_tab(1); o.name might contain something like 1 Patron: Circulator, Ima and you could do this to refresh that interface: o.content.g.patron.refresh_all() Signed-off-by: Jason Etheridge Signed-off-by: Thomas Berezansky --- diff --git a/Open-ILS/xul/staff_client/chrome/content/util/shell.js b/Open-ILS/xul/staff_client/chrome/content/util/shell.js index eadc2285de..7dda6e380a 100644 --- a/Open-ILS/xul/staff_client/chrome/content/util/shell.js +++ b/Open-ILS/xul/staff_client/chrome/content/util/shell.js @@ -9,6 +9,38 @@ _out, tooManyMatches = null, lastError = null; +function win_list() { + var list = []; + netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); + var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]. + getService(Components.interfaces.nsIWindowMediator); + var enumerator = wm.getEnumerator('eg_menu'); + while(enumerator.hasMoreElements()) { + targetwindow = enumerator.getNext(); + list.push(targetwindow); + } + return list; +} + +function get_tab(a,b) { + + var win; + var idx; + + if (typeof b == 'undefined') { + idx = a; + win = win_list()[0]; + } else { + win = a; + idx = b; + } + + netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); + var tabs = win.document.getElementById('main_tabs'); + var panels = win.document.getElementById('main_panels'); + return { 'name' : tabs.childNodes[idx].getAttribute('label'), 'content' : panels.childNodes[idx].firstChild.contentWindow }; +} + function refocus() { _in.blur(); // Needed for Mozilla to scroll correctly.