The following directory structure is required: - python code: plugins/MODULENAME/MODULENAME.py (all lower case is recommended) - language files: plugins/MODULENAME/lang/(en|de|??).hdf - clearsilver templates: plugins/MODULENAME/*.cs Python code interface: def prepareForm(hdf, cbox): - here you may add some items to the hdf dataset used by the templates - the recommended namespace is Data.Modules.MODULENAME.??? def doAction(cbox, store=None, ???): - this function will get called whenever this module 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 raise a CBPluginException (e.g. CBPluginActionError) - the error message should be the name of a warning message (maybe defined in the plugin specific language file) - e.g. "InvalidDate" for Lang.WarningMessage.InvalidDate - the return value should be the name of the template that should be displayed after processing (a template file in the module directory takes precedence over global template files) def def getStatus(cbox): - returns a string, that described a state connected to this module (e.g. the current date and time (for the "date" plugin) Language file structure: - the following values _must_ be defined: Lang.Modules.MODULENAME.Name (a short description) Lang.Modules.MODULENAME.Link (the visible text for links to this module) Lang.Modules.MODULENAME.Rank (defines the order of the plugins displayed) - all other elements should follow the usual structure of language files Clearsilver template: - should start with a "

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