Skip to content

Commit 677d0f6

Browse files
author
xiangyu
committed
feat: note templates
fix: #22 mac export image bug
1 parent addab7b commit 677d0f6

File tree

13 files changed

+525
-13
lines changed

13 files changed

+525
-13
lines changed

addon/chrome/content/export.xul

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
%knowledgeDTD;
1212
]>
1313

14-
<dialog id="zotero-select-items-dialog" windowtype="knowledge-export" title="&zotero.__addonRef__.export.title;" orient="vertical" width="300" height="300" buttons="cancel,accept" ondialogaccept="Zotero.Knowledge4Zotero.export.doAccept();" onload="Zotero.Knowledge4Zotero.export.doLoad(window);" onunload="Zotero.Knowledge4Zotero.export.doUnload();" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" xmlns:html="http://www.w3.org/1999/xhtml" style="padding:2em" persist="screenX screenY width height">
14+
<dialog id="betternotes-export-dialog" windowtype="betternotes-export" title="&zotero.__addonRef__.export.title;" orient="vertical" width="300" height="300" buttons="cancel,accept" ondialogaccept="Zotero.Knowledge4Zotero.export.doAccept();" onload="Zotero.Knowledge4Zotero.export.doLoad(window);" onunload="Zotero.Knowledge4Zotero.export.doUnload();" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" xmlns:html="http://www.w3.org/1999/xhtml" style="padding:2em" persist="screenX screenY width height">
1515
<script src="chrome://zotero/content/include.js" />
1616
<box flex="1">
1717
<rows flex="1">

addon/chrome/content/template.xul

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
<?xml version="1.0"?>
2+
<?xml-stylesheet href="chrome://global/skin/"?>
3+
<?xml-stylesheet href="chrome://zotero/skin/zotero.css" type="text/css"?>
4+
<?xml-stylesheet href="chrome://zotero/skin/overlay.css" type="text/css"?>
5+
<?xml-stylesheet href="chrome://zotero/skin/standalone.css" type="text/css"?>
6+
<?xml-stylesheet href="chrome://zotero-platform/content/overlay.css"?>
7+
8+
<!DOCTYPE window [
9+
<!ENTITY % globalDTD SYSTEM "chrome://global/locale/global.dtd">
10+
%globalDTD;
11+
<!ENTITY % standaloneDTD SYSTEM "chrome://zotero/locale/standalone.dtd">
12+
%standaloneDTD;
13+
<!ENTITY % zoteroDTD SYSTEM "chrome://zotero/locale/zotero.dtd">
14+
%zoteroDTD;
15+
<!ENTITY % knowledgeDTD SYSTEM "chrome://__addonRef__/locale/overlay.dtd">
16+
%knowledgeDTD;
17+
]>
18+
19+
<window id="zotero-knowledge-template-editor" onload="Zotero.Knowledge4Zotero.template.initTemplates(window);" orient="vertical" width="600" height="350" title="&zotero.__addonRef__.template.title;" persist="screenX screenY width height" windowtype="zotero:knowledgeTemplateEditor" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" xmlns:html="http://www.w3.org/1999/xhtml">
20+
<script src="chrome://zotero/content/include.js" />
21+
22+
<keyset>
23+
<key id="key_save" key="S" modifiers="accel" command="cmd_save" />
24+
<key id="key_close" key="W" modifiers="accel" command="cmd_close" />
25+
</keyset>
26+
<command id="cmd_save" oncommand="Zotero.Knowledge4Zotero.template.saveSelectedTemplate();" />
27+
<command id="cmd_close" oncommand="window.close();" />
28+
29+
<hbox flex="1">
30+
<vbox id="template-container" flex="1" minwidth="200px">
31+
<listbox id="template-list" flex="1" seltype="single" onselect="Zotero.Knowledge4Zotero.template.updateEditorView();">
32+
<listhead>
33+
<listheader id="name" label="&zotero.__addonRef__.template.list.label;" flex="1" />
34+
</listhead>
35+
<listcols>
36+
<listcol flex="1" />
37+
</listcols>
38+
</listbox>
39+
</vbox>
40+
<splitter></splitter>
41+
<rows>
42+
<row style="margin: 10px 0 10px 0;">
43+
<label value="&zotero.__addonRef__.template.header.label;"></label>
44+
<textbox id="editor-name" disabled="true"></textbox>
45+
</row>
46+
<row flex="1">
47+
<textbox id="editor-textbox" flex="1" multiline="true" disabled="true"></textbox>
48+
</row>
49+
<row style="margin: 10px 0 10px 0;">
50+
<button id="create-template" label="&zotero.__addonRef__.template.create.label;" oncommand="Zotero.Knowledge4Zotero.template.createTemplate();"></button>
51+
<button id="import-template" label="&zotero.__addonRef__.template.import.label;" oncommand="Zotero.Knowledge4Zotero.template.importNoteTemplate();"></button>
52+
<button id="save-template" label="&zotero.__addonRef__.template.save.label;" oncommand="Zotero.Knowledge4Zotero.template.saveSelectedTemplate();"></button>
53+
<button id="delete-template" label="&zotero.__addonRef__.template.delete.label;" oncommand="Zotero.Knowledge4Zotero.template.deleteSelectedTemplate();"></button>
54+
<!-- <button id="help" label="&helpMenu.label;"></button> -->
55+
</row>
56+
</rows>
57+
</hbox>
58+
59+
</window>

addon/chrome/content/workspace.xul

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
<?xml-stylesheet href="chrome://zotero/skin/standalone.css" type="text/css"?>
66
<?xml-stylesheet href="chrome://zotero-platform/content/overlay.css"?>
77
<?xml-stylesheet href="chrome://__addonRef__/skin/workspace.css" type="text/css"?>
8-
<?xml-stylesheet href="chrome://__addonRef__/content/lib/css/dx.light.css" type="text/css"?>
98
<?xul-overlay href="chrome://zotero/content/standalone/editMenuOverlay.xul"?>
109

1110
<!DOCTYPE window [
@@ -21,25 +20,26 @@
2120
%knowledgeDTD;
2221
]>
2322

24-
<window id="zotero-knowledge-workspace" orient="vertical" width="1000" height="350" title="&zotero.__addonRef__.workspace.title;" persist="screenX screenY width height" windowtype="zotero:knowledgeWorkspace" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" xmlns:html="http://www.w3.org/1999/xhtml">
23+
<window id="zotero-knowledge-workspace" orient="vertical" width="1000" height="350" title="&zotero.__addonRef__.workspace.title;" persist="screenX screenY width height sizemode" windowtype="zotero:knowledgeWorkspace" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" xmlns:html="http://www.w3.org/1999/xhtml">
2524

2625
<script src="chrome://zotero/content/include.js" />
2726
<script src="chrome://zotero/content/note.js" />
2827

2928
<keyset>
3029
<key id="key_new" key="N" modifiers="accel" command="cmd_new" />
3130
<key id="key_open" key="O" modifiers="accel" command="cmd_open" />
32-
<key id="key_import" key="I" modifiers="accel" command="cmd_import" />
3331
<key id="key_export" key="E" modifiers="accel" command="cmd_export" />
3432
<key id="key_close" key="W" modifiers="accel" command="cmd_close" />
33+
<key id="key_insertNotes" key="I" modifiers="accel" command="cmd_insertNotes" />
3534
<key id="key_indent" keycode="VK_TAB" command="cmd_indent" />
3635
<key id="key_unindent" keycode="VK_TAB" modifiers="shift" command="cmd_unindent" />
3736
</keyset>
3837
<command id="cmd_new" oncommand="Zotero.Knowledge4Zotero.events.onEditorEvent({type: 'createWorkspace'});" />
3938
<command id="cmd_open" oncommand="Zotero.Knowledge4Zotero.events.onEditorEvent({type: 'selectMainKnowledge'});" />
40-
<command id="cmd_import" oncommand="Zotero.Knowledge4Zotero.events.onEditorEvent({type: 'import'});" />
4139
<command id="cmd_export" oncommand="Zotero.Knowledge4Zotero.events.onEditorEvent({type: 'export', content: {editorInstance: {_item: false}}});" />
4240
<command id="cmd_close" oncommand="window.close();" />
41+
<command id="cmd_insertNotes" oncommand="Zotero.Knowledge4Zotero.events.onEditorEvent({type: 'insertNotes'});" />
42+
<command id="cmd_editTemplate" oncommand="Zotero.Knowledge4Zotero.events.onEditorEvent({type: 'editTemplate'});" />
4343
<command id="cmd_addheading" oncommand="Zotero.Knowledge4Zotero.events.onEditorEvent({type: 'addHeading'});" />
4444
<command id="cmd_indent" oncommand="Zotero.Knowledge4Zotero.events.onEditorEvent({type: 'indentHeading'});" />
4545
<command id="cmd_unindent" oncommand="Zotero.Knowledge4Zotero.events.onEditorEvent({type: 'unindentHeading'});" />
@@ -57,14 +57,25 @@
5757
<menupopup id="menu_FilePopup">
5858
<menuitem id="menu_new" label="&zotero.__addonRef__.workspace.menu.new;" key="key_new" accesskey="N" command="cmd_new" />
5959
<menuitem id="menu_open" label="&zotero.__addonRef__.workspace.menu.open;" key="key_open" accesskey="O" command="cmd_open" />
60-
<menuitem id="menu_import" label="&zotero.__addonRef__.workspace.menu.import;" key="key_import" accesskey="I" command="cmd_import" />
6160
<menuitem id="menu_export" label="&zotero.__addonRef__.workspace.menu.export;" key="key_export" accesskey="E" command="cmd_export" />
6261
<menuitem id="menu_close" label="&closeCmd.label;" key="key_close" accesskey="&closeCmd.accesskey;" command="cmd_close" />
6362
</menupopup>
6463
</menu>
6564

6665
<menu id="menu_edit" label="&editMenu.label;" accesskey="&editMenu.accesskey;">
6766
<menupopup id="menu_EditPopup">
67+
<menuitem id="menu_insertNotes" label="&zotero.__addonRef__.workspace.menu.insertNotes;" key="key_insertNotes" accesskey="I" command="cmd_insertNotes" />
68+
<menu id="menu_insertTextTemplate" label="&zotero.__addonRef__.workspace.menu.insertTextTemplate;">
69+
<menupopup id="menu_insertTextTemplatePopup" onpopupshowing="Zotero.Knowledge4Zotero.views.updateTemplateMenu('Text');" />
70+
</menu>
71+
<menu id="menu_insertNoteTemplate" label="&zotero.__addonRef__.workspace.menu.insertNoteTemplate;">
72+
<menupopup id="menu_insertNoteTemplatePopup" onpopupshowing="Zotero.Knowledge4Zotero.views.updateTemplateMenu('Note');" />
73+
</menu>
74+
<menu id="menu_insertItemTemplate" label="&zotero.__addonRef__.workspace.menu.insertItemTemplate;">
75+
<menupopup id="menu_insertItemTemplatePopup" onpopupshowing="Zotero.Knowledge4Zotero.views.updateTemplateMenu('Item');" />
76+
</menu>
77+
<menuitem id="menu_editTemplate" label="&zotero.__addonRef__.workspace.menu.editTemplate;" command="cmd_editTemplate" />
78+
<menuseparator />
6879
<menuitem id="menu_addheading" label="&zotero.__addonRef__.workspace.menu.addheading;" command="cmd_addheading" />
6980
<menuitem id="menu_indent" label="&zotero.__addonRef__.workspace.menu.indent;" command="cmd_indent" key="key_indent" />
7081
<menuitem id="menu_unindent" label="&zotero.__addonRef__.workspace.menu.unindent;" command="cmd_unindent" key="key_unindent" />

addon/chrome/locale/en-US/overlay.dtd

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,12 @@
22

33
<!ENTITY zotero.__addonRef__.workspace.menu.new "Create New Main Note">
44
<!ENTITY zotero.__addonRef__.workspace.menu.open "Open Main Note...">
5-
<!ENTITY zotero.__addonRef__.workspace.menu.import "Import Notes...">
65
<!ENTITY zotero.__addonRef__.workspace.menu.export "Export Main Note...">
6+
<!ENTITY zotero.__addonRef__.workspace.menu.insertNotes "Insert Notes...">
7+
<!ENTITY zotero.__addonRef__.workspace.menu.insertTextTemplate "Insert Template">
8+
<!ENTITY zotero.__addonRef__.workspace.menu.insertNoteTemplate "Insert Notes Using Template">
9+
<!ENTITY zotero.__addonRef__.workspace.menu.insertItemTemplate "Insert Items Using Template">
10+
<!ENTITY zotero.__addonRef__.workspace.menu.editTemplate "Edit Templates...">
711
<!ENTITY zotero.__addonRef__.workspace.menu.addheading "Insert Heading...">
812
<!ENTITY zotero.__addonRef__.workspace.menu.indent "Decrease Heading Level">
913
<!ENTITY zotero.__addonRef__.workspace.menu.unindent "Increase Heading Level">
@@ -45,6 +49,14 @@
4549
<!ENTITY zotero.__addonRef__.wizard.setup.collectionenable.label "Create a new collection for main notes:">
4650
<!ENTITY zotero.__addonRef__.wizard.setup.noteenable.label "Create a 'Zotero Better Notes User Guide: Workflow' note">
4751

52+
<!ENTITY zotero.__addonRef__.template.title "Template Editor">
53+
<!ENTITY zotero.__addonRef__.template.header.label "Template Name">
54+
<!ENTITY zotero.__addonRef__.template.list.label "Template List">
55+
<!ENTITY zotero.__addonRef__.template.create.label "Create">
56+
<!ENTITY zotero.__addonRef__.template.import.label "Create from Note">
57+
<!ENTITY zotero.__addonRef__.template.save.label "Save">
58+
<!ENTITY zotero.__addonRef__.template.delete.label "Delete">
59+
4860
<!ENTITY zotero.__addonRef__.help.feedback.caption.label "User Guide and Feedback">
4961
<!ENTITY zotero.__addonRef__.help.feedback.label "GitHub">
5062
<!ENTITY zotero.__addonRef__.help.version.label "__addonName__ VERSION __buildVersion__">

addon/chrome/locale/zh-CN/overlay.dtd

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,12 @@
22

33
<!ENTITY zotero.__addonRef__.workspace.menu.new "创建新主笔记">
44
<!ENTITY zotero.__addonRef__.workspace.menu.open "打开主笔记...">
5-
<!ENTITY zotero.__addonRef__.workspace.menu.import "导入笔记...">
65
<!ENTITY zotero.__addonRef__.workspace.menu.export "导出主笔记...">
6+
<!ENTITY zotero.__addonRef__.workspace.menu.insertNotes "插入多条笔记...">
7+
<!ENTITY zotero.__addonRef__.workspace.menu.insertTextTemplate "插入模板">
8+
<!ENTITY zotero.__addonRef__.workspace.menu.insertNoteTemplate "使用模板插入多条笔记">
9+
<!ENTITY zotero.__addonRef__.workspace.menu.insertItemTemplate "使用模板插入多个条目">
10+
<!ENTITY zotero.__addonRef__.workspace.menu.editTemplate "编辑笔记模板...">
711
<!ENTITY zotero.__addonRef__.workspace.menu.addheading "插入标题...">
812
<!ENTITY zotero.__addonRef__.workspace.menu.indent "降低标题层级">
913
<!ENTITY zotero.__addonRef__.workspace.menu.unindent "提升标题层级">
@@ -45,6 +49,14 @@
4549
<!ENTITY zotero.__addonRef__.wizard.setup.collectionenable.label "创建新的分类用来存放主笔记:">
4650
<!ENTITY zotero.__addonRef__.wizard.setup.noteenable.label "创建 'Zotero Better Notes 用户指引:工作流' 笔记">
4751

52+
<!ENTITY zotero.__addonRef__.template.title "模板编辑器">
53+
<!ENTITY zotero.__addonRef__.template.header.label "模板名称">
54+
<!ENTITY zotero.__addonRef__.template.list.label "模板列表">
55+
<!ENTITY zotero.__addonRef__.template.create.label "新建">
56+
<!ENTITY zotero.__addonRef__.template.import.label "从笔记新建...">
57+
<!ENTITY zotero.__addonRef__.template.save.label "保存">
58+
<!ENTITY zotero.__addonRef__.template.delete.label "删除">
59+
4860
<!ENTITY zotero.__addonRef__.help.feedback.caption.label "User Guide and Feedback">
4961
<!ENTITY zotero.__addonRef__.help.feedback.label "GitHub">
5062
<!ENTITY zotero.__addonRef__.help.version.label "__addonName__ VERSION __buildVersion__">

src/addon.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,22 @@ import AddonViews from "./views";
33
import AddonWizard from "./wizard";
44
import AddonExport from "./export";
55
import Knowledge from "./knowledge";
6+
import AddonTemplate from "./template";
67

78
class Knowledge4Zotero {
89
public events: AddonEvents;
910
public views: AddonViews;
1011
public wizard: AddonWizard;
1112
public export: AddonExport;
13+
public template: AddonTemplate;
1214
public knowledge: Knowledge;
1315

1416
constructor() {
1517
this.events = new AddonEvents(this);
1618
this.views = new AddonViews(this);
1719
this.wizard = new AddonWizard(this);
1820
this.export = new AddonExport(this);
21+
this.template = new AddonTemplate(this);
1922
this.knowledge = new Knowledge(this);
2023
}
2124
}

src/base.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,10 @@ enum OutlineType {
2424
bubbleMap,
2525
}
2626

27-
export { AddonBase, EditorMessage, OutlineType };
27+
class NoteTemplate {
28+
name: string;
29+
text: string;
30+
disabled: boolean;
31+
}
32+
33+
export { AddonBase, EditorMessage, OutlineType, NoteTemplate };

0 commit comments

Comments
 (0)