Index: chrome/locale/en-US/zotero/zotero.dtd
===================================================================
--- chrome/locale/en-US/zotero/zotero.dtd	(revision 9500)
+++ chrome/locale/en-US/zotero/zotero.dtd	(working copy)
@@ -62,6 +62,7 @@
 <!ENTITY zotero.items.menu.attach						"Add Attachment">
 <!ENTITY zotero.items.menu.attach.snapshot				"Attach Snapshot of Current Page">
 <!ENTITY zotero.items.menu.attach.link					"Attach Link to Current Page">
+<!ENTITY zotero.items.menu.attach.link.uri				"Attach Link to URI...">
 <!ENTITY zotero.items.menu.attach.file					"Attach Stored Copy of File...">
 <!ENTITY zotero.items.menu.attach.fileLink				"Attach Link to File...">
 
@@ -228,4 +229,4 @@
 <!ENTITY zotero.file.choose.label			"Choose File...">
 <!ENTITY zotero.file.noneSelected.label			"No file selected">
 
-<!ENTITY zotero.downloadManager.label			"Save to Zotero">
\ No newline at end of file
+<!ENTITY zotero.downloadManager.label			"Save to Zotero">
Index: chrome/content/zotero/zoteroPane.xul
===================================================================
--- chrome/content/zotero/zoteroPane.xul	(revision 9500)
+++ chrome/content/zotero/zoteroPane.xul	(working copy)
@@ -141,6 +141,7 @@
 						<menupopup onpopupshowing="ZoteroPane_Local.updateAttachmentButtonMenu(this)">
 							<menuitem class="menuitem-iconic zotero-menuitem-attachments-snapshot" label="&zotero.items.menu.attach.snapshot;" oncommand="var itemID = ZoteroPane_Local.getSelectedItems()[0].id; ZoteroPane_Local.addAttachmentFromPage(false, itemID)"/>
 							<menuitem class="menuitem-iconic zotero-menuitem-attachments-web-link" label="&zotero.items.menu.attach.link;" oncommand="var itemID = ZoteroPane_Local.getSelectedItems()[0].id; ZoteroPane_Local.addAttachmentFromPage(true, itemID)"/>
+							<menuitem class="menuitem-iconic zotero-menuitem-attachments-web-link" label="&zotero.items.menu.attach.link.uri;" oncommand="var itemID = ZoteroPane_Local.getSelectedItems()[0].id; ZoteroPane_Local.addAttachmentFromURI(true, itemID);"/>
 							<menuitem class="menuitem-iconic zotero-menuitem-attachments-file" label="Attach Stored Copy of File..." oncommand="var itemID = ZoteroPane_Local.getSelectedItems()[0].id; ZoteroPane_Local.addAttachmentFromDialog(false, itemID);"/>
 							<menuitem class="menuitem-iconic zotero-menuitem-attachments-link" label="Attach Link to File..." oncommand="var itemID = ZoteroPane_Local.getSelectedItems()[0].id; ZoteroPane_Local.addAttachmentFromDialog(true, itemID);"/>
 						</menupopup>
@@ -240,6 +241,7 @@
 						<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_Local.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_Local.addAttachmentFromPage(true, itemID)"/>
+							<menuitem class="menuitem-iconic zotero-menuitem-attachments-web-link" label="&zotero.items.menu.attach.link.uri;" oncommand="var itemID = parseInt(this.parentNode.parentNode.parentNode.getAttribute('itemID')); ZoteroPane_Local.addAttachmentFromURI(true, itemID);"/>
 							<menuitem class="menuitem-iconic zotero-menuitem-attachments-file" label="&zotero.items.menu.attach.file;" oncommand="var itemID = parseInt(this.parentNode.parentNode.parentNode.getAttribute('itemID')); ZoteroPane_Local.addAttachmentFromDialog(false, itemID);"/>
 							<menuitem class="menuitem-iconic zotero-menuitem-attachments-link" label="&zotero.items.menu.attach.fileLink;" oncommand="var itemID = parseInt(this.parentNode.parentNode.parentNode.getAttribute('itemID')); ZoteroPane_Local.addAttachmentFromDialog(true, itemID);"/>
 						</menupopup>
Index: chrome/content/zotero/zoteroPane.js
===================================================================
--- chrome/content/zotero/zoteroPane.js	(revision 9500)
+++ chrome/content/zotero/zoteroPane.js	(working copy)
@@ -77,6 +77,7 @@
 	this.openNoteWindow = openNoteWindow;
 	this.addTextToNote = addTextToNote;
 	this.addAttachmentFromDialog = addAttachmentFromDialog;
+	this.addAttachmentFromURI = addAttachmentFromURI;
 	this.viewAttachment = viewAttachment;
 	this.viewSelectedAttachment = viewSelectedAttachment;
 	this.showAttachmentNotFoundDialog = showAttachmentNotFoundDialog;
@@ -2851,8 +2852,28 @@
 			+ (parentItemID ? '&p=' + parentItemID : ''),
 			name, 'chrome,resizable,centerscreen');
 	}
+
+	// For now, link only. 	
+	function addAttachmentFromURI(link, id)
+	{
+		if (!this.canEdit()) {
+			this.displayCannotEditLibraryMessage();
+			return;
+		}
+		var ps = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
+                              .getService(Components.interfaces.nsIPromptService);
+		
+		var input = {};
+		var check = {value : false};
+		// TODO Localize
+		// TODO Allow title to be specified
+		var result = ps.prompt(null, "Add link to URI", "Enter a URI:", input, null, check);
+		if (!result || !input.value) return false;
+
+		// Create a new attachment
+		Zotero.Attachments.linkFromURL(input.value, id, null, null);
+	}
 	
-	
 	function addAttachmentFromDialog(link, id)
 	{
 		if (!this.canEdit()) {
@@ -3689,4 +3710,4 @@
  * Keep track of which ZoteroPane was local (since ZoteroPane object might get swapped out for a
  * tab's ZoteroPane)
  */
-var ZoteroPane_Local = ZoteroPane;
\ No newline at end of file
+var ZoteroPane_Local = ZoteroPane;
