Remove old tags box code from itembox.xml
This commit is contained in:
parent
f932f312eb
commit
a921c57d5d
1 changed files with 54 additions and 212 deletions
|
@ -256,8 +256,7 @@
|
|||
<field name="_tabIndexMinCreators" readonly="true">10</field>
|
||||
<field name="_tabIndexMaxCreators">0</field>
|
||||
<field name="_tabIndexMinFields" readonly="true">1000</field>
|
||||
<field name="_tabIndexMaxInfoFields">0</field>
|
||||
<field name="_tabIndexMaxTagsFields">0</field>
|
||||
<field name="_tabIndexMaxFields">0</field>
|
||||
|
||||
<property name="_defaultFirstName"
|
||||
onget="return '(' + Zotero.getString('pane.item.defaultFirstName') + ')'"/>
|
||||
|
@ -364,7 +363,7 @@
|
|||
// Start tabindex at 1001 after creators
|
||||
var tabindex = fieldIsClickable
|
||||
? (i>0 ? this._tabIndexMinFields + i : 1) : 0;
|
||||
this._tabIndexMaxInfoFields = Math.max(this._tabIndexMaxInfoFields, tabindex);
|
||||
this._tabIndexMaxFields = Math.max(this._tabIndexMaxFields, tabindex);
|
||||
|
||||
if (fieldIsClickable
|
||||
&& !Zotero.Items.isPrimaryField(fieldName)
|
||||
|
@ -568,7 +567,7 @@
|
|||
// Move to next or previous field if (shift-)tab was pressed
|
||||
if (this._lastTabIndex && this._tabDirection)
|
||||
{
|
||||
this._focusNextField('info', this._dynamicFields, this._lastTabIndex, this._tabDirection == -1);
|
||||
this._focusNextField(this._dynamicFields, this._lastTabIndex, this._tabDirection == -1);
|
||||
}
|
||||
]]>
|
||||
</body>
|
||||
|
@ -1239,10 +1238,6 @@
|
|||
valueText = Zotero.ItemTypes.getLocalizedString(valueText);
|
||||
break;
|
||||
|
||||
case 'tag':
|
||||
this._tabIndexMaxTagsFields = Math.max(this._tabIndexMaxTagsFields, tabindex);
|
||||
break;
|
||||
|
||||
// Convert dates from UTC
|
||||
case 'dateAdded':
|
||||
case 'dateModified':
|
||||
|
@ -1371,11 +1366,6 @@
|
|||
var value = c ? c.ref[creatorField] : '';
|
||||
var itemID = this.item.id;
|
||||
}
|
||||
else if (fieldName=='tag') {
|
||||
var tagID = elem.parentNode.getAttribute('id').split('-')[1];
|
||||
var value = tagID ? Zotero.Tags.getName(tagID) : '';
|
||||
var itemID = Zotero.getAncestorByTagName(elem, 'tagsbox').item.id;
|
||||
}
|
||||
else {
|
||||
var value = this.item.getField(fieldName);
|
||||
var itemID = this.item.id;
|
||||
|
@ -1423,8 +1413,7 @@
|
|||
else {
|
||||
// Add auto-complete for certain fields
|
||||
if (Zotero.ItemFields.isAutocompleteField(fieldName)
|
||||
|| fieldName == 'creator'
|
||||
|| fieldName == 'tag') {
|
||||
|| fieldName == 'creator') {
|
||||
t.setAttribute('type', 'autocomplete');
|
||||
t.setAttribute('autocompletesearch', 'zotero');
|
||||
var suffix = itemID ? itemID : '';
|
||||
|
@ -1556,24 +1545,14 @@
|
|||
// DEBUG: what happens if this isn't present?
|
||||
event.preventDefault();
|
||||
|
||||
if (fieldname == 'tag')
|
||||
{
|
||||
// If last tag row, create new one
|
||||
var row = target.parentNode.parentNode;
|
||||
if (row == row.parentNode.lastChild)
|
||||
{
|
||||
this._tabDirection = 1;
|
||||
var lastTag = true;
|
||||
}
|
||||
}
|
||||
// Shift-enter adds new creator row
|
||||
else if (fieldname.indexOf('creator-') == 0 && event.shiftKey) {
|
||||
if (fieldname.indexOf('creator-') == 0 && event.shiftKey) {
|
||||
// Value hasn't changed
|
||||
if (target.getAttribute('value') == target.value) {
|
||||
Zotero.debug("Value hasn't changed");
|
||||
// If + button is disabled, just focus next creator row
|
||||
if (Zotero.getAncestorByTagName(target, 'row').lastChild.lastChild.disabled) {
|
||||
this._focusNextField('info', this._dynamicFields, this._lastTabIndex, false);
|
||||
this._focusNextField(this._dynamicFields, this._lastTabIndex, false);
|
||||
}
|
||||
else {
|
||||
// TODO: should use current creator type
|
||||
|
@ -1591,11 +1570,9 @@
|
|||
focused.blur();
|
||||
|
||||
// Return focus to items pane
|
||||
if (!lastTag) {
|
||||
var tree = document.getElementById('zotero-items-tree');
|
||||
if (tree) {
|
||||
tree.focus();
|
||||
}
|
||||
var tree = document.getElementById('zotero-items-tree');
|
||||
if (tree) {
|
||||
tree.focus();
|
||||
}
|
||||
|
||||
return false;
|
||||
|
@ -1604,14 +1581,8 @@
|
|||
// Reset field to original value
|
||||
target.value = target.getAttribute('value');
|
||||
|
||||
var tagsbox = Zotero.getAncestorByTagName(focused, 'tagsbox');
|
||||
|
||||
focused.blur();
|
||||
|
||||
if (tagsbox) {
|
||||
tagsbox.closePopup();
|
||||
}
|
||||
|
||||
// Return focus to items pane
|
||||
var tree = document.getElementById('zotero-items-tree');
|
||||
if (tree) {
|
||||
|
@ -1639,7 +1610,7 @@
|
|||
<body>
|
||||
<![CDATA[
|
||||
if (!event.shiftKey) {
|
||||
this.focusFirstField('info');
|
||||
this.focusFirstField();
|
||||
event.preventDefault();
|
||||
}
|
||||
// Shift-tab
|
||||
|
@ -1770,83 +1741,6 @@
|
|||
);
|
||||
}
|
||||
|
||||
// Tags
|
||||
else if (fieldName=='tag') {
|
||||
var tagsbox = Zotero.getAncestorByTagName(textbox, 'tagsbox');
|
||||
if (!tagsbox)
|
||||
{
|
||||
Zotero.debug('Tagsbox not found', 1);
|
||||
return;
|
||||
}
|
||||
|
||||
var row = textbox.parentNode;
|
||||
var rows = row.parentNode;
|
||||
|
||||
// Tag id encoded as 'tag-1234'
|
||||
var id = row.getAttribute('id').split('-')[1];
|
||||
|
||||
if (saveChanges) {
|
||||
if (id) {
|
||||
if (value) {
|
||||
// If trying to replace with another existing tag
|
||||
// (which causes a delete of the row),
|
||||
// clear the tab direction so we don't advance
|
||||
// when the notifier kicks in
|
||||
var existing = Zotero.Tags.getID(value, 0);
|
||||
if (existing && id != existing)
|
||||
{
|
||||
this._tabDirection = false;
|
||||
}
|
||||
var changed = tagsbox.replace(id, value);
|
||||
if (changed)
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
else {
|
||||
tagsbox.remove(id);
|
||||
return;
|
||||
}
|
||||
}
|
||||
// New tag
|
||||
else {
|
||||
// If this is an existing automatic tag, it's going to be
|
||||
// deleted and the number of rows will stay the same,
|
||||
// so we have to compensate
|
||||
var existingTypes = Zotero.Tags.getTypes(value);
|
||||
if (existingTypes && existingTypes.indexOf(1) != -1) {
|
||||
this._lastTabIndex--;
|
||||
}
|
||||
var id = tagsbox.add(value);
|
||||
}
|
||||
}
|
||||
|
||||
if (id) {
|
||||
elem = this.createValueElement(
|
||||
value,
|
||||
'tag',
|
||||
tabindex
|
||||
);
|
||||
}
|
||||
else {
|
||||
// Just remove the row
|
||||
//
|
||||
// If there's an open popup, this throws NODE CANNOT BE FOUND
|
||||
try {
|
||||
var row = rows.removeChild(row);
|
||||
}
|
||||
catch (e) {}
|
||||
tagsbox.fixPopup();
|
||||
tagsbox.closePopup();
|
||||
|
||||
this._tabDirection = false;
|
||||
return;
|
||||
}
|
||||
|
||||
var focusMode = 'tags';
|
||||
var focusBox = tagsbox;
|
||||
}
|
||||
|
||||
// Fields
|
||||
else {
|
||||
// Access date needs to be parsed and converted to UTC
|
||||
|
@ -1932,11 +1826,8 @@
|
|||
}
|
||||
|
||||
if (this._tabDirection) {
|
||||
if (!focusMode) {
|
||||
var focusMode = 'info';
|
||||
var focusBox = this._dynamicFields;
|
||||
}
|
||||
this._focusNextField(focusMode, focusBox, this._lastTabIndex, this._tabDirection == -1);
|
||||
var focusBox = this._dynamicFields;
|
||||
this._focusNextField(focusBox, this._lastTabIndex, this._tabDirection == -1);
|
||||
}
|
||||
}
|
||||
// Thrown errors don't seem to show up within XBL without explicit logging
|
||||
|
@ -2280,14 +2171,9 @@
|
|||
|
||||
|
||||
<method name="focusFirstField">
|
||||
<parameter name="mode"/>
|
||||
<body>
|
||||
<![CDATA[
|
||||
switch (mode) {
|
||||
case 'info':
|
||||
this._focusNextField('info', this._dynamicFields, 0, false);
|
||||
break;
|
||||
}
|
||||
this._focusNextField(this._dynamicFields, 0, false);
|
||||
]]>
|
||||
</body>
|
||||
</method>
|
||||
|
@ -2302,7 +2188,6 @@
|
|||
completes, so it doesn't know where it's supposed to go next.)
|
||||
-->
|
||||
<method name="_focusNextField">
|
||||
<parameter name="mode"/>
|
||||
<parameter name="box"/>
|
||||
<parameter name="tabindex"/>
|
||||
<parameter name="back"/>
|
||||
|
@ -2312,102 +2197,59 @@
|
|||
|
||||
if (back)
|
||||
{
|
||||
if (mode=='info')
|
||||
switch (tabindex)
|
||||
{
|
||||
switch (tabindex)
|
||||
{
|
||||
case 1:
|
||||
//Zotero.debug('At beginning');
|
||||
document.getElementById('item-type-menu').focus();
|
||||
return false;
|
||||
|
||||
case this._tabIndexMinCreators:
|
||||
case 1:
|
||||
//Zotero.debug('At beginning');
|
||||
document.getElementById('item-type-menu').focus();
|
||||
return false;
|
||||
|
||||
case this._tabIndexMinCreators:
|
||||
var nextIndex = 1; // Title field
|
||||
break;
|
||||
|
||||
case this._tabIndexMinFields:
|
||||
// No creators
|
||||
if (this._tabIndexMaxCreators == 0) {
|
||||
var nextIndex = 1; // Title field
|
||||
break;
|
||||
|
||||
case this._tabIndexMinFields:
|
||||
// No creators
|
||||
if (this._tabIndexMaxCreators == 0) {
|
||||
var nextIndex = 1; // Title field
|
||||
}
|
||||
else {
|
||||
var nextIndex = this._tabIndexMaxCreators;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
var nextIndex = tabindex - 1;
|
||||
}
|
||||
}
|
||||
else if (mode=='tags')
|
||||
{
|
||||
switch (tabindex)
|
||||
{
|
||||
case 1:
|
||||
return false;
|
||||
|
||||
default:
|
||||
var nextIndex = tabindex - 1;
|
||||
}
|
||||
}
|
||||
else {
|
||||
var nextIndex = this._tabIndexMaxCreators;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
var nextIndex = tabindex - 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (mode=='info')
|
||||
switch (tabindex)
|
||||
{
|
||||
switch (tabindex)
|
||||
{
|
||||
case 1:
|
||||
var nextIndex = this._tabIndexMinCreators;
|
||||
break;
|
||||
|
||||
case this._tabIndexMaxCreators:
|
||||
var nextIndex = this._tabIndexMinFields;
|
||||
break;
|
||||
|
||||
case this._tabIndexMaxInfoFields:
|
||||
//Zotero.debug('At end');
|
||||
return false;
|
||||
|
||||
default:
|
||||
var nextIndex = tabindex + 1;
|
||||
}
|
||||
}
|
||||
else if (mode=='tags')
|
||||
{
|
||||
switch (tabindex)
|
||||
{
|
||||
case this._tabIndexMaxTagsFields:
|
||||
// In tags box, keep going to create new row
|
||||
var nextIndex = tabindex + 1;
|
||||
break;
|
||||
|
||||
default:
|
||||
var nextIndex = tabindex + 1;
|
||||
}
|
||||
case 1:
|
||||
var nextIndex = this._tabIndexMinCreators;
|
||||
break;
|
||||
|
||||
case this._tabIndexMaxCreators:
|
||||
var nextIndex = this._tabIndexMinFields;
|
||||
break;
|
||||
|
||||
case this._tabIndexMaxFields:
|
||||
//Zotero.debug('At end');
|
||||
return false;
|
||||
|
||||
default:
|
||||
var nextIndex = tabindex + 1;
|
||||
}
|
||||
}
|
||||
|
||||
Zotero.debug('Looking for tabindex ' + nextIndex, 4);
|
||||
switch (mode)
|
||||
|
||||
var next = box.getElementsByAttribute('ztabindex', nextIndex);
|
||||
if (!next[0])
|
||||
{
|
||||
case 'info':
|
||||
var next = box.getElementsByAttribute('ztabindex', nextIndex);
|
||||
if (!next[0])
|
||||
{
|
||||
//Zotero.debug("Next field not found");
|
||||
return this._focusNextField(mode, box, nextIndex, back);
|
||||
}
|
||||
break;
|
||||
|
||||
// Tags pane
|
||||
case 'tags':
|
||||
var next = document.getAnonymousNodes(box)[0].
|
||||
getElementsByAttribute('ztabindex', nextIndex);
|
||||
if (!next[0]) {
|
||||
next[0] = box.addDynamicRow();
|
||||
}
|
||||
break;
|
||||
//Zotero.debug("Next field not found");
|
||||
return this._focusNextField(box, nextIndex, back);
|
||||
}
|
||||
|
||||
next[0].click();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue