Limit autocomplete in Advanced Search to specific creator types
For `author`, `bookAuthor`, and `editor` conditions added in #2253
This commit is contained in:
parent
91cdc5610b
commit
db35f55c96
2 changed files with 20 additions and 5 deletions
|
@ -989,7 +989,6 @@
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|
||||||
var textbox = document.getAnonymousNodes(this)[0];
|
var textbox = document.getAnonymousNodes(this)[0];
|
||||||
textbox.setAttribute('type', 'autocomplete');
|
textbox.setAttribute('type', 'autocomplete');
|
||||||
textbox.setAttribute('autocompletesearch', 'zotero');
|
textbox.setAttribute('autocompletesearch', 'zotero');
|
||||||
|
@ -999,8 +998,13 @@
|
||||||
var autocompleteParams = {
|
var autocompleteParams = {
|
||||||
fieldName: condition
|
fieldName: condition
|
||||||
};
|
};
|
||||||
if (condition == 'creator') {
|
switch (condition) {
|
||||||
|
case 'creator':
|
||||||
|
case 'author':
|
||||||
|
case 'bookAuthor':
|
||||||
|
case 'editor':
|
||||||
autocompleteParams.fieldMode = 2;
|
autocompleteParams.fieldMode = 2;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
textbox.setAttribute(
|
textbox.setAttribute(
|
||||||
'autocompletesearchparam',
|
'autocompletesearchparam',
|
||||||
|
|
|
@ -87,6 +87,9 @@ ZoteroAutoComplete.prototype.startSearch = Zotero.Promise.coroutine(function* (s
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'creator':
|
case 'creator':
|
||||||
|
case 'author':
|
||||||
|
case 'bookAuthor':
|
||||||
|
case 'editor':
|
||||||
// Valid fieldMode values:
|
// Valid fieldMode values:
|
||||||
// 0 == search two-field creators
|
// 0 == search two-field creators
|
||||||
// 1 == search single-field creators
|
// 1 == search single-field creators
|
||||||
|
@ -95,15 +98,23 @@ ZoteroAutoComplete.prototype.startSearch = Zotero.Promise.coroutine(function* (s
|
||||||
var sql = "SELECT DISTINCT CASE fieldMode WHEN 1 THEN lastName "
|
var sql = "SELECT DISTINCT CASE fieldMode WHEN 1 THEN lastName "
|
||||||
+ "WHEN 0 THEN firstName || ' ' || lastName END AS val, NULL AS id "
|
+ "WHEN 0 THEN firstName || ' ' || lastName END AS val, NULL AS id "
|
||||||
+ "FROM creators ";
|
+ "FROM creators ";
|
||||||
|
if (fieldName != 'creator' || searchParams.libraryID) {
|
||||||
|
sql += "JOIN itemCreators USING (creatorID) ";
|
||||||
|
}
|
||||||
if (searchParams.libraryID) {
|
if (searchParams.libraryID) {
|
||||||
sql += "JOIN itemCreators USING (creatorID) JOIN items USING (itemID) ";
|
sql += "JOIN items USING (itemID) ";
|
||||||
}
|
}
|
||||||
sql += "WHERE CASE fieldMode "
|
sql += "WHERE CASE fieldMode "
|
||||||
+ "WHEN 1 THEN lastName LIKE ?1 "
|
+ "WHEN 1 THEN lastName LIKE ?1 "
|
||||||
+ "WHEN 0 THEN (firstName || ' ' || lastName LIKE ?1) OR (lastName LIKE ?1) END ";
|
+ "WHEN 0 THEN (firstName || ' ' || lastName LIKE ?1) OR (lastName LIKE ?1) END ";
|
||||||
var sqlParams = [searchString + '%'];
|
var sqlParams = [searchString + '%'];
|
||||||
|
// Limit results to specific creator type
|
||||||
|
if (fieldName != 'creator') {
|
||||||
|
sql += "AND creatorTypeID=? ";
|
||||||
|
sqlParams.push(Zotero.CreatorTypes.getID(fieldName));
|
||||||
|
}
|
||||||
if (searchParams.libraryID) {
|
if (searchParams.libraryID) {
|
||||||
sql += ` AND libraryID=?${sqlParams.length + 1}`;
|
sql += ` AND libraryID=? `;
|
||||||
sqlParams.push(searchParams.libraryID);
|
sqlParams.push(searchParams.libraryID);
|
||||||
}
|
}
|
||||||
sql += "ORDER BY val";
|
sql += "ORDER BY val";
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue