Closes #1543, Add db integrity check for 1.0 to 2.0 upgrades
Also added different text coming from 1.0 with a link to http://zotero.org/support/upgrade, which needs content
This commit is contained in:
parent
13917c41a5
commit
3d78c2b4d8
|
@ -14,7 +14,6 @@
|
|||
this.init = init;
|
||||
this.onAdvance = onAdvance;
|
||||
this.doUpgrade = doUpgrade;
|
||||
this.onChangeLogLinkClick = onChangeLogLinkClick;
|
||||
|
||||
var obj = window.arguments[0].wrappedJSObject;
|
||||
var Zotero = obj.Zotero;
|
||||
|
@ -23,9 +22,18 @@
|
|||
function init() {
|
||||
var wizard = document.getElementById('zotero-schema-upgrade');
|
||||
|
||||
var continueButtonName = wizard.getButton('next').getAttribute('label');
|
||||
var continueButton = wizard.getButton('next');
|
||||
continueButton.focus(); // prevent focusing upgrade instructions link
|
||||
|
||||
// Use proper button name in text
|
||||
var continueButtonName = continueButton.getAttribute('label');
|
||||
var str = Zotero.getString('upgrade.advanceMessage', continueButtonName);
|
||||
document.getElementById('zotero-advance-message').setAttribute('value', str);
|
||||
|
||||
if (data.majorUpgrade) {
|
||||
document.getElementById('zotero-major-upgrade').hidden = false;
|
||||
document.getElementById('zotero-upgrade-required').hidden = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -45,6 +53,28 @@
|
|||
onAdvance();
|
||||
|
||||
try {
|
||||
if (data.integrityCheck) {
|
||||
if (!Zotero.DB.integrityCheck()) {
|
||||
var pr = Components.classes["@mozilla.org/network/default-prompt;1"]
|
||||
.createInstance(Components.interfaces.nsIPrompt);
|
||||
var buttonFlags = (pr.BUTTON_POS_0) * (pr.BUTTON_TITLE_IS_STRING)
|
||||
+ (pr.BUTTON_POS_1) * (pr.BUTTON_TITLE_CANCEL);
|
||||
var index = pr.confirmEx(
|
||||
Zotero.getString('general.error'),
|
||||
Zotero.getString('upgrade.integrityCheckFailed'),
|
||||
buttonFlags, Zotero.getString('upgrade.loadDBRepairTool'),
|
||||
null, null, null, {});
|
||||
|
||||
if (index == 0) {
|
||||
Zotero.initialURL = 'https://www.zotero.org/utils/dbfix/';
|
||||
}
|
||||
|
||||
_setStartupError();
|
||||
_clickCancel();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
Zotero.Schema.updateSchema();
|
||||
}
|
||||
catch (e) {
|
||||
|
@ -53,9 +83,7 @@
|
|||
|
||||
Components.utils.reportError(e);
|
||||
|
||||
var cancelButton = wizard.getButton('cancel');
|
||||
cancelButton.setAttribute('disabled', false);
|
||||
cancelButton.click();
|
||||
_clickCancel();
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -65,17 +93,45 @@
|
|||
}
|
||||
|
||||
|
||||
function onChangeLogLinkClick() {
|
||||
this.onUpgradeInstructionsLinkClick = function () {
|
||||
_setStartupError();
|
||||
Zotero.initialURL = 'http://zotero.org/support/upgrade';
|
||||
_clickCancel();
|
||||
}
|
||||
|
||||
|
||||
this.onChangeLogLinkClick = function () {
|
||||
Zotero.initialURL = 'http://zotero.org/support/changelog';
|
||||
document.getElementById('zotero-schema-upgrade').getButton('finish').click();
|
||||
}
|
||||
|
||||
|
||||
function _setStartupError() {
|
||||
Zotero.startupError = Zotero.localeJoin([
|
||||
Zotero.getString('upgrade.dbUpdateRequired'), Zotero.getString('general.restartFirefox')
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
function _clickCancel() {
|
||||
var cancelButton = document.getElementById('zotero-schema-upgrade').getButton('cancel');
|
||||
cancelButton.setAttribute('disabled', false);
|
||||
cancelButton.click();
|
||||
}
|
||||
}
|
||||
]]>
|
||||
</script>
|
||||
|
||||
<wizardpage onpageshow="Zotero_Schema_Upgrade.init()">
|
||||
<description>&zotero.upgrade.newVersionInstalled;</description>
|
||||
<description>&zotero.upgrade.upgradeRequired; &zotero.upgrade.autoBackup;</description>
|
||||
<description id="zotero-upgrade-required">&zotero.upgrade.upgradeRequired; &zotero.upgrade.autoBackup;</description>
|
||||
<description id="zotero-major-upgrade" hidden="true">
|
||||
<label value="&zotero.upgrade.majorUpgrade;" style="font-weight: bold"/>
|
||||
&zotero.upgrade.majorUpgradeBeforeLink;
|
||||
<label class="text-link" value="&zotero.upgrade.majorUpgradeLink;"
|
||||
onclick="try { Zotero_Schema_Upgrade.onUpgradeInstructionsLinkClick(); } catch (e) { alert(e); }"/>
|
||||
&zotero.upgrade.majorUpgradeAfterLink;
|
||||
</description>
|
||||
<description id="zotero-advance-message"/>
|
||||
</wizardpage>
|
||||
|
||||
|
@ -88,7 +144,7 @@
|
|||
<description>&zotero.upgrade.upgradeSucceeded;</description>
|
||||
<description>
|
||||
&zotero.upgrade.changeLogBeforeLink;
|
||||
<label id="zotero-change-log-link" class="text-link" value="&zotero.upgrade.changeLogLink;"
|
||||
<label class="text-link" value="&zotero.upgrade.changeLogLink;"
|
||||
onclick="Zotero_Schema_Upgrade.onChangeLogLinkClick()"/>
|
||||
&zotero.upgrade.changeLogAfterLink;
|
||||
</description>
|
||||
|
|
|
@ -52,9 +52,24 @@ Zotero.Schema = new function(){
|
|||
var dbVersion = _getDBVersion('userdata');
|
||||
var schemaVersion = _getSchemaSQLVersion('userdata');
|
||||
|
||||
// Upgrading from 1.0 or earlier
|
||||
if (dbVersion <= 36) {
|
||||
var integrityCheck = true;
|
||||
var majorUpgrade = true;
|
||||
}
|
||||
else {
|
||||
var integrityCheck = false;
|
||||
var majorUpgrade = false;
|
||||
}
|
||||
|
||||
var ww = Components.classes["@mozilla.org/embedcomp/window-watcher;1"]
|
||||
.getService(Components.interfaces.nsIWindowWatcher);
|
||||
var obj = { Zotero: Zotero, data: { success: false } };
|
||||
.getService(Components.interfaces.nsIWindowWatcher);
|
||||
var data = {
|
||||
success: false,
|
||||
majorUpgrade: majorUpgrade,
|
||||
integrityCheck: integrityCheck
|
||||
};
|
||||
var obj = { Zotero: Zotero, data: data };
|
||||
var io = { wrappedJSObject: obj };
|
||||
var win = ww.openWindow(null, "chrome://zotero/content/upgrade.xul",
|
||||
"zotero-schema-upgrade", "chrome,centerscreen,modal", io);
|
||||
|
|
|
@ -71,7 +71,7 @@ var Zotero = new function(){
|
|||
// Public properties
|
||||
this.initialized = false;
|
||||
this.skipLoading = false;
|
||||
this.__defineGetter__("startupError", function() { return _startupError; });
|
||||
this.startupError;
|
||||
this.__defineGetter__("startupErrorHandler", function() { return _startupErrorHandler; });
|
||||
this.version;
|
||||
this.platform;
|
||||
|
@ -146,7 +146,6 @@ var Zotero = new function(){
|
|||
*/
|
||||
this.__defineGetter__('locked', function () _locked);
|
||||
|
||||
var _startupError;
|
||||
var _startupErrorHandler;
|
||||
var _zoteroDirectory = false;
|
||||
var _localizedStringBundle;
|
||||
|
@ -255,7 +254,7 @@ var Zotero = new function(){
|
|||
catch (e) {
|
||||
// Zotero dir not found
|
||||
if (e.name == 'NS_ERROR_FILE_NOT_FOUND') {
|
||||
_startupError = Zotero.getString('dataDir.notFound');
|
||||
this.startupError = Zotero.getString('dataDir.notFound');
|
||||
_startupErrorHandler = function() {
|
||||
var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
|
||||
.getService(Components.interfaces.nsIWindowMediator);
|
||||
|
@ -268,7 +267,7 @@ var Zotero = new function(){
|
|||
+ (ps.BUTTON_POS_2) * (ps.BUTTON_TITLE_IS_STRING);
|
||||
var index = ps.confirmEx(win,
|
||||
Zotero.getString('general.error'),
|
||||
_startupError + '\n\n' +
|
||||
this.startupError + '\n\n' +
|
||||
Zotero.getString('dataDir.previousDir') + ' '
|
||||
+ Zotero.Prefs.get('lastDataDir'),
|
||||
buttonFlags, null,
|
||||
|
@ -332,7 +331,7 @@ var Zotero = new function(){
|
|||
Zotero.getString('startupError.databaseCannotBeOpened'),
|
||||
Zotero.getString('startupError.checkPermissions')
|
||||
]);
|
||||
_startupError = msg;
|
||||
this.startupError = msg;
|
||||
}
|
||||
|
||||
Components.utils.reportError(e);
|
||||
|
@ -371,10 +370,10 @@ var Zotero = new function(){
|
|||
var kbURL = "http://zotero.org/support/kb/newer_db_version";
|
||||
var seeKB = "See " + kbURL + " for more information.";
|
||||
var msg = Zotero.localeJoin([zoteroVersionIsOlder, upgradeToLatestVersion]) + "\n\n" + currentVersion + "\n\n" + seeKB;
|
||||
_startupError = msg;
|
||||
this.startupError = msg;
|
||||
}
|
||||
else {
|
||||
_startupError = "Database upgrade error";
|
||||
this.startupError = "Database upgrade error";
|
||||
}
|
||||
Components.utils.reportError(e);
|
||||
return false;
|
||||
|
|
|
@ -11,6 +11,10 @@
|
|||
<!ENTITY zotero.upgrade.newVersionInstalled "You have installed a new version of Zotero.">
|
||||
<!ENTITY zotero.upgrade.upgradeRequired "Your Zotero database must be upgraded to work with the new version.">
|
||||
<!ENTITY zotero.upgrade.autoBackup "Your existing database will be backed up automatically before any changes are made.">
|
||||
<!ENTITY zotero.upgrade.majorUpgrade "This is a major upgrade.">
|
||||
<!ENTITY zotero.upgrade.majorUpgradeBeforeLink "Be sure you have reviewed the">
|
||||
<!ENTITY zotero.upgrade.majorUpgradeLink "upgrade instructions">
|
||||
<!ENTITY zotero.upgrade.majorUpgradeAfterLink "before continuing.">
|
||||
<!ENTITY zotero.upgrade.upgradeInProgress "Please wait for the upgrade process to finish. This may take a few minutes.">
|
||||
<!ENTITY zotero.upgrade.upgradeSucceeded "Your Zotero database has been successfully upgraded.">
|
||||
<!ENTITY zotero.upgrade.changeLogBeforeLink "Please see">
|
||||
|
|
|
@ -31,8 +31,12 @@ install.quickStartGuide.message.welcome = Welcome to Zotero!
|
|||
install.quickStartGuide.message.clickViewPage = Click the "View Page" button above to visit our Quick Start Guide and learn how to get started collecting, managing, and citing your research.
|
||||
install.quickStartGuide.message.thanks = Thanks for installing Zotero.
|
||||
|
||||
upgrade.failed.title = Upgrade Failed
|
||||
upgrade.failed = Upgrading of the Zotero database failed:
|
||||
upgrade.advanceMessage = Press %S to upgrade now.
|
||||
upgrade.dbUpdateRequired = The Zotero database must be updated.
|
||||
upgrade.integrityCheckFailed = Your Zotero database must be repaired before the upgrade can continue.
|
||||
upgrade.loadDBRepairTool = Load Database Repair Tool
|
||||
|
||||
errorReport.reportErrors = Report Errors...
|
||||
errorReport.reportInstructions = You can report this error by selecting "%S" from the Actions (gear) menu.
|
||||
|
|
|
@ -2,6 +2,6 @@ description {
|
|||
margin-bottom: 1.5em;
|
||||
}
|
||||
|
||||
#zotero-change-log-link {
|
||||
description > label {
|
||||
margin: 0;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user