]> 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
-     * 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
@@ -164,6 +163,14 @@ class YATTA_Proceso extends MECON_DBO {
      */
     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.
@@ -219,6 +226,7 @@ class YATTA_Proceso extends MECON_DBO {
             $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;
@@ -337,13 +345,15 @@ class YATTA_Proceso extends MECON_DBO {
             $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 
-                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.".
@@ -389,6 +399,7 @@ class YATTA_Proceso extends MECON_DBO {
                         'scheduling'    => $this->scheduling,
                         'notificar'     => $this->notificar,
                         'resultado'     => $this->resultado,
+                        'archivo'       => $this->archivo,
                         'nota'          => $this->nota
                     );
 
@@ -410,6 +421,7 @@ class YATTA_Proceso extends MECON_DBO {
                         'scheduling'    => $this->scheduling,
                         'notificar'     => $this->notificar,
                         'resultado'     => $this->resultado,
+                        'archivo'       => $this->archivo,
                         'nota'          => $this->nota
                     );
 
@@ -442,6 +454,7 @@ class YATTA_Proceso extends MECON_DBO {
         $this->scheduling = null;
         $this->notificar = null;
         $this->resultado = null;
+        $this->archivo = 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, 
+    archivo varchar(255) default NULL, 
     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 'MECON/HTML/Tabla.php';
+require_once 'MECON/HTML/TablaDB.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 Agregar class para manejar los colores y fuentes
-
 //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':
-            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("Content-Length: ".filesize($archivo2));
-            readfile ($archivo2);
+            header("Content-Length: ".filesize($ARCHIVO->path.$ARCHIVO->archivo));
+            readfile ($ARCHIVO->path.$ARCHIVO->archivo);
             exit;
             break;
     case 'borrar':
-            system ('rm '.$archivo2);
+            system ('rm '.$ARCHIVO->path.$ARCHIVO->archivo);
             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'
-            ), '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');
-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 {{{
-$MARCO->addBody($TABLA_1);
-$MARCO->addBody('<BR>');
-$MARCO->addBody($TABLA_2);
 $MARCO->addStyleSheet('css/yatta.css');
+$MARCO->addBody($TABLADB);
 $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");
 }
 
-//@FIXME La fecha esta quedando en formato americano, arreglar eso.
-
 $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