www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | Submodules | README | LICENSE

commit 11c1277ea7ca056767b7b97a8fc998e1c3800a48
parent a60bfc151886df8b1ae8ebde474fd1c610622570
Author: Dan Stillman <dstillman@zotero.org>
Date:   Mon, 14 Sep 2009 04:18:58 +0000

- Changed toolbar note button to context-sensitive menu for adding standalone and child notes
- Added toolbar button with context-sensitive menu for adding child attachments


Diffstat:
Mchrome/content/zotero/overlay.js | 58++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mchrome/content/zotero/overlay.xul | 26++++++++++++++++++++------
Achrome/skin/default/zotero/attach.png | 0
Mchrome/skin/default/zotero/overlay.css | 15+++++++++++----
4 files changed, 89 insertions(+), 10 deletions(-)

diff --git a/chrome/content/zotero/overlay.js b/chrome/content/zotero/overlay.js @@ -1118,6 +1118,55 @@ var ZoteroPane = new function() } + this.updateNoteButtonMenu = function () { + var items = ZoteroPane.getSelectedItems(); + var button = document.getElementById('zotero-tb-add-child-note'); + button.disabled = this.canEdit() && !(items.length == 1 + && (items[0].isRegularItem() || !items[0].isTopLevelItem())); + } + + + this.updateAttachmentButtonMenu = function (popup) { + var items = ZoteroPane.getSelectedItems(); + + var disabled = !this.canEdit() || !(items.length == 1 && items[0].isRegularItem()); + + if (disabled) { + for each(var node in popup.childNodes) { + node.disabled = true; + } + return; + } + + var itemgroup = this.collectionsView._getItemAtRow(this.collectionsView.selection.currentIndex); + var canEditFiles = this.canEditFiles(); + + var prefix = "menuitem-iconic zotero-menuitem-attachments-"; + + for (var i=0; i<popup.childNodes.length; i++) { + var node = popup.childNodes[i]; + + switch (node.className) { + case prefix + 'link': + node.disabled = itemgroup.isWithinGroup(); + break; + + case prefix + 'snapshot': + case prefix + 'file': + node.disabled = !canEditFiles; + break; + + case prefix + 'web-link': + node.disabled = false; + break; + + default: + throw ("Invalid class name '" + node.className + "' in ZoteroPane.updateAttachmentButtonMenu()"); + } + } + } + + function reindexItem() { var items = this.getSelectedItems(); if (!items) { @@ -1920,6 +1969,10 @@ var ZoteroPane = new function() show.push(m.duplicateItem); hide.push(m.recognizePDF, m.renameAttachments, m.reindexItem); } + + // Update attachment submenu + var popup = document.getElementById('zotero-add-attachment-popup') + this.updateAttachmentButtonMenu(popup); } } // No items selected @@ -2468,6 +2521,11 @@ var ZoteroPane = new function() this.addItemFromPage = function (itemType, saveSnapshot, row) { + if (!this.canEdit(row)) { + this.displayCannotEditLibraryMessage(); + return; + } + return this.addItemFromDocument(window.content.document, itemType, saveSnapshot, row); } diff --git a/chrome/content/zotero/overlay.xul b/chrome/content/zotero/overlay.xul @@ -114,11 +114,11 @@ <menuitem label="&zotero.items.menu.attach.note;" oncommand="ZoteroPane.newNote(false, this.parentNode.getAttribute('itemID'))"/> <!-- TODO: localize --> <menu label="Add Attachment"> - <menupopup> - <menuitem class="menuitem-iconic" id="zotero-menuitem-attachments-snapshot" label="&zotero.items.menu.attach.snapshot;" oncommand="var itemID = parseInt(this.parentNode.parentNode.parentNode.getAttribute('itemID')); ZoteroPane.addAttachmentFromPage(false, itemID)"/> - <menuitem class="menuitem-iconic" id="zotero-menuitem-attachments-web-link" label="&zotero.items.menu.attach.link;" oncommand="var itemID = parseInt(this.parentNode.parentNode.parentNode.getAttribute('itemID')); ZoteroPane.addAttachmentFromPage(true, itemID)"/> - <menuitem class="menuitem-iconic" id="zotero-menuitem-attachments-link" label="Attach Link to File..." oncommand="var itemID = parseInt(this.parentNode.parentNode.parentNode.getAttribute('itemID')); ZoteroPane.addAttachmentFromDialog(true, itemID);"/> - <menuitem class="menuitem-iconic" id="zotero-menuitem-attachments-file" label="Attach Stored Copy of File..." oncommand="var itemID = parseInt(this.parentNode.parentNode.parentNode.getAttribute('itemID')); ZoteroPane.addAttachmentFromDialog(false, itemID);"/> + <menupopup id="zotero-add-attachment-popup"> + <menuitem class="menuitem-iconic zotero-menuitem-attachments-snapshot" label="&zotero.items.menu.attach.snapshot;" oncommand="var itemID = parseInt(this.parentNode.parentNode.parentNode.getAttribute('itemID')); ZoteroPane.addAttachmentFromPage(false, itemID)"/> + <menuitem class="menuitem-iconic zotero-menuitem-attachments-web-link" label="&zotero.items.menu.attach.link;" oncommand="var itemID = parseInt(this.parentNode.parentNode.parentNode.getAttribute('itemID')); ZoteroPane.addAttachmentFromPage(true, itemID)"/> + <menuitem class="menuitem-iconic zotero-menuitem-attachments-file" label="Attach Stored Copy of File..." oncommand="var itemID = parseInt(this.parentNode.parentNode.parentNode.getAttribute('itemID')); ZoteroPane.addAttachmentFromDialog(false, itemID);"/> + <menuitem class="menuitem-iconic zotero-menuitem-attachments-link" label="Attach Link to File..." oncommand="var itemID = parseInt(this.parentNode.parentNode.parentNode.getAttribute('itemID')); ZoteroPane.addAttachmentFromDialog(true, itemID);"/> </menupopup> </menu> <menuseparator/> @@ -222,7 +222,21 @@ </toolbarbutton> <toolbarbutton id="zotero-tb-item-from-page" class="zotero-tb-button" tooltiptext="&zotero.toolbar.newItemFromPage.label;" oncommand="ZoteroPane.addItemFromPage('temporaryPDFHack', event.shiftKey ? !Zotero.Prefs.get('automaticSnapshots') : null)"/> <toolbarbutton id="zotero-tb-lookup" class="zotero-tb-button" tooltiptext="&zotero.toolbar.lookup.label;" oncommand="ZoteroPane.openLookupWindow()"/> - <toolbarbutton id="zotero-tb-note-add" class="zotero-tb-button" tooltiptext="&zotero.toolbar.note.standalone;" oncommand="ZoteroPane.newNote(event.shiftKey);"/> + <!--<toolbarbutton id="zotero-tb-note-add" class="zotero-tb-button" tooltiptext="&zotero.toolbar.note.standalone;" oncommand="ZoteroPane.newNote(event.shiftKey);"/>--> + <toolbarbutton id="zotero-tb-note-add" class="zotero-tb-button" tooltiptext="New Note" type="menu"> + <menupopup onpopupshowing="ZoteroPane.updateNoteButtonMenu()"> + <menuitem label="Add Standalone Note" oncommand="ZoteroPane.newNote(event.shiftKey);"/> + <menuitem id="zotero-tb-add-child-note" label="Add Child Note" oncommand="var selected = ZoteroPane.getSelectedItems()[0]; var parent = selected.getSource(); parent = parent ? parent : selected.id; ZoteroPane.newNote(event.shiftKey, parent);"/> + </menupopup> + </toolbarbutton> + <toolbarbutton id="zotero-tb-attachment-add" class="zotero-tb-button" tooltiptext="New Child Attachment" type="menu"> + <menupopup onpopupshowing="ZoteroPane.updateAttachmentButtonMenu(this)"> + <menuitem class="menuitem-iconic zotero-menuitem-attachments-snapshot" label="&zotero.items.menu.attach.snapshot;" oncommand="var itemID = ZoteroPane.getSelectedItems()[0].id; ZoteroPane.addAttachmentFromPage(false, itemID)"/> + <menuitem class="menuitem-iconic zotero-menuitem-attachments-web-link" label="&zotero.items.menu.attach.link;" oncommand="var itemID = ZoteroPane.getSelectedItems()[0].id; ZoteroPane.addAttachmentFromPage(true, itemID)"/> + <menuitem class="menuitem-iconic zotero-menuitem-attachments-file" label="Attach Stored Copy of File..." oncommand="var itemID = ZoteroPane.getSelectedItems()[0].id; ZoteroPane.addAttachmentFromDialog(false, itemID);"/> + <menuitem class="menuitem-iconic zotero-menuitem-attachments-link" label="Attach Link to File..." oncommand="var itemID = ZoteroPane.getSelectedItems()[0].id; ZoteroPane.addAttachmentFromDialog(true, itemID);"/> + </menupopup> + </toolbarbutton> <toolbarseparator/> <toolbarbutton id="zotero-tb-advanced-search" class="zotero-tb-button" tooltiptext="&zotero.toolbar.advancedSearch;" oncommand="ZoteroPane.openAdvancedSearchWindow()"/> <spacer flex="1"/> diff --git a/chrome/skin/default/zotero/attach.png b/chrome/skin/default/zotero/attach.png Binary files differ. diff --git a/chrome/skin/default/zotero/overlay.css b/chrome/skin/default/zotero/overlay.css @@ -140,6 +140,7 @@ list-style-image: url('chrome://zotero/skin/toolbar-item-from-page.png'); } +/* #zotero-tb-link-page { list-style-image: url('chrome://zotero/skin/toolbar-link-add.png'); @@ -149,6 +150,12 @@ { list-style-image: url('chrome://zotero/skin/toolbar-snapshot-add.png'); } +*/ + +#zotero-tb-attachment-add +{ + list-style-image: url('chrome://zotero/skin/attach.png'); +} #zotero-tb-note-add { @@ -160,22 +167,22 @@ list-style-image: url('chrome://zotero/skin/treeitem-note.png'); } -#zotero-menuitem-attachments-file +.zotero-menuitem-attachments-file { list-style-image: url('chrome://zotero/skin/treeitem-attachment-file.png'); } -#zotero-menuitem-attachments-link +.zotero-menuitem-attachments-link { list-style-image: url('chrome://zotero/skin/treeitem-attachment-link.png'); } -#zotero-menuitem-attachments-snapshot +.zotero-menuitem-attachments-snapshot { list-style-image: url('chrome://zotero/skin/treeitem-attachment-snapshot.png'); } -#zotero-menuitem-attachments-web-link +.zotero-menuitem-attachments-web-link { list-style-image: url('chrome://zotero/skin/treeitem-attachment-web-link.png'); }