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. |
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. |
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. |
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 // +--------------------------------------------------------------------+
30 require_once 'MECON/HTML/QuickForm.php';
31 require_once 'general.php';
33 // Definicion de acciones.
36 define('AI_MODIF', 4);
39 * Formularios para el Administrador de Intranet.
44 class AI_Form extends MECON_HTML_QuickForm {
47 * Construye un formulario para el objecto especificado.
49 * @param object &$obj Objeto con el cual rellenar el formulario. Puede
50 * ser GrupoSecciones, Servicio o Sistema.
51 * @param int $accion Accion que realizará el formulario a crear.
52 * Puede ser AI_ALTA, AI_BAJA o AI_MODIFICACION.
53 * @param DB $db Base de datos a usar.
58 function iniciar(&$obj, $accion, $db)
60 $tipo = substr(get_class($obj), 3);
61 $s_tipo = ucfirst($tipo);
62 if ($tipo == 'gruposecciones') {
64 $s_tipo = 'Grupo de Secciones';
66 $padre = $tipo.'_padre';
72 $s_accion = 'Modificar';
76 $s_accion = 'Agregar';
78 // Construyo con el padre y seteos generales.
79 $this->renderer->updateAttributes(array('width' => '400'));
80 $this->addElement('header','cabecera', $s_accion . ' ' . $s_tipo);
83 if ($tipo == 'sistema') {
84 require_once 'SAMURAI/Sistema.php';
85 $sistemas = array('' => '--');
86 if ($accion & AI_ALTA) {
87 // Si es un alta, tomo una lista de sistemas aún no agregados.
88 $sistemas += AI_Sistema::getSistemasArray($db);
90 // Si no, tomo una lista completa de sistemas.
91 $sistemas += SAMURAI_Sistema::getArraySistemas($db);
93 $fId =& $this->addElement('select', $tipo, 'Sistema', $sistemas);
94 $this->addRule($tipo, 'Debe ingresar un sistema.', 'required');
96 if ($accion & (AI_BAJA | AI_MODIF)) {
97 if ($tipo == 'sistema') {
98 $fId->setSelected($obj->$tipo);
100 $fId =& $this->addElement('text', $tipo, 'Identificador');
101 $fId->setValue($obj->$tipo);
106 if ($tipo == 'grupo' or $tipo == 'servicio') {
107 require_once 'AI/Arbol.php';
108 $arbol = new AI_Arbol($obj, $db, true);
109 $tipos = array('' => '--', '0' => 'Página Principal')
111 // Saco el elemento actual si hay uno cargado (no puede ser padre de si mismo).
112 if ($accion & (AI_BAJA | AI_MODIF)) {
113 unset($tipos[$obj->$tipo]);
115 $fPadre =& $this->addElement('select', $padre, 'Padre', $tipos);
116 $fNombre =& $this->addElement('text', 'nombre', 'Nombre');
118 $this->addRule('nombre', 'Debe ingresar un nombre.', 'required');
119 $this->addRule($padre, 'Debe ingresar un padre.', 'required');
120 $this->addRule($padre, 'El padre debe ser un número natural.',
123 if ($accion & (AI_BAJA | AI_MODIF)) {
124 $fPadre->setSelected($obj->$padre);
125 $fNombre->setValue($obj->nombre);
128 // Antigüedad / Secciones / Mostrar Hijos.
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, (int)$obj->$tipo),
134 array('multiple' => 'multiple', 'size' => 8));
135 $fMostrarHijos =& $this->addElement('checkbox', 'mostrar_hijos', 'Mostrar hijos');
137 $this->addRule('antiguedad', 'La antigüedad debe ser un número natural.',
140 if ($accion & (AI_BAJA | AI_MODIF)) {
141 $fAntiguedad->setSelected($obj->antiguedad);
142 $fSecciones->setSelected($obj->secciones);
143 $fMostrarHijos->setChecked($obj->mostrar_hijos);
146 // Descripción / Necesita Logueo.
147 if ($tipo == 'servicio') {
148 $fDescripcion =& $this->addElement('text', 'descripcion', 'Descripción');
149 $fLogueo =& $this->addElement('checkbox','logueo', 'Necesita login');
150 $fVentana =& $this->addElement('checkbox','ventana', 'Abrir en ventana nueva');
152 $this->addRule('descripcion', 'Debe ingresar una descripción.', 'required');
154 if ($accion & (AI_BAJA | AI_MODIF)) {
155 $fDescripcion->setValue($obj->descripcion);
156 $fLogueo->setChecked($obj->necesita_logueo);
157 $fVentana->setChecked($obj->ventana_nueva);
160 // Link / Link Ayuda.
161 if ($tipo == 'servicio' or $tipo == 'sistema') {
162 $fLink =& $this->addElement('text', 'link', 'Enlace');
163 $fLinkAyuda =& $this->addElement('text', 'link_ayuda', 'Enlace de la ayuda');
164 //$fIcono =& $this->addElement('text', 'icono', 'Ícono');
165 $fIcono =& $this->addElement('select', 'icono', 'Ícono',
166 listarArchivos('/var/www/sistemas/intranet/sistema/www/images', $tipo . '_', '\.gif'));
168 if ($accion & (AI_BAJA | AI_MODIF)) {
169 $fLink->setValue($obj->link);
170 $fLinkAyuda->setValue($obj->link_ayuda);
171 $fIcono->setValue($obj->icono);
174 if ($tipo == 'sistema') {
175 $this->addRule('link', 'Debe ingresar un nombre.', 'required');
176 $this->addRule('icono', 'Debe ingresar un ícono.', 'required');
180 if ($tipo == 'sistema') {
181 $fTipo =& $this->addElement('checkbox', 'tipo', 'Usa EmbPerl');
183 if ($accion & (AI_BAJA | AI_MODIF)) {
184 $fTipo->setChecked($obj->tipo == 'embperl');
188 $fHabilitado =& $this->addElement('checkbox','habilitado', 'Está habilitado',
189 '', array('checked' => 'checked'));
190 if ($accion & (AI_BAJA | AI_MODIF)) { // Carga datos.
191 $fHabilitado->setChecked($obj->habilitado);
194 $fBtnAccion =& parent::createElement('submit', 'aceptar' , $s_accion);
195 if ($accion & AI_MODIF) {
196 $fBtnCancelar =& parent::createElement('submit', 'modificar' , 'Borrar');
197 } elseif ($accion & AI_ALTA) {
198 $fBtnCancelar =& parent::createElement('reset', 'agregar', 'Limpiar');
199 } elseif ($accion & AI_BAJA) {
200 $fBtnCancelar =& parent::createElement('submit', 'borrar', 'Cancelar');
206 $this->addGroup($grupo, 'botones');
210 * Llena un objeto con los datos del formulario.
212 * @param mixed &$obj Objeto a llenar con los datos del formulario.
213 * Puede ser GrupoSecciones, Servicio o Sistema.
218 function llenarObjeto(&$obj)
220 $tipo = substr(get_class($obj), 3);
221 if ($tipo == 'gruposecciones') {
224 $padre = $tipo.'_padre';
226 $obj->$tipo = $this->getSubmitValue($tipo);
227 $obj->habilitado = $this->getSubmitValue('habilitado');
228 if ($tipo == 'grupo' or $tipo == 'servicio') {
229 $obj->$padre = $this->getSubmitValue($padre);
230 $obj->nombre = $this->getSubmitValue('nombre');
232 if ($tipo == 'grupo') {
233 $obj->antiguedad = $this->getSubmitValue('antiguedad');
234 $obj->secciones = $this->getSubmitValue('secciones');
235 $obj->mostrar_hijos = $this->getSubmitValue('mostrar_hijos');
237 if ($tipo == 'servicio') {
238 $obj->descripcion = $this->getSubmitValue('descripcion');
239 $obj->necesita_logueo = $this->getSubmitValue('logueo');
240 $obj->ventana_nueva = $this->getSubmitValue('ventana');
242 if ($tipo == 'sistema') {
243 $obj->tipo = $this->getSubmitValue('tipo') ? 'embperl' : 'php';
245 if ($tipo == 'servicio' or $tipo == 'sistema') {
246 $obj->link = $this->getSubmitValue('link');
247 $obj->link_ayuda = $this->getSubmitValue('link_ayuda');
248 $obj->icono = $this->getSubmitValue('icono');