commit f4abe14b59d2cf1150862e86ee6ff637daa24c20
parent de62d3865ec38f83eb845563e29ac23f17eb9e43
Author: Dan Stillman <dstillman@zotero.org>
Date: Wed, 13 Nov 2013 00:32:48 -0500
Merge branch 'db-update' into 4.0
Diffstat:
2 files changed, 65 insertions(+), 1 deletion(-)
diff --git a/chrome/content/zotero/xpcom/zotero.js b/chrome/content/zotero/xpcom/zotero.js
@@ -639,6 +639,68 @@ Components.utils.import("resource://gre/modules/Services.jsm");
+ Zotero.getString('startupError.zoteroVersionIsOlder.current', Zotero.version) + "\n\n"
+ Zotero.getString('general.seeForMoreInformation', kbURL);
Zotero.startupError = msg;
+ _startupErrorHandler = function() {
+ var ps = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
+ .getService(Components.interfaces.nsIPromptService);
+ var buttonFlags = (ps.BUTTON_POS_0) * (ps.BUTTON_TITLE_IS_STRING)
+ + (ps.BUTTON_POS_1) * (ps.BUTTON_TITLE_CANCEL)
+ + ps.BUTTON_POS_0_DEFAULT;
+
+ var index = ps.confirmEx(
+ null,
+ Zotero.getString('general.error'),
+ Zotero.startupError,
+ buttonFlags,
+ Zotero.getString('general.checkForUpdate'),
+ null, null, null, {}
+ );
+
+ // "Check for updates" button
+ if(index === 0) {
+ if(Zotero.isStandalone) {
+ Components.classes["@mozilla.org/embedcomp/window-watcher;1"]
+ .getService(Components.interfaces.nsIWindowWatcher)
+ .openWindow(null, 'chrome://mozapps/content/update/updates.xul',
+ 'updateChecker', 'chrome,centerscreen', null);
+ } else {
+ // In Firefox, show the add-on manager
+ Components.utils.import("resource://gre/modules/AddonManager.jsm");
+ AddonManager.getAddonByID(ZOTERO_CONFIG['GUID'],
+ function (addon) {
+ // Disable auto-update so that the user is presented with the option
+ var initUpdateState = addon.applyBackgroundUpdates;
+ addon.applyBackgroundUpdates = AddonManager.AUTOUPDATE_DISABLE;
+ addon.findUpdates({
+ onNoUpdateAvailable: function() {
+ ps.alert(
+ null,
+ Zotero.getString('general.noUpdatesFound'),
+ Zotero.getString('general.isUpToDate', 'Zotero')
+ );
+ },
+ onUpdateAvailable: function() {
+ // Show available update
+ Components.classes["@mozilla.org/appshell/window-mediator;1"]
+ .getService(Components.interfaces.nsIWindowMediator)
+ .getMostRecentWindow('navigator:browser')
+ .BrowserOpenAddonsMgr('addons://updates/available');
+ },
+ onUpdateFinished: function() {
+ // Restore add-on auto-update state, but don't fire
+ // too quickly or the update will not show in the
+ // add-on manager
+ setTimeout(function() {
+ addon.applyBackgroundUpdates = initUpdateState;
+ }, 1000);
+ }
+ },
+ AddonManager.UPDATE_WHEN_USER_REQUESTED
+ );
+ }
+ );
+ }
+ }
+ };
}
else {
Zotero.startupError = Zotero.getString('startupError.databaseUpgradeError') + "\n\n" + e;
diff --git a/chrome/locale/en-US/zotero/zotero.properties b/chrome/locale/en-US/zotero/zotero.properties
@@ -20,10 +20,12 @@ general.tryAgainLater = Please try again in a few minutes.
general.serverError = The server returned an error. Please try again.
general.restartFirefox = Please restart %S.
general.restartFirefoxAndTryAgain = Please restart %S and try again.
-general.checkForUpdate = Check for update
+general.checkForUpdate = Check for Update
general.actionCannotBeUndone = This action cannot be undone.
general.install = Install
general.updateAvailable = Update Available
+general.noUpdatesFound = No Updates Found
+general.isUpToDate = %S is up to date.
general.upgrade = Upgrade
general.yes = Yes
general.no = No