merge r8103-8124 to 2.1 branch

This commit is contained in:
Simon Kornblith 2011-02-13 06:47:33 +00:00
parent 9e2f00893d
commit 2487f74f8c
26 changed files with 518 additions and 416 deletions

View file

@ -1,9 +1,4 @@
row > label:first-child
{
color: #7f7f7f;
}
*[zoteroFontSize=small] #attachment-box
{
font-size: 10px;
}

View file

@ -1,3 +1,8 @@
scrollbox
{
padding-top: 3px;
}
row > label:first-child, .creator-type-label
{
color: #7f7f7f;

View file

@ -1,9 +1,4 @@
row > label:first-child
{
color: #7f7f7f;
}
*[zoteroFontSize=small] #note-editor
{
font-size: 10px;
}

View file

@ -12,14 +12,6 @@
background-image: none;
}
#zotero-pane .toolbar {
/* This will be ignored on FF <3.5 */
-moz-appearance: -moz-mac-unified-toolbar;
/* This will be ignored on FF >=3.5 */
background: url("chrome://zotero/skin/mac/toolbar-background.png") left center repeat-x;
margin-left: -1px;
}
#zotero-items-toolbar[state=collapsed]
{
margin-left: -8px !important;
@ -104,7 +96,6 @@
#zotero-view-tabbox {
background-color: #fff;
padding: 0;
margin: 0;
}
#zotero-item-pane-content .groupbox-body {
@ -116,13 +107,9 @@
color: #7f7f7f;
}
#zotero-view-tabbox > tabpanels {
margin: 0;
padding: 0;
}
#zotero-view-tabbox > tabpanels {
margin: 12px 0 0 0;
padding: 0;
-moz-appearance: none;
}
@ -183,12 +170,12 @@
}
/* Since Fx < 4 doesn't recognize the -moz-window-inactive pseudoclass as valid, these have to be separate (duplicate) rules to be parsed */
:root:not([active]) #zotero-pane:not([isFx4]) > #zotero-item-pane > #zotero-item-pane-content > #zotero-view-tabbox > tabs > * {
:root:not([active]) #zotero-pane:not([ignoreActiveAttribute]) > #zotero-item-pane > #zotero-item-pane-content > #zotero-view-tabbox > tabs > * {
color: #7C7C7C !important;
-moz-border-image: url("chrome://zotero/skin/mac/viewbutton-middle-inactive.png") 0 4 0 5 repeat stretch;
}
:root:not([active]) #zotero-pane:not([isFx4]) > #zotero-item-pane > #zotero-item-pane-content > #zotero-view-tabbox > tabs > tab[selected=true] {
:root:not([active]) #zotero-pane:not([ignoreActiveAttribute]) > #zotero-item-pane > #zotero-item-pane-content > #zotero-view-tabbox > tabs > tab[selected=true] {
color: #C5C5C5 !important;
-moz-border-image: url("chrome://zotero/skin/mac/viewbutton-middle-selected-inactive.png") 0 4 0 5 repeat stretch;
}
@ -231,10 +218,10 @@
/* Since Fx4 doesn't recognize the -moz-window-inactive pseudoclass as valid, these have to be separate (duplicate) rules to be parsed */
:root:not([active]) #zotero-pane:not([isFx4]) #zotero-view-tabbox > tabs > :first-child,
:root:not([active]) #zotero-pane:not([isFx4]) #zotero-view-tabbox > tabs > [first-visible],
:root:not([active]) #zotero-pane:not([isFx4]) #zotero-view-tabbox > tabs[chromedir=rtl] > :last-child,
:root:not([active]) #zotero-pane:not([isFx4]) #zotero-view-tabbox > tabs[chromedir=rtl] > [last-visible] {
:root:not([active]) #zotero-pane:not([ignoreActiveAttribute]) #zotero-view-tabbox > tabs > :first-child,
:root:not([active]) #zotero-pane:not([ignoreActiveAttribute]) #zotero-view-tabbox > tabs > [first-visible],
:root:not([active]) #zotero-pane:not([ignoreActiveAttribute]) #zotero-view-tabbox > tabs[chromedir=rtl] > :last-child,
:root:not([active]) #zotero-pane:not([ignoreActiveAttribute]) #zotero-view-tabbox > tabs[chromedir=rtl] > [last-visible] {
-moz-border-image: url("chrome://zotero/skin/mac/viewbutton-left-inactive.png") 0 4 0 6 repeat stretch;
}
@ -245,10 +232,10 @@
-moz-border-image: url("chrome://zotero/skin/mac/viewbutton-left-selected-inactive.png") 0 4 0 6 repeat stretch;
}
:root:not([active]) #zotero-pane:not([isFx4]) #zotero-view-tabbox > tabs > tab:first-child[selected=true],
:root:not([active]) #zotero-pane:not([isFx4]) #zotero-view-tabbox > tabs > tab[first-visible][selected=true],
:root:not([active]) #zotero-pane:not([isFx4]) #zotero-view-tabbox > tabs[chromedir=rtl] > tab:last-child[selected=true],
:root:not([active]) #zotero-pane:not([isFx4]) #zotero-view-tabbox > tabs[chromedir=rtl] > tab[last-visible][selected=true] {
:root:not([active]) #zotero-pane:not([ignoreActiveAttribute]) #zotero-view-tabbox > tabs > tab:first-child[selected=true],
:root:not([active]) #zotero-pane:not([ignoreActiveAttribute]) #zotero-view-tabbox > tabs > tab[first-visible][selected=true],
:root:not([active]) #zotero-pane:not([ignoreActiveAttribute]) #zotero-view-tabbox > tabs[chromedir=rtl] > tab:last-child[selected=true],
:root:not([active]) #zotero-pane:not([ignoreActiveAttribute]) #zotero-view-tabbox > tabs[chromedir=rtl] > tab[last-visible][selected=true] {
-moz-border-image: url("chrome://zotero/skin/mac/viewbutton-left-selected-inactive.png") 0 4 0 6 repeat stretch;
}
@ -288,10 +275,10 @@
-moz-border-image: url("chrome://zotero/skin/mac/viewbutton-right-inactive.png") 0 6 0 5 repeat stretch;
}
:root:not([active]) #zotero-pane:not([isFx4]) #zotero-view-tabbox > tabs > :last-child,
:root:not([active]) #zotero-pane:not([isFx4]) #zotero-view-tabbox > tabs > [last-visible],
:root:not([active]) #zotero-pane:not([isFx4]) #zotero-view-tabbox > tabs[chromedir=rtl] > :first-child,
:root:not([active]) #zotero-pane:not([isFx4]) #zotero-view-tabbox > tabs[chromedir=rtl] > [first-visible] {
:root:not([active]) #zotero-pane:not([ignoreActiveAttribute]) #zotero-view-tabbox > tabs > :last-child,
:root:not([active]) #zotero-pane:not([ignoreActiveAttribute]) #zotero-view-tabbox > tabs > [last-visible],
:root:not([active]) #zotero-pane:not([ignoreActiveAttribute]) #zotero-view-tabbox > tabs[chromedir=rtl] > :first-child,
:root:not([active]) #zotero-pane:not([ignoreActiveAttribute]) #zotero-view-tabbox > tabs[chromedir=rtl] > [first-visible] {
-moz-border-image: url("chrome://zotero/skin/mac/viewbutton-right-inactive.png") 0 6 0 5 repeat stretch;
}
@ -301,10 +288,10 @@
#zotero-view-tabbox:-moz-window-inactive > tabs[chromedir=rtl] > tab[first-visible][selected=true] {
-moz-border-image: url("chrome://zotero/skin/mac/viewbutton-right-selected-inactive.png") 0 6 0 5 repeat stretch;
}
:root:not([active]) #zotero-pane:not([isFx4]) #zotero-view-tabbox > tabs > tab:last-child[selected=true],
:root:not([active]) #zotero-pane:not([isFx4]) #zotero-view-tabbox > tabs > tab[last-visible][selected=true],
:root:not([active]) #zotero-pane:not([isFx4]) #zotero-view-tabbox > tabs[chromedir=rtl] > tab:first-child[selected=true],
:root:not([active]) #zotero-pane:not([isFx4]) #zotero-view-tabbox > tabs[chromedir=rtl] > tab[first-visible][selected=true] {
:root:not([active]) #zotero-pane:not([ignoreActiveAttribute]) #zotero-view-tabbox > tabs > tab:last-child[selected=true],
:root:not([active]) #zotero-pane:not([ignoreActiveAttribute]) #zotero-view-tabbox > tabs > tab[last-visible][selected=true],
:root:not([active]) #zotero-pane:not([ignoreActiveAttribute]) #zotero-view-tabbox > tabs[chromedir=rtl] > tab:first-child[selected=true],
:root:not([active]) #zotero-pane:not([ignoreActiveAttribute]) #zotero-view-tabbox > tabs[chromedir=rtl] > tab[first-visible][selected=true] {
-moz-border-image: url("chrome://zotero/skin/mac/viewbutton-right-selected-inactive.png") 0 6 0 5 repeat stretch;
}
@ -321,7 +308,7 @@
background-color: rgb(232, 232, 232);
}
:root:not([active]) #zotero-pane:not([isFx4]) #zotero-collections-tree {
:root:not([active]) #zotero-pane:not([ignoreActiveAttribute]) #zotero-collections-tree {
background-color: rgb(232, 232, 232);
}
@ -450,22 +437,12 @@ treechilren::-moz-tree-twisty(active) {
}
*/
#zotero-pane:not(:-moz-window-inactive) treechildren::-moz-tree-twisty(selected) {
tree:focus treechildren::-moz-tree-twisty(selected) {
-moz-appearance: none;
list-style-image: url("chrome://zotero/skin/mac/twisty-selected.png");
}
:root[active] treechildren::-moz-tree-twisty(selected) {
-moz-appearance: none;
list-style-image: url("chrome://zotero/skin/mac/twisty-selected.png");
}
#zotero-pane:not(:-moz-window-inactive) treechildren::-moz-tree-twisty(selected, open) {
-moz-appearance: none;
list-style-image: url("chrome://zotero/skin/mac/twisty-selected-open.png");
}
:root[active] treechildren::-moz-tree-twisty(selected, open) {
tree:focus treechildren::-moz-tree-twisty(selected, open) {
-moz-appearance: none;
list-style-image: url("chrome://zotero/skin/mac/twisty-selected-open.png");
}

View file

@ -0,0 +1,4 @@
#zotero-toolbar {
-moz-appearance: none !important;
background: url("chrome://zotero/skin/mac/toolbar-background.png") left center repeat-x;
}

View file

@ -187,13 +187,6 @@
// Metadata for URL's
if (this.item.attachmentLinkMode == Zotero.Attachments.LINK_MODE_LINKED_URL
|| isImportedURL) {
// "View Page"/"View Snapshot" label
if (isImportedURL) {
var str = Zotero.getString('pane.item.attachments.view.snapshot');
}
else {
var str = Zotero.getString('pane.item.attachments.view.link');
}
// URL
if (this.displayURL) {
@ -217,7 +210,7 @@
// Access date
if (this.displayAccessed) {
this._id("accessed-label").value = Zotero.getString('itemFields.accessDate')+": ";
this._id("accessed-label").value = Zotero.getString('itemFields.accessDate')+":";
this._id("accessed").value = Zotero.Date.sqlToDate(
this.item.getField('accessDate'), true
).toLocaleString();
@ -229,7 +222,6 @@
}
// Metadata for files
else {
var str = Zotero.getString('pane.item.attachments.view.file');
urlField.hidden = true;
accessed.hidden = true;
}
@ -242,7 +234,7 @@
if (fileName) {
// TODO: localize
this._id("fileName-label").value = "Filename: ";
this._id("fileName-label").value = "Filename:";
this._id("fileName").value = fileName;
fileNameRow.hidden = false;
}
@ -260,7 +252,7 @@
var pages = pages ? pages.total : null;
if (pages) {
// TODO: localize colon
this._id("pages-label").value = Zotero.getString('itemFields.pages') + ': ';
this._id("pages-label").value = Zotero.getString('itemFields.pages') + ':';
this._id("pages").value = pages;
pagesRow.hidden = false;
}
@ -273,7 +265,7 @@
}
if (this.displayDateModified) {
this._id("dateModified-label").value = Zotero.getString('itemFields.dateModified')+': ';
this._id("dateModified-label").value = Zotero.getString('itemFields.dateModified')+':';
var mtime = this.item.attachmentModificationTime;
if (mtime) {
this._id("dateModified").value = new Date(mtime).toLocaleString();
@ -304,6 +296,8 @@
var noteEditor = this._id('note-editor');
if (this.displayNote) {
if (this.displayNoteIfEmpty || this.item.getNote() != '') {
Zotero.debug("setting links on top");
noteEditor.linksOnTop = true;
noteEditor.hidden = false;
// Don't make note editable (at least for now)
@ -478,7 +472,7 @@
str = 'general.yes';
break;
}
this._id("index-status-label").value = Zotero.getString('fulltext.indexState.indexed') + ': ';
this._id("index-status-label").value = Zotero.getString('fulltext.indexState.indexed') + ':';
indexStatus.value = Zotero.getString(str);
// Reindex button tooltip (string stored in zotero.properties)

View file

@ -706,12 +706,12 @@
label.setAttribute("fieldname", field);
label.setAttribute("onclick", "this.nextSibling.firstChild.blur()");
var hbox = document.createElement("hbox");
var elem = this.createValueElement(
Zotero.Date.multipartToStr(value),
field,
tabindex
);
elem.setAttribute('flex', 1);
// y-m-d status indicator
var datebox = document.createElement('hbox');
@ -735,6 +735,7 @@
var hbox = document.createElement('hbox');
hbox.setAttribute('flex', 1);
hbox.className = "date-box";
hbox.appendChild(elem);
hbox.appendChild(datebox);
@ -765,6 +766,8 @@
lastName.setAttribute('fieldMode', '1');
button.setAttribute('onclick', "document.getBindingParent(this).switchCreatorMode(Zotero.getAncestorByTagName(this, 'row'), 0)");
lastName.setAttribute('flex', '1');
delete lastName.style.width;
delete lastName.style.maxWidth;
// Remove firstname field from tabindex
var tab = parseInt(firstName.getAttribute('ztabindex'));
@ -797,6 +800,34 @@
button.setAttribute('onclick', "document.getBindingParent(this).switchCreatorMode(Zotero.getAncestorByTagName(this, 'row'), 1)");
lastName.setAttribute('flex', '0');
// appropriately truncate lastName
// get item box width
var computedStyle = window.getComputedStyle(this, null);
var boxWidth = computedStyle.getPropertyValue('width');
// get field label width
var computedStyle = window.getComputedStyle(row.firstChild, null);
var leftHboxWidth = computedStyle.getPropertyValue('width');
// get last name width
computedStyle = window.getComputedStyle(lastName, null);
var lastNameWidth = computedStyle.getPropertyValue('width');
if(boxWidth.substr(-2) === 'px'
&& leftHboxWidth.substr(-2) === 'px'
&& lastNameWidth.substr(-2) === "px") {
// compute a maximum width
boxWidth = parseInt(boxWidth);
leftHboxWidth = parseInt(leftHboxWidth);
lastNameWidth = parseInt(lastNameWidth);
var maxWidth = boxWidth-leftHboxWidth-140;
if(lastNameWidth > maxWidth) {
lastName.style.width = maxWidth+"px";
lastName.style.maxWidth = maxWidth+"px";
} else {
delete lastName.style.width;
delete lastName.style.maxWidth;
}
}
// Add firstname field to tabindex
var tab = parseInt(lastName.getAttribute('ztabindex'));
firstName.setAttribute('ztabindex', tab + 1);
@ -865,9 +896,6 @@
<parameter name="elem"/>
<body>
<![CDATA[
// DEBUG: Valid nsIScrollBoxObject but methods return errors
return;
var sbo = document.getAnonymousNodes(this)[0].boxObject;
sbo.QueryInterface(Components.interfaces.nsIScrollBoxObject);
sbo.ensureElementIsVisible(elem);
@ -1521,14 +1549,6 @@
fieldName,
tabindex
);
// Reset creator mode settings
if (otherFields.fieldMode) {
this.switchCreatorMode(row, 1, true);
}
else {
this.switchCreatorMode(row, 0, true);
}
}
// Tags
@ -1682,6 +1702,11 @@
var box = textbox.parentNode;
box.replaceChild(elem,textbox);
if(field === 'creator') {
// Reset creator mode settings here so that flex attribute gets reset
this.switchCreatorMode(row, (otherFields.fieldMode ? 1 : 0), true);
}
if (this._tabDirection) {
if (!focusMode) {
var focusMode = 'info';

View file

@ -134,6 +134,17 @@
</setter>
</property>
<property name="linksOnTop">
<setter>
<![CDATA[
var links = this._id('linksbox');
var parent = links.parentNode;
parent.removeChild(links);
parent.insertBefore(links, this._id(val ? 'citeLabel' : 'goButton'));
]]>
</setter>
</property>
<property name="note"
onget="Zotero.debug('Getting note with .note deprecated -- use .item in zoteronoteeditor'); return this._item"
onset="Zotero.debug('Setting note with .note deprecated -- use .item in zoteronoteeditor'); this.item = val"/>
@ -368,7 +379,7 @@
<content>
<xul:vbox xbl:inherits="flex">
<xul:label id="citeLabel"/>
<xul:label id="citeLabel" hidden="true"/>
<xul:textbox id="noteField" type="styled" mode="note"
timeout="1000" flex="1" hidden="true"/>
<xul:textbox id="noteFieldReadOnly" type="styled" mode="note"

View file

@ -229,6 +229,37 @@ var Zotero_LocateMenu = new function() {
var ViewOptions = {};
/**
* "View PDF" option
*
* Should appear only when the item is a PDF, or a linked or attached file or web attachment is
* a PDF
*/
ViewOptions.pdf = new function() {
this.icon = "chrome://zotero/skin/treeitem-attachment-pdf.png";
this._mimeTypes = ["application/pdf"];
this.canHandleItem = function(item) !!_getFirstAttachmentWithMIMEType(item, this._mimeTypes);
this.handleItems = function(items, event) {
for each(var item in items) {
var attachment = _getFirstAttachmentWithMIMEType(item, this._mimeTypes);
if(attachment) {
ZoteroPane.viewAttachment(attachment.id, event);
return;
}
}
}
function _getFirstAttachmentWithMIMEType(item, mimeTypes) {
var attachments = (item.isAttachment() ? [item] : Zotero.Items.get(item.getBestAttachments()));
for each(var attachment in attachments) {
if(mimeTypes.indexOf(attachment.attachmentMIMEType) !== -1
&& item.linkMode != Zotero.Attachments.LINK_MODE_LINKED_URL) return attachment;
}
return false;
}
};
/**
* "View Online" option
*
@ -277,37 +308,6 @@ var Zotero_LocateMenu = new function() {
}
};
/**
* "View PDF" option
*
* Should appear only when the item is a PDF, or a linked or attached file or web attachment is
* a PDF
*/
ViewOptions.pdf = new function() {
this.icon = "chrome://zotero/skin/treeitem-attachment-pdf.png";
this._mimeTypes = ["application/pdf"];
this.canHandleItem = function(item) !!_getFirstAttachmentWithMIMEType(item, this._mimeTypes);
this.handleItems = function(items, event) {
for each(var item in items) {
var attachment = _getFirstAttachmentWithMIMEType(item, this._mimeTypes);
if(attachment) {
ZoteroPane.viewAttachment(attachment.id, event);
return;
}
}
}
function _getFirstAttachmentWithMIMEType(item, mimeTypes) {
var attachments = (item.isAttachment() ? [item] : Zotero.Items.get(item.getBestAttachments()));
for each(var attachment in attachments) {
if(mimeTypes.indexOf(attachment.attachmentMIMEType) !== -1
&& item.linkMode != Zotero.Attachments.LINK_MODE_LINKED_URL) return attachment;
}
return false;
}
};
/**
* "View Snapshot" option
*

View file

@ -41,6 +41,8 @@
<!-- Include the global XPCOM object -->
<script src="overlay.js"/>
<popup id="contentAreaContextMenu"/>
<toolbarpalette id="BrowserToolbarPalette">
<toolbarbutton id="scholar-toolbar-button"/> <!-- May be necessary to keep pre-1.0b2 installs from breaking -->
<toolbarbutton id="zotero-toolbar-button" class="toolbarbutton-1"

View file

@ -212,7 +212,6 @@
context="toolbar-context-menu"
defaultset="personal-bookmarks"
customizable="true"/>-->
<hbox flex="1" id="browser">
<vbox id="appcontent" flex="1">
<stack id="zotero-pane-stack" fullscreenmode="true" flex="1"/>

View file

@ -2,6 +2,8 @@
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
<?xml-stylesheet href="chrome://zotero/skin/zotero.css" type="text/css"?>
<?xml-stylesheet href="chrome://zotero/skin/tab.css" type="text/css"?>
<?xml-stylesheet href="chrome://zotero-platform/content/tab.css" type="text/css"?>
<?xul-overlay href="chrome://zotero/content/zoteroPane.xul"?>
<?xul-overlay href="chrome://zotero/content/itemPane.xul"?>

View file

@ -68,6 +68,13 @@
});
tinyMCE.execCommand("mceAddControl", true, "tinymce");
</script>
<style>
table.mceLayout {
border-left: 0 !important;
border-right: 0 !important;
border-top: 0 !important;
}
</style>
</head>
<body>
<div id="tinymce"><div id="noScriptWarning"/></div>

View file

@ -4,6 +4,11 @@
<title>TinyMCE</title>
<link type="text/css" rel="stylesheet" href="css/note-ui.css"/>
<style>
table.mceLayout {
border-left: 0 !important;
border-right: 0 !important;
border-top: 0 !important;
}
table.mceLayout > tbody > tr.mceLast {
top: 0;
}

View file

@ -346,6 +346,7 @@ Zotero.Cite.makeFormattedBibliography = function(cslEngine, format) {
if(entrySpacing == NaN) throw "Invalid entryspacing";
if(lineSpacing == NaN) throw "Invalid linespacing";
var str;
default xml namespace = ''; with({});
try {
XML.prettyPrinting = false;
@ -420,12 +421,13 @@ Zotero.Cite.makeFormattedBibliography = function(cslEngine, format) {
}
//Zotero.debug(xml);
str = xml.toXMLString();
} finally {
XML.prettyPrinting = true;
XML.ignoreWhitespace = true;
}
return xml.toXMLString();
return str;
} else if(format == "text") {
return bib[0].bibstart+bib[1].join("")+bib[0].bibend;
} else if(format == "rtf") {

View file

@ -1732,7 +1732,7 @@ CSL.DateParser = function (txt) {
};
CSL.Engine = function (sys, style, lang, forceLang) {
var attrs, langspec, localexml, locale;
this.processor_version = "1.0.111";
this.processor_version = "1.0.112";
this.csl_version = "1.0";
this.sys = sys;
this.sys.xml = new CSL.System.Xml.Parsing();
@ -3167,7 +3167,8 @@ CSL.citeEnd = function (Item) {
this.tmp.last_names_used = this.tmp.names_used.slice();
this.tmp.cut_var = false;
if (this.tmp.disambig_restore && this.registry.registry[Item.id]) {
this.registry.registry[Item.id].disambig = this.tmp.disambig_restore;
this.registry.registry[Item.id].disambig.names = this.tmp.disambig_restore.names;
this.registry.registry[Item.id].disambig.givens = this.tmp.disambig_restore.givens;
}
this.tmp.disambig_request = false;
if (!this.tmp.suppress_decorations && this.tmp.offset_characters) {

View file

@ -115,7 +115,10 @@ var ZoteroPane = new function()
_loaded = true;
var zp = document.getElementById('zotero-pane');
Zotero.setFontSize(zp)
Zotero.setFontSize(zp);
this.updateToolbarPosition();
window.addEventListener("resize", this.updateToolbarPosition, false);
window.setTimeout(this.updateToolbarPosition, 0);
if (Zotero.isMac) {
//document.getElementById('zotero-tb-actions-zeroconf-update').setAttribute('hidden', false);
@ -124,11 +127,11 @@ var ZoteroPane = new function()
document.getElementById('zotero-pane-stack').setAttribute('platform', 'win');
}
if(Zotero.isFx4) {
if(Zotero.isFx4 || window.ZoteroTab) {
// hack, since Fx 4 no longer sets active, and the reverse in polarity of the preferred
// property makes things painful to handle otherwise
// DEBUG: remove this once we only support Fx 4
zp.setAttribute("isFx4", "true");
zp.setAttribute("ignoreActiveAttribute", "true");
}
//Initialize collections view
@ -3073,7 +3076,7 @@ var ZoteroPane = new function()
(!Zotero.MIME.hasInternalHandler(mimeType, ext) || Zotero.Prefs.get('launchNonNativeFiles')));
}
if (!forceExternalViewer) {
if (!externalViewer) {
var url = 'zotero://attachment/' + itemID + '/';
this.loadURI(url, event, { attachmentID: itemID});
}
@ -3481,4 +3484,18 @@ var ZoteroPane = new function()
}
Zotero.Prefs.set("pane.persist", JSON.stringify(serializedValues));
}
/**
* Moves around the toolbar when the user moves around the pane
*/
this.updateToolbarPosition = function() {
const PANES = ["collections", "items"];
for each(var paneName in PANES) {
var pane = document.getElementById("zotero-"+paneName+"-pane");
var toolbar = document.getElementById("zotero-"+paneName+"-toolbar");
computedStyle = window.getComputedStyle(pane, null);
toolbar.style.width = computedStyle.getPropertyValue("width");
}
}
}

View file

@ -76,122 +76,43 @@
<checkbox/>
</box>
<hbox id="zotero-pane"
<vbox id="zotero-pane"
onkeydown="ZoteroPane.handleKeyDown(event, this.id)"
onkeyup="ZoteroPane.handleKeyUp(event, this.id)"
chromedir="&locale.dir;">
<popupset>
<menupopup id="zotero-collectionmenu" onpopupshowing="ZoteroPane.buildCollectionContextMenu();">
<menuitem label="&zotero.toolbar.newCollection.label;" oncommand="ZoteroPane.newCollection()"/>
<menuitem label="&zotero.toolbar.newSavedSearch.label;" oncommand="ZoteroPane.newSearch()"/>
<menuitem label="&zotero.toolbar.newSubcollection.label;" oncommand="ZoteroPane.newCollection(ZoteroPane.getSelectedCollection().id)"/>
<menuseparator/>
<menuitem oncommand="ZoteroPane.editSelectedCollection();"/>
<menuitem oncommand="ZoteroPane.deleteSelectedCollection();"/>
<menuseparator/>
<menuitem oncommand="Zotero_File_Interface.exportCollection();"/>
<menuitem oncommand="Zotero_File_Interface.bibliographyFromCollection();"/>
<menuitem label="&zotero.toolbar.export.label;" oncommand="Zotero_File_Interface.exportFile()"/>
<menuitem oncommand="Zotero_Report_Interface.loadCollectionReport()"/>
<menuitem label="&zotero.toolbar.emptyTrash.label;" oncommand="ZoteroPane.emptyTrash();"/>
<menuitem label="&zotero.toolbar.newCollection.label;" oncommand="ZoteroPane.createCommonsBucket();"/><!--TODO localize -->
<menuitem label="Refresh" oncommand="ZoteroPane.refreshCommonsBucket();"/><!--TODO localize -->
</menupopup>
<menupopup id="zotero-itemmenu" onpopupshowing="ZoteroPane.buildItemContextMenu();">
<menuitem label="&zotero.items.menu.showInLibrary;" oncommand="ZoteroPane.selectItem(this.parentNode.getAttribute('itemID'), true)"/>
<menuseparator/>
<!-- with icon: <menuitem class="menuitem-iconic" id="zotero-menuitem-note" label="&zotero.items.menu.attach.note;" oncommand="ZoteroPane.newNote(false, this.parentNode.getAttribute('itemID'))"/>-->
<menuitem label="&zotero.items.menu.attach.note;" oncommand="ZoteroPane.newNote(false, this.parentNode.getAttribute('itemID'))"/>
<menu label="&zotero.items.menu.attach;">
<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="&zotero.items.menu.attach.file;" oncommand="var itemID = parseInt(this.parentNode.parentNode.parentNode.getAttribute('itemID')); ZoteroPane.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.addAttachmentFromDialog(true, itemID);"/>
<toolbar id="zotero-toolbar" class="toolbar">
<hbox id="zotero-collections-toolbar">
<toolbarbutton id="zotero-tb-collection-add" class="zotero-tb-button" tooltiptext="&zotero.toolbar.newCollection.label;" oncommand="ZoteroPane.newCollection()"/>
<toolbarbutton id="zotero-tb-group-add" class="zotero-tb-button" tooltiptext="&zotero.toolbar.newGroup;" oncommand="ZoteroPane.newGroup()"/>
<spacer flex="1"/>
<toolbarbutton id="zotero-tb-actions-menu" class="zotero-tb-button" tooltiptext="&zotero.toolbar.actions.label;" type="menu">
<menupopup id="zotero-tb-actions-popup" onpopupshowing="document.getElementById('cmd_zotero_reportErrors').setAttribute('disabled', Zotero.getErrors().length == 0)">
<menuitem id="zotero-tb-actions-import" label="&zotero.toolbar.import.label;" oncommand="Zotero_File_Interface.importFile();"/>
<menuitem id="zotero-tb-actions-import-clipboard" label="&zotero.toolbar.importFromClipboard;" oncommand="Zotero_File_Interface.importFromClipboard();" />
<menuitem id="zotero-tb-actions-export" label="&zotero.toolbar.export.label;" oncommand="Zotero_File_Interface.exportFile();"/>
<menuitem id="zotero-tb-actions-rtfScan" label="&zotero.toolbar.rtfScan.label;" oncommand="window.openDialog('chrome://zotero/content/rtfScan.xul', 'rtfScan', 'chrome,centerscreen')"/>
<menuitem hidden="true" id="zotero-tb-actions-zeroconf-update"
label="Search for Shared Libraries" oncommand="Zotero.Zeroconf.findInstances()"/>
<menuseparator id="zotero-tb-actions-plugins-separator"/>
<menuitem id="zotero-tb-actions-timeline" label="&zotero.toolbar.timeline.label;" oncommand="Zotero_Timeline_Interface.loadTimeline()"/>
<!-- TODO: localize <menuitem id="zotero-tb-actions-duplicate" label="&zotero.toolbar.duplicate.label;" oncommand="ZoteroPane.showDuplicates()"/>-->
<menuitem id="zotero-tb-actions-showDuplicates" label="Show Duplicates" oncommand="ZoteroPane.showDuplicates()" hidden="true"/>
<menuseparator hidden="true" id="zotero-tb-actions-sync-separator"/>
<menuitem hidden="true" label="WebDAV Sync Debugging" disabled="true"/>
<menuitem hidden="true" label=" Purge Deleted Storage Files" oncommand="Zotero.Sync.Storage.purgeDeletedStorageFiles('webdav', function(results) { Zotero.debug(results); })"/>
<menuitem hidden="true" label=" Purge Orphaned Storage Files" oncommand="Zotero.Sync.Storage.purgeOrphanedStorageFiles('webdav', function(results) { Zotero.debug(results); })"/>
<menuseparator id="zotero-tb-actions-separator"/>
<menuitem id="zotero-tb-actions-prefs" label="&zotero.toolbar.preferences.label;"
oncommand="ZoteroPane.openPreferences()"/>
<menuitem id="zotero-tb-actions-reportErrors" command="cmd_zotero_reportErrors" disabled="true"/>
<menuitem id="zotero-tb-actions-support" label="&zotero.toolbar.supportAndDocumentation;" oncommand="gBrowser.selectedTab = gBrowser.addTab('http://www.zotero.org/support/')"/>
<menuitem id="zotero-tb-actions-about" label="&zotero.toolbar.about.label;" oncommand="window.openDialog('chrome://zotero/content/about.xul', 'about', 'chrome')"/>
</menupopup>
</menu>
<menuseparator/>
<menuitem label="&zotero.items.menu.duplicateItem;" oncommand="ZoteroPane.duplicateSelectedItem();"/>
<menuitem oncommand="ZoteroPane.deleteSelectedItems();"/>
<menuitem oncommand="ZoteroPane.deleteSelectedItems(true);"/>
<menuseparator/>
<menuitem oncommand="Zotero_File_Interface.exportItems();"/>
<menuitem oncommand="Zotero_File_Interface.bibliographyFromItems();"/>
<menuitem oncommand="Zotero_Report_Interface.loadItemReport()"/>
<menuseparator/>
<menuitem oncommand="ZoteroPane.createParentItemsFromSelected();"/>
<menuitem oncommand="Zotero_RecognizePDF.recognizeSelected();"/>
<menuitem oncommand="ZoteroPane.renameSelectedAttachmentsFromParents()"/>
<menuitem oncommand="ZoteroPane.reindexItem();"/>
</menupopup>
</popupset>
<vbox id="zotero-collections-pane" zotero-persist="width" flex="1">
<!-- This extra vbox prevents the toolbar from getting compressed when resizing
the tag selector to max height -->
<vbox flex="1">
<hbox class="toolbar">
<toolbarbutton id="zotero-tb-collection-add" class="zotero-tb-button" tooltiptext="&zotero.toolbar.newCollection.label;" oncommand="ZoteroPane.newCollection()"/>
<toolbarbutton id="zotero-tb-group-add" class="zotero-tb-button" tooltiptext="&zotero.toolbar.newGroup;" oncommand="ZoteroPane.newGroup()"/>
<spacer flex="1"/>
<toolbarbutton id="zotero-tb-actions-menu" class="zotero-tb-button" tooltiptext="&zotero.toolbar.actions.label;" type="menu">
<menupopup id="zotero-tb-actions-popup" onpopupshowing="document.getElementById('cmd_zotero_reportErrors').setAttribute('disabled', Zotero.getErrors().length == 0)">
<menuitem id="zotero-tb-actions-import" label="&zotero.toolbar.import.label;" oncommand="Zotero_File_Interface.importFile();"/>
<menuitem id="zotero-tb-actions-import-clipboard" label="&zotero.toolbar.importFromClipboard;" oncommand="Zotero_File_Interface.importFromClipboard();" />
<menuitem id="zotero-tb-actions-export" label="&zotero.toolbar.export.label;" oncommand="Zotero_File_Interface.exportFile();"/>
<menuitem id="zotero-tb-actions-rtfScan" label="&zotero.toolbar.rtfScan.label;" oncommand="window.openDialog('chrome://zotero/content/rtfScan.xul', 'rtfScan', 'chrome,centerscreen')"/>
<menuitem hidden="true" id="zotero-tb-actions-zeroconf-update"
label="Search for Shared Libraries" oncommand="Zotero.Zeroconf.findInstances()"/>
<menuseparator id="zotero-tb-actions-plugins-separator"/>
<menuitem id="zotero-tb-actions-timeline" label="&zotero.toolbar.timeline.label;" oncommand="Zotero_Timeline_Interface.loadTimeline()"/>
<!-- TODO: localize <menuitem id="zotero-tb-actions-duplicate" label="&zotero.toolbar.duplicate.label;" oncommand="ZoteroPane.showDuplicates()"/>-->
<menuitem id="zotero-tb-actions-showDuplicates" label="Show Duplicates" oncommand="ZoteroPane.showDuplicates()" hidden="true"/>
<menuseparator hidden="true" id="zotero-tb-actions-sync-separator"/>
<menuitem hidden="true" label="WebDAV Sync Debugging" disabled="true"/>
<menuitem hidden="true" label=" Purge Deleted Storage Files" oncommand="Zotero.Sync.Storage.purgeDeletedStorageFiles('webdav', function(results) { Zotero.debug(results); })"/>
<menuitem hidden="true" label=" Purge Orphaned Storage Files" oncommand="Zotero.Sync.Storage.purgeOrphanedStorageFiles('webdav', function(results) { Zotero.debug(results); })"/>
<menuseparator id="zotero-tb-actions-separator"/>
<menuitem id="zotero-tb-actions-prefs" label="&zotero.toolbar.preferences.label;"
oncommand="ZoteroPane.openPreferences()"/>
<menuitem id="zotero-tb-actions-reportErrors" command="cmd_zotero_reportErrors" disabled="true"/>
<menuitem id="zotero-tb-actions-support" label="&zotero.toolbar.supportAndDocumentation;" oncommand="gBrowser.selectedTab = gBrowser.addTab('http://www.zotero.org/support/')"/>
<menuitem id="zotero-tb-actions-about" label="&zotero.toolbar.about.label;" oncommand="window.openDialog('chrome://zotero/content/about.xul', 'about', 'chrome')"/>
</menupopup>
</toolbarbutton>
</hbox>
<tree id="zotero-collections-tree" hidecolumnpicker="true" context="zotero-collectionmenu"
onmouseover="ZoteroPane.collectionsView.setHighlightedRows();"
onkeypress="ZoteroPane.handleKeyPress(event, this.id)"
onselect="ZoteroPane.onCollectionSelected();" seltype="cell"
ondragstart="if (event.target.localName == 'treechildren') { ZoteroPane.collectionsView.onDragStart(event); }"
ondragenter="return ZoteroPane.collectionsView.onDragEnter(event)"
ondragover="return ZoteroPane.collectionsView.onDragOver(event)"
ondrop="return ZoteroPane.collectionsView.onDrop(event)"
flex="1">
<treecols>
<treecol
id="zotero-collections-name-column"
flex="1"
primary="true"
hideheader="true"/>
</treecols>
<treechildren/>
</tree>
</vbox>
<splitter id="zotero-tags-splitter" onmouseup="ZoteroPane.updateTagSelectorSize()" collapse="after">
<grippy oncommand="ZoteroPane.toggleTagSelector()"/>
</splitter>
<zoterotagselector id="zotero-tag-selector" zotero-persist="height,collapsed,showAutomatic,filterToScope"
oncommand="ZoteroPane.updateTagFilter()"/>
</vbox>
<splitter id="zotero-tree-splitter" resizebefore="closest" resizeafter="closest" collapse="before"
onmousemove="document.getElementById('zotero-items-toolbar').setAttribute('state', this.getAttribute('state'));">
<grippy/>
</splitter>
<vbox id="zotero-items-pane" zotero-persist="width" flex="1">
<hbox class="toolbar" id="zotero-items-toolbar" align="center">
</toolbarbutton>
</hbox>
<hbox id="zotero-items-toolbar" align="center">
<toolbarbutton id="zotero-tb-add" class="zotero-tb-button" tooltiptext="&zotero.toolbar.newItem.label;" type="menu">
<!-- New Item drop-down built in overlay.js::onLoad() -->
<menupopup>
@ -230,112 +151,7 @@
</textbox>
</hbox>
<deck id="zotero-items-pane-content" selectedIndex="0" flex="1">
<tree
id="zotero-items-tree" context="zotero-itemmenu"
enableColumnDrag="true"
onfocus="if (ZoteroPane.itemsView.rowCount &amp;&amp; !ZoteroPane.itemsView.selection.count) { ZoteroPane.itemsView.selection.select(0); }"
onkeypress="ZoteroPane.handleKeyPress(event, this.id)"
onselect="ZoteroPane.itemSelected();"
ondragstart="if (event.target.localName == 'treechildren') { ZoteroPane.itemsView.onDragStart(event); }"
ondragenter="return ZoteroPane.itemsView.onDragEnter(event)"
ondragover="return ZoteroPane.itemsView.onDragOver(event)"
ondragdrop="return ZoteroPane.itemsView.onDrop(event)"
flex="1">
<treecols>
<treecol
id="zotero-items-column-title" primary="true"
label="&zotero.items.title_column;"
flex="4" zotero-persist="width ordinal hidden sortActive sortDirection"/>
<splitter class="tree-splitter"/>
<treecol
id="zotero-items-column-firstCreator"
label="&zotero.items.creator_column;"
flex="1" zotero-persist="width ordinal hidden sortActive sortDirection"/>
<splitter class="tree-splitter"/>
<treecol
id="zotero-items-column-type" hidden="true"
label="&zotero.items.type_column;"
width="40" zotero-persist="width ordinal hidden sortActive sortDirection"/>
<splitter class="tree-splitter"/>
<treecol
id="zotero-items-column-date" hidden="true"
label="&zotero.items.date_column;"
flex="1" zotero-persist="width ordinal hidden sortActive sortDirection"/>
<splitter class="tree-splitter"/>
<treecol
id="zotero-items-column-year" hidden="true"
label="&zotero.items.year_column;"
flex="1" zotero-persist="width ordinal hidden sortActive sortDirection"/>
<splitter class="tree-splitter"/>
<treecol
id="zotero-items-column-publisher" hidden="true"
label="&zotero.items.publisher_column;"
flex="1" zotero-persist="width ordinal hidden sortActive sortDirection"/>
<splitter class="tree-splitter"/>
<treecol
id="zotero-items-column-publicationTitle" hidden="true"
label="&zotero.items.publication_column;"
flex="1" zotero-persist="width ordinal hidden sortActive sortDirection"/>
<splitter class="tree-splitter"/>
<treecol
id="zotero-items-column-journalAbbreviation" hidden="true"
label="&zotero.items.journalAbbr_column;"
flex="1" zotero-persist="width ordinal hidden sortActive sortDirection"/>
<splitter class="tree-splitter"/>
<treecol
id="zotero-items-column-language" hidden="true"
label="&zotero.items.language_column;"
flex="1" zotero-persist="width ordinal hidden sortActive sortDirection"/>
<splitter class="tree-splitter"/>
<treecol
id="zotero-items-column-accessDate" hidden="true"
label="&zotero.items.accessDate_column;"
flex="1" zotero-persist="width ordinal hidden sortActive sortDirection"/>
<splitter class="tree-splitter"/>
<treecol
id="zotero-items-column-libraryCatalog" hidden="true"
label="&zotero.items.libraryCatalog_column;"
flex="1" zotero-persist="width ordinal hidden sortActive sortDirection"/>
<splitter class="tree-splitter"/>
<treecol
id="zotero-items-column-callNumber" hidden="true"
label="&zotero.items.callNumber_column;"
flex="1" zotero-persist="width ordinal hidden sortActive sortDirection"/>
<splitter class="tree-splitter"/>
<treecol
id="zotero-items-column-rights" hidden="true"
label="&zotero.items.rights_column;"
flex="1" zotero-persist="width ordinal hidden sortActive sortDirection"/>
<splitter class="tree-splitter"/>
<treecol
id="zotero-items-column-dateAdded" hidden="true"
label="&zotero.items.dateAdded_column;"
flex="1" zotero-persist="width ordinal hidden sortActive sortDirection"/>
<splitter class="tree-splitter"/>
<treecol
id="zotero-items-column-dateModified" hidden="true"
label="&zotero.items.dateModified_column;"
flex="1" zotero-persist="width ordinal hidden sortActive sortDirection"/>
<splitter class="tree-splitter"/>
<treecol
id="zotero-items-column-numChildren"
label="&zotero.items.numChildren_column;"
zotero-persist="width ordinal hidden sortActive sortDirection"/>
</treecols>
<treechildren/>
</tree>
<!-- Label for displaying messages when items pane is hidden
(e.g. "Advanced search mode — press Enter to search.")-->
<vbox id="zotero-items-pane-message-box" pack="center" align="center"/>
</deck>
</vbox>
<splitter id="zotero-view-splitter" resizebefore="closest" resizeafter="closest"/>
<vbox id="zotero-item-pane" zotero-persist="width">
<hbox class="toolbar" align="center">
<hbox id="zotero-item-toolbar" align="center" flex="1">
<hbox align="center" pack="start" flex="1">
<toolbarbutton id="zotero-tb-locate" class="zotero-tb-button" tooltiptext="&zotero.toolbar.openURL.label;" type="menu">
<menupopup id="zotero-tb-locate-menu" onpopupshowing="Zotero_LocateMenu.buildLocateMenu()"/>
@ -392,37 +208,230 @@
<toolbarbutton id="zotero-tb-fullscreen" tooltiptext="&zotero.toolbar.tab.tooltip;" oncommand="ZoteroPane.toggleTab();" class="zotero-tb-button"/>
<toolbarbutton id="zotero-close-button" class="tabs-closebutton" oncommand="ZoteroOverlay.toggleDisplay()"/>
</hbox>
<!-- TODO: localize -->
<button id="zotero-item-restore-button" label="Restore to Library"
oncommand="ZoteroPane.restoreSelectedItems()" hidden="true"/>
<!-- TODO: localize -->
<button id="zotero-item-show-original" label="Show Original"
oncommand="ZoteroPane.showOriginalItem()" hidden="true"/>
<deck id="zotero-item-pane-content" selectedIndex="0" flex="1">
<groupbox pack="center" align="center">
<label id="zotero-view-selected-label"/>
</groupbox>
<tabbox id="zotero-view-tabbox" flex="1" onselect="if (!ZoteroPane.collectionsView.selection || event.originalTarget.localName != 'tabpanels') { return; }; ZoteroItemPane.viewItem(ZoteroPane.getSelectedItems()[0], ZoteroPane.collectionsView.editable ? 'edit' : 'view', this.selectedIndex)">
<tabs>
<tab label="&zotero.tabs.info.label;"/>
<tab label="&zotero.tabs.notes.label;"/>
<tab label="&zotero.tabs.tags.label;"/>
<tab label="&zotero.tabs.related.label;"/>
</tabs>
<tabpanels id="zotero-view-item" flex="1"/>
</tabbox>
<!-- Note info pane -->
<groupbox id="zotero-view-note" flex="1">
<zoteronoteeditor id="zotero-note-editor" flex="1"/>
<button id="zotero-view-note-button" label="&zotero.notes.separate;" oncommand="ZoteroPane.openNoteWindow(this.getAttribute('noteID')); if(this.hasAttribute('sourceID')) ZoteroPane.selectItem(this.getAttribute('sourceID'));"/>
</groupbox>
<!-- Attachment info pane -->
<groupbox flex="1">
<zoteroattachmentbox id="zotero-attachment-box" flex="1"/>
</groupbox>
</deck>
</vbox>
</hbox>
</toolbar>
<popupset>
<menupopup id="zotero-collectionmenu" onpopupshowing="ZoteroPane.buildCollectionContextMenu();">
<menuitem label="&zotero.toolbar.newCollection.label;" oncommand="ZoteroPane.newCollection()"/>
<menuitem label="&zotero.toolbar.newSavedSearch.label;" oncommand="ZoteroPane.newSearch()"/>
<menuitem label="&zotero.toolbar.newSubcollection.label;" oncommand="ZoteroPane.newCollection(ZoteroPane.getSelectedCollection().id)"/>
<menuseparator/>
<menuitem oncommand="ZoteroPane.editSelectedCollection();"/>
<menuitem oncommand="ZoteroPane.deleteSelectedCollection();"/>
<menuseparator/>
<menuitem oncommand="Zotero_File_Interface.exportCollection();"/>
<menuitem oncommand="Zotero_File_Interface.bibliographyFromCollection();"/>
<menuitem label="&zotero.toolbar.export.label;" oncommand="Zotero_File_Interface.exportFile()"/>
<menuitem oncommand="Zotero_Report_Interface.loadCollectionReport()"/>
<menuitem label="&zotero.toolbar.emptyTrash.label;" oncommand="ZoteroPane.emptyTrash();"/>
<menuitem label="&zotero.toolbar.newCollection.label;" oncommand="ZoteroPane.createCommonsBucket();"/><!--TODO localize -->
<menuitem label="Refresh" oncommand="ZoteroPane.refreshCommonsBucket();"/><!--TODO localize -->
</menupopup>
<menupopup id="zotero-itemmenu" onpopupshowing="ZoteroPane.buildItemContextMenu();">
<menuitem label="&zotero.items.menu.showInLibrary;" oncommand="ZoteroPane.selectItem(this.parentNode.getAttribute('itemID'), true)"/>
<menuseparator/>
<!-- with icon: <menuitem class="menuitem-iconic" id="zotero-menuitem-note" label="&zotero.items.menu.attach.note;" oncommand="ZoteroPane.newNote(false, this.parentNode.getAttribute('itemID'))"/>-->
<menuitem label="&zotero.items.menu.attach.note;" oncommand="ZoteroPane.newNote(false, this.parentNode.getAttribute('itemID'))"/>
<menu label="&zotero.items.menu.attach;">
<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="&zotero.items.menu.attach.file;" oncommand="var itemID = parseInt(this.parentNode.parentNode.parentNode.getAttribute('itemID')); ZoteroPane.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.addAttachmentFromDialog(true, itemID);"/>
</menupopup>
</menu>
<menuseparator/>
<menuitem label="&zotero.items.menu.duplicateItem;" oncommand="ZoteroPane.duplicateSelectedItem();"/>
<menuitem oncommand="ZoteroPane.deleteSelectedItems();"/>
<menuitem oncommand="ZoteroPane.deleteSelectedItems(true);"/>
<menuseparator/>
<menuitem oncommand="Zotero_File_Interface.exportItems();"/>
<menuitem oncommand="Zotero_File_Interface.bibliographyFromItems();"/>
<menuitem oncommand="Zotero_Report_Interface.loadItemReport()"/>
<menuseparator/>
<menuitem oncommand="ZoteroPane.createParentItemsFromSelected();"/>
<menuitem oncommand="Zotero_RecognizePDF.recognizeSelected();"/>
<menuitem oncommand="ZoteroPane.renameSelectedAttachmentsFromParents()"/>
<menuitem oncommand="ZoteroPane.reindexItem();"/>
</menupopup>
</popupset>
<hbox id="zotero-trees" flex="1">
<vbox id="zotero-collections-pane" zotero-persist="width" flex="1">
<!-- This extra vbox prevents the toolbar from getting compressed when resizing
the tag selector to max height -->
<tree id="zotero-collections-tree" hidecolumnpicker="true" context="zotero-collectionmenu"
onmouseover="ZoteroPane.collectionsView.setHighlightedRows();"
onkeypress="ZoteroPane.handleKeyPress(event, this.id)"
onselect="ZoteroPane.onCollectionSelected();" seltype="cell"
ondragstart="if (event.target.localName == 'treechildren') { ZoteroPane.collectionsView.onDragStart(event); }"
ondragenter="return ZoteroPane.collectionsView.onDragEnter(event)"
ondragover="return ZoteroPane.collectionsView.onDragOver(event)"
ondrop="return ZoteroPane.collectionsView.onDrop(event)"
flex="1">
<treecols>
<treecol
id="zotero-collections-name-column"
flex="1"
primary="true"
hideheader="true"/>
</treecols>
<treechildren/>
</tree>
<splitter id="zotero-tags-splitter" onmouseup="ZoteroPane.updateTagSelectorSize()" collapse="after">
<grippy oncommand="ZoteroPane.toggleTagSelector()"/>
</splitter>
<zoterotagselector id="zotero-tag-selector" zotero-persist="height,collapsed,showAutomatic,filterToScope"
oncommand="ZoteroPane.updateTagFilter()"/>
</vbox>
<splitter id="zotero-tree-splitter" resizebefore="closest" resizeafter="closest" collapse="before"
onmousemove="document.getElementById('zotero-items-toolbar').setAttribute('state', this.getAttribute('state'));ZoteroPane.updateToolbarPosition();"
oncommand="ZoteroPane.updateToolbarPosition()">
<grippy/>
</splitter>
<vbox id="zotero-items-pane" zotero-persist="width" flex="1">
<deck id="zotero-items-pane-content" selectedIndex="0" flex="1">
<tree
id="zotero-items-tree" context="zotero-itemmenu"
enableColumnDrag="true"
onfocus="if (ZoteroPane.itemsView.rowCount &amp;&amp; !ZoteroPane.itemsView.selection.count) { ZoteroPane.itemsView.selection.select(0); }"
onkeypress="ZoteroPane.handleKeyPress(event, this.id)"
onselect="ZoteroPane.itemSelected();"
ondragstart="if (event.target.localName == 'treechildren') { ZoteroPane.itemsView.onDragStart(event); }"
ondragenter="return ZoteroPane.itemsView.onDragEnter(event)"
ondragover="return ZoteroPane.itemsView.onDragOver(event)"
ondragdrop="return ZoteroPane.itemsView.onDrop(event)"
flex="1">
<treecols>
<treecol
id="zotero-items-column-title" primary="true"
label="&zotero.items.title_column;"
flex="4" zotero-persist="width ordinal hidden sortActive sortDirection"/>
<splitter class="tree-splitter"/>
<treecol
id="zotero-items-column-firstCreator"
label="&zotero.items.creator_column;"
flex="1" zotero-persist="width ordinal hidden sortActive sortDirection"/>
<splitter class="tree-splitter"/>
<treecol
id="zotero-items-column-type" hidden="true"
label="&zotero.items.type_column;"
width="40" zotero-persist="width ordinal hidden sortActive sortDirection"/>
<splitter class="tree-splitter"/>
<treecol
id="zotero-items-column-date" hidden="true"
label="&zotero.items.date_column;"
flex="1" zotero-persist="width ordinal hidden sortActive sortDirection"/>
<splitter class="tree-splitter"/>
<treecol
id="zotero-items-column-year" hidden="true"
label="&zotero.items.year_column;"
flex="1" zotero-persist="width ordinal hidden sortActive sortDirection"/>
<splitter class="tree-splitter"/>
<treecol
id="zotero-items-column-publisher" hidden="true"
label="&zotero.items.publisher_column;"
flex="1" zotero-persist="width ordinal hidden sortActive sortDirection"/>
<splitter class="tree-splitter"/>
<treecol
id="zotero-items-column-publicationTitle" hidden="true"
label="&zotero.items.publication_column;"
flex="1" zotero-persist="width ordinal hidden sortActive sortDirection"/>
<splitter class="tree-splitter"/>
<treecol
id="zotero-items-column-journalAbbreviation" hidden="true"
label="&zotero.items.journalAbbr_column;"
flex="1" zotero-persist="width ordinal hidden sortActive sortDirection"/>
<splitter class="tree-splitter"/>
<treecol
id="zotero-items-column-language" hidden="true"
label="&zotero.items.language_column;"
flex="1" zotero-persist="width ordinal hidden sortActive sortDirection"/>
<splitter class="tree-splitter"/>
<treecol
id="zotero-items-column-accessDate" hidden="true"
label="&zotero.items.accessDate_column;"
flex="1" zotero-persist="width ordinal hidden sortActive sortDirection"/>
<splitter class="tree-splitter"/>
<treecol
id="zotero-items-column-libraryCatalog" hidden="true"
label="&zotero.items.libraryCatalog_column;"
flex="1" zotero-persist="width ordinal hidden sortActive sortDirection"/>
<splitter class="tree-splitter"/>
<treecol
id="zotero-items-column-callNumber" hidden="true"
label="&zotero.items.callNumber_column;"
flex="1" zotero-persist="width ordinal hidden sortActive sortDirection"/>
<splitter class="tree-splitter"/>
<treecol
id="zotero-items-column-rights" hidden="true"
label="&zotero.items.rights_column;"
flex="1" zotero-persist="width ordinal hidden sortActive sortDirection"/>
<splitter class="tree-splitter"/>
<treecol
id="zotero-items-column-dateAdded" hidden="true"
label="&zotero.items.dateAdded_column;"
flex="1" zotero-persist="width ordinal hidden sortActive sortDirection"/>
<splitter class="tree-splitter"/>
<treecol
id="zotero-items-column-dateModified" hidden="true"
label="&zotero.items.dateModified_column;"
flex="1" zotero-persist="width ordinal hidden sortActive sortDirection"/>
<splitter class="tree-splitter"/>
<treecol
id="zotero-items-column-numChildren"
label="&zotero.items.numChildren_column;"
zotero-persist="width ordinal hidden sortActive sortDirection"/>
</treecols>
<treechildren/>
</tree>
<!-- Label for displaying messages when items pane is hidden
(e.g. "Advanced search mode — press Enter to search.")-->
<vbox id="zotero-items-pane-message-box" pack="center" align="center"/>
</deck>
</vbox>
<splitter id="zotero-view-splitter" resizebefore="closest" resizeafter="closest"
onmousemove="ZoteroPane.updateToolbarPosition()"
oncommand="ZoteroPane.updateToolbarPosition()"/>
<vbox id="zotero-item-pane" zotero-persist="width">
<!-- TODO: localize -->
<button id="zotero-item-restore-button" label="Restore to Library"
oncommand="ZoteroPane.restoreSelectedItems()" hidden="true"/>
<!-- TODO: localize -->
<button id="zotero-item-show-original" label="Show Original"
oncommand="ZoteroPane.showOriginalItem()" hidden="true"/>
<deck id="zotero-item-pane-content" selectedIndex="0" flex="1">
<groupbox pack="center" align="center">
<label id="zotero-view-selected-label"/>
</groupbox>
<tabbox id="zotero-view-tabbox" flex="1" onselect="if (!ZoteroPane.collectionsView.selection || event.originalTarget.localName != 'tabpanels') { return; }; ZoteroItemPane.viewItem(ZoteroPane.getSelectedItems()[0], ZoteroPane.collectionsView.editable ? 'edit' : 'view', this.selectedIndex)">
<tabs>
<tab label="&zotero.tabs.info.label;"/>
<tab label="&zotero.tabs.notes.label;"/>
<tab label="&zotero.tabs.tags.label;"/>
<tab label="&zotero.tabs.related.label;"/>
</tabs>
<tabpanels id="zotero-view-item" flex="1"/>
</tabbox>
<!-- Note info pane -->
<groupbox id="zotero-view-note" flex="1">
<zoteronoteeditor id="zotero-note-editor" flex="1"/>
<button id="zotero-view-note-button" label="&zotero.notes.separate;" oncommand="ZoteroPane.openNoteWindow(this.getAttribute('noteID')); if(this.hasAttribute('sourceID')) ZoteroPane.selectItem(this.getAttribute('sourceID'));"/>
</groupbox>
<!-- Attachment info pane -->
<groupbox flex="1">
<zoteroattachmentbox id="zotero-attachment-box" flex="1"/>
</groupbox>
</deck>
</vbox>
</hbox>
</vbox>
<!-- Barrier to prevent tabbing into Zotero pane when busy -->
<box id="zotero-pane-tab-catcher-bottom" hidden="true" align="center" pack="center" style="opacity: 0">

View file

@ -401,7 +401,7 @@ ingester.scrapeErrorDescription = An error occurred while saving this item. Chec
ingester.scrapeErrorDescription.linkText = Known Translator Issues
ingester.scrapeErrorDescription.previousError = The saving process failed due to a previous Zotero error.
ingester.importReferRISDialog.title = Zotero Refer/RIS Import
ingester.importReferRISDialog.title = Zotero RIS/Refer Import
ingester.importReferRISDialog.text = Do you want to import items from "%1$S" into Zotero?\n\nYou can disable automatic RIS/Refer import in the Zotero preferences.
ingester.importReferRISDialog.checkMsg = Always allow for this site

View file

@ -25,8 +25,10 @@
#reindex .toolbarbutton-icon
{
margin: 0;
margin: 0 0 0 2px;
padding: 0;
width: 14px;
height: 14px;
}
#index-box > button
@ -35,25 +37,42 @@
padding: 0;
}
row > label:first-child
{
font-weight: bold;
}
label
{
-moz-margin-start: 1px !important;
-moz-margin-end: 5px !important;
padding: 1px 1px 0 2px;
}
zoteronoteeditor
{
margin: 2px 2px 0 2px;
}
#title
{
font-size: 12px;
font-weight: bold;
}
row label
{
margin: 0 !important;
padding: 0 !important;
}
row > label, row > hbox
{
margin-top: 1px !important;
margin-bottom: 1px !important;
-moz-box-pack: start;
-moz-margin-start: 1px !important;
-moz-margin-end: 5px !important;
padding: 0 2px 0 2px !important;
-moz-border-radius: 6px;
border: 1px solid transparent;
}
row > hbox
{
-moz-box-align: center;
}
row > label:first-child
{
text-align: right;
font-weight: bold;
-moz-margin-start: 5px !important;
-moz-margin-end: 0 !important;
width: 62px;
text-align: right;
font-weight:bold;
}

View file

@ -1,6 +1,6 @@
scrollbox
{
overflow: visible;
overflow: auto;
}
row, tagsbox row
@ -48,19 +48,16 @@ row label
}
/* creator type menu */
.creator-type-label, .creator-type-value {
-moz-box-align: center;
-moz-box-pack: end;
height: 18px !important;
min-height: 0 !important;
max-height: 18px !important;
padding-right: 2px;
}
.creator-type-label > label
{
margin-right: 0 !important;
padding-right: 0 !important;
margin: 1px 0 1px 0 !important;
padding-right: 2px !important;
}
.creator-type-label > image {
@ -68,10 +65,17 @@ row label
list-style-image: url('chrome://zotero/skin/arrow-down.gif');
}
/* no space between last name and comma */
row hbox label:first-child
.comma
{
margin-right: 1px;
margin: 1px 0 1px -3px !important;
padding: 0 !important;
}
.creator-name-box > label:not(.comma), .date-box > label
{
margin: 1px 0 1px 1px !important;
padding-left: 2px !important;
padding-right: 2px !important;
}
row > label, row > vbox[fieldname]
@ -91,14 +95,15 @@ row > vbox > description
hbox.zotero-date-field-status
{
margin-right: 5px;
margin-right: 7px; !important
}
hbox.zotero-date-field-status label
hbox.zotero-date-field-status > label
{
font-weight: bold;
color: #666;
margin: 0 0 0 1px;
margin: 0 0 0 1px !important;
padding: 0 1px 0 1px !important;
}
#item-type-menu

View file

@ -9,24 +9,44 @@
min-width: 300px;
}
linksbox
row label
{
margin-top: 4px;
margin: 0 !important;
padding: 0 !important;
}
row > label, row > hbox
{
margin-top: 1px !important;
margin-bottom: 1px !important;
-moz-box-pack: start;
-moz-margin-start: 1px !important;
-moz-margin-end: 5px !important;
padding: 0 2px 0 2px !important;
-moz-border-radius: 6px;
border: 1px solid transparent;
}
row > hbox
{
-moz-box-align: center;
}
row > label:first-child
{
text-align: right;
}
row > label:first-child
{
font-weight: bold;
-moz-margin-start: 5px !important;
-moz-margin-end: 0 !important;
width: 62px;
text-align: right;
font-weight:bold;
}
label
{
-moz-margin-start: 1px !important;
-moz-margin-end: 5px !important;
padding: 1px 1px 0 2px;
vbox > hbox:first-child > linksbox {
margin-bottom: 4px;
}
vbox > hbox:not(:first-child) > linksbox {
margin-top: 4px;
}

View file

@ -20,8 +20,8 @@ checkbox
#tags-toggle label
{
margin-right: .2em;
padding: .15em .25em;
margin: .15em !important;
padding: 0 .15em 0 .15em !important;
-moz-user-focus: ignore;
max-width: 250px;
}

View file

@ -276,9 +276,10 @@
width: 150px;
}
#zotero-view-tabbox, #zotero-item-pane-content > groupbox
#zotero-view-tabbox, #zotero-item-pane-content > groupbox, #zotero-item-pane-content > groupbox > .groupbox-body
{
margin: 0;
margin: 0 !important;
padding: 0 !important;
}
#zotero-view-tabbox tabs tab

View file

@ -0,0 +1,3 @@
#zotero-tb-item-from-page {
display: none;
}

View file

@ -263,4 +263,8 @@ dialog[resizable="true"]
.zotero-small-progress-indicator[status=animate] {
list-style-image: url(chrome://global/skin/icons/loading_16.png);
}
#zotero-note-window {
padding-bottom: 4px;
}