cryptonas-branches/pythonrewrite/plugins/plugin-interface.txt
lars 56e954d1c4 plugin interface changed: now we use classes (inherited by CryptoBoxPlugin) instead of plain scripts
added some log entries
use threading module instead of "fork" for background formatting
redirection for "network" plugin fixed
empty return value of plugins defaults to plugin overview page
2006-09-25 12:21:39 +00:00

39 lines
2.4 KiB
Plaintext

The following directory structure is required:
- python code: plugins/PLUGINNAME/PLUGINNAME.py (all lower case is recommended)
- language files: plugins/PLUGINNAME/lang/(en|de|??).hdf
- clearsilver templates: plugins/PLUGINNAME/*.cs
Python code interface:
- create a class with the same name as the plugin - it has to inherit CryptoBoxPlugin
- function "doAction":
- this function will get called whenever this plugins is involved in a request
- all arguments should be optional (e.g. for displaying a form without previous input values)
- the argument "store" should be used to process a form submission (just a recommendation)
- if the processing failed for some reason (invalid input, ...), it should manually set the "Data.Warning" (resp. "Data.Error" or "Data.Success") to a value of your choice (preferably you may want to use messages of your namespace (e.g. "Plugins.PLUGINNAME.InvalidInput"))
- the return value should be the name of the template that should be displayed after processing (a template file in the plugin directory takes precedence over global template files)
- the return value may also be a dictionary with the following elements:
* template: the name of the template file (mandatory)
* generator: a generator object ("yield") - its content will replace every occourence of "<!-- CONTENT_DUMMY -->" in the template (useful for pages that are displayed step by step (as for formatting of filesystems))
- an empty (e.g. None) return value can be used to go return to the plugin page
- function "getStatus":
- returns a string, that describes a state connected to this plugin (e.g. the current date and time (for the "date" plugin))
Language file structure:
- the content of the language file will be added to the hdf dataset below "Lang.Plugins.PLUGINNAME" (this avoids namespace conflicts)
- the following values _must_ be defined:
Name (a short description)
Link (the visible text for links to this plugin)
Rank (defines the order of the plugins displayed (0..100))
- all warnings, error and success messages should be stored below WarningMessage.??? (resp. ErrorMessage or SuccessMessage)
Clearsilver template:
- should start with a "<h1>" tag
- links to the plugin (e.g. in form headers) could look like the following:
<?cs call:link("plugins/PLUGINNAME",'','','','') ?>
- a hidden input field called "store" should be used to indicate a form submission