Remove lots of old Zotero for Firefox code
We still run tests in Firefox, so not everything can be removed.
|
@ -58,17 +58,7 @@ skin zotero default chrome/skin/default/zotero/
|
|||
|
||||
overlay chrome://browser/content/browser.xul chrome://zotero/content/overlay.xul
|
||||
|
||||
overlay chrome://zotero/content/preferences/preferences.xul chrome://zotero/content/preferences/preferences_firefox.xul application={ec8030f7-c20a-464f-9b0e-13a3a9e97384}
|
||||
overlay chrome://zotero/content/preferences/preferences.xul#cite chrome://zotero/content/preferences/preferences_firefox.xul application={ec8030f7-c20a-464f-9b0e-13a3a9e97384}
|
||||
overlay chrome://zotero/content/preferences/preferences_general.xul chrome://zotero/content/preferences/preferences_general_firefox.xul application={ec8030f7-c20a-464f-9b0e-13a3a9e97384}
|
||||
overlay chrome://zotero/content/preferences/preferences_export.xul chrome://zotero/content/preferences/preferences_export_firefox.xul application={ec8030f7-c20a-464f-9b0e-13a3a9e97384}
|
||||
overlay chrome://zotero/content/preferences/preferences_keys.xul chrome://zotero/content/preferences/preferences_keys_firefox.xul application={ec8030f7-c20a-464f-9b0e-13a3a9e97384}
|
||||
overlay chrome://zotero/content/preferences/preferences_advanced.xul chrome://zotero/content/preferences/preferences_advanced_firefox.xul application={ec8030f7-c20a-464f-9b0e-13a3a9e97384}
|
||||
|
||||
overlay chrome://mozapps/content/downloads/unknownContentType.xul chrome://zotero/content/downloadOverlay.xul
|
||||
|
||||
style chrome://browser/content/browser.xul chrome://zotero/skin/zotero.css
|
||||
style chrome://global/content/customizeToolbar.xul chrome://zotero/skin/zotero.css
|
||||
|
||||
component {e4c61080-ec2d-11da-8ad9-0800200c9a66} components/zotero-service.js
|
||||
component {531828f8-a16c-46be-b9aa-14845c3b010f} components/zotero-service.js
|
||||
|
|
|
@ -1,94 +1,3 @@
|
|||
/*
|
||||
As of Fx36, the built-in Mac styles don't properly handle a menu-button within a combined
|
||||
button, so we need this ungodly mess.
|
||||
*/
|
||||
#zotero-toolbar-buttons[cui-areatype="toolbar"] > separator,
|
||||
#zotero-toolbar-save-button[cui-areatype="toolbar"]:not(:hover) > .toolbarbutton-menubutton-dropmarker::before,
|
||||
#zotero-toolbar-buttons[cui-areatype="toolbar"]:hover > #zotero-toolbar-save-button {
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
#zotero-toolbar-save-button[cui-areatype="toolbar"] {
|
||||
border: 0;
|
||||
}
|
||||
|
||||
#zotero-toolbar-main-button[cui-areatype="toolbar"] {
|
||||
margin-right: 0;
|
||||
border-top-right-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
padding-right: 2px;
|
||||
padding-left: 2px;
|
||||
}
|
||||
|
||||
#zotero-toolbar-save-button[cui-areatype="toolbar"] {
|
||||
margin-left: -1px;
|
||||
border-top-left-radius: 0;
|
||||
border-bottom-left-radius: 0;
|
||||
border-left: 0 solid transparent;
|
||||
}
|
||||
|
||||
#zotero-toolbar-save-button[cui-areatype="toolbar"] > .toolbarbutton-menubutton-button {
|
||||
min-width: 27px;
|
||||
padding-left: 1px;
|
||||
padding-right: 1px;
|
||||
}
|
||||
|
||||
/*
|
||||
* Recreate standard hover effect (except in overflow list)
|
||||
*/
|
||||
#zotero-toolbar-buttons[cui-areatype="toolbar"]:not([overflowedItem=true]):hover > #zotero-toolbar-save-button > .toolbarbutton-menubutton-button,
|
||||
#zotero-toolbar-buttons[cui-areatype="toolbar"]:not([overflowedItem=true]):hover > #zotero-toolbar-save-button > .toolbarbutton-menubutton-dropmarker {
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
border-color: var(--toolbarbutton-hover-bordercolor) !important;
|
||||
box-shadow: var(--toolbarbutton-hover-boxshadow) !important;
|
||||
border-top-left-radius: 0;
|
||||
border-bottom-left-radius: 0;
|
||||
}
|
||||
|
||||
#zotero-toolbar-buttons[cui-areatype="toolbar"]:not([overflowedItem=true]):hover > #zotero-toolbar-save-button > .toolbarbutton-menubutton-dropmarker::before {
|
||||
background: none;
|
||||
}
|
||||
|
||||
#zotero-toolbar-buttons[cui-areatype="toolbar"]:not([overflowedItem=true]):hover > #zotero-toolbar-save-button > .toolbarbutton-menubutton-button {
|
||||
border-right: 1px solid transparent;
|
||||
}
|
||||
|
||||
#zotero-toolbar-buttons[cui-areatype="toolbar"]:not([overflowedItem=true]):hover > #zotero-toolbar-save-button > .toolbarbutton-menubutton-dropmarker {
|
||||
border-left: 1px solid transparent;
|
||||
}
|
||||
|
||||
#zotero-toolbar-buttons[cui-areatype="toolbar"]:not([overflowedItem=true]):hover > .toolbarbutton-menubutton-dropmarker {
|
||||
background: inherit;
|
||||
}
|
||||
|
||||
#zotero-toolbar-save-button[cui-areatype="toolbar"]:not([overflowedItem=true]) > .toolbarbutton-menubutton-dropmarker:hover {
|
||||
background: var(--toolbarbutton-hover-background);
|
||||
}
|
||||
|
||||
#zotero-toolbar-main-button[cui-areatype="toolbar"] {
|
||||
border-right: 1px solid transparent;
|
||||
}
|
||||
#zotero-toolbar-save-button[cui-areatype="toolbar"]:not([overflowedItem=true]):hover {
|
||||
border-left: 0 solid transparent;
|
||||
}
|
||||
#zotero-toolbar-buttons[cui-areatype="toolbar"]:not([overflowedItem=true]):hover > #zotero-toolbar-save-button > .toolbarbutton-menubutton-button {
|
||||
border-left: 1px solid transparent;
|
||||
}
|
||||
|
||||
/*
|
||||
* Alterations for overflow menu
|
||||
*/
|
||||
#zotero-toolbar-buttons[overflowedItem=true] {
|
||||
margin: 6px 4px 0;
|
||||
}
|
||||
|
||||
#zotero-toolbar-buttons[overflowedItem=true] #zotero-toolbar-main-button {
|
||||
max-width: 16px;
|
||||
}
|
||||
|
||||
/* End toolbar icons */
|
||||
|
||||
#zotero-splitter
|
||||
{
|
||||
border-top: none;
|
||||
|
@ -474,11 +383,6 @@ treechildren::-moz-tree-image {
|
|||
list-style-image: url('chrome://zotero/skin/mac/toolbar-note-add.png');
|
||||
}
|
||||
|
||||
#zotero-tb-actions-menu
|
||||
{
|
||||
list-style-image: url('chrome://zotero/skin/mac/cog.png');
|
||||
}
|
||||
|
||||
#zotero-collectionmenu > .menuitem-iconic, #zotero-itemmenu > .menuitem-iconic, #zotero-collectionmenu > .menu-iconic, #zotero-itemmenu > .menu-iconic {
|
||||
padding-top: 0px !important;
|
||||
padding-bottom: 2px !important;
|
||||
|
|
|
@ -1,159 +1,3 @@
|
|||
/*
|
||||
As of Fx36, the built-in styles don't properly handle a menu-button within combined buttons.
|
||||
|
||||
On Windows and Linux, the padding and hover effect (border and shading) are applied directly to
|
||||
the .toolbarbutton-icon (image) instead of the toolbarbutton, so proper sizing of the SVG depends
|
||||
on the total width including border and padding.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Nav bar
|
||||
*/
|
||||
toolbar[id="nav-bar"] #zotero-toolbar-main-button .toolbarbutton-icon {
|
||||
width: 28px;
|
||||
}
|
||||
|
||||
toolbar[id="nav-bar"] #zotero-toolbar-save-button .toolbarbutton-icon {
|
||||
width: 30px;
|
||||
}
|
||||
|
||||
toolbar[id="nav-bar"] #zotero-toolbar-buttons #zotero-toolbar-main-button {
|
||||
margin-right: -1px;
|
||||
padding: 0; /* avoid shift on :active */
|
||||
}
|
||||
|
||||
toolbar[id="nav-bar"] #zotero-toolbar-main-button .toolbarbutton-icon {
|
||||
margin-left: 2px;
|
||||
padding-left: 5px !important;
|
||||
padding-right: 5px !important;
|
||||
}
|
||||
|
||||
toolbar[id="nav-bar"] #zotero-toolbar-save-button > .toolbarbutton-menubutton-button {
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
toolbar[id="nav-bar"] #zotero-toolbar-save-button > .toolbarbutton-menubutton-button .toolbarbutton-icon {
|
||||
padding-left: 6px !important;
|
||||
padding-right: 6px !important;
|
||||
}
|
||||
|
||||
toolbar[id="nav-bar"] #zotero-toolbar-save-button > .toolbarbutton-menubutton-dropmarker {
|
||||
width: 18px !important;
|
||||
margin-top: 6px;
|
||||
margin-bottom: 6px;
|
||||
}
|
||||
|
||||
toolbar[id="nav-bar"] #zotero-toolbar-buttons #zotero-toolbar-save-button > .toolbarbutton-menubutton-dropmarker .dropmarker-icon {
|
||||
padding-left: 14px !important;
|
||||
padding-right: 3px !important;
|
||||
}
|
||||
|
||||
toolbar[id="nav-bar"] #zotero-toolbar-save-button-single > .toolbarbutton-menubutton-dropmarker > .dropmarker-icon {
|
||||
margin-top: 3px;
|
||||
margin-bottom: 3px;
|
||||
padding-left: 8px !important;
|
||||
padding-right: 8px !important;
|
||||
}
|
||||
|
||||
toolbar[id="nav-bar"] #zotero-toolbar-save-button:hover > .toolbarbutton-menubutton-dropmarker > .dropmarker-icon,
|
||||
toolbar[id="nav-bar"] #zotero-toolbar-save-button[open] > .toolbarbutton-menubutton-dropmarker > .dropmarker-icon {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
toolbar[id="nav-bar"] #zotero-toolbar-save-button-single > .toolbarbutton-menubutton-dropmarker > .dropmarker-icon {
|
||||
margin-top: 3px;
|
||||
margin-bottom: 3px;
|
||||
}
|
||||
|
||||
toolbar[id="nav-bar"] #zotero-toolbar-buttons > separator {
|
||||
/* Copied from .toolbarbutton-menubutton-dropmarker::before */
|
||||
display: -moz-box;
|
||||
width: 1px;
|
||||
height: 18px;
|
||||
-moz-margin-end: -1px;
|
||||
background-clip: padding-box;
|
||||
background-position: center;
|
||||
background-repeat: no-repeat;
|
||||
background-size: 1px 18px;
|
||||
box-shadow: var(--toolbarbutton-combined-boxshadow);
|
||||
}
|
||||
|
||||
toolbar[id="nav-bar"] #zotero-toolbar-buttons:hover > #zotero-toolbar-main-button .toolbarbutton-icon,
|
||||
toolbar[id="nav-bar"] #zotero-toolbar-buttons:hover > #zotero-toolbar-save-button .toolbarbutton-icon,
|
||||
toolbar[id="nav-bar"] #zotero-toolbar-buttons:hover > #zotero-toolbar-save-button .dropmarker-icon {
|
||||
border-color: var(--toolbarbutton-hover-bordercolor) !important;
|
||||
}
|
||||
|
||||
toolbar[id="nav-bar"] #zotero-toolbar-buttons > #zotero-toolbar-save-button:hover:not(:active) > .toolbarbutton-menubutton-button > .toolbarbutton-icon,
|
||||
toolbar[id="nav-bar"] #zotero-toolbar-buttons > #zotero-toolbar-save-button:hover > .toolbarbutton-menubutton-dropmarker > .dropmarker-icon {
|
||||
background: inherit;
|
||||
}
|
||||
|
||||
toolbar[id="nav-bar"] #zotero-toolbar-buttons > #zotero-toolbar-save-button > .toolbarbutton-menubutton-button:hover:not(:active) > .toolbarbutton-icon,
|
||||
/* This selector doesn't work, so the dropmarker doesn't get a hover effect. :hover doesn't seem
|
||||
to have an effect on either part of the dropmarker */
|
||||
toolbar[id="nav-bar"] #zotero-toolbar-buttons > #zotero-toolbar-save-button > .toolbarbutton-menubutton-dropmarker:hover > .dropmarker-icon {
|
||||
background: var(--toolbarbutton-hover-background) !important;
|
||||
}
|
||||
|
||||
toolbar[id="nav-bar"] #zotero-toolbar-buttons > #zotero-toolbar-save-button:hover:active:not([open]):not([disabled]) .toolbarbutton-menubutton-button .toolbarbutton-icon,
|
||||
toolbar[id="nav-bar"] #zotero-toolbar-buttons > #zotero-toolbar-save-button:hover[open]:not([disabled]) .toolbarbutton-menubutton-dropmarker .dropmarker-icon {
|
||||
background: var(--toolbarbutton-active-background);
|
||||
border-color: var(--toolbarbutton-active-bordercolor);
|
||||
box-shadow: var(--toolbarbutton-active-boxshadow);
|
||||
transition-duration: 10ms;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Alterations for non-nav-bar toolbars
|
||||
*/
|
||||
toolbar:not([id="nav-bar"]) #zotero-toolbar-main-button > .toolbarbutton-icon,
|
||||
toolbar:not([id="nav-bar"]) #zotero-toolbar-main-button-single > .toolbarbutton-icon,
|
||||
toolbar:not([id="nav-bar"]) #zotero-toolbar-save-button > .toolbarbutton-menubutton-button > .toolbarbutton-icon,
|
||||
toolbar:not([id="nav-bar"]) #zotero-toolbar-save-button-single > .toolbarbutton-menubutton-button > .toolbarbutton-icon {
|
||||
height: 16px;
|
||||
width: 16px;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
toolbar:not([id="nav-bar"]) #zotero-toolbar-save-button > .toolbarbutton-menubutton-dropmarker,
|
||||
toolbar:not([id="nav-bar"]) #zotero-toolbar-save-button-single > .toolbarbutton-menubutton-dropmarker {
|
||||
margin-left: -1px;
|
||||
}
|
||||
|
||||
toolbar:not([id="nav-bar"]) #zotero-toolbar-buttons separator {
|
||||
display: none;
|
||||
}
|
||||
|
||||
|
||||
/* Alterations for overflow panel */
|
||||
#zotero-toolbar-main-button-single[overflowedItem=true] .toolbarbutton-icon,
|
||||
#zotero-toolbar-buttons[overflowedItem=true] #zotero-toolbar-main-button .toolbarbutton-icon,
|
||||
#zotero-toolbar-save-button-single[overflowedItem=true] .toolbarbutton-icon,
|
||||
#zotero-toolbar-buttons[overflowedItem=true] #zotero-toolbar-save-button .toolbarbutton-icon {
|
||||
width: 16px;
|
||||
}
|
||||
|
||||
#zotero-toolbar-buttons[overflowedItem=true] {
|
||||
margin-left: 0 !important;
|
||||
margin-bottom: 0 !important;
|
||||
margin-right: 0 !important;
|
||||
padding: 0 !important;
|
||||
}
|
||||
|
||||
#zotero-toolbar-buttons[overflowedItem=true] #zotero-toolbar-main-button {
|
||||
max-width: 28px !important;
|
||||
margin: 0 4px 0 0 !important;
|
||||
}
|
||||
|
||||
#zotero-toolbar-buttons[overflowedItem=true] #zotero-toolbar-save-button .toolbarbutton-menubutton-button {
|
||||
margin-left: 8px;
|
||||
}
|
||||
/* End toolbar buttons */
|
||||
|
||||
|
||||
/*
|
||||
Override selected, unfocused tree row highlight color, which is too similar to the alternating
|
||||
row color by default
|
||||
|
|
|
@ -13,183 +13,6 @@
|
|||
border-bottom-color: var(--theme-border-color);
|
||||
}
|
||||
|
||||
/*
|
||||
As of Fx36, the built-in styles don't properly handle a menu-button within combined buttons.
|
||||
|
||||
On Windows and Linux, the padding and hover effect (border and shading) are applied directly to
|
||||
the .toolbarbutton-icon (image) instead of the toolbarbutton, so proper sizing of the SVG depends
|
||||
on the total width including border and padding.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Nav bar
|
||||
*/
|
||||
toolbar[id="nav-bar"] #zotero-toolbar-main-button .toolbarbutton-icon {
|
||||
width: 30px; /* 16 + 1 + 1 + 6 + 6 */
|
||||
padding-left: 6px !important;
|
||||
padding-right: 6px !important;
|
||||
}
|
||||
|
||||
toolbar[id="nav-bar"] #zotero-toolbar-save-button .toolbarbutton-icon {
|
||||
width: 29px; /* 16 + 6 + 6 + 1 */
|
||||
padding-left: 6px !important;
|
||||
padding-right: 6px !important;
|
||||
}
|
||||
|
||||
toolbar[id="nav-bar"] #zotero-toolbar-main-button-single .toolbarbutton-icon {
|
||||
width: 32px;
|
||||
}
|
||||
|
||||
toolbar[id="nav-bar"] #zotero-toolbar-save-button-single .toolbarbutton-icon {
|
||||
width: 31px; /* Compensate for border on only one side */
|
||||
}
|
||||
|
||||
toolbar[id="nav-bar"] #zotero-toolbar-buttons #zotero-toolbar-save-button > .toolbarbutton-menubutton-dropmarker .dropmarker-icon {
|
||||
padding-left: 4px;
|
||||
padding-right: 4px;
|
||||
}
|
||||
|
||||
toolbar[id="nav-bar"] #zotero-toolbar-buttons > separator {
|
||||
margin-top: 11px;
|
||||
margin-bottom: 11px;
|
||||
-moz-margin-start: -1px !important;
|
||||
-moz-margin-end: -3px !important;
|
||||
}
|
||||
|
||||
toolbar[id="nav-bar"] #zotero-toolbar-buttons > separator,
|
||||
toolbar[id="nav-bar"] #zotero-toolbar-buttons > #zotero-toolbar-save-button > .toolbarbutton-menubutton-dropmarker::before {
|
||||
width: 1px;
|
||||
}
|
||||
|
||||
toolbar[id="nav-bar"] #zotero-toolbar-buttons > #zotero-toolbar-save-button > .toolbarbutton-menubutton-dropmarker::before {
|
||||
-moz-margin-end: -1px;
|
||||
}
|
||||
|
||||
toolbar[id="nav-bar"] #zotero-toolbar-buttons:hover > separator,
|
||||
toolbar[id="nav-bar"] #zotero-toolbar-buttons:hover > #zotero-toolbar-save-button:not([disabled]) > .toolbarbutton-menubutton-dropmarker::before {
|
||||
background-image: none;
|
||||
}
|
||||
|
||||
toolbar[id="nav-bar"] #zotero-toolbar-buttons:hover > #zotero-toolbar-main-button .toolbarbutton-icon,
|
||||
toolbar[id="nav-bar"] #zotero-toolbar-buttons:hover > #zotero-toolbar-save-button:not([disabled]) .toolbarbutton-icon,
|
||||
toolbar[id="nav-bar"] #zotero-toolbar-buttons:hover > #zotero-toolbar-save-button:not([disabled]) .dropmarker-icon {
|
||||
border-color: var(--toolbarbutton-hover-bordercolor) !important;
|
||||
}
|
||||
|
||||
toolbar[id="nav-bar"] #zotero-toolbar-buttons:hover > #zotero-toolbar-main-button:not(:active) .toolbarbutton-icon,
|
||||
toolbar[id="nav-bar"] #zotero-toolbar-buttons:hover:not([disabled]) > #zotero-toolbar-save-button:not(:active) .toolbarbutton-icon,
|
||||
toolbar[id="nav-bar"] #zotero-toolbar-buttons:hover:not([disabled]) > #zotero-toolbar-save-button:not(:active) .dropmarker-icon {
|
||||
background: var(--toolbarbutton-hover-background);
|
||||
}
|
||||
|
||||
toolbar[id="nav-bar"] #zotero-toolbar-buttons:hover > #zotero-toolbar-save-button .toolbarbutton-icon,
|
||||
toolbar[id="nav-bar"] #zotero-toolbar-buttons:hover > #zotero-toolbar-save-button .dropmarker-icon {
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
toolbar[id="nav-bar"] #zotero-toolbar-buttons:hover > #zotero-toolbar-main-button .toolbarbutton-icon {
|
||||
border-top-right-radius: 0px !important;
|
||||
border-bottom-right-radius: 0px !important;
|
||||
}
|
||||
|
||||
toolbar[id="nav-bar"] #zotero-toolbar-buttons:hover > #zotero-toolbar-save-button .toolbarbutton-icon {
|
||||
border-top-left-radius: 0px !important;
|
||||
border-bottom-left-radius: 0px !important;
|
||||
}
|
||||
|
||||
/*
|
||||
There are two hover effects: when the toolbaritem is hovered over, and when the button is hovered over.
|
||||
This applies the latter (and may not be right on different versions of Windows).
|
||||
*/
|
||||
toolbar[id="nav-bar"] #zotero-toolbar-main-button:hover:not(:active):not([disabled]) > .toolbarbutton-icon,
|
||||
/*
|
||||
The dropmarker doesn't honor :hover, so instead of showing the hover effect for each segment individually, do the
|
||||
menu-button parts together, which at least looks like a choice.
|
||||
*/
|
||||
toolbar[id="nav-bar"] #zotero-toolbar-save-button:hover .toolbarbutton-menubutton-button .toolbarbutton-icon,
|
||||
toolbar[id="nav-bar"] > #zotero-toolbar-save-button:hover:not(:active):not([disabled]) .toolbarbutton-menubutton-dropmarker .dropmarker-icon {
|
||||
background-color: hsla(210,48%,96%,.75) !important;
|
||||
}
|
||||
toolbar[id="nav-bar"] #zotero-toolbar-main-button:hover > .toolbarbutton-icon,
|
||||
toolbar[id="nav-bar"] #zotero-toolbar-save-button:hover:not([disabled]) .toolbarbutton-menubutton-button .toolbarbutton-icon,
|
||||
toolbar[id="nav-bar"] #zotero-toolbar-save-button:hover:not([disabled]) .toolbarbutton-menubutton-dropmarker .dropmarker-icon {
|
||||
border-color: hsla(210,54%,20%,.3) hsla(210,54%,20%,.35) hsla(210,54%,20%,.4) !important;
|
||||
box-shadow: 0 0 1px hsla(210,54%,20%,.03),
|
||||
0 0 2px hsla(210,54%,20%,.1) !important;
|
||||
}
|
||||
|
||||
toolbar[id="nav-bar"] #zotero-toolbar-save-button:hover:active:not([open]):not([disabled]) .toolbarbutton-menubutton-button .toolbarbutton-icon,
|
||||
toolbar[id="nav-bar"] #zotero-toolbar-save-button:hover[open]:not([disabled]) .toolbarbutton-menubutton-dropmarker .dropmarker-icon {
|
||||
background: var(--toolbarbutton-active-background) !important;
|
||||
border-color: var(--toolbarbutton-active-bordercolor) !important;
|
||||
box-shadow: var(--toolbarbutton-active-boxshadow) !important;
|
||||
transition-duration: 10ms;
|
||||
}
|
||||
|
||||
#zotero-toolbar-save-button[cui-areatype="toolbar"] > menupopup,
|
||||
#zotero-toolbar-save-button-single[cui-areatype="toolbar"] > menupopup {
|
||||
margin-top: -7px;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Alterations for non-nav-bar toolbars
|
||||
*/
|
||||
toolbar:not([id="nav-bar"]) #zotero-toolbar-main-button > .toolbarbutton-icon,
|
||||
toolbar:not([id="nav-bar"]) #zotero-toolbar-main-button-single > .toolbarbutton-icon,
|
||||
toolbar:not([id="nav-bar"]) #zotero-toolbar-save-button > .toolbarbutton-menubutton-button > .toolbarbutton-icon,
|
||||
toolbar:not([id="nav-bar"]) #zotero-toolbar-save-button-single > .toolbarbutton-menubutton-button > .toolbarbutton-icon {
|
||||
height: 16px;
|
||||
width: 16px;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
toolbar:not([id="nav-bar"]) #zotero-toolbar-main-button-single,
|
||||
toolbar:not([id="nav-bar"]) #zotero-toolbar-save-button-single > .toolbarbutton-menubutton-button,
|
||||
toolbar:not([id="nav-bar"]) #zotero-toolbar-save-button > .toolbarbutton-menubutton-button {
|
||||
width: 24px;
|
||||
}
|
||||
|
||||
toolbar:not([id="nav-bar"]) #zotero-toolbar-save-button > .toolbarbutton-menubutton-dropmarker,
|
||||
toolbar:not([id="nav-bar"]) #zotero-toolbar-save-button-single > .toolbarbutton-menubutton-dropmarker {
|
||||
padding-left: 2px;
|
||||
padding-right: 3px;
|
||||
}
|
||||
|
||||
toolbar:not([id="nav-bar"]) #zotero-toolbar-buttons separator {
|
||||
display: none;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Alterations for overflow panel
|
||||
*/
|
||||
#zotero-toolbar-main-button-single[overflowedItem=true] .toolbarbutton-icon,
|
||||
#zotero-toolbar-buttons[overflowedItem=true] #zotero-toolbar-main-button .toolbarbutton-icon,
|
||||
#zotero-toolbar-save-button-single[overflowedItem=true] .toolbarbutton-icon,
|
||||
#zotero-toolbar-buttons[overflowedItem=true] #zotero-toolbar-save-button .toolbarbutton-icon {
|
||||
height: 16px;
|
||||
}
|
||||
|
||||
#zotero-toolbar-buttons[overflowedItem=true] {
|
||||
margin: 6px 0 0 0 !important;
|
||||
}
|
||||
|
||||
#zotero-toolbar-buttons[overflowedItem=true] #zotero-toolbar-main-button {
|
||||
max-width: 18px;
|
||||
}
|
||||
|
||||
#zotero-toolbar-buttons[overflowedItem=true] #zotero-toolbar-save-button toolbarbutton {
|
||||
margin-left: 0 !important;
|
||||
}
|
||||
|
||||
#zotero-toolbar-buttons[overflowedItem=true] #zotero-toolbar-save-button .toolbarbutton-icon {
|
||||
margin-left: 8px;
|
||||
padding-right: 0 !important;
|
||||
}
|
||||
|
||||
/* End toolbar buttons */
|
||||
|
||||
|
||||
@media (min-resolution: 1.25dppx) {
|
||||
#zotero-toolbar .toolbarbutton-icon {
|
||||
|
|
|
@ -1,211 +0,0 @@
|
|||
/*
|
||||
***** BEGIN LICENSE BLOCK *****
|
||||
|
||||
Copyright © 2011 Center for History and New Media
|
||||
George Mason University, Fairfax, Virginia, USA
|
||||
http://zotero.org
|
||||
|
||||
This file is part of Zotero.
|
||||
|
||||
Zotero is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
Zotero is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
***** END LICENSE BLOCK *****
|
||||
*/
|
||||
var Zotero_DownloadOverlay = new function() {
|
||||
const PDF_MIME_TYPE = "application/pdf";
|
||||
const ALLOW_LIST = [
|
||||
"application/pdf",
|
||||
"application/postscript",
|
||||
"application/xhtml+xml",
|
||||
"text/html",
|
||||
"text/plain",
|
||||
/^audio\//,
|
||||
/^image\//,
|
||||
/^video\//,
|
||||
/^application\/vnd\.oasis\.opendocument\./,
|
||||
/^application\/vnd\.ms-/,
|
||||
/^application\/vnd\.openxmlformats-officedocument/,
|
||||
/^application\/vnd\.lotus-/,
|
||||
/^application\/vnd\.wolfram\./,
|
||||
"application/vnd.wordperfect",
|
||||
"application/wordperfect5.1",
|
||||
"application/msword",
|
||||
"application/x-latex"
|
||||
];
|
||||
|
||||
/**
|
||||
* Saves this item, if we are supposed to save it.
|
||||
*
|
||||
* @return {Boolean} True if an item was saved, false if we were not supposed to save
|
||||
*/
|
||||
this.handleSave = Zotero.Promise.coroutine(function* () {
|
||||
if(!document.getElementById('zotero-radio').selected) return false;
|
||||
|
||||
var retrieveMetadata = document.getElementById('zotero-recognizePDF').selected;
|
||||
|
||||
var url = dialog.mLauncher.source.spec;
|
||||
Zotero.debug("Zotero_DownloadOverlay: Downloading from "+url);
|
||||
|
||||
// set up progress window
|
||||
var win = Components.classes["@mozilla.org/appshell/window-mediator;1"]
|
||||
.getService(Components.interfaces.nsIWindowMediator)
|
||||
.getMostRecentWindow("navigator:browser");
|
||||
var libraryID, collection;
|
||||
try {
|
||||
let itemGroup = win.ZoteroPane.getCollectionTreeRow();
|
||||
if (itemGroup.filesEditable && !itemGroup.isPublications()) {
|
||||
libraryID = win.ZoteroPane.getSelectedLibraryID();
|
||||
collection = win.ZoteroPane.getSelectedCollection();
|
||||
}
|
||||
// TODO: Just show an error instead?
|
||||
else {
|
||||
Zotero.debug("Cannot save files to library " + itemGroup.ref.libraryID
|
||||
+ " -- saving to My Library instead", 2);
|
||||
libraryID = Zotero.Libraries.userLibraryID;
|
||||
}
|
||||
} catch(e) {
|
||||
Zotero.debug(e, 1);
|
||||
};
|
||||
|
||||
var recognizePDF = document.getElementById('zotero-recognizePDF').checked
|
||||
&& !document.getElementById('zotero-recognizePDF').hidden
|
||||
&& !document.getElementById('zotero-recognizePDF').disabled;
|
||||
var contentType = dialog.mLauncher.MIMEInfo.MIMEType;
|
||||
|
||||
// mimic dialog cancellation
|
||||
dialog.onCancel();
|
||||
|
||||
// show progress dialog
|
||||
var progressWin = new Zotero.ProgressWindow();
|
||||
progressWin.changeHeadline(Zotero.getString("save.link"));
|
||||
progressWin.show();
|
||||
|
||||
// perform import
|
||||
try {
|
||||
var item = yield Zotero.Attachments.importFromURL({
|
||||
libraryID,
|
||||
url,
|
||||
collections: collection ? [collection.id] : [],
|
||||
contentType
|
||||
});
|
||||
}
|
||||
catch (e) {
|
||||
if (!win) return;
|
||||
progressWin.addDescription(Zotero.getString("save.link.error"));
|
||||
progressWin.startCloseTimer(8000);
|
||||
Zotero.logError(e);
|
||||
return false;
|
||||
}
|
||||
|
||||
if(!win) return;
|
||||
|
||||
progressWin.addLines([item.getDisplayTitle()], [item.getImageSrc()]);
|
||||
progressWin.startCloseTimer();
|
||||
if (collection) {
|
||||
yield collection.addItem(item.id);
|
||||
}
|
||||
|
||||
yield win.ZoteroPane.selectItem(item.id);
|
||||
|
||||
if(recognizePDF) {
|
||||
var timer = Components.classes["@mozilla.org/timer;1"]
|
||||
.createInstance(Components.interfaces.nsITimer);
|
||||
timer.init(function() {
|
||||
try {
|
||||
if (item && item.getFile()) {
|
||||
timer.cancel();
|
||||
Zotero.RecognizePDF.recognizeItems([item]);
|
||||
}
|
||||
} catch(e) { dump(e.toSource()) };
|
||||
}, 1000, Components.interfaces.nsITimer.TYPE_REPEATING_SLACK);
|
||||
}
|
||||
|
||||
return true;
|
||||
});
|
||||
|
||||
/**
|
||||
* Called when mode in dialog has been changed
|
||||
*/
|
||||
this.modeChanged = function() {
|
||||
var zoteroSelected = document.getElementById('zotero-radio').selected;
|
||||
|
||||
// don't allow user to remember Zotero option for file type; i'm not sure anyone wants this
|
||||
// to happen automatically
|
||||
if(zoteroSelected) document.getElementById('rememberChoice').selected = false;
|
||||
document.getElementById('rememberChoice').disabled = zoteroSelected;
|
||||
document.getElementById('zotero-recognizePDF').disabled = !zoteroSelected;
|
||||
|
||||
Zotero_DownloadOverlay.updateLibraryNote();
|
||||
};
|
||||
|
||||
/**
|
||||
* Determines whether the note stating that the item will be saved to "My Library" is shown
|
||||
*/
|
||||
this.updateLibraryNote = function() {
|
||||
var zoteroSelected = document.getElementById('zotero-radio').selected;
|
||||
var zp = Zotero.getActiveZoteroPane(), canSave = true;
|
||||
try {
|
||||
canSave = zp.getCollectionTreeRow().filesEditable;
|
||||
} catch(e) {
|
||||
Zotero.logError(e);
|
||||
};
|
||||
document.getElementById('zotero-saveToLibrary-description').hidden = !zoteroSelected || canSave;
|
||||
window.sizeToContent();
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when the save dialog is opened
|
||||
*/
|
||||
this.init = function() {
|
||||
if(Zotero.isConnector) return;
|
||||
|
||||
// Disable for filetypes people probably don't want to save
|
||||
var show = false;
|
||||
var mimeType = dialog.mLauncher.MIMEInfo.MIMEType.toLowerCase();
|
||||
for (let elem of ALLOW_LIST) {
|
||||
if(typeof elem === "string") {
|
||||
if(elem === mimeType) {
|
||||
document.getElementById('zotero-container').hidden = false;
|
||||
document.getElementById('zotero-radio').disabled = false;
|
||||
break;
|
||||
}
|
||||
} else if(elem.test(mimeType)) {
|
||||
document.getElementById('zotero-container').hidden = false;
|
||||
document.getElementById('zotero-radio').disabled = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Hook in event listener to ondialogaccept
|
||||
document.documentElement.setAttribute('ondialogaccept',
|
||||
'Zotero_DownloadOverlay.handleSave().then(function (saved) { if (!saved) {'
|
||||
+ document.documentElement.getAttribute('ondialogaccept')
|
||||
+'}})');
|
||||
|
||||
// Hook in event listener for mode change
|
||||
var radios = document.getElementById('mode').
|
||||
addEventListener("command", Zotero_DownloadOverlay.modeChanged, false);
|
||||
|
||||
// Set label on retrieve PDF option
|
||||
if(mimeType === PDF_MIME_TYPE) {
|
||||
var recognizePDF = document.getElementById('zotero-recognizePDF');
|
||||
recognizePDF.label = Zotero.getString("pane.items.menu.recognizePDF");
|
||||
recognizePDF.hidden = false;
|
||||
recognizePDF.disabled = true;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
window.addEventListener("load", Zotero_DownloadOverlay.init, false);
|
||||
window.addEventListener("activate", Zotero_DownloadOverlay.updateLibraryNote, false);
|
|
@ -1,50 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
***** BEGIN LICENSE BLOCK *****
|
||||
|
||||
Copyright © 2011 Center for History and New Media
|
||||
George Mason University, Fairfax, Virginia, USA
|
||||
http://zotero.org
|
||||
|
||||
This file is part of Zotero.
|
||||
|
||||
Zotero is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
Zotero is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Based on code derived from FlashGot - a Firefox extension for external
|
||||
download managers integration.
|
||||
Copyright (C) 2004-2011 Giorgio Maone - g.maone@informaction.com
|
||||
|
||||
***** END LICENSE BLOCK *****
|
||||
-->
|
||||
|
||||
<!DOCTYPE overlay [
|
||||
<!ENTITY % zoteroDTD SYSTEM "chrome://zotero/locale/zotero.dtd"> %zoteroDTD;
|
||||
]>
|
||||
|
||||
<overlay id="zotero-download-overlay"
|
||||
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
|
||||
|
||||
<script type="application/x-javascript" src="include.js"/>
|
||||
<script type="application/x-javascript" src="downloadOverlay.js"/>
|
||||
<radiogroup id="mode">
|
||||
<vbox id="zotero-container" flex="1" hidden="true">
|
||||
<radio id="zotero-radio" label="&zotero.downloadManager.label;" disabled="true"/>
|
||||
<vbox style="margin-left: 15px">
|
||||
<description id="zotero-saveToLibrary-description" style="font: small-caption; font-weight: normal" hidden="true">&zotero.downloadManager.saveToLibrary.description;</description>
|
||||
<checkbox id="zotero-recognizePDF" hidden="true" persist="checked" disabled="true"/>
|
||||
</vbox>
|
||||
</vbox>
|
||||
</radiogroup>
|
||||
</overlay>
|
||||
|
|
@ -1,314 +0,0 @@
|
|||
/*
|
||||
***** BEGIN LICENSE BLOCK *****
|
||||
|
||||
Copyright © 2015 Center for History and New Media
|
||||
George Mason University, Fairfax, Virginia, USA
|
||||
http://zotero.org
|
||||
|
||||
This file is part of Zotero.
|
||||
|
||||
Zotero is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
Zotero is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
***** END LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
"use strict";
|
||||
|
||||
Components.utils.import("resource://zotero/config.js");
|
||||
Components.utils.import("resource:///modules/CustomizableUI.jsm");
|
||||
|
||||
var Zotero = Components.classes["@zotero.org/Zotero;1"]
|
||||
.getService(Components.interfaces.nsISupports)
|
||||
.wrappedJSObject;
|
||||
var comboButtonsID = 'zotero-toolbar-buttons';
|
||||
addIcon();
|
||||
|
||||
function addIcon() {
|
||||
// Don't try to add icons more than once, and avoid warnings in tests
|
||||
if (Zotero.toolbarIconAdded || CustomizableUI.getPlacementOfWidget(comboButtonsID)) {
|
||||
return;
|
||||
}
|
||||
|
||||
CustomizableUI.addListener({
|
||||
onWidgetAdded: function (id, area, position) {
|
||||
if (id == comboButtonsID) {
|
||||
// When dropping combo button into panel, add two independent buttons instead
|
||||
if (area == CustomizableUI.AREA_PANEL) {
|
||||
let mainID = getSingleID('main');
|
||||
let saveID = getSingleID('save');
|
||||
CustomizableUI.removeWidgetFromArea(id);
|
||||
// Remove independent main and save buttons first if they're already in panel
|
||||
CustomizableUI.removeWidgetFromArea(mainID);
|
||||
CustomizableUI.removeWidgetFromArea(saveID);
|
||||
CustomizableUI.addWidgetToArea(mainID, area, position);
|
||||
let placement = CustomizableUI.getPlacementOfWidget(mainID)
|
||||
let mainPos = placement.position;
|
||||
CustomizableUI.addWidgetToArea(saveID, area, mainPos + 1);
|
||||
return;
|
||||
}
|
||||
|
||||
var isUpgrade = false;
|
||||
try {
|
||||
isUpgrade = Zotero.Prefs.get("firstRunGuidanceShown.saveIcon");
|
||||
} catch(e) {}
|
||||
var property = "firstRunGuidance.toolbarButton." + (isUpgrade ? "upgrade" : "new");
|
||||
var shortcut = Zotero.getString(
|
||||
Zotero.isMac ? "general.keys.cmdShift" : "general.keys.ctrlShift"
|
||||
) + Zotero.Prefs.get("keys.openZotero");
|
||||
|
||||
let widget = CustomizableUI.getWidget(id);
|
||||
for (let instance of widget.instances) {
|
||||
let doc = instance.node.ownerDocument;
|
||||
|
||||
updateItemForArea(instance.node, area);
|
||||
|
||||
doc.getElementById("zotero-main-button-guidance").show({
|
||||
text: Zotero.getString(property, shortcut)
|
||||
});
|
||||
doc.getElementById("zotero-save-button-guidance").show();
|
||||
}
|
||||
}
|
||||
else if (id == getSingleID('save')) {
|
||||
let widget = CustomizableUI.getWidget(id);
|
||||
for (let instance of widget.instances) {
|
||||
instance.node.ownerDocument.defaultView.Zotero_Browser.updateStatus();
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
onWidgetOverflow: function (node, container) {
|
||||
if (node.id == comboButtonsID) {
|
||||
node.classList.add("toolbarbutton-1");
|
||||
}
|
||||
},
|
||||
|
||||
onWidgetUnderflow: function (node, container) {
|
||||
if (node.id == comboButtonsID) {
|
||||
node.classList.remove("toolbarbutton-1");
|
||||
}
|
||||
},
|
||||
|
||||
// Save icon in panel isn't in DOM until menu is shown once and therefore isn't updated
|
||||
// on page loads, so update the icon status when the panel is first shown so that it
|
||||
// doesn't remain disabled
|
||||
onAreaNodeRegistered: function (area, node) {
|
||||
if (area == CustomizableUI.AREA_PANEL) {
|
||||
var placement = CustomizableUI.getPlacementOfWidget(comboButtonsID)
|
||||
var update = false;
|
||||
let singleID = getSingleID('save');
|
||||
if (placement && placement.area == CustomizableUI.AREA_PANEL) {
|
||||
update = true;
|
||||
}
|
||||
else {
|
||||
placement = CustomizableUI.getPlacementOfWidget(singleID);
|
||||
if (placement && placement.area == CustomizableUI.AREA_PANEL) {
|
||||
update = true;
|
||||
}
|
||||
}
|
||||
if (update) {
|
||||
let widget = CustomizableUI.getWidget(singleID);
|
||||
for (let instance of widget.instances) {
|
||||
instance.node.ownerDocument.defaultView.Zotero_Browser.updateStatus();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
// Create the combo buttons, which go in the toolbar by default
|
||||
CustomizableUI.createWidget({
|
||||
id: comboButtonsID,
|
||||
type: 'custom',
|
||||
label: ZOTERO_CONFIG.CLIENT_NAME,
|
||||
tooltiptext: ZOTERO_CONFIG.CLIENT_NAME,
|
||||
defaultArea: CustomizableUI.AREA_NAVBAR,
|
||||
onBuild: function (document) {
|
||||
const kNSXUL = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
|
||||
|
||||
var item = document.createElementNS(kNSXUL, "toolbaritem");
|
||||
item.setAttribute("id", comboButtonsID);
|
||||
item.setAttribute("label", "Zotero (Combo)"); // TODO: localize
|
||||
// Set this as an attribute in addition to the property to make sure we can style correctly.
|
||||
item.setAttribute("removable", "true");
|
||||
item.classList.add("chromeclass-toolbar-additional");
|
||||
|
||||
['main', 'save'].map(button => {
|
||||
return {
|
||||
name: button,
|
||||
id: getID(button),
|
||||
tooltiptext: getTooltipText(button),
|
||||
oncommand: getCommand(button)
|
||||
};
|
||||
}).forEach(function(attribs, index) {
|
||||
if (index != 0) {
|
||||
item.appendChild(document.createElementNS(kNSXUL, "separator"));
|
||||
}
|
||||
let button = document.createElementNS(kNSXUL, "toolbarbutton");
|
||||
if (attribs.name == 'main') {
|
||||
button.setAttribute('label', Zotero.clientName);
|
||||
}
|
||||
else if (attribs.name == 'save') {
|
||||
button.setAttribute('label', Zotero.getString('ingester.saveToZotero'));
|
||||
button.setAttribute('disabled', 'true');
|
||||
button.setAttribute('type', 'menu-button');
|
||||
let menupopup = document.createElementNS(kNSXUL, "menupopup");
|
||||
menupopup.setAttribute('onpopupshowing', "Zotero_Browser.onStatusPopupShowing(event)");
|
||||
button.appendChild(menupopup);
|
||||
}
|
||||
delete attribs.name;
|
||||
setAttributes(button, attribs);
|
||||
item.appendChild(button);
|
||||
});
|
||||
|
||||
updateItemForArea(item, this.currentArea)
|
||||
|
||||
return item;
|
||||
}
|
||||
});
|
||||
|
||||
// Create the independent Z button, which isn't shown by default
|
||||
CustomizableUI.createWidget({
|
||||
id: getSingleID('main'),
|
||||
label: Zotero.clientName,
|
||||
tooltiptext: getTooltipText('main'),
|
||||
defaultArea: false,
|
||||
onCommand: function (event) {
|
||||
event.target.ownerDocument.defaultView.ZoteroOverlay.toggleDisplay();
|
||||
}
|
||||
});
|
||||
|
||||
// Create the independent save button, which isn't shown by default
|
||||
CustomizableUI.createWidget({
|
||||
id: getSingleID('save'),
|
||||
label: Zotero.getString('ingester.saveToZotero'),
|
||||
tooltiptext: getTooltipText('save'),
|
||||
defaultArea: false,
|
||||
onCommand: function (event) {
|
||||
event.target.ownerDocument.defaultView.Zotero_Browser.scrapeThisPage(null, event);
|
||||
},
|
||||
onCreated: function (button) {
|
||||
const kNSXUL = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
|
||||
button.setAttribute('disabled', 'true');
|
||||
button.setAttribute('type', 'menu-button');
|
||||
let menupopup = button.ownerDocument.createElementNS(kNSXUL, "menupopup");
|
||||
menupopup.setAttribute('onpopupshowing', "Zotero_Browser.onStatusPopupShowing(event)");
|
||||
button.appendChild(menupopup);
|
||||
}
|
||||
});
|
||||
|
||||
Zotero.toolbarIconAdded = true;
|
||||
}
|
||||
|
||||
function getID(button) {
|
||||
switch (button) {
|
||||
case 'main':
|
||||
return "zotero-toolbar-main-button";
|
||||
|
||||
case 'save':
|
||||
return "zotero-toolbar-save-button";
|
||||
}
|
||||
}
|
||||
|
||||
function getSingleID(button) {
|
||||
return getID(button) + '-single';
|
||||
}
|
||||
|
||||
function getCommand(button) {
|
||||
switch (button) {
|
||||
case 'main':
|
||||
return "ZoteroOverlay.toggleDisplay()";
|
||||
|
||||
case 'save':
|
||||
return "Zotero_Browser.scrapeThisPage(null, event)";
|
||||
}
|
||||
}
|
||||
|
||||
function getTooltipText(button) {
|
||||
var text;
|
||||
switch (button) {
|
||||
case 'main':
|
||||
if (Zotero && Zotero.initialized) {
|
||||
text = Zotero.clientName;
|
||||
let key = Zotero.Keys.getKeyForCommand('openZotero');
|
||||
if (key) {
|
||||
// Add RLE mark in RTL mode to make shortcut render the right way
|
||||
text += (Zotero.rtl ? ' \u202B' : ' ') + '('
|
||||
+ (Zotero.isMac ? '⇧⌘' : Zotero.getString('general.keys.ctrlShift'))
|
||||
+ key
|
||||
+ ')';
|
||||
}
|
||||
|
||||
}
|
||||
else {
|
||||
if (Zotero) {
|
||||
text = Zotero.startupError;
|
||||
}
|
||||
|
||||
// Use defaults if necessary
|
||||
if (!text) {
|
||||
let src = 'chrome://zotero/locale/zotero.properties';
|
||||
let stringBundleService = Components.classes["@mozilla.org/intl/stringbundle;1"]
|
||||
.getService(Components.interfaces.nsIStringBundleService);
|
||||
let stringBundle = stringBundleService.createBundle(src);
|
||||
text = stringBundle.GetStringFromName('startupError');
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case 'save':
|
||||
text = Zotero.getString('ingester.saveToZotero');
|
||||
break;
|
||||
}
|
||||
return text;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set various attributes that allow treeitem and subelements to be styled properly
|
||||
* in the different areas
|
||||
*/
|
||||
function updateItemForArea(item, area) {
|
||||
if (area) {
|
||||
var areaType = CustomizableUI.getAreaType(area);
|
||||
var inPanel = area == CustomizableUI.AREA_PANEL;
|
||||
var classes = inPanel ? "panel-combined-button" : "toolbarbutton-1 toolbarbutton-combined";
|
||||
item.setAttribute("cui-areatype", areaType);
|
||||
item.classList.add("toolbaritem-combined-buttons");
|
||||
if (inPanel) {
|
||||
item.classList.add("panel-wide-item");
|
||||
}
|
||||
var buttons = item.getElementsByTagName('toolbarbutton');
|
||||
for (let i = 0; i < buttons.length; i++) {
|
||||
let button = buttons[i];
|
||||
button.setAttribute("class", classes);
|
||||
button.setAttribute("cui-areatype", areaType);
|
||||
}
|
||||
}
|
||||
// In customization palette pretend it's a single icon
|
||||
else {
|
||||
item.classList.remove("toolbaritem-combined-buttons");
|
||||
item.classList.remove("panel-wide-item");
|
||||
var buttons = item.getElementsByTagName('toolbarbutton');
|
||||
for (let i = 0; i < buttons.length; i++) {
|
||||
let button = buttons[i];
|
||||
button.setAttribute("class", "toolbarbutton-1");
|
||||
button.removeAttribute("cui-areatype");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function setAttributes(elem, attrs) {
|
||||
for (let i in attrs) {
|
||||
elem.setAttribute(i, attrs[i]);
|
||||
}
|
||||
}
|
|
@ -31,7 +31,6 @@ var ZoteroOverlay = new function()
|
|||
const DEFAULT_ZPANE_HEIGHT = 300;
|
||||
var toolbarCollapseState;
|
||||
var zoteroPane, zoteroSplitter;
|
||||
var _stateBeforeReload = false;
|
||||
|
||||
this.isTab = false;
|
||||
|
||||
|
@ -44,8 +43,6 @@ var ZoteroOverlay = new function()
|
|||
zoteroPane = document.getElementById('zotero-pane-stack');
|
||||
zoteroSplitter = document.getElementById('zotero-splitter');
|
||||
|
||||
var iconLoaded = false;
|
||||
|
||||
if (!Zotero) {
|
||||
throw new Error("No Zotero object");
|
||||
}
|
||||
|
@ -55,30 +52,9 @@ var ZoteroOverlay = new function()
|
|||
|
||||
ZoteroPane_Overlay = ZoteroPane;
|
||||
|
||||
// Close pane before reload
|
||||
ZoteroPane_Local.addBeforeReloadListener(function(newMode) {
|
||||
if(newMode == "connector") {
|
||||
// save current state
|
||||
_stateBeforeReload = !zoteroPane.hidden && !zoteroPane.collapsed;
|
||||
// ensure pane is closed
|
||||
if(!zoteroPane.collapsed) ZoteroOverlay.toggleDisplay(false, true);
|
||||
}
|
||||
});
|
||||
|
||||
// Close pane if connector is enabled
|
||||
ZoteroPane_Local.addReloadListener(function() {
|
||||
if(!Zotero.isConnector) {
|
||||
// reopen pane if it was open before
|
||||
ZoteroOverlay.toggleDisplay(_stateBeforeReload, true);
|
||||
}
|
||||
});
|
||||
|
||||
// TODO: Add only when progress window is open
|
||||
document.getElementById('appcontent').addEventListener('mousemove', Zotero.ProgressWindowSet.updateTimers, false);
|
||||
|
||||
// Hide browser chrome on Zotero tab
|
||||
XULBrowserWindow.inContentWhitelist.push("chrome://zotero/content/tab.xul");
|
||||
|
||||
// Perform additional initialization for full mode
|
||||
if (!Zotero.isConnector) {
|
||||
yield _onLoadFull();
|
||||
|
@ -86,17 +62,6 @@ var ZoteroOverlay = new function()
|
|||
}
|
||||
catch (e) {
|
||||
Zotero.debug(e, 1);
|
||||
|
||||
// Add toolbar icon if still necessary
|
||||
if (!iconLoaded) {
|
||||
try {
|
||||
Services.scriptloader.loadSubScript("chrome://zotero/content/icon.js", {}, "UTF-8");
|
||||
}
|
||||
catch (e) {
|
||||
Zotero.logError(e);
|
||||
}
|
||||
}
|
||||
|
||||
throw e;
|
||||
}
|
||||
});
|
||||
|
@ -127,19 +92,10 @@ var ZoteroOverlay = new function()
|
|||
.getBranch('extensions.zotero.');
|
||||
prefBranch.clearUserPref('statusBarIcon');
|
||||
|
||||
// Add toolbar icon
|
||||
try {
|
||||
iconLoaded = true;
|
||||
Services.scriptloader.loadSubScript("chrome://zotero/content/icon.js", {}, "UTF-8");
|
||||
}
|
||||
catch (e) {
|
||||
Zotero.logError(e);
|
||||
}
|
||||
|
||||
// Used for loading pages from upgrade wizard
|
||||
if (Zotero.initialURL) {
|
||||
setTimeout(function () {
|
||||
gBrowser.selectedTab = gBrowser.addTab(Zotero.initialURL);
|
||||
Zotero.launchURL(ZOTERO_CONFIG.START_URL);
|
||||
Zotero.initialURL = null;
|
||||
}, 1);
|
||||
}
|
||||
|
@ -151,11 +107,6 @@ var ZoteroOverlay = new function()
|
|||
ZoteroPane.destroy();
|
||||
}
|
||||
|
||||
this.onBeforeUnload = function() {
|
||||
// close Zotero as a tab, so it won't be pinned
|
||||
var zoteroTab = ZoteroOverlay.findZoteroTab();
|
||||
if(zoteroTab) gBrowser.removeTab(zoteroTab);
|
||||
}
|
||||
|
||||
/**
|
||||
* Hides/displays the Zotero interface
|
||||
|
@ -176,18 +127,6 @@ var ZoteroOverlay = new function()
|
|||
return;
|
||||
}
|
||||
|
||||
if(makeVisible || makeVisible === undefined) {
|
||||
if(Zotero.isConnector) {
|
||||
// If in connector mode, bring Zotero Standalone to foreground
|
||||
Zotero.activateStandalone();
|
||||
return;
|
||||
} else if(this.isTab) {
|
||||
// If in separate tab mode, just open the tab
|
||||
this.loadZoteroTab();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if(makeVisible === undefined) makeVisible = zoteroPane.hidden || zoteroPane.collapsed;
|
||||
|
||||
/*
|
||||
|
@ -256,4 +195,3 @@ window.addEventListener("load", function(e) {
|
|||
}
|
||||
}, false);
|
||||
window.addEventListener("unload", function(e) { ZoteroOverlay.onUnload(e); }, false);
|
||||
window.addEventListener("beforeunload", function(e) { ZoteroOverlay.onBeforeUnload(e); }, false);
|
||||
|
|
|
@ -38,8 +38,6 @@
|
|||
|
||||
<script src="overlay.js"/>
|
||||
|
||||
<popup id="contentAreaContextMenu"/>
|
||||
|
||||
<toolbar id="zotero-toolbar" nowindowdrag="true"/>
|
||||
|
||||
<vbox id="appcontent">
|
||||
|
@ -48,44 +46,5 @@
|
|||
onmouseup="ZoteroPane.updateTagSelectorSize()"/>
|
||||
|
||||
<stack id="zotero-pane-stack" persist="savedHeight" savedHeight="300" hidden="true"/>
|
||||
|
||||
<zoteroguidancepanel id="zotero-main-button-guidance" about="toolbarButton" for="zotero-toolbar-main-button"
|
||||
position="bottomcenter topleft" delay="2000" foregroundonly="true" noautohide="true"
|
||||
hideonpagechange="true" forward="zotero-save-button-guidance"/>
|
||||
<zoteroguidancepanel id="zotero-save-button-guidance" about="saveButton" for="zotero-toolbar-save-button"
|
||||
position="bottomcenter topleft" x="-8" delay="2000" foregroundonly="true" noautohide="true"
|
||||
hideonpagechange="true"/>
|
||||
|
||||
<!-- Annotation Toolbar -->
|
||||
<toolbar id="zotero-annotate-tb" crop="end" insertbefore="content" hidden="true">
|
||||
<toolbarbutton id="zotero-annotate-tb-add" tooltiptext="&zotero.annotate.toolbar.add.label;" oncommand="Zotero_Browser.toggleMode(this.id);"/>
|
||||
<toolbarbutton id="zotero-annotate-tb-collapse" tooltiptext="&zotero.annotate.toolbar.collapse.label;" oncommand="Zotero_Browser.toggleCollapsed();"/>
|
||||
<toolbarseparator/>
|
||||
<toolbarbutton id="zotero-annotate-tb-highlight" tooltiptext="&zotero.annotate.toolbar.highlight.label;" oncommand="Zotero_Browser.toggleMode(this.id);"/>
|
||||
<toolbarbutton id="zotero-annotate-tb-unhighlight" tooltiptext="&zotero.annotate.toolbar.unhighlight.label;" oncommand="Zotero_Browser.toggleMode(this.id);"/>
|
||||
</toolbar>
|
||||
</vbox>
|
||||
|
||||
|
||||
<menupopup id="menu_ToolsPopup">
|
||||
<menuseparator id="zoteroSeparator" insertbefore="devToolsSeparator"/>
|
||||
<menuitem id="tools-zotero" insertbefore="devToolsSeparator"
|
||||
oncommand="ZoteroOverlay.toggleDisplay();" label="Zotero"
|
||||
key="key_openZotero"/>
|
||||
</menupopup>
|
||||
|
||||
<keyset id="mainKeyset">
|
||||
<!--
|
||||
The key can be changed by the pref extensions.zotero.keys.openZotero,
|
||||
but if the values are changed here, the pref won't override them.
|
||||
-->
|
||||
<key id="key_openZotero"
|
||||
key="Z"
|
||||
oncommand="ZoteroOverlay.toggleDisplay();"
|
||||
modifiers="accel shift" />
|
||||
<key id="key_saveToZotero"
|
||||
key="S"
|
||||
oncommand="Zotero_Browser.scrapeThisPage();"
|
||||
modifiers="accel shift" />
|
||||
</keyset>
|
||||
</overlay>
|
||||
|
|
|
@ -1,69 +0,0 @@
|
|||
<?xml version="1.0"?>
|
||||
<!--
|
||||
***** BEGIN LICENSE BLOCK *****
|
||||
|
||||
Copyright © 2006–2013 Center for History and New Media
|
||||
George Mason University, Fairfax, Virginia, USA
|
||||
http://zotero.org
|
||||
|
||||
This file is part of Zotero.
|
||||
|
||||
Zotero is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
Zotero is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
***** END LICENSE BLOCK *****
|
||||
-->
|
||||
<!DOCTYPE prefwindow SYSTEM "chrome://zotero/locale/preferences.dtd">
|
||||
|
||||
<overlay xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
|
||||
<prefpane id="zotero-prefpane-advanced">
|
||||
<preferences id="zotero-prefpane-general-preferences">
|
||||
<preference id="pref-zoteroDotOrgVersionHeader"
|
||||
name="extensions.zotero.zoteroDotOrgVersionHeader"
|
||||
type="bool"/>
|
||||
</preferences>
|
||||
|
||||
<tabbox id="zotero-prefpane-advanced-tabs">
|
||||
<tabpanels id="zotero-prefpane-advanced-tabpanels">
|
||||
<tabpanel id="zotero-prefpane-advanced-general-tab">
|
||||
<groupbox id="zotero-prefpane-advanced-miscellaneous">
|
||||
<checkbox label="&zotero.preferences.zoteroDotOrgVersionHeader;"
|
||||
tooltiptext="&zotero.preferences.zoteroDotOrgVersionHeader.tooltip;"
|
||||
preference="pref-zoteroDotOrgVersionHeader"
|
||||
insertbefore="zotero-prefpane-advanced-openbuttons"/>
|
||||
<separator class="thin"
|
||||
insertbefore="zotero-prefpane-advanced-openbuttons"/>
|
||||
</groupbox>
|
||||
</tabpanel>
|
||||
|
||||
<tabpanel id="zotero-prefpane-advanced-keys-tab">
|
||||
<grid id="zotero-keys-grid">
|
||||
<rows id="zotero-keys-rows">
|
||||
<row insertbefore="zotero-keys-new-item">
|
||||
<label value="&zotero.preferences.keys.openZotero;" control="key-textbox-openZotero"/>
|
||||
<label class="modifier"/>
|
||||
<textbox id="textbox-openZotero" maxlength="1" size="1" preference="pref-keys-openZotero"/>
|
||||
</row>
|
||||
|
||||
<row insertbefore="zotero-keys-new-item">
|
||||
<label value="&zotero.preferences.keys.saveToZotero;" control="key-textbox-saveToZotero"/>
|
||||
<label class="modifier"/>
|
||||
<textbox id="textbox-saveToZotero" maxlength="1" size="1" preference="pref-keys-saveToZotero"/>
|
||||
</row>
|
||||
</rows>
|
||||
</grid>
|
||||
</tabpanel>
|
||||
</tabpanels>
|
||||
</tabbox>
|
||||
</prefpane>
|
||||
</overlay>
|
|
@ -1,47 +0,0 @@
|
|||
<?xml version="1.0"?>
|
||||
<!--
|
||||
***** BEGIN LICENSE BLOCK *****
|
||||
|
||||
Copyright © 2006–2013 Center for History and New Media
|
||||
George Mason University, Fairfax, Virginia, USA
|
||||
http://zotero.org
|
||||
|
||||
This file is part of Zotero.
|
||||
|
||||
Zotero is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
Zotero is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with Zotero. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
***** END LICENSE BLOCK *****
|
||||
-->
|
||||
<!DOCTYPE prefwindow SYSTEM "chrome://zotero/locale/preferences.dtd">
|
||||
|
||||
<overlay xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
|
||||
<prefpane id="zotero-prefpane-general">
|
||||
<preferences id="zotero-prefpane-general-preferences">
|
||||
<preference id="pref-launchNonNativeFiles" name="extensions.zotero.launchNonNativeFiles" type="bool"/>
|
||||
<preference id="pref-parseEndNoteMIMETypes"
|
||||
name="extensions.zotero.parseEndNoteMIMETypes"
|
||||
type="bool" onchange="Zotero.MIMETypeHandler.init()"/>
|
||||
</preferences>
|
||||
<groupbox id="zotero-prefpane-miscellaneous-groupbox">
|
||||
<checkbox id="launchNonNativeFiles-checkbox"
|
||||
preference="pref-launchNonNativeFiles"
|
||||
onsyncfrompreference="return !document.getElementById(this.getAttribute('preference')).value"
|
||||
onsynctopreference="return !this.checked"
|
||||
insertbefore="automaticSnapshots-checkbox"/>
|
||||
<checkbox label="&zotero.preferences.parseRISRefer;"
|
||||
preference="pref-parseEndNoteMIMETypes"
|
||||
insertbefore="automaticSnapshots-checkbox"/>
|
||||
</groupbox>
|
||||
</prefpane>
|
||||
</overlay>
|
|
@ -445,7 +445,6 @@ ZoteroStandalone.DebugOutput = {
|
|||
};
|
||||
|
||||
|
||||
/** Taken from browser.js **/
|
||||
function toJavaScriptConsole() {
|
||||
toOpenWindowByType("global:console", "chrome://global/content/console.xul");
|
||||
}
|
||||
|
|
|
@ -54,14 +54,7 @@ Zotero.MIMETypeHandler = new function () {
|
|||
_ignoreContentDispositionTypes = [];
|
||||
_observers = [];
|
||||
|
||||
if(Zotero.Prefs.get("parseEndNoteMIMETypes")) {
|
||||
this.registerMetadataHandlers();
|
||||
}
|
||||
Zotero.Prefs.registerObserver("parseEndNoteMIMETypes", function(val) {
|
||||
if (val) this.registerMetadataHandlers();
|
||||
else this.unregisterMetadataHandlers();
|
||||
}.bind(this));
|
||||
|
||||
// Install styles from the Cite preferences
|
||||
this.addHandler("application/vnd.citationstyles.style+xml", Zotero.Promise.coroutine(function* (a1, a2) {
|
||||
let win = Services.wm.getMostRecentWindow("zotero:basicViewer");
|
||||
try {
|
||||
|
@ -77,40 +70,6 @@ Zotero.MIMETypeHandler = new function () {
|
|||
win.close();
|
||||
}
|
||||
}));
|
||||
this.addHandler("text/x-csl", function(a1, a2) { Zotero.Styles.install(a1, a2) }); // deprecated
|
||||
this.addHandler("application/x-zotero-schema", Zotero.Schema.importSchema);
|
||||
this.addHandler("application/x-zotero-settings", Zotero.Prefs.importSettings);
|
||||
}
|
||||
|
||||
// MIME types that Zotero should handle when parseEndNoteMIMETypes preference
|
||||
// is enabled
|
||||
var metadataMIMETypes = [
|
||||
"application/x-endnote-refer", "application/x-research-info-systems",
|
||||
"application/x-inst-for-scientific-info",
|
||||
"text/x-bibtex", "application/x-bibtex",
|
||||
// Non-standard
|
||||
"text/x-research-info-systems",
|
||||
"text/application/x-research-info-systems", // Nature serves this
|
||||
"text/ris", // Cell serves this
|
||||
"ris" // Not even trying
|
||||
];
|
||||
|
||||
/**
|
||||
* Registers MIME types for parseEndNoteMIMETypes preference
|
||||
*/
|
||||
this.registerMetadataHandlers = function() {
|
||||
for (var i=0; i<metadataMIMETypes.length; i++) {
|
||||
this.addHandler(metadataMIMETypes[i], _importHandler, true);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Unregisters MIME types for parseEndNoteMIMETypes preference
|
||||
*/
|
||||
this.unregisterMetadataHandlers = function() {
|
||||
for (var i=0; i<metadataMIMETypes.length; i++) {
|
||||
this.removeHandler(metadataMIMETypes[i]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -146,67 +105,6 @@ Zotero.MIMETypeHandler = new function () {
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Handles Refer/RIS/ISI MIME types
|
||||
* @param {String} string The Refer/RIS/ISI formatted records
|
||||
* @param {String} uri The URI from which the Refer/RIS/ISI formatted records were downloaded
|
||||
*/
|
||||
function _importHandler(string, uri, contentType, channel) {
|
||||
var win = channel.notificationCallbacks.getInterface(Components.interfaces.nsIDOMWindow).top;
|
||||
if(!win) {
|
||||
Zotero.debug("Attempt to import from a channel without an attached document refused");
|
||||
return false;
|
||||
}
|
||||
|
||||
var hostPort = channel.URI.hostPort.replace(";", "_", "g");
|
||||
|
||||
var allowedSitesString = Zotero.Prefs.get("ingester.allowedSites");
|
||||
allowedSites = allowedSitesString.split(";");
|
||||
|
||||
if(allowedSites.indexOf(hostPort) === -1) {
|
||||
var title = Zotero.getString("ingester.importReferRISDialog.title");
|
||||
var text = Zotero.getString("ingester.importReferRISDialog.text", channel.URI.hostPort)+"\n\n";
|
||||
var checkMsg = Zotero.getString("ingester.importReferRISDialog.checkMsg");
|
||||
var checkValue = {"value":false};
|
||||
|
||||
// make tab-modal dialog (https://developer.mozilla.org/en/Using_tab-modal_prompts)
|
||||
var prompt = Components.classes["@mozilla.org/prompter;1"]
|
||||
.getService(Components.interfaces.nsIPromptFactory)
|
||||
.getPrompt(win, Components.interfaces.nsIPrompt);
|
||||
|
||||
var bag = prompt.QueryInterface(Components.interfaces.nsIWritablePropertyBag2);
|
||||
bag.setPropertyAsBool("allowTabModal", true);
|
||||
|
||||
var continueDownload = prompt.confirmCheck(title, text, checkMsg, checkValue);
|
||||
if(!continueDownload) return false;
|
||||
if(checkValue.value) {
|
||||
// add to allowed sites if desired
|
||||
Zotero.Prefs.set("ingester.allowedSites", allowedSitesString+";"+hostPort);
|
||||
}
|
||||
}
|
||||
|
||||
var frontWindow = Components.classes["@mozilla.org/embedcomp/window-watcher;1"].
|
||||
getService(Components.interfaces.nsIWindowWatcher).activeWindow;
|
||||
|
||||
// attempt to import through Zotero.Translate
|
||||
var translation = new Zotero.Translate("import");
|
||||
translation.setLocation(uri);
|
||||
translation.setString(string);
|
||||
|
||||
// attempt to retrieve translators
|
||||
return translation.getTranslators().then(function(translators) {
|
||||
if(!translators.length) {
|
||||
// we lied. we can't really translate this file.
|
||||
Zotero.debug("No translator found to handle this file");
|
||||
return false;
|
||||
}
|
||||
|
||||
// translate using first available
|
||||
translation.setTranslator(translators[0]);
|
||||
return frontWindow.Zotero_Browser.performTranslation(translation);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Called to observe a page load
|
||||
*/
|
||||
|
|
|
@ -180,32 +180,6 @@ Zotero.Prefs = new function(){
|
|||
}
|
||||
};
|
||||
|
||||
|
||||
// Import settings bundles
|
||||
this.importSettings = function (str, uri) {
|
||||
var ps = Services.prompt;
|
||||
|
||||
if (!uri.match(/https:\/\/([^\.]+\.)?zotero.org\//)) {
|
||||
Zotero.debug("Ignoring settings file not from https://zotero.org");
|
||||
return;
|
||||
}
|
||||
|
||||
str = Zotero.Utilities.trim(str.replace(/<\?xml.*\?>\s*/, ''));
|
||||
Zotero.debug(str);
|
||||
|
||||
var confirm = ps.confirm(
|
||||
null,
|
||||
"",
|
||||
"Apply settings from zotero.org?"
|
||||
);
|
||||
|
||||
if (!confirm) {
|
||||
return;
|
||||
}
|
||||
|
||||
// TODO: parse settings XML
|
||||
}
|
||||
|
||||
// Handlers for some Zotero preferences
|
||||
var _handlers = [
|
||||
[ "automaticScraperUpdates", function(val) {
|
||||
|
@ -229,14 +203,6 @@ Zotero.Prefs = new function(){
|
|||
Zotero.Prefs.set('note.fontSize', 11);
|
||||
}
|
||||
}],
|
||||
[ "zoteroDotOrgVersionHeader", function(val) {
|
||||
if (val) {
|
||||
Zotero.VersionHeader.register();
|
||||
}
|
||||
else {
|
||||
Zotero.VersionHeader.unregister();
|
||||
}
|
||||
}],
|
||||
[ "sync.autoSync", function(val) {
|
||||
if (val) {
|
||||
Zotero.Sync.EventListeners.AutoSyncListener.register();
|
||||
|
|
|
@ -392,15 +392,8 @@ Zotero.Sync.Data.Local = {
|
|||
}
|
||||
catch (e) {
|
||||
Zotero.logError(e);
|
||||
if (Zotero.isStandalone) {
|
||||
var msg = Zotero.getString('sync.error.loginManagerCorrupted1', Zotero.appName) + "\n\n"
|
||||
+ Zotero.getString('sync.error.loginManagerCorrupted2', [Zotero.appName, Zotero.appName]);
|
||||
}
|
||||
else {
|
||||
var msg = Zotero.getString('sync.error.loginManagerInaccessible') + "\n\n"
|
||||
+ Zotero.getString('sync.error.checkMasterPassword', Zotero.appName) + "\n\n"
|
||||
+ Zotero.getString('sync.error.corruptedLoginManager', Zotero.appName);
|
||||
}
|
||||
var msg = Zotero.getString('sync.error.loginManagerCorrupted1', Zotero.appName) + "\n\n"
|
||||
+ Zotero.getString('sync.error.loginManagerCorrupted2', [Zotero.appName, Zotero.appName]);
|
||||
var ps = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
|
||||
.getService(Components.interfaces.nsIPromptService);
|
||||
ps.alert(null, Zotero.getString('general.error'), msg);
|
||||
|
|
|
@ -231,8 +231,6 @@ Services.scriptloader.loadSubScript("resource://zotero/polyfill.js");
|
|||
// Make sure that Zotero Standalone is not running as root
|
||||
if(Zotero.isStandalone && !Zotero.isWin) _checkRoot();
|
||||
|
||||
_addToolbarIcon();
|
||||
|
||||
try {
|
||||
yield Zotero.DataDirectory.init();
|
||||
if (this.restarting) {
|
||||
|
@ -333,27 +331,23 @@ Services.scriptloader.loadSubScript("resource://zotero/polyfill.js");
|
|||
}
|
||||
}
|
||||
|
||||
if (!Zotero.isConnector) {
|
||||
if (!this.forceDataDir) {
|
||||
yield Zotero.DataDirectory.checkForMigration(
|
||||
dataDir, Zotero.DataDirectory.defaultDir
|
||||
);
|
||||
if (this.skipLoading) {
|
||||
return;
|
||||
}
|
||||
|
||||
yield Zotero.DataDirectory.checkForLostLegacy();
|
||||
if (this.restarting) {
|
||||
return;
|
||||
}
|
||||
if (!this.forceDataDir) {
|
||||
yield Zotero.DataDirectory.checkForMigration(
|
||||
dataDir, Zotero.DataDirectory.defaultDir
|
||||
);
|
||||
if (this.skipLoading) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Make sure data directory isn't in Dropbox, etc.
|
||||
if (Zotero.isStandalone) {
|
||||
yield Zotero.DataDirectory.checkForUnsafeLocation(dataDir);
|
||||
yield Zotero.DataDirectory.checkForLostLegacy();
|
||||
if (this.restarting) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// Make sure data directory isn't in Dropbox, etc.
|
||||
yield Zotero.DataDirectory.checkForUnsafeLocation(dataDir);
|
||||
|
||||
// Register shutdown handler to call Zotero.shutdown()
|
||||
var _shutdownObserver = {observe:function() { Zotero.shutdown().done() }};
|
||||
Services.obs.addObserver(_shutdownObserver, "quit-application", false);
|
||||
|
@ -386,35 +380,15 @@ Services.scriptloader.loadSubScript("resource://zotero/polyfill.js");
|
|||
Services.console.unregisterListener(ConsoleListener);
|
||||
});
|
||||
|
||||
// Load additional info for connector or not
|
||||
if(Zotero.isConnector) {
|
||||
Zotero.debug("Loading in connector mode");
|
||||
Zotero.Connector_Types.init();
|
||||
|
||||
// Store a startupError until we get information from Zotero Standalone
|
||||
Zotero.startupError = Zotero.getString("connector.loadInProgress")
|
||||
|
||||
if(!Zotero.isFirstLoadThisSession) {
|
||||
// We want to get a checkInitComplete message before initializing if we switched to
|
||||
// connector mode because Standalone was launched
|
||||
Zotero.IPC.broadcast("checkInitComplete");
|
||||
} else {
|
||||
Zotero.initComplete();
|
||||
return _initFull()
|
||||
.then(function (success) {
|
||||
if (!success) {
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
Zotero.debug("Loading in full mode");
|
||||
return _initFull()
|
||||
.then(function (success) {
|
||||
if (!success) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if(Zotero.isStandalone) Zotero.Standalone.init();
|
||||
Zotero.initComplete();
|
||||
})
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
if (Zotero.isStandalone) Zotero.Standalone.init();
|
||||
Zotero.initComplete();
|
||||
})
|
||||
});
|
||||
|
||||
/**
|
||||
|
@ -452,22 +426,6 @@ Services.scriptloader.loadSubScript("resource://zotero/polyfill.js");
|
|||
};
|
||||
|
||||
|
||||
var _addToolbarIcon = function () {
|
||||
if (Zotero.isStandalone) return;
|
||||
|
||||
// Add toolbar icon
|
||||
try {
|
||||
Services.scriptloader.loadSubScript("chrome://zotero/content/icon.js", {}, "UTF-8");
|
||||
}
|
||||
catch (e) {
|
||||
if (Zotero) {
|
||||
Zotero.debug(e, 1);
|
||||
}
|
||||
Components.utils.reportError(e);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Initialization function to be called only if Zotero is in full mode
|
||||
*
|
||||
|
@ -1556,8 +1514,6 @@ Services.scriptloader.loadSubScript("resource://zotero/polyfill.js");
|
|||
function _showWindowZoteroPaneOverlay(doc) {
|
||||
doc.getElementById('zotero-collections-tree').disabled = true;
|
||||
doc.getElementById('zotero-items-tree').disabled = true;
|
||||
doc.getElementById('zotero-pane-tab-catcher-top').hidden = false;
|
||||
doc.getElementById('zotero-pane-tab-catcher-bottom').hidden = false;
|
||||
doc.getElementById('zotero-pane-overlay').hidden = false;
|
||||
}
|
||||
|
||||
|
@ -1565,8 +1521,6 @@ Services.scriptloader.loadSubScript("resource://zotero/polyfill.js");
|
|||
function _hideWindowZoteroPaneOverlay(doc) {
|
||||
doc.getElementById('zotero-collections-tree').disabled = false;
|
||||
doc.getElementById('zotero-items-tree').disabled = false;
|
||||
doc.getElementById('zotero-pane-tab-catcher-top').hidden = true;
|
||||
doc.getElementById('zotero-pane-tab-catcher-bottom').hidden = true;
|
||||
doc.getElementById('zotero-pane-overlay').hidden = true;
|
||||
|
||||
// See note in showZoteroPaneProgressMeter()
|
||||
|
@ -1900,13 +1854,10 @@ Zotero.Keys = new function() {
|
|||
*/
|
||||
Zotero.VersionHeader = {
|
||||
init: function () {
|
||||
if (Zotero.Prefs.get("zoteroDotOrgVersionHeader")) {
|
||||
this.register();
|
||||
}
|
||||
this.register();
|
||||
Zotero.addShutdownListener(this.unregister);
|
||||
},
|
||||
|
||||
// Called from this.init() and Zotero.Prefs.observe()
|
||||
register: function () {
|
||||
Services.obs.addObserver(this, "http-on-modify-request", false);
|
||||
},
|
||||
|
|
|
@ -52,7 +52,6 @@ var ZoteroPane = new function()
|
|||
this.getSortDirection = getSortDirection;
|
||||
this.setItemsPaneMessage = setItemsPaneMessage;
|
||||
this.clearItemsPaneMessage = clearItemsPaneMessage;
|
||||
this.contextPopupShowing = contextPopupShowing;
|
||||
this.viewSelectedAttachment = viewSelectedAttachment;
|
||||
this.reportErrors = reportErrors;
|
||||
this.displayErrorMessage = displayErrorMessage;
|
||||
|
@ -72,16 +71,6 @@ var ZoteroPane = new function()
|
|||
this.init = function () {
|
||||
Zotero.debug("Initializing Zotero pane");
|
||||
|
||||
// For now, keep actions menu in the DOM and show it in Firefox for development
|
||||
if (!Zotero.isStandalone) {
|
||||
document.getElementById('zotero-tb-actions-menu-separator').hidden = false;
|
||||
document.getElementById('zotero-tb-actions-menu').hidden = false;
|
||||
}
|
||||
|
||||
// Set "Report Errors..." label via property rather than DTD entity,
|
||||
// since we need to reference it in script elsewhere
|
||||
document.getElementById('zotero-tb-actions-reportErrors').setAttribute('label',
|
||||
Zotero.getString('errorReport.reportErrors'));
|
||||
// Set key down handler
|
||||
document.getElementById('appcontent').addEventListener('keydown', ZoteroPane_Local.handleKeyDown, true);
|
||||
|
||||
|
@ -110,7 +99,6 @@ var ZoteroPane = new function()
|
|||
Zotero.updateQuickSearchBox(document);
|
||||
|
||||
if (Zotero.isMac) {
|
||||
//document.getElementById('zotero-tb-actions-zeroconf-update').setAttribute('hidden', false);
|
||||
document.getElementById('zotero-pane-stack').setAttribute('platform', 'mac');
|
||||
} else if(Zotero.isWin) {
|
||||
document.getElementById('zotero-pane-stack').setAttribute('platform', 'win');
|
||||
|
@ -122,22 +110,11 @@ var ZoteroPane = new function()
|
|||
'sync.syncWith', ZOTERO_CONFIG.DOMAIN_NAME
|
||||
);
|
||||
|
||||
if (Zotero.isStandalone) {
|
||||
document.getElementById('zotero-tb-feed-add-fromPage').hidden = true;
|
||||
document.getElementById('zotero-tb-feed-add-fromPage-menu').hidden = true;
|
||||
}
|
||||
|
||||
// register an observer for Zotero reload
|
||||
observerService = Components.classes["@mozilla.org/observer-service;1"]
|
||||
.getService(Components.interfaces.nsIObserverService);
|
||||
observerService.addObserver(_reloadObserver, "zotero-reloaded", false);
|
||||
observerService.addObserver(_reloadObserver, "zotero-before-reload", false);
|
||||
this.addBeforeReloadListener(function(newMode) {
|
||||
if(newMode == "connector") {
|
||||
ZoteroPane_Local.setItemsPaneMessage(Zotero.getString('connector.standaloneOpen'));
|
||||
}
|
||||
return;
|
||||
});
|
||||
this.addReloadListener(_loadPane);
|
||||
|
||||
// continue loading pane
|
||||
|
@ -149,7 +126,7 @@ var ZoteroPane = new function()
|
|||
* mode
|
||||
*/
|
||||
function _loadPane() {
|
||||
if(!Zotero || !Zotero.initialized || Zotero.isConnector) return;
|
||||
if (!Zotero || !Zotero.initialized) return;
|
||||
|
||||
// Set flags for hi-res displays
|
||||
Zotero.hiDPI = window.devicePixelRatio > 1;
|
||||
|
@ -181,9 +158,6 @@ var ZoteroPane = new function()
|
|||
itemsTree.addEventListener("mousedown", ZoteroPane_Local.onTreeMouseDown, true);
|
||||
itemsTree.addEventListener("click", ZoteroPane_Local.onTreeClick, true);
|
||||
|
||||
var menu = document.getElementById("contentAreaContextMenu");
|
||||
menu.addEventListener("popupshowing", ZoteroPane_Local.contextPopupShowing, false);
|
||||
|
||||
var tagSelector = document.getElementById('zotero-tag-selector');
|
||||
tagSelector.onchange = function () {
|
||||
return ZoteroPane_Local.updateTagFilter();
|
||||
|
@ -977,26 +951,6 @@ var ZoteroPane = new function()
|
|||
}
|
||||
});
|
||||
|
||||
this.newFeedFromPage = Zotero.Promise.coroutine(function* (event) {
|
||||
let data = {unsaved: true};
|
||||
if (event) {
|
||||
data.url = event.target.getAttribute('feed');
|
||||
} else {
|
||||
data.url = gBrowser.selectedBrowser.feeds[0].href;
|
||||
}
|
||||
window.openDialog('chrome://zotero/content/feedSettings.xul',
|
||||
null, 'centerscreen, modal', data);
|
||||
if (!data.cancelled) {
|
||||
let feed = new Zotero.Feed();
|
||||
feed.url = data.url;
|
||||
feed.name = data.title;
|
||||
feed.refreshInterval = data.ttl;
|
||||
feed.cleanupReadAfter = data.cleanupReadAfter;
|
||||
feed.cleanupUnreadAfter = data.cleanupUnreadAfter;
|
||||
yield feed.saveTx();
|
||||
yield feed.updateFeed();
|
||||
}
|
||||
});
|
||||
|
||||
this.newFeedFromURL = Zotero.Promise.coroutine(function* () {
|
||||
let data = {};
|
||||
|
@ -1411,7 +1365,6 @@ var ZoteroPane = new function()
|
|||
"cmd_zotero_newCollection",
|
||||
"cmd_zotero_newSavedSearch",
|
||||
"zotero-tb-add",
|
||||
"cmd_zotero_newItemFromCurrentPage",
|
||||
"zotero-tb-lookup",
|
||||
"cmd_zotero_newStandaloneNote",
|
||||
"zotero-tb-note-add",
|
||||
|
@ -1724,14 +1677,13 @@ var ZoteroPane = new function()
|
|||
|
||||
for (var i=0; i<popup.childNodes.length; i++) {
|
||||
var node = popup.childNodes[i];
|
||||
var className = node.className.replace('standalone-no-display', '').trim();
|
||||
var className = node.className;
|
||||
|
||||
switch (className) {
|
||||
case prefix + 'link':
|
||||
node.disabled = collectionTreeRow.isWithinGroup();
|
||||
break;
|
||||
|
||||
case prefix + 'snapshot':
|
||||
case prefix + 'file':
|
||||
node.disabled = !canEditFiles;
|
||||
break;
|
||||
|
@ -1741,7 +1693,7 @@ var ZoteroPane = new function()
|
|||
break;
|
||||
|
||||
default:
|
||||
throw ("Invalid class name '" + className + "' in ZoteroPane_Local.updateAttachmentButtonMenu()");
|
||||
throw new Error(`Invalid class name '${className}'`);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -3359,54 +3311,24 @@ var ZoteroPane = new function()
|
|||
return;
|
||||
}
|
||||
|
||||
if (Zotero.isStandalone) {
|
||||
if(uri.match(/^https?/)) {
|
||||
this.launchURL(uri);
|
||||
continue;
|
||||
}
|
||||
|
||||
// Handle no-content zotero: URLs (e.g., zotero://select) without opening viewer
|
||||
if (uri.startsWith('zotero:')) {
|
||||
let nsIURI = Services.io.newURI(uri, null, null);
|
||||
let handler = Components.classes["@mozilla.org/network/protocol;1?name=zotero"]
|
||||
.getService();
|
||||
let extension = handler.wrappedJSObject.getExtension(nsIURI);
|
||||
if (extension.noContent) {
|
||||
extension.doAction(nsIURI);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
Zotero.openInViewer(uri);
|
||||
return;
|
||||
if(uri.match(/^https?/)) {
|
||||
this.launchURL(uri);
|
||||
continue;
|
||||
}
|
||||
|
||||
// Open in new tab
|
||||
var openInNewTab = event && (event.metaKey || (!Zotero.isMac && event.ctrlKey));
|
||||
if (event && event.shiftKey && !openInNewTab) {
|
||||
window.open(uri, "zotero-loaded-page",
|
||||
"menubar=yes,location=yes,toolbar=yes,personalbar=yes,resizable=yes,scrollbars=yes,status=yes");
|
||||
}
|
||||
else if (openInNewTab || !window.loadURI || uris.length > 1) {
|
||||
// if no gBrowser, find it
|
||||
if(!gBrowser) {
|
||||
let browserWindow = Services.wm.getMostRecentWindow("navigator:browser");
|
||||
var gBrowser = browserWindow.gBrowser;
|
||||
}
|
||||
|
||||
// load in a new tab
|
||||
var tab = gBrowser.addTab(uri);
|
||||
var browser = gBrowser.getBrowserForTab(tab);
|
||||
|
||||
if (event && event.shiftKey || !openInNewTab) {
|
||||
// if shift key is down, or we are opening in a new tab because there is no loadURI,
|
||||
// select new tab
|
||||
gBrowser.selectedTab = tab;
|
||||
// Handle no-content zotero: URLs (e.g., zotero://select) without opening viewer
|
||||
if (uri.startsWith('zotero:')) {
|
||||
let nsIURI = Services.io.newURI(uri, null, null);
|
||||
let handler = Components.classes["@mozilla.org/network/protocol;1?name=zotero"]
|
||||
.getService();
|
||||
let extension = handler.wrappedJSObject.getExtension(nsIURI);
|
||||
if (extension.noContent) {
|
||||
extension.doAction(nsIURI);
|
||||
return;
|
||||
}
|
||||
}
|
||||
else {
|
||||
window.loadURI(uri);
|
||||
}
|
||||
|
||||
Zotero.openInViewer(uri);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3470,74 +3392,6 @@ var ZoteroPane = new function()
|
|||
}
|
||||
|
||||
|
||||
// Updates browser context menu options
|
||||
function contextPopupShowing()
|
||||
{
|
||||
if (!Zotero.Prefs.get('browserContentContextMenu')) {
|
||||
return;
|
||||
}
|
||||
|
||||
var menuitem = document.getElementById("zotero-context-add-to-current-note");
|
||||
if (menuitem){
|
||||
var items = ZoteroPane_Local.getSelectedItems();
|
||||
if (ZoteroPane_Local.itemsView.selection && ZoteroPane_Local.itemsView.selection.count==1
|
||||
&& items[0] && items[0].isNote()
|
||||
&& window.gContextMenu.isTextSelected)
|
||||
{
|
||||
menuitem.hidden = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
menuitem.hidden = true;
|
||||
}
|
||||
}
|
||||
|
||||
var menuitem = document.getElementById("zotero-context-add-to-new-note");
|
||||
if (menuitem){
|
||||
if (window.gContextMenu.isTextSelected)
|
||||
{
|
||||
menuitem.hidden = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
menuitem.hidden = true;
|
||||
}
|
||||
}
|
||||
|
||||
var menuitem = document.getElementById("zotero-context-save-link-as-item");
|
||||
if (menuitem) {
|
||||
if (window.gContextMenu.onLink) {
|
||||
menuitem.hidden = false;
|
||||
}
|
||||
else {
|
||||
menuitem.hidden = true;
|
||||
}
|
||||
}
|
||||
|
||||
var menuitem = document.getElementById("zotero-context-save-image-as-item");
|
||||
if (menuitem) {
|
||||
// Not using window.gContextMenu.hasBGImage -- if the user wants it,
|
||||
// they can use the Firefox option to view and then import from there
|
||||
if (window.gContextMenu.onImage) {
|
||||
menuitem.hidden = false;
|
||||
}
|
||||
else {
|
||||
menuitem.hidden = true;
|
||||
}
|
||||
}
|
||||
|
||||
// If Zotero is locked or library is read-only, disable menu items
|
||||
var menu = document.getElementById('zotero-content-area-context-menu');
|
||||
var disabled = Zotero.locked;
|
||||
if (!disabled && self.collectionsView.selection && self.collectionsView.selection.count) {
|
||||
var collectionTreeRow = self.collectionsView.selectedTreeRow;
|
||||
disabled = !collectionTreeRow.editable;
|
||||
}
|
||||
for (let menuitem of menu.firstChild.childNodes) {
|
||||
menuitem.disabled = disabled;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return {Promise<Integer|null|false>} - The id of the new note in non-popup mode, null in
|
||||
* popup mode (where a note isn't created immediately), or false if library isn't editable
|
||||
|
@ -3603,6 +3457,7 @@ var ZoteroPane = new function()
|
|||
}
|
||||
|
||||
|
||||
// TODO: Move to server_connector
|
||||
this.addSelectedTextToCurrentNote = Zotero.Promise.coroutine(function* () {
|
||||
if (!this.canEdit()) {
|
||||
this.displayCannotEditLibraryMessage();
|
||||
|
@ -3642,17 +3497,6 @@ var ZoteroPane = new function()
|
|||
});
|
||||
|
||||
|
||||
this.createItemAndNoteFromSelectedText = Zotero.Promise.coroutine(function* (event) {
|
||||
var str = event.currentTarget.ownerDocument.popupNode.ownerDocument.defaultView.getSelection().toString();
|
||||
var uri = event.currentTarget.ownerDocument.popupNode.ownerDocument.location.href;
|
||||
var item = yield ZoteroPane.addItemFromPage();
|
||||
if (item) {
|
||||
return ZoteroPane.newNote(false, item.key, str, uri)
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
this.openNoteWindow = function (itemID, col, parentKey) {
|
||||
if (!this.canEdit()) {
|
||||
this.displayCannotEditLibraryMessage();
|
||||
|
@ -4153,42 +3997,6 @@ var ZoteroPane = new function()
|
|||
});
|
||||
|
||||
|
||||
/*
|
||||
* Create an attachment from the current page
|
||||
*
|
||||
* |itemID| -- itemID of parent item
|
||||
* |link| -- create web link instead of snapshot
|
||||
*/
|
||||
this.addAttachmentFromPage = Zotero.Promise.coroutine(function* (link, itemID) {
|
||||
if (Zotero.DB.inTransaction()) {
|
||||
yield Zotero.DB.waitForTransaction();
|
||||
}
|
||||
|
||||
if (typeof itemID != 'number') {
|
||||
throw new Error("itemID must be an integer");
|
||||
}
|
||||
|
||||
var progressWin = new Zotero.ProgressWindow();
|
||||
progressWin.changeHeadline(Zotero.getString('save.' + (link ? 'link' : 'attachment')));
|
||||
var type = link ? 'web-link' : 'snapshot';
|
||||
var icon = 'chrome://zotero/skin/treeitem-attachment-' + type + '.png';
|
||||
progressWin.addLines(window.content.document.title, icon)
|
||||
progressWin.show();
|
||||
progressWin.startCloseTimer();
|
||||
|
||||
if (link) {
|
||||
return Zotero.Attachments.linkFromDocument({
|
||||
document: window.content.document,
|
||||
parentItemID: itemID
|
||||
});
|
||||
}
|
||||
return Zotero.Attachments.importFromDocument({
|
||||
document: window.content.document,
|
||||
parentItemID: itemID
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
this.viewItems = Zotero.Promise.coroutine(function* (items, event) {
|
||||
if (items.length > 1) {
|
||||
if (!event || (!event.metaKey && !event.shiftKey)) {
|
||||
|
@ -4290,8 +4098,8 @@ var ZoteroPane = new function()
|
|||
// TODO: update DB with new info if changed?
|
||||
|
||||
var ext = Zotero.File.getExtension(file);
|
||||
var externalViewer = Zotero.isStandalone || (!Zotero.MIME.hasNativeHandler(mimeType, ext) &&
|
||||
(!Zotero.MIME.hasInternalHandler(mimeType, ext) || Zotero.Prefs.get('launchNonNativeFiles')));
|
||||
var externalViewer = !Zotero.MIME.hasInternalHandler(mimeType, ext)
|
||||
|| Zotero.Prefs.get('launchNonNativeFiles');
|
||||
}
|
||||
|
||||
if (!externalViewer) {
|
||||
|
|
|
@ -43,7 +43,6 @@
|
|||
<script src="reportInterface.js"/>
|
||||
<script src="timelineInterface.js"/>
|
||||
<script src="recognizePDFDialog.js"/>
|
||||
<script src="browser.js" type="application/javascript;version=1.8"/>
|
||||
<script src="lookup.js"/>
|
||||
<script src="locateMenu.js" type="application/javascript;version=1.8"/>
|
||||
|
||||
|
@ -66,38 +65,9 @@
|
|||
<command id="cmd_zotero_newSavedSearch" oncommand="ZoteroPane_Local.newSearch()"/>
|
||||
<command id="cmd_zotero_newStandaloneNote" oncommand="ZoteroPane_Local.newNote(event.shiftKey);"/>
|
||||
<command id="cmd_zotero_newChildNote" oncommand="ZoteroPane_Local.newChildNote(event.shiftKey);"/>
|
||||
<!-- Keep in sync with browser.js::scrapeThisPage(), until that calls this directly -->
|
||||
<command id="cmd_zotero_newItemFromCurrentPage" oncommand="ZoteroPane.addItemFromPage('temporaryPDFHack', event.shiftKey ? !Zotero.Prefs.get('automaticSnapshots') : null)"/>
|
||||
</commandset>
|
||||
|
||||
<popup id="contentAreaContextMenu">
|
||||
<menu id="zotero-content-area-context-menu" label="Zotero">
|
||||
<menupopup>
|
||||
<menuitem id="zotero-context-item-from-page" class="menu-iconic"
|
||||
label="&zotero.toolbar.newItemFromPage.label;"
|
||||
command="cmd_zotero_newItemFromCurrentPage"/>
|
||||
<menuitem id="zotero-context-add-to-current-note" class="menu-iconic"
|
||||
label="&zotero.contextMenu.addTextToCurrentNote;" hidden="true"
|
||||
oncommand="ZoteroPane.addSelectedTextToCurrentNote()"/>
|
||||
<menuitem id="zotero-context-add-to-new-note" class="menu-iconic"
|
||||
label="&zotero.contextMenu.addTextToNewNote;" hidden="true"
|
||||
oncommand="ZoteroPane.createItemAndNoteFromSelectedText()"/>
|
||||
<menuitem id="zotero-context-save-link-as-item" class="menu-iconic"
|
||||
label="&zotero.contextMenu.saveLinkAsItem;" hidden="true"
|
||||
oncommand="ZoteroPane.addItemFromURL(window.gContextMenu.linkURL, 'temporaryPDFHack')"/>
|
||||
<menuitem id="zotero-context-save-image-as-item" class="menu-iconic"
|
||||
label="&zotero.contextMenu.saveImageAsItem;" hidden="true"
|
||||
oncommand="ZoteroPane.addItemFromURL(window.gContextMenu.onImage ? (window.gContextMenu.mediaURL ? window.gContextMenu.mediaURL : window.gContextMenu.imageURL) : window.gContextMenu.bgImageURL, 'artwork')"/>
|
||||
</menupopup>
|
||||
</menu>
|
||||
</popup>
|
||||
|
||||
<stack id="zotero-pane-stack">
|
||||
<!-- Barrier to prevent tabbing into Zotero pane when busy -->
|
||||
<box id="zotero-pane-tab-catcher-top" hidden="true" align="center" pack="center" style="opacity: 0">
|
||||
<checkbox/>
|
||||
</box>
|
||||
|
||||
<vbox id="zotero-pane"
|
||||
onkeydown="ZoteroPane_Local.handleKeyDown(event, this.id)"
|
||||
onkeyup="ZoteroPane_Local.handleKeyUp(event, this.id)"
|
||||
|
@ -114,38 +84,12 @@
|
|||
<menupopup>
|
||||
<menuitem id="zotero-tb-feed-add-fromURL" label="&zotero.toolbar.feeds.new.fromURL;"
|
||||
command="cmd_zotero_newFeed_fromURL"/>
|
||||
<menuitem id="zotero-tb-feed-add-fromPage" label="&zotero.toolbar.feeds.new.fromPage;"
|
||||
oncommand="ZoteroPane_Local.newFeedFromPage()" observes="singleFeedMenuitemState"/>
|
||||
<menu id="zotero-tb-feed-add-fromPage-menu" label="&zotero.toolbar.feeds.new.fromPage;"
|
||||
observes="multipleFeedsMenuState">
|
||||
<menupopup oncommand="ZoteroPane_Local.newFeedFromPage(event)"
|
||||
onpopupshowing="FeedHandler.buildFeedList(event.target)"/>
|
||||
</menu>
|
||||
<menuitem id="zotero-tb-feed-add-fromOPML" label="&zotero.toolbar.feeds.new.fromOPML;"
|
||||
oncommand="ZoteroPane_Local.importFeedsFromOPML()"/>
|
||||
</menupopup>
|
||||
</menu>
|
||||
</menupopup>
|
||||
</toolbarbutton>
|
||||
<spacer id="zotero-tb-actions-menu-separator" flex="1" hidden="true"/>
|
||||
<toolbarbutton id="zotero-tb-actions-menu" class="zotero-tb-button" tooltiptext="&zotero.toolbar.actions.label;" type="menu" hidden="true">
|
||||
<menupopup id="zotero-tb-actions-popup">
|
||||
<menuitem id="zotero-tb-actions-import" label="&zotero.toolbar.import.label;" command="cmd_zotero_import"/>
|
||||
<menuitem id="zotero-tb-actions-import-clipboard" label="&zotero.toolbar.importFromClipboard;" command="cmd_zotero_importFromClipboard"/>
|
||||
<menuitem id="zotero-tb-actions-export" label="&zotero.toolbar.export.label;" command="cmd_zotero_exportLibrary"/>
|
||||
<menuitem id="zotero-tb-actions-rtfScan" label="&zotero.toolbar.rtfScan.label;" command="cmd_zotero_rtfScan"/>
|
||||
<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;" command="cmd_zotero_createTimeline"/>
|
||||
<menuseparator id="zotero-tb-actions-separator"/>
|
||||
<menuitem id="zotero-tb-actions-prefs" label="&zotero.toolbar.preferences.label;"
|
||||
oncommand="ZoteroPane_Local.openPreferences()"/>
|
||||
<menuitem id="zotero-tb-actions-reportErrors" command="cmd_zotero_reportErrors" disabled="true"/>
|
||||
<menuitem id="zotero-tb-actions-support" label="&zotero.toolbar.supportAndDocumentation;" oncommand="ZoteroPane.loadURI('http://www.zotero.org/support/', {'metaKey':true, 'shiftKey':true})"/>
|
||||
<menuitem id="zotero-tb-actions-about" label="&zotero.toolbar.about.label;" oncommand="ZoteroPane_Local.openAboutDialog()"/>
|
||||
</menupopup>
|
||||
</toolbarbutton>
|
||||
</hbox>
|
||||
|
||||
<hbox id="zotero-items-toolbar" align="center">
|
||||
|
@ -197,8 +141,6 @@
|
|||
</toolbarbutton>
|
||||
<toolbarbutton id="zotero-tb-attachment-add" class="zotero-tb-button" tooltiptext="&zotero.items.menu.attach;" type="menu">
|
||||
<menupopup onpopupshowing="ZoteroPane_Local.updateAttachmentButtonMenu(this)">
|
||||
<menuitem class="menuitem-iconic zotero-menuitem-attachments-snapshot standalone-no-display" 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 standalone-no-display" 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="&zotero.items.menu.attach.file;" oncommand="var itemID = ZoteroPane_Local.getSelectedItems()[0].id; ZoteroPane_Local.addAttachmentFromDialog(false, itemID);"/>
|
||||
<menuitem class="menuitem-iconic zotero-menuitem-attachments-link" label="&zotero.items.menu.attach.fileLink;" oncommand="var itemID = ZoteroPane_Local.getSelectedItems()[0].id; ZoteroPane_Local.addAttachmentFromDialog(true, itemID);" id="zotero-tb-attachment-add-file-link"/>
|
||||
|
@ -305,8 +247,6 @@
|
|||
<menuitem class="menuitem-iconic zotero-menuitem-attach-note" label="&zotero.items.menu.attach.note;" oncommand="ZoteroPane_Local.newNote(false, this.parentNode.getAttribute('itemKey'))"/>
|
||||
<menu class="menu-iconic zotero-menuitem-attach" label="&zotero.items.menu.attach;">
|
||||
<menupopup id="zotero-add-attachment-popup">
|
||||
<menuitem class="menuitem-iconic zotero-menuitem-attachments-snapshot standalone-no-display" 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 standalone-no-display" 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);"/>
|
||||
|
|
|
@ -31,8 +31,6 @@
|
|||
<!ENTITY zotero.preferences.autoUpdate "Automatically check for updated translators and styles">
|
||||
<!ENTITY zotero.preferences.updateNow "Update now">
|
||||
<!ENTITY zotero.preferences.reportTranslationFailure "Report broken site translators">
|
||||
<!ENTITY zotero.preferences.zoteroDotOrgVersionHeader "Allow zotero.org to customize content based on current Zotero version">
|
||||
<!ENTITY zotero.preferences.zoteroDotOrgVersionHeader.tooltip "If enabled, the current Zotero version will be included in HTTP requests to zotero.org.">
|
||||
<!ENTITY zotero.preferences.parseRISRefer "Use Zotero for downloaded BibTeX/RIS/Refer files">
|
||||
<!ENTITY zotero.preferences.automaticTags "Automatically tag items with keywords and subject headings">
|
||||
<!ENTITY zotero.preferences.trashAutoEmptyDaysPre "Automatically remove items in the trash deleted more than">
|
||||
|
|
|
@ -41,11 +41,6 @@
|
|||
<!ENTITY zotero.upgrade.changeLogLink "the changelog">
|
||||
<!ENTITY zotero.upgrade.changeLogAfterLink "to find out what's new.">
|
||||
|
||||
<!ENTITY zotero.contextMenu.addTextToCurrentNote "Add Selection to Zotero Note">
|
||||
<!ENTITY zotero.contextMenu.addTextToNewNote "Create Zotero Item and Note from Selection">
|
||||
<!ENTITY zotero.contextMenu.saveLinkAsItem "Save Link As Zotero Item">
|
||||
<!ENTITY zotero.contextMenu.saveImageAsItem "Save Image As Zotero Item">
|
||||
|
||||
<!ENTITY zotero.tabs.info.label "Info">
|
||||
<!ENTITY zotero.tabs.notes.label "Notes">
|
||||
<!ENTITY zotero.tabs.attachments.label "Attachments">
|
||||
|
@ -92,8 +87,6 @@
|
|||
<!ENTITY zotero.items.menu.showInLibrary "Show in Library">
|
||||
<!ENTITY zotero.items.menu.attach.note "Add Note">
|
||||
<!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…">
|
||||
|
@ -109,7 +102,6 @@
|
|||
|
||||
<!ENTITY zotero.toolbar.newItem.label "New Item">
|
||||
<!ENTITY zotero.toolbar.moreItemTypes.label "More">
|
||||
<!ENTITY zotero.toolbar.newItemFromPage.label "Create Web Page Item from Current Page">
|
||||
<!ENTITY zotero.toolbar.lookup.label "Add Item(s) by Identifier">
|
||||
<!ENTITY zotero.toolbar.removeItem.label "Remove Item…">
|
||||
<!ENTITY zotero.toolbar.newLibrary.label "New Library">
|
||||
|
@ -135,7 +127,6 @@
|
|||
|
||||
<!ENTITY zotero.toolbar.feeds.new "New Feed">
|
||||
<!ENTITY zotero.toolbar.feeds.new.fromURL "From URL…">
|
||||
<!ENTITY zotero.toolbar.feeds.new.fromPage "From Page…">
|
||||
<!ENTITY zotero.toolbar.feeds.new.fromOPML "From OPML…">
|
||||
<!ENTITY zotero.toolbar.feeds.refresh "Refresh Feed">
|
||||
<!ENTITY zotero.toolbar.feeds.edit "Edit Feed…">
|
||||
|
@ -325,9 +316,6 @@
|
|||
<!ENTITY zotero.file.choose.label "Choose File…">
|
||||
<!ENTITY zotero.file.noneSelected.label "No file selected">
|
||||
|
||||
<!ENTITY zotero.downloadManager.label "Save to Zotero">
|
||||
<!ENTITY zotero.downloadManager.saveToLibrary.description "Attachments cannot be saved to the currently selected library. This item will be saved to your library instead.">
|
||||
|
||||
<!ENTITY zotero.attachLink.title "Attach Link to URI">
|
||||
<!ENTITY zotero.attachLink.label.link "Link:">
|
||||
<!ENTITY zotero.attachLink.label.title "Title:">
|
||||
|
|
|
@ -571,18 +571,11 @@ fileTypes.video = Video
|
|||
fileTypes.presentation = Presentation
|
||||
fileTypes.document = Document
|
||||
|
||||
save.attachment = Saving Snapshot…
|
||||
save.link = Saving Link…
|
||||
save.link.error = An error occurred while saving this link.
|
||||
save.error.cannotMakeChangesToCollection = You cannot make changes to the currently selected collection.
|
||||
save.error.cannotAddFilesToCollection = You cannot add files to the currently selected collection.
|
||||
save.error.cannotAddToMyPublications = You cannot save items directly to My Publications. To add items, drag them from elsewhere in your library.
|
||||
save.error.cannotAddToFeed = You cannot save items to feeds.
|
||||
|
||||
ingester.saveToZotero = Save to Zotero
|
||||
ingester.saveToZoteroUsing = Save to Zotero using "%S"
|
||||
ingester.saveToZoteroAsWebPageWithSnapshot = Save to Zotero as Web Page (with snapshot)
|
||||
ingester.saveToZoteroAsWebPageWithoutSnapshot = Save to Zotero as Web Page (without snapshot)
|
||||
ingester.scraping = Saving Item…
|
||||
ingester.scrapingTo = Saving to
|
||||
ingester.scrapeComplete = Item Saved
|
||||
|
@ -591,10 +584,6 @@ ingester.scrapeErrorDescription = An error occurred while saving this item. Chec
|
|||
ingester.scrapeErrorDescription.linkText = Troubleshooting Translator Issues
|
||||
ingester.scrapeErrorDescription.previousError = The saving process failed due to a previous Zotero error.
|
||||
|
||||
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
|
||||
|
||||
ingester.importFile.title = Import File
|
||||
ingester.importFile.text = Do you want to import the file "%S"?
|
||||
ingester.importFile.intoNewCollection = Import into new collection
|
||||
|
@ -919,9 +908,6 @@ sync.error.passwordNotSet = Password not set
|
|||
sync.error.invalidLogin = Invalid username or password
|
||||
sync.error.invalidLogin.text = The Zotero sync server did not accept your username and password.\n\nPlease check that you have entered your zotero.org login information correctly in the Zotero sync preferences.
|
||||
sync.error.enterPassword = Please enter a password.
|
||||
sync.error.loginManagerInaccessible = Zotero cannot access your login information.
|
||||
sync.error.checkMasterPassword = If you are using a master password in %S, make sure you have entered it successfully.
|
||||
sync.error.corruptedLoginManager = This could also be due to a corrupted %1$S logins database. To check, close %1$S, remove cert8.db, key3.db, and logins.json from your %1$S profile directory, and re-enter your Zotero login information in the Sync pane of the Zotero preferences.
|
||||
sync.error.loginManagerCorrupted1 = Zotero cannot access your login information, possibly due to a corrupted %S logins database.
|
||||
sync.error.loginManagerCorrupted2 = Close %1$S, remove cert8.db, key3.db, and logins.json from your %2$S profile directory, and re-enter your Zotero login information in the Sync pane of the Zotero preferences.
|
||||
sync.error.syncInProgress = A sync operation is already in progress.
|
||||
|
@ -1138,8 +1124,6 @@ standalone.updateMessage = A recommended update is available, but you do not h
|
|||
|
||||
connector.name = %S Connector
|
||||
connector.error.title = Zotero Connector Error
|
||||
connector.standaloneOpen = Your database cannot be accessed because Zotero Standalone is currently open. Please view your items in Zotero Standalone.
|
||||
connector.loadInProgress = Zotero Standalone was launched but is not accessible. If you experienced an error opening Zotero Standalone, restart Firefox.
|
||||
|
||||
firstRunGuidance.authorMenu = Zotero lets you specify editors and translators, too. You can turn an author into an editor or translator by selecting from this menu.
|
||||
firstRunGuidance.quickFormat = Type a title or author to search for a reference.\n\nAfter you've made your selection, click the bubble or press Ctrl-\u2193 to add page numbers, prefixes, or suffixes. You can also include a page number along with your search terms to add it directly.\n\nYou can edit citations directly in the word processor document.
|
||||
|
|
Before Width: | Height: | Size: 657 B |
Before Width: | Height: | Size: 530 B |
Before Width: | Height: | Size: 557 B |
Before Width: | Height: | Size: 788 B |
Before Width: | Height: | Size: 927 B |
Before Width: | Height: | Size: 845 B |
Before Width: | Height: | Size: 976 B |
|
@ -383,11 +383,6 @@
|
|||
}
|
||||
|
||||
|
||||
#zotero-tb-actions-menu
|
||||
{
|
||||
list-style-image: url('chrome://zotero/skin/cog.png');
|
||||
}
|
||||
|
||||
#zotero-tb-add
|
||||
{
|
||||
list-style-image: url('chrome://zotero/skin/toolbar-item-add.png');
|
||||
|
@ -513,11 +508,6 @@
|
|||
list-style-image: url('chrome://zotero/skin/treeitem-attachment-link.png');
|
||||
}
|
||||
|
||||
.zotero-menuitem-attachments-snapshot
|
||||
{
|
||||
list-style-image: url('chrome://zotero/skin/treeitem-attachment-snapshot.png');
|
||||
}
|
||||
|
||||
.zotero-menuitem-attachments-web-link
|
||||
{
|
||||
list-style-image: url('chrome://zotero/skin/treeitem-attachment-web-link.png');
|
||||
|
@ -719,41 +709,6 @@
|
|||
background-image: none;
|
||||
}
|
||||
|
||||
#zotero-annotate-tb-add
|
||||
{
|
||||
list-style-image: url('chrome://zotero/skin/annotate-add.png');
|
||||
}
|
||||
|
||||
#zotero-annotate-tb-collapse
|
||||
{
|
||||
list-style-image: url('chrome://zotero/skin/annotate-collapse.png');
|
||||
}
|
||||
|
||||
#zotero-annotate-tb-highlight
|
||||
{
|
||||
list-style-image: url('chrome://zotero/skin/annotate-highlight.png');
|
||||
}
|
||||
|
||||
#zotero-annotate-tb-unhighlight
|
||||
{
|
||||
list-style-image: url('chrome://zotero/skin/annotate-unhighlight.png');
|
||||
}
|
||||
|
||||
#zotero-annotate-tb-add[tool-active=true]
|
||||
{
|
||||
list-style-image: url('chrome://zotero/skin/annotate-add-selected.png');
|
||||
}
|
||||
|
||||
#zotero-annotate-tb-highlight[tool-active=true]
|
||||
{
|
||||
list-style-image: url('chrome://zotero/skin/annotate-highlight-selected.png');
|
||||
}
|
||||
|
||||
#zotero-annotate-tb-unhighlight[tool-active=true]
|
||||
{
|
||||
list-style-image: url('chrome://zotero/skin/annotate-unhighlight-selected.png');
|
||||
}
|
||||
|
||||
#zotero-toolbar
|
||||
{
|
||||
visibility: visible !important;
|
||||
|
@ -783,7 +738,6 @@
|
|||
#zotero-tb-collection-add { list-style-image: url('chrome://zotero/skin/toolbar-collection-add@2x.png'); }
|
||||
.zotero-menuitem-new-feed { list-style-image: url('chrome://zotero/skin/toolbar-feed-add@2x.png'); }
|
||||
#zotero-tb-library-add-menu { list-style-image: url('chrome://zotero/skin/library_add@2x.png'); }
|
||||
#zotero-tb-actions-menu { list-style-image: url('chrome://zotero/skin/cog@2x.png'); }
|
||||
#zotero-tb-add { list-style-image: url('chrome://zotero/skin/toolbar-item-add@2x.png'); }
|
||||
#zotero-tb-lookup { list-style-image: url('chrome://zotero/skin/toolbar-lookup@2x.png'); }
|
||||
#zotero-tb-attachment-add { list-style-image: url('chrome://zotero/skin/attach@2x.png'); }
|
||||
|
|
|
@ -21,123 +21,6 @@
|
|||
padding:0;
|
||||
}
|
||||
|
||||
/*
|
||||
*
|
||||
* Toolbar icons
|
||||
*
|
||||
*/
|
||||
#zotero-toolbar-buttons[cui-areatype=toolbar] {
|
||||
height: 24px;
|
||||
}
|
||||
|
||||
#zotero-toolbar-main-button,
|
||||
#zotero-toolbar-main-button-single {
|
||||
list-style-image: url("chrome://zotero-platform/content/zotero-z-16px-australis.png");
|
||||
}
|
||||
|
||||
@media (min-resolution: 1.25dppx) {
|
||||
#zotero-toolbar-main-button,
|
||||
#zotero-toolbar-main-button-single {
|
||||
list-style-image: url("chrome://zotero-platform/content/zotero-z-32px-australis.png");
|
||||
}
|
||||
}
|
||||
|
||||
#zotero-toolbar-save-button,
|
||||
#zotero-toolbar-save-button-single {
|
||||
list-style-image: url("chrome://zotero/skin/treeitem-webpage.png");
|
||||
}
|
||||
|
||||
#zotero-toolbar-main-button[cui-areatype="menu-panel"],
|
||||
#zotero-toolbar-main-button-single[cui-areatype="menu-panel"],
|
||||
toolbarpaletteitem[place="palette"] #zotero-toolbar-main-button,
|
||||
toolbarpaletteitem[place="palette"] #zotero-toolbar-main-button-single {
|
||||
list-style-image: url("chrome://zotero/skin/zotero-z-32px-australis.svg");
|
||||
}
|
||||
|
||||
#zotero-toolbar-save-button[cui-areatype="menu-panel"],
|
||||
#zotero-toolbar-save-button-single[cui-areatype="menu-panel"],
|
||||
toolbarpaletteitem[place="palette"] #zotero-toolbar-save-button,
|
||||
toolbarpaletteitem[place="palette"] #zotero-toolbar-save-button-single {
|
||||
list-style-image: url("chrome://zotero/skin/treeitem-webpage@2x.png");
|
||||
}
|
||||
|
||||
/* Show single icon for combo buttons in palette */
|
||||
toolbarpaletteitem[place="palette"] #zotero-toolbar-buttons separator,
|
||||
toolbarpaletteitem[place="palette"] #zotero-toolbar-buttons #zotero-toolbar-save-button {
|
||||
display:none;
|
||||
}
|
||||
|
||||
/* Alterations for overflow panel */
|
||||
#zotero-toolbar-buttons[overflowedItem=true] {
|
||||
padding: 0 6px;
|
||||
height: 36px;
|
||||
}
|
||||
|
||||
#zotero-toolbar-main-button-single[overflowedItem=true] .toolbarbutton-text,
|
||||
#zotero-toolbar-save-button-single[overflowedItem=true] .toolbarbutton-text {
|
||||
margin-left: 2px !important;
|
||||
}
|
||||
|
||||
#zotero-toolbar-buttons[overflowedItem=true]:not(:hover) {
|
||||
border: 1px solid transparent;
|
||||
}
|
||||
|
||||
#zotero-toolbar-buttons[overflowedItem=true] #zotero-toolbar-main-button {
|
||||
min-width: unset;
|
||||
margin-right: 8px;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
#zotero-toolbar-buttons[overflowedItem=true] #zotero-toolbar-main-button .toolbarbutton-text {
|
||||
display: none;
|
||||
margin-left: 1px;
|
||||
}
|
||||
|
||||
#zotero-toolbar-buttons[overflowedItem=true] #zotero-toolbar-main-button:hover {
|
||||
background: unset;
|
||||
}
|
||||
|
||||
#zotero-toolbar-buttons[overflowedItem=true] #zotero-toolbar-save-button::before {
|
||||
content: "";
|
||||
display: -moz-box;
|
||||
width: 1px;
|
||||
height: 18px;
|
||||
-moz-margin-end: 0px;
|
||||
background-image: linear-gradient(hsla(210,54%,20%,.2) 0, hsla(210,54%,20%,.2) 18px);
|
||||
background-clip: padding-box;
|
||||
background-position: center;
|
||||
background-repeat: no-repeat;
|
||||
background-size: 1px 18px;
|
||||
box-shadow: 0 0 0 1px hsla(0,0%,100%,.2);
|
||||
}
|
||||
|
||||
#zotero-toolbar-buttons[overflowedItem=true] #zotero-toolbar-save-button {
|
||||
max-width: unset;
|
||||
margin: 0 0 0 -1px !important;
|
||||
background: unset;
|
||||
}
|
||||
|
||||
#zotero-toolbar-buttons[overflowedItem=true] #zotero-toolbar-save-button toolbarbutton {
|
||||
margin-left: 8px;
|
||||
}
|
||||
|
||||
#zotero-toolbar-buttons[overflowedItem=true] #zotero-toolbar-save-button > .toolbarbutton-menubutton-dropmarker,
|
||||
#zotero-toolbar-save-button-single[overflowedItem=true] > .toolbarbutton-menubutton-dropmarker {
|
||||
padding-left: 3px;
|
||||
padding-right: 6px;
|
||||
}
|
||||
|
||||
|
||||
/* Show webpage icon in gray when no translators */
|
||||
#zotero-toolbar-save-button:not(.translate),
|
||||
#zotero-toolbar-save-button-single:not(.translate),
|
||||
#zotero-toolbar-save-button[disabled="true"],
|
||||
#zotero-toolbar-save-button-single[disabled="true"] {
|
||||
filter: grayscale(100%);
|
||||
}
|
||||
/* End toolbar icons */
|
||||
|
||||
|
||||
/* Bindings */
|
||||
textbox[multiline="true"][type="timed"]
|
||||
{
|
||||
|
@ -470,7 +353,6 @@ label.zotero-text-link {
|
|||
|
||||
/* BEGIN 2X BLOCK -- DO NOT EDIT MANUALLY -- USE 2XIZE */
|
||||
@media (min-resolution: 1.25dppx) {
|
||||
#zotero-toolbar-save-button,#zotero-toolbar-save-button-single { list-style-image: url("chrome://zotero/skin/treeitem-webpage@2x.png"); }
|
||||
.zotero-clicky-minus { background: url(chrome://zotero/skin/minus@2x.png) center/auto 18px no-repeat !important; }
|
||||
.zotero-clicky-plus { background: url(chrome://zotero/skin/plus@2x.png) center/auto 18px no-repeat !important; }
|
||||
.zotero-clicky-minus:not([disabled=true]):active { background-image: url('chrome://zotero/skin/minus-active@2x.png') !important; }
|
||||
|
|
|
@ -340,14 +340,6 @@ function ZoteroService() {
|
|||
makeZoteroContext(false);
|
||||
zContext.Zotero.init(zInitOptions)
|
||||
.catch(function (e) {
|
||||
if (e === "ZOTERO_SHOULD_START_AS_CONNECTOR") {
|
||||
// if Zotero should start as a connector, reload it
|
||||
return zContext.Zotero.shutdown()
|
||||
.then(function() {
|
||||
makeZoteroContext(true);
|
||||
return zContext.Zotero.init(zInitOptions);
|
||||
})
|
||||
}
|
||||
dump(e + "\n\n");
|
||||
Components.utils.reportError(e);
|
||||
if (!zContext.Zotero.startupError) {
|
||||
|
|
|
@ -20,14 +20,11 @@ pref("extensions.zotero.debug.store.submitSize",10000000);
|
|||
pref("extensions.zotero.debug.store.submitLineLength",10000);
|
||||
pref("extensions.zotero.debug.level",5);
|
||||
pref("extensions.zotero.automaticScraperUpdates",true);
|
||||
pref("extensions.zotero.zoteroDotOrgVersionHeader", true);
|
||||
pref("extensions.zotero.triggerProxyAuthentication", true);
|
||||
// Proxy auth URLs should respond successfully to HEAD requests over HTTP and HTTPS (in case of forced HTTPS requests)
|
||||
pref("extensions.zotero.proxyAuthenticationURLs", "https://www.acm.org,https://www.ebscohost.com,https://www.sciencedirect.com,https://ieeexplore.ieee.org,https://www.jstor.org,http://www.ovid.com,https://link.springer.com,https://www.tandfonline.com");
|
||||
pref("extensions.zotero.browserContentContextMenu", true);
|
||||
pref("extensions.zotero.openURL.resolver","http://worldcatlibraries.org/registry/gateway");
|
||||
pref("extensions.zotero.openURL.version","1.0");
|
||||
pref("extensions.zotero.parseEndNoteMIMETypes",true);
|
||||
pref("extensions.zotero.automaticSnapshots",true);
|
||||
pref("extensions.zotero.downloadAssociatedFiles",true);
|
||||
pref("extensions.zotero.findPDFs.resolvers", '[]');
|
||||
|
@ -179,13 +176,6 @@ pref("extensions.zotero.purge.tags", false);
|
|||
// Zotero pane persistent data
|
||||
pref("extensions.zotero.pane.persist", "");
|
||||
|
||||
// Domains allowed to import, separated by a semicolon
|
||||
pref("extensions.zotero.ingester.allowedSites", "");
|
||||
|
||||
// Connector
|
||||
pref("extensions.zotero.connector.repo.lastCheck.localTime", 0);
|
||||
pref("extensions.zotero.connector.repo.lastCheck.repoTime", 0);
|
||||
|
||||
// Custom file handlers
|
||||
pref("extensions.zotero.fileHandler.pdf", "");
|
||||
|
||||
|
|
|
@ -577,8 +577,6 @@ var removeDir = Zotero.Promise.coroutine(function* (dir) {
|
|||
* any that were set at startup
|
||||
*/
|
||||
async function resetDB(options = {}) {
|
||||
// Hack to avoid CustomizableUI warnings in console from icon.js
|
||||
var toolbarIconAdded = Zotero.toolbarIconAdded;
|
||||
resetPrefs();
|
||||
|
||||
if (options.thisArg) {
|
||||
|
@ -593,7 +591,6 @@ async function resetDB(options = {}) {
|
|||
false,
|
||||
options
|
||||
);
|
||||
Zotero.toolbarIconAdded = toolbarIconAdded;
|
||||
await Zotero.Schema.schemaUpdatePromise;
|
||||
initPDFToolsPath();
|
||||
}
|
||||
|
|
|
@ -1,181 +0,0 @@
|
|||
"use strict";
|
||||
|
||||
describe("Zotero_Browser", function () {
|
||||
var win, collection;
|
||||
|
||||
before(function* () {
|
||||
this.timeout(60000);
|
||||
yield Zotero.Translators.init();
|
||||
|
||||
win = yield loadBrowserWindow();
|
||||
collection = yield createDataObject('collection');
|
||||
});
|
||||
|
||||
after(function* () {
|
||||
win.close();
|
||||
});
|
||||
|
||||
afterEach(function () {
|
||||
Zotero.ProgressWindowSet.closeAll();
|
||||
})
|
||||
|
||||
var waitForTranslateIcon = Zotero.Promise.coroutine(function* () {
|
||||
var button = win.document.getElementById('zotero-toolbar-save-button');
|
||||
if (button.classList.contains('translate')) {
|
||||
return;
|
||||
}
|
||||
Zotero.debug("Waiting for translator icon");
|
||||
do {
|
||||
yield Zotero.Promise.delay(50);
|
||||
}
|
||||
while (!button.classList.contains('translate'));
|
||||
});
|
||||
|
||||
|
||||
it("should save webpage to current collection", function* () {
|
||||
var uri = OS.Path.join(getTestDataDirectory().path, "snapshot", "index.html");
|
||||
var deferred = Zotero.Promise.defer();
|
||||
win.Zotero_Browser.addDetectCallback(() => deferred.resolve());
|
||||
win.loadURI(uri);
|
||||
yield deferred.promise;
|
||||
|
||||
yield loadZoteroPane(win);
|
||||
var collection = yield createDataObject('collection');
|
||||
|
||||
var promise = waitForItemEvent('add');
|
||||
yield win.Zotero_Browser.scrapeThisPage();
|
||||
var ids = yield promise;
|
||||
var items = Zotero.Items.get(ids);
|
||||
assert.lengthOf(items, 1);
|
||||
assert.equal(Zotero.ItemTypes.getName(items[0].itemTypeID), 'webpage');
|
||||
assert.isTrue(collection.hasItem(items[0].id));
|
||||
})
|
||||
|
||||
it("should save journal article to current collection", function* () {
|
||||
var uri = OS.Path.join(
|
||||
getTestDataDirectory().path, "metadata", "journalArticle-single.html"
|
||||
);
|
||||
var deferred = Zotero.Promise.defer();
|
||||
win.Zotero_Browser.addDetectCallback(() => deferred.resolve());
|
||||
win.loadURI(uri);
|
||||
yield deferred.promise;
|
||||
|
||||
yield loadZoteroPane(win);
|
||||
var collection = yield createDataObject('collection');
|
||||
|
||||
var promise = waitForItemEvent('add');
|
||||
yield win.Zotero_Browser.scrapeThisPage();
|
||||
var ids = yield promise;
|
||||
var items = Zotero.Items.get(ids);
|
||||
assert.lengthOf(items, 1);
|
||||
assert.equal(Zotero.ItemTypes.getName(items[0].itemTypeID), 'journalArticle');
|
||||
assert.isTrue(collection.hasItem(items[0].id));
|
||||
})
|
||||
|
||||
it("should save book with child note to current collection", function* () {
|
||||
var uri = OS.Path.join(
|
||||
getTestDataDirectory().path, "book_and_child_note.ris"
|
||||
);
|
||||
var deferred = Zotero.Promise.defer();
|
||||
win.Zotero_Browser.addDetectCallback(() => deferred.resolve());
|
||||
win.loadURI(uri);
|
||||
yield deferred.promise;
|
||||
|
||||
// Detection runs twice for local files, so wait for the icon to actually appear
|
||||
yield waitForTranslateIcon();
|
||||
|
||||
yield loadZoteroPane(win);
|
||||
var collection = yield createDataObject('collection');
|
||||
|
||||
var promise = waitForItemEvent('add');
|
||||
yield win.Zotero_Browser.scrapeThisPage();
|
||||
|
||||
var ids = yield promise;
|
||||
var items = Zotero.Items.get(ids);
|
||||
assert.lengthOf(items, 2);
|
||||
assert.equal(Zotero.ItemTypes.getName(items[0].itemTypeID), 'book');
|
||||
assert.isTrue(collection.hasItem(items[0].id));
|
||||
assert.equal(Zotero.ItemTypes.getName(items[1].itemTypeID), 'note');
|
||||
});
|
||||
|
||||
it("should save PDF to library root", function* () {
|
||||
var uri = OS.Path.join(getTestDataDirectory().path, "test.pdf");
|
||||
var deferred = Zotero.Promise.defer();
|
||||
win.Zotero_Browser.addDetectCallback(() => deferred.resolve());
|
||||
win.loadURI(uri);
|
||||
yield deferred.promise;
|
||||
|
||||
yield loadZoteroPane(win);
|
||||
|
||||
var promise = waitForItemEvent('add');
|
||||
yield win.Zotero_Browser.scrapeThisPage();
|
||||
var ids = yield promise;
|
||||
var items = Zotero.Items.get(ids);
|
||||
assert.lengthOf(items, 1);
|
||||
assert.equal(Zotero.ItemTypes.getName(items[0].itemTypeID), 'attachment');
|
||||
assert.equal(items[0].getField('title'), 'test.pdf');
|
||||
assert.equal(items[0].attachmentContentType, 'application/pdf');
|
||||
assert.equal(Zotero.Attachments.linkModeToName(items[0].attachmentLinkMode), 'imported_url');
|
||||
});
|
||||
|
||||
it("should save PDF to current collection", function* () {
|
||||
var uri = OS.Path.join(getTestDataDirectory().path, "test.pdf");
|
||||
var deferred = Zotero.Promise.defer();
|
||||
win.Zotero_Browser.addDetectCallback(() => deferred.resolve());
|
||||
win.loadURI(uri);
|
||||
yield deferred.promise;
|
||||
|
||||
yield loadZoteroPane(win);
|
||||
var collection = yield createDataObject('collection');
|
||||
|
||||
var promise = waitForItemEvent('add');
|
||||
yield win.Zotero_Browser.scrapeThisPage();
|
||||
var ids = yield promise;
|
||||
var items = Zotero.Items.get(ids);
|
||||
assert.lengthOf(items, 1);
|
||||
assert.equal(Zotero.ItemTypes.getName(items[0].itemTypeID), 'attachment');
|
||||
assert.isTrue(collection.hasItem(items[0].id));
|
||||
});
|
||||
|
||||
it("shouldn't save webpage to My Publications", function* () {
|
||||
var uri = OS.Path.join(getTestDataDirectory().path, "snapshot", "index.html");
|
||||
var deferred = Zotero.Promise.defer();
|
||||
win.Zotero_Browser.addDetectCallback(() => deferred.resolve());
|
||||
win.loadURI(uri);
|
||||
yield deferred.promise;
|
||||
|
||||
yield loadZoteroPane(win);
|
||||
yield win.ZoteroPane.collectionsView.selectByID("P" + Zotero.Libraries.userLibraryID);
|
||||
|
||||
var promise = waitForDialog(function (dialog) {
|
||||
assert.include(
|
||||
dialog.document.documentElement.textContent,
|
||||
Zotero.getString('save.error.cannotAddToMyPublications')
|
||||
);
|
||||
});
|
||||
yield win.Zotero_Browser.scrapeThisPage();
|
||||
yield promise;
|
||||
})
|
||||
|
||||
it("shouldn't save journal article to My Publications", function* () {
|
||||
var uri = OS.Path.join(
|
||||
getTestDataDirectory().path, "metadata", "journalArticle-single.html"
|
||||
);
|
||||
var deferred = Zotero.Promise.defer();
|
||||
win.Zotero_Browser.addDetectCallback(() => deferred.resolve());
|
||||
win.loadURI(uri);
|
||||
yield deferred.promise;
|
||||
|
||||
yield loadZoteroPane(win);
|
||||
yield win.ZoteroPane.collectionsView.selectByID("P" + Zotero.Libraries.userLibraryID);
|
||||
|
||||
var promise = waitForDialog(function (dialog) {
|
||||
assert.include(
|
||||
dialog.document.documentElement.textContent,
|
||||
Zotero.getString('save.error.cannotAddToMyPublications')
|
||||
);
|
||||
}, false, 'chrome://zotero/content/progressWindow.xul');
|
||||
yield win.Zotero_Browser.scrapeThisPage();
|
||||
yield promise;
|
||||
})
|
||||
})
|
|
@ -41,7 +41,7 @@ describe("Zotero.QuickCopy", function() {
|
|||
})
|
||||
|
||||
it("should handle a chrome URL", function () {
|
||||
assert.deepEqual(Zotero.QuickCopy.getFormatFromURL('chrome://zotero/content/tab.xul'), quickCopyPref);
|
||||
assert.deepEqual(Zotero.QuickCopy.getFormatFromURL('chrome://zotero/content/foo.xul'), quickCopyPref);
|
||||
})
|
||||
})
|
||||
|
||||
|
|