Select next logical tag when adding multiple tags at once.
This commit is contained in:
parent
e10d049428
commit
87c47c0615
2 changed files with 49 additions and 21 deletions
|
@ -412,11 +412,8 @@
|
||||||
var fieldName = 'tag';
|
var fieldName = 'tag';
|
||||||
var tabindex = textbox.getAttribute('ztabindex');
|
var tabindex = textbox.getAttribute('ztabindex');
|
||||||
|
|
||||||
//var value = t.value;
|
|
||||||
var value = textbox.value;
|
var value = textbox.value;
|
||||||
|
|
||||||
var elem;
|
|
||||||
|
|
||||||
var tagsbox = Zotero.getAncestorByTagName(textbox, 'tagsbox');
|
var tagsbox = Zotero.getAncestorByTagName(textbox, 'tagsbox');
|
||||||
if (!tagsbox)
|
if (!tagsbox)
|
||||||
{
|
{
|
||||||
|
@ -462,7 +459,34 @@
|
||||||
value = value.replace('\r\n','\n');
|
value = value.replace('\r\n','\n');
|
||||||
value = value.replace('\r','\n');
|
value = value.replace('\r','\n');
|
||||||
var nameArray = value.split('\n');
|
var nameArray = value.split('\n');
|
||||||
|
|
||||||
|
var extremeTag = false;
|
||||||
|
var nextTag = false;
|
||||||
|
if (this._tabDirection == -1) {
|
||||||
|
if (this._lastTabIndex == 1) {
|
||||||
|
extremeTag = true;
|
||||||
|
} else {
|
||||||
|
nextTag = row.previousSibling.getAttribute('id').split('-')[1];
|
||||||
|
}
|
||||||
|
} else if (this._tabDirection == 1) {
|
||||||
|
if (this._lastTabIndex >= this.item.getTags().length) {
|
||||||
|
extremeTag = true;
|
||||||
|
} else {
|
||||||
|
nextTag = row.nextSibling.getAttribute('id').split('-')[1];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
id = this.item.addTags(nameArray);
|
id = this.item.addTags(nameArray);
|
||||||
|
|
||||||
|
if (extremeTag) {
|
||||||
|
if (this._tabDirection == 1) {
|
||||||
|
this._lastTabIndex = this.item.getTags().length;
|
||||||
|
} else if (this._tabDirection == -1) {
|
||||||
|
this._lastTabIndex = 2;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
this._lastTabIndex = this.item.getTagIndex(nextTag)+1-this._tabDirection;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
id = tagsbox.add(value);
|
id = tagsbox.add(value);
|
||||||
|
@ -474,7 +498,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
if (id) {
|
if (id) {
|
||||||
elem = this.createValueElement(
|
var elem = this.createValueElement(
|
||||||
value,
|
value,
|
||||||
tabindex
|
tabindex
|
||||||
);
|
);
|
||||||
|
@ -492,23 +516,11 @@
|
||||||
catch (e) {}
|
catch (e) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
var focusMode = 'tags';
|
|
||||||
var focusBox = tagsbox;
|
var focusBox = tagsbox;
|
||||||
|
|
||||||
//Move at least one field even if no entry was added because of
|
|
||||||
//the way bookkeeping is done above
|
|
||||||
var fieldsToMove = 1;
|
|
||||||
//Check if id is an array and, if so, how many new entries
|
|
||||||
//were added at once
|
|
||||||
if (Object.prototype.toString.call(id) === '[object Array]') {
|
|
||||||
fieldsToMove = id.length;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this._tabDirection) {
|
if (this._tabDirection) {
|
||||||
for (var i = 0; i < fieldsToMove; i++) {
|
|
||||||
this._focusNextField(focusBox, this._lastTabIndex, this._tabDirection == -1);
|
this._focusNextField(focusBox, this._lastTabIndex, this._tabDirection == -1);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
]]>
|
]]>
|
||||||
</body>
|
</body>
|
||||||
</method>
|
</method>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
***** BEGIN LICENSE BLOCK *****
|
***** BEGIN LICENSE BLOCK *****
|
||||||
|
|
||||||
Copyright © 2009 Center for History and New Media
|
Copyright © 2009 Center for History and New Media
|
||||||
George Mason University, Fairfax, Virginia, USA
|
George Mason University, Fairfax, Virginia, USA
|
||||||
http://zotero.org
|
http://zotero.org
|
||||||
|
|
||||||
|
@ -2703,7 +2703,7 @@ Zotero.Item.prototype.getFile = function(row, skipExistsCheck) {
|
||||||
// Strip "storage:"
|
// Strip "storage:"
|
||||||
var path = row.path.substr(8);
|
var path = row.path.substr(8);
|
||||||
// setRelativeDescriptor() silently uses the parent directory on Windows
|
// setRelativeDescriptor() silently uses the parent directory on Windows
|
||||||
// if the filename contains certain characters, so strip them —
|
// if the filename contains certain characters, so strip them —
|
||||||
// but don't skip characters outside of XML range, since they may be
|
// but don't skip characters outside of XML range, since they may be
|
||||||
// correct in the opaque relative descriptor string
|
// correct in the opaque relative descriptor string
|
||||||
//
|
//
|
||||||
|
@ -3637,6 +3637,22 @@ Zotero.Item.prototype.getTagIDs = function() {
|
||||||
return Zotero.DB.columnQuery(sql, this.id);
|
return Zotero.DB.columnQuery(sql, this.id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Return the index of tagID in the list of the item's tags
|
||||||
|
//sorted in alphabetical order.
|
||||||
|
Zotero.Item.prototype.getTagIndex = function(tagID) {
|
||||||
|
var tags = this.getTags();
|
||||||
|
|
||||||
|
var tagIndex=-1;
|
||||||
|
for (var i=0;i<tags.length;i++) {
|
||||||
|
if (tagID == tags[i].id) {
|
||||||
|
tagIndex=i;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return tagIndex;
|
||||||
|
}
|
||||||
|
|
||||||
Zotero.Item.prototype.replaceTag = function(oldTagID, newTag) {
|
Zotero.Item.prototype.replaceTag = function(oldTagID, newTag) {
|
||||||
if (!this.id) {
|
if (!this.id) {
|
||||||
throw ('Cannot replace tag on unsaved item');
|
throw ('Cannot replace tag on unsaved item');
|
||||||
|
|
Loading…
Reference in a new issue