Rough cut at providing the staff client as a Firefox extension.
authorphasefx <phasefx@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Sat, 23 Jan 2010 15:25:29 +0000 (15:25 +0000)
committerphasefx <phasefx@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Sat, 23 Jan 2010 15:25:29 +0000 (15:25 +0000)
If you do:    make STAFF_CLIENT_BUILD_ID=trunk extension

Then there will be a   build/evergreen.xpi

TODO: Work out how to handle automatic upgrades, etc.

git-svn-id: svn://svn.open-ils.org/ILS/trunk@15374 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/xul/staff_client/Makefile.am
Open-ILS/xul/staff_client/chrome/chrome.manifest
Open-ILS/xul/staff_client/chrome/content/auth/controller.js
Open-ILS/xul/staff_client/chrome/content/firefox/overlay.xul [new file with mode: 0644]
Open-ILS/xul/staff_client/chrome/content/main/menu.js
Open-ILS/xul/staff_client/defaults/preferences/prefs.js
Open-ILS/xul/staff_client/defaults/preferences/standalone_xul_app.js [new file with mode: 0644]
Open-ILS/xul/staff_client/install.rdf

index 9180702..491b6d8 100644 (file)
@@ -23,8 +23,15 @@ endif
 install-exec-local: $(OILSSERVER_INST)
 
 devbuild: build
+       @echo ' * Copying in developer preferences'
        @cp external/developers.js build/defaults/preferences/
 
+extension: build
+       @echo ' * Packaging as an XPI'
+       @perl -ne '@f = split /\s+/; if (/open_ils_staff_client/) { if (! /chrome:\/\/open_ils_staff_client/) { $$f[ scalar(@f) - 1 ] = "chrome/" . $$f[ scalar(@f) - 1 ]; }; print join(" ",@f) . "\n"; }' build/chrome/chrome.manifest > build/chrome.manifest
+       @(cd build/ && zip -q -r evergreen.xpi * -x server/\* -x defaults/preferences/standalone_xul_app.js)
+       @md5sum build/evergreen.xpi > build/evergreen.xpi.md5
+
 build: build_dir chrome2remote localize_manifest generated custom_skins open-ils stamp 
        @echo To test the staff client:
        @echo "  cd build/"
@@ -32,12 +39,14 @@ build: build_dir chrome2remote localize_manifest generated custom_skins open-ils
 
 build_dir:
        @echo ' * Creating and populating build/ '
+       @rm -rf build/
        @mkdir -p build/
        @cp -fR chrome build/
        @cp -fR server build/
        @cp -fR defaults build/
        @cp -fR components build/
        @cp application.ini build/
+       @cp install.rdf build/
        @cp -fR build/chrome/content/util/ build/server/
        @cp -fR build/chrome/content/auth/ build/server/
        @cp build/chrome/content/main/constants.js build/server/main/constants.js
@@ -78,6 +87,7 @@ bundle:
        @rm -f build/build.tar
        @tar cf build.tar build/
        @mv build.tar build/
+       @md5sum build/build.tar > build/build.tar.md5
 
 generated:
        @echo ' * Grabbing lang.dtd from the OPAC code '
index 7447d7d..dff9b63 100644 (file)
@@ -3,6 +3,8 @@ locale open_ils_staff_client en-US locale/en-US/
 skin open_ils_staff_client open_ils_staff_client skin/
 locale branding en-US branding/locale/en-US/
 
+overlay chrome://browser/content/browser.xul chrome://open_ils_staff_client/content/firefox/overlay.xul
+
 style   chrome://global/content/customizeToolbar.xul    chrome://venkman/skin/venkman-overlay.css
 overlay chrome://messenger/content/messenger.xul        chrome://venkman/content/venkman-overlay.xul      application={3550f703-e582-4d05-9a08-453d09bdfdc6}
 overlay chrome://venkman/content/venkman-menus.xul      chrome://communicator/content/tasksOverlay.xul    application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a}
index a71295e..3552016 100644 (file)
@@ -524,7 +524,9 @@ auth.controller.prototype = {
 
         var w; // close all other windows
         while ( w = enumerator.getNext() ) {
-            if (w != window) w.close();
+            if (w != window) {
+                if (w.xulG) { w.close(); } // FIXME: kludge so we don't close Firefox windows as an extension.  We should define a @windowtype for all the staff client windows and have the enumerator just pull those
+            }
         }
 
         this.controller.render('ws_deck');
diff --git a/Open-ILS/xul/staff_client/chrome/content/firefox/overlay.xul b/Open-ILS/xul/staff_client/chrome/content/firefox/overlay.xul
new file mode 100644 (file)
index 0000000..cbe6988
--- /dev/null
@@ -0,0 +1,19 @@
+<?xml version="1.0"?>
+<overlay id="sample" 
+         xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+<!--
+ <statusbar id="status-bar">
+  <statusbarpanel id="my-panel" label="Hello, World"  />
+ </statusbar>
+-->
+  <menupopup id="menu_ToolsPopup">
+    <menuitem id="evergreen_entry" insertbefore="devToolsSeparator" label="Evergreen Client"
+        oncommand="try {
+          Components.classes['@mozilla.org/embedcomp/window-watcher;1']
+                    .getService(Components.interfaces.nsIWindowWatcher)
+                    .openWindow(null, 'chrome://open_ils_staff_client/content/main/main.xul', '_blank',
+                                'chrome,dialog=no,all', null);
+            } catch(E) { alert(E); }
+        "/>
+  </menupopup>
+</overlay>
index 75c81cb..e34b18c 100644 (file)
@@ -1082,7 +1082,9 @@ main.menu.prototype = {
                         var enumerator = windowManagerInterface.getEnumerator(null);
                         var w; // close all other windows
                         while ( w = enumerator.getNext() ) {
-                            if (w != window) w.close();
+                            if (w != window) {
+                                if (w.xulG) { w.close(); } // FIXME: kludge so we don't close Firefox windows as an extension.  We should define a @windowtype for all the staff client windows and have the enumerator just pull those
+                            }
                         }
                         window.close();
                     }
index 584b367..4156d4e 100644 (file)
@@ -2,17 +2,10 @@
 
 // Modified by Jason for Evergreen
 
-// This one is required for XUL Runner
-pref("toolkit.defaultChromeURI", "chrome://open_ils_staff_client/content/main/main.xul");
-
 // These are specific to Evergreen
 pref("open-ils.write_in_user_chrome_directory", true);
 pref("open-ils.disable_accesskeys_on_tabs", false);
 
-// Let's try to enable tracemonkey
-pref("javascript.options.jit.chrome", true);
-pref("javascript.options.jit.content", true);
-
 // We'll use this one to help brand some build information into the client, and rely on subversion keywords
 pref("open-ils.repository.headURL","$HeadURL$");
 pref("open-ils.repository.author","$Author$");
@@ -20,64 +13,4 @@ pref("open-ils.repository.revision","$Revision$");
 pref("open-ils.repository.date","$Date$");
 pref("open-ils.repository.id","$Id$");
 
-// We'll set a default locale
-pref("general.useragent.locale", "en-US");
-
-// We need something like this to get window.open to work in some places (where it complains about
-// navigator.xul not being registered.  But is about:blank the best value to use here?
-pref("browser.chromeURL","about:blank");
-
-// This one just makes things speedier.  We use a lot of XMLHttpRequest
-pref("network.http.max-persistent-connections-per-server",8);
-
-// more speed-up attempts
-pref("content.maxtextrun",16385);
-pref("browser.display.show_image_placeholders", false);
-
-// This stops the unresponsive script warning, but the code is still too slow for some reason.
-// However, it's better than POEM, which I wasted a day on :)
-pref("dom.max_script_run_time",60);
-
-// This lets remote xul access link to local chrome, except it doesn't work
-pref("security.checkloaduri", false);
-pref("signed.applets.codebase_principal_support", true);
-
-// This stops the pop-up blocker.  Well it should, but it doesn't work here
-pref("dom.disable_open_during_load", false);
-pref("browser.popups.showPopupBlocker", false);
-pref("privacy.popups.disable_from_plugins",0);
-pref("privacy.popups.policy",0);
-
-pref("browser.download.useDownloadDir", true);
-pref("browser.download.folderList", 0);
-pref("browser.download.manager.showAlertOnComplete", true);
-pref("browser.download.manager.showAlertInterval", 2000);
-pref("browser.download.manager.retention", 2);
-pref("browser.download.manager.showWhenStarting", true);
-pref("browser.download.manager.useWindow", true);
-pref("browser.download.manager.closeWhenDone", false);
-pref("browser.download.manager.openDelay", 0);
-pref("browser.download.manager.focusWhenStarting", false);
-pref("browser.download.manager.flashCount", 2); 
-
-// Developer options we want for all builds
-pref("browser.dom.window.dump.enabled",true);
-
-// For extension manager, etc.
-pref("xpinstall.dialog.confirm", "chrome://mozapps/content/xpinstall/xpinstallConfirm.xul");
-pref("xpinstall.dialog.progress.skin", "chrome://mozapps/content/extensions/extensions.xul?type=themes");
-pref("xpinstall.dialog.progress.chrome", "chrome://mozapps/content/extensions/extensions.xul?type=extensions");
-pref("xpinstall.dialog.progress.type.skin", "Extension:Manager-themes");
-pref("xpinstall.dialog.progress.type.chrome", "Extension:Manager-extensions");
-pref("extensions.update.enabled", true);
-pref("extensions.update.interval", 86400);
-pref("extensions.dss.enabled", false);
-pref("extensions.dss.switchPending", false);
-pref("extensions.ignoreMTimeChanges", false);
-pref("extensions.logging.enabled", false);
-pref("general.skins.selectedSkin", "classic/1.0");
-// NB these point at AMO
-pref("extensions.update.url", "chrome://mozapps/locale/extensions/extensions.properties");
-pref("extensions.getMoreExtensionsURL", "chrome://mozapps/locale/extensions/extensions.properties");
-pref("extensions.getMoreThemesURL", "chrome://mozapps/locale/extensions/extensions.properties");
 
diff --git a/Open-ILS/xul/staff_client/defaults/preferences/standalone_xul_app.js b/Open-ILS/xul/staff_client/defaults/preferences/standalone_xul_app.js
new file mode 100644 (file)
index 0000000..5350bb7
--- /dev/null
@@ -0,0 +1,68 @@
+// This one is required for XUL Runner
+pref("toolkit.defaultChromeURI", "chrome://open_ils_staff_client/content/main/main.xul");
+
+// Let's try to enable tracemonkey
+pref("javascript.options.jit.chrome", true);
+pref("javascript.options.jit.content", true);
+
+// We'll set a default locale
+pref("general.useragent.locale", "en-US");
+
+// We need something like this to get window.open to work in some places (where it complains about
+// navigator.xul not being registered.  But is about:blank the best value to use here?
+pref("browser.chromeURL","about:blank");
+
+// This one just makes things speedier.  We use a lot of XMLHttpRequest
+pref("network.http.max-persistent-connections-per-server",8);
+
+// more speed-up attempts
+pref("content.maxtextrun",16385);
+pref("browser.display.show_image_placeholders", false);
+
+// This stops the unresponsive script warning, but the code is still too slow for some reason.
+// However, it's better than POEM, which I wasted a day on :)
+pref("dom.max_script_run_time",60);
+
+// This lets remote xul access link to local chrome, except it doesn't work
+pref("security.checkloaduri", false);
+pref("signed.applets.codebase_principal_support", true);
+
+// This stops the pop-up blocker.  Well it should, but it doesn't work here
+pref("dom.disable_open_during_load", false);
+pref("browser.popups.showPopupBlocker", false);
+pref("privacy.popups.disable_from_plugins",0);
+pref("privacy.popups.policy",0);
+
+pref("browser.download.useDownloadDir", true);
+pref("browser.download.folderList", 0);
+pref("browser.download.manager.showAlertOnComplete", true);
+pref("browser.download.manager.showAlertInterval", 2000);
+pref("browser.download.manager.retention", 2);
+pref("browser.download.manager.showWhenStarting", true);
+pref("browser.download.manager.useWindow", true);
+pref("browser.download.manager.closeWhenDone", false);
+pref("browser.download.manager.openDelay", 0);
+pref("browser.download.manager.focusWhenStarting", false);
+pref("browser.download.manager.flashCount", 2); 
+
+// Developer options we want for all builds
+pref("browser.dom.window.dump.enabled",true);
+
+// For extension manager, etc.
+pref("xpinstall.dialog.confirm", "chrome://mozapps/content/xpinstall/xpinstallConfirm.xul");
+pref("xpinstall.dialog.progress.skin", "chrome://mozapps/content/extensions/extensions.xul?type=themes");
+pref("xpinstall.dialog.progress.chrome", "chrome://mozapps/content/extensions/extensions.xul?type=extensions");
+pref("xpinstall.dialog.progress.type.skin", "Extension:Manager-themes");
+pref("xpinstall.dialog.progress.type.chrome", "Extension:Manager-extensions");
+pref("extensions.update.enabled", true);
+pref("extensions.update.interval", 86400);
+pref("extensions.dss.enabled", false);
+pref("extensions.dss.switchPending", false);
+pref("extensions.ignoreMTimeChanges", false);
+pref("extensions.logging.enabled", false);
+pref("general.skins.selectedSkin", "classic/1.0");
+// NB these point at AMO
+pref("extensions.update.url", "chrome://mozapps/locale/extensions/extensions.properties");
+pref("extensions.getMoreExtensionsURL", "chrome://mozapps/locale/extensions/extensions.properties");
+pref("extensions.getMoreThemesURL", "chrome://mozapps/locale/extensions/extensions.properties");
+
index 02ca921..76d41c6 100755 (executable)
@@ -3,11 +3,9 @@
 <RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
        xmlns:em="http://www.mozilla.org/2004/em-rdf#">
 
-       <!-- modified by Jason for Evergreen -->
-
        <Description about="urn:mozilla:install-manifest">
-               <em:id>{09ce6f37-9e73-48db-a264-d095f9f22bb3}</em:id>
-               <em:version>0.1.0</em:version>
+               <em:id>staff-client@open-ils.org</em:id>
+               <em:version>1.6</em:version>
                <em:type>2</em:type>
 
                <!-- Target Application this extension can install into, 
                <em:targetApplication>
                        <Description>
                                <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
-                               <em:minVersion>1.0</em:minVersion>
-                               <em:maxVersion>1.0+</em:maxVersion>
+                               <em:minVersion>3.5</em:minVersion>
+                               <em:maxVersion>3.5.*</em:maxVersion>
                        </Description>
                </em:targetApplication>
     
-               <!-- Packages, Skins and Locales that this extension registers -->
-               <em:file>
-                       <Description about="urn:mozilla:extension:file:BOO.jar">
-                               <em:package>content/BOO/</em:package>
-                               <em:locale>locale/en-US/BOO/</em:locale>
-                               <em:skin>skin/BOO/</em:skin>
-                       </Description>
-               </em:file>
-       
                <!-- Front End MetaData -->
                <em:name>Evergreen</em:name>
-               <em:description>Evergreen Staff Client </em:description>
+               <em:description>Evergreen Staff Client</em:description>
         
-               <em:homepageURL>http://open-ils.org/</em:homepageURL>
+               <em:homepageURL>http://evergreen-ils.org/</em:homepageURL>
     
        </Description>      
 </RDF>