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