From: Leandro Lucarella Date: Thu, 5 Aug 2004 15:24:55 +0000 (+0000) Subject: Se agregan HOWTOs a la documentacion. X-Git-Tag: svn_import~12 X-Git-Url: https://git.llucax.com/mecon/meconlib.git/commitdiff_plain/ef291006587692d6a272ec97d2e46ab435f8d995 Se agregan HOWTOs a la documentacion. --- diff --git a/doc/creacion_sistemas.lyx b/doc/creacion_sistemas.lyx new file mode 100644 index 0000000..a28398c --- /dev/null +++ b/doc/creacion_sistemas.lyx @@ -0,0 +1,383 @@ +#LyX 1.3 created this file. For more info see http://www.lyx.org/ +\lyxformat 221 +\textclass book +\language spanish +\inputencoding auto +\fontscheme default +\graphics default +\paperfontsize default +\spacing single +\papersize Default +\paperpackage a4 +\use_geometry 0 +\use_amsmath 0 +\use_natbib 0 +\use_numerical_citations 0 +\paperorientation portrait +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation indent +\defskip medskip +\quotes_language english +\quotes_times 2 +\papercolumns 1 +\papersides 1 +\paperpagestyle default + +\layout Title + +Creación de Sistemas para la Intranet +\layout Author + +Manuel Nazar Anchorena (manazar@mecon.gov.ar) +\layout Standard + + +\begin_inset LatexCommand \tableofcontents{} + +\end_inset + + +\layout Chapter + +Introducción +\layout Section + +Resumen +\layout Standard + +El siguiente documento intenta explicar en pasos sencillos la creación e + inicialización de un sistema nuevo para la Intranet del Ministerio de Economía. + El objetivo del documento es guiar a los distintos desarrolladores en la + creación de sus aplicaciones, bajo ningún motivo este documento desea exponer + de forma completa el proceso, sino un resumen o +\begin_inset Quotes eld +\end_inset + +guía rápida +\begin_inset Quotes erd +\end_inset + + del mismo. + El autor agradece la colaboración de la Ex- Dirección General de Informática. + +\layout Standard + +Para la creación de sistemas nuevos en la intranet es necesario tener un + usuario creado en el servidor de desarrollo (bal747f en el momento de creación + de este documento), luego, son necesarios ciertos pasos comunes a todos + los proyectos. + Estos son: +\layout Itemize + +Inicialización: (Generación de Repositorio y obtención del mismo) +\layout Itemize + +Creación del diagrama de clases (utilizando el Umbrello) +\layout Itemize + +Creación de las librerias locales en base al diagrama de clases (utilizando + el xmi2code) +\layout Itemize + +Creación de la documentación de las clases y las librerías locales (utilizando + el Doxygen). +\layout Section + +Requerimientos de Software +\layout Standard + +En la máquina local donde se trabaja son necesarios las siguiente aplicaciones. +\layout Itemize + +Umbrello +\layout Itemize + +Xmi2code +\layout Itemize + +Doxygen (utiliza a su vez Graphviz) +\layout Standard + +Hasta la fecha, solo Umbrello y Xmi2code no estaban soportado por Debian + y requerian una instalación separada bajando los paquetes .deb por separado + (ver +\begin_inset LatexCommand \vref{sec:Links-Utiles} + +\end_inset + +). +\layout Section + + +\begin_inset LatexCommand \label{sec:Links-Utiles} + +\end_inset + +Links Utiles +\layout List +\labelwidthstring 00.00.0000 + +PEAR: http://pear.php.net/ +\layout List +\labelwidthstring 00.00.0000 + +Manual\SpecialChar ~ +de\SpecialChar ~ +PEAR: http://pear.php.net/manual/en/ +\layout List +\labelwidthstring 00.00.0000 + +PEAR\SpecialChar ~ +Coding\SpecialChar ~ +Standards: http://pear.php.net/manual/en/standards.php +\layout List +\labelwidthstring 00.00.0000 + +Quickform: http://www.appelsiini.net/~tuupola/php/peardoc2/package.html.html#package. +html.html-quickform +\layout List +\labelwidthstring 00.00.0000 + +xmi2code: http://xmi2code.sourceforge.net/ +\layout List +\labelwidthstring 00.00.0000 + +umbrello: http://uml.sourceforge.net/ +\layout Chapter + +Inicialización: +\layout Section + +Generación del Repositorio. +\layout Standard + +Utilización la Herramienta SAPO (Sistema de Administración de Portal y Otros) + en http://portal.mecon.ar para crear el repositorio SVN. +\layout Itemize + +Seleccionar +\begin_inset Quotes eld +\end_inset + +Creador de Repositorios Subversion +\begin_inset Quotes erd +\end_inset + +. +\layout Itemize + +Loguearse (si no se es usuario, contactarse con el Admin. + de SAPO). +\layout Itemize + +Completar Nombre del Repositorio (recomendación: sea corto. + Ej: procad) y la Descripción del mismo (Ej: Sistema de Capacitación On-Line). +\layout Itemize + +Seleccionar los usuarios habilitados a subir cambios al repositorio, todos + los usuarios pueen bajar el sistema, solo los autorizados aquí pueden subir + cambios. +\layout Itemize + +Accionar el botón de creación, a continuación se visualiza el proceso de + creación. + La última línea describe como realizar un +\begin_inset Quotes eld +\end_inset + +check out +\begin_inset Quotes erd +\end_inset + +, es decir, como bajar la última versión del repositorio.(svn co http:// + ...) +\layout Section + +Bajar por primera vez el repositorio +\layout Standard + +En este paso obtendremos por primera vez el repositorio del sistema creado + recientemente, para ello es necesario ubicarse en un directorio donde el + servidor web pueda leer archivos (ej: /home//public_html). + Para ello, debemos loguearnos en el servidor de desarrollo con nuestro + usuario asignado. +\layout Itemize + +Ejecutar: +\series bold +$ svn co http://portal.mecon.ar/svn/procad/tronco/ procad +\series default + . + +\begin_inset Quotes eld +\end_inset + +co +\begin_inset Quotes erd +\end_inset + + es la operación Check Out, luego sige la ubicación del repositorio y el + último parámetro es la carpeta de destino, si no existe se creará. +\layout Itemize + +Se nos pedirá la contraseña del usuario del servidor de desarrollo, de tener + otro nombre de usuario en el servidor SVN, apretar ENTRAR y se nos pedirá + un nombre de usuario y una contraseña. +\layout Itemize + +Es importante que no exista de antemano el directorio destino. + Si no hubo problemas, se muestra en pantalla los nombres de los archivos + y para finalizar el número de versión actual (probablemente 3, el SVN realiza + 2 commit internos en la creación del mismo). +\layout Itemize + +Para comprender la estructura de directorios creada, existe un archivo README + en la raiz del sistema. + A su vez, existen archivos README en todos los directorios que muestran + el contenido de los mismos (a continuación podremos eliminarlos a todos). +\layout Section + +Generación de los archivos básicos de configuración. +\layout Standard + +En esta sección se explica como generar automáticamente los archivos de + configuración del sistema y de las aplicaciones que complementan al mismo + (xmi2code, Doxygen, Umbrello). +\layout Itemize + +Ejecutar +\series bold +$ make init +\series default + . + Se nos pregunta por el nombre del Sistema, puede ser distinto al nombre + del Repositorio y ser una frase. +\layout Itemize + +A continuación se nos pide el nombre del desarrollador (o responsable del + sistema) y el email del mismo. + Atención con el formato con que nos pide ingresar los datos. +\layout Itemize + +Automáticamente se abrirán 3 archivosde configuración, 2 pertenecen a xmi2code + y uno a Doxygen. + Para una instalación estándar no es necesario modificar ninguno de los + archivos. + Salga del editor. +\layout Itemize + +Este paso es opcional, si desea eliminar todos los archivos README del sistema + ejecutar +\series bold +$ make clean-readme . +\layout Chapter + +Creación Diagrama de Clases. +\layout Section + +Archivos Template +\layout Standard + +En el repositorio creado, se generó automáticamente un archivo estándar + para ser utilizado con el Umbrello. + Este se encuentra en el directorio doc/ de nuestro sistema. + Se llama uml.xmi. +\layout Section + +Edición con Umbrello +\layout Itemize + +Abrir con umbrello el archivo uml.xmi +\layout Itemize + +Crear las clases correspondientes y especialemente la documentación de las + clases, atributos y métodos (estos datos son importantes para la generación + de las librerias y de la documentación). +\layout Itemize + +Corroborar la coherencia de la documentación en los distintos elementos, + existen ciertos bugs (errores) en el Umbrello que hace que el último cambio + de una +\begin_inset Quotes eld +\end_inset + +documentación +\begin_inset Quotes erd +\end_inset + + de un objeto no sea actualizada, solo desde la vista del panel navegable + de la izquierda funciona (ver website Umbrello http://uml.sourceforge.net/). +\layout Itemize + +Nota: La única relación que modifica el contenido de la libreria generada + con el xmi2code es la herencia (Generalización). +\layout Itemize + +Si se desea heredar clases externas al sistema, es necesario crearla con + el Umbrello, sin atributos ni métodos. + Simplemente póngale el nombre de la clase (Ej: HTML_Table, es una clase + de PEAR). + Luego realize la relación con la clase local que hereda de la externa. + Finalmente, en la documentación de la clase externa poner una linea que + diga: +\series bold +x2c:extern . + +\series default +Si el nombre de la clase externa no es el mismo que en pear, se debe agregar + la ruta del archivo donde se define la clase Ej: +\series bold +x2c:include:HTML/Table.php +\series default +. + Otro ejemplo es la clase Tabla. + En este caso sería +\series bold +x2c:include:MECON/HTML/Tabla.php . +\layout Itemize + +Se le puede indicar al xmi2code que genere automáticamente 2 métodos para + un atributo. + Estos son: de seteo del valor (set) y de obtención del valor (get). + Para lograr esto es necesario agregar en la documentación del atributo + una línea como la siguiente: +\series bold +x2c: get set +\layout Chapter + +Utilización de Xmi2code y Doxygen +\layout Section + +Generación de la librería local. +\layout Standard + +En esta sección veremos como se generan automáticamente las librerías locales + en /sistema/local_lib . +\layout Itemize + +Ejecutar en doc/ +\series bold +$ xmi2code , +\series default +si no hubo problemas deberian existir en sistema/local_lib/ unos archivos + PHP con las declaraciones de las clases locales al sistema. +\layout Itemize + +Si se ejecuta dos veces el xmi2code, los archivos viejos son renombrados + con la extensión +\series bold +.bak. +\layout Section + +Generación de la Documentación de la librería local. +\layout Itemize + +Ejecutar desde doc/ +\series bold +$ doxygen +\series default + , si no hubo problemas, se creó la documentación de la librería, para corrobora +rlo, ir a http:///~//doc/api/html/ ejemplo: + http://bal747f.mecon.ar/~manazar747f/procad/doc/api/html/ . +\the_end diff --git a/doc/mecon_graph.lyx b/doc/mecon_graph.lyx new file mode 100644 index 0000000..046c649 --- /dev/null +++ b/doc/mecon_graph.lyx @@ -0,0 +1,178 @@ +#LyX 1.3 created this file. For more info see http://www.lyx.org/ +\lyxformat 221 +\textclass article +\language spanish +\inputencoding auto +\fontscheme default +\graphics default +\paperfontsize default +\papersize Default +\paperpackage a4 +\use_geometry 0 +\use_amsmath 0 +\use_natbib 0 +\use_numerical_citations 0 +\paperorientation portrait +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation indent +\defskip medskip +\quotes_language english +\quotes_times 2 +\papercolumns 1 +\papersides 1 +\paperpagestyle default + +\layout Title + +MECON_Graph mini howto +\layout Author + +Manuel Nazar Anchorena +\layout Section + +¿Como funciona? +\layout Subsection + +Introduccion +\layout Standard + + +\series bold +MECON_Graph +\series default + encapsula a la libreria +\series bold +JPGraph +\series default + +\series bold +( http://www.aditus.nu/jpgraph/index.php ), +\series default + proviendo a los progrmadores una forma sencilla de generar graficos. +\layout Standard + +JPGraph utiliza la libreria de PHP llamada +\series bold +GD +\series default +, esta se encarga de la manipulacion de imagenes. +\layout Subsection + +Como embeber un grafico en HTML +\layout Standard + +El objeto MECON_Graph genera un script que devuelve un grafico PNG. + Por esto, es que no se puede poner el codigo directamente en la pagina + (como se suele hacer con cualquier funcion o clase en PHP). +\layout Standard + +Para resolver esto, se debe utilizar el tag html IMG, en la propiedad SRC, + se debe poner una pagina con extension .php que contiene solamente el script + del objeto MECON_Graph que genera la imagen. +\layout Standard + +ejemplo: +\layout LyX-Code + + +\layout Standard + +Tambien se le puede enviar parametros al script que genera la imagen +\layout LyX-Code + + +\layout Section + +Aprendiendo con un ejemplo +\layout Standard + +Para mayor informacion dirigirse a la documentacion de MECONLIB +\layout LyX-Code + +require_once 'MECON/Graph.php'; +\layout LyX-Code + +\layout LyX-Code + +$tipo_grafico = 'xy'; +\layout LyX-Code + +$tipo_secuencia = 'barras'; +\layout LyX-Code + +\layout LyX-Code + +//Si se quiere usar una torta3D +\layout LyX-Code + +$tipo_grafico = 'torta3D'; +\layout LyX-Code + +$tipo_secuencia = ''; +\layout LyX-Code + +//fin si es torta3d +\layout LyX-Code + +\layout LyX-Code + +$leyendas = array('Bajo','Medio','Alto'); +\layout LyX-Code + +$attrib_gral=array( 'verValores'=>true, 'Ytitulo'=>'Cantidad de Respuestas', + 'XEtiquetas'=>$leyendas); +\layout LyX-Code + +\layout LyX-Code + +$graph =& new MECON_Graph ($tipo_grafico, 460, 440, $titulo, $attrib_gral); +\layout LyX-Code + +$valores = array(10,20,30); +\layout LyX-Code + +$posLeyenda = array(0.01, 0.01); +\layout LyX-Code + +$attribs = array('leyendas'=>$leyendas, 'posLeyenda'=>$posLeyenda, 'formatoValor +es'=>"%.0f"); +\layout LyX-Code + +$graph->agregarSecuencia($tipo_secuencia, $valores, $attribs); +\layout LyX-Code + +$graph->generar(); +\the_end diff --git a/doc/mecon_quickform.lyx b/doc/mecon_quickform.lyx new file mode 100644 index 0000000..125afb6 --- /dev/null +++ b/doc/mecon_quickform.lyx @@ -0,0 +1,1193 @@ +#LyX 1.3 created this file. For more info see http://www.lyx.org/ +\lyxformat 221 +\textclass book +\language spanish +\inputencoding auto +\fontscheme default +\graphics default +\paperfontsize default +\spacing single +\papersize Default +\paperpackage a4 +\use_geometry 0 +\use_amsmath 0 +\use_natbib 0 +\use_numerical_citations 0 +\paperorientation portrait +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation indent +\defskip medskip +\quotes_language english +\quotes_times 2 +\papercolumns 1 +\papersides 1 +\paperpagestyle default + +\layout Title + +Mecon Quick Form - HOWTO +\layout Author + +Manuel Nazar Anchorena (manazar@mecon.gov.ar) +\layout Standard + + +\begin_inset LatexCommand \tableofcontents{} + +\end_inset + + +\layout Chapter + +Introducción +\layout Section + +Resumen +\layout Standard + +Este documento tiene por objetivo guiar al lector en el apasionante mundo + del MEcon Quick Form. + Este conjunto de librerias fue creado como extension del HTML Quick Form + de PEAR, para ajustarse a las necesidades del grupo de desarrollo de la + Intranet del Ministerio de Economía. +\layout Section + +Contenido +\layout Standard + +Abarcaremos aqui los pasos básicos para la creación de +\begin_inset Quotes eld +\end_inset + +formularios +\begin_inset Quotes erd +\end_inset + + comunes, que formarán parte de nuestro sistema. + Entre lo objetos de un formulario, veremos campos de texto, areas de texto, + fechas, botones de opciones, objetos ocultos y cajas de selección. +\layout Chapter + +El lenguaje +\layout Section + +Breve panorama +\layout Standard + +En esta sección se explicarán las características generales. + Están en el orden recomendado a seguir: +\layout Enumerate + +Declaración de Libreria. +\layout Enumerate + +Creación de Objetos de Formulario. +\layout Enumerate + +Creación de reglas de validación. +\layout Enumerate + +Instrucciones en el caso de que se valide y se carge la página a si misma. +\layout Enumerate + +Dibujar el Formulario. +\layout Section + +Pasos Básicos +\layout Subsection + + +\emph on +require_once +\emph default + : +\emph on + +\emph default +Declaración de la librería +\layout LyX-Code + +require_once 'MECON/HTML/QuickForm.php'; +\layout Standard + +Con esta declaración, se incluyen en nuestro programa todas las clases de + MEcon Quick Form. +\layout Subsection + + +\emph on +new MECON_HTML_QuickForm() +\emph default + : Creación nuevo formulario +\layout LyX-Code + +var = new MECON_HTML_QuickForm(, , , , + ); +\layout Standard + +La variable +\emph on +var +\emph default + nuestro manejador del formulario, con el se trabajará en adelante. +\layout Standard + +Parámetros: +\layout Itemize + + : Página destino, por defecto se toma la misma página (action). +\layout Itemize + + : Nombre del objeto formulario (name). +\layout Itemize + + : Tipo de ventana destino que se armará. + Ej: +\emph on +_blank +\emph default +: Nueva; +\emph on +_self +\emph default + : Sobre la misma. + Por defecto se toma +\emph on +_self. +\layout Itemize + + : Método con el que se enviarán los objetos del formulario: +\emph on +post y get. + +\emph default + Por defecto se toma +\emph on +post. +\layout Itemize + + : Mas adelante. +\layout Standard + +Ejemplos: +\layout LyX-Code + +$form = new MECON_HTML_QuickForm('otro.php','test','_blank','get'); +\layout LyX-Code + +$form = new MECON_HTML_QuickForm('','test','',''); +\layout Subsection + +addGroup() : Armar grupos de objetos +\begin_inset LatexCommand \label{sub:addGroup()-:-Armar} + +\end_inset + + +\layout LyX-Code + +$form->addGroup(, , , ' ', true); +\layout Standard + +Se crea un grupo con los elementos en +\emph on + +\emph default + con el nombre igual a +\emph on + +\emph default + y un título a la izquierda igual a +\emph on + +\emph default +. + Los demás valores se recomienda no modificar. +\newline + +\layout Standard + +Comenzaremos por explicar que es un grupo de objetos, imagine que tiene + varias casillas de verificación (checkbox), o un grupo de botones radio + (radio button). + Deseamos logicamente que estos aparezcan agrupados en el formulario, es + decir en la misma celda y no en celdas distintas. + Por esto es que se crean grupos. +\layout Standard + +Los elementos se crean de la siguiente manera: +\layout LyX-Code + +HTML_QuickForm::createElement(, , ) +\layout Standard + +Luego el elemento debe ser agregado al vector de elementos. +\layout Standard + +Ejemplo: +\layout LyX-Code + +$grupo = array(); +\layout LyX-Code + +$grupo[] =& HTML_QuickForm::createElement('checkbox', 'op1', 'Pelele'); + +\layout LyX-Code + +$grupo[] =& HTML_QuickForm::createElement('checkbox', 'op2', 'Tololo'); + +\layout LyX-Code + +$grupo[] =& HTML_QuickForm::createElement('checkbox', 'op3', 'Pitiribí'); +\layout LyX-Code + +$form->addGroup($grupo, 'opciones', 'Opciones', ' ', true); +\layout Standard + +Como se observa, se creo un grupo de varios elementos del tipo casilla de + verificación. +\layout Subsection + +addElement() : Agregar objetos al formulario +\layout LyX-Code + +$form->addElement(,, ); +\layout Standard + +Este es la primitava mas compleja, para poder explicarla usaré distintos + ejemplos. +\layout Subsubsection + +Cabecera (header) +\layout LyX-Code + +$form->addElement('header','cabecera', 'Título del formulario'); +\layout Standard + +Con esta función creamos la cabecera del formulario, normalmente se incluye + una sola por formulario, pero puede darse el caso de incluir mas. + El segundo parámetro es para el renderizador, con opción +\begin_inset Quotes eld +\end_inset + +cabecera +\begin_inset Quotes erd +\end_inset + + el estilo es centrado y es considerado mas importante que +\begin_inset Quotes eld +\end_inset + +titulo +\begin_inset Quotes erd +\end_inset + +, que tambien es centrado pero se lo considera un sub-item de +\begin_inset Quotes eld +\end_inset + +cabecera +\begin_inset Quotes erd +\end_inset + + +\layout Subsubsection + +Elemento estático (etiqueta) +\layout LyX-Code + +$form->addElement ('static' , ,,); +\layout Standard + +Se agrega una fila con un elemento estático, del tipo etiqueta. + Con un un texto a la izquierda con valor +\emph on + +\emph default + y un texto de datos a la derecha con valor +\emph on + +\layout Standard + +Ejemplo: +\layout LyX-Code + +$form->addElement ('static' , 'responsable' , 'Responsable' , 'hola'); +\layout Standard + +Con este elemento, agramos una fila con el texto +\begin_inset Quotes eld +\end_inset + +Responsable +\begin_inset Quotes erd +\end_inset + + como nombre de atributo (a la izquierda) y se visualiza el texto +\begin_inset Quotes eld +\end_inset + +hola +\begin_inset Quotes erd +\end_inset + + en la columna de datos. +\layout Subsubsection + +Elemento oculto (hidden) +\layout LyX-Code + +$form->addElement ('hidden' , , ); +\layout Standard + +Se agrega al formulario un objeto oculto (hidden) con nombre igual a +\emph on + +\emph default + y valor igual a +\emph on + +\emph default +. +\layout Standard + +Ejemplo +\layout LyX-Code + +$form->addElement ('hidden' , 'id_cliente' , '54'); +\layout Subsubsection + +Cuadro de Texto (text) +\layout LyX-Code + +$form->addElement('text', , , ); +\layout Standard + +Se agrega al formulario un cuadro de texto con el nombre igual a , + con título a la izquierda igual a y un conjunto de opciones. + En el ejemplo se visualiza un caso común. +\layout LyX-Code + +$form->addElement('text', 'name', 'Nombre', array('size' => '30', 'maxlength' + => '30')); +\layout Subsubsection + +Area de Texto (textarea) +\layout LyX-Code + +$form->addElement('textarea', , , ); +\layout Standard + +Se agrega al formulario un área de texto con el nombre igual a , + con título a la izquierda igual a y un conjunto de opciones. + En el ejemplo se visualiza un caso común. +\layout LyX-Code + +$form->addElement('textarea', 'desc_sistema', 'Descripción', array('rows' + => '2','cols'=>'50')); +\layout Subsubsection + +Campo de Fecha +\layout LyX-Code + +$form->addElement('mdate', , ); +\layout Standard + +Se agrega al formulario un campo de fecha con el nombre igual a , + con título a la izquierda igual a . + En el ejemplo se visualiza un caso común. +\layout LyX-Code + +$form->addElement('mdate', 'fecha', 'Fecha Implementación'); +\layout Subsubsection + +Caja de Selección (select) +\layout LyX-Code + +$form->addElement ('select' , , , , ); +\layout Standard + +Se agrega al formulario una caja de selección con el nombre igual a , + con título a la izquierda igual a y un conjunto de opciones. + +\layout Standard + +Ejemplos: +\layout LyX-Code + +$arr = array("clave1" => "valor1", "clave2" => "valor2", "clave3" => "valor3", + "clave4" => "valor4", "clave5" => "valor5", "clave6" => "valor6"); +\layout Standard + +Esta es la inicialización del vector de datos. +\layout LyX-Code + +$form->addElement ('select' , 'vector2' , 'Permisos' ,$arr , array('size' + => '1')); +\layout Standard + +Aqui se crea una caja de selección con la opción de seleccionar solo 1 valor +\layout Itemize + +$form->addElement ('select' , 'vector1' , 'Permisos' ,$arr , array('size' + => sizeof($arr), 'multiple' => 'multiple')); +\layout Standard + +Aqui se crea una caja de selección con la opción de seleccionar múltiples + valores. +\layout Subsubsection + +Casilla de Verificación (checkbox | radio) +\begin_inset LatexCommand \label{sub:Casilla-de-Verificación} + +\end_inset + + +\layout Standard + +Para ambos casos (checkbox y radio button) es necesario crear un grupo de + elementos como se vio en +\begin_inset LatexCommand \ref{sub:addGroup()-:-Armar} + +\end_inset + + +\newline + +\layout Standard + +Ejemplo +\emph on +checkbox +\emph default +: +\layout LyX-Code + +$grupo = array(); +\layout LyX-Code + +$grupo[] =& HTML_QuickForm::createElement('checkbox', 'op1', 'Pelele'); + +\layout LyX-Code + +$grupo[] =& HTML_QuickForm::createElement('checkbox', 'op2', 'Tololo'); + +\layout LyX-Code + +$grupo[] =& HTML_QuickForm::createElement('checkbox', 'op3', 'Pitiribí'); +\layout LyX-Code + +$form->addGroup($grupo, 'opciones', 'Opciones', ' ', true); +\layout Standard + +Ejemplo +\emph on +radio button: +\layout LyX-Code + +$grupo = array(); +\layout LyX-Code + +$grupo[] =& HTML_QuickForm::createElement('radio', 'op4', 'Pelele','','v1'); + +\layout LyX-Code + +$grupo[] =& HTML_QuickForm::createElement('radio', 'op4', 'Tololo','', 'v2'); + +\layout LyX-Code + +$grupo[] =& HTML_QuickForm::createElement('radio', 'op4', 'Pitiribí','', + 'v3'); +\layout LyX-Code + +$form->addGroup($grupo, 'opciones2', 'Opciones 2', ' ', true); +\layout Standard + +En el caso de los Radio Button, el 4to. + parámetro es una etiqueta que se visualiza a la dereche del círculo de + opción, de todas formas su uso es poco común. +\layout Subsubsection + +Botones de Formulario (button) +\begin_inset LatexCommand \label{sub:Botones-de-Formulario} + +\end_inset + + +\layout Standard + +Para crear los botones de un formulario, recomendamos usar un grupo como + se vió en el ejemplo de la casilla de verificación en +\begin_inset LatexCommand \ref{sub:Casilla-de-Verificación} + +\end_inset + +. + Pero en este caso el grupo lo formarán botones. +\layout Standard + +Ejemplo: +\layout LyX-Code + +$btn_aceptar =& HTML_QuickForm::createElement('submit', 'aceptar', 'Grabar'); +\layout LyX-Code + +$btn_cancelar =& HTML_QuickForm::createElement('reset', 'cancelar', 'Limpiar'); + +\layout LyX-Code + +$grupo = array(); $grupo[] =& $btn_aceptar; $grupo[] =& $btn_cancelar; +\layout LyX-Code + +$form->addGroup($grupo, 'botones'); +\layout Subsection + +Reglas de Validación +\layout Standard + +Para poder imponer reglas en nuestro formulario, es necesario explicitarlos + en el programa. + Existen reglas para distintos elementos del formulario. + El MEcon Quick Form cuenta con un set de reglas registradas pero se le + pueden agregar mas. + +\layout LyX-Code + +$var->addRule(, , ); +\layout Standard + +Los parámetros tienen el siguiente significado. +\layout Itemize + + : Nombre del elemento del formulario (propiedad +\emph on +name +\emph default +) al cual se le aplicará la regla. +\layout Itemize + + : Texto que se visualizará en el caso que NO se cumpla con la regla. +\layout Itemize + + : Tipo de la regla a aplicar. +\layout Subsection + +Ejemplos de Tipos de reglas +\layout Standard + +A continuación se verán los ejemplos más comunes. + Dependiendo del tipo de regla, se necesita un parámetro adicional +\layout Subsubsection + +"required" : Obligatorio +\begin_inset LatexCommand \label{sub:"required"-:-Obligatorio} + +\end_inset + + +\layout Standard + +Obliga que el usuario complete ese campo. + Se visualiza al lado del nombre un asterisco indicando que es obligatorio. +\layout Standard + +Ejemplo: +\layout LyX-Code + +$form->addRule('nombre_sistema', 'El campo nombre es obligatorio', 'required'); + +\layout Subsubsection + +"maxlength" : Tamaño Máximo. +\layout Standard + +Determina el tamaño máximo del campo, se le comunica al usuario el tamaño + máximo permitido. +\layout Standard + +Ejemplo: +\layout LyX-Code + +$form->addRule('nombre_sistema', 'El tamaño debe ser a lo sumo de 20', 'maxlengt +h', '20'); +\layout Subsubsection + +"minlength" : Tamaño Mínimo. +\layout Standard + +Determina el tamaño mínimo del campo, se le comunica al usuario el tamaño + mínimo permitido. +\layout Standard + +Ejemplo: +\layout LyX-Code + +$form->addRule('nombre_sistema', 'El tamaño debe ser por lo menos de 5', + 'minlength', '5'); +\layout Subsubsection + +"fecha" : Fecha Válida +\layout Standard + +Determina si la fecha es válida, ejemplo: (31 de febrero). +\layout Standard + +Ejemplo: +\layout LyX-Code + +$form->addRule('fecha_inicial', 'La fecha no es válida', 'fecha'); +\layout Subsubsection + +"rangelength" : Tamaño dentro de un Rango FALTA +\layout Itemize + +se solicita enviar ejemplo +\layout Subsubsection + +"regex" : Validar con expresion regular +\layout Standard + +Obliga que el campo cumpla con la expresión regular estipulada. +\layout Standard + +Ejemplo: +\layout LyX-Code + +$form->addRule('nombre_sistema', 'No cumple, debe contener el texto rodolfo', + 'regex', '/rodolfo/'); +\layout Subsubsection + +"email" : Valida que sea Email +\layout Standard + +Valida que el texto ingresado sea sintácticamente correcto. + Sin embargo puede estar vacío, se puede combinar con +\emph on +required +\begin_inset LatexCommand \ref{sub:"required"-:-Obligatorio} + +\end_inset + + +\layout LyX-Code + +$form->addRule('txt_email', 'Error de sintaxis', 'email'); +\layout Subsubsection + +"emailorblank" : +\layout Itemize + +se solicita enviar ejemplo +\layout Subsubsection + +"lettersonly" : Todas letras +\layout Standard + +Valida que el texto ingresado contenga solamente letras +\layout LyX-Code + +$form->addRule('nombre_sistema', 'Solo se permiten letras ', 'lettersonly'); +\layout Subsubsection + +"alphanumeric" : Todos letras y numeros +\layout Standard + +Valida que el texto ingresado sea alfanumérico, acepta letros o números + o ambos. + No permite caracteres especiales como '?', ' +\backslash +', etc. +\layout LyX-Code + +$form->addRule('nombre_sistema', 'Solo se permiten letras y números', 'alphanume +ric'); +\layout Subsubsection + +"numeric" : +\layout Standard + +Valida que el texto ingresado contenga solamente números +\layout LyX-Code + +* $form->addRule('nombre_sistema', 'Solo se permiten números', 'numeric'); +\layout Subsubsection + +"nopunctuation" : +\layout Itemize + +se solicita enviar ejemplo +\layout Subsubsection + +"nonzero" : +\layout Itemize + +se solicita enviar ejemplo +\layout Subsubsection + +"uploadedfile" : +\layout Itemize + +se solicita enviar ejemplo +\layout Subsubsection + +"maxfilesize" : +\layout Itemize + +se solicita enviar ejemplo +\layout Subsubsection + +"mimetype" : +\layout Itemize + +se solicita enviar ejemplo +\layout Subsubsection + +"filename" : +\layout Itemize + +se solicita enviar ejemplo +\layout Subsection + +Accionar del formulario +\layout Standard + +Aqui se verá la forma de acceder al formulario cuando se han cumplido todas + las reglas de validación (haya o no). +\layout LyX-Code + +Ejemplo: +\newline + +\layout LyX-Code + +// Se valida, freezea el formulario y pide confirmación. +\layout LyX-Code + +if ($form->validate()) { +\layout LyX-Code + +\SpecialChar ~ +\SpecialChar ~ +$tmp = $form->getSubmitValue('botones'); +\layout LyX-Code + +\SpecialChar ~ +\SpecialChar ~ +if (@$tmp['aceptar'] == 'Grabar') { +\layout LyX-Code + +\SpecialChar ~ +\SpecialChar ~ +\SpecialChar ~ +\SpecialChar ~ +$form->freeze(); +\layout LyX-Code + +\SpecialChar ~ +\SpecialChar ~ +\SpecialChar ~ +\SpecialChar ~ +$btn_aceptar->setValue('Confirmar'); +\layout LyX-Code + +\SpecialChar ~ +\SpecialChar ~ +} +\layout LyX-Code + +\SpecialChar ~ +\SpecialChar ~ +elseif (@$tmp['aceptar'] == 'Confirmar') { +\layout LyX-Code + +\SpecialChar ~ +\SpecialChar ~ +\SpecialChar ~ +\SpecialChar ~ +echo 'Aca Meto el Proceso de grabacion, eliminacion, etc'; +\layout LyX-Code + +\SpecialChar ~ +\SpecialChar ~ +\SpecialChar ~ +\SpecialChar ~ +$var = "grabacion_exitosa.php"; +\layout LyX-Code + +\SpecialChar ~ +\SpecialChar ~ +\SpecialChar ~ +\SpecialChar ~ +header('Location: '.$var); +\layout LyX-Code + +\SpecialChar ~ +\SpecialChar ~ +} +\layout LyX-Code + +} +\layout LyX-Code + +echo $form->toHtml(); +\layout Standard +\noindent +Como se observa, primero solicita que se validen los datos del formulario, + luego hay que ver en que instancia se encuentra, si en confirmación o en + la posterior a la confirmación. + Si no cumple con ninguna de las opciones, dibuja el formulario. + Para ver en que instancia se encuentra, se solicita el valor del grupo + de botones creado en +\begin_inset LatexCommand \ref{sub:Botones-de-Formulario} + +\end_inset + +. + Recomendamos ver los ejemplos +\begin_inset LatexCommand \ref{sec:Ejemplos-Completos} + +\end_inset + + +\layout Subsection + +Dibujar el formulario +\layout Standard + +Este paso simplemente solicita que se dibuje el formulario bajo las condiciones + dadas en los pasos anteriores. +\layout LyX-Code + +$form->toHtml(); +\layout Standard + +Si en vez de mostrar el formulario con los campos +\begin_inset Quotes eld +\end_inset + +editables +\begin_inset Quotes erd +\end_inset + +, deseamos que los muestre como simple texto, se debe anteponer a +\emph on +$form->toHtml(); +\emph default +lo siguiente: +\layout LyX-Code + +$form->freeze(); +\layout Standard + +Esto es útil cuando se desea por ejemplo mostrar los datos ingresados en + el formulario solicitando una confirmación, antes de trabajar con ellos. + Recomendamos ver los ejemplos +\begin_inset LatexCommand \ref{sec:Ejemplos-Completos} + +\end_inset + + +\layout Section + +Ejemplos Completos +\begin_inset LatexCommand \label{sec:Ejemplos-Completos} + +\end_inset + + +\layout Subsection + +Archivo ejemplar estandar +\layout LyX-Code + +A continuación se muestra un ejemplo sencillo pero que abarca todos los + temas vistos en este HOWTO +\newline + +\layout LyX-Code + + +\layout LyX-Code + +Prueba de renderer +\layout LyX-Code + + + +\layout LyX-Code + +addElement('header','cabecera', 'Título del formulario'); +\newline + +\layout LyX-Code + +//Agregar un objeto estatico.. + tipo estiqueta +\layout LyX-Code + +$form->addElement ('static' , 'responsable' , 'Responsable' , 'hola'); +\newline + +\layout LyX-Code + +// Agregar un objeto oculto (hidden) +\layout LyX-Code + +$form->addElement ('hidden' , 'id_cliente' , '54'); +\newline + +\layout LyX-Code + +$form->addElement('text', 'nombre_sistema','Nombre', array('size' => '30', + 'maxlength' => '30')); +\newline + +\layout LyX-Code + +$form->addElement('textarea', 'desc_sistema', 'Descripción', array('rows' + => '2','cols'=>'50')); +\newline + +\layout LyX-Code + +$form->addElement('mdate', 'fecha', 'Fecha Implementación'); +\newline + +\layout LyX-Code + +// Agrego un grupo de prueba separado por
s. + +\layout LyX-Code + +$grupo = array(); +\layout LyX-Code + +$grupo[] =& HTML_QuickForm::createElement('mdate', 'desde', 'Desde'); +\layout LyX-Code + +$grupo[] =& HTML_QuickForm::createElement('mdate', 'hasta', 'Hasta'); +\layout LyX-Code + +$form->addGroup($grupo, 'fecha_group', 'Intervalo', '
', true); +\newline + +\layout LyX-Code + +// Agregar 2 objetos select a partir de un array +\layout LyX-Code + +$arr = array("clave1" => "valor1", "clave2" => "valor2", "clave3" => "valor3", + "clave4" => "valor4", "clave5" => "valor5", "clave6" => "valor6"); +\layout LyX-Code + +$form->addElement ('select' , 'vector1' , 'Permisos' ,$arr , array('size' + => sizeof($arr), 'multiple' => 'multiple')); +\layout LyX-Code + +$form->addElement ('select' , 'vector2' , 'Permisos' ,$arr , array('size' + => '1')); +\newline + +\layout LyX-Code + +// Agrega otro grupo de prueba, separado por un espacio. +\layout LyX-Code + +$grupo = array(); +\layout LyX-Code + +$grupo[] =& HTML_QuickForm::createElement('checkbox', 'op1', 'Pelele'); + +\layout LyX-Code + +$grupo[] =& HTML_QuickForm::createElement('checkbox', 'op2', 'Tololo'); + +\layout LyX-Code + +$grupo[] =& HTML_QuickForm::createElement('checkbox', 'op3', 'Pitiribí'); +\layout LyX-Code + +$form->addGroup($grupo, 'opciones', 'Opciones', ' ', true); +\newline + +\layout LyX-Code + +// Agrega otro grupo de prueba, separado por un espacio. + +\layout LyX-Code + +$grupo = array(); +\layout LyX-Code + +$grupo[] =& HTML_QuickForm::createElement('radio', 'op4', 'Pelele','','v1'); + +\layout LyX-Code + +$grupo[] =& HTML_QuickForm::createElement('radio', 'op4', 'Tololo','', 'v2'); + +\layout LyX-Code + +$grupo[] =& HTML_QuickForm::createElement('radio', 'op4', 'Pitiribí','', + 'v3'); +\layout LyX-Code + +$form->addGroup($grupo, 'opciones2', 'Opciones 2', ' ', true); +\newline + +\layout LyX-Code + +// Agrega un grupo especial de botones. +\layout LyX-Code + +$btn_aceptar =& HTML_QuickForm::createElement('submit', 'aceptar', 'Grabar'); +\layout LyX-Code + +$btn_cancelar =& HTML_QuickForm::createElement('reset', 'cancelar', 'Limpiar'); +\layout LyX-Code + +$grupo = array(); +\layout LyX-Code + +$grupo[] =& $btn_aceptar; +\layout LyX-Code + +$grupo[] =& $btn_cancelar; +\layout LyX-Code + +$form->addGroup($grupo, 'botones'); +\newline + +\layout LyX-Code + +// Agrega las reglas de validacion +\layout LyX-Code + +$form->addRule('nombre_sistema', 'El campo nombre es obligatorio', 'required'); +\layout LyX-Code + +$form->addRule('nombre_sistema', 'El tamaño máximo es 10', 'maxlength', + '10'); +\layout LyX-Code + +$form->addRule('nombre_sistema', 'El campo debe ser alfanumérico', 'alphanumeric +'); +\layout LyX-Code + +$form->addRule('desc_sistema', 'El campo descripcion es obligatorio', 'required' +); +\layout LyX-Code + +$form->addRule('contacto', 'El campo contacto es obligatorio', 'required'); +\layout LyX-Code + +$form->addRule('fecha', 'La fecha no es válida', 'fecha'); +\layout LyX-Code + +$form->addRule('fecha', 'El campo fecha es obligatorio', 'required', ''); + +\layout LyX-Code + +$form->addRule('desde', 'La fecha no es válida', 'fecha'); +\layout LyX-Code + +$form->addRule('hasta', 'La fecha no es válida', 'fecha'); +\newline + +\layout LyX-Code + +// Se valida, freezea el formulario y pide confirmación. + +\layout LyX-Code + +if ($form->validate()) { +\layout LyX-Code + +\SpecialChar ~ +\SpecialChar ~ +$tmp = $form->getSubmitValue('botones'); +\layout LyX-Code + +\SpecialChar ~ +\SpecialChar ~ +if (@$tmp['aceptar'] == 'Grabar') { +\layout LyX-Code + +\SpecialChar ~ +\SpecialChar ~ +\SpecialChar ~ +\SpecialChar ~ +$form->freeze(); +\layout LyX-Code + +\SpecialChar ~ +\SpecialChar ~ +\SpecialChar ~ +\SpecialChar ~ +$btn_aceptar->setValue('Confirmar'); +\layout LyX-Code + +\SpecialChar ~ +\SpecialChar ~ +} elseif (@$tmp['aceptar'] == 'Confirmar') { +\layout LyX-Code + +\SpecialChar ~ +\SpecialChar ~ +\SpecialChar ~ +\SpecialChar ~ +echo 'Aca Meto el Proceso de grabacion, eliminacion, etc'; +\layout LyX-Code + +\SpecialChar ~ +\SpecialChar ~ +\SpecialChar ~ +\SpecialChar ~ +$var = "grabacion_exitosa.php"; +\layout LyX-Code + +\SpecialChar ~ +\SpecialChar ~ +\SpecialChar ~ +\SpecialChar ~ +header('Location: '.$var); +\layout LyX-Code + +\SpecialChar ~ +\SpecialChar ~ +} +\layout LyX-Code + +} +\layout LyX-Code + +echo $form->toHtml(); +\layout LyX-Code + +?> +\newline + +\layout LyX-Code + + +\layout LyX-Code + + +\the_end