Reader 2.0

This commit is contained in:
Martynas Bagdonas 2023-01-26 17:01:27 +00:00 committed by Dan Stillman
parent 19382a061f
commit 681cdd809f
10 changed files with 846 additions and 1253 deletions

4
.gitmodules vendored
View file

@ -31,8 +31,8 @@
url = https://github.com/gildas-lormeau/SingleFile.git
[submodule "pdf-reader"]
path = pdf-reader
url = https://github.com/zotero/pdf-reader.git
branch = master
url = https://github.com/zotero/pdf-reader2.git
branch = reader2
[submodule "pdf-worker"]
path = pdf-worker
url = https://github.com/zotero/pdf-worker.git

View file

@ -117,7 +117,7 @@ var ZoteroContextPane = new function () {
_itemToggle.addEventListener('click', _toggleItemButton);
_notesToggle.addEventListener('click', _toggleNotesButton);
Zotero.Reader.onChangeSidebarWidth = _updatePaneWidth;
Zotero.Reader.onChangeSidebarOpen = _updatePaneWidth;
Zotero.Reader.onToggleSidebar = _updatePaneWidth;
};
this.destroy = function () {
@ -126,7 +126,7 @@ var ZoteroContextPane = new function () {
window.removeEventListener('resize', _update);
Zotero.Notifier.unregisterObserver(this._notifierID);
Zotero.Reader.onChangeSidebarWidth = () => {};
Zotero.Reader.onChangeSidebarOpen = () => {};
Zotero.Reader.onToggleSidebar = () => {};
_contextPaneInner.innerHTML = '';
_itemContexts = [];
_notesContexts = [];

View file

@ -90,9 +90,9 @@
<menu id="fileMenu" label="&fileMenu.label;" accesskey="&fileMenu.accesskey;">
<menupopup id="menu_FilePopup">
<!-- TODO: Localize -->
<menuitem label="Save As…" oncommand="menuCmd('export')"/>
<menuitem label="Print" oncommand="menuCmd('print')"/>
<menuitem label="&zotero.items.menu.showInLibrary;" oncommand="menuCmd('showInLibrary')"/>
<menuitem class="menu-type-reader pdf" label="Save As…" oncommand="reader.export()"/>
<menuitem label="Print" oncommand="reader.print()"/>
<menuitem label="&zotero.items.menu.showInLibrary;" oncommand="reader.showInLibrary()"/>
<menuseparator/>
<menuitem id="menu_close" label="&closeCmd.label;" key="key_close"
accesskey="&closeCmd.accesskey;" command="cmd_close"/>
@ -124,25 +124,19 @@
<menuitem id="menu_selectAll"
key="key_selectAll"
command="cmd_selectAll" data-l10n-id="text-action-select-all"/>
<menuseparator class="menu-type-reader"/>
<menuseparator class="menu-type-reader pdf"/>
<menuitem
id="edit-menuitem-rotate-left"
class="menu-type-reader"
class="menu-type-reader pdf"
label="&zotero.pdfReader.rotatePageLeft;"
oncommand="menuCmd('rotateLeft')"
oncommand="reader.rotatePageLeft()"
/>
<menuitem
id="edit-menuitem-rotate-right"
class="menu-type-reader"
class="menu-type-reader pdf"
label="&zotero.pdfReader.rotatePageRight;"
oncommand="menuCmd('rotateRight')"
oncommand="reader.rotatePageRight()"
/>
<!--<menuitem
id="edit-menuitem-rotate-180"
class="menu-type-reader"
label="&zotero.pdfReader.rotatePage180;"
oncommand="menuCmd('rotate180')"
/>-->
</menupopup>
</menu>
<menu label="View" onpopupshowing="onViewMenuOpen()">
@ -153,93 +147,105 @@
full-screen-api.allow-trusted-requests-only=false
and then hide all other visible window elements like toolbar, note sidebar, tabs, etc.
-->
<!-- <menuitem label="Switch to Presentation Mode" oncommand="menuCmd('presentationmode')"/>-->
<!-- <menuseparator/>-->
<menuitem
id="view-menuitem-hand-tool"
class="menu-type-reader pdf"
label="&zotero.pdfReader.handTool;"
type="checkbox"
oncommand="menuCmd('switchcursortool_hand')"
oncommand="reader.toggleHandTool()"
/>
<menuseparator/>
<menuseparator class="menu-type-reader pdf"/>
<menuitem
id="view-menuitem-vertical-scrolling"
class="menu-type-reader pdf"
label="&zotero.pdfReader.verticalScrolling;"
type="checkbox"
oncommand="menuCmd('switchscrollmode_vertical')"
oncommand="reader.scrollMode = 0"
/>
<menuitem
id="view-menuitem-horizontal-scrolling"
class="menu-type-reader pdf"
label="&zotero.pdfReader.horizontalScrolling;"
type="checkbox"
oncommand="menuCmd('switchscrollmode_horizontal')"
oncommand="reader.scrollMode = 1"
/>
<menuitem
id="view-menuitem-wrapped-scrolling"
class="menu-type-reader pdf"
label="&zotero.pdfReader.wrappedScrolling;"
type="checkbox"
oncommand="menuCmd('switchscrollmode_wrapped')"
oncommand="reader.scrollMode = 2"
/>
<menuseparator/>
<menuseparator class="menu-type-reader pdf"/>
<menuitem
id="view-menuitem-no-spreads"
class="menu-type-reader pdf"
label="&zotero.pdfReader.noSpreads;"
type="checkbox"
oncommand="menuCmd('switchspreadmode_none')"
oncommand="reader.spreadMode = 0"
/>
<menuitem
id="view-menuitem-odd-spreads"
class="menu-type-reader pdf"
label="&zotero.pdfReader.oddSpreads;"
type="checkbox"
oncommand="menuCmd('switchspreadmode_odd')"
oncommand="reader.spreadMode = 1"
/>
<menuitem
id="view-menuitem-even-spreads"
class="menu-type-reader pdf"
label="&zotero.pdfReader.evenSpreads;"
type="checkbox"
oncommand="menuCmd('switchspreadmode_even')"
oncommand="reader.spreadMode = 2"
/>
<menuseparator class="menu-type-reader"/>
<menuitem
id="view-menuitem-zoom-in"
class="menu-type-reader"
label="&zotero.pdfReader.zoomIn;"
oncommand="menuCmd('zoomIn')"
oncommand="reader.zoomIn()"
/>
<menuitem
id="view-menuitem-zoom-out"
class="menu-type-reader"
label="&zotero.pdfReader.zoomOut;"
oncommand="menuCmd('zoomOut')"
oncommand="reader.zoomOut()"
/>
<menuitem
id="view-menuitem-zoom-auto"
class="menu-type-reader pdf"
type="checkbox"
label="&zotero.pdfReader.zoomAuto;"
oncommand="menuCmd('zoomAuto')"
oncommand="reader.zoomAuto()"
/>
<menuitem
id="view-menuitem-zoom-page-width"
class="menu-type-reader pdf"
type="checkbox"
label="&zotero.pdfReader.zoomPageWidth;"
oncommand="menuCmd('zoomPageWidth')"
oncommand="reader.zoomPageWidth()"
/>
<menuitem
id="view-menuitem-zoom-page-height"
class="menu-type-reader pdf"
type="checkbox"
label="&zotero.pdfReader.zoomPageHeight;"
oncommand="menuCmd('zoomPageHeight')"
oncommand="reader.zoomPageHeight()"
/>
<menuseparator class="menu-type-reader"/>
<menuitem
id="view-menuitem-split-horizontally"
type="checkbox"
label="&zotero.pdfReader.splitHorizontally;"
oncommand="menuCmd('splitHorizontally')"
id="view-menuitem-split-horizontally"
class="menu-type-reader"
type="checkbox"
label="&zotero.pdfReader.splitHorizontally;"
oncommand="reader.toggleHorizontalSplit()"
/>
<menuitem
id="view-menuitem-split-vertically"
type="checkbox"
label="&zotero.pdfReader.splitVertically;"
oncommand="menuCmd('splitVertically')"
id="view-menuitem-split-vertically"
class="menu-type-reader"
type="checkbox"
label="&zotero.pdfReader.splitVertically;"
oncommand="reader.toggleVerticalSplit()"
/>
</menupopup>
</menu>
@ -252,28 +258,28 @@
<menupopup id="menu_goPopup">
<menuitem
id="go-menuitem-first-page"
class="menu-type-reader"
class="menu-type-reader pdf epub"
label="&zotero.pdfReader.firstPage;"
oncommand="menuCmd('firstpage')"
oncommand="reader.navigateToFirstPage()"
/>
<menuitem
id="go-menuitem-last-page"
class="menu-type-reader"
class="menu-type-reader pdf epub"
label="&zotero.pdfReader.lastPage;"
oncommand="menuCmd('lastpage')"
oncommand="reader.navigateToLastPage()"
/>
<menuseparator class="menu-type-reader"/>
<menuitem
id="go-menuitem-back"
class="menu-type-reader"
label="&zotero.pdfReader.back;"
oncommand="menuCmd('back')"
oncommand="reader.navigateBack()"
/>
<menuitem
id="go-menuitem-forward"
class="menu-type-reader"
label="&zotero.pdfReader.forward;"
oncommand="menuCmd('forward')"
oncommand="reader.navigateForward()"
/>
</menupopup>
</menu>
@ -312,7 +318,7 @@
type="content"
primary="true"
transparent="transparent"
src="resource://zotero/pdf-reader/viewer.html"
src="resource://zotero/pdf-reader/reader.html"
flex="1"/>
<popupset id="zotero-reader-popupset">
</popupset>

View file

@ -32,7 +32,11 @@ const ZoteroStandalone = new function() {
const FONT_SIZES = ["1.0", "1.15", "1.3", "1.5", "1.7", "1.9", "2.1"];
//const NOTE_FONT_SIZES = ["11", "12", "13", "14", "18", "24", "36", "48", "64", "72", "96"];
const NOTE_FONT_SIZE_DEFAULT = "12";
Object.defineProperty(this, 'currentReader', {
get: () => Zotero.Reader.getByTabID(Zotero_Tabs.selectedID)
});
/**
* Run when standalone window first opens
*/
@ -61,7 +65,16 @@ const ZoteroStandalone = new function() {
this.updateQuickCopyOptions();
}, 0);
// "library" or "reader"
this.switchMenuType(extraData[ids[0]].type);
let type = extraData[ids[0]].type;
this.switchMenuType(type);
if (type === 'reader') {
let reader = Zotero.Reader.getByTabID(ids[0]);
if (reader) {
// "pdf", "epub", "snapshot"
let subtype = reader.type;
this.switchReaderSubtype(subtype);
}
}
setTimeout(() => ZoteroPane.updateToolbarPosition(), 0);
}
}
@ -135,11 +148,13 @@ const ZoteroStandalone = new function() {
document.querySelectorAll('.menu-type-' + type).forEach(el => el.hidden = false);
};
this.onReaderCmd = function (cmd) {
let reader = Zotero.Reader.getByTabID(Zotero_Tabs.selectedID);
reader.menuCmd(cmd);
this.switchReaderSubtype = function (subtype) {
document.querySelectorAll(
'.menu-type-reader.pdf, .menu-type-reader.epub, .menu-type-reader.snapshot'
).forEach(el => el.hidden = true);
document.querySelectorAll('.menu-type-reader.' + subtype).forEach(el => el.hidden = false);
};
this.onFileMenuOpen = function () {
var active = false;
try {
@ -381,10 +396,12 @@ const ZoteroStandalone = new function() {
var reader = Zotero.Reader.getByTabID(Zotero_Tabs.selectedID);
if (reader) {
this.updateMenuItemEnabled('go-menuitem-first-page', reader.allowNavigateFirstPage());
this.updateMenuItemEnabled('go-menuitem-last-page', reader.allowNavigateLastPage());
this.updateMenuItemEnabled('go-menuitem-back', reader.allowNavigateBack());
this.updateMenuItemEnabled('go-menuitem-forward', reader.allowNavigateForward());
if (['pdf', 'epub'].includes(reader.type)) {
this.updateMenuItemEnabled('go-menuitem-first-page', reader.canNavigateToFirstPage);
this.updateMenuItemEnabled('go-menuitem-last-page', reader.canNavigateToLastPage);
}
this.updateMenuItemEnabled('go-menuitem-back', reader.canNavigateBack);
this.updateMenuItemEnabled('go-menuitem-forward', reader.canNavigateForward);
}
};
@ -393,19 +410,20 @@ const ZoteroStandalone = new function() {
// PDF Reader
var reader = Zotero.Reader.getByTabID(Zotero_Tabs.selectedID);
if (reader) {
var { state } = reader;
this.updateMenuItemCheckmark('view-menuitem-vertical-scrolling', state.scrollMode == 0);
this.updateMenuItemCheckmark('view-menuitem-horizontal-scrolling', state.scrollMode == 1);
this.updateMenuItemCheckmark('view-menuitem-wrapped-scrolling', state.scrollMode == 2);
this.updateMenuItemCheckmark('view-menuitem-no-spreads', state.spreadMode == 0);
this.updateMenuItemCheckmark('view-menuitem-odd-spreads', state.spreadMode == 1);
this.updateMenuItemCheckmark('view-menuitem-even-spreads', state.spreadMode == 2);
this.updateMenuItemCheckmark('view-menuitem-hand-tool', reader.isHandToolActive());
this.updateMenuItemCheckmark('view-menuitem-zoom-auto', reader.isZoomAutoActive());
this.updateMenuItemCheckmark('view-menuitem-zoom-page-width', reader.isZoomPageWidthActive());
this.updateMenuItemCheckmark('view-menuitem-zoom-page-height', reader.isZoomPageHeightActive());
this.updateMenuItemCheckmark('view-menuitem-split-vertically', reader.isSplitVerticallyActive());
this.updateMenuItemCheckmark('view-menuitem-split-horizontally', reader.isSplitHorizontallyActive());
if (reader.type === 'pdf') {
this.updateMenuItemCheckmark('view-menuitem-hand-tool', reader.toolType === 'hand');
this.updateMenuItemCheckmark('view-menuitem-vertical-scrolling', reader.scrollMode === 0);
this.updateMenuItemCheckmark('view-menuitem-horizontal-scrolling', reader.scrollMode === 1);
this.updateMenuItemCheckmark('view-menuitem-wrapped-scrolling', reader.scrollMode === 2);
this.updateMenuItemCheckmark('view-menuitem-no-spreads', reader.spreadMode === 0);
this.updateMenuItemCheckmark('view-menuitem-odd-spreads', reader.spreadMode === 1);
this.updateMenuItemCheckmark('view-menuitem-even-spreads', reader.spreadMode === 2);
this.updateMenuItemCheckmark('view-menuitem-zoom-auto', reader.zoomAutoEnabled);
this.updateMenuItemCheckmark('view-menuitem-zoom-page-width', reader.zoomPageWidthEnabled);
this.updateMenuItemCheckmark('view-menuitem-zoom-page-height', reader.zoomPageHeightEnabled);
}
this.updateMenuItemCheckmark('view-menuitem-split-vertically', reader.splitType === 'vertical');
this.updateMenuItemCheckmark('view-menuitem-split-horizontally', reader.splitType === 'horizontal');
}
// Layout mode

File diff suppressed because it is too large Load diff

View file

@ -4718,7 +4718,7 @@ var ZoteroPane = new function()
await item.saveTx();
}
}
if (contentType === 'application/pdf') {
if (['application/pdf', 'application/epub+zip', 'text/html'].includes(contentType)) {
let item = await Zotero.Items.getAsync(itemID);
let library = Zotero.Libraries.get(item.libraryID);
let pdfHandler = Zotero.Prefs.get("fileHandler.pdf");

View file

@ -186,17 +186,17 @@
command="cmd_zotero_newCollection"/>
<menuitem
id="menu_transferFromPDF"
class="menu-type-reader"
class="menu-type-reader pdf"
label="&zotero.pdfReader.transferFromPDF;"
oncommand="ZoteroStandalone.onReaderCmd('transferFromPDF')"
oncommand="ZoteroStandalone.currentReader.transferFromPDF()"
/>
<menuseparator class="menu-type-reader"/>
<menuitem id="menu_export_file" class="menu-type-reader"
<menuitem id="menu_export_file" class="menu-type-reader pdf"
label="&zotero.general.saveAs;"
oncommand="ZoteroStandalone.onReaderCmd('export')"/>
<menuseparator class="menu-type-reader"/>
<menuitem label="Print" class="menu-type-reader" oncommand="ZoteroStandalone.onReaderCmd('print')"/>
<menuitem label="&zotero.items.menu.showInLibrary;" class="menu-type-reader" oncommand="ZoteroStandalone.onReaderCmd('showInLibrary')"/>
oncommand="ZoteroStandalone.currentReader.export()"/>
<menuseparator class="menu-type-reader pdf"/>
<menuitem label="Print" class="menu-type-reader" oncommand="ZoteroStandalone.currentReader.print()"/>
<menuitem label="&zotero.items.menu.showInLibrary;" class="menu-type-reader" oncommand="ZoteroStandalone.currentReader.showInLibrary()"/>
<menuseparator/>
<menuitem id="menu_close" class="menu-type-library" label="&closeCmd.label;" key="key_close"
accesskey="&closeCmd.accesskey;" command="cmd_close"/>
@ -271,25 +271,19 @@
<menuitem id="menu_selectAll"
key="key_selectAll"
command="cmd_selectAll" data-l10n-id="text-action-select-all"/>
<menuseparator class="menu-type-reader"/>
<menuseparator class="menu-type-reader pdf"/>
<menuitem
id="edit-menuitem-rotate-left"
class="menu-type-reader"
class="menu-type-reader pdf"
label="&zotero.pdfReader.rotatePageLeft;"
oncommand="ZoteroStandalone.onReaderCmd('rotateLeft')"
oncommand="ZoteroStandalone.currentReader.rotatePageLeft()"
/>
<menuitem
id="edit-menuitem-rotate-right"
class="menu-type-reader"
class="menu-type-reader pdf"
label="&zotero.pdfReader.rotatePageRight;"
oncommand="ZoteroStandalone.onReaderCmd('rotateRight')"
oncommand="ZoteroStandalone.currentReader.rotatePageRight()"
/>
<!--<menuitem
id="edit-menuitem-rotate-180"
class="menu-type-reader"
label="&zotero.pdfReader.rotatePage180;"
oncommand="ZoteroStandalone.onReaderCmd('rotate180')"
/>-->
<menuseparator/>
<menuitem id="menu_find" label="&findCmd.label;"
key="key_find" accesskey="&findCmd.accesskey;"
@ -315,88 +309,88 @@
<menupopup id="menu_viewPopup">
<menuitem
id="view-menuitem-hand-tool"
class="menu-type-reader"
class="menu-type-reader pdf"
type="checkbox"
label="&zotero.pdfReader.handTool;"
oncommand="ZoteroStandalone.onReaderCmd('switchcursortool_hand')"
oncommand="ZoteroStandalone.currentReader.toggleHandTool()"
/>
<menuseparator class="menu-type-reader"/>
<menuseparator class="menu-type-reader pdf"/>
<menuitem
id="view-menuitem-vertical-scrolling"
class="menu-type-reader"
class="menu-type-reader pdf"
type="checkbox"
label="&zotero.pdfReader.verticalScrolling;"
oncommand="ZoteroStandalone.onReaderCmd('switchscrollmode_vertical')"
oncommand="ZoteroStandalone.currentReader.scrollMode = 0"
/>
<menuitem
id="view-menuitem-horizontal-scrolling"
class="menu-type-reader"
class="menu-type-reader pdf"
type="checkbox"
label="&zotero.pdfReader.horizontalScrolling;"
oncommand="ZoteroStandalone.onReaderCmd('switchscrollmode_horizontal')"
oncommand="ZoteroStandalone.currentReader.scrollMode = 1"
/>
<menuitem
id="view-menuitem-wrapped-scrolling"
class="menu-type-reader"
class="menu-type-reader pdf"
type="checkbox"
label="&zotero.pdfReader.wrappedScrolling;"
oncommand="ZoteroStandalone.onReaderCmd('switchscrollmode_wrapped')"
oncommand="ZoteroStandalone.currentReader.scrollMode = 2"
/>
<menuseparator class="menu-type-reader"/>
<menuseparator class="menu-type-reader pdf"/>
<menuitem
id="view-menuitem-no-spreads"
class="menu-type-reader"
class="menu-type-reader pdf"
type="checkbox"
label="&zotero.pdfReader.noSpreads;"
oncommand="ZoteroStandalone.onReaderCmd('switchspreadmode_none')"
oncommand="ZoteroStandalone.currentReader.spreadMode = 0"
/>
<menuitem
id="view-menuitem-odd-spreads"
class="menu-type-reader"
class="menu-type-reader pdf"
type="checkbox"
label="&zotero.pdfReader.oddSpreads;"
oncommand="ZoteroStandalone.onReaderCmd('switchspreadmode_odd')"
oncommand="ZoteroStandalone.currentReader.spreadMode = 1"
/>
<menuitem
id="view-menuitem-even-spreads"
class="menu-type-reader"
class="menu-type-reader pdf"
type="checkbox"
label="&zotero.pdfReader.evenSpreads;"
oncommand="ZoteroStandalone.onReaderCmd('switchspreadmode_even')"
oncommand="ZoteroStandalone.currentReader.spreadMode = 2"
/>
<menuseparator class="menu-type-reader"/>
<menuitem
id="view-menuitem-zoom-in"
class="menu-type-reader"
label="&zotero.pdfReader.zoomIn;"
oncommand="ZoteroStandalone.onReaderCmd('zoomIn')"
oncommand="ZoteroStandalone.currentReader.zoomIn()"
/>
<menuitem
id="view-menuitem-zoom-out"
class="menu-type-reader"
label="&zotero.pdfReader.zoomOut;"
oncommand="ZoteroStandalone.onReaderCmd('zoomOut')"
oncommand="ZoteroStandalone.currentReader.zoomOut()"
/>
<menuitem
id="view-menuitem-zoom-auto"
class="menu-type-reader"
class="menu-type-reader pdf"
type="checkbox"
label="&zotero.pdfReader.zoomAuto;"
oncommand="ZoteroStandalone.onReaderCmd('zoomAuto')"
oncommand="ZoteroStandalone.currentReader.zoomAuto()"
/>
<menuitem
id="view-menuitem-zoom-page-width"
class="menu-type-reader"
class="menu-type-reader pdf"
type="checkbox"
label="&zotero.pdfReader.zoomPageWidth;"
oncommand="ZoteroStandalone.onReaderCmd('zoomPageWidth')"
oncommand="ZoteroStandalone.currentReader.zoomPageWidth()"
/>
<menuitem
id="view-menuitem-zoom-page-height"
class="menu-type-reader"
class="menu-type-reader pdf"
type="checkbox"
label="&zotero.pdfReader.zoomPageHeight;"
oncommand="ZoteroStandalone.onReaderCmd('zoomPageHeight')"
oncommand="ZoteroStandalone.currentReader.zoomPageHeight()"
/>
<menuseparator class="menu-type-reader"/>
<menuitem
@ -404,14 +398,14 @@
class="menu-type-reader"
type="checkbox"
label="&zotero.pdfReader.splitHorizontally;"
oncommand="ZoteroStandalone.onReaderCmd('splitHorizontally')"
oncommand="ZoteroStandalone.currentReader.toggleHorizontalSplit()"
/>
<menuitem
id="view-menuitem-split-vertically"
class="menu-type-reader"
type="checkbox"
label="&zotero.pdfReader.splitVertically;"
oncommand="ZoteroStandalone.onReaderCmd('splitVertically')"
oncommand="ZoteroStandalone.currentReader.toggleVerticalSplit()"
/>
<menuseparator class="menu-type-reader"/>
@ -502,28 +496,28 @@
<menupopup id="menu_goPopup">
<menuitem
id="go-menuitem-first-page"
class="menu-type-reader"
class="menu-type-reader pdf epub"
label="&zotero.pdfReader.firstPage;"
oncommand="ZoteroStandalone.onReaderCmd('firstpage')"
oncommand="ZoteroStandalone.currentReader.navigateToFirstPage()"
/>
<menuitem
id="go-menuitem-last-page"
class="menu-type-reader"
class="menu-type-reader pdf epub"
label="&zotero.pdfReader.lastPage;"
oncommand="ZoteroStandalone.onReaderCmd('lastpage')"
oncommand="ZoteroStandalone.currentReader.navigateToLastPage()"
/>
<menuseparator class="menu-type-reader"/>
<menuseparator class="menu-type-reader pdf epub"/>
<menuitem
id="go-menuitem-back"
class="menu-type-reader"
label="&zotero.pdfReader.back;"
oncommand="ZoteroStandalone.onReaderCmd('back')"
oncommand="ZoteroStandalone.currentReader.navigateBack()"
/>
<menuitem
id="go-menuitem-forward"
class="menu-type-reader"
label="&zotero.pdfReader.forward;"
oncommand="ZoteroStandalone.onReaderCmd('forward')"
oncommand="ZoteroStandalone.currentReader.navigateForward()"
/>
</menupopup>
</menu>

View file

@ -332,4 +332,3 @@
<!ENTITY zotero.pdfReader.transferFromPDF "Import Annotations…">
<!ENTITY zotero.pdfReader.rotatePageLeft "Rotate Page Left">
<!ENTITY zotero.pdfReader.rotatePageRight "Rotate Page Right">
<!ENTITY zotero.pdfReader.rotatePage180 "Rotate Page 180°">

View file

@ -1417,7 +1417,6 @@ pdfReader.promptDeletePages.title = Delete Pages
pdfReader.promptDeletePages.text = Are you sure you want to delete %1$S page from the PDF file?;Are you sure you want to delete %1$S pages from the PDF file?
pdfReader.rotateLeft = Rotate Left
pdfReader.rotateRight = Rotate Right
pdfReader.rotate180 = Rotate 180°
pdfReader.editPageNumber = Edit Page Number…
pdfReader.editHighlightedText = Edit Highlighted Text
pdfReader.copyImage = Copy Image

@ -1 +1 @@
Subproject commit c963b7e3f9bb8aa4bfeb39dfc0fbce3a4a33985e
Subproject commit d5afdb0b6bf4177be9f8d42d952f46beebf47e15