X-Git-Url: https://git.llucax.com/mecon/ai.git/blobdiff_plain/e1bb3da9b9ddbd651fef0744eb69647f3f576563..61fdd4f7e9019fdd5c4e3b5d9c43ab5d3506a11c:/sistema/www/index.php
diff --git a/sistema/www/index.php b/sistema/www/index.php
index 5b5c97e..4e88fab 100644
--- a/sistema/www/index.php
+++ b/sistema/www/index.php
@@ -29,7 +29,20 @@
// Debug. {{{
require_once 'PEAR.php';
-PEAR::setErrorHandling(PEAR_ERROR_TRIGGER);
+#PEAR::setErrorHandling(PEAR_ERROR_TRIGGER);
+PEAR::setErrorHandling(PEAR_ERROR_RETURN);
+// }}}
+
+// Clase de error HTML (para mostrar errores) TODO - ver si se pasa a meconlib {{{
+class HTML_Error {
+ var $msg = '';
+ function HTML_Error($msg) {
+ $this->msg = $msg;
+ }
+ function toHtml() {
+ return '
' . $this->msg . '
';
+ }
+}
// }}}
// Creo el Marco. {{{
@@ -37,25 +50,7 @@ require_once 'MECON/Marco.php';
$marco = new Marco('../conf/Marco.php');
// }}}
-// Agrego una barra al costado con el listado de objetos (XXX - va a ir en Marco). {{{
-require_once 'HTML/Table.php';
-$layout = new HTML_Table(
- array(
- 'width' => '100%',
- 'align' => 'center',
- 'valign' => 'top',
- 'border' => 0,
- 'cellspacing' => 0,
- 'cellpadding' => 0,
- )
-);
-$layout->setAutoGrow(true);
-$layout->setCellAttributes(0, 0, array('width' => '1'));
-$layout->setCellAttributes(0, 1, array('width' => '10'));
-$layout->setCellContents(0, 1, ' ');
-// }}}
-
-// Averiguo si estoy administrando algún tipo de objeto. {{{
+// Averiguo si estoy administrando algún tipo de objeto. XXX - desafear {{{
$tipo = null;
if (@$_SERVER['PATH_INFO']) {
$tmp = ltrim($_SERVER['PATH_INFO'], '/');
@@ -64,23 +59,26 @@ if (@$_SERVER['PATH_INFO']) {
$clase = "AI_GrupoSecciones";
$require = 'AI/GrupoSecciones.php';
$tabla = 'grupo_secciones';
+ $nombre = "grupo de secciones";
} elseif ($tmp == 'servicio') {
$tipo = $tmp;
$clase = 'AI_Servicio';
$require = 'AI/Servicio.php';
$tabla = $tipo;
+ $nombre = $tipo;
} elseif ($tmp == 'sistema') {
$tipo = $tmp;
$clase = 'AI_Sistema';
$require = 'AI/Sistema.php';
$tabla = $tipo;
+ $nombre = $tipo;
} else { // No hay un objeto válido para administrar.
header('Location: '.$_SERVER['SCRIPT_NAME']);
}
}
// }}}
-// Si tiene un tipo, estamos editando algo. {{{
+// Si tiene un tipo, estamos administrando algun objeto. {{{
if ($tipo) {
// Creo formulario. {{{
@@ -94,7 +92,7 @@ if ($tipo) {
$obj->$tipo = @$_REQUEST['id'];
// }}}
- // Verifico que la acción sea válida. {{{
+ // Verifico que la acción sea válida y si no lo es hago que sea un alta. {{{
switch(@$_REQUEST['accion']) {
case AI_BAJA:
case AI_MODIF:
@@ -105,7 +103,7 @@ if ($tipo) {
}
// }}}
- // Verifico si ya se envio el formulario. {{{
+ // Modifico la acción si ya se envió el formulario. {{{
$botones = $form->getSubmitValue('botones');
if ($boton = @join('', array_keys($botones))) {
$boton = $boton . '_' . strtolower($botones[$boton]);
@@ -152,57 +150,69 @@ if ($tipo) {
}
// }}}
- // Freezo de ser necesario. {{{
+ // Freezo el formulario si se está confirmando. {{{
if (@$a_confirmar) {
$form->freeze();
}
// }}}
- // Me fijo si se cargo un formulalrio y si es válido hago el ABM. {{{
+ // Si los datos del formulario son válidos, hago el ABM. {{{
if ($form->validate()) {
-
switch ($accion) {
case AI_ALTA: // {{{
$form->llenarObjeto($obj);
- $err =& $obj->guardar($db);
+ $err =& $obj->guardar($db, true);
if (PEAR::isError($err)) {
- die($err->getMessage());
+ if (DB::isError($err) and $err->getCode() == DB_ERROR_ALREADY_EXISTS) {
+ $error = new HTML_Error("Ya existe un $nombre con el identificador "
+ . $obj->$tipo);
+ } else {
+ $error = new HTML_Error('Error no esperado: ' . $err->getMessage());
+ }
+ $marco->addBody($error);
+ } else {
+ header(sprintf('Location: %s?accion=%d&id=%d',
+ $tipo, AI_MODIF, $obj->$tipo));
+ exit;
}
- header(sprintf('Location: %s?accion=%d&id=%d',
- $tipo, AI_MODIF, $obj->$tipo));
- exit;
break;
- // }}}
+ // }}}
case AI_BAJA: // {{{
if (!@$a_confirmar) {
$form->llenarObjeto($obj);
$err =& $obj->borrar($db);
if (PEAR::isError($err)) {
- die($err->getMessage());
+ $error = new HTML_Error('Error no esperado: ' . $err->getMessage());
+ $marco->addBody($error);
+ } else {
+ header("Location: $tipo");
+ exit;
}
- header("Location: $tipo");
- exit;
}
break;
- // }}}
+ // }}}
case AI_MODIF: // {{{
if (!@$cancelado) {
$form->llenarObjeto($obj);
$err =& $obj->guardar($db);
if (PEAR::isError($err)) {
- die($err->getMessage());
+ $error = new HTML_Error('Error no esperado: ' . $err->getMessage());
+ $marco->addBody($error);
+ } else {
+ header(sprintf('Location: %s?accion=%d&id=%d',
+ $tipo, AI_MODIF, $obj->$tipo));
+ exit;
}
- header(sprintf('Location: %s?accion=%d&id=%d',
- $tipo, AI_MODIF, $obj->$tipo));
- exit;
}
break;
- // }}}
+ // }}}
}
}
// }}}
- // Creo el árbol con el tipo de objeto que manejo. {{{
+ // Agrego el menu y el formulario a la página. {{{
+
+ // Creo el árbol con el tipo de objeto que manejo y lo agrego a la página. {{{
require_once 'MECON/HTML/Arbol/ArbolDB.php';
$dbdata = array(
'db' => &$db,
@@ -216,16 +226,18 @@ if ($tipo) {
$dbdata['id_padre'] = $tipo . '_padre';
}
$arbol = new HTML_ArbolDB($dbdata, '/MECON/images/arbol_noticias.gif');
+ $marco->addMenuVertical($arbol);
// }}}
- // 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);
+ // Agrego el formulario a la página. {{{
+ $marco->addBody($form);
// }}}
+
+ // }}}
+
// }}}
-// No se está editando nada, agrego al cuerpo de la página la pantalla de entrada {{{
+// No se está editando nada, agrego la imágen de bienvenida a la página. {{{
} else {
require_once 'HTML/Image.php';
$marco->setEspacios(false);
@@ -233,7 +245,7 @@ if ($tipo) {
}
// }}}
-// Dibujo. {{{
+// Muestro la página. {{{
$marco->display();
// }}}