]> git.llucax.com Git - mecon/yatta.git/commitdiff
Interfaz de usuario casi completa.
authorMartín Marrese <marrese@gmail.com>
Wed, 3 Dec 2003 22:20:08 +0000 (22:20 +0000)
committerMartín Marrese <marrese@gmail.com>
Wed, 3 Dec 2003 22:20:08 +0000 (22:20 +0000)
lib/YATTA/Archivo.php [new file with mode: 0644]
lib/YATTA/Proceso.php
script/generacion_base.sql
sistema/www/archivos.php
sistema/www/images/estado_1.gif
sistema/www/procesos.php
test/BandasHorarias_Resumen.pdf [moved from test/mmarre@mecon/BandasHorarias_Resumen.pdf with 100% similarity]
test/mmarre@mecon/Borrar.pdf [deleted file]

diff --git a/lib/YATTA/Archivo.php b/lib/YATTA/Archivo.php
new file mode 100644 (file)
index 0000000..318cdee
--- /dev/null
@@ -0,0 +1,245 @@
+<?php /* vim: set binary expandtab tabstop=4 shiftwidth=4 textwidth=80:
+-------------------------------------------------------------------------------
+                             Ministerio de Economía
+                                    YATTA!
+-------------------------------------------------------------------------------
+This file is part of YATTA!.
+
+YATTA! is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 2 of the License, or (at your option)
+any later version.
+
+YATTA! is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+You should have received a copy of the GNU General Public License; if not,
+write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+Boston, MA  02111-1307  USA
+-------------------------------------------------------------------------------
+Creado: mié dic  3 13:11:15 ART 2003
+Autor:  Martin Marrese <mmarre@mecon.gov.ar>
+-------------------------------------------------------------------------------
+$Id$
+-----------------------------------------------------------------------------*/
+
+require_once 'MECON/DBO.php';
+require_once 'PEAR.php';
+
+
+define ('PATH', '/var/www/sistemas/yatta/test/');
+
+/**
+ * Clase para el manejo de los archivos.
+ *
+ * @access public
+ */
+class YATTA_Archivo extends MECON_DBO {
+
+    /**
+     * Identificador del proceso.
+     *
+     * @var    int $id
+     * @access public
+     */
+    var $id = null;
+
+    /**
+     * Identificador del sistema en el cual se lanzo el proceso.
+     *
+     * @var    int $id_sistema
+     * @access public
+     */
+    var $id_sistema = null;
+
+    /**
+     * Nombre del sistema al que pertenece.
+     *
+     * @var string $nombre_sistema
+     * @access public
+     */
+    var $nombre_sistema = null;
+
+    /**
+     * Descripcion del proceso.
+     * 
+     * @var string $descripcion
+     * @access public
+     */
+    var $descripcion = null;
+
+    /**
+     * Identificador del usuario con el que se esta trabajando.
+     *
+     * @var    string $usuario
+     * @access public
+     */
+    var $usuario = null;
+
+    /**
+     * Nombre del archivo para el download
+     *
+     * @var string $resultado
+     * @access public
+     */
+    var $resultado = null;
+   
+    /**
+     * Nombre del archivo en el tacho
+     *
+     * @var string $archivo
+     * @access public
+     */
+    var $archivo = null;
+    
+    /**
+     * Path del archivo
+     *
+     * @var string $path
+     * @access public
+     */
+    var $path = null;
+    
+    /**
+     * Carga el objeto con los datos que se pasan por parametro.
+     * 
+     * @param  DB $db DB o DB_Result a usar para la carga.
+     *
+     * @return mixed
+     * @access public
+     */
+    function cargar($db = null)
+    {
+        // Si es un resultado, obtengo los elemento.
+        if (is_a($db, 'db_result')) {
+            $this->predefinirAtributos();
+            $res = $db->fetchRow(DB_FETCHMODE_ASSOC);
+            // Si hay error lo devuelve.
+            if (DB::isError($res)) {
+                return $res;
+            }
+            elseif (!$res) {
+                return false;
+            }
+
+            $this->id = $res['id'];
+            $this->nombre_sistema = $res['nombre_sistema'];
+            $this->descripcion = $res['descripcion'];
+            $this->path = PATH;
+            $this->resultado = $res['resultado'];
+            $this->archivo = $res['archivo'];
+            
+            return true;
+        }
+        return false; 
+    }
+
+    /**
+     * Borra el objeto de una base de datos.
+     *
+     * @param  DB $db Base de datos de donde borrar el objeto.
+     *
+     * @return mixed
+     * @access public
+     */
+    function borrar($db = null)
+    {
+        trigger_error('Not implemented!', E_USER_WARNING); 
+        //@TODO Solo permitir que el owner borre sus archivos.
+        //@TODO Borra el registro de la base.
+        //@TODO Borrar el archivo del tacho.
+    }
+
+    /**
+     * Busca los datos en la base.
+     *
+     * @param  DB $db Conexion a la base de datos.
+     * @param  string $operador Indica como deben concatenarse las condiciones de busqueda
+     * @param  string $orden Indica de que manera deben ordenarse los resultados de la busqueda
+     *
+     * @return mixed
+     * @access public
+     */
+    function buscar($db = null, $operador = MECON_DBO_OR, $orden = null) 
+    {
+        // Armo el WHERE.
+        $where = array();
+        if (!is_null($this->id)) {
+            $where[] = 'p.id = '.$this->id;
+        }
+        if (!is_null($this->id_sistema)) {
+            $where[] = 'p.id_sistema = '. $this->id_sistema; 
+        }
+        if (!is_null($this->nombre_sistema)) {
+            $where[] = 's.nombre_sistema LIKE '. $db->quote("%$this->nombre_sistema%");
+        }
+        if (!is_null($this->descripcion)) {
+            $where[] = 'p.descripcion LIKE '. $db->quote("%$this->descripcion%");
+        }
+        if (!is_null($this->resultado)) {
+            $where[] = 'p.resultado LIKE '. $db->quote("%$this->resultado%");
+        }
+        if (!is_null($this->usuario)) {
+            $where[] = '(p.owner LIKE '. $db->quote("$this->usuario") .' OR '.
+                    'p.destinos LIKE '. $db->quote("%$this->usuario%") .')';
+        }
+        if ($where) {
+            $where = 'WHERE p.status = 2 AND p.resultado is not null '.
+                'AND p.id_sistema = s.id_sistema AND ('. join ("$operador
+                        ", $where).') ';
+        } 
+        else {
+            $where = 'WHERE p.owner = '. $db->quote("$this->owner").
+                'AND p.id_sistema = s.id_sistema';
+        }
+        // Armo el ORDER BY.
+        if (is_string($orden)) {
+            $orden = array($orden);
+        }
+        if ($orden) {
+            $orden = 'ORDER BY '.join(',',$orden);
+        }
+        else {
+            $orden = '';
+        }
+        
+        return $db->query(
+                "SELECT p.id AS id, p.id_sistema AS id_sistema, s.nombre_sistema ".
+                "AS nombre_sistema, p.descripcion AS descripcion, p.resultado ".
+                "AS resultado, p.archivo AS archivo ".
+                "FROM yatta.procesos AS p, samurai.sistema AS s ".
+                "$where ".
+                "$orden");
+    }
+
+    /**
+     * @param  DB $db Conexion a la base de datos.
+     * @param  bool $nuevo Indica si se trata de un nuevo registro en la base.
+     *
+     * @return mixed
+     * @access public
+     */
+    function guardar($db = null, $nuevo = false)
+    {
+        trigger_error('Not implemented!', E_USER_WARNING); 
+    }
+
+    /**
+     * Hace un reset de los atributos.
+     * 
+     * @return void
+     * @access public
+     */
+    function predefinirAtributos() {
+        $this->id = null;
+        $this->id_sistema = null;
+        $this->nombre_sistema = null;
+        $this->descripcion = null;
+        $this->resultado = null;
+        $this->archivo = null;
+        $this->path = null;
+        $this->usuario = null;
+    }
+}
+?>
\ No newline at end of file
index df7310ca550cc5a60b2cc28b6705ea27156de6fa..31fb12262a7055ad254cfebba4b4922c86e4d4e5 100644 (file)
@@ -105,10 +105,9 @@ class YATTA_Proceso extends MECON_DBO {
      * Estado del proceso.       
      * 0 = En Espera
      * 1 = Procesando
      * Estado del proceso.       
      * 0 = En Espera
      * 1 = Procesando
-     * 2 = Finalizado sin copiar el resultado al tacho
-     * 3 = Finalizado
-     * 4 = Error
-     * 5 = Abortado
+     * 2 = Finalizado
+     * 3 = Error
+     * 4 = Abortado
      *
      * @var    int $status
      * @access public
      *
      * @var    int $status
      * @access public
@@ -164,6 +163,14 @@ class YATTA_Proceso extends MECON_DBO {
      */
     var $resultado = null;
     
      */
     var $resultado = null;
     
+    /**
+     * Nombre del archivo en el tacho
+     *
+     * @var    string $archivo
+     * @access public
+     */
+    var $archivo = null;
+    
     /**
      * Nota explicativa sobre el error producido o el motivo por el cual se
      * aborto el proceso.
     /**
      * Nota explicativa sobre el error producido o el motivo por el cual se
      * aborto el proceso.
@@ -219,6 +226,7 @@ class YATTA_Proceso extends MECON_DBO {
             $this->scheduling       = $res['scheduling'];
             $this->notificar        = $res['notificar'];
             $this->resultado        = $res['resultado'];
             $this->scheduling       = $res['scheduling'];
             $this->notificar        = $res['notificar'];
             $this->resultado        = $res['resultado'];
+            $this->archivo          = $res['archivo'];
             $this->nota             = $res['nota'];
             $this->icono            = $res['icono'];
             return true;
             $this->nota             = $res['nota'];
             $this->icono            = $res['icono'];
             return true;
@@ -337,13 +345,15 @@ class YATTA_Proceso extends MECON_DBO {
             $orden = '';
         }
         
             $orden = '';
         }
         
-        return $db->query("SELECT p.id AS id, p.fecha AS fecha, p.script AS
+        return $db->query("SELECT p.id AS id, 
+                DATE_FORMAT(p.fecha, '%d-%m-%Y') AS fecha, 
+                p.script AS
                 script, p.id_sistema AS id_sistema, s.nombre_sistema AS
                 nombre_sistema, p.descripcion AS descripcion, p.pid AS pid, 
                 p.server AS server, p.status AS status, p.owner AS owner, 
                 p.destinos AS destinos, p.prioridad AS prioridad, p.scheduling 
                 AS scheduling, p.notificar AS notificar, p.resultado AS 
                 script, p.id_sistema AS id_sistema, s.nombre_sistema AS
                 nombre_sistema, p.descripcion AS descripcion, p.pid AS pid, 
                 p.server AS server, p.status AS status, p.owner AS owner, 
                 p.destinos AS destinos, p.prioridad AS prioridad, p.scheduling 
                 AS scheduling, p.notificar AS notificar, p.resultado AS 
-                resultado, p.nota AS nota,".
+                resultado, p.nota AS nota, p.archivo AS archivo, ".
                 "IF (p.status = 0, 'El proceso esta en cola. Aun no se ejecuto.".
                 "', ".
                 "IF(p.status = 1, 'El proceso se esta ejecutando en este momento.".
                 "IF (p.status = 0, 'El proceso esta en cola. Aun no se ejecuto.".
                 "', ".
                 "IF(p.status = 1, 'El proceso se esta ejecutando en este momento.".
@@ -389,6 +399,7 @@ class YATTA_Proceso extends MECON_DBO {
                         'scheduling'    => $this->scheduling,
                         'notificar'     => $this->notificar,
                         'resultado'     => $this->resultado,
                         'scheduling'    => $this->scheduling,
                         'notificar'     => $this->notificar,
                         'resultado'     => $this->resultado,
+                        'archivo'       => $this->archivo,
                         'nota'          => $this->nota
                     );
 
                         'nota'          => $this->nota
                     );
 
@@ -410,6 +421,7 @@ class YATTA_Proceso extends MECON_DBO {
                         'scheduling'    => $this->scheduling,
                         'notificar'     => $this->notificar,
                         'resultado'     => $this->resultado,
                         'scheduling'    => $this->scheduling,
                         'notificar'     => $this->notificar,
                         'resultado'     => $this->resultado,
+                        'archivo'       => $this->archivo,
                         'nota'          => $this->nota
                     );
 
                         'nota'          => $this->nota
                     );
 
@@ -442,6 +454,7 @@ class YATTA_Proceso extends MECON_DBO {
         $this->scheduling = null;
         $this->notificar = null;
         $this->resultado = null;
         $this->scheduling = null;
         $this->notificar = null;
         $this->resultado = null;
+        $this->archivo = null;
         $this->nota = null;
         $this->icono = null;
     }
         $this->nota = null;
         $this->icono = null;
     }
index f63620a793a9da77241bf958406e392093d7a5e8..67a8c2a88b2de3e194ebf24cf0c108bbdc6c4a7b 100644 (file)
@@ -25,6 +25,7 @@ CREATE TABLE procesos (
     scheduling varchar(50) default NULL,
     notificar tinyint(1) default 1,
     resultado varchar(255) default NULL, 
     scheduling varchar(50) default NULL,
     notificar tinyint(1) default 1,
     resultado varchar(255) default NULL, 
+    archivo varchar(255) default NULL, 
     nota text NOT NULL,
     PRIMARY KEY (id)
 ) TYPE=MyISAM;
     nota text NOT NULL,
     PRIMARY KEY (id)
 ) TYPE=MyISAM;
index 695cccb807cc7aeabd47a4444659bff5f4cdbfc6..e64bf19789c4e87af078404ef8ca9f60a9d984f9 100644 (file)
@@ -26,130 +26,110 @@ $Id$
 
 //Require Once {{{
 require_once 'HTML/Table.php';
 
 //Require Once {{{
 require_once 'HTML/Table.php';
-require_once 'MECON/HTML/Tabla.php';
+require_once 'MECON/HTML/TablaDB.php';
 require_once 'MECON/HTML/Image.php';
 require_once 'MECON/HTML/Link.php';
 require_once 'MECON/HTML/Image.php';
 require_once 'MECON/HTML/Link.php';
+require_once 'YATTA/Archivo.php';
 //}}}
 
 //}}}
 
-//TODO Este path es el del tacho segun el usuario, etc.
-$path = '/var/www/sistemas/yatta/test/'. $_SESSION['usuario'];
-
 //TODO Definir la cuota en algun lado (Kb)
 $cuota = 2048;
 
 //TODO Definir la cuota en algun lado (Kb)
 $cuota = 2048;
 
-//TODO Agregar class para manejar los colores y fuentes
-
 //Actuar segun la accion, etc {{{
 $accion = @$_REQUEST['accion'];
 //Actuar segun la accion, etc {{{
 $accion = @$_REQUEST['accion'];
-$archivo = @$_REQUEST['archivo'];
-if (@$accion && @$archivo) {
-    $archivo2 = $path.'/'.$archivo;
+$id = @$_REQUEST['_id'];
+if (@$id && @$accion) {
+    $ARCHIVO =& new YATTA_Archivo;
+    $ARCHIVO->id = $id;
+    $res = $ARCHIVO->buscar($DB);
+    if (PEAR::isError($res)) {
+        die('Error: ' . $res->getMessage() . "\n");
+    }
+    $ARCHIVO->cargar($res);
     switch ($accion) {
         case 'download':
     switch ($accion) {
         case 'download':
-            header("Content-Disposition: attachment; filename=".$archivo);
+            header("Content-Disposition: attachment;
+                    filename=".$ARCHIVO->resultado);
             header("Pragma: no-cache");
             header("Expires: 0");
             header("Content-Type: application");
             header("Pragma: no-cache");
             header("Expires: 0");
             header("Content-Type: application");
-            header("Content-Length: ".filesize($archivo2));
-            readfile ($archivo2);
+            header("Content-Length: ".filesize($ARCHIVO->path.$ARCHIVO->archivo));
+            readfile ($ARCHIVO->path.$ARCHIVO->archivo);
             exit;
             break;
     case 'borrar':
             exit;
             break;
     case 'borrar':
-            system ('rm '.$archivo2);
+            system ('rm '.$ARCHIVO->path.$ARCHIVO->archivo);
             header ('Location:archivos');
             break;
     }
 }
 //}}}
 
             header ('Location:archivos');
             break;
     }
 }
 //}}}
 
-//Obtengo la Lista de Archivos del Directorio en Cuestion {{{
-if ($dh = @opendir($path)) {
-    $ocupado =0;
-    while (($file = readdir($dh)) !== false) {
-        //FIXME Sacar el .svn cuando se pase a produccion
-        if ($file != '.' && $file != '..' && $file != '.svn') {
-            $archivos[$file]['ext']    = strtoupper(substr($file, strrpos($file, '.') + 1));
-            $archivos[$file]['nombre'] = $file; 
-            $archivos[$file]['tam']    = round((filesize($path.'/'.$file) / 1024),2);
-            $archivos[$file]['porc']   = round((filesize($path.'/'.$file) / 1024) * 100 /
-                $cuota, 2);
-
-            $ocupado += $archivos[$file]['porc'];
-        }
-    }
-    closedir($dh);
+//Obtengo la lista de archivos y lo agrego a la tabla {{{
+$ARCHIVO =& new YATTA_Archivo;
+$ARCHIVO->usuario = $_SESSION['usuario'];
+
+$res = $ARCHIVO->buscar($DB);
+if (PEAR::isError($res)) {
+    die('Error: ' . $res->getMessage() . "\n");
 }
 }
-//}}}
 
 
-//Tabla de Archivos {{{
-$TABLA_2 =& new MECON_HTML_Tabla ();
-$TABLA_2->addRow(array(
+
+$TABLADB = new MECON_HTML_TablaDB ('Archivos');
+$TABLADB->addRow(array(
             'Lista de Archivos Disponibles'
             'Lista de Archivos Disponibles'
-            ), 'cabecera colspan="6" align="left"');
-$TABLA_2->addRow(array(
-            'Ext', 'Nombre', 'Tam. Kb', 'Tam. %', 'Bajar', 'Borrar'
+            ), 'cabecera colspan="5" align="left"');
+$TABLADB->addRow(array(
+            'Ext', 'Sistema', 'Descripcion', 'Bajar', 'Borrar'
             ), 'Titulo');
             ), 'Titulo');
-if (@$archivos) {
-    asort($archivos);
-    foreach ($archivos as $arch) {
-        $TABLA_2->addRow(array( 
-            new MECON_HTML_Image ('/MECON/images/EXTENSION_'.$arch['ext'].'.gif', $arch['ext']),
-            $arch['nombre'],
-            $arch['tam'].' Kb',
-            $arch['porc'].' %',
-            new MECON_HTML_Link ('archivos', new
-                MECON_HTML_Image('/MECON/images/general_download.gif', 'Bajar'),
-                array (
-                    'accion'=>'download',
-                    'archivo'=>$arch['nombre'],
-                    )),
-            new MECON_HTML_Link ('archivos', new MECON_HTML_Image
-                ('/MECON/images/general_eliminar.gif', 'Eliminar'), 
-                array (
-                    'accion'=>'borrar', 
-                    'archivo'=>$arch['nombre'])            
-                , 'OnClick="return confirm(\'Esta Seguro Bestia?\')"'))
-            );
-    }
-    $TABLA_2->addRow(array(
-                '*Recuerde que los archivos se borran a los 7 dias
-                de antiguedad'
-                ), 'colspan="6" align="center" class="msg_rojo"'); 
-}
-else {
-    $TABLA_2->addRow(array('No se encontraron archivos'), 'colspan="6"
-            class="msg_rojo"');
-}
-$TABLA_2->updateColAttributes(0,'width="5%"');
-$TABLA_2->updateColAttributes(2,'width="10%"');
-$TABLA_2->updateColAttributes(3,'width="10%"');
-$TABLA_2->updateColAttributes(4,'width="8%"');
-$TABLA_2->updateColAttributes(5,'width="8%"');
-//}}}
 
 
-//Tabla de Espacio Disponible {{{
-$TABLA_1 =& new HTML_Table ('width="100%"');
-$TABLA_1->addRow(array(
-            '<b>Espacio Utilizado: </b>',
-            (@$ocupado) ? $ocupado.' %' : '0'.' %'
-            ));
-$TABLA_1->updateColAttributes(0,'width="95%" align="right"');
-$TABLA_1->updateColAttributes(1,'align="center"');
-if (@$ocupado > 80) {
-    $TABLA_1->updateCellAttributes(0,1,'class="msg_rojo"');
-}
-else {
-    $TABLA_1->updateCellAttributes(0,1,'class="msg_negro"');
+
+$TABLADB->addRowsData(
+            '<img src="/MECON/images/EXTENSION_%s" alt="Ext">',
+            array (array ('resultado', 'extension_callback')),
+            'prepend'
+        );
+
+function extension_callback($resultado) {
+    return strtoupper(substr($resultado, strrpos($resultado, '.') + 1));
 }
 }
-$TABLA_1->updateCellAttributes(0,0,'class="msg_negro"');
+
+//@TODO Hacer un addRowsData que agregue el tamanio del archivo (posiblemente
+//con una funcion callback)
+
+$TABLADB->addRowsData(
+            new MECON_HTML_Link('archivos',
+                new MECON_HTML_Image('/MECON/images/general_download.gif',
+                    'Bajar'),
+                array ($TABLADB->getGetVarPrefix().'id' => "%s", 
+                    'accion' => 'download')
+            )
+        );
+
+$TABLADB->addRowsIcon('borrar', array ('id'), new MECON_HTML_Link ('archivos', '', array
+            ('accion' => 'borrar')));
+
+$pager = $TABLADB->addPager($res, null, 
+            new MECON_HTML_Link
+                ('archivos', null 
+                )
+        );
+
+$TABLADB->addRows($pager, array ('nombre_sistema', 'descripcion'));
+$TABLADB->addRow(array('*Recuerde que los archivos se borran a los 7 dias
+            de antiguedad'), 
+            'colspan="5" align="center" class="msg_rojo"'); 
+
+$TABLADB->updateColAttributes(0,'width="4%"');
+$TABLADB->updateColAttributes(1,'width="30%"');
+$TABLADB->updateColAttributes(2,'width="50%"');
+$TABLADB->updateColAttributes(3,'width="8%"');
+$TABLADB->updateColAttributes(4,'width="8%"');
 //}}}
 
 //Agrego la info al marco y la muestro {{{
 //}}}
 
 //Agrego la info al marco y la muestro {{{
-$MARCO->addBody($TABLA_1);
-$MARCO->addBody('<BR>');
-$MARCO->addBody($TABLA_2);
 $MARCO->addStyleSheet('css/yatta.css');
 $MARCO->addStyleSheet('css/yatta.css');
+$MARCO->addBody($TABLADB);
 $MARCO->display();
 //}}}
 $MARCO->display();
 //}}}
-
 ?>
 ?>
index 1949a875195e9125700be49815d3163316c37573..8f5f2bb25d299de4a05d62e2150255b0cbc953dd 100644 (file)
Binary files a/sistema/www/images/estado_1.gif and b/sistema/www/images/estado_1.gif differ
index 8e8181adf52deedf86018d75b20d8a137a8f5e33..0ec8b8f1964684efd1636fd767959dcc464d6748 100644 (file)
@@ -48,8 +48,6 @@ if (PEAR::isError($res)) {
     die('Error: ' . $res->getMessage() . "\n");
 }
 
     die('Error: ' . $res->getMessage() . "\n");
 }
 
-//@FIXME La fecha esta quedando en formato americano, arreglar eso.
-
 $pager = $TABLADB->addPager($res, null, 
             new MECON_HTML_Link
                 ('procesos', null 
 $pager = $TABLADB->addPager($res, null, 
             new MECON_HTML_Link
                 ('procesos', null 
diff --git a/test/mmarre@mecon/Borrar.pdf b/test/mmarre@mecon/Borrar.pdf
deleted file mode 100755 (executable)
index 21493c8..0000000
Binary files a/test/mmarre@mecon/Borrar.pdf and /dev/null differ