Closes #291, Default to last-used item type when creating item via
keyboard
This commit is contained in:
parent
30a0bbcca2
commit
8e8bc15071
|
@ -51,6 +51,7 @@
|
||||||
|
|
||||||
<field name="clickHandler"/>
|
<field name="clickHandler"/>
|
||||||
<field name="blurHandler"/>
|
<field name="blurHandler"/>
|
||||||
|
<field name="eventHandlers">[]</field>
|
||||||
|
|
||||||
<field name="_initialVisibleCreators">10</field>
|
<field name="_initialVisibleCreators">10</field>
|
||||||
<field name="_displayAllCreators"/>
|
<field name="_displayAllCreators"/>
|
||||||
|
@ -1103,6 +1104,11 @@
|
||||||
this.refresh();
|
this.refresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (this.eventHandlers['itemtypechange'] && this.eventHandlers['itemtypechange'].length) {
|
||||||
|
var self = this;
|
||||||
|
this.eventHandlers['itemtypechange'].forEach(function (f) f.bind(self)());
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2290,6 +2296,43 @@
|
||||||
</method>
|
</method>
|
||||||
|
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Available handlers:
|
||||||
|
|
||||||
|
- 'itemtypechange'
|
||||||
|
|
||||||
|
Note: 'this' in the function will be bound to the item box.
|
||||||
|
-->
|
||||||
|
<method name="addHandler">
|
||||||
|
<parameter name="eventName"/>
|
||||||
|
<parameter name="func"/>
|
||||||
|
<body>
|
||||||
|
<![CDATA[
|
||||||
|
if (!this.eventHandlers[eventName]) {
|
||||||
|
this.eventHandlers[eventName] = [];
|
||||||
|
}
|
||||||
|
this.eventHandlers[eventName].push(func);
|
||||||
|
]]>
|
||||||
|
</body>
|
||||||
|
</method>
|
||||||
|
|
||||||
|
<method name="removeHandler">
|
||||||
|
<parameter name="eventName"/>
|
||||||
|
<parameter name="func"/>
|
||||||
|
<body>
|
||||||
|
<![CDATA[
|
||||||
|
if (!this.eventHandlers[eventName]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var pos = this.eventHandlers[eventName].indexOf(func);
|
||||||
|
if (pos != -1) {
|
||||||
|
this.eventHandlers[eventName].splice(pos, 1);
|
||||||
|
}
|
||||||
|
]]>
|
||||||
|
</body>
|
||||||
|
</method>
|
||||||
|
|
||||||
|
|
||||||
<method name="_id">
|
<method name="_id">
|
||||||
<parameter name="id"/>
|
<parameter name="id"/>
|
||||||
<body>
|
<body>
|
||||||
|
|
|
@ -647,8 +647,28 @@ var ZoteroPane = new function()
|
||||||
document.getElementById('zotero-tb-search').select();
|
document.getElementById('zotero-tb-search').select();
|
||||||
break;
|
break;
|
||||||
case 'newItem':
|
case 'newItem':
|
||||||
ZoteroPane_Local.newItem(2); // book
|
// Default to most recent item type from here or the
|
||||||
var menu = document.getElementById('zotero-editpane-item-box').itemTypeMenu;
|
// New Type menu
|
||||||
|
var mru = Zotero.Prefs.get('newItemTypeMRU');
|
||||||
|
// Or fall back to 'book'
|
||||||
|
var typeID = mru ? mru.split(',')[0] : 2;
|
||||||
|
ZoteroPane_Local.newItem(typeID);
|
||||||
|
let itemBox = document.getElementById('zotero-editpane-item-box');
|
||||||
|
var menu = itemBox.itemTypeMenu;
|
||||||
|
var self = this;
|
||||||
|
var handleTypeChange = function () {
|
||||||
|
self.addItemTypeToNewItemTypeMRU(this.itemTypeMenu.value);
|
||||||
|
itemBox.removeHandler('itemtypechange', handleTypeChange);
|
||||||
|
};
|
||||||
|
// Only update the MRU when the menu is opened for the
|
||||||
|
// keyboard shortcut, not on subsequent opens
|
||||||
|
var removeTypeChangeHandler = function () {
|
||||||
|
itemBox.removeHandler('itemtypechange', handleTypeChange);
|
||||||
|
itemBox.itemTypeMenu.firstChild.removeEventListener('popuphiding', removeTypeChangeHandler);
|
||||||
|
};
|
||||||
|
itemBox.addHandler('itemtypechange', handleTypeChange);
|
||||||
|
itemBox.itemTypeMenu.firstChild.addEventListener('popuphiding', removeTypeChangeHandler);
|
||||||
|
|
||||||
menu.focus();
|
menu.focus();
|
||||||
document.getElementById('zotero-editpane-item-box').itemTypeMenu.menupopup.openPopup(menu, "before_start", 0, 0);
|
document.getElementById('zotero-editpane-item-box').itemTypeMenu.menupopup.openPopup(menu, "before_start", 0, 0);
|
||||||
break;
|
break;
|
||||||
|
@ -750,25 +770,30 @@ var ZoteroPane = new function()
|
||||||
|
|
||||||
// Update most-recently-used list for New Item menu
|
// Update most-recently-used list for New Item menu
|
||||||
if (manual) {
|
if (manual) {
|
||||||
var mru = Zotero.Prefs.get('newItemTypeMRU');
|
this.addItemTypeToNewItemTypeMRU(typeID);
|
||||||
if (mru) {
|
|
||||||
var mru = mru.split(',');
|
|
||||||
var pos = mru.indexOf(typeID + '');
|
|
||||||
if (pos != -1) {
|
|
||||||
mru.splice(pos, 1);
|
|
||||||
}
|
|
||||||
mru.unshift(typeID);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
var mru = [typeID + ''];
|
|
||||||
}
|
|
||||||
Zotero.Prefs.set('newItemTypeMRU', mru.slice(0, 5).join(','));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return Zotero.Items.get(itemID);
|
return Zotero.Items.get(itemID);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
this.addItemTypeToNewItemTypeMRU = function (itemTypeID) {
|
||||||
|
var mru = Zotero.Prefs.get('newItemTypeMRU');
|
||||||
|
if (mru) {
|
||||||
|
var mru = mru.split(',');
|
||||||
|
var pos = mru.indexOf(itemTypeID + '');
|
||||||
|
if (pos != -1) {
|
||||||
|
mru.splice(pos, 1);
|
||||||
|
}
|
||||||
|
mru.unshift(itemTypeID);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
var mru = [itemTypeID + ''];
|
||||||
|
}
|
||||||
|
Zotero.Prefs.set('newItemTypeMRU', mru.slice(0, 5).join(','));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
function newCollection(parent)
|
function newCollection(parent)
|
||||||
{
|
{
|
||||||
if (!Zotero.stateCheck()) {
|
if (!Zotero.stateCheck()) {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user