]> git.llucax.com Git - mecon/ai.git/blob - sistema/local_lib/AI/Form.php
c39610f32add0956b352e388012441c49a5197d7
[mecon/ai.git] / sistema / local_lib / AI / Form.php
1 <?php
2 // vim: set binary 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 require_once 'general.php';
35
36 // Definicion de acciones.
37 define('AI_ALTA',   1);
38 define('AI_BAJA',   2);
39 define('AI_MODIF',  4);
40
41 // +X2C Class 507 :AI_Form
42 /**
43  * Formularios para el Administrador de Intranet.
44  *
45  * @package AI_Local
46  * @access public
47  */
48 class AI_Form extends MECON_HTML_QuickForm {
49     // ~X2C
50
51     // +X2C Operation 509
52     /**
53      * Construye un formulario para el objecto especificado.
54      *
55      * @param  object &$obj Objeto con el cual rellenar el formulario. Puede ser GrupoSecciones, Servicio o Sistema.
56      * @param  int $accion Accion que realizar?el formulario a crear. Puede ser AI_ALTA, AI_BAJA o AI_MODIFICACION.
57      * @param  HTML_Arbol $arbol ?bol de donde sacar los padres.
58      * @param  DB $db Base de datos.
59      *
60      * @return void
61      * @access public
62      */
63     function iniciar(&$obj, $accion, $arbol, $db) // ~X2C
64     {
65         $tipo   = substr(get_class($obj), 3);
66         $s_tipo = ucfirst($tipo);
67         if ($tipo == 'gruposecciones') {
68             $tipo   = 'grupo';
69             $s_tipo = 'Grupo de Secciones';
70         }
71         $padre = $tipo.'_padre';
72         switch ($accion) {
73             case AI_BAJA:
74                 $s_accion = 'Borrar';
75                 break;
76             case AI_MODIF:
77                 $s_accion = 'Modificar';
78                 break;
79             default:
80                 $accion   = AI_ALTA;
81                 $s_accion = 'Agregar';
82         }
83         // Construyo con el padre y seteos generales.
84         $this->renderer->updateAttributes(array('width' => '400'));
85         $this->addElement('header','cabecera', $s_accion . ' ' . $s_tipo);
86         // Elementos.
87         if ($tipo == 'sistema') {
88             require_once 'SAMURAI/Sistema.php';
89             $sistemas = array('' => '--');
90             if ($accion & AI_ALTA) {
91                 // Si es un alta, tomo una lista de sistemas aún no agregados.
92                 $sistemas += AI_Sistema::getSistemasArray($db);
93             } else {
94                 // Si no, tomo una lista completa de sistemas.
95                 $sistemas += SAMURAI_Sistema::getArraySistemas($db);
96             }
97             $fId =& $this->addElement('select', $tipo, 'Sistema', $sistemas);
98             $this->addRule($tipo, 'Debe ingresar un sistema.', 'required');
99         }
100         if ($accion & (AI_BAJA | AI_MODIF)) {
101             if ($tipo == 'sistema') {
102                 $fId->setSelected($obj->$tipo);
103             } else {
104                 $fId =& $this->addElement('text', $tipo, 'Identificador');
105                 $fId->setValue($obj->$tipo);
106             }
107             $fId->freeze();
108         }
109         if ($tipo == 'grupo' or $tipo == 'servicio') {
110             $tipos = array('' => '--', '0' => 'Página Principal')
111                 + $arbol->toArray();
112             // Saco el elemento actual si hay uno cargado (no puede ser padre de si mismo).
113             if ($accion & (AI_BAJA | AI_MODIF)) {
114                 unset($tipos[$obj->$tipo]);
115             }
116             $fPadre  =& $this->addElement('select', $padre, 'Padre', $tipos);
117             $fNombre =& $this->addElement('text', 'nombre', 'Nombre');
118             // Validación.
119             $this->addRule('nombre', 'Debe ingresar un nombre.', 'required');
120             $this->addRule($padre, 'Debe ingresar un padre.', 'required');
121             $this->addRule($padre, 'El padre debe ser un número natural.',
122                 'regex', '/^\d*$/');
123             // Carga datos.
124             if ($accion & (AI_BAJA | AI_MODIF)) {
125                 $fPadre->setSelected($obj->$padre);
126                 $fNombre->setValue($obj->nombre);
127             }
128         }
129         if ($tipo == 'grupo') {
130             $fAntiguedad   =& $this->addElement('select', 'antiguedad', 'Antigüedad',
131                 array(3 => '3 días', 1 => '1 día', 7 => '1 semana'));
132             $fSecciones    =& $this->addElement('select', 'secciones', 'Secciones',
133                 AI_GrupoSecciones::getSeccionesArray($db),
134                 array('multiple' => 'multiple', 'size' => 8));
135             $fMostrarHijos =& $this->addElement('checkbox', 'mostrar_hijos', 'Mostrar hijos');
136             // Validación.
137             $this->addRule('antiguedad', 'La antigüedad debe ser un número natural.',
138                 'regex', '/^\d*$/');
139             // Carga datos.
140             if ($accion & (AI_BAJA | AI_MODIF)) {
141                 $fAntiguedad->setSelected($obj->antiguedad);
142                 $fSecciones->setSelected($obj->secciones);
143                 $fMostrarHijos->setChecked($obj->mostrar_hijos);
144             }
145         }
146         if ($tipo == 'servicio') {
147             $fDescripcion =& $this->addElement('text', 'descripcion', 'Descripción');
148             $fLogueo      =& $this->addElement('checkbox','logueo', 'Necesita login');
149             // Validación
150             $this->addRule('descripcion',   'Debe ingresar una descripción.',   'required');
151             // Carga datos.
152             if ($accion & (AI_BAJA | AI_MODIF)) {
153                 $fDescripcion->setValue($obj->descripcion);
154                 $fLogueo->setChecked($obj->necesita_logueo);
155             }
156         }
157         if ($tipo == 'servicio' or $tipo == 'sistema') {
158             $fLink      =& $this->addElement('text', 'link', 'Enlace');
159             $fLinkAyuda =& $this->addElement('text', 'link_ayuda', 'Enlace de la ayuda');
160             //$fIcono     =& $this->addElement('text', 'icono', 'Ícono');
161             $fIcono     =& $this->addElement('select', 'icono', 'Ícono',
162                 listarArchivos('/var/www/sistemas/intranet/www/images', $tipo . '_', '\.gif'));
163             // Carga datos.
164             if ($accion & (AI_BAJA | AI_MODIF)) {
165                 $fLink->setValue($obj->link);
166                 $fLinkAyuda->setValue($obj->link_ayuda);
167                 $fIcono->setValue($obj->icono);
168             }
169             // Validación.
170             if ($tipo == 'sistema') {
171                 $this->addRule('link',  'Debe ingresar un nombre.', 'required');
172                 $this->addRule('icono', 'Debe ingresar un ícono.',  'required');
173             }
174         }
175         $fHabilitado =& $this->addElement('checkbox','habilitado', 'Está habilitado',
176             '', array('checked' => 'checked'));
177         // Carga datos.
178         if ($accion & (AI_BAJA | AI_MODIF)) {
179             $fHabilitado->setChecked($obj->habilitado);
180         }
181         // Botones.
182         $fBtnAccion =& parent::createElement('submit', 'aceptar' , $s_accion);
183         if ($accion & AI_MODIF) {
184             $fBtnCancelar =& parent::createElement('submit', 'modificar' , 'Borrar');
185         } elseif ($accion & AI_ALTA) {
186             $fBtnCancelar =& parent::createElement('reset', 'agregar', 'Limpiar');
187         } elseif ($accion & AI_BAJA) {
188             $fBtnCancelar =& parent::createElement('submit', 'borrar', 'Cancelar');
189         }
190         $grupo = array(
191             &$fBtnAccion,
192             &$fBtnCancelar,
193         );
194         $this->addGroup($grupo, 'botones');
195     }
196     // -X2C
197
198     // +X2C Operation 510
199     /**
200      * Llena un objeto con los datos del formulario.
201      *
202      * @param  mixed &$obj Objeto a llenar con los datos del formulario. Puede ser GrupoSecciones, Servicio o Sistema.
203      *
204      * @return void
205      * @access public
206      */
207     function llenarObjeto(&$obj) // ~X2C
208     {
209         $tipo  = substr(get_class($obj), 3);
210         if ($tipo == 'gruposecciones') {
211             $tipo = 'grupo';
212         }
213         $padre = $tipo.'_padre';
214         // Elementos.
215         $obj->$tipo = $this->getSubmitValue($tipo);
216         $obj->habilitado = $this->getSubmitValue('habilitado');
217         if ($tipo == 'grupo' or $tipo == 'servicio') {
218             $obj->$padre = $this->getSubmitValue($padre);
219             $obj->nombre = $this->getSubmitValue('nombre');
220         }
221         if ($tipo == 'grupo') {
222             $obj->antiguedad    = $this->getSubmitValue('antiguedad');
223             $obj->secciones     = $this->getSubmitValue('secciones');
224             $obj->mostrar_hijos = $this->getSubmitValue('mostrar_hijos');
225         }
226         if ($tipo == 'servicio') {
227             $obj->descripcion     = $this->getSubmitValue('descripcion');
228             $obj->necesita_logueo = $this->getSubmitValue('logueo');
229         }
230         if ($tipo == 'servicio' or $tipo == 'sistema') {
231             $obj->link       = $this->getSubmitValue('link');
232             $obj->link_ayuda = $this->getSubmitValue('link_ayuda');
233             $obj->icono      = $this->getSubmitValue('icono');
234         }
235     }
236     // -X2C
237
238 } // -X2C Class :AI_Form
239
240 ?>