<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 15103 -->
<!-- Reviewed: no -->
<sect2 id="zend.dojo.form.elements">
    <title>Elementos de Formularios Dijit-Specific</title>

    <para> Cada formulario dijit para el que se provee un ayudante tiene un
        elemento correspondiente <classname>Zend_Form</classname>. Todos ellos
        tienen los siguientes métodos disponibles para manipular los parámetros
        dijit: </para>

    <itemizedlist>
        <listitem>
            <para>
                <methodname>setDijitParam($key, $value)</methodname>: establecer
                un único parámetro dijit. Si el parámetro dijit ya existe, se
                borrará y se reemplazará por el nuevo. </para>
        </listitem>

        <listitem>
            <para>
                <methodname>setDijitParams(array $params)</methodname>:
                establecer varios parámetros dijit a la vez. Cualquiera de los
                parámetros pasados que concuerden con los ya presentes se
                sobreescribirán. </para>
        </listitem>

        <listitem>
            <para>
                <methodname>hasDijitParam($key)</methodname>: si un determinado
                parámetro dijit está definido y presente, devolverá TRUE, de lo
                contrario devolverá FALSE. </para>
        </listitem>

        <listitem>
            <para>
                <methodname>getDijitParam($key)</methodname>: recupera el
                parámetro dijit. Si no está disponible, se devuelve un valor
                null. </para>
        </listitem>

        <listitem>
            <para>
                <methodname>getDijitParams()</methodname>: recupera todos los
                parámetros dijit. </para>
        </listitem>

        <listitem>
            <para>
                <methodname>removeDijitParam($key)</methodname>: elimina el
                parámetro dijit dado. </para>
        </listitem>

        <listitem>
            <para>
                <methodname>clearDijitParams()</methodname>: borra todos los
                parámetros dijit actualmente definidos. </para>
        </listitem>
    </itemizedlist>

    <para> Los parámetros Dijit se almacenan en la propiedad pública
            <methodname>dijitParams</methodname>. Así, puede habilitar dijit
        para un elemento de un formulario existente simplemente estableciendo
        esta propiedad en el elemento; sencillamante no tendrá los accessors
        anteriores a fin de facilitar la manipulación de parámetros. </para>

    <para> Además, los elementos específicos de dijit implementan una lista
        diferente de decoradores, correspondientes a lo siguiente: </para>

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

    <para> En efecto, el decorador DijitElement es utilizado en lugar del
        decorador standard ViewHelper. </para>

    <para> Finalmente, el elemento base Dijit asegura que el path del ayudante
        de vista de Dojo se establezca en la vista. </para>

    <para> Una variante de DijitElement, DijitMulti, ofrece la funcionalidad del
        elemento abstracto del formulario <methodname>Multi</methodname>,
        permitiendo al desarrollador especificar 'multiOptions' -- típicamente
        opciones "select" u opciones de "radio". </para>

    <para> Los siguientes elementos dijit están incluídos en la distribución
        standard de Zend Framework. </para>

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

        <para> Si bien no derivan del elemento standard Button <link
                linkend="zend.form.standardElements.button"/>, implementan la
            misma funcionalidad, y pueden ser utilizados como una sustitución de
            drop-in, como se expone en la siguiente funcionalidad: </para>

        <itemizedlist>
            <listitem>
                <para>
                    <methodname>getLabel()</methodname> utilizará el nombre del
                    elemento como el rótulo del botón si no se ha provisto el
                    nombre. Además, traducirá el nombre si un adaptador de
                    traducción encuentra concordancia con un mensaje disponible.
                </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>isChecked()</methodname> determina si el valor
                    enviado coincide con la etiqueta; si así fuera, devuelve
                    true. Esto es útil para determinar qué botón se utilizó
                    cuando se envió un formulario. </para>
            </listitem>
        </itemizedlist>

        <para> Además, sólo los decoradores
                <methodname>DijitElement</methodname> y
                <methodname>DtDdWrapper</methodname> se utilizan para elementos
            Button. </para>

        <example id="zend.dojo.form.elements.button.example">
            <title>Ejemplo de Uso del Elemento Button dijit</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> Si bien no derivan del elemento standard Checkbox <link
                linkend="zend.form.standardElements.checkbox"/>, aplican la
            misma funcionalidad. Esto significa exponer los siguientes métodos: </para>

        <itemizedlist>
            <listitem>
                <para>
                    <methodname>setCheckedValue($value)</methodname>: establecer
                    el valor a usar cuando el elemento está marcado (checked).
                </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>getCheckedValue()</methodname>: obtener el valor
                    del item a usar cuando está comprobado (checked). </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setUncheckedValue($value)</methodname>:
                    establecer el valor del item a utilizar cuando está
                    desactivado (unchecked). </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>getUncheckedValue()</methodname>: obtener el
                    valor del item a utilizar cuando está desactivado
                    (unchecked). </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setChecked($flag)</methodname>: marcar el
                    elemento como activado (checked) o desactivado (unchecked).
                </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>isChecked()</methodname>: determina si el
                    elemento está activo (checked) actualmente. </para>
            </listitem>
        </itemizedlist>

        <example id="zend.dojo.form.elements.checkBox.example">
            <title>Ejemplo de Uso de Elementos CheckBox dijit</title>

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

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

        <para> Como se señaló en la documentación del ayudante de vista de
            ComboBox dijit <link linkend="zend.dojo.view.dijit.form"/>, los
            ComboBoxes son un híbrido entre "select" y "text input", permitiendo
            el autocompletado y la capacidad para especificar una alternativa a
            las opciones provistas. FilteringSelects es lo mismo, pero no
            permite entradas arbitrarias. </para>

        <note>
            <title>ComboBoxes que Devuelven los Valores de los Labels</title>

            <para> Los ComboBoxes devuelven los valores de los rótulos (labels),
                y no los valores de opción, que pueden llevar a una
                desvinculación de las expectativas. Por esta razón, los
                ComboBoxes no auto-registran un validador
                    <methodname>InArray</methodname> (aunque los
                FilteringSelects si lo hacen). </para>
        </note>

        <para> Los elementos de forms de ComboBox y FilteringSelect proporcionan
            accessors y mutators para examinar y establecer las opciones
            seleccionadas, así como para especificar un datastore dojo.data (si
            se usa). Se extienden desde DijitMulti, que le permite especificar
            opciones de selección vía los métodos
                <methodname>setMultiOptions()</methodname> y
                <methodname>setMultiOption()</methodname>. Además, están
            disponibles los siguientes métodos: </para>

        <itemizedlist>
            <listitem>
                <para>
                    <methodname>getStoreInfo()</methodname>: Obtener del
                    datastore toda la información establecida actualmente.
                    Devuelve un array vacío si no hay datos actualmente
                    establecidos. </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setStoreId($identifier)</methodname>: establece
                    la variable del identificador (generalmente referenciado por
                    el atributo 'jsId' en Dojo). Este debe ser un nombre de
                    variable válido para javascript. </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>getStoreId()</methodname>: recupera el nombre de
                    la variable del identificador del datastore. </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setStoreType($dojoType)</methodname>: establece
                    la clase del datastore a usar; por ejemplo,
                    "dojo.data.ItemFileReadStore". </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>getStoreType()</methodname>: obtiene la clase
                    del datastore a usar. </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setStoreParams(array $params)</methodname>:
                    establece cualquiera de los parámetros utilizados para
                    configurar el objeto datastore. Como ejemplo, el datastore
                    dojo.data.ItemFileReadStore esperaría un parámetro 'url'
                    apuntando a un lugar que devolvería el objeto dojo.data.
                </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>getStoreParams()</methodname>: obtiene
                    cualquiera de los parámetros del datastore actualmente
                    establecido; si no hay ninguno, se devuelve un array vacío.
                </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setAutocomplete($flag)</methodname>: indica si
                    será usado o no el elemento seleccionado una vez que el
                    usuario deje el elemento. </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>getAutocomplete()</methodname>: obtener el valor
                    del flag de autocomplete. </para>
            </listitem>
        </itemizedlist>

        <para> Por defecto, si no hay ningún dojo.data registrado con el
            elemento, este elemento registra un validador
                <methodname>InArray</methodname> que valida contra las claves
            del array de las opciones registradas. Puede desactivar este
            comportamiento ya sea llamando a
                <methodname>setRegisterInArrayValidator(false)</methodname>, o
            pasando un valor false a la clave de configuración
                <methodname>registerInArrayValidator</methodname>. </para>

        <example id="zend.dojo.form.elements.comboBox.selectExample">
            <title>Elemento de ComboBox dijit Usado como select input</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>Elemento de ComboBox dijit Usado con datastore</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> Los ejemplos anteriores también podrían utilizar
                <methodname>FilteringSelect</methodname> en vez de
                <methodname>ComboBox</methodname>. </para>
    </sect3>

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

        <para> El CurrencyTextBox principalmente brinda apoyo a la entrada de
            moneda. La moneda puede ser localizada, y puede manejar tanto a
            valores fraccionarios como no fraccionarios. </para>

        <para> Internamente, CurrencyTextBox deriva de <link
                linkend="zend.dojo.form.elements.numberTextBox"
                >NumberTextBox</link>, <link
                linkend="zend.dojo.form.elements.validationTextBox"
                >ValidationTextBox</link>, y <link
                linkend="zend.dojo.form.elements.textBox">TextBox</link>; todos
            los métodos disponibles a esas clases están disponibles. Además,
            pueden utilizarse los siguientes métodos restrictivos: </para>

        <itemizedlist>
            <listitem>
                <para>
                    <methodname>setCurrency($currency)</methodname>: establecer
                    el tipo de moneda a usar; y debe seguir la especificación
                        <ulink url="http://en.wikipedia.org/wiki/ISO_4217"
                        >ISO-4217</ulink>
                </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>getCurrency()</methodname>: recupera el tipo de
                    moneda actual. </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setSymbol($symbol)</methodname>: establece el
                    símbolo de 3 letras <ulink
                        url="http://en.wikipedia.org/wiki/ISO_4217"
                        >ISO-4217</ulink> de la moneda a usar. </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>getSymbol()</methodname>: recupera el símbolo de
                    la moneda actual. </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setFractional($flag)</methodname>: establece si
                    la moneda debería permitir o no valores fraccionarios.
                </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>getFractional()</methodname>: recupera el status
                    del flag fraccional. </para>
            </listitem>
        </itemizedlist>

        <example id="zend.dojo.form.elements.currencyTextBox.example">
            <title>Ejemplo de Uso del Elemento CurrencyTextBox dijit</title>

            <programlisting language="php"><![CDATA[
$form->addElement(
    'CurrencyTextBox',
    'foo',
    array(
        'label'          => 'Currency:',
        'required'       => true,
        'currency'       => 'USD',
        'invalidMessage' => 'Invalid amount. ' .
                            'Include dollar sign, commas, and cents.',
        'fractional'     => false,
    )
);
]]></programlisting>
        </example>
    </sect3>

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

        <para> DateTextBox establece un calendario desplegable (drop-down) para
            seleccionar una fecha, así como validación y formateo de fechas del
            lado del clente. </para>

        <para> Internamente, DateTextBox deriva de <link
                linkend="zend.dojo.form.elements.validationTextBox"
                >ValidationTextBox</link> y <link
                linkend="zend.dojo.form.elements.textBox">TextBox</link>; todos
            los métodos disponibles a esas clases están disponibles. Además, los
            siguientes métodos pueden utilizarse para establecer restricciones
            individuales: </para>

        <itemizedlist>
            <listitem>
                <para>
                    <methodname>setAmPm($flag)</methodname> y
                        <methodname>getAmPm()</methodname>: Cuándo usar o no los
                    strings AM/PM en los fortmatos de horas. </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setStrict($flag)</methodname> y
                        <methodname>getStrict()</methodname>: Cuándo usar o no
                    el matching para una expresión regular estricta al validar
                    la entrada. Si es falso, que es el valor por defecto, será
                    indulgente sobre espacios en blanco y algunas abreviaturas.
                </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setLocale($locale)</methodname> y
                        <methodname>getLocale()</methodname>: Establece y
                    recupera la localidad a utilizar con este elemento
                    específico. </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setDatePattern($pattern)</methodname> y
                        <methodname>getDatePattern()</methodname>: provee y
                    recupera el <ulink
                        url="http://www.unicode.org/reports/tr35/#Date_Format_Patterns"
                        > patrón de formato de fechas unicode</ulink> para el
                    formateo de fechas. </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setFormatLength($formatLength)</methodname> y
                        <methodname>getFormatLength()</methodname>: proporciona
                    y recupera la longitud del tipo de formato a usar; debe ser
                    uno de los siguientes: "long", "short", "medium" o "full".
                </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setSelector($selector)</methodname> y
                        <methodname>getSelector()</methodname>: proporciona y
                    recupera el estilo del selector; debe ser "date" o "time".
                </para>
            </listitem>
        </itemizedlist>

        <example id="zend.dojo.form.elements.dateTextBox.example">
            <title>Ejemplo de Uso del Elemento DateTextBox dijit</title>

            <programlisting language="php"><![CDATA[
$form->addElement(
    'DateTextBox',
    'foo',
    array(
        'label'          => 'Date:',
        'required'       => true,
        'invalidMessage' => 'Invalid date specified.',
        'formatLength'   => 'long',
    )
);
]]></programlisting>
        </example>
    </sect3>

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

        <para> Editor proporciona un editor WYSIWYG que puede ser utilizado
            tanto para crear como para editar contenidos HTML ricos.
            dijit.Editor es pluggable y podrá ampliarse con plugins
            personalizados si lo desea; para más detalles vea en <ulink
                url="http://dojotoolkit.org/book/dojo-book-0-9/part-2-dijit/advanced-editing-and-display/editor-rich-text"
                > la documentación de dijit.Editor</ulink>. </para>

        <para> El elemento form de Editor proporciona un número de accessors y
            mutators para manipular diversos parámetros dijit, tal como sigue: </para>

        <itemizedlist>
            <listitem>
                <para>
                    <emphasis>captureEvents</emphasis> son eventos que se
                    conectan al área de edición en si. Los siguientes accessors
                    y mutators están disponibles para manipular la captura de
                    eventos: </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> son eventos DOM estándar, como
                    onClick, onKeyup, etc. Los siguientes accessors y mutators
                    están disponibles para manipular eventos: </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> añaden funcionalidad al Editor
                    -- herramientas adicionales para la barra de herramientas,
                    estilos adicionales a permitir, etc. Los siguientes
                    accessors y mutators están disponibles para manipular
                    plugins: </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> se utiliza para
                    agrupar eventos para deshacer operaciones. Por defecto, este
                    valor es de 3 segundos. El método
                        <methodname>setEditActionInterval($interval)</methodname>
                    puede ser usado para establecer el valor, mientras que
                        <methodname>getEditActionInterval()</methodname> lo
                    recuperará. </para>
            </listitem>

            <listitem>
                <para>
                    <emphasis>focusOnLoad</emphasis> se utiliza para determinar
                    si este editor en particular recibirá atención cuando la
                    página se haya cargado. Por defecto, esto es falso. El
                    método <methodname>setFocusOnLoad($flag)</methodname> puede
                    usarse para establecer el valor, mientras que
                        <methodname>getFocusOnLoad()</methodname> lo recuperará.
                </para>
            </listitem>

            <listitem>
                <para>
                    <emphasis>height</emphasis> especifica la altura del editor;
                    por defecto, es de 300px. El método
                        <methodname>setHeight($height)</methodname> puede ser
                    utilizado para establecer el valor, mientras que
                        <methodname>getHeight()</methodname> lo recupera.
                </para>
            </listitem>

            <listitem>
                <para>
                    <emphasis>inheritWidth</emphasis> se utiliza para determinar
                    si el editor utilizará el ancho del contenedor padre o
                    simplemente toma por defecto el 100% del ancho. Por defecto,
                    esto es falso (es decir, llenará el ancho de la ventana). El
                    método <methodname>setInheritWidth($flag)</methodname> puede
                    ser utilizado para establecer el valor, mientras que
                        <methodname>getInheritWidth()</methodname> lo
                    recuperará. </para>
            </listitem>

            <listitem>
                <para>
                    <emphasis>minHeight</emphasis> indica la altura mínima del
                    editor; por defecto, es de 1em. El método
                        <methodname>setMinHeight($height)</methodname> puede ser
                    utilizado para establecer el valor, mientras que
                        <methodname>getMinHeight()</methodname> lo recuperará.
                </para>
            </listitem>

            <listitem>
                <para>
                    <emphasis>styleSheets</emphasis> indica qué otras hojas de
                    estilo CSS deberían ser utilizadas para incidir sobre la
                    pantalla del Editor. Por defecto, ninguna está registrada, y
                    hereda la página de estilos. Los siguientes accessors y
                    mutators están disponibles para manipular al editor de hojas
                    de estilo (stylesheets): </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>Ejemplo de Uso del Elemento Editor dijit</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>
    </sect3>


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

        <para>
            HorizontalSlider proporciona un widget deslizador de UI para 
            seleccionar un valor numérico dentro de un rango. 
            Internamente, establece el valor de un elemento oculto que es 
            enviado por el formulario.
        </para>

        <para>
            HorizontalSlider proviene del elemento abstracto <link
                linkend="zend.dojo.form.elements.slider">Slider dijit</link>. 
            Además, tiene una variedad de métodos de ajuste y configuración 
            de reglas deslizantes y etiquetas para esas reglas.
        </para>

        <itemizedlist>
            <listitem>
                <para>
                    <methodname>setTopDecorationDijit($dijit)</methodname> y
                    <methodname>setBottomDecorationDijit($dijit)</methodname>: establecen el 
                    nombre de la dijit a utilizar bien para la parte superior o 
                    inferior de la barra deslizante. 
                    Esto no debería incluir el prefijo "dijit.form.", 
                    sino sólo el último nombre -- "HorizontalRule" o 
                    "HorizontalRuleLabels".
                </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setTopDecorationContainer($container)</methodname> y
                    <methodname>setBottomDecorationContainer($container)</methodname>:
                    especifican el nombre a utilizar para el elemento 
                    contenedor de las reglas; por ejemplo 'Toprule', 
                    'topContainer', etc.
                </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setTopDecorationLabels(array $labels)</methodname> y
                    <methodname>setBottomDecorationLabels(array $labels)</methodname>: 
                    establecen las etiquetas a usar por uno de los tipos 
                    RuleLabels dijit. Debe ser un array indexado; especificar un 
                    único espacio vacío para saltar a la posición de una  
                    determinada etiqueta (como ser al comienzo o al final).
                </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setTopDecorationParams(array $params)</methodname> y
                    <methodname>setBottomDecorationParams(array $params)</methodname>:
                    parámetros dijit para utilizar al configurar la Regla o 
                    RuleLabels dijit.
                </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setTopDecorationAttribs(array $attribs)</methodname> y
                    <methodname>setBottomDecorationAttribs(array $attribs)</methodname>:
                    atributos HTML para especificar una Regla dada o el 
                    elemento contenedor de HTML RuleLabels.
                </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>getTopDecoration()</methodname> y
                    <methodname>getBottomDecoration()</methodname>: recuperar todos los 
                    metadatos para una determinada Regla o definición de 
                    RuleLabels, tal como han sido provistos por los mutators 
                    anteriores.
                </para>
            </listitem>
        </itemizedlist>

        <example id="zend.dojo.form.elements.horizontalSlider.example">
            <title>Ejemplo de Uso del Elemento HorizontalSlider dijit</title>

            <para>
                Lo siguiente creará un deslizador horizontal de selección con 
                valores enteros que van desde -10 a 10. La parte superior tendrá 
                etiquetas en las marcas del 20%, 40%, 60%, y 80%. 
                La parte inferior será una regla con marcas en el 0, 50%, y 100%. 
                Cada vez que se cambie el valor, el elemento oculto almacenará  
                el valor actualizado.
            </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> Un número spinner es un elemento de texto para introducir valores
            numéricos; también incluye elementos de incremento y decremento del
            valor por una cantidad fija. </para>

        <para> Se encuentran disponibles los siguientes métodos: </para>

        <itemizedlist>
            <listitem>
                <para>
                    <methodname>setDefaultTimeout($timeout)</methodname> y
                        <methodname>getDefaultTimeout()</methodname>: establece
                    y recupera el tiempo de espera predeterminado en
                    milisegundos, entre cuando el botón se mantiene presionado y
                    cambia el valor. </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setTimeoutChangeRate($rate)</methodname> y
                        <methodname>getTimeoutChangeRate()</methodname>:
                    establece y recupera la tasa en milisegundos, en la que se
                    harán cambios cuando un botón se mantiene presionado.
                </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setLargeDelta($delta)</methodname> y
                        <methodname>getLargeDelta()</methodname>: establece y
                    recupera la cantidad en la que el valor numérico debería
                    cambiar cuando un botón se mantiene presionado. </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setSmallDelta($delta)</methodname> y
                        <methodname>getSmallDelta()</methodname>: establece y
                    recupera el delta con la que el número debería cambiar
                    cuando se pulsa un botón una vez. </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setIntermediateChanges($flag)</methodname> y
                        <methodname>getIntermediateChanges()</methodname>:
                    establece y recupera el flag que indica si debe o no ser
                    mostrado cada cambio de valor cuando un botón se mantiene
                    presionado. </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setRangeMessage($message)</methodname> y
                        <methodname>getRangeMessage()</methodname>: establece y
                    recupera el mensaje indicando el rango de valores
                    disponibles. </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setMin($value)</methodname> y
                        <methodname>getMin()</methodname>: establece y recupera
                    el valor mínimo posible. </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setMax($value)</methodname> y
                        <methodname>getMax()</methodname>: establece y recupera
                    el valor máximo posible. </para>
            </listitem>
        </itemizedlist>

        <example id="zend.dojo.form.elements.numberSpinner.example">
            <title>Ejemplo de Uso del Elemento NumberSpinner dijit</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> Un cuadro de texto numérico es un elemento de texto de
            introducción de valores numéricos; a diferencia de NumberSpinner, se
            introducen manualmente. Se pueden proporcionar validaciones y
            restricciones para garantizar que el número permanece en un rango o
            formato particular. </para>

        <para> Internmente, NumberTextBox proviene de <link
                linkend="zend.dojo.form.elements.validationTextBox"
                >ValidationTextBox</link> y <link
                linkend="zend.dojo.form.elements.textBox">TextBox</link>; todos
            los métodos disponibles a esas clases están disponibles. Además, los
            siguientes métodos pueden utilizarse para establecer restricciones
            individuales: </para>

        <itemizedlist>
            <listitem>
                <para>
                    <methodname>setLocale($locale)</methodname> y
                        <methodname>getLocale()</methodname>: especifica y
                    recupera un "locale" determinado o alternativo para usar con
                    este dijit. </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setPattern($pattern)</methodname> y
                        <methodname>getPattern()</methodname>: establece y
                    recupera un <ulink
                        url="http://www.unicode.org/reports/tr35/#Number_Format_Patterns"
                        > patrón de formato numérico </ulink> a usar en el
                    formateo de números. </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setType($type)</methodname> y
                        <methodname>getType()</methodname>: establece y recupera
                    el tipo de formato numérico a utilizar (deberán ser uno de
                    'decimal', 'percent', o 'currency'). </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setPlaces($places)</methodname> y
                        <methodname>getPlaces()</methodname>: establece y
                    recupera el número de decimales que soportará. </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setStrict($flag)</methodname> y
                        <methodname>getStrict()</methodname>: establece y
                    recupera el valor estricto del flag, que indica cuánta
                    indulgencia es permitida en relación con espacios en blanco
                    y con caracteres no numéricos. </para>
            </listitem>
        </itemizedlist>

        <example id="zend.dojo.form.elements.numberTextBox.example">
            <title>Ejemplo de Uso del Elemento NumberTextBox dijit</title>

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

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

        <para> PasswordTextBox es simplemente un ValidationTextBox que está
            ligado a una contraseña; su único objetivo es permitir la entrada de
            texto de contraseñas de dijit que también proporciona validación del
            lado del cliente. </para>

        <para> Internmente, NumberTextBox proviene de <link
                linkend="zend.dojo.form.elements.validationTextBox"
                >ValidationTextBox</link> y <link
                linkend="zend.dojo.form.elements.textBox">TextBox</link>; todos
            los métodos disponibles a esas clases están disponibles. </para>

        <example id="zend.dojo.form.elements.passwordTextBox.example">
            <title>Ejemplo de Uso del Elemento PasswordTextBox dijit</title>

            <programlisting language="php"><![CDATA[
$form->addElement(
    'PasswordTextBox',
    'password',
    array(
        'label'          => 'Password',
        'required'       => true,
        'trim'           => true,
        'lowercase'      => true,
        'regExp'         => '^[a-z0-9]{6,}$',
        'invalidMessage' => 'Invalid password; ' .
                            'must be at least 6 alphanumeric characters',
    )
);
]]></programlisting>
        </example>
    </sect3>

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

        <para> RadioButton envuelve a elementos standard de entrada tipo radio
            para brindar un look-and-feel consistente con otros dojo dijits. </para>

        <para> RadioButton se extiende desde DijitMulti, que le permite
            especificar la selección de opciones vía los métodos
                <methodname>setMultiOptions()</methodname> y
                <methodname>setMultiOption()</methodname>. </para>

        <para> Por defecto, este elemento registra un validador
                <methodname>InArray</methodname> que valida contra las calves
            del array de las opciones registradas. Puede desactivar este
            comportamiento ya sea llamando a
                <methodname>setRegisterInArrayValidator(false)</methodname>, o
            pasando un valor falso a la clave de configuración
                <methodname>registerInArrayValidator</methodname>. </para>

        <example id="zend.dojo.form.elements.radioButton.example">
            <title>Ejemplo de Uso del Elemento RadioButton dijit</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 actúa principalmente como un textarea estándar de
            HTML. Sin embargo, no permite establecer filas ni columnas. En su
            lugar, el ancho de textarea debe especificarse utilizando medidas
            CSS estándar. A diferencia de Textarea, esta no aumentará
            automáticamente. </para>

        <example id="zend.dojo.form.elements.simpletextarea.example">
            <title>Ejemplo de Uso del Elemento SimpleTextarea dijit</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>Elemento abstracto Slider</title>

        <para> Slider es un elemento abstracto que proviene de ambos 
            <link linkend="zend.dojo.form.elements.horizontalSlider">
            HorizontalSlider</link> y 
            <link linkend="zend.dojo.form.elements.verticalSlider">VerticalSlider</link>. 
            Expone una serie de métodos comunes para
            configurar sus deslizadores, incluyendo a: </para>

        <itemizedlist>
            <listitem>
                <para>
                    <methodname>setClickSelect($flag)</methodname> y
                        <methodname>getClickSelect()</methodname>: establece y
                    recupera el flag que indica cuando al presionar el botón
                    deslizante cambia o no el valor. </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setIntermediateChanges($flag)</methodname> y
                        <methodname>getIntermediateChanges()</methodname>:
                    establece y recupera el flag que indica si dijit enviará o
                    no una notificación sobre cada evento de cambio del
                    deslizador. </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setShowButtons($flag)</methodname> y
                        <methodname>getShowButtons()</methodname>: establece y
                    recupera el flag que indica si los botones de uno u otro
                    extremo se mostrarán o no; si es así, el usuario puede hacer
                    clic sobre éstos para cambiar el valor de la barra
                    deslizante. </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setDiscreteValues($value)</methodname> y
                        <methodname>getDiscreteValues()</methodname>: establece
                    y recupera el número de valores discretos representados por
                    el deslizador. </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setMaximum($value)</methodname> y
                        <methodname>getMaximum()</methodname>: establece y
                    recupera el valor máximo del deslizador. </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setMinimum($value)</methodname> y
                        <methodname>getMinimum()</methodname>: establece y
                    recupera el valor mínimo del deslizador. </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setPageIncrement($value)</methodname> y
                        <methodname>getPageIncrement()</methodname>: establece
                    la cantidad en que cambiará el deslizador por eventos del
                    teclado.</para>
            </listitem>
        </itemizedlist>

        <para> Ejemplos de uso provistos con cada clase extendida concretamente.
        </para>
    </sect3>

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

        <para> Si bien no hay Dijit llamado SubmitButton, incluimos uno aquí
            para proporcionar un botón dijit capaz de enviar un formulario sin
            que se exijan ligaduras con javascript. Funciona exactamente igual
            que el <link linkend="zend.dojo.form.elements.button">Button
                dijit</link>. </para>

        <example id="zend.dojo.form.elements.submitButton.example">
            <title>Ejemplo de Uso del Elemento SubmitButton dijit</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 se incluyó principalmente para proporcionar una entrada
            de texto con apariencia coherente y con el look-and-feel de los
            demás dijits. Sin embargo, también incluye algunas pequeñas
            capacidades de filtrado y validación, representadas en los métodos
            siguientes: </para>

        <itemizedlist>
            <listitem>
                <para>
                    <methodname>setLowercase($flag)</methodname> y
                        <methodname>getLowercase()</methodname>: establece y
                    recupera el flag que indica si la entrada debe o no ser
                    presentada en minúsculas. </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setPropercase($flag)</methodname> y
                        <methodname>getPropercase()</methodname>: establece y
                    recupera el flag que indica si la entrada debe ser o no ser
                    presentada como Proper Case. </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setUppercase($flag)</methodname> y
                        <methodname>getUppercase()</methodname>: establece y
                    recupera el flag que indica si la entrada debe ser
                    presentada como mayúsculas (UPPERCASE). </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setTrim($flag)</methodname> y
                        <methodname>getTrim()</methodname>: establece y recupera
                    el flag que indica si los espacios al comienzo o al final
                    deben ser eliminados o no. </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setMaxLength($length)</methodname> y
                        <methodname>getMaxLength()</methodname>: establece y
                    recupera la longitud máxima del input. </para>
            </listitem>
        </itemizedlist>

        <example id="zend.dojo.form.elements.textBox.example">
            <title>Ejemplo de Uso del Elemento TextBox dijit</title>

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

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

        <para> Textarea actúa principalmente como un textarea estándar de HTML.
            Sin embargo, no permite establecer filas y columnas. En su lugar, el
            ancho de la textarea debe especificarse utilizando medidas CSS
            estándar; las filas debe omitirse totalmente. Luego, la textarea
            crecerá verticalmente tanto como texto se añada a ella. </para>

        <example id="zend.dojo.form.elements.textarea.example">
            <title>Ejemplo de Uso del Elemento Textarea dijit</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 es una entrada de texto que proporciona una lista
            desplegable (drop-down) para seleccionar un tiempo (fecha y hora).
            La lista desplegable, puede ser configurada para mostrar una cierta
            ventana de tiempo, con incrementos especificados. </para>

        <para> Internamente, TimeTextBox proviene de <link
                linkend="zend.dojo.form.elements.dateTextBox"
            >DateTextBox</link>, <link
                linkend="zend.dojo.form.elements.validationTextBox"
                >ValidationTextBox</link> y <link
                linkend="zend.dojo.form.elements.textBox">TextBox</link>; todos
            los métodos disponibles a esas clases están disponibles. Además, los
            siguientes métodos pueden utilizarse para establecer restricciones
            individuales: </para>

        <itemizedlist>
            <listitem>
                <para>
                    <methodname>setTimePattern($pattern)</methodname> y
                        <methodname>getTimePattern()</methodname>: establece y
                    recupera el <ulink
                        url="http://www.unicode.org/reports/tr35/#Date_Format_Patterns"
                        >patrón de formato de fecha y hora unicode</ulink> para
                    el formato correspondiente. </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setClickableIncrement($format)</methodname> y
                        <methodname>getClickableIncrement()</methodname>:
                    establece y recupera el string <ulink
                        url="http://en.wikipedia.org/wiki/ISO_8601"
                        >ISO-8601</ulink> representando la cantidad de tiempo a
                    incrementar cada vez que se recolecta un elemento clickable.
                </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setVisibleIncrement($format)</methodname> y
                        <methodname>getVisibleIncrement()</methodname>:
                    establece y recupera el incremento visible en el selector de
                    tiempo; debe seguir los formatos ISO-8601. </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setVisibleRange($format)</methodname> y
                        <methodname>getVisibleRange()</methodname>: establece y
                    recupera el intervalo de tiempo visible en el selector de
                    tiempo en cualquier momento; debe seguir los formatos
                    ISO-8601. </para>
            </listitem>
        </itemizedlist>

        <example id="zend.dojo.form.elements.timeTextBox.example">
            <title>Ejemplo de Uso del Elemento TimeTextBox dijit</title>

            <para> Lo siguiente creará un TimeTextBox que muestra 2 horas a la
                vez, con incrementos de 10 minutos. </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 ofrece la posibilidad de añadir validaciones y
            limitaciones a una entrada de texto. Internamente, proviene de <link
                linkend="zend.dojo.form.elements.textBox">TextBox</link>, y
            añade los siguientes accessors y mutators para manejar parámetros
            dijit: </para>

        <itemizedlist>
            <listitem>
                <para>
                    <methodname>setInvalidMessage($message)</methodname> y
                        <methodname>getInvalidMessage()</methodname>: establece
                    y recupera el mensaje de tooltip para mostrar cuando el
                    valor no se validó. </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setPromptMessage($message)</methodname> y
                        <methodname>getPromptMessage()</methodname>: establece y
                    recupera el mensaje de tooltip a mostrar para el uso del
                    elemento. </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setRegExp($regexp)</methodname> y
                        <methodname>getRegExp()</methodname>: establece y
                    recupera la expresión regular a utilizar para validar el
                    elemento. La expresión regular no necesita límites (a
                    diferencia de la familia de funciones preg*, de PHP).
                </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setConstraint($key, $value)</methodname> y
                        <methodname>getConstraint($key)</methodname>: establece
                    y recupera restricciones adicionales para utilizar al
                    validar el elemento; se utiliza principalmente con
                    subclases. Las restricciones son almacenados en la clave
                    'constraints' de los parámetros dijit. </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>setConstraints(array $constraints)</methodname>
                    y <methodname>getConstraints()</methodname>: establece y
                    recupera las restricciones para utilizar al validar el
                    elemento; se utiliza principalmente con subclases. </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>hasConstraint($key)</methodname>: prueba si una
                    restricción dada existe. </para>
            </listitem>

            <listitem>
                <para>
                    <methodname>removeConstraint($key)</methodname> y
                        <methodname>clearConstraints()</methodname>: elimina una
                    restricción individual o todas las restricciones para el
                    elemento. </para>
            </listitem>
        </itemizedlist>

        <example id="zend.dojo.form.elements.validationTextBox.example">
            <title>Ejemplo de Uso del Elemento ValidationTextBox dijit</title>

            <para> Lo siguiente creará un ValidationTextBox que requiere un solo
                string compuesto exclusivamente por caracteres de palabra (es
                decir, sin espacios, la mayor parte de la puntuación es
                inválida). </para>

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

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

        <para> VerticalSlider es el hermano de <link
                linkend="zend.dojo.form.elements.horizontalSlider"
                >HorizontalSlider</link>, y opera en todos los sentidos como ese
            elemento. La única diferencia real es que los métodos 'top*' y
            'bottom*' son sustituidos por 'left*' y 'right*', y en lugar de
            utilizar HorizontalRule y HorizontalRuleLabels, debe usarse
            VerticalRule y VerticalRuleLabels. </para>

        <example id="zend.dojo.form.elements.verticalSlider.example">
            <title>Ejemplo de Uso del Elemento VerticalSlider dijit</title>

            <para> Lo siguiente creará una selección deslizante vertical con
                valores enteros desde -10 a 10. La izquierda tendrá etiquetas en
                las marcas correspondientes al 20%, 40%, 60%, y 80%. El derecho
                tiene reglas en un 0, 50%, y 100%. Cada vez que se cambie el
                valor, se actualizará el elemento oculto que almacena el valor. </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>
