[open-ils-commits] r18431 - in trunk/Open-ILS/xul/staff_client: chrome/content/main chrome/content/util defaults/preferences (phasefx)

svn at svn.open-ils.org svn at svn.open-ils.org
Wed Oct 20 17:10:57 EDT 2010


Author: phasefx
Date: 2010-10-20 17:10:51 -0400 (Wed, 20 Oct 2010)
New Revision: 18431

Modified:
   trunk/Open-ILS/xul/staff_client/chrome/content/main/menu.js
   trunk/Open-ILS/xul/staff_client/chrome/content/util/controller.js
   trunk/Open-ILS/xul/staff_client/defaults/preferences/prefs.js
Log:
Patch from tsbere for new tab versus current tab behavior with the button bar:
---
The attached patch to trunk adds the ability to set an open-ils.toolbar.defaultnewtab preference to cause the toolbar buttons to open in a new tab instead of the current tab. Holding the "accel" key (default of ctrl on windows/linux and command on mac) will do the opposite.

I only applied this to the five commands currently in use on the toolbar for now. Any other commands added to the toolbar will need to have their command handlers in menu.js updated.

Thomas Berezansky
Merrimack Valley Library Consortium


Modified: trunk/Open-ILS/xul/staff_client/chrome/content/main/menu.js
===================================================================
--- trunk/Open-ILS/xul/staff_client/chrome/content/main/menu.js	2010-10-20 20:45:32 UTC (rev 18430)
+++ trunk/Open-ILS/xul/staff_client/chrome/content/main/menu.js	2010-10-20 21:10:51 UTC (rev 18431)
@@ -261,8 +261,8 @@
             /* Search Menu */
             'cmd_patron_search' : [
                 ['oncommand'],
-                function() {
-                    obj.set_patron_tab();
+                function(event) {
+                    obj.set_patron_tab({},{},event);
                 }
             ],
             'cmd_search_opac' : [
@@ -345,16 +345,16 @@
             ],
             'cmd_copy_status' : [
                 ['oncommand'],
-                function() {
+                function(event) {
                     obj.data.stash_retrieve();
-                    obj.set_tab(obj.url_prefix(urls.XUL_COPY_STATUS),{},{});
+                    obj.command_tab(event,obj.url_prefix(urls.XUL_COPY_STATUS),{},{});
                 }
             ],
 
             /* Circulation Menu */
             'cmd_patron_register' : [
                 ['oncommand'],
-                function() {
+                function(event) {
 
                     function log_registration(p) {
                         try {
@@ -403,7 +403,8 @@
                     obj.data.stash_retrieve();
                     var loc = obj.url_prefix( urls.XUL_BROWSER ) 
                         + '?url=' + window.escape( obj.url_prefix(urls.XUL_PATRON_EDIT) );
-                    obj.set_tab(
+                    obj.command_tab(
+                        event,
                         loc, 
                         {}, 
                         { 
@@ -428,9 +429,9 @@
             ],
             'cmd_circ_checkin' : [
                 ['oncommand'],
-                function() { 
+                function(event) { 
                     obj.data.stash_retrieve();
-                    obj.set_tab(obj.url_prefix(urls.XUL_CHECKIN),{},{});
+                    obj.command_tab(event,obj.url_prefix(urls.XUL_CHECKIN),{},{});
                 }
             ],
             'cmd_circ_renew' : [
@@ -442,9 +443,9 @@
             ],
             'cmd_circ_checkout' : [
                 ['oncommand'],
-                function() { 
+                function(event) { 
                     obj.data.stash_retrieve();
-                    obj.set_tab(obj.url_prefix(urls.XUL_PATRON_BARCODE_ENTRY),{},{});
+                    obj.command_tab(event,obj.url_prefix(urls.XUL_PATRON_BARCODE_ENTRY),{},{});
                 }
             ],
             'cmd_circ_hold_capture' : [
@@ -1351,6 +1352,37 @@
         }
     },
 
+    'command_tab' : function(event,url,params,content_params) {
+        var newTab = false;
+        if(event && event.explicitOriginalTarget.nodeName == 'toolbarbutton' && event.explicitOriginalTarget.command == event.originalTarget.id) {
+            var value = xulG.pref.getIntPref('ui.key.accelKey');
+            switch(value) {
+                case 17:
+                    newTab = event.ctrlKey;
+                    break;
+                case 18:
+                    newTab = event.altKey;
+                    break;
+                case 224:
+                    newTab = event.metaKey;
+                    break;
+            }
+            try {
+                if(xulG.pref.getBoolPref('open-ils.toolbar.defaultnewtab')) {
+                    newTab = !newTab;
+                }
+            }
+            catch (e) {
+            }
+        }
+        if(newTab) {
+            this.new_tab(url,params,content_params);
+        }
+        else {
+            this.set_tab(url,params,content_params);
+        }
+    },
+
     'new_tab' : function(url,params,content_params) {
         var obj = this;
         var max_tabs = 0;
@@ -1489,11 +1521,11 @@
             }
         }
     },
-    'set_patron_tab' : function(params,content_params) {
+    'set_patron_tab' : function(params,content_params,event) {
         var obj = this;
         var horizontal_interface = String( obj.data.hash.aous['ui.circ.patron_summary.horizontal'] ) == 'true';
         var url = obj.url_prefix( horizontal_interface ? urls.XUL_PATRON_HORIZ_DISPLAY : urls.XUL_PATRON_DISPLAY );
-        obj.set_tab(url,params ? params : {},content_params ? content_params : {});
+        obj.command_tab(event,url,params ? params : {},content_params ? content_params : {});
     },
     'new_patron_tab' : function(params,content_params) {
         var obj = this;

Modified: trunk/Open-ILS/xul/staff_client/chrome/content/util/controller.js
===================================================================
--- trunk/Open-ILS/xul/staff_client/chrome/content/util/controller.js	2010-10-20 20:45:32 UTC (rev 18430)
+++ trunk/Open-ILS/xul/staff_client/chrome/content/util/controller.js	2010-10-20 21:10:51 UTC (rev 18431)
@@ -34,7 +34,7 @@
                             case 'oncommand':
                                 if (!this.window_knows_me_by) 
                                     throw('util.controller: on_command requires window_knows_me_by');
-                                var s = 'try{'+this.window_knows_me_by+".cmds."+i+"();}catch(E){alert(E);}";
+                                var s = 'try{'+this.window_knows_me_by+".cmds."+i+"(event);}catch(E){alert(E);}";
                                 cmd.setAttribute(ev_type, s);
                                 this.cmds[i] = this.control_map[i][1];
                             break;

Modified: trunk/Open-ILS/xul/staff_client/defaults/preferences/prefs.js
===================================================================
--- trunk/Open-ILS/xul/staff_client/defaults/preferences/prefs.js	2010-10-20 20:45:32 UTC (rev 18430)
+++ trunk/Open-ILS/xul/staff_client/defaults/preferences/prefs.js	2010-10-20 21:10:51 UTC (rev 18431)
@@ -17,4 +17,4 @@
 pref("open-ils.repository.date","$Date$");
 pref("open-ils.repository.id","$Id$");
 
-
+pref("open-ils.toolbar.defaultnewtab", false);



More information about the open-ils-commits mailing list