Add "Show in Library" option to PDF reader file menu #2032

This commit is contained in:
Martynas Bagdonas 2021-04-27 12:39:10 +03:00
parent 09125277ac
commit 3c3c1ba88a
3 changed files with 33 additions and 29 deletions

View file

@ -44,8 +44,10 @@
<menubar> <menubar>
<menu id="fileMenu" label="&fileMenu.label;" accesskey="&fileMenu.accesskey;"> <menu id="fileMenu" label="&fileMenu.label;" accesskey="&fileMenu.accesskey;">
<menupopup id="menu_FilePopup"> <menupopup id="menu_FilePopup">
<menuitem label="Export" oncommand="menuCmd('export')"/> <!-- TODO: Localize -->
<menuitem label="Save As…" oncommand="menuCmd('export')"/>
<menuitem label="Print" oncommand="menuCmd('print')"/> <menuitem label="Print" oncommand="menuCmd('print')"/>
<menuitem label="&zotero.items.menu.showInLibrary;" oncommand="menuCmd('showInLibrary')"/>
<menuseparator/> <menuseparator/>
<menuitem id="menu_close" label="&closeCmd.label;" key="key_close" <menuitem id="menu_close" label="&closeCmd.label;" key="key_close"
accesskey="&closeCmd.accesskey;" command="cmd_close"/> accesskey="&closeCmd.accesskey;" command="cmd_close"/>

View file

@ -152,6 +152,7 @@
label="Save As…" label="Save As…"
oncommand="ZoteroStandalone.onReaderCmd('export')"/> oncommand="ZoteroStandalone.onReaderCmd('export')"/>
<menuitem label="Print" class="menu-type-reader" oncommand="ZoteroStandalone.onReaderCmd('print')"/> <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')"/>
<menuseparator/> <menuseparator/>
<menuitem id="menu_close" class="menu-type-library" label="&closeCmd.label;" key="key_close" <menuitem id="menu_close" class="menu-type-library" label="&closeCmd.label;" key="key_close"
accesskey="&closeCmd.accesskey;" command="cmd_close"/> accesskey="&closeCmd.accesskey;" command="cmd_close"/>

View file

@ -138,6 +138,34 @@ class ReaderInstance {
await this._initPromise; await this._initPromise;
this._postMessage({ action: 'setToolbarPlaceholderWidth', width }); this._postMessage({ action: 'setToolbarPlaceholderWidth', width });
} }
menuCmd(cmd) {
if (cmd === 'export') {
let zp = Zotero.getActiveZoteroPane();
zp.exportPDF(this._itemID);
return;
}
else if (cmd === 'showInLibrary') {
let id = this._itemID;
let item = Zotero.Items.get(this._itemID);
if (item && item.parentItemID) {
id = item.parentItemID;
}
let win = Zotero.getMainWindow();
if (win) {
win.ZoteroPane.selectItems([id]);
win.Zotero_Tabs.select('zotero-pane');
win.focus();
}
return;
}
let data = {
action: 'menuCmd',
cmd
};
this._postMessage(data);
}
async _setState(state) { async _setState(state) {
let item = Zotero.Items.get(this._itemID); let item = Zotero.Items.get(this._itemID);
@ -597,19 +625,6 @@ class ReaderTab extends ReaderInstance {
} }
} }
menuCmd(cmd) {
if (cmd === 'export') {
let zp = Zotero.getActiveZoteroPane();
zp.exportPDF(this._itemID);
return;
}
let data = {
action: 'menuCmd',
cmd
};
this._postMessage(data);
}
_toggleNoteSidebar(isToggled) { _toggleNoteSidebar(isToggled) {
let itemPane = this._window.document.getElementById('zotero-item-pane'); let itemPane = this._window.document.getElementById('zotero-item-pane');
if (itemPane.hidden) { if (itemPane.hidden) {
@ -658,22 +673,8 @@ class ReaderWindow extends ReaderInstance {
this._window.addEventListener('DOMContentLoaded', (event) => { this._window.addEventListener('DOMContentLoaded', (event) => {
if (event.target === this._window.document) { if (event.target === this._window.document) {
this._window.addEventListener('keypress', this._handleKeyPress); this._window.addEventListener('keypress', this._handleKeyPress);
this._popupset = this._window.document.getElementById('zotero-reader-popupset'); this._popupset = this._window.document.getElementById('zotero-reader-popupset');
this._window.menuCmd = this.menuCmd.bind(this);
this._window.menuCmd = (cmd) => {
if (cmd === 'export') {
let zp = Zotero.getActiveZoteroPane();
zp.exportPDF(this._itemID);
return;
}
let data = {
action: 'menuCmd',
cmd
};
this._postMessage(data);
};
this._iframe = this._window.document.getElementById('reader'); this._iframe = this._window.document.getElementById('reader');
} }