|Subject:||[proposal] Widget templating|
|From:||Ross Gardler (rgar...@opendirective.com)|
|Date:||Sep 28, 2011 3:27:19 am|
This post is cross-posted to the Wookie and Rave in Context project lists. Rave in Context is a short term project I am working. The goal of that project is to create a set of usable and accessible widget templates for common functionality such as login, result list search and browse and data entry. The Rave part in the title is there because our final deployment platform will be Rave (and yes, that means I have to integrate Wookie and Rave).
I want to bring the templating functionality into Wookie itself. The Rave in Context project is short lived and I want its outputs to live beyond the project itself. Consequently I want to do the design and development in the Wookie project if the community is interested (there is no Rave in Context community and we have no intention of building one).
Here's my rational for offering the code to Wookie:
The template system that I built so far in Wookie is really just a set of demonstration widgets. You create a widget then edit it to make it do what you need. Each widget needs to be maintained independently, which can be time consuming and error prone.
The Rave in Context widgets need to be built from a common set of templates so that they can all be updated quickly and cheaply. The goal is for all the widgets to have the same look and feel. Since the templates themselves will focus on usability, learnabilty and accessbility this means that we will have a high quality set of templates from which to build W3C widgets.
I've begun work and have a very simple templating system up and running . It is a long way from complete, but already we can define a widget simply by creating a properties file such as:
ric.template.name=home ric.widget.shortname=myExperiment ric.widget.name=myExperiment Mobile ric.widget.description=myExperiment makes it easy to find, use and share scientific workflows and other Research Objects, and to build communities. ric.widget.help=<p>There is no help for this widget at present, please contact the <a href="http://wiki.myexperiment.org/">myExperiment community</a> for support.</p>
Then by running "ant generate-widgets" we generate the widget described by the properties file (along with any others that have been defined).
Clearly this is very limited right now. There is currently no ability to significantly customise the generated widget. For example, at present all the widgets generated have examctly the same login/signup buttons. Even worse they will all have the myExperiment action buttons (which are only appropriate to myExperiment widgets).
My next development goal is to use a templating engine to allow for widget customisation. I'm thinking of Apache Velocity at present, it's old but it is simple and it works, at a later date we could introduce more complex systems to do really cleaver stuff, but for now I just want to make it work.
Once implemented widget definitions will be able to define something like:
Where content.vm is a template that is included in a predefined location in the template and ric.login.enabled indicates whether the login buttons should be included. Now we have truly individual widget but with a consistent look and feel.
My question to the Wookie list is "do you want to see this work in the scratchpad area of Wookie rather than in it's current invisible home at Rave in Context".
I'd be thrilled if people here wanted to help develop the code, but I'm very happy to drive this forwards myself and welcome feedback and suggestions along the way. I won't get any of that in the Rave in Context project so I want to bring it here early.
 If anyone wants to have a look at how it works then run an instance of Wookie, checkout the code at  and do "ant generate-test-widgets" then look in your Wookie widget gallery for the Rave in Context logo.
-- Ross Gardler (@rgardler) Programme Leader (Open Development) OpenDirective http://opendirective.com