wiki:BluePrint/Plugins

Version 7 (modified by Fran Boon, 8 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:


BluePrints

Note: See TracWiki for help on using the wiki.