Version 7 (modified by 12 years ago) ( diff ) | ,
---|
BluePrint: Plugins
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
- Template
- Settings
- Prepop
- Controller Customizations
- Parsers
- Theme
- Views
- CSS
- Widgets
- Applying the Widgets to existing modules would be done in controller customizations in templates
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 (unless this plugin includes the 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: