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 "" 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 "

" tag - links to the plugin (e.g. in form headers) could look like the following: - a hidden input field called "store" should be used to indicate a form submission