]> git.llucax.com Git - mecon/ai.git/blob - sistema/local_lib/AIForm.php
4c6b42370b248ff884f61386315f81af143ecfee
[mecon/ai.git] / sistema / local_lib / AIForm.php
1 <?php
2 // vim: set expandtab tabstop=4 softtabstop=4 shiftwidth=4:
3 // +--------------------------------------------------------------------+
4 // |                      Ministerio de Economía                        |
5 // |                  AI (Administrador de Intranet)                    |
6 // +--------------------------------------------------------------------+
7 // | This file is part of AI.                                           |
8 // |                                                                    |
9 // | AI is free software; you can redistribute it and/or modify         |
10 // | it under the terms of the GNU General Public License as published  |
11 // | by the Free Software Foundation; either version 2 of the License,  |
12 // | or (at your option) any later version.                             |
13 // |                                                                    |
14 // | AI is distributed in the hope that it will be useful, but          |
15 // | WITHOUT ANY WARRANTY; without even the implied warranty of         |
16 // | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU   |
17 // | General Public License for more details.                           |
18 // |                                                                    |
19 // | You should have received a copy of the GNU General Public License  |
20 // | along with Hooks; if not, write to the Free Software Foundation,   |
21 // | Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA      |
22 // +--------------------------------------------------------------------+
23 // | Creado: Thu Jul 3 17:39:15 2003                                    |
24 // | Autor:  Leandro Lucarella <llucar@mecon.gov.ar>                    |
25 // +--------------------------------------------------------------------+
26 //
27 // $Id$
28 //
29
30 // +X2C includes
31 require_once 'MECON/HTML/QuickForm.php';
32 // ~X2C
33
34 // Definicion de acciones.
35 define('ALTA',          1);
36 define('BAJA',          2);
37 define('MODIFICACION',  4);
38
39 // +X2C Class 507 :AIForm
40 /**
41  * Formularios para el Administrador de Intranet.
42  *
43  * @access public
44  */
45 class AIForm extends MECON_HTML_QuickForm {
46     // ~X2C
47
48     // +X2C Operation 509
49     /**
50      * Construye un formulario para el objecto especificado.
51      *
52      * @param  object &$obj Objeto con el cual rellenar el formulario. Puede ser GrupoSecciones, Servicio o Sistema.
53      * @param  int $accion Accion que realizar?el formulario a crear. Puede ser ALTA, BAJA o MODIFICACION.
54      *
55      * @return void
56      * @access public
57      */
58     function iniciar(&$obj, $accion = ALTA) // ~X2C
59     {
60         $clase = get_class($obj);
61         $s_clase = ucfirst($clase);
62         if ($clase == 'gruposecciones') {
63             $s_clase = 'Grupo de Secciones';
64         }
65         $padre = $clase.'_padre';
66         switch ($accion) {
67             case BAJA:
68                 $s_accion = 'Borrar';
69                 break;
70             case MODIFICACION:
71                 $s_accion = 'Modificar';
72                 break;
73             default:
74                 $accion   = ALTA;
75                 $s_accion = 'Agregar';
76         }
77         // Construyo con el padre y seteos generales.
78         $this->setRendererOpts(array('width' => '400'));
79         $this->addElement('header','cabecera', $s_accion . ' ' . $s_clase);
80         // Elementos.
81         if ($accion & (BAJA | MODIFICACION)) {
82             $fId =& $this->addElement('text', $clase, 'Identificador');
83             $fId->setValue($obj->$clase);
84             $fId->freeze();
85         }
86         if ($clase == 'gruposecciones' or $clase == 'servicio') {
87             $fPadre  =& $this->addElement('text', $padre, 'Padre');
88             $fNombre =& $this->addElement('text', 'nombre', 'Nombre');
89             // Validación.
90             $this->addRule('nombre','Debe ingresar un nombre.',         'required');
91             $this->addRule($padre, 'Debe ingresar un padre.', 'required');
92             $this->addRule($padre, 'El padre debe ser un número natural.',
93                 'regex', '/^\d*$/');
94             // Carga datos.
95             if ($accion & (BAJA | MODIFICACION)) {
96                 $fPadre->setValue($obj->$padre);
97                 $fNombre->setValue($obj->nombre);
98             }
99         }
100         if ($clase == 'servicio') {
101             $fDescripcion =& $this->addElement('text', 'descripcion', 'Descripción');
102             $fLogueo      =& $this->addElement('checkbox','logueo', 'Necesita login');
103             // Validación
104             $this->addRule('descripcion',   'Debe ingresar una descripción.',   'required');
105             // Carga datos.
106             if ($accion & (BAJA | MODIFICACION)) {
107                 $fDescripcion->setValue($obj->descripcion);
108                 $fLogueo->setValue($obj->necesita_logueo);
109             }
110         }
111         if ($clase == 'servicio' or $clase == 'sistema') {
112             $fLink      =& $this->addElement('text', 'link', 'Enlace');
113             $fLinkAyuda =& $this->addElement('text', 'link_ayuda', 'Enlace de la ayuda');
114             $fIcono     =& $this->addElement('text', 'icono', 'Ícono');
115             // Carga datos.
116             if ($accion & (BAJA | MODIFICACION)) {
117                 $fLink->setValue($obj->link);
118                 $fLinkAyuda->setValue($obj->link_ayuda);
119                 $fIcono->setValue($obj->icono);
120             }
121         }
122         $fHabilitado =& $this->addElement('checkbox','habilitado', 'Está habilitado',
123             '', array('checked' => 'checked'));
124         // Carga datos.
125         if ($accion & (BAJA | MODIFICACION)) {
126             $fHabilitado->setValue($obj->habilitado);
127         }
128         // Botones.
129         $fBtnAccion =& parent::createElement('submit', 'aceptar' , $s_accion);
130         if ($accion & MODIFICACION) {
131             $fBtnCancelar =& parent::createElement('submit', 'modificar' , 'Borrar');
132         } elseif ($accion & ALTA) {
133             $fBtnCancelar =& parent::createElement('reset', 'agregar', 'Limpiar');
134         } elseif ($accion & BAJA) {
135             $fBtnCancelar =& parent::createElement('submit', 'borrar', 'Cancelar');
136         }
137         $grupo = array(
138             &$fBtnAccion,
139             &$fBtnCancelar,
140         );
141         $this->addGroup($grupo, 'botones');
142     }
143     // -X2C
144
145     // +X2C Operation 510
146     /**
147      * Llena un objeto con los datos del formulario.
148      *
149      * @param  mixed &$obj Objeto a llenar con los datos del formulario. Puede ser GrupoSecciones, Servicio o Sistema.
150      *
151      * @return void
152      * @access public
153      */
154     function llenarObjeto(&$obj) // ~X2C
155     {
156         $clase = get_class($obj);
157         $padre = $clase.'_padre';
158         // Elementos.
159         $obj->$clase = $this->getSubmitValue($clase);
160         $obj->habilitado = $this->getSubmitValue('habilitado');
161         if ($clase == 'grupo' or $clase == 'servicio') {
162             $obj->$padre = $this->getSubmitValue($padre);
163             $obj->nombre = $this->getSubmitValue('nombre');
164         }
165         if ($clase == 'servicio') {
166             $obj->descripcion     = $this->getSubmitValue('descripcion');
167             $obj->necesita_logueo = $this->getSubmitValue('logueo');
168         }
169         if ($clase == 'servicio' or $clase == 'sistema') {
170             $obj->link       = $this->getSubmitValue('link');
171             $obj->link_ayuda = $this->getSubmitValue('link_ayuda');
172             $obj->icono      = $this->getSubmitValue('icono');
173         }
174     }
175     // -X2C
176
177 } // -X2C Class :AIForm
178
179 ?>