From 5d8924b747e37c670aebf46ea705cda4e95f1594 Mon Sep 17 00:00:00 2001 From: Dan Stillman Date: Tue, 24 Oct 2006 19:39:52 +0000 Subject: [PATCH] Fix problems with two-field creator autocomplete and multiword last names getting moved incorrectly to the firstname field --- chrome/content/zotero/itemPane.js | 42 +++++++++++++++++++------------ 1 file changed, 26 insertions(+), 16 deletions(-) diff --git a/chrome/content/zotero/itemPane.js b/chrome/content/zotero/itemPane.js index b863a9514..6b3149966 100644 --- a/chrome/content/zotero/itemPane.js +++ b/chrome/content/zotero/itemPane.js @@ -486,7 +486,6 @@ var ZoteroItemPane = new function() // Name var firstlast = document.createElement("hbox"); firstlast.setAttribute("flex","1"); - var tabindex = _tabIndexMinCreators + (_creatorCount * 2); var lastNameLabel = firstlast.appendChild( createValueElement( @@ -600,11 +599,14 @@ var ZoteroItemPane = new function() // Hide first name field and prepend to last name field firstName.setAttribute('hidden', true); comma.setAttribute('hidden', true); - var first = _getFieldValue(firstName); - if (first && first != _defaultFirstName) - { - var last = _getFieldValue(lastName); - _setFieldValue(lastName, first + ' ' + last); + + if (!initial){ + var first = _getFieldValue(firstName); + if (first && first != _defaultFirstName) + { + var last = _getFieldValue(lastName); + _setFieldValue(lastName, first + ' ' + last); + } } if (_getFieldValue(lastName) == _defaultLastName) @@ -629,16 +631,18 @@ var ZoteroItemPane = new function() _tabIndexMaxCreators++; } - // Move all but last word to first name field and show it - var last = _getFieldValue(lastName); - if (last && last != _defaultFullName) - { - var lastNameRE = /(.*?)[ ]*([^ ]+[ ]*)$/; - var parts = lastNameRE.exec(last); - if (parts[2] && parts[2] != last) + if (!initial){ + // Move all but last word to first name field and show it + var last = _getFieldValue(lastName); + if (last && last != _defaultFullName) { - _setFieldValue(lastName, parts[2]); - _setFieldValue(firstName, parts[1]); + var lastNameRE = /(.*?)[ ]*([^ ]+[ ]*)$/; + var parts = lastNameRE.exec(last); + if (parts[2] && parts[2] != last) + { + _setFieldValue(lastName, parts[2]); + _setFieldValue(firstName, parts[1]); + } } } @@ -903,7 +907,13 @@ var ZoteroItemPane = new function() else if (otherField=='lastName'){ var label = textbox.previousSibling.previousSibling; } - label.firstChild.nodeValue = creator[otherField]; + + if (label.firstChild){ + label.firstChild.nodeValue = creator[otherField]; + } + else { + label.value = creator[otherField]; + } var row = textbox.parentNode.parentNode.parentNode; var otherFields = ZoteroItemPane.getCreatorFields(row);