= !BluePrint: Plugins = [[TOC]] == Introduction == Plugins allow people to extend Sahana Eden without their code needing to be added to Trunk & yet keeping their Trunk install conmpletely clean. This helps prevent merge conflicts between different deployment branches & hence reduces the risk of forking. == Use-Cases == === End-User === The End-User wishes to be able to browse a repository of plugins, viewing their names, descriptions & who maintains them. They wish to be able to click on a plugin to easily install them into their running instance of Eden. === Developer === The Developer wishes to be able to develop new functionality which extends a base Eden install without needing to have anything added to Trunk. This functionality may include: * Modules * Models * Controllers * [DeveloperGuidelines/Templates Template] * Settings * Prepop * Controller Customizations * Parsers * [DeveloperGuidelines/Themes Theme] * Views * CSS == Design == * A plugin is a Web2Py application which acts as a co-app to the main Eden instance. * The plugin will have standard files to identify itself to Eden: * Metadata (Name, Description, Maintainer) * Menu entries * List of Modules to be added to Auth UI * The Eden instance can be configured with a list of plugins using {{{settings.plugins = ["plugin1", "plugin2"]}}} * This could be done in either models/000_config.py or a Template * Q: How can we download these from a URL if not found? * S3Menu to be extended to read the settings & add additional menu entries found in those folders * Templates which don't use S3Menu will not support these, but that's seen as a bug in these templates === Future extensions === == Implementation == Once implemented the design will move here: * DeveloperGuidelines/Plugins ---- [BluePrint BluePrints]