A very quick little addition to please the masses

Add options to browser context menu, "Add Selection to Zotero Note" and "Create Zotero Note from Selection"

"Add Note" context menu option on items
This commit is contained in:
Dan Stillman 2006-10-25 04:07:40 +00:00
parent 0b1002c8ce
commit 65ef6a6926
3 changed files with 120 additions and 15 deletions

View File

@ -51,8 +51,10 @@ var ZoteroPane = new function()
this.buildCollectionContextMenu = buildCollectionContextMenu;
this.buildItemContextMenu = buildItemContextMenu;
this.onDoubleClick = onDoubleClick;
this.contextPopupShowing = contextPopupShowing;
this.openNoteWindow = openNoteWindow;
this.newNote = newNote;
this.addTextToNote = addTextToNote;
this.addItemFromPage = addItemFromPage;
this.addAttachmentFromDialog = addAttachmentFromDialog;
this.addAttachmentFromPage = addAttachmentFromPage;
@ -121,6 +123,9 @@ var ZoteroPane = new function()
menuitem.setAttribute("oncommand","ZoteroPane.newItem("+itemTypes[i]['id']+")");
moreMenu.appendChild(menuitem);
}
var menu = document.getElementById("contentAreaContextMenu");
menu.addEventListener("popupshowing", ZoteroPane.contextPopupShowing, false);
}
/*
@ -240,13 +245,11 @@ var ZoteroPane = new function()
itemsView = new Zotero.ItemTreeView(itemgroup);
document.getElementById('zotero-items-tree').view = itemsView;
document.getElementById('zotero-tb-collection-rename').disabled = itemgroup.isLibrary();
itemsView.selection.clearSelection();
}
else
{
document.getElementById('zotero-items-tree').view = itemsView = null;
document.getElementById('zotero-tb-collection-rename').disabled = true;
}
}
@ -636,7 +639,7 @@ var ZoteroPane = new function()
if(itemsView && itemsView.selection.count > 0)
{
enable.push(3,4,5,7);
enable.push(4,5,6,8);
// Multiple items selected
if (itemsView.selection.count > 1)
@ -652,34 +655,34 @@ var ZoteroPane = new function()
var itemID = item.ref.getID();
menu.setAttribute('itemID', itemID);
show.push(0,1,2);
show.push(0,1,2,3);
}
else
{
hide.push(0,1,2);
hide.push(0,1,2,3);
}
}
}
else
{
disable.push(3,4,6,7);
disable.push(4,5,7,8);
}
// Remove from collection
if (itemsView._itemGroup.isCollection())
{
menu.childNodes[3].setAttribute('label', Zotero.getString('pane.items.menu.remove' + multiple));
show.push(3);
menu.childNodes[4].setAttribute('label', Zotero.getString('pane.items.menu.remove' + multiple));
show.push(4);
}
else
{
hide.push(3);
hide.push(4);
}
// Plural if necessary
menu.childNodes[4].setAttribute('label', Zotero.getString('pane.items.menu.erase' + multiple));
menu.childNodes[6].setAttribute('label', Zotero.getString('pane.items.menu.export' + multiple));
menu.childNodes[7].setAttribute('label', Zotero.getString('pane.items.menu.createBib' + multiple));
menu.childNodes[5].setAttribute('label', Zotero.getString('pane.items.menu.erase' + multiple));
menu.childNodes[7].setAttribute('label', Zotero.getString('pane.items.menu.export' + multiple));
menu.childNodes[8].setAttribute('label', Zotero.getString('pane.items.menu.createBib' + multiple));
for (var i in disable)
{
@ -726,15 +729,72 @@ var ZoteroPane = new function()
}
}
function newNote(popup)
// Updates browser context menu options
function contextPopupShowing()
{
var menuitem = document.getElementById("zotero-context-add-to-current-note");
var showing = false;
if (menuitem){
var items = getSelectedItems();
if (itemsView.selection.count==1 && items[0] && items[0].isNote()
&& window.gContextMenu.isTextSelected)
{
menuitem.hidden = false;
showing = true;
}
else
{
menuitem.hidden = true;
}
}
var menuitem = document.getElementById("zotero-context-add-to-new-note");
if (menuitem){
if (window.gContextMenu.isTextSelected)
{
menuitem.hidden = false;
showing = true;
}
else
{
menuitem.hidden = true;
}
}
var separator = document.getElementById("zotero-context-separator");
separator.hidden = !showing;
}
function newNote(popup, parent, text)
{
if (!popup)
{
var item = this.newItem(Zotero.ItemTypes.getID('note'));
document.getElementById('zotero-note-editor').focus();
var note = document.getElementById('zotero-note-editor');
try {
// trim
text = text.replace(/^[\xA0\r\n\s]*(.*)[\xA0\r\n\s]*$/m, "$1");
}
catch (e){}
if (text)
{
note.value = '"' + text + '"';
}
note.save();
note.focus();
if (parent)
{
Zotero.debug(parent);
Zotero.debug(item.getID());
item.setSource(parent);
selectItem(item.getID());
}
}
else
{
// TODO: _text_
var c = getSelectedCollection();
if (c)
{
@ -747,6 +807,36 @@ var ZoteroPane = new function()
}
}
function addTextToNote(text)
{
try {
// trim
text = text.replace(/^[\xA0\r\n\s]*(.*)[\xA0\r\n\s]*$/m, "$1");
}
catch (e){}
if (!text || !text.length)
{
return false;
}
var items = getSelectedItems();
if (itemsView.selection.count == 1 && items[0] && items[0].isNote())
{
var note = items[0].getNote()
items[0].updateNote(note + "\n\n" + '"' + text + '"');
var noteElem = document.getElementById('zotero-note-editor')
noteElem.focus();
noteElem.id('noteField').inputField.editor.
selectionController.scrollSelectionIntoView(1,
1,
true);
return true;
}
return false;
}
function openNoteWindow(id, parent)
{
window.open('chrome://zotero/content/note.xul?v=1'+(id ? '&id='+id : '')+(parent ? '&coll='+parent : ''),'','chrome,resizable,centerscreen');

View File

@ -44,6 +44,17 @@
label="&zotero.name;"
oncommand="ZoteroPane.toggleDisplay();"/>
</toolbarpalette>
<popup id="contentAreaContextMenu">
<menuseparator id="zotero-context-separator"/>
<menuitem id="zotero-context-add-to-current-note" class="menu-iconic"
label="&zotero.contextMenu.addTextToCurrentNote;"
oncommand="ZoteroPane.addTextToNote(window.content.getSelection().toString())"/>
<menuitem id="zotero-context-add-to-new-note" class="menu-iconic"
label="&zotero.contextMenu.addTextToNewNote;"
oncommand="ZoteroPane.newNote(false, false, window.content.getSelection().toString())"/>
</popup>
<vbox id="appcontent">
<!-- Changes to attributes of zotero-splitter and zotero-pane must be mirrored on overlay.js's onLoad() function -->
<splitter id="zotero-splitter" resizebefore="closest" resizeafter="closest" collapsed="true"/>
@ -65,6 +76,7 @@
<menuitem label="&zotero.toolbar.export.label;" oncommand="Zotero_File_Interface.exportFile()"/>
</popup>
<popup id="zotero-itemmenu" onpopupshowing="ZoteroPane.buildItemContextMenu();">
<menuitem label="&zotero.items.menu.attach.note;" oncommand="ZoteroPane.newNote(false, this.parentNode.getAttribute('itemID'))"/>
<menuitem label="&zotero.items.menu.attach.snapshot;" oncommand="ZoteroPane.addAttachmentFromPage(false, this.parentNode.getAttribute('itemID'));"/>
<menuitem label="&zotero.items.menu.attach.link;" oncommand="ZoteroPane.addAttachmentFromPage(true, this.parentNode.getAttribute('itemID'));"/>
<menuseparator/>
@ -79,7 +91,6 @@
<toolbar>
<toolbarbutton id="zotero-tb-collection-add" tooltiptext="&zotero.toolbar.newCollection.label;" command="cmd_zotero_newCollection"/>
<toolbarbutton id="zotero-tb-collection-addsearch" tooltiptext="&zotero.toolbar.newSavedSearch.label;" oncommand="ZoteroPane.newSearch();"/>
<toolbarbutton id="zotero-tb-collection-rename" tooltiptext="&zotero.toolbar.renameCollection.label;" oncommand="ZoteroPane.editSelectedCollection();" disabled="true"/>
<spacer flex="1"/>
<toolbarbutton id="zotero-tb-actions-menu" tooltiptext="&zotero.toolbar.actions.label;" type="menu">
<menupopup>

View File

@ -1,5 +1,8 @@
<!ENTITY zotero.name "Zotero">
<!ENTITY zotero.contextMenu.addTextToCurrentNote "Add Selection to Zotero Note">
<!ENTITY zotero.contextMenu.addTextToNewNote "Create Zotero Note from Selection">
<!ENTITY zotero.tabs.info.label "Info">
<!ENTITY zotero.tabs.notes.label "Notes">
<!ENTITY zotero.tabs.attachments.label "Attachments">
@ -16,6 +19,7 @@
<!ENTITY zotero.items.dateAdded_column "Date Added">
<!ENTITY zotero.items.dateModified_column "Date Modified">
<!ENTITY zotero.items.menu.attach.note "Add Note">
<!ENTITY zotero.items.menu.attach.snapshot "Attach Snapshot of Current Page">
<!ENTITY zotero.items.menu.attach.link "Attach Link to Current Page">