2 // vim: set expandtab tabstop=4 shiftwidth=4 foldmethod=marker:
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: vie jun 27 17:08:18 ART 2003 |
24 // | Autor: Leandro Lucarella <llucar@mecon.gov.ar> |
25 // +--------------------------------------------------------------------+
31 require_once 'PEAR.php';
32 PEAR::setErrorHandling(PEAR_ERROR_TRIGGER);
36 require_once 'MECON/Marco.php';
37 $marco = new Marco('../conf/Marco.php');
40 // Agrego una barra al costado con el listado de objetos (XXX - va a ir en Marco). {{{
41 require_once 'HTML/Table.php';
42 $layout = new HTML_Table(
52 $layout->setAutoGrow(true);
53 $layout->setCellAttributes(0, 0, array('width' => '1'));
54 $layout->setCellAttributes(0, 1, array('width' => '10'));
55 $layout->setCellContents(0, 1, ' ');
58 // Averiguo si estoy administrando algún tipo de objeto. {{{
60 if (@$_SERVER['PATH_INFO']) {
61 $tmp = ltrim($_SERVER['PATH_INFO'], '/');
62 if ($tmp == 'grupo') {
64 $clase = "AI_GrupoSecciones";
65 $require = 'AI/GrupoSecciones.php';
66 $tabla = 'grupo_secciones';
67 } elseif ($tmp == 'servicio') {
69 $clase = 'AI_Servicio';
70 $require = 'AI/Servicio.php';
72 } elseif ($tmp == 'sistema') {
74 $clase = 'AI_Sistema';
75 $require = 'AI/Sistema.php';
77 } else { // No hay un objeto válido para administrar.
78 header('Location: '.$_SERVER['SCRIPT_NAME']);
83 // Si tiene un tipo, estamos editando algo. {{{
86 // Creo formulario. {{{
87 require_once 'AI/Form.php';
91 // Creo un objeto y seteo su id. {{{
92 require_once $require;
94 $obj->$tipo = @$_REQUEST['id'];
97 // Verifico que la acción sea válida. {{{
98 switch(@$_REQUEST['accion']) {
101 $accion = $_REQUEST['accion'];
108 // Verifico si ya se envio el formulario. {{{
109 $botones = $form->getSubmitValue('botones');
110 if ($boton = @join('', array_keys($botones))) {
111 $boton = $boton . '_' . strtolower($botones[$boton]);
114 case 'aceptar_agregar':
117 case 'modificar_borrar':
118 // Viene de modificar, hay que confirmar primero.
120 case 'aceptar_borrar':
122 $obj->$tipo = $form->getSubmitValue($tipo);
124 case 'borrar_cancelar':
125 // Indico que viene de un formulario cancelado.
127 case 'aceptar_modificar':
129 $obj->$tipo = $form->getSubmitValue($tipo);
134 // Creo la base de datos. {{{
135 require_once 'AI/DB.php';
136 $db =& AI_DB::connect('../conf/DB.ini');
137 if (DB::isError($db)) {
138 die($db->getMessage());
142 // Inicio el formulario, cargando datos de ser necesario. {{{
143 if ($accion & (AI_BAJA | AI_MODIF)) {
144 $err =& $obj->cargar($db);
145 if (PEAR::isError($err)) {
146 die($err->getMessage());
148 $form->iniciar($obj, $accion);
151 $form->iniciar($obj);
155 // Freezo de ser necesario. {{{
161 // Me fijo si se cargo un formulalrio y si es válido hago el ABM. {{{
162 if ($form->validate()) {
166 $form->llenarObjeto($obj);
167 $err =& $obj->guardar($db);
168 if (PEAR::isError($err)) {
169 die($err->getMessage());
171 header(sprintf('Location: %s?accion=%d&id=%d',
172 $tipo, AI_MODIF, $obj->$tipo));
177 if (!@$a_confirmar) {
178 $form->llenarObjeto($obj);
179 $err =& $obj->borrar($db);
180 if (PEAR::isError($err)) {
181 die($err->getMessage());
183 header("Location: $tipo");
188 case AI_MODIF: // {{{
190 $form->llenarObjeto($obj);
191 $err =& $obj->guardar($db);
192 if (PEAR::isError($err)) {
193 die($err->getMessage());
195 header(sprintf('Location: %s?accion=%d&id=%d',
196 $tipo, AI_MODIF, $obj->$tipo));
205 // Creo el árbol con el tipo de objeto que manejo. {{{
206 require_once 'MECON/HTML/Arbol/ArbolDB.php';
212 'prepend_link' => $tipo.'?accion='.AI_MODIF.'&id='
214 if ($tipo == 'grupo' or $tipo == 'servicio') {
215 $dbdata['nombre'] = 'nombre';
216 $dbdata['id_padre'] = $tipo . '_padre';
218 $arbol = new HTML_ArbolDB($dbdata, '/MECON/images/arbol_noticias.gif');
221 // Agrego al cuerpo de la página las cosas que voy a dibujar. {{{
222 $layout->setCellContents(0, 0, $arbol);
223 $layout->setCellContents(0, 2, $form);
224 $marco->addBody($layout);
228 // No se está editando nada, agrego al cuerpo de la página la pantalla de entrada {{{
230 require_once 'HTML/Image.php';
231 $marco->setEspacios(false);
232 $marco->addBody(new HTML_Image('images/home', 'Adminitrador de Intranet'));