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:
Dan Stillman 2009-12-29 22:21:54 +00:00
parent 13917c41a5
commit 3d78c2b4d8
6 changed files with 96 additions and 18 deletions

View File

@ -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>

View File

@ -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);

View File

@ -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;

View File

@ -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">

View File

@ -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.

View File

@ -2,6 +2,6 @@ description {
margin-bottom: 1.5em;
}
#zotero-change-log-link {
description > label {
margin: 0;
}