diff --git a/.eslintrc.json b/.eslintrc.json
index f5b189b..505dad5 100644
--- a/.eslintrc.json
+++ b/.eslintrc.json
@@ -225,7 +225,7 @@
"prefer-arrow-callback": "off",
"prefer-const": "off",
"prefer-destructuring": "off",
- "prefer-named-capture-group": "error",
+ "prefer-named-capture-group": "off",
"prefer-numeric-literals": "error",
"prefer-object-spread": "error",
"prefer-promise-reject-errors": "error",
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 68b5bb2..5128e60 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,90 @@
-* In version 3.2.0b:
+* In version 4.0.1:
+ + Fixes for Zotero 7.1
+
+* In version 4.0.0:
+
+ + Fixes for Zotero 7.0
+ + New copy item IDs function
+
+* In version 3.10.0:
+
+ + Fixes for Zotero 5.0.97-beta and upcoming Zotero 6
+
+* In version 3.9.0:
+
+ + Fix Open Style Editor shortcut
+ + Add Open Run JavaScript window shortcut
+ + Add mdnotes shortcuts
+ + Update French translations
+
+* In version 3.8.1:
+
+ + Update French translations
+ + Fix ZotFile Quick Extract shortcut
+ + Fix show file shortcut
+
+* In version 3.8.0:
+
+ + Add find available PDFs shortcut
+
+* In version 3.7.0:
+
+ + Add ZotFile Quick Extract shortcut
+
+* In version 3.6.1:
+
+ + Update French locale
+
+* In version 3.6.0:
+
+ + Add "Paste item type" function for batch item type changes
+ + Update French locale
+ + Documentation updates
+
+* In version 3.5.0:
+
+ + Add "Open Zotero URI" function
+ + Allow arbitrary number of alt quick copy functions
+ + Fix "Retrieve metadata for PDF" shortcut
+ + Update French locale
+
+* In version 3.4.0:
+
+ + Added shortcut for pushing reference to TeXstudio with Better BibTeX
+ + Add "Advanced search" shortcut
+ + Add "Locate item" shortcut
+ + Add "Show Locate menu" shortcut
+ + Add tag selector shortcuts:
+ - Toggle displaying automatic tags
+ - Toggle displaying all tags
+ - Deselect all tags
+ - Focus search box
+
+* In version 3.3.3:
+
+ + Filter attachments by mode before trying to modify paths
+
+* In version 3.3.2:
+
+ + Fix mishandling of attachments with paths that did not match the old path pattern in the modify attachments function.
+
+* In version 3.3.1:
+
+ + Fix add tag shortcut for Zotero 5.0.78
+
+* In version 3.3.0:
+
+ + Added shortcut for ZotFile's move and rename attachment
+
+* In version 3.2.1:
+
+ + Compatibility updates for Zotero 5.0.75
+
+* In version 3.2.0:
+
+ + Drop support for Zotero as a Firefox addon and for Zotero 4.x
+ + Update item select link to newer format used by recent version of Zotero
+ Add functions to copy select links and web links to collections
+ Add copy/paste item field functions
diff --git a/Makefile b/Makefile
index 4968c3c..0d203fe 100644
--- a/Makefile
+++ b/Makefile
@@ -3,12 +3,11 @@ BLDDIR = build
LOCALES := $(shell ls i18n)
INTERNAL_READMES := $(patsubst %, addon/chrome/locale/%/zutilo/README.html, $(LOCALES))
-AMO_READMES := $(patsubst %, $(BLDDIR)/amo_readme/%/README.html, $(LOCALES))
# Necessary because zip copies leading directories if run from above targets
ABS_BLDDIR := $(shell realpath $(BLDDIR))
-all: xpi amo_readme
+all: xpi
0x0: $(BLDDIR)/zutilo.xpi
curl -F'file=@$(BLDDIR)/zutilo.xpi' https://0x0.st
@@ -26,25 +25,10 @@ addon/chrome/locale/%/zutilo/README.html:
$(BLDDIR)/internal_readme/$*/README.md > \
addon/chrome/locale/$*/zutilo/README.html
-amo_readme: $(AMO_READMES)
-
-$(BLDDIR)/amo_readme/%/README.html:
- @mkdir -p $(dir $@)
- scripts/substitute_relative_links \
- --link-root https://www.github.com/willsALMANJ/Zutilo/blob/master/i18n/$*/readme \
- i18n/$*/readme/README.md \
- $(BLDDIR)/amo_readme/$*/README.md
- pandoc -f markdown_strict -t html \
- $(BLDDIR)/amo_readme/$*/README.md > \
- $(BLDDIR)/amo_readme/$*/README.html
- # Strip tags not allowed on addons.mozilla.org
- sed -e 's/
//' -e 's#
#\n#' -e 's/h[1-9]>/strong>/g' -e 's#br />#\n#' \
- -i $(BLDDIR)/amo_readme/$*/README.html
-
clean:
rm -f $(BLDDIR)/zutilo.xpi
rm -f $(INTERNAL_READMES)
rm -f $(AMO_READMES)
rm -rf $(BLDDIR)/internal_readme/*
-.PHONY: all clean xpi amo_readme
+.PHONY: all clean xpi
diff --git a/README.md b/README.md
index 0cb2f26..33f4266 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,5 @@
# Zutilo
-Zutilo is a plugin for [Zotero](http://www.zotero.org/) (both the Firefox addon and the standalone client).
+Zutilo is a plugin for [Zotero](http://www.zotero.org/).
Zutilo adds several functions not available in base Zotero through extra menu items and keyboard shortcuts.
Here are some of Zutilo's features:
@@ -7,25 +7,33 @@ Here are some of Zutilo's features:
* Select and right-click to relate several items
* Copy items to the clipboard in several formats
* Keyboard shortcuts for editing items and focusing and hiding different elements of the Zotero user interface
-* Right-click to save link or document as an attachment to currently selected item (only for Zotero as a Firefox addon)
Zutilo strives to enable whatever Zotero workflow is desired and otherwise to get out of the way.
All of Zutilo's graphical elements can be disabled individually, so that unwanted features do not clutter the user interface.
-**NOTE:** As of version 3.0, Zutilo is distributed from the [GitHub releases page](https://github.com/willsALMANJ/Zutilo/releases).
-New updates will not be published to the location checked by previous versions of Zutilo (the Mozilla Add-ons page).
-To receive new Zutilo updates, please update to the latest version of Zutilo.
+> [!NOTE]
+> Zutilo is largely maintained by one person (@wshanks) who does not have much time for Zutilo any more.
+> @wshanks still uses Zotero but not as heavily and so has less need for the power user features of Zutilo.
+> Additional help adapting to new releases of Zotero and fixing other bugs is very welcome.
+> Without additional contributors, Zutilo may not be able to keep compatibility with future releases of Zotero.
+> As of Zotero version 7.0, some features of Zutilo, mainly keyboard shortcuts, no longer function.
+> There was also a long gap between the release of Zotero 7 and a release of Zutilo that could be installed with it.
## Installation
-Download the Zutilo `zutilo.xpi` file from [Zutilo's GitHub releases page](https://github.com/willsALMANJ/Zutilo/releases).
+Download the Zutilo `zutilo.xpi` file from [Zutilo's GitHub releases page](https://github.com/wshanks/Zutilo/releases).
Then go to Tools->Add-ons in Zotero Standalone.
Click on the gear button in the upper right area of the Add-ons Manager window that appears and choose "Install Add-on From File."
Then select the downloaded `zutilo.xpi` file.
+**NOTE for Firefox users:** Firefox treats `.xpi` files as Firefox add-ons and tries to install them.
+Rather than clicking on the `.xpi` file, you can try right-clicking and choosing to save the link as a file.
+In some cases (particularly on Linux), Firefox does not allow right-clicking and saving the `.xpi` link either.
+In that case, you must download it either with a different browser or with a command-line tool like `curl` or `wget`.
+
## Getting started
-Zutilo can be customized via its preferences window, which can reached either via the Firefox Addons Manager or the Zotero action menu (the gear icon).
+Zutilo can be customized via its preferences window, which can reached via the Zotero Addons Manager or the Tools menu.
### Zotero item menu
@@ -40,18 +48,7 @@ All of the functions that can appear in the item menu can also be called by keyb
Zutilo also provides some additional keyboard shortcut functions that are not available from the item menu.
By default, no keyboard shortcuts are defined.
A shortcut key combination can be set for each function in Zutilo's preferences.
-If the key combination is already assigned for another Firefox function, a warning will be displayed.
-
-### Firefox specific functions
-
-Zutilo adds entries to the Zotero address bar icon's menu for saving items into Zotero with the opposite attachment behavior from that set in Zotero's preferences.
-So if you have Zotero set to download attachments when saving an item, Zutilo will add an entry to save the item without attachments.
-The extra menu items can be disabled in Zutilo's preferences.
-
-Zutilo adds two entries to right-click menu in Firefox, one to save the current page as an attachment (most useful when the page is a pdf) and another to save a link as an attachment (if a link was right-clicked).
-These menu items appear the Zotero submenu of the Firefox right-click menu.
-In Zutilo's preferences, the menu items can be set to appear in the right-click menu directly (instead of the Zotero submenu) or can be disabled.
-Whether the attachment files are imported to Zotero or downloaded and linked to Zotero items can be also be set in Zutilo's preferences.
+If the key combination is already assigned for another function, a warning will be displayed.
## Usage notes
diff --git a/addon/bootstrap.js b/addon/bootstrap.js
index f8c9362..f3b0a06 100644
--- a/addon/bootstrap.js
+++ b/addon/bootstrap.js
@@ -5,23 +5,12 @@
"use strict";
/* global Components, Services */
-/* global Zutilo */
+/* global Zutilo, APP_SHUTDOWN */
const {classes: Cc, utils: Cu} = Components;
+var chromeHandle
Cu.import("resource://gre/modules/Services.jsm");
-const BOOTSTRAP_REASONS = [
- "", // the bootstrap reason is 1 based
- "APP_STARTUP",
- "APP_SHUTDOWN",
- "ADDON_ENABLE",
- "ADDON_DISABLE",
- "ADDON_INSTALL",
- "ADDON_UNINSTALL",
- "ADDON_UPGRADE",
- "ADDON_DOWNGRADE"
-];
-
// eslint-disable-next-line no-unused-vars
function install(data, reason) {
@@ -29,8 +18,19 @@ function install(data, reason) {
// eslint-disable-next-line no-unused-vars
function startup(data, reason) {
- Cu.import("chrome://zutilo/content/zutilo.jsm");
- Zutilo.init();
+ let aomStartup = Cc["@mozilla.org/addons/addon-manager-startup;1"].getService(Ci.amIAddonManagerStartup)
+ let manifestURI = Services.io.newURI(data.rootURI + "manifest.json");
+ chromeHandle = aomStartup.registerChrome(manifestURI, [
+ ["content", "zutilo", "chrome/content/zutilo/"],
+ ["locale", "zutilo", "en-US", "chrome/locale/en-US/zutilo/"],
+ ["locale", "zutilo", "de", "chrome/locale/de/zutilo/"],
+ ["locale", "zutilo", "es", "chrome/locale/es/zutilo/"],
+ ["locale", "zutilo", "fr", "chrome/locale/fr/zutilo/"],
+ ["locale", "zutilo", "zh-CN", "chrome/locale/zh-CN/zutilo/"]
+ ])
+
+ Cu.import("chrome://zutilo/content/zutilo.js");
+ Zutilo.init(data.rootURI, Zotero);
}
// eslint-disable-next-line no-unused-vars
@@ -44,9 +44,6 @@ function shutdown(data, reason) {
var tmpWin=windows.getNext();
tmpWin.ZutiloChrome.removeXUL();
- if (typeof tmpWin.ZutiloChrome.firefoxOverlay != 'undefined') {
- tmpWin.ZutiloChrome.firefoxOverlay.unload();
- }
if (typeof tmpWin.ZutiloChrome.zoteroOverlay != 'undefined') {
tmpWin.ZutiloChrome.zoteroOverlay.unload();
}
@@ -55,11 +52,13 @@ function shutdown(data, reason) {
}
Zutilo.cleanup();
+ chromeHandle.destruct()
+ chromeHandle = null
Cc["@mozilla.org/intl/stringbundle;1"].
getService(Components.interfaces.nsIStringBundleService).flushBundles();
- Cu.unload("chrome://zutilo/content/zutilo.jsm");
+ Cu.unload("chrome://zutilo/content/zutilo.js");
}
// eslint-disable-next-line no-unused-vars
diff --git a/addon/chrome/content/zutilo/firefoxOverlay.js b/addon/chrome/content/zutilo/firefoxOverlay.js
deleted file mode 100644
index d94159e..0000000
--- a/addon/chrome/content/zutilo/firefoxOverlay.js
+++ /dev/null
@@ -1,513 +0,0 @@
-/* Copyright 2012 Will Shanks.
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-'use strict';
-/* global gBrowser, window, document, Components, Services */
-/* global Zotero, Zotero_Browser */
-/* global Zutilo, ZutiloChrome */
-Components.utils.import('resource://gre/modules/Services.jsm');
-/******************************************/
-// Include core modules
-/******************************************/
-Components.utils.import('chrome://zutilo/content/zutilo.jsm');
-
-/******************************************/
-// Firefox overlay
-/******************************************/
-ZutiloChrome.firefoxOverlay = {
- warnedThisSession: false,
- cleanupQueue: [],
- isScraping: false,
- scrapeTimeout: null,
-
- init: function() {
- window.setTimeout(function() {
- if (typeof ZutiloChrome != 'undefined') {
- Zutilo.checkZoteroActiveAndCallIf(false,
- ZutiloChrome.firefoxOverlay,
- ZutiloChrome.firefoxOverlay.warnZoteroNotActive);
- var overlayFunc = function() {this.firefoxZoteroOverlay()}
- Zutilo.checkZoteroActiveAndCallIf(true,
- ZutiloChrome.firefoxOverlay,
- overlayFunc);
- }
- }, 500);
- },
-
- unload: function() {
- for (var index = 0; index < this.cleanupQueue.length; index++) {
- this.cleanupQueue[index]();
- }
- },
-
- warnZoteroNotActive: function() {
- var showWarn = Zutilo.Prefs.get('warnZoteroNotActive');
-
- if (showWarn && !this.warnedThisSession) {
- window.openDialog('chrome://zutilo/content/zoteroNotActive.xul',
- 'zutilo-zoteroNotActive-window', 'chrome,centerscreen');
- this.warnedThisSession = true;
- }
- },
-
- /**************************************************************************/
- // Load Firefox-specific overlay that is relevant only when Zotero is active
- /**************************************************************************/
- firefoxZoteroOverlay: function() {
- this.refreshContentAreaContextMenu = refreshContentAreaContextMenu;
- this.scrapeThisPage = scrapeThisPage
-
- setupContentAreaContextMenu()
- setupStatusPopup()
- },
-
- /**************************************************************************/
- // Attach link functions
- /**************************************************************************/
-
- /* Attach the file located at url to the currently selected item in Zotero.
-
- url: string with url to attach
- processType: string mode to use for processing the attachment. If
- unspecified, determine from Zutilo preferences and mimeType
- Possible values....
- Zotero: use Zotero's default import and filenaming.
- prompt: prompt the user for a file location, import attach with
- Zotero, and then move the attachment to the file location and
- change to linked file attachment
- ZotFile: import using Zotero and then pass the attachment to
- ZotFile.renameAttachment()
- */
- attachURLToCurrentItem: function(url, processType) {
- // Error check item selection and get Zotero item
- var zitems = ZutiloChrome.zoteroOverlay.getSelectedItems('regular');
- if (!ZutiloChrome.zoteroOverlay.checkItemNumber(zitems,
- 'regularSingle')) {
- return
- }
- var zitem = zitems[0];
-
- this.attachURLToItem(zitem, url, processType);
- },
-
- attachURLToItem: function(zitem, url, processType) {
- var allowedProcesses = ['prompt', 'Zotero', 'promptAfterOne'];
- if (allowedProcesses.indexOf(processType) == -1) {
- processType = Zutilo.Prefs.get('attachmentImportProcessType');
- }
-
- // Prompt if there is an existing non-snapshot attachment
- if (processType == 'promptAfterOne') {
- var attachments = Zotero.Items.get(zitem.getAttachments(false));
- var existingAttachments = false;
- // Check for existing non-snapshot attachments
- for (var index = 0; index < attachments.length; index++) {
- if (!(attachments[index].attachmentLinkMode ==
- Zotero.Attachments.LINK_MODE_IMPORTED_URL &&
- attachments[index].attachmentMIMEType !=
- 'application/pdf')) {
- existingAttachments = true;
- break
- }
- }
- if (existingAttachments) {
- processType = 'prompt';
- } else {
- processType = 'Zotero';
- }
- }
-
- function mimeCallback(mimeType, _hasNativeHandler) {
- function zoteroImport(attachmentCallback) {
- if (Zotero.version.split('.')[0] < 5) {
- // XXX: Legacy 4.0
- Zotero.Attachments.importFromURL(url, zitem.id, undefined,
- undefined,
- undefined, mimeType,
- undefined,
- attachmentCallback)
- } else {
- Zotero.Promise.coroutine(function*() {
- let attachmentItem =
- yield Zotero.Attachments.importFromURL(
- {url: url,
- parentItemID: zitem.id,
- contentType: mimeType})
- if (attachmentCallback !== null) {
- attachmentCallback(attachmentItem)
- }
- })()
- }
- }
-
- function moveAttachment(attachmentItem) {
- var nsIFilePicker = Components.interfaces.nsIFilePicker;
- var fp = Components.classes['@mozilla.org/filepicker;1']
- .createInstance(nsIFilePicker);
- var strName = 'zutilo.attachments.selectDestination';
- fp.init(window,
- Zutilo._bundle.GetStringFromName(strName),
- nsIFilePicker.modeSave);
- fp.appendFilters(nsIFilePicker.filterAll);
-
- var importedFile = attachmentItem.getFile();
- fp.defaultString = ZutiloChrome.firefoxOverlay.
- adjustZoteroExtension(url, importedFile.leafName)
-
- fp.open(function(result) {
- if (result == nsIFilePicker.returnOK ||
- result == nsIFilePicker.returnReplace) {
- // Move attachment file to chosen directory and
- // attach as linked file.
- importedFile.moveTo(fp.file.parent,
- fp.file.leafName);
- if (Zotero.version.split('.')[0] < 5) {
- // XXX: Legacy 4.0
- Zotero.Attachments.linkFromFile(fp.file,
- zitem.itemID)
- } else {
- Zotero.Attachments.
- linkFromFile({file: fp.file,
- parentItemID: zitem.itemID})
- }
- }
- if (Zotero.version.split('.')[0] < 5) {
- // XXX: Legacy 4.0
- attachmentItem.erase()
- } else {
- attachmentItem.eraseTx()
- }
- })
- }
-
- // Choose process type for mimeType
- if (processType == 'prompt') {
- // Prompt for file name and location
- zoteroImport(moveAttachment)
- } else if (processType == 'Zotero') {
- // Use Zotero importFromURL()
- zoteroImport(function() {});
- }
- }
-
- if (Zotero.version.split('.')[0] < 5) {
- // XXX: Legacy 4.0
- Zotero.MIME.getMIMETypeFromURL(url, mimeCallback)
- } else {
- Zotero.MIME.getMIMETypeFromURL(url).then(function(result) {
- mimeCallback(result[0], result[1])
- })
- }
- },
-
- adjustZoteroExtension: function(url, zoteroFileName) {
- /* Zotero compresses file extensions based on MIME type (e.g. all
- text files get converted to '.txt'. Here we try to put back the
- original extension if it can be guessed from the URL. We have to be
- conservative though because sometimes URL's are misleading (e.g. pdf's
- on arxiv.org whose urls don't include the 'pdf' part) and Zotero gets
- them right by looking at the MIME type. */
- var extensionPosition = url.lastIndexOf('.');
- var urlExtension =
- extensionPosition == -1 ? '' : url.substr(extensionPosition + 1);
- if (urlExtension.length == 3 || urlExtension.length == 4) {
- var re = new RegExp('[a-z]', 'i');
- if (re.test(urlExtension[0])) {
- zoteroFileName = zoteroFileName.substr(0,
- zoteroFileName.lastIndexOf('.')) + '.' + urlExtension;
- }
- }
-
- return zoteroFileName
- }
-};
-
-/************************************************************************/
-// Firefox contentAreaContextMenu
-/************************************************************************/
-
-function setupContentAreaContextMenu() {
- var FFContAreaContMenu = document.
- getElementById('contentAreaContextMenu');
- var ZoteroSubmenu = document.
- getElementById('zotero-content-area-context-menu');
-
- appendCACMCommandItems(FFContAreaContMenu, 'zutilo-ffcacm-',
- ZoteroSubmenu.nextSibling);
-
- var ZoteroSubmenuPopup = document.
- getElementById('zotero-context-item-from-page').parentElement;
- var ZoteroSubmenuSeparator = document.createElement('menuseparator');
- var ZoteroSubmenuSeparatorID = 'zutilo-ffcacm-zoterosubmenu-separator';
- ZoteroSubmenuSeparator.
- setAttribute('id', 'zutilo-ffcacm-zoterosubmenu-separator');
- ZoteroSubmenuPopup.appendChild(ZoteroSubmenuSeparator);
- ZutiloChrome.XULRootElements.push(ZoteroSubmenuSeparatorID);
- appendCACMCommandItems(ZoteroSubmenuPopup,
- 'zutilo-ffcacm-zoterosubmenu-');
-
- FFContAreaContMenu.addEventListener('popupshowing',
- ZutiloChrome.firefoxOverlay.refreshContentAreaContextMenu, false);
- ZutiloChrome.firefoxOverlay.cleanupQueue.push(cleanupFFCACM);
-}
-
-// CACM = contentAreaContextMenu
-function appendCACMCommandItems(parentElement, IDPrefix, nextElement) {
-
- var attachPageCmd = function(event) {
- var processType;
- if (event.shiftKey) {
- processType = 'prompt';
- } else if (event.ctrlKey) {
- processType = 'Zotero';
- }
- ZutiloChrome.firefoxOverlay.attachURLToCurrentItem(
- gBrowser.currentURI.spec, processType);
- };
-
- var attachLinkCmd = function(event) {
- var processType;
- if (event.shiftKey) {
- processType = 'prompt';
- } else if (event.ctrlKey) {
- processType = 'Zotero';
- }
- ZutiloChrome.firefoxOverlay.attachURLToCurrentItem(
- window.gContextMenu.linkURL, processType);
- };
-
- var commands = [attachPageCmd, attachLinkCmd];
-
- for (var index = 0; index < Zutilo.ffcacmFunctions.length; index++) {
- appendCACMSingleItem(parentElement, IDPrefix,
- Zutilo.ffcacmFunctions[index].name,
- commands[index], nextElement);
- }
-}
-
-function appendCACMSingleItem(parentElement, IDPrefix, IDSuffix, command,
- nextElement) {
- var menuEl = document.createElement('menuitem');
- var elementID = IDPrefix + IDSuffix;
- menuEl.setAttribute('id', elementID);
- menuEl.setAttribute('label',
- Zutilo._bundle.GetStringFromName('zutilo.ffcacm.' + IDSuffix));
- menuEl.addEventListener('command', command, false);
- parentElement.insertBefore(menuEl, nextElement);
- ZutiloChrome.XULRootElements.push(elementID);
-}
-
-function refreshContentAreaContextMenu() {
- var showMenuSeparator = false;
-
- for (var index = 0; index < Zutilo.ffcacmFunctions.length; index++) {
- var prefVal = Zutilo.Prefs.get(
- Zutilo.ffcacmFunctions[index].name + 'Appearance');
-
- var ffcacmMenuItem = document.getElementById(
- 'zutilo-ffcacm-' + Zutilo.ffcacmFunctions[index].name);
- var zoteroMenuItem = document.getElementById(
- 'zutilo-ffcacm-zoterosubmenu-' +
- Zutilo.ffcacmFunctions[index].name);
-
- var doNotShow = false;
- if (Zutilo.ffcacmFunctions[index].condition == 'onLink') {
- if (!window.gContextMenu.onLink) {
- doNotShow = true;
- }
- }
-
- if (prefVal == 'Firefox') {
- zoteroMenuItem.hidden = true;
- ffcacmMenuItem.hidden = doNotShow;
- } else if (prefVal == 'Zotero') {
- ffcacmMenuItem.hidden = true;
- zoteroMenuItem.hidden = doNotShow;
- if (!doNotShow) {
- showMenuSeparator = true;
- }
- } else {
- zoteroMenuItem.hidden = true;
- ffcacmMenuItem.hidden = true;
- }
- }
-
- var menuSeparator =
- document.getElementById('zutilo-ffcacm-zoterosubmenu-separator');
- if (showMenuSeparator) {
- menuSeparator.hidden = false;
- } else {
- menuSeparator.hidden = true;
- }
-}
-
-function cleanupFFCACM() {
- var FFContAreaContMenu = document.
- getElementById('contentAreaContextMenu');
- FFContAreaContMenu.removeEventListener('popupshowing',
- ZutiloChrome.firefoxOverlay.refreshContentAreaContextMenu, false);
-}
-
-
-/**************************************************************************/
-// Status bar icon functions
-/**************************************************************************/
-function getStatusPopup() {
- var statusPopupEl = []
- var oldElement = document.
- getElementById('zotero-status-image-context');
- // For version > 4.0.26.1
- if (oldElement) {
- statusPopupEl.push(oldElement)
- } else {
- for (let buttonID of ['zotero-toolbar-save-button',
- 'zotero-toolbar-save-button-single']) {
- let statusButton = document.getElementById(buttonID)
- if (statusButton) {
- statusPopupEl.push(statusButton.children[0])
- }
- }
- }
-
- return statusPopupEl
-}
-
-function setupStatusPopup() {
- var statusPopupEl = getStatusPopup()
- for (let menupopup of statusPopupEl) {
- menupopup.addEventListener('popupshowing', statusPopupListener, false)
- }
-
- if (statusPopupEl) {
- ZutiloChrome.firefoxOverlay.cleanupQueue.push(cleanupStatusPopup)
- }
-}
-ZutiloChrome.firefoxOverlay.setupStatusPopup = setupStatusPopup
-
-function cleanupStatusPopup() {
- var statusPopupEl = getStatusPopup()
- if (statusPopupEl) {
- for (let menupopup of statusPopupEl) {
- menupopup.removeEventListener('popupshowing',
- statusPopupListener, false)
- }
- }
-}
-
-function statusPopupListener(e) {
- if (!Zutilo.Prefs.get('showStatusPopupItems')) {
- return
- }
-
- var popup = e.target;
-
- // Get array of relevant status popup entries that correspond to normal
- // translators which might download attachment items.
- var translatorEntries = []
- for (let entry of popup.children) {
- if (entry.tagName == 'menuseparator') {
- break
- } else {
- translatorEntries.push(entry)
- }
- }
-
- // Ignore the last two entries before the first menuseparator because they
- // are generic web page translators.
- translatorEntries.splice(translatorEntries.length - 2, 2)
- if (translatorEntries.length === 0) {
- return
- }
-
- // Add menu separator and new entries
- var menuSep = document.createElement('menuseparator');
- menuSep.setAttribute('id', 'zutilo-zoterostatuspopup-menusep');
- popup.appendChild(menuSep);
-
- // New entries should have callbacks that call doCommand on existing
- // entries and watch isScraping to change associated files preference
- for (let entry of translatorEntries) {
- addStatusEntry(popup, entry)
- }
-}
-
-function addStatusEntry(popup, entry) {
- var labelEnd
- var strRoot = 'zutilo.pagescrape.statusPopup.'
- if (Zotero.Prefs.get('downloadAssociatedFiles')) {
- labelEnd = ' ' + Zutilo._bundle.
- GetStringFromName(strRoot + 'noAttachments')
- } else {
- labelEnd = ' ' + Zutilo._bundle.
- GetStringFromName(strRoot + 'withAttachments')
- }
-
- var menuitem = document.createElement('menuitem')
- var label = entry.label + labelEnd
- menuitem.setAttribute('label', label)
- menuitem.setAttribute('class', 'menuitem-iconic')
-
- menuitem.addEventListener('command',
- function(e) {
- // Must stop propagation to prevent Zotero
- // from also saving item with its default
- // behavior
- e.stopPropagation()
- scrapeThisPage('opposite', entry)},
- false);
- popup.appendChild(menuitem);
-}
-
-function scrapeThisPage(filesBehavior, entry) {
- // Don't allow simultaneous scraping
- if (Zotero_Browser.isScraping) {
- let strRoot = 'zutilo.pagescrape.multipleExecution.'
- Services.prompt.alert(null,
- Zutilo._bundle.
- GetStringFromName(strRoot + 'title'),
- Zutilo._bundle.
- GetStringFromName(strRoot + 'body'))
- return
- }
-
- // Default to default translator
- if (typeof entry === 'undefined') {
- entry = document.getElementById('zotero-toolbar-save-button')
- }
-
- // Flip associated files pref
- let filesBool = Zotero.Prefs.get('downloadAssociatedFiles')
- if (filesBehavior == 'with') {
- Zotero.Prefs.set('downloadAssociatedFiles', true)
- } else if (filesBehavior == 'without') {
- Zotero.Prefs.set('downloadAssociatedFiles', false)
- } else {
- // opposite
- Zotero.Prefs.set('downloadAssociatedFiles', !filesBool)
- }
-
- // Define clean up actions to restore previous state after scraping
- function cleanupScraping() {
- Zotero.Prefs.set('downloadAssociatedFiles', filesBool)
- Zotero_Browser.unwatch('isScraping')
- ZutiloChrome.firefoxOverlay.isScraping = false
- window.clearTimeout(ZutiloChrome.firefoxOverlay.scrapeTimeout)
- }
-
- // Watch for end of scraping so that clean up can be done
- Zotero_Browser.watch('isScraping', function(id, oldval, newval) {
- if (newval === false) {
- cleanupScraping()
- }
- })
-
- // Set timer to clean up if watch never triggers (due to some failure)
- ZutiloChrome.firefoxOverlay.scrapeTimeout =
- window.setTimeout(cleanupScraping, 60000)
-
- // Start translation
- ZutiloChrome.firefoxOverlay.isScraping = true
- entry.doCommand()
-}
diff --git a/addon/chrome/content/zutilo/keyconfig_adapted.js b/addon/chrome/content/zutilo/keyconfig_adapted.js
index 3f2ed93..a6e4bb3 100644
--- a/addon/chrome/content/zutilo/keyconfig_adapted.js
+++ b/addon/chrome/content/zutilo/keyconfig_adapted.js
@@ -9,7 +9,6 @@
/* global Zutilo */
var Cc = Components.classes
var Ci = Components.interfaces
-Components.utils.import('resource://gre/modules/Services.jsm');
var gPrefService = Components.classes['@mozilla.org/preferences-service;1'].
getService(Components.interfaces.nsIPrefService).getBranch('');
@@ -22,21 +21,20 @@ var gPlatformKeys = {};
var gVKNames = [];
var gKeynames = {
- 'BrowserReload();': Zutilo._bundle.
- GetStringFromName('zutilo.shortcuts.reload'),
- goBackKb2: Zutilo._bundle.GetStringFromName('zutilo.shortcuts.goBack'),
- goForwardKb2: Zutilo._bundle.GetStringFromName('zutilo.shortcuts.goForward')
+ 'BrowserReload();': Zutilo.getString('zutilo.shortcuts.reload'),
+ goBackKb2: Zutilo.getString('zutilo.shortcuts.goBack'),
+ goForwardKb2: Zutilo.getString('zutilo.shortcuts.goForward')
}
gKeynames['BrowserReloadSkipCache();'] =
gKeynames['Browser:ReloadSkipCache'] =
- Zutilo._bundle.GetStringFromName('zutilo.shortcuts.reloadSkipCache');
+ Zutilo.getString('zutilo.shortcuts.reloadSkipCache');
if (gPrefService.getPrefType('browser.backspace_action')) {
if (gPrefService.getIntPref('browser.backspace_action') === 0) {
// jscs:disable requireCamelCaseOrUpperCaseIdentifiers
gKeynames.cmd_handleBackspace =
- Zutilo._bundle.GetStringFromName('zutilo.shortcuts.goBack');
+ Zutilo.getString('zutilo.shortcuts.goBack');
gKeynames.cmd_handleShiftBackspace =
- Zutilo._bundle.GetStringFromName('zutilo.shortcuts.goForward');
+ Zutilo.getString('zutilo.shortcuts.goForward');
// jscs:enable requireCamelCaseOrUpperCaseIdentifiers
}
}
@@ -98,10 +96,10 @@ function keyconfigOnLoad() {
function formatKey(key) {
if (key.modifiers == 'shift,alt,control,accel' &&
key.keycode == 'VK_SCROLL_LOCK') {
- return Zutilo._bundle.GetStringFromName('zutilo.shortcuts.disabled');
+ return Zutilo.getString('zutilo.shortcuts.disabled');
}
if (!key.key && !key.keycode) {
- return Zutilo._bundle.GetStringFromName('zutilo.shortcuts.disabled');
+ return Zutilo.getString('zutilo.shortcuts.disabled');
}
var val = '';
@@ -128,8 +126,7 @@ function formatKey(key) {
val += gLocaleKeys.getString(key.keycode)
} catch (e) {
var unrecognizedStr =
- Zutilo._bundle.
- GetStringFromName('zutilo.shortcuts.unrecognized');
+ Zutilo.getString('zutilo.shortcuts.unrecognized');
val += unrecognizedStr.replace('$1', key.keycode);
}
}
@@ -197,7 +194,7 @@ function applyShortcut() {
// eslint-disable-next-line no-unused-vars
function Disable() {
- gEdit.value = Zutilo._bundle.GetStringFromName('zutilo.shortcuts.disabled');
+ gEdit.value = Zutilo.getString('zutilo.shortcuts.disabled');
gEdit.key = {modifiers: '', key: '', keycode: ''};
applyShortcut();
}
@@ -247,8 +244,8 @@ function noConflictingKeys(checkKey) {
// OK = no conflict; cancel = conflict
var strRoot = 'zutilo.shortcuts.conflicts.'
noConflict = Services.prompt.confirm(window,
- Zutilo._bundle.GetStringFromName(strRoot + 'promptTitle'),
- Zutilo._bundle.GetStringFromName(strRoot + 'promptText') +
+ Zutilo.getString(strRoot + 'promptTitle'),
+ Zutilo.getString(strRoot + 'promptText') +
nameList.join('\n'));
}
@@ -342,7 +339,7 @@ function getNameForKey(win, keyNode) {
}
if (!val) {
- val = Zutilo._bundle.GetStringFromName('zutilo.shortcuts.unlabeled');
+ val = Zutilo.getString('zutilo.shortcuts.unlabeled');
}
return val
diff --git a/addon/chrome/content/zutilo/keys.js b/addon/chrome/content/zutilo/keys.js
index 59aad7e..a4f18b4 100644
--- a/addon/chrome/content/zutilo/keys.js
+++ b/addon/chrome/content/zutilo/keys.js
@@ -12,8 +12,7 @@
// Include core modules and built-in modules
/********************************************/
Components.utils.import('resource://gre/modules/AddonManager.jsm');
-Components.utils.import('resource://gre/modules/Services.jsm');
-Components.utils.import('chrome://zutilo/content/zutilo.jsm');
+Components.utils.import('chrome://zutilo/content/zutilo.js');
/********************************************/
// Define keys object
@@ -28,8 +27,7 @@ var keys = {
},
keyName: function(keyLabel) {
- var name = Zutilo._bundle.GetStringFromName('zutilo.shortcuts.name.' +
- keyLabel)
+ var name = Zutilo.getString('zutilo.shortcuts.name.' + keyLabel)
return name
},
@@ -51,10 +49,31 @@ var keys = {
},
categoryName: function(categoryLabel) {
- return Zutilo._bundle.GetStringFromName('zutilo.shortcuts.category.' +
- categoryLabel)
+ return Zutilo.getString('zutilo.shortcuts.category.' + categoryLabel)
},
+ refreshAlts: function() {
+ for (let alt in Zutilo.keys.alts) {
+ let deletions = []
+ for (let shortcut in Zutilo.keys.shortcuts) {
+ if (shortcut.startsWith(alt)) {
+ deletions.push(shortcut)
+ }
+ }
+ for (let shortcut of deletions) {
+ delete Zutilo.keys.shortcuts[shortcut]
+ delete Zutilo.keys.categories[shortcut]
+ }
+
+ let total = Zutilo.Prefs.get(alt + '_total')
+ for (let altNum = 1; altNum < total + 1; altNum++) {
+ Zutilo.keys.categories[alt + altNum] = Zutilo.keys.alts[alt]['category']
+ Zutilo.keys.shortcuts[alt + altNum] = Zutilo.keys.alts[alt]['generator'](altNum)
+ }
+ }
+ },
+
+ alts: {},
categories: {},
shortcuts: {}
};
@@ -106,22 +125,30 @@ keys.categories.copyItems = 'copying'
keys.shortcuts.copyItems = function(win) {
win.ZutiloChrome.zoteroOverlay.copyItems()
};
-keys.categories.copyItems_alt1 = 'copying'
-keys.shortcuts.copyItems_alt1 = function(win) {
- win.ZutiloChrome.zoteroOverlay.copyItems_alt1()
-};
-keys.categories.copyItems_alt2 = 'copying'
-keys.shortcuts.copyItems_alt2 = function(win) {
- win.ZutiloChrome.zoteroOverlay.copyItems_alt2()
-};
+keys.alts.copyItems_alt = {
+ 'category': 'copying',
+ 'generator': function(altNum) {
+ return function(win) {
+ win.ZutiloChrome.zoteroOverlay.copyItems_alt(altNum)
+ }
+ }
+}
keys.categories.copyZoteroSelectLink = 'copying'
keys.shortcuts.copyZoteroSelectLink = function(win) {
win.ZutiloChrome.zoteroOverlay.copyZoteroSelectLink()
};
+keys.categories.copyZoteroItemID = 'copying'
+keys.shortcuts.copyZoteroItemID = function(win) {
+ win.ZutiloChrome.zoteroOverlay.copyZoteroItemID()
+};
keys.categories.copyZoteroItemURI = 'copying'
keys.shortcuts.copyZoteroItemURI = function(win) {
win.ZutiloChrome.zoteroOverlay.copyZoteroItemURI()
};
+keys.categories.openZoteroItemURI = 'other'
+keys.shortcuts.openZoteroItemURI = function(win) {
+ win.ZutiloChrome.zoteroOverlay.openZoteroItemURI()
+};
keys.categories.createBookItem = 'itemcreation'
keys.shortcuts.createBookItem = function(win) {
win.ZutiloChrome.zoteroOverlay.createBookItem()
@@ -138,6 +165,38 @@ keys.categories.relocateChildren = 'itemediting'
keys.shortcuts.relocateChildren = function(win) {
win.ZutiloChrome.zoteroOverlay.relocateChildren()
};
+keys.categories.copyJSON = 'copying'
+keys.shortcuts.copyJSON = function(win) {
+ win.ZutiloChrome.zoteroOverlay.copyJSON()
+}
+keys.categories.pasteJSONIntoEmptyFields = 'itemediting'
+keys.shortcuts.pasteJSONIntoEmptyFields = function(win) {
+ win.ZutiloChrome.zoteroOverlay.pasteJSONIntoEmptyFields()
+}
+keys.categories.pasteJSONFromNonEmptyFields = 'itemediting'
+keys.shortcuts.pasteJSONFromNonEmptyFields = function(win) {
+ win.ZutiloChrome.zoteroOverlay.pasteJSONFromNonEmptyFields()
+}
+keys.categories.pasteJSONAll = 'itemediting'
+keys.shortcuts.pasteJSONAll = function(win) {
+ win.ZutiloChrome.zoteroOverlay.pasteJSONAll()
+}
+keys.categories.pasteJSONItemType = 'itemediting'
+keys.shortcuts.pasteJSONItemType = function(win) {
+ win.ZutiloChrome.zoteroOverlay.pasteJSONItemType()
+}
+
+/********************************************/
+// Zutilo's Zotero collection menu functions
+/********************************************/
+keys.categories.copyZoteroCollectionSelectLink = 'copying'
+keys.shortcuts.copyZoteroCollectionSelectLink = function(win) {
+ win.ZutiloChrome.zoteroOverlay.copyZoteroCollectionSelectLink()
+}
+keys.categories.copyZoteroCollectionURI = 'copying'
+keys.shortcuts.copyZoteroCollectionURI = function(win) {
+ win.ZutiloChrome.zoteroOverlay.copyZoteroCollectionURI()
+}
/***********************************************/
// Zutilo's Zotero item pane editing functions
@@ -193,7 +252,7 @@ keys.shortcuts.attachLinkFile = function(win) {
keys.categories.recognizeSelected = 'other'
keys.shortcuts.recognizeSelected = function(win) {
// jscs: disable requireCamelCaseOrUpperCaseIdentifiers
- win.Zotero_RecognizePDF.recognizeSelected()
+ win.ZoteroPane_Local.recognizeSelected()
// jscs: enable requireCamelCaseOrUpperCaseIdentifiers
};
keys.categories.createParentItemsFromSelected = 'itemcreation'
@@ -209,6 +268,15 @@ keys.shortcuts.renameSelectedAttachmentsFromParents = function(win) {
// jscs: enable requireCamelCaseOrUpperCaseIdentifiers
};
+keys.categories.findPDF = 'attachments'
+keys.shortcuts.findPDF = function(win)
+{
+ // jscs: disable requireCamelCaseOrUpperCaseIdentifiers
+ let items = win.ZoteroPane_Local.getSelectedItems();
+ win.Zotero.Attachments.addAvailablePDFs(items);
+ // jscs: enable requireCamelCaseOrUpperCaseIdentifiers
+};
+
keys.categories.attachURI = 'attachments'
keys.shortcuts.attachURI = function(win) {
// jscs: disable requireCamelCaseOrUpperCaseIdentifiers
@@ -231,7 +299,7 @@ keys.shortcuts.showFile = function(win) {
var _getBestFile = win.Zotero.Promise.coroutine(function* (item) {
if(item.isAttachment()) {
- if(item.attachmentLinkMode === Zotero.Attachments.LINK_MODE_LINKED_URL) return false;
+ if(item.attachmentLinkMode === win.Zotero.Attachments.LINK_MODE_LINKED_URL) return false;
return item;
} else {
return yield item.getBestAttachment();
@@ -252,28 +320,34 @@ keys.shortcuts.showFile = function(win) {
// Zotero functions (i.e. not Zutilo functions)
// Focus selection
/***********************************************/
+keys.categories.advancedSearch = 'uinavigation'
+keys.shortcuts.advancedSearch = function(win) {
+ win.ZoteroPane_Local.openAdvancedSearchWindow()
+};
+
keys.categories.duplicateItem = 'itemcreation'
keys.shortcuts.duplicateItem = function(win) {
win.ZoteroPane.duplicateSelectedItem();
};
+keys.categories.openRunJSWindow = 'uinavigation'
+keys.shortcuts.openRunJSWindow = function(win) {
+ win.openRunJSWindow();
+}
+
keys.categories.openStyleEditor = 'uinavigation'
-keys.shortcuts.openStyleEditor = function(_win) {
- var prefs_context = {}
- Services.scriptloader.
- loadSubScript('chrome://zotero/content/include.js', prefs_context)
- Services.scriptloader.
- loadSubScript('chrome://zotero/content/preferences/preferences.js',
- prefs_context)
- prefs_context.Zotero_Preferences.
- openInViewer('chrome://zotero/content/tools/csledit.xul', true)
+keys.shortcuts.openStyleEditor = function(win) {
+ win.openStyleEditor();
}
keys.categories.generateReport = 'other'
keys.shortcuts.generateReport = function(win) {
let context = win.ZoteroPane.document.defaultView
- if (context.document.activeElement.id == "zotero-collections-tree") {
- context.Zotero_Report_Interface.loadCollectionReport()
+ // Zotero >=6
+ if (context.document.activeElement.id == win.ZoteroPane.collectionsView.id
+ // Zotero <=5
+ || context.document.activeElement.id == "zotero-collections-tree") {
+ context.Zotero_Report_Interface.loadCollectionReport()
} else {
// "zotero-items-tree" whether it is the active element or not
let zitems = win.ZoteroPane.getSelectedItems()
@@ -287,11 +361,33 @@ keys.categories.focusZoteroCollectionsTree = 'uinavigation'
keys.shortcuts.focusZoteroCollectionsTree = function(win) {
win.ZutiloChrome.zoteroOverlay.
updatePaneVisibility('zotero-collections', 'show');
- win.document.getElementById('zotero-collections-tree').focus();
+ // Zotero >=6
+ if (win.ZoteroPane.collectionsView.focus) {
+ win.ZoteroPane.collectionsView.focus();
+ }
+ // Zotero 5.0.97-beta.39
+ else if (win.document.getElementById('collection-tree')) {
+ win.document.getElementById('collection-tree').focus();
+ }
+ // Zotero <=5
+ else {
+ win.document.getElementById('zotero-collections-tree').focus();
+ }
};
keys.categories.focusZoteroItemsTree = 'uinavigation'
keys.shortcuts.focusZoteroItemsTree = function(win) {
- win.document.getElementById('zotero-items-tree').focus();
+ // Zotero >=6
+ if (win.ZoteroPane.itemsView.focus) {
+ win.ZoteroPane.itemsView.focus();
+ }
+ // Zotero 5.0.97-beta.39
+ else if (win.ZoteroPane.itemsView.tree && win.ZoteroPane.itemsView.tree.focus) {
+ win.ZoteroPane.itemsView.tree.focus();
+ }
+ // Zotero <=5
+ else {
+ win.document.getElementById('zotero-items-tree').focus();
+ }
};
keys.categories.advanceTabboxTab = 'uinavigation'
keys.shortcuts.advanceTabboxTab = function(win) {
@@ -326,6 +422,37 @@ keys.shortcuts.selectTabboxTab3 = function(win) {
win.document.getElementById('zotero-view-tabbox').tabs.selectedIndex = 3;
};
+keys.categories.locateMenu = 'uinavigation'
+keys.shortcuts.locateMenu = function(win) {
+ win.document.getElementById('zotero-tb-locate-menu').showPopup();
+};
+
+keys.categories.locateItem = 'uinavigation'
+keys.shortcuts.locateItem = function(win) {
+ let label = Zutilo.Prefs.get("locateItemEngine")
+ win.Zotero_LocateMenu.locateItem({"target": {"label": label}})
+};
+
+keys.categories.toggleAutomaticTags = 'uinavigation'
+keys.shortcuts.toggleAutomaticTags = function(win) {
+ win.ZoteroPane.tagSelector.toggleShowAutomatic()
+};
+
+keys.categories.toggleAllTags = 'uinavigation'
+keys.shortcuts.toggleAllTags = function(win) {
+ win.ZoteroPane.tagSelector.toggleDisplayAllTags()
+};
+
+keys.categories.deselectTags = 'uinavigation'
+keys.shortcuts.deselectTags = function(win) {
+ win.ZoteroPane.tagSelector.deselectAll()
+};
+
+keys.categories.focusTagSelector = 'uinavigation'
+keys.shortcuts.focusTagSelector = function(win) {
+ win.ZoteroPane.tagSelector.searchBoxRef.current.focus()
+};
+
/***********************************************/
// Zotero functions (i.e. not Zutilo functions)
// Hide/show left/right pane
@@ -353,67 +480,6 @@ keys.shortcuts.toggleZoteroItemPaneStickySplitter = function(win) {
'toggle', true)
};
-/********************************************/
-// Firefox only shortcuts
-/********************************************/
-if (Zutilo.appName == 'Firefox') {
-
- /********************************************/
- // Zutilo's Firefox scraping functions
- /********************************************/
- keys.categories.attachPage = 'attachments'
- keys.shortcuts.attachPage = function(win) {
- win.ZutiloChrome.firefoxOverlay.attachURLToCurrentItem(
- win.content.location.href)
- };
-
- keys.categories.saveItemZutilo = 'itemcreation'
- keys.shortcuts.saveItemZutilo = function(win) {
- win.ZutiloChrome.firefoxOverlay.scrapeThisPage('opposite')
- };
-
- keys.categories.saveItemWithAttachments = 'itemcreation'
- keys.shortcuts.saveItemWithAttachments = function(win) {
- win.ZutiloChrome.firefoxOverlay.scrapeThisPage('with')
- };
-
- keys.categories.saveItemWithoutAttachments = 'itemcreation'
- keys.shortcuts.saveItemWithoutAttachments = function(win) {
- win.ZutiloChrome.firefoxOverlay.scrapeThisPage('without')
- };
-
- /***********************************************/
- // Zotero functions (i.e. not Zutilo functions)
- /***********************************************/
- keys.categories.toggleZotero = 'uinavigation'
- keys.shortcuts.toggleZotero = function(win) {
- win.ZoteroOverlay.toggleDisplay()
- };
-
- keys.categories.focusZotero = 'uinavigation'
- keys.shortcuts.focusZotero = function(win) {
- win.ZoteroOverlay.toggleDisplay(true)
- };
-
- keys.categories.hideZotero = 'uinavigation'
- keys.shortcuts.hideZotero = function(win) {
- win.ZoteroOverlay.toggleDisplay(false)
- };
-
- keys.categories.saveItemZotero = 'itemcreation'
- keys.shortcuts.saveItemZotero = function(win) {
- // jscs: disable requireCamelCaseOrUpperCaseIdentifiers
- win.Zotero_Browser.scrapeThisPage()
- // jscs: enable requireCamelCaseOrUpperCaseIdentifiers
- };
-
- keys.categories.websiteItem = 'itemcreation'
- keys.shortcuts.websiteItem = function(win) {
- win.ZoteroPane.addItemFromPage()
- };
-
-}
-
AddonManager.getAddonByID('better-bibtex@iris-advies.com', function(aAddon) {
if (aAddon === null || !aAddon.isActive) {
return
@@ -436,6 +502,12 @@ AddonManager.getAddonByID('better-bibtex@iris-advies.com', function(aAddon) {
win.Zotero.BetterBibTeX.ready.then(function() {
win.Zotero.BetterBibTeX.KeyManager.refresh('selected', true)})
}
+
+ keys.categories.BBTtoTeXstudio = 'bbt'
+ keys.shortcuts.BBTtoTeXstudio = function(win) {
+ win.Zotero.BetterBibTeX.ready.then(function() {
+ win.Zotero.BetterBibTeX.ZoteroPane.toTeXstudio()})
+ }
// Call setDefaults again so it generates defaults for these shortcuts
// created in the getAddonByID callback.
// TODO: Only add defaults for the shortcuts generated here.
@@ -452,5 +524,42 @@ AddonManager.getAddonByID('zotfile@columbia.edu', function(aAddon) {
win.Zotero.ZotFile.attachFileFromSourceDirectory()
}
+ keys.categories.ZotFileRename = 'ZotFile'
+ keys.shortcuts.ZotFileRename = function(win) {
+ win.Zotero.ZotFile.renameSelectedAttachments()
+ }
+
+ keys.categories.ZotFileExtractAnnotations = 'ZotFile'
+ keys.shortcuts.ZotFileExtractAnnotations = function(win) {
+ win.Zotero.ZotFile.pdfAnnotations.getAnnotations()
+ }
+
+ Zutilo.Prefs.setDefaults()
+})
+
+AddonManager.getAddonByID('mdnotes@mdnotes.github.io', function (aAddon) {
+ if (aAddon === null || !aAddon.isActive) {
+ return
+ }
+
+ keys.categories.MdnotesBatchExport = 'mdnotes'
+ keys.shortcuts.MdnotesBatchExport = function(win) {
+ win.Zotero.Mdnotes.batchExportMenu()
+ }
+
+ keys.categories.MdnotesExport = 'mdnotes'
+ keys.shortcuts.MdnotesExport = function(win) {
+ win.Zotero.Mdnotes.exportToMarkdownMenu()
+ }
+
+ keys.categories.MdnotesCreateStandaloneNote = 'mdnotes'
+ keys.shortcuts.MdnotesCreateStandaloneNote = function(win) {
+ win.Zotero.Mdnotes.createNoteFileMenu(true)
+ }
+
+ keys.categories.MdnotesCreateMdNote = 'mdnotes'
+ keys.shortcuts.MdnotesCreateMdNote = function(win) {
+ win.Zotero.Mdnotes.createNoteFileMenu(false)
+ }
Zutilo.Prefs.setDefaults()
})
diff --git a/addon/chrome/content/zutilo/preferences.js b/addon/chrome/content/zutilo/preferences.js
index df56750..e9bb8e1 100644
--- a/addon/chrome/content/zutilo/preferences.js
+++ b/addon/chrome/content/zutilo/preferences.js
@@ -6,67 +6,48 @@
'use strict';
/* global window, document, Components */
/* global keyconfigOnLoad, Zutilo */
-Components.utils.import('chrome://zutilo/content/zutilo.jsm');
+Components.utils.import('chrome://zutilo/content/zutilo.js');
// eslint-disable-next-line no-unused-vars
function initializePrefWindow() {
- if (Zutilo.appName == 'Firefox') {
- // Hide Zotero Standalone specific preference window elements
- document.getElementById('general-standalone-label').
- setAttribute('hidden', true);
- } else {
- // Hide Firefox specific preference window elements
- document.getElementById('general-checkbox-zoteroNotActive').
- setAttribute('hidden', true);
- document.getElementById('zutilo-prefpane-ui-browser-menus').
- setAttribute('hidden', true);
- }
-
- keyconfigOnLoad();
+ // keyconfigOnLoad();
}
// eslint-disable-next-line no-unused-vars
function buildMenuPrefs() {
for (const menuName of ['item', 'collection']) {
for (const functionName of Zutilo._menuFunctions[menuName]) {
- addMenuPreference(menuName, functionName);
addMenuRadiogroup(menuName, functionName);
}
}
}
-function addMenuPreference(menuName, menuFunction) {
- var newPref = document.createElement('preference');
- newPref.setAttribute('id', `pref-${menuName}menu-${menuFunction}`);
- newPref.setAttribute('name', `extensions.zutilo.${menuName}menu.${menuFunction}`);
- newPref.setAttribute('type', 'string');
-
- var zutiloPrefs = document.getElementById('zutilo-prefpane-ui-preferences');
- zutiloPrefs.appendChild(newPref);
-}
-
function addMenuRadiogroup(menuName, menuFunction) {
- var newRow = document.createElement('row');
+ var newRow = document.createXULElement('groupbox');
- var newHbox = document.createElement('hbox');
+ var newHbox = document.createXULElement('hbox');
newHbox.setAttribute('align', 'center');
- var newLabel = document.createElement('label');
- newLabel.setAttribute('value', Zutilo._bundle.GetStringFromName(
- `zutilo.preferences.${menuName}menu.${menuFunction}`));
+ var newLabel = document.createXULElement('label');
+ newLabel.setAttribute(
+ 'value',
+ Zutilo.getString(`zutilo.preferences.${menuName}menu.${menuFunction}`)
+ )
newHbox.appendChild(newLabel);
newRow.appendChild(newHbox);
- var newRadiogroup = document.createElement('radiogroup');
+ var newRadiogroup = document.createXULElement('radiogroup');
newRadiogroup.setAttribute('orient', 'horizontal');
newRadiogroup.setAttribute('align', 'center');
newRadiogroup.setAttribute('preference',
- `pref-${menuName}menu-${menuFunction}`);
+ `extensions.zutilo.${menuName}menu.${menuFunction}`);
var newRadio;
for (const label of ['Zotero', 'Zutilo', 'Hide']) {
- newRadio = document.createElement('radio');
- newRadio.setAttribute('label', Zutilo._bundle.GetStringFromName(
- `zutilo.preferences.${menuName}menu.${label}`));
+ newRadio = document.createXULElement('radio');
+ newRadio.setAttribute(
+ 'label',
+ Zutilo.getString(`zutilo.preferences.${menuName}menu.${label}`)
+ )
newRadio.setAttribute('value', label);
newRadiogroup.appendChild(newRadio);
}
diff --git a/addon/chrome/content/zutilo/preferences.xhtml b/addon/chrome/content/zutilo/preferences.xhtml
new file mode 100644
index 0000000..6f3dc78
--- /dev/null
+++ b/addon/chrome/content/zutilo/preferences.xhtml
@@ -0,0 +1,70 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/addon/chrome/content/zutilo/preferences.xul b/addon/chrome/content/zutilo/preferences.xul
deleted file mode 100644
index db55b5c..0000000
--- a/addon/chrome/content/zutilo/preferences.xul
+++ /dev/null
@@ -1,225 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/addon/chrome/content/zutilo/zoteroNotActive.js b/addon/chrome/content/zutilo/zoteroNotActive.js
deleted file mode 100644
index 95d26e0..0000000
--- a/addon/chrome/content/zutilo/zoteroNotActive.js
+++ /dev/null
@@ -1,27 +0,0 @@
-/* Copyright 2012 Will Shanks.
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-'use strict';
-/* global window, document, Components */
-/* global Zutilo */
-Components.utils.import('chrome://zutilo/content/zutilo.jsm');
-
-// eslint-disable-next-line no-unused-vars
-function onAccept() {
- if (document.getElementById('zutilo-zoteronotactive-zoteropage').checked) {
- Zutilo.openLink('http://www.zotero.org/');
- }
-
- if (document.getElementById('zutilo-zoteronotactive-addonmanager').
- checked) {
- window.opener.BrowserOpenAddonsMgr();
- }
-
- if (document.getElementById('zutilo-zoteronotactive-dontshow').checked) {
- Zutilo.Prefs.set('warnZoteroNotActive', false);
- }
-
- return true;
-}
diff --git a/addon/chrome/content/zutilo/zoteroNotActive.xul b/addon/chrome/content/zutilo/zoteroNotActive.xul
deleted file mode 100644
index 42341dc..0000000
--- a/addon/chrome/content/zutilo/zoteroNotActive.xul
+++ /dev/null
@@ -1,36 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/addon/chrome/content/zutilo/zoteroOverlay.js b/addon/chrome/content/zutilo/zoteroOverlay.js
index 77c853d..16bee04 100644
--- a/addon/chrome/content/zutilo/zoteroOverlay.js
+++ b/addon/chrome/content/zutilo/zoteroOverlay.js
@@ -4,11 +4,10 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
'use strict';
-/* global gBrowser, window, document, Components */
+/* global window, document, Components */
/* global Zotero, ZoteroPane, ZOTERO_CONFIG */
/* global Zutilo, ZutiloChrome */
-Components.utils.import('resource://gre/modules/Services.jsm');
-Components.utils.import('chrome://zutilo/content/zutilo.jsm');
+Components.utils.import('chrome://zutilo/content/zutilo.js');
Components.utils.import('resource://zotero/config.js');
function debug(msg, err) {
@@ -31,29 +30,18 @@ ZutiloChrome.zoteroOverlay = {
/******************************************/
// Window load handling
/******************************************/
- init: function() {
+ init: async function() {
+ await Zotero.uiReadyPromise;
this.fullOverlay();
- if (Zutilo.appName == 'Firefox') {
- gBrowser.addEventListener('load',
- ZutiloChrome.zoteroOverlay.pageloadListener, true);
- }
-
document.getElementById('zotero-itemmenu').addEventListener('popupshowing', refreshZoteroItemPopup, false)
document.getElementById('zotero-collectionmenu').addEventListener('popupshowing', refreshZoteroCollectionPopup, false)
},
unload: function() {
- if (Zutilo.appName == 'Firefox') {
- gBrowser.removeEventListener('load',
- ZutiloChrome.zoteroOverlay.pageloadListener, true);
- }
- if (Zotero.version.split('.')[0] > 4) {
- // XXX: Legacy 4.0
- var toolsPopup = document.getElementById('menu_ToolsPopup')
- toolsPopup.removeEventListener('popupshowing',
- ZutiloChrome.zoteroOverlay.prefsSeparatorListener, false)
- }
+ var toolsPopup = document.getElementById('menu_ToolsPopup')
+ toolsPopup.removeEventListener('popupshowing',
+ ZutiloChrome.zoteroOverlay.prefsSeparatorListener, false)
document.getElementById('zotero-itemmenu').removeEventListener('popupshowing', refreshZoteroItemPopup, false)
document.getElementById('zotero-collectionmenu').removeEventListener('popupshowing', refreshZoteroCollectionPopup, false)
@@ -92,14 +80,7 @@ ZutiloChrome.zoteroOverlay = {
ZoteroPane.document.getElementById('zotero-view-tabbox');
zoteroViewTabbox.selectedIndex = tabIndex;
// Create new note
- if (Zotero.version.split('.')[0] < 5) {
- // XXX: Legacy 4.0
- ZoteroPane.newNote(false, zitems[0].id);
- // This version didn't work in tab mode:
- // ZoteroItemPane.addNote(false);
- } else {
- ZoteroPane.newNote(false, zitems[0].key)
- }
+ ZoteroPane.newNote(false, zitems[0].key)
return true;
},
@@ -111,21 +92,22 @@ ZutiloChrome.zoteroOverlay = {
}
// Select tag tab of item pane
- var tabIndex = 2;
+ var tabIndex = 2
ZoteroPane.document.getElementById('zotero-view-tabbox').
tabs.selectedIndex = tabIndex
// Focus new tag entry textbox
- let tagPane =
- ZoteroPane.document.getElementById('zotero-editpane-tags')
- if (tagPane._tagColors === undefined) {
- window.setTimeout(function() {tagPane.new()}, 200)
- } else {
- if (typeof tagPane.newTag === 'function') {
- tagPane.newTag()
+ let header = ZoteroPane.document.querySelector(".tags-box-header")
+ if (header === null) {
+ // Zotero version < 5.0.78
+ let tagPane = ZoteroPane.document.getElementById('zotero-editpane-tags')
+ if (tagPane._tagColors === undefined) {
+ window.setTimeout(function() {tagPane.new()}, 200)
} else {
- // XXX: Legacy 4.0
- tagPane.new()
+ tagPane.newTag()
}
+ } else {
+ let addButton = header.querySelector("button")
+ addButton.click()
}
return true;
@@ -195,18 +177,13 @@ ZutiloChrome.zoteroOverlay = {
/******************************************/
_copyToClipboard: function(clipboardText) {
if (clipboardText) {
- const gClipboardHelper =
- Components.classes['@mozilla.org/widget/clipboardhelper;1']
- .getService(Components.interfaces.nsIClipboardHelper);
- gClipboardHelper.copyString(clipboardText, document);
+ Components.classes['@mozilla.org/widget/clipboardhelper;1']
+ .getService(Components.interfaces.nsIClipboardHelper)
+ .copyString(clipboardText);
} else {
- var prompts = Components.
- classes['@mozilla.org/embedcomp/prompt-service;1'].
- getService(Components.interfaces.nsIPromptService);
- var title = Zutilo._bundle.
- GetStringFromName('zutilo.error.copynoitemstitle')
- var text = Zutilo._bundle.
- GetStringFromName('zutilo.error.copynoitemstext')
+ var prompts = Services.prompt;
+ var title = Zutilo.getString('zutilo.error.copynoitemstitle')
+ var text = Zutilo.getString('zutilo.error.copynoitemstext')
prompts.alert(null, title, text)
}
},
@@ -222,10 +199,6 @@ ZutiloChrome.zoteroOverlay = {
for (let zitem of zitems) {
let creators = zitem.getCreators()
for (let creator of creators) {
- if (Zotero.version.split('.')[0] < 5) {
- // XXX: Legacy 4.0
- creator = creator.ref
- }
let creatorStr = creator.lastName + '\t' + creator.firstName
if (creatorsArray.indexOf(creatorStr) == -1) {
creatorsArray.push(creatorStr)
@@ -258,12 +231,7 @@ ZutiloChrome.zoteroOverlay = {
arrayStr = '\n' + tagsArray.join('\n') + '\n';
let tag
- if (Zotero.version.split('.')[0] < 5) {
- // XXX: Legacy 4.0
- tag = tempTags[j].name
- } else {
- tag = tempTags[j].tag
- }
+ tag = tempTags[j].tag
if (arrayStr.indexOf('\n' + tag + '\n') == -1) {
tagsArray.push(tag);
@@ -286,10 +254,7 @@ ZutiloChrome.zoteroOverlay = {
for (let idx = 0; idx < zitems.length; idx++) {
zitems[idx].removeAllTags()
- if (Zotero.version.split('.')[0] > 4) {
- // XXX: Legacy 4.0
- zitems[idx].saveTx()
- }
+ zitems[idx].saveTx()
}
},
@@ -316,14 +281,8 @@ ZutiloChrome.zoteroOverlay = {
var child;
for (var idx = 0; idx < Zutilo.itemClipboard.length; idx++) {
child = Zotero.Items.get(Zutilo.itemClipboard[idx]);
- if (Zotero.version.split('.')[0] < 5) {
- // XXX: Legacy 4.0
- child.setSource(newParent.id);
- child.save();
- } else {
- child.parentKey = newParent.key
- child.saveTx()
- }
+ child.parentKey = newParent.key
+ child.saveTx()
}
},
@@ -375,7 +334,7 @@ ZutiloChrome.zoteroOverlay = {
}
clipboard() {
- const clipboard = ZutiloChrome.getFromClipboard(true).trim()
+ const clipboard = Zotero.Utilities.Internal.getClipboard("text/plain").trim()
debug(`clipboard: ${clipboard}`)
if (!clipboard || !clipboard.startsWith('{')) return null
@@ -445,6 +404,10 @@ ZutiloChrome.zoteroOverlay = {
debug('pasteJSONAll')
this.pasteJSON('all').catch((err) => debug('pasteJSONAll', err))
},
+ pasteJSONItemType: function() {
+ debug('pasteJSONItemType')
+ this.pasteJSON('item-type').catch((err) => debug('pasteJSONItemType', err))
+ },
pasteJSON: async function(mode) {
await this.CopyItems.ready
@@ -470,7 +433,13 @@ ZutiloChrome.zoteroOverlay = {
const fieldID = this.CopyItems.getFieldIDFromTypeAndBase(item.itemTypeID, field)
debug(`${item.itemTypeID}.${field} = ${value}: valid = ${fieldID}`)
- if (field === 'creators') {
+ if (mode === 'item-type') {
+ if (field === 'itemType') {
+ item.setType(Zotero.ItemTypes.getID(value))
+ save = true
+ }
+
+ } else if (field === 'creators') {
let creators
let creatorIDs
let newCreators
@@ -555,7 +524,7 @@ ZutiloChrome.zoteroOverlay = {
return false;
}
- var clipboardText = ZutiloChrome.getFromClipboard().trim()
+ var clipboardText = Zotero.Utilities.Internal.getClipboard("text/plain").trim()
if (!clipboardText) {
return false;
}
@@ -568,42 +537,37 @@ ZutiloChrome.zoteroOverlay = {
for (let tag of tagArray) {
zitem.addTag(tag)
}
- if (Zotero.version.split('.')[0] > 4) {
- // XXX: Legacy 4.0
- zitem.saveTx()
- }
+ zitem.saveTx()
}
return true;
},
_modifyAttachmentPaths: function(mode) {
- var attachmentArray = this.getSelectedAttachments();
+ var attachmentArray = this.getSelectedAttachments(mode);
if (!this.checkItemNumber(attachmentArray, 'attachment1')) {
return false;
}
- var prompts = Components.
- classes['@mozilla.org/embedcomp/prompt-service;1'].
- getService(Components.interfaces.nsIPromptService);
+ var prompts = Services.prompt;
var promptTitle
if (mode == Zotero.Attachments.LINK_MODE_LINKED_FILE) {
- promptTitle = Zutilo._bundle.
- GetStringFromName('zutilo.attachments.modifyTitle')
+ promptTitle = Zutilo.getString('zutilo.attachments.modifyTitle')
} else if (mode == Zotero.Attachments.LINK_MODE_LINKED_URL) {
- promptTitle = Zutilo._bundle.
- GetStringFromName('zutilo.attachments.modifyURLTitle')
+ promptTitle = Zutilo.getString('zutilo.attachments.modifyURLTitle')
}
// Prompt for old path
var promptText = { value: '' };
var checkGlobal = { value: false };
- var pressedOK = prompts.prompt(null, promptTitle,
- Zutilo._bundle.GetStringFromName('zutilo.attachments.oldPath'),
+ var pressedOK = prompts.prompt(
+ null,
+ promptTitle,
+ Zutilo.getString('zutilo.attachments.oldPath'),
promptText,
- Zutilo._bundle.
- GetStringFromName('zutilo.attachments.checkGlobally'),
- checkGlobal);
+ Zutilo.getString('zutilo.attachments.checkGlobally'),
+ checkGlobal
+ )
var oldPath = promptText.value;
if (!pressedOK || (oldPath === '')) {
return false;
@@ -611,9 +575,14 @@ ZutiloChrome.zoteroOverlay = {
// Prompt for new path
promptText = { value: '' };
- pressedOK = prompts.prompt(null, promptTitle,
- Zutilo._bundle.GetStringFromName('zutilo.attachments.newPath'),
- promptText, null, {});
+ pressedOK = prompts.prompt(
+ null,
+ promptTitle,
+ Zutilo.getString('zutilo.attachments.newPath'),
+ promptText,
+ null,
+ {}
+ )
var newPath = promptText.value;
if (!pressedOK) {
return false;
@@ -657,6 +626,8 @@ ZutiloChrome.zoteroOverlay = {
if (oldFullPath.substr(0, oldPath.length) == oldPath) {
newFullPath =
newPath + oldFullPath.substr(oldPath.length);
+ } else {
+ newFullPath = oldFullPath
}
}
// attachmentPath stores the unmodified path
@@ -664,12 +635,7 @@ ZutiloChrome.zoteroOverlay = {
if (newFullPath != oldFullPath) {
// TODO: wrap all saves in one transaction
setPath(attachmentArray[index], newFullPath)
- if (typeof attachmentArray[index].saveTx === 'function') {
- attachmentArray[index].saveTx();
- } else {
- // XXX: Legacy 4.0
- attachmentArray[index].save();
- }
+ attachmentArray[index].saveTx();
}
}
@@ -691,9 +657,7 @@ ZutiloChrome.zoteroOverlay = {
return false;
}
- var prompts = Components.
- classes['@mozilla.org/embedcomp/prompt-service;1'].
- getService(Components.interfaces.nsIPromptService);
+ var prompts = Services.prompt;
for (var index = 0; index < attachmentArray.length; index++) {
var title = Zutilo._bundle.
formatStringFromName('zutilo.attachments.showTitle',
@@ -720,15 +684,7 @@ ZutiloChrome.zoteroOverlay = {
var paths = []
for (let attachment of attachmentArray) {
let path
- if (Zotero.version.split('.')[0] < 5) {
- // XXX: Legacy 4.0
- if (attachment.attachmentLinkMode !=
- Zotero.Attachments.LINK_MODE_LINKED_URL) {
- path = attachment.getFile().path
- }
- } else {
- path = attachment.getFilePath()
- }
+ path = attachment.getFilePath()
if (path) {
paths.push(path)
}
@@ -753,20 +709,10 @@ ZutiloChrome.zoteroOverlay = {
for (let zitem of zitems) {
for (let addItem of zitems) {
if (zitem != addItem) {
- if (Zotero.version.split('.')[0] < 5) {
- // XXX: Legacy 4.0
- zitem.addRelatedItem(addItem.id)
- } else {
- zitem.addRelatedItem(addItem)
- }
+ zitem.addRelatedItem(addItem)
}
}
- if (Zotero.version.split('.')[0] > 4) {
- // XXX: Legacy 4.0
- zitem.saveTx()
- } else {
- zitem.save()
- }
+ zitem.saveTx()
}
return true;
@@ -777,20 +723,10 @@ ZutiloChrome.zoteroOverlay = {
return true;
},
- copyItems_alt1: function() {
+ copyItems_alt: function(altNum) {
var pref = 'export.quickCopy.setting'
var origSetting = Zotero.Prefs.get(pref)
- var newSetting = Zutilo.Prefs.get('quickCopy_alt1')
- Zotero.Prefs.set(pref, newSetting)
- ZoteroPane.copySelectedItemsToClipboard(false)
- Zotero.Prefs.set(pref, origSetting)
- return true
- },
-
- copyItems_alt2: function() {
- var pref = 'export.quickCopy.setting'
- var origSetting = Zotero.Prefs.get(pref)
- var newSetting = Zutilo.Prefs.get('quickCopy_alt2')
+ var newSetting = Zutilo.Prefs.get('quickCopy_alt' + altNum)
Zotero.Prefs.set(pref, newSetting)
ZoteroPane.copySelectedItemsToClipboard(false)
Zotero.Prefs.set(pref, origSetting)
@@ -850,14 +786,33 @@ ZutiloChrome.zoteroOverlay = {
return true;
},
- copyZoteroItemURI: function() {
+ copyZoteroItemID: function() {
var zitems = this.getSelectedItems();
- var links = [];
+ var ids = [];
if (!this.checkItemNumber(zitems, 'regularNoteAttachment1')) {
return false;
}
+ for (var ii = 0; ii < zitems.length; ii++) {
+
+ ids.push(zitems[ii].key)
+ }
+
+ var clipboardText = ids.join('\r\n');
+
+ this._copyToClipboard(clipboardText)
+
+ return true;
+ },
+ _getZoteroItemURI: function() {
+ let zitems = this.getSelectedItems();
+ let links = [];
+
+ if (!this.checkItemNumber(zitems, 'regularNoteAttachment1')) {
+ return links
+ }
+
var link
for (var ii = 0; ii < zitems.length; ii++) {
link = Zotero.URI.getItemURI(zitems[ii])
@@ -868,11 +823,33 @@ ZutiloChrome.zoteroOverlay = {
links.push(link)
}
- var clipboardText = links.join('\r\n');
+ return links
+ },
+
+ openZoteroItemURI: function() {
+ let links = this._getZoteroItemURI()
+ if (links.length == 0) {
+ return false
+ }
+
+ for (let link of links) {
+ Zutilo.openLink(link)
+ }
+
+ return true
+ },
+
+ copyZoteroItemURI: function() {
+ let links = this._getZoteroItemURI()
+ if (links.length == 0) {
+ return false
+ }
+
+ var clipboardText = links.join('\r\n')
this._copyToClipboard(clipboardText)
- return true;
+ return true
},
createBookSection: function() {
@@ -885,14 +862,12 @@ ZutiloChrome.zoteroOverlay = {
var bookItem = zitems[0];
if (bookItem.itemTypeID != Zotero.ItemTypes.getID('book')) {
- var prompts =
- Components.classes['@mozilla.org/embedcomp/prompt-service;1'].
- getService(Components.interfaces.nsIPromptService);
- prompts.alert(null,
- Zutilo._bundle.
- GetStringFromName('zutilo.error.bookitemtitle'),
- Zutilo._bundle.
- GetStringFromName('zutilo.error.bookitemmessage'));
+ var prompts = Services.prompt;
+ prompts.alert(
+ null,
+ Zutilo.getString('zutilo.error.bookitemtitle'),
+ Zutilo.getString('zutilo.error.bookitemmessage')
+ )
return false;
}
@@ -910,44 +885,23 @@ ZutiloChrome.zoteroOverlay = {
}
// Relate items
- if (Zotero.version.split('.')[0] < 5) {
- // XXX: Legacy 4.0
- bookItem.addRelatedItem(sectionItem.id);
- sectionItem.addRelatedItem(bookItem.id);
+ bookItem.addRelatedItem(sectionItem);
+ sectionItem.addRelatedItem(bookItem);
- sectionItem.save()
- bookItem.save()
+ Zotero.Promise.coroutine(function*() {
+ yield sectionItem.saveTx()
+ yield bookItem.saveTx()
// Update GUI and select textbox
- // document.getElementById('zotero-editpane-item-box').refresh()
- context.editItemInfoGUI();
- } else {
- bookItem.addRelatedItem(sectionItem);
- sectionItem.addRelatedItem(bookItem);
-
- Zotero.Promise.coroutine(function*() {
- yield sectionItem.saveTx()
- yield bookItem.saveTx()
-
- // Update GUI and select textbox
- context.editItemInfoGUI()
- })()
- }
+ context.editItemInfoGUI()
+ })()
}
// Duplicate item and then do the work
- if (Zotero.version.split('.')[0] < 5) {
- // XXX: Legacy 4.0
- ZoteroPane.duplicateSelectedItem();
- zitems = this.getSelectedItems();
- var sectionItem = zitems[0];
- modifyNewItem(this, sectionItem)
- } else {
- Zotero.Promise.coroutine(function*(context) {
- let sectionItem = yield ZoteroPane.duplicateSelectedItem()
- modifyNewItem(context, sectionItem)
- })(this)
- }
+ Zotero.Promise.coroutine(function*(context) {
+ let sectionItem = yield ZoteroPane.duplicateSelectedItem()
+ modifyNewItem(context, sectionItem)
+ })(this)
return true;
},
@@ -962,14 +916,12 @@ ZutiloChrome.zoteroOverlay = {
var sectionItem = zitems[0];
if (sectionItem.itemTypeID != Zotero.ItemTypes.getID('bookSection')) {
- var prompts =
- Components.classes['@mozilla.org/embedcomp/prompt-service;1'].
- getService(Components.interfaces.nsIPromptService);
- prompts.alert(null,
- Zutilo._bundle.
- GetStringFromName('zutilo.error.booksectiontitle'),
- Zutilo._bundle.
- GetStringFromName('zutilo.error.booksectionmessage'));
+ var prompts = Services.prompt;
+ prompts.alert(
+ null,
+ Zutilo.getString('zutilo.error.booksectiontitle'),
+ Zutilo.getString('zutilo.error.booksectionmessage')
+ )
return false;
}
@@ -986,44 +938,23 @@ ZutiloChrome.zoteroOverlay = {
bookItem.setField(Zotero.ItemFields.getID('abstractNote'), '')
// Relate items
- if (Zotero.version.split('.')[0] < 5) {
- // XXX: Legacy 4.0
- bookItem.addRelatedItem(sectionItem.id)
- sectionItem.addRelatedItem(bookItem.id)
+ bookItem.addRelatedItem(sectionItem)
+ sectionItem.addRelatedItem(bookItem)
- bookItem.save()
- sectionItem.save()
+ Zotero.Promise.coroutine(function*() {
+ yield sectionItem.saveTx()
+ yield bookItem.saveTx()
// Update GUI and select textbox
- document.getElementById('zotero-editpane-item-box').refresh()
- context.editItemInfoGUI();
- } else {
- bookItem.addRelatedItem(sectionItem)
- sectionItem.addRelatedItem(bookItem)
-
- Zotero.Promise.coroutine(function*() {
- yield sectionItem.saveTx()
- yield bookItem.saveTx()
-
- // Update GUI and select textbox
- context.editItemInfoGUI()
- })()
- }
+ context.editItemInfoGUI()
+ })()
}
// Duplicate item and then do the work
- if (Zotero.version.split('.')[0] < 5) {
- // XXX: Legacy 4.0
- ZoteroPane.duplicateSelectedItem();
- zitems = this.getSelectedItems();
- var bookItem = zitems[0];
- modifyNewItem(this, bookItem)
- } else {
- Zotero.Promise.coroutine(function*(context) {
- let bookItem = yield ZoteroPane.duplicateSelectedItem()
- modifyNewItem(context, bookItem)
- })(this)
- }
+ Zotero.Promise.coroutine(function*(context) {
+ let bookItem = yield ZoteroPane.duplicateSelectedItem()
+ modifyNewItem(context, bookItem)
+ })(this)
return true;
@@ -1034,100 +965,36 @@ ZutiloChrome.zoteroOverlay = {
/******************************************/
fullOverlay: function() {
// Add all Zutilo overlay elements to the window
- ZutiloChrome.actOnAllDocuments(ZutiloChrome.zoteroOverlay.
- overlayZoteroPane);
+ ZutiloChrome.zoteroOverlay.overlayZoteroPane(document)
this.initKeys();
-
- if (Zotero.version.split('.')[0] > 4) {
- // XXX: Legacy 4.0
- var toolsPopup = document.getElementById('menu_ToolsPopup')
- toolsPopup.addEventListener('popupshowing',
- ZutiloChrome.zoteroOverlay.prefsSeparatorListener, false)
- }
},
overlayZoteroPane: function(doc) {
- var menuPopup
- if (Zotero.version.split('.')[0] < 5) {
- // XXX: Legacy 4.0
- menuPopup = doc.getElementById('zotero-tb-actions-prefs').
- parentElement
- } else {
- menuPopup = doc.getElementById('menu_ToolsPopup')
- }
- ZutiloChrome.zoteroOverlay.prefsMenuItem(doc, menuPopup)
ZutiloChrome.zoteroOverlay.zoteroPopup('item', doc)
ZutiloChrome.zoteroOverlay.zoteroPopup('collection', doc)
},
- prefsSeparatorListener: function() {
- var addonsMenuItem = document.getElementById('menu_addons')
- var nextSibling = addonsMenuItem
- var needSeparator = true
- while (nextSibling) {
- if (nextSibling.nodeName == 'menuseparator') {
- needSeparator = false
- break
- }
- nextSibling = nextSibling.nextSibling
- }
- if (needSeparator) {
- var zutiloSeparator = document.createElement('menuseparator')
- zutiloSeparator.setAttribute('id', 'zutilo-toolsmenu-separator')
- var toolsPopup = document.getElementById('menu_ToolsPopup')
- toolsPopup.insertBefore(zutiloSeparator,
- addonsMenuItem.nextSibling)
- var removeListener = function() {
- toolsPopup.removeChild(zutiloSeparator)
- toolsPopup.removeEventListener('popuphiding',
- removeListener, false)
- }
- toolsPopup.addEventListener('popuphiding', removeListener,
- false)
- }
- },
-
- pageloadListener: function(event) {
- if (event.originalTarget.location == Zutilo.zoteroTabURL) {
- ZutiloChrome.zoteroOverlay.overlayZoteroPane(event.originalTarget);
- }
- },
-
- prefsMenuItem: function(doc, menuPopup) {
- // Add Zutilo preferences item to Tools menu
- if (menuPopup === null) {
- // Don't do anything if elements not loaded yet
- return;
- }
-
- var zutiloMenuItem = doc.createElement('menuitem')
- var zutiloMenuItemID = 'zutilo-preferences'
- zutiloMenuItem.setAttribute('id', zutiloMenuItemID)
- zutiloMenuItem.setAttribute('label',
- Zutilo._bundle.
- GetStringFromName('zutilo.preferences.menuitem'))
- zutiloMenuItem.addEventListener('command',
- function() {
- ZutiloChrome.openPreferences()
- }, false)
-
- menuPopup.appendChild(zutiloMenuItem)
-
- ZutiloChrome.registerXUL(zutiloMenuItemID, doc)
- },
-
/******************************************/
// Item menu functions
/******************************************/
- // Create XUL for Zotero item menu elements
+ // Create XUL for Zotero menu elements
zoteroPopup: function(menuName, doc) {
var zoteroMenu = doc.getElementById(`zotero-${menuName}menu`);
if (zoteroMenu === null) {
// Don't do anything if elements not loaded yet
return;
}
+ let deletions = []
+ for (let child of zoteroMenu.children) {
+ if (child.id.startsWith("zutilo")) {
+ deletions.push(child)
+ }
+ }
+ for (let child of deletions) {
+ zoteroMenu.removeChild(child)
+ }
- var zutiloSeparator = doc.createElement('menuseparator');
+ var zutiloSeparator = doc.createXULElement('menuseparator');
var zutiloSeparatorID = `zutilo-${menuName}menu-separator`;
zutiloSeparator.setAttribute('id', zutiloSeparatorID);
zoteroMenu.appendChild(zutiloSeparator);
@@ -1137,16 +1004,18 @@ ZutiloChrome.zoteroOverlay = {
true, doc);
// Zutilo submenu
- var zutiloSubmenu = doc.createElement('menu');
+ var zutiloSubmenu = doc.createXULElement('menu');
var zutiloSubmenuID = `zutilo-${menuName}menu-submenu`;
zutiloSubmenu.setAttribute('id', zutiloSubmenuID);
- zutiloSubmenu.setAttribute('label',
- Zutilo._bundle.GetStringFromName(`zutilo.${menuName}menu.zutilo`));
+ zutiloSubmenu.setAttribute(
+ 'label',
+ Zutilo.getString(`zutilo.${menuName}menu.zutilo`)
+ )
zoteroMenu.appendChild(zutiloSubmenu);
ZutiloChrome.registerXUL(zutiloSubmenuID, doc);
// Zutilo submenu popup
- var zutiloSubmenuPopup = doc.createElement('menupopup');
+ var zutiloSubmenuPopup = doc.createXULElement('menupopup');
zutiloSubmenuPopup.setAttribute('id', `zutilo-${menuName}menu-submenupopup`);
zutiloSubmenu.appendChild(zutiloSubmenuPopup);
@@ -1177,6 +1046,10 @@ ZutiloChrome.zoteroOverlay = {
return this.pasteJSON()
}
+ pasteJSONItemType() {
+ return this.pasteJSON()
+ }
+
copyZoteroCollectionSelectLink() {
return ZutiloChrome.zoteroOverlay.Collection.selected()
}
@@ -1225,6 +1098,7 @@ ZutiloChrome.zoteroOverlay = {
createMenuItems: function(menuName, menuPopup, IDPrefix, elementsAreRoot, doc) {
var menuFunc;
for (const functionName of Zutilo._menuFunctions[menuName]) {
+ debug(functionName)
menuFunc = this.zoteroMenuItem(menuName, functionName, IDPrefix, doc);
menuPopup.appendChild(menuFunc);
if (elementsAreRoot) {
@@ -1235,15 +1109,28 @@ ZutiloChrome.zoteroOverlay = {
// Create Zotero item menu item
zoteroMenuItem: function(menuName, functionName, IDPrefix, doc) {
- var menuFunc = doc.createElement('menuitem');
+ var menuFunc = doc.createXULElement('menuitem');
menuFunc.setAttribute('id', IDPrefix + functionName);
- menuFunc.setAttribute('label',
- Zutilo._bundle.GetStringFromName(`zutilo.${menuName}menu.${functionName}`));
- menuFunc.addEventListener('command',
- function(event) {
- event.stopPropagation();
- ZutiloChrome.zoteroOverlay[functionName]();
- }, false);
+ menuFunc.setAttribute(
+ 'label',
+ Zutilo.getString(`zutilo.${menuName}menu.${functionName}`)
+ )
+ let match = functionName.match(/(.*_alt)(\d+)$/)
+ if (match === null) {
+ menuFunc.addEventListener('command',
+ function(event) {
+ event.stopPropagation()
+ ZutiloChrome.zoteroOverlay[functionName]()
+ }, false)
+ } else {
+ let base = match[1]
+ let num = match[2]
+ menuFunc.addEventListener('command',
+ function(event) {
+ event.stopPropagation()
+ ZutiloChrome.zoteroOverlay[base](num)
+ }, false)
+ }
return menuFunc;
},
@@ -1251,7 +1138,7 @@ ZutiloChrome.zoteroOverlay = {
// Keyboard shortcut functions
/******************************************/
initKeys: function() {
- var keyset = document.createElement('keyset');
+ var keyset = document.createXULElement('keyset');
this.keyset = keyset;
this.keyset.setAttribute('id', 'zutilo-keyset');
document.getElementById('mainKeyset').parentNode.
@@ -1259,12 +1146,21 @@ ZutiloChrome.zoteroOverlay = {
ZutiloChrome.XULRootElements.push(this.keyset.id);
for (var keyLabel in Zutilo.keys.shortcuts) {
- this.createKey(keyLabel);
+ this.createKey(keyLabel)
+ }
+ },
+
+ reloadKeys: function() {
+ for (let key of this.keyset.children) {
+ this.keyset.removeChild(key)
+ }
+ for (var keyLabel in Zutilo.keys.shortcuts) {
+ this.createKey(keyLabel)
}
},
createKey: function(keyLabel) {
- var key = document.createElement('key');
+ var key = document.createXULElement('key');
key.setAttribute('id', Zutilo.keys.keyID(keyLabel));
this.keyset.appendChild(key);
// Set label attribute so that keys show up nicely in keyconfig
@@ -1294,6 +1190,12 @@ ZutiloChrome.zoteroOverlay = {
updateKey: function(keyLabel) {
var key = document.getElementById(Zutilo.keys.keyID(keyLabel));
+ if (key === null) {
+ // updateKey gets triggered before keys have been set when Zutilo
+ // is reinstalled if shortcuts had been set during the previous
+ // install previously defined
+ return
+ }
key.removeAttribute('modifiers');
key.removeAttribute('key');
@@ -1326,7 +1228,7 @@ ZutiloChrome.zoteroOverlay = {
// all selected regular items.
// To get just the selected attachment items, use
// Zutilo.siftItems(inputArray, 'attachment') instead.
- getSelectedAttachments: function() {
+ getSelectedAttachments: function(mode) {
var zitems = this.getSelectedItems();
if (!zitems) {
@@ -1349,6 +1251,12 @@ ZutiloChrome.zoteroOverlay = {
}
}
+ if (mode !== undefined) {
+ attachmentItems = attachmentItems.filter(
+ (item) => item.attachmentLinkMode == mode
+ )
+ }
+
// Return attachments after removing duplicate items (when parent and
// child are selected)
return this.removeDuplicateItems(attachmentItems);
@@ -1446,26 +1354,29 @@ ZutiloChrome.zoteroOverlay = {
checkItemNumber: function(itemArray, checkType) {
var checkBool = true;
- var prompts = Components.
- classes['@mozilla.org/embedcomp/prompt-service;1'].
- getService(Components.interfaces.nsIPromptService);
+ var prompts = Services.prompt;
- var errorTitle = Zutilo._bundle.
- GetStringFromName('zutilo.checkItems.errorTitle');
+ var errorTitle = Zutilo.getString('zutilo.checkItems.errorTitle')
switch (checkType) {
case 'regular1':
case 'regularOrNote1':
case 'regularNoteAttachment1':
if (!itemArray.length) {
- prompts.alert(null, errorTitle, Zutilo._bundle.
- GetStringFromName('zutilo.checkItems.' + checkType));
+ prompts.alert(
+ null,
+ errorTitle,
+ Zutilo.getString('zutilo.checkItems.' + checkType)
+ )
checkBool = false;
}
break;
case 'regularSingle':
if ((!itemArray.length) || (itemArray.length > 1)) {
- prompts.alert(null, errorTitle, Zutilo._bundle.
- GetStringFromName('zutilo.checkItems.regularSingle'));
+ prompts.alert(
+ null,
+ errorTitle,
+ Zutilo.getString('zutilo.checkItems.regularSingle')
+ )
checkBool = false;
}
break;
@@ -1473,15 +1384,21 @@ ZutiloChrome.zoteroOverlay = {
case 'regularOrNote2':
case 'regularNoteAttachment2':
if ((!itemArray.length) || (itemArray.length < 2)) {
- prompts.alert(null, errorTitle, Zutilo._bundle.
- GetStringFromName('zutilo.checkItems.' + checkType));
+ prompts.alert(
+ null,
+ errorTitle,
+ Zutilo.getString('zutilo.checkItems.' + checkType)
+ )
checkBool = false;
}
break;
case 'attachment1':
if (!itemArray.length) {
- prompts.alert(null, errorTitle, Zutilo._bundle.
- GetStringFromName('zutilo.checkItems.attachment1'));
+ prompts.alert(
+ null,
+ errorTitle,
+ Zutilo.getString('zutilo.checkItems.attachment1')
+ )
checkBool = false;
}
break;
diff --git a/addon/chrome/content/zutilo/zutilo.jsm b/addon/chrome/content/zutilo/zutilo.js
similarity index 64%
rename from addon/chrome/content/zutilo/zutilo.jsm
rename to addon/chrome/content/zutilo/zutilo.js
index 754fe49..9461daf 100644
--- a/addon/chrome/content/zutilo/zutilo.jsm
+++ b/addon/chrome/content/zutilo/zutilo.js
@@ -3,16 +3,13 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
'use strict'
-/* global gBrowser, window, document, AddonManager, Components, Services */
-/* global CustomizableUI */
+/* global Components, Services */
+// eslint-disable-next-line no-unused-vars
var EXPORTED_SYMBOLS = ['Zutilo'];
-var Cc = Components.classes
-var Ci = Components.interfaces
-var Cu = Components.utils
-Cu.import('resource://gre/modules/AddonManager.jsm');
-Cu.import('resource://gre/modules/Services.jsm');
+const {classes: Cc, interfaces: Ci, utils: Cu} = Components;
+var Zotero = null
/**
* Zutilo namespace.
@@ -28,81 +25,64 @@ var Zutilo = {
// no argument and that should be able to be called from the Zotero item
// menu
_menuFunctions: {
- item: ['copyTags', 'removeTags', 'pasteTags', 'relateItems',
- 'showAttachments', 'modifyAttachments', 'modifyURLAttachments',
- 'copyAttachmentPaths',
- 'copyCreators', 'copyItems', 'copyItems_alt1', 'copyItems_alt2',
- 'copyZoteroSelectLink', 'copyZoteroItemURI', 'createBookSection',
- 'createBookItem', 'copyChildIDs', 'relocateChildren',
- 'copyJSON', 'pasteJSONIntoEmptyFields', 'pasteJSONFromNonEmptyFields', 'pasteJSONAll',
- ],
- collection: ['copyZoteroCollectionSelectLink', 'copyZoteroCollectionURI'],
+ item: [],
+ collection: ['copyZoteroCollectionSelectLink', 'copyZoteroCollectionURI']
},
- ffcacmFunctions: [
- {name: 'attachPage',
- condition: ''},
- {name: 'attachLink',
- condition: 'onLink'}],
+ _itemMenuItems_static: ['copyTags', 'removeTags', 'pasteTags', 'relateItems',
+ 'showAttachments', 'modifyAttachments', 'modifyURLAttachments',
+ 'copyAttachmentPaths', 'copyCreators', 'copyItems',
+ 'copyZoteroSelectLink', 'copyZoteroItemID', 'copyZoteroItemURI', 'createBookSection',
+ 'createBookItem', 'copyChildIDs', 'relocateChildren', 'copyJSON',
+ 'pasteJSONIntoEmptyFields', 'pasteJSONFromNonEmptyFields',
+ 'pasteJSONAll', 'pasteJSONItemType', 'openZoteroItemURI'
+ ],
_bundle: Cc['@mozilla.org/intl/stringbundle;1'].
getService(Components.interfaces.nsIStringBundleService).
createBundle('chrome://zutilo/locale/zutilo.properties'),
itemClipboard: [],
-
- appName: function() {
- var appInfo = Cc['@mozilla.org/xre/app-info;1'].
- getService(Ci.nsIXULAppInfo);
- var appName;
- switch (appInfo.ID) {
- case '{ec8030f7-c20a-464f-9b0e-13a3a9e97384}':
- // Firefox
- appName = 'Firefox';
- break;
- case 'zotero@chnm.gmu.edu':
- // Zotero Standalone
- appName = 'Zotero';
- break;
- case 'juris-m@juris-m.github.io':
- // Juris-M Standalone
- appName = 'Zotero';
- break;
- default:
- // Unknown app -- assume it is a Firefox variant...
- appName = 'Firefox';
- }
-
- return appName;
- }(),
+ rootURI: null,
/********************************************/
// Zutilo setup functions
/********************************************/
- init: function() {
- this.observers.register();
- Services.scriptloader.loadSubScript('chrome://zutilo/content/keys.js',
- this);
+ init: function(rootURI, ZoteroHandle) {
+ // There must be a better way to access Zotero than this
+ Zotero = ZoteroHandle
+ this.rootURI = rootURI
- Zutilo.Prefs.init();
- // Zutilo.ZoteroPrefs.init();
+ // Must be run before Prefs.init()
+ Services.scriptloader.loadSubScript(
+ 'chrome://zutilo/content/keys.js',
+ this
+ )
- this.prepareWindows();
+ this.observers.register()
+ Zutilo.Prefs.init()
+ // Zutilo.ZoteroPrefs.init()
- if (this.appName == 'Firefox') {
- Cu.import('resource:///modules/CustomizableUI.jsm')
- CustomizableUI.addListener(saveIconListener)
- }
+
+ this.prepareWindows()
},
cleanup: function() {
- if (this.appName == 'Firefox') {
- CustomizableUI.removeListener(saveIconListener)
- }
Zutilo.Prefs.unregister();
Zutilo.observers.unregister();
Services.wm.removeListener(Zutilo.windowListener);
},
+ refreshItemMenuItems: function() {
+ this._menuFunctions.item = []
+ for (let item of this._itemMenuItems_static) {
+ this._menuFunctions.item.push(item)
+ }
+ let numAlts = Zutilo.Prefs.get('copyItems_alt_total')
+ for (let altNum = 1; altNum < numAlts + 1; altNum++) {
+ this._menuFunctions.item.push('copyItems_alt' + altNum)
+ }
+ },
+
prepareWindows: function() {
// Load scripts for previously opened windows
var windows = Services.wm.getEnumerator('navigator:browser');
@@ -130,9 +110,9 @@ var Zutilo = {
}, false)
},
- onCloseWindow: function(xulWindow) {},
+ onCloseWindow: function(_xulWindow) {},
- onWindowTitleChange: function(xulWindow, newTitle) {}
+ onWindowTitleChange: function(_xulWindow, _newTitle) {}
},
loadWindowChrome: function(scope) {
@@ -142,28 +122,10 @@ var Zutilo = {
Services.scriptloader.loadSubScript(
'chrome://zutilo/content/zutiloChrome.js', scope);
- scope.ZutiloChrome.init();
-
- // Firefox specific setup
- if (Zutilo.appName == 'Firefox') {
- Services.scriptloader.loadSubScript(
- 'chrome://zutilo/content/firefoxOverlay.js', scope);
- scope.ZutiloChrome.firefoxOverlay.init();
- }
-
- var doZoteroOverlay = function() {
- Services.scriptloader.loadSubScript(
- 'chrome://zutilo/content/zoteroOverlay.js', scope);
- scope.ZutiloChrome.zoteroOverlay.init();
- };
- // Zotero specific setup (only run if Zotero is active)
- if (Zutilo.appName == 'Zotero') {
- doZoteroOverlay();
- } else {
- // Only overlay Zotero in Firefox if it is installed and active
- this.checkZoteroActiveAndCallIf(true, this, doZoteroOverlay);
- }
+ Services.scriptloader.loadSubScript(
+ 'chrome://zutilo/content/zoteroOverlay.js', scope);
+ scope.ZutiloChrome.zoteroOverlay.init();
},
observers: {
@@ -173,7 +135,7 @@ var Zutilo = {
switch (topic) {
case 'zutilo-zoteroitemmenu-update':
- case 'zutilo-zoterocollectionmenu-update':
+ case 'zutilo-zoterocollectionmenu-update': {
const menuName = (topic.includes('item') ? 'item' : 'collection')
while (windows.hasMoreElements()) {
tmpWin = windows.getNext();
@@ -181,13 +143,11 @@ var Zutilo = {
'undefined' !=
typeof tmpWin.ZutiloChrome.zoteroOverlay) {
- tmpWin.ZutiloChrome.actOnAllDocuments(
- tmpWin.ZutiloChrome.zoteroOverlay.
- refreshZoteroPopup.bind(tmpWin.ZutiloChrome.zoteroOverlay, menuName));
+ tmpWin.ZutiloChrome.zoteroOverlay.refreshZoteroPopup(menuName)
}
}
break;
-
+ }
case 'zutilo-shortcut-update':
while (windows.hasMoreElements()) {
tmpWin = windows.getNext();
@@ -223,24 +183,6 @@ var Zutilo = {
/********************************************/
// General use utility functions
/********************************************/
- checkZoteroActiveAndCallIf: function(stateBool, scope, func) {
- // stateBool: func is called if Zotero's isActive bool matches stateBool
- // scope: scope that func is called in
- // func: function to be called if Zotero is active
- // Additional arguments of doIfZoteroActive are passed to func
-
- var args = [];
- for (var i = 3, len = arguments.length; i < len; ++i) {
- args.push(arguments[i]);
- }
-
- AddonManager.getAddonByID(Zutilo.zoteroID, function(aAddon) {
- if (aAddon && (aAddon.isActive == stateBool)) {
- func.apply(scope, args);
- }
- });
- },
-
openLink: function(url) {
// first construct an nsIURI object using the ioservice
var ioservice = Cc['@mozilla.org/network/io-service;1']
@@ -258,9 +200,20 @@ var Zutilo = {
escapeForRegExp: function(str) {
// Escape all symbols with special regular expression meanings
// Function taken from http://stackoverflow.com/a/6969486
- return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, '\\$&');
+ return str.replace(/[-[\]/{}()*+?.\\^$|]/g, '\\$&');
+ },
+
+ getString: function(name) {
+ let match = name.match(/(.*_alt)(\d+)$/)
+ if (match === null) {
+ return Zutilo._bundle.GetStringFromName(name)
+ } else {
+ let base = match[1]
+ let num = match[2]
+ return Zutilo._bundle.formatStringFromName(base, [num], 1)
+ }
}
-};
+}
Zutilo.Prefs = {
@@ -268,13 +221,18 @@ Zutilo.Prefs = {
this.prefBranch = Services.prefs.getBranch('extensions.zutilo.');
// Register observer to handle pref changes
- this.register();
- this.setDefaults();
+ this.setDefaults()
+ this.register()
+
+
},
setDefaults: function() {
var defaults = Services.prefs.getDefaultBranch('extensions.zutilo.');
+ defaults.setIntPref('copyItems_alt_total', 2)
+ Zutilo.refreshItemMenuItems()
+ Zutilo.keys.refreshAlts()
// Preferences for _menuFunctions
for (const menuName of ['item', 'collection']) {
for (let func of Zutilo._menuFunctions[menuName]) {
@@ -293,8 +251,12 @@ Zutilo.Prefs = {
JSON.stringify({modifiers: '', key: '', keycode: ''}));
}
// Alternative QuickCopy translators
- defaults.setCharPref('quickCopy_alt1', '')
- defaults.setCharPref('quickCopy_alt2', '')
+ let numAlts = Zutilo.Prefs.get('copyItems_alt_total')
+ for (let altNum = 1; altNum < numAlts + 1; altNum++) {
+ defaults.setCharPref('quickCopy_alt' + altNum, '')
+ }
+ // locateItem engine label
+ defaults.setCharPref('locateItemEngine', 'Google Scholar Search')
// Other preferences
defaults.setCharPref('attachLinkAppearance', 'Zotero');
defaults.setCharPref('attachmentImportProcessType', 'Zotero');
@@ -302,6 +264,15 @@ Zutilo.Prefs = {
defaults.setCharPref('lastVersion', '');
defaults.setBoolPref('showStatusPopupItems', true);
defaults.setBoolPref('warnZoteroNotActive', true);
+
+ Zotero.PreferencePanes.register({
+ pluginID: Zutilo.id,
+ src: Zutilo.rootURI + 'chrome/content/zutilo/preferences.xhtml',
+ scripts: [
+ Zutilo.rootURI + 'chrome/content/zutilo/preferences.js'
+ // Zutilo.rootURI + 'chrome/content/zutilo/keyconfig_adapted.js'
+ ],
+ })
},
get: function(pref, global) {
@@ -327,27 +298,22 @@ Zutilo.Prefs = {
}
}
catch (e) {
- throw ('Invalid Zutilo pref call for ' + pref);
+ throw new Error('Invalid Zutilo pref call for ' + pref);
}
return prefVal;
},
set: function(pref, value) {
- try {
- switch (this.prefBranch.getPrefType(pref)){
- case this.prefBranch.PREF_BOOL:
- return this.prefBranch.setBoolPref(pref, value);
- case this.prefBranch.PREF_STRING:
- return this.prefBranch.setCharPref(pref, value);
- case this.prefBranch.PREF_INT:
- return this.prefBranch.setIntPref(pref, value);
- }
- }
- catch (e) {
- throw(e);
- // throw ('Invalid preference "' + pref + '"');
+ switch (this.prefBranch.getPrefType(pref)){
+ case this.prefBranch.PREF_BOOL:
+ return this.prefBranch.setBoolPref(pref, value);
+ case this.prefBranch.PREF_STRING:
+ return this.prefBranch.setCharPref(pref, value);
+ case this.prefBranch.PREF_INT:
+ return this.prefBranch.setIntPref(pref, value);
}
+
return false;
},
@@ -356,7 +322,7 @@ Zutilo.Prefs = {
this.prefBranch.clearUserPref(pref);
}
catch (e) {
- throw ('Invalid preference "' + pref + '"');
+ throw new Error('Invalid preference "' + pref + '"');
}
},
@@ -381,26 +347,41 @@ Zutilo.Prefs = {
var prefParts;
- // Check for itemmenu preference change. Refresh item menu if there is
- // a change
- if (data.indexOf('itemmenu') === 0) {
+ if (data === 'copyItems_alt_total') {
+ Zutilo.refreshItemMenuItems()
+ // In case we need to add new defaults
+ Zutilo.Prefs.unregister()
+ Zutilo.Prefs.setDefaults()
+ Zutilo.Prefs.register()
+
+ let windows = Services.wm.getEnumerator('navigator:browser')
+ while (windows.hasMoreElements()) {
+ let tmpWin = windows.getNext()
+
+ if (typeof tmpWin.ZutiloChrome == 'undefined') {
+ continue
+ }
+ if (typeof tmpWin.ZutiloChrome.zoteroOverlay != 'undefined') {
+ tmpWin.ZutiloChrome.zoteroOverlay.reloadKeys()
+ tmpWin.ZutiloChrome.zoteroOverlay.zoteroPopup('item', tmpWin.document)
+ }
+ }
+
+ } else if (data.indexOf('itemmenu') === 0) {
prefParts = data.split('.');
if (Zutilo._menuFunctions.item.includes(prefParts[1])) {
Services.obs.notifyObservers(null,
'zutilo-zoteroitemmenu-update',
null);
}
- }
- if (data.indexOf('collectionmenu') === 0) {
+ } else if (data.indexOf('collectionmenu') === 0) {
prefParts = data.split('.');
if (Zutilo._menuFunctions.collection.includes(prefParts[1])) {
Services.obs.notifyObservers(null,
'zutilo-zoterocollectionmenu-update',
null);
}
- }
-
- if (data.indexOf('shortcut') === 0) {
+ } else if (data.indexOf('shortcut') === 0) {
prefParts = data.split('.');
if (prefParts[1] in Zutilo.keys.shortcuts) {
Services.obs.notifyObservers(null,
@@ -408,25 +389,9 @@ Zutilo.Prefs = {
}
}
}
-};
-
-
-/* Zotero save button methods */
-
-var saveIconListener = {
- onWidgetAdded: function(widgetID, area, position) {
- if (widgetID == 'zotero-toolbar-buttons' ||
- widgetID == 'zotero-toolbar-save-button-single') {
- var windows = Services.wm.getEnumerator('navigator:browser')
- let win
- while (windows.hasMoreElements()) {
- win = windows.getNext()
- win.ZutiloChrome.firefoxOverlay.setupStatusPopup()
- }
- }
- }
}
+
// This object was used to watch a Zotero pref, but it's not necessary now.
// Leaving Zutilo.ZoteroPrefs code here for possible future use
/*
diff --git a/addon/chrome/content/zutilo/zutiloChrome.js b/addon/chrome/content/zutilo/zutiloChrome.js
index fc63d1f..298bce6 100644
--- a/addon/chrome/content/zutilo/zutiloChrome.js
+++ b/addon/chrome/content/zutilo/zutiloChrome.js
@@ -4,7 +4,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
'use strict';
-/* global gBrowser, window, document, AddonManager, Components, Services */
+/* global window, document, AddonManager, Components, Services */
/* global Zutilo, ZutiloChrome */
/******************************************/
// Include core modules and built-in modules
@@ -12,8 +12,7 @@ var Cc = Components.classes
var Ci = Components.interfaces
var Cu = Components.utils
Cu.import('resource://gre/modules/AddonManager.jsm');
-Cu.import('resource://gre/modules/Services.jsm');
-Cu.import('chrome://zutilo/content/zutilo.jsm');
+Cu.import('chrome://zutilo/content/zutilo.js');
/******************************************/
// Initialization
@@ -22,60 +21,6 @@ Cu.import('chrome://zutilo/content/zutilo.jsm');
// elements).
ZutiloChrome.XULRootElements = [];
-ZutiloChrome.init = function() {
- window.setTimeout(function() {
- if (typeof ZutiloChrome != 'undefined') {
- ZutiloChrome.showUpgradeMessage();
- }
- }, 500);
-};
-
-ZutiloChrome.showUpgradeMessage = function() {
- var lastVersion = Zutilo.Prefs.get('lastVersion');
-
- AddonManager.getAddonByID(Zutilo.id,
- function(aAddon) {
- if (lastVersion != aAddon.version) {
- Zutilo.Prefs.set('lastVersion', aAddon.version);
-
- // lastVersion == '' for new install. Don't show upgrade
- // message to new users
- var upgradeMessageStr = Zutilo._bundle.
- GetStringFromName('zutilo.startup.upgrademessage');
- if (lastVersion !== '' && upgradeMessageStr !== '') {
- window.openDialog(
- 'chrome://zutilo/content/zutiloUpgraded.xul',
- 'zutilo-startup-upgradewindow', 'chrome, centerscreen',
- {upgradeMessage: upgradeMessageStr});
- }
- }
- }
- );
-};
-
-/******************************************/
-// UI functions
-/******************************************/
-
-// Open Zutilo preferences window
-ZutiloChrome.openPreferences = function() {
- if (!('_preferencesWindow' in this) || this._preferencesWindow === null ||
- this._preferencesWindow.closed) {
- var featureStr = 'chrome, titlebar, toolbar=yes, resizable, ' +
- 'centerscreen, ';
- var modalStr = Services.prefs.
- getBoolPref('browser.preferences.instantApply')?
- 'dialog=no' : 'modal';
- featureStr = featureStr + modalStr;
-
- this._preferencesWindow =
- window.openDialog('chrome://zutilo/content/preferences.xul',
- 'zutilo-prefs-window', featureStr);
- }
-
- this._preferencesWindow.focus();
-};
-
/******************************************/
// XUL related functions
/******************************************/
@@ -100,20 +45,6 @@ ZutiloChrome.registerXUL = function(elementIDs, doc) {
// Remove all root XUL elements from main document and any Zotero tab documents
ZutiloChrome.removeXUL = function() {
this.removeDocumentXUL(document, this.XULRootElements);
-
- if (Zutilo.appName == 'Firefox') {
- for (let ii = 0; ii < gBrowser.browsers.length; ii++) {
- let tmpBrowser = gBrowser.getBrowserAtIndex(ii);
-
- if (tmpBrowser.contentDocument.location == Zutilo.zoteroTabURL &&
- typeof tmpBrowser.contentDocument.ZutiloXULRootElements !=
- 'undefined') {
- this.removeDocumentXUL(tmpBrowser.contentDocument,
- tmpBrowser.contentDocument.ZutiloXULRootElements);
- delete tmpBrowser.contentDocument.ZutiloXULRootElements;
- }
- }
- }
};
ZutiloChrome.removeDocumentXUL = function(doc, XULRootElementIDs) {
@@ -126,23 +57,6 @@ ZutiloChrome.removeDocumentXUL = function(doc, XULRootElementIDs) {
}
};
-// documentFunction is a function that takes a DOM document as its argument.
-// Call that function for window.document and for any Zotero tab
-// contentDocument that is currently loaded.
-ZutiloChrome.actOnAllDocuments = function(documentFunction) {
- documentFunction(document);
-
- if (Zutilo.appName == 'Firefox') {
- for (let ii = 0; ii < gBrowser.browsers.length; ii++) {
- let tmpBrowser = gBrowser.getBrowserAtIndex(ii);
-
- if (tmpBrowser.contentDocument.location == Zutilo.zoteroTabURL) {
- documentFunction(tmpBrowser.contentDocument);
- }
- }
- }
-};
-
/* Remove all descendants of parentElem whose ids begin with childLabel
This function is useful for removing XUL that is added to elements (like
menu popups) that periodically stripped of their children and recreated.
@@ -165,48 +79,3 @@ ZutiloChrome.removeLabeledChildren = function(parentElem, childLabel) {
}
}
};
-
-/******************************************/
-// Utility functions
-/******************************************/
-
-// Get string from clipboard
-ZutiloChrome.getFromClipboard = function(silent) {
-
- var trans = Components.classes['@mozilla.org/widget/transferable;1'].
- createInstance(Components.interfaces.nsITransferable);
- if ('init' in trans) {
- trans.init(window.QueryInterface(Ci.nsIInterfaceRequestor).
- getInterface(Ci.nsIWebNavigation));
- }
- trans.addDataFlavor('text/unicode');
-
- Services.clipboard.getData(trans, Services.clipboard.kGlobalClipboard);
-
- var str = {}
- var strLength = {}
-
- try {
- trans.getTransferData('text/unicode', str, strLength);
- } catch (err) {
- if (!silent) {
- var prompts = Cc['@mozilla.org/embedcomp/prompt-service;1'].
- getService(Components.interfaces.nsIPromptService);
- prompts.alert(null, Zutilo._bundle.
- GetStringFromName('zutilo.error.pastetitle'),
- Zutilo._bundle.
- GetStringFromName('zutilo.error.pastemessage'));
- }
- return '';
- }
-
- var pasteText
- if (str) {
- pasteText = str.value.
- QueryInterface(Components.interfaces.nsISupportsString).data;
- } else {
- pasteText = '';
- }
-
- return pasteText;
-};
diff --git a/addon/chrome/content/zutilo/zutiloUpgraded.js b/addon/chrome/content/zutilo/zutiloUpgraded.js
deleted file mode 100644
index 26ec5b1..0000000
--- a/addon/chrome/content/zutilo/zutiloUpgraded.js
+++ /dev/null
@@ -1,18 +0,0 @@
-/* Copyright 2012 Will Shanks.
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-'use strict';
-/* global window, document, Components */
-Components.utils.import('chrome://zutilo/content/zutilo.jsm');
-
-function upgradeInit() {
- var upgradeDescription = document.
- getElementById('zutilo-startup-upgradedescription');
- upgradeDescription.textContent = window.arguments[0].upgradeMessage;
-}
-
-window.addEventListener('load', function(_e) {
- upgradeInit();
- }, false);
diff --git a/addon/chrome/content/zutilo/zutiloUpgraded.xul b/addon/chrome/content/zutilo/zutiloUpgraded.xul
deleted file mode 100644
index f9c0a91..0000000
--- a/addon/chrome/content/zutilo/zutiloUpgraded.xul
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/addon/chrome/locale/de/zutilo/zutilo.dtd b/addon/chrome/locale/de/zutilo/zutilo.dtd
deleted file mode 100644
index 6184b5b..0000000
--- a/addon/chrome/locale/de/zutilo/zutilo.dtd
+++ /dev/null
@@ -1,50 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/addon/chrome/locale/de/zutilo/zutilo.properties b/addon/chrome/locale/de/zutilo/zutilo.properties
index d81ae81..d7f5979 100644
--- a/addon/chrome/locale/de/zutilo/zutilo.properties
+++ b/addon/chrome/locale/de/zutilo/zutilo.properties
@@ -1,9 +1,3 @@
-zutilo.startup.upgrademessage =
-
-zutilo.preferences.menuitem = Zutilo Einstellungen...
-
-zutilo.error.pastetitle = Zutilo: Zwischenablage Fehler
-zutilo.error.pastemessage = Zutilo versucht, Text aus der Zwischenablage zu kopieren, aber es wurde kein gültiger Text gefunden.
zutilo.error.bookitemtitle = Zutilo: invalid item type
zutilo.error.bookitemmessage = The attempted command only works for items of type book.
zutilo.error.booksectiontitle = Zutilo: invalid item type
@@ -11,8 +5,6 @@ zutilo.error.booksectionmessage = The attempted command only works for items of
zutilo.error.copynoitemstitle = Invalid copy selection
zutilo.error.copynoitemstext = No valid items selected for copying. The clipboard has not been modified.
-zutilo.context.savelink = An Zotero Eintrag anhängen
-
zutilo.checkItems.errorTitle = Zutilo: Eintragauswahl Fehler
zutilo.checkItems.regular1 = Bitte mindestens einen Normaleintrag auswählen.
zutilo.checkItems.regularSingle = Bitte einen (und nur einen) Normaleintrag auswählen.
@@ -21,7 +13,7 @@ zutilo.checkItems.regularOrNote2 = Bitte mindestens zwei Normaleinträge
zutilo.checkItems.regularNoteAttachment2 = Please select at least two regular items, notes, or attachments.
zutilo.checkItems.regularOrNote1= Bitte mindestens einen Normaleintrag oder eine Notiz auswählen.
zutilo.checkItems.regularNoteAttachment1= Please select at least one regular item, note, or attachment.
-zutilo.checkItems.attachment1 = Bitte mindestens einen Anhang oder einen Normaleintrag mit einem Anhang auswählen.
+zutilo.checkItems.attachment1 = Bitte mindestens einen wählbaren Anhang oder einen Normaleintrag mit einem wählbarem Anhang auswählen.
zutilo.attachments.showTitle = Zutilo: Pfad des Anhangs %S von %S gezeigt
zutilo.attachments.modifyTitle = Zutilo: Anhänge ändern
@@ -43,10 +35,11 @@ zutilo.itemmenu.modifyURLAttachments = Modify attached urls
zutilo.itemmenu.showAttachments = Anhangpfade zeigen
zutilo.itemmenu.copyAttachmentPaths = Copy attachment paths
zutilo.itemmenu.copyItems = Einträge in die Zwischenablage mit Quick-Copy kopieren
-zutilo.itemmenu.copyItems_alt1 = QuickCopy items to clipboard (alt. 1)
-zutilo.itemmenu.copyItems_alt2 = QuickCopy items to clipboard (alt. 2)
+zutilo.itemmenu.copyItems_alt = QuickCopy items to clipboard (alt. %S)
zutilo.itemmenu.copyZoteroSelectLink = Copy select item links
+zutilo.itemmenu.copyZoteroItemID = Copy Zotero IDs
zutilo.itemmenu.copyZoteroItemURI = Copy Zotero URIs
+zutilo.itemmenu.openZoteroItemURI = Open Zotero URIs
zutilo.itemmenu.createBookSection = Create book section
zutilo.itemmenu.createBookItem = Create book item
zutilo.itemmenu.copyChildIDs = Copy child items to relocate
@@ -55,6 +48,7 @@ zutilo.itemmenu.copyJSON = Copy item fields
zutilo.itemmenu.pasteJSONIntoEmptyFields = Paste into empty item fields
zutilo.itemmenu.pasteJSONFromNonEmptyFields = Paste non-empty item fields
zutilo.itemmenu.pasteJSONAll = Paste all item fields
+zutilo.itemmenu.pasteJSONItemType = Paste item type
zutilo.collectionmenu.zutilo = Zutilo
zutilo.collectionmenu.copyZoteroCollectionSelectLink = Copy select collection link
@@ -67,16 +61,17 @@ zutilo.preferences.itemmenu.copyTags = Tags kopieren
zutilo.preferences.itemmenu.removeTags = Remove tags
zutilo.preferences.itemmenu.pasteTags = Tags einfügen
zutilo.preferences.itemmenu.relateItems = Einträge als zugehörig markieren
-zutilo.preferences.itemmenu.modifyURLAttachments= Modify attached URLs
zutilo.preferences.itemmenu.showAttachments = Anhänge zeigen
zutilo.preferences.itemmenu.modifyAttachments= Anhänge ändern
+zutilo.preferences.itemmenu.modifyURLAttachments= Modify attached URLs
zutilo.preferences.itemmenu.copyAttachmentPaths = Copy attachment paths
zutilo.preferences.itemmenu.copyCreators = Autoren kopieren
zutilo.preferences.itemmenu.copyItems = Einträge mit Quick-Copy kopieren
-zutilo.preferences.itemmenu.copyItems_alt1 = QuickCopy items (alt 1)
-zutilo.preferences.itemmenu.copyItems_alt2 = QuickCopy items (alt 2)
+zutilo.preferences.itemmenu.copyItems_alt = QuickCopy items (alt %S)
zutilo.preferences.itemmenu.copyZoteroSelectLink = Copy select item links
+zutilo.preferences.itemmenu.copyZoteroItemID = Copy Zotero IDs
zutilo.preferences.itemmenu.copyZoteroItemURI = Copy Zotero URIs
+zutilo.preferences.itemmenu.openZoteroItemURI = Open Zotero URIs
zutilo.preferences.itemmenu.createBookSection = Create book section
zutilo.preferences.itemmenu.createBookItem = Create book item
zutilo.preferences.itemmenu.copyChildIDs = Copy child items
@@ -85,12 +80,13 @@ zutilo.preferences.itemmenu.copyJSON = Copy item fields
zutilo.preferences.itemmenu.pasteJSONIntoEmptyFields = Paste into empty item fields
zutilo.preferences.itemmenu.pasteJSONFromNonEmptyFields = Paste non-empty item fields
zutilo.preferences.itemmenu.pasteJSONAll = Paste all item fields
+zutilo.preferences.itemmenu.pasteJSONItemType = Paste item type
zutilo.preferences.collectionmenu.Zotero = Zotero context menu
zutilo.preferences.collectionmenu.Zutilo = Zutilo context menu
zutilo.preferences.collectionmenu.Hide = Hide
zutilo.preferences.collectionmenu.copyZoteroCollectionSelectLink = Copy select collection link
-zutilo.preferences.collectionmenu.copyZoteroCollectionURI = Copy Zotero URIs
+zutilo.preferences.collectionmenu.copyZoteroCollectionURI = Copy Zotero URI
zutilo.shortcuts.disabled =
zutilo.shortcuts.unrecognized = <$1>
@@ -110,51 +106,54 @@ zutilo.shortcuts.category.itemcreation = Item creation
zutilo.shortcuts.category.itemediting = Item editing
zutilo.shortcuts.category.other = Other
zutilo.shortcuts.category.uinavigation = UI navigation
+zutilo.shortcuts.category.mdnotes = mdnotes
zutilo.shortcuts.name.copyTags = Tags kopieren
zutilo.shortcuts.name.removeTags = Remove tags
zutilo.shortcuts.name.copyCreators = Autoren kopieren
zutilo.shortcuts.name.pasteTags = Tags einfügen
zutilo.shortcuts.name.relateItems = Einträge als zugehörig markieren
-zutilo.shortcuts.name.modifyURLAttachments = Modify attached URLs
zutilo.shortcuts.name.showAttachments = Anhänge zeigen
zutilo.shortcuts.name.modifyAttachments = Anhänge ändern
+zutilo.shortcuts.name.modifyURLAttachments = Modify attached URLs
zutilo.shortcuts.name.copyAttachmentPaths = Copy attachment paths
zutilo.shortcuts.name.copyItems = Einträge mit Quick-Copy kopieren
-zutilo.shortcuts.name.copyItems_alt1 = QuickCopy items (alt 1)
-zutilo.shortcuts.name.copyItems_alt2 = QuickCopy items (alt 2)
+zutilo.shortcuts.name.copyItems_alt = QuickCopy items (alt %S)
zutilo.shortcuts.name.copyZoteroSelectLink = Copy select item links
+zutilo.shortcuts.name.copyZoteroItemID = Copy Zotero IDs
zutilo.shortcuts.name.copyZoteroItemURI = Copy Zotero URIs
+zutilo.shortcuts.name.openZoteroItemURI = Open Zotero URIs
zutilo.shortcuts.name.createBookSection = Create book section
zutilo.shortcuts.name.createBookItem = Create book item
zutilo.shortcuts.name.copyChildIDs = Copy child items
zutilo.shortcuts.name.relocateChildren = Relocate child items
-zutilo.shortcuts.name.itemInfo = Eintrag Infos bearbeiten
-zutilo.shortcuts.name.addNote = Notiz hinzufügen
-zutilo.shortcuts.name.addTag = Tag hinzufügen
-zutilo.shortcuts.name.relateDialog = Zugehörige Einträge Dialog
-zutilo.shortcuts.name.attachPage = Aktuelle Webseite anhängen
-zutilo.shortcuts.name.saveItemZutilo = Eintrag speichern (Gegenteil der Voreinstellung für Anhang)
-zutilo.shortcuts.name.saveItemWithAttachments = Eintrag mit Anhängen speichern
-zutilo.shortcuts.name.saveItemWithoutAttachments = Eintrag ohne Anhängen speichern
-zutilo.shortcuts.name.toggleZotero = Zotero wechseln
-zutilo.shortcuts.name.focusZotero = Zotero konzentrieren
-zutilo.shortcuts.name.hideZotero = Zotero verbergen
-zutilo.shortcuts.name.saveItemZotero = Eintrag speichern
-zutilo.shortcuts.name.websiteItem = Webseiten Eintrag erstellen
-zutilo.shortcuts.name.newItemMenu = Menu Neuer-Eintrag öffnen
+zutilo.shortcuts.name.itemInfo = Item pane: Edit item info
+zutilo.shortcuts.name.addNote = Item pane: Add note
+zutilo.shortcuts.name.addTag = Item pane: Add tag
+zutilo.shortcuts.name.relateDialog = Item pane: Add related item
+zutilo.shortcuts.name.newItemMenu = Open new item menu
+zutilo.shortcuts.name.advancedSearch = Advanced search
zutilo.shortcuts.name.lookupID = Lookup item by identifier
zutilo.shortcuts.name.linked = Create link to file
zutilo.shortcuts.name.attachLinkFile = Link auf Datei anhängen
zutilo.shortcuts.name.duplicateItem = Ausgewählten Eintrag duplizieren
zutilo.shortcuts.name.generateReport = Generate report
+zutilo.shortcuts.name.openRunJSWindow = Open Run JavaScript window
zutilo.shortcuts.name.openStyleEditor = Zitierstil Editor öffnen
zutilo.shortcuts.name.recognizeSelected = Rufe Metadaten für PDF-Datei ab
zutilo.shortcuts.name.createParentItemsFromSelected = Erstelle übergeordneten Eintrag
zutilo.shortcuts.name.renameSelectedAttachmentsFromParents = Datei umbenennen
zutilo.shortcuts.name.attachURI = Attachments: Attach link to URI
+zutilo.shortcuts.name.findPDF = Find Available PDFs
zutilo.shortcuts.name.attachStoredFile = Attachments: Attach stored copy of file
zutilo.shortcuts.name.showFile = Show attached file
+zutilo.shortcuts.name.copyJSON = Copy item fields
+zutilo.shortcuts.name.pasteJSONIntoEmptyFields = Paste into empty item fields
+zutilo.shortcuts.name.pasteJSONFromNonEmptyFields = Paste non-empty item fields
+zutilo.shortcuts.name.pasteJSONAll = Paste all item fields
+zutilo.shortcuts.name.pasteJSONItemType = Paste item type
+zutilo.shortcuts.name.copyZoteroCollectionSelectLink = Copy select collection link
+zutilo.shortcuts.name.copyZoteroCollectionURI = Copy collection Zotero URI
zutilo.shortcuts.name.focusZoteroCollectionsTree = Sammlung-Reiter konzentrieren
zutilo.shortcuts.name.focusZoteroItemsTree = Einträge-Reiter konzentrieren
@@ -168,16 +167,22 @@ zutilo.shortcuts.name.toggleZoteroItemPane = Item pane: Show / hide
zutilo.shortcuts.name.toggleZoteroCollectionsPane = Collections pane: Show / hide
zutilo.shortcuts.name.toggleZoteroItemPaneStickySplitter = Item pane: Show / hide (sticky)
zutilo.shortcuts.name.toggleZoteroCollectionsPaneStickySplitter = Collections pane: Show / hide (sticky)
+zutilo.shortcuts.name.locateMenu = Show Locate menu
+zutilo.shortcuts.name.locateItem = Locate with Google Scholar
+zutilo.shortcuts.name.toggleAutomaticTags = Tag selector: toggle automatic
+zutilo.shortcuts.name.toggleAllTags = Tag selector: toggle display all
+zutilo.shortcuts.name.deselectTags = Tag selector: deselect all
+zutilo.shortcuts.name.focusTagSelector = Tag selector: focus search box
+
zutilo.shortcuts.name.BBTPin = Pin key for selection
zutilo.shortcuts.name.BBTUnpin = Unpin key for selection
zutilo.shortcuts.name.BBTRefresh = Force-refresh key for selection
+zutilo.shortcuts.name.BBTtoTeXstudio = Push references to TeXstudio
zutilo.shortcuts.name.ZotFileAttach = Attach new file
+zutilo.shortcuts.name.ZotFileRename = Move and rename attachments
+zutilo.shortcuts.name.ZotFileExtractAnnotations = Extract annotations
-zutilo.pagescrape.multipleExecution.title = Simultane Übersetzung der Zutilo Einträge verhindert
-zutilo.pagescrape.multipleExecution.body = Simultanübersetzungen könnten dazu führen, dass Anhänge in anderer Weise als gewünscht gespeichert oder nicht gespeichert werden. Bitte erlauben Sie eine ablaufende Übersetzung zu beenden, bevor sie Zutilo für eine weitere Übersetzung einsetzen.
-zutilo.pagescrape.statusPopup.noAttachments = (ohne Anhänge)
-zutilo.pagescrape.statusPopup.withAttachments = (mit Anhängen)
-
-zutilo.ffcacm.zutilo = Zutilo
-zutilo.ffcacm.attachPage = Webseite an Zotero Eintrag anhängen
-zutilo.ffcacm.attachLink = Link an Zotero Eintrag anhängen
+zutilo.shortcuts.name.MdnotesBatchExport = Export all Notes as Markdown
+zutilo.shortcuts.name.MdnotesExport = Export item as Markdown
+zutilo.shortcuts.name.MdnotesCreateStandaloneNote = Create Standalone note for Entry
+zutilo.shortcuts.name.MdnotesCreateMdNote = Create Mdnote for entry
diff --git a/addon/chrome/locale/en-US/zutilo/zutilo.dtd b/addon/chrome/locale/en-US/zutilo/zutilo.dtd
deleted file mode 100644
index c38f7b1..0000000
--- a/addon/chrome/locale/en-US/zutilo/zutilo.dtd
+++ /dev/null
@@ -1,50 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/addon/chrome/locale/en-US/zutilo/zutilo.properties b/addon/chrome/locale/en-US/zutilo/zutilo.properties
index af6e236..4fb280d 100644
--- a/addon/chrome/locale/en-US/zutilo/zutilo.properties
+++ b/addon/chrome/locale/en-US/zutilo/zutilo.properties
@@ -1,9 +1,5 @@
-zutilo.startup.upgrademessage =
-
zutilo.preferences.menuitem = Zutilo Preferences...
-zutilo.error.pastetitle = Zutilo: clipboard error
-zutilo.error.pastemessage = Zutilo attempted to copy text from the clipboard, but no valid text was found.
zutilo.error.bookitemtitle = Zutilo: invalid item type
zutilo.error.bookitemmessage = The attempted command only works for items of type book.
zutilo.error.booksectiontitle = Zutilo: invalid item type
@@ -11,8 +7,6 @@ zutilo.error.booksectionmessage = The attempted command only works for items of
zutilo.error.copynoitemstitle = Invalid copy selection
zutilo.error.copynoitemstext = No valid items selected for copying. The clipboard has not been modified.
-zutilo.context.savelink = Attach to Zotero item
-
zutilo.checkItems.errorTitle = Zutilo: item selection error
zutilo.checkItems.regular1 = Please select at least one regular item.
zutilo.checkItems.regularSingle = Please select one (and only one) regular item.
@@ -21,7 +15,7 @@ zutilo.checkItems.regularOrNote2 = Please select at least two regular ite
zutilo.checkItems.regularNoteAttachment2 = Please select at least two regular items, notes, or attachments.
zutilo.checkItems.regularOrNote1= Please select at least one regular item or note.
zutilo.checkItems.regularNoteAttachment1= Please select at least one regular item, note, or attachment.
-zutilo.checkItems.attachment1 = Please select at least one attachment item or one regular item with an attachment.
+zutilo.checkItems.attachment1 = Please select at least one eligible attachment item or one regular item with an eligible attachment.
zutilo.attachments.showTitle = Zutilo: showing path of attachment %S of %S
zutilo.attachments.modifyTitle = Zutilo: modify file attachments
@@ -43,10 +37,11 @@ zutilo.itemmenu.modifyURLAttachments = Modify attached urls
zutilo.itemmenu.showAttachments = Show attachment paths
zutilo.itemmenu.copyAttachmentPaths = Copy attachment paths
zutilo.itemmenu.copyItems = QuickCopy items to clipboard
-zutilo.itemmenu.copyItems_alt1 = QuickCopy items to clipboard (alt. 1)
-zutilo.itemmenu.copyItems_alt2 = QuickCopy items to clipboard (alt. 2)
+zutilo.itemmenu.copyItems_alt = QuickCopy items to clipboard (alt. %S)
zutilo.itemmenu.copyZoteroSelectLink = Copy select item links
+zutilo.itemmenu.copyZoteroItemID = Copy Zotero IDs
zutilo.itemmenu.copyZoteroItemURI = Copy Zotero URIs
+zutilo.itemmenu.openZoteroItemURI = Open Zotero URIs
zutilo.itemmenu.createBookSection = Create book section
zutilo.itemmenu.createBookItem = Create book item
zutilo.itemmenu.copyChildIDs = Copy child items to relocate
@@ -55,6 +50,7 @@ zutilo.itemmenu.copyJSON = Copy item fields
zutilo.itemmenu.pasteJSONIntoEmptyFields = Paste into empty item fields
zutilo.itemmenu.pasteJSONFromNonEmptyFields = Paste non-empty item fields
zutilo.itemmenu.pasteJSONAll = Paste all item fields
+zutilo.itemmenu.pasteJSONItemType = Paste item type
zutilo.collectionmenu.zutilo = Zutilo
zutilo.collectionmenu.copyZoteroCollectionSelectLink = Copy select collection link
@@ -73,10 +69,11 @@ zutilo.preferences.itemmenu.modifyURLAttachments= Modify attached URLs
zutilo.preferences.itemmenu.copyAttachmentPaths = Copy attachment paths
zutilo.preferences.itemmenu.copyCreators = Copy creators
zutilo.preferences.itemmenu.copyItems = QuickCopy items
-zutilo.preferences.itemmenu.copyItems_alt1 = QuickCopy items (alt 1)
-zutilo.preferences.itemmenu.copyItems_alt2 = QuickCopy items (alt 2)
+zutilo.preferences.itemmenu.copyItems_alt = QuickCopy items (alt %S)
zutilo.preferences.itemmenu.copyZoteroSelectLink = Copy select item links
+zutilo.preferences.itemmenu.copyZoteroItemID = Copy Zotero IDs
zutilo.preferences.itemmenu.copyZoteroItemURI = Copy Zotero URIs
+zutilo.preferences.itemmenu.openZoteroItemURI = Open Zotero URIs
zutilo.preferences.itemmenu.createBookSection = Create book section
zutilo.preferences.itemmenu.createBookItem = Create book item
zutilo.preferences.itemmenu.copyChildIDs = Copy child items
@@ -85,12 +82,13 @@ zutilo.preferences.itemmenu.copyJSON = Copy item fields
zutilo.preferences.itemmenu.pasteJSONIntoEmptyFields = Paste into empty item fields
zutilo.preferences.itemmenu.pasteJSONFromNonEmptyFields = Paste non-empty item fields
zutilo.preferences.itemmenu.pasteJSONAll = Paste all item fields
+zutilo.preferences.itemmenu.pasteJSONItemType = Paste item type
zutilo.preferences.collectionmenu.Zotero = Zotero context menu
zutilo.preferences.collectionmenu.Zutilo = Zutilo context menu
zutilo.preferences.collectionmenu.Hide = Hide
zutilo.preferences.collectionmenu.copyZoteroCollectionSelectLink = Copy select collection link
-zutilo.preferences.collectionmenu.copyZoteroCollectionURI = Copy Zotero URIs
+zutilo.preferences.collectionmenu.copyZoteroCollectionURI = Copy Zotero URI
zutilo.shortcuts.disabled =
zutilo.shortcuts.unrecognized = <$1>
@@ -110,6 +108,7 @@ zutilo.shortcuts.category.itemcreation = Item creation
zutilo.shortcuts.category.itemediting = Item editing
zutilo.shortcuts.category.other = Other
zutilo.shortcuts.category.uinavigation = UI navigation
+zutilo.shortcuts.category.mdnotes = Mdnotes
zutilo.shortcuts.name.copyTags = Copy tags
zutilo.shortcuts.name.removeTags = Remove tags
@@ -121,10 +120,11 @@ zutilo.shortcuts.name.modifyAttachments = Modify attachments
zutilo.shortcuts.name.modifyURLAttachments = Modify attached URLs
zutilo.shortcuts.name.copyAttachmentPaths = Copy attachment paths
zutilo.shortcuts.name.copyItems = QuickCopy items
-zutilo.shortcuts.name.copyItems_alt1 = QuickCopy items (alt 1)
-zutilo.shortcuts.name.copyItems_alt2 = QuickCopy items (alt 2)
+zutilo.shortcuts.name.copyItems_alt = QuickCopy items (alt %S)
zutilo.shortcuts.name.copyZoteroSelectLink = Copy select item links
+zutilo.shortcuts.name.copyZoteroItemID = Copy Zotero IDs
zutilo.shortcuts.name.copyZoteroItemURI = Copy Zotero URIs
+zutilo.shortcuts.name.openZoteroItemURI = Open Zotero URIs
zutilo.shortcuts.name.createBookSection = Create book section
zutilo.shortcuts.name.createBookItem = Create book item
zutilo.shortcuts.name.copyChildIDs = Copy child items
@@ -133,28 +133,29 @@ zutilo.shortcuts.name.itemInfo = Item pane: Edit item info
zutilo.shortcuts.name.addNote = Item pane: Add note
zutilo.shortcuts.name.addTag = Item pane: Add tag
zutilo.shortcuts.name.relateDialog = Item pane: Add related item
-zutilo.shortcuts.name.attachPage = Attach current page
-zutilo.shortcuts.name.saveItemZutilo = Save item (reverse attachment pref)
-zutilo.shortcuts.name.saveItemWithAttachments = Save item with attachments
-zutilo.shortcuts.name.saveItemWithoutAttachments = Save item without attachments
-zutilo.shortcuts.name.toggleZotero = Toggle Zotero
-zutilo.shortcuts.name.focusZotero = Focus Zotero
-zutilo.shortcuts.name.hideZotero = Hide Zotero
-zutilo.shortcuts.name.saveItemZotero = Save item
-zutilo.shortcuts.name.websiteItem = Create web page item
zutilo.shortcuts.name.newItemMenu = Open new item menu
+zutilo.shortcuts.name.advancedSearch = Advanced search
zutilo.shortcuts.name.lookupID = Lookup item by identifier
zutilo.shortcuts.name.linked = Create link to file
zutilo.shortcuts.name.attachLinkFile = Attach link to file
zutilo.shortcuts.name.duplicateItem = Duplicate item
zutilo.shortcuts.name.generateReport = Generate report
+zutilo.shortcuts.name.openRunJSWindow = Open Run JavaScript window
zutilo.shortcuts.name.openStyleEditor = Open Style Editor
zutilo.shortcuts.name.recognizeSelected = Retrieve metadata for PDF
zutilo.shortcuts.name.createParentItemsFromSelected = Create parent item
zutilo.shortcuts.name.renameSelectedAttachmentsFromParents = Rename attachments
zutilo.shortcuts.name.attachURI = Attachments: Attach link to URI
+zutilo.shortcuts.name.findPDF = Find Available PDFs
zutilo.shortcuts.name.attachStoredFile = Attachments: Attach stored copy of file
zutilo.shortcuts.name.showFile = Show attached file
+zutilo.shortcuts.name.copyJSON = Copy item fields
+zutilo.shortcuts.name.pasteJSONIntoEmptyFields = Paste into empty item fields
+zutilo.shortcuts.name.pasteJSONFromNonEmptyFields = Paste non-empty item fields
+zutilo.shortcuts.name.pasteJSONAll = Paste all item fields
+zutilo.shortcuts.name.pasteJSONItemType = Paste item type
+zutilo.shortcuts.name.copyZoteroCollectionSelectLink = Copy select collection link
+zutilo.shortcuts.name.copyZoteroCollectionURI = Copy collection Zotero URI
zutilo.shortcuts.name.focusZoteroCollectionsTree = Collections pane: Focus
zutilo.shortcuts.name.focusZoteroItemsTree = Items pane: Focus
@@ -168,16 +169,22 @@ zutilo.shortcuts.name.toggleZoteroItemPane = Item pane: Show / hide
zutilo.shortcuts.name.toggleZoteroCollectionsPane = Collections pane: Show / hide
zutilo.shortcuts.name.toggleZoteroItemPaneStickySplitter = Item pane: Show / hide (sticky)
zutilo.shortcuts.name.toggleZoteroCollectionsPaneStickySplitter = Collections pane: Show / hide (sticky)
+zutilo.shortcuts.name.locateMenu = Show Locate menu
+zutilo.shortcuts.name.locateItem = Locate with Google Scholar
+zutilo.shortcuts.name.toggleAutomaticTags = Tag selector: toggle automatic
+zutilo.shortcuts.name.toggleAllTags = Tag selector: toggle display all
+zutilo.shortcuts.name.deselectTags = Tag selector: deselect all
+zutilo.shortcuts.name.focusTagSelector = Tag selector: focus search box
+
zutilo.shortcuts.name.BBTPin = Pin key for selection
zutilo.shortcuts.name.BBTUnpin = Unpin key for selection
zutilo.shortcuts.name.BBTRefresh = Force-refresh key for selection
+zutilo.shortcuts.name.BBTtoTeXstudio = Push references to TeXstudio
zutilo.shortcuts.name.ZotFileAttach = Attach new file
+zutilo.shortcuts.name.ZotFileRename = Move and rename attachments
+zutilo.shortcuts.name.ZotFileExtractAnnotations = Extract annotations
-zutilo.pagescrape.multipleExecution.title = Simultaneous Zutilo item translation prevented
-zutilo.pagescrape.multipleExecution.body = Simultaneous translations could cause attachments to be saved or not saved in different manner than desired. Please allow one translation to complete before beginning another when using Zutilo for translation.
-zutilo.pagescrape.statusPopup.noAttachments = without attachments
-zutilo.pagescrape.statusPopup.withAttachments = with attachments
-
-zutilo.ffcacm.zutilo = Zutilo
-zutilo.ffcacm.attachPage = Attach page to Zotero item
-zutilo.ffcacm.attachLink = Attach link to Zotero item
+zutilo.shortcuts.name.MdnotesBatchExport = Export all Notes as Markdown
+zutilo.shortcuts.name.MdnotesExport = Export item as Markdown
+zutilo.shortcuts.name.MdnotesCreateStandaloneNote = Create Standalone note for Entry
+zutilo.shortcuts.name.MdnotesCreateMdNote = Create Mdnote for entry
diff --git a/addon/chrome/locale/es/zutilo/zutilo.dtd b/addon/chrome/locale/es/zutilo/zutilo.dtd
deleted file mode 100644
index 7d15c25..0000000
--- a/addon/chrome/locale/es/zutilo/zutilo.dtd
+++ /dev/null
@@ -1,50 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/addon/chrome/locale/es/zutilo/zutilo.properties b/addon/chrome/locale/es/zutilo/zutilo.properties
index c602214..d39904d 100644
--- a/addon/chrome/locale/es/zutilo/zutilo.properties
+++ b/addon/chrome/locale/es/zutilo/zutilo.properties
@@ -1,9 +1,5 @@
-zutilo.startup.upgrademessage =
-
zutilo.preferences.menuitem = Preferencias de Zutilo…
-zutilo.error.pastetitle = Zutilo: error de portapapeles
-zutilo.error.pastemessage = Zutilo intentó duplicar texto desde el portapapeles, pero no encontró texto válido.
zutilo.error.bookitemtitle = Zutilo: invalid item type
zutilo.error.bookitemmessage = The attempted command only works for items of type book.
zutilo.error.booksectiontitle = Zutilo: invalid item type
@@ -11,8 +7,6 @@ zutilo.error.booksectionmessage = The attempted command only works for items of
zutilo.error.copynoitemstitle = Invalid copy selection
zutilo.error.copynoitemstext = No valid items selected for copying. The clipboard has not been modified.
-zutilo.context.savelink = Adjuntar a elemento de Zotero
-
zutilo.checkItems.errorTitle = Zutilo: error de selección de elemento
zutilo.checkItems.regular1 = Seleccione al menos un elemento regular.
zutilo.checkItems.regularSingle = Seleccione un (y sólo uno) elemento regular.
@@ -21,7 +15,7 @@ zutilo.checkItems.regularOrNote2 = Seleccione al menos dos elementos regu
zutilo.checkItems.regularNoteAttachment2 = Please select at least two regular items, notes, or attachments.
zutilo.checkItems.regularOrNote1= Seleccione al menos un elemento regular o una nota.
zutilo.checkItems.regularNoteAttachment1= Please select at least one regular item, note, or attachment.
-zutilo.checkItems.attachment1 = Seleccione al menos un adjunto o un eelmento regular con un adjunto.
+zutilo.checkItems.attachment1 = Seleccione al menos un apto adjunto o un eelmento regular con un apto adjunto.
zutilo.attachments.showTitle = Zutilo: mostrando la ruta dle adjunto %S de %S
zutilo.attachments.modifyTitle = Zutilo: modificar adjuntos
@@ -43,10 +37,11 @@ zutilo.itemmenu.modifyURLAttachments = Modify attached urls
zutilo.itemmenu.showAttachments = Mostrar rutas de adjuntos
zutilo.itemmenu.copyAttachmentPaths = Copy attachment paths
zutilo.itemmenu.copyItems = Copiar ítems a portapapeles con la copia rápida
-zutilo.itemmenu.copyItems_alt1 = QuickCopy items to clipboard (alt. 1)
-zutilo.itemmenu.copyItems_alt2 = QuickCopy items to clipboard (alt. 2)
+zutilo.itemmenu.copyItems_alt = QuickCopy items to clipboard (alt. %S)
zutilo.itemmenu.copyZoteroSelectLink = Copy select item links
+zutilo.itemmenu.copyZoteroItemID = Copy Zotero IDs
zutilo.itemmenu.copyZoteroItemURI = Copy Zotero URIs
+zutilo.itemmenu.openZoteroItemURI = Open Zotero URIs
zutilo.itemmenu.createBookSection = Create book section
zutilo.itemmenu.createBookItem = Create book item
zutilo.itemmenu.copyChildIDs = Copy child items to relocate
@@ -55,6 +50,7 @@ zutilo.itemmenu.copyJSON = Copy item fields
zutilo.itemmenu.pasteJSONIntoEmptyFields = Paste into empty item fields
zutilo.itemmenu.pasteJSONFromNonEmptyFields = Paste non-empty item fields
zutilo.itemmenu.pasteJSONAll = Paste all item fields
+zutilo.itemmenu.pasteJSONItemType = Paste item type
zutilo.collectionmenu.zutilo = Zutilo
zutilo.collectionmenu.copyZoteroCollectionSelectLink = Copy select collection link
@@ -67,16 +63,17 @@ zutilo.preferences.itemmenu.copyTags = Copiar etiquetas
zutilo.preferences.itemmenu.removeTags = Remove tags
zutilo.preferences.itemmenu.pasteTags = Pegar etiquetas
zutilo.preferences.itemmenu.relateItems = Relacionar ítems
-zutilo.preferences.itemmenu.modifyURLAttachments= Modify attached URLs
zutilo.preferences.itemmenu.showAttachments = Mostrar adjuntos
zutilo.preferences.itemmenu.modifyAttachments= Modificar adjuntos
+zutilo.preferences.itemmenu.modifyURLAttachments= Modify attached URLs
zutilo.preferences.itemmenu.copyAttachmentPaths = Copy attachment paths
zutilo.preferences.itemmenu.copyCreators = Copiar creadores
zutilo.preferences.itemmenu.copyItems = Copiar ítems con copia rápida
-zutilo.preferences.itemmenu.copyItems_alt1 = QuickCopy items (alt 1)
-zutilo.preferences.itemmenu.copyItems_alt2 = QuickCopy items (alt 2)
+zutilo.preferences.itemmenu.copyItems_alt = QuickCopy items (alt %S)
zutilo.preferences.itemmenu.copyZoteroSelectLink = Copy select item links
+zutilo.preferences.itemmenu.copyZoteroItemID = Copy Zotero IDs
zutilo.preferences.itemmenu.copyZoteroItemURI = Copy Zotero URIs
+zutilo.preferences.itemmenu.openZoteroItemURI = Open Zotero URIs
zutilo.preferences.itemmenu.createBookSection = Create book section
zutilo.preferences.itemmenu.createBookItem = Create book item
zutilo.preferences.itemmenu.copyChildIDs = Copy child items
@@ -85,12 +82,13 @@ zutilo.preferences.itemmenu.copyJSON = Copy item fields
zutilo.preferences.itemmenu.pasteJSONIntoEmptyFields = Paste into empty item fields
zutilo.preferences.itemmenu.pasteJSONFromNonEmptyFields = Paste non-empty item fields
zutilo.preferences.itemmenu.pasteJSONAll = Paste all item fields
+zutilo.preferences.itemmenu.pasteJSONItemType = Paste item type
zutilo.preferences.collectionmenu.Zotero = Zotero context menu
zutilo.preferences.collectionmenu.Zutilo = Zutilo context menu
zutilo.preferences.collectionmenu.Hide = Hide
zutilo.preferences.collectionmenu.copyZoteroCollectionSelectLink = Copy select collection link
-zutilo.preferences.collectionmenu.copyZoteroCollectionURI = Copy Zotero URIs
+zutilo.preferences.collectionmenu.copyZoteroCollectionURI = Copy Zotero URI
zutilo.shortcuts.disabled =
zutilo.shortcuts.unrecognized = <$1>
@@ -110,51 +108,54 @@ zutilo.shortcuts.category.itemcreation = Item creation
zutilo.shortcuts.category.itemediting = Item editing
zutilo.shortcuts.category.other = Other
zutilo.shortcuts.category.uinavigation = UI navigation
+zutilo.shortcuts.category.mdnotes = mdnotes
zutilo.shortcuts.name.copyTags = Copiar etiquetas
zutilo.shortcuts.name.removeTags = Remove tags
zutilo.shortcuts.name.copyCreators = Copiar creadores
zutilo.shortcuts.name.pasteTags = Pegar etiquetas
zutilo.shortcuts.name.relateItems = Relacionar ítems
-zutilo.shortcuts.name.modifyURLAttachments = Modify attached URLs
zutilo.shortcuts.name.showAttachments = Mostrar adjuntos
zutilo.shortcuts.name.modifyAttachments = Modificar adjuntos
+zutilo.shortcuts.name.modifyURLAttachments = Modify attached URLs
zutilo.shortcuts.name.copyAttachmentPaths = Copy attachment paths
zutilo.shortcuts.name.copyItems = Copiar ítems con copia rápida
-zutilo.shortcuts.name.copyItems_alt1 = QuickCopy items (alt 1)
-zutilo.shortcuts.name.copyItems_alt2 = QuickCopy items (alt 2)
+zutilo.shortcuts.name.copyItems_alt = QuickCopy items (alt %S)
zutilo.shortcuts.name.copyZoteroSelectLink = Copy select item links
+zutilo.shortcuts.name.copyZoteroItemID = Copy Zotero IDs
zutilo.shortcuts.name.copyZoteroItemURI = Copy Zotero URIs
+zutilo.shortcuts.name.openZoteroItemURI = Open Zotero URIs
zutilo.shortcuts.name.createBookSection = Create book section
zutilo.shortcuts.name.createBookItem = Create book item
zutilo.shortcuts.name.copyChildIDs = Copy child items
zutilo.shortcuts.name.relocateChildren = Relocate child items
-zutilo.shortcuts.name.itemInfo = Editar ítem información
-zutilo.shortcuts.name.addNote = Añadir nota
-zutilo.shortcuts.name.addTag = Añadir etiqueta
-zutilo.shortcuts.name.relateDialog = Relaccionar ítems dialog
-zutilo.shortcuts.name.attachPage = Atajar la página corriente
-zutilo.shortcuts.name.saveItemZutilo = Guardar ítem (trastocar la atajo preferencia)
-zutilo.shortcuts.name.saveItemWithAttachments = Guardar ítem con atajos
-zutilo.shortcuts.name.saveItemWithoutAttachments = Guardar ítem sín atajos
-zutilo.shortcuts.name.toggleZotero = Alternar Zotero
-zutilo.shortcuts.name.focusZotero = Enfocar Zotero
-zutilo.shortcuts.name.hideZotero = Ocultar Zotero
-zutilo.shortcuts.name.saveItemZotero = Guardar ítem
-zutilo.shortcuts.name.websiteItem = Crear página web ítem
-zutilo.shortcuts.name.newItemMenu = Abrir ítem nueva menú
+zutilo.shortcuts.name.itemInfo = Item pane: Edit item info
+zutilo.shortcuts.name.addNote = Item pane: Add note
+zutilo.shortcuts.name.addTag = Item pane: Add tag
+zutilo.shortcuts.name.relateDialog = Item pane: Add related item
+zutilo.shortcuts.name.newItemMenu = Open new item menu
+zutilo.shortcuts.name.advancedSearch = Advanced search
zutilo.shortcuts.name.lookupID = Lookup item by identifier
zutilo.shortcuts.name.linked = Create link to file
zutilo.shortcuts.name.attachLinkFile = Añadir enlace al fichero
zutilo.shortcuts.name.duplicateItem = Duplicar el ítem seleccionado
zutilo.shortcuts.name.generateReport = Generate report
+zutilo.shortcuts.name.openRunJSWindow = Open Run JavaScript window
zutilo.shortcuts.name.openStyleEditor = Abrir editor de estilo
zutilo.shortcuts.name.recognizeSelected = Extraer los metadatos para el PDF
zutilo.shortcuts.name.createParentItemsFromSelected = Crear ítem contenedor
zutilo.shortcuts.name.renameSelectedAttachmentsFromParents = Poner nombre a los ficheros
zutilo.shortcuts.name.attachURI = Attachments: Attach link to URI
+zutilo.shortcuts.name.findPDF = Find Available PDFs
zutilo.shortcuts.name.attachStoredFile = Attachments: Attach stored copy of file
zutilo.shortcuts.name.showFile = Show attached file
+zutilo.shortcuts.name.copyJSON = Copy item fields
+zutilo.shortcuts.name.pasteJSONIntoEmptyFields = Paste into empty item fields
+zutilo.shortcuts.name.pasteJSONFromNonEmptyFields = Paste non-empty item fields
+zutilo.shortcuts.name.pasteJSONAll = Paste all item fields
+zutilo.shortcuts.name.pasteJSONItemType = Paste item type
+zutilo.shortcuts.name.copyZoteroCollectionSelectLink = Copy select collection link
+zutilo.shortcuts.name.copyZoteroCollectionURI = Copy collection Zotero URI
zutilo.shortcuts.name.focusZoteroCollectionsTree = Enfocar el panel de colecciónes
zutilo.shortcuts.name.focusZoteroItemsTree = Enfocar el panel de ítems
@@ -168,16 +169,22 @@ zutilo.shortcuts.name.toggleZoteroItemPane = Item pane: Show / hide
zutilo.shortcuts.name.toggleZoteroCollectionsPane = Collections pane: Show / hide
zutilo.shortcuts.name.toggleZoteroItemPaneStickySplitter = Item pane: Show / hide (sticky)
zutilo.shortcuts.name.toggleZoteroCollectionsPaneStickySplitter = Collections pane: Show / hide (sticky)
+zutilo.shortcuts.name.locateMenu = Show Locate menu
+zutilo.shortcuts.name.locateItem = Locate with Google Scholar
+zutilo.shortcuts.name.toggleAutomaticTags = Tag selector: toggle automatic
+zutilo.shortcuts.name.toggleAllTags = Tag selector: toggle display all
+zutilo.shortcuts.name.deselectTags = Tag selector: deselect all
+zutilo.shortcuts.name.focusTagSelector = Tag selector: focus search box
+
zutilo.shortcuts.name.BBTPin = Pin key for selection
zutilo.shortcuts.name.BBTUnpin = Unpin key for selection
zutilo.shortcuts.name.BBTRefresh = Force-refresh key for selection
+zutilo.shortcuts.name.BBTtoTeXstudio = Push references to TeXstudio
zutilo.shortcuts.name.ZotFileAttach = Attach new file
+zutilo.shortcuts.name.ZotFileRename = Move and rename attachments
+zutilo.shortcuts.name.ZotFileExtractAnnotations = Extract annotations
-zutilo.pagescrape.multipleExecution.title = No se permite traducción simultánea de ítems con Zutilo
-zutilo.pagescrape.multipleExecution.body = Las traducciones simultáneas podrían hacer que los adjuntos se guarden o no de forma no deseada. Deje que se complete una traducción antes de comenzar la siguiente si usa Zutilo para traducir.
-zutilo.pagescrape.statusPopup.noAttachments = (sin adjuntos)
-zutilo.pagescrape.statusPopup.withAttachments = (con adjuntos)
-
-zutilo.ffcacm.zutilo = Zutilo
-zutilo.ffcacm.attachPage = Adjuntar página a elemento de Zotero
-zutilo.ffcacm.attachLink = Adjuntar enlace a elemento de Zotero
+zutilo.shortcuts.name.MdnotesBatchExport = Export all Notes as Markdown
+zutilo.shortcuts.name.MdnotesExport = Export item as Markdown
+zutilo.shortcuts.name.MdnotesCreateStandaloneNote = Create Standalone note for Entry
+zutilo.shortcuts.name.MdnotesCreateMdNote = Create Mdnote for entry
diff --git a/addon/chrome/locale/fr/zutilo/zutilo.dtd b/addon/chrome/locale/fr/zutilo/zutilo.dtd
deleted file mode 100644
index 8a7bc38..0000000
--- a/addon/chrome/locale/fr/zutilo/zutilo.dtd
+++ /dev/null
@@ -1,50 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/addon/chrome/locale/fr/zutilo/zutilo.properties b/addon/chrome/locale/fr/zutilo/zutilo.properties
index 54a4c6f..ff9ec79 100644
--- a/addon/chrome/locale/fr/zutilo/zutilo.properties
+++ b/addon/chrome/locale/fr/zutilo/zutilo.properties
@@ -1,101 +1,99 @@
-zutilo.startup.upgrademessage =
-
zutilo.preferences.menuitem = Préférences de Zutilo
-zutilo.error.pastetitle = Zutilo : erreur avec le presse-papiers
-zutilo.error.pastemessage = Zutilo a essayé de copier du texte depuis le presse-papiers, mais aucun texte valide n'a été trouvé.
-zutilo.error.bookitemtitle = Zutilo: type de document invalide
+zutilo.error.bookitemtitle = Zutilo : type de document invalide
zutilo.error.bookitemmessage = La commande utilisée ne fonctionne que pour les notices "Livre".
-zutilo.error.booksectiontitle = Zutilo: type de document invalide
+zutilo.error.booksectiontitle = Zutilo : type de document invalide
zutilo.error.booksectionmessage = La commande utilisée ne fonctionne que pour les notices "Chapitre de livre".
-zutilo.error.copynoitemstitle = Invalid copy selection
-zutilo.error.copynoitemstext = No valid items selected for copying. The clipboard has not been modified.
-
-zutilo.context.savelink = Joindre au document sélectionné dans Zotero
-
-zutilo.checkItems.errorTitle = Zutilo : aucun document sélectionné dans Zotero
-zutilo.checkItems.regular1 = Veuillez choisir au moins une notice dans Zotero.
-zutilo.checkItems.regularSingle = Veuillez ne choisir qu'une seule notice dans Zotero.
-zutilo.checkItems.regular2 = Veuillez choisir au moins deux références dans Zotero.
-zutilo.checkItems.regularOrNote2 = Veuillez choisir au moins deux documents dans Zotero (notice ou note).
-zutilo.checkItems.regularNoteAttachment2 = Veuillez choisir au moins deux documents dans Zotero (notice, note ou pièce jointe).
-zutilo.checkItems.regularOrNote1= Veuillez choisir au moins un document dans Zotero (notice ou note).
-zutilo.checkItems.regularNoteAttachment1= Veuillez choisir au moins un document dans Zotero (notice, note ou pièce jointe).
-zutilo.checkItems.attachment1 = Veuillez choisir au moins une pièce jointe ou une notice ayant une pièce jointe.
+zutilo.error.copynoitemstitle = Sélection copiée invalide
+zutilo.error.copynoitemstext = Aucune des notices sélectionnées pour la copie n'est valide. Le presse-papiers n'a pas été modifié.
+
+zutilo.checkItems.errorTitle = Zutilo : erreur dans la sélection des documents
+zutilo.checkItems.regular1 = Veuillez sélectionner au moins une notice dans Zotero.
+zutilo.checkItems.regularSingle = Veuillez ne sélectionner qu'une seule notice dans Zotero.
+zutilo.checkItems.regular2 = Veuillez sélectionner au moins deux notices dans Zotero.
+zutilo.checkItems.regularOrNote2 = Veuillez sélectionner au moins deux documents dans Zotero (notice ou note).
+zutilo.checkItems.regularNoteAttachment2 = Veuillez sélectionner au moins deux documents dans Zotero (notice, note ou pièce jointe).
+zutilo.checkItems.regularOrNote1= Veuillez sélectionner au moins un document dans Zotero (notice ou note).
+zutilo.checkItems.regularNoteAttachment1= Veuillez sélectionner au moins un document dans Zotero (notice, note ou pièce jointe).
+zutilo.checkItems.attachment1 = Veuillez sélectionner au moins une pièce jointe éligible ou une notice ayant une pièce jointe éligible.
zutilo.attachments.showTitle = Zutilo : afficher le répertoire de la pièce jointe %S sur %S
zutilo.attachments.modifyTitle = Zutilo : modifier les pièces jointes
-zutilo.attachments.modifyURLTitle = Zutilo: modify URL attachments
-zutilo.attachments.oldPath = Le chemin précédent vers le répertoire des pièces jointes, qui doit être remplacé :
-zutilo.attachments.checkGlobally = Remplacer toutes les instances du chemin
-zutilo.attachments.newPath = Nouveau chemin partiel à utiliser pour les pièces jointes, qui doit correspondre à l'ancien chemin :
+zutilo.attachments.modifyURLTitle = Zutilo : modifier l'URL des pièces jointes
+zutilo.attachments.oldPath = Ancien chemin partiel vers le répertoire des pièces jointes, qui doit être remplacé :
+zutilo.attachments.checkGlobally = Remplacer toutes les instances du chemin partiel
+zutilo.attachments.newPath = Nouveau chemin partiel à utiliser pour les pièces jointes dont les chemins correspondent à l'ancien chemin partiel :
zutilo.attachments.selectDestination = Zutilo : choisir la destination pour le fichier joint lié
zutilo.itemmenu.zutilo = Zutilo
zutilo.itemmenu.copyTags = Copier les marqueurs dans le presse-papiers
-zutilo.itemmenu.removeTags = Supprimer tous les marqueurs
+zutilo.itemmenu.removeTags = Retirer tous les marqueurs
zutilo.itemmenu.pasteTags = Coller les marqueurs depuis le presse-papiers
zutilo.itemmenu.relateItems = Associer les documents sélectionnés
zutilo.itemmenu.copyCreators = Copier les créateurs dans le presse-papiers
zutilo.itemmenu.modifyAttachments = Modifier les chemins vers les pièces jointes
-zutilo.itemmenu.modifyURLAttachments = Modify attached urls
+zutilo.itemmenu.modifyURLAttachments = Modifier l'URL des pièces jointes
zutilo.itemmenu.showAttachments = Afficher les chemins vers les pièces jointes
zutilo.itemmenu.copyAttachmentPaths = Copier les chemins vers les pièces jointes
-zutilo.itemmenu.copyItems = Copie rapide des documents dans le presse-papiers
-zutilo.itemmenu.copyItems_alt1 = Copie rapide des documents dans le presse-papiers (alt. 1)
-zutilo.itemmenu.copyItems_alt2 = Copie rapide des documents dans le presse-papiers (alt. 2)
-zutilo.itemmenu.copyZoteroSelectLink = Copier les liens zotero://… du ou des documents sélectionnés
-zutilo.itemmenu.copyZoteroItemURI = Copier les liens zotero.org/… du ou des documents sélectionnés
+zutilo.itemmenu.copyItems = Copie rapide des documents
+zutilo.itemmenu.copyItems_alt = Copie rapide des documents (alt. %S)
+zutilo.itemmenu.copyZoteroSelectLink = Copier les liens zotero://… des documents
+zutilo.itemmenu.copyZoteroItemID = Copier les identifiants des documents
+zutilo.itemmenu.copyZoteroItemURI = Copier les liens zotero.org/… des documents
+zutilo.itemmenu.openZoteroItemURI = Ouvrir les liens zotero://… des documents
zutilo.itemmenu.createBookSection = Créer une notice "Chapitre de livre"
zutilo.itemmenu.createBookItem = Créer une notice "Livre"
-zutilo.itemmenu.copyChildIDs = Copier les documents enfants afin de les déplacer
-zutilo.itemmenu.relocateChildren = Déplacer les documents enfants copiés
-zutilo.itemmenu.copyJSON = Copy item fields
-zutilo.itemmenu.pasteJSONIntoEmptyFields = Paste into empty item fields
-zutilo.itemmenu.pasteJSONFromNonEmptyFields = Paste non-empty item fields
-zutilo.itemmenu.pasteJSONAll = Paste all item fields
+zutilo.itemmenu.copyChildIDs = Copier les documents enfants
+zutilo.itemmenu.relocateChildren = Déplacer les documents enfants
+zutilo.itemmenu.copyJSON = Copier les champs de la notice
+zutilo.itemmenu.pasteJSONIntoEmptyFields = Coller dans les champs vides
+zutilo.itemmenu.pasteJSONFromNonEmptyFields = Remplacer les champs
+zutilo.itemmenu.pasteJSONAll = Coller tout
+zutilo.itemmenu.pasteJSONItemType = Coller le type de document
zutilo.collectionmenu.zutilo = Zutilo
-zutilo.collectionmenu.copyZoteroCollectionSelectLink = Copy select collection link
-zutilo.collectionmenu.copyZoteroCollectionURI = Copy Zotero URIs
+zutilo.collectionmenu.copyZoteroCollectionSelectLink = Copier le lien zotero://… de la collection
+zutilo.collectionmenu.copyZoteroCollectionURI = Copier le lien zotero.org/…de la collection
zutilo.preferences.itemmenu.Zotero = Menu contextuel de Zotero
zutilo.preferences.itemmenu.Zutilo = Menu contextuel de Zutilo
zutilo.preferences.itemmenu.Hide = Masquer
zutilo.preferences.itemmenu.copyTags = Copier les marqueurs
-zutilo.preferences.itemmenu.removeTags = Supprimer les marqueurs
+zutilo.preferences.itemmenu.removeTags = Retirer les marqueurs
zutilo.preferences.itemmenu.pasteTags = Coller les marqueurs
zutilo.preferences.itemmenu.relateItems = Associer les documents
-zutilo.preferences.itemmenu.modifyURLAttachments= Modify attached URLs
-zutilo.preferences.itemmenu.showAttachments = Afficher les pièces jointes
-zutilo.preferences.itemmenu.modifyAttachments= Modifier les pièces jointes
+zutilo.preferences.itemmenu.showAttachments = Afficher les chemins vers les pièces jointes
+zutilo.preferences.itemmenu.modifyAttachments= Modifier les chemins vers les pièces jointes
+zutilo.preferences.itemmenu.modifyURLAttachments= Modifier l'URL des pièces jointes
zutilo.preferences.itemmenu.copyAttachmentPaths = Copier les chemins vers les pièces jointes
zutilo.preferences.itemmenu.copyCreators = Copier les créateurs
zutilo.preferences.itemmenu.copyItems = Copie rapide des documents
-zutilo.preferences.itemmenu.copyItems_alt1 = Copie rapide des documents (alt 1)
-zutilo.preferences.itemmenu.copyItems_alt2 = Copie rapide des documents (alt 2)
-zutilo.preferences.itemmenu.copyZoteroSelectLink = Copier les liens zotero://…
-zutilo.preferences.itemmenu.copyZoteroItemURI = Copier les liens zotero.org/…
+zutilo.preferences.itemmenu.copyItems_alt = Copie rapide des documents (alt %S)
+zutilo.preferences.itemmenu.copyZoteroSelectLink = Copier les liens zotero://… des documents
+zutilo.preferences.itemmenu.copyZoteroItemID = Copier les identifiants des documents
+zutilo.preferences.itemmenu.copyZoteroItemURI = Copier les liens zotero.org/… des documents
+zutilo.preferences.itemmenu.openZoteroItemURI = Ouvrir les liens zotero://… des documents
zutilo.preferences.itemmenu.createBookSection = Créer une notice "Chapitre de livre"
zutilo.preferences.itemmenu.createBookItem = Créer une notice "Livre"
zutilo.preferences.itemmenu.copyChildIDs = Copier les documents enfants
zutilo.preferences.itemmenu.relocateChildren = Déplacer les documents enfants
-zutilo.preferences.itemmenu.copyJSON = Copy item fields
-zutilo.preferences.itemmenu.pasteJSONIntoEmptyFields = Paste into empty item fields
-zutilo.preferences.itemmenu.pasteJSONFromNonEmptyFields = Paste non-empty item fields
-zutilo.preferences.itemmenu.pasteJSONAll = Paste all item fields
-
-zutilo.preferences.collectionmenu.Zotero = Zotero context menu
-zutilo.preferences.collectionmenu.Zutilo = Zutilo context menu
-zutilo.preferences.collectionmenu.Hide = Hide
-zutilo.preferences.collectionmenu.copyZoteroCollectionSelectLink = Copy select collection link
-zutilo.preferences.collectionmenu.copyZoteroCollectionURI = Copy Zotero URIs
-
-zutilo.shortcuts.disabled =
+zutilo.preferences.itemmenu.copyJSON = Copier les champs de la notice
+zutilo.preferences.itemmenu.pasteJSONIntoEmptyFields = Coller dans les champs vides
+zutilo.preferences.itemmenu.pasteJSONFromNonEmptyFields = Remplacer les champs
+zutilo.preferences.itemmenu.pasteJSONAll = Coller tout
+zutilo.preferences.itemmenu.pasteJSONItemType = Coller le type de document
+
+zutilo.preferences.collectionmenu.Zotero = Menu contextuel de Zotero
+zutilo.preferences.collectionmenu.Zutilo = Menu contextuel de Zutilo
+zutilo.preferences.collectionmenu.Hide = Masquer
+zutilo.preferences.collectionmenu.copyZoteroCollectionSelectLink = Copier le lien zotero://… de la collection
+zutilo.preferences.collectionmenu.copyZoteroCollectionURI = Copier le lien zotero.org/…de la collection
+
+zutilo.shortcuts.disabled =
zutilo.shortcuts.unrecognized = <$1>
zutilo.shortcuts.conflicts.promptTitle = Zutilo : raccourci(s)-clavier déjà existant(s)
-zutilo.shortcuts.conflicts.promptText = Cette combinaison de touches est déjà utilisée. Il est préférable d'en choisir une autre.\n\nCliquez sur OK pour valider cette nouvelle association ou sur Annuler pour laisser telle quelle l'association actuelle.
+zutilo.shortcuts.conflicts.promptText = Cette combinaison de touches est déjà utilisée. Il est préférable d'en choisir une autre.\n\nCliquez sur OK pour valider cette nouvelle association ou sur Annuler pour laisser telle quelle l'association actuelle.\n\nAssociation(s) existante(s) utilisant cette combinaison :\n
zutilo.shortcuts.reloadSkipCache = Recharger (remplace la version en cache)
zutilo.shortcuts.reload = Recharger
zutilo.shortcuts.goBack = Page précédente
@@ -110,74 +108,83 @@ zutilo.shortcuts.category.itemcreation = Création de documents
zutilo.shortcuts.category.itemediting = Modification de documents
zutilo.shortcuts.category.other = Autre
zutilo.shortcuts.category.uinavigation = Navigation
+zutilo.shortcuts.category.mdnotes = mdnotes
zutilo.shortcuts.name.copyTags = Copier les marqueurs
-zutilo.shortcuts.name.removeTags = Supprimer les marqueurs
+zutilo.shortcuts.name.removeTags = Retirer les marqueurs
zutilo.shortcuts.name.copyCreators = Copier les créateurs
zutilo.shortcuts.name.pasteTags = Coller les marqueurs
zutilo.shortcuts.name.relateItems = Associer les documents
-zutilo.shortcuts.name.modifyURLAttachments = Modify attached URLs
-zutilo.shortcuts.name.showAttachments = Afficher les pièces jointes
-zutilo.shortcuts.name.modifyAttachments = Modifier les pièces jointes
+zutilo.shortcuts.name.showAttachments = Afficher les chemins vers les pièces jointes
+zutilo.shortcuts.name.modifyAttachments = Modifier les chemins vers les pièces jointes
+zutilo.shortcuts.name.modifyURLAttachments = Modifier les URL des pièces jointes
zutilo.shortcuts.name.copyAttachmentPaths = Copier les chemins vers les pièces jointes
zutilo.shortcuts.name.copyItems = Copie rapide des documents
-zutilo.shortcuts.name.copyItems_alt1 = Copie rapide des documents (alt 1)
-zutilo.shortcuts.name.copyItems_alt2 = Copie rapide des documents (alt 2)
-zutilo.shortcuts.name.copyZoteroSelectLink = Copier les liens zotero://…
-zutilo.shortcuts.name.copyZoteroItemURI = Copier les liens zotero.org/…
+zutilo.shortcuts.name.copyItems_alt = Copie rapide des documents (alt %S)
+zutilo.shortcuts.name.copyZoteroSelectLink = Copier les liens zotero://… des documents
+zutilo.shortcuts.name.copyZoteroItemID = Copier les identifiants des documents
+zutilo.shortcuts.name.copyZoteroItemURI = Copier les liens zotero.org/… des documents
+zutilo.shortcuts.name.openZoteroItemURI = Ouvrir les liens zotero://… des documents
zutilo.shortcuts.name.createBookSection = Créer une notice "Chapitre de livre"
zutilo.shortcuts.name.createBookItem = Créer une notice "Livre"
zutilo.shortcuts.name.copyChildIDs = Copier les documents enfants
zutilo.shortcuts.name.relocateChildren = Déplacer les documents enfants
-zutilo.shortcuts.name.itemInfo = Modifier les Infos
-zutilo.shortcuts.name.addNote = Ajouter une Note
-zutilo.shortcuts.name.addTag = Ajouter un Marqueur
-zutilo.shortcuts.name.relateDialog = Associer un document connexe
-zutilo.shortcuts.name.attachPage = Joindre une capture de la page courante
-zutilo.shortcuts.name.saveItemZutilo = Enregistrer un document (avec la préférence de PJ inversée)
-zutilo.shortcuts.name.saveItemWithAttachments = Enregistrer un document avec ses pièces jointes
-zutilo.shortcuts.name.saveItemWithoutAttachments = Enregistrer un document sans pièce jointe
-zutilo.shortcuts.name.toggleZotero = Activer / désactiver Zotero
-zutilo.shortcuts.name.focusZotero = Mettre Zotero en avant
-zutilo.shortcuts.name.hideZotero = Masquer Zotero
-zutilo.shortcuts.name.saveItemZotero = Enregistrer le document
-zutilo.shortcuts.name.websiteItem = Créer une notice "Page web"
+zutilo.shortcuts.name.itemInfo = Volet du document : modifier Info
+zutilo.shortcuts.name.addNote = Volet du document : ajouter une note
+zutilo.shortcuts.name.addTag = Volet du document : ajouter un marqueur
+zutilo.shortcuts.name.relateDialog = Volet du document : ajouter un document connexe
zutilo.shortcuts.name.newItemMenu = Ouvrir le menu "Nouveau document"
-zutilo.shortcuts.name.lookupID = Lookup item by identifier
-zutilo.shortcuts.name.linked = Create link to file
-zutilo.shortcuts.name.attachLinkFile = Joindre un lien vers un fichier
+zutilo.shortcuts.name.advancedSearch = Recherche avancée
+zutilo.shortcuts.name.lookupID = Ajouter un document par son identifiant
+zutilo.shortcuts.name.linked = Créer un lien vers un fichier
+zutilo.shortcuts.name.attachLinkFile = Pièces jointes : joindre un lien vers un fichier
zutilo.shortcuts.name.duplicateItem = Dupliquer le document
zutilo.shortcuts.name.generateReport = Établir un rapport
+zutilo.shortcuts.name.openRunJSWindow = Open Run JavaScript window
zutilo.shortcuts.name.openStyleEditor = Ouvrir l'Éditeur de style
-zutilo.shortcuts.name.recognizeSelected = Récupérer les métadonnées du PDF
+zutilo.shortcuts.name.recognizeSelected = Récupérer les métadonnées des PDF
zutilo.shortcuts.name.createParentItemsFromSelected = Créer un document parent
-zutilo.shortcuts.name.renameSelectedAttachmentsFromParents = Renommer les fichiers
-zutilo.shortcuts.name.attachURI = PJ : Joindre un lien vers un URI
-zutilo.shortcuts.name.attachStoredFile = PJ : Joindre et stocker une copie d'un fichier
-zutilo.shortcuts.name.showFile = Show attached file
-
-zutilo.shortcuts.name.focusZoteroCollectionsTree = Curseur dans le volet de gauche
-zutilo.shortcuts.name.focusZoteroItemsTree = Curseur dans le volet central
-zutilo.shortcuts.name.advanceTabboxTab = Curseur dans le volet de droite : onglet suivant
-zutilo.shortcuts.name.reverseTabboxTab = Curseur dans le volet de droite : onglet précédent
-zutilo.shortcuts.name.selectTabboxTab0 = Curseur dans le volet de droite : onglet Info
-zutilo.shortcuts.name.selectTabboxTab1 = Curseur dans le volet de droite : onglet Notes
-zutilo.shortcuts.name.selectTabboxTab2 = Curseur dans le volet de droite : onglet Marqueurs
-zutilo.shortcuts.name.selectTabboxTab3 = Curseur dans le volet de droite : onglet Connexe
-zutilo.shortcuts.name.toggleZoteroItemPane = Volet de droite : Afficher / Cacher
-zutilo.shortcuts.name.toggleZoteroCollectionsPane = Volet de gauche : Afficher / Cacher
-zutilo.shortcuts.name.toggleZoteroItemPaneStickySplitter = Volet de droite : Afficher / Cacher (avec diviseur)
-zutilo.shortcuts.name.toggleZoteroCollectionsPaneStickySplitter = Volet de gauche : Afficher / Cacher (avec diviseur)
-zutilo.shortcuts.name.BBTPin = Pin key for selection
-zutilo.shortcuts.name.BBTUnpin = Unpin key for selection
-zutilo.shortcuts.name.BBTRefresh = Force-refresh key for selection
-zutilo.shortcuts.name.ZotFileAttach = Attach new file
-
-zutilo.pagescrape.multipleExecution.title = Zutilo – Enregistrement simultané de documents bloqué
-zutilo.pagescrape.multipleExecution.body = Des enregistrements simultanés peuvent provoquer des effets indésirables sur la sauvegarde ou non des pièces jointes. Attendez qu'un enregistrement soit terminé avant d'en commencer un autre via Zutilo.
-zutilo.pagescrape.statusPopup.noAttachments = sans pièce jointe
-zutilo.pagescrape.statusPopup.withAttachments = avec pièces jointes
-
-zutilo.ffcacm.zutilo = Zutilo
-zutilo.ffcacm.attachPage = Joindre la page au document sélectionné
-zutilo.ffcacm.attachLink = Joindre le lien au document sélectionné
+zutilo.shortcuts.name.renameSelectedAttachmentsFromParents = Renommer les fichiers à partir des métadonnées du parent
+zutilo.shortcuts.name.attachURI = Pièces jointes : joindre un lien vers un URI
+zutilo.shortcuts.name.findPDF = Trouver un PDF disponible
+zutilo.shortcuts.name.attachStoredFile = Pièces jointes : joindre une copie enregistrée d'un fichier
+zutilo.shortcuts.name.showFile = Afficher le fichier joint
+zutilo.shortcuts.name.copyJSON = Copier les champs de la notice
+zutilo.shortcuts.name.pasteJSONIntoEmptyFields = Coller dans les champs vides
+zutilo.shortcuts.name.pasteJSONFromNonEmptyFields = Remplacer les champs
+zutilo.shortcuts.name.pasteJSONAll = Coller tout
+zutilo.shortcuts.name.pasteJSONItemType = Coller le type de document
+zutilo.shortcuts.name.copyZoteroCollectionSelectLink = Copier le lien zotero://… de la collection
+zutilo.shortcuts.name.copyZoteroCollectionURI = Copier le lien zotero.org/… de la collection
+
+zutilo.shortcuts.name.focusZoteroCollectionsTree = Curseur dans le volet des collections
+zutilo.shortcuts.name.focusZoteroItemsTree = Curseur dans le volet des documents
+zutilo.shortcuts.name.advanceTabboxTab = Curseur dans le volet du document : onglet suivant
+zutilo.shortcuts.name.reverseTabboxTab = Curseur dans le volet du document : onglet précédent
+zutilo.shortcuts.name.selectTabboxTab0 = Curseur dans le volet du document : onglet Info
+zutilo.shortcuts.name.selectTabboxTab1 = Curseur dans le volet du document : onglet Notes
+zutilo.shortcuts.name.selectTabboxTab2 = Curseur dans le volet du document : onglet Marqueurs
+zutilo.shortcuts.name.selectTabboxTab3 = Curseur dans le volet du document : onglet Connexe
+zutilo.shortcuts.name.toggleZoteroItemPane = Volet du document : afficher / cacher
+zutilo.shortcuts.name.toggleZoteroCollectionsPane = Volet des collections : afficher / cacher
+zutilo.shortcuts.name.toggleZoteroItemPaneStickySplitter = Volet du document : afficher / cacher (avec diviseur)
+zutilo.shortcuts.name.toggleZoteroCollectionsPaneStickySplitter = Volet des collections : afficher / cacher (avec diviseur)
+zutilo.shortcuts.name.locateMenu = Afficher le menu "Localiser"
+zutilo.shortcuts.name.locateItem = Localiser avec Google Scholar
+zutilo.shortcuts.name.toggleAutomaticTags = Sélecteur de marqueurs : basculer l'affichage des marqueurs ajoutés automatiquement
+zutilo.shortcuts.name.toggleAllTags = Sélecteur de marqueurs : basculer l'affichage de tous les marqueurs
+zutilo.shortcuts.name.deselectTags = Sélecteur de marqueurs : tout désélectionner
+zutilo.shortcuts.name.focusTagSelector = Sélecteur de marqueurs : curseur dans la boîte de recherche
+
+zutilo.shortcuts.name.BBTPin = Verrouiller la clé de citation
+zutilo.shortcuts.name.BBTUnpin = Déverrouiller la clé de citation
+zutilo.shortcuts.name.BBTRefresh = Rafraîchir la clé de citation
+zutilo.shortcuts.name.BBTtoTeXstudio = Pousser les références vers TeXstudio
+zutilo.shortcuts.name.ZotFileAttach = ZotFile : Joindre un nouveau fichier
+zutilo.shortcuts.name.ZotFileRename = ZotFile : Déplacer et renommer les pièces jointes
+zutilo.shortcuts.name.ZotFileExtractAnnotations = ZotFile : Extraire les annotations
+
+zutilo.shortcuts.name.MdnotesBatchExport = Export all Notes as Markdown
+zutilo.shortcuts.name.MdnotesExport = Export item as Markdown
+zutilo.shortcuts.name.MdnotesCreateStandaloneNote = Create Standalone note for Entry
+zutilo.shortcuts.name.MdnotesCreateMdNote = Create Mdnote for entry
diff --git a/addon/chrome/locale/zh-CN/zutilo/zutilo.dtd b/addon/chrome/locale/zh-CN/zutilo/zutilo.dtd
deleted file mode 100644
index 50a0837..0000000
--- a/addon/chrome/locale/zh-CN/zutilo/zutilo.dtd
+++ /dev/null
@@ -1,50 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/addon/chrome/locale/zh-CN/zutilo/zutilo.properties b/addon/chrome/locale/zh-CN/zutilo/zutilo.properties
index 2f77414..5a57782 100644
--- a/addon/chrome/locale/zh-CN/zutilo/zutilo.properties
+++ b/addon/chrome/locale/zh-CN/zutilo/zutilo.properties
@@ -1,9 +1,5 @@
-zutilo.startup.upgrademessage =
-
zutilo.preferences.menuitem = Zutilo 首选项...
-zutilo.error.pastetitle = Zutilo: 剪贴板错误
-zutilo.error.pastemessage = Zutilo 尝试从剪贴板复制文本,但是未找到有效文本。
zutilo.error.bookitemtitle = Zutilo: 条目类型错误
zutilo.error.bookitemmessage = 尝试的命令只对书籍条目有效。
zutilo.error.booksectiontitle = Zutilo: 条目类型错误
@@ -11,8 +7,6 @@ zutilo.error.booksectionmessage = 尝试的命令只对图书章节条目有效
zutilo.error.copynoitemstitle = 复制区域错误
zutilo.error.copynoitemstext = 未选择找正确条目来复制,剪切板已经修改。
-zutilo.context.savelink = 附加到 Zotero 条目
-
zutilo.checkItems.errorTitle = Zutilo: 选择项目错误
zutilo.checkItems.regular1 = 请选择至少一个常规条目。
zutilo.checkItems.regularSingle = 请选择一个(仅一个)常规条目。
@@ -43,10 +37,11 @@ zutilo.itemmenu.modifyURLAttachments = 修改URL链接
zutilo.itemmenu.showAttachments = 显示附件路径
zutilo.itemmenu.copyAttachmentPaths = 复制附件路径
zutilo.itemmenu.copyItems = 快捷复制条目到剪切板
-zutilo.itemmenu.copyItems_alt1 = 快捷复制条目到剪切板 (Alt. 1)
-zutilo.itemmenu.copyItems_alt2 = 快捷复制条目到剪切板 (Alt. 2)
+zutilo.itemmenu.copyItems_alt = 快捷复制条目到剪切板 (Alt. %S)
zutilo.itemmenu.copyZoteroSelectLink = 复制选中的条目链接
+zutilo.itemmenu.copyZoteroItemID = 复制 Zotero IDs
zutilo.itemmenu.copyZoteroItemURI = 复制 Zotero URI
+zutilo.itemmenu.openZoteroItemURI = Open Zotero URIs
zutilo.itemmenu.createBookSection = 新建图书章节条目
zutilo.itemmenu.createBookItem = 新建书籍条目
zutilo.itemmenu.copyChildIDs = 剪切子条目
@@ -55,6 +50,7 @@ zutilo.itemmenu.copyJSON = Copy item fields
zutilo.itemmenu.pasteJSONIntoEmptyFields = Paste into empty item fields
zutilo.itemmenu.pasteJSONFromNonEmptyFields = Paste non-empty item fields
zutilo.itemmenu.pasteJSONAll = Paste all item fields
+zutilo.itemmenu.pasteJSONItemType = Paste item type
zutilo.collectionmenu.zutilo = Zutilo
zutilo.collectionmenu.copyZoteroCollectionSelectLink = Copy select collection link
@@ -73,10 +69,11 @@ zutilo.preferences.itemmenu.modifyAttachments= 修改附件
zutilo.preferences.itemmenu.copyAttachmentPaths = 复制附件路径
zutilo.preferences.itemmenu.copyCreators = 复制创建者
zutilo.preferences.itemmenu.copyItems = 快捷复制条目
-zutilo.preferences.itemmenu.copyItems_alt1 = 快捷复制条目 (Alt 1)
-zutilo.preferences.itemmenu.copyItems_alt2 = 快捷复制条目 (Alt 2)
+zutilo.preferences.itemmenu.copyItems_alt = 快捷复制条目 (Alt %S)
zutilo.preferences.itemmenu.copyZoteroSelectLink = 复制选中条目链接
+zutilo.preferences.itemmenu.copyZoteroItemID = 复制 Zotero IDs
zutilo.preferences.itemmenu.copyZoteroItemURI = 复制 Zotero URI
+zutilo.preferences.itemmenu.openZoteroItemURI = Open Zotero URIs
zutilo.preferences.itemmenu.createBookSection = 新建图书章节条目
zutilo.preferences.itemmenu.createBookItem = 新建书籍条目
zutilo.preferences.itemmenu.copyChildIDs = 复制子条目
@@ -85,12 +82,13 @@ zutilo.preferences.itemmenu.copyJSON = Copy item fields
zutilo.preferences.itemmenu.pasteJSONIntoEmptyFields = Paste into empty item fields
zutilo.preferences.itemmenu.pasteJSONFromNonEmptyFields = Paste non-empty item fields
zutilo.preferences.itemmenu.pasteJSONAll = Paste all item fields
+zutilo.preferences.itemmenu.pasteJSONItemType = Paste item type
zutilo.preferences.collectionmenu.Zotero = Zotero context menu
zutilo.preferences.collectionmenu.Zutilo = Zutilo context menu
zutilo.preferences.collectionmenu.Hide = Hide
zutilo.preferences.collectionmenu.copyZoteroCollectionSelectLink = Copy select collection link
-zutilo.preferences.collectionmenu.copyZoteroCollectionURI = Copy Zotero URIs
+zutilo.preferences.collectionmenu.copyZoteroCollectionURI = Copy Zotero URI
zutilo.shortcuts.disabled = <无>
zutilo.shortcuts.unrecognized = <$1>
@@ -110,51 +108,54 @@ zutilo.shortcuts.category.itemcreation = 条目建立
zutilo.shortcuts.category.itemediting = 条目编辑
zutilo.shortcuts.category.other = 其他
zutilo.shortcuts.category.uinavigation = UI 导航
-
-zutilo.shortcuts.name.copyTags = 复制标签
-zutilo.shortcuts.name.removeTags = 删除标签
-zutilo.shortcuts.name.copyCreators = 复制创作者
-zutilo.shortcuts.name.pasteTags = 粘贴标签
-zutilo.shortcuts.name.relateItems = 相关条目
-zutilo.shortcuts.name.showAttachments = 显示附件
-zutilo.shortcuts.name.modifyAttachments = 编辑附件
-zutilo.shortcuts.name.modifyURLAttachments = 编辑 URL 附件
-zutilo.shortcuts.name.copyAttachmentPaths = 复制附件路径
-zutilo.shortcuts.name.copyItems = 快捷复制
-zutilo.shortcuts.name.copyItems_alt1 = 快捷复制 (Alt 1)
-zutilo.shortcuts.name.copyItems_alt2 = 快捷复制 (Alt 2)
-zutilo.shortcuts.name.copyZoteroSelectLink = 拷贝所选条目链接
-zutilo.shortcuts.name.copyZoteroItemURI = 拷贝 Zotero URI
-zutilo.shortcuts.name.createBookSection = 新建图书章节
-zutilo.shortcuts.name.createBookItem = 新建书籍条目
-zutilo.shortcuts.name.copyChildIDs = 剪切子条目
-zutilo.shortcuts.name.relocateChildren = 移动子条目
-zutilo.shortcuts.name.itemInfo = 编辑条目信息
-zutilo.shortcuts.name.addNote = 添加笔记
-zutilo.shortcuts.name.addTag = 添加标签
-zutilo.shortcuts.name.relateDialog = 相关条目会话
-zutilo.shortcuts.name.attachPage = 附加当前页面
-zutilo.shortcuts.name.saveItemZutilo = Save item (reverse attachment pref)
-zutilo.shortcuts.name.saveItemWithAttachments = 保存条目并添加附件
-zutilo.shortcuts.name.saveItemWithoutAttachments = 保存条目不添加附件
-zutilo.shortcuts.name.toggleZotero = 切换 Zotero
-zutilo.shortcuts.name.focusZotero = 显示 Zotero
-zutilo.shortcuts.name.hideZotero = 隐藏 Zotero
-zutilo.shortcuts.name.saveItemZotero = 保存条目
-zutilo.shortcuts.name.websiteItem = 新建网页条目
-zutilo.shortcuts.name.newItemMenu = 打开新建条目菜单
-zutilo.shortcuts.name.lookupID = 通过标识符添加条目
+zutilo.shortcuts.category.mdnotes = mdnotes
+
+zutilo.shortcuts.name.copyTags = Copy tags
+zutilo.shortcuts.name.removeTags = Remove tags
+zutilo.shortcuts.name.copyCreators = Copy creators
+zutilo.shortcuts.name.pasteTags = Paste tags
+zutilo.shortcuts.name.relateItems = Relate items
+zutilo.shortcuts.name.showAttachments = Show attachments
+zutilo.shortcuts.name.modifyAttachments = Modify attachments
+zutilo.shortcuts.name.modifyURLAttachments = Modify attached URLs
+zutilo.shortcuts.name.copyAttachmentPaths = Copy attachment paths
+zutilo.shortcuts.name.copyItems = QuickCopy items
+zutilo.shortcuts.name.copyItems_alt = QuickCopy items (alt %S)
+zutilo.shortcuts.name.copyZoteroSelectLink = Copy select item links
+zutilo.shortcuts.name.copyZoteroItemID = 复制 Zotero IDs
+zutilo.shortcuts.name.copyZoteroItemURI = Copy Zotero URIs
+zutilo.shortcuts.name.openZoteroItemURI = Open Zotero URIs
+zutilo.shortcuts.name.createBookSection = Create book section
+zutilo.shortcuts.name.createBookItem = Create book item
+zutilo.shortcuts.name.copyChildIDs = Copy child items
+zutilo.shortcuts.name.relocateChildren = Relocate child items
+zutilo.shortcuts.name.itemInfo = Item pane: Edit item info
+zutilo.shortcuts.name.addNote = Item pane: Add note
+zutilo.shortcuts.name.addTag = Item pane: Add tag
+zutilo.shortcuts.name.relateDialog = Item pane: Add related item
+zutilo.shortcuts.name.newItemMenu = Open new item menu
+zutilo.shortcuts.name.advancedSearch = Advanced search
+zutilo.shortcuts.name.lookupID = Lookup item by identifier
zutilo.shortcuts.name.linked = Create link to file
zutilo.shortcuts.name.attachLinkFile = 附加文件链接
zutilo.shortcuts.name.duplicateItem = 复制条目
zutilo.shortcuts.name.generateReport = 生成报告
+zutilo.shortcuts.name.openRunJSWindow = Open Run JavaScript window
zutilo.shortcuts.name.openStyleEditor = 打开样式编辑器
zutilo.shortcuts.name.recognizeSelected = 从PDF读取源数据
zutilo.shortcuts.name.createParentItemsFromSelected = 创建父条目
zutilo.shortcuts.name.renameSelectedAttachmentsFromParents = 重命名附件
zutilo.shortcuts.name.attachURI = 附件: 添加到 URI 的链接
+zutilo.shortcuts.name.findPDF = Find Available PDFs
zutilo.shortcuts.name.attachStoredFile = 附件: 添加已存文件副本
zutilo.shortcuts.name.showFile = Show attached file
+zutilo.shortcuts.name.copyJSON = Copy item fields
+zutilo.shortcuts.name.pasteJSONIntoEmptyFields = Paste into empty item fields
+zutilo.shortcuts.name.pasteJSONFromNonEmptyFields = Paste non-empty item fields
+zutilo.shortcuts.name.pasteJSONAll = Paste all item fields
+zutilo.shortcuts.name.pasteJSONItemType = Paste item type
+zutilo.shortcuts.name.copyZoteroCollectionSelectLink = Copy select collection link
+zutilo.shortcuts.name.copyZoteroCollectionURI = Copy collection Zotero URI
zutilo.shortcuts.name.focusZoteroCollectionsTree = 切换至分类窗格
zutilo.shortcuts.name.focusZoteroItemsTree = 切换至条目窗格
@@ -168,16 +169,22 @@ zutilo.shortcuts.name.toggleZoteroItemPane = 显示/隐藏条目窗格
zutilo.shortcuts.name.toggleZoteroCollectionsPane = 显示/隐藏分类窗格
zutilo.shortcuts.name.toggleZoteroItemPaneStickySplitter = 显示/隐藏条目窗格 (sticky)
zutilo.shortcuts.name.toggleZoteroCollectionsPaneStickySplitter = 显示/隐藏分类窗格 (sticky)
+zutilo.shortcuts.name.locateMenu = Show Locate menu
+zutilo.shortcuts.name.locateItem = Locate with Google Scholar
+zutilo.shortcuts.name.toggleAutomaticTags = Tag selector: toggle automatic
+zutilo.shortcuts.name.toggleAllTags = Tag selector: toggle display all
+zutilo.shortcuts.name.deselectTags = Tag selector: deselect all
+zutilo.shortcuts.name.focusTagSelector = Tag selector: focus search box
+
zutilo.shortcuts.name.BBTPin = 固定 BBT Citation Key
zutilo.shortcuts.name.BBTUnpin = 解除固定 BBT Citation Key
zutilo.shortcuts.name.BBTRefresh = 刷新 BBT Citation Key
+zutilo.shortcuts.name.BBTtoTeXstudio = Push references to TeXstudio
zutilo.shortcuts.name.ZotFileAttach = Attach new file
+zutilo.shortcuts.name.ZotFileRename = Move and rename attachments
+zutilo.shortcuts.name.ZotFileExtractAnnotations = Extract annotations
-zutilo.pagescrape.multipleExecution.title = 已阻止 Zutilo 项目同步转换
-zutilo.pagescrape.multipleExecution.body = 同步转换可能会导致附件与期望的不同地被保存或不被保存。使用 Zutilo 转换时请首先完成一个转换后再开始另一个转换。
-zutilo.pagescrape.statusPopup.noAttachments = 无附件
-zutilo.pagescrape.statusPopup.withAttachments = 有附件
-
-zutilo.ffcacm.zutilo = Zutilo
-zutilo.ffcacm.attachPage = 附加页面到 Zotero 项目
-zutilo.ffcacm.attachLink = 附加链接到 Zotero 项目
+zutilo.shortcuts.name.MdnotesBatchExport = Export all Notes as Markdown
+zutilo.shortcuts.name.MdnotesExport = Export item as Markdown
+zutilo.shortcuts.name.MdnotesCreateStandaloneNote = Create Standalone note for Entry
+zutilo.shortcuts.name.MdnotesCreateMdNote = Create Mdnote for entry
diff --git a/addon/chrome/skin/default/zutilo/dialog.css b/addon/chrome/skin/default/zutilo/dialog.css
deleted file mode 100644
index 604af22..0000000
--- a/addon/chrome/skin/default/zutilo/dialog.css
+++ /dev/null
@@ -1,5 +0,0 @@
-@import url(chrome://global/skin/);
-
-.bigText {
- font-size:150%;
-}
diff --git a/addon/chrome/skin/default/zutilo/overlay.css b/addon/chrome/skin/default/zutilo/overlay.css
deleted file mode 100644
index e69de29..0000000
diff --git a/addon/install.rdf b/addon/install.rdf
index b432067..55dbde6 100644
--- a/addon/install.rdf
+++ b/addon/install.rdf
@@ -5,9 +5,9 @@
zutilo@www.wesailatdawn.comZutilo Utility for Zotero
- 3.1.1a
+ 4.0.1true
- https://raw.githubusercontent.com/willsALMANJ/Zutilo/release/deploy/update.rdf
+ https://raw.githubusercontent.com/wshanks/Zutilo/release/deploy/update.rdf
@@ -29,15 +29,6 @@
es: Will Shanks and Urkozh-CN: Wang H. K. and Liu K.
-
-
-
- {ec8030f7-c20a-464f-9b0e-13a3a9e97384}
- 16.0a1
- 56.*
-
-
-
diff --git a/addon/locale/de/zutilo.ftl b/addon/locale/de/zutilo.ftl
new file mode 100644
index 0000000..332d068
--- /dev/null
+++ b/addon/locale/de/zutilo.ftl
@@ -0,0 +1,22 @@
+zutilo-preferences-menu-items = Menu items
+zutilo-preferences-ui-itemmenu = Zotero item menu
+zutilo-preferences-ui-collectionmenuLabel = Zotero collection menu
+
+zutilo-preferences-shortcuts = Shortcuts
+zutilo-preferences-shortcuts-labels =
+ .label = Name
+zutilo-preferences-shortcuts-categories =
+ .label = Category
+zutilo-preferences-shortcuts-keys =
+ .label = Tastenkombination
+zutilo-preferences-shortcuts-apply =
+ .label = Übernehmen
+zutilo-preferences-shortcuts-disable =
+ .label = Deaktivieren
+
+zutilo-preferences-readme-caption = Über Zutilo
+zutilo-preferences-readme-button =
+ .value = Liesmich Dokument zeigen
+zutilo-about-opengithub =
+ .href = https://github.com/wshanks/Zutilo/tree/master/i18n/de/readme
+ .value = GitHub Seite öffnen
diff --git a/addon/locale/en-US/zutilo.ftl b/addon/locale/en-US/zutilo.ftl
new file mode 100644
index 0000000..2ed6cb2
--- /dev/null
+++ b/addon/locale/en-US/zutilo.ftl
@@ -0,0 +1,22 @@
+zutilo-preferences-menu-items = Menu items
+zutilo-preferences-ui-itemmenu = Zotero item menu
+zutilo-preferences-ui-collectionmenuLabel = Zotero collection menu
+
+zutilo-preferences-shortcuts = Shortcuts
+zutilo-preferences-shortcuts-labels =
+ .label = Name
+zutilo-preferences-shortcuts-categories =
+ .label = Category
+zutilo-preferences-shortcuts-keys =
+ .label = Shortcut
+zutilo-preferences-shortcuts-apply =
+ .label = Apply
+zutilo-preferences-shortcuts-disable =
+ .label = Disable
+
+zutilo-preferences-readme-caption = About Zutilo
+zutilo-preferences-readme-button =
+ .value = Show readme document
+zutilo-about-opengithub =
+ .href = https://github.com/wshanks/Zutilo/tree/master/i18n/en-US/readme
+ .value = Open GitHub page
diff --git a/addon/locale/es/zutilo.ftl b/addon/locale/es/zutilo.ftl
new file mode 100644
index 0000000..189de77
--- /dev/null
+++ b/addon/locale/es/zutilo.ftl
@@ -0,0 +1,22 @@
+zutilo-preferences-menu-items = Menu items
+zutilo-preferences-ui-itemmenu = Zotero item menu
+zutilo-preferences-ui-collectionmenuLabel = Zotero collection menu
+
+zutilo-preferences-shortcuts = Shortcuts
+zutilo-preferences-shortcuts-labels =
+ .label = Name
+zutilo-preferences-shortcuts-categories =
+ .label = Category
+zutilo-preferences-shortcuts-keys =
+ .label = Combinacíon
+zutilo-preferences-shortcuts-apply =
+ .label = Aplicar
+zutilo-preferences-shortcuts-disable =
+ .label = Deshabilitar
+
+zutilo-preferences-readme-caption = Acerca de Zutilo
+zutilo-preferences-readme-button =
+ .value = Mostrar Léame
+zutilo-about-opengithub =
+ .href = https://github.com/wshanks/Zutilo/tree/master/i18n/es/readme
+ .value = Abrir página de GitHub
diff --git a/addon/locale/fr/zutilo.ftl b/addon/locale/fr/zutilo.ftl
new file mode 100644
index 0000000..24ac10d
--- /dev/null
+++ b/addon/locale/fr/zutilo.ftl
@@ -0,0 +1,22 @@
+zutilo-preferences-menu-items = Menu items
+zutilo-preferences-ui-itemmenu = Menu des documents Zotero
+zutilo-preferences-ui-collectionmenuLabel = Menu des collections Zotero
+
+zutilo-preferences-shortcuts = Raccourcis-clavier
+zutilo-preferences-shortcuts-labels =
+ .label = Nom
+zutilo-preferences-shortcuts-categories =
+ .label = Catégorie
+zutilo-preferences-shortcuts-keys =
+ .label = Raccourci
+zutilo-preferences-shortcuts-apply =
+ .label = Appliquer
+zutilo-preferences-shortcuts-disable =
+ .label = Désactiver
+
+zutilo-preferences-readme-caption = À propos de Zutilo
+zutilo-preferences-readme-button =
+ .value = Afficher le lisez-moi
+zutilo-about-opengithub =
+ .href = https://github.com/wshanks/Zutilo/tree/master/i18n/fr/readme
+ .value = Ouvrir la page de développement (sur GitHub)
diff --git a/addon/locale/zh-CN/zutilo.ftl b/addon/locale/zh-CN/zutilo.ftl
new file mode 100644
index 0000000..4433a55
--- /dev/null
+++ b/addon/locale/zh-CN/zutilo.ftl
@@ -0,0 +1,22 @@
+zutilo-preferences-menu-items = Menu items
+zutilo-preferences-ui-itemmenu = Zotero 选项菜单
+zutilo-preferences-ui-collectionmenuLabel = Zotero collection menu
+
+zutilo-preferences-shortcuts = 快捷键列表
+zutilo-preferences-shortcuts-labels =
+ .label = 名称
+zutilo-preferences-shortcuts-categories =
+ .label = 分类
+zutilo-preferences-shortcuts-keys =
+ .label = 快捷键
+zutilo-preferences-shortcuts-apply =
+ .label = 应用
+zutilo-preferences-shortcuts-disable =
+ .label = 重置
+
+zutilo-preferences-readme-caption = 关于 Zutilo
+zutilo-preferences-readme-button =
+ .value = 显示自述文档
+zutilo-about-opengithub =
+ .href = https://github.com/wshanks/Zutilo/tree/master/i18n/zh-CN/readme
+ .value = 打开 GitHub 页面
diff --git a/addon/manifest.json b/addon/manifest.json
new file mode 100644
index 0000000..5b4ffe7
--- /dev/null
+++ b/addon/manifest.json
@@ -0,0 +1,19 @@
+{
+ "manifest_version": 2,
+ "name": "Zutilo Utility for Zotero",
+ "version": "4.0.1",
+ "description": "A utility adding assorted macros for Zotero",
+ "author": "Will Shanks",
+ "icons": {
+ "48": "zutilo.png",
+ "64": "zutilo64.png"
+ },
+ "applications": {
+ "zotero": {
+ "id": "zutilo@www.wesailatdawn.com",
+ "update_url": "https://raw.githubusercontent.com/wshanks/Zutilo/release/deploy/updates.json",
+ "strict_min_version": "7.0.0",
+ "strict_max_version": "7.*"
+ }
+ }
+}
diff --git a/addon/chrome/skin/default/zutilo/zutilo.png b/addon/zutilo.png
similarity index 100%
rename from addon/chrome/skin/default/zutilo/zutilo.png
rename to addon/zutilo.png
diff --git a/addon/chrome/skin/default/zutilo/zutilo64.png b/addon/zutilo64.png
similarity index 100%
rename from addon/chrome/skin/default/zutilo/zutilo64.png
rename to addon/zutilo64.png
diff --git a/deploy/config.yaml b/deploy/config.yaml
index 26af8c5..297318d 100644
--- a/deploy/config.yaml
+++ b/deploy/config.yaml
@@ -1,10 +1,10 @@
github:
- user: willsalmanj
+ user: wshanks
repo: zutilo
token: deploy/github.token
assets:
- path: build/zutilo.xpi
- type: application/x-xpinstall
+ type: application/vnd.zotero.plugin
git_release:
remote: origin
@@ -12,8 +12,12 @@ git_release:
version_strings:
- path: addon/install.rdf
- pattern: ()(?P.*)()
+ pattern: ("version": ")(?P.*)(",)
- path: deploy/update.rdf
- pattern: ()(?P.*)()
+ pattern: ("version": )(?P.*)(,)
- path: deploy/update.rdf
- pattern: (https://github.com/willsALMANJ/Zutilo/releases/download/v)(?P.*)(/zutilo.xpi)
+ pattern: ("updateLink": "https://github.com/wshanks/Zutilo/releases/download/v)(?P.*)(/zutilo.xpi",)
+- path: package.json
+ pattern: '^( "version": ")(?P.*)(",)$'
+- path: package-lock.json
+ pattern: '^( "version": ")(?P.*)(",)$'
diff --git a/deploy/update.rdf b/deploy/update.rdf
index 27c7235..567863d 100644
--- a/deploy/update.rdf
+++ b/deploy/update.rdf
@@ -6,22 +6,13 @@
- 3.1.0
+ 3.10.1a1
- {ec8030f7-c20a-464f-9b0e-13a3a9e97384}
- 34.0
- 56.*
- https://github.com/willsALMANJ/Zutilo/releases/download/v3.1.0/zutilo.xpi
-
-
-
-
-
- zotero@chnm.gmu.edu
- 3.0b1
- *
- https://github.com/willsALMANJ/Zutilo/releases/download/v3.1.0/zutilo.xpi
+ zotero@chnm.gmu.edu
+ 3.0b1
+ *
+ https://github.com/wshanks/Zutilo/releases/download/v3.10.1a1/zutilo.xpi
@@ -29,8 +20,8 @@
juris-m@juris-m.github.io4.0
- 5.0.*
- https://github.com/willsALMANJ/Zutilo/releases/download/v3.1.0/zutilo.xpi
+ *
+ https://github.com/wshanks/Zutilo/releases/download/v3.10.1a1/zutilo.xpi
diff --git a/deploy/updates.json b/deploy/updates.json
new file mode 100644
index 0000000..0875733
--- /dev/null
+++ b/deploy/updates.json
@@ -0,0 +1,38 @@
+{
+ "addons": {
+ "zutilo@www.wesailatdawn.com": {
+ "updates": [
+ {
+ "version": "3.10.1",
+ "update_link": "https://github.com/wshanks/Zutilo/releases/download/v3.10.1/zutilo.xpi",
+ "applications": {
+ "gecko": {
+ "strict_min_version": "60.9",
+ "strict_max_version": "60.9"
+ }
+ }
+ },
+ {
+ "version": "4.0.0",
+ "update_link": "https://github.com/wshanks/Zutilo/releases/download/v4.0.0/zutilo.xpi",
+ "applications": {
+ "zotero": {
+ "strict_min_version": "7.0.0",
+ "strict_max_version": "7.0.*"
+ }
+ }
+ },
+ {
+ "version": "4.0.1",
+ "update_link": "https://github.com/wshanks/Zutilo/releases/download/v4.0.1/zutilo.xpi",
+ "applications": {
+ "zotero": {
+ "strict_min_version": "7.0.0",
+ "strict_max_version": "7.*"
+ }
+ }
+ }
+ ]
+ }
+ }
+}
diff --git a/docs/BUGS.md b/docs/BUGS.md
index f9b8b0f..aac7d27 100644
--- a/docs/BUGS.md
+++ b/docs/BUGS.md
@@ -1,7 +1,7 @@
### Bugs
-The latest source code for Zutilo is maintained on [GitHub](https://github.com/willsALMANJ/Zutilo "Zutilo's GitHub page").
-Bugs can be reported by clicking on the "New Issue" button under [the Issues section](https://github.com/willsALMANJ/Zutilo/issues "GitHub Issues page") of the GitHub site.
+The latest source code for Zutilo is maintained on [GitHub](https://github.com/wshanks/Zutilo "Zutilo's GitHub page").
+Bugs can be reported by clicking on the "New Issue" button under [the Issues section](https://github.com/wshanks/Zutilo/issues "GitHub Issues page") of the GitHub site.
You can also check there to see if a bug you experience has already been reported by another user.
Make sure to check the "closed" tab of the Issues section to see if the bug has already been addressed.
@@ -19,24 +19,19 @@ When submitting bug reports, please include the following:
1. Version of Zutilo used
2. Version of Zotero used
-3. Version of Firefox used (if applicable)
-4. Step-by-step instructions to reproduce the bug
+3. Step-by-step instructions to reproduce the bug
-The versions of Zutilo and Zotero can be looked up in the Addons Manager (`about:addons`) in Firefox.
-The version of Firefox can be found in `Help->About Firefox`.
For Zotero Standalone, the version of Zutilo can be found in `Tools->Addons` and the version of Zotero in `Help->About Zotero`.
-Additionally, if possible please provide any javascript errors that appear in the Browser Console when the bug occurs.
-The Browser Console can be opened with `Ctrl+Shift+J` (`Cmd+Shift+J` on OS X).
-Try to clear the output, reproduce the bug, and then check the Browswer Console to see if any messages related to Zutilo or Zotero appeared.
-While it is technically possible to open the Browser Console in Zotero Standalone, it is quite difficult to do.
-It is recommended to try to reproduce the bug in Firefox in order to check for Browser Console messages.
+Additionally, if possible please provide any javascript errors that appear in the Error Console when the bug occurs.
+The Error Console can be opened from the Tools->Developer menu.
+Try to clear the output, reproduce the bug, and then check the Error Console to see if any messages related to Zutilo or Zotero appeared.
### Feature requests
Feature requests may also be submitted by opening a new issue.
If you would like to contribute a patch, please open a new issue before submitting your code.
-A description of the kinds of features that are appropriate for Zutilo can be found on [the Zutilo wiki page](https://github.com/willsALMANJ/Zutilo/wiki).
+A description of the kinds of features that are appropriate for Zutilo can be found on [the Zutilo wiki page](https://github.com/wshanks/Zutilo/wiki).
A roadmap of planned features is also available on the wiki.
### Translation
diff --git a/docs/COMMANDS.md b/docs/COMMANDS.md
index 99296b4..d028def 100644
--- a/docs/COMMANDS.md
+++ b/docs/COMMANDS.md
@@ -1,6 +1,6 @@
### Item menu functions
-Each of the functions below can be called from the Zotero item menu (accessed by right-clicking in the items pane in the middle of Zotero where all of a collection's items are listed).
-In the Zutilo preferences (accessed from the same menu as Zotero's preferences), each of these functions can be set to show up in the Zotero item menu, in a Zutilo submenu of the Zotero item menu, or not to appear at all.
+Each of the functions below can be called from the Zotero item context menu (accessed by right-clicking in the items pane in the middle of Zotero where all of a collection's items are listed).
+In the Zutilo preferences (accessed from Zotero "Tools" menu), each of these functions can be set to show up in the Zotero item menu, in a Zutilo submenu of the Zotero item menu, or not to appear at all.
* __Copy tags:__
Right click items in the Zotero library and copy their tags to the clipboard as a '\r\n' delimited list.
@@ -42,34 +42,42 @@ In the Zutilo preferences (accessed from the same menu as Zotero's preferences),
Set all selected items to be related to each other.
* __QuickCopy items:__
- Copy selected items to the clipboard using the "Default output format" specified in the "Export" section of Zotero's preferences.
- There are also two alternative QuickCopy items (labeled "alt 1" and "alt 2").
- These items will copy to the clipboard using alternative export translators.
- To select the translators used by these functions, the corresponding preferences `extensions.zutilo.quickcopy_alt1` and `extensions.zutilo.quickcopy_alt2` must be set in the config editor.
- Each preference should be set to whatever appears in the config editor for the `export.quickCopy.setting` preference when the desired translator is set as the "Default output format" in Zotero's preferences.
- The config editor can be opened from the Advanced pane of Zotero's preferences window (or by visiting `about:config` if using Zotero as a Firefox add-on).
+ Copy selected items to the clipboard using the "Default output format" specified in the "Export" section of Zotero's preferences.
+ It is also possible to set alternative quick copy items.
+ By default, two such items are enabled, labeled "alt 1" and "alt 2".
+ Additional items can be enabled by changing the `extensions.zutilo.copyItems_alt_total` preference in the config editor.
+ These items will copy to the clipboard using alternative export translators.
+ To select the translators used by these functions, the corresponding preferences `extensions.zutilo.quickcopy_alt1`, `extensions.zutilo.quickcopy_alt2`, etc. must be set in the config editor.
+ Each preference should be set to whatever appears in the config editor for the `export.quickCopy.setting` preference when the desired translator is set as the "Default output format" in Zotero's preferences.
+ The config editor can be opened from the Advanced pane of Zotero's preferences window.
* __Copy select item links:__
- Copy links of the form "zotero://select/items/ITEM_ID" to the clipboard for each selected item.
- Pasting such a link into the Firefox address bar will select the corresponding item in the Zotero Firefox plugin.
- Following links from other applications and having the links select items in the Zotero Standalone client may also be achievable but might require additional set up.
+ Copy links of the form "zotero://select/library/items/ITEM_ID" to the clipboard for each selected item.
+ Following links from other applications can select items in the Zotero client but might require additional set up.
+
+* __Copy Zotero IDs:__
+ Copy the ID of each selected item to the clipboard.
* __Copy Zotero URIs:__
- Copy (www.zotero.org) links to the clipboard for each selected item.
- If you have a (www.zotero.org) profile, following such a link will open the page for the corresponding item in profile on (www.zotero.org).
- If you do not have a (www.zotero.org) profile, a placeholder link is still generated but might not be useful.
+ Copy (www.zotero.org) links to the clipboard for each selected item.
+ If you have a (www.zotero.org) profile, following such a link will open the page for the corresponding item in profile on (www.zotero.org).
+ If you do not have a (www.zotero.org) profile, a placeholder link is still generated but might not be useful.
+
+* __Open Zotero URIs:__
+ Open (www.zotero.org) links for each selected item.
+ See description for "Copy Zotero URIs".
* __Create book section:__
- Create a book section item from the currently selected book item.
+ Create a book section item from the currently selected book item.
- The new item is created by duplicating the book item and changing its type to book section.
- Author entries for the book item are converted to "book author" entries for the new book section item.
- The new book section item is added as a related item to the original book item.
- Finally, the title textbox for the new item is focused so that a new title for the book section may be entered.
+ The new item is created by duplicating the book item and changing its type to book section.
+ Author entries for the book item are converted to "book author" entries for the new book section item.
+ The new book section item is added as a related item to the original book item.
+ Finally, the title textbox for the new item is focused so that a new title for the book section may be entered.
- This function only works when a single book item is selected.
- Note that some fields (number of pages and short title, as of late 2014) apply only to book items and not book section items.
- There is no prompt to confirm this loss of fields from the created book section item.
+ This function only works when a single book item is selected.
+ Note that some fields (number of pages and short title, as of late 2014) apply only to book items and not book section items.
+ There is no prompt to confirm this loss of fields from the created book section item.
* __Create book item:__
Create a book item from teh currently selected book section item.
@@ -98,8 +106,33 @@ In the Zutilo preferences (accessed from the same menu as Zotero's preferences),
(‘Paste-non-empty’): paste where source has value.
Replaces authors if there is an author field in the pasted data.
-* __Paste all items fields__
- (Paste-all): paste all fields from source, even if they are empty.
+* __Paste all item fields__
+ (‘Paste-all’): Paste all item fields from source, even if they are empty.
+
+ To edit specific item fields, select a source item and use "Copy item fields".
+ Paste to a text editor, edit the JSON text, then copy the modified text back to the clipboard.
+ Finally, select the target items and use "Paste all item fields".
+ The `itemType` name/value pair needs to be kept in the JSON text because Zutilo uses its presence to decide whether to use the paste JSON commands in the context menu; its value is irrelevant for this function.
+ You can, e.g., clear the URL field in multiple items by pasting `{"itemType": "book", "url": ""}`, which will not change any item types.
+
+* __Paste item type__
+ (‘Paste-type’): Paste the item type of the source item to the target items.
+ This will not change item field values.
+ However, changing the type of a Zotero item modifies the list of its valid fields.
+ It's important to realize that data in invalid fields will be lost!
+
+### Collection menu functions
+Each of the functions below can be called from the Zotero collection context menu (accessed by right-clicking on a collection in the collections pane at the right of Zotero where all the collections are listed).
+In the Zutilo preferences (accessed from Zotero "Tools" menu), each of these functions can be set to show up in the Zotero item menu, in a Zutilo submenu of the Zotero item menu, or not to appear at all.
+
+* __Copy select collection link:__
+ Copy links of the form "zotero://select/library/collections/ITEM_ID" to the clipboard for the selected collection.
+ Following links from other applications can select the collection in the Zotero client but might require additional set up.
+
+* __Copy Zotero URI:__
+ Copy (www.zotero.org) link to the clipboard for the selected collection.
+ If you have a (www.zotero.org) profile, following such a link will open the page for the corresponding item in profile on (www.zotero.org).
+ If you do not have a (www.zotero.org) profile, a placeholder link is still generated but might not be useful.
### Navigating the UI and editing items via keyboard shortcuts
@@ -138,7 +171,7 @@ The following four functions are similar to the four item editing functions abov
* __Focus item pane: Related tab:__
Select the "Related" tab of the item pane.
-The following two functions allow you to cycle through the same four tags in the item pane.
+The following two functions allow you to cycle through the same four tabs in the item pane.
* __Focus item pane: next tab:__
Select next tab in item pane.
@@ -189,11 +222,14 @@ However, when the pane is shown, the thicker vertical divider ("splitter", "grip
* __Create parent item:__
Create a parent item for the currently selected attachment item that does not have a parent.
+* __Find available PDFs:__
+ Find available PDFs for selected items.
+
* __Rename attachments:__
Use the parent item's metadata to rename its attachments.
* __Retrieve metadata for pdf:__
- Try to look up the metadata for the selected stored pdf attachment in Google Scholar.
+ Try to look up the metadata for the selected stored pdf attachment.
### Miscellaneous functions
@@ -208,74 +244,22 @@ However, when the pane is shown, the thicker vertical divider ("splitter", "grip
* __Open New Item menu:__
Open the new item menu so that the type of new item to create can be selected from it.
-* __Open style editor:__
- Open the style editor window (normally accessible from the advanced section of Zotero's preferences).
-
-### Firefox browser shortcut functions
-
-The following shortcut functions are only available in the Zotero Firefox addon.
-
-* __Focus Zotero:__
- Make Zotero visible if it is not.
- Focus Zotero so that, e.g., `Tab` and the arrow keys work on the Zotero UI rather than the previously focused element of Firefox's UI.
-
-* __Hide Zotero:__
- Hide Zotero if it was visible.
-
-* __Toggle Zotero:__
- Show Zotero if it was not visible.
- Otherwise hide Zotero.
-
-* __Save webpage as a Zotero item:__
- Save the current page as a webpage item in Zotero.
+* __Open Run JavaScript window:__
+ Open the Run JavaScript window, which is also accessible through Zotero's "Tools" menu, by selecting "Developer" -> "Run JavaScript".
-* __Save item:__
- Add an item to the Zotero library based on the reference content of the current webpage (equivalent to clicking on the little page/book icon in the Firefox address bar).
- In Zotero, the function that creates the item from the web page content is referred to as a `translator`.
-
-* __Save item without attachments:__
- Create an item in a similar manner to "Save item" but __do not__ save attachment files for the item regardless of whether or not Zotero is set to save such attachments in its preferences.
-
-* __Save item with attachments:__
- Create an item in a similar manner to "Save item" but __do__ save attachment files for the item regardless of whether or not Zotero is set to save such attachments in its preferences.
-
-* __Save item (reverse attachment pref):__
- Create an item in a similar manner to "Save item" but only save attachments if Zotero is set not to save attachments in its preferences.
-
-* __Attach current page:__
- Attach the current browser page to the selected Zotero item.
- This function works best when the current web page is a PDF opened with Firefox's internal PDF viewer.
-
-### Firefox browser menu functions
-
-These functions add items to the Zotero "Save item" button's menu and to the Firefox right-click menu.
-Any of the menu items can be set to hidden in Zutilo's preferences.
-
-* __Attaching webpages and links to Zotero items:__
- Zutilo adds context menu items to Firefox for attaching the current page or the current link target (if a link is selected in the current web page) to the item currently selected in Zotero.
- Attaching the current web page is also available as a keyboard shortcut.
-
- How the attachment is processed depends on the attachment method set in Zutilo's preferences.
- If the method is 'Import', an imported attachment is created from the page/link.
- If the method is 'Prompt for linked file', a file prompt appears to allow the user to specify a new file.
- The page/link is saved to this file and then a linked file attachment (linked to the downloaded file) is created.
- If the method is 'Prompt after first', an imported attachment is created if the selected item has no previous attachments (not counting webpage snapshot attachments).
- Otherwise, the file prompt for creating a linked file attachment is shown.
- If the shift key is pressed when the attachment function is activated, a prompt for a linked file is shown regardless of Zutilo's preference setting.
- If the control key is pressed, the attachment is imported regardless of Zutilo's preference setting.
-
-* __Save item from a current webpage with or without attachments:__
- Zutilo adds extra menu items to the context menu of Zotero's "Save item" button that save an item for the current page with or without extracting the page's associated PDF's and other files.
- That is, if the "Automatically attach PDFs and other files" preference is selected in Zotero, Zutilo adds menu items for saving the item without attachments.
- One menu item is created for each "Save to Zotero" method that applies to the current page.
- If the preference is not selected, Zutilo adds menu items for saving an item with the attachments.
+* __Open style editor:__
+ Open the style editor window (normally accessible from the "Cite" tab of Zotero's preferences).
- This function works by toggling the associated files preference in Zotero, creating the item, and then toggling the preference back to its original state.
- Because Zotero translates pages asynchronously (and thus simultaneously), translations made with this function should be allowed to finish before starting normal page translations with Zotero (since otherwise the state of the "Associated files" preference will depend on the timing of the simultaneous translations).
+* __Locate item:__
+ Equivalent to using one of the Lookup engines from the Locate menu accessed from the top of the item pane.
+ The default engine is "Google Scholar Search".
+ To change the engine, modify the `extensions.zutilo.locateItemEngine` preference in the config editor.
+ The config editor can be opened from the Advanced pane of Zotero's preferences window.
+ For a list of valid engine names, select "Developer->Run JavaScript" from Zotero's "Tools" menu and enter and run this command: `Zotero.LocateManager.getVisibleEngines().map(engine => engine.name)`.
### Better BibTeX functions
-The following functions are only available when [Better BibTeX](https://github.com/retorquere/zotero-better-bibtex) is installed (and only for Zotero version 5.0 or higher).
+The following functions are only available when [Better BibTeX](https://github.com/retorquere/zotero-better-bibtex) is installed.
* __Pin key:__ Pin the key for the currently selected items.
@@ -283,4 +267,14 @@ The following functions are only available when [Better BibTeX](https://github.c
* __Force-refresh key:__ Force-refresh the key for the currently selected items.
+* __Push to TeXstudio:__ Push references to TeXstudio.
+
+### ZotFile functions
+
+The following functions are only available when [ZotFile](zotfile.com) is installed.
+
+* __Attach new file:__ Attach the newest file in the ZotFile source directory to the currently selected item.
+
+* __Move and rename attachments:__ Move and rename the files associated with the currently selected attachments to following the format configured in ZotFile's preferences.
+* __Extract annotations:__ Trigger ZotFile's "Extract Annotations" function.
diff --git a/docs/DEVELOPERS.md b/docs/DEVELOPERS.md
index 74be237..29c5a7a 100644
--- a/docs/DEVELOPERS.md
+++ b/docs/DEVELOPERS.md
@@ -15,7 +15,7 @@ The `make` machinery is mainly used for converting the README files from `markdo
Most of the Zutilo logic is contained in the files in `addon/chrome/content/zutilo`.
The highlights are:
-* `zutilo.jsm`
+* `zutilo.js`
- `addon/bootstrap.js` loads this file when Zutilo starts up and it handles the rest of the Zutilo setup.
- This file defines the `Zutilo` module.
- The `Zutilo` module contains properties about Zutilo that are window independent.
@@ -27,9 +27,6 @@ The highlights are:
* `zoteroOverlay.js`
- Contains all of the functions that extend Zotero's UI and all of the Zutilo defined functions that interact with Zotero data
-* `firefoxOverlay.js`
- - Contains all of the functions that are specific to the Firefox version of Zotero (e.g. functions that interact with the browser content)
-
* `keys.js`
- Defines all of Zutilo's keyboard shortcut functions
- To define a new shortcut:
diff --git a/docs/USAGE.md b/docs/USAGE.md
index ff9dfa2..a20d828 100644
--- a/docs/USAGE.md
+++ b/docs/USAGE.md
@@ -6,7 +6,7 @@ Zotero can work with either imported attachments, stored in Zotero's storage and
When storing attachments as linked files, the relative attachment paths feature in Zotero can be useful.
With this feature, a base attachment directory is selected and then any linked file attachments in this directory are saved with paths relative to this path.
Because these paths are relative, you can move all your attachments to a new directory and all you have to do is update this base directory setting in Zotero rather than updating the path to each individual attachment.
-If you use more than computer, you can set the base attachment directory to a different location on each machine (e.g. a DropBox or SyncThing folder) and still have all of the links to attachments work by setting this preference to the right location on each machine.
+If you use more than one computer, you can set the base attachment directory to a different location on each machine (e.g. a DropBox or SyncThing folder) and still have all of the links to attachments work by setting this preference to the right location on each machine.
Relative attachment paths can be configured under the "Files and Folders" tab of the Advanced Section of Zotero's preferences.
#### Linked file attachment organization (ZotFile)
@@ -17,14 +17,6 @@ This feature makes maintaining a directory of linked file attachments as easy as
You can, for example, have ZotFile store attachments in directories named after the journal with a subfolder for the publication year and then name the attachment file after the author and title of the work.
ZotFile has several other features for working with attachments that are worth investigating in its documentation.
-#### Attaching browser content to item
-
-Zutilo provides functions for attaching a web link or the current web page to the currently selected item.
-In Zutilo's preferences, these functions can be set to create either imported or linked file attachments, or to import the first attachment for an item and then prompt for linked files after that.
-Note that Zutilo's linked file attachment method triggers ZotFile, so, if ZotFile is set up to rename and move attachments, it will rename and move the ones saved this way no matter where you choose to save them with Zutilo's prompt.
-ZotFile has a "only ask if item has other attachments" option.
-This option works well with the Zutilo option to prompt for the location of attachments after the first.
-
### Item field modification functions
Zutilo provides several functions for copying and pasting item fields.
@@ -54,11 +46,11 @@ However, the name of the journal and the year of the volume are incorrect.
3. Paste-non-empty the target records. This copies all non-empty fields from the source onto the target.
-As a result, the target records now all have the same Journal name and the same name (irrespective of the prior setting).
+As a result, the target records now all have the same Journal name and the same year (irrespective of the prior setting).
#### Copying authors
-Copy+Paste-into-empty, Copy+Paste-non-empty and Copy+Paste-non-empty behave differently with regard to copying authors.
+Copy+Paste-into-empty, Copy+Paste-non-empty and Copy+Paste-all behave differently with regard to copying authors.
* Copy+Paste-into-empty merges additional authors: Authors present in the source are added to the target.
diff --git a/i18n/de/readme/CHANGELOG.md b/i18n/de/readme/CHANGELOG.md
index 8edf89c..14c7b8a 100644
--- a/i18n/de/readme/CHANGELOG.md
+++ b/i18n/de/readme/CHANGELOG.md
@@ -1,6 +1,87 @@
-* In version 3.0.3:
+* In version 3.10.0:
+
+ + Fixes for Zotero 5.0.97-beta and upcoming Zotero 6
+
+* In version 3.9.0:
+
+ + Fix Open Style Editor shortcut
+ + Add Open Run JavaScript window shortcut
+ + Add mdnotes shortcuts
+ + Update French translations
+
+* In version 3.8.1:
+
+ + Update French translations
+ + Fix ZotFile Quick Extract shortcut
+ + Fix show file shortcut
+
+* In version 3.8.0:
+
+ + Add find available PDFs shortcut
+
+* In version 3.7.0:
+
+ + Add ZotFile Quick Extract shortcut
+
+* In version 3.6.1:
+
+ + Update French locale
+
+* In version 3.5.0:
+
+ + Add "Open Zotero URI" function
+ + Allow arbitrary number of alt quick copy functions
+ + Fix "Retrieve metadata for PDF" shortcut
+ + Update French locale
+
+* In version 3.4.0:
+
+ + Added shortcut for pushing reference to TeXstudio with Better BibTeX
+ + Add "Advanced search" shortcut
+ + Add "Locate item" shortcut
+ + Add "Show Locate menu" shortcut
+ + Add tag selector shortcuts:
+ - Toggle displaying automatic tags
+ - Toggle displaying all tags
+ - Deselect all tags
+ - Focus search box
+
+* In version 3.3.3:
+ + Filter attachments by mode before trying to modify paths
+
+* In version 3.3.2:
+
+ + Fix mishandling of attachments with paths that did not match the old path pattern in the modify attachments function.
+
+* In version 3.3.1:
+
+ + Fix add tag shortcut for Zotero 5.0.78
+
+* In version 3.3.0:
+
+ + Added shortcut for ZotFile's move and rename attachment
+
+* In version 3.2.1:
+
+ + Compatibility updates for Zotero 5.0.75
+
+* In version 3.2.0:
+
+ + Drop support for Zotero as a Firefox addon and for Zotero 4.x
+ + Update item select link to newer format used by recent version of Zotero
+ Add functions to copy select links and web links to collections
+ + Add copy/paste item field functions
+
+* In version 3.1.0:
+
+ + Update Chinese translation
+ + Add "Link to File..." shortcut
+ + Add "Show file" shortcut
+ + Add "Attach new file" shortcut for ZotFile
+
+* In version 3.0.3:
+
+ Fix French locale
* In version 3.0.2:
@@ -20,6 +101,11 @@
- Don't change clipboard when no valid items copied
- Add Zutilo preferences to Tools menu on all platforms
+* In version 2.0.3:
+
+ + Improved French locale (thanks to gracile-fr)
+ + Add preferences menu item to the global menu in Zotero 5.0 (thanks to gracile-fr)
+
* In version 2.0.2:
+ Allow some functions (like copy tags) to work on attachments and notes as well as regular items.
diff --git a/i18n/de/readme/README.md b/i18n/de/readme/README.md
index d4e7273..72082e1 100644
--- a/i18n/de/readme/README.md
+++ b/i18n/de/readme/README.md
@@ -1,6 +1,6 @@
# Zutilo
-Zutilo is a plugin for [Zotero](http://www.zotero.org/) (both the Firefox addon and the standalone client).
+Zutilo is a plugin for [Zotero](http://www.zotero.org/).
Zutilo adds several functions not available in base Zotero through extra menu items and keyboard shortcuts.
Here are some of Zutilo's features:
@@ -8,25 +8,29 @@ Here are some of Zutilo's features:
* Select and right-click to relate several items
* Copy items to the clipboard in several formats
* Keyboard shortcuts for editing items and focusing and hiding different elements of the Zotero user interface
-* Right-click to save link or document as an attachment to currently selected item (only for Zotero as a Firefox addon)
Zutilo strives to enable whatever Zotero workflow is desired and otherwise to get out of the way.
All of Zutilo's graphical elements can be disabled individually, so that unwanted features do not clutter the user interface.
-**NOTE:** As of version 3.0, Zutilo is distributed from the [GitHub releases page](https://github.com/willsALMANJ/Zutilo/releases).
+**NOTE:** As of version 3.0, Zutilo is distributed from the [GitHub releases page](https://github.com/wshanks/Zutilo/releases).
New updates will not be published to the location checked by previous versions of Zutilo (the Mozilla Add-ons page).
To receive new Zutilo updates, please update to the latest version of Zutilo.
## Installation
-Download the Zutilo `zutilo.xpi` file from [Zutilo's GitHub releases page](https://github.com/willsALMANJ/Zutilo/releases).
+Download the Zutilo `zutilo.xpi` file from [Zutilo's GitHub releases page](https://github.com/wshanks/Zutilo/releases).
Then go to Tools->Add-ons in Zotero Standalone.
Click on the gear button in the upper right area of the Add-ons Manager window that appears and choose "Install Add-on From File."
Then select the downloaded `zutilo.xpi` file.
+**NOTE for Firefox users:** Firefox treats `.xpi` files as Firefox add-ons and tries to install them.
+Rather than clicking on the `.xpi` file, you can try right-clicking and choosing to save the link as a file.
+In some cases (particularly on Linux), Firefox does not allow right-clicking and saving the `.xpi` link either.
+In that case, you must download it either with a different browser or with a command-line tool like `curl` or `wget`.
+
## Getting started
-Zutilo can be customized via its preferences window, which can reached either via the Firefox Addons Manager or the Zotero action menu (the gear icon).
+Zutilo can be customized via its preferences window, which can reached via the Zotero Addons Manager or the Tools menu.
### Zotero item menu
@@ -41,18 +45,7 @@ All of the functions that can appear in the item menu can also be called by keyb
Zutilo also provides some additional keyboard shortcut functions that are not available from the item menu.
By default, no keyboard shortcuts are defined.
A shortcut key combination can be set for each function in Zutilo's preferences.
-If the key combination is already assigned for another Firefox function, a warning will be displayed.
-
-### Firefox specific functions
-
-Zutilo adds entries to the Zotero address bar icon's menu for saving items into Zotero with the opposite attachment behavior from that set in Zotero's preferences.
-So if you have Zotero set to download attachments when saving an item, Zutilo will add an entry to save the item without attachments.
-The extra menu items can be disabled in Zutilo's preferences.
-
-Zutilo adds two entries to right-click menu in Firefox, one to save the current page as an attachment (most useful when the page is a pdf) and another to save a link as an attachment (if a link was right-clicked).
-These menu items appear the Zotero submenu of the Firefox right-click menu.
-In Zutilo's preferences, the menu items can be set to appear in the right-click menu directly (instead of the Zotero submenu) or can be disabled.
-Whether the attachment files are imported to Zotero or downloaded and linked to Zotero items can be also be set in Zutilo's preferences.
+If the key combination is already assigned for another function, a warning will be displayed.
## Usage notes
diff --git a/i18n/de/readme/docs/BUGS.md b/i18n/de/readme/docs/BUGS.md
index 5c9b027..8fc37cb 100644
--- a/i18n/de/readme/docs/BUGS.md
+++ b/i18n/de/readme/docs/BUGS.md
@@ -1,7 +1,7 @@
# Bugs
-The latest source code for Zutilo is maintained on [GitHub](https://github.com/willsALMANJ/Zutilo "Zutilo's GitHub page").
-Bugs can be reported by clicking on the "New Issue" button under [the Issues section](https://github.com/willsALMANJ/Zutilo/issues "GitHub Issues page") of the GitHub site.
+The latest source code for Zutilo is maintained on [GitHub](https://github.com/wshanks/Zutilo "Zutilo's GitHub page").
+Bugs can be reported by clicking on the "New Issue" button under [the Issues section](https://github.com/wshanks/Zutilo/issues "GitHub Issues page") of the GitHub site.
You can also check there to see if a bug you experience has already been reported by another user.
Make sure to check the "closed" tab of the Issues section to see if the bug has already been addressed.
@@ -19,24 +19,19 @@ When submitting bug reports, please include the following:
1. Version of Zutilo used
2. Version of Zotero used
-3. Version of Firefox used (if applicable)
-4. Step-by-step instructions to reproduce the bug
+3. Step-by-step instructions to reproduce the bug
-The versions of Zutilo and Zotero can be looked up in the Addons Manager (`about:addons`) in Firefox.
-The version of Firefox can be found in `Help->About Firefox`.
For Zotero Standalone, the version of Zutilo can be found in `Tools->Addons` and the version of Zotero in `Help->About Zotero`.
-Additionally, if possible please provide any javascript errors that appear in the Browser Console when the bug occurs.
-The Browser Console can be opened with `Ctrl+Shift+J` (`Cmd+Shift+J` on OS X).
-Try to clear the output, reproduce the bug, and then check the Browswer Console to see if any messages related to Zutilo or Zotero appeared.
-While it is technically possible to open the Browser Console in Zotero Standalone, it is quite difficult to do.
-It is recommended to try to reproduce the bug in Firefox in order to check for Browser Console messages.
+Additionally, if possible please provide any javascript errors that appear in the Error Console when the bug occurs.
+The Error Console can be opened from the Tools->Developer menu.
+Try to clear the output, reproduce the bug, and then check the Error Console to see if any messages related to Zutilo or Zotero appeared.
# Feature requests
Feature requests may also be submitted by opening a new issue.
If you would like to contribute a patch, please open a new issue before submitting your code.
-A description of the kinds of features that are appropriate for Zutilo can be found on [the Zutilo wiki page](https://github.com/willsALMANJ/Zutilo/wiki).
+A description of the kinds of features that are appropriate for Zutilo can be found on [the Zutilo wiki page](https://github.com/wshanks/Zutilo/wiki).
A roadmap of planned features is also available on the wiki.
# Translation
diff --git a/i18n/de/readme/docs/COMMANDS.md b/i18n/de/readme/docs/COMMANDS.md
index 99296b4..d028def 100644
--- a/i18n/de/readme/docs/COMMANDS.md
+++ b/i18n/de/readme/docs/COMMANDS.md
@@ -1,6 +1,6 @@
### Item menu functions
-Each of the functions below can be called from the Zotero item menu (accessed by right-clicking in the items pane in the middle of Zotero where all of a collection's items are listed).
-In the Zutilo preferences (accessed from the same menu as Zotero's preferences), each of these functions can be set to show up in the Zotero item menu, in a Zutilo submenu of the Zotero item menu, or not to appear at all.
+Each of the functions below can be called from the Zotero item context menu (accessed by right-clicking in the items pane in the middle of Zotero where all of a collection's items are listed).
+In the Zutilo preferences (accessed from Zotero "Tools" menu), each of these functions can be set to show up in the Zotero item menu, in a Zutilo submenu of the Zotero item menu, or not to appear at all.
* __Copy tags:__
Right click items in the Zotero library and copy their tags to the clipboard as a '\r\n' delimited list.
@@ -42,34 +42,42 @@ In the Zutilo preferences (accessed from the same menu as Zotero's preferences),
Set all selected items to be related to each other.
* __QuickCopy items:__
- Copy selected items to the clipboard using the "Default output format" specified in the "Export" section of Zotero's preferences.
- There are also two alternative QuickCopy items (labeled "alt 1" and "alt 2").
- These items will copy to the clipboard using alternative export translators.
- To select the translators used by these functions, the corresponding preferences `extensions.zutilo.quickcopy_alt1` and `extensions.zutilo.quickcopy_alt2` must be set in the config editor.
- Each preference should be set to whatever appears in the config editor for the `export.quickCopy.setting` preference when the desired translator is set as the "Default output format" in Zotero's preferences.
- The config editor can be opened from the Advanced pane of Zotero's preferences window (or by visiting `about:config` if using Zotero as a Firefox add-on).
+ Copy selected items to the clipboard using the "Default output format" specified in the "Export" section of Zotero's preferences.
+ It is also possible to set alternative quick copy items.
+ By default, two such items are enabled, labeled "alt 1" and "alt 2".
+ Additional items can be enabled by changing the `extensions.zutilo.copyItems_alt_total` preference in the config editor.
+ These items will copy to the clipboard using alternative export translators.
+ To select the translators used by these functions, the corresponding preferences `extensions.zutilo.quickcopy_alt1`, `extensions.zutilo.quickcopy_alt2`, etc. must be set in the config editor.
+ Each preference should be set to whatever appears in the config editor for the `export.quickCopy.setting` preference when the desired translator is set as the "Default output format" in Zotero's preferences.
+ The config editor can be opened from the Advanced pane of Zotero's preferences window.
* __Copy select item links:__
- Copy links of the form "zotero://select/items/ITEM_ID" to the clipboard for each selected item.
- Pasting such a link into the Firefox address bar will select the corresponding item in the Zotero Firefox plugin.
- Following links from other applications and having the links select items in the Zotero Standalone client may also be achievable but might require additional set up.
+ Copy links of the form "zotero://select/library/items/ITEM_ID" to the clipboard for each selected item.
+ Following links from other applications can select items in the Zotero client but might require additional set up.
+
+* __Copy Zotero IDs:__
+ Copy the ID of each selected item to the clipboard.
* __Copy Zotero URIs:__
- Copy (www.zotero.org) links to the clipboard for each selected item.
- If you have a (www.zotero.org) profile, following such a link will open the page for the corresponding item in profile on (www.zotero.org).
- If you do not have a (www.zotero.org) profile, a placeholder link is still generated but might not be useful.
+ Copy (www.zotero.org) links to the clipboard for each selected item.
+ If you have a (www.zotero.org) profile, following such a link will open the page for the corresponding item in profile on (www.zotero.org).
+ If you do not have a (www.zotero.org) profile, a placeholder link is still generated but might not be useful.
+
+* __Open Zotero URIs:__
+ Open (www.zotero.org) links for each selected item.
+ See description for "Copy Zotero URIs".
* __Create book section:__
- Create a book section item from the currently selected book item.
+ Create a book section item from the currently selected book item.
- The new item is created by duplicating the book item and changing its type to book section.
- Author entries for the book item are converted to "book author" entries for the new book section item.
- The new book section item is added as a related item to the original book item.
- Finally, the title textbox for the new item is focused so that a new title for the book section may be entered.
+ The new item is created by duplicating the book item and changing its type to book section.
+ Author entries for the book item are converted to "book author" entries for the new book section item.
+ The new book section item is added as a related item to the original book item.
+ Finally, the title textbox for the new item is focused so that a new title for the book section may be entered.
- This function only works when a single book item is selected.
- Note that some fields (number of pages and short title, as of late 2014) apply only to book items and not book section items.
- There is no prompt to confirm this loss of fields from the created book section item.
+ This function only works when a single book item is selected.
+ Note that some fields (number of pages and short title, as of late 2014) apply only to book items and not book section items.
+ There is no prompt to confirm this loss of fields from the created book section item.
* __Create book item:__
Create a book item from teh currently selected book section item.
@@ -98,8 +106,33 @@ In the Zutilo preferences (accessed from the same menu as Zotero's preferences),
(‘Paste-non-empty’): paste where source has value.
Replaces authors if there is an author field in the pasted data.
-* __Paste all items fields__
- (Paste-all): paste all fields from source, even if they are empty.
+* __Paste all item fields__
+ (‘Paste-all’): Paste all item fields from source, even if they are empty.
+
+ To edit specific item fields, select a source item and use "Copy item fields".
+ Paste to a text editor, edit the JSON text, then copy the modified text back to the clipboard.
+ Finally, select the target items and use "Paste all item fields".
+ The `itemType` name/value pair needs to be kept in the JSON text because Zutilo uses its presence to decide whether to use the paste JSON commands in the context menu; its value is irrelevant for this function.
+ You can, e.g., clear the URL field in multiple items by pasting `{"itemType": "book", "url": ""}`, which will not change any item types.
+
+* __Paste item type__
+ (‘Paste-type’): Paste the item type of the source item to the target items.
+ This will not change item field values.
+ However, changing the type of a Zotero item modifies the list of its valid fields.
+ It's important to realize that data in invalid fields will be lost!
+
+### Collection menu functions
+Each of the functions below can be called from the Zotero collection context menu (accessed by right-clicking on a collection in the collections pane at the right of Zotero where all the collections are listed).
+In the Zutilo preferences (accessed from Zotero "Tools" menu), each of these functions can be set to show up in the Zotero item menu, in a Zutilo submenu of the Zotero item menu, or not to appear at all.
+
+* __Copy select collection link:__
+ Copy links of the form "zotero://select/library/collections/ITEM_ID" to the clipboard for the selected collection.
+ Following links from other applications can select the collection in the Zotero client but might require additional set up.
+
+* __Copy Zotero URI:__
+ Copy (www.zotero.org) link to the clipboard for the selected collection.
+ If you have a (www.zotero.org) profile, following such a link will open the page for the corresponding item in profile on (www.zotero.org).
+ If you do not have a (www.zotero.org) profile, a placeholder link is still generated but might not be useful.
### Navigating the UI and editing items via keyboard shortcuts
@@ -138,7 +171,7 @@ The following four functions are similar to the four item editing functions abov
* __Focus item pane: Related tab:__
Select the "Related" tab of the item pane.
-The following two functions allow you to cycle through the same four tags in the item pane.
+The following two functions allow you to cycle through the same four tabs in the item pane.
* __Focus item pane: next tab:__
Select next tab in item pane.
@@ -189,11 +222,14 @@ However, when the pane is shown, the thicker vertical divider ("splitter", "grip
* __Create parent item:__
Create a parent item for the currently selected attachment item that does not have a parent.
+* __Find available PDFs:__
+ Find available PDFs for selected items.
+
* __Rename attachments:__
Use the parent item's metadata to rename its attachments.
* __Retrieve metadata for pdf:__
- Try to look up the metadata for the selected stored pdf attachment in Google Scholar.
+ Try to look up the metadata for the selected stored pdf attachment.
### Miscellaneous functions
@@ -208,74 +244,22 @@ However, when the pane is shown, the thicker vertical divider ("splitter", "grip
* __Open New Item menu:__
Open the new item menu so that the type of new item to create can be selected from it.
-* __Open style editor:__
- Open the style editor window (normally accessible from the advanced section of Zotero's preferences).
-
-### Firefox browser shortcut functions
-
-The following shortcut functions are only available in the Zotero Firefox addon.
-
-* __Focus Zotero:__
- Make Zotero visible if it is not.
- Focus Zotero so that, e.g., `Tab` and the arrow keys work on the Zotero UI rather than the previously focused element of Firefox's UI.
-
-* __Hide Zotero:__
- Hide Zotero if it was visible.
-
-* __Toggle Zotero:__
- Show Zotero if it was not visible.
- Otherwise hide Zotero.
-
-* __Save webpage as a Zotero item:__
- Save the current page as a webpage item in Zotero.
+* __Open Run JavaScript window:__
+ Open the Run JavaScript window, which is also accessible through Zotero's "Tools" menu, by selecting "Developer" -> "Run JavaScript".
-* __Save item:__
- Add an item to the Zotero library based on the reference content of the current webpage (equivalent to clicking on the little page/book icon in the Firefox address bar).
- In Zotero, the function that creates the item from the web page content is referred to as a `translator`.
-
-* __Save item without attachments:__
- Create an item in a similar manner to "Save item" but __do not__ save attachment files for the item regardless of whether or not Zotero is set to save such attachments in its preferences.
-
-* __Save item with attachments:__
- Create an item in a similar manner to "Save item" but __do__ save attachment files for the item regardless of whether or not Zotero is set to save such attachments in its preferences.
-
-* __Save item (reverse attachment pref):__
- Create an item in a similar manner to "Save item" but only save attachments if Zotero is set not to save attachments in its preferences.
-
-* __Attach current page:__
- Attach the current browser page to the selected Zotero item.
- This function works best when the current web page is a PDF opened with Firefox's internal PDF viewer.
-
-### Firefox browser menu functions
-
-These functions add items to the Zotero "Save item" button's menu and to the Firefox right-click menu.
-Any of the menu items can be set to hidden in Zutilo's preferences.
-
-* __Attaching webpages and links to Zotero items:__
- Zutilo adds context menu items to Firefox for attaching the current page or the current link target (if a link is selected in the current web page) to the item currently selected in Zotero.
- Attaching the current web page is also available as a keyboard shortcut.
-
- How the attachment is processed depends on the attachment method set in Zutilo's preferences.
- If the method is 'Import', an imported attachment is created from the page/link.
- If the method is 'Prompt for linked file', a file prompt appears to allow the user to specify a new file.
- The page/link is saved to this file and then a linked file attachment (linked to the downloaded file) is created.
- If the method is 'Prompt after first', an imported attachment is created if the selected item has no previous attachments (not counting webpage snapshot attachments).
- Otherwise, the file prompt for creating a linked file attachment is shown.
- If the shift key is pressed when the attachment function is activated, a prompt for a linked file is shown regardless of Zutilo's preference setting.
- If the control key is pressed, the attachment is imported regardless of Zutilo's preference setting.
-
-* __Save item from a current webpage with or without attachments:__
- Zutilo adds extra menu items to the context menu of Zotero's "Save item" button that save an item for the current page with or without extracting the page's associated PDF's and other files.
- That is, if the "Automatically attach PDFs and other files" preference is selected in Zotero, Zutilo adds menu items for saving the item without attachments.
- One menu item is created for each "Save to Zotero" method that applies to the current page.
- If the preference is not selected, Zutilo adds menu items for saving an item with the attachments.
+* __Open style editor:__
+ Open the style editor window (normally accessible from the "Cite" tab of Zotero's preferences).
- This function works by toggling the associated files preference in Zotero, creating the item, and then toggling the preference back to its original state.
- Because Zotero translates pages asynchronously (and thus simultaneously), translations made with this function should be allowed to finish before starting normal page translations with Zotero (since otherwise the state of the "Associated files" preference will depend on the timing of the simultaneous translations).
+* __Locate item:__
+ Equivalent to using one of the Lookup engines from the Locate menu accessed from the top of the item pane.
+ The default engine is "Google Scholar Search".
+ To change the engine, modify the `extensions.zutilo.locateItemEngine` preference in the config editor.
+ The config editor can be opened from the Advanced pane of Zotero's preferences window.
+ For a list of valid engine names, select "Developer->Run JavaScript" from Zotero's "Tools" menu and enter and run this command: `Zotero.LocateManager.getVisibleEngines().map(engine => engine.name)`.
### Better BibTeX functions
-The following functions are only available when [Better BibTeX](https://github.com/retorquere/zotero-better-bibtex) is installed (and only for Zotero version 5.0 or higher).
+The following functions are only available when [Better BibTeX](https://github.com/retorquere/zotero-better-bibtex) is installed.
* __Pin key:__ Pin the key for the currently selected items.
@@ -283,4 +267,14 @@ The following functions are only available when [Better BibTeX](https://github.c
* __Force-refresh key:__ Force-refresh the key for the currently selected items.
+* __Push to TeXstudio:__ Push references to TeXstudio.
+
+### ZotFile functions
+
+The following functions are only available when [ZotFile](zotfile.com) is installed.
+
+* __Attach new file:__ Attach the newest file in the ZotFile source directory to the currently selected item.
+
+* __Move and rename attachments:__ Move and rename the files associated with the currently selected attachments to following the format configured in ZotFile's preferences.
+* __Extract annotations:__ Trigger ZotFile's "Extract Annotations" function.
diff --git a/i18n/de/readme/docs/DEVELOPERS.md b/i18n/de/readme/docs/DEVELOPERS.md
index 74be237..29c5a7a 100644
--- a/i18n/de/readme/docs/DEVELOPERS.md
+++ b/i18n/de/readme/docs/DEVELOPERS.md
@@ -15,7 +15,7 @@ The `make` machinery is mainly used for converting the README files from `markdo
Most of the Zutilo logic is contained in the files in `addon/chrome/content/zutilo`.
The highlights are:
-* `zutilo.jsm`
+* `zutilo.js`
- `addon/bootstrap.js` loads this file when Zutilo starts up and it handles the rest of the Zutilo setup.
- This file defines the `Zutilo` module.
- The `Zutilo` module contains properties about Zutilo that are window independent.
@@ -27,9 +27,6 @@ The highlights are:
* `zoteroOverlay.js`
- Contains all of the functions that extend Zotero's UI and all of the Zutilo defined functions that interact with Zotero data
-* `firefoxOverlay.js`
- - Contains all of the functions that are specific to the Firefox version of Zotero (e.g. functions that interact with the browser content)
-
* `keys.js`
- Defines all of Zutilo's keyboard shortcut functions
- To define a new shortcut:
diff --git a/i18n/de/readme/docs/USAGE.md b/i18n/de/readme/docs/USAGE.md
index ff9dfa2..a20d828 100644
--- a/i18n/de/readme/docs/USAGE.md
+++ b/i18n/de/readme/docs/USAGE.md
@@ -6,7 +6,7 @@ Zotero can work with either imported attachments, stored in Zotero's storage and
When storing attachments as linked files, the relative attachment paths feature in Zotero can be useful.
With this feature, a base attachment directory is selected and then any linked file attachments in this directory are saved with paths relative to this path.
Because these paths are relative, you can move all your attachments to a new directory and all you have to do is update this base directory setting in Zotero rather than updating the path to each individual attachment.
-If you use more than computer, you can set the base attachment directory to a different location on each machine (e.g. a DropBox or SyncThing folder) and still have all of the links to attachments work by setting this preference to the right location on each machine.
+If you use more than one computer, you can set the base attachment directory to a different location on each machine (e.g. a DropBox or SyncThing folder) and still have all of the links to attachments work by setting this preference to the right location on each machine.
Relative attachment paths can be configured under the "Files and Folders" tab of the Advanced Section of Zotero's preferences.
#### Linked file attachment organization (ZotFile)
@@ -17,14 +17,6 @@ This feature makes maintaining a directory of linked file attachments as easy as
You can, for example, have ZotFile store attachments in directories named after the journal with a subfolder for the publication year and then name the attachment file after the author and title of the work.
ZotFile has several other features for working with attachments that are worth investigating in its documentation.
-#### Attaching browser content to item
-
-Zutilo provides functions for attaching a web link or the current web page to the currently selected item.
-In Zutilo's preferences, these functions can be set to create either imported or linked file attachments, or to import the first attachment for an item and then prompt for linked files after that.
-Note that Zutilo's linked file attachment method triggers ZotFile, so, if ZotFile is set up to rename and move attachments, it will rename and move the ones saved this way no matter where you choose to save them with Zutilo's prompt.
-ZotFile has a "only ask if item has other attachments" option.
-This option works well with the Zutilo option to prompt for the location of attachments after the first.
-
### Item field modification functions
Zutilo provides several functions for copying and pasting item fields.
@@ -54,11 +46,11 @@ However, the name of the journal and the year of the volume are incorrect.
3. Paste-non-empty the target records. This copies all non-empty fields from the source onto the target.
-As a result, the target records now all have the same Journal name and the same name (irrespective of the prior setting).
+As a result, the target records now all have the same Journal name and the same year (irrespective of the prior setting).
#### Copying authors
-Copy+Paste-into-empty, Copy+Paste-non-empty and Copy+Paste-non-empty behave differently with regard to copying authors.
+Copy+Paste-into-empty, Copy+Paste-non-empty and Copy+Paste-all behave differently with regard to copying authors.
* Copy+Paste-into-empty merges additional authors: Authors present in the source are added to the target.
diff --git a/i18n/en-US/readme/CHANGELOG.md b/i18n/en-US/readme/CHANGELOG.md
index 56ac0b5..29774ae 100644
--- a/i18n/en-US/readme/CHANGELOG.md
+++ b/i18n/en-US/readme/CHANGELOG.md
@@ -1,3 +1,84 @@
+* In version 3.10.0:
+
+ + Fixes for Zotero 5.0.97-beta and upcoming Zotero 6
+
+* In version 3.9.0:
+
+ + Fix Open Style Editor shortcut
+ + Add Open Run JavaScript window shortcut
+ + Add mdnotes shortcuts
+ + Update French translations
+
+* In version 3.8.1:
+
+ + Update French translations
+ + Fix ZotFile Quick Extract shortcut
+ + Fix show file shortcut
+
+* In version 3.8.0:
+
+ + Add find available PDFs shortcut
+
+* In version 3.7.0:
+
+ + Add ZotFile Quick Extract shortcut
+
+* In version 3.6.1:
+
+ + Update French locale
+
+* In version 3.6.0:
+
+ + Add "Paste item type" function for batch item type changes
+ + Update French locale
+ + Documentation updates
+
+* In version 3.5.0:
+
+ + Add "Open Zotero URI" function
+ + Allow arbitrary number of alt quick copy functions
+ + Fix "Retrieve metadata for PDF" shortcut
+ + Update French locale
+
+* In version 3.4.0:
+
+ + Added shortcut for pushing reference to TeXstudio with Better BibTeX
+ + Add "Advanced search" shortcut
+ + Add "Locate item" shortcut
+ + Add "Show Locate menu" shortcut
+ + Add tag selector shortcuts:
+ - Toggle displaying automatic tags
+ - Toggle displaying all tags
+ - Deselect all tags
+ - Focus search box
+
+* In version 3.3.3:
+
+ + Filter attachments by mode before trying to modify paths
+
+* In version 3.3.2:
+
+ + Fix mishandling of attachments with paths that did not match the old path pattern in the modify attachments function.
+
+* In version 3.3.1:
+
+ + Fix add tag shortcut for Zotero 5.0.78
+
+* In version 3.3.0:
+
+ + Added shortcut for ZotFile's move and rename attachment
+
+* In version 3.2.1:
+
+ + Compatibility updates for Zotero 5.0.75
+
+* In version 3.2.0:
+
+ + Drop support for Zotero as a Firefox addon and for Zotero 4.x
+ + Update item select link to newer format used by recent version of Zotero
+ + Add functions to copy select links and web links to collections
+ + Add copy/paste item field functions
+
* In version 3.1.0:
+ Update Chinese translation
diff --git a/i18n/en-US/readme/README.md b/i18n/en-US/readme/README.md
index 0cb2f26..0e1f972 100644
--- a/i18n/en-US/readme/README.md
+++ b/i18n/en-US/readme/README.md
@@ -1,5 +1,5 @@
# Zutilo
-Zutilo is a plugin for [Zotero](http://www.zotero.org/) (both the Firefox addon and the standalone client).
+Zutilo is a plugin for [Zotero](http://www.zotero.org/).
Zutilo adds several functions not available in base Zotero through extra menu items and keyboard shortcuts.
Here are some of Zutilo's features:
@@ -7,25 +7,29 @@ Here are some of Zutilo's features:
* Select and right-click to relate several items
* Copy items to the clipboard in several formats
* Keyboard shortcuts for editing items and focusing and hiding different elements of the Zotero user interface
-* Right-click to save link or document as an attachment to currently selected item (only for Zotero as a Firefox addon)
Zutilo strives to enable whatever Zotero workflow is desired and otherwise to get out of the way.
All of Zutilo's graphical elements can be disabled individually, so that unwanted features do not clutter the user interface.
-**NOTE:** As of version 3.0, Zutilo is distributed from the [GitHub releases page](https://github.com/willsALMANJ/Zutilo/releases).
+**NOTE:** As of version 3.0, Zutilo is distributed from the [GitHub releases page](https://github.com/wshanks/Zutilo/releases).
New updates will not be published to the location checked by previous versions of Zutilo (the Mozilla Add-ons page).
To receive new Zutilo updates, please update to the latest version of Zutilo.
## Installation
-Download the Zutilo `zutilo.xpi` file from [Zutilo's GitHub releases page](https://github.com/willsALMANJ/Zutilo/releases).
+Download the Zutilo `zutilo.xpi` file from [Zutilo's GitHub releases page](https://github.com/wshanks/Zutilo/releases).
Then go to Tools->Add-ons in Zotero Standalone.
Click on the gear button in the upper right area of the Add-ons Manager window that appears and choose "Install Add-on From File."
Then select the downloaded `zutilo.xpi` file.
+**NOTE for Firefox users:** Firefox treats `.xpi` files as Firefox add-ons and tries to install them.
+Rather than clicking on the `.xpi` file, you can try right-clicking and choosing to save the link as a file.
+In some cases (particularly on Linux), Firefox does not allow right-clicking and saving the `.xpi` link either.
+In that case, you must download it either with a different browser or with a command-line tool like `curl` or `wget`.
+
## Getting started
-Zutilo can be customized via its preferences window, which can reached either via the Firefox Addons Manager or the Zotero action menu (the gear icon).
+Zutilo can be customized via its preferences window, which can reached via the Zotero Addons Manager or the Tools menu.
### Zotero item menu
@@ -40,18 +44,7 @@ All of the functions that can appear in the item menu can also be called by keyb
Zutilo also provides some additional keyboard shortcut functions that are not available from the item menu.
By default, no keyboard shortcuts are defined.
A shortcut key combination can be set for each function in Zutilo's preferences.
-If the key combination is already assigned for another Firefox function, a warning will be displayed.
-
-### Firefox specific functions
-
-Zutilo adds entries to the Zotero address bar icon's menu for saving items into Zotero with the opposite attachment behavior from that set in Zotero's preferences.
-So if you have Zotero set to download attachments when saving an item, Zutilo will add an entry to save the item without attachments.
-The extra menu items can be disabled in Zutilo's preferences.
-
-Zutilo adds two entries to right-click menu in Firefox, one to save the current page as an attachment (most useful when the page is a pdf) and another to save a link as an attachment (if a link was right-clicked).
-These menu items appear the Zotero submenu of the Firefox right-click menu.
-In Zutilo's preferences, the menu items can be set to appear in the right-click menu directly (instead of the Zotero submenu) or can be disabled.
-Whether the attachment files are imported to Zotero or downloaded and linked to Zotero items can be also be set in Zutilo's preferences.
+If the key combination is already assigned for another function, a warning will be displayed.
## Usage notes
diff --git a/i18n/en-US/readme/docs/BUGS.md b/i18n/en-US/readme/docs/BUGS.md
index f9b8b0f..aac7d27 100644
--- a/i18n/en-US/readme/docs/BUGS.md
+++ b/i18n/en-US/readme/docs/BUGS.md
@@ -1,7 +1,7 @@
### Bugs
-The latest source code for Zutilo is maintained on [GitHub](https://github.com/willsALMANJ/Zutilo "Zutilo's GitHub page").
-Bugs can be reported by clicking on the "New Issue" button under [the Issues section](https://github.com/willsALMANJ/Zutilo/issues "GitHub Issues page") of the GitHub site.
+The latest source code for Zutilo is maintained on [GitHub](https://github.com/wshanks/Zutilo "Zutilo's GitHub page").
+Bugs can be reported by clicking on the "New Issue" button under [the Issues section](https://github.com/wshanks/Zutilo/issues "GitHub Issues page") of the GitHub site.
You can also check there to see if a bug you experience has already been reported by another user.
Make sure to check the "closed" tab of the Issues section to see if the bug has already been addressed.
@@ -19,24 +19,19 @@ When submitting bug reports, please include the following:
1. Version of Zutilo used
2. Version of Zotero used
-3. Version of Firefox used (if applicable)
-4. Step-by-step instructions to reproduce the bug
+3. Step-by-step instructions to reproduce the bug
-The versions of Zutilo and Zotero can be looked up in the Addons Manager (`about:addons`) in Firefox.
-The version of Firefox can be found in `Help->About Firefox`.
For Zotero Standalone, the version of Zutilo can be found in `Tools->Addons` and the version of Zotero in `Help->About Zotero`.
-Additionally, if possible please provide any javascript errors that appear in the Browser Console when the bug occurs.
-The Browser Console can be opened with `Ctrl+Shift+J` (`Cmd+Shift+J` on OS X).
-Try to clear the output, reproduce the bug, and then check the Browswer Console to see if any messages related to Zutilo or Zotero appeared.
-While it is technically possible to open the Browser Console in Zotero Standalone, it is quite difficult to do.
-It is recommended to try to reproduce the bug in Firefox in order to check for Browser Console messages.
+Additionally, if possible please provide any javascript errors that appear in the Error Console when the bug occurs.
+The Error Console can be opened from the Tools->Developer menu.
+Try to clear the output, reproduce the bug, and then check the Error Console to see if any messages related to Zutilo or Zotero appeared.
### Feature requests
Feature requests may also be submitted by opening a new issue.
If you would like to contribute a patch, please open a new issue before submitting your code.
-A description of the kinds of features that are appropriate for Zutilo can be found on [the Zutilo wiki page](https://github.com/willsALMANJ/Zutilo/wiki).
+A description of the kinds of features that are appropriate for Zutilo can be found on [the Zutilo wiki page](https://github.com/wshanks/Zutilo/wiki).
A roadmap of planned features is also available on the wiki.
### Translation
diff --git a/i18n/en-US/readme/docs/COMMANDS.md b/i18n/en-US/readme/docs/COMMANDS.md
index a441aed..d028def 100644
--- a/i18n/en-US/readme/docs/COMMANDS.md
+++ b/i18n/en-US/readme/docs/COMMANDS.md
@@ -1,6 +1,6 @@
### Item menu functions
-Each of the functions below can be called from the Zotero item menu (accessed by right-clicking in the items pane in the middle of Zotero where all of a collection's items are listed).
-In the Zutilo preferences (accessed from the same menu as Zotero's preferences), each of these functions can be set to show up in the Zotero item menu, in a Zutilo submenu of the Zotero item menu, or not to appear at all.
+Each of the functions below can be called from the Zotero item context menu (accessed by right-clicking in the items pane in the middle of Zotero where all of a collection's items are listed).
+In the Zutilo preferences (accessed from Zotero "Tools" menu), each of these functions can be set to show up in the Zotero item menu, in a Zutilo submenu of the Zotero item menu, or not to appear at all.
* __Copy tags:__
Right click items in the Zotero library and copy their tags to the clipboard as a '\r\n' delimited list.
@@ -42,34 +42,42 @@ In the Zutilo preferences (accessed from the same menu as Zotero's preferences),
Set all selected items to be related to each other.
* __QuickCopy items:__
- Copy selected items to the clipboard using the "Default output format" specified in the "Export" section of Zotero's preferences.
- There are also two alternative QuickCopy items (labeled "alt 1" and "alt 2").
- These items will copy to the clipboard using alternative export translators.
- To select the translators used by these functions, the corresponding preferences `extensions.zutilo.quickcopy_alt1` and `extensions.zutilo.quickcopy_alt2` must be set in the config editor.
- Each preference should be set to whatever appears in the config editor for the `export.quickCopy.setting` preference when the desired translator is set as the "Default output format" in Zotero's preferences.
- The config editor can be opened from the Advanced pane of Zotero's preferences window (or by visiting `about:config` if using Zotero as a Firefox add-on).
+ Copy selected items to the clipboard using the "Default output format" specified in the "Export" section of Zotero's preferences.
+ It is also possible to set alternative quick copy items.
+ By default, two such items are enabled, labeled "alt 1" and "alt 2".
+ Additional items can be enabled by changing the `extensions.zutilo.copyItems_alt_total` preference in the config editor.
+ These items will copy to the clipboard using alternative export translators.
+ To select the translators used by these functions, the corresponding preferences `extensions.zutilo.quickcopy_alt1`, `extensions.zutilo.quickcopy_alt2`, etc. must be set in the config editor.
+ Each preference should be set to whatever appears in the config editor for the `export.quickCopy.setting` preference when the desired translator is set as the "Default output format" in Zotero's preferences.
+ The config editor can be opened from the Advanced pane of Zotero's preferences window.
* __Copy select item links:__
- Copy links of the form "zotero://select/items/ITEM_ID" to the clipboard for each selected item.
- Pasting such a link into the Firefox address bar will select the corresponding item in the Zotero Firefox plugin.
- Following links from other applications and having the links select items in the Zotero Standalone client may also be achievable but might require additional set up.
+ Copy links of the form "zotero://select/library/items/ITEM_ID" to the clipboard for each selected item.
+ Following links from other applications can select items in the Zotero client but might require additional set up.
+
+* __Copy Zotero IDs:__
+ Copy the ID of each selected item to the clipboard.
* __Copy Zotero URIs:__
- Copy (www.zotero.org) links to the clipboard for each selected item.
- If you have a (www.zotero.org) profile, following such a link will open the page for the corresponding item in profile on (www.zotero.org).
- If you do not have a (www.zotero.org) profile, a placeholder link is still generated but might not be useful.
+ Copy (www.zotero.org) links to the clipboard for each selected item.
+ If you have a (www.zotero.org) profile, following such a link will open the page for the corresponding item in profile on (www.zotero.org).
+ If you do not have a (www.zotero.org) profile, a placeholder link is still generated but might not be useful.
+
+* __Open Zotero URIs:__
+ Open (www.zotero.org) links for each selected item.
+ See description for "Copy Zotero URIs".
* __Create book section:__
- Create a book section item from the currently selected book item.
+ Create a book section item from the currently selected book item.
- The new item is created by duplicating the book item and changing its type to book section.
- Author entries for the book item are converted to "book author" entries for the new book section item.
- The new book section item is added as a related item to the original book item.
- Finally, the title textbox for the new item is focused so that a new title for the book section may be entered.
+ The new item is created by duplicating the book item and changing its type to book section.
+ Author entries for the book item are converted to "book author" entries for the new book section item.
+ The new book section item is added as a related item to the original book item.
+ Finally, the title textbox for the new item is focused so that a new title for the book section may be entered.
- This function only works when a single book item is selected.
- Note that some fields (number of pages and short title, as of late 2014) apply only to book items and not book section items.
- There is no prompt to confirm this loss of fields from the created book section item.
+ This function only works when a single book item is selected.
+ Note that some fields (number of pages and short title, as of late 2014) apply only to book items and not book section items.
+ There is no prompt to confirm this loss of fields from the created book section item.
* __Create book item:__
Create a book item from teh currently selected book section item.
@@ -86,6 +94,46 @@ In the Zutilo preferences (accessed from the same menu as Zotero's preferences),
* __Relocate child items:__
Move all items stored in Zutilo's internal clipboard (put there by the "Copy child items" function) to the currently selected item.
+* __Copy item fields:__
+ Copies all source-item metadata fields to the clipboard.
+ The data copied is all data visible in the right panel only (not tags, not notes).
+
+* __Paste into empty item fields:__
+ (‘Paste-into-empty’) paste where source has value and target has none/empty.
+ Authors from the source are merged in even if the target already has authors.
+
+* __Paste non-empty item fields__
+ (‘Paste-non-empty’): paste where source has value.
+ Replaces authors if there is an author field in the pasted data.
+
+* __Paste all item fields__
+ (‘Paste-all’): Paste all item fields from source, even if they are empty.
+
+ To edit specific item fields, select a source item and use "Copy item fields".
+ Paste to a text editor, edit the JSON text, then copy the modified text back to the clipboard.
+ Finally, select the target items and use "Paste all item fields".
+ The `itemType` name/value pair needs to be kept in the JSON text because Zutilo uses its presence to decide whether to use the paste JSON commands in the context menu; its value is irrelevant for this function.
+ You can, e.g., clear the URL field in multiple items by pasting `{"itemType": "book", "url": ""}`, which will not change any item types.
+
+* __Paste item type__
+ (‘Paste-type’): Paste the item type of the source item to the target items.
+ This will not change item field values.
+ However, changing the type of a Zotero item modifies the list of its valid fields.
+ It's important to realize that data in invalid fields will be lost!
+
+### Collection menu functions
+Each of the functions below can be called from the Zotero collection context menu (accessed by right-clicking on a collection in the collections pane at the right of Zotero where all the collections are listed).
+In the Zutilo preferences (accessed from Zotero "Tools" menu), each of these functions can be set to show up in the Zotero item menu, in a Zutilo submenu of the Zotero item menu, or not to appear at all.
+
+* __Copy select collection link:__
+ Copy links of the form "zotero://select/library/collections/ITEM_ID" to the clipboard for the selected collection.
+ Following links from other applications can select the collection in the Zotero client but might require additional set up.
+
+* __Copy Zotero URI:__
+ Copy (www.zotero.org) link to the clipboard for the selected collection.
+ If you have a (www.zotero.org) profile, following such a link will open the page for the corresponding item in profile on (www.zotero.org).
+ If you do not have a (www.zotero.org) profile, a placeholder link is still generated but might not be useful.
+
### Navigating the UI and editing items via keyboard shortcuts
Zutilo currently implements several keyboard shortcuts that are useful for editing Zotero items.
@@ -123,7 +171,7 @@ The following four functions are similar to the four item editing functions abov
* __Focus item pane: Related tab:__
Select the "Related" tab of the item pane.
-The following two functions allow you to cycle through the same four tags in the item pane.
+The following two functions allow you to cycle through the same four tabs in the item pane.
* __Focus item pane: next tab:__
Select next tab in item pane.
@@ -174,11 +222,14 @@ However, when the pane is shown, the thicker vertical divider ("splitter", "grip
* __Create parent item:__
Create a parent item for the currently selected attachment item that does not have a parent.
+* __Find available PDFs:__
+ Find available PDFs for selected items.
+
* __Rename attachments:__
Use the parent item's metadata to rename its attachments.
* __Retrieve metadata for pdf:__
- Try to look up the metadata for the selected stored pdf attachment in Google Scholar.
+ Try to look up the metadata for the selected stored pdf attachment.
### Miscellaneous functions
@@ -193,77 +244,37 @@ However, when the pane is shown, the thicker vertical divider ("splitter", "grip
* __Open New Item menu:__
Open the new item menu so that the type of new item to create can be selected from it.
-* __Open style editor:__
- Open the style editor window (normally accessible from the advanced section of Zotero's preferences).
-
-### Firefox browser shortcut functions
-
-The following shortcut functions are only available in the Zotero Firefox addon.
-
-* __Focus Zotero:__
- Make Zotero visible if it is not.
- Focus Zotero so that, e.g., `Tab` and the arrow keys work on the Zotero UI rather than the previously focused element of Firefox's UI.
+* __Open Run JavaScript window:__
+ Open the Run JavaScript window, which is also accessible through Zotero's "Tools" menu, by selecting "Developer" -> "Run JavaScript".
-* __Hide Zotero:__
- Hide Zotero if it was visible.
-
-* __Toggle Zotero:__
- Show Zotero if it was not visible.
- Otherwise hide Zotero.
-
-* __Save webpage as a Zotero item:__
- Save the current page as a webpage item in Zotero.
-
-* __Save item:__
- Add an item to the Zotero library based on the reference content of the current webpage (equivalent to clicking on the little page/book icon in the Firefox address bar).
- In Zotero, the function that creates the item from the web page content is referred to as a `translator`.
-
-* __Save item without attachments:__
- Create an item in a similar manner to "Save item" but __do not__ save attachment files for the item regardless of whether or not Zotero is set to save such attachments in its preferences.
-
-* __Save item with attachments:__
- Create an item in a similar manner to "Save item" but __do__ save attachment files for the item regardless of whether or not Zotero is set to save such attachments in its preferences.
-
-* __Save item (reverse attachment pref):__
- Create an item in a similar manner to "Save item" but only save attachments if Zotero is set not to save attachments in its preferences.
+* __Open style editor:__
+ Open the style editor window (normally accessible from the "Cite" tab of Zotero's preferences).
-* __Attach current page:__
- Attach the current browser page to the selected Zotero item.
- This function works best when the current web page is a PDF opened with Firefox's internal PDF viewer.
+* __Locate item:__
+ Equivalent to using one of the Lookup engines from the Locate menu accessed from the top of the item pane.
+ The default engine is "Google Scholar Search".
+ To change the engine, modify the `extensions.zutilo.locateItemEngine` preference in the config editor.
+ The config editor can be opened from the Advanced pane of Zotero's preferences window.
+ For a list of valid engine names, select "Developer->Run JavaScript" from Zotero's "Tools" menu and enter and run this command: `Zotero.LocateManager.getVisibleEngines().map(engine => engine.name)`.
-### Firefox browser menu functions
+### Better BibTeX functions
-These functions add items to the Zotero "Save item" button's menu and to the Firefox right-click menu.
-Any of the menu items can be set to hidden in Zutilo's preferences.
+The following functions are only available when [Better BibTeX](https://github.com/retorquere/zotero-better-bibtex) is installed.
-* __Attaching webpages and links to Zotero items:__
- Zutilo adds context menu items to Firefox for attaching the current page or the current link target (if a link is selected in the current web page) to the item currently selected in Zotero.
- Attaching the current web page is also available as a keyboard shortcut.
+* __Pin key:__ Pin the key for the currently selected items.
- How the attachment is processed depends on the attachment method set in Zutilo's preferences.
- If the method is 'Import', an imported attachment is created from the page/link.
- If the method is 'Prompt for linked file', a file prompt appears to allow the user to specify a new file.
- The page/link is saved to this file and then a linked file attachment (linked to the downloaded file) is created.
- If the method is 'Prompt after first', an imported attachment is created if the selected item has no previous attachments (not counting webpage snapshot attachments).
- Otherwise, the file prompt for creating a linked file attachment is shown.
- If the shift key is pressed when the attachment function is activated, a prompt for a linked file is shown regardless of Zutilo's preference setting.
- If the control key is pressed, the attachment is imported regardless of Zutilo's preference setting.
+* __Unpin key:__ Unpin the key for the currently selected items.
-* __Save item from a current webpage with or without attachments:__
- Zutilo adds extra menu items to the context menu of Zotero's "Save item" button that save an item for the current page with or without extracting the page's associated PDF's and other files.
- That is, if the "Automatically attach PDFs and other files" preference is selected in Zotero, Zutilo adds menu items for saving the item without attachments.
- One menu item is created for each "Save to Zotero" method that applies to the current page.
- If the preference is not selected, Zutilo adds menu items for saving an item with the attachments.
+* __Force-refresh key:__ Force-refresh the key for the currently selected items.
- This function works by toggling the associated files preference in Zotero, creating the item, and then toggling the preference back to its original state.
- Because Zotero translates pages asynchronously (and thus simultaneously), translations made with this function should be allowed to finish before starting normal page translations with Zotero (since otherwise the state of the "Associated files" preference will depend on the timing of the simultaneous translations).
+* __Push to TeXstudio:__ Push references to TeXstudio.
-### Better BibTeX functions
+### ZotFile functions
-The following functions are only available when [Better BibTeX](https://github.com/retorquere/zotero-better-bibtex) is installed (and only for Zotero version 5.0 or higher).
+The following functions are only available when [ZotFile](zotfile.com) is installed.
-* __Pin key:__ Pin the key for the currently selected items.
+* __Attach new file:__ Attach the newest file in the ZotFile source directory to the currently selected item.
-* __Unpin key:__ Unpin the key for the currently selected items.
+* __Move and rename attachments:__ Move and rename the files associated with the currently selected attachments to following the format configured in ZotFile's preferences.
-* __Force-refresh key:__ Force-refresh the key for the currently selected items.
+* __Extract annotations:__ Trigger ZotFile's "Extract Annotations" function.
diff --git a/i18n/en-US/readme/docs/DEVELOPERS.md b/i18n/en-US/readme/docs/DEVELOPERS.md
index 74be237..29c5a7a 100644
--- a/i18n/en-US/readme/docs/DEVELOPERS.md
+++ b/i18n/en-US/readme/docs/DEVELOPERS.md
@@ -15,7 +15,7 @@ The `make` machinery is mainly used for converting the README files from `markdo
Most of the Zutilo logic is contained in the files in `addon/chrome/content/zutilo`.
The highlights are:
-* `zutilo.jsm`
+* `zutilo.js`
- `addon/bootstrap.js` loads this file when Zutilo starts up and it handles the rest of the Zutilo setup.
- This file defines the `Zutilo` module.
- The `Zutilo` module contains properties about Zutilo that are window independent.
@@ -27,9 +27,6 @@ The highlights are:
* `zoteroOverlay.js`
- Contains all of the functions that extend Zotero's UI and all of the Zutilo defined functions that interact with Zotero data
-* `firefoxOverlay.js`
- - Contains all of the functions that are specific to the Firefox version of Zotero (e.g. functions that interact with the browser content)
-
* `keys.js`
- Defines all of Zutilo's keyboard shortcut functions
- To define a new shortcut:
diff --git a/i18n/en-US/readme/docs/USAGE.md b/i18n/en-US/readme/docs/USAGE.md
index 666c883..a20d828 100644
--- a/i18n/en-US/readme/docs/USAGE.md
+++ b/i18n/en-US/readme/docs/USAGE.md
@@ -6,7 +6,7 @@ Zotero can work with either imported attachments, stored in Zotero's storage and
When storing attachments as linked files, the relative attachment paths feature in Zotero can be useful.
With this feature, a base attachment directory is selected and then any linked file attachments in this directory are saved with paths relative to this path.
Because these paths are relative, you can move all your attachments to a new directory and all you have to do is update this base directory setting in Zotero rather than updating the path to each individual attachment.
-If you use more than computer, you can set the base attachment directory to a different location on each machine (e.g. a DropBox or SyncThing folder) and still have all of the links to attachments work by setting this preference to the right location on each machine.
+If you use more than one computer, you can set the base attachment directory to a different location on each machine (e.g. a DropBox or SyncThing folder) and still have all of the links to attachments work by setting this preference to the right location on each machine.
Relative attachment paths can be configured under the "Files and Folders" tab of the Advanced Section of Zotero's preferences.
#### Linked file attachment organization (ZotFile)
@@ -17,10 +17,100 @@ This feature makes maintaining a directory of linked file attachments as easy as
You can, for example, have ZotFile store attachments in directories named after the journal with a subfolder for the publication year and then name the attachment file after the author and title of the work.
ZotFile has several other features for working with attachments that are worth investigating in its documentation.
-#### Attaching browser content to item
+### Item field modification functions
+
+Zutilo provides several functions for copying and pasting item fields.
+The functions are meant to help completing metadata manually. Here are some use cases.
+
+#### Copy + Paste-into-empty: Completing records
+
+You have a series of PDFs, for which metadata is not recognised automatically, such as the chapters of a book.
+You want to copy a set of metadata from the ‘source record’ to ‘target records’, without overwritten the information already available in the target records.
+
+1. You complete a ‘book section’ record for the first PDF (including editors, book title, publication year, etc).
+
+2. You then use Copy on this record, and Paste-into-empty onto all of the other records.
+ In this, you don’t need to worry about existing metadata (in the target records) as this is not overwritten.
+
+For example, if the target records already have titles and authors, those titles are kept while editors, book title, publication year, etc is merged into the record.
+You can be sure that no information from the target records is lost.
+
+#### Copy + Paste-non-empty: Conforming records
+
+You have a series of PDFs for which metadata was recognised, such as papers contained in a journal volume.
+However, the name of the journal and the year of the volume are incorrect.
+
+1. Create a new journal paper record and enter the required information (name of the journal and year).
+
+2. Copy the record.
+
+3. Paste-non-empty the target records. This copies all non-empty fields from the source onto the target.
+
+As a result, the target records now all have the same Journal name and the same year (irrespective of the prior setting).
+
+#### Copying authors
+
+Copy+Paste-into-empty, Copy+Paste-non-empty and Copy+Paste-all behave differently with regard to copying authors.
+
+* Copy+Paste-into-empty merges additional authors: Authors present in the source are added to the target.
+
+* Copy+Paste-non-empty replaces authors: Authors present in the source replace authors present in the target.
+In other words, the authors in the target are removed, and the authors from the source are added to the target.
+
+* Copy+Paste-all replaces authors; if the author field in the source is empty, then authors in the target are also cleared.
+
+The above option offer some likely scenarios, while keeping the number of paste-options to just three.
+Three examples which aren’t covered are
+
+1. Completing records but not adding to authors.
+ To do this, duplicate the source record, remove the authors and then do a Paste-into-empty.
+
+2. Conforming records but not replacing authors.
+ To do this, duplicate the source record, remove the authors and then do a Paste-non-empty.
+
+3. Conforming records but merging authors.
+ To do this, duplicate the source record, remove the authors and then do a Paste-non-empty.
+Then copy the original source record, and do a Paste-into-empty.
+
+#### Copy + Paste-all: Copying item metadata between libraries
+
+If you are using copy + Paste-all, in sequence and onto the same item type, you are setting all source fields to the target (in a sense, duplicating the item).
+A use case for this is this is to easily sync items across two libraries.
+You have an item with correct metadata in one library, but with incorrect metadata in another library.
+Copy + Paste-all command copies all metadata from the item in one library onto the other.
+It updates fields on the target from the source.
+This also clears all fields in the target that are empty in the source.
+
+1. An item was copied from library A to B.
+ The metadata in A is subsequently corrected, and now needs to be copied onto the target item in library B.
+
+2. Copy the source item in library A
+
+3. Paste-all onto the target item in library B
+
+4. The metadata of the target item is now identical to the source item.
+
+Note that effectively Copy+Paste-all is similar to a duplicate.
+However, in some circumstances it’s easier to do.
+
+* For example, between libraries you’d first have to duplicate, then drag the item, then move attachments in the new library.
+ Creation time would also not be preserved.
+
+* Suppose you create one item, you duplicate it.
+ You move all the PDFs to the duplicates as needed.
+Now you notice a mistake (involving an empty field, e.g. moving Series to Series Title, while clearing Series).
+You just correct the original record, and use Paste-all.
+The Series filled is cleared, and Series TItle is filled.
+
+#### Copy + edit + Paste-all: Clearing certain item fields in a large number of records
+
+You are creating a public library B from a library A.
+In this process, you want to clear some fields from a set of items in library B.
+For example, you may wish to remove a set of archive locations, or extras, or similar.
+
+1. Create a blank item (of the same type), copy it.
+
+2. Edit the JSON on the clipboard to keep only fields to be cleared.
+
+3. Then use Paste-all to clear those fields in a number of source items.
-Zutilo provides functions for attaching a web link or the current web page to the currently selected item.
-In Zutilo's preferences, these functions can be set to create either imported or linked file attachments, or to import the first attachment for an item and then prompt for linked files after that.
-Note that Zutilo's linked file attachment method triggers ZotFile, so, if ZotFile is set up to rename and move attachments, it will rename and move the ones saved this way no matter where you choose to save them with Zutilo's prompt.
-ZotFile has a "only ask if item has other attachments" option.
-This option works well with the Zutilo option to prompt for the location of attachments after the first.
diff --git a/i18n/es/readme/CHANGELOG.md b/i18n/es/readme/CHANGELOG.md
index 8edf89c..14c7b8a 100644
--- a/i18n/es/readme/CHANGELOG.md
+++ b/i18n/es/readme/CHANGELOG.md
@@ -1,6 +1,87 @@
-* In version 3.0.3:
+* In version 3.10.0:
+
+ + Fixes for Zotero 5.0.97-beta and upcoming Zotero 6
+
+* In version 3.9.0:
+
+ + Fix Open Style Editor shortcut
+ + Add Open Run JavaScript window shortcut
+ + Add mdnotes shortcuts
+ + Update French translations
+
+* In version 3.8.1:
+
+ + Update French translations
+ + Fix ZotFile Quick Extract shortcut
+ + Fix show file shortcut
+
+* In version 3.8.0:
+
+ + Add find available PDFs shortcut
+
+* In version 3.7.0:
+
+ + Add ZotFile Quick Extract shortcut
+
+* In version 3.6.1:
+
+ + Update French locale
+
+* In version 3.5.0:
+
+ + Add "Open Zotero URI" function
+ + Allow arbitrary number of alt quick copy functions
+ + Fix "Retrieve metadata for PDF" shortcut
+ + Update French locale
+
+* In version 3.4.0:
+
+ + Added shortcut for pushing reference to TeXstudio with Better BibTeX
+ + Add "Advanced search" shortcut
+ + Add "Locate item" shortcut
+ + Add "Show Locate menu" shortcut
+ + Add tag selector shortcuts:
+ - Toggle displaying automatic tags
+ - Toggle displaying all tags
+ - Deselect all tags
+ - Focus search box
+
+* In version 3.3.3:
+ + Filter attachments by mode before trying to modify paths
+
+* In version 3.3.2:
+
+ + Fix mishandling of attachments with paths that did not match the old path pattern in the modify attachments function.
+
+* In version 3.3.1:
+
+ + Fix add tag shortcut for Zotero 5.0.78
+
+* In version 3.3.0:
+
+ + Added shortcut for ZotFile's move and rename attachment
+
+* In version 3.2.1:
+
+ + Compatibility updates for Zotero 5.0.75
+
+* In version 3.2.0:
+
+ + Drop support for Zotero as a Firefox addon and for Zotero 4.x
+ + Update item select link to newer format used by recent version of Zotero
+ Add functions to copy select links and web links to collections
+ + Add copy/paste item field functions
+
+* In version 3.1.0:
+
+ + Update Chinese translation
+ + Add "Link to File..." shortcut
+ + Add "Show file" shortcut
+ + Add "Attach new file" shortcut for ZotFile
+
+* In version 3.0.3:
+
+ Fix French locale
* In version 3.0.2:
@@ -20,6 +101,11 @@
- Don't change clipboard when no valid items copied
- Add Zutilo preferences to Tools menu on all platforms
+* In version 2.0.3:
+
+ + Improved French locale (thanks to gracile-fr)
+ + Add preferences menu item to the global menu in Zotero 5.0 (thanks to gracile-fr)
+
* In version 2.0.2:
+ Allow some functions (like copy tags) to work on attachments and notes as well as regular items.
diff --git a/i18n/es/readme/README.md b/i18n/es/readme/README.md
index d4e7273..72082e1 100644
--- a/i18n/es/readme/README.md
+++ b/i18n/es/readme/README.md
@@ -1,6 +1,6 @@
# Zutilo
-Zutilo is a plugin for [Zotero](http://www.zotero.org/) (both the Firefox addon and the standalone client).
+Zutilo is a plugin for [Zotero](http://www.zotero.org/).
Zutilo adds several functions not available in base Zotero through extra menu items and keyboard shortcuts.
Here are some of Zutilo's features:
@@ -8,25 +8,29 @@ Here are some of Zutilo's features:
* Select and right-click to relate several items
* Copy items to the clipboard in several formats
* Keyboard shortcuts for editing items and focusing and hiding different elements of the Zotero user interface
-* Right-click to save link or document as an attachment to currently selected item (only for Zotero as a Firefox addon)
Zutilo strives to enable whatever Zotero workflow is desired and otherwise to get out of the way.
All of Zutilo's graphical elements can be disabled individually, so that unwanted features do not clutter the user interface.
-**NOTE:** As of version 3.0, Zutilo is distributed from the [GitHub releases page](https://github.com/willsALMANJ/Zutilo/releases).
+**NOTE:** As of version 3.0, Zutilo is distributed from the [GitHub releases page](https://github.com/wshanks/Zutilo/releases).
New updates will not be published to the location checked by previous versions of Zutilo (the Mozilla Add-ons page).
To receive new Zutilo updates, please update to the latest version of Zutilo.
## Installation
-Download the Zutilo `zutilo.xpi` file from [Zutilo's GitHub releases page](https://github.com/willsALMANJ/Zutilo/releases).
+Download the Zutilo `zutilo.xpi` file from [Zutilo's GitHub releases page](https://github.com/wshanks/Zutilo/releases).
Then go to Tools->Add-ons in Zotero Standalone.
Click on the gear button in the upper right area of the Add-ons Manager window that appears and choose "Install Add-on From File."
Then select the downloaded `zutilo.xpi` file.
+**NOTE for Firefox users:** Firefox treats `.xpi` files as Firefox add-ons and tries to install them.
+Rather than clicking on the `.xpi` file, you can try right-clicking and choosing to save the link as a file.
+In some cases (particularly on Linux), Firefox does not allow right-clicking and saving the `.xpi` link either.
+In that case, you must download it either with a different browser or with a command-line tool like `curl` or `wget`.
+
## Getting started
-Zutilo can be customized via its preferences window, which can reached either via the Firefox Addons Manager or the Zotero action menu (the gear icon).
+Zutilo can be customized via its preferences window, which can reached via the Zotero Addons Manager or the Tools menu.
### Zotero item menu
@@ -41,18 +45,7 @@ All of the functions that can appear in the item menu can also be called by keyb
Zutilo also provides some additional keyboard shortcut functions that are not available from the item menu.
By default, no keyboard shortcuts are defined.
A shortcut key combination can be set for each function in Zutilo's preferences.
-If the key combination is already assigned for another Firefox function, a warning will be displayed.
-
-### Firefox specific functions
-
-Zutilo adds entries to the Zotero address bar icon's menu for saving items into Zotero with the opposite attachment behavior from that set in Zotero's preferences.
-So if you have Zotero set to download attachments when saving an item, Zutilo will add an entry to save the item without attachments.
-The extra menu items can be disabled in Zutilo's preferences.
-
-Zutilo adds two entries to right-click menu in Firefox, one to save the current page as an attachment (most useful when the page is a pdf) and another to save a link as an attachment (if a link was right-clicked).
-These menu items appear the Zotero submenu of the Firefox right-click menu.
-In Zutilo's preferences, the menu items can be set to appear in the right-click menu directly (instead of the Zotero submenu) or can be disabled.
-Whether the attachment files are imported to Zotero or downloaded and linked to Zotero items can be also be set in Zutilo's preferences.
+If the key combination is already assigned for another function, a warning will be displayed.
## Usage notes
diff --git a/i18n/es/readme/docs/BUGS.md b/i18n/es/readme/docs/BUGS.md
index 5c9b027..8fc37cb 100644
--- a/i18n/es/readme/docs/BUGS.md
+++ b/i18n/es/readme/docs/BUGS.md
@@ -1,7 +1,7 @@
# Bugs
-The latest source code for Zutilo is maintained on [GitHub](https://github.com/willsALMANJ/Zutilo "Zutilo's GitHub page").
-Bugs can be reported by clicking on the "New Issue" button under [the Issues section](https://github.com/willsALMANJ/Zutilo/issues "GitHub Issues page") of the GitHub site.
+The latest source code for Zutilo is maintained on [GitHub](https://github.com/wshanks/Zutilo "Zutilo's GitHub page").
+Bugs can be reported by clicking on the "New Issue" button under [the Issues section](https://github.com/wshanks/Zutilo/issues "GitHub Issues page") of the GitHub site.
You can also check there to see if a bug you experience has already been reported by another user.
Make sure to check the "closed" tab of the Issues section to see if the bug has already been addressed.
@@ -19,24 +19,19 @@ When submitting bug reports, please include the following:
1. Version of Zutilo used
2. Version of Zotero used
-3. Version of Firefox used (if applicable)
-4. Step-by-step instructions to reproduce the bug
+3. Step-by-step instructions to reproduce the bug
-The versions of Zutilo and Zotero can be looked up in the Addons Manager (`about:addons`) in Firefox.
-The version of Firefox can be found in `Help->About Firefox`.
For Zotero Standalone, the version of Zutilo can be found in `Tools->Addons` and the version of Zotero in `Help->About Zotero`.
-Additionally, if possible please provide any javascript errors that appear in the Browser Console when the bug occurs.
-The Browser Console can be opened with `Ctrl+Shift+J` (`Cmd+Shift+J` on OS X).
-Try to clear the output, reproduce the bug, and then check the Browswer Console to see if any messages related to Zutilo or Zotero appeared.
-While it is technically possible to open the Browser Console in Zotero Standalone, it is quite difficult to do.
-It is recommended to try to reproduce the bug in Firefox in order to check for Browser Console messages.
+Additionally, if possible please provide any javascript errors that appear in the Error Console when the bug occurs.
+The Error Console can be opened from the Tools->Developer menu.
+Try to clear the output, reproduce the bug, and then check the Error Console to see if any messages related to Zutilo or Zotero appeared.
# Feature requests
Feature requests may also be submitted by opening a new issue.
If you would like to contribute a patch, please open a new issue before submitting your code.
-A description of the kinds of features that are appropriate for Zutilo can be found on [the Zutilo wiki page](https://github.com/willsALMANJ/Zutilo/wiki).
+A description of the kinds of features that are appropriate for Zutilo can be found on [the Zutilo wiki page](https://github.com/wshanks/Zutilo/wiki).
A roadmap of planned features is also available on the wiki.
# Translation
diff --git a/i18n/es/readme/docs/COMMANDS.md b/i18n/es/readme/docs/COMMANDS.md
index 99296b4..d028def 100644
--- a/i18n/es/readme/docs/COMMANDS.md
+++ b/i18n/es/readme/docs/COMMANDS.md
@@ -1,6 +1,6 @@
### Item menu functions
-Each of the functions below can be called from the Zotero item menu (accessed by right-clicking in the items pane in the middle of Zotero where all of a collection's items are listed).
-In the Zutilo preferences (accessed from the same menu as Zotero's preferences), each of these functions can be set to show up in the Zotero item menu, in a Zutilo submenu of the Zotero item menu, or not to appear at all.
+Each of the functions below can be called from the Zotero item context menu (accessed by right-clicking in the items pane in the middle of Zotero where all of a collection's items are listed).
+In the Zutilo preferences (accessed from Zotero "Tools" menu), each of these functions can be set to show up in the Zotero item menu, in a Zutilo submenu of the Zotero item menu, or not to appear at all.
* __Copy tags:__
Right click items in the Zotero library and copy their tags to the clipboard as a '\r\n' delimited list.
@@ -42,34 +42,42 @@ In the Zutilo preferences (accessed from the same menu as Zotero's preferences),
Set all selected items to be related to each other.
* __QuickCopy items:__
- Copy selected items to the clipboard using the "Default output format" specified in the "Export" section of Zotero's preferences.
- There are also two alternative QuickCopy items (labeled "alt 1" and "alt 2").
- These items will copy to the clipboard using alternative export translators.
- To select the translators used by these functions, the corresponding preferences `extensions.zutilo.quickcopy_alt1` and `extensions.zutilo.quickcopy_alt2` must be set in the config editor.
- Each preference should be set to whatever appears in the config editor for the `export.quickCopy.setting` preference when the desired translator is set as the "Default output format" in Zotero's preferences.
- The config editor can be opened from the Advanced pane of Zotero's preferences window (or by visiting `about:config` if using Zotero as a Firefox add-on).
+ Copy selected items to the clipboard using the "Default output format" specified in the "Export" section of Zotero's preferences.
+ It is also possible to set alternative quick copy items.
+ By default, two such items are enabled, labeled "alt 1" and "alt 2".
+ Additional items can be enabled by changing the `extensions.zutilo.copyItems_alt_total` preference in the config editor.
+ These items will copy to the clipboard using alternative export translators.
+ To select the translators used by these functions, the corresponding preferences `extensions.zutilo.quickcopy_alt1`, `extensions.zutilo.quickcopy_alt2`, etc. must be set in the config editor.
+ Each preference should be set to whatever appears in the config editor for the `export.quickCopy.setting` preference when the desired translator is set as the "Default output format" in Zotero's preferences.
+ The config editor can be opened from the Advanced pane of Zotero's preferences window.
* __Copy select item links:__
- Copy links of the form "zotero://select/items/ITEM_ID" to the clipboard for each selected item.
- Pasting such a link into the Firefox address bar will select the corresponding item in the Zotero Firefox plugin.
- Following links from other applications and having the links select items in the Zotero Standalone client may also be achievable but might require additional set up.
+ Copy links of the form "zotero://select/library/items/ITEM_ID" to the clipboard for each selected item.
+ Following links from other applications can select items in the Zotero client but might require additional set up.
+
+* __Copy Zotero IDs:__
+ Copy the ID of each selected item to the clipboard.
* __Copy Zotero URIs:__
- Copy (www.zotero.org) links to the clipboard for each selected item.
- If you have a (www.zotero.org) profile, following such a link will open the page for the corresponding item in profile on (www.zotero.org).
- If you do not have a (www.zotero.org) profile, a placeholder link is still generated but might not be useful.
+ Copy (www.zotero.org) links to the clipboard for each selected item.
+ If you have a (www.zotero.org) profile, following such a link will open the page for the corresponding item in profile on (www.zotero.org).
+ If you do not have a (www.zotero.org) profile, a placeholder link is still generated but might not be useful.
+
+* __Open Zotero URIs:__
+ Open (www.zotero.org) links for each selected item.
+ See description for "Copy Zotero URIs".
* __Create book section:__
- Create a book section item from the currently selected book item.
+ Create a book section item from the currently selected book item.
- The new item is created by duplicating the book item and changing its type to book section.
- Author entries for the book item are converted to "book author" entries for the new book section item.
- The new book section item is added as a related item to the original book item.
- Finally, the title textbox for the new item is focused so that a new title for the book section may be entered.
+ The new item is created by duplicating the book item and changing its type to book section.
+ Author entries for the book item are converted to "book author" entries for the new book section item.
+ The new book section item is added as a related item to the original book item.
+ Finally, the title textbox for the new item is focused so that a new title for the book section may be entered.
- This function only works when a single book item is selected.
- Note that some fields (number of pages and short title, as of late 2014) apply only to book items and not book section items.
- There is no prompt to confirm this loss of fields from the created book section item.
+ This function only works when a single book item is selected.
+ Note that some fields (number of pages and short title, as of late 2014) apply only to book items and not book section items.
+ There is no prompt to confirm this loss of fields from the created book section item.
* __Create book item:__
Create a book item from teh currently selected book section item.
@@ -98,8 +106,33 @@ In the Zutilo preferences (accessed from the same menu as Zotero's preferences),
(‘Paste-non-empty’): paste where source has value.
Replaces authors if there is an author field in the pasted data.
-* __Paste all items fields__
- (Paste-all): paste all fields from source, even if they are empty.
+* __Paste all item fields__
+ (‘Paste-all’): Paste all item fields from source, even if they are empty.
+
+ To edit specific item fields, select a source item and use "Copy item fields".
+ Paste to a text editor, edit the JSON text, then copy the modified text back to the clipboard.
+ Finally, select the target items and use "Paste all item fields".
+ The `itemType` name/value pair needs to be kept in the JSON text because Zutilo uses its presence to decide whether to use the paste JSON commands in the context menu; its value is irrelevant for this function.
+ You can, e.g., clear the URL field in multiple items by pasting `{"itemType": "book", "url": ""}`, which will not change any item types.
+
+* __Paste item type__
+ (‘Paste-type’): Paste the item type of the source item to the target items.
+ This will not change item field values.
+ However, changing the type of a Zotero item modifies the list of its valid fields.
+ It's important to realize that data in invalid fields will be lost!
+
+### Collection menu functions
+Each of the functions below can be called from the Zotero collection context menu (accessed by right-clicking on a collection in the collections pane at the right of Zotero where all the collections are listed).
+In the Zutilo preferences (accessed from Zotero "Tools" menu), each of these functions can be set to show up in the Zotero item menu, in a Zutilo submenu of the Zotero item menu, or not to appear at all.
+
+* __Copy select collection link:__
+ Copy links of the form "zotero://select/library/collections/ITEM_ID" to the clipboard for the selected collection.
+ Following links from other applications can select the collection in the Zotero client but might require additional set up.
+
+* __Copy Zotero URI:__
+ Copy (www.zotero.org) link to the clipboard for the selected collection.
+ If you have a (www.zotero.org) profile, following such a link will open the page for the corresponding item in profile on (www.zotero.org).
+ If you do not have a (www.zotero.org) profile, a placeholder link is still generated but might not be useful.
### Navigating the UI and editing items via keyboard shortcuts
@@ -138,7 +171,7 @@ The following four functions are similar to the four item editing functions abov
* __Focus item pane: Related tab:__
Select the "Related" tab of the item pane.
-The following two functions allow you to cycle through the same four tags in the item pane.
+The following two functions allow you to cycle through the same four tabs in the item pane.
* __Focus item pane: next tab:__
Select next tab in item pane.
@@ -189,11 +222,14 @@ However, when the pane is shown, the thicker vertical divider ("splitter", "grip
* __Create parent item:__
Create a parent item for the currently selected attachment item that does not have a parent.
+* __Find available PDFs:__
+ Find available PDFs for selected items.
+
* __Rename attachments:__
Use the parent item's metadata to rename its attachments.
* __Retrieve metadata for pdf:__
- Try to look up the metadata for the selected stored pdf attachment in Google Scholar.
+ Try to look up the metadata for the selected stored pdf attachment.
### Miscellaneous functions
@@ -208,74 +244,22 @@ However, when the pane is shown, the thicker vertical divider ("splitter", "grip
* __Open New Item menu:__
Open the new item menu so that the type of new item to create can be selected from it.
-* __Open style editor:__
- Open the style editor window (normally accessible from the advanced section of Zotero's preferences).
-
-### Firefox browser shortcut functions
-
-The following shortcut functions are only available in the Zotero Firefox addon.
-
-* __Focus Zotero:__
- Make Zotero visible if it is not.
- Focus Zotero so that, e.g., `Tab` and the arrow keys work on the Zotero UI rather than the previously focused element of Firefox's UI.
-
-* __Hide Zotero:__
- Hide Zotero if it was visible.
-
-* __Toggle Zotero:__
- Show Zotero if it was not visible.
- Otherwise hide Zotero.
-
-* __Save webpage as a Zotero item:__
- Save the current page as a webpage item in Zotero.
+* __Open Run JavaScript window:__
+ Open the Run JavaScript window, which is also accessible through Zotero's "Tools" menu, by selecting "Developer" -> "Run JavaScript".
-* __Save item:__
- Add an item to the Zotero library based on the reference content of the current webpage (equivalent to clicking on the little page/book icon in the Firefox address bar).
- In Zotero, the function that creates the item from the web page content is referred to as a `translator`.
-
-* __Save item without attachments:__
- Create an item in a similar manner to "Save item" but __do not__ save attachment files for the item regardless of whether or not Zotero is set to save such attachments in its preferences.
-
-* __Save item with attachments:__
- Create an item in a similar manner to "Save item" but __do__ save attachment files for the item regardless of whether or not Zotero is set to save such attachments in its preferences.
-
-* __Save item (reverse attachment pref):__
- Create an item in a similar manner to "Save item" but only save attachments if Zotero is set not to save attachments in its preferences.
-
-* __Attach current page:__
- Attach the current browser page to the selected Zotero item.
- This function works best when the current web page is a PDF opened with Firefox's internal PDF viewer.
-
-### Firefox browser menu functions
-
-These functions add items to the Zotero "Save item" button's menu and to the Firefox right-click menu.
-Any of the menu items can be set to hidden in Zutilo's preferences.
-
-* __Attaching webpages and links to Zotero items:__
- Zutilo adds context menu items to Firefox for attaching the current page or the current link target (if a link is selected in the current web page) to the item currently selected in Zotero.
- Attaching the current web page is also available as a keyboard shortcut.
-
- How the attachment is processed depends on the attachment method set in Zutilo's preferences.
- If the method is 'Import', an imported attachment is created from the page/link.
- If the method is 'Prompt for linked file', a file prompt appears to allow the user to specify a new file.
- The page/link is saved to this file and then a linked file attachment (linked to the downloaded file) is created.
- If the method is 'Prompt after first', an imported attachment is created if the selected item has no previous attachments (not counting webpage snapshot attachments).
- Otherwise, the file prompt for creating a linked file attachment is shown.
- If the shift key is pressed when the attachment function is activated, a prompt for a linked file is shown regardless of Zutilo's preference setting.
- If the control key is pressed, the attachment is imported regardless of Zutilo's preference setting.
-
-* __Save item from a current webpage with or without attachments:__
- Zutilo adds extra menu items to the context menu of Zotero's "Save item" button that save an item for the current page with or without extracting the page's associated PDF's and other files.
- That is, if the "Automatically attach PDFs and other files" preference is selected in Zotero, Zutilo adds menu items for saving the item without attachments.
- One menu item is created for each "Save to Zotero" method that applies to the current page.
- If the preference is not selected, Zutilo adds menu items for saving an item with the attachments.
+* __Open style editor:__
+ Open the style editor window (normally accessible from the "Cite" tab of Zotero's preferences).
- This function works by toggling the associated files preference in Zotero, creating the item, and then toggling the preference back to its original state.
- Because Zotero translates pages asynchronously (and thus simultaneously), translations made with this function should be allowed to finish before starting normal page translations with Zotero (since otherwise the state of the "Associated files" preference will depend on the timing of the simultaneous translations).
+* __Locate item:__
+ Equivalent to using one of the Lookup engines from the Locate menu accessed from the top of the item pane.
+ The default engine is "Google Scholar Search".
+ To change the engine, modify the `extensions.zutilo.locateItemEngine` preference in the config editor.
+ The config editor can be opened from the Advanced pane of Zotero's preferences window.
+ For a list of valid engine names, select "Developer->Run JavaScript" from Zotero's "Tools" menu and enter and run this command: `Zotero.LocateManager.getVisibleEngines().map(engine => engine.name)`.
### Better BibTeX functions
-The following functions are only available when [Better BibTeX](https://github.com/retorquere/zotero-better-bibtex) is installed (and only for Zotero version 5.0 or higher).
+The following functions are only available when [Better BibTeX](https://github.com/retorquere/zotero-better-bibtex) is installed.
* __Pin key:__ Pin the key for the currently selected items.
@@ -283,4 +267,14 @@ The following functions are only available when [Better BibTeX](https://github.c
* __Force-refresh key:__ Force-refresh the key for the currently selected items.
+* __Push to TeXstudio:__ Push references to TeXstudio.
+
+### ZotFile functions
+
+The following functions are only available when [ZotFile](zotfile.com) is installed.
+
+* __Attach new file:__ Attach the newest file in the ZotFile source directory to the currently selected item.
+
+* __Move and rename attachments:__ Move and rename the files associated with the currently selected attachments to following the format configured in ZotFile's preferences.
+* __Extract annotations:__ Trigger ZotFile's "Extract Annotations" function.
diff --git a/i18n/es/readme/docs/DEVELOPERS.md b/i18n/es/readme/docs/DEVELOPERS.md
index 74be237..29c5a7a 100644
--- a/i18n/es/readme/docs/DEVELOPERS.md
+++ b/i18n/es/readme/docs/DEVELOPERS.md
@@ -15,7 +15,7 @@ The `make` machinery is mainly used for converting the README files from `markdo
Most of the Zutilo logic is contained in the files in `addon/chrome/content/zutilo`.
The highlights are:
-* `zutilo.jsm`
+* `zutilo.js`
- `addon/bootstrap.js` loads this file when Zutilo starts up and it handles the rest of the Zutilo setup.
- This file defines the `Zutilo` module.
- The `Zutilo` module contains properties about Zutilo that are window independent.
@@ -27,9 +27,6 @@ The highlights are:
* `zoteroOverlay.js`
- Contains all of the functions that extend Zotero's UI and all of the Zutilo defined functions that interact with Zotero data
-* `firefoxOverlay.js`
- - Contains all of the functions that are specific to the Firefox version of Zotero (e.g. functions that interact with the browser content)
-
* `keys.js`
- Defines all of Zutilo's keyboard shortcut functions
- To define a new shortcut:
diff --git a/i18n/es/readme/docs/USAGE.md b/i18n/es/readme/docs/USAGE.md
index ff9dfa2..a20d828 100644
--- a/i18n/es/readme/docs/USAGE.md
+++ b/i18n/es/readme/docs/USAGE.md
@@ -6,7 +6,7 @@ Zotero can work with either imported attachments, stored in Zotero's storage and
When storing attachments as linked files, the relative attachment paths feature in Zotero can be useful.
With this feature, a base attachment directory is selected and then any linked file attachments in this directory are saved with paths relative to this path.
Because these paths are relative, you can move all your attachments to a new directory and all you have to do is update this base directory setting in Zotero rather than updating the path to each individual attachment.
-If you use more than computer, you can set the base attachment directory to a different location on each machine (e.g. a DropBox or SyncThing folder) and still have all of the links to attachments work by setting this preference to the right location on each machine.
+If you use more than one computer, you can set the base attachment directory to a different location on each machine (e.g. a DropBox or SyncThing folder) and still have all of the links to attachments work by setting this preference to the right location on each machine.
Relative attachment paths can be configured under the "Files and Folders" tab of the Advanced Section of Zotero's preferences.
#### Linked file attachment organization (ZotFile)
@@ -17,14 +17,6 @@ This feature makes maintaining a directory of linked file attachments as easy as
You can, for example, have ZotFile store attachments in directories named after the journal with a subfolder for the publication year and then name the attachment file after the author and title of the work.
ZotFile has several other features for working with attachments that are worth investigating in its documentation.
-#### Attaching browser content to item
-
-Zutilo provides functions for attaching a web link or the current web page to the currently selected item.
-In Zutilo's preferences, these functions can be set to create either imported or linked file attachments, or to import the first attachment for an item and then prompt for linked files after that.
-Note that Zutilo's linked file attachment method triggers ZotFile, so, if ZotFile is set up to rename and move attachments, it will rename and move the ones saved this way no matter where you choose to save them with Zutilo's prompt.
-ZotFile has a "only ask if item has other attachments" option.
-This option works well with the Zutilo option to prompt for the location of attachments after the first.
-
### Item field modification functions
Zutilo provides several functions for copying and pasting item fields.
@@ -54,11 +46,11 @@ However, the name of the journal and the year of the volume are incorrect.
3. Paste-non-empty the target records. This copies all non-empty fields from the source onto the target.
-As a result, the target records now all have the same Journal name and the same name (irrespective of the prior setting).
+As a result, the target records now all have the same Journal name and the same year (irrespective of the prior setting).
#### Copying authors
-Copy+Paste-into-empty, Copy+Paste-non-empty and Copy+Paste-non-empty behave differently with regard to copying authors.
+Copy+Paste-into-empty, Copy+Paste-non-empty and Copy+Paste-all behave differently with regard to copying authors.
* Copy+Paste-into-empty merges additional authors: Authors present in the source are added to the target.
diff --git a/i18n/fr/readme/CHANGELOG.md b/i18n/fr/readme/CHANGELOG.md
index cabd6bc..14c7b8a 100644
--- a/i18n/fr/readme/CHANGELOG.md
+++ b/i18n/fr/readme/CHANGELOG.md
@@ -1,6 +1,87 @@
-* In version 3.0.3:
+* In version 3.10.0:
+
+ + Fixes for Zotero 5.0.97-beta and upcoming Zotero 6
+
+* In version 3.9.0:
+
+ + Fix Open Style Editor shortcut
+ + Add Open Run JavaScript window shortcut
+ + Add mdnotes shortcuts
+ + Update French translations
+
+* In version 3.8.1:
+
+ + Update French translations
+ + Fix ZotFile Quick Extract shortcut
+ + Fix show file shortcut
+
+* In version 3.8.0:
+
+ + Add find available PDFs shortcut
+
+* In version 3.7.0:
+
+ + Add ZotFile Quick Extract shortcut
+
+* In version 3.6.1:
+
+ + Update French locale
+
+* In version 3.5.0:
+
+ + Add "Open Zotero URI" function
+ + Allow arbitrary number of alt quick copy functions
+ + Fix "Retrieve metadata for PDF" shortcut
+ + Update French locale
+
+* In version 3.4.0:
+
+ + Added shortcut for pushing reference to TeXstudio with Better BibTeX
+ + Add "Advanced search" shortcut
+ + Add "Locate item" shortcut
+ + Add "Show Locate menu" shortcut
+ + Add tag selector shortcuts:
+ - Toggle displaying automatic tags
+ - Toggle displaying all tags
+ - Deselect all tags
+ - Focus search box
+* In version 3.3.3:
+
+ + Filter attachments by mode before trying to modify paths
+
+* In version 3.3.2:
+
+ + Fix mishandling of attachments with paths that did not match the old path pattern in the modify attachments function.
+
+* In version 3.3.1:
+
+ + Fix add tag shortcut for Zotero 5.0.78
+
+* In version 3.3.0:
+
+ + Added shortcut for ZotFile's move and rename attachment
+
+* In version 3.2.1:
+
+ + Compatibility updates for Zotero 5.0.75
+
+* In version 3.2.0:
+
+ + Drop support for Zotero as a Firefox addon and for Zotero 4.x
+ + Update item select link to newer format used by recent version of Zotero
+ Add functions to copy select links and web links to collections
+ + Add copy/paste item field functions
+
+* In version 3.1.0:
+
+ + Update Chinese translation
+ + Add "Link to File..." shortcut
+ + Add "Show file" shortcut
+ + Add "Attach new file" shortcut for ZotFile
+
+* In version 3.0.3:
+
+ Fix French locale
* In version 3.0.2:
diff --git a/i18n/fr/readme/README.md b/i18n/fr/readme/README.md
index d4e7273..cec1be0 100644
--- a/i18n/fr/readme/README.md
+++ b/i18n/fr/readme/README.md
@@ -1,85 +1,80 @@
# Zutilo
-Zutilo is a plugin for [Zotero](http://www.zotero.org/) (both the Firefox addon and the standalone client).
-Zutilo adds several functions not available in base Zotero through extra menu items and keyboard shortcuts.
-Here are some of Zutilo's features:
+Zutilo est un module complémentaire pour [Zotero](http://www.zotero.org/).
+Par le biais d'options de menu supplémentaires et de raccourcis clavier, Zutilo ajoute des fonctions non disponibles en standard dans Zotero. Voici quelques-unes des fonctionnalités de Zutilo.
-* Copy, paste, and remove sets of tags
-* Select and right-click to relate several items
-* Copy items to the clipboard in several formats
-* Keyboard shortcuts for editing items and focusing and hiding different elements of the Zotero user interface
-* Right-click to save link or document as an attachment to currently selected item (only for Zotero as a Firefox addon)
+* Copier, coller et retirer des ensembles de marqueurs.
+* Créer des liens de "Connexe" entre les documents sélectionnés grâce à un clic-droit avec le bouton de la souris.
+* Copier dans le presse-papiers des documents dans plusieurs formats différents.
+* Modifier des documents, définir l'emplacement du curseur et masquer différents éléments de l'interface utilisateur Zotero grâce à des raccourcis clavier.
-Zutilo strives to enable whatever Zotero workflow is desired and otherwise to get out of the way.
-All of Zutilo's graphical elements can be disabled individually, so that unwanted features do not clutter the user interface.
+Zutilo s'efforce de réaliser tous vos souhaits en termes de flux de travail Zotero, et de rester à l'écart autrement. Tous les éléments graphiques de Zutilo peuvent être désactivés individuellement, de sorte que les fonctionnalités indésirables n'encombrent pas l'interface utilisateur.
+
+
+**NOTE :** À partir de la version 3.0, Zutilo est distribué à partir de la [page des versions GitHub](https://github.com/wshanks/Zutilo/releases).
+Les nouvelles mises à jour ne seront pas publiées à l'emplacement vérifié par les versions précédentes de Zutilo (la page des modules complémentaires de Mozilla).
+Pour recevoir les nouvelles mises à jour de Zutilo, veuillez effectuer une mise à jour vers la dernière version de Zutilo.
-**NOTE:** As of version 3.0, Zutilo is distributed from the [GitHub releases page](https://github.com/willsALMANJ/Zutilo/releases).
-New updates will not be published to the location checked by previous versions of Zutilo (the Mozilla Add-ons page).
-To receive new Zutilo updates, please update to the latest version of Zutilo.
## Installation
-Download the Zutilo `zutilo.xpi` file from [Zutilo's GitHub releases page](https://github.com/willsALMANJ/Zutilo/releases).
-Then go to Tools->Add-ons in Zotero Standalone.
-Click on the gear button in the upper right area of the Add-ons Manager window that appears and choose "Install Add-on From File."
-Then select the downloaded `zutilo.xpi` file.
+Télécharger le fichier `zutilo.xpi` de Zutilo à partir de [la page des versions GitHub de Zutilo](https://github.com/wshanks/Zutilo/releases).
+Dans Zotero, aller dans le menu _Outils_ → _Extensions_.
+Cliquer sur la roue dentée et choisir _Install Add-on From File_.
+Sélectionner et charger le fichier `zutilo.xpi`.
-## Getting started
-Zutilo can be customized via its preferences window, which can reached either via the Firefox Addons Manager or the Zotero action menu (the gear icon).
+**NOTE pour les utilisateurs de Firefox:** Firefox considère les fichiers `.xpi` comme des modules complémentaires de Firefox et essaie de les installer.
+Plutôt que de cliquer sur le fichier `.xpi`, il est préférable de faire un clic droit et de choisir _Enregistrer la cible du lien sous..._
+Dans certains cas (notamment sous Linux), Firefox ne permet pas non plus de cliquer avec le bouton droit de la souris et d'enregistrer le lien `.xpi`.
+Dans ce cas, vous devez télécharger le fichier`.xpi` soit avec un autre navigateur, soit avec un outil en ligne de commande comme `curl` ou `wget`.
-### Zotero item menu
+## Démarrer
-By default, Zutilo adds a set of menu items to a submenu (named `Zutilo`) of the menu that appears when an item is right-clicked in Zotero.
-Which items appear can be set in Zutilo's preferences window.
-Items can be set to appear in the Zutilo submenu or directly in the Zotero item menu.
-Not all available functions are visible in Zutilo submenu by default.
+Une fois Zutilo installé, il peut être personnalisé via sa fenêtre de préférences, accessible à partir du gestionnaire de modules complémentaires de Zotero ou à partir du menu _Outils_ >_Préférences de Zutilo..._
-### Keyboard shortcuts
+### Le menu Zutilo dans Zotero
-All of the functions that can appear in the item menu can also be called by keyboard shortcuts.
-Zutilo also provides some additional keyboard shortcut functions that are not available from the item menu.
-By default, no keyboard shortcuts are defined.
-A shortcut key combination can be set for each function in Zutilo's preferences.
-If the key combination is already assigned for another Firefox function, a warning will be displayed.
+Par défaut, Zutilo ajoute un ensemble d'options de menu dans un sous-menu `Zutilo` du menu contextuel d'un document Zotero, affiché par un clic droit sur un document.
+Les options qui apparaissent peuvent être définies dans la fenêtre des préférences de Zutilo.
+Les options peuvent être configurées pour apparaître dans le sous-menu Zutilo ou directement dans le menu contextuel d'un document Zotero.
+Toutes les fonctions disponibles ne sont pas visibles par défaut dans le sous-menu de Zutilo .
-### Firefox specific functions
-Zutilo adds entries to the Zotero address bar icon's menu for saving items into Zotero with the opposite attachment behavior from that set in Zotero's preferences.
-So if you have Zotero set to download attachments when saving an item, Zutilo will add an entry to save the item without attachments.
-The extra menu items can be disabled in Zutilo's preferences.
+### Raccourcis clavier
-Zutilo adds two entries to right-click menu in Firefox, one to save the current page as an attachment (most useful when the page is a pdf) and another to save a link as an attachment (if a link was right-clicked).
-These menu items appear the Zotero submenu of the Firefox right-click menu.
-In Zutilo's preferences, the menu items can be set to appear in the right-click menu directly (instead of the Zotero submenu) or can be disabled.
-Whether the attachment files are imported to Zotero or downloaded and linked to Zotero items can be also be set in Zutilo's preferences.
+Toutes les fonctions qui peuvent apparaître dans le menu contextuel d'un document Zotero peuvent également être appelées par des raccourcis clavier.
+Zutilo propose également quelques fonctions supplémentaires de raccourcis clavier qui ne sont pas disponibles depuis le menu le menu contextuel d'un document Zotero.
+Par défaut, aucun raccourci clavier n'est défini.
+Une combinaison de touches de raccourci peut être définie pour chaque fonction dans les préférences de Zutilo.
+Si la combinaison de touches est déjà affectée à une autre fonction, un avertissement s'affiche.
-## Usage notes
+## Notes d'utilisation
-For additional notes on usage, see [USAGE](docs/USAGE.md).
+Pour des notes d'utilisation supplémentaires, voir [USAGE](docs/USAGE.md).
-## Command reference
+## Liste des commandes
-For a detailed list of Zutilo's commands, please see the [command reference](docs/COMMANDS.md).
+Pour une liste détaillée des commandes de Zutilo, voir la [liste des commandes](docs/COMMANDS.md).
## Support
-For guidelines regarding bug reports, feature requests, and translation help, please see the [feedback page](docs/BUGS.md).
+Pour les recommandations concernant les rapports de bogues, les demandes de fonctionnalités et l'aide à la traduction, veuillez consulter la [page de commentaires](docs/BUGS.md).
-## Development
+## Développement
-For notes on working with the Zutilo code, please see the [build document](docs/DEVELOPERS.md).
+Pour des notes sur le travail avec le code Zutilo, veuillez consulter le [document de construction](docs/DEVELOPERS.md).
-## Credits
+## Crédits
-For a list of acknowledgments, please see the [author page](AUTHORS.md).
+Pour une liste des remerciements, veuillez consulter la [page des auteurs](AUTHORS.md).
-## Changes
+## Changements
-For a summary changes by version number, please see the [changelog](CHANGELOG.md).
+Pour un récapitulatif des changements par numéro de version, veuillez consulter [l'historique des versions](CHANGELOG.md).
-## How to Contribute
+## Comment contribuer
-1. Star the repository on GitHub. The number of stars on GitHub is one of the most visible metrics for gauging the level of interest in project.
-2. Encourage others to use the project, either directly or by writing a blog post. Besides GitHub stars, the other metric for gauging interest in the project is the total number of downloads of the xpi.
-3. Submit new features or translations. However, keep in mind that new features add to the maintenance burden of the project. So get in contact before putting a lot of time into a new feature.
+1. Étoilez le dépôt sur GitHub. Le nombre d'étoiles sur GitHub est l'une des mesures les plus visibles pour évaluer le niveau d'intérêt pour un projet.
+2. Encouragez les autres à utiliser le projet, soit directement, soit en écrivant un article de blog. Outre les étoiles sur GitHub, l'autre indicateur de l'intérêt pour un projet est le nombre total de téléchargements du fichier xpi.
+3. Soumettez de nouvelles fonctionnalités ou traductions. Toutefois, n'oubliez pas que les nouvelles fonctionnalités alourdissent la charge de maintenance du projet. Aussi prenez ontact avec nous avant de consacrer beaucoup de temps à une nouvelle fonctionnalité.
diff --git a/i18n/fr/readme/docs/BUGS.md b/i18n/fr/readme/docs/BUGS.md
index 5c9b027..8fc37cb 100644
--- a/i18n/fr/readme/docs/BUGS.md
+++ b/i18n/fr/readme/docs/BUGS.md
@@ -1,7 +1,7 @@
# Bugs
-The latest source code for Zutilo is maintained on [GitHub](https://github.com/willsALMANJ/Zutilo "Zutilo's GitHub page").
-Bugs can be reported by clicking on the "New Issue" button under [the Issues section](https://github.com/willsALMANJ/Zutilo/issues "GitHub Issues page") of the GitHub site.
+The latest source code for Zutilo is maintained on [GitHub](https://github.com/wshanks/Zutilo "Zutilo's GitHub page").
+Bugs can be reported by clicking on the "New Issue" button under [the Issues section](https://github.com/wshanks/Zutilo/issues "GitHub Issues page") of the GitHub site.
You can also check there to see if a bug you experience has already been reported by another user.
Make sure to check the "closed" tab of the Issues section to see if the bug has already been addressed.
@@ -19,24 +19,19 @@ When submitting bug reports, please include the following:
1. Version of Zutilo used
2. Version of Zotero used
-3. Version of Firefox used (if applicable)
-4. Step-by-step instructions to reproduce the bug
+3. Step-by-step instructions to reproduce the bug
-The versions of Zutilo and Zotero can be looked up in the Addons Manager (`about:addons`) in Firefox.
-The version of Firefox can be found in `Help->About Firefox`.
For Zotero Standalone, the version of Zutilo can be found in `Tools->Addons` and the version of Zotero in `Help->About Zotero`.
-Additionally, if possible please provide any javascript errors that appear in the Browser Console when the bug occurs.
-The Browser Console can be opened with `Ctrl+Shift+J` (`Cmd+Shift+J` on OS X).
-Try to clear the output, reproduce the bug, and then check the Browswer Console to see if any messages related to Zutilo or Zotero appeared.
-While it is technically possible to open the Browser Console in Zotero Standalone, it is quite difficult to do.
-It is recommended to try to reproduce the bug in Firefox in order to check for Browser Console messages.
+Additionally, if possible please provide any javascript errors that appear in the Error Console when the bug occurs.
+The Error Console can be opened from the Tools->Developer menu.
+Try to clear the output, reproduce the bug, and then check the Error Console to see if any messages related to Zutilo or Zotero appeared.
# Feature requests
Feature requests may also be submitted by opening a new issue.
If you would like to contribute a patch, please open a new issue before submitting your code.
-A description of the kinds of features that are appropriate for Zutilo can be found on [the Zutilo wiki page](https://github.com/willsALMANJ/Zutilo/wiki).
+A description of the kinds of features that are appropriate for Zutilo can be found on [the Zutilo wiki page](https://github.com/wshanks/Zutilo/wiki).
A roadmap of planned features is also available on the wiki.
# Translation
diff --git a/i18n/fr/readme/docs/COMMANDS.md b/i18n/fr/readme/docs/COMMANDS.md
index 99296b4..26edee3 100644
--- a/i18n/fr/readme/docs/COMMANDS.md
+++ b/i18n/fr/readme/docs/COMMANDS.md
@@ -1,286 +1,280 @@
-### Item menu functions
-Each of the functions below can be called from the Zotero item menu (accessed by right-clicking in the items pane in the middle of Zotero where all of a collection's items are listed).
-In the Zutilo preferences (accessed from the same menu as Zotero's preferences), each of these functions can be set to show up in the Zotero item menu, in a Zutilo submenu of the Zotero item menu, or not to appear at all.
-
-* __Copy tags:__
- Right click items in the Zotero library and copy their tags to the clipboard as a '\r\n' delimited list.
- Such a list of tags can be pasted into a new tag box to add all of the tags to an item at once.
+### Fonctions du menu des documents Zotero
+Chacune des fonctions ci-dessous peut être appelée à partir du menu contextuel d'un document Zotero, accessible par un clic-droit dans le volet des documents, le volet central de Zotero où la liste de tous les documents d'une collection est affichée.
+Dans les préférences de Zutilo (accessibles depuis le menu "Outils" de Zotero), chacune de ces fonctions peut être configurée pour apparaître dans le menu contextuel de Zotero, dans un sous-menu Zutilo du menu contextuel de Zotero, ou pour ne pas apparaître du tout.
+
+* __Copier les marqueurs :__
+ A partir d'un clic-droit sur une sélection de documents dans la bibiothèque Zotero, copie les marqueurs de ces documents dans le presse-papiers sous la forme d'une liste délimitée "\r\n".
+ Une telle liste de marqueurs peut être collée dans la boîte d'ajout de marqueurs d'un document, pour ajouter tous les marqueurs d'un seul coup.
+
+* __Retirer les marqueurs :__
+ A partir d'un clic-droit sur une sélection de documents dans la bibiothèque Zotero, retire à ces documents tous les marqueurs.
+
+* __Coller les marqueurs :__
+ A partir d'un clic-droit sur une sélection de documents dans la bibiothèque Zotero, colle le contenu du presse-papiers dans ces documents.
+ Le contenu du presse-papiers doit être une liste délimitée par un "\r\n" ou un "\n", comme la liste créée par la fonction de copie des marqueurs décrite ci-dessus.
+
+* __Copier les créateurs :__
+ A partir d'un clic-droit sur une sélection de documents dans la bibiothèque Zotero, copie les créateurs de ces documents dans le presse-papiers sous la forme d'une liste délimitée "\r\n".
+
+* __Afficher les chemins vers les pièces jointes :__
+ Affiche les chemins vers les pièces jointes sélectionnées et vers les pièces jointes aux notices sélectionnées (un par un dans des fenêtres de dialogue séparées -- vous ne sélectionnerez probablement pas plus de deux documents à la fois de cette façon !).
+
+* __Modifier les chemins vers les pièces jointes :__
+ Modifie le début du chemin vers toutes les pièces jointes éligibles sélectionnées et vers toutes les pièces jointes des notices sélectionnées.
+ Deux fenêtres de dialogue apparaissent.
+ La première demande l'ancien chemin partiel, tandis que la seconde demande le nouveau chemin partiel.
+ Si vous saisissez "C:/userData/references/" pour le premier chemin et "E:/" pour le second, le chemin d'accès d'un fichier joint ayant pour chemin d'accès "C:/userData/references/journals/Nature/2008/coolPaper.pdf" sera modifié en "E:/journals/Nature/2008/coolPaper.pdf" . Un fichier joint ayant pour chemin d'accès "E:/journals/Science/2010/neatPaper.pdf" restera inchangé.
+ Cette fonction est principalement utile lorsque vous changez d'ordinateur ou de disque dur et que vous brisez les liens vers toutes vos pièces jointes. Notez toutefois que Zotero dispose d'une fonction de chemin d'accès relatif aux pièces jointes qui devrait résoudre ce problème pour les ensembles de pièces jointes stockés tous sous un même répertoire parent.
+
+ Par défaut, l'ancien chemin partiel est comparé seulement avec le début du chemin de chaque pièce jointe.
+ Pour remplacer des éléments de chemin de pièces jointes qui ne sont pas au début, cliquez sur la case à cocher "Remplacer toutes les instances du chemin partiel" dans la première fenêtre de dialogue.
+ Cette option est utile si vous souhaitez renommer un sous-dossier ou passer d'un chemin de style Windows à un chemin de style Unix (en remplaçant "\" et "/").
+
+* __Modifier l'URL des pièces jointes :__
+ Cette fonction se comporte de la même manière que la fonction "Modifier les chemins vers les pièces jointes" ci-dessus, mais modifie l'URL des pièces jointes au lieu du chemin de fichier vers les pièces jointes liées.
+
+* __Copier les chemins vers les pièces jointes :__
+ Copie dans le presse-papiers le chemin vers chaque pièce jointe sélectionnée et/ou vers chaque pièce jointe enfant de chaque élément sélectionné.
+ Pour les pièces jointes sous forme de fichier, le chemin complet dans le système de fichiers est copié.
+ Les pièces jointes avec des liens URL sont ignorées.
+
+* __Associer les documents :__
+ Etablit des liens de "Document connexe" entre tous les documents sélectionnés.
+
+* __Copie rapide des documents :__
+ Copie dans le presse-papiers les documents sélectionnés en utilisant le "Format par défaut" spécifié dans l'onglet "Exportation" des préférences de Zotero.
+ Il est également possible de définir d'autres paramétrages de copie rapide.
+ Par défaut, deux de ces paramétrages sont activés, intitulés "alt 1" et "alt 2".
+ Des paramétrages supplémentaires peuvent être activés en modifiant la préférence `extensions.zutilo.copyItems_alt_total` dans l'éditeur de configuration.
+ Les documents seront copiés dans le presse-papiers en utilisant d'autres convertisseurs d'export.
+ Pour sélectionner les convertisseurs utilisés par ces fonctions, les préférences correspondantes `extensions.zutilo.quickcopy_alt1`, `extensions.zutilo.quickcopy_alt2`, etc. doivent être définies dans l'éditeur de configuration.
+ Chaque préférence doit être réglée sur ce qui apparaît dans l'éditeur de configuration pour la préférence `export.quickCopy.setting` lorsque le convertisseurs souhaité est défini comme le "Format par défaut" dans les préférences de Zotero.
+ L'éditeur de configuration peut être ouvert à partir de l'onglet "Avancées" de la fenêtre des préférences de Zotero.
+
+* __Copier les liens zotero://… des documents :__
+ Copie dans le presse-papiers les liens sous la forme "zotero://select/library/items/ITEM_ID" pour chaque document sélectionné.
+ Suivre des liens depuis d'autres applications peut sélectionner des documents dans le client Zotero, mais cela peut nécessiter une configuration supplémentaire.
+
+* __Copier les identifiants des documents :__
+ Copier l'ID de chaque élément sélectionné dans le presse-papiers.
+
+* __Copier les liens zotero.org/… des documents :__
+ Copie dans le presse-papiers les liens (www.zotero.org) pour chaque document sélectionné.
+ Si vous avez un profil (www.zotero.org), suivre un tel lien ouvrira la page du document correspondant dans le profil sur (www.zotero.org).
+ Si vous n'avez pas de profil (www.zotero.org), un lien de remplacement est toujours généré mais cela peut s'avérer inutile.
+
+* __Ouvrir les liens zotero://… des documents :__
+ Ouvre les liens (www.zotero.org) pour chaque document sélectionné.
+ Voir la description de "Copier les liens zotero.org/… des documents"
+
+* __Créer une notice "Chapitre de livre" :__
+ Crée une notice de chapitre de livre à partir de la notice de livre sélectionnée.
+
+ La nouvelle notice est créée en dupliquant la notice de livre et en changeant son type en "Chapitre de livre".
+ Les entrées d'auteur de la notice de livre sont converties en entrées "auteur de livre" dans la nouvelle notice de chapitre de livre.
+ La nouvelle notice de chapitre de livre est ajoutée en tant que document connexe à la notice de livre originale.
+ Enfin, le curseur est positionné dans la zone de texte du champ "Titre" de la nouvelle notice, de manière à ce qu'un nouveau titre pour le chapitre de livre puisse être saisi.
+
+ Cette fonction n'est effective que lorsqu'une seule notice de livre est sélectionnée.
+ Notez que certains champs (nombre de pages et titre court, à partir de fin 2014) ne s'appliquent qu'aux notices de livre et non aux notices de chapitre de livre.
+ Il n'y a pas de boîte de dialogue pour confirmer la perte de ces champs à partir de la notice de chapitre de livre créée.
-* __Remove tags:__
- Right click items in the Zotero library and remove all of their tags.
+* __Créer une notice "Livre" :__
+ Crée une notice de livre à partir de la notice de chapitre de livre sélectionnée.
-* __Paste tags:__
- Right click items in the Zotero library and paste the contents of the clipboard to them.
- The contents of the clipboard must be a '\r\n' or '\n' delimited list (such as the list created by the copy tags function described above).
+ La notice de chapitre de livre est d'abord dupliquée et convertie en une notice de livre.
+ Ensuite, le "Titre du livre" de la notice de chapitre de livre est utilisé comme titre pour cette nouvelle notice et le résumé est supprimé.
+ La nouvelle notice de livre est liée en tant que document connexe à la notice de chapitre de livre.
+ Enfin, le champ "Titre" de la nouvelle notice est sélectionné, de manière à ce que le titre du livre puisse être modifié.
-* __Copy creators:__
- Right click items in the Zotero library and copy their creators to the clipboard as a '\r\n' delimited list.
+* __Copier les documents enfants :__
+ Copie dans un presse-papiers interne de Zutilo (et non dans le presse-papiers du bureau) les documents enfants d'un document sélectionné.
+ Cette fonction est conçue pour être utilisée conjointement avec la fonction "Déplacer les documents enfants".
-* __View attachment paths:__
- Display the paths to selected attachment items and to attachments of selected regular items (one by one as separate dialog windows -- you probably don't want to select more than a couple items at a time this way!).
-
-* __Modify attachment paths:__
- Change the beginning of the path to all eligible selected attachments and to all attachments of selected regular items.
- Two prompt windows appear.
- The first asks for the old partial path while the second asks for the new partial path.
- If you enter "C:/userData/references/" for the first path and "E:/" for the second path, then an attachment file with a path of "C:/userData/references/journals/Nature/2008/coolPaper.pdf" will have its path changed to "E:/journals/Nature/2008/coolPaper.pdf" while an attachment with path "E:/journals/Science/2010/neatPaper.pdf" will be left unchanged.
- This function is mainly useful for when you change computers or hard drives and break the links to all of your attachments (though note that Zotero has a relative attachment path feature that should address this issue for attachment collections all stored togehter under one parent directory).
+* __Déplacer les documents enfants :__
+ Déplace tous les documents stockés dans le presse-papiers interne de Zutilo par la fonction "Copier les documents enfants" vers le document sélectionné.
- By default, the old partial path is only compared with the beginning of each attachment path.
- To replace elements of attachment paths not at the beginning, click the "replace all instances" check box in the first prompt window.
- This option is useful if you want to rename a subfolder or switch between Windows and Unix style paths (replacing `\` and `/`).
+* __Copier les champs de la notice :__
+ Copie dans le presse-papiers tous les champs de métadonnées d'une notice source.
+ Les données copiées sont toutes les données visibles dans le volet du document Zotero uniquement (pas les marqueurs ni les notes).
-* __Modify attached URLs:__
- This function works the same as `Modify attachment paths` above but modifies the URL of URL attachments instead of the file path of linked file attachments.
+* __Coller dans les champs vides :__
+ (Compléter les champs vides de la notice par les champs copiés) Colle les champs de la source si les champs de la cible sont vides.
+ Les auteurs sont fusionnés : les auteurs de la source sont ajoutés, même si la cible a déjà des auteurs.
-* __Copy attachment paths:__
- Copy to the clipboard the path for each selected attachment and/or each child attachment of each selected item.
- For file attachments, the full path on the file system is copied.
- URL link attachments are ignored.
+* __Remplacer les champs :__
+ (Remplacer les champs de la notice par les champs non-vides copiés) Colle les champs de la source qui ont une valeur.
+ Les auteurs sont remplacés dans la cible s'il y a un champ auteur dans les données sources collées.
-* __Relate items:__
- Set all selected items to be related to each other.
+* __Coller tout :__
+ (Remplacer tous les champs de la notice par tous les champs copiés) Colle tous les champs de la source, même s'ils sont vides.
+
+ Pour modifier seulement certains champs, sélectionnez une notice source et utilisez "Copier les champs de la notice".
+ Collez dans un éditeur de texte, modifiez le texte JSON, puis recopiez le texte modifié dans le presse-papiers.
+ Enfin, sélectionnez les notices cibles et utilisez "Coller tout".
+ La paire nom/valeur `itemType` doit être conservée dans le texte JSON car Zutilo utilise sa présence pour décider d'utiliser les commandes JSON de collage dans le menu contextuel ; sa valeur n'est pas pertinente pour cette fonction.
+ Vous pouvez, par exemple, effacer le champ URL dans plusieurs notices en collant `{"itemType" : "book", "url" : ""}`, ce qui ne modifiera pas le type de document dans les notices cibles sélectionnées.
-* __QuickCopy items:__
- Copy selected items to the clipboard using the "Default output format" specified in the "Export" section of Zotero's preferences.
- There are also two alternative QuickCopy items (labeled "alt 1" and "alt 2").
- These items will copy to the clipboard using alternative export translators.
- To select the translators used by these functions, the corresponding preferences `extensions.zutilo.quickcopy_alt1` and `extensions.zutilo.quickcopy_alt2` must be set in the config editor.
- Each preference should be set to whatever appears in the config editor for the `export.quickCopy.setting` preference when the desired translator is set as the "Default output format" in Zotero's preferences.
- The config editor can be opened from the Advanced pane of Zotero's preferences window (or by visiting `about:config` if using Zotero as a Firefox add-on).
+* __Coller le type de document :__
+ (Remplacer le type de document de la notice par le type de document de la notice copiée) Colle le type de document de la notice source dans les notices cibles.
+ Cela ne change pas la valeur des autres champs dans les notices cibles.
+ Cependant, changer le type d'un document Zotero modifie la liste des champs valides.
+ Il est important de réaliser que les données saisies dans des champs non valides pour le type de document cible seront perdues !
-* __Copy select item links:__
- Copy links of the form "zotero://select/items/ITEM_ID" to the clipboard for each selected item.
- Pasting such a link into the Firefox address bar will select the corresponding item in the Zotero Firefox plugin.
- Following links from other applications and having the links select items in the Zotero Standalone client may also be achievable but might require additional set up.
+### Fonctions du menu des collections Zotero
+Chacune des fonctions ci-dessous peut être appelée à partir du menu contextuel de la collection Zotero, accessible par un clic droit sur une collection dans le volet des collections, le volet de gauche de Zotero où la liste de toutes les collections est affichée.
+Dans les préférences de Zutilo (accessibles depuis le menu "Outils de Zotero"), chacune de ces fonctions peut être configurée pour apparaître dans le menu contextuel de Zotero, dans un sous-menu Zutilo du menu contextuel de Zotero, ou pour ne pas apparaître du tout.
-* __Copy Zotero URIs:__
- Copy (www.zotero.org) links to the clipboard for each selected item.
- If you have a (www.zotero.org) profile, following such a link will open the page for the corresponding item in profile on (www.zotero.org).
- If you do not have a (www.zotero.org) profile, a placeholder link is still generated but might not be useful.
+* __Copier le lien zotero://… de la collection :__
+ Copie dans le presse-papiers le lien de la collection sélectionnée sous la forme "zotero://select/library/collections/ITEM_ID".
+ Suivre des liens depuis d'autres applications peut sélectionner la collection dans le client Zotero, mais cela peut nécessiter une configuration supplémentaire.
-* __Create book section:__
- Create a book section item from the currently selected book item.
+* __Copier le lien zotero.org/…de la collection :__
+ Copie dans le presse-papiers le lien (www.zotero.org) de la collection sélectionnée.
+ Si vous avez un profil (www.zotero.org), suivre un tel lien ouvrira la page du document correspondant dans le profil sur (www.zotero.org).
+ Si vous n'avez pas de profil (www.zotero.org), un lien de remplacement est toujours généré mais cela peut s'avérer inutile.
- The new item is created by duplicating the book item and changing its type to book section.
- Author entries for the book item are converted to "book author" entries for the new book section item.
- The new book section item is added as a related item to the original book item.
- Finally, the title textbox for the new item is focused so that a new title for the book section may be entered.
+### Navigation dans l'interface utilisateur et modification de documents via des raccourcis clavier
- This function only works when a single book item is selected.
- Note that some fields (number of pages and short title, as of late 2014) apply only to book items and not book section items.
- There is no prompt to confirm this loss of fields from the created book section item.
+Zutilo met actuellement en place plusieurs raccourcis clavier utiles pour modifier les éléments Zotero.
+Les fonctions suivantes sont effectives lorsqu'un seul document Zotero est sélectionné.
-* __Create book item:__
- Create a book item from teh currently selected book section item.
+* __Modifier Info :__
+ Sélectionne l'onglet "Info" dans le volet du document.
+ Le curseur est positionné sur le premier champ modifiable du document.
- First the book section item is duplicated and converted to a book item.
- Then the item's title is set to the "Book title" of the book section item and its abstract is deleted.
- The new book item is set as a related item of the book section item.
- Finally the title field of the new book item is selected for editing.
+* __Ajouter une note :__
+ Sélectionne l'onglet "Notes" dans le volet du document.
+ Crée une nouvelle note.
+ Ajouté pour être complet, mais Zotero a déjà un raccourci clavier pour cela.
+ Il peut être défini dans les préférences de Zotero.
-* __Copy child items:__
- Copy the child items of a selected item to an internal Zutilo clipboard (not the desktop clipboard).
- This function is meant to be used in conjunction with the "Relocate child items" function.
+* __Ajouter un marqueur :__
+ Sélectionne l'onglet "Marqueurs" du volet du document.
+ Ouvre une zone de texte pour créer un nouveau marqueur.
-* __Relocate child items:__
- Move all items stored in Zutilo's internal clipboard (put there by the "Copy child items" function) to the currently selected item.
+* __Ajouter un document connexe :__
+ Sélectionne l'onglet "Connexe" du volet du document.
+ Ouvre la boîte de dialogue pour ajouter des documents liés.
-* __Copy item fields:__
- Copies all source-item metadata fields to the clipboard.
- The data copied is all data visible in the right panel only (not tags, not notes).
+Les quatre fonctions suivantes sont similaires aux quatre fonctions d'édition des documents ci-dessus, excepté le fait qu'elles se concentrent sur l'onglet correspondant dans le volet du document.
-* __Paste into empty item fields:__
- (‘Paste-into-empty’) paste where source has value and target has none/empty.
- Authors from the source are merged in even if the target already has authors.
+* __Curseur dans le volet du document : onglet Info :__
+ Sélectionne l'onglet "Info" dans le volet du document.
-* __Paste non-empty item fields__
- (‘Paste-non-empty’): paste where source has value.
- Replaces authors if there is an author field in the pasted data.
+* __Curseur dans le volet du document : onglet Notes :__
+ Sélectionne l'onglet "Notes" dans le volet du document.
-* __Paste all items fields__
- (Paste-all): paste all fields from source, even if they are empty.
+* __Curseur dans le volet du document : onglet Marqueurs :__
+ Sélectionne l'onglet "Marqueurs" du volet du document.
-### Navigating the UI and editing items via keyboard shortcuts
+* __Curseur dans le volet du document : onglet Connexe :__
+ Sélectionne l'onglet "Connexe" du volet du document.
-Zutilo currently implements several keyboard shortcuts that are useful for editing Zotero items.
-The following functions work when only a single Zotero item is selected:
+Les deux fonctions suivantes vous permettent de faire défiler les quatre mêmes onglets dans le volet du document.
-* __Edit item info:__
- Select the "Info" tab in the item pane.
- Set the focus to the first editable field of the item's info.
+* __Curseur dans le volet du document : onglet suivant :__
+ Sélectionne l'onglet suivant dans le volet du document.
-* __Add note:__
- Select the "Notes" tab of the item pane.
- Create a new note.
- Added for completeness, but Zotero already has a keyboard shortcut that does this.
- It can be set in Zotero's preferences.
+* __Curseur dans le volet du document : onglet précédent :__
+ Sélectionne l'onglet précédent dans le volet du document.
-* __Add tag:__
- Select the "Tags" tab of the item pane.
- Open a textbox for creating a new tag.
+Zutilo dispose de plusieurs raccourcis clavier utiles pour naviguer entre et dans les trois volets principaux.
+Si le volet concerné est masqué, les fonctions suivantes l'affichent.
-* __Add related item:__
- Select the "Related" tab of the item pane.
- Open the dialog for adding related items.
+* __Curseur dans le volet des collections :__
+ Positionne le curseur dans le volet des collections (volet de gauche, volet des bibliothèques).
+ Similaire au raccourci Zotero existant, sauf que cette fonction affiche le volet également s'il est caché.
-The following four functions are similar to the four item editing functions above, except that they just set focus on the respective tab in the item pane.
+* __Curseur dans le volet des documents :__
+ Positionne le curseur dans le volet des documents (volet central).
-* __Focus item pane: Info tab:__
- Select the "Info" tab in the item pane.
+Les deux fonctions suivantes vous permettent d'afficher ou de masquer facilement le volet des collections (volet de gauche) et le volet du document (volet de droite).
-* __Focus item pane: Notes tab:__
- Select the "Notes" tab of the item pane.
+* __Volet du document : afficher / cacher :__
+ Affiche ou cache le volet du document.
-* __Focus item pane: Tags tab:__
- Select the "Tags" tab of the item pane.
+* __Volet des collections : afficher / cacher :__
+ Affiche ou cache le volet des collections.
-* __Focus item pane: Related tab:__
- Select the "Related" tab of the item pane.
+Comme les fonctions ci-dessus, les deux fonctions suivantes vous permettent d'afficher ou de masquer facilement le volet des collections (volet de gauche) et le volet du document (volet de droite).
+Toutefois, lorsque le volet est affiché, le séparateur vertical plus épais (ou diviseur, qui apparaît lorsque le volet est caché) reste visible jusqu'à ce que la largeur du volet soit ajustée.
-The following two functions allow you to cycle through the same four tags in the item pane.
+* __Volet du document : afficher / cacher (avec diviseur) :__
+ Affiche ou cache le volet du document.
+ Lorsque le volet est affiché, le séparateur vertical plus épais reste visible jusqu'à ce que la largeur du volet soit ajustée.
-* __Focus item pane: next tab:__
- Select next tab in item pane.
+* __Volet des collections : Afficher / Cacher (avec diviseur) :__
+ Affiche ou cache le volet des collections.
+ Lorsque le volet est affiché, le séparateur vertical plus épais reste visible jusqu'à ce que la largeur du volet soit ajustée.
-* __Focus item pane: previous tab:__
- Select previous tab in item pane.
+### Fonctions des pièces jointes
-Zutilo implements several keyboard shortcuts that are useful for navigating between and within the three main panes.
-If the relevant pane is hidden, the following functions will show it.
+* __Joindre un lien vers un fichier :__
+ Ouvre une boîte de dialogue de sélection de fichier pour choisir un fichier à joindre en tant que fichier lié au document sélectionné.
-* __Focus collections pane:__
- Set the focus to the collections pane (left pane, Libraries pane).
- Similar to the existing Zotero shortcut, except that this function also shows the pane if it's hidden.
+* __Joindre un lien vers un URI :__
+ Ouvre une boîte de dialogue de texte pour joindre au document sélectionné un lien vers un URI.
-* __Focus items pane:__
- Set the focus to the items pane (middle pane).
+* __Joindre une copie enregistrée d'un fichier :__
+ Ouvre une boîte de dialogue de sélection de fichier pour choisir un fichier à joindre en tant que fichier importé au document sélectionné.
-The following two functions allow you to easily show or hide the collections pane (left pane) and the item pane (right pane).
+* __Créer un document parent :__
+ Crée un document parent pour le document de type pièce jointe sélectionné qui n'a pas de parent.
-* __Item pane: Show / hide:__
- Show or hide the item pane.
+* __Trouver un PDF disponible :__
+ Trouve les PDF disponibles pour les documents sélectionnés.
-* __Collections pane: Show / hide:__
- Show or hide the collections pane.
+* __Renommer les fichiers à partir des métadonnées du parent :__
+ Utilise les métadonnées du document parent pour renommer ses pièces jointes.
-Like the functions above, the following two functions allow you to easily show or hide the collections pane (left pane) and the item pane (right pane).
-However, when the pane is shown, the thicker vertical divider ("splitter", "grippy", appears when the pane is hidden) remains visible until the width of the pane is adjusted.
+* __Récupérer les métadonnées des PDF :__
+ Essaye de rechercher les métadonnées de la pièce jointe en tant que fichier importé au format PDF.
-* __Item pane: Show / hide (sticky):__
- Show or hide the item pane.
- When the pane is show, the thicker vertical divider remains visible until the width of the pane is adjusted.
+### Fonctions diverses
-* __Collections pane: Show / hide (sticky):__
- Show or hide the collections pane.
- When the pane is show, the thicker vertical divider remains visible until the width of the pane is adjusted.
+* __Dupliquer le document :__
+ Crée un duplicat du document sélectionné.
-### Attachment functions
+* __Établir un rapport :__
+ Génére un rapport Zotero à partir d'une sélection de documents ou d'une collection.
+Si le curseur est positionné dans le volet des collections, le rapport est généré pour la collection sélectionnée.
+Sinon, le rapport est généré pour les documents sélectionnés.
-* __Attach link to file:__
- Open a file picker dialog for selecting a file to attach to the currently selected item as a linked file attachment.
+* __Ouvrir le menu "Nouveau document" :__
+ Ouvre le menu "Nouveau document" afin de pouvoir sélectionner le type du nouveau document à créer.
-* __Attach uri:__
- Open a textbox dialog for adding a URI attachment to the current item.
+* __Open Run JavaScript window:__
+ Open the Run JavaScript window, which is also accessible through Zotero's "Tools" menu, by selecting "Developer" -> "Run JavaScript".
-* __Attach stored copy:__
- Open a file picker dialog for selecting a file to attach to the currently selected item as a stored attachment.
+* __Ouvrir l'Éditeur de style :__
+ Ouvre la fenêtre de l'éditeur de style, normalement accessible depuis l'onglet "Citer" des préférences de Zotero.
-* __Create parent item:__
- Create a parent item for the currently selected attachment item that does not have a parent.
+* __Localiser avec Google Scholar :__
+ Cela équivaut à utiliser l'un des moteurs de recherche du menu de localisation accessible en haut du volet du document.
+ Le moteur par défaut est "Google Scholar Search".
+ Pour changer le moteur, modifiez la préférence `extensions.zutilo.locateItemEngine` dans l'éditeur de configuration.
+ L'éditeur de configuration peut être ouvert à partir de l'onglet "Avancées" de la fenêtre des préférences de Zotero.
+ Pour obtenir une liste des moteurs installés dans votre client Zotero, sélectionnez "Développeur->Run JavaScript" dans le menu "Outils" de Zotero, puis entrez et exécutez cette commande : `Zotero.LocateManager.getVisibleEngines().map(engine => engine.name)`.
-* __Rename attachments:__
- Use the parent item's metadata to rename its attachments.
+### Fonctions de Better BibTeX
-* __Retrieve metadata for pdf:__
- Try to look up the metadata for the selected stored pdf attachment in Google Scholar.
+Les fonctions suivantes sont disponibles seulement lorsque [Better BibTeX](https://github.com/retorquere/zotero-better-bibtex) est installé.
-### Miscellaneous functions
+* __Verrouiller la clé de citation :__ Verrouille la clé pour les documents sélectionnés.
-* __Duplicate item:__
- Create a duplicate of the selected item
+* __Déverrouiller la clé de citation :__ Déverrouille la clé pour les documents sélectionnés.
-* __Generate report:__
- Generate Zotero report from selected items or collection.
- If the Collections pane has focus, a report is generated for the selected collection.
- Otherwise, a report is generated for the currently selected items.
+* __Rafraîchir la clé de citation :__ Force à rafraîchir la clé pour les documents sélectionnés.
-* __Open New Item menu:__
- Open the new item menu so that the type of new item to create can be selected from it.
+* __Pousser les références vers TeXstudio :__ Pousse les références vers TeXstudio.
-* __Open style editor:__
- Open the style editor window (normally accessible from the advanced section of Zotero's preferences).
+### Fonctions de ZotFile
-### Firefox browser shortcut functions
+Les fonctions suivantes sont disponibles seulement lorsque [ZotFile](zotfile.com) est installé.
-The following shortcut functions are only available in the Zotero Firefox addon.
-
-* __Focus Zotero:__
- Make Zotero visible if it is not.
- Focus Zotero so that, e.g., `Tab` and the arrow keys work on the Zotero UI rather than the previously focused element of Firefox's UI.
-
-* __Hide Zotero:__
- Hide Zotero if it was visible.
-
-* __Toggle Zotero:__
- Show Zotero if it was not visible.
- Otherwise hide Zotero.
-
-* __Save webpage as a Zotero item:__
- Save the current page as a webpage item in Zotero.
-
-* __Save item:__
- Add an item to the Zotero library based on the reference content of the current webpage (equivalent to clicking on the little page/book icon in the Firefox address bar).
- In Zotero, the function that creates the item from the web page content is referred to as a `translator`.
-
-* __Save item without attachments:__
- Create an item in a similar manner to "Save item" but __do not__ save attachment files for the item regardless of whether or not Zotero is set to save such attachments in its preferences.
-
-* __Save item with attachments:__
- Create an item in a similar manner to "Save item" but __do__ save attachment files for the item regardless of whether or not Zotero is set to save such attachments in its preferences.
-
-* __Save item (reverse attachment pref):__
- Create an item in a similar manner to "Save item" but only save attachments if Zotero is set not to save attachments in its preferences.
-
-* __Attach current page:__
- Attach the current browser page to the selected Zotero item.
- This function works best when the current web page is a PDF opened with Firefox's internal PDF viewer.
-
-### Firefox browser menu functions
-
-These functions add items to the Zotero "Save item" button's menu and to the Firefox right-click menu.
-Any of the menu items can be set to hidden in Zutilo's preferences.
-
-* __Attaching webpages and links to Zotero items:__
- Zutilo adds context menu items to Firefox for attaching the current page or the current link target (if a link is selected in the current web page) to the item currently selected in Zotero.
- Attaching the current web page is also available as a keyboard shortcut.
-
- How the attachment is processed depends on the attachment method set in Zutilo's preferences.
- If the method is 'Import', an imported attachment is created from the page/link.
- If the method is 'Prompt for linked file', a file prompt appears to allow the user to specify a new file.
- The page/link is saved to this file and then a linked file attachment (linked to the downloaded file) is created.
- If the method is 'Prompt after first', an imported attachment is created if the selected item has no previous attachments (not counting webpage snapshot attachments).
- Otherwise, the file prompt for creating a linked file attachment is shown.
- If the shift key is pressed when the attachment function is activated, a prompt for a linked file is shown regardless of Zutilo's preference setting.
- If the control key is pressed, the attachment is imported regardless of Zutilo's preference setting.
-
-* __Save item from a current webpage with or without attachments:__
- Zutilo adds extra menu items to the context menu of Zotero's "Save item" button that save an item for the current page with or without extracting the page's associated PDF's and other files.
- That is, if the "Automatically attach PDFs and other files" preference is selected in Zotero, Zutilo adds menu items for saving the item without attachments.
- One menu item is created for each "Save to Zotero" method that applies to the current page.
- If the preference is not selected, Zutilo adds menu items for saving an item with the attachments.
-
- This function works by toggling the associated files preference in Zotero, creating the item, and then toggling the preference back to its original state.
- Because Zotero translates pages asynchronously (and thus simultaneously), translations made with this function should be allowed to finish before starting normal page translations with Zotero (since otherwise the state of the "Associated files" preference will depend on the timing of the simultaneous translations).
-
-### Better BibTeX functions
-
-The following functions are only available when [Better BibTeX](https://github.com/retorquere/zotero-better-bibtex) is installed (and only for Zotero version 5.0 or higher).
-
-* __Pin key:__ Pin the key for the currently selected items.
-
-* __Unpin key:__ Unpin the key for the currently selected items.
-
-* __Force-refresh key:__ Force-refresh the key for the currently selected items.
+* __ZotFile : joindre un nouveau fichier :__ Attache au document sélectionné le fichier le plus récent dans le répertoire source de ZotFile.
+* __ZotFile : déplacer et renommer les pièces jointes :__ Déplace et renomme les fichiers associés aux pièces jointes sélectionnées pour suivre le format configuré dans les préférences de ZotFile.
+* __ZotFile : Extraire les annotations :__ Déclenche la fonction "Extraire les annotations" de ZotFile.
diff --git a/i18n/fr/readme/docs/DEVELOPERS.md b/i18n/fr/readme/docs/DEVELOPERS.md
index 74be237..29c5a7a 100644
--- a/i18n/fr/readme/docs/DEVELOPERS.md
+++ b/i18n/fr/readme/docs/DEVELOPERS.md
@@ -15,7 +15,7 @@ The `make` machinery is mainly used for converting the README files from `markdo
Most of the Zutilo logic is contained in the files in `addon/chrome/content/zutilo`.
The highlights are:
-* `zutilo.jsm`
+* `zutilo.js`
- `addon/bootstrap.js` loads this file when Zutilo starts up and it handles the rest of the Zutilo setup.
- This file defines the `Zutilo` module.
- The `Zutilo` module contains properties about Zutilo that are window independent.
@@ -27,9 +27,6 @@ The highlights are:
* `zoteroOverlay.js`
- Contains all of the functions that extend Zotero's UI and all of the Zutilo defined functions that interact with Zotero data
-* `firefoxOverlay.js`
- - Contains all of the functions that are specific to the Firefox version of Zotero (e.g. functions that interact with the browser content)
-
* `keys.js`
- Defines all of Zutilo's keyboard shortcut functions
- To define a new shortcut:
diff --git a/i18n/fr/readme/docs/USAGE.md b/i18n/fr/readme/docs/USAGE.md
index ff9dfa2..d3c4904 100644
--- a/i18n/fr/readme/docs/USAGE.md
+++ b/i18n/fr/readme/docs/USAGE.md
@@ -1,124 +1,116 @@
-### Attachments
+### Pièces jointes
-#### Linked file attachments (relative paths)
+#### Pièces jointes liées (chemins relatifs)
-Zotero can work with either imported attachments, stored in Zotero's storage and able to be sync'ed to Zotero's servers, or linked file attachments, stored as file system paths to the location of the attachment files.
-When storing attachments as linked files, the relative attachment paths feature in Zotero can be useful.
-With this feature, a base attachment directory is selected and then any linked file attachments in this directory are saved with paths relative to this path.
-Because these paths are relative, you can move all your attachments to a new directory and all you have to do is update this base directory setting in Zotero rather than updating the path to each individual attachment.
-If you use more than computer, you can set the base attachment directory to a different location on each machine (e.g. a DropBox or SyncThing folder) and still have all of the links to attachments work by setting this preference to the right location on each machine.
-Relative attachment paths can be configured under the "Files and Folders" tab of the Advanced Section of Zotero's preferences.
+Zotero peut fonctionner soit avec des pièces jointes importées, stockées dans le répertoire "storage" de Zotero et pouvant être synchronisées avec les serveurs de Zotero, soit avec des pièces jointes liées, stockées en tant que chemins vers l'emplacement des fichiers joints dans le système de fichiers.
+Lorsque les pièces jointes sont stockées sous forme de fichiers liés, la fonctionnalité de chemin relatif intégrée à Zotero peut être utile.
+Grâce à cette fonctionnalité, un répertoire de base pour les pièces jointes est sélectionné, et toutes les pièces jointes liées sont enregistrées dans ce répertoire avec des chemins relatifs à ce chemin.
+Comme ces chemins sont relatifs, vous pouvez aisément déplacer toutes vos pièces jointes vers un nouveau répertoire : il vous suffit de mettre à jour le paramètre de répertoire de base dans Zotero, plutôt que de mettre à jour le chemin de chaque pièce jointe individuelle.
+Si vous utilisez plus d'un ordinateur, vous pouvez paramétrer le répertoire de base des pièces jointes pour un emplacement différent sur chaque machine (par exemple, un dossier DropBox ou SyncThing). Vous serez assuré que tous les liens vers les pièces jointes fonctionnent en paramétrant cette préférence pour le bon emplacement sur chaque machine.
+Les chemins relatifs des pièces jointes peuvent être configurés sous l'onglet "Fichiers et dossiers" de la section "Avancées" des préférences de Zotero.
-#### Linked file attachment organization (ZotFile)
+#### Organisation des pièces jointes liées (ZotFile)
-The [ZotFile extension](http://www.columbia.edu/~jpl2136/zotfile.html) provides extra support for linked file attachments in Zotero.
-ZotFile can be set to automatically convert new imported file attachments to linked file attachments and rename and move the attachment files to a file location based on the attachment parent's metadata.
-This feature makes maintaining a directory of linked file attachments as easy as using Zotero's imported attachments.
-You can, for example, have ZotFile store attachments in directories named after the journal with a subfolder for the publication year and then name the attachment file after the author and title of the work.
-ZotFile has several other features for working with attachments that are worth investigating in its documentation.
+L'extension [ZotFile](http://www.columbia.edu/~jpl2136/zotfile.html) fournit des fonctionnalités supplémentaires pour les pièces jointes liées dans Zotero.
+ZotFile peut être configuré pour convertir automatiquement les nouvelles pièces jointes importées en pièces jointes liées, et pour renommer et déplacer les fichiers joints vers un emplacement de fichier basé sur les métadonnées de leur document parent.
+Cette fonctionnalité rend la maintenance d'un répertoire de pièces jointes liées aussi facile que l'utilisation des pièces jointes importées dans Zotero.
+Vous pouvez, par exemple, faire en sorte que ZotFile stocke les pièces jointes dans des répertoires portant le nom de la revue avec un sous-dossier pour l'année de publication, puis nommer le fichier joint en fonction de l'auteur et du titre de l'article.
+ZotFile dispose de plusieurs autres fonctionnalités pour travailler avec des pièces jointes, qui méritent d'être étudiées dans sa documentation.
-#### Attaching browser content to item
+### Fonctionnalités de modification des champs d'un document
-Zutilo provides functions for attaching a web link or the current web page to the currently selected item.
-In Zutilo's preferences, these functions can be set to create either imported or linked file attachments, or to import the first attachment for an item and then prompt for linked files after that.
-Note that Zutilo's linked file attachment method triggers ZotFile, so, if ZotFile is set up to rename and move attachments, it will rename and move the ones saved this way no matter where you choose to save them with Zutilo's prompt.
-ZotFile has a "only ask if item has other attachments" option.
-This option works well with the Zutilo option to prompt for the location of attachments after the first.
+Zutilo dispose de plusieurs fonctionnalités pour copier et coller les champs d'un document.
+Ces fonctionnalités sont destinées à aider la complétion manuelle des métadonnées. Voici quelques cas d'usage.
-### Item field modification functions
+#### Copier + Coller dans les champs vides : Compléter des notices
-Zutilo provides several functions for copying and pasting item fields.
-The functions are meant to help completing metadata manually. Here are some use cases.
+Vous avez une série de PDF pour lesquels les métadonnées ne sont pas reconnues automatiquement, comme les chapitres d'un livre.
+Vous souhaitez copier un ensemble de métadonnées de la "notice source" vers les "notices cibles", sans écraser les informations déjà disponibles dans les notices cibles.
-#### Copy + Paste-into-empty: Completing records
+1. Vous complétez une notice "Chapitre de livre" pour le premier PDF (y compris les éditeurs, le titre du livre, l'année de publication, etc.)
-You have a series of PDFs, for which metadata is not recognised automatically, such as the chapters of a book.
-You want to copy a set of metadata from the ‘source record’ to ‘target records’, without overwritten the information already available in the target records.
+2. Vous utilisez ensuite la fonction "Copier les champs de la notice" pour cette notice, et "Coller dans les champs vides" pour toutes les autres notices.
+ Dans ce cas, vous n'avez pas à vous préoccuper des métadonnées existantes dans les notices cibles, car elles ne sont pas écrasées.
-1. You complete a ‘book section’ record for the first PDF (including editors, book title, publication year, etc).
+Par exemple, si les notices cibles comportent déjà des titres et des auteurs, ces titres sont conservés tandis que les éditeurs, le titre du livre, l'année de publication, etc. sont introduits à partir de la notice source.
+Vous pouvez être sûr qu'aucune information des notices cibles n'est perdue. Avec cette option, vous complétez en effet les champs vides de la notice cible par les champs copiés de la notice source.
-2. You then use Copy on this record, and Paste-into-empty onto all of the other records.
- In this, you don’t need to worry about existing metadata (in the target records) as this is not overwritten.
+#### Copier + Remplacer les champs : Rendre conformes des notices
-For example, if the target records already have titles and authors, those titles are kept while editors, book title, publication year, etc is merged into the record.
-You can be sure that no information from the target records is lost.
+Vous avez une série de PDF pour lesquels les métadonnées ont été reconnues, comme les articles contenus dans un même volume de revue.
+Cependant, le nom de la revue et l'année du volume sont incorrects.
-#### Copy + Paste-non-empty: Conforming records
+1. Créez une nouvelle notice d'article de revue et saisissez les informations requises (nom de la revue et année).
-You have a series of PDFs for which metadata was recognised, such as papers contained in a journal volume.
-However, the name of the journal and the year of the volume are incorrect.
+2. Utilisez ensuite la fonction "Copier les champs de la notice" pour cette notice.
-1. Create a new journal paper record and enter the required information (name of the journal and year).
+3. Pour les notices cibles, utilisez la fonction "Remplacer les champs". Cela copie tous les champs non-vides de la source vers la cible.
-2. Copy the record.
+En conséquence, les notices cibles ont maintenant tous le même nom de journal et la même année, indépendamment des paramétrages précédents. Avec cette option, vous remplacez en effet les champs de la notice cible par les champs non-vides copiés de la notice source.
-3. Paste-non-empty the target records. This copies all non-empty fields from the source onto the target.
+#### Copie des auteurs
-As a result, the target records now all have the same Journal name and the same name (irrespective of the prior setting).
+"Copier + Coller dans les champs vides", "Copier + Remplacer les champs" et "Copier + Coller tout" se comportent différemment s'agissant de la copie des auteurs.
-#### Copying authors
+* "Copier + Coller dans les champs vides" fusionne les auteurs supplémentaires : les auteurs présents dans la source sont conservés et sont ajoutés à ceux de la cible.
-Copy+Paste-into-empty, Copy+Paste-non-empty and Copy+Paste-non-empty behave differently with regard to copying authors.
+* "Copier + Remplacer les champs" remplace les auteurs : les auteurs présents dans la source remplacent les auteurs présents dans la cible.
+En d'autres termes, les auteurs présents dans la cible sont supprimés, et les auteurs de la source sont ajoutés à la cible.
-* Copy+Paste-into-empty merges additional authors: Authors present in the source are added to the target.
+* "Copier + Coller tout" : si le champ auteur dans la source est vide, alors les auteurs dans la cible sont également effacés.
-* Copy+Paste-non-empty replaces authors: Authors present in the source replace authors present in the target.
-In other words, the authors in the target are removed, and the authors from the source are added to the target.
+L'option ci-dessus propose plusieurs cas d'usage potentiels, tout en limitant le nombre d'options de collage à trois seulement.
+Voici trois exemples qui ne sont pas couverts.
-* Copy+Paste-all replaces authors; if the author field in the source is empty, then authors in the target are also cleared.
+1. Compléter des notices mais ne pas ajouter d'auteurs.
+ Pour ce faire, dupliquez la notice source, supprimez les auteurs, puis effectuez un "Copier + Coller dans les champs vides".
-The above option offer some likely scenarios, while keeping the number of paste-options to just three.
-Three examples which aren’t covered are
+2. Rendre conformes des notices mais ne pas remplacer les auteurs.
+ Pour ce faire, dupliquez la notice source, supprimez les auteurs, puis effectuez un "Copier + Remplacer les champs".
-1. Completing records but not adding to authors.
- To do this, duplicate the source record, remove the authors and then do a Paste-into-empty.
+3. Rendre conformes des notices mais fusionner les auteurs.
+ Pour ce faire, dupliquez la notice source, supprimez les auteurs et effectuez un "Copier + Remplacer les champs".
+ Ensuite, copiez la notice source originale et effectuez un "Coller dans les champs vides".
-2. Conforming records but not replacing authors.
- To do this, duplicate the source record, remove the authors and then do a Paste-non-empty.
+#### Copier + Coller tout : Copier des documents entre plusieurs bibliothèques
-3. Conforming records but merging authors.
- To do this, duplicate the source record, remove the authors and then do a Paste-non-empty.
-Then copy the original source record, and do a Paste-into-empty.
+Si vous utilisez "Copier + Coller tout" de façon consécutive et sur le même type de document, vous reportez tous les champs sources dans la cible ; vous dupliquez en quelque sorte le document.
+Un cas d'usage pour cela est de synchroniser facilement des documents entre deux bibliothèques.
+Vous avez un document avec des métadonnées correctes dans une bibliothèque, mais avec des métadonnées incorrectes dans une autre bibliothèque.
+La commande "Copier + Coller tout" copie toutes les métadonnées du document d'une des bibliothèques vers l'autre.
+Elle met à jour les champs de la cible à partir de la source.
+Elle efface également tous les champs de la cible qui sont vides dans la source. Avec cette option, vous remplacez en effet tous les champs de la notice cible par tous les champs copiés de la notice source.
-#### Copy + Paste-all: Copying item metadata between libraries
+1. Un document a été copié de la bibliothèque A vers la bibliothèque B.
+ Les métadonnées de la bibliothèque A sont ensuite corrigées et doivent maintenant être copiées sur le document cible de la bibliothèque B.
-If you are using copy + Paste-all, in sequence and onto the same item type, you are setting all source fields to the target (in a sense, duplicating the item).
-A use case for this is this is to easily sync items across two libraries.
-You have an item with correct metadata in one library, but with incorrect metadata in another library.
-Copy + Paste-all command copies all metadata from the item in one library onto the other.
-It updates fields on the target from the source.
-This also clears all fields in the target that are empty in the source.
+2. Copier le document source dans la bibliothèque A en utilisant "Copier les champs de la notice"
-1. An item was copied from library A to B.
- The metadata in A is subsequently corrected, and now needs to be copied onto the target item in library B.
+3. Coller tout dans le document cible dans la bibliothèque B en utilisant "Coller tout"
-2. Copy the source item in library A
+4. Les métadonnées du document cible sont désormais identiques à celles du document source.
-3. Paste-all onto the target item in library B
+Notez que "Copier + Coller tout" est de fait similaire à dupliquer.
+Cependant, dans certaines circonstances, il est plus facile de procéder ainsi.
-4. The metadata of the target item is now identical to the source item.
+* Par exemple, entre des bibliothèques, vous devriez d'abord dupliquer le document, puis faire glisser le document ainsi créé, puis déplacer les pièces jointes dans la nouvelle bibliothèque.
+ La date de création ne serait pas non plus conservée.
-Note that effectively Copy+Paste-all is similar to a duplicate.
-However, in some circumstances it’s easier to do.
+* Supposons que vous créez un document, puis que vous le dupliquez.
+Vous déplacez tous les PDF vers le duplicat selon les besoins.
+Vous remarquez alors une erreur impliquant un champ vide, par exemple déplacer le contenu de "Collection" vers "Titre de la coll.", tout en effaçant la "Collection".
+Il vous suffit de corriger la notice originale et d'utiliser la fonction "Coller tout".
+Dans la notice cible, le champ "Collection" est vidé, tandis que le champ "Titre de la coll." est complété.
-* For example, between libraries you’d first have to duplicate, then drag the item, then move attachments in the new library.
- Creation time would also not be preserved.
+#### Copier + modifier + Coller tout : Effacer le contenu de certains champs dans un grand nombre de notices
-* Suppose you create one item, you duplicate it.
- You move all the PDFs to the duplicates as needed.
-Now you notice a mistake (involving an empty field, e.g. moving Series to Series Title, while clearing Series).
-You just correct the original record, and use Paste-all.
-The Series filled is cleared, and Series TItle is filled.
+Vous créez une bibliothèque publique B à partir d'une bibliothèque A.
+Dans ce processus, vous voulez effacer certains champs d'un ensemble de documents de la bibliothèque B.
+Par exemple, vous pouvez souhaiter supprimer pour un ensemble de notice le contenu du champ "Loc. dans l'archive", "Extra", ou similaire.
-#### Copy + edit + Paste-all: Clearing certain item fields in a large number of records
+1. Créez un document vierge (du même type), copiez-le.
-You are creating a public library B from a library A.
-In this process, you want to clear some fields from a set of items in library B.
-For example, you may wish to remove a set of archive locations, or extras, or similar.
+2. Modifiez le JSON du presse-papiers pour ne conserver que les champs à effacer, en supprimant tous les autres champs.
-1. Create a blank item (of the same type), copy it.
-
-2. Edit the JSON on the clipboard to keep only fields to be cleared.
-
-3. Then use Paste-all to clear those fields in a number of source items.
+3. Utilisez ensuite la fonction "Coller tout" pour effacer ces champs dans les notices.
diff --git a/i18n/zh-CN/readme/CHANGELOG.md b/i18n/zh-CN/readme/CHANGELOG.md
index 8edf89c..14c7b8a 100644
--- a/i18n/zh-CN/readme/CHANGELOG.md
+++ b/i18n/zh-CN/readme/CHANGELOG.md
@@ -1,6 +1,87 @@
-* In version 3.0.3:
+* In version 3.10.0:
+
+ + Fixes for Zotero 5.0.97-beta and upcoming Zotero 6
+
+* In version 3.9.0:
+
+ + Fix Open Style Editor shortcut
+ + Add Open Run JavaScript window shortcut
+ + Add mdnotes shortcuts
+ + Update French translations
+
+* In version 3.8.1:
+
+ + Update French translations
+ + Fix ZotFile Quick Extract shortcut
+ + Fix show file shortcut
+
+* In version 3.8.0:
+
+ + Add find available PDFs shortcut
+
+* In version 3.7.0:
+
+ + Add ZotFile Quick Extract shortcut
+
+* In version 3.6.1:
+
+ + Update French locale
+
+* In version 3.5.0:
+
+ + Add "Open Zotero URI" function
+ + Allow arbitrary number of alt quick copy functions
+ + Fix "Retrieve metadata for PDF" shortcut
+ + Update French locale
+
+* In version 3.4.0:
+
+ + Added shortcut for pushing reference to TeXstudio with Better BibTeX
+ + Add "Advanced search" shortcut
+ + Add "Locate item" shortcut
+ + Add "Show Locate menu" shortcut
+ + Add tag selector shortcuts:
+ - Toggle displaying automatic tags
+ - Toggle displaying all tags
+ - Deselect all tags
+ - Focus search box
+
+* In version 3.3.3:
+ + Filter attachments by mode before trying to modify paths
+
+* In version 3.3.2:
+
+ + Fix mishandling of attachments with paths that did not match the old path pattern in the modify attachments function.
+
+* In version 3.3.1:
+
+ + Fix add tag shortcut for Zotero 5.0.78
+
+* In version 3.3.0:
+
+ + Added shortcut for ZotFile's move and rename attachment
+
+* In version 3.2.1:
+
+ + Compatibility updates for Zotero 5.0.75
+
+* In version 3.2.0:
+
+ + Drop support for Zotero as a Firefox addon and for Zotero 4.x
+ + Update item select link to newer format used by recent version of Zotero
+ Add functions to copy select links and web links to collections
+ + Add copy/paste item field functions
+
+* In version 3.1.0:
+
+ + Update Chinese translation
+ + Add "Link to File..." shortcut
+ + Add "Show file" shortcut
+ + Add "Attach new file" shortcut for ZotFile
+
+* In version 3.0.3:
+
+ Fix French locale
* In version 3.0.2:
@@ -20,6 +101,11 @@
- Don't change clipboard when no valid items copied
- Add Zutilo preferences to Tools menu on all platforms
+* In version 2.0.3:
+
+ + Improved French locale (thanks to gracile-fr)
+ + Add preferences menu item to the global menu in Zotero 5.0 (thanks to gracile-fr)
+
* In version 2.0.2:
+ Allow some functions (like copy tags) to work on attachments and notes as well as regular items.
diff --git a/i18n/zh-CN/readme/README.md b/i18n/zh-CN/readme/README.md
index d4e7273..72082e1 100644
--- a/i18n/zh-CN/readme/README.md
+++ b/i18n/zh-CN/readme/README.md
@@ -1,6 +1,6 @@
# Zutilo
-Zutilo is a plugin for [Zotero](http://www.zotero.org/) (both the Firefox addon and the standalone client).
+Zutilo is a plugin for [Zotero](http://www.zotero.org/).
Zutilo adds several functions not available in base Zotero through extra menu items and keyboard shortcuts.
Here are some of Zutilo's features:
@@ -8,25 +8,29 @@ Here are some of Zutilo's features:
* Select and right-click to relate several items
* Copy items to the clipboard in several formats
* Keyboard shortcuts for editing items and focusing and hiding different elements of the Zotero user interface
-* Right-click to save link or document as an attachment to currently selected item (only for Zotero as a Firefox addon)
Zutilo strives to enable whatever Zotero workflow is desired and otherwise to get out of the way.
All of Zutilo's graphical elements can be disabled individually, so that unwanted features do not clutter the user interface.
-**NOTE:** As of version 3.0, Zutilo is distributed from the [GitHub releases page](https://github.com/willsALMANJ/Zutilo/releases).
+**NOTE:** As of version 3.0, Zutilo is distributed from the [GitHub releases page](https://github.com/wshanks/Zutilo/releases).
New updates will not be published to the location checked by previous versions of Zutilo (the Mozilla Add-ons page).
To receive new Zutilo updates, please update to the latest version of Zutilo.
## Installation
-Download the Zutilo `zutilo.xpi` file from [Zutilo's GitHub releases page](https://github.com/willsALMANJ/Zutilo/releases).
+Download the Zutilo `zutilo.xpi` file from [Zutilo's GitHub releases page](https://github.com/wshanks/Zutilo/releases).
Then go to Tools->Add-ons in Zotero Standalone.
Click on the gear button in the upper right area of the Add-ons Manager window that appears and choose "Install Add-on From File."
Then select the downloaded `zutilo.xpi` file.
+**NOTE for Firefox users:** Firefox treats `.xpi` files as Firefox add-ons and tries to install them.
+Rather than clicking on the `.xpi` file, you can try right-clicking and choosing to save the link as a file.
+In some cases (particularly on Linux), Firefox does not allow right-clicking and saving the `.xpi` link either.
+In that case, you must download it either with a different browser or with a command-line tool like `curl` or `wget`.
+
## Getting started
-Zutilo can be customized via its preferences window, which can reached either via the Firefox Addons Manager or the Zotero action menu (the gear icon).
+Zutilo can be customized via its preferences window, which can reached via the Zotero Addons Manager or the Tools menu.
### Zotero item menu
@@ -41,18 +45,7 @@ All of the functions that can appear in the item menu can also be called by keyb
Zutilo also provides some additional keyboard shortcut functions that are not available from the item menu.
By default, no keyboard shortcuts are defined.
A shortcut key combination can be set for each function in Zutilo's preferences.
-If the key combination is already assigned for another Firefox function, a warning will be displayed.
-
-### Firefox specific functions
-
-Zutilo adds entries to the Zotero address bar icon's menu for saving items into Zotero with the opposite attachment behavior from that set in Zotero's preferences.
-So if you have Zotero set to download attachments when saving an item, Zutilo will add an entry to save the item without attachments.
-The extra menu items can be disabled in Zutilo's preferences.
-
-Zutilo adds two entries to right-click menu in Firefox, one to save the current page as an attachment (most useful when the page is a pdf) and another to save a link as an attachment (if a link was right-clicked).
-These menu items appear the Zotero submenu of the Firefox right-click menu.
-In Zutilo's preferences, the menu items can be set to appear in the right-click menu directly (instead of the Zotero submenu) or can be disabled.
-Whether the attachment files are imported to Zotero or downloaded and linked to Zotero items can be also be set in Zutilo's preferences.
+If the key combination is already assigned for another function, a warning will be displayed.
## Usage notes
diff --git a/i18n/zh-CN/readme/docs/BUGS.md b/i18n/zh-CN/readme/docs/BUGS.md
index 5c9b027..8fc37cb 100644
--- a/i18n/zh-CN/readme/docs/BUGS.md
+++ b/i18n/zh-CN/readme/docs/BUGS.md
@@ -1,7 +1,7 @@
# Bugs
-The latest source code for Zutilo is maintained on [GitHub](https://github.com/willsALMANJ/Zutilo "Zutilo's GitHub page").
-Bugs can be reported by clicking on the "New Issue" button under [the Issues section](https://github.com/willsALMANJ/Zutilo/issues "GitHub Issues page") of the GitHub site.
+The latest source code for Zutilo is maintained on [GitHub](https://github.com/wshanks/Zutilo "Zutilo's GitHub page").
+Bugs can be reported by clicking on the "New Issue" button under [the Issues section](https://github.com/wshanks/Zutilo/issues "GitHub Issues page") of the GitHub site.
You can also check there to see if a bug you experience has already been reported by another user.
Make sure to check the "closed" tab of the Issues section to see if the bug has already been addressed.
@@ -19,24 +19,19 @@ When submitting bug reports, please include the following:
1. Version of Zutilo used
2. Version of Zotero used
-3. Version of Firefox used (if applicable)
-4. Step-by-step instructions to reproduce the bug
+3. Step-by-step instructions to reproduce the bug
-The versions of Zutilo and Zotero can be looked up in the Addons Manager (`about:addons`) in Firefox.
-The version of Firefox can be found in `Help->About Firefox`.
For Zotero Standalone, the version of Zutilo can be found in `Tools->Addons` and the version of Zotero in `Help->About Zotero`.
-Additionally, if possible please provide any javascript errors that appear in the Browser Console when the bug occurs.
-The Browser Console can be opened with `Ctrl+Shift+J` (`Cmd+Shift+J` on OS X).
-Try to clear the output, reproduce the bug, and then check the Browswer Console to see if any messages related to Zutilo or Zotero appeared.
-While it is technically possible to open the Browser Console in Zotero Standalone, it is quite difficult to do.
-It is recommended to try to reproduce the bug in Firefox in order to check for Browser Console messages.
+Additionally, if possible please provide any javascript errors that appear in the Error Console when the bug occurs.
+The Error Console can be opened from the Tools->Developer menu.
+Try to clear the output, reproduce the bug, and then check the Error Console to see if any messages related to Zutilo or Zotero appeared.
# Feature requests
Feature requests may also be submitted by opening a new issue.
If you would like to contribute a patch, please open a new issue before submitting your code.
-A description of the kinds of features that are appropriate for Zutilo can be found on [the Zutilo wiki page](https://github.com/willsALMANJ/Zutilo/wiki).
+A description of the kinds of features that are appropriate for Zutilo can be found on [the Zutilo wiki page](https://github.com/wshanks/Zutilo/wiki).
A roadmap of planned features is also available on the wiki.
# Translation
diff --git a/i18n/zh-CN/readme/docs/COMMANDS.md b/i18n/zh-CN/readme/docs/COMMANDS.md
index 99296b4..d028def 100644
--- a/i18n/zh-CN/readme/docs/COMMANDS.md
+++ b/i18n/zh-CN/readme/docs/COMMANDS.md
@@ -1,6 +1,6 @@
### Item menu functions
-Each of the functions below can be called from the Zotero item menu (accessed by right-clicking in the items pane in the middle of Zotero where all of a collection's items are listed).
-In the Zutilo preferences (accessed from the same menu as Zotero's preferences), each of these functions can be set to show up in the Zotero item menu, in a Zutilo submenu of the Zotero item menu, or not to appear at all.
+Each of the functions below can be called from the Zotero item context menu (accessed by right-clicking in the items pane in the middle of Zotero where all of a collection's items are listed).
+In the Zutilo preferences (accessed from Zotero "Tools" menu), each of these functions can be set to show up in the Zotero item menu, in a Zutilo submenu of the Zotero item menu, or not to appear at all.
* __Copy tags:__
Right click items in the Zotero library and copy their tags to the clipboard as a '\r\n' delimited list.
@@ -42,34 +42,42 @@ In the Zutilo preferences (accessed from the same menu as Zotero's preferences),
Set all selected items to be related to each other.
* __QuickCopy items:__
- Copy selected items to the clipboard using the "Default output format" specified in the "Export" section of Zotero's preferences.
- There are also two alternative QuickCopy items (labeled "alt 1" and "alt 2").
- These items will copy to the clipboard using alternative export translators.
- To select the translators used by these functions, the corresponding preferences `extensions.zutilo.quickcopy_alt1` and `extensions.zutilo.quickcopy_alt2` must be set in the config editor.
- Each preference should be set to whatever appears in the config editor for the `export.quickCopy.setting` preference when the desired translator is set as the "Default output format" in Zotero's preferences.
- The config editor can be opened from the Advanced pane of Zotero's preferences window (or by visiting `about:config` if using Zotero as a Firefox add-on).
+ Copy selected items to the clipboard using the "Default output format" specified in the "Export" section of Zotero's preferences.
+ It is also possible to set alternative quick copy items.
+ By default, two such items are enabled, labeled "alt 1" and "alt 2".
+ Additional items can be enabled by changing the `extensions.zutilo.copyItems_alt_total` preference in the config editor.
+ These items will copy to the clipboard using alternative export translators.
+ To select the translators used by these functions, the corresponding preferences `extensions.zutilo.quickcopy_alt1`, `extensions.zutilo.quickcopy_alt2`, etc. must be set in the config editor.
+ Each preference should be set to whatever appears in the config editor for the `export.quickCopy.setting` preference when the desired translator is set as the "Default output format" in Zotero's preferences.
+ The config editor can be opened from the Advanced pane of Zotero's preferences window.
* __Copy select item links:__
- Copy links of the form "zotero://select/items/ITEM_ID" to the clipboard for each selected item.
- Pasting such a link into the Firefox address bar will select the corresponding item in the Zotero Firefox plugin.
- Following links from other applications and having the links select items in the Zotero Standalone client may also be achievable but might require additional set up.
+ Copy links of the form "zotero://select/library/items/ITEM_ID" to the clipboard for each selected item.
+ Following links from other applications can select items in the Zotero client but might require additional set up.
+
+* __Copy Zotero IDs:__
+ Copy the ID of each selected item to the clipboard.
* __Copy Zotero URIs:__
- Copy (www.zotero.org) links to the clipboard for each selected item.
- If you have a (www.zotero.org) profile, following such a link will open the page for the corresponding item in profile on (www.zotero.org).
- If you do not have a (www.zotero.org) profile, a placeholder link is still generated but might not be useful.
+ Copy (www.zotero.org) links to the clipboard for each selected item.
+ If you have a (www.zotero.org) profile, following such a link will open the page for the corresponding item in profile on (www.zotero.org).
+ If you do not have a (www.zotero.org) profile, a placeholder link is still generated but might not be useful.
+
+* __Open Zotero URIs:__
+ Open (www.zotero.org) links for each selected item.
+ See description for "Copy Zotero URIs".
* __Create book section:__
- Create a book section item from the currently selected book item.
+ Create a book section item from the currently selected book item.
- The new item is created by duplicating the book item and changing its type to book section.
- Author entries for the book item are converted to "book author" entries for the new book section item.
- The new book section item is added as a related item to the original book item.
- Finally, the title textbox for the new item is focused so that a new title for the book section may be entered.
+ The new item is created by duplicating the book item and changing its type to book section.
+ Author entries for the book item are converted to "book author" entries for the new book section item.
+ The new book section item is added as a related item to the original book item.
+ Finally, the title textbox for the new item is focused so that a new title for the book section may be entered.
- This function only works when a single book item is selected.
- Note that some fields (number of pages and short title, as of late 2014) apply only to book items and not book section items.
- There is no prompt to confirm this loss of fields from the created book section item.
+ This function only works when a single book item is selected.
+ Note that some fields (number of pages and short title, as of late 2014) apply only to book items and not book section items.
+ There is no prompt to confirm this loss of fields from the created book section item.
* __Create book item:__
Create a book item from teh currently selected book section item.
@@ -98,8 +106,33 @@ In the Zutilo preferences (accessed from the same menu as Zotero's preferences),
(‘Paste-non-empty’): paste where source has value.
Replaces authors if there is an author field in the pasted data.
-* __Paste all items fields__
- (Paste-all): paste all fields from source, even if they are empty.
+* __Paste all item fields__
+ (‘Paste-all’): Paste all item fields from source, even if they are empty.
+
+ To edit specific item fields, select a source item and use "Copy item fields".
+ Paste to a text editor, edit the JSON text, then copy the modified text back to the clipboard.
+ Finally, select the target items and use "Paste all item fields".
+ The `itemType` name/value pair needs to be kept in the JSON text because Zutilo uses its presence to decide whether to use the paste JSON commands in the context menu; its value is irrelevant for this function.
+ You can, e.g., clear the URL field in multiple items by pasting `{"itemType": "book", "url": ""}`, which will not change any item types.
+
+* __Paste item type__
+ (‘Paste-type’): Paste the item type of the source item to the target items.
+ This will not change item field values.
+ However, changing the type of a Zotero item modifies the list of its valid fields.
+ It's important to realize that data in invalid fields will be lost!
+
+### Collection menu functions
+Each of the functions below can be called from the Zotero collection context menu (accessed by right-clicking on a collection in the collections pane at the right of Zotero where all the collections are listed).
+In the Zutilo preferences (accessed from Zotero "Tools" menu), each of these functions can be set to show up in the Zotero item menu, in a Zutilo submenu of the Zotero item menu, or not to appear at all.
+
+* __Copy select collection link:__
+ Copy links of the form "zotero://select/library/collections/ITEM_ID" to the clipboard for the selected collection.
+ Following links from other applications can select the collection in the Zotero client but might require additional set up.
+
+* __Copy Zotero URI:__
+ Copy (www.zotero.org) link to the clipboard for the selected collection.
+ If you have a (www.zotero.org) profile, following such a link will open the page for the corresponding item in profile on (www.zotero.org).
+ If you do not have a (www.zotero.org) profile, a placeholder link is still generated but might not be useful.
### Navigating the UI and editing items via keyboard shortcuts
@@ -138,7 +171,7 @@ The following four functions are similar to the four item editing functions abov
* __Focus item pane: Related tab:__
Select the "Related" tab of the item pane.
-The following two functions allow you to cycle through the same four tags in the item pane.
+The following two functions allow you to cycle through the same four tabs in the item pane.
* __Focus item pane: next tab:__
Select next tab in item pane.
@@ -189,11 +222,14 @@ However, when the pane is shown, the thicker vertical divider ("splitter", "grip
* __Create parent item:__
Create a parent item for the currently selected attachment item that does not have a parent.
+* __Find available PDFs:__
+ Find available PDFs for selected items.
+
* __Rename attachments:__
Use the parent item's metadata to rename its attachments.
* __Retrieve metadata for pdf:__
- Try to look up the metadata for the selected stored pdf attachment in Google Scholar.
+ Try to look up the metadata for the selected stored pdf attachment.
### Miscellaneous functions
@@ -208,74 +244,22 @@ However, when the pane is shown, the thicker vertical divider ("splitter", "grip
* __Open New Item menu:__
Open the new item menu so that the type of new item to create can be selected from it.
-* __Open style editor:__
- Open the style editor window (normally accessible from the advanced section of Zotero's preferences).
-
-### Firefox browser shortcut functions
-
-The following shortcut functions are only available in the Zotero Firefox addon.
-
-* __Focus Zotero:__
- Make Zotero visible if it is not.
- Focus Zotero so that, e.g., `Tab` and the arrow keys work on the Zotero UI rather than the previously focused element of Firefox's UI.
-
-* __Hide Zotero:__
- Hide Zotero if it was visible.
-
-* __Toggle Zotero:__
- Show Zotero if it was not visible.
- Otherwise hide Zotero.
-
-* __Save webpage as a Zotero item:__
- Save the current page as a webpage item in Zotero.
+* __Open Run JavaScript window:__
+ Open the Run JavaScript window, which is also accessible through Zotero's "Tools" menu, by selecting "Developer" -> "Run JavaScript".
-* __Save item:__
- Add an item to the Zotero library based on the reference content of the current webpage (equivalent to clicking on the little page/book icon in the Firefox address bar).
- In Zotero, the function that creates the item from the web page content is referred to as a `translator`.
-
-* __Save item without attachments:__
- Create an item in a similar manner to "Save item" but __do not__ save attachment files for the item regardless of whether or not Zotero is set to save such attachments in its preferences.
-
-* __Save item with attachments:__
- Create an item in a similar manner to "Save item" but __do__ save attachment files for the item regardless of whether or not Zotero is set to save such attachments in its preferences.
-
-* __Save item (reverse attachment pref):__
- Create an item in a similar manner to "Save item" but only save attachments if Zotero is set not to save attachments in its preferences.
-
-* __Attach current page:__
- Attach the current browser page to the selected Zotero item.
- This function works best when the current web page is a PDF opened with Firefox's internal PDF viewer.
-
-### Firefox browser menu functions
-
-These functions add items to the Zotero "Save item" button's menu and to the Firefox right-click menu.
-Any of the menu items can be set to hidden in Zutilo's preferences.
-
-* __Attaching webpages and links to Zotero items:__
- Zutilo adds context menu items to Firefox for attaching the current page or the current link target (if a link is selected in the current web page) to the item currently selected in Zotero.
- Attaching the current web page is also available as a keyboard shortcut.
-
- How the attachment is processed depends on the attachment method set in Zutilo's preferences.
- If the method is 'Import', an imported attachment is created from the page/link.
- If the method is 'Prompt for linked file', a file prompt appears to allow the user to specify a new file.
- The page/link is saved to this file and then a linked file attachment (linked to the downloaded file) is created.
- If the method is 'Prompt after first', an imported attachment is created if the selected item has no previous attachments (not counting webpage snapshot attachments).
- Otherwise, the file prompt for creating a linked file attachment is shown.
- If the shift key is pressed when the attachment function is activated, a prompt for a linked file is shown regardless of Zutilo's preference setting.
- If the control key is pressed, the attachment is imported regardless of Zutilo's preference setting.
-
-* __Save item from a current webpage with or without attachments:__
- Zutilo adds extra menu items to the context menu of Zotero's "Save item" button that save an item for the current page with or without extracting the page's associated PDF's and other files.
- That is, if the "Automatically attach PDFs and other files" preference is selected in Zotero, Zutilo adds menu items for saving the item without attachments.
- One menu item is created for each "Save to Zotero" method that applies to the current page.
- If the preference is not selected, Zutilo adds menu items for saving an item with the attachments.
+* __Open style editor:__
+ Open the style editor window (normally accessible from the "Cite" tab of Zotero's preferences).
- This function works by toggling the associated files preference in Zotero, creating the item, and then toggling the preference back to its original state.
- Because Zotero translates pages asynchronously (and thus simultaneously), translations made with this function should be allowed to finish before starting normal page translations with Zotero (since otherwise the state of the "Associated files" preference will depend on the timing of the simultaneous translations).
+* __Locate item:__
+ Equivalent to using one of the Lookup engines from the Locate menu accessed from the top of the item pane.
+ The default engine is "Google Scholar Search".
+ To change the engine, modify the `extensions.zutilo.locateItemEngine` preference in the config editor.
+ The config editor can be opened from the Advanced pane of Zotero's preferences window.
+ For a list of valid engine names, select "Developer->Run JavaScript" from Zotero's "Tools" menu and enter and run this command: `Zotero.LocateManager.getVisibleEngines().map(engine => engine.name)`.
### Better BibTeX functions
-The following functions are only available when [Better BibTeX](https://github.com/retorquere/zotero-better-bibtex) is installed (and only for Zotero version 5.0 or higher).
+The following functions are only available when [Better BibTeX](https://github.com/retorquere/zotero-better-bibtex) is installed.
* __Pin key:__ Pin the key for the currently selected items.
@@ -283,4 +267,14 @@ The following functions are only available when [Better BibTeX](https://github.c
* __Force-refresh key:__ Force-refresh the key for the currently selected items.
+* __Push to TeXstudio:__ Push references to TeXstudio.
+
+### ZotFile functions
+
+The following functions are only available when [ZotFile](zotfile.com) is installed.
+
+* __Attach new file:__ Attach the newest file in the ZotFile source directory to the currently selected item.
+
+* __Move and rename attachments:__ Move and rename the files associated with the currently selected attachments to following the format configured in ZotFile's preferences.
+* __Extract annotations:__ Trigger ZotFile's "Extract Annotations" function.
diff --git a/i18n/zh-CN/readme/docs/DEVELOPERS.md b/i18n/zh-CN/readme/docs/DEVELOPERS.md
index 74be237..29c5a7a 100644
--- a/i18n/zh-CN/readme/docs/DEVELOPERS.md
+++ b/i18n/zh-CN/readme/docs/DEVELOPERS.md
@@ -15,7 +15,7 @@ The `make` machinery is mainly used for converting the README files from `markdo
Most of the Zutilo logic is contained in the files in `addon/chrome/content/zutilo`.
The highlights are:
-* `zutilo.jsm`
+* `zutilo.js`
- `addon/bootstrap.js` loads this file when Zutilo starts up and it handles the rest of the Zutilo setup.
- This file defines the `Zutilo` module.
- The `Zutilo` module contains properties about Zutilo that are window independent.
@@ -27,9 +27,6 @@ The highlights are:
* `zoteroOverlay.js`
- Contains all of the functions that extend Zotero's UI and all of the Zutilo defined functions that interact with Zotero data
-* `firefoxOverlay.js`
- - Contains all of the functions that are specific to the Firefox version of Zotero (e.g. functions that interact with the browser content)
-
* `keys.js`
- Defines all of Zutilo's keyboard shortcut functions
- To define a new shortcut:
diff --git a/i18n/zh-CN/readme/docs/USAGE.md b/i18n/zh-CN/readme/docs/USAGE.md
index ff9dfa2..a20d828 100644
--- a/i18n/zh-CN/readme/docs/USAGE.md
+++ b/i18n/zh-CN/readme/docs/USAGE.md
@@ -6,7 +6,7 @@ Zotero can work with either imported attachments, stored in Zotero's storage and
When storing attachments as linked files, the relative attachment paths feature in Zotero can be useful.
With this feature, a base attachment directory is selected and then any linked file attachments in this directory are saved with paths relative to this path.
Because these paths are relative, you can move all your attachments to a new directory and all you have to do is update this base directory setting in Zotero rather than updating the path to each individual attachment.
-If you use more than computer, you can set the base attachment directory to a different location on each machine (e.g. a DropBox or SyncThing folder) and still have all of the links to attachments work by setting this preference to the right location on each machine.
+If you use more than one computer, you can set the base attachment directory to a different location on each machine (e.g. a DropBox or SyncThing folder) and still have all of the links to attachments work by setting this preference to the right location on each machine.
Relative attachment paths can be configured under the "Files and Folders" tab of the Advanced Section of Zotero's preferences.
#### Linked file attachment organization (ZotFile)
@@ -17,14 +17,6 @@ This feature makes maintaining a directory of linked file attachments as easy as
You can, for example, have ZotFile store attachments in directories named after the journal with a subfolder for the publication year and then name the attachment file after the author and title of the work.
ZotFile has several other features for working with attachments that are worth investigating in its documentation.
-#### Attaching browser content to item
-
-Zutilo provides functions for attaching a web link or the current web page to the currently selected item.
-In Zutilo's preferences, these functions can be set to create either imported or linked file attachments, or to import the first attachment for an item and then prompt for linked files after that.
-Note that Zutilo's linked file attachment method triggers ZotFile, so, if ZotFile is set up to rename and move attachments, it will rename and move the ones saved this way no matter where you choose to save them with Zutilo's prompt.
-ZotFile has a "only ask if item has other attachments" option.
-This option works well with the Zutilo option to prompt for the location of attachments after the first.
-
### Item field modification functions
Zutilo provides several functions for copying and pasting item fields.
@@ -54,11 +46,11 @@ However, the name of the journal and the year of the volume are incorrect.
3. Paste-non-empty the target records. This copies all non-empty fields from the source onto the target.
-As a result, the target records now all have the same Journal name and the same name (irrespective of the prior setting).
+As a result, the target records now all have the same Journal name and the same year (irrespective of the prior setting).
#### Copying authors
-Copy+Paste-into-empty, Copy+Paste-non-empty and Copy+Paste-non-empty behave differently with regard to copying authors.
+Copy+Paste-into-empty, Copy+Paste-non-empty and Copy+Paste-all behave differently with regard to copying authors.
* Copy+Paste-into-empty merges additional authors: Authors present in the source are added to the target.
diff --git a/jsconfig.json b/jsconfig.json
new file mode 100644
index 0000000..454de63
--- /dev/null
+++ b/jsconfig.json
@@ -0,0 +1,8 @@
+{
+ "compilerOptions": {
+ "target": "es6"
+ },
+ "exclude": [
+ "node_modules"
+ ]
+}
diff --git a/package-lock.json b/package-lock.json
index 2289be2..4a24300 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,63 +1,86 @@
{
"name": "zutilo",
- "version": "3.1.1",
+ "version": "4.0.1",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"@babel/code-frame": {
- "version": "7.5.5",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz",
- "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==",
+ "version": "7.10.1",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.1.tgz",
+ "integrity": "sha512-IGhtTmpjGbYzcEDOw7DcQtbQSXcG9ftmAXtWTu9V936vDye4xjjekktFAtgZsWpzTj/X01jocB46mTywm/4SZw==",
"dev": true,
"requires": {
- "@babel/highlight": "^7.0.0"
+ "@babel/highlight": "^7.10.1"
}
},
+ "@babel/helper-validator-identifier": {
+ "version": "7.10.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.1.tgz",
+ "integrity": "sha512-5vW/JXLALhczRCWP0PnFDMCJAchlBvM7f4uk/jXritBnIa6E1KmqmtrS3yn1LAnxFBypQ3eneLuXjsnfQsgILw==",
+ "dev": true
+ },
"@babel/highlight": {
- "version": "7.5.0",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz",
- "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==",
+ "version": "7.10.1",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.1.tgz",
+ "integrity": "sha512-8rMof+gVP8mxYZApLF/JgNDAkdKa+aJt3ZYxF8z6+j/hpeXL7iMsKCPHa2jNMHu/qqBwzQF4OHNoYi8dMA/rYg==",
"dev": true,
"requires": {
+ "@babel/helper-validator-identifier": "^7.10.1",
"chalk": "^2.0.0",
- "esutils": "^2.0.2",
"js-tokens": "^4.0.0"
}
},
+ "@types/color-name": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz",
+ "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==",
+ "dev": true
+ },
"acorn": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.0.0.tgz",
- "integrity": "sha512-PaF/MduxijYYt7unVGRuds1vBC9bFxbNf+VWqhOClfdgy7RlVkQqt610ig1/yxTgsDIfW1cWDel5EBbOy3jdtQ==",
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.2.0.tgz",
+ "integrity": "sha512-apwXVmYVpQ34m/i71vrApRrRKCWQnZZF1+npOD0WV5xZFfwWOmKGQ2RWlfdy9vWITsenisM8M0Qeq8agcFHNiQ==",
"dev": true
},
"acorn-jsx": {
- "version": "5.0.2",
- "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.2.tgz",
- "integrity": "sha512-tiNTrP1MP0QrChmD2DdupCr6HWSFeKVw5d/dHTu4Y7rkAkRhU/Dt7dphAfIUyxtHpl/eBVip5uTNSpQJHylpAw==",
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz",
+ "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==",
"dev": true
},
"ajv": {
- "version": "6.10.2",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz",
- "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==",
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
"dev": true,
"requires": {
- "fast-deep-equal": "^2.0.1",
+ "fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
"json-schema-traverse": "^0.4.1",
"uri-js": "^4.2.2"
}
},
"ansi-escapes": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz",
- "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==",
- "dev": true
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz",
+ "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==",
+ "dev": true,
+ "requires": {
+ "type-fest": "^0.11.0"
+ },
+ "dependencies": {
+ "type-fest": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz",
+ "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==",
+ "dev": true
+ }
+ }
},
"ansi-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
- "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"dev": true
},
"ansi-styles": {
@@ -124,18 +147,18 @@
"dev": true
},
"cli-cursor": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
- "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
+ "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
"dev": true,
"requires": {
- "restore-cursor": "^2.0.0"
+ "restore-cursor": "^3.1.0"
}
},
"cli-width": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz",
- "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=",
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz",
+ "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==",
"dev": true
},
"color-convert": {
@@ -205,9 +228,9 @@
}
},
"emoji-regex": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
- "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
"dev": true
},
"escape-string-regexp": {
@@ -217,9 +240,9 @@
"dev": true
},
"eslint": {
- "version": "6.2.2",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.2.2.tgz",
- "integrity": "sha512-mf0elOkxHbdyGX1IJEUsNBzCDdyoUgljF3rRlgfyYh0pwGnreLc0jjD6ZuleOibjmnUWZLY2eXwSooeOgGJ2jw==",
+ "version": "6.8.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz",
+ "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==",
"dev": true,
"requires": {
"@babel/code-frame": "^7.0.0",
@@ -229,19 +252,19 @@
"debug": "^4.0.1",
"doctrine": "^3.0.0",
"eslint-scope": "^5.0.0",
- "eslint-utils": "^1.4.2",
+ "eslint-utils": "^1.4.3",
"eslint-visitor-keys": "^1.1.0",
- "espree": "^6.1.1",
+ "espree": "^6.1.2",
"esquery": "^1.0.1",
"esutils": "^2.0.2",
"file-entry-cache": "^5.0.1",
"functional-red-black-tree": "^1.0.1",
"glob-parent": "^5.0.0",
- "globals": "^11.7.0",
+ "globals": "^12.1.0",
"ignore": "^4.0.6",
"import-fresh": "^3.0.0",
"imurmurhash": "^0.1.4",
- "inquirer": "^6.4.1",
+ "inquirer": "^7.0.0",
"is-glob": "^4.0.0",
"js-yaml": "^3.13.1",
"json-stable-stringify-without-jsonify": "^1.0.1",
@@ -250,7 +273,7 @@
"minimatch": "^3.0.4",
"mkdirp": "^0.5.1",
"natural-compare": "^1.4.0",
- "optionator": "^0.8.2",
+ "optionator": "^0.8.3",
"progress": "^2.0.0",
"regexpp": "^2.0.1",
"semver": "^6.1.2",
@@ -272,12 +295,12 @@
}
},
"eslint-utils": {
- "version": "1.4.2",
- "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.2.tgz",
- "integrity": "sha512-eAZS2sEUMlIeCjBeubdj45dmBHQwPHWyBcT1VSYB7o9x9WRRqKxyUoiXlRjyAwzN7YEzHJlYg0NmzDRWx6GP4Q==",
+ "version": "1.4.3",
+ "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz",
+ "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==",
"dev": true,
"requires": {
- "eslint-visitor-keys": "^1.0.0"
+ "eslint-visitor-keys": "^1.1.0"
}
},
"eslint-visitor-keys": {
@@ -287,13 +310,13 @@
"dev": true
},
"espree": {
- "version": "6.1.1",
- "resolved": "https://registry.npmjs.org/espree/-/espree-6.1.1.tgz",
- "integrity": "sha512-EYbr8XZUhWbYCqQRW0duU5LxzL5bETN6AjKBGy1302qqzPaCH10QbRg3Wvco79Z8x9WbiE8HYB4e75xl6qUYvQ==",
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz",
+ "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==",
"dev": true,
"requires": {
- "acorn": "^7.0.0",
- "acorn-jsx": "^5.0.2",
+ "acorn": "^7.1.1",
+ "acorn-jsx": "^5.2.0",
"eslint-visitor-keys": "^1.1.0"
}
},
@@ -304,12 +327,20 @@
"dev": true
},
"esquery": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz",
- "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==",
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz",
+ "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==",
"dev": true,
"requires": {
- "estraverse": "^4.0.0"
+ "estraverse": "^5.1.0"
+ },
+ "dependencies": {
+ "estraverse": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.1.0.tgz",
+ "integrity": "sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw==",
+ "dev": true
+ }
}
},
"esrecurse": {
@@ -345,15 +376,15 @@
}
},
"fast-deep-equal": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
- "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=",
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz",
+ "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==",
"dev": true
},
"fast-json-stable-stringify": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
- "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
"dev": true
},
"fast-levenshtein": {
@@ -363,9 +394,9 @@
"dev": true
},
"figures": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
- "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=",
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz",
+ "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==",
"dev": true,
"requires": {
"escape-string-regexp": "^1.0.5"
@@ -392,9 +423,9 @@
}
},
"flatted": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz",
- "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==",
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz",
+ "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==",
"dev": true
},
"fs.realpath": {
@@ -410,9 +441,9 @@
"dev": true
},
"glob": {
- "version": "7.1.4",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz",
- "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==",
+ "version": "7.1.6",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
+ "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
"dev": true,
"requires": {
"fs.realpath": "^1.0.0",
@@ -424,19 +455,22 @@
}
},
"glob-parent": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.0.0.tgz",
- "integrity": "sha512-Z2RwiujPRGluePM6j699ktJYxmPpJKCfpGA13jz2hmFZC7gKetzrWvg5KN3+OsIFmydGyZ1AVwERCq1w/ZZwRg==",
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
"dev": true,
"requires": {
"is-glob": "^4.0.1"
}
},
"globals": {
- "version": "11.12.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
- "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
- "dev": true
+ "version": "12.4.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz",
+ "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==",
+ "dev": true,
+ "requires": {
+ "type-fest": "^0.8.1"
+ }
},
"has-flag": {
"version": "3.0.0",
@@ -460,9 +494,9 @@
"dev": true
},
"import-fresh": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.1.0.tgz",
- "integrity": "sha512-PpuksHKGt8rXfWEr9m9EHIpgyyaltBy8+eF6GJM0QCAxMgxCfucMF3mjecK2QsJr0amJW7gTqh5/wht0z2UhEQ==",
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz",
+ "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==",
"dev": true,
"requires": {
"parent-module": "^1.0.0",
@@ -492,24 +526,85 @@
"dev": true
},
"inquirer": {
- "version": "6.5.2",
- "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz",
- "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==",
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.1.0.tgz",
+ "integrity": "sha512-5fJMWEmikSYu0nv/flMc475MhGbB7TSPd/2IpFV4I4rMklboCH2rQjYY5kKiYGHqUF9gvaambupcJFFG9dvReg==",
"dev": true,
"requires": {
- "ansi-escapes": "^3.2.0",
- "chalk": "^2.4.2",
- "cli-cursor": "^2.1.0",
+ "ansi-escapes": "^4.2.1",
+ "chalk": "^3.0.0",
+ "cli-cursor": "^3.1.0",
"cli-width": "^2.0.0",
"external-editor": "^3.0.3",
- "figures": "^2.0.0",
- "lodash": "^4.17.12",
- "mute-stream": "0.0.7",
- "run-async": "^2.2.0",
- "rxjs": "^6.4.0",
- "string-width": "^2.1.0",
- "strip-ansi": "^5.1.0",
+ "figures": "^3.0.0",
+ "lodash": "^4.17.15",
+ "mute-stream": "0.0.8",
+ "run-async": "^2.4.0",
+ "rxjs": "^6.5.3",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0",
"through": "^2.3.6"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz",
+ "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==",
+ "dev": true,
+ "requires": {
+ "@types/color-name": "^1.1.1",
+ "color-convert": "^2.0.1"
+ }
+ },
+ "chalk": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
+ "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true
+ },
+ "strip-ansi": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
+ "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^5.0.0"
+ }
+ },
+ "supports-color": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz",
+ "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
}
},
"is-extglob": {
@@ -519,9 +614,9 @@
"dev": true
},
"is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
"dev": true
},
"is-glob": {
@@ -533,12 +628,6 @@
"is-extglob": "^2.1.1"
}
},
- "is-promise": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz",
- "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=",
- "dev": true
- },
"isexe": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
@@ -552,9 +641,9 @@
"dev": true
},
"js-yaml": {
- "version": "3.13.1",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
- "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
+ "version": "3.14.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz",
+ "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==",
"dev": true,
"requires": {
"argparse": "^1.0.7",
@@ -584,39 +673,39 @@
}
},
"lodash": {
- "version": "4.17.15",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
- "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==",
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
"dev": true
},
"mimic-fn": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
- "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
"dev": true
},
"minimatch": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
- "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"dev": true,
"requires": {
"brace-expansion": "^1.1.7"
}
},
"minimist": {
- "version": "0.0.8",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
- "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
+ "version": "1.2.6",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
+ "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==",
"dev": true
},
"mkdirp": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
- "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
+ "version": "0.5.5",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
+ "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
"dev": true,
"requires": {
- "minimist": "0.0.8"
+ "minimist": "^1.2.5"
}
},
"ms": {
@@ -626,9 +715,9 @@
"dev": true
},
"mute-stream": {
- "version": "0.0.7",
- "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
- "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=",
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz",
+ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
"dev": true
},
"natural-compare": {
@@ -653,26 +742,26 @@
}
},
"onetime": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
- "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz",
+ "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==",
"dev": true,
"requires": {
- "mimic-fn": "^1.0.0"
+ "mimic-fn": "^2.1.0"
}
},
"optionator": {
- "version": "0.8.2",
- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz",
- "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=",
+ "version": "0.8.3",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
+ "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
"dev": true,
"requires": {
"deep-is": "~0.1.3",
- "fast-levenshtein": "~2.0.4",
+ "fast-levenshtein": "~2.0.6",
"levn": "~0.3.0",
"prelude-ls": "~1.1.2",
"type-check": "~0.3.2",
- "wordwrap": "~1.0.0"
+ "word-wrap": "~1.2.3"
}
},
"os-tmpdir": {
@@ -733,12 +822,12 @@
"dev": true
},
"restore-cursor": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
- "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
+ "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
"dev": true,
"requires": {
- "onetime": "^2.0.0",
+ "onetime": "^5.1.0",
"signal-exit": "^3.0.2"
}
},
@@ -752,18 +841,15 @@
}
},
"run-async": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz",
- "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=",
- "dev": true,
- "requires": {
- "is-promise": "^2.1.0"
- }
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz",
+ "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==",
+ "dev": true
},
"rxjs": {
- "version": "6.5.2",
- "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.2.tgz",
- "integrity": "sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg==",
+ "version": "6.5.5",
+ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz",
+ "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==",
"dev": true,
"requires": {
"tslib": "^1.9.0"
@@ -797,9 +883,9 @@
"dev": true
},
"signal-exit": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
- "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz",
+ "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==",
"dev": true
},
"slice-ansi": {
@@ -811,6 +897,14 @@
"ansi-styles": "^3.2.0",
"astral-regex": "^1.0.0",
"is-fullwidth-code-point": "^2.0.0"
+ },
+ "dependencies": {
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true
+ }
}
},
"sprintf-js": {
@@ -820,22 +914,23 @@
"dev": true
},
"string-width": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
- "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz",
+ "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==",
"dev": true,
"requires": {
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^4.0.0"
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.0"
},
"dependencies": {
"strip-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
- "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
+ "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
"dev": true,
"requires": {
- "ansi-regex": "^3.0.0"
+ "ansi-regex": "^5.0.0"
}
}
}
@@ -850,17 +945,17 @@
},
"dependencies": {
"ansi-regex": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
- "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
+ "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
"dev": true
}
}
},
"strip-json-comments": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz",
- "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.0.tgz",
+ "integrity": "sha512-e6/d0eBu7gHtdCqFt0xJr642LdToM5/cN4Qb9DbHjVx1CP5RyeM+zH7pbecEmDv/lBqb0QH+6Uqq75rxFPkM0w==",
"dev": true
},
"supports-color": {
@@ -884,6 +979,18 @@
"string-width": "^3.0.0"
},
"dependencies": {
+ "emoji-regex": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
+ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true
+ },
"string-width": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
@@ -919,9 +1026,9 @@
}
},
"tslib": {
- "version": "1.10.0",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz",
- "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==",
+ "version": "1.13.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz",
+ "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==",
"dev": true
},
"type-check": {
@@ -933,6 +1040,12 @@
"prelude-ls": "~1.1.2"
}
},
+ "type-fest": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
+ "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
+ "dev": true
+ },
"uri-js": {
"version": "4.2.2",
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
@@ -957,10 +1070,10 @@
"isexe": "^2.0.0"
}
},
- "wordwrap": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
- "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
+ "word-wrap": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
+ "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
"dev": true
},
"wrappy": {
diff --git a/package.json b/package.json
index 5dcf5bd..183f034 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "zutilo",
- "version": "3.1.1",
+ "version": "4.0.1",
"description": "Zotero plugin providing some additional editing features",
"main": "index.js",
"directories": {
@@ -11,7 +11,7 @@
},
"repository": {
"type": "git",
- "url": "git+https://github.com/willsALMANJ/Zutilo.git"
+ "url": "git+https://github.com/wshanks/Zutilo.git"
},
"keywords": [
"Zotero"
@@ -19,9 +19,9 @@
"author": "Will Shanks",
"license": "MPL-2.0",
"bugs": {
- "url": "https://github.com/willsALMANJ/Zutilo/issues"
+ "url": "https://github.com/wshanks/Zutilo/issues"
},
- "homepage": "https://github.com/willsALMANJ/Zutilo#readme",
+ "homepage": "https://github.com/wshanks/Zutilo#readme",
"devDependencies": {
"eslint": "^6.1.0"
}
diff --git a/scripts/babelzilla/Add_external_locale_files.py b/scripts/babelzilla/Add_external_locale_files.py
deleted file mode 100755
index a6f24ef..0000000
--- a/scripts/babelzilla/Add_external_locale_files.py
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/usr/bin/env python
-
-# Save an html version of Zutilo's readme without
flags and with
-# flags changed to
-import os, sys
-import os.path
-import shutil
-
-zutiloDir = os.path.dirname(os.path.realpath(sys.argv[0])) + '/../../'
-internalLocales = zutiloDir + 'chrome/locale/'
-externalLocale = zutiloDir + 'Extra/locale/'
-internalSubdirectory = 'zutilo'
-ignoredFiles = ['.DS_Store']
-
-locales = [name for name in os.listdir(externalLocale)
- if os.path.isdir(os.path.join(externalLocale, name))]
-
-for locale in locales:
- extLocaleDir = os.path.join(externalLocale, locale)
- files = [name for name in os.listdir(extLocaleDir)
- if os.path.isfile(os.path.join(extLocaleDir, name))]
-
- intLocaleDir = os.path.join(internalLocales, locale)
- intLocaleDir = os.path.join(intLocaleDir, internalSubdirectory)
- for file0 in files:
- if file0 not in ignoredFiles:
- shutil.copy(os.path.join(extLocaleDir, file0), intLocaleDir)
diff --git a/scripts/babelzilla/README.md b/scripts/babelzilla/README.md
deleted file mode 100644
index 2a0b948..0000000
--- a/scripts/babelzilla/README.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# BabelZilla scripts
-The purpose of these scripts is to copy locale files not included in the Zutilo `xpi` file into the addon directory, so that they would be included in the Zutilo `xpi` (and then also to remove).
-The reason for doing this is that BabelZilla only accepts `xpi` files, so if you want strings to be translated they have to be formated as addon locale strings.
-Zutilo has some auxiliary strings like the captions for the figures shown (addons.mozilla.org) which also need to be translated, so those have to be copied into the `xpi` file for BabelZilla to include them.
-
-__NOTE:__ These scripts are out of date because BabelZilla has not been used to translate Zutilo in a long time. They could be updated if anyone wanted to translate Zutilo using BabelZilla.
diff --git a/scripts/babelzilla/Remove_external_locale_files.py b/scripts/babelzilla/Remove_external_locale_files.py
deleted file mode 100755
index 1e3fd5f..0000000
--- a/scripts/babelzilla/Remove_external_locale_files.py
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/usr/bin/env python
-
-import os, sys
-import os.path
-
-zutiloDir = os.path.dirname(os.path.realpath(sys.argv[0])) + '/../../'
-internalLocales = zutiloDir + 'chrome/locale/'
-externalLocale = zutiloDir + 'Extra/locale/'
-internalSubdirectory = 'zutilo'
-ignoredFiles = ['.DS_Store']
-
-locales = [name for name in os.listdir(externalLocale)
- if os.path.isdir(os.path.join(externalLocale, name))]
-
-for locale in locales:
- extLocaleDir = os.path.join(externalLocale, locale)
- files = [name for name in os.listdir(extLocaleDir)
- if os.path.isfile(os.path.join(extLocaleDir, name))]
-
- intLocaleDir = os.path.join(internalLocales, locale)
- intLocaleDir = os.path.join(intLocaleDir, internalSubdirectory)
- for file0 in files:
- if file0 not in ignoredFiles:
- os.remove(os.path.join(intLocaleDir, file0))
diff --git a/zotero7_todo.txt b/zotero7_todo.txt
new file mode 100644
index 0000000..eadf190
--- /dev/null
+++ b/zotero7_todo.txt
@@ -0,0 +1,3 @@
+* Localize name and description in manifest.json
+* Find out if updates.json needs a separate entry for Juris-M
+* Test if deploy/config.yaml changes bump the version numbers properly