| | 1 | = !BluePrint: Plugins = |
| | 2 | [[TOC]] |
| | 3 | |
| | 4 | == Introduction == |
| | 5 | Plugins allow people to extend Sahana Eden without their code needing to be added to Trunk & yet keeping their Trunk install conmpletely clean. |
| | 6 | |
| | 7 | This helps prevent merge conflicts between different deployment branches & hence reduces the risk of forking. |
| | 8 | |
| | 9 | == Use-Cases == |
| | 10 | === End-User === |
| | 11 | 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. |
| | 12 | |
| | 13 | === Developer === |
| | 14 | The Developer wishes to be able to develop new functionality which extends a base Eden install without needing to have anything added to Trunk. |
| | 15 | |
| | 16 | This functionality may include: |
| | 17 | * Modules |
| | 18 | * [DeveloperGuidelines/Templates Template] |
| | 19 | * [DeveloperGuidelines/Themes Theme] |
| | 20 | |
| | 21 | == Design == |
| | 22 | * A plugin is a Web2Py application which acts as a co-app to the main Eden instance. |
| | 23 | * The plugin will have standard files to identify itself to Eden: |
| | 24 | * Metadata (Name, Description, Maintainer) |
| | 25 | * Menu entries |
| | 26 | * List of Modules/Functions to be added to Auth UI |
| | 27 | * The Eden instance can be configured with a list of plugins using {{{settings.plugins = ["plugin1", "plugin2"]}}} |
| | 28 | * This could be done in either models/000_config.py or a Template |
| | 29 | * Q: How can we download these from a URL if not found? |
| | 30 | * S3Menu to be extended to read the settings & add additional menu entries found in those folders |
| | 31 | |
| | 32 | === Future extensions === |
| | 33 | |
| | 34 | == Implementation == |
| | 35 | Once implemented the design will move here: |
| | 36 | * DeveloperGuidelines/Plugins |
| | 37 | |
| | 38 | |
| | 39 | ---- |
| | 40 | [BluePrint BluePrints] |