Something better than ZClasses (was: Re: [Zope-dev] Re:
Zcatalog bloat problem (berkeleydb is a solution?))
Stephan Richter
srichter@cbu.edu
Tue, 26 Jun 2001 21:30:35 -0500
--=====================_21885678==_
Content-Type: text/plain; charset="us-ascii"; format=flowed
> > I will upload the documents tomorrow though, since it is late here and
> > I have to do some work still.
>
>Ok. I'll begin thinking about all the stuff I dreamt of making mk-zprod
>into.
Okay, okay...I stayed up and typed it down pretty quick (2 hours). I
attached it to this mail. It is plain text, since I was too lazy to do it
in HTML. It might be a little unstructured, but I am too tired to fix that now.
Regards,
Stephan
--
Stephan Richter
CBU - Physics and Chemistry Student
Web2k - Web Design/Development & Technical Project Management
--=====================_21885678==_
Content-Type: text/plain; charset="us-ascii"
Content-Disposition: attachment; filename="WizardProposal.txt"
SmartWizards - A framework to generate the Every-Day-Wizard
===========================================================
by Stephan Richter in June 2001
Version 0.1
The following parts of a *default* WizardPage are defined:
+-------------+------------------------------------------------------+
| | |
| Logo | Header and Long Description |
| | |
+-------------+------------------------------------------------------+
| | |
| Wizard | Wizard |
| | |
| Overview | Main |
| | |
| | Window |
| | |
| | |
| | |
| | |
| | |
+-------------+------------------------------------------------------+
| Status Messages |
+--------------------------------------------------------------------+
| Navigation Bar (buttons to move) |
+--------------------------------------------------------------------+
Therefore there are the following standard methods defined in a wizard:
wizardHeader wizardStatus
wizardFooter wizardNavigationBar
wizardOverview wizardMainWindow
wizardDescription
Functionalities of these methods:
=================================
wizardOverview:
---------------
- should display a list of all pages (display short description/title)
- needs to know about the active page to highlight it
Default Output: A numbered list of all the pages with the active one
highlighted.
wizardDescription:
------------------
- shows the 'long' description of the active page
- there might be also a static part, depending on the application
wizardStatus:
-------------
- status messages/information
o Errors by form validation
o administrative messages (required fields, ...)
o wizard information (page x out of y)
wizardNavigation:
-----------------
- there should be only buttons here!
- maybe we should define where the buttons are, since grouping some
of them will be necessary
wizardMainWindow:
-----------------
- here goes the real page information
- there can be: forms, other actions, information and everything mixed
Classes
=======
SmartWizard --> Folder
----------------------
- we are going to use Sessions (CoreSessionTracking) and Versions to keep track of the
user's status.
- Since it will be too hard to give all information first and then commit everything
at the end, we decided to use versions, which we can always not commit, if a roll-
back is requested.
- All the other info is saved in the session, since several people at once could use
the wizard at once.
- Also, we will keep track of the active page by simply storing the index of the page
inside the Pages folder; since it is an OrderedFolder we can do this safely.
- methods: wizardHeader
wizardFooter
wizardCSS
wizardStatus
wizardNavigationBar
wizardOverview
wizardMainWindow
wizardDescription
wizardSession - Contains all the session data information
Object is of type SessionDataManager.
Versions - Folder that contains versions of the people which use the wizard.
Object is of type Folder.
Pages - The container of all the WizardPages that being displayed during
the Wizard.
Object is of type OrderedFolder (see Zope.org).
- attributes: activePageIndex - specific value is stored in the session (because of
multiple users)
wizardWidth - Width of the Wizard Window in the browser.
wizardHeight - Same for height.
WizardPage --> OrderedFolder
----------------------------
- WizardPages are the objects that are responsible for one Wizard Page/Screen.
- methods: shortDescription
longDescription
content
action
status
ActionButtons - Contains all the ActionButton instances for the navigation
bar. I am still thinking about the grouping.
ActionButton --> SimpleItem, PropertyManager
--------------------------------------------
- Simple class to represent an action object
- Later this should maybe support graphical submits as well.
- methods: render - return the information of the class in a valid HTML input tag
- attributes: title - Text that is displayed on the button
action - the method to call, when the button is pressed.
WizardPageTemplates --> WizardPage
----------------------------------
o FormPageTemplate - contains a Formulator Form and automatically knows how to render
it. This is easy, since I have done that before.
o SectionPageTemplate - This will contain a SmartSection instance. SmartSections are
a way for the non-programmer to quickly create Web-Sites. The
initial development is not yet done, but will be completed
soon.
o TreePageTemplate - Select an object or other value from an OFS Tree.
- These templates only have a factory (meaning a constructorForm, constructor) and no
class, since they are only making some adjustments to the WizardPage, but do not
enhance its functionality.
Notes:
------
- The framework is very flexible, since all the methods are prefilled, but can be
overwritten.
- All the Use Cases I came up with can be implemented using this framework.
- I think that the product has a potential for all the applications that have to get
a lot of info from the non-technical user. Some projects I think that could profit
are Squishdot, proiektor, kontentor, ZopeGUM, mk-prod and many others.
- The proiektor installer provides a nice prototype of how generated Wizards should
look and behave like.
Done:
-----
- Classes are created with inital attributes and methods.
- HTML code for the Wizard
- Initial Setup for all the Wizard methods
ToDo:
-----
- Create versions and sessions for the user.
- Fill-in basic actions and functionality.
- Implementation of WizardPageTemplates
- A nice Wizard CSS (since this product is for the end user)
- A cute SmartWizard Logo ;)
- ...
Issues:
-------
- None so far. The project is fairky easily to have an overview over.
If you are interested in co-developing this new Product with iuveno AG, please
contact Stephan Richter at srichter@iuveno-net.de. I will be happy to send you
the current code.
--=====================_21885678==_--