File renaming: Match content type prefixes, add UI (#4431)
This commit is contained in:
parent
4653059536
commit
4187819cd1
17 changed files with 152 additions and 45 deletions
|
@ -476,7 +476,7 @@
|
||||||
|
|
||||||
case 'fileTypeID':
|
case 'fileTypeID':
|
||||||
var rows = Zotero.FileTypes.getTypes().map(type => ({
|
var rows = Zotero.FileTypes.getTypes().map(type => ({
|
||||||
name: Zotero.getString('fileTypes.' + type.name),
|
name: Zotero.getString('file-type-' + type.name),
|
||||||
value: type.id
|
value: type.id
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
|
|
@ -217,10 +217,30 @@ Zotero_Preferences.General = {
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
|
|
||||||
|
setAutoRenameFileTypes: function () {
|
||||||
|
let typesBox = document.getElementById('zotero-prefpane-file-renaming-file-types-box');
|
||||||
|
let enabledTypes = new Set(Zotero.Prefs.get('autoRenameFiles.fileTypes').split(','));
|
||||||
|
for (let checkbox of typesBox.querySelectorAll('checkbox')) {
|
||||||
|
if (checkbox.checked) {
|
||||||
|
enabledTypes.add(checkbox.dataset.contentType);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
enabledTypes.delete(checkbox.dataset.contentType);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Zotero.Prefs.set('autoRenameFiles.fileTypes', [...enabledTypes].join(','));
|
||||||
|
},
|
||||||
|
|
||||||
updateAutoRenameFilesUI: function () {
|
updateAutoRenameFilesUI: function () {
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
document.getElementById('rename-linked-files').disabled = !Zotero.Prefs.get('autoRenameFiles');
|
document.getElementById('rename-linked-files').disabled = !Zotero.Prefs.get('autoRenameFiles');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
let typesBox = document.getElementById('zotero-prefpane-file-renaming-file-types-box');
|
||||||
|
let enabledTypes = Zotero.Prefs.get('autoRenameFiles.fileTypes').split(',');
|
||||||
|
for (let checkbox of typesBox.querySelectorAll('checkbox')) {
|
||||||
|
checkbox.checked = enabledTypes.includes(checkbox.dataset.contentType);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
|
@ -116,6 +116,40 @@
|
||||||
preference="extensions.zotero.autoRenameFiles.linked"
|
preference="extensions.zotero.autoRenameFiles.linked"
|
||||||
oncommand="Zotero_Preferences.General.updateAutoRenameFilesUI()" native="true"
|
oncommand="Zotero_Preferences.General.updateAutoRenameFilesUI()" native="true"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
<label data-l10n-id="preferences-file-renaming-file-types"/>
|
||||||
|
<hbox
|
||||||
|
id="zotero-prefpane-file-renaming-file-types-box"
|
||||||
|
class="indented-pref"
|
||||||
|
oncommand="Zotero_Preferences.General.setAutoRenameFileTypes()"
|
||||||
|
>
|
||||||
|
<checkbox
|
||||||
|
data-l10n-id="preferences-file-renaming-file-type-pdf"
|
||||||
|
data-content-type="application/pdf"
|
||||||
|
native="true"
|
||||||
|
/>
|
||||||
|
<checkbox
|
||||||
|
data-l10n-id="preferences-file-renaming-file-type-epub"
|
||||||
|
data-content-type="application/epub+zip"
|
||||||
|
native="true"
|
||||||
|
/>
|
||||||
|
<checkbox
|
||||||
|
data-l10n-id="preferences-file-renaming-file-type-image"
|
||||||
|
data-content-type="image/"
|
||||||
|
native="true"
|
||||||
|
/>
|
||||||
|
<checkbox
|
||||||
|
data-l10n-id="preferences-file-renaming-file-type-audio"
|
||||||
|
data-content-type="audio/"
|
||||||
|
native="true"
|
||||||
|
/>
|
||||||
|
<checkbox
|
||||||
|
data-l10n-id="preferences-file-renaming-file-type-video"
|
||||||
|
data-content-type="video/"
|
||||||
|
native="true"
|
||||||
|
/>
|
||||||
|
</hbox>
|
||||||
|
|
||||||
<button id="file-renaming-button"
|
<button id="file-renaming-button"
|
||||||
data-l10n-id="preferences-file-renaming-customize-button"
|
data-l10n-id="preferences-file-renaming-customize-button"
|
||||||
data-search-strings="preferences-file-renaming-format-title, preferences-file-renaming-format-template"
|
data-search-strings="preferences-file-renaming-format-title, preferences-file-renaming-format-template"
|
||||||
|
|
|
@ -580,7 +580,7 @@ Zotero.Attachments = new function () {
|
||||||
// Save using remote web browser persist
|
// Save using remote web browser persist
|
||||||
var externalHandlerImport = async function (contentType) {
|
var externalHandlerImport = async function (contentType) {
|
||||||
// Rename attachment
|
// Rename attachment
|
||||||
if (renameIfAllowedType && !fileBaseName && this.getRenamedFileTypes().includes(contentType)) {
|
if (renameIfAllowedType && !fileBaseName && this.isRenameAllowedForType(contentType)) {
|
||||||
let parentItem = Zotero.Items.get(parentItemID);
|
let parentItem = Zotero.Items.get(parentItemID);
|
||||||
fileBaseName = this.getFileBaseNameFromItem(parentItem);
|
fileBaseName = this.getFileBaseNameFromItem(parentItem);
|
||||||
}
|
}
|
||||||
|
@ -2443,24 +2443,38 @@ Zotero.Attachments = new function () {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
this.getRenamedFileTypes = function () {
|
this.isRenameAllowedForType = function (contentType) {
|
||||||
|
let typePrefixes;
|
||||||
try {
|
try {
|
||||||
var types = Zotero.Prefs.get('autoRenameFiles.fileTypes');
|
typePrefixes = (Zotero.Prefs.get('autoRenameFiles.fileTypes') || '')
|
||||||
return types ? types.split(',') : [];
|
.split(',');
|
||||||
}
|
}
|
||||||
catch (e) {
|
catch (e) {
|
||||||
return [];
|
typePrefixes = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return typePrefixes.some(prefix => contentType.startsWith(prefix));
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated
|
||||||
|
*/
|
||||||
|
this.getRenamedFileTypes = function () {
|
||||||
|
Zotero.debug('Zotero.Attachments.getRenamedFileTypes() is deprecated -- use isRenameAllowedForType()');
|
||||||
|
return Zotero.Prefs.get('autoRenameFiles.fileTypes')
|
||||||
|
.split(',')
|
||||||
|
// Don't include prefixes
|
||||||
|
.filter(type => /.+\/.+/.test(type));
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
this.getRenamedFileBaseNameIfAllowedType = async function (parentItem, file) {
|
this.getRenamedFileBaseNameIfAllowedType = async function (parentItem, file) {
|
||||||
var types = this.getRenamedFileTypes();
|
|
||||||
var contentType = file.endsWith('.pdf')
|
var contentType = file.endsWith('.pdf')
|
||||||
// Don't bother reading file if there's a .pdf extension
|
// Don't bother reading file if there's a .pdf extension
|
||||||
? 'application/pdf'
|
? 'application/pdf'
|
||||||
: await Zotero.MIME.getMIMETypeFromFile(file);
|
: await Zotero.MIME.getMIMETypeFromFile(file);
|
||||||
if (!types.includes(contentType)) {
|
if (!this.isRenameAllowedForType(contentType)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return this.getFileBaseNameFromItem(parentItem);
|
return this.getFileBaseNameFromItem(parentItem);
|
||||||
|
|
|
@ -499,7 +499,7 @@ Zotero.Feed.prototype._updateFeed = Zotero.Promise.coroutine(function* () {
|
||||||
for (let attachment of attachmentsToAdd) {
|
for (let attachment of attachmentsToAdd) {
|
||||||
if (attachment.url.indexOf('pdf') != -1 || attachment.contentType.indexOf('pdf') != -1) {
|
if (attachment.url.indexOf('pdf') != -1 || attachment.contentType.indexOf('pdf') != -1) {
|
||||||
attachment.parentItemID = attachment.parentItem.id;
|
attachment.parentItemID = attachment.parentItem.id;
|
||||||
attachment.title = Zotero.getString('fileTypes.pdf');
|
attachment.title = Zotero.getString('file-type-pdf');
|
||||||
yield Zotero.Attachments.linkFromURL(attachment);
|
yield Zotero.Attachments.linkFromURL(attachment);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3864,16 +3864,29 @@ Zotero.Item.prototype.clearBestAttachmentState = function () {
|
||||||
|
|
||||||
|
|
||||||
Zotero.Item.prototype._getDefaultTitleForAttachmentContentType = function () {
|
Zotero.Item.prototype._getDefaultTitleForAttachmentContentType = function () {
|
||||||
switch (this.attachmentContentType) {
|
let contentType = this.attachmentContentType;
|
||||||
case 'application/pdf':
|
if (!contentType) {
|
||||||
return Zotero.getString('fileTypes.pdf');
|
return null;
|
||||||
case 'application/epub+zip':
|
|
||||||
return Zotero.getString('fileTypes.ebook');
|
|
||||||
case 'text/html':
|
|
||||||
return Zotero.getString('fileTypes.webpage');
|
|
||||||
default:
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
if (contentType === 'application/pdf') {
|
||||||
|
return Zotero.getString('file-type-pdf');
|
||||||
|
}
|
||||||
|
if (contentType === 'application/epub+zip') {
|
||||||
|
return Zotero.getString('file-type-ebook');
|
||||||
|
}
|
||||||
|
if (contentType === 'text/html') {
|
||||||
|
return Zotero.getString('file-type-webpage');
|
||||||
|
}
|
||||||
|
if (contentType.startsWith('image/')) {
|
||||||
|
return Zotero.getString('file-type-image');
|
||||||
|
}
|
||||||
|
if (contentType.startsWith('audio/')) {
|
||||||
|
return Zotero.getString('file-type-audio');
|
||||||
|
}
|
||||||
|
if (contentType.startsWith('video/')) {
|
||||||
|
return Zotero.getString('file-type-video');
|
||||||
|
}
|
||||||
|
return null;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -150,7 +150,7 @@ class EditorInstance {
|
||||||
let fp = new FilePicker();
|
let fp = new FilePicker();
|
||||||
fp.init(this._iframeWindow, Zotero.getString('noteEditor.saveImageAs'), fp.modeSave);
|
fp.init(this._iframeWindow, Zotero.getString('noteEditor.saveImageAs'), fp.modeSave);
|
||||||
fp.appendFilters(fp.filterImages);
|
fp.appendFilters(fp.filterImages);
|
||||||
fp.defaultString = Zotero.getString('fileTypes.image').toLowerCase() + '.' + ext;
|
fp.defaultString = Zotero.getString('file-type-image').toLowerCase() + '.' + ext;
|
||||||
let rv = await fp.show();
|
let rv = await fp.show();
|
||||||
if (rv === fp.returnOK || rv === fp.returnReplace) {
|
if (rv === fp.returnOK || rv === fp.returnReplace) {
|
||||||
let outputPath = fp.file;
|
let outputPath = fp.file;
|
||||||
|
|
|
@ -28,6 +28,7 @@ Zotero.Intl = new function () {
|
||||||
let intlProps;
|
let intlProps;
|
||||||
let pluralFormGet;
|
let pluralFormGet;
|
||||||
let pluralFormNumForms;
|
let pluralFormNumForms;
|
||||||
|
let ftl;
|
||||||
|
|
||||||
// Get settings from language pack (extracted by zotero-build/locale/merge_mozilla_files)
|
// Get settings from language pack (extracted by zotero-build/locale/merge_mozilla_files)
|
||||||
this.init = function () {
|
this.init = function () {
|
||||||
|
@ -88,6 +89,14 @@ Zotero.Intl = new function () {
|
||||||
this.strings[regexpResult[1]] = regexpResult[2];
|
this.strings[regexpResult[1]] = regexpResult[2];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Provide synchronous access to Fluent strings for getString()
|
||||||
|
ftl = new Localization([
|
||||||
|
'zotero.ftl',
|
||||||
|
// More FTL files can be hardcoded here, or added later with
|
||||||
|
// Zotero.ftl.addResourceIds(['...'])
|
||||||
|
], true);
|
||||||
|
Zotero.ftl = ftl;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -108,11 +117,17 @@ Zotero.Intl = new function () {
|
||||||
}
|
}
|
||||||
l10n = bundle.formatStringFromName(name, params, params.length);
|
l10n = bundle.formatStringFromName(name, params, params.length);
|
||||||
}
|
}
|
||||||
else if (this.strings[name]) {
|
|
||||||
return this.strings[name];
|
|
||||||
}
|
|
||||||
else {
|
else {
|
||||||
l10n = bundle.GetStringFromName(name);
|
let ftlString = ftl.formatValueSync(name);
|
||||||
|
if (ftlString) {
|
||||||
|
return ftlString;
|
||||||
|
}
|
||||||
|
else if (this.strings[name]) {
|
||||||
|
return this.strings[name];
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
l10n = bundle.GetStringFromName(name);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (num !== undefined) {
|
if (num !== undefined) {
|
||||||
let availableForms = l10n.split(/;/);
|
let availableForms = l10n.split(/;/);
|
||||||
|
|
|
@ -451,7 +451,7 @@ class ReaderInstance {
|
||||||
let fp = new FilePicker();
|
let fp = new FilePicker();
|
||||||
fp.init(this._iframeWindow, Zotero.getString('pdfReader.saveImageAs'), fp.modeSave);
|
fp.init(this._iframeWindow, Zotero.getString('pdfReader.saveImageAs'), fp.modeSave);
|
||||||
fp.appendFilter("PNG", "*.png");
|
fp.appendFilter("PNG", "*.png");
|
||||||
fp.defaultString = Zotero.getString('fileTypes.image').toLowerCase() + '.png';
|
fp.defaultString = Zotero.getString('file-type-image').toLowerCase() + '.png';
|
||||||
let rv = await fp.show();
|
let rv = await fp.show();
|
||||||
if (rv === fp.returnOK || rv === fp.returnReplace) {
|
if (rv === fp.returnOK || rv === fp.returnReplace) {
|
||||||
let outputPath = fp.file;
|
let outputPath = fp.file;
|
||||||
|
|
|
@ -8,6 +8,17 @@ preferences-file-renaming-title = File Renaming
|
||||||
preferences-file-renaming-intro = { -app-name } automatically renames downloaded files based on the details of the parent item (title, author, etc.). You can choose to rename files added from your computer as well.
|
preferences-file-renaming-intro = { -app-name } automatically renames downloaded files based on the details of the parent item (title, author, etc.). You can choose to rename files added from your computer as well.
|
||||||
preferences-file-renaming-auto-rename-files =
|
preferences-file-renaming-auto-rename-files =
|
||||||
.label = Automatically rename locally added files
|
.label = Automatically rename locally added files
|
||||||
|
preferences-file-renaming-file-types = Rename files of these types:
|
||||||
|
preferences-file-renaming-file-type-pdf =
|
||||||
|
.label = { file-type-pdf }
|
||||||
|
preferences-file-renaming-file-type-epub =
|
||||||
|
.label = { file-type-ebook }
|
||||||
|
preferences-file-renaming-file-type-image =
|
||||||
|
.label = { file-type-image }
|
||||||
|
preferences-file-renaming-file-type-audio =
|
||||||
|
.label = { file-type-audio }
|
||||||
|
preferences-file-renaming-file-type-video =
|
||||||
|
.label = { file-type-video }
|
||||||
preferences-file-renaming-customize-button =
|
preferences-file-renaming-customize-button =
|
||||||
.label = Customize Filename Format…
|
.label = Customize Filename Format…
|
||||||
|
|
||||||
|
|
|
@ -659,3 +659,12 @@ find-pdf-files-added = { $count ->
|
||||||
|
|
||||||
select-items-dialog =
|
select-items-dialog =
|
||||||
.buttonlabelaccept = Select
|
.buttonlabelaccept = Select
|
||||||
|
|
||||||
|
file-type-webpage = Webpage
|
||||||
|
file-type-image = Image
|
||||||
|
file-type-pdf = PDF
|
||||||
|
file-type-audio = Audio
|
||||||
|
file-type-video = Video
|
||||||
|
file-type-presentation = Presentation
|
||||||
|
file-type-document = Document
|
||||||
|
file-type-ebook = Ebook
|
||||||
|
|
|
@ -643,15 +643,6 @@ creatorTypes.reviewedAuthor = Reviewed Author
|
||||||
creatorTypes.cosponsor = Cosponsor
|
creatorTypes.cosponsor = Cosponsor
|
||||||
creatorTypes.bookAuthor = Book Author
|
creatorTypes.bookAuthor = Book Author
|
||||||
|
|
||||||
fileTypes.webpage = Webpage
|
|
||||||
fileTypes.image = Image
|
|
||||||
fileTypes.pdf = PDF
|
|
||||||
fileTypes.audio = Audio
|
|
||||||
fileTypes.video = Video
|
|
||||||
fileTypes.presentation = Presentation
|
|
||||||
fileTypes.document = Document
|
|
||||||
fileTypes.ebook = Ebook
|
|
||||||
|
|
||||||
save.error.cannotMakeChangesToCollection = You cannot make changes to the currently selected collection.
|
save.error.cannotMakeChangesToCollection = You cannot make changes to the currently selected collection.
|
||||||
save.error.cannotAddFilesToCollection = You cannot add files to the currently selected collection.
|
save.error.cannotAddFilesToCollection = You cannot add files to the currently selected collection.
|
||||||
save.error.cannotAddToMyPublications = You cannot save items directly to My Publications. To add items, drag them from elsewhere in your library.
|
save.error.cannotAddToMyPublications = You cannot save items directly to My Publications. To add items, drag them from elsewhere in your library.
|
||||||
|
|
|
@ -111,7 +111,7 @@ describe("Zotero.Attachments", function() {
|
||||||
file: file,
|
file: file,
|
||||||
parentItemID: parent.id,
|
parentItemID: parent.id,
|
||||||
});
|
});
|
||||||
assert.equal(attachment.getField('title'), Zotero.getString('fileTypes.pdf'));
|
assert.equal(attachment.getField('title'), Zotero.getString('file-type-pdf'));
|
||||||
await parent.eraseTx();
|
await parent.eraseTx();
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
|
@ -152,7 +152,7 @@ describe("Zotero.Attachments", function() {
|
||||||
file: file,
|
file: file,
|
||||||
parentItemID: parent.id,
|
parentItemID: parent.id,
|
||||||
});
|
});
|
||||||
assert.equal(attachment.getField('title'), Zotero.getString('fileTypes.pdf'));
|
assert.equal(attachment.getField('title'), Zotero.getString('file-type-pdf'));
|
||||||
await parent.eraseTx();
|
await parent.eraseTx();
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
|
|
|
@ -1573,7 +1573,7 @@ describe("Zotero.ItemTree", function() {
|
||||||
// Add a PDF attachment, which will get a default title
|
// Add a PDF attachment, which will get a default title
|
||||||
let pdfAttachment1 = Zotero.Items.get((await promise)[0]);
|
let pdfAttachment1 = Zotero.Items.get((await promise)[0]);
|
||||||
assert.equal(pdfAttachment1.parentItemID, parentItem.id);
|
assert.equal(pdfAttachment1.parentItemID, parentItem.id);
|
||||||
assert.equal(pdfAttachment1.getField('title'), Zotero.getString('fileTypes.pdf'));
|
assert.equal(pdfAttachment1.getField('title'), Zotero.getString('file-type-pdf'));
|
||||||
|
|
||||||
promise = waitForItemEvent('add');
|
promise = waitForItemEvent('add');
|
||||||
drop(parentRow, 0, dataTransfer);
|
drop(parentRow, 0, dataTransfer);
|
||||||
|
|
|
@ -70,7 +70,7 @@ describe("Document Recognition", function() {
|
||||||
// The title should have changed
|
// The title should have changed
|
||||||
assert.equal(
|
assert.equal(
|
||||||
attachment.getField('title'),
|
attachment.getField('title'),
|
||||||
Zotero.getString('fileTypes.pdf')
|
Zotero.getString('file-type-pdf')
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -103,7 +103,7 @@ describe("Document Recognition", function() {
|
||||||
// The title should have changed
|
// The title should have changed
|
||||||
assert.equal(
|
assert.equal(
|
||||||
attachment.getField('title'),
|
attachment.getField('title'),
|
||||||
Zotero.getString('fileTypes.pdf')
|
Zotero.getString('file-type-pdf')
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -276,7 +276,7 @@ describe("Document Recognition", function() {
|
||||||
// The title should have changed
|
// The title should have changed
|
||||||
assert.equal(
|
assert.equal(
|
||||||
attachment.getField('title'),
|
attachment.getField('title'),
|
||||||
Zotero.getString('fileTypes.pdf')
|
Zotero.getString('file-type-pdf')
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -317,7 +317,7 @@ describe("Document Recognition", function() {
|
||||||
// The title should have changed
|
// The title should have changed
|
||||||
assert.equal(
|
assert.equal(
|
||||||
attachment.getField('title'),
|
attachment.getField('title'),
|
||||||
Zotero.getString('fileTypes.pdf')
|
Zotero.getString('file-type-pdf')
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -370,7 +370,7 @@ describe("Document Recognition", function() {
|
||||||
// The title should have changed
|
// The title should have changed
|
||||||
assert.equal(
|
assert.equal(
|
||||||
attachment.getField('title'),
|
attachment.getField('title'),
|
||||||
Zotero.getString('fileTypes.ebook')
|
Zotero.getString('file-type-ebook')
|
||||||
);
|
);
|
||||||
|
|
||||||
translateStub.restore();
|
translateStub.restore();
|
||||||
|
@ -408,7 +408,7 @@ describe("Document Recognition", function() {
|
||||||
// The title should have changed
|
// The title should have changed
|
||||||
assert.equal(
|
assert.equal(
|
||||||
attachment.getField('title'),
|
attachment.getField('title'),
|
||||||
Zotero.getString('fileTypes.ebook')
|
Zotero.getString('file-type-ebook')
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -2293,7 +2293,7 @@ describe("Zotero.Translate.ItemGetter", function() {
|
||||||
|
|
||||||
// Set fields
|
// Set fields
|
||||||
assert.equal(attachment.itemType, 'attachment', prefix + 'itemType is correct' + suffix);
|
assert.equal(attachment.itemType, 'attachment', prefix + 'itemType is correct' + suffix);
|
||||||
assert.include([Zotero.getString('fileTypes.pdf'), 'empty'], attachment.title, prefix + 'title is correct' + suffix);
|
assert.include([Zotero.getString('file-type-pdf'), 'empty'], attachment.title, prefix + 'title is correct' + suffix);
|
||||||
assert.equal(attachment.url, 'http://example.com', prefix + 'url is correct' + suffix);
|
assert.equal(attachment.url, 'http://example.com', prefix + 'url is correct' + suffix);
|
||||||
assert.equal(attachment.note, 'note', prefix + 'note is correct' + suffix);
|
assert.equal(attachment.note, 'note', prefix + 'note is correct' + suffix);
|
||||||
|
|
||||||
|
|
|
@ -1650,7 +1650,7 @@ describe("ZoteroPane", function() {
|
||||||
file.append('test.pdf');
|
file.append('test.pdf');
|
||||||
let [pdfAttachment1] = await zp.addAttachmentFromDialog(false, parentItem.id, [file.path]);
|
let [pdfAttachment1] = await zp.addAttachmentFromDialog(false, parentItem.id, [file.path]);
|
||||||
assert.equal(parentItem.getAttachments().length, 2);
|
assert.equal(parentItem.getAttachments().length, 2);
|
||||||
assert.equal(pdfAttachment1.getField('title'), Zotero.getString('fileTypes.pdf'));
|
assert.equal(pdfAttachment1.getField('title'), Zotero.getString('file-type-pdf'));
|
||||||
|
|
||||||
// Add a second, which will get a title based on its filename
|
// Add a second, which will get a title based on its filename
|
||||||
let [pdfAttachment2] = await zp.addAttachmentFromDialog(false, parentItem.id, [file.path]);
|
let [pdfAttachment2] = await zp.addAttachmentFromDialog(false, parentItem.id, [file.path]);
|
||||||
|
@ -1662,7 +1662,7 @@ describe("ZoteroPane", function() {
|
||||||
file.append('stub.epub');
|
file.append('stub.epub');
|
||||||
let [epubAttachment] = await zp.addAttachmentFromDialog(false, parentItem.id, [file.path]);
|
let [epubAttachment] = await zp.addAttachmentFromDialog(false, parentItem.id, [file.path]);
|
||||||
assert.equal(parentItem.getAttachments().length, 4);
|
assert.equal(parentItem.getAttachments().length, 4);
|
||||||
assert.equal(epubAttachment.getField('title'), Zotero.getString('fileTypes.ebook'));
|
assert.equal(epubAttachment.getField('title'), Zotero.getString('file-type-ebook'));
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue