Add-on discovery support for Zotero Standalone, part 1
This commit is contained in:
parent
beefefd016
commit
aae77c6015
77
chrome/content/zotero/standalone/extensionsOverlay.js
Normal file
77
chrome/content/zotero/standalone/extensionsOverlay.js
Normal file
|
@ -0,0 +1,77 @@
|
||||||
|
/*
|
||||||
|
***** BEGIN LICENSE BLOCK *****
|
||||||
|
|
||||||
|
Copyright © 2011 Center for History and New Media
|
||||||
|
George Mason University, Fairfax, Virginia, USA
|
||||||
|
http://zotero.org
|
||||||
|
|
||||||
|
This file is part of Zotero.
|
||||||
|
|
||||||
|
Zotero is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU Affero General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
Zotero is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU Affero General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Affero General Public License
|
||||||
|
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
The Original Code is the Extension Manager UI.
|
||||||
|
|
||||||
|
The Initial Developer of the Original Code is the Mozilla Foundation.
|
||||||
|
Portions created by the Initial Developer are Copyright (C) 2010
|
||||||
|
the Initial Developer. All Rights Reserved.
|
||||||
|
|
||||||
|
Contributor(s):
|
||||||
|
Blair McBride <bmcbride@mozilla.com>
|
||||||
|
Simon Kornblith <simon@zotero.org</a>
|
||||||
|
|
||||||
|
***** END LICENSE BLOCK *****
|
||||||
|
*/
|
||||||
|
|
||||||
|
gDiscoverView.onLocationChange = function(aWebProgress, aRequest, aLocation) {
|
||||||
|
// Ignore the about:blank load
|
||||||
|
if (aLocation.spec == "about:blank")
|
||||||
|
return;
|
||||||
|
|
||||||
|
// When using the real session history the inner-frame will update the
|
||||||
|
// session history automatically, if using the fake history though it must
|
||||||
|
// be manually updated
|
||||||
|
if (gHistory == FakeHistory) {
|
||||||
|
var docshell = aWebProgress.QueryInterface(Ci.nsIDocShell);
|
||||||
|
|
||||||
|
var state = {
|
||||||
|
view: "addons://discover/",
|
||||||
|
url: aLocation.spec
|
||||||
|
};
|
||||||
|
|
||||||
|
var replaceHistory = Ci.nsIWebNavigation.LOAD_FLAGS_REPLACE_HISTORY << 16;
|
||||||
|
if (docshell.loadType & replaceHistory)
|
||||||
|
gHistory.replaceState(state);
|
||||||
|
else
|
||||||
|
gHistory.pushState(state);
|
||||||
|
gViewController.lastHistoryIndex = gHistory.index;
|
||||||
|
}
|
||||||
|
|
||||||
|
gViewController.updateCommands();
|
||||||
|
|
||||||
|
// In Zotero, we override the behavior below to allow pages on other sites
|
||||||
|
|
||||||
|
/*// If the hostname is the same as the new location's host and either the
|
||||||
|
// default scheme is insecure or the new location is secure then continue
|
||||||
|
// with the load
|
||||||
|
if (aLocation.host == this.homepageURL.host &&
|
||||||
|
(!this.homepageURL.schemeIs("https") || aLocation.schemeIs("https")))
|
||||||
|
return;
|
||||||
|
|
||||||
|
// Canceling the request will send an error to onStateChange which will show
|
||||||
|
// the error page
|
||||||
|
aRequest.cancel(Components.results.NS_BINDING_ABORTED);*/
|
||||||
|
}
|
||||||
|
|
||||||
|
// Don't care about http/https
|
||||||
|
gDiscoverView.onSecurityChange = function() {};
|
8
chrome/content/zotero/standalone/extensionsOverlay.xul
Normal file
8
chrome/content/zotero/standalone/extensionsOverlay.xul
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<overlay id="zotero-addons"
|
||||||
|
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
|
||||||
|
|
||||||
|
<page id="addons-page">
|
||||||
|
<script type="application/javascript" src="chrome://zotero/content/standalone/extensionsOverlay.js"/>
|
||||||
|
</page>
|
||||||
|
</overlay>
|
|
@ -28,8 +28,7 @@ Components.utils.import("resource://gre/modules/Services.jsm");
|
||||||
/**
|
/**
|
||||||
* This object contains the various functions for the interface
|
* This object contains the various functions for the interface
|
||||||
*/
|
*/
|
||||||
var ZoteroStandalone = new function()
|
const ZoteroStandalone = new function() {
|
||||||
{
|
|
||||||
/**
|
/**
|
||||||
* Run when standalone window first opens
|
* Run when standalone window first opens
|
||||||
*/
|
*/
|
||||||
|
@ -65,6 +64,12 @@ var ZoteroStandalone = new function()
|
||||||
handlerInfo.alwaysAskBeforeHandling = false;
|
handlerInfo.alwaysAskBeforeHandling = false;
|
||||||
hs.store(handlerInfo);
|
hs.store(handlerInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Add add-on listeners (not yet hooked up)Services.obs.addObserver(gXPInstallObserver, "addon-install-disabled", false);
|
||||||
|
Services.obs.addObserver(gXPInstallObserver, "addon-install-started", false);
|
||||||
|
Services.obs.addObserver(gXPInstallObserver, "addon-install-blocked", false);
|
||||||
|
Services.obs.addObserver(gXPInstallObserver, "addon-install-failed", false);
|
||||||
|
Services.obs.addObserver(gXPInstallObserver, "addon-install-complete", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -171,5 +176,24 @@ function toOpenWindowByType(inType, uri, features)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const gXPInstallObserver = {
|
||||||
|
observe: function (aSubject, aTopic, aData) {
|
||||||
|
var installInfo = aSubject.QueryInterface(Components.interfaces.amIWebInstallInfo);
|
||||||
|
var win = installInfo.originatingWindow;
|
||||||
|
switch (aTopic) {
|
||||||
|
case "addon-install-disabled":
|
||||||
|
case "addon-install-blocked":
|
||||||
|
case "addon-install-failed":
|
||||||
|
var promptService = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
|
||||||
|
.getService(Components.interfaces.nsIPromptService);
|
||||||
|
promptService.alert(win, Zotero.getString("standalone.addonInstallationFailed.title"),
|
||||||
|
Zotero.getString("standalone.addonInstallationFailed.body", installInfo.installs[0].name));
|
||||||
|
break;
|
||||||
|
/*case "addon-install-started":
|
||||||
|
case "addon-install-complete":*/
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
window.addEventListener("load", function(e) { ZoteroStandalone.onLoad(e); }, false);
|
window.addEventListener("load", function(e) { ZoteroStandalone.onLoad(e); }, false);
|
||||||
window.addEventListener("unload", function(e) { ZoteroStandalone.onUnload(e); }, false);
|
window.addEventListener("unload", function(e) { ZoteroStandalone.onUnload(e); }, false);
|
|
@ -170,7 +170,7 @@
|
||||||
command="cmd_zotero_rtfScan"/>
|
command="cmd_zotero_rtfScan"/>
|
||||||
<menuseparator/>
|
<menuseparator/>
|
||||||
<menuitem id="menu_addons" label="&addons.label;"
|
<menuitem id="menu_addons" label="&addons.label;"
|
||||||
oncommand="ZoteroStandalone.openInViewer('about:addons')"/>
|
oncommand="ZoteroStandalone.openInViewer('chrome://mozapps/content/extensions/extensions.xul')"/>
|
||||||
</menupopup>
|
</menupopup>
|
||||||
</menu>
|
</menu>
|
||||||
|
|
||||||
|
|
|
@ -738,6 +738,8 @@ locate.libraryLookup.tooltip = Look up this item using the selected OpenURL res
|
||||||
locate.manageLocateEngines = Manage Lookup Engines…
|
locate.manageLocateEngines = Manage Lookup Engines…
|
||||||
|
|
||||||
standalone.corruptInstallation = Your Zotero Standalone installation appears to be corrupted due to a failed auto-update. While Zotero may continue to function, to avoid potential bugs, please download the latest version of Zotero Standalone from http://zotero.org/support/standalone as soon as possible.
|
standalone.corruptInstallation = Your Zotero Standalone installation appears to be corrupted due to a failed auto-update. While Zotero may continue to function, to avoid potential bugs, please download the latest version of Zotero Standalone from http://zotero.org/support/standalone as soon as possible.
|
||||||
|
standalone.addonInstallationFailed.title = Add-on Installation Failed
|
||||||
|
standalone.addonInstallationFailed.body = The add-on "%S" could not be installed. It may be incompatible with this version of Zotero Standalone.
|
||||||
|
|
||||||
connector.error.title = Zotero Connector Error
|
connector.error.title = Zotero Connector Error
|
||||||
connector.standaloneOpen = Your database cannot be accessed because Zotero Standalone is currently open. Please view your items in Zotero Standalone.
|
connector.standaloneOpen = Your database cannot be accessed because Zotero Standalone is currently open. Please view your items in Zotero Standalone.
|
Loading…
Reference in New Issue
Block a user