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);
33 PEAR::setErrorHandling(PEAR_ERROR_RETURN);
36 // Clase de error HTML (para mostrar errores) TODO - ver si se pasa a meconlib {{{
39 function HTML_Error($msg) {
43 return '<DIV style="font-size: 11px; text-align: center; color: red">' . $this->msg . '</DIV>';
49 require_once 'MECON/Marco.php';
50 $marco = new Marco('../conf/Marco.php');
53 // Averiguo si estoy administrando algún tipo de objeto. XXX - desafear {{{
55 if (@$_SERVER['PATH_INFO']) {
56 $tmp = ltrim($_SERVER['PATH_INFO'], '/');
57 if ($tmp == 'grupo') {
59 $clase = "AI_GrupoSecciones";
60 $require = 'AI/GrupoSecciones.php';
61 $tabla = 'grupo_secciones';
62 $nombre = "grupo de secciones";
63 } elseif ($tmp == 'servicio') {
65 $clase = 'AI_Servicio';
66 $require = 'AI/Servicio.php';
69 } elseif ($tmp == 'sistema') {
71 $clase = 'AI_Sistema';
72 $require = 'AI/Sistema.php';
75 } else { // No hay un objeto válido para administrar.
76 header('Location: '.$_SERVER['SCRIPT_NAME']);
81 // Si tiene un tipo, estamos administrando algun objeto. {{{
84 // Creo formulario. {{{
85 require_once 'AI/Form.php';
89 // Creo un objeto y seteo su id. {{{
90 require_once $require;
92 $obj->$tipo = @$_REQUEST['id'];
95 // Verifico que la acción sea válida y si no lo es hago que sea un alta. {{{
96 switch(@$_REQUEST['accion']) {
99 $accion = $_REQUEST['accion'];
106 // Modifico la acción si ya se envió el formulario. {{{
107 $botones = $form->getSubmitValue('botones');
108 if ($boton = @join('', array_keys($botones))) {
109 $boton = $boton . '_' . strtolower($botones[$boton]);
112 case 'aceptar_agregar':
115 case 'modificar_borrar':
116 // Viene de modificar, hay que confirmar primero.
118 case 'aceptar_borrar':
120 $obj->$tipo = $form->getSubmitValue($tipo);
122 case 'borrar_cancelar':
123 // Indico que viene de un formulario cancelado.
125 case 'aceptar_modificar':
127 $obj->$tipo = $form->getSubmitValue($tipo);
132 // Creo la base de datos. {{{
133 require_once 'AI/DB.php';
134 $db =& AI_DB::connect('../conf/DB.ini');
135 if (DB::isError($db)) {
136 die($db->getMessage());
140 // Inicio el formulario, cargando datos de ser necesario. {{{
141 if ($accion & (AI_BAJA | AI_MODIF)) {
142 $err =& $obj->cargar($db);
143 if (PEAR::isError($err)) {
144 die($err->getMessage());
146 $form->iniciar($obj, $accion);
149 $form->iniciar($obj);
153 // Freezo el formulario si se está confirmando. {{{
159 // Si los datos del formulario son válidos, hago el ABM. {{{
160 if ($form->validate()) {
163 $form->llenarObjeto($obj);
164 $err =& $obj->guardar($db, true);
165 if (PEAR::isError($err)) {
166 if (DB::isError($err) and $err->getCode() == DB_ERROR_ALREADY_EXISTS) {
167 $error = new HTML_Error("Ya existe un $nombre con el identificador "
170 $error = new HTML_Error('Error no esperado: ' . $err->getMessage());
172 $marco->addBody($error);
174 header(sprintf('Location: %s?accion=%d&id=%d',
175 $tipo, AI_MODIF, $obj->$tipo));
181 if (!@$a_confirmar) {
182 $form->llenarObjeto($obj);
183 $err =& $obj->borrar($db);
184 if (PEAR::isError($err)) {
185 $error = new HTML_Error('Error no esperado: ' . $err->getMessage());
186 $marco->addBody($error);
188 header("Location: $tipo");
194 case AI_MODIF: // {{{
196 $form->llenarObjeto($obj);
197 $err =& $obj->guardar($db);
198 if (PEAR::isError($err)) {
199 $error = new HTML_Error('Error no esperado: ' . $err->getMessage());
200 $marco->addBody($error);
202 header(sprintf('Location: %s?accion=%d&id=%d',
203 $tipo, AI_MODIF, $obj->$tipo));
213 // Agrego el menu y el formulario a la página. {{{
215 // Creo el árbol con el tipo de objeto que manejo y lo agrego a la página. {{{
216 require_once 'MECON/HTML/Arbol/ArbolDB.php';
222 'prepend_link' => $tipo.'?accion='.AI_MODIF.'&id='
224 if ($tipo == 'grupo' or $tipo == 'servicio') {
225 $dbdata['nombre'] = 'nombre';
226 $dbdata['id_padre'] = $tipo . '_padre';
228 $arbol = new HTML_ArbolDB($dbdata, '/MECON/images/arbol_noticias.gif');
229 $marco->addMenuVertical($arbol);
232 // Agrego el formulario a la página. {{{
233 $marco->addBody($form);
240 // No se está editando nada, agrego la imágen de bienvenida a la página. {{{
242 require_once 'HTML/Image.php';
243 $marco->setEspacios(false);
244 $marco->addBody(new HTML_Image('images/home', 'Adminitrador de Intranet'));
248 // Muestro la página. {{{