From e9b61af95b20ba44132aa7d930b17e3f8051be3f Mon Sep 17 00:00:00 2001 From: Bill Erickson Date: Wed, 29 Oct 2014 17:05:39 -0400 Subject: [PATCH] Ports Marc Edit Tiles (KMIG-99,103,111) Cross-port: 2b9072c --- Open-ILS/web/opac/locale/en-US/lang.dtd | 2 + .../xul/staff_client/chrome/content/main/main.js | 38 +++++++++++++ .../xul/staff_client/chrome/content/main/menu.js | 65 ++++++++++++++++++++++ .../chrome/content/main/menu_frame_menus.xul | 4 ++ 4 files changed, 109 insertions(+) diff --git a/Open-ILS/web/opac/locale/en-US/lang.dtd b/Open-ILS/web/opac/locale/en-US/lang.dtd index ef72fec206..306f94114f 100644 --- a/Open-ILS/web/opac/locale/en-US/lang.dtd +++ b/Open-ILS/web/opac/locale/en-US/lang.dtd @@ -1155,6 +1155,8 @@ + + diff --git a/Open-ILS/xul/staff_client/chrome/content/main/main.js b/Open-ILS/xul/staff_client/chrome/content/main/main.js index 1886dec6c6..9e3ad41c6c 100644 --- a/Open-ILS/xul/staff_client/chrome/content/main/main.js +++ b/Open-ILS/xul/staff_client/chrome/content/main/main.js @@ -819,5 +819,43 @@ function auto_login(loginInfo) { } return should_test_server; } + +function tileWindows(urlList, isVertical, winCount, winIndex, aContinue) { + if(aContinue == true && tempWindow.closed == false) { + //check if window finished openning + if(tempWindow.g == undefined || tempWindow.g.menu == undefined) { + setTimeout( + function() { + tileWindows(urlList, isVertical, winCount, winIndex, true); + }, 500); + return null; + } + tempWindow = null; + } + var scrWidth = window.screen.width; + var scrHeight = window.screen.height; + var placement = ''; + if (urlList.length > 0) { + var url = urlList.shift(); + //stack windows vertically or horizontally + if (isVertical) { + var winWidth = scrWidth / winCount; + placement = 'screenX=' + winWidth * (winIndex) + ',width=' + winWidth+ ',height=' + scrHeight; + } else { + var winHeight = scrHeight / winCount; + placement = 'screenY=' + winHeight * (winIndex) + ',width=' + scrWidth+ ',height=' + winHeight + } + tempWindow = xulG.window.open(urls.XUL_MENU_FRAME + + '?server=' + window.escape(G.data.server) + '&firstURL=' + window.escape(url), + '_blank','chrome,resizable,sizemode="normal",' + placement); + tempWindow.xulG = xulG; + winIndex++; + setTimeout( + function() { + tileWindows(urlList, isVertical, winCount, winIndex, true); + }, 500); + + } +} dump('exiting main/main.js\n'); diff --git a/Open-ILS/xul/staff_client/chrome/content/main/menu.js b/Open-ILS/xul/staff_client/chrome/content/main/menu.js index 26034babed..54248c885f 100644 --- a/Open-ILS/xul/staff_client/chrome/content/main/menu.js +++ b/Open-ILS/xul/staff_client/chrome/content/main/menu.js @@ -275,6 +275,35 @@ main.menu.prototype = { ['oncommand'], function() { obj.close_all_tabs(); } ], + + 'cmd_open_record_windows_horizontal' : [ + ['oncommand'], + function(event) { + var bibURLs = obj.get_opac_record_urls(); + if(bibURLs && bibURLs.length > 0) + { + var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]. + getService(Components.interfaces.nsIWindowMediator); + wm.getMostRecentWindow('eg_main').tileWindows(bibURLs, false, bibURLs.length, 0, false); + } else { + alert("No Records to Display"); + } + } + ], + 'cmd_open_record_windows_vertical' : [ + ['oncommand'], + function(event) { + var bibURLs = obj.get_opac_record_urls(); + if(bibURLs && bibURLs.length > 0) + { + var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]. + getService(Components.interfaces.nsIWindowMediator); + wm.getMostRecentWindow('eg_main').tileWindows(bibURLs, true, bibURLs.length, 0, false); + } else { + alert("No Records to Display"); + } + } + ], /* Edit Menu */ 'cmd_edit_copy_buckets' : [ @@ -2969,6 +2998,42 @@ commands: } catch(E) { alert('Error in menu.js, render_toolbar_layout('+layout+'): ' + E); } + }, + + 'get_opac_record_urls' : function() { + var bibURLs = []; + var panelCount = this.controller.view.panels.childNodes.length; + for (var i = 1; i < panelCount; i++) { + var panel = this.controller.view.panels.childNodes[ i ]; + if (panel + && panel.firstChild + && panel.firstChild.nodeName == 'iframe' + && panel.firstChild.contentWindow + ) + { + var cw = panel.firstChild.contentWindow; + var iframes = cw.document.getElementsByTagName('iframe'); + + if(iframes.length > 0) + { + for (var y = 0; y < iframes.length; y++) { + if(iframes[y].getAttribute('src').match(/^[https|chrome|oils].*/) + && iframes[y].contentDocument + && iframes[y].contentDocument.getElementsByTagName('browser')[0] + && iframes[y].contentDocument.getElementsByTagName('browser')[0].contentWindow + && iframes[y].contentDocument.getElementsByTagName('browser')[0].contentWindow.location) + { + var opac_url = iframes[y].contentDocument.getElementsByTagName('browser')[0].contentWindow.location; + opac_url = opac_url.toString(); + if (opac_url.match(/eg\/opac\/record\/\d+/) || opac_url.match(/\/skin\/default\/xml\/rdetail.xml\?r=\d+/)) { + bibURLs.push(urls.XUL_OPAC_WRAPPER + '?opac_url=' + window.escape( opac_url ) + '&show_nav_buttons=false,&default_view=marc_edit'); + } + } + } + } + } + } + return bibURLs; } } diff --git a/Open-ILS/xul/staff_client/chrome/content/main/menu_frame_menus.xul b/Open-ILS/xul/staff_client/chrome/content/main/menu_frame_menus.xul index b7f3eef6fb..9fe3ded47c 100644 --- a/Open-ILS/xul/staff_client/chrome/content/main/menu_frame_menus.xul +++ b/Open-ILS/xul/staff_client/chrome/content/main/menu_frame_menus.xul @@ -15,6 +15,8 @@ + + @@ -378,6 +380,8 @@ + + -- 2.11.0