From 910c6c1334f1618b4075759515337e5f61446bd2 Mon Sep 17 00:00:00 2001 From: xiangyu <3170102889@zju.edu.cn> Date: Thu, 28 Apr 2022 14:37:54 +0800 Subject: [PATCH] change: repo name add: editor button main workspace icon switch --- README.md | 2 +- addon/chrome/content/preferences.xul | 2 +- .../{Notero => Knowledge4Zotero}/favicon.png | Bin .../favicon@0.5x.png | Bin .../favicon@2x.png | Bin addon/install.rdf | 2 +- package.json | 14 +-- src/{Notero.ts => addon.ts} | 4 +- src/base.ts | 4 +- src/events.ts | 95 +++++++++++------- src/index.ts | 6 +- src/prefs.ts | 4 +- src/views.ts | 7 +- typing/{notero.d.ts => addon.d.ts} | 2 +- typing/global.d.ts | 2 +- update.rdf | 6 +- 16 files changed, 84 insertions(+), 66 deletions(-) rename addon/chrome/skin/default/{Notero => Knowledge4Zotero}/favicon.png (100%) rename addon/chrome/skin/default/{Notero => Knowledge4Zotero}/favicon@0.5x.png (100%) rename addon/chrome/skin/default/{Notero => Knowledge4Zotero}/favicon@2x.png (100%) rename src/{Notero.ts => addon.ts} (85%) rename typing/{notero.d.ts => addon.d.ts} (73%) diff --git a/README.md b/README.md index afda583..c7ff85f 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Notero +# Knowledge4Zotero Zotero 主题 diff --git a/addon/chrome/content/preferences.xul b/addon/chrome/content/preferences.xul index 7fc8157..1d3a3d1 100644 --- a/addon/chrome/content/preferences.xul +++ b/addon/chrome/content/preferences.xul @@ -3,7 +3,7 @@ - + diff --git a/addon/chrome/skin/default/Notero/favicon.png b/addon/chrome/skin/default/Knowledge4Zotero/favicon.png similarity index 100% rename from addon/chrome/skin/default/Notero/favicon.png rename to addon/chrome/skin/default/Knowledge4Zotero/favicon.png diff --git a/addon/chrome/skin/default/Notero/favicon@0.5x.png b/addon/chrome/skin/default/Knowledge4Zotero/favicon@0.5x.png similarity index 100% rename from addon/chrome/skin/default/Notero/favicon@0.5x.png rename to addon/chrome/skin/default/Knowledge4Zotero/favicon@0.5x.png diff --git a/addon/chrome/skin/default/Notero/favicon@2x.png b/addon/chrome/skin/default/Knowledge4Zotero/favicon@2x.png similarity index 100% rename from addon/chrome/skin/default/Notero/favicon@2x.png rename to addon/chrome/skin/default/Knowledge4Zotero/favicon@2x.png diff --git a/addon/install.rdf b/addon/install.rdf index 5c29b20..7c2a826 100644 --- a/addon/install.rdf +++ b/addon/install.rdf @@ -13,7 +13,7 @@ em:description="__description__" em:homepageURL="__homepage__" em:iconURL="chrome://__addonRef__/skin/favicon.png" - em:updateURL="https://raw.githubusercontent.com/windingwind/Notero/master/update.rdf">> + em:updateURL="https://raw.githubusercontent.com/windingwind/Knowledge4Zotero/master/update.rdf">> 2 diff --git a/package.json b/package.json index 8b2c983..3555c74 100644 --- a/package.json +++ b/package.json @@ -1,8 +1,8 @@ { - "name": "notero", - "addonName": "Notero", - "addonID": "notero@windingwind.com", - "addonRef": "Notero", + "name": "knowledge-for-zotero", + "addonName": "Knowledge for Zotero", + "addonID": "Knowledge4Zotero@windingwind.com", + "addonRef": "Knowledge4Zotero", "version": "0.0.0", "description": "Knowledge management for Zotero", "main": "src/index.js", @@ -13,14 +13,14 @@ }, "repository": { "type": "git", - "url": "git+https://github.com/windingwind/Notero.git" + "url": "git+https://github.com/windingwind/Knowledge4Zotero.git" }, "author": "windingwind", "license": "AGPL-3.0-or-later", "bugs": { - "url": "https://github.com/windingwind/Notero/issues" + "url": "https://github.com/windingwind/Knowledge4Zotero/issues" }, - "homepage": "https://github.com/windingwind/Notero#readme", + "homepage": "https://github.com/windingwind/Knowledge4Zotero#readme", "dependencies": { "compressing": "^1.5.1", "esbuild": "^0.14.34", diff --git a/src/Notero.ts b/src/addon.ts similarity index 85% rename from src/Notero.ts rename to src/addon.ts index 1f8e2fe..5028ec0 100644 --- a/src/Notero.ts +++ b/src/addon.ts @@ -2,7 +2,7 @@ import AddonEvents from "./events"; import AddonViews from "./views"; import AddonPrefs from "./prefs"; -class Notero { +class Knowledge4Zotero { public events: AddonEvents; public views: AddonViews; public prefs: AddonPrefs; @@ -14,4 +14,4 @@ class Notero { } } -export default Notero; +export default Knowledge4Zotero; diff --git a/src/base.ts b/src/base.ts index 75e1c9c..de707b5 100644 --- a/src/base.ts +++ b/src/base.ts @@ -1,6 +1,6 @@ class AddonBase { - protected _Addon: Notero; - constructor(parent: Notero) { + protected _Addon: Knowledge4Zotero; + constructor(parent: Knowledge4Zotero) { this._Addon = parent; } } diff --git a/src/events.ts b/src/events.ts index 5468f91..566a617 100644 --- a/src/events.ts +++ b/src/events.ts @@ -1,12 +1,12 @@ import { AddonBase, EditorMessage } from "./base"; class AddonEvents extends AddonBase { - constructor(parent: Notero) { + constructor(parent: Knowledge4Zotero) { super(parent); } public async onInit() { - Zotero.debug("Notero: init called"); + Zotero.debug("Knowledge4Zotero: init called"); this.addNoteInstanceListener(); this.resetState(); } @@ -24,49 +24,54 @@ class AddonEvents extends AddonBase { } public async onEditorEvent(message: EditorMessage) { - Zotero.debug(`Notero: onEditorEvent\n${String(message)}`); - switch (message.type) { - case "addNoteInstance": - let mainKnowledgeID = parseInt( - Zotero.Prefs.get("Notero.mainKnowledgeID") - ); - await message.content.editorInstance._initPromise; + Zotero.debug(`Knowledge4Zotero: onEditorEvent\n${String(message)}`); + if (message.type === "addNoteInstance") { + let mainKnowledgeID = parseInt( + Zotero.Prefs.get("Knowledge4Zotero.mainKnowledgeID") + ); + await message.content.editorInstance._initPromise; - if (message.content.editorInstance._item.id !== mainKnowledgeID) { - Zotero.debug(`Notero: main Knowledge`); - this._Addon.views.addEditorButton( - message.content.editorInstance, - "setMainKnowledge", - "Use Current Note as Knowledge Workspace", - new EditorMessage("setMainKnowledge", {}) - ); - this._Addon.views.addEditorButton( - message.content.editorInstance, - "addToKnowledge", - "Add Note Link to Knowledge Workspace", - new EditorMessage("addToKnowledge", {}) - ); - } - break; + let isMainKnowledge = + message.content.editorInstance._item.id === mainKnowledgeID; - case "addToKnowledge": - /* + Zotero.debug(`Knowledge4Zotero: main Knowledge`); + this._Addon.views.addEditorButton( + message.content.editorInstance, + "mainKnowledge", + isMainKnowledge ? "isMainKnowledge" : "setMainKnowledge", + isMainKnowledge + ? "This Note is Knowledge Workspace" + : "Use Current Note as Knowledge Workspace", + new EditorMessage("setMainKnowledge", {}) + ); + this._Addon.views.addEditorButton( + message.content.editorInstance, + "addToKnowledge", + "addToKnowledge", + "Add Note Link to Knowledge Workspace", + new EditorMessage("addToKnowledge", {}) + ); + } else if (message.type === "addToKnowledge") { + /* message.content = { editorInstance } */ - // TODO: Complete this part - Zotero.debug("Notero: addToKnowledge"); - break; - case "setMainKnowledge": - /* + // TODO: Complete this part + Zotero.debug("Knowledge4Zotero: addToKnowledge"); + } else if (message.type === "setMainKnowledge") { + /* message.content = { editorInstance } */ - // TODO: Complete this part - Zotero.debug("Notero: addToKnowledge"); - if (Zotero.Prefs.get("Notero.mainKnowledgeID")) { + // TODO: Complete this part + Zotero.debug("Knowledge4Zotero: setMainKnowledge"); + let mainKnowledgeID = parseInt( + Zotero.Prefs.get("Knowledge4Zotero.mainKnowledgeID") + ); + if (message.content.editorInstance._item.id !== mainKnowledgeID) { + if (Zotero.Prefs.get("Knowledge4Zotero.mainKnowledgeID")) { let confirmChange = confirm( "Will remove current Knowledge Workspace. Confirm?" ); @@ -75,7 +80,7 @@ class AddonEvents extends AddonBase { } } Zotero.Prefs.set( - "Notero.mainKnowledgeID", + "Knowledge4Zotero.mainKnowledgeID", message.content.editorInstance._item.id ); // Set the button to selected state @@ -85,9 +90,21 @@ class AddonEvents extends AddonBase { "This Note is Knowledge Workspace" ); // TODO: update workspace window here - break; - default: - break; + for (let editor of Zotero.Notes._editorInstances) { + await editor._initPromise; + if (editor._item.id === mainKnowledgeID) { + let button = + editor._iframeWindow.document.getElementById("mainKnowledge"); + if (button) { + this._Addon.views.changeEditorButton( + button, + "setMainKnowledge", + "Use Current Note as Knowledge Workspace" + ); + } + } + } + } } } diff --git a/src/index.ts b/src/index.ts index da16a35..35ea863 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,11 +1,11 @@ -import Notero from "./Notero"; +import Knowledge4Zotero from "./addon"; -Zotero.Notero = new Notero(); +Zotero.Knowledge4Zotero = new Knowledge4Zotero(); window.addEventListener( "load", async function (e) { - Zotero.Notero.events.onInit(); + Zotero.Knowledge4Zotero.events.onInit(); }, false ); diff --git a/src/prefs.ts b/src/prefs.ts index 6d57d3c..1e27489 100644 --- a/src/prefs.ts +++ b/src/prefs.ts @@ -2,12 +2,12 @@ import { AddonBase } from "./base"; class AddonPrefs extends AddonBase { private _document: Document; - constructor(parent: Notero) { + constructor(parent: Knowledge4Zotero) { super(parent); } initPreferences(_document: Document) { this._document = _document; - Zotero.debug("Notero: Initialize preferences."); + Zotero.debug("Knowledge4Zotero: Initialize preferences."); } } diff --git a/src/views.ts b/src/views.ts index 50607ef..b939f38 100644 --- a/src/views.ts +++ b/src/views.ts @@ -4,12 +4,12 @@ class AddonViews extends AddonBase { progressWindowIcon: object; editorIcon: object; - constructor(parent: Notero) { + constructor(parent: Knowledge4Zotero) { super(parent); this.progressWindowIcon = { success: "chrome://zotero/skin/tick.png", fail: "chrome://zotero/skin/cross.png", - default: "chrome://notero/skin/favicon.png", + default: "chrome://Knowledge4Zotero/skin/favicon.png", }; this.editorIcon = { addToKnowledge: ``, @@ -20,6 +20,7 @@ class AddonViews extends AddonBase { async addEditorButton( editorInstances: EditorInstance, + id: string, icon: string, title: string, message: EditorMessage @@ -31,7 +32,7 @@ class AddonViews extends AddonBase { let toolbar = _document.getElementsByClassName("middle")[0]; let button = _document.createElement("button"); button.setAttribute("class", "toolbar-button"); - button.setAttribute("id", title); + button.setAttribute("id", id); button.setAttribute("title", title); button.innerHTML = this.editorIcon[icon]; toolbar.append(button); diff --git a/typing/notero.d.ts b/typing/addon.d.ts similarity index 73% rename from typing/notero.d.ts rename to typing/addon.d.ts index 8e363c0..1d5f4e7 100644 --- a/typing/notero.d.ts +++ b/typing/addon.d.ts @@ -1,4 +1,4 @@ -declare interface Notero { +declare interface Knowledge4Zotero { events: import("../src/events"); views: import("../src/view"); prefs: import("../src/prefs"); diff --git a/typing/global.d.ts b/typing/global.d.ts index 215221a..dfecf7d 100644 --- a/typing/global.d.ts +++ b/typing/global.d.ts @@ -128,7 +128,7 @@ declare const Zotero: { }; Reader: Reader; Notes: Notes; - Notero: import("../src/Notero"); + Knowledge4Zotero: import("../src/addon"); }; declare const ZoteroPane: { diff --git a/update.rdf b/update.rdf index 77d4e8a..bca54ae 100644 --- a/update.rdf +++ b/update.rdf @@ -1,6 +1,6 @@ - + @@ -11,7 +11,7 @@ zotero@chnm.gmu.edu 5.0 * - https://github.com/windingwind/Notero/releases/latest/download/notero.xpi + https://github.com/windingwind/Knowledge4Zotero/releases/latest/download/Knowledge4Zotero.xpi @@ -19,7 +19,7 @@ juris-m@juris-m.github.io 5.0 * - https://github.com/windingwind/Notero/releases/latest/download/notero.xpi + https://github.com/windingwind/Knowledge4Zotero/releases/latest/download/Knowledge4Zotero.xpi