%RPLC-TITULO-DEL-DIALOGO

   
Buscar [QUE_BUSCAR]:
%RPLC-CONTENIDO-DEL-DIALOGO

%RPLC-TITULO-DEL-DIALOGO

   
Buscar [QUE_BUSCAR]:
%RPLC-CONTENIDO-DEL-DIALOGO

%RPLC-TITULO-DEL-DIALOGO

   
Buscar [QUE_BUSCAR]:
%RPLC-CONTENIDO-DEL-DIALOGO

%RPLC-TITULO-DEL-DIALOGO

   
Buscar [QUE_BUSCAR]:
%RPLC-CONTENIDO-DEL-DIALOGO

%RPLC-TITULO-DEL-DIALOGO

   
Buscar [QUE_BUSCAR]:
%RPLC-CONTENIDO-DEL-DIALOGO

Form APIPhp - Bibliotools

Utilitarios para preparación de formulariosReferencia para desarrollo

Foliate/FormAPI

Esta biblioteca, altamente extensible, es ofrecida a partir de la implementación de los hook elements y theme. Brinda un conjunto de utilidades para crear controladores de entrada de datos en tiempo de desarrollo y en tiempo de producción.
En esta página se ofrece una guía sintética (con ejemplos de uso) para establecer los atributos básicos de los siguientes elementos:
Árbol de selección múltiple, Árbol selector simple, AreaDinaSet, AzDbCombo, BodyField, Button, CheckBox, CheckBoxes, Date, Depurador JavaScript, Fieldset, File, Format filter, Form, Hidden, Image Button, InputGroup, Item, Lista clasificadora slz, Lista selectora slz, Markup, Menu, Menu ítem, Menu locator, Fijador de opciones, Ordenador de listas, Ordenador de listas discretas, Ordenador de listas anidadas, Password / Password confirm, RadioBox, RadioBoxes, Select list, Tabla activa, Tabs secundarios, Textarea, TextDinaSet, Textfield, TextUnique, Weight.

Sintaxis de definición de elementos
Cada elemento debe ser definido mediante un array de definición, como un array de pares de la forma:
'NombreDeInstancia' => [ 'claveliteral' => 'valor', ... ]

    Donde:
  • 'claveliteral' = 'NombreInstanciaAnidada' | '#NombreAtributo'
    teniendo presente que '#' es necesario para identificar que se trata de un atributo y su ausencia indica un nombre de instancia.
  • 'valor' = 'ArrayDeDefinicion' | 'valorDelAtributo'
    De modo que para instancias anidadas el valor sea un array de definición y para atributos sea una presentación del valor que deba tomar el mismo.
Los atributos son en general los mismos para todos, salvo pequeñas diferencias específicas, para cada elemento html. A continuación se listan los atributos admitidos por los elementos usuales:
'#accept', '#accept-charset', '#action', '#alt', '#amplitud', '#attributes', '#bold', '#caret', '#caretpos', '#codesource', '#collapsed', '#cols', '#condicion_virtual', '#context', '#datadbid', '#default_value', '#description', '#enctype', '#extendido', '#format', '#height', '#inline', '#joindbid', '#labelpos', '#lectokeys', '#mascara', '#maxlength', '#max', '#method', '#min', '#multiple', '#name', '#noneitem', '#nulo', '#options', '#prefix', '#requiere_dialogo_modal', '#required', '#required_nodefault', '#return_value', '#rows', '#size', '#sorted', '#src', #subitempad, '#subordinados', '#subordinantes', '#suffix':, '#target', '#title', '#titlepos', '#togglehelp', '#type', '#validate', '#value', '#valuesufixed', '#weight', '#width'.

En caso de instalar o crear módulos de extensión para ofrecer nuevos elementos se puede agregar los atributos que se necesite. Pero, manteniendo el mismo modelo de sintaxis para asegurar una correcta interacción entre módulos y utilidades.

Ver: Formulario integrado de ejemplo

Elementos Simples

 

Button
Genera un botón normal, con el propósito de lanzar una acción como procesar un formulario, reiniciarlo, cargar algún contenido asociado, etc.

Atributos
'#action', '#caret', '#caretpos', '#context', '#name', '#operation', '#prefix', '#suffix':, '#value'.
  • '#type' = 'submit' | 'reset' | 'button'
  • '#action' = 'uri a invocar o script a ejecutar'
  • '#caret' = 'complemento gráfico a mostrar'
  • '#caretpos' = 'posición del complemento. Si 0 no se incluye'
  • '#context' = 'default' | 'success' | 'info' | 'primary' | 'warning' | 'danger' | ''
  • '#operation' = 'op'(default) | 'submit' | cancel | 'reset' | 'acept' | 'CustomAction_name' | no asignar
  • '#value' = 'Texto a mostrar en el botón' (default=submit)
Ejemplo:
El código bajo este bloque despliega el botón:
 
  <?php
  module_load_include('inc', 'foliate', 'hook/elements');
  $boton = [
    '#name'=>'interruptor', 
    '#type' => 'button', 
    '#operation'=>'op',
    '#value'=>'Haga click aquí'
  ];
  echo theme_button($boton);

 

CheckBox
Este tipo de elemento tiene como propósito facilitar la recolección de opciones booleanas (si o no) de modo que se marque sólo si la opción es afirmativa.

Atributos
'#attributes', '#bold', '#context', '#default_value', '#description', '#inline', '#name', '#prefix', '#return_value', '#suffix':, '#title', '#titlepos', '#togglehelp', '#type', '#value', '#valuesufixed'.
  • '#type' = 'checkbox'
  • '#title' = 'Texto a mostrar en su etiqueta. Puede ser nulo o no asignarse.'
  • '#bold' = TRUE | FALSE 'Indica que la etiqueta debe mostrarse destacada en negrilla. Por defecto es false'
  • '#return_value' = El valor que devolverá en caso de estar marcado. Su default es 1
  • '#value' = 'El valor en curso. Si es igual a #return_value' se mostrará marcado.
  • '#labelpos' = 0 | 1 | NULL si es 1 o no nulo se muestra a derecha
  • '#valuesufixed' = Indica que el valor será usado como sufijo para crear el id del elemento. Conviene usarlo cuando se van a ofrecer grupos de opciones complementarias.
  • '#description' Texto auxiliar indicando las condiciones asociadas al uso del elemento.
Importante:
Aunque el generador htm sabe interpretar el atributo '#required' para este elemento, no se debe asignar pues se estaría forzando a marcar la caja y ello equivale a recoger sólo el estado checked, pues el otro sería equivalente a no usarla; hecho que hace contradictorio el uso del atributo.
Ejemplo:
Se muestran dos cuadros de chequeo o confirmación en los que se asignó y se aplicaron cambios a su atributo '#context':
  
Por favor marque el cuadro de selección para indicar que el texto de esta página ha sido útil. En caso negativo quite la marca.
  
Por favor marque el cuadro de selección para indicar que el texto de esta página ha sido útil. En caso negativo quite la marca.
Código empleado:
  <?php
  module_load_include('inc', 'foliate', 'hook/elements');
$item = [ '#name'=>'sionoitem', '#type' => 'checkbox', '#default_value'=>'0', '#return_value'=>'1', '#value'=>'1', '#labelpos'=>0, '#title'=>'El texto ha sido de utilidad', '#description'=>Por favor marque el cuadro de selección para indicar que el texto de esta página ha sido útil. En caso negativo quite la marca., '#context' => 'success', ]; // da salida al ítem usando su primera definición: echo theme_checkbox($item); // modifica únicamente el atributo '#context' $item['#context'] = 'primary'; // vuelve a dar salida al ítem modificado: echo theme_checkbox($item);

 

Depurador JavaScript
Inserta una caja en la que se muestran trazas de comandos como solicitudes Ajax lanzadas por las acciones enlazadas mediante el modelo lgq_Binded. No debe insertarse más de un elemento por formulario.

Atributos
'#name', '#context', '#title', '#type'. Otros atributos no son importantes y carecen de efecto visible.
  • '#type' = 'depurador'
  • '#context' = 'default' | 'success' | 'info' | 'primary' | 'warning' | 'danger' | ''
Ejemplo:
El código bajo este bloque despliega el contenedor para visualizar llamados ajax:
Ha sido activado el visor haga click en el alternador que se muestra en la esquina superior derecha de la página.
En general basta con asignar el atributo '#debuggon' => 1 a cualquier elemento
 
  <?php
  module_load_include('inc', 'foliate', 'hook/elements');
  $depuradordef = [
    '#name'=>'ejemplodepurador', 
    '#type' => 'depurador', 
    '#title'=>'Visualizador de llamados ajax',
    '#context' => 'primary'
  ];
  echo theme('depurador', $depuradordef);

 

Fijador de opciones electas
Este elemento, es en realidad un asistente para manejar agrupadas familias de opciones del tipo CheckBox, RadioBox y Personalizadas que suelen no pasar valores cuando son deseleccionadas y que eventualmente podrían "perderse" o hacer necesaria la escritura de mucho código adicional para asegurar su presencia y tratamiento al procesar los conjuntos de valores pasados por el cliente en $_POST y/o $form_state['values']

Este elemento genera un campo oculto cuyo valor es una cadena que contiene los ids, valores actuales y flags indicadores de si se esperan o no cambios de los campos selectores de opciones "problemáticos" y, en caso de ser empleado dentro de un formulario cuyo procesamiento de lugar a un objeto $form_state devuelve un array de pares iddeopcion=>valor que simplifica el tratamiento de valores devueltos por dichos campos.

Atributos
'#attributes', '#name', '#type', '#value',
  • '#type' = 'curroptions'
  • '#attributes' = (array) pares nombreatributo=>valor, agrega cualquier juego de atributos que se crea necesario
  • '#name' = (requerido) el nombre del campo, se usa para recoger y pasar agrupado el juego de valores que se necesita asegurar
  • '#value' = (array) un array de la forma iddeopcion=>valor_a_devolver | [valoractual, flag] que indica que en el formulario existe un campo de opcion que debiera devolver el valor 'valor_a_devolver' en caso de ser deseccionada o, cuando flag ha sido asignado (usualmente a 1) debe devolver 'valoractual' porque el elemento está deshabilitado y el navegador no envía valores para él.
Discusión de un caso típico de uso
Circunstancia: Se tiene una tabla en cuyas líneas existen celdas para marcar opciones de selección, que no fueron pasadas usando FORM-API, pues resultaba muy complejo y era simple y directo escribirlas manualmente. Algunas de ellas están deshabilitadas, pero muestran el valor checked, porque para el caso su valor no debe ser modificado. Las demás están algunas marcadas y otras no, reflejando los últimos cambios hechos a algún conjunto de preferencias. Un ejemplo vivo de uso se encuentra en el editor de la estructura de campos de un tipo de contenido en el que las cajas de verificación son generadas durante el preproceso de la consulta que fue pasada a la lista ordenable.
Paso de valores hecho por los navegadores: De acuerdo con la especificación w3 los navegadores no pasan valores para los elementos deshabilitados y sólo devuelven 1 o el valor del atributo 'return_value' para los elementos que hayan sido seleccionados. (Ni siquiera que hubiesen cambiado de valor) de modo que el código inspector de valores debe asignar los valores marcados (que pasó el navegador) y desasignar (sin saber por qué valor cambiar) los que no hayan sido pasados. Pero, teniendo en cuenta que no debe tocar los campos o registros que correspondan a deshabilitados. De modo que se va a tener un spaghetti de switchs para hacer procesamiento, y el riesgo de error es muy alto.
Modelo de uso:Este tipo de elemento ofrece un mecanismo simple para crear un "campo virtual" que agrupa conjuntos de valores "conflictivos" así:
  <?php
  // Se establece un array con las opciones que se deben controlar 
  // se muestra el empleado en el formulario citado arriba
  $opciones = [
      'LCB1-35' => [ 1, 1 ], 'LCB3-36' => 0, 'LCB2-37' => 0,
      'LCB4-38' => 0, 'LCB5-39' => 0, 'LCB6-40' => 0,
      'LCB7-41' => 0, 'LCB8-42' => 0, 'LCB9-43' => 0,
      'LCC40-44' => 0, 'LCC89-45' => 0, 'LCC88-46' => 0,
      'LCC81-47' => 0, 'LCC51-48' => 0, 'LCBA-49' => 0,
      'LCBF-50' => 0, 'LCC1A-51' => 0, 'LCC1B-52' => 0, 'LCBC-53' => 0
  ];
  $formitem = [
      '#name' => 'camposactivos',
      '#type' => 'curroptions',
      '#value' => $opciones,
  ];
En el preproceso de las respuestas del cliente, el método onproc_proccess() de la clase procesadora del elemento FixCurrOptions pasa el valor al la clave $form_state['values']['nombre_instancia'] bajo la forma de un array nombre_opcion => valor_opcion, garantizando que todos los elementos, habilitados o no y electos o no, pasen valores para que puedan ser recuperados dentro de loops de lectura y o procesamiento de datos.

 

File
Este control ofrece una caja activadora del diálogo de selección de archivos para ser subidos al servidor. En caso de que se especifique el atributo #accept se debe tener presente que el usuario puede hacer cambios en el dialogo de selección de archivos y puede tratar de subir "bombas" que desborden la capacidad del servidor y/o enmascarar tipos; de modo que deben implementarse medidas de seguridad en los procedimientos de carga.

Atributos
'#accept', '#attributes', '#context', '#default_value', '#description', '#inline', '#multiple', '#name', '#prefix', '#size', '#suffix':, '#title', '#titlepos', '#togglehelp', '#type', '#value',
  • '#type' = 'file'
  • '#size': cantidad de caracteres admitidos | [ 0 | NULL ] no se asigna
  • '#multiple': TRUE | [ FALSE | NULL ]
  • '#accept': (zlzString) 'cadena comaseparada de extensiones admitidas.' | NULL
    Admite además algunas expresiones clave para presentar familias de tipos de documentos.
  • '#default_value': current file name | ['' | Null] no se asigna
  • '#value': current file name | ['' | Null] no se asigna
Ejemplo:
Se muestra un control típico para carga de archivos:
Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.
Código empleado:
  <?php
  module_load_include('inc', 'foliate', 'hook/elements');
$formfile = [ '#name' => 'archivo', '#type' => 'file', '#title' => 'Archivo a cargar', '#required'=>TRUE, '#inline' => FALSE, '#size' => 0, '#accept' => "image/*", '#default_value' => '', '#value' => '', '#description'=>'Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.' ]; echo theme_file($formfile);

 

Hidden
Este elemento tiene como propósito pasar información con sentido funcional a los formularios. Debe usarse cuando es necesario pasar valores que van a ser usados o actualizados por los scripts de la página sin que sean percibidos por el usuario.

Atributos
'#attributes["class"]', '#name', '#type', '#value',
  • '#type' = 'hidden'
  • '#attributes' = '[class => [lista clases],]'
    Es muy importante pasar como un subarray o como lista espacioseparada las clases que sean necesarias para que los scripts de la página puedan interactuar con el valos pasado.
  • '#value' = 'valor a pasar a la página'
Ejemplo:
Aquí está oculto el siguiente bloque html:
<input type="hidden" id="edit-hiddenitem" name="hiddenitem" value="Valor a pasar"
class="clase1 clase2 clase_x"/>
Código empleado:
  <?php
  module_load_include('inc', 'foliate', 'hook/elements');
  // definición:
  $item = [
    '#name'=>'hiddenitem', 
    '#type' => 'hidden',  
    '#value'=>'Valor a pasar',  
    '#attributes'=> [
      // lista espacioseparada de clases
      'class' => 'clase1 clase2 clase_x'
    ]
  ];
  // uso
  echo theme_hidden($item);

 

Image Button
Genera un botón normal, pero su cuerpo es formado por un archivo de imagen. Tiene los atributos usuales de un elemento button y a cambio de su label incluye un path para obtener la imagen a mostrar.

Atributos
'#action', '#alt', '#attributes', '#context', '#description', '#height', '#inline', '#name', '#prefix', '#src', '#suffix':, '#title', '#titlepos', '#togglehelp', '#type', '#width',
  • '#type' = 'image-button'
  • '#src' = 'uri al recurso de imagen' (requerido)
  • '#alt' = 'texto opcional a mostrar si la imagen no está disponible o el navegador no la puede mostrar.' (reuerido)
  • '#height' = 'altura en pixels de la imagen'
  • '#width' = 'ancho en pixels de la imagen' | auto para que se autoajuste proporcionalmente usando su altura como guía
Ejemplo:
:  
Los botones no suelen agregar descripciones. Aunque en el caso de botones de imagen puede ser útil.
Código empleado:
  <?php
  module_load_include('inc', 'foliate', 'hook/elements');
  $boton = [
    '#name'=>'interruptor', 
    '#type' => 'image-button',  
    '#operation'=>'op',  
    '#title'=>'Imagen activa', 
    '#inline' => TRUE,  
    '#description'=>Los botones no suelen agregar descripciones. Aunque en el caso de botones de imagen puede ser útil.,  
    '#src'=>'/img/jXfnfCB6z128i.jpg'];
  // uso
  echo theme_item($boton);
  

 

Item
Este elemento tiene como propósito facilitar la presentación de datos, que deben aparecer dentro de un formulario, sin posibilidad de modificarlos (o como referencias), de modo estructurado.

Atributos
#title, #value, #required y #description.
  • '#type' = 'item'
Ejemplo:
:  Este es el valor de este ítem.
Esprobable que el dato necesite algún comentario. Es ese caso se puede agregar descripción
Código empleado:
  <?php
  module_load_include('inc', 'foliate', 'hook/elements');
  // definición:
  $item = [
    '#name'=>'infoitem', 
    '#type' => 'item', 
    '#value'=>'Este es el valor de este ítem.', 
    '#inline'=>TRUE, 
    '#title'=>'Este es un ítem',
    '#context' => 'warning' // para mostrarlo con contraste en una caja amarilla
    '#description'=>'Esprobable que el dato necesite algún comentario. Es ese caso se puede agregar descripción'
  ];
  // uso:
  echo theme_item($item);

 

Menu Item
Ofrece un elemento de enlace que va a ser anidado en una lista de enlaces (menú) para invocar acciones.
Cuando se trata de un submenú tiene exactamente los mismos atributos que el menú, slavo #format e '#inline' que son establecidos para el menú contenedor.

Atributos
'#active', '#alt', '#attributes', '#badge', '#bold', '#collapsed', '#context', '#disabled', '#isseparator', '#isheader', '#src', '#target', '#title', '#type', '#weight'.
  • '#type' = 'menuitem'
    Se puede incluir elementos menu dentro de las listas de items. En tal caso operarán como submenús.
  • '#src' = 'url (ruta) válida'
  • '#alt' = 'texto opcional a mostrar como bullet emergente al desplazar el mouse sobre el texto de enlace
  • '#badge' = 'valor' | no asignado establece un valor a ser mostrado a derecha dentro de una elipse, con color de contraste.
  • '#collapsed' = 'TRUE' | 'FALSE' Indica que contiene subitems y en caso de ser invocado va a ser mostrado expandido en la página que invoque.
  • '#disabled' = 1 | 'FALSE' | 0 | no asignado Indica que el ítem se muestra deshabilitado.
  • '#target' = 'id del elemento de destino' cuando el enlace va a invocar un llamado ajax que deba cargar contenidos allí.
  • '#active' = TRUE | FALSE | no asignar. Si se establece a TRUE será destacado como elemento activo. En caso de que contenga un submenú se mostrará expandido.
  • '#title' = 'texto a mostrar como "cara" del enlace'
  • '#isseparator' = 1 | 0 | no asignado. Indica que se debe mostrar una línea o espacio adicional entre ítems
  • '#isheader' = 1 | 0 | no asignado. Indica que el elemento será mostrado como encabezado, sin enlace, dentro de la lista
Los demás atributos han sido documentados en otros sitios. Y su uso se ilustra en la presentación del elemento Menu.

 

Password / Password confirm
Este par de elementos son cajas de entrada de texto normales, en las que la entrada es enmascarada para ocultarla de la vista de testigos incómodos. Desde el punto de vista del paso de información, envían texto plano al servidor - al igual que las cajas de texto normales; de modo que la información sensible sigue siendo vulnerable.
Tienen, salvo '#type' los mismos atributos que los campos de texto (textfield):

Atributos
'#attributes', '#context', '#description', '#inline', '#maxlength', '#name', '#prefix', '#required', '#size', '#suffix':, '#title', '#titlepos', '#togglehelp', '#type', '#value',
  • '#type' = 'password'
  • '#type' = 'password_confirm'
Ejemplo:
Juego de cajas de entrada de pasword y confirmación del mismo:
:  
:  
Código empleado:
  <?php
  module_load_include('inc', 'foliate', 'hook/elements');
$item = [ '#name'=>'psswrditem', '#type' => 'password', '#title'=>'Clave de acceso', '#size'=>60, '#maxlength'=>128, '#required'=>TRUE, '#inline' => TRUE, ]; // uso: echo theme_password($item); $item['#type'] = 'password_confirm'; $item['#name'] = 'pwrd_confirm'; $item['#title'] = 'confirme la clave'; echo theme_password($item);

 

RadioBox
Este tipo de elemento tiene como propósito facilitar la recolección de opciones mutuamente excluyentes y debe ser usado en grupos en los que cada opción es asignada a un elemento. Su uso individual no tiene sentido porque una vez marcado no puede cambiarse su estado, pues requiere que se marque otro de su mismo grupo para que su marca sea retirada. En su lugar debe usarse un elemento checkbox.

Atributos
'#attributes', '#bold', '#context', '#default_value', '#description', '#inline', '#name', '#prefix', '#return_value', '#suffix':, '#title', '#titlepos', '#togglehelp', '#type', '#value', '#valuesufixed'.
  • '#type' = 'radio'
Ejemplo:
  
Si marca esta opción no podrá cambiarla. Debe recargar la página para ello.
Código empleado:
  <?php
  module_load_include('inc', 'foliate', 'hook/elements');
  $item = [
    '#name'=>'sisiitem', 
    '#type' => 'radio', 
    '#return_value'=>'1', 
    '#value'=>'0', 
    '#labelpos'=>1, 
    '#title'=>'El texto ha sido de utilidad', 
    '#description'=>Si marca esta opción no podrá cambiarla. Debe recargar la página para ello.
  ];
  echo theme_radio($item);

 

Textarea
Ofrece una caja de entrada de texto multilínea. Con extensiones adecuadas admite texto enriquecido.

Atributos
'#attributes', '#cols', '#context', '#description', '#maxlength', '#name', '#prefix', '#required', '#rows', '#suffix':, '#title', '#titlepos', '#togglehelp', '#type', '#value', '#width',
No es conveniente asignar el atributo cols porque fija la cantidad de columnas visible de modo que puede quedar "nadando en la pantalla" o desbordarla. En su lugar se habilito un atributo width que afecta directamente la hoja de estilos para extenderlo al ancho disponible en el contenedor en que se muestre, asignandolo a 100%.
  • '#type' = 'textarea'
  • '#name' = 'Nombre de la instancia del elemento'
  • '#width' = 'ancho deseado se recomienda 100%'
  • '#rows' = (int) número de líneas visibles
  • '#title' = 'Texto a mostrar en la etiqueta'
  • '#inline' = FALSE si lo asigna la posición puede ser incómoda
Ejemplo:
Se muestra un área de captura de texto empotrada en un contenedor con colores de contexto establecidos por atributos twitter-bootstrap.
Código empleado:
  <?php
  module_load_include('inc', 'foliate', 'hook/elements');
  $item = [
    '#name'=>'areaitem', 
    '#type' => 'textarea', 
    '#width'=>'100%', 
    '#rows'=>3, 
    '#title'=>'Campo de texto grande', 
    '#context'=> 'warning', //para mostrarlo enmarcado y resaltado con color
    '#inline' => FALSE,
  ];
  // se sirve
  echo theme_textarea($item);

 

Textfield
Ofrece una caja de entrada de texto normal. Sus atributos son los comunes a los elementos input. Salvo que los valores siempre hacen referencia a cadenas.

Atributos
'#attributes', '#context', '#description', '#inline', '#maxlength', '#name', '#prefix', '#required', '#size', '#suffix':, '#title', '#titlepos', '#togglehelp', '#type', '#value',
  • '#type' = 'textfield'
  • '#name' = 'Nombre de instancia del elemento'
  • '#size' = (int) Amplitud visible en columnas
  • '#maxlength' = (int) cantidad de caracteres que acepta
  • '#inline' = (boolean) Si la etiqueta se muestra en línea con la caja de entrada de texto
Ejemplo:
Se muestra una caja normal de captura de texto alineada con su label.
:  
Código empleado:
  <?php
  module_load_include('inc', 'foliate', 'hook/elements');
  // define el elemento
  $item = [
    '#name'=>'textitem', 
    '#type' => 'textfield', 
    '#size'=>60, 
    '#maxlength'=>128, 
    '#title'=>'Texto a enviar', 
    '#inline' => TRUE,
  ];
  // salida a la página a servir
  echo theme_textfield($item);

Elementos Compuestos

 

Árbol de selección múltiple "selectordwymultiple"
Este elemento está orientado hacia la clasificación y/o catalogación de documentos empleando el sistema de clasificación Dwy36b inspirado en el sistema de clasificación decimal ideado por J. Dewey. Dicho sistema emplea un modelo de estructura de árbol en el que el primer nivel admite hasta 72 ramas (10 en el sistema ideado por Dewey) y cada nodo, a su vez admite la misma cantidad de subdivisiones. Cuando se asigna un elemento de la estructura como clasificación de un documento (o ítem de información) se le está asignando la rama completa, de modo que se consigue eliminar la ambigüedad derivada de las asignaciones de "claves homófonas" típicas de los tesauros y modelos de catalogación que emplean "palabras claves".

Este control permite, además, hacer asignación simultánea de múltiples categorías, situadas en distintas ramas de la estructura de clasificación jerarquica, haciendo un recorrido intuitivo de la misma, a partir de un nodo arbitrario que se establece mediante el atributo '#base'.

Presenta un campo de despliegue de textos para mostrar las asignaciones hechas y un juego de controles para hacer ajustes a las mismas.

Todos los encabezados mostrados en los botones, y algunos de sus detalles de apariencia son personalizables haciendo uso de sus atributos al preparar su definición.

Atributos
'#admitir_solo_iconos', '#attributes', '#base', '#botonrompernexo', '#context', '#default_value', '#description', '#encabezado_agregar', '#encabezado_desvincular', '#form-type', '#name', '#nombre_del_arbol', '#nombreasistente', '#ocultar_raiz', '#orderby', '#prefix', '#required', '#suffix':, '#textaid', '#title', '#togglehelp', '#type', '#usetextaid', '#value'.
En general sólo es necesario establecer una parte de los atributos ya que la mayoría tienen valores por defecto que aseguran su consistencia gráfica y funcionalidad.
  • '#type' = (requerido) 'selectordwymultiple'.
  • '#admitir_solo_iconos' = (boolean) 0 (default) | 1 si se desea permitir que los botónes no muestren ningún texto cuando estos se asignan explícitamente como cadenas vacías.
  • '#base' = 'Código del nodo a partir del cual se despliega el árbol de selección de descriptores de clasificación'.
  • '#botonrompernexo' = 'Texto del botón que rompe los nexos o vínculos de clasificación resaltados'.
  • '#encabezado_agregar' = 'Texto del botón que carga, despliega y cierra el árbol de clasificación emergente'.
  • '#encabezado_desvincular' = 'Texto del botón que anula todas las clasificaciones asignadas actualmente.'.
  • '#name' = (requerido) 'El nombre de máquina o interno de la instancia del elemento que va a ser creada'.
  • '#nombre_del_arbol' = 'El nombre que se desea mostrar en la base del árbol de clasificación, en reemplazo del descriptor temático de su raíz.' Se sugiere asignarlo cuando el nodo raź es nulo, pues en tal caso se asigna por defecto la etiqueta del elemento establecida en '#title'.
  • '#nombreasistente' = (Se sugiere asignarlo) 'El nombre que se asigna como título del dialogo emergente que despliega el árbol de clasificación.'.
  • '#ocultar_raiz' = (booleano) 0 (default) | 1 'Establece que se oculte la parte del código correspondiente a la raíz para presentar la rama de selección como una jerarquía independiente de modo que el resto de la estructura no haga ruido en el proceso de asignación de valores.
Ejemplos
Se muestran dos casos de uso del elemento; en uno de ellos se situa la base en la raíz del sistema y en el otro se elige un nodo de una rama para que sea posible observar la diferencia.
Antología o compilación; Literatura
Haga click en el botón [Asignar clasificación] para desplegar el árbol de selección de descriptores de clasificación. Elija las categorías que desee asignar y regrese haciendo click en el mismo botón.
investigador; colaborador permanente
Este control delpliega la lista típica Dwy enpara seleccionar múltiples entradas.
Código empleado
  <?php
  // Definición de los valores por defecto usados
  $defaultarbol_1 = [
    ['id'=>0, 'cifra'=>'LMF1', 'texto'=>'Antología o compilación'],
    ['id'=>0, 'cifra'=>'CDU8', 'texto'=>'Literatura']
  ];
  $defaultarbol_2 = [
    ['id'=>0, 'cifra'=>'LV34', 'texto'=>'investigador'],
    ['id'=>0, 'cifra'=>'LVA1', 'texto'=>'colaborador permanente']
  ];
  // definición de un array con los dos elementos del ejemplo:
  $grupodef = [
    '#type' => 'markup',
    '#title' => 'Ejemplos de árboles de selección múltiple',
    'arbolselector1' => [
        '#type' => 'selectordwymultiple',
        '#name' => 'arbolselector1',
        '#title' => 'Clasificación temática',
        '#description' => 'Haga click en el botón [Asignar clasificación] para desplegar el árbol de selección de descriptores de clasificación. Elija las categorías que desee asignar y regrese haciendo click en el mismo botón.',
        '#default_value' => $defaultarbol_1,
        '#nombreasistente' => 'Asistente para selección de temas de clasificación',
        '#base' => '',
        '#togglehelp' => 1,
        '#encabezado_agregar' => 'Asignar clasificación',
        '#encabezado_desvincular' => 'Desvincular todo',
        '#botonrompernexo' => 'Desvincular resaltado(s)',
        '#weight' => 1,
    ],
    'arbolselector2' => [
        '#type' => 'selectordwymultiple',
        '#name' => 'arbolselector2',
        '#title' => 'Vínculos',
        '#description' => 'Este control delpliega la lista típica Dwy enpara seleccionar múltiples entradas.',
        '#default_value' => $defaultarbol_2,
        '#base' => 'LV',
        '#nombre_del_arbol' => 'Vínculos',
        '#nombreasistente' => 'Asistente para establecer vínculos',
        '#encabezado_agregar' => 'Elegir vínculos',
        '#encabezado_desvincular' => 'Desvincular todo',
        '#botonrompernexo' => 'Desvincular resaltado(s)',
        '#togglehelp' => 1,
        '#weight' => 2,
    ],
  ];
  // devolución de salida:
  echo theme('markup', $grupodef);
  

 

Árbol selector simple "arbolselectordwy"
Este elemento al igual que el Árbol de selección múltiple está orientado hacia la clasificación y/o catalogación de documentos empleando el sistema de clasificación Dwy36b; pero para ser usado en casos en que se van a asignar categorías únicas. (ej. En la página de configuración de campos de un documento establecer el nodo raiz bajo el cual se va a desplegar un árbol de clasificación, o el nivel que usará una lista selectora para ofrecer sus opciones, etc.)

Atributos
'#admitir_solo_iconos', '#attributes', '#base', '#context', '#default_value', '#description', '#encabezado_agregar', '#encabezado_desvincular', '#form-type', '#name', '#nombre_del_arbol', '#nombreasistente', '#ocultar_raiz', '#orderby', '#prefix', '#required', '#suffix':, '#textaid', '#title', '#togglehelp', '#type', '#usetextaid', '#value'.
  • '#type' = (requerido) 'arbolselectordwy'.
  • '#admitir_solo_iconos' = (boolean) 0 (default) | 1 si se desea permitir que los botónes no muestren ningún texto cuando estos se asignan explícitamente como cadenas vacías.
  • '#base' = 'Código del nodo a partir del cual se despliega el árbol de selección de descriptores de clasificación'.
  • '#encabezado_agregar' = 'Texto del botón que carga, despliega y cierra el árbol de clasificación emergente'.
  • '#encabezado_desvincular' = 'Texto del botón que anula todas las clasificaciones asignadas actualmente.'.
  • '#name' = (requerido) 'El nombre de máquina o interno de la instancia del elemento que va a ser creada'.
  • '#nombre_del_arbol' = 'El nombre que se desea mostrar en la base del árbol de clasificación, en reemplazo del descriptor temático de su raíz.' Se sugiere asignarlo cuando el nodo raź es nulo, pues en tal caso se asigna por defecto la etiqueta del elemento establecida en '#title'.
  • '#nombreasistente' = (Se sugiere asignarlo) 'El nombre que se asigna como título del dialogo emergente que despliega el árbol de clasificación.'.
  • '#ocultar_raiz' = (booleano) 0 (default) | 1 'Establece que se oculte la parte del código correspondiente a la raíz para presentar la rama de selección como una jerarquía independiente de modo que el resto de la estructura no haga ruido en el proceso de asignación de valores.
Ejemplo
Se muestra una instancia del árbol usado en las páginas de configuración de campos de selección para establecer el nodo raíz que será usado para cargar tales elementos.
Formato bibliográfico
Use el botón [Asignar nodo] para desplegar el árbol de selección de nodos del sistema de clasificación. elija el que necesite y regrese haciendo uso del mismo botón o cerrando la ventana emergente. Si necesita desasignar la categoría electa haga click sobre ella y cuando esté destacada haga click en el control [Quitar asignación]

 

AzDbCombo - Lista Selectora AZ navegable
Este es un Control AJAX de entrada de datos. No debe emplearse en clientes que no soportan javaScript. Ofrece un mecanismo para alimentar campos de entrada mediante selecciones hechas en listas muy grandes, ligadas con tablas de una o más fuentes de datos. Las listas incorporan mecanismos de navegación haciendo uso de AZ y paginadores, con o sin cajas de búsqueda, para hacer amable su rrecorrido y la la selección se produce haciendo click sobre cualquier texto en la línea en que se encuentra el descriptor conveniente.

Soporta dos modelos de definición:

  • Haciendo definición explícita de sus principales atributos (ver ejemplos); salvo el atributo "#extendido" que es asignado por los controladores de campos extensores.
  • Creando y configurando instancias de alguno de los tipos extensores de campos que extienden su definición ofrecidos por módulos de extensión.

Atributos
'#attributes', '#botonbuscar', '#botonclear', '#buscar_en', '#campo-a-pasar', '#campoalfa', '#campos_az', '#campoid', '#campoidparacombo', '#compacto', '#condicion_virtual', '#context', '#default_value', '#description', '#extendido', '#encodeid', '#form-type', '#inline', '#mascara', '#name', '#orderby', '#prefix', '#required', '#suffix':, '#tabla', '#textaid', '#title', '#togglehelp', '#type', '#usamascara', '#usetextaid', '#value'.
  • '#type' = 'azdbcombo'.
  • '#botonbuscar' = 'Texto a mostrar en el botón que activa, carga y despliega la lista emergente'.
  • '#botonclear' = 'Texto a mostrar en el botón que anula cualquier vínculo existente con la fuente de datos y borra la selección en curso'.
  • '#buscar_en' = array ['ClaveCampo' => 1|0, ...] de pares 'Clave del campo o columna' => 'si es alfabético', presentando los objetivos de búsqueda para el filtro de texto (buscador) asociado con la lista emergente. Si hay claves que requieran procesos especiales de consulta deben registrarse en "#mascara".
  • '#campoalfa' = 'Nombre del campo por el que se ordena la lista emergente y se aplican los filtros alfabéticos del AZ'.
  • '#campoid' = 'Nombre del campo o clave primaria de la tabla o consulta de selección'.
  • '#campoidparacombo' = 'calveColumna' se debe establecer cuando el combo debe devolver un valor alfanumérico localizado en un campo diferente de "#campoid"'
  • '#campos_az' = array ['NombreCampo' => 'DescriptorDeColumna', ...] de pares presentando las claves de lectura (NombreCampo) asociados con los descriptores para encabezar las columnas de la lista emergente. Si las claves representan consultas complementarias u operaciones de sustitución de caracteres se deben declarar en el atributo "#mascara".
  • '#campo-a-pasar' = 'Nombre del campo (o descriptor de columna de consulta) cuyo valor será pasado como selección en respuesta al evento click en la lista'.
  • '#compacto' = TRUE | FALSE (default) Si la etiqueta se muestra como plugin de Bootstrap pegada a la caja de entrada de texto. Sólo tiene efecto si se estableció "#inline" = TRUE.
  • '#condicion_virtual' = 'Condición SQL requerida para cargar contenidos' ver '#condicion_virtual'
  • '#context' = 'default' | 'success' | 'info' | 'primary' | 'warning' | 'danger' | '' Asigna el atributo de contexto Bootstrap que se aplicacrá a los botones de comando.
  • '#default_value' = [] | NULL | en caso de asignar se debe pasar un array de la forma ['id'=>0, 'cifra'=>'', 'texto'=>'']; el validador de entrada verifica que hayan sido asignados el campo 'texto' y al menos uno de los identificadores 'id' o 'cifra'.
  • '#description' = 'Texto corto a mostrar bajo el grupo de entrada de datos para ofrecer indicaciones acerca de su uso'.
  • '#encodeid' = 1 | 0 Se usa para indicar que requiere paso codificado del valor en el campoid. Esto ocurre en tablas en las que la clave primaria es alfabética y admite caracteres especiales, como es el caso de la tabla de paths, usada en el segundo ejemplo.
  • '#extendido' = fciid | 0 (default) El índice del registro de instancia de campo en la base de datos en caso de estar usando el modelo extensor o 0 si se trata de una definición explícita que apunta a una tabla normal como fuente de datos. Si se emplea el modelo extensor los valores serializables no son pasados al cliente y se recuperan desde el caché en db al procesar acciones asociadas con la instancia del elemento. El valor de fciid debe ser consultado en la base de datos o, en caso de usar tipos de contenido extendidos se debe delegar su asignación en el controlador de los mismos que prepara el editor el documento en que se usa la instancia.
  • '#form-type' = 'Presenta el tipo explícido del contenido dentro del que es mostrado del elemento. No puede hacerse registro de más de un tipo por "página html" y debe asignarse idéntico a todas las instancias del mismo. Este atributo será retirado para ser controlado por los preprocesadores pero de momento se puede delegar en el valor "default"'.
  • '#inline' = 1 | 0 (default) Establece si la etiqueta y los controles de entrada se muestran en una sola línea o si la etiqueta se muestra soble aquellos alineada a izquierda.
  • '#mascara' = array ['ClaveColumna' => array(ModeloIOdeLaColumna), ...] Establece el mecanismo para recuperar los datos que muestra cada una de las columnas durante el preproceso de las consultas que llenan la lista.
  • '#name' = 'El nombre de máquina de la instancia' requerido. Es imprescindible para asegurar los vínculos entre los elementos controladores cuyos valores cambian en cascada durante la dinámica ajax.
  • '#orderby' = array | string ['ClaveColumna ASC|DESC', ...] Condiciones de orden adicionales. Si se emplea se debe asignar en su primer elemento la columna asociada con #campoalfa para asegurar que los filtros AZ operen del modo esperado.
  • '#tabla' = 'NombreTabla | TablaVirtual' El nombre del origen de datos. Si se indica una tabla virtual (Nombre de una consulta) deben establecerse los atributos complementarios para asegurar que las listas emergentes puedan ser cargadas.
  • '#textaid' =
  • '#title' = 'descriptor a mostrar en la etiqueta y en el encabezado de la lista emergente.'
  • '#usamascara' = 1 | 0 (default) Atributo agilizador para disparar el mecanismo de carga del control de máscaras de entrada de datos. debe asignarse cuando se usan máscaras y se está instanciando directamente el elemento. Cuando se trate de instancias extensoras no hace falta asignarlo.
Ejemplos
Se muestran dos juegos de entrada de datos sincronizados con una única ventana emergente que se emplea para mostrar los contenidos de las tablas de selección de datos.
Se eligieron, arbitrariamente, dos tablas existentes, que ofrecen suficientes datos para ilustrar la efectividad del mecanismo de navegación de las listas. No obstante, los juegos de encabezados podrían no corresponder con una circunstancia real.
Modelo ligado a tabla de clasificación
Use el selector para establecer el tema que desea asignar al contenido.
Código empleado
  <?php
  // Preparar la definición del elemento asignando sus atributos:
  $combodef = [
    '#togglehelp'       =>TRUE,
    '#type'             => 'azdbcombo',    // NECESARIO para que theme('azdbcombo', $combodef); pueda actuar
    '#context'          => 'success',      // se asigna a los buttons (verdes)
    '#name'             => 'clasificador', // se debe asignar nombre
    '#title'            => 'Tema',         // Label del grupo de entrada
    '#tabla'            => 'tblclasificacionb36',    // tabla virtual
    '#form-type'        => 'default',      // node | tipo de contenido al que pertenece el campo
    '#inline'           => TRUE,
    '#compacto'         => FALSE,
    '#campoid'          => 'idclasificacionb36',
    '#campos_az'        => ['descriptordeclase' => 'Descriptor temático', 'clasificacionb36' => 'código', 'enunciadodefinitorio' => 'descripción' ],
    '#orderby'          => ['descriptordeclase'],
    '#campoalfa'        => 'descriptordeclase',
    '#campoidparacombo' => 'clasificacionb36', // cuando el combo debe devolver un valor en un campo diferente de campoid
    '#campo-a-pasar'    => 'descriptordeclase', // si no se asigna se asume campoalfa
    '#default_value'    => [],
    '#usetextaid'       => TRUE,    // muestra sugerencia para placeholder,
    '#textaid'          => '',      // sugerencia para placeholder si no se asigna muestra default
    '#botonbuscar'      => 'explorar en buscador AZ',
    '#botonclear'       => 'desvincular',
    '#buscar_en'        => ['descriptordeclase'=>1, 'clasificacionb36'=>1, 'enunciadodefinitorio' =>1],
    '#description'      => 'Use el selector para establecer el tema que desea asignar al contenido.',
    '#usamascara'       => TRUE, // sólo si asigna #mascara en otro caso no declarar
    '#mascara'          => array('clasificacionb36'=>['zeta'=>'z', 'punto'=>'.']),
  ];
  // mostrar el combo:  
  echo theme('azdbcombo', $combodef);
      
Modelo ligado a tabla de rutas (compacto - se asigna '#compacto' => TRUE)
Ruta
Use el selector para establecer la ruta que desea asignar al ítem de menú que se está definiendo.
Código empleado
 
  <?php
  $combodef = [
    '#togglehelp'       =>TRUE,
    '#type'             => 'azdbcombo',
    '#context'          => 'warning',
    '#name'             => 'routeselector', // se debe asignar nombre
    '#title'            => 'Ruta',    // Label del grupo de entrada
    '#tabla'            => 'menu_router',    // tabla virtual
    '#form-type'        => 'default',    // node | tipo de contenido al que pertenece el campo
    '#inline'           => TRUE,
    '#compacto'         => TRUE,
    '#campoid'          => 'path',
    '#campos_az'        => ['title' => 'Ruta', 'path' => 'url relativo' ],
    '#orderby'          => ['title'],
    '#campoalfa'        => 'title',
    '#campoidparacombo' => 'path', // cuando el combo debe devolver un valor en un campo diferente de campoid
    '#campo-a-pasar'    => 'title', // si no se asigna se asume campoalfa
    '#default_value'    => [],
    '#usetextaid'       => TRUE,    // sugerencia para placeholder,
    '#textaid'          => '',      // sugerencia para placeholder
    '#botonbuscar'      => 'Elegir ruta en buscador AZ',
    '#botonclear'       => 'quitar ruta',
    '#encoded'          => 1, // IMPORTANTE los ids son paths con caracteres especiales se codifican para evitar errores
    '#description'      => 'Use el selector para establecer la ruta que desea asignar al ítem de menú que se está definiendo.',
    '#usamascara'       => FALSE,
  ];
  // mostrar el combo:  
  echo theme('azdbcombo', $combodef);
      

 

AreaDinaSet (Párrafos dinámicos)
Este tipo de elemento tiene como propósito facilitar la presentación y recolección de grupos de párrafos que mantienen unidad temática (o de sentido) pero que van a ser registrados como unidades individuales.
El caso típico son las asepciones de un concepto, que deben ser registradas, como definiciones individuales del mismo y que van a ser usadas individualmente en diferentes contextos.

Atributos
'#boton_agregar_label', '#collapsible', '#collapsed', '#context', '#description', '#name', '#title', '#togglehelp', '#type', '#prefix', '#subitempad', '#suffix', '#value'.
  • '#type' = 'areadinaset'
  • '#boton_agregar_label' = 'Texto a mostrar en el botón que lanza la adición de nuevos ítems.'
  • '#collapsible' = (boolean) 0 | 1 si se desea que se muestre como bloque colapsable.
  • '#collapsed' = (boolean) 0 | 1 Sólo si es colapsable indica el estado inicial colapsado o desplegado (0)
  • '#context' = 'default' | 'success' | 'info' | 'primary' | 'warning' | 'danger' | ''
  • '#description' = (string) 'Texto a mostrar como ayuda para el usuario'
  • '#subitempad' = (array) Array de definición de la plantilla de textarea usada para construir los subitems con los siguientes atributos adicionales:
    '#dinamic_title' (boolean) 0 | 1 En caso de que los párrafos se presenten numerados con un prefijo, para diferenciarlos. Si se asigna 0 los párrafos carecerán de encabezados.
    '#title_prefix' Sólo si dinamic_title = 1. Texto común a los encabezados de los textos del grupo que se diferenciarán por un número de orden de entrada.
    '#joindbid' (boolean) 0 | 1 Si los textos asociarán id de registro individual en alguna tabla. Si se asigna cero serán almacenados como array en el registro del campo.
    '#datadbid' El id del registro en db del dato en el contenedor del párrafo. Debe pasarse 0 en la plantilla pues será actualizado por el generador de contenedores usando los ids en el array '#value'
  • '#value' = (array) Array de arrays de la forma:
    [total => (int) n, 'textos' => [0=>['id'=>int, 'cifra'=>(string) code, 'texto'=> (string) 'texto del subitem'], ..., n-1 => [idem] ]]
    el subarray 'textos' puede ser [] cuando 'total' => 0
Ejemplo:
Se muestra el bloque de entrada de asepciones empleado en el formulario de edición de conceptos, en la página de administración de los mismos.
   

Cada palabra registrada puede tener una o más asepciones (significados). De modo que tanto la sinomimía, como la asignación como clave para recuperación, no son estrictas ni precisas. Usted puede registrar las asepciones de las mismas y luego emplearlas en los lugares en los que han sido asignadas para hacer más precisas las búsquedas y ofrecer relaciones entre contenidos con mayor consistencia.
Este grupo de campos no admite la sintaxis markdown

Nota:
En este ejemplo no se produce genéración dinámica de los títulos de los párrafos porque No fue instanciado dentro de un formulario de modo que no se hizo registro del mismo en en cache de forms y el responser AJAX no puede recuperar los datos necesarios para generarlos.
Código empleado:
  <?php
  echo theme(
    'areadinaset',
    [
        '#type' => 'areadinaset', '#weight' => 10, 
        '#name' => 'asepciones',
        '#boton_agregar_label' => 'agregar otra asepción',
        '#collapsible' => 0, 
        '#value' => ['total'=>0, 'textos'=>[]], 
        '#title' => 'Asepciones',
        '#togglehelp' => 1, '#description' => leer_archivo_de_texto_auxiliar('txt/es/asepciones_info.htm', 'mentefactos'),
        '#subitempad' => [
            '#rows' => 2, '#title_prefix' => 'Asepción', '#type' => 'textarea',
            '#dinamic_title' => 1, '#width' => '100%', '#default_value' => '',
            '#joindbid' => 1, '#datadbid' => 0
        ]
    ]
  );  

 

BodyField
Este elemento ofrece un juego de áreas de texto sincronizadas para recoger el contenido a mostrar en un documento, junto con un resumen, que se mostrará en listados y páginas de resúmenes agrupados. Ofrece, adicionalmente, mecanismos para elegir los filtros aplicables a su formato de entrada y para conmutar la visibilidad y modo de presentación del resumen.

Cuando se emplean algunos módulos de extensión opera como un editor de texto enriquecido simplificado.

Atributos
'#attributes', '#body', '#bodyrows', '#command_context', '#context', '#create_resumen_head', '#default_format', '#description', '#format', '#formatselectable', '#hasteaser', '#create_resumen_head', '#name', '#min_chars_count', '#show_resumen_head', '#teaser', '#teaser_enabled', '#teaser_included', '#teaser_rows', '#title', '#togglehelp', '#type', '#width'.
Es importante tener en cuenta que este control no acepta los atributos '#inline', '#default_value' y '#value', pues el primero carece de sentido para él y los dos últimos son reemplazados por #body, y en caso de haber resumen por #teaser y #body.
  • '#type' = 'bodyfield'
  • '#body' = '' El contenido del texto principal (sin el resumen).
  • '#bodyrows' Indica explícitamente la cantidad de líneas, por defecto, que mostrará la caja de entrada del cuerpo.
  • '#command_context' Contexto TwBs del botón que activa/desactiva el resumen.
  • '#create_resumen_head' Texto a mostrar en la cara del botón que activa la creación del resumen.
  • '#default_format' = (int) Una constante indicadora del valor por defecto del formato de entrada. Se emplea cuando el formato es elegible.
  • '#format' = (int) Una constante indicadora del formato de entrada usado para recoger el #body y el resumen (#teaser).
  • '#formatselectable' = (boolean) 1 | 0 (default) indica si el usuario puede elegir o no el formato de entrada. En caso de ser 1 se presenta, bajo el area de texto, un control de selección que ofrece los formatos disponibles para los privilegios de acceso establecidos para los grupos a los que pertenece.
  • '#hasteaser' = (boolean) 1 | 0 (default) indica si el control puede mostrar un area para escribir un resumen. El resumen se suele mostrar seguido de puntos suspensivos y de un enlace "ver mas" en las vistas agrupadas y listados de documentos.
  • '#join_resumen_head' Texto a mostrar en el botón que desactiva el resumen, fundiendolo con el cuerpo.
  • '#min_chars_count' = 0 | (int) Si se establece a un valor mayor que cero equivale al atributo required e indica la cantidad de caracteres mínima necesaria para aceptar la entrada como válida.
  • '#show_resumen_head' Texto a mostrar en el cuadro de confirmación que indica si se muestra o no el resumen en la vista normal. (default: 'Incluir el resumen en la vista normal').
  • '#teaser Es el equivalente de #body para el resumen. Contiene el texto que se haya asignado al mismo.
  • '#teaser_enabled' y '#teaser_included' son atributos de sólo lectura, establecidos por el usuario durante los procesos de captura de datos. indican si se ha establecido un resumen y si el resumen es visible o no en la vista normal de contenidos.
  • '#teaserrows' Indica explícitamente la cantidad de líneas, por defecto, que mostrará la caja de entrada del resumen.
Ejemplo:
Se muestra un área de texto normal, con un texto dentro de ella. Escriba lo que desee añadirle, localice el cursor en cualquier parte del mismo y haga click en el botón para ver su comportamiento.
Ejemplo de prueba
  
Código empleado:
    $definebodyfield = [
    '#type' => 'bodyfield', '#title'=>'Cuerpo', '#body'=>$lorentxt, 
    '#teaser'=>'', '#formatselectable' => 1,
    '#name' => 'pruebabodyfield', '#hasteaser' => 1
  ];
  echo theme_bodyfield($definebodyfield);
  

 

CheckBoxes
Este tipo de elemento tiene como propósito facilitar la recolección de grupos de opciones complementarias, en las que varias combinaciones de condiciones boleanas son posibles simultáneamente; de modo que se marquen sólo aquellas que sean afirmativas.

Atributos
'#attributes', '#bold', '#cols', '#context', '#default_value', '#description', '#inline', '#labelpos', '#name', '#options', '#prefix', '#required', '#suffix':, '#title', '#titlepos', '#togglehelp', '#type', '#value'.
  • '#type' = 'checkboxes'
  • '#title' = 'Texto a mostrar en su etiqueta. Puede ser nulo o no asignarse.'
  • '#options' = Array de pares valor => etiqueta de opción .
  • '#bold' = TRUE | FALSE 'Indica que las etiquetas de opciones deben mostrarse destacadas en negrilla. Por defecto es false'
  • '#value' = 'array de valores en curso.
  • '#default_value' = 'El por defecto al cargar el grupo indica que opciones deben estar marcadas.
  • '#labelpos' = 0 | 1 | NULL si es 1 o no nulo se muestra a derecha
  • '#cols' = numcols | 0 | NULL En caso de haber establecido el atributo '#inline' indica el número máximo de elementos que serán mostrados en cada línea.
  • '#description' Texto auxiliar indicando las condiciones asociadas al uso del elemento.
Importante:
No es conveniente asignar los valores 1 (izquierda) y 2 (derecha) al atributo '#titlepos' pues se produciría una caja de entrada en línea en los que el posicionamiento de los cuadros de marcación y sus etiquetas podría no ser el esperado.
Ejemplo:
Se muestra un juego de cajas de chequeo en el que cualquiera puede ser marcada:
:   
:   
:   
:   
Por favor marque las opciones que considere pertinentes. Puede elegir una o más, o ninguna.
Código empleado:
  <?php
  module_load_include('inc', 'foliate', 'hook/elements');
  $options = [
    'o1' => 'El texto es confuso', 'o2'=>'El texto es util', 
    'o3'=>'el texto es aburrido', 'o4'=>'La redacción no es buena'
  ];
  $item = [
    '#name'     => 'complementarias', 
    '#title'    => 'Opciones complementarias', 
    '#type'     => 'checkboxes', 
    '#value'    => [], 
    '#labelpos' => 0, 
    '#options'  => $options, 
    '#description' =>Por favor marque las opciones que considere pertinentes. Puede elegir una o más, o ninguna.
  ];
  echo theme_checkboxes($item);

 

Date
Este control ofrece un juego de listas selectoras para hacer selección de fechas. Dichas listas pueden contener valores nulos para casos en los que el usuario no puede fijar alguno o todos los datos, de modo que no se obligue a ingresar una fecha que podría ser errónea.

Atributos
'#amplitud', '#attributes', '#context', '#default_value', '#description', '#format', '#inline', '#max', '#min', '#name', '#noneitem', '#nulo', '#prefix', '#suffix':, '#title', '#titlepos', '#togglehelp', '#type', '#value'.
  • '#type' = 'date'
  • '#min' = cota inferior para años | [ 0 | NULL ]
  • '#max' = cota anual superior | [ 0 | NULL ]
  • '#amplitud' = años alrededor de current | [ 0 | NULL ] Se puede asignar en caso de no haber asignado #min y #max. Su default es 20
  • '#format' = 'dma', 'amd', 'dm', 'md', 'am', 'ma' Indica si el control muestra dos o tres cajas con a=año, d=día, m=mes.
  • '#nulo = TRUE | [ FALSE | NULL ] indica si puede ser nulo, en tal caso aparecen opciones mes, año, día para dejarlos sin selección
  • '#default_value' = ['dia' => '', 'mes' => '', 'anho'=> ''] | [] Establece el valor por defecto. Si #nulo=TRUE el default será cadenas nulas, en otro caso será la fecha actual.
  • '#value' = ['dia' => '', 'mes' => '', 'anho'=> ''] | [] | Null Es el valor actualmente establecido en el cliente. Se puede pasar, como en el ejemplo abajo, pero se recomienda delegar en el controlador.
Ejemplo:
Grupo de listas para selección de fecha:
:  
Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.
Código empleado:
  <?php
  module_load_include('inc', 'foliate', 'hook/elements');
$fechaelement = [ '#name'=>'fecha', '#context' => 'primary', '#type' => 'date', '#nulo'=>TRUE, '#min' => 1967, '#max'=>2030, '#value'=>['anho'=>2012, 'mes'=>12, 'dia'=>12], '#inline'=>TRUE, '#title'=>'Elija una fecha', '#description' => 'Cras justo odio, dapibus ac facilisis in, egestas eget quam. ' . 'Donec id elit non mi porta gravida at eget metus. Nullam id dolor' . id nibh ultricies vehicula ut id elit.' ]; echo theme_date($fechaelement);
Observese que al aplicar #context = primary se obtiene el juego de azules; y que como efecto del atributo #nulo = TRUE las lista incluyen las opciones [año], [mes], [día] además de los descriptores de fecha explícitos de modo que estos se pueden usar para contar con un posible default para "fecha no asignada".

 

Format filter
Ofrece un fieldset colapsable que enmarca un juego de radios mutuamente excluyentes dispuestos para elegir uno entre varios formatos de entrada disponibles. Muestra los formatos que estando habilitados, hayan sido permitidos al usuario activo.
Este elemento, generalmente se muestra asociado a un área de texto, o a la página completa para decidir el tipo de entrada que se hará en la misma. Se ofrece para facilitar tal asociación, sin tener que estar haciendo cajas de entrada.

Atributos
'#attributes', '#context', '#collapsed', '#value', '#name', '#prefix', '#suffix':, '#title', '#type', '#value'.
En general sólo hacen falta los atributos '#name' y '#type' para definirlo corectamente. Si se especifica '#value' se estará indicando la opción que se muestra marcada por defecto. Pero, si no se establece se mostrará la opción por defecto.
  • '#type' = 'format'
  • '#title' = Texto a mostrar se usa como alternador de cierre. (default: "Formato de entrada")
  • '#collapsed' = TRUE (default) | FALSE
  • '#name' 'nombre' | NULL si es nulo se autogenera
  • '#default_value' (int) | 0 (default) constante indicadora del formato a mostrar electo por defecto.
Ejemplo:
Código empleado:
  <?php
  module_load_include('inc', 'foliate', 'hook/elements');
  // Una definición minimalista
  $formatelement = [
      '#type'=>'format', '#title' => 'Elija el formato del campo'
  ];
  // invocar la salida para usarlo
  echo theme_format($formatelement);
  

 

Ordenador de listas
Ofrece un contenedor en el que se inserta una lista o tabla que se desea reordenar manualmente. Los elementos de la tabla o lista a reordenar, deben ser preprocesados antes de ser pasados al elemento siguiendo las páutas que se establecen en los comentarios a los atributos (abajo).

Atributos
'#attributes', '#arrows', '#campoid', '#content', '#context', '#description', '#headers', '#lectokeys', '#name', '#prefix', '#suffix':, '#title', '#titlepos', '#togglehelp', '#type', '#value',
  • '#type' = 'listorderer'
  • '#headers' = array de arrays especificando los encabezados
  • '#lectokeys' = array de nombres de los campos a leer para llenar las celdas. Ver '#lectokeys' (abajo)
  • '#content' = array de registros a leer para llenar las líneas
  • '#campoid' = nombre del campo que contiene los ids de los registros
  • '#arrows' = 'move' | 'resize-vertical' identificador del glyfo que brinda flechas indicadoras de acción
  • '#value' = 'lista comaseparada de pesos de las líneas' En general no se requiere
Ejemplo:
  Id Artista Canción Acciones
     edit | delete
     edit | delete
     edit | delete
     edit | delete
El ordenador de listas es un control especial, cuyas propiedades son diferentes al común.
Arrastre las líneas hacia arriba o hacia abajo para cambiar sus posiciones dentro de la tabla.
Código empleado:
  <?php
  module_load_include('inc', 'foliate', 'hook/elements');
  // Preparación de la consulta a mostrar
  // 1. Se crea una función para asignar acciones a los registros
  function preprocesarContenido($content){
    $salida = [];
    $editicon = '<span class="glyphicon glyphicon-pencil" aria-hidden="true"></span> ';
    $deleteicon = ' <span class="glyphicon glyphicon-trash" aria-hidden="true"></span>';
    for($i = 0; $i<count($content); $i++){
        $linea = $content[$i];
        $linea['action'] = '<a href="/album/edit/'.$content[$i]['id'].'">'.$editicon.'edit</a> | '.
                               '<a href="/album/delete/'.$content[$i]['id'].'">delete'.$deleteicon.'</a>';
        $salida[] = $linea;
    }
    return $salida;
  }
  // 2. Ejecuta la consulta y ajusta el recordset para pasarlo a la tabla
  $query = 'SELECT * FROM album WHERE 1';
  $content = preprocesarContenido( db_query( $query ) );
  // Se preparan los arrays de control para la definición del elemento
  $headers = [
    ['header' => 'Id'],['header' => 'Artista'], ['header' => 'Canción'], ['header' => 'Acciones']
  ];
  $lectokeys = ['id', 'artist', 'title', 'action'];
  // Se crea el array de definición del elemento
  $item = ['#name'      =>'Ordenador', 
         '#type'      => 'listorderer', 
         '#headers'   => $headers,
         '#lectokeys' => $lectokeys,
         '#content'   => $content,
         '#value'     => [],
         '#title'     => 'Esta es una lista ordenable manualmente', 
         '#campoid'   => 'id',
         '#arrows'    => 'move', // 'move' | 'resize-vertical', default = 'resize-vertical'
         '#description' => El ordenador de listas es un control especial, cuyas propiedades son diferentes al común.
Arrastre las líneas hacia arriba o hacia abajo para cambiar sus posiciones dentro de la tabla. ]; // Se muestra la lista echo theme_item($item);

 

Ordenador de listas discretas

Este control, es una extensión natural del ordenador de listas orientado a trabajar con juegos de listas sincronizadas reordenando e intercambiando sus elementos. Adicionalmente, cada elemento puede contener subelementos activos (de casi cualquier tipo) que disparen acciones o sean útiles para recoger datos.

Atributos
'#attributes', '#arrows', '#bindselect', '#campoid', '#content', '#context', '#description', '#grupfldnm', '#grupos', '#headers', '#lectokeys', '#name', '#noneitem', '#pannel', '#prefix', '#rows', '#sticky':, '#suffix':, '#tagnm', '#title', '#titlepos', '#togglehelp', '#type', '#value'
  • '#type' = 'listmultiorden'
  • '#headers' = array de arrays especificando los encabezados de columna si usa modo de tabla
  • '#lectokeys' = array de nombres de los campos a leer para llenar las celdas o las líneas de presentación de los registros a ordenar. Ver '#lectokeys' (abajo)
  • '#noneitem' = Cadena a usar como clave de grupo por defecto para los items que no tengan en el campo grupfldnm un valor que los asocie con alguno de los grupos registrados. Si no se asigna dichos items quedarán por fuera de las listas, como si no existiesen.
  • '#content' = array de registros a leer para llenar las líneas. Resultado de la consulta base usada para alimentar las listas
  • '#campoid' = nombre del campo que contiene los ids de los registros
  • '#arrows' = 'move' | 'resize-vertical' identificador del glyfo que brinda flechas indicadoras de acción
  • '#grupfldnm' = Nombre del campo que contiene la referencia al id de grupo al que pertenece cada item.
  • '#grupos' = array de definiciones de los encabezadores de grupos en que serán repartidos los items a organizar
  • '#pannel' = (boolean) 1 | 0, default 0; indica si muestra las listas como paneles o como cajas de lista normales
  • '#bindselect' = (boolean) 1 | 0, default 0; indica si cada item incluye una lista tipo select que permite enviarlo a alguna de las listas sincronizadas.
  • '#rows' = un array de la forma: [ n => [clave1 => ancho1, ... ], m => [] ] que presenta las posiciones de los grupos en un grid de Bootstrap
  • '#sticky' = default | warning | info | danger | success | NULL asigna un color de contraste al fondo de los items pares para mejorar la visualización de las listas
  • '#tagnm' = 'ul' | 'table' nombre del contenedor a usar (default ul)
  • '#value' = 'lista comaseparada de pesos de las líneas' En general no se requiere
Ejemplo:
Arrastre los items de las listas a las posiciones que desée. Puede moverlos de una lista a otra, no importa que la lista de origen quede vacía. Si lo prefiere puede usar las listas selectoras para "enviar" los items de una lista a otra; quedará situado al inicio de la lista de destino.

Zona encabezado

  •  Menu navegar  
      configurar
  •  Site Header  
      configurar

Lado izquierda

  •  User menu  
      configurar

Zona principal

    Lado derecha

    •  Destacados  
        configurar

    Pie de página

    •  Créditos  
        configurar

    Bloques inactivos

    •  Bloque 1  
        configurar
    •  Bloque 2  
        configurar
    •  Bloque 3  
        configurar
    •  Bloque 4  
        configurar
    •  Buscador  
        configurar
    •  Clasificador  
        configurar
    •  Bloque 7  
        configurar
    •  Publicidad  
        configurar
    Código empleado:
      <?php
      module_load_include('inc', 'foliate', 'hook/elements');
      function info_simularConsultaDeBloques(){
        // Prepara un array de falsos bloques para simular el resultado de una 
        // consulta que se muestra como lista
        $bloques = [
            ['bid' => 1, 'name' => 'Bloque 1', 'region' => ''], 
            ['bid' => 2, 'name' => 'Bloque 2', 'region' => ''], 
            ['bid' => 3, 'name' => 'Bloque 3', 'region' => ''], 
            ['bid' => 4, 'name' => 'Bloque 4', 'region' => ''], 
            ['bid' => 6, 'name' => 'Buscador', 'region' => ''], 
            ['bid' => 8, 'name' => 'Clasificador', 'region' => ''], 
            ['bid' => 9, 'name' => 'User menu', 'region' => 'izquierda'], 
            ['bid' => 10, 'name' => 'Bloque 7', 'region' => ''], 
            ['bid' => 11, 'name' => 'Menu navegar', 'region' => 'encabezado'], 
            ['bid' => 12, 'name' => 'Site Header', 'region' => 'encabezado'], 
            ['bid' => 13, 'name' => 'Publicidad', 'region' => ''], 
            ['bid' => 15, 'name' => 'Destacados', 'region' => 'derecha'], 
            ['bid' => 17, 'name' => 'Créditos', 'region' => 'pie'], 
        ];
        return $bloques;
      }
      // Se crea una función para preparar el array de definición
      function info_prepare_listmultiordendef(){
        $consulta = info_simularConsultaDeBloques();
        // Simula los grupos existentes
        $grupos = [
            'izquierda' => ['#title' => 'Lado izquierda', ],
            'derecha' => ['#title' => 'Lado derecha', ],
            'encabezado' => ['#title' => 'Zona encabezado',],
            'cuerpo' => ['#title' => 'Zona principal',],
            'pie' => ['#title' => 'Pie de página', ],
            'none' => ['#title' => 'Bloques inactivos', ],
        ];
        // Escribe un modelo de salida para pasar en #rows
        $lineas = [
            0 => ['encabezado' => 12],
            1 => ['izquierda' => 3, 'cuerpo' => 6, 'derecha' => 3],
            2 => ['pie' => 12],
            3 => ['none' => 12],
        ];
        // Escribe la definición. Nótese que solo se emplean algunos atributos clave
        $elmdef = [
            '#type' => 'listmultiorden', '#title' => 'Simulación de configurador de bloques',
            '#name' => 'configzonas',
            '#grupos' => $grupos, '#rows' => $lineas,
            '#grupfldnm' => 'region', '#campoid' => 'bid', '#campotxt' => 'name',
            '#content' => $consulta, '#pannel' => 1, '#sticky' => 'default'
        ];
        // Devuelve la definición
        return $elmdef;
      }
      // EJECUCIÓN:
      echo theme_listmultiorden(info_prepare_listmultiordendef());
      

     

    Ordenador de listas anidadas

    Al igual que el Ordenador de listas discretas, este control, es una extensión natural del ordenador de listas orientado a trabajar con juegos de listas anidados dentro de una lista a modo de árbol. Permite reordenarla e intercambiar o desplazar ramas completas.
    Es particularmente útil para trabajar con menús, índices (tablas de contenidos) y sistemas de clasificación jerárquicos. La página de administración de menús muestra "ejemplos vivos" de su uso, al establecer las estructuras de los menús personalizados.

    Atributos
    '#attributes', '#arrows', '#bindselect', '#context', '#description', '#headers', '#lectokeys', '#name', '#prefix', '#suffix':, '#title', '#togglehelp', '#type', '#value'

     

    Lista clasificadora editable - (campodelistaslz)
    Este elemento tiene como propósito asociar un documento o alguna parte de su contenido con múltiples descriptores localizados en alguna fuente de datos, ej. con una lista de palabras claves, tesaurus o taxonomía. De modo que, pueda ser recuperado en el futuro al realizar búsquedas que las emplean para tal fin.

    Ofrece un area de texto en la que las claves pueden se ingresadas separadas mediante el caracter ';' o mediante saltos de línea. Y, para evitar saturar el sistema con claves equivalentes que presenten ligeras diferencias de escritura permite buscarlas y seleccionarlas en una lista emergente. ver ejemplo

    Atributos
    '#attributes', '#botonbuscar', '#botonclear', '#btnscontext', '#buscar_en', '#campo-a-pasar', '#campoalfa', '#campos_az', '#campoid', '#campoidparalista', '#condicion_virtual', '#context', '#default_value', '#description', '#extendido', '#encodeid', '#form-type', '#llamador-context', '#mascara', '#name', '#orderby', '#prefix', '#required', '#suffix':, '#tabla', '#textaid', '#title', '#togglehelp', '#type', '#unbinder-context', '#usamascara', '#usetextaid', '#value'.
    • '#type' = 'campodelistaslz'.
    • '#botonbuscar' = 'Texto a mostrar en el botón que activa, carga y despliega la lista emergente'.
    • '#botonclear' = 'Texto a mostrar en el botón que anula cualquier vínculo existente con la fuente de datos y borra la selección en curso'.
    • '#btnscontext' = 'default' | 'success' | 'info' | 'primary' | 'warning' | 'danger' | '' Asigna el atributo de contexto Bootstrap que se aplicará al juego de botones del elemento. Este atributo se puede asignar individualmente para cada botón; y se diferencia del del elemento en conjunto para asegurar la marcación de errores.
    • '#buscar_en' = array ['ClaveCampo' => 1|0, ...] de pares 'Clave del campo o columna' => 'si es alfabético', presentando los objetivos de búsqueda para el filtro de texto (buscador) asociado con la lista emergente. Si hay claves que requieran procesos especiales de consulta deben registrarse en "#mascara".
    • '#campoalfa' = 'Nombre del campo por el que se ordena la lista emergente y se aplican los filtros alfabéticos del AZ'.
    • '#campoid' = 'Nombre del campo o clave primaria de la tabla o consulta de selección'.
    • '#campoidparalista' = 'calveColumna' se debe establecer cuando la lista emergente debe devolver valores alfanuméricos localizados en un campo diferente de "#campoid"'
    • '#campos_az' = array ['NombreCampo' => 'DescriptorDeColumna', ...] de pares presentando las claves de lectura (NombreCampo) asociados con los descriptores para encabezar las columnas de la lista emergente. Si las claves representan consultas complementarias u operaciones de sustitución de caracteres se deben declarar en el atributo "#mascara".
    • '#campo-a-pasar' = 'Nombre del campo (o descriptor de columna de consulta) cuyo valor será pasado como selección en respuesta al evento click en la lista'.
    • '#condicion_virtual' = 'condición sql requerida por las clausulas WHERE que preparan las consultas que definen la "tabla virtual" origen de datos. Ver '#condicion_virtual'
    • '#context' = 'default' | 'success' | 'info' | 'primary' | 'warning' | 'danger' | '' Asigna el atributo de contexto Bootstrap que se aplicará a la zona de entrada y la etiqueta del elemento.
    • '#default_value' = [] | NULL | en caso de asignar se debe pasar un array de la forma ['id'=>0, 'cifra'=>'', 'texto'=>'']; el validador de entrada verifica que hayan sido asignados el campo 'texto' y al menos uno de los identificadores 'id' o 'cifra'.
    • '#description' = 'Texto corto a mostrar bajo el grupo de entrada de datos para ofrecer indicaciones acerca de su uso'.
    • '#encodeid' = 1 | 0 Se usa para indicar que requiere paso codificado del valor en el campoid. Esto ocurre en tablas en las que la clave primaria es alfabética y admite caracteres especiales, como es el caso de la tabla de paths, usada en el segundo ejemplo.
    • '#extendido' = fciid | 0 (default) El índice del registro de instancia de campo en la base de datos en caso de estar usando el modelo extensor o 0 si se trata de una definición explícita que apunta a una tabla normal como fuente de datos. Si se emplea el modelo extensor los valores serializables no son pasados al cliente y se recuperan desde el caché en db al procesar acciones asociadas con la instancia del elemento. El valor de fciid debe ser consultado en la base de datos o, en caso de usar tipos de contenido extendidos se debe delegar su asignación en el controlador de los mismos que prepara el editor el documento en que se usa la instancia.
    • '#form-type' = 'Presenta el tipo explícido del contenido dentro del que es mostrado del elemento. No puede hacerse registro de más de un tipo por "página html" y debe asignarse idéntico a todas las instancias del mismo. Este atributo será retirado para ser controlado por los preprocesadores pero de momento se puede delegar en el valor "default"'.
    • '#llamador-context' = 'default' | 'success' | 'info' | 'primary' | 'warning' | 'danger' | '' Establece el color de contexto del botón llamador en caso de que sea necesario asignarlo específicamente.
    • '#mascara' = array ['ClaveColumna' => array(ModeloIOdeLaColumna), ...] Establece el mecanismo para recuperar los datos que muestra cada una de las columnas durante el preproceso de las consultas que llenan la lista.
    • '#name' = 'El nombre de máquina de la instancia' requerido. Es imprescindible para asegurar los vínculos entre los elementos controladores cuyos valores cambian en cascada durante la dinámica ajax.
    • '#orderby' = array | string ['ClaveColumna ASC|DESC', ...] Condiciones de orden adicionales. Si se emplea se debe asignar en su primer elemento la columna asociada con #campoalfa para asegurar que los filtros AZ operen del modo esperado.
    • '#tabla' = 'NombreTabla | TablaVirtual' El nombre del origen de datos. Si se indica una tabla virtual (Nombre de una consulta) deben establecerse los atributos complementarios para asegurar que las listas emergentes puedan ser cargadas.
    • '#textaid' =
    • '#title' = 'descriptor a mostrar en la etiqueta y en el encabezado de la lista emergente.'
    • '#unbinder-context' = 'default' | 'success' | 'info' | 'primary' | 'warning' | 'danger' | '' Establece el color de contexto del botón desvinculante en caso de que sea necesario asignarlo específicamente.
    • '#usamascara' = 1 | 0 (default) Atributo agilizador para disparar el mecanismo de carga del control de máscaras de entrada de datos. debe asignarse cuando se usan máscaras y se está instanciando directamente el elemento. Cuando se trate de instancias extensoras no hace falta asignarlo.
    Ejemplo:
    Se muestra la caja de entrada de propósitos empleada, en el asistente de ayudas, para vincular los artículos de ayuda con los propósitos para los que fueron creados.
    Use el selector para establecer los propósitos que posee el objeto documentado.
    Código empleado
      <?php
      // Preparar la definición del elemento asignando sus atributos:
      $listaslzmdef = [
        '#togglehelp'       =>TRUE,
        '#type'             => 'campodelistaslz',
        '#context'          => 'success',
        '#name'             => 'tesaurorel', // se debe asignar nombre
        '#title'            => 'Propósito(s)',    // Label del grupo de entrada
        '#tabla'            => 'ayudas_propositos',    // tabla virtual
        '#form-type'        => 'default',    // node | tipo de contenido al que pertenece el campo
     // '#condicion_virtual'=> '',
        '#inline'           => TRUE,         // posiblemente no se use
        '#campoid'          => 'idproposito',
        '#campos_az'        => ['proposito' => 'Proposito', 'descripcion' => 'descripción' ],
        '#orderby'          => ['proposito'],
        '#campoalfa'        => 'proposito',
        '#campoidparalista' => 'idproposito', // cuando el combo debe devolver un valor en un campo diferente de campoid
        '#campo-a-pasar'    => 'proposito', // si no se asigna se asume campoalfa
        '#default_value'    => [],
        '#usetextaid'       => TRUE,    // mostrar sugerencia en placeholder, muestra default si no asigna una
        '#textaid'          => '',      // sugerencia para placeholder
        '#botonbuscar'      => 'explorar en buscador AZ',
        '#botonclear'       => 'desvincular todo',
        '#buttons-context'  => 'warning',
        '#buscar_en'        => ['proposito'=>1, 'descripcion'=>1],
        '#description'      => 'Use el selector para establecer los propósitos que posee el objeto documentado.',
        '#usamascara'       => FALSE, 
        '#mascara'          => NULL,
      ];
      // mostrar el elemento:  
      echo theme('campodelistaslz', $listaslzmdef);

     

    Lista selectora - (listaselectora)
    Este elemento tiene como propósito asociar un documento o alguna parte de su contenido con múltiples descriptores localizados en alguna fuente de datos. Opera de modo muy similar a la lista clasificadora editable, pero no permite crear nuevos descriptores temáticos. Sólo permite hacer asignación.

    Los descriptores deben ser elegidos en la lista emergente asociada. ver ejemplo

    Atributos
    '#attributes', '#botonbuscar', '#botonclear', '#btnscontext', '#buscar_en', '#campo-a-pasar', '#campoalfa', '#campos_az', '#campoid', '#campoidparalista', '#condicion_virtual', '#context', '#default_value', '#description', '#extendido', '#encodeid', '#form-type', '#llamador-context', '#mascara', '#name', '#orderby', '#prefix', '#required', '#suffix':, '#tabla', '#textaid', '#title', '#togglehelp', '#type', '#unbinder-context', '#usamascara', '#usetextaid', '#value'.
    • '#type' = 'listaselectora'.
    • '#botonbuscar' = 'Texto a mostrar en el botón que activa, carga y despliega la lista emergente'.
    • '#botonclear' = 'Texto a mostrar en el botón que anula cualquier vínculo existente con la fuente de datos y borra la selección en curso'.
    • '#btnscontext' = 'default' | 'success' | 'info' | 'primary' | 'warning' | 'danger' | '' Asigna el atributo de contexto Bootstrap que se aplicará al juego de botones del elemento. Este atributo se puede asignar individualmente para cada botón; y se diferencia del del elemento en conjunto para asegurar la marcación de errores.
    • '#buscar_en' = array ['ClaveCampo' => 1|0, ...] de pares 'Clave del campo o columna' => 'si es alfabético', presentando los objetivos de búsqueda para el filtro de texto (buscador) asociado con la lista emergente. Si hay claves que requieran procesos especiales de consulta deben registrarse en "#mascara".
    • '#campoalfa' = 'Nombre del campo por el que se ordena la lista emergente y se aplican los filtros alfabéticos del AZ'.
    • '#campoid' = 'Nombre del campo o clave primaria de la tabla o consulta de selección'.
    • '#campoidparalista' = 'calveColumna' se debe establecer cuando la lista emergente debe devolver valores alfanuméricos localizados en un campo diferente de "#campoid"'
    • '#campos_az' = array ['NombreCampo' => 'DescriptorDeColumna', ...] de pares presentando las claves de lectura (NombreCampo) asociados con los descriptores para encabezar las columnas de la lista emergente. Si las claves representan consultas complementarias u operaciones de sustitución de caracteres se deben declarar en el atributo "#mascara".
    • '#campo-a-pasar' = 'Nombre del campo (o descriptor de columna de consulta) cuyo valor será pasado como selección en respuesta al evento click en la lista'.
    • '#condicion_virtual' = 'condición sql requerida por las clausulas WHERE que preparan las consultas que definen la "tabla virtual" origen de datos. Ver '#condicion_virtual'
    • '#context' = 'default' | 'success' | 'info' | 'primary' | 'warning' | 'danger' | '' Asigna el atributo de contexto Bootstrap que se aplicará a la zona de entrada y la etiqueta del elemento.
    • '#default_value' = [] | NULL | en caso de asignar se debe pasar un array de la forma ['id'=>0, 'cifra'=>'', 'texto'=>'']; el validador de entrada verifica que hayan sido asignados el campo 'texto' y al menos uno de los identificadores 'id' o 'cifra'.
    • '#description' = 'Texto corto a mostrar bajo el grupo de entrada de datos para ofrecer indicaciones acerca de su uso'.
    • '#encodeid' = 1 | 0 Se usa para indicar que requiere paso codificado del valor en el campoid. Esto ocurre en tablas en las que la clave primaria es alfabética y admite caracteres especiales, como es el caso de la tabla de paths, usada en el segundo ejemplo.
    • '#extendido' = fciid | 0 (default) El índice del registro de instancia de campo en la base de datos en caso de estar usando el modelo extensor o 0 si se trata de una definición explícita que apunta a una tabla normal como fuente de datos. Si se emplea el modelo extensor los valores serializables no son pasados al cliente y se recuperan desde el caché en db al procesar acciones asociadas con la instancia del elemento. El valor de fciid debe ser consultado en la base de datos o, en caso de usar tipos de contenido extendidos se debe delegar su asignación en el controlador de los mismos que prepara el editor el documento en que se usa la instancia.
    • '#form-type' = 'Presenta el tipo explícido del contenido dentro del que es mostrado del elemento. No puede hacerse registro de más de un tipo por "página html" y debe asignarse idéntico a todas las instancias del mismo. Este atributo será retirado para ser controlado por los preprocesadores pero de momento se puede delegar en el valor "default"'.
    • '#llamador-context' = 'default' | 'success' | 'info' | 'primary' | 'warning' | 'danger' | '' Establece el color de contexto del botón llamador en caso de que sea necesario asignarlo específicamente.
    • '#mascara' = array ['ClaveColumna' => array(ModeloIOdeLaColumna), ...] Establece el mecanismo para recuperar los datos que muestra cada una de las columnas durante el preproceso de las consultas que llenan la lista.
    • '#name' = 'El nombre de máquina de la instancia' requerido. Es imprescindible para asegurar los vínculos entre los elementos controladores cuyos valores cambian en cascada durante la dinámica ajax.
    • '#orderby' = array | string ['ClaveColumna ASC|DESC', ...] Condiciones de orden adicionales. Si se emplea se debe asignar en su primer elemento la columna asociada con #campoalfa para asegurar que los filtros AZ operen del modo esperado.
    • '#tabla' = 'NombreTabla | TablaVirtual' El nombre del origen de datos. Si se indica una tabla virtual (Nombre de una consulta) deben establecerse los atributos complementarios para asegurar que las listas emergentes puedan ser cargadas.
    • '#textaid' =
    • '#title' = 'descriptor a mostrar en la etiqueta y en el encabezado de la lista emergente.'
    • '#unbinder-context' = 'default' | 'success' | 'info' | 'primary' | 'warning' | 'danger' | '' Establece el color de contexto del botón desvinculante en caso de que sea necesario asignarlo específicamente.
    • '#usamascara' = 1 | 0 (default) Atributo agilizador para disparar el mecanismo de carga del control de máscaras de entrada de datos. debe asignarse cuando se usan máscaras y se está instanciando directamente el elemento. Cuando se trate de instancias extensoras no hace falta asignarlo.
    Ejemplo:
    Se muestra la caja de entrada de propósitos empleada, en el asistente de ayudas, para vincular los artículos de ayuda con los propósitos para los que fueron creados.
    :  
    Seleccione los propósitos utilizando el botón Elegir propósitos. Si necesita romper algún nexo: haga click sobre su descriptor y cuando esté resaltado use el botón [ romper nexo(s) ] para desvincularlo.
    Código empleado
      <?php
      // Preparar la definición del elemento asignando sus atributos:
      $listaslzmdef = [
        '#togglehelp'       =>TRUE,
        '#type'             => 'listaselectora',
        '#context'          => 'warning',
        '#name'             => 'vicularfines', // se debe asignar nombre
        '#title'            => 'Propósito(s)',    // Label del grupo de entrada
        '#tabla'            => 'ayudas_propositos',    // tabla virtual
        '#form-type'        => 'default',    // node | tipo de contenido al que pertenece el campo
     // '#condicion_virtual'=> [] | NULL | '',
        '#campoid'          => 'idproposito',
        '#campos_az'        => ['proposito' => 'Proposito', 'descripcion' => 'descripción' ],
        '#orderby'          => ['proposito'],
        '#campoalfa'        => 'proposito',
        '#campoidparalista' => 'idproposito', // cuando el combo debe devolver un valor en un campo diferente de campoid
        '#campo-a-pasar'    => 'proposito', // si no se asigna se asume campoalfa
        '#default_value'    => [],
        '#usetextaid'       => TRUE,    // sugerencia para placeholder,
        '#botonbuscar'      => 'Elegir propósitos',
        '#botonclear'       => 'desvincular todo',
        '#buttons-context'  => 'warning',
        '#buscar_en'        => ['proposito'=>1, 'descripcion'=>1],
        '#description'      => 'Seleccione los propósitos utilizando el botón Elegir propósitos. Si necesita romper algún nexo: haga click sobre su descriptor y cuando esté resaltado use el botón [ romper nexo(s) ] para desvincularlo.',
        '#usamascara'       => TRUE, // sólo si asigna #mascara en otro caso no declarar
        '#mascara'          => ['descripcion' => 'srlzd'],
      ];
      // mostrar el elemento:  
      echo theme('listaselectora', $listaslzmdef);

     

    Menu
    Ofrece una lista de enlaces (menú) para invocar acciones. Dicha lista es formateada de acuerdo con las características especificadas por su atributo format.
    Puede contener submenús desplegados o colapsados. Ha sido definido para ser empleado al definir los bloques que van a ser ubicados en las regiones de la página a servir

    Atributos
    '#active', '#align', '#alt', '#attributes', '#basepath', '#bold', '#collapsed', '#context', '#description', '#format', '#inline', '#items', '#menu-name', '#name', '#prefix', '#src', '#suffix', '#target', '#title', '#titlepos', '#togglehelp', '#type', '#weight'.
    Atributos de solo lectura:
    '#tag', '#firstorlast',
    • '#type' = 'menu'
    • '#active' = TRUE | FALSE | no asignar. Si se establece a TRUE será destacado como elemento activo. En caso de que contenga un submenú se mostrará expandido.
    • '#alt' = 'texto opcional a mostrar como bullet emergente al desplazar el mouse sobre el texto de enlace
    • '#basepath' = 'url (ruta) válida' al elemento raíz de un menú custom. Se emplea en combinación con el atributo #menu-name Para generar automáticamente el menú desde un menú personalizado que ha sido registrado en la base de datos.
    • '#collapsed' = 'TRUE' | 'FALSE' Aplica sólo a submenús. Indica que contiene subitems y en caso de ser invocado va a ser mostrado expandido en la página que invoque.
    • '#format' = 'normal' (default) | 'tabs' | 'dropdown'. Especifica la clase de menú.
    • '#items' = array de pares ['texto' => 'enlace', ...]. cuando se desea hacer una definición sintética en la que no hace falta incluir especificaciones especiales para los elementos.
    • '#src' = 'url (ruta) válida' Cuando tiene doble comportamiento: enlace y encabezado de menú
    • '#target' = 'id del elemento de destino' cuando el enlace va a invocar un llamado ajax que deba cargar contenidos allí.
    • '#title' = 'texto a mostrar como título del menú. Si no se asigna, el menú será mostrado como un bloque homogéneo. Es requerido para los menús de tipo dropdown
    • Asignación de atributos de sólo lectura
      Estos atributos son asignados por las clases controladoras al preprocesar los items anidados, de modo que los submenus, las posiciones relativas de sus items y las clases asociadas a los mismos, puedan ser asignadas correctamente.
      • '#tag' = 'li' | 'h' | no asignado, se debe especificar li cuando es un submenú para poder establecer su título adecuadamente.
      • '#firstorlast' = 'first' | 'last' | no asignado Indica su la posición del ítem, luego de ser ordenada la lista, está al principio, al final o es interior a la misma.
      • '#itemclass' = 'menu-item' (default) | 'dropdown-menu-item' | 'nav-menu-item' Hace explícita la clase twbs que se debe asignar
    •  
    Comentarios
    Este modelo de definición no permite anidación múltiple de dropdowns. En caso de requerirlo se debe usar el atributo (por implementar) #model = "JQUI" para activar la librería JQueryUI, pero tiene la dificultad de que al no ser css requiere de JavaScript activado y puede no operar en todos los navegadores.
    Ejemplos:
    Código empleado en menú elemental
      <?php
      // Se define un array de menú basico para generar las estructuras con pequeños cambios
      // se debe observar que se usan muy pocos atributos para declarar los ítems.
      $listitemsdef=[
        'itm0' => ['#title'=>'primer enlace', '#src' => '#menuelm', '#type' => 'menuitem'],
        'itm1' => ['#isseparator'=>1, '#type'=>'menuitem'],
        'itm2' => ['#title'=>'Encabezado', '#src' => '#menuelm', '#isheader'=>1, '#type' => 'menuitem'],
        'itm3' => ['#title'=>'enlace con badge', '#src' => '#menuelm', '#type' => 'menuitem', '#badge' => 64],
      ];
      // se agrega un item de submenú, usando al array definido para insertarse como elemento
      // por esa razón los items se definieron sin atributo name, de modo que el controlador
      // les asignará valores automáticos diferentes.
      $listitemsdef['submenu1'] = [
        '#items' => $listitemsdef, // asigna la lista como submenú
        '#type' => 'menu',
        '#src'=>'cualquierpath/dos', //el header de submenu puede tener su propio path
                                          // y puede ser diferente del acceso al dropdown
        '#name' => 'submenu1', 
        '#format'=>'dropdown', '#title'=>'Submenu emergente: '
      ];
      // se agrega un item para ilustrar el uso de descripciones emergentes
      $listitemsdef['itm5'] = [
        '#name' => 'itm5', '#title'=>'enlace con ayuda emergente', '#src' => '#menu', 
        '#type' => 'menuitem', 
        // Para mostrar comentario emergente
        '#description'=>'Este es un comentario emergente para el enlace'
      ];
      // finalmente se asigna la lista completa al atributo #item del menu a mostrar
      $menusampledef = [
        '#items' => $listitemsdef, 
        '#type' => 'menu', '#name' => 'menu1', '#format'=>'normal'
      ];
      // y se invoca el método global theme() para mostrarlo o asignarlo
      echo theme('menu', $menusampledef);
      

    Código empleado en menú generado desde la base de datos
      <?php
      $menusampledef2 = [ '#type' => 'menu', '#menu-name' => 'admin_menu', 
                          '#basepath'=>'admin/build', '#name'=> 'dbmenu2', 
                          '#format'=>'normal'];
      echo theme_menu($menusampledef2);
    
        

     

    Menu Locator
    Elemento configurador de items de menú de acceso a contenidos, en tiempo de ejecución y eventualmente asociarlos con disparadores de acciones. Permite definir enlaces para los contenidos durante su proceso de creación y establecer su posición relativa dentro de la estructura general de menús del sitio.

    Ofrece un campo de entrada de texto para establecer el que muestra el enlace, una casilla de verificación (opcional) para decidir si se usa el título del documento como texto del mismo en caso de dejar vacía la caja anterior, y una lista de selección para ofrecer su posición relativa dentro de la estructura general de menús. ver ejemplo

      Notas:
    1. Todos los contenidos, una vez publicados, son asociados con las rutas: "node/%id", "content-type/%id" y "alias_de_content-type/title". Cuando se crea el elemento de menú, se asocia el texto del enlace, o el título del contenido, con la ruta "content-type/%id" cuando se ha establecido el atributo #self a 1. Si dicho atributo se establece explícitamente a 0 el elemento ofrecerá una elemento selector para fijar el destino del enlace.
    2. Cuando se emplea, desde código, en una página administrativa de un módulo contribuido, se debe tener cuidado de limitar correctamente el alcance del selector de objetivos y la parametrizacion de permisos para evitar eventuales sorpresas por ofrecer acceso indeseable a quienes no debieran tenerlo.
    Atributos
    '#aliasenabled', '#aliasheader', '#checkheader', '#collapsed', '#linkheader', '#parentselectheader', '#selectmenuheader', '#self', '#selfaliased_header', '#type',
    Ejemplo:

    :  
      
    :  
    :  
    :  
    Código del ejemplo:
      <?php
      // Se define un array con el mínimo necesario para ofrecer el elemento
      $menulocator_def=[
        '#type' => 'menulocator',
        '#title' => 'Configurador de ítem de menú',
        '#name' => 'config_menu_item',
        '#aliasenabled' => 1, '#self'=>0,
        '#collapsed' => 0
      ];
      // Se invoca la función theme para servirlo
      echo theme('menulocator', $menulocator_def); 

     

    RadioBoxes
    Este tipo de elemento tiene como propósito facilitar la recolección de grupos de opciones complementarias, en las que varias combinaciones de condiciones boleanas son posibles simultáneamente; de modo que se marquen sólo aquellas que sean afirmativas.

    Atributos
    '#attributes', '#bold', '#cols', '#context', '#default_value', '#description', '#inline', '#labelpos', '#name', '#options', '#prefix', '#required', '#suffix':, '#title', '#titlepos', '#togglehelp', '#type', '#value'.
    • '#type' = 'radios'
    • '#value' = 'selección en curso.
    • '#default_value' = 'El valor de la clave de la opción a mostrar seleccionada al cargar el grupo.
    los demás atributos tienen las mismas características que los empleados para definir checkboxes.
    Ejemplo:
    Se muestra un juego de opciones mutuamente excluyentes en el que al marcar una se retira automáticamente a aquella que estuviese marcada.
      
    Y muestra este comentario debajo para que lo entienda
      
      
    Y el comentario que muestra debajo es aún mas aburrido
      
    Por favor marque una opción. Debe elegir una. El campo es obligatorio
    Código empleado:
      <?php
      module_load_include('inc', 'foliate', 'hook/elements');
      //  Establecer las opciones
      $options = [
        'o1' => 'El texto es confuso', 
        'o2'=>'El texto es util', 
        'o3'=>'el texto es aburrido', 
        'o4'=>'La redacción no es buena'
      ];
      // Preparar la definición del elemento
      $item = [
        '#name'=>'excluyentes', 
        '#type' => 'radios', 
        '#title' => 'Opciones mutuamente excluyentes', 
        '#context' => 'primary', // para que se muestre con fondo azul fuerte
        '#value'=>[], 
        '#labelpos'=>1, 
        '#required'=>TRUE, 
        '#options'=>$options, // asigna las opciones
        '#description'=>Por favor marque una opción. Debe elegir una. El campo es obligatorio, 
        '#togglehelp'=>1
      ];
      // pasa el elemento a la página
      echo theme_radios($item);

     

    Select list
    Este tipo de elemento tiene como propósito facilitar la recolección de grupos de opciones que pueden ser tanto complementarias como mutuamente excluyentes. De modo que el usuario escoja una o varias opciones dentro de una lista. Al igual que los radios y los checkboxes ha sido pensada para impedir que el usuario digite los datos y ahorrarse errores e inconsistencias. Sus atributos, son similares a los de radios y checboxes, salvo que no hay posicionamiento de etiquetas, pero a cambio se ofrece la posibilidad de elegir la cantidad de items visible y el modo de selección.

    Atributos
    '#attributes', '#context', '#default_value', '#description', '#inline', '#multiple', '#name', '#noneitem', '#options', '#prefix', '#required', '#rows', '#sorted', '#subordinador', '#suffix':, '#title', '#titlepos', '#togglehelp', '#type', '#value'.
    • '#type' = 'select'
    • '#value' = 'selección en curso.
    • '#default_value' = 'El valor de la clave de la opción a mostrar seleccionada al cargar la lista.
    • '#multiple' = FALSE | TRUE 'Si la selección es de sólo un elemento o se admiten varios' Default FALSE.
    • '#rows' = 'Número de líneas visibles.
    • '#options' = 'Array de pares 'valor'=>'texto' a mostrar en la lista.
    • '#noneitem' = 'Si se asigna establece el ítem a mostrar en caso de no haber ninguno electo.
    • '#sorted' = FALSE | TRUE Si se establece la lista se muestra ordenada.
    • '#subordinador' = FALSE | TRUE Se debe establecer cuando hay objetos subordinados.
    Formato de salida del valor (la selección)
    La selección realizada es pasada al array de control del estatus del formulario contenedor "$form_state" bajo la clave 'nombre_instancia' de su subarray 'values' como un array de pares así:
    $form_state['values']['nombre_instancia'] = [ '[ClaveDeLaOpcion] DescriptorDeLaOpcion' => 'ClaveDeLaOpcion', ... ]
    Nótese que la clave de cada ítem de la selección incluye la clave de la opción dentro de paréntesis cuadrados seguida del descriptor mostrado en la lista de opciones.
    Ejemplo:
    Se muestran dos instancias de una lista de opciones con agrupaciones internas. A izquierda son mutuamente excluyentes y a derecha son complementarias.
    Por favor elija una opción en la lista
    Marque las opciones que apliquen al caso. Para seleccionar varias matenga oprimida la tecla Ctrl mientras hace click sobre ellas.
    Código empleado:
      <?php
      module_load_include('inc', 'foliate', 'hook/elements');
      // Establece las opciones con dos nivees de anidación
      $options = [
        'o1' => 'El texto es confuso', 
        'o2'=>'El texto es util',
        // item agrupador
        'No es bueno; no sirve' => [
          'o3'=>'el texto es aburrido', 
          'o4'=>'La redacción no es buena',
          // lista anidada a segundo nivel (no tuvo efecto en chrome)
          'No sabe de qué habla'=> [
            'o6' => 'especula mucho', 
            'o7' => 'se inventa propiedades absurdas', 
            'o8' =>  'comenta fuera de lugar'
          ]
        ],
        // opción normal
        'o5'=>'Tengo que leerlo otro día para contestar'
      ];
      // Prepara la definición del elemento
      $item = [
        '#name'=>'listaselect', '#type' => 'select', '#title' => 'Lista de opciones', 
        '#value'=>[], '#titlepos'=>0, '#options'=>$options, '#context' => 'primary', 
        '#description'=>Por favor elija una opción en la lista
      ];
      // devuelve el elemento
      echo theme_select($item);
      /* 
         Vale la pena observar que el array de opciones tiene dos niveles de anidación 
         pero el navegador sólo muestra uno. No obstante, el proceso de generación del 
         código html si genera los dos niveles, pensando en futuras versiones de html5, 
         pues W3 lo recomienda en el draft de la especificación. 
      */

     

    Tabla activa
    Este tipo de elemento tiene como propósito facilitar la oferta y recolección de opciones, excluyentes o no, asociadas con tablas grandes, en las que adicionalmente se pueden invocar acciones de edición, relación etc., para cada uno de sus registros individual y/o colectivamente.
    Es ideal para ofrecer opciones de configuración, complicadas (ejemplos activar/desactivar módulos de extensión, administrar catálogos de bibliotecas o gestores documentales, etc.).

    Atributos
    '#acciones', '#actnkeys', '#bindtarget', '#bindgroup', '#campoid', '#desabilitados', '#defaults', '#description', '#headers', '#lectokeys', '#modo', '#name', '#panel', '#title', '#type', '#recordset'.
    Se debe notar que incluye una serie de atributos que le son exclusivos; y cambia otros como #value y default_value por #defaults pues su propósito principal, más que recoger valores es permitir modificar estados y disparar acciones para los registros de una tabla vinculada con el contenido en edición.
    • '#acciones' = Array | Null
    • '#actnkeys' = Array | Null
    • '#bindtarget' = string | ''
    • '#bindgroup' = string | ''
    • '#campoid' = string | ''
    • '#desabilitados' = Array | Null
    • '#defaults' = Array | Null
    • '#description' = string | ''
    • '#headers' = Array | Null
    • '#lectokeys' = Array | Null
    • '#modo' = TRUE | FALSE | 'none'
    • '#name' = string
    • '#panel' = boolean 1 | 0
    • '#title' = string | ''
    • '#type' ='tablaactiva'*
    • '#recordset' = Array*

     

    Tabs secundarios - (pills)
    Ofrece un juego de etiquetas con enlaces que simulan carpetas tabuladas, para indicar que existe un juego de páginas asociado con la acción en curso.

    Atributos
    '#attributes', '#context', '#current', '#headersize', '#tabs', '#tabs-disabled', '#title', '#type', '#weight'.
    • '#type' = 'pills'
      requerido.
    • '#context' = 'Constante indicadora de contexto' De momento no tiene efecto. En el futuro asignará el color con que se muestra el elemento activo.
    • '#current' = 'Texto del enlace actualmente activo'
    • '#headersize' = int 3 (default) | tamaño_del_elemento h que engloba al título
    • '#tabs' = array de pares Texto=>enlace
    • '#tabs-disabled' = Array de textos indicando los enlaces deshabilitados.
    • '#title' = 'Encabezado opcional del juego de etiquetas'
    • '#weight' = default -9999. Debe asignarse un valor muy negativo para asegurar que se muestre arriba.
    Ejemplo:
    Se muestra un juego de tabs típico de las páginas de edición de listas.
    Código empleado
      <?php
      // Preparar un array [ descriptor => enlace, ... ] para los tabs
      $tabs = [
        'Lista' => 'admin/content/clasificacion/clasif-dwy36b',
        'Agregar' => 'admin/content/clasificacion/clasif-dwy36b/add',
        'Modificar'=> 'admin/content/clasificacion/clasif-dwy36b/modificar/10',
        'Eliminar' => 'admin/content/clasificacion/clasif-dwy36b/eliminar/10',
      ];
      // prepara un array de definición de elemento tipo pills
      $elm = [
        '#name'   => 'innertabs',
        '#title'  => 'Modificación de descriptor de clasificación',
        '#type'   => 'pills',
        '#tabs'  => $tabs,
        '#current' => 'Modificar',
        '#tabs-disabled'=> ['Eliminar'],
        'weight'  => -9999,
      ];
      // muestra el contenido
      echo theme('pills', $elm);

    Elementos Contenedores

     

    Filedset
    Ofrece un contenedor cloapsable enmarcado para agrupar grupos de campos que poseen unidad conceptual. En él, al igual que en los markup se puede insertar y agrupar cualquier cantidad de elementos de cualquier naturaleza como subarrays del mismo. Es ideal para presentar agrupadas por secciones las partes de los formularios.

    Atributos
    '#attributes', '#context', '#collapsed', '#name', '#prefix', '#suffix':, '#title', '#type',
    • '#type' = 'fieldset'
    • '#title' = 'Texto a mostrar como alternador.'
    • '#collapsed' = TRUE | FALSE
    • '#name' 'nombre' | NULL si es nulo se autogenera
    Ejemplos:
    Ejemplo 1: Se muestra un fielset que anida otro con una pequeña explicación.
    Código del Ejemplo 1:
      <?php
      module_load_include('inc', 'foliate', 'hook/elements');
      // definición:
      $item = [
        '#name'=>'conjunto', 
        '#type' => 'filedset',
        '#collapsed' => TRUE,
        '#value'=>'Este texto aparece antes que el grupo.', 
        '#title'=>'Este es un grupo de campos colapsable'
        '#description'=>'La descripción en los fieldsets cumple una función diferente a la que se le brinda en los demás contenedores. En un fieldset se muestra como texto principal, a modo de presentación del grupo.'
      ];
      // uso:
      echo theme_fieldset($item);
      

    Ejemplo 2: Fieldset con juego de radios anidado
    Código del ejemplo 2
      <?php
      module_load_include('inc', 'foliate', 'hook/elements');
      // definición del juego de opciones:
      $options = [
          0=>[
            'Html filtrado', '<ul>
              <li>Las direcciones de las páginas web y las de correo se convierten en enlaces automáticamente.</li>
              <li>Etiquetas HTML permitidas: \<a\> \<em\> \<strong\> \<cite\> \<code> \<ul\> \<ol\> \<li\> \<dl\> \<dt\> \<dd\></li>
              <li>Saltos automáticos de líneas y de párrafos.</li></ul>'], 
          1=> [ ' Html pleno', '<ul>
              <li>Las direcciones de las páginas web y las de correo se convierten en enlaces automáticamente.</li>
              <li>Admite todas las etiquetas de la especificación Html5. Debe usarse con cuidado.</li>
              <li>Saltos automáticos de líneas y de párrafos.</li></ul>'] 
      ];
      // es importante notar que las opciones se pasan como arrays id => [label, descripción], ...
      // y no como arrays [ id => label, ... ]
      // para lograr que cada radio tenga una descripción de ayuda bajo él.
      
      // Definición del grupo de radios
      $radios = [
          '#name'=>'body-format', '#type' => 'radios', 
          '#value'=>[0], '#labelpos'=>1, '#required'=>FALSE, 
          '#options'=>$options, '#togglehelp'=>0
      ];
      
      // Definición del fieldset
      $fieldset = [
          '#title' => 'Formato de entrada', '#name' => 'body-formats',
          '#collapsible' => TRUE, '#type' => 'fieldset',
          '#collapsed'=>TRUE, 'body-format' => $radios
      ];
      
      // Salida
      echo theme_fieldset($fieldset); 

     

    Form
    Este elemento se encarga de unificar e integrar en unidades funcionales (formularios) a grupos de elementos de modo que sean tratados como tales para intercambiar información con el servidor.
    Se define como un array de definiciones de elementos válidos. Y, sus atributos, sos establecidos (en caso de no ser pasados) a defaults razonables.

    Atributos
    '#accept', '#accept-charset', '#action', '#attributes', '#context', '#description', '#enctype', '#method', '#name', '#prefix', '#suffix':, '#target', '#title', '#togglehelp', '#type', '#value',
    • '#type' = 'form'
    • '#accept' = lista comaseparada de tipos mime y/o extensiones de archivo admitidos para upload
    • '#accept-charset' = lista espacio o comaseparada de juegos de caracteres admitidos
    • '#action' = URI a la que se dirige la acción
    • '#enctype' = 'protocolo de codificación'
    • '#method' = 'get' | 'post'
    • '#name' = 'nombre del elemento'
    • '#target' = 'frame (marco), en la página de destino, al que se dirigirá la respuesta'
    Nota:
    Algunos atributos estándar para los elementos como '#title', '#description' y los asociados con la ubicación de etiquetas no son interpretados en los elementos tipo form.
    Cuando sea necesario utilizar encabezados y/o textos de orientación general para un formulario se recomienda insertarlos dentro de un elemento tipo markup, que es suficientemente versatil para presentar contenidos "independientes".
    Ejemplo:
    Aquí se insertó un formulario haga click derecho->inspeccionar para ver su código:
    Código empleado:
      <?php
      module_load_include('inc', 'foliate', 'hook/elements');
      // definición:
      $item = [
        '#name'=>'formulario', 
        '#type' => 'form', 
        '#title'=>'Este es un formulario',
        '#method' => 'post',
        '#enctype' => 'multipart/form-data', // si usa al menos un elemento 'file'
      ];
      // uso:
      echo theme_form($item);

     

    Markup
    Ofrece un contenedor simple, en el que se puede insertar y agrupar cualquier cantidad de elementos de cualquier naturaleza como subarrays del mismo. Es ideal para diseñar y construir elementos personalizados que luego puedan ser ofrecidos e insertados en cualquier página o formulario en tiempo de producción. En principio no requiere que sea establecido ningún atributo (salvo #type) pero, se pueden asignar los siguientes:

    Atributos
    '#attributes', '#context', '#description', '#inline', '#name', '#prefix', '#suffix':, '#title', '#titlepos', '#togglehelp', '#type', '#value',
    • '#type' = 'markup'
    Ejemplos:
    Se muestran dos contenedores de tipo 'markup'. El primero usando una definición simple sin estructuras anidadas; y el segundo anidando en el primero dos estructuras usadas para definir elementos en otros ejemplos.
    Ejemplo1:
    Este texto aparece antes que el grupo.
    Los comentarios a un markup aparecen bajo el grupo y aplican al conjunto completo.
    Ejemplo2:
    Este texto aparece antes que el grupo.
    :   
    :   
    :   
    :   
    :  
    Los comentarios a un markup aparecen bajo el grupo y aplican al conjunto completo.
    Código empleado:
      <?php
      module_load_include('inc', 'foliate', 'hook/elements');
      // Código del Ejemplo 1:
      // definición:
      $item = [
        '#name'=>'conjunto', 
        '#type' => 'markup',
        '#value'=>'Este texto aparece antes que el grupo.', 
        '#inline'=>FALSE, 
        '#title'=>'<h3>Este es un grupo de campos</h3>'
        '#description'=>'Los comentarios a un markup aparecen bajo el grupo y aplican al conjunto completo.'
      ];
      // uso:
      echo theme_markup($item);
    // Código ejemplo 2: // Se toma el grupo de opciones usado en el ejemplo checkboxes // y la caja de texto usada en el ejemplo de textfield $subitem1 = [ '#name' => 'complementarias_nvo', '#title' => 'Opciones complementarias', '#type' => 'checkboxes', '#value' => [], '#labelpos' => 0, '#options' => $options, // se elimina el item '#description' ]; $subitem2 = [ '#name'=>'textitem_nvo', '#type' => 'textfield', '#size'=>60, '#maxlength'=>128, '#title'=>'Texto a enviar', '#inline' => TRUE, ]; // y se anidan en el markup del eljemplo anterior $item['complementarias_nvo'] = $subitem1; $item['textitem_nvo'] = $subitem2; // finalmente se repite el llamado de salida: echo theme_markup($item);

    Atributos de los elementos

    Las definiciones de atributos establecen las características generales de los elementos html5 usados para controlar el paso de información entre el cliente y el servidor. El control de su aspecto, salvo pequeños detalles, se delega por completo, en las hojas de estilo y en los temas instalados. Aquí, se trata básicamente, de asegurar su funcionalidad. Aunque algunos de estos deben servir para conectar con hojas de estilo y scripts pasando juegos de clases adecuados.
    A continuación se ofrece una referencia rápida para manejar adecuadamente sus valores:

     
    '#accept' (string)
    Se establece mediante una cadena comaseparada de extensiones y/o códigos mime de los tipos de archivo que debe buscar el explorador. ej: "video/*, image/*" hará que el explorador del cliente abra para buscar archivos de video y/o archivos de imagen.
    Aplica a:
    File, y Form.
     
    '#accept-charset' (string)
    Aplica a:
     
    '#action' (string)
    Asigna un objetivo de acción a un elemento estableciendo su atributo 'formaction' debe ser una uri válida relativa a la raiź del sitio o un llamado a un script existente.
    Aplica a:
    Button, Form e Image Button.
     
    '#alt' (string)
    Es una cadena de texto alternativo para ser mostrada por los navegadores en caso que que no puedan mostrar un recurso de imagen o componente con contenido gráfico.
    Aplica a:
    Image Button.
     
    '#amplitud' (int)
    Se emplea para establecer el rango (cantidad de años antes y después) de la fecha actual en la lista de selección de años en los componentes de fecha.
    Aplica a:
    Date
     
    '#attributes' (array)
    Establece los atributos no asignados explícitamente, en la definición, del elemento. Es un array de pares 'nombreatributohtml'=>'valor' en el que nombreatributo es cualquier nombre de atributo html válido sin # y valor es una cadena. Salvo el caso especial del atributo class que admite un array de nombres de clases.
    En general es muy importante usar #attributes=>'class'=>[clase1, clase2, ...] para conectar los elementos con hojas de estilo especiales y ligarlos con comportamientos.
    Finalmente este es el punto para enlazar eventos mediante atributos del tipo onclick, onblur, onchange, onmouse_, etc.
    Aplica a: todos los elementos.
     
    '#bold' (boolean)
    En caso afirmativo hace que las etiquetas de las cajas de selección (checkboxes y radios) se muestren rasaltadas en negrilla
    Aplica a:
    CheckBox CheckBoxex Radio y RadioBoxes.
     
    '#botonbuscar' (string)
    Texto a mostrar en el botón que activa, carga y despliega la lista emergente asociada con elementos complejos que incluyen controladores de búsqueda ajax
    Aplica a:
    AzDbCombo, Lista slz
     
    '#campoid'
    Establece el nombre del campo que contiene los valores identificadores de los registros pasados a un elemento que maneja acceso a tablas o conjuntos de registros de una base de datos, o arrays que ofrecen resultados de consultas sobre los que se va a actuar.
    Aplica a:
    Listas selectoras, tablas y controles que interactuan con bases de datos
     
    '#caret' (string)
    Se usa para establecer un recurso de imagen o glyfo en lugar del triangulo usual, en la cara de un botón, siempre que el atributo #caretpos haya sido establecido a 1 o 2
    Aplica a:
    Button.
     
    '#caretpos' (int)
    Aplica a:
     
    '#codesource' (array)
    Un array de arrays que presenta las ubicaciones de los archivos de código que deben ser incluidos por los procesadores del elemento para poder hacer lectura de la información declarada en la definición del elemento.
    Es particularmente importante incluir este atributo cuando los elementos deben hacer lecturas complejas en la base de datos o realizar procesos residentes en código contribuido.
    Cada item del array debe tener la siguiente estructura:
    [
      'modulo' => 'NombreMaquinaDelModulo',
      'archivo'=> 'pathRelativoAModuloDir', //sin extensión
      'fext' => 'extension'
    ]
    Es importante tener en cuenta que en caso de usar '#lectokeys' ahorra código y procesamiento ya que en ellas sólo es necesario presentar los invocables a llamar.
    Aplica a:
    Todos los elementos. Incluso ocultos y/o portadores de valor.
     
    '#collapsed' (boolean)
    Establece si el elemento se muestra o no colapsado (con su contenido oculto, de modo que sólo son visibles la caja contenedora y el alternador de estados.
    Aplica a:
    Fieldset
     
    '#cols'
    Establece la cantidad de columnas visibles en la caja de edición del elemento. Los valores aceptados dependen del tipo de elemento que acepta este atributo. Cuando se asigna un valor no admitido el elemento se autoajusta al valor por defecto.
    Aplica a:
     
    '#condicion_virtual' (array)
    Se emplea para pasar condiciones SQL que son usadas para cargar el contenido de elementos complejos, particularmente cuando ofrecen contenido dependiente de otros elementos que pueden cambiar de modo que se actualicen dinámicamente haciendo uso de llamados ajax.
    Usa el siguiente formato:
    '#condicion_virtual' => [
       'sql' => 'clausula where con %placeholders para valores',
       'placeholders' => 'lista espacioseparada de posiciones de reemplazo',
       'valores' => array | '[ALL]' | '[none]' | lista_espacioseparada | NULL con valores de reemplazo
    ]
    Si el valor es [ALL] la restricción impuesta por la condición virtual no aplica; y si el valor es [none] la consulta inicial será nula. Estos dos valores tienen por objeto inicializaciones temporales de elementos que van a ser modificados dinámicamente, asignando el valor de la condición en tiempo de ejecución en el cliente.
    Cuando el elemento sea dependiente de otros que cambian su valor, aquellos deben pasar los valores de recarga, al elemento oculto [NOMBREINSTANCIA]-virtual-conditio que es autovinculado por el controlador del elemento con sus fuentes de recarga ajax. El SQL no es expuesto en el cliente. Se almacena en variables de entorno ligadas al nomre calificado de la instancia que es único.
    Aplica a:
     
    '#context' (string)
    Establece un atributo de contexto Twitter-Bootstrap para los elementos que pueden mostrarlo. Los valores válidos son:
    'default' | 'success' | 'info' | 'primary' | 'warning' | 'danger' | ''
    Aplica a:
    Button, CheckBox, CheckBoxes, Fieldset, File, Form, Image Button, Item, Markup, Password / Password confirm, RadioBox, RadioBoxes, Select list, Textarea, Textfield
     
    '#datadbid'(scalar) 0 | n | NULL
    Id del campo en que se guarda el registro del valor del dato presente en el campo asociado. Se emplea en estructuras de controles dinámicas que generan campos de entrada de datos en tiempo de ejecución y muestran grupos que pueden ser editados. p.ej. Elementos derivados de "quanta-dinaset". Ver: #joindbid y #subitempad.
    Aplica a:
    Todos los elementos
     
    '#default_value' (mixed)
    Valor por defecto en el que debe ser iniciado el elemento. (depende del tipo).
    Aplica a: Todos los elemento de entrada de datos
     
    '#description' (string)
    Texto explicativo o de ayuda indicando qué hacer si se pasa '' | Null no se asigna. En los casos de elementos compuestos aplica al conjunto. En general se ubica bajo el grupo usando una fuente ligeramente más pequeña que la usada para el elemento.
    Aplica a:
    Todos los elementos visibles.
     
    '#enctype' (string)
    Aplica a:
     
    '#extendido' (int)
    El id de instancia, cuando la definición de la misma está almacenada en la base de datos. Es asignada por el intérprete de definiciones de tipos documentales. No debe asignarse manualmente
    Aplica a:
    Todos los elementos instanciables en contenidos extendidos
     
    '#format'
    Aplica a:
     
    '#height'
    Aplica a:
     
    '#inline' (boolean)
    TRUE | [ FALSE | NULL ] Establece si el título se muestra en la misma línea que la(s) caja(s) de captura de datos. En la práctica es equivalente a haber asignado #titlepos = 1|2. No se debe asignar para grupos de radios y checkboxes porque puede afectar la presentación forzando que todo el grupo se muestre en la primera línea.
    Aplica a:
    todos los elementos visibles que acepten #title.
     
    '#joindbid' (int) 0 | 1 | NULL
    En caso de asignarse a 1 o TRUE indica que el elemento debe anexar un campo oculto que porta el id en DB de su valor y cuyo nombre se forma anexando el sufijo '-dbid' al nombre del elemento. Dicho id debe pasarse en el atributo #datadbid, y ambos deben estar presentes en cada elemento del array de definición de subelementos #subitempad, que deba asociar un id. Ejemplo: el grupo AreaDinaSet de entrada de asepciones de palabras el el editor de palabras claves.
    Aplica a:
    Todos los elementos
     
    '#labelpos' (int) 0 | 1 | NULL
    Establece la posición de las etiquetas en las cajas de entrada de datos de elementos compuestos que anidan subitems con etiquetas. 0 = Izquierda, 1 = derecha y NULL o no asignado establece el default a izquierda.
    Aplica a:
    CheckBoxes y RadioBoxes
     
    '#lectokeys' (array)
    Es un array de pares 'nombrecampovirtual' => 'guiadelectura' que se emplea para orientar el modo como los controladores procesan los resultados de consultas para alimentar elementos compuestos.
    Cada item del array acepta los siguientes formatos:
    • Simple: el nombre del campo a leer en la columna correspondiente, con clave numérica
    • NombreCampoVirtual => ClaveDeColumnaObjetivo
      Donde NombreCampoVirtual es el nombre de un campo de la consulta o una clave del array pasado en '#mascara' y ClaveDeColumnaObjetivo es un patrón de sustitución similar a [COLx] que presenta la cadena que será reemplazada en el patrón de escritura de línea pasado en '#headers'.
    • NombreCampoVirtual => array de guía de lectura con el siguiente formato de claves opcionales:
      NombreCampoVirtual => [
        'clave' => [COL_x], // Clave de sustitución en columna objetivo
        'clase' => (string) clases, // nombres de clases separados por espacios
        'enlace' => plantillaDeEnlace, //
        'srlzd' => (boolean) 1 | 0, // establece si se debe desserializar al leer
        'readcallback' => definicionDeCallable, //
      ]
      'Donde:'
      plantillaDeEnlace es:
      Un anchor de enlace válido <a href="linkconclavedereemplazo[ID]opcional" atributos >[TXT]</a> en el que [ID] será reemplazado por el valor en el campo id del registro leido y [TXT] por el valor correspondiente a la columna indicada en la clave de lectura en proceso.
      o un array de guía para preparación de enlaces así:
      [
        'clase' => cadena de clases a asignar al anchor
        'path' => enlace a asignar al atributo href del anchor
        'sufijo' => sufijo a anexar al enlace
        'name' => nombre a asignar como id del enlace
      ]
      Los cuatro atributos pueden contener la clave de sustitución [ID] para integrar en su lugar el id del registro leído.
      definicionDeCallable
      Puede ser un callable (ver documentación de php) una cadena con el nombre de un método o un array que parametriza el mecanismo de llamado así:
      [
        'metodo' => 'cadena que apunta a un callable php'
        'archivo' => 'semipath al archivo de código ejecutable, relativo a un módulo cargado'
        'modulo' => 'nombre de máquina del módulo'
        'fext' => 'extensión del archivo'
        'clase' => 'clase a instanciar para invocar el método'
      ]
      Se recomienda pasar los parametros de localización del código en el atributo codesource y pasar aquí sólo el nombre del callable para ahorrar procesamiento.
    Importante: Si se escriben elementos html contribuidos que vayan a emplear el atributo #lectokeys se debe asegurar que empleen instancias de la clase "Biblio2ls\Library\LectoKeyParser" para garantizar que los parámetros de la definición sean correctamente interpretados.
    Aplica a:
     
    '#mascara' (array)
    Establece condiciones de sustitución de valores para algunos de los campos que deben ser leidos en la consulta realizada para cargar y servir el elemento.
    Generalmente se emplea en combinación con '#lectokeys'.
    Tipicamente tiene la forma:
    '#mascara' = ['nombrecampo'=>['zeta'=>'z', 'punto'=>'.'])]
    Pero, admite la forma típica de un ítem de lectokeys: 'nombrecampovirtual' => 'nombre_de_callable' que guía el mecanismo de reeemplazo
    Aplica a:
     
    '#max'
    Aplica a:
     
    '#maxlength'
    Aplica a:
     
    '#method' (string)
    Aplica a:
     
    '#min'
    Aplica a:
     
    '#multiple'
    Aplica a:
     
    '#name' (string)
    Nombre de instancia sin prefijo edit. Identifica al elemento. Aunque suele ser redundante con la clave que presenta al elemento en los arrays de definición complejos, debe asignarse para asegurar que el elemento sea correctamente enlazado.
    Aplica a:
    Todos los elementos
     
    '#noneitem'
    Cadena para registrar el elemento nulo en listas de selección. Cuando presentan una opción del tipo [no seleccionado]. Si no se va a emplear no debe asignarse. Se recomienda asignar el valor 'none' ya que la mayoría de elementos del sistema cuentan con mecanismos especiales para tratarlo.
    Aplica a:
     
    '#nulo'
    Aplica a:
     
    '#options'
    Aplica a:
     
    '#prefix' (string)
    Cualquier código HTML o cadena válida que se desee mostrar antes del elemento. Se recomienda usarlo en combinación con '#suffix': cuando sea necesario anidar el elemento dentro de algún bloque HTML.
    Aplica a:
    Todos los elementos visibles.
     
    '#requiere_dialogo_modal' (boolean)
    TRUE | FALSE Establece si el elemento necesita que la página incluya una instancia del dialogo modal.
    Aplica a:
    Todos los elementos, pero basta con asignarlo en uno cualquiera de ellos.
     
    '#required' (boolean)
    TRUE | FALSE Establece si el valor es o no obligatorio. Default FALSE. Pone una marca de exigido a la etiqueta del elemento y hace que los validadores de entrada disparen un aviso de error cuando el valor a recoger no esté presente, y cambien su contexto a 'danger'
    Aplica a:
    Todos los elemento de entrada de datos salvo button e image-button
     
    '#required_nodefault' (boolean)
    TRUE | FALSE Sólo se tiene en cuenta en caso de que el elemento sea requerido. Y, es usado para validar que haya habido asignación de valor, de modo que si su valor es FALSE interpreta el default del elemento como valor admisible, mientras que si se asigna a TRUE el default del campo no es admitido como valor requerido. Para los campos de texto, por ejemplo, es TRUE por defecto para forzar entradas. mientras que para un checkbox es FALSE porque debe permitir el valor no marcado como un estado aceptable, a no ser que se diga lo contrario asignando a TRUE.
    Aplica a:
     
    '#return_value'
    Aplica a:
     
    '#rows'
    En la mayoría de los casos es un entero que indica la cantidad de líneas que mostrará la caja de entrada del elemento. Pero, en los elementos que admiten el modelo de panel es un array arrays que indica los subelementos a colocar en cada linea y sus tamaños (ancho en columnas) asociados a sus claves
    Aplica a:
     
    '#size'
    Aplica a:
     
    '#sorted' (boolean)
    En elementos que ofrecen grupos de opciones, establece si se muestran o no ordenados. Si se aplica a un elemento se debe tener cuidado de que las claves de opciones no sean numéricas pues al ordenar el array php no mantiene las claves no alfabéticas.
    Aplica a:
    CheckBoxex RadioBoxes y Select list.
     
    '#src'
    Aplica a:
     
    '#subitempad'
    Aplica a:
     
    '#subordinados' (array)
    Establece que elementos deben ser modificados en cascada, mediante un llamado Ajax en respuesta a un evento del cliente (por defecto 'change') ejecutado sobre el elemento.
    Aplica a:
    todos los elementos (visibles o no).
     
    '#subordinantes' (array)
    Establece los elementos que disparan acciones ajax ante las cuales debe ser modificado el elemento como parte de una cascada de cambios.
    Aplica a:
     
    '#suffix': (string)
    Texto HTML o cadena a mostrar después del elemento. Usualmente se emplea en combinación con '#prefix' para incluir etiquetas de cierre cuando se necesita empotrar el elemento dentro de un bloque contenedor.
    Aplica a: Todos los elementos visibles.
     
    '#tagnm'
    En algunos elementos manejadores de tablas o listas es posible indicar el nombre del elemento html que se usará para presentarlos (table, ul, dl, ol, div) el default depende del elemento.
    Aplica a:
    Ordenadores de listas.
     
    '#target' (string)
    Aplica a:
     
    '#textaid' (string)
    Texto a mostrar en el atributo placeholder de la caja de entrada de texto. Si no se asigna y se establece #usetextaid = TRUE, se mostrará el mensaje por defecto del elemento de entrada asociado (o una cadena nula).
    Aplica a:
    AzDbCombo y sus extensores, BodyFyeld, Textarea, Textfield
     
    '#title' (string)
    Texto a mostrar en la etiqueta de título
    Aplica a:
    Todos los elementos salvo Button, Hidden y Value
     
    '#titlepos' (int) 0 a 3 | NULL
    0 = Normal (arriba), 1= Izquierda, 2 = derecha, 3 = abajo. Si no se asigna o se pasa Null toma el default 0.
    Aplica a: todos los elementos (salvo aquellos que no admiten #title)
     
    '#togglehelp' (boolean)
    TRUE | FALSE. Indica si los títulos incluyen un interruptor ( ) que alterna la visibilidad de la ayuda mostrada en '#description'. En caso de que el título o la descripción sean nulos no tiene efecto. Su default es FALSE.
    Aplica a:
     
    '#type' (string)
    Cadena indicadora del tipo de elemento. ej: 'date', 'file', 'textfield'
    Aplica a:
    Todos los elementos
     
    '#validate' (mixed)
    Establece el método de validación que se aplicará a la entrada recogida por el elemento en respuesta a una acción de tipo submit en el formulario contenedor.
    Este atributo no es procesado por el intérprete que sirve al elemento. Es recibido y tratado por el controlador de procesamiento que trata los formularios, en caso de que se haya usado para servir el formulario. Si el elemento se sirve directamente, sin entregar el form que lo contiene a dicho controlador será ignorado.
    Aplica a:
    Todos los elementos
     
    '#value' (mixed)
    Es el valor actualmente establecido en el cliente salvo el caso especial del elemento Button para el que establece el texto a mostrar. Se puede pasar, como en el ejemplo del elemento date (arriba), pero en general se recomienda delegar su asignación en el controlador.
    Aplica a:
    Todos los elementos
     
    '#usetextaid' (boolean)
    1 | 0. Indica que el atributo placeholder de una caja de entrada de texto debe ser asignado usando el valor por defecto en caso de que no se encuentre otro valor en el array de definición del elemento.
    Aplica a:
    AzDbCombo y sus extensores, BodyFyeld, Textarea, Textfield
     
    '#valuesufixed'
    Aplica a:
     
    '#weight'
    Establece la posición relativa del elemento dentro del conjunto (nivel) en que se encuentre anidado. Los elementos para los que no se haya establecido tendran asignado 0 y se ordenarán alfabéticamente, por claves, luego de los que tengan pesos negativos y antes de los que los tengan positivos.
    Aplica a: todos los elementos
     
    '#width'(mixed)
    Establece el ancho deseado para la caja de presentación del elemento. Para el caso de cajas de captura de texto es ideal pasarlo como un valor porcentual (relativo al ancho de línea del contenedor externo). Para imágenes y elementos gráficos se puede pasar en pixels, o asignar el valor 'auto' para que se autoajuste proporcionalmente, si se ha pasado una altura '#height' explícita.
    Aplica a:
    Image Button, Textarea

    Sólo los atributos #type y #name son requeridos. Todos los demás poseen defaults razonables que hacen posible no pasarlos, en la mayoría de los casos. El par de atributos '#prefix', '#suffix' puede ser empleado para insertar el elemento dentro del contenedor que se desee.

    Ejemplo integrado de uso

    En este ejemplo se prueba el modelo de definición y control de formularios inspirado por Drupal6.x. Se definen tres métodos procesadores:

    • biblio2lsapi_create_sample_form(&$form_state, $params)
    • biblio2lsapi_create_sample_form_cancel($form, &$form_state)
    • biblio2lsapi_create_sample_form_validate($form, &$form_state)
    • biblio2lsapi_create_sample_form_submit($form, &$form_state)
    para controlar la servida y el procesamiento de la información posteada, de modo que se puedan pasar al controlador central de procesamiento de forms: hybridzd_get_form($page_arguments, $postData); que se encarga de todo: lanzar validadores, themes, invocar hooks, controlar todos los manejadores registrados y devolver el bloque html, o en su defecto las guías de error y redirección - cuando sean necesarias.
    Para hacer el llamado se debe preparar un array de parametros, en el que el primer ítem es el nombre del método que se encarga de crear la definición del formulario

     

    Formulario integrado de ejemplo Fatigante

    • invocada implementación de hook: foliate_form_alter() en foliate.module
           
           
           
    Es necesario que marque una opción. Si el encuestado no desea responder a la pregunta, o la evade, marque la opción no responde.

    Php - BiblioTools [Documentación]