Plugin system for editors in lexonomy
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.
 
 
Ozbolt Menegatti ee81194e58 plugin js typo pirms 1 gada
LICENSE.md Initial: license pirms 1 gada
README.md Adding more docs pirms 1 gada
plugin-loader.js More loads, but really small plugin text for into lexonomy pirms 1 gada
plugin-server.py Had to refactor server to support minimal plugin pirms 1 gada
plugin.js plugin js typo pirms 1 gada

README.md

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.

In order for a plugin to work, javascript should export three function:

plugin_init(div, entry)
plugin_render(div, entry)
plugin_save(div)

Usage

To use it, you must first paste the javascript loader 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 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.