www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | Submodules | README | LICENSE

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:
Mcomponents/zotero-protocol-handler.js | 37+++++++++++++++++++++++++++++++++++++
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; }