mirror of
https://github.com/zotero/zotero.git
synced 2026-10-05 02:43:38 +00:00
Add Relate Items to context menu (#5499)
This commit is contained in:
parent
7f9418fe98
commit
4f1589132c
3 changed files with 47 additions and 2 deletions
|
|
@ -2358,6 +2358,31 @@ var ZoteroPane = new function () {
|
|||
};
|
||||
|
||||
|
||||
this.relateSelectedItems = async function () {
|
||||
if (!this.canEdit()) {
|
||||
this.displayCannotEditLibraryMessage();
|
||||
return;
|
||||
}
|
||||
|
||||
let selectedItems = this.getSelectedItems();
|
||||
let saveOptions = {
|
||||
skipDateModifiedUpdate: true
|
||||
};
|
||||
await Zotero.DB.executeTransaction(async () => {
|
||||
for (let index1 = 0; index1 < selectedItems.length; index1++) {
|
||||
for (let index2 = index1 + 1; index2 < selectedItems.length; index2++) {
|
||||
let item1 = selectedItems[index1];
|
||||
let item2 = selectedItems[index2];
|
||||
item1.addRelatedItem(item2);
|
||||
item2.addRelatedItem(item1);
|
||||
await item1.save(saveOptions);
|
||||
await item2.save(saveOptions);
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
this.deleteSelectedCollection = function (deleteItems) {
|
||||
var collectionTreeRow = this.getCollectionTreeRow();
|
||||
|
||||
|
|
@ -3664,6 +3689,7 @@ var ZoteroPane = new function () {
|
|||
'moveToTrash',
|
||||
'deleteFromLibrary',
|
||||
'mergeItems',
|
||||
'relateItems',
|
||||
'sep4',
|
||||
'exportItems',
|
||||
'createBib',
|
||||
|
|
@ -3726,6 +3752,7 @@ var ZoteroPane = new function () {
|
|||
multiple = '.multiple';
|
||||
|
||||
var canMerge = true,
|
||||
showRelate = true, canRelate = true,
|
||||
canIndex = true,
|
||||
canRecognize = true,
|
||||
canUnrecognize = true,
|
||||
|
|
@ -3733,12 +3760,20 @@ var ZoteroPane = new function () {
|
|||
var canMarkRead = collectionTreeRow.isFeedsOrFeed();
|
||||
var markUnread = true;
|
||||
|
||||
for (let i = 0; i < items.length; i++) {
|
||||
let item = items[i];
|
||||
for (let item of items) {
|
||||
if (canMerge && (!item.isRegularItem() || item.isFeedItem || collectionTreeRow.isDuplicates())) {
|
||||
canMerge = false;
|
||||
}
|
||||
|
||||
if (showRelate) {
|
||||
if (item.isFeedItem) {
|
||||
showRelate = false;
|
||||
}
|
||||
else if (canRelate && items.every(otherItem => otherItem === item || otherItem.relatedItems.includes(item.key))) {
|
||||
canRelate = false;
|
||||
}
|
||||
}
|
||||
|
||||
if (canIndex && !((await Zotero.Fulltext.canReindex(item)))) {
|
||||
canIndex = false;
|
||||
}
|
||||
|
|
@ -3764,6 +3799,13 @@ var ZoteroPane = new function () {
|
|||
if (canMerge) {
|
||||
show.add(m.mergeItems);
|
||||
}
|
||||
|
||||
if (showRelate) {
|
||||
show.add(m.relateItems);
|
||||
if (!canRelate) {
|
||||
disable.add(m.relateItems);
|
||||
}
|
||||
}
|
||||
|
||||
if (canIndex) {
|
||||
show.add(m.reindexItem);
|
||||
|
|
|
|||
|
|
@ -986,6 +986,7 @@
|
|||
<menuitem class="menuitem-iconic zotero-menuitem-move-to-trash" oncommand="ZoteroPane_Local.deleteSelectedItems(true, true);"/>
|
||||
<menuitem class="menuitem-iconic zotero-menuitem-delete-from-lib" oncommand="ZoteroPane_Local.deleteSelectedItems(false, true)"/>
|
||||
<menuitem class="menuitem-iconic zotero-menuitem-merge-items" label="&zotero.items.menu.mergeItems;" oncommand="ZoteroPane_Local.mergeSelectedItems();"/>
|
||||
<menuitem class="menuitem-iconic zotero-menuitem-relate-items" data-l10n-id="item-menu-relate-items" oncommand="ZoteroPane_Local.relateSelectedItems();"/>
|
||||
<menuseparator/>
|
||||
<menuitem class="menuitem-iconic zotero-menuitem-export" oncommand="Zotero_File_Interface.exportItems();"/>
|
||||
<menuitem class="menuitem-iconic zotero-menuitem-create-bibliography" oncommand="Zotero_File_Interface.bibliographyFromItems();"/>
|
||||
|
|
|
|||
|
|
@ -205,6 +205,8 @@ item-menu-add-url =
|
|||
.label = Web Link
|
||||
item-menu-change-parent-item =
|
||||
.label = Change Parent Item…
|
||||
item-menu-relate-items =
|
||||
.label = Relate Items
|
||||
|
||||
view-online = View Online
|
||||
item-menu-option-view-online =
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue