|
The master UML diagram showing
the overall structure of the MightyCal Zope Backend. This diagram
shows the general connections between the classes that exist in the
EventTypeRegistry, but does not show, for instance, any of the myriad
ways in which a FieldSpec can be composed.
|
|
The Change DataType Collaboration shows the
interaction between classes when an administrator tells a FieldSpec to
change its data type. This is an excellent overview of the FieldSpec
Composite design pattern.
|
|
The Template Overview shows graphically how the
Cocoon frontend interacts with the Zope backend in order to generate
result documents in the user's requested format, while retaining the look-and-feel
that the administrator has requested
|
|
A UML diagram showing how Templates are organized
into collections, which belong to Calendars.
|
FieldSpec Composites:
FieldSpec instances implement the Composite design pattern from
Design Patterns (Gamma et. al.). Different arrangements
of subsidiary ContentTypes, DataTypes, DataRangeProviders and DefaultValueProviders
allow the single FieldSpec class to behave in any number of different ways,
without any recoding of the base FieldSpec class itself.
|
Basic (Default) FieldSpec configuration:
When a FieldSpec is first instantiated, it assumes the Composite structure
shown in this diagram. It defaults to a BasicContentType containing
a StringDataType, with a SimpleStringDefaultValueProvider and a SimpleStringDataRangeProvider
which together permit unrestricted text entry.
|
|
Action Composite: Instantiates a
FieldSpec that can hold values to specify a Calendar Action, including
the Action's name, time offset relative to the Event time, and whether
the Action should happen relative to the start or end of the Event.
|
|
Resource Composite: Instantiates
a FieldSpec which can hold values to specify a Resource usage instance.
In this case, this means holding information about the Resource ID,
and the time range that the resource is being used by the Event.
|
|
TimeRange Composite: Instantiates
a FieldSpec which holds information about a time range, including the start
date & time, the duration of the range (stored in seconds) along with
the units to be used in displaying the range (days, hours, weeks, etc.)
|
|
Data Entry Process Diagrams
The new data entry process, which uses the DataEntryHandler and DataEntryTransaction
classes, is outlined in the following diagrams. The DataEntryTransaction
object, in particular, allows user agents of almost any kind to participate
in a multi-stage data-entry process, which allows for validation of entries
and showing the user his errors, without having to design special data-entry
routines for each user agent (in particular, both the backend Zope Management
Interface and the frontend Cocoon data entry pages utilize the same routines).
|
The Action diagram for the data entry process,
in particular illustrating how a transaction is created with the user's data
as he enters it, how the data is not actually committed to an event until
validation has completed, and how the user gets returned to the same transaction
until he corrects all errors.
|
|
The Collaboration Diagram showing how a DataEntryTransaction
is handled, especially how it interacts with the EventCatalog and the EventType/FieldSpec
composite to perform validation; it also shows how the DataEntryTransaction
object is now the controller of the WidgetMaker objects, rather than the
DataType objects as before.
|
|