You are here:   » Home » Documentation » Details » How-To » DTML/Products » Formulator

Integration of Zope Products exemplified by the 'Formulator'

Author: Dr. Frank Hoffmann, 2003/05/26

To integrate Zope products in ZMS documents resp. content hierarchies two different approaches exist; you can use the standard object 'Systemfolder' or locate resp. integrate the foreign products at the 'Zope level' of ZMS.

Formulator is a favoured Zope product for creating individual user input forms; the product allows an easy creation of typical poll element sequences and is able to validate the submissions.

1. Integration into a ZMS text section

The following screen sequence shows how easy the integration into ZMS is.
After installation of the product the Action-List at the 'Zope-level' is enhanced with the new product. Under ZMS the Zope level is accessible for the Admin/Manager via the little 'Z'-button right on top resp. per URL /manage_system; this can be displayed for each node and so it is possible to store - quasi invisible - external products that can be integrated into the text stream by corresponding DTML calls 'beneath' each document resp. text object. The page rendering is provided completely by ZMS.

Zoom (32KB)

[1] Formulator objects are displayed in the ZMS editorial interface via a ZMS-text element.

Zoom (31KB)

[2] The DTML code for the object presentation is written in a text section. Exemplary code for sequential rendering of all available child objects of the formulator object "FormulartorForm":

<p>
<dtml-var "FormulatorForm.header()">
<dtml-in "FormulatorForm.get_fields()">
    <dtml-let field=sequence-item>
       <b><dtml-var title></b><br />
       <dtml-var "field.render()">
       <br /><br />
    </dtml-let>
  </dtml-in>
  <input type="submit" value="Abschicken" name="form_sent">
<dtml-var "FormulatorForm.footer()">
</p>
Zoom (28KB)

[3] Object view in the 'Zope' mode of ZMS; the Admin/Manager can access this view via the little Z-Button right on top. The inserted formulator object is located here - in parallel to the ZMS objects.

Zoom (20KB)

[4] If you click on the formulator object, you will come to the quite common Zope display having available the usual product specific menu options.

Zoom (35KB)

[5] The site display happens via the defining master templates standard_html_header resp. standard_html_footer which are here coming out of the ZMS context and provide automatically without a break the integration of the presentation.

2. Integration via the systemfolder object

Alternatively a systemfolder object can be applied that shows the integrated product instances via direct access - with the Zope-typical menu options. Here a separate DTML method is needed for the site display that calls besides the rendering of the formulator contents the both master templates standard_html_header resp. standard_html_footer for start resp. ending. So this method does not deviate from the code above apart from the master templates:

<dtml-var standard_html_header>
<p>
<dtml-var "FormulatorForm.header()">
<dtml-in "FormulatorForm.get_fields()">
    <dtml-let field=sequence-item>
       <b><dtml-var title></b><br />
       <dtml-var "field.render()">
       <br /><br />
    </dtml-let>
  </dtml-in>
  <input type="submit" value="Abschicken" name="form_sent">
<dtml-var "FormulatorForm.footer()">
</p>
<dtml-var standard_html_footer>
Zoom (35KB)

Integration of the products via the systemfolder object.