]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Open-ILS/web/js/dojo/openils/XUL.js
added newTab function (wrapper) for opening a xul tab
[working/Evergreen.git] / Open-ILS / web / js / dojo / openils / XUL.js
1 if(!dojo._hasResource["openils.XUL"]) {
2
3     dojo.provide("openils.XUL");
4     dojo.require('dojo.cookie');
5     dojo.declare('openils.XUL', null, {});
6
7     openils.XUL.isXUL = function() {
8         return Boolean(dojo.cookie('xul')) || Boolean(window.IAMXUL);
9     }
10
11     openils.XUL.buildId = function() {
12         return window.XUL_BUILD_ID || '';
13     }
14     
15     openils.XUL.getStash = function() {
16         if(openils.XUL.isXUL()) {
17             try {
18                 if(openils.XUL.enableXPConnect()) {
19                                 var CacheClass = new Components.Constructor("@mozilla.org/openils_data_cache;1", "nsIOpenILS");
20                                 return new CacheClass().wrappedJSObject.OpenILS.prototype.data;
21                 }
22             } catch(e) {
23                 console.log("Error loading XUL stash: " + e);
24             }
25         }
26
27         return {};
28     }
29
30     openils.XUL.newTab = function(path, tabInfo, options) {
31         if(xulG == undefined) 
32             throw new Error('xulG is not defined.  Cannot open tab');
33         xulG.new_tab(path, tabInfo, options);
34     }
35
36     /** 
37      * This can be used by privileged Firefox in addition to XUL.
38      * To use use in Firefox directly, set signed.applets.codebase_principal_support to true in about:config
39      */ 
40     openils.XUL.enableXPConnect = function() {
41         try {
42             netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
43         } catch (E) {
44             if(dojo.isFF) {
45                 console.error("Unable to enable UniversalXPConnect privileges.  " +
46                     "Try setting 'signed.applets.codebase_principal_support' to true in about:config");
47             }
48             return false;
49         }
50         return true;
51     }
52 }
53
54