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