Add autocomplete on some more fields in the metadata pane, including all the type and medium fields (but not across each other, since they're distinct fields)
Add asNames option to Z.ItemFields.getTypeFieldsFromBase() to return field names instead of ids
This commit is contained in:
parent
42f2b56bb4
commit
f7671f2a93
|
@ -1030,33 +1030,41 @@ var ZoteroItemPane = new function()
|
|||
}
|
||||
else
|
||||
{
|
||||
var autoCompleteFields = [
|
||||
'creator',
|
||||
'journalAbbreviation',
|
||||
'seriesTitle',
|
||||
'seriesText',
|
||||
'repository',
|
||||
'callNumber',
|
||||
'archiveLocation',
|
||||
'language',
|
||||
'rights',
|
||||
'tag'
|
||||
];
|
||||
|
||||
// Add the type-specific versions of these base fields
|
||||
var baseACFields = ['publisher', 'publicationTitle', 'type',
|
||||
'medium', 'place'];
|
||||
autoCompleteFields = autoCompleteFields.concat(baseACFields);
|
||||
|
||||
for each(var baseField in baseACFields) {
|
||||
var add = Zotero.ItemFields.getTypeFieldsFromBase(baseField, true)
|
||||
autoCompleteFields = autoCompleteFields.concat(add);
|
||||
}
|
||||
|
||||
// Add auto-complete for certain fields
|
||||
switch (field)
|
||||
{
|
||||
case 'creator':
|
||||
case 'publisher':
|
||||
case 'place':
|
||||
case 'publicationTitle':
|
||||
case 'journalAbbreviation':
|
||||
case 'seriesTitle':
|
||||
case 'seriesText':
|
||||
case 'tag':
|
||||
// DEBUG: should have type and medium, but they need to be
|
||||
// broken out first into multiple fields (artworkType,
|
||||
// interviewMedium, etc.)
|
||||
t.setAttribute('type', 'autocomplete');
|
||||
t.setAttribute('autocompletesearch', 'zotero');
|
||||
var suffix = itemID ? itemID : '';
|
||||
if (field=='creator')
|
||||
{
|
||||
suffix = (elem.getAttribute('singleField')=='true'
|
||||
? '1' : '0') + '-' + suffix;
|
||||
}
|
||||
t.setAttribute('autocompletesearchparam',
|
||||
fieldName + '/' + suffix);
|
||||
t.setAttribute('ontextentered',
|
||||
'ZoteroItemPane.handleCreatorAutoCompleteSelect(this)');
|
||||
break;
|
||||
if (autoCompleteFields.indexOf(field) != -1) {
|
||||
t.setAttribute('type', 'autocomplete');
|
||||
t.setAttribute('autocompletesearch', 'zotero');
|
||||
var suffix = itemID ? itemID : '';
|
||||
if (field=='creator') {
|
||||
suffix = (elem.getAttribute('singleField')=='true'
|
||||
? '1' : '0') + '-' + suffix;
|
||||
}
|
||||
t.setAttribute('autocompletesearchparam', fieldName + '/' + suffix);
|
||||
t.setAttribute('ontextentered',
|
||||
'ZoteroItemPane.handleCreatorAutoCompleteSelect(this)');
|
||||
}
|
||||
}
|
||||
var box = elem.parentNode;
|
||||
|
|
|
@ -28,7 +28,6 @@
|
|||
Zotero.Item = function(){
|
||||
this._init();
|
||||
|
||||
// Accept itemTypeID in constructor
|
||||
if (arguments.length){
|
||||
this.setType(Zotero.ItemTypes.getID(arguments[0]));
|
||||
}
|
||||
|
@ -2315,8 +2314,8 @@ Zotero.Items = new function(){
|
|||
}
|
||||
|
||||
|
||||
function getNewItemByType(itemTypeID){
|
||||
return new Zotero.Item(itemTypeID);
|
||||
function getNewItemByType(itemType){
|
||||
return new Zotero.Item(itemType);
|
||||
}
|
||||
|
||||
|
||||
|
@ -3973,14 +3972,18 @@ Zotero.ItemFields = new function(){
|
|||
*
|
||||
* e.g. 'publisher' returns fieldIDs for [university, studio, label, network]
|
||||
*/
|
||||
function getTypeFieldsFromBase(baseField) {
|
||||
function getTypeFieldsFromBase(baseField, asNames) {
|
||||
var baseFieldID = this.getID(baseField);
|
||||
if (!baseFieldID) {
|
||||
throw ("Invalid base field '" + baseField + '" in ItemFields.getTypeFieldsFromBase()');
|
||||
}
|
||||
|
||||
return Zotero.DB.columnQuery("SELECT fieldID FROM baseFieldMappings "
|
||||
+ "WHERE baseFieldID=?", baseFieldID);
|
||||
var sql = "SELECT fieldID FROM baseFieldMappings WHERE baseFieldID=?";
|
||||
if (asNames) {
|
||||
sql = "SELECT fieldName FROM fields WHERE fieldID IN (" + sql + ")";
|
||||
}
|
||||
|
||||
return Zotero.DB.columnQuery(sql, baseFieldID);
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user