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(); // }}}