[Zope-CMF] Major action exhancements
Dieter Maurer
dieter at handshake.de
Sat Mar 6 06:43:37 EST 2004
CMF friends,
yesterday, I became aware that colleagues of mine had implemented
user actions by an individual macro for each action; the ActionsTool
was only used as a listing device; everything else was handled
in the macros -- in my view a conceptionally wrong approach.
On the other hand, I had to admit that the current actions feature
set was indeed far away from their requirements.
I make this proposal such that my colleagues (and others of course)
can implement their demanding appliciations in the future based
essentially on the "standard" features of CMF actions.
Use cases:
* add additional "attributes" on actions (description, help text,
target, icons, ...)
* support different policies for unavailable actions
(my colleagues need to represent unavailable actions
by a "disabled" icon and "available" actions as an "enabled" icon
* support advanced user interaction features: e.g. buttom
implementations by applets or javascript
* provide different URLs depending on context
Immediate measures:
* Make actions (more precisely: action definitions) first class objects
(with their own management pages), make them "PropertyManagers".
This way, actions can get arbitrary additional attributes.
* Make available action descriptions (as delivered by
"listFilteredActionsFor") instances of a new
"ActionDescription" class (rather than dictionaries).
For backward compatibility, this class implements the
"mapping" interface (such that instances can be accessed
in the same way as the former dictionaries).
Instances provide access to both the properties in
the corresponding action definition as well as to
information "evaluated" in the current context.
The class provides an additional method "evaluate".
This method evaluates a TALES expression in the same
context used by the "ActionsTool" (or specialized action providers
such as DCWorkflow) to evaluate the "standard" tales expressions.
* Add a new boolean property to actions (their definitions):
"listAlways". This tells the ActionsTool that this
action should be listed even when it is unavailable.
"ActionDescriptions" get a new key "isAvailable" with
the obvious meaning.
This allows the implementation of different policies to
represent action availability/inavailability.
* Make "DCWorkflow" actions consistent with the actions used
elsewhere
* Replace the "ActionProviderBase" management page.
This page is already weired. With the enhancements noted
above, it would become a nightmare.
I would take the pages used by DCWorkflow to summarize
its various "containers" (states, transitions, ...).
But I am not a designer. Maybe someone else can provide
a better presentation.
Future measures:
* Define action types to capture common properties of a family
of related action definitions (e.g. common icons for
all "edit" actions (now done in the separate "ActionIconsTool").
Action definitions inherit properties from the associated
type (maybe types?) but can override them.
* Provide a registry for action categories.
These action categories are first class objects ("PropertyManagers"),
control the context to evaluate TALES expressions in and
can get additional properties useful for presentation of
this category.
I will soon start to implement the "immediate measures".
--
Dieter
More information about the Zope-CMF
mailing list