<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 24249 -->
<!-- Reviewed: no -->
<sect2 id="zend.dojo.form.elements">
    <title>Dijit-Specifische Fomularelemente</title>

    <para>
        Jedes Formular-Dijit für welches ein Viewhelfer vorhanden ist hat ein korrespondierendes
        <classname>Zend_Form</classname> Element. Alle von Ihnen bieten die folgenden Methoden für
        die Manipulation von Dijit Parametern an:
    </para>

    <itemizedlist>
        <listitem>
            <para>
                <methodname>setDijitParam($key, $value)</methodname>: Setzt einen einzelnen Dijit
                Parameter. Wenn der Dijit Parmeter bereits existiert wird er überschrieben.
            </para>
        </listitem>

        <listitem>
            <para>
                <methodname>setDijitParams(array $params)</methodname>: Setzt mehrere Dijit
                Parameter auf einmal. Jeder übergebene Parameter der bereits existierenden
                entspricht wird überschrieben.
            </para>
        </listitem>

        <listitem>
            <para>
                <methodname>hasDijitParam($key)</methodname>: Wenn ein angegebener Dijit Parameter
                definiert und vorhanden ist, wird <constant>TRUE</constant> zurückgegeben,
                andernfalls <constant>FALSE</constant>.
            </para>
        </listitem>

        <listitem>
            <para>
                <methodname>getDijitParam($key)</methodname>: Gibt den angegebenen Dijit Parameter.
                Wenn er nicht vorhanden ist, wird ein <constant>NULL</constant> Wert zurückgegeben.
            </para>
        </listitem>

        <listitem>
            <para>
                <methodname>getDijitParams()</methodname>: Gibt alle Dijit Parameter zurück.
            </para>
        </listitem>

        <listitem>
            <para>
                <methodname>removeDijitParam($key)</methodname>: Entfernt den angegebenen Dijit
                Parameter.
            </para>
        </listitem>

        <listitem>
            <para>
                <methodname>clearDijitParams()</methodname>: Löscht alle aktuell definierten Dijit
                Parameter.
            </para>
        </listitem>
    </itemizedlist>

    <para>
        Dijit Parameter werden in der öffentlichen <property>dijitParams</property> Eigenschaft
        gespeichert. Deshalb kann ein existierendes Formularelement einfach dijit-aktiviert werden
        indem diese Eigenschaft auf dem Element gesetzt wird; man hat in diesem Fall nur nicht die
        Zugriffsmethoden um die Parameter zu manipulieren.
    </para>

    <para>
        Zusätzlich implementieren Dijit-spezifische Element eine andere Liste von Dekoratoren, die
        dem folgenden entsprechen:
    </para>

    <programlisting language="php"><![CDATA[
$element->addDecorator('DijitElement')
        ->addDecorator('Errors')
        ->addDecorator('HtmlTag', array('tag' => 'dd'))
        ->addDecorator('Label', array('tag' => 'dt'));
]]></programlisting>

    <para>
        Effektiv wird der DijitElement Dekorator statt dem standardmäßigen ViewHelper Dekorator
        verwendet.
    </para>

    <para>
        Letztendlich stellt das Basis-Dijitelement sicher das der Dojo Viewhelfer Pfad in der View
        gesetzt ist.
    </para>

    <para>
        Eine Variante von DijitElement, DijitMulti, bietet die Funktionalität des abstrakten
        <classname>Multi</classname> Formularelements, das es Entwicklern erlaubt 'multiOptions' zu
        spezifizieren -- typischerweise Select-Optionen oder Radio-Optionen.
    </para>

    <para>
        Die folgenden Dijitelemente werden in der standardmäßigen Zend Framework Distribution
        ausgeliefert.
    </para>

    <sect3 id="zend.dojo.form.elements.button">
        <title>Button</title>

        <para>
            Wärend es nicht vom <link linkend="zend.form.standardElements.button">standardmäßigen
            Button Element</link> abgeleitet ist, implementiert es die gleiche Funktionalität, und
            kann als Drop-In Ersatz hierfür verwendet werden. Die folgende Funktionalität wird zur
            Verfügung gestellt:
        </para>

        <itemizedlist>
            <listitem>
                <para>
                    <methodname>getLabel()</methodname> verwendet den Elementnamen als Label für
                    den Button wenn kein Name angegeben wurde. Zusätzlich übersetzt es den Namen
                    wenn ein Übersetzungsadapter mit einer passenden übersetzten Meldung vorhanden
                    ist.
                </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>isChecked()</methodname> ermittelt ob der übermittelte Wert zum
                    Label passt; wenn das der Fall ist wird <constant>TRUE</constant>
                    zurückgegeben. Das ist für die Erkennung, welcher Button verwendet wurde als
                    das Formular übermittelt wurde, nützlich.
                </para>
            </listitem>
        </itemizedlist>

        <para>
            Zusätzlich werden nur die Dekoratore <classname>DijitElement</classname> und
            <classname>DtDdWrapper</classname> für Buttonelemente benutzt.
        </para>

        <example id="zend.dojo.form.elements.button.example">
            <title>Beispiel für die Verwendung des Button Dijit Elements</title>

            <programlisting language="php"><![CDATA[
$form->addElement(
    'Button',
    'foo',
    array(
        'label' => 'Button Label',
    )
);
]]></programlisting>
        </example>
    </sect3>

    <sect3 id="zend.dojo.form.elements.checkBox">
        <title>CheckBox</title>

        <para>
            Wärend es nicht vom <link linkend="zend.form.standardElements.checkbox">standardmäßigen
            Checkbox Element</link> abgeleitet ist, implementiert es die gleiche Funktionalität. Das
            bedeutet das die folgenden Methoden zur Verfügung gestellt werden:
        </para>

        <itemizedlist>
            <listitem>
                <para>
                    <methodname>setCheckedValue($value)</methodname>: Setzt den Wert der verwendet
                    werden soll wenn das Element angehakt ist.
                </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>getCheckedValue()</methodname>: Gibt den Wert des Elements zurück
                    der verwendet wird wenn das Element angehakt ist.
                </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setUncheckedValue($value)</methodname>: Setzt den Wert des Elements
                    der verwendet wird wenn das Element nicht angehakt ist.
                </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>getUncheckedValue()</methodname>: Gibt den Wert des Elements zurück
                    der verwendet wird wenn das Element nicht angehakt ist.
                </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setChecked($flag)</methodname>: Markiert das Element als angehakt
                    oder nicht angehakt.
                </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>isChecked()</methodname>: Ermittelt ob das Element aktuell angehakt
                    ist.
                </para>
            </listitem>
        </itemizedlist>

        <example id="zend.dojo.form.elements.checkBox.example">
            <title>Beispiel für die Verwendung des CheckBox Dijit Elements</title>

            <programlisting language="php"><![CDATA[
$form->addElement(
    'CheckBox',
    'foo',
    array(
        'label'          => 'Eine Checkbox',
        'checkedValue'   => 'foo',
        'uncheckedValue' => 'bar',
        'checked'        => true,
    )
);
]]></programlisting>
        </example>
    </sect3>

    <sect3 id="zend.dojo.form.elements.comboBox">
        <title>ComboBox und FilteringSelect</title>

        <para>
            Wie in der ComboBox
            <link linkend="zend.dojo.view.dijit.form">Dijit Viewhelfer Dokumentation</link>
            beschrieben, sind Comboboxen ein Hybrid zwischen Select und Texteingaben, erlauben
            automatische Vervollständigung und die Fähigkeit eine Alternative zu den angebotenen
            Optionen zu spezifizieren. FilteringSelects sind genauso, nur erlauben Sie keine eigenen
            Eingaben.
        </para>

        <note>
            <title>ComboBoxen geben die Labelwerte zurück</title>

            <para>
                ComboBoxen geben die Labelwerte, und nicht die Werte der Option zurück, was zu einem
                Problem bei den Annahmen führen kann. Aus diesem Grund registieren Sie die
                <classname>InArray</classname> Prüfung nicht automatisch (obwohl FilteringSelects
                das macht).
            </para>
        </note>

        <para>
            Das ComboBox und FilteringSelect Formularelemente bietet Zugriffsmethoden und Mutatoren
            für das Ermitteln und Setzen von Selectoptionen sowie das Spezifizieren des
            <command>dojo.data</command> Datenspeichers (wenn er verwendet wird). Sie erweitern
            DijitMulti, welches es erlaubt Selectoptionen über die Methoden
            <methodname>setMultiOptions()</methodname> und <methodname>setMultiOption()</methodname>
            zu spezifizieren. Zusätzlich stehen die folgenden Methoden zur Verfügung:
        </para>

        <itemizedlist>
            <listitem>
                <para>
                    <methodname>getStoreInfo()</methodname>: Gibt alle aktuell gesetzten
                    Informationen des Datenspeichers zurück. Gibt ein leeres Array zurück wenn
                    aktuell keine Daten gesetzt sind.
                </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setStoreId($identifier)</methodname>: Setzt die
                    Identifikatorvariable des Speichers (normalerweise wird darauf durch das
                    Attribut 'jsId' in Dojo referiert). Das sollte ein gültiger Name für eine
                    Javascriptvariable sein.
                </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>getStoreId()</methodname>: Gibt den Namen der Identifikatorvariable
                    des Speichers zurück.
                </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setStoreType($dojoType)</methodname>: Setzt die Datenspeicherklasse
                    die verwendet werden soll; z.B.,
                    "<command>dojo.data.ItemFileReadStore</command>".
                </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>getStoreType()</methodname>: Gibt die Dojo Datenspeicherklasse
                    zurück die verwendet werden soll.
                </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setStoreParams(array $params)</methodname>: Setzt jeden verwendeten
                    Parameter um das Datenspeicherobjekt zu konfigurieren. Als Beispiel würde der
                    <command>dojo.data.ItemFileReadStore</command> Datenspeicher einen 'url'
                    Parameter erwarten der auf einen Ort zeigt der das <command>dojo.data</command>
                    Objekt zurückgibt.
                </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>getStoreParams()</methodname>: Gibt alle aktuell gesetzten
                    Datenspeicher Parameter zurück; wenn keiner gesetzt ist, wird ein leeres Array
                    zurückgegeben.
                </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setAutocomplete($flag)</methodname>: Zeigt ob das selektierte
                    Element verwendet wird oder nicht wenn der Benutzer das Element verlässt.
                </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>getAutocomplete()</methodname>: Gibt den Wert des autocomplete
                    Flags zurück.
                </para>
            </listitem>
        </itemizedlist>

        <para>
            Standardmäßig, wenn kein <command>dojo.data</command> Speicher im Element registriert
            wurde, registriert dieses Element eine <classname>InArray</classname> Prüfung welche die
            Arrayschlüssel gegen registrierte Optionen prüft. Dieses Verhalten kann deaktiviert
            werden indem entweder <methodname>setRegisterInArrayValidator(false)</methodname>
            ausgerufen, oder ein <constant>FALSE</constant> Wert an den Registrierungsschlüssel
            <property>registerInArrayValidator</property> übergeben wird.
        </para>

        <example id="zend.dojo.form.elements.comboBox.selectExample">
            <title>Das ComboBox Dijit Element als Select Eingabe verwenden</title>

            <programlisting language="php"><![CDATA[
$form->addElement(
    'ComboBox',
    'foo',
    array(
        'label'        => 'ComboBox (select)',
        'value'        => 'blue',
        'autocomplete' => false,
        'multiOptions' => array(
            'red'    => 'Rouge',
            'blue'   => 'Bleu',
            'white'  => 'Blanc',
            'orange' => 'Orange',
            'black'  => 'Noir',
            'green'  => 'Vert',
        ),
    )
);
]]></programlisting>
        </example>

        <example id="zend.dojo.form.elements.comboBox.datastoreExample">
            <title>Das ComboBox Dijit Element mit einem Datenspeicher verwenden</title>

            <programlisting language="php"><![CDATA[
$form->addElement(
    'ComboBox',
    'foo',
    array(
        'label'       => 'ComboBox (datastore)',
        'storeId'     => 'stateStore',
        'storeType'   => 'dojo.data.ItemFileReadStore',
        'storeParams' => array(
            'url' => '/js/states.txt',
        ),
        'dijitParams' => array(
            'searchAttr' => 'name',
        ),
    )
);
]]></programlisting>
        </example>

        <para>
            Das obige Beispiel könnte auch <classname>FilteringSelect</classname> statt
            <classname>ComboBox</classname> verwenden.
        </para>
    </sect3>

    <sect3 id="zend.dojo.form.elements.currencyTextBox">
        <title>CurrencyTextBox</title>

        <para>
            Die CurrencyTextBox ist primär für die Unterstützung von Währungseingaben. Die Währung
            kann lokalisiert werden, und unterstützt sowohl Kommazahlen als auch ganze Zahlen.
        </para>

        <para>
            Intern ist die CurrencyTextBox abgeleitet von
            <link linkend="zend.dojo.form.elements.numberTextBox">NumberTextBox</link>,
            <link linkend="zend.dojo.form.elements.validationTextBox">ValidationTextBox</link>,
            und <link linkend="zend.dojo.form.elements.textBox">TextBox</link>; alle vorhandenen
            Methoden dieser Klassen sind vorhanden. Zusätzlich können die folgenden bedingten
            Methoden verwendet werden:
        </para>

        <itemizedlist>
            <listitem>
                <para>
                    <methodname>setCurrency($currency)</methodname>: Setzt den Typ der Währung die
                    verwendet werden soll; sollte der
                    <ulink url="http://en.wikipedia.org/wiki/ISO_4217">ISO-4217</ulink>
                    Spezifikation folgen.
                </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>getCurrency()</methodname>: Gibt den aktuellen Währungstyp zurück.
                </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setSymbol($symbol)</methodname>: Setzt das 3-buchstabige
                    <ulink url="http://en.wikipedia.org/wiki/ISO_4217">ISO-4217</ulink> Symbol der
                    Währung das verwendet werden soll.
                </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>getSymbol()</methodname>: Gibt das aktuelle Währungssymbol zurück.
                </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setFractional($flag)</methodname>: Setzt ob für die Währung
                    Kommazahlen oder ganze Zahlen verwendet werden dürfen.
                </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>getFractional()</methodname>: Gibt den Status des Kommazahlen Flags
                    zurück.
                </para>
            </listitem>
        </itemizedlist>

        <example id="zend.dojo.form.elements.currencyTextBox.example">
            <title>Beispiel für die Verwendung des CurrencyTextBox Dijit Elements</title>

            <programlisting language="php"><![CDATA[
$form->addElement(
    'CurrencyTextBox',
    'foo',
    array(
        'label'          => 'Währung:',
        'required'       => true,
        'currency'       => 'USD',
        'invalidMessage' => 'Ungültiger Wert. Es müssen das Dollarzeichen, ' .
                            'ein Komma und Cents enthalten sein.',
        'fractional'     => false,
    )
);
]]></programlisting>
        </example>
    </sect3>

    <sect3 id="zend.dojo.form.elements.dateTextBox">
        <title>DateTextBox</title>

        <para>
            DateTextBox bietet einen Kalender Drop-Down für die Auswahl eines Datums, sowie einer
            Clientseitigen Überprüfung und Formatierung.
        </para>

        <para>
            Intern ist DateTextBox abgeleitet von
            <link linkend="zend.dojo.form.elements.validationTextBox">ValidationTextBox</link> und
            <link linkend="zend.dojo.form.elements.textBox">TextBox</link>; alle vorhandenen
            Methoden dieser Klassen sind vorhanden. Zusätzlich können die folgenden Methoden
            verwendet werden um individuelle Abhängigkeiten zu setzen:
        </para>

        <itemizedlist>
            <listitem>
                <para>
                    <methodname>setAmPm($flag)</methodname> and <methodname>getAmPm()</methodname>:
                    Ob in der Zeit AM oder PM Strings verwendet werden sollen oder nicht.
                </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setStrict($flag)</methodname> und
                    <methodname>getStrict()</methodname>: Ob Reguläre Ausdrücke strikt passen
                    müssen oder nicht. Wenn es <constant>FALSE</constant> ist, was der Standardwert
                    ist, wird es nicht über Leerzeichen und einige Abkürzungen lamentieren.
                </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setLocale($locale)</methodname> und
                    <methodname>getLocale()</methodname>: Setzt und gibt die
                    Locale zurück die mit diesem speziellen Element verwendet werden soll.
                </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setDatePattern($pattern)</methodname> und
                    <methodname>getDatePattern()</methodname>: Bietet und gibt den
                    <ulink url="http://www.unicode.org/reports/tr35/#Date_Format_Patterns">Unicode
                        Pattern des Datumsformats</ulink> für die Formatierung des Datums zurück.
                </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setFormatLength($formatLength)</methodname> und
                    <methodname>getFormatLength()</methodname>: Bietet und gibt den Formatlänge Typ
                    der verwendet werden soll zurück; sollte "long", "short", "medium" oder "full"
                    sein.
                </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setSelector($selector)</methodname> und
                    <methodname>getSelector()</methodname>: Bietet und gibt den Stil des Selektors
                    zurück; sollte entweder "date" oder "time" sein.
                </para>
            </listitem>
        </itemizedlist>

        <example id="zend.dojo.form.elements.dateTextBox.example">
            <title>Beispiel der Verwendung des DateTextBox Dijit Elements</title>

            <programlisting language="php"><![CDATA[
$form->addElement(
    'DateTextBox',
    'foo',
    array(
        'label'          => 'Datum:',
        'required'       => true,
        'invalidMessage' => 'Ungültiges Datum spezifiziert.',
        'formatLength'   => 'long',
    )
);
]]></programlisting>
        </example>
    </sect3>

    <sect3 id="zend.dojo.form.elements.editor">
        <title>Editor</title>

        <para>
            Editor bietet einen <acronym>WYSIWYG</acronym> Editor der verwendet werden kann um Rich
            <acronym>HTML</acronym> Inhalte sowohl zu erstellen als auch zu bearbeiten.
            <command>dijit.Editor</command> ist pluggable und kann mit eigenen Plugins erweitert
            werden wenn das gewünscht ist; siehe <ulink
                url="http://dojotoolkit.org/reference-guide/dijit/Editor.html">die
                dijit.Editor Dokumentation</ulink> für weitere Details.
        </para>

        <para>
            Das Editor Form Element bietet eine Anzahl an Zugriffsmethoden und Mutatoren für die
            Manipulation der verschiedenen dijit Paramter, wie folgt:
        </para>

        <itemizedlist>
            <listitem>
                <para>
                    <emphasis>captureEvents</emphasis> sind Events die auf die Bearbeitungsfläche
                    selbst verbinden. Die folgenden Zugriffsmethoden und Mutatoren sind für die
                    Manipulation von Capture Events vorhanden:
                </para>

                <itemizedlist>
                    <listitem>
                        <para><methodname>addCaptureEvent($event)</methodname></para>
                    </listitem>
                    <listitem>
                        <para><methodname>addCaptureEvents(array $events)</methodname></para>
                    </listitem>
                    <listitem>
                        <para><methodname>setCaptureEvents(array $events)</methodname></para>
                    </listitem>
                    <listitem><para><methodname>getCaptureEvents()</methodname></para></listitem>
                    <listitem>
                        <para><methodname>hasCaptureEvent($event)</methodname></para>
                    </listitem>
                    <listitem>
                        <para><methodname>removeCaptureEvent($event)</methodname></para>
                    </listitem>
                    <listitem>
                        <para><methodname>clearCaptureEvents()</methodname></para>
                    </listitem>
                </itemizedlist>
            </listitem>

            <listitem>
                <para>
                    <emphasis>events</emphasis> sind Standard <acronym>DOM</acronym> Events, wie
                    onClick, onKeyUp, usw. Die folgenden Zugriffsmethoden und Mutatoren sind für die
                    Manipulation von Events vorhanden:
                </para>

                <itemizedlist>
                    <listitem>
                        <para><methodname>addEvent($event)</methodname></para>
                    </listitem>
                    <listitem>
                        <para><methodname>addEvents(array $events)</methodname></para>
                    </listitem>
                    <listitem>
                        <para><methodname>setEvents(array $events)</methodname></para>
                    </listitem>
                    <listitem><para><methodname>getEvents()</methodname></para></listitem>
                    <listitem>
                        <para><methodname>hasEvent($event)</methodname></para>
                    </listitem>
                    <listitem><para><methodname>removeEvent($event)</methodname></para></listitem>
                    <listitem>
                        <para><methodname>clearEvents()</methodname></para>
                    </listitem>
                </itemizedlist>
            </listitem>

            <listitem>
                <para>
                    <emphasis>plugins</emphasis> fügen dem Editor Funktionalitäten hinzu --
                    zusätzliche Tools für die Toolbar, zusätzliche erlaubte Stile, usw. Die
                    folgenden Zugriffsmethoden und Mutatoren sind für die Manipulation von Plugins
                    vorhanden:
                </para>

                <itemizedlist>
                    <listitem>
                        <para><methodname>addPlugin($plugin)</methodname></para>
                    </listitem>
                    <listitem>
                        <para><methodname>addPlugins(array $plugins)</methodname></para>
                    </listitem>
                    <listitem>
                        <para><methodname>setPlugins(array $plugins)</methodname></para>
                    </listitem>
                    <listitem><para><methodname>getPlugins()</methodname></para></listitem>
                    <listitem>
                        <para><methodname>hasPlugin($plugin)</methodname></para>
                    </listitem>
                    <listitem>
                        <para><methodname>removePlugin($plugin)</methodname></para>
                    </listitem>
                    <listitem>
                        <para><methodname>clearPlugins()</methodname></para>
                    </listitem>
                </itemizedlist>
            </listitem>

            <listitem>
                <para>
                    <emphasis>editActionInterval</emphasis> wird verwendet um Events für die Undo
                    Operationen zu gruppieren. Standardmäßig ist dieser Wert 3 Sekunden. Die
                    Methode <methodname>setEditActionInterval($interval)</methodname> kann
                    verwendet werden um den Wert zu setzen, während
                    <methodname>getEditActionInterval()</methodname> ihn zurückgibt.
                </para>
            </listitem>

            <listitem>
                <para>
                    <emphasis>focusOnLoad</emphasis> wird verwendet um zu erkennen ob dieser
                    spezielle Editor den Fokus erhält wenn die Seite geladen wurde. Standardmäßig
                    ist er <constant>FALSE</constant>. Die Methode
                    <methodname>setFocusOnLoad($flag)</methodname> kann verwendet werden um den
                    Wert zu setzen, während <methodname>getFocusOnLoad()</methodname> ihn empfängt.
                </para>
            </listitem>

            <listitem>
                <para>
                    <emphasis>height</emphasis> spezifiziert die Höhe des Editors; standardmäßig
                    ist sie 300px. Die Methode <methodname>setHeight($height)</methodname> kann
                    verwendet werden um den Wert zu setzen, während
                    <methodname>getHeight()</methodname> ihn zurückgibt.
                </para>
            </listitem>

            <listitem>
                <para>
                    <emphasis>inheritWidth</emphasis> wird verwendet um zu erkennen ob der Editor
                    die Breite des Parent Containers verwendet, oder einfach auf 100% Höhe.
                    Standardmäßig ist er <constant>FALSE</constant> (im Normalfall wird der die
                    Breite des Fensters ausfüllen). Die Methode
                    <methodname>setInheritWidth($flag)</methodname> kann verwendet werden um den
                    Wert zu setzen, während <methodname>getInheritWidth()</methodname> ihn
                    zurückgibt.
                </para>
            </listitem>

            <listitem>
                <para>
                    <emphasis>minHeight</emphasis> zeigt die Mindesthöhe des Editors an;
                    standardmäßig ist sie 1em. Die Methode
                    <methodname>setMinHeight($height)</methodname> kann verwendet werden um den
                    Wert zu setzen, während <methodname>getMinHeight()</methodname> ihn empfängt.
                </para>
            </listitem>

            <listitem>
                <para>
                    <emphasis>styleSheets</emphasis> zeigt an welche zusätzlichen
                    <acronym>CSS</acronym> Stylesheets verwendet werden sollen um die Anzeige des
                    Editors zu beeinflussen. Standardmäßig sind keine registriert, und es verwendet
                    die Seitenstile. Die folgenden Zugriffsmethoden und Mutatoren sind für die
                    Manipulation von Editor Stylesheets vorhanden:
                </para>

                <itemizedlist>
                    <listitem>
                        <para><methodname>addStyleSheet($styleSheet)</methodname></para>
                    </listitem>

                    <listitem>
                        <para><methodname>addStyleSheets(array $styleSheets)</methodname></para>
                    </listitem>

                    <listitem>
                        <para><methodname>setStyleSheets(array $styleSheets)</methodname></para>
                    </listitem>

                    <listitem><para><methodname>getStyleSheets()</methodname></para></listitem>

                    <listitem>
                        <para><methodname>hasStyleSheet($styleSheet)</methodname></para>
                    </listitem>

                    <listitem>
                        <para><methodname>removeStyleSheet($styleSheet)</methodname></para>
                    </listitem>

                    <listitem>
                        <para><methodname>clearStyleSheets()</methodname></para>
                    </listitem>
                </itemizedlist>
            </listitem>
        </itemizedlist>

        <example id="zend.dojo.form.elements.editor.example">
            <title>Beispiel der Verwendung des Editor dijit Elements</title>

            <programlisting language="php"><![CDATA[
$form->addElement('editor', 'content', array(
    'plugins'            => array('undo', '|', 'bold', 'italic'),
    'editActionInterval' => 2,
    'focusOnLoad'        => true,
    'height'             => '250px',
    'inheritWidth'       => true,
    'styleSheets'        => array('/js/custom/editor.css'),
));
]]></programlisting>
        </example>

        <note>
            <title>Das Editor Dijit verwendet standardmäßig div</title>

            <para>
                Das Editor dijit verwendet standardmäßig ein <acronym>HTML</acronym>
                <acronym>DIV</acronym>. Die Dokumentation für
                <command>dijit._editor.RichText</command> zeigt dass es potentielle Sicherheits
                Probleme bereiten kann wenn man es auf ein <acronym>HTML</acronym>
                <acronym>TEXTAREA</acronym> erstellt.
            </para>

            <para>
                Deshalb kann es Zeiten geben in denen man ein Editor Widget benötigt das korrekt zu
                einer <acronym>TEXTAREA</acronym> degradiert. In solchen Situationen kann man dass
                durchführen indem die Eigenschaft <property>degrade</property> auf
                <constant>TRUE</constant> gesetzt wird:
            </para>

            <programlisting language="php"><![CDATA[
// Bei der Instanzierung:
$editor = new Zend_Dojo_Form_Element_Editor('foo', array(
    'degrade' => true,
));

// Erstellung über die Form:
$form->addElement('editor', 'content', array(
    'degrade' => true,
));

// Oder nach der Instanzierung:
$editor->degrade = true;
]]></programlisting>
        </note>
    </sect3>

    <sect3 id="zend.dojo.form.elements.horizontalSlider">
        <title>HorizontalSlider</title>

        <para>
            HorizontalSlider bietet ein Schieber UI Widget für die Auswahl eines numerischen Wertes
            in einem Bereich. Intern, setzt es den Wert eines versteckten Elements welches vom
            Formular übermittelt wird.
        </para>

        <para>
            HorizontalSlider ist vom <link linkend="zend.dojo.form.elements.slider">abstrakten
                Slider Dijit Element</link> abgeleitet. Zusätzlich hat es eine Vielzahl von Methoden
            für das Setzen und Konfigurieren der Schieberregeln und Regel Labels.
        </para>

        <itemizedlist>
            <listitem>
                <para>
                    <methodname>setTopDecorationDijit($dijit)</methodname> und
                    <methodname>setBottomDecorationDijit($dijit)</methodname>: Setzt den Namen des
                    Dijits das entweder oberhalb oder unterhalb des Schiebers verwendet werden
                    soll. Es darf nicht den "dijit.form." Präfix enthalten, sondern nur den
                    endgültigen Namen -- entweder "HorizontalRule" oder "HorizontalRuleLabels".
                </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setTopDecorationContainer($container)</methodname> und
                    <methodname>setBottomDecorationContainer($container)</methodname>: Spezifiziert
                    den Namen der für das Containerelement der Regeln verwendet werden soll; z.B.
                    'topRule', 'topContainer', usw.
                </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setTopDecorationLabels(array $labels)</methodname> und
                    <methodname>setBottomDecorationLabels(array $labels)</methodname>: Setzt die
                    Labels die für eine der RuleLabel Dijit Typen verwendet werden sollen. Diese
                    sollten ein indiziertes Array sein; spezifiziere eine einzelnes Leerzeichen um
                    eine gegebene Labelposition zu überspringen (wie beim Beginn oder dem Ende).
                </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setTopDecorationParams(array $params)</methodname> und
                    <methodname>setBottomDecorationParams(array $params)</methodname>: Dijit
                    Parameter die verwendet werden sollen wenn die gegebene Rule oder RuleLabels
                    Dijits konfiguriert werden
                </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setTopDecorationAttribs(array $attribs)</methodname> und
                    <methodname>setBottomDecorationAttribs(array $attribs)</methodname>:
                    <acronym>HTML</acronym> Attribute die für die gegebene Rule oder RuleLabels
                    <acronym>HTML</acronym> Elementcontainer spezifiziert werden.
                </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>getTopDecoration()</methodname> und
                    <methodname>getBottomDecoration()</methodname>: Geben alle Metadaten für eine
                    gegebene Rule oder RuleLabels Definition zurück, wie von den obigen Mutatoren
                    geliefert.
                </para>
            </listitem>
        </itemizedlist>

        <example id="zend.dojo.form.elements.horizontalSlider.example">
            <title>Beispiel der Verwendung des HorizontalSlider Dijit Elements</title>

            <para>
                Das folgende erzeugt eine horizontale Schieberauswahl mit Integerwerten die von -10
                bis 10 reichen. Oben sind Labels bei den 20%, 40%, 60% und 80% Marken. Unten sind
                Regeln bei 0, 50% und 100%. Jedesmal wenn der Wert geändert wird, wird das
                versteckte Element das den Wert speichert aktualisiert.
            </para>

            <programlisting language="php"><![CDATA[
$form->addElement(
    'HorizontalSlider',
    'horizontal',
    array(
        'label'                     => 'HorizontalSlider',
        'value'                     => 5,
        'minimum'                   => -10,
        'maximum'                   => 10,
        'discreteValues'            => 11,
        'intermediateChanges'       => true,
        'showButtons'               => true,
        'topDecorationDijit'        => 'HorizontalRuleLabels',
        'topDecorationContainer'    => 'topContainer',
        'topDecorationLabels'       => array(
                ' ',
                '20%',
                '40%',
                '60%',
                '80%',
                ' ',
        ),
        'topDecorationParams'      => array(
            'container' => array(
                'style' => 'height:1.2em; font-size=75%;color:gray;',
            ),
            'list' => array(
                'style' => 'height:1em; font-size=75%;color:gray;',
            ),
        ),
        'bottomDecorationDijit'     => 'HorizontalRule',
        'bottomDecorationContainer' => 'bottomContainer',
        'bottomDecorationLabels'    => array(
                '0%',
                '50%',
                '100%',
        ),
        'bottomDecorationParams'   => array(
            'list' => array(
                'style' => 'height:1em; font-size=75%;color:gray;',
            ),
        ),
    )
);
]]></programlisting>
        </example>
    </sect3>

    <sect3 id="zend.dojo.form.elements.numberSpinner">
        <title>NumberSpinner</title>

        <para>
            Ein Nummernkreisel (Number Spinner) ist ein Textelement für die Eingabe von numerischen
            Werten; es enthält auch Elemente für das inkrementieren und dekrementieren des Wertes
            mit einer gesetzten Anzahl.
        </para>

        <para>
            Die folgenden Methoden sind vorhanden:
        </para>

        <itemizedlist>
            <listitem>
                <para>
                    <methodname>setDefaultTimeout($timeout)</methodname> und
                    <methodname>getDefaultTimeout()</methodname>: Setzt und gibt den
                    Standardtimeout, in Millisekunden, zurück der zwischen dem gedrückt halten des
                    Buttons und der Änderung des Wertes ist.
                </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setTimeoutChangeRate($rate)</methodname> und
                    <methodname>getTimeoutChangeRate()</methodname>: Setzt und gibe die Rate, in
                    Millisekunden, zurück mit der Änderungen durchgeführt werden wenn ein Button
                    gedrückt gehalten wird.
                </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setLargeDelta($delta)</methodname> und
                    <methodname>getLargeDelta()</methodname>: Setzt und gibt die Menge zurück mit
                    welcher der numerische Wert geändert werden soll wenn ein Button gedrückt
                    gehalten wird.
                </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setSmallDelta($delta)</methodname> und
                    <methodname>getSmallDelta()</methodname>: Setzt und gibt das Delta zurück mit
                    dem die Nummer geändert werden soll wenn ein Button einmal gedrückt wird.
                </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setIntermediateChanges($flag)</methodname> und
                    <methodname>getIntermediateChanges()</methodname>: Setzt un gibt das Flag
                    zurück das anzeigt ob jede Änderung des Werte angezeigt werden soll wenn der
                    Button gedrückt gehalten wird, oder nicht.
                </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setRangeMessage($message)</methodname> und
                    <methodname>getRangeMessage()</methodname>: Setzt und gibt die Nachricht zurück
                    die den Bereich der möglichen Werte anzeigt.
                </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setMin($value)</methodname> und <methodname>getMin()</methodname>:
                    Setzt und gibt den mindesten möglichen Wert zurück.
                </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setMax($value)</methodname> und <methodname>getMax()</methodname>:
                    Setzt und gibt den maximalen möglichen Wert zurück.
                </para>
            </listitem>
        </itemizedlist>

        <example id="zend.dojo.form.elements.numberSpinner.example">
            <title>Beispiel der Verwendung des NumberSpinner Dijit Elements</title>

            <programlisting language="php"><![CDATA[
$form->addElement(
    'NumberSpinner',
    'foo',
    array(
        'value'             => '7',
        'label'             => 'NumberSpinner',
        'smallDelta'        => 5,
        'largeDelta'        => 25,
        'defaultTimeout'    => 500,
        'timeoutChangeRate' => 100,
        'min'               => 9,
        'max'               => 1550,
        'places'            => 0,
        'maxlength'         => 20,
    )
);
]]></programlisting>
        </example>
    </sect3>

    <sect3 id="zend.dojo.form.elements.numberTextBox">
        <title>NumberTextBox</title>

        <para>
            Eine NumberTextBox ist ein Textelement für die Eingabe von numerischen Werten; anders
            als beim NummerSpinner, werden Nummern manuell eingegeben. Prüfungen und Abhängigkeiten
            können angegeben werden um sicherzustellen das die Nummer immer in einem bestimmten
            Bereich oder Format ist.
        </para>

        <para>
            Intern wird NumberTextBox abgeleitet von
            <link linkend="zend.dojo.form.elements.validationTextBox">ValidationTextBox</link> und
            <link linkend="zend.dojo.form.elements.textBox">TextBox</link>; alle in diesen Klassen
            vorhandenen Methoden sind vorhanden. Zusätzlich können die folgenden Methoden verwendet
            werden um individuelle Abhängigkeiten zu setzen:
        </para>

        <itemizedlist>
            <listitem>
                <para>
                    <methodname>setLocale($locale)</methodname> und
                    <methodname>getLocale()</methodname>: Spezifiziert und gibt ein spezifisches
                    oder alternatives Gebietsschema zurück das mit diesem Dijit verwendet werden
                    soll.
                </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setPattern($pattern)</methodname> und
                    <methodname>getPattern()</methodname>: Setzt und gibt ein <ulink
                        url="http://www.unicode.org/reports/tr35/#Number_Format_Patterns">Nummern
                        Patternformat</ulink> zurück das verwendet wird um eine Nummer zu
                    formatieren.
                </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setType($type)</methodname> und <methodname>getType()</methodname>:
                    Setzt und gibt eine numerischen Formattyp zurück der verwendet wird (sollte
                    'decimal', 'percent' oder 'currency' sein).
                </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setPlaces($places)</methodname> und
                    <methodname>getPlaces()</methodname>: Setzt und gibt die Anzahl der
                    Dezimalstellen die unterstützt werden sollen zurück.
                </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setStrict($flag)</methodname> und
                    <methodname>getStrict()</methodname>: Setzt und gibt den Wert des Strictflags
                    zurück, welches anzeigt wieviel Ungenauigkeit in Bezug auf Leerzeichen und
                    nicht-numerische Zeichen erlaubt ist.
                </para>
            </listitem>
        </itemizedlist>

        <example id="zend.dojo.form.elements.numberTextBox.example">
            <title>Beispiel der Verwendung des NumberTextBox Dijit Elements</title>

            <programlisting language="php"><![CDATA[
$form->addElement(
    'NumberTextBox',
    'elevation',
    array(
        'label'          => 'NumberTextBox',
        'required'       => true,
        'invalidMessage' => 'Ungültige Eingabe.',
        'places'         => 0,
        'constraints'    => array(
            'min'    => -20000,
            'max'    => 20000,
        ),
    )
);
]]></programlisting>
        </example>
    </sect3>

    <sect3 id="zend.dojo.form.elements.passwordTextBox">
        <title>PasswordTextBox</title>

        <para>
            PasswordTextBox ist einfach eine ValidationTextBox die an eine Passworteingabe gebunden
            ist; Ihre primäre Aufgabe ist es eine Dijit-bezogene Texteingabe für Passwörter zu
            erlauben die Client-seitige Prüfungen erlaubt.
        </para>

        <para>
            Intern wird PasswordTextBox abgeleitet von
            <link linkend="zend.dojo.form.elements.validationTextBox">ValidationTextBox</link> und
            <link linkend="zend.dojo.form.elements.textBox">TextBox</link>; alle in diesen Klassen
            vorhandenen Methoden sind vorhanden.
        </para>

        <example id="zend.dojo.form.elements.passwordTextBox.example">
            <title>Beispiel für die Verwendung des PasswordTextBox Dijit Elements</title>

            <programlisting language="php"><![CDATA[
$form->addElement(
    'PasswordTextBox',
    'password',
    array(
        'label'          => 'Passwort',
        'required'       => true,
        'trim'           => true,
        'lowercase'      => true,
        'regExp'         => '^[a-z0-9]{6,}$',
        'invalidMessage' => 'Ungültiges Passwort; muß mindestens 6 '
                          . 'alphanumerische Zeichen lang sein',
    )
);
]]></programlisting>
        </example>
    </sect3>

    <sect3 id="zend.dojo.form.elements.radioButton">
        <title>RadioButton</title>

        <para>
            RadioButton umschließt ein standard Radio-Input Element um ein konsistentes Look and
            Feel mit den anderen Dojo Dijits zu bieten.
        </para>

        <para>
            RadioButton erweitert DijitMulti, welches es erlaubt Selectoptionen über die
            <methodname>setMultiOptions()</methodname> und
            <methodname>setMultiOption()</methodname> Methoden zu spezifizieren.
        </para>

        <para>
            Standardmäßig registriert dieses Element eine <classname>InArray</classname> Prüfung
            welche die Arrayschlüssel gegen registrierte Optionen prüft. Dieses Verhalten kann
            deaktiviert werden indem entweder
            <methodname>setRegisterInArrayValidator(false)</methodname> ausgerufen, oder ein
            <constant>FALSE</constant> Wert an den Registrierungsschlüssel
            <property>registerInArrayValidator</property> übergeben wird.
        </para>

        <example id="zend.dojo.form.elements.radioButton.example">
            <title>Beispiel der Verwendung des RadioButton Dijit Elements</title>

            <programlisting language="php"><![CDATA[
$form->addElement(
    'RadioButton',
    'foo',
    array(
        'label' => 'RadioButton',
        'multiOptions'  => array(
            'foo' => 'Foo',
            'bar' => 'Bar',
            'baz' => 'Baz',
        ),
        'value' => 'bar',
    )
);
]]></programlisting>
        </example>
    </sect3>

    <sect3 id="zend.dojo.form.elements.simpletextarea">
        <title>SimpleTextarea</title>

        <para>
            SimpleTextarea arbeitet primär wie ein Standard <acronym>HTML</acronym> Textarea.
            Trotzdem unterstützt es weder die rows noch die cols Einstellung. Stattdessen, sollte
            die Breite von Textarea durch die Verwendung von standard <acronym>CSS</acronym>
            Maßeinheiten definiert werden. Anders als Textarea wird er nicht automatisch wachsen
        </para>

        <example id="zend.dojo.form.elements.simpletextarea.example">
            <title>Beispiel der Verwendung des SimpleTextarea Dijit Elements</title>

            <programlisting language="php"><![CDATA[
$form->addElement(
    'SimpleTextarea',
    'simpletextarea',
    array(
        'label'    => 'SimpleTextarea',
        'required' => true,
        'style'    => 'width: 80em; height: 25em;',
    )
);
]]></programlisting>
        </example>
    </sect3>

    <sect3 id="zend.dojo.form.elements.slider">
        <title>Abstraktes Slider Element</title>

        <para>
            Slider ist ein abstraktes Element welches abgeleitet ist von
            <link linkend="zend.dojo.form.elements.horizontalSlider">HorizontalSlider</link> und
            <link linkend="zend.dojo.form.elements.verticalSlider">VerticalSlider</link>. Es bietet
            eine Anzahl von üblichen Methoden für die Konfiguration von Slidern an, inklusive:
        </para>

        <itemizedlist>
            <listitem>
                <para>
                    <methodname>setClickSelect($flag)</methodname> und
                    <methodname>getClickSelect()</methodname>: Setzt und gibt das Flag zurück das
                    anzeigt ob das Klicken auf den Slider den Wert ändert oder nicht.
                </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setIntermediateChanges($flag)</methodname> und
                    <methodname>getIntermediateChanges()</methodname>: Setzt und gibt das Flag
                    zurück das anzeigt ob das Dijit eine Benachrichtigung bei jedem Slider-Event
                    schickt oder nicht.
                </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setShowButtons($flag)</methodname> und
                    <methodname>getShowButtons()</methodname>: Setzt und gibt das Flag zurück das
                    anzeigt ob Buttons an den Enden angezeigt werden oder nicht; wenn ja, dann kann
                    der Benutzer diese anklicken und damit den Wert des Sliders ändern.
                </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setDiscreteValues($value)</methodname> und
                    <methodname>getDiscreteValues()</methodname>: Setzt und gibt die Anzahl an
                    diskreten Werte zurück die vom Slider repräsentiert werden.
                </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setMaximum($value)</methodname> und
                    <methodname>getMaximum()</methodname>: Setzt den maximalen Wert des Sliders.
                </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setMinimum($value)</methodname> und
                    <methodname>getMinimum()</methodname>: Setzt den minimalen Wert des Sliders.
                </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setPageIncrement($value)</methodname> und
                    <methodname>getPageIncrement()</methodname>: Setzt den Wert um den sich der
                    Slider auf Tastaturereignisse ändert.
                </para>
            </listitem>
        </itemizedlist>

        <para>
            Ein Beispiel der Verwendung wird mit jeder konkreten Klasse angegeben die diese Klasse
            erweitert.
        </para>
    </sect3>

    <sect3 id="zend.dojo.form.elements.submitButton">
        <title>SubmitButton</title>

        <para>
            Wärend es kein Dijit gibt das SubmitButton heißt, wurde dieses inkludiert um ein Button
            Dijit anzubieten das fähig ist ein Formular zu übertragen ohne das irgendeine
            zusätzliche Javascript Verknüpfung benötigt wird. Es funktioniert exakt wie das
            <link linkend="zend.dojo.form.elements.button">Button Dijit</link>.
        </para>

        <example id="zend.dojo.form.elements.submitButton.example">
            <title>Beispiel der Verwendung des SubmitButton Dijit Elements</title>

            <programlisting language="php"><![CDATA[
$form->addElement(
    'SubmitButton',
    'foo',
    array(
        'required'   => false,
        'ignore'     => true,
        'label'      => 'Submit Button!',
    )
);
]]></programlisting>
        </example>
    </sect3>

    <sect3 id="zend.dojo.form.elements.textBox">
        <title>TextBox</title>

        <para>
            TextBox wurde primär inkludiert um eine Text Eingabe anzubieten die das gleiche
            Look-and-Feel wie die anderen Dijits hat. Trotzdem enthält es einige Filter- und
            Prüfmöglichkeiten, die in den folgenden Methoden repräsentiert sind:
        </para>

        <itemizedlist>
            <listitem>
                <para>
                    <methodname>setLowercase($flag)</methodname> und
                    <methodname>getLowercase()</methodname>: Setzt und gibt das Tag zurück das
                    anzeigt ob die Eingabe auf Kleinschreibung (lowercase) geändert wird oder nicht.
                </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setPropercase($flag)</methodname> und
                    <methodname>getPropercase()</methodname>: Setzt und gibt das Tag zurück das
                    anzeigt ob die Eingabe auf Proper Case geändert wird oder nicht.
                </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setUppercase($flag)</methodname> und
                    <methodname>getUppercase()</methodname>: Setzt und retourniert das Flag das
                    anzeigt ob die Eingabe auf Großschreibung (<acronym>UPPERCASE</acronym>)
                    geändert wird oder nicht.
                </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setTrim($flag)</methodname> und <methodname>getTrim()</methodname>:
                    Setzt und retourniert das Flag das anzeigt ob führende Leerzeichen entfernt
                    werden oder nicht.
                </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setMaxLength($length)</methodname> und
                    <methodname>getMaxLength()</methodname>: Setzt und retourniert die maximale
                    Länge der Eingabe.
                </para>
            </listitem>
        </itemizedlist>

        <example id="zend.dojo.form.elements.textBox.example">
            <title>Beispiel der Verwendung des TextBox Dijit Elements</title>

            <programlisting language="php"><![CDATA[
$form->addElement(
    'TextBox',
    'foo',
    array(
        'value'      => 'irgendein Text',
        'label'      => 'TextBox',
        'trim'       => true,
        'propercase' => true,
    )
);
]]></programlisting>
        </example>
    </sect3>

    <sect3 id="zend.dojo.form.elements.textarea">
        <title>Textarea</title>

        <para>
            Textarea funktioniert primär wie eine standard <acronym>HTML</acronym> Textarea.
            Trotzdem unterstützt es weder die Zeilen- noch die Spalteneinstellungen. Stattdessen
            sollte die Breite von Textarea durch Verwendung von <acronym>CSS</acronym> Maßeinheiten
            spezifiziert werden; Zeilen sollten komplett vermieden werden. Die Textarea wird dann
            vertikal wachsen wenn Text hinzugefügt wird.
        </para>

        <example id="zend.dojo.form.elements.textarea.example">
            <title>Beispiel der Verwendung des Textarea Dijit Elements</title>

            <programlisting language="php"><![CDATA[
$form->addElement(
    'Textarea',
    'textarea',
    array(
        'label'    => 'Textarea',
        'required' => true,
        'style'    => 'width: 200px;',
    )
);
]]></programlisting>
        </example>
    </sect3>

    <sect3 id="zend.dojo.form.elements.timeTextBox">
        <title>TimeTextBox</title>

        <para>
            TimeTextBox ist eine Texteingabe die einen Drop-Down für die Auswahl einer Zeit bietet.
            Der Drop-Down kann so konfiguriert werden das ein bestimmtes Zeitfenster, mit speziellen
            Inkrementierungen, angezeigt wird.
        </para>

        <para>
            Intern wird die TimeTextBox von
            <link linkend="zend.dojo.form.elements.dateTextBox">DateTextBox</link>,
            <link linkend="zend.dojo.form.elements.validationTextBox">ValidationTextBox</link> und
            <link linkend="zend.dojo.form.elements.textBox">TextBox</link> abgeleitet; alle
            vorhandenen Methoden dieser Klassen sind vorhanden. Zusätzlich können die folgenden
            Methoden verwendet werden um individuelle Abhängigkeiten einzustellen:
        </para>

        <itemizedlist>
            <listitem>
                <para>
                    <methodname>setTimePattern($pattern)</methodname> und
                    <methodname>getTimePattern()</methodname>: Setzt und retourniert den
                    <ulink url="http://www.unicode.org/reports/tr35/#Date_Format_Patterns">Unicode
                        Zeitformat Pattern</ulink> für die Formatierung der Zeit.
                </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setClickableIncrement($format)</methodname> und
                    <methodname>getClickableIncrement()</methodname>: Setzt den <ulink
                        url="http://en.wikipedia.org/wiki/ISO_8601">ISO_8601</ulink>
                    String der die Anzahl repräsentiert mit dem jedes anklickbare Element der
                    Zeitauswahl inkrementiert wird.
                </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setVisibleIncrement($format)</methodname> und
                    <methodname>getVisibleIncrement()</methodname>: Definiert das der Inkrement in
                    der Zeitauswahl sichtbar ist; muß dem <constant>ISO_8601</constant> Format
                    entsprechen.
                </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setVisibleRange($format)</methodname> und
                    <methodname>getVisibleRange()</methodname>: Setzt und retorniert den
                    Zeitbereich der in der Zeitauswahl zu jedem Zeitpunkt sichtbar ist; muß dem
                    <constant>ISO_8601</constant> Format entsprechen.
                </para>
            </listitem>
        </itemizedlist>

        <example id="zend.dojo.form.elements.timeTextBox.example">
            <title>Beispiel der Verwendung des TimeTextBox Dijit Elements</title>

            <para>
                Das folgende erstellt eine TimeTextBox die 2 Stunden zugleich anzeigt und um 10
                Minuten inkrementiert.
            </para>

            <programlisting language="php"><![CDATA[
$form->addElement(
    'TimeTextBox',
    'foo',
    array(
        'label'              => 'TimeTextBox',
        'required'           => true,
        'visibleRange'       => 'T04:00:00',
        'visibleIncrement'   => 'T00:10:00',
        'clickableIncrement' => 'T00:10:00',
    )
);
]]></programlisting>
        </example>
    </sect3>

    <sect3 id="zend.dojo.form.elements.validationTextBox">
        <title>ValidationTextBox</title>

        <para>
            ValidationTextBox bietet die Möglichkeit Prüfungen und Abhängigkeiten zu einer
            Texteingabe hinzuzufügen. Intern ist Sie von
            <link linkend="zend.dojo.form.elements.textBox">TextBox</link> abgeleitet, und fügt die
            folgenden Zugriffsmethoden und Mutatoren für die Manipulation der Dijit Parameter hinzu:
        </para>

        <itemizedlist>
            <listitem>
                <para>
                    <methodname>setInvalidMessage($message)</methodname> und
                    <methodname>getInvalidMessage()</methodname>: Setzt und retourniert die
                    Tooltipnachricht die angezeigt werden soll wenn der Wert nicht gültig ist.
                </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setPromptMessage($message)</methodname> und
                    <methodname>getPromptMessage()</methodname>: Setzt und retourniert die
                    Tooltipnachricht die angezeigt werden soll wenn das Element verwendet wird.
                </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setRegExp($regexp)</methodname> und
                    <methodname>getRegExp()</methodname>: Setzt und retourniert den regulären
                    Ausdruck der für die Prüfung des Elements verwendet wird. Der reguläre Ausdruck
                    benötigt keine Begrenzungen (anders als <acronym>PHP</acronym>'s
                    Funktionsfamilie preg*).
                </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setConstraint($key, $value)</methodname> und
                    <methodname>getConstraint($key)</methodname>: Setzt und retourniert zusätzliche
                    Abhängigkeiten die für die Prüfung des Elements verwendet werden; wird primär
                    mit Unterklassen verwendet. Abhängigkeiten werden im 'constraints' Schlüssel
                    der Dijit Parameter abgespeichert.
                </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setConstraints(array $constraints)</methodname> und
                    <methodname>getConstraints()</methodname>: Setzt und retourniert individuelle
                    Abhängigkeiten die bei der Prüfung eines Elements verwendet werden; wird primär
                    mit Unterklassen verwendet.
                </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>hasConstraint($key)</methodname>: Testet ob eine angegebene
                    Abhängigkeit existiert.
                </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>removeConstraint($key)</methodname> und
                    <methodname>clearConstraints()</methodname>: Entfernt eine einzelne oder alle
                    Abhängigkeiten des Elements.
                </para>
            </listitem>
        </itemizedlist>

        <example id="zend.dojo.form.elements.validationTextBox.example">
            <title>Beispiel für die Verwendung des ValidationTextBox Dijit Elements</title>

            <para>
                Das folgende erstellt eine ValidationTextBox die einen einzelnen String benötigt der
                nur aus Buchstaben besteht (z.B, keine Leerzeichen, die meisten Trennungen sind
                ungültig).
            </para>

            <programlisting language="php"><![CDATA[
$form->addElement(
    'ValidationTextBox',
    'foo',
    array(
        'label'          => 'ValidationTextBox',
        'required'       => true,
        'regExp'         => '[\w]+',
        'invalidMessage' => 'Ungültige Buchstaben.',
    )
);
]]></programlisting>
        </example>
    </sect3>

    <sect3 id="zend.dojo.form.elements.verticalSlider">
        <title>VerticalSlider</title>

        <para>
            VerticalSlider ist der Schwager von
            <link linkend="zend.dojo.form.elements.horizontalSlider">HorizontalSlider</link>, und
            funktioniert auf dem gleichen Weg wie dieses Element. Der einzige wirkliche Unterschied
            besteht darin, das die 'top*' und 'bottom*' Methoden mit 'left*' und 'right*' ersetzt
            wurden, und statt HorizontalRule und HorizontalRuleLabels jetzt VerticalRule und
            VerticalRuleLabels verwendet werden sollten.
        </para>

        <example id="zend.dojo.form.elements.verticalSlider.example">
            <title>Beispiel der Verwendung des VerticalSlider Dijit Elements</title>

            <para>
                Das folgende erstellt eine Vertikale Schieberauswahl mit Ganzzahlen die von -10 bis
                10 reichen. Die linke Seite hat Label bei den 20%, 40%, 60% und 80% Marken. Die
                rechte Seite hat Regeln bei 0, 50% und 100%. Jedesmal wenn der Wert verändert wird,
                wird auch das versteckte Element, das den Wert speichert, aktualisiert.
            </para>

            <programlisting language="php"><![CDATA[
$form->addElement(
    'VerticalSlider',
    'foo',
    array(
        'label'                    => 'VerticalSlider',
        'value'                    => 5,
        'style'                    => 'height: 200px; width: 3em;',
        'minimum'                  => -10,
        'maximum'                  => 10,
        'discreteValues'           => 11,
        'intermediateChanges'      => true,
        'showButtons'              => true,
        'leftDecorationDijit'      => 'VerticalRuleLabels',
        'leftDecorationContainer'  => 'leftContainer',
        'leftDecorationLabels'     => array(
                ' ',
                '20%',
                '40%',
                '60%',
                '80%',
                ' ',
        ),
        'rightDecorationDijit' => 'VerticalRule',
        'rightDecorationContainer' => 'rightContainer',
        'rightDecorationLabels' => array(
                '0%',
                '50%',
                '100%',
        ),
    )
);
]]></programlisting>
        </example>
    </sect3>
</sect2>
