]> git.llucax.com Git - mecon/ai.git/blob - sistema/www/index.php
Se completa la primera alfa. Ahora se hace todo desde el index.php.
[mecon/ai.git] / sistema / www / index.php
1 <?php
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.                                           |
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: vie jun 27 17:08:18 ART 2003                               |
24 // | Autor:  Leandro Lucarella <llucar@mecon.gov.ar>                    |
25 // +--------------------------------------------------------------------+
26 //
27 // $Id$
28 //
29
30 // Requires generales. {{{
31 require_once 'MECON/HTML/Arbol/ArbolDB.php';
32 require_once 'AIForm.php';
33 // }}}
34
35 // Averiguo si estoy administrando algún tipo de objeto. {{{
36 $tipo = null;
37 if (@$_SERVER['PATH_INFO']) {
38     $tmp = ltrim($_SERVER['PATH_INFO'], '/');
39     if ($tmp == 'grupo') {
40         $tipo  = $tmp;
41         $clase = 'GrupoSecciones';
42         $tabla = 'grupo_secciones';
43     } elseif ($tmp == 'servicio') {
44         $tipo  = $tmp;
45         $clase = 'Servicio';
46         $tabla = $tipo;
47     } elseif ($tmp == 'sistema') {
48         $tipo  = $tmp;
49         $clase = 'Sistema';
50         $tabla = $tipo;
51     } else { // No hay un objeto válido para administrar.
52         header('Location: '.$_SERVER['SCRIPT_NAME']);
53     }
54 }
55 // }}}
56
57 // Si tiene una clase, estamos editando algo. {{{
58 if ($tipo) {
59     // Creo el árbol con los servicios. {{{
60     $dbdata = array(
61         'db'            => &$DB,
62         'tabla'         => $tabla,
63         'id'            => $tipo,
64         'nombre'        => $tipo,
65         'prepend_link'  => $tipo . '?accion='.MODIFICACION.'&id='
66     );
67     if ($tipo == 'grupo' or $tipo == 'servicio') {
68         $dbdata['nombre']   = 'nombre';
69         $dbdata['id_padre'] = $tipo . '_padre';
70     }
71     $arbol = new HTML_ArbolDB($dbdata, '/MECON/images/arbol_noticias.gif');
72     // }}}
73
74     // Creo un objeto y seteo su id. {{{
75     require_once "$clase.php";
76     $obj = new $clase;
77     $obj->$tipo = @$_REQUEST['id'];
78     // }}}
79
80     // Creo formulario. {{{
81     $form =& new AIForm;
82     // }}}
83
84     // Verifico que la acción sea válida. {{{
85     switch(@$_REQUEST['accion']) {
86         case BAJA:
87         case MODIFICACION:
88             $accion = $_REQUEST['accion'];
89             break;
90         default:
91             $accion = ALTA;
92     }
93     // }}}
94
95     // Verifico si ya se envio el formulario. {{{
96     $botones = $form->getSubmitValue('botones');
97     if ($boton = @join('', array_keys($botones))) {
98         $boton = $boton . '_' . strtolower($botones[$boton]);
99     }
100     switch ($boton) {
101         case 'aceptar_agregar':
102             $accion = ALTA;
103             break;
104         case 'modificar_borrar':
105             // Viene de modificar,  hay que confirmar primero.
106             $a_confirmar = true;
107         case 'aceptar_borrar':
108             $accion = BAJA;
109             $obj->$tipo = $form->getSubmitValue($tipo);
110             break;
111         case 'borrar_cancelar':
112             // Indico que viene de un formulario cancelado.
113             $cancelado = true;
114         case 'aceptar_modificar':
115             $accion = MODIFICACION;
116             $obj->$tipo = $form->getSubmitValue($tipo);
117             break;
118     }
119     // }}}
120
121     // Inicio el formulario, cargando datos de ser necesario. {{{
122     if ($accion & (BAJA | MODIFICACION)) {
123         $err =& $obj->cargar($DB);
124         if (PEAR::isError($err)) {
125             die($err->getMessage());
126         }
127         $form->iniciar($obj, $accion);
128     } else {
129         $accion = ALTA;
130         $form->iniciar($obj);
131     }
132     // }}}
133
134     // Freezo de ser necesario. {{{
135     if (@$a_confirmar) {
136         $form->freeze();
137     }
138     // }}}
139
140     // Me fijo si se cargo un formulalrio y si es válido. {{{
141     if ($form->validate()) {
142         switch ($accion) {
143             case ALTA: // {{{
144                 $form->llenarObjeto($obj);
145                 $err =& $obj->guardar($DB);
146                 if (PEAR::isError($err)) {
147                     die($err->getMessage());
148                 }
149                 header(sprintf('Location: %s?accion=%d&id=%d',
150                     $tipo, MODIFICACION, $obj->$tipo));
151                 exit;
152                 break;
153                 // }}}
154             case BAJA: // {{{
155                 if (!@$a_confirmar) {
156                     $form->llenarObjeto($obj);
157                     $err =& $obj->borrar($DB);
158                     if (PEAR::isError($err)) {
159                         die($err->getMessage());
160                     }
161                     header("Location: $tipo");
162                     exit;
163                 }
164                 break;
165                 // }}}
166             case MODIFICACION: // {{{
167                 if (!@$cancelado) {
168                     $form->llenarObjeto($obj);
169                     $err =& $obj->guardar($DB);
170                     if (PEAR::isError($err)) {
171                         die($err->getMessage());
172                     }
173                     header(sprintf('Location: %s?accion=%d&id=%d',
174                         $tipo, MODIFICACION, $obj->$tipo));
175                     exit;
176                 }
177                 break;
178                 // }}}
179         }
180     }
181     // }}}
182
183     // Agrego al cuerpo de la página las cosas que voy a dibujar. {{{
184     $LAYOUT->setCellContents(0, 0, $arbol);
185     $LAYOUT->setCellContents(0, 2, $form);
186     $MARCO->addBody($LAYOUT);
187     // }}}
188 // }}}
189
190 // No se está editando nada, agrego al cuerpo de la página la pantalla de entrada {{{
191 } else {
192     require_once 'HTML/Image.php';
193     $MARCO->setEspacios(false);
194     $MARCO->addBody(new HTML_Image('images/home', 'Adminitrador de Intranet'));
195 }
196 // }}}
197
198 // Dibujo. {{{
199 $MARCO->display();
200 // }}}
201
202 ?>