<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 14978 -->
<!-- Reviewed: no -->
<sect2 id="zend.dojo.form.decorators">
    <title>Dijit-Spezifische Formular Dekoratore</title>

    <para>
        Die meisten Formular Elemente können den DijitElement Dekorator verwenden, welche die Dijit Parameter
        von den Elementen nimmt und Sie, und andere Metadaten, dem View Helfer übergibt der vom Element
        spezifiziert wurde. Für die Dekoration von Formularen, Unterformularen und Anzeigegruppen gibt es
        trotzdem ein Set von Dekoratoren die den verschiedenen Layout Dijits entsprechen.
    </para>

    <para>
        Alle Dijit Dekoratore schauen nach der <code>dijitParams</code> Eigenschaft des gegebenen Elements das
        dekoriert werden soll, und gibt Sie als <code>$params</code> Array an den verwendeten Dijit View Helfer;
        diese werden dann von den anderen Eigenschaften seperiert damit keine Duplikation von Informationen
        stattfindet.
    </para>

    <sect3 id="zend.dojo.form.decorators.dijitElement">
        <title>DijitElement Dekorator</title>

        <para>
            Die der <link linkend="zend.form.standardDecorators.viewHelper">ViewHelper Dekorator</link>
            erwartet DijitElement eine <code>helper</code> Eigenschaft im Elemente welche dann verwendet
            wird wenn der View Helfer sich um die Darstellung kümmert. Dijit Parameter werden typischerweise
            direkt vom Element geholt, können aber auch als Optionen über den <code>dijitParams</code>
            Schlüssel übergeben werden (der Wert des Schlüssels sollte ein assoziatives Array von Optionen
            sein).
        </para>

        <para>
            Es ist wichtig das jedes Element eine einzigartige ID hat (die wird vom der <code>getId()</code>
            Methode des Elements geholt). Wenn doppelte im <code>dojo()</code> View Helfer erkannt werden,
            wird der Dekorator eine Notiz auswerfen, aber dann eine eindeutige ID erstellen indem die
            Rückgabe von <code>uniqid()</code> an den Identifikator angehängt wird.
        </para>

        <para>
            Die Standardverwendung besteht einfach darin diesen Dekorator als ersten in der Dekoratorkette
            assoziieren, und keine zusätzlichen Optionen zu setzen.
        </para>

        <example id="zend.dojo.form.decorators.dijitElement.usage">
            <title>Verwendung des DijitElement Dekorators</title>

            <programlisting role="php"><![CDATA[
$element->setDecorators(array(
    'DijitElement',
    'Errors',
    'Label',
    'ContentPane',
));
]]>
            </programlisting>
        </example>
    </sect3>

    <sect3 id="zend.dojo.form.decorators.dijitForm">
        <title>DijitForm Dekorator</title>

        <para>
            Der DijitForm Dekorator ist dem <link linkend="zend.form.standardDecorators.form">Form
            Dekorator</link> sehr ähnlich; faktisch kann er mit diesem grundsätzlich getauscht werden, da
            er den selben View Helfernamen verwendet ('form').
        </para>

        <para>
            Da dijit.form.Form keine dijit Parameter für die Konfiguration benötigt, besteht der grundsätzliche
            Unterschied darin das dem Dijit Fomular Viewhelfer eine DOM ID übergeben werden muß um
            sicherzustellen das die programtechnische Dijiterstellung funktionieren kann. Der Dekorator stellt
            das sicher indem der Formularname als Identifikator übergeben wird.
        </para>
    </sect3>

    <sect3 id="zend.dojo.form.decorators.dijitContainer">
        <title>DijitContainer-basierende Dekoratore</title>

        <para>
            Der <code>DijitContainer</code> Dekorator ist in Wirklichkeit eine abstrakte Klasse von der eine
            Anzahl an anderen Dekoratoren erbt. Er bietet die selbe Funktionalität wie
            <link linkend="zend.dojo.form.decorators.dijitElement">DijitElement</link> mit der zusätzlichen
            Unterstützung des Titels. Viele Layout Dijits benötigen den Titel oder können Ihn verwenden;
            DijitContainer verwendet die Legend Eigenschaft des Elements wenn Sie vorhanden ist, und kann auch
            die 'legend' oder die 'titel' Dekoratoroption verwenden, wenn diese übergeben werden. Der Titel
            wird übersetzt wenn ein Übersetzungsadapter mit einer entsprechenden Übersetzung vorhanden ist.
        </para>

        <para>
            Nachfolgend ist eine Liste an Dekoratoren die von <code>DijitContainer</code> erben:
        </para>

        <itemizedlist>
            <listitem><para>AccordionContainer</para></listitem>
            <listitem><para>AccordionPane</para></listitem>
            <listitem><para>BorderContainer</para></listitem>
            <listitem><para>ContentPane</para></listitem>
            <listitem><para>SplitContainer</para></listitem>
            <listitem><para>StackContainer</para></listitem>
            <listitem><para>TabContainer</para></listitem>
        </itemizedlist>

        <example id="zend.dojo.form.decorators.dijitContainer.usage">
            <title>Verwendung des DijitContainer Dekorators</title>

            <programlisting role="php"><![CDATA[
// Einen TabContainer im eigenen Formular verwenden:
$form->setDecorators(array(
    'FormElements',
    array('TabContainer', array(
        'id'          => 'tabContainer',
        'style'       => 'width: 600px; height: 500px;',
        'dijitParams' => array(
            'tabPosition' => 'top'
        ),
    )),
    'DijitForm',
));

// Ein ContentPane im eigenen Unterformular verwenden (welches mit allen
// ausser AccordionContainer verwendet werden kann):
$subForm->setDecorators(array(
    'FormElements',
    array('HtmlTag', array('tag' => 'dl')),
    'ContentPane',
));
]]>
            </programlisting>
        </example>
    </sect3>
</sect2>
<!--
vim:se ts=4 sw=4 et:
-->
