From e478c89ca0ab475b49d6dbf75f16f0bdfaa6680f Mon Sep 17 00:00:00 2001 From: Dan Stillman Date: Tue, 13 Jan 2026 11:33:00 -0500 Subject: [PATCH] Fix base-mapped fields not being migrated from Extra https://forums.zotero.org/discussion/comment/505322/#Comment_505322 --- chrome/content/zotero/xpcom/utilities_internal.js | 2 +- test/tests/utilities_internalTest.js | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/chrome/content/zotero/xpcom/utilities_internal.js b/chrome/content/zotero/xpcom/utilities_internal.js index 3e00edf2da..57e0d54ee7 100644 --- a/chrome/content/zotero/xpcom/utilities_internal.js +++ b/chrome/content/zotero/xpcom/utilities_internal.js @@ -1170,7 +1170,7 @@ Zotero.Utilities.Internal = { // have values if (item) { let fieldID = Zotero.ItemFields.getID(possibleField); - if (!Zotero.ItemFields.isValidForType(fieldID, itemTypeID) + if (!Zotero.ItemFields.getFieldIDFromTypeAndBase(itemTypeID, fieldID) || item.getField(fieldID) || additionalFields.has(possibleField)) { return true; diff --git a/test/tests/utilities_internalTest.js b/test/tests/utilities_internalTest.js index f4336cc695..5d293803fc 100644 --- a/test/tests/utilities_internalTest.js +++ b/test/tests/utilities_internalTest.js @@ -202,6 +202,16 @@ describe("Zotero.Utilities.Internal", function () { assert.strictEqual(extra, ''); }); + it("should extract a base-mapped field for a given item", function () { + var item = createUnsavedDataObject('item', { itemType: 'book' }); + var val = 'Foo'; + var str = `medium: ${val}`; + var { fields, extra } = Zotero.Utilities.Internal.extractExtraFields(str, item); + assert.equal(fields.size, 1); + assert.equal(fields.get('medium'), val); + assert.strictEqual(extra, ''); + }); + it("should extract a CSL field", function () { var val = '10.1234/abcdef'; var str = `container-title: ${val}`;