From b85464ee83aadb624241650898d58e0573dac690 Mon Sep 17 00:00:00 2001 From: Ozbolt Menegatti Date: Mon, 16 Sep 2019 17:12:08 +0200 Subject: [PATCH] Initial commit --- README.md | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..bb5501e --- /dev/null +++ b/README.md @@ -0,0 +1,37 @@ +# Plugin system for editors in lexonomy + +This is a simple user-space plugin system for Lexonomy. + +## How it works? + +It uses a javascript loader file, which loads plugins over the internet. This means that you need to serve plugins, which could be done +just serving static files, but we implemented our server code, which does one more trick. The plugin is loaded at the touch of "edit" button +and that is it. + +## Plugin + +Every plugin is a folder which is located where the server code is run from. A plugin consists of config.json file and any other file +you want. config.json instructs plugin loader which files to load. Currently we support three keys in config.json: + +1. javascript: list of javascript files, local files have to be written as: `"$LOCATION$/file.js" +2. css: list of css stylesheets, local css have to be written as: `"$LOCATION$/file.js" +3. global: key-value list of `{'name': file}` - content of a file is stored in global variable name in browser javacsript. Same rule as above applies to local files. + +Everytime you want to access local plugin files in javascript, css or wherever, you prepend `$LOCATION$/` to the url. The plugin server takes care, that correct url is generated. This settings is found in `URL` value in server python code. + +# Usage + +To use it, you must first paste the [javascript loader](plugin-loader.js) into custom entry editor section of Lexonomy configuration. +Next, set correct url of your plugin. In order to work, the plugin must be accessible over HTTPS, if Lexonomy already runs on https. +In order to run a server, you need to run a default redis server and have these python packages installed: flask and redis. +Then you can run [flask server](plugin-server.py) on a server. + +## Example + +Let's say you are hosting plugins on lexonomyplugins.example.com and that there is a plugin (a folder) called myplugin in `CWD` of the server python process. You need to set: + +* `plugin: "//lexonomyplugins.example.com/myplugin"` in javascript loader, +* `URL = "//lexonomyplugins.example.com/myplugin"` in python server, +* the config.json file of myapi plugin has to be in `"myplugin"` folder on server + +This is it.