]> git.llucax.com Git - mecon/ai.git/blobdiff - sistema/local_lib/AIForm.php
Se completa el manejo de formularios para GrupoSecciones.
[mecon/ai.git] / sistema / local_lib / AIForm.php
index b84837f7ab3b5f00ebe90354528078816072d133..e931aa5ad99e1b0f94549ad73952bbbc644da4ce 100644 (file)
 require_once 'MECON/HTML/QuickForm.php';
 // ~X2C
 
-// Tipo de elementos a manipular.
-define('GRUPO',     1);
-define('SERVICIO',  2);
-define('SISTEMA',   4);
-
-// Acciones.
+// Definicion de acciones.
 define('ALTA',          1);
 define('BAJA',          2);
 define('MODIFICACION',  4);
@@ -54,27 +49,22 @@ class AIForm extends MECON_HTML_QuickForm {
     /**
      * Construye un formulario para el objecto especificado.
      *
-     * @param  int $tipo Tipo de formulario a crear. Puede ser GRUPO, SERVICIO o SISTEMA.
-     * @param  int $accion Accion que realizar?el formulario a crear. Puede ser ALTA, BAJA o MODIFICACION.
      * @param  object &$obj Objeto con el cual rellenar el formulario. Puede ser GrupoSecciones, Servicio o Sistema.
+     * @param  int $accion Accion que realizar?el formulario a crear. Puede ser ALTA, BAJA o MODIFICACION.
      *
      * @return void
      * @access public
      */
-    function iniciar($tipo, $accion, &$obj) // ~X2C
+    function iniciar(&$obj, $accion = ALTA) // ~X2C
     {
-        switch ($tipo) {
-            case GRUPO:
-                $s_tipo = 'grupo';
-                break;
-            case SERVICIO:
-                $s_tipo = 'servicio';
-                break;
-            case SISTEMA:
-                $s_tipo = 'sistema';
-                break;
+        $clase   = get_class($obj);
+        $tipo    = $clase;
+        $s_clase = ucfirst($clase);
+        if ($clase == 'gruposecciones') {
+            $tipo    = 'grupo';
+            $s_clase = 'Grupo de Secciones';
         }
-        $s_padre = $s_tipo.'_padre';
+        $padre = $tipo.'_padre';
         switch ($accion) {
             case BAJA:
                 $s_accion = 'Borrar';
@@ -88,28 +78,44 @@ class AIForm extends MECON_HTML_QuickForm {
         }
         // Construyo con el padre y seteos generales.
         $this->setRendererOpts(array('width' => '400'));
-        $this->addElement('header','cabecera', "$s_accion Servicio");
+        $this->addElement('header','cabecera', $s_accion . ' ' . $s_clase);
         // Elementos.
         if ($accion & (BAJA | MODIFICACION)) {
-            $fId =& $this->addElement('text', $s_tipo, 'Identificador');
-            $fId->setValue($obj->servicio);
+            $fId =& $this->addElement('text', $tipo, 'Identificador');
+            $fId->setValue($obj->$tipo);
             $fId->freeze();
         }
-        if ($tipo & (GRUPO | SERVICIO)) {
-            $fPadre  =& $this->addElement('text', $s_padre, 'Servicio padre');
+        if ($clase == 'gruposecciones' or $clase == 'servicio') {
+            $fPadre  =& $this->addElement('text', $padre, 'Padre');
             $fNombre =& $this->addElement('text', 'nombre', 'Nombre');
             // Validación.
-            $this->addRule('nombre','Debe ingresar un nombre.',         'required');
-            $this->addRule($s_padre, 'Debe ingresar un servicio padre.', 'required');
-            $this->addRule($s_padre, 'El servicio padre debe ser un número natural.',
+            $this->addRule('nombre', 'Debe ingresar un nombre.', 'required');
+            $this->addRule($padre, 'Debe ingresar un padre.', 'required');
+            $this->addRule($padre, 'El padre debe ser un número natural.',
                 'regex', '/^\d*$/');
             // Carga datos.
             if ($accion & (BAJA | MODIFICACION)) {
-                $fPadre->setValue($obj->$s_padre);
+                $fPadre->setValue($obj->$padre);
                 $fNombre->setValue($obj->nombre);
             }
         }
-        if ($tipo & SERVICIO) {
+        if ($clase == 'gruposecciones') {
+            $fAntiguedad   =& $this->addElement('text', 'antiguedad', 'Antigüedad');
+            $fSecciones    =& $this->addElement('select', 'secciones', 'Secciones',
+                array(1=>'test1', 'test2', 'test3', 'test4', 'test5', 'test6', 'test7', 'test8'),
+                array('multiple' => 'multiple', 'size' => 5));
+            $fMostrarHijos =& $this->addElement('checkbox', 'mostrar_hijos', 'Mostrar hijos');
+            // Validación.
+            $this->addRule('antiguedad', 'La antigüedad debe ser un número natural.',
+                'regex', '/^\d*$/');
+            // Carga datos.
+            if ($accion & (BAJA | MODIFICACION)) {
+                $fAntiguedad->setValue($obj->antiguedad);
+                $fSecciones->setSelected($obj->secciones);
+                $fMostrarHijos->setChecked($obj->mostrar_hijos);
+            }
+        }
+        if ($clase == 'servicio') {
             $fDescripcion =& $this->addElement('text', 'descripcion', 'Descripción');
             $fLogueo      =& $this->addElement('checkbox','logueo', 'Necesita login');
             // Validación
@@ -117,10 +123,10 @@ class AIForm extends MECON_HTML_QuickForm {
             // Carga datos.
             if ($accion & (BAJA | MODIFICACION)) {
                 $fDescripcion->setValue($obj->descripcion);
-                $fLogueo->setValue($obj->necesita_logueo);
+                $fLogueo->setChecked($obj->necesita_logueo);
             }
         }
-        if ($tipo & (SERVICIO | SISTEMA)) {
+        if ($clase == 'servicio' or $clase == 'sistema') {
             $fLink      =& $this->addElement('text', 'link', 'Enlace');
             $fLinkAyuda =& $this->addElement('text', 'link_ayuda', 'Enlace de la ayuda');
             $fIcono     =& $this->addElement('text', 'icono', 'Ícono');
@@ -130,24 +136,26 @@ class AIForm extends MECON_HTML_QuickForm {
                 $fLinkAyuda->setValue($obj->link_ayuda);
                 $fIcono->setValue($obj->icono);
             }
+            // Validación.
+            if ($clase == 'sistema') {
+                $this->addRule('link',  'Debe ingresar un nombre.', 'required');
+                $this->addRule('icono', 'Debe ingresar un padre.',  'required');
+            }
         }
         $fHabilitado =& $this->addElement('checkbox','habilitado', 'Está habilitado',
             '', array('checked' => 'checked'));
         // Carga datos.
         if ($accion & (BAJA | MODIFICACION)) {
-            $fHabilitado->setValue($obj->habilitado);
+            $fHabilitado->setChecked($obj->habilitado);
         }
         // Botones.
         $fBtnAccion =& parent::createElement('submit', 'aceptar' , $s_accion);
         if ($accion & MODIFICACION) {
-            $fBtnCancelar =& parent::createElement('submit', 'cancelar' , 'Borrar');
-            $fBtnCancelar =& parent::createElement('submit', 'cancelar' , 'Borrar');
-        }
-        if ($accion & ALTA) {
-            $fBtnCancelar =& parent::createElement('reset', 'cancelar', 'Limpiar');
-        }
-        if ($accion & BAJA) {
-            $fBtnCancelar =& parent::createElement('submit', 'cancelar', 'Cancelar');
+            $fBtnCancelar =& parent::createElement('submit', 'modificar' , 'Borrar');
+        } elseif ($accion & ALTA) {
+            $fBtnCancelar =& parent::createElement('reset', 'agregar', 'Limpiar');
+        } elseif ($accion & BAJA) {
+            $fBtnCancelar =& parent::createElement('submit', 'borrar', 'Cancelar');
         }
         $grupo = array(
             &$fBtnAccion,
@@ -157,6 +165,48 @@ class AIForm extends MECON_HTML_QuickForm {
     }
     // -X2C
 
+    // +X2C Operation 510
+    /**
+     * Llena un objeto con los datos del formulario.
+     *
+     * @param  mixed &$obj Objeto a llenar con los datos del formulario. Puede ser GrupoSecciones, Servicio o Sistema.
+     *
+     * @return void
+     * @access public
+     */
+    function llenarObjeto(&$obj) // ~X2C
+    {
+        $clase = get_class($obj);
+        $tipo  = $clase;
+        if ($clase == 'gruposecciones') {
+            $tipo = 'grupo';
+        }
+        $padre = $tipo.'_padre';
+        // Elementos.
+        $obj->$tipo = $this->getSubmitValue($tipo);
+        $obj->habilitado = $this->getSubmitValue('habilitado');
+        if ($clase == 'gruposecciones' or $clase == 'servicio') {
+            $obj->$padre = $this->getSubmitValue($padre);
+            $obj->nombre = $this->getSubmitValue('nombre');
+        }
+        if ($clase == 'gruposecciones') {
+            $obj->antiguedad    = $this->getSubmitValue('antiguedad');
+            $obj->secciones     = $this->getSubmitValue('secciones');
+var_dump($obj->secciones);
+            $obj->mostrar_hijos = $this->getSubmitValue('mostrar_hijos');
+        }
+        if ($clase == 'servicio') {
+            $obj->descripcion     = $this->getSubmitValue('descripcion');
+            $obj->necesita_logueo = $this->getSubmitValue('logueo');
+        }
+        if ($clase == 'servicio' or $clase == 'sistema') {
+            $obj->link       = $this->getSubmitValue('link');
+            $obj->link_ayuda = $this->getSubmitValue('link_ayuda');
+            $obj->icono      = $this->getSubmitValue('icono');
+        }
+    }
+    // -X2C
+
 } // -X2C Class :AIForm
 
 ?>