commit e67db436c63482df38d7cff0c226f04f2d0fe487
parent cfbb3d3d4717347e407fca0f7547ce99317f8842
Author: Dan Stillman <dstillman@zotero.org>
Date: Tue, 12 Jun 2018 06:15:45 -0400
Mendeley import: Add link to support page on encrypted DB
Also localize the name of the collection created during import
Diffstat:
5 files changed, 55 insertions(+), 21 deletions(-)
diff --git a/chrome/content/zotero/fileInterface.js b/chrome/content/zotero/fileInterface.js
@@ -330,27 +330,27 @@ var Zotero_File_Interface = new function() {
var translation;
// Check if the file is an SQLite database
var sample = yield Zotero.File.getSample(file.path);
- if (Zotero.MIME.sniffForMIMEType(sample) == 'application/x-sqlite3'
- // Blacklist the current Zotero database, which would cause a hang
- && file.path != Zotero.DataDirectory.getDatabase()) {
+ if (file.path == Zotero.DataDirectory.getDatabase()) {
+ // Blacklist the current Zotero database, which would cause a hang
+ }
+ else if (Zotero.MIME.sniffForMIMEType(sample) == 'application/x-sqlite3') {
// Mendeley import doesn't use the real translation architecture, but we create a
// translation object with the same interface
translation = yield _getMendeleyTranslation();
translation.createNewCollection = createNewCollection;
- defaultNewCollectionPrefix = "Mendeley Import";
+ defaultNewCollectionPrefix = Zotero.getString(
+ 'fileInterface.appImportCollection', 'Mendeley'
+ );
}
- else {
- // TEMP
- if (file.path.endsWith('.sqlite')) {
- let codes = [];
- for (let i = 0; i < sample.length; i++) {
- codes.push(sample.charCodeAt(i));
- }
- Zotero.debug(codes.join(' '));
- }
- translation = new Zotero.Translate.Import();
+ else if (file.path.endsWith('@www.mendeley.com.sqlite')
+ || file.path.endsWith('online.sqlite')) {
+ // Keep in sync with importWizard.js
+ throw new Error('Encrypted Mendeley database');
}
+ if (!translation) {
+ translation = new Zotero.Translate.Import();
+ }
translation.setLocation(file);
return _finishImport({
translation,
diff --git a/chrome/content/zotero/import/importWizard.js b/chrome/content/zotero/import/importWizard.js
@@ -217,11 +217,23 @@ var Zotero_Import_Wizard = {
);
}
catch (e) {
- this._onDone(
- Zotero.getString('general.error'),
- Zotero.getString('fileInterface.importError'),
- true
- );
+ if (e.message == 'Encrypted Mendeley database') {
+ let url = 'https://www.zotero.org/support/kb/mendeley_import';
+ this._onDone(
+ Zotero.getString('general.error'),
+ // TODO: Localize
+ `The selected Mendeley database cannot be read, likely because it is encrypted. `
+ + `See <a href="${url}" class="text-link">How do I import a Mendeley library `
+ + `into Zotero?</a> for more information.`
+ );
+ }
+ else {
+ this._onDone(
+ Zotero.getString('general.error'),
+ Zotero.getString('fileInterface.importError'),
+ true
+ );
+ }
throw e;
}
},
@@ -289,7 +301,22 @@ var Zotero_Import_Wizard = {
_onDone: function (label, description, showReportErrorButton) {
var wizard = this._wizard;
wizard.getPageById('page-done').setAttribute('label', label);
- document.getElementById('result-description').textContent = description;
+
+ var xulElem = document.getElementById('result-description');
+ var htmlElem = document.getElementById('result-description-html');
+
+ if (description.includes('href')) {
+ htmlElem.innerHTML = description;
+ Zotero.Utilities.Internal.updateHTMLInXUL(htmlElem);
+ xulElem.hidden = true;
+ htmlElem.setAttribute('display', 'block');
+ }
+ else {
+ xulElem.textContent = description;
+ xulElem.hidden = false;
+ htmlElem.setAttribute('display', 'none');
+ }
+ document.getElementById('result-description')
if (showReportErrorButton) {
let button = document.getElementById('result-report-error');
diff --git a/chrome/content/zotero/import/importWizard.xul b/chrome/content/zotero/import/importWizard.xul
@@ -7,6 +7,7 @@
<wizard id="import-wizard"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ xmlns:html="http://www.w3.org/1999/xhtml"
title="&zotero.import;"
onload="Zotero_Import_Wizard.init()">
@@ -64,6 +65,7 @@
<wizardpage pageid="page-done">
<description id="result-description"/>
+ <html:div id="result-description-html"/>
<hbox>
<button id="result-report-error"
oncommand="Zotero_Import_Wizard.reportError()"
diff --git a/chrome/locale/en-US/zotero/zotero.properties b/chrome/locale/en-US/zotero/zotero.properties
@@ -695,6 +695,7 @@ fileInterface.exportedItems = Exported Items
fileInterface.imported = Imported
fileInterface.unsupportedFormat = The selected file is not in a supported format.
fileInterface.appDatabase = %S Database
+fileInterface.appImportCollection = %S Import
fileInterface.viewSupportedFormats = View Supported Formats…
fileInterface.untitledBibliography = Untitled Bibliography
fileInterface.bibliographyHTMLTitle = Bibliography
diff --git a/chrome/skin/default/zotero/importWizard.css b/chrome/skin/default/zotero/importWizard.css
@@ -33,10 +33,14 @@ wizard[currentpageid="page-file-list"] .wizard-header {
margin-bottom: 6px;
}
-listbox, #result-description {
+listbox, #result-description, #result-description-html {
font-size: 13px;
}
+#result-description-html a {
+ text-decoration: underline;
+}
+
button, checkbox {
font-size: 13px;
}