<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 17134 -->
<!-- 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 <varname>$params</varname> 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
            <methodname>getId()</methodname> Methode des Elements geholt). Wenn doppelte im
            <methodname>dojo()</methodname> View Helfer erkannt werden, wird der Dekorator eine
            Notiz auswerfen, aber dann eine eindeutige ID erstellen indem die Rückgabe von
            <methodname>uniqid()</methodname> 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 language="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 language="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:
-->
