update: readme
This commit is contained in:
parent
7bcbd3e025
commit
7f4a99d998
35
README.md
35
README.md
@ -6,7 +6,7 @@ This is an addon/plugin template for [Zotero](https://www.zotero.org/).
|
||||
|
||||
> 👍You are currently in `bootstrap` extension mode. To use `overlay` mode, plsase switch to `overlay` branch in git.
|
||||
|
||||
> 👁 Watch this repo so that you can be notified whenever there are fixes & updates.
|
||||
> 👁 Watch this repo so that you can be notified whenever there are fixes & updates.
|
||||
|
||||
## Features
|
||||
|
||||
@ -41,6 +41,19 @@ This is an addon/plugin template for [Zotero](https://www.zotero.org/).
|
||||
- Run `npm install` to setup the plugin and install dependencies. If you don't have NodeJS installed, please download it [here](https://nodejs.org/en/);
|
||||
- Run `npm run build` to build the plugin. The xpi for installation and the built code is under builds folder.
|
||||
|
||||
### Plugin Life Cycle
|
||||
|
||||
1. When install/enable/startup triggered from Zotero, `bootstrap.js` > `startup` is called
|
||||
- Wait for Zotero ready
|
||||
- Prepare global variables `ctx`. They are available globally in the plugin scope
|
||||
- Load `index.js` (the main entrance of plugin code, built from `index.ts`)
|
||||
- Register resources if Zotero 7+
|
||||
2. In the main entrance `index.js`, the plugin object is injected under `Zotero` and `events.ts` > `onInit` is called.
|
||||
- Initialize anything you want, including notify listeners, preference panes(`initPrefs`), and UI elements(`initViews`).
|
||||
3. When uninstall/disabled triggered from Zotero, `bootstrap.js` > `shutdown` is called.
|
||||
- `events.ts` > `onUninit` is called. Remove UI elements(`unInitViews`), preference panes(`uninitPrefs`), or anything created by the plugin.
|
||||
- Remove scripts and release resources.
|
||||
|
||||
### Examples
|
||||
|
||||
#### Menu (file, edit, view, ...) & Right-click Menu (item, collection/library)
|
||||
@ -59,7 +72,8 @@ https://github.com/windingwind/zotero-addon-template/blob/574ce88b9fd3535a9d062d
|
||||
|
||||
`Utils.UI.insertMenuItem` resolved the input object and inject the menu items.
|
||||
|
||||
Available types `menuFile`, `menuEdit`, ...:
|
||||
Available types `menuFile`, `menuEdit`, ...:
|
||||
|
||||
```ts
|
||||
defaultMenuPopupSelectors: {
|
||||
menuFile: "#menu_FilePopup",
|
||||
@ -73,7 +87,7 @@ defaultMenuPopupSelectors: {
|
||||
},
|
||||
```
|
||||
|
||||
You can choose an anchor element and insert before/after it using `insertPosition` and `anchorElement`. Default the insert position is the end of menu.
|
||||
You can choose an anchor element and insert before/after it using `insertPosition` and `anchorElement`. Default the insert position is the end of menu.
|
||||
|
||||
```ts
|
||||
insertMenuItem: (
|
||||
@ -127,9 +141,18 @@ You only need to maintain one `preferences.xhtml` which runs natively on Zotero
|
||||
|
||||
https://github.com/windingwind/zotero-addon-template/blob/574ce88b9fd3535a9d062db51cf16e99dda35288/src/views.ts#L63-L82
|
||||
|
||||
Call `Utils.Compat.registerPrefPane` when it's on Zotero 6. Please make sure `defaultXUL` is set `true` as Zotero 6 requires that.
|
||||
Call `Utils.Compat.registerPrefPane` when it's on Zotero 6.
|
||||
|
||||
Remember to call `Utils.Compat.unregisterPrefPane()` on plugin onload.
|
||||
Note that `<preferences>` element is deprecated. Please use the full pref-key in elements' `preference` attribute. Like:
|
||||
|
||||
```xml
|
||||
<checkbox label="&zotero.__addonRef__.pref.enable.label;" preference="extensions.zotero.__addonRef__.enable"
|
||||
/>
|
||||
```
|
||||
|
||||
The elements with `preference` attributes will bind to Zotero preferences.
|
||||
|
||||
Remember to call `Utils.Compat.unregisterPrefPane()` on plugin unload.
|
||||
|
||||
https://github.com/windingwind/zotero-addon-template/blob/574ce88b9fd3535a9d062db51cf16e99dda35288/src/views.ts#L88-L90
|
||||
|
||||
@ -150,7 +173,7 @@ function createElement (
|
||||
) => XUL.Element | DocumentFragment | HTMLElement | SVGAElement;
|
||||
```
|
||||
|
||||
There are more advanced APIs for creating elements in batch: `Uitls.UI.creatElementsFromJSON`. Input a element tree in JSON and return a fragment/element. These elements are also maintained by plugin template.
|
||||
There are more advanced APIs for creating elements in batch: `Utils.UI.creatElementsFromJSON`. Input an element tree in JSON and return a fragment/element. These elements are also maintained by this plugin template.
|
||||
|
||||
Definition:
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user