> > 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
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 [EMAIL PROTECTED] I will be happy to send you the current code.