| // +--------------------------------------------------------------------+ // // $Id$ // // Requires generales. {{{ require_once 'MECON/HTML/Arbol/ArbolDB.php'; require_once 'AIForm.php'; // }}} // Averiguo si estoy administrando algún tipo de objeto. {{{ $tipo = null; if (@$_SERVER['PATH_INFO']) { $tmp = ltrim($_SERVER['PATH_INFO'], '/'); if ($tmp == 'grupo') { $tipo = $tmp; $clase = 'GrupoSecciones'; $tabla = 'grupo_secciones'; } elseif ($tmp == 'servicio') { $tipo = $tmp; $clase = 'Servicio'; $tabla = $tipo; } elseif ($tmp == 'sistema') { $tipo = $tmp; $clase = 'Sistema'; $tabla = $tipo; } else { // No hay un objeto válido para administrar. header('Location: '.$_SERVER['SCRIPT_NAME']); } } // }}} // Si tiene una clase, estamos editando algo. {{{ if ($tipo) { // Creo el árbol con los servicios. {{{ $dbdata = array( 'db' => &$DB, 'tabla' => $tabla, 'id' => $tipo, 'nombre' => $tipo, 'prepend_link' => $tipo . '?accion='.MODIFICACION.'&id=' ); if ($tipo == 'grupo' or $tipo == 'servicio') { $dbdata['nombre'] = 'nombre'; $dbdata['id_padre'] = $tipo . '_padre'; } $arbol = new HTML_ArbolDB($dbdata, '/MECON/images/arbol_noticias.gif'); // }}} // Creo un objeto y seteo su id. {{{ require_once "$clase.php"; $obj = new $clase; $obj->$tipo = @$_REQUEST['id']; // }}} // Creo formulario. {{{ $form =& new AIForm; // }}} // Verifico que la acción sea válida. {{{ switch(@$_REQUEST['accion']) { case BAJA: case MODIFICACION: $accion = $_REQUEST['accion']; break; default: $accion = ALTA; } // }}} // Verifico si ya se envio el formulario. {{{ $botones = $form->getSubmitValue('botones'); if ($boton = @join('', array_keys($botones))) { $boton = $boton . '_' . strtolower($botones[$boton]); } switch ($boton) { case 'aceptar_agregar': $accion = ALTA; break; case 'modificar_borrar': // Viene de modificar, hay que confirmar primero. $a_confirmar = true; case 'aceptar_borrar': $accion = BAJA; $obj->$tipo = $form->getSubmitValue($tipo); break; case 'borrar_cancelar': // Indico que viene de un formulario cancelado. $cancelado = true; case 'aceptar_modificar': $accion = MODIFICACION; $obj->$tipo = $form->getSubmitValue($tipo); break; } // }}} // Inicio el formulario, cargando datos de ser necesario. {{{ if ($accion & (BAJA | MODIFICACION)) { $err =& $obj->cargar($DB); if (PEAR::isError($err)) { die($err->getMessage()); } $form->iniciar($obj, $accion); } else { $accion = ALTA; $form->iniciar($obj); } // }}} // Freezo de ser necesario. {{{ if (@$a_confirmar) { $form->freeze(); } // }}} // Me fijo si se cargo un formulalrio y si es válido. {{{ if ($form->validate()) { switch ($accion) { case ALTA: // {{{ $form->llenarObjeto($obj); $err =& $obj->guardar($DB); if (PEAR::isError($err)) { die($err->getMessage()); } header(sprintf('Location: %s?accion=%d&id=%d', $tipo, MODIFICACION, $obj->$tipo)); exit; break; // }}} case BAJA: // {{{ if (!@$a_confirmar) { $form->llenarObjeto($obj); $err =& $obj->borrar($DB); if (PEAR::isError($err)) { die($err->getMessage()); } header("Location: $tipo"); exit; } break; // }}} case MODIFICACION: // {{{ if (!@$cancelado) { $form->llenarObjeto($obj); $err =& $obj->guardar($DB); if (PEAR::isError($err)) { die($err->getMessage()); } header(sprintf('Location: %s?accion=%d&id=%d', $tipo, MODIFICACION, $obj->$tipo)); exit; } break; // }}} } } // }}} // Agrego al cuerpo de la página las cosas que voy a dibujar. {{{ $LAYOUT->setCellContents(0, 0, $arbol); $LAYOUT->setCellContents(0, 2, $form); $MARCO->addBody($LAYOUT); // }}} // }}} // No se está editando nada, agrego al cuerpo de la página la pantalla de entrada {{{ } else { require_once 'HTML/Image.php'; $MARCO->setEspacios(false); $MARCO->addBody(new HTML_Image('images/home', 'Adminitrador de Intranet')); } // }}} // Dibujo. {{{ $MARCO->display(); // }}} ?>