Addresses #401, Add keyboard shortcuts
- New creators can now be added via the keyboard with Shift-Enter - Fixed bug in data layer that caused modified creators to not be fully reloaded - Fixed error in Zotero.Items.add() example (ISBN field is capitalized)
This commit is contained in:
parent
1f4425fa2f
commit
9c436a331f
|
@ -37,6 +37,8 @@ var ZoteroItemPane = new function()
|
|||
var _itemBeingEdited;
|
||||
var _activeScrollbox;
|
||||
|
||||
var _addCreatorRow;
|
||||
|
||||
var _lastTabIndex;
|
||||
var _tabDirection;
|
||||
var _tabIndexMinCreators = 10;
|
||||
|
@ -344,11 +346,16 @@ var ZoteroItemPane = new function()
|
|||
var creator = _itemBeingEdited.getCreator(i);
|
||||
addCreatorRow(creator['firstName'], creator['lastName'], creator['creatorTypeID'], creator['fieldMode']);
|
||||
}
|
||||
|
||||
if (_addCreatorRow) {
|
||||
addCreatorRow('', '', false, Zotero.Prefs.get('lastCreatorFieldMode'), true, true);
|
||||
_addCreatorRow = false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Add default row
|
||||
addCreatorRow('', '', false, Zotero.Prefs.get('lastCreatorFieldMode'), true, true);
|
||||
addCreatorRow('', '', false, Zotero.Prefs.get('lastCreatorFieldMode'), true, false);
|
||||
}
|
||||
|
||||
var focusMode = 'info';
|
||||
|
@ -1160,14 +1167,14 @@ var ZoteroItemPane = new function()
|
|||
switch (event.keyCode)
|
||||
{
|
||||
case event.DOM_VK_RETURN:
|
||||
var fieldname = target.getAttribute('fieldname');
|
||||
// Use shift-enter as the save action for the larger fields
|
||||
if ((target.getAttribute('fieldname') == 'abstractNote'
|
||||
|| target.getAttribute('fieldname') == 'extra')
|
||||
if ((fieldname == 'abstractNote' || fieldname == 'extra')
|
||||
&& !event.shiftKey)
|
||||
{
|
||||
break;
|
||||
}
|
||||
else if (target.getAttribute('fieldname')=='tag')
|
||||
else if (fieldname == 'tag')
|
||||
{
|
||||
// If last tag row, create new one
|
||||
var row = target.parentNode.parentNode;
|
||||
|
@ -1177,6 +1184,27 @@ var ZoteroItemPane = new function()
|
|||
var lastTag = true;
|
||||
}
|
||||
}
|
||||
// Shift-enter adds new creator row
|
||||
else 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) {
|
||||
_focusNextField('info', _dynamicFields, _lastTabIndex, false);
|
||||
}
|
||||
else {
|
||||
ZoteroItemPane.addCreatorRow('', '', false, Zotero.Prefs.get('lastCreatorFieldMode'), true, false);
|
||||
}
|
||||
}
|
||||
// Value has changed
|
||||
else {
|
||||
_tabDirection = 1;
|
||||
_addCreatorRow = true;
|
||||
focused.blur();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
focused.blur();
|
||||
|
||||
// Return focus to items pane
|
||||
|
|
|
@ -152,6 +152,12 @@ Zotero.Item.prototype.loadFromRow = function(row, reload) {
|
|||
this.setType(row['itemTypeID'], true);
|
||||
}
|
||||
|
||||
// This is a quick hack to reset the creators on reload --
|
||||
// there's probably a better place for this
|
||||
this._creatorsLoaded = false;
|
||||
this._changedCreators = new Zotero.Hash();
|
||||
this._creators = [];
|
||||
|
||||
for (var col in row){
|
||||
// Only accept primary field data through loadFromRow()
|
||||
if (this.isPrimaryField(col)){
|
||||
|
@ -436,10 +442,15 @@ Zotero.Item.prototype.removeCreator = function(orderIndex){
|
|||
}
|
||||
this._creators[orderIndex] = false;
|
||||
|
||||
// Go to length+1 so we clear the last one
|
||||
// Shift creator orderIndexes down, going to length+1 so we clear the last one
|
||||
for (var i=orderIndex, max=this._creators.length+1; i<max; i++){
|
||||
var next = this._creators[i+1] ? this._creators[i+1] : false;
|
||||
this._creators[i] = next;
|
||||
if (next) {
|
||||
this._creators[i] = next;
|
||||
}
|
||||
else {
|
||||
delete this._creators[i];
|
||||
}
|
||||
this._changedCreators.set(i);
|
||||
}
|
||||
return true;
|
||||
|
@ -2512,7 +2523,7 @@ Zotero.Items = new function(){
|
|||
* title: "Shakespeare: The Invention of the Human",
|
||||
* publisher: "Riverhead Hardcover",
|
||||
* date: '1998-10-26',
|
||||
* isbn: 1573221201,
|
||||
* ISBN: 1573221201,
|
||||
* pages: 745,
|
||||
* creators: [
|
||||
* ['Harold', 'Bloom', 'author']
|
||||
|
|
Loading…
Reference in New Issue
Block a user