]> git.llucax.com Git - mecon/ai.git/blobdiff - sistema/www/index.php
- Se ordenan la mayoría de los resultados de las DB.
[mecon/ai.git] / sistema / www / index.php
index 5b5c97e8fd8e8c2f417d024a4a79fb45395e2bd1..50218683cd26f203cc3b56ef7d2f38e5de2d71a4 100644 (file)
 // $Id$
 //
 
+require_once 'MECON/HTML/Error.php';
+
 // Debug. {{{
 require_once 'PEAR.php';
-PEAR::setErrorHandling(PEAR_ERROR_TRIGGER);
+#PEAR::setErrorHandling(PEAR_ERROR_TRIGGER);
+PEAR::setErrorHandling(PEAR_ERROR_RETURN);
 // }}}
 
 // Creo el Marco. {{{
@@ -37,25 +40,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 +49,29 @@ if (@$_SERVER['PATH_INFO']) {
         $clase   = "AI_GrupoSecciones";
         $require = 'AI/GrupoSecciones.php';
         $tabla   = 'grupo_secciones';
+        $nombre  = "grupo de secciones";
+        $arbol   = 'NOTICIAS';
     } elseif ($tmp == 'servicio') {
         $tipo    = $tmp;
         $clase   = 'AI_Servicio';
         $require = 'AI/Servicio.php';
         $tabla   = $tipo;
+        $nombre  = $tipo;
+        $arbol   = 'SERVICIOS';
     } elseif ($tmp == 'sistema') {
         $tipo    = $tmp;
         $clase   = 'AI_Sistema';
         $require = 'AI/Sistema.php';
         $tabla   = $tipo;
+        $nombre  = $tipo;
+        $arbol   = 'SISTEMAS';
     } 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 +85,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 +96,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,80 +143,103 @@ 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 MECON_HTML_Error("Ya existe un $nombre con el identificador "
+                            . $obj->$tipo);
+                    } else {
+                        $error = new MECON_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 MECON_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 MECON_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,
         'tabla'         => $tabla,
         'id'            => $tipo,
-        'nombre'        => $tipo,
-        'prepend_link'  => $tipo.'?accion='.AI_MODIF.'&id='
+        'nombre'        => 'nombre',
+        'prepend_link'  => $tipo.'?accion='.AI_MODIF.'&id=',
+        'order'         => 'asc',
     );
     if ($tipo == 'grupo' or $tipo == 'servicio') {
-        $dbdata['nombre']   = 'nombre';
         $dbdata['id_padre'] = $tipo . '_padre';
+    } elseif ($tipo == 'sistema') { // FIXME - horrible!!!
+        $dbdata =
+            array(
+                'tabla'         => "intranet.$tabla as A, samurai.sistema as S",
+                'id'            => "A.$tipo",
+                'nombre'        => 'S.nombre_sistema',
+                'where'         => 'S.id_sistema = A.sistema AND S.estado = 1',
+            )
+            + $dbdata;
     }
-    $arbol = new HTML_ArbolDB($dbdata, '/MECON/images/arbol_noticias.gif');
+    $arbol = new HTML_ArbolDB($dbdata, $arbol);
+    $marco->addMenuVertical($arbol);
+    // }}}
+
+    // Agrego el formulario a la página. {{{
+    $marco->addBody($form);
     // }}}
 
-    // 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 {{{
+// 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 +247,7 @@ if ($tipo) {
 }
 // }}}
 
-// Dibujo. {{{
+// Muestro la página. {{{
 $marco->display();
 // }}}