commit 5c88810ec05c8d27d4184fb670f4bd76c59dc1af
parent 43fd51b71c8c9f09d86d731ff05e3a719ae14316
Author: Simon Kornblith <simon@simonster.com>
Date: Mon, 18 Oct 2010 23:12:04 +0000
add zotero://preferences URI scheme to allow links to prefs from add-ons
Diffstat:
1 file changed, 37 insertions(+), 0 deletions(-)
diff --git a/components/zotero-protocol-handler.js b/components/zotero-protocol-handler.js
@@ -1043,6 +1043,40 @@ function ChromeExtensionHandler() {
}
};
+ /**
+ * zotero://preferences
+ * zotero://preferences/zotero-prefpane-cite
+ */
+ var PreferencesExtension = new function(){
+ this.newChannel = newChannel;
+
+ this.__defineGetter__('loadAsChrome', function () { return true; });
+
+ function newChannel(uri) {
+ var Zotero = Components.classes["@zotero.org/Zotero;1"]
+ .getService(Components.interfaces.nsISupports)
+ .wrappedJSObject;
+
+ var data = {};
+ var s = uri.path.split('/');
+ if(s.length == 2) {
+ data.pane = s[1];
+ }
+
+ if(Zotero.isFx4) {
+ var win = Components.classes["@mozilla.org/appshell/window-mediator;1"]
+ .getService(Components.interfaces.nsIWindowMediator)
+ .getMostRecentWindow("navigator:browser");
+ win.close();
+ }
+
+ Components.classes["@mozilla.org/embedcomp/window-watcher;1"]
+ .getService(Components.interfaces.nsIWindowWatcher)
+ .openWindow(null, 'chrome://zotero/content/preferences/preferences.xul', '',
+ 'chrome,titlebar,toolbar', data);
+ }
+ };
+
var ReportExtensionSpec = ZOTERO_SCHEME + "://report"
this._extensions[ReportExtensionSpec] = ReportExtension;
@@ -1063,6 +1097,9 @@ function ChromeExtensionHandler() {
var ConnectorExtensionSpec = ZOTERO_SCHEME + "://connector"
this._extensions[ConnectorExtensionSpec] = ConnectorExtension;
+
+ var PreferencesExtensionSpec = ZOTERO_SCHEME + "://preferences"
+ this._extensions[PreferencesExtensionSpec] = PreferencesExtension;
}