From 08ed64f17f58fbd2a1d766af515dd2278f8cfb61 Mon Sep 17 00:00:00 2001 From: Dan Stillman Date: Wed, 2 Sep 2026 11:28:47 -0400 Subject: [PATCH] Fix "false" in Added By/Modified By columns for trashed collections MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The row values were computed with `row.isItem && …`, so collection and search rows in the trash got the boolean `false`, which the table then rendered as the text "false". https://forums.zotero.org/discussion/133560/ --- chrome/content/zotero/itemTree.jsx | 4 ++-- test/tests/collectionViewItemTreeTest.js | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/chrome/content/zotero/itemTree.jsx b/chrome/content/zotero/itemTree.jsx index a2c2bd248d..192626fa43 100644 --- a/chrome/content/zotero/itemTree.jsx +++ b/chrome/content/zotero/itemTree.jsx @@ -2403,8 +2403,8 @@ var ItemTree = class ItemTree extends LibraryTree { row.numNotes = treeRow.numNotes() || ""; row.feed = (treeRow.ref.isFeedItem && Zotero.Feeds.get(treeRow.ref.libraryID).name) || ""; row.lastRead = row.isItem ? treeRow.ref.getItemLastRead() : ""; - row.addedBy = row.isItem && treeRow.getAddedBy(); - row.lastModifiedBy = row.isItem && treeRow.getLastModifiedBy(); + row.addedBy = row.isItem ? treeRow.getAddedBy() : ""; + row.lastModifiedBy = row.isItem ? treeRow.getLastModifiedBy() : ""; row.title = treeRow.getDisplayTitle(); const columns = this.getColumns(); diff --git a/test/tests/collectionViewItemTreeTest.js b/test/tests/collectionViewItemTreeTest.js index 817b525c38..889b5dfc5a 100644 --- a/test/tests/collectionViewItemTreeTest.js +++ b/test/tests/collectionViewItemTreeTest.js @@ -1989,6 +1989,20 @@ describe("CollectionViewItemTree", function () { assert.equal(itemsView.getRow(searchRowIndex).type, 'search'); }); + it("shouldn't show a value in Added By/Modified By for trashed collections and searches", async function () { + let collection = await createDataObject('collection', { deleted: true }); + let search = await createDataObject('search', { deleted: true }); + + await selectTrash(win); + + for (let obj of [collection, search]) { + let row = itemsView.getRowIndexByID(obj.treeViewID); + assert.isNumber(row); + assert.strictEqual(itemsView.getCellText(row, 'addedBy'), ""); + assert.strictEqual(itemsView.getCellText(row, 'lastModifiedBy'), ""); + } + }); + it("shouldn't show trashed collections or searches when an advanced search is active", async function () { let item = await createDataObject('item', { title: "advancedTrashMatch", deleted: true }); let collection = await createDataObject('collection', { name: "advancedTrashMatch", deleted: true });