From 7572eebcd1538dfa5ea33a42b8b7874d2081d4e3 Mon Sep 17 00:00:00 2001 From: Dan Stillman Date: Wed, 7 Aug 2013 15:20:59 -0400 Subject: [PATCH] Offer autocomplete of same creator for different creator types If a creator exists on an item but is a different creator type than the one being entered, show creator in autocomplete list. --- chrome/content/zotero/bindings/itembox.xml | 52 +++++++++++++++++++--- components/zotero-autocomplete.js | 14 +++--- 2 files changed, 56 insertions(+), 10 deletions(-) diff --git a/chrome/content/zotero/bindings/itembox.xml b/chrome/content/zotero/bindings/itembox.xml index d763c9297..34538c8ac 100644 --- a/chrome/content/zotero/bindings/itembox.xml +++ b/chrome/content/zotero/bindings/itembox.xml @@ -1422,13 +1422,25 @@ || fieldName == 'creator') { t.setAttribute('type', 'autocomplete'); t.setAttribute('autocompletesearch', 'zotero'); - let params = { + + var params = { fieldName: fieldName, libraryID: this.item.libraryID }; if (field == 'creator') { params.fieldMode = parseInt(elem.getAttribute('fieldMode')); - params.itemID = itemID ? itemID : ''; + + // Include itemID and creatorTypeID so the autocomplete can + // avoid showing results for creators already set on the item + var row = Zotero.getAncestorByTagName(elem, 'row'); + var creatorTypeID = parseInt( + row.getElementsByClassName('creator-type-label')[0] + .getAttribute('typeid') + ); + if (itemID) { + params.itemID = itemID; + params.creatorTypeID = creatorTypeID; + } }; t.setAttribute( 'autocompletesearchparam', JSON.stringify(params) @@ -2163,6 +2175,25 @@ + + + + + + + + +