From: Leandro Lucarella Date: Fri, 25 Jul 2003 21:35:09 +0000 (+0000) Subject: - Se usa el nuevo método de ArbolDB para indicar qué elemento se está editando. X-Git-Tag: svn_import~40 X-Git-Url: https://git.llucax.com/mecon/ai.git/commitdiff_plain/0ef0677af2bf0524273dc9867fad510a84e61099 - Se usa el nuevo método de ArbolDB para indicar qué elemento se está editando. - Se separan librerias locales de generales. --- diff --git a/Makefile b/Makefile index 2279eed..c61d490 100644 --- a/Makefile +++ b/Makefile @@ -5,9 +5,11 @@ code: @cd doc && xmi2code + @cd doc/local_lib && xmi2code code-clean: @find lib -name '*.bak' | xargs rm -fv + @find sistema/local_lib -name '*.bak' | xargs rm -fv clean-readme: find -name README | xargs svn rm diff --git a/TODO b/TODO index a7fe8c3..1cefc3d 100644 --- a/TODO +++ b/TODO @@ -1,10 +1,8 @@ $Id$ -- Mover listarImagenes() y arbol2array() de Form.php a un lugar más apropiado y - con un nombre más apropiado. - Ordenar todo mejor (index.php no da más). -- No crear una DB on-the-fly en Form.php. - Agregar links para agregar un elemento nuevo sin tener que tocar en el ícono de la sección que es poco intuitivo. - Ver que se hace con sistemas borrados de SAMURAI con baja lógica. - Resolver tema de JOIN con SAMURAI. +- Hacer que filtre los no habilitados para gonzalo. diff --git a/doc/Doxyfile b/doc/Doxyfile index 26760fa..1eecf53 100644 --- a/doc/Doxyfile +++ b/doc/Doxyfile @@ -83,7 +83,7 @@ WARN_LOGFILE = doxygen.warnings #--------------------------------------------------------------------------- # configuration options related to the input files #--------------------------------------------------------------------------- -INPUT = ../sistema/local_lib +INPUT = ../sistema/local_lib ../lib FILE_PATTERNS = *.php RECURSIVE = YES EXCLUDE = diff --git a/doc/local_lib/uml.xmi b/doc/local_lib/uml.xmi new file mode 100644 index 0000000..142832e --- /dev/null +++ b/doc/local_lib/uml.xmi @@ -0,0 +1,92 @@ + + + + + umbrello uml modeller http://uml.sf.net + 1.1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/local_lib/xmi2code.config b/doc/local_lib/xmi2code.config new file mode 100644 index 0000000..7dab2dd --- /dev/null +++ b/doc/local_lib/xmi2code.config @@ -0,0 +1,49 @@ + + + + + diff --git a/doc/uml.xmi b/doc/uml.xmi index c881dfd..87fe249 100644 --- a/doc/uml.xmi +++ b/doc/uml.xmi @@ -45,17 +45,15 @@ - - + + - + @@ -91,25 +89,6 @@ x2c:include: PEAR.php" name="PEAR_Error" static="0" scope="200" /> - - - - - - - - - - - - - - - - - - - @@ -147,60 +126,44 @@ x2c:get" name="hijos" static="0" scope="202" /> - - - - - - - - - - - + + + + + + + - - - - - - - - + + - - + + - - - - - - - - + + - - + + - - + + @@ -210,10 +173,6 @@ x2c:get" name="hijos" static="0" scope="202" /> - - - - @@ -228,14 +187,10 @@ x2c:get" name="hijos" static="0" scope="202" /> - + - - - - @@ -278,9 +233,7 @@ x2c:get" name="hijos" static="0" scope="202" /> - - - + diff --git a/lib/AI/Error.php b/lib/AI/Error.php index 556c149..a7fa1a3 100644 --- a/lib/AI/Error.php +++ b/lib/AI/Error.php @@ -50,6 +50,7 @@ define('AI_ERROR_TIENE_HIJOS', 2); // +X2C Class 469 :AI_Error /** + * @package AI * @access public */ class AI_Error extends PEAR_Error { diff --git a/lib/AI/Sistema.php b/lib/AI/Sistema.php index 17a4d02..6211577 100644 --- a/lib/AI/Sistema.php +++ b/lib/AI/Sistema.php @@ -50,7 +50,6 @@ define('AI_SISTEMA_CONFFILE', dirname(__FILE__).'/Sistema.ini'); class AI_Sistema extends AI_DBObject { /** * ID del sistema (ID en SAMURAI). -FIXME - preguntar a gonzalo si le sirve. * * @var int $sistema * @access public @@ -59,7 +58,6 @@ FIXME - preguntar a gonzalo si le sirve. /** * Nombre del sistema (slo de lectura, extra?o de SAMURAI). -FIXME - preguntar a gonzalo si le sirve. * * @var string $nombre * @access public @@ -222,4 +220,4 @@ FIXME - preguntar a gonzalo si le sirve. } // -X2C Class :AI_Sistema -?> +?> \ No newline at end of file diff --git a/lib/AI/DB.php b/sistema/local_lib/AI/DB.php similarity index 86% rename from lib/AI/DB.php rename to sistema/local_lib/AI/DB.php index 4c40826..32a0dfd 100644 --- a/lib/AI/DB.php +++ b/sistema/local_lib/AI/DB.php @@ -35,6 +35,7 @@ require_once 'DB.php'; /** * Base de datos del Administrador de Intranet. * + * @package AI_Local * @access public */ class AI_DB extends DB { @@ -42,32 +43,21 @@ class AI_DB extends DB { // +X2C Operation 506 /** - * @param string $confFile Archivo de configuracin de la base de datos. + * @param string $confFile Archivo de configuracin de la base de datos. Si no se especifica se toma uno por defecto del directorio de configuracin. * * @return &mixed * @access public */ - function &connect($confFile) // ~X2C + function &connect($confFile = '') // ~X2C { + if (!$confFile) { + $confFile = dirname(realpath(__FILE__)).'../conf/DB.ini'; + } $conf = parse_ini_file($confFile, true); return DB::connect($conf['dsn'], $conf['opciones']); } // -X2C - // +X2C Operation 511 - /** - * Verifica si un objeto es un error. - * - * @param mixed &$var Variable a chequear si es un error. - * - * @return bool - * @access public - */ - function isError(&$var) // ~X2C - { - return is_a($var, 'ai_error'); - } - // -X2C } // -X2C Class :AI_DB diff --git a/lib/AI/Form.php b/sistema/local_lib/AI/Form.php similarity index 86% rename from lib/AI/Form.php rename to sistema/local_lib/AI/Form.php index dc81494..804ed27 100644 --- a/lib/AI/Form.php +++ b/sistema/local_lib/AI/Form.php @@ -31,6 +31,8 @@ require_once 'MECON/HTML/QuickForm.php'; // ~X2C +require_once 'general.php'; + // Definicion de acciones. define('AI_ALTA', 1); define('AI_BAJA', 2); @@ -40,6 +42,7 @@ define('AI_MODIF', 4); /** * Formularios para el Administrador de Intranet. * + * @package AI_Local * @access public */ class AI_Form extends MECON_HTML_QuickForm { @@ -51,14 +54,14 @@ class AI_Form extends MECON_HTML_QuickForm { * * @param object &$obj Objeto con el cual rellenar el formulario. Puede ser GrupoSecciones, Servicio o Sistema. * @param int $accion Accion que realizar?el formulario a crear. Puede ser AI_ALTA, AI_BAJA o AI_MODIFICACION. + * @param HTML_Arbol $arbol ?bol de donde sacar los padres. + * @param DB $db Base de datos. * * @return void * @access public */ - function iniciar(&$obj, $accion = AI_ALTA) // ~X2C + function iniciar(&$obj, $accion, $arbol, $db) // ~X2C { - # FIXME - Tomar la db desde afuera. - $db = AI_DB::connect('../conf/DB.ini'); $tipo = substr(get_class($obj), 3); $s_tipo = ucfirst($tipo); if ($tipo == 'gruposecciones') { @@ -105,8 +108,7 @@ class AI_Form extends MECON_HTML_QuickForm { } if ($tipo == 'grupo' or $tipo == 'servicio') { $tipos = array('' => '--', '0' => 'Página Principal') - + arbol2array($db, ($tipo == 'grupo') ? 'grupo_secciones' : $tipo, - 0, $tipo, 'nombre', $tipo . '_padre', 'ASC'); + + $arbol->toArray(); // Saco el elemento actual si hay uno cargado (no puede ser padre de si mismo). if ($accion & (AI_BAJA | AI_MODIF)) { unset($tipos[$obj->$tipo]); @@ -157,7 +159,7 @@ class AI_Form extends MECON_HTML_QuickForm { $fLinkAyuda =& $this->addElement('text', 'link_ayuda', 'Enlace de la ayuda'); //$fIcono =& $this->addElement('text', 'icono', 'Ícono'); $fIcono =& $this->addElement('select', 'icono', 'Ícono', - listaImagenes('/var/www/sistemas/intranet/www/images', $tipo . '_', '\.gif')); + listarArchivos('/var/www/sistemas/intranet/www/images', $tipo . '_', '\.gif')); // Carga datos. if ($accion & (AI_BAJA | AI_MODIF)) { $fLink->setValue($obj->link); @@ -235,45 +237,4 @@ class AI_Form extends MECON_HTML_QuickForm { } // -X2C Class :AI_Form -// FIXME - Poner esto en algun lugar mejor. -function listaImagenes($dir = '.', $prepend = '', $append = '') -{ - $lista = array('' => '--'); - $d = dir($dir); - while (($file = $d->read()) !== false) { - if (preg_match("/$prepend(.*)$append/", $file, $m)) { - $nombre = ucwords(join(' ', preg_split('/_/', $m[1]))); - $lista[$file] = $nombre; - } - } - return $lista; -} - -// FIXME - Poner esto en algun lugar mejor. -function arbol2array(&$db, $tabla, $actual, $id, $nombre, $padre, $order = '', $indent = '   ') -{ - // Para llevar el nivel de indentación - static $nivel = 0; - $nivel++; - $sql = "SELECT $id, $nombre - FROM $tabla"; - if (!is_null($padre)) { - $sql .= " WHERE $padre = ".$db->quote($actual); - } - if ($order) { - $sql .= " ORDER BY $nombre $order"; - } - $array = $db->getAssoc($sql); - if (DB::isError($array)) { - return $array; - } - $ret = array(); - foreach ($array as $key => $val) { - $ret[$key] = str_repeat($indent, $nivel) . $val; - $ret += arbol2array($db, $tabla, $key, $id, $nombre, $padre, $order, $indent); - } - $nivel--; - return $ret; -} - ?> \ No newline at end of file diff --git a/sistema/local_lib/general.php b/sistema/local_lib/general.php new file mode 100644 index 0000000..883551e --- /dev/null +++ b/sistema/local_lib/general.php @@ -0,0 +1,64 @@ + | +// +--------------------------------------------------------------------+ +// +// $Id$ +// + +// +X2C Class 532 :general +/** + * Funciones generales. + * + * @package AI_Local + * @access public + */ + // ~X2C + + // +X2C Operation 533 + /** + * Lista archivos devolviendo un array apropiado para un SELECT. + * + * @param string $dir Directorio donde estan las imagenes. + * @param string $prepend Prefijo del archivo. + * @param string $append Postfijo del archivo. + * + * @return array + */ + function listarArchivos($dir = '.', $prepend = '', $append = '') // ~X2C + { + $lista = array('' => '--'); + $d = dir($dir); + while (($file = $d->read()) !== false) { + if (preg_match("/$prepend(.*)$append/", $file, $m)) { + $nombre = ucwords(join(' ', preg_split('/_/', $m[1]))); + $lista[$file] = $nombre; + } + } + return $lista; + } + // -X2C + +// -X2C Class :general +?> \ No newline at end of file diff --git a/sistema/www/index.php b/sistema/www/index.php index d68fe8e..438f132 100644 --- a/sistema/www/index.php +++ b/sistema/www/index.php @@ -28,6 +28,8 @@ // require_once 'MECON/HTML/Error.php'; +require_once 'MECON/general.php'; +prepend_include_path('/var/www/sistemas/ai/sistema/local_lib'); // Debug. {{{ require_once 'PEAR.php'; @@ -130,16 +132,44 @@ if ($tipo) { } // }}} + // 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' => 'nombre', + 'order' => 'asc', + ); + // Activo el id del objeto que estamos modificando. + if ($accion & (AI_BAJA | AI_MODIF)) { + $dbdata['id_activo'] = $obj->$tipo; + } + if ($tipo == 'grupo' or $tipo == 'servicio') { + $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, $arbol, $tipo.'?accion='.AI_MODIF.'&id='); + // }}} + // Inicio el formulario, cargando datos de ser necesario. {{{ if ($accion & (AI_BAJA | AI_MODIF)) { $err =& $obj->cargar($db); if (PEAR::isError($err)) { die($err->getMessage()); } - $form->iniciar($obj, $accion); + $form->iniciar($obj, $accion, $arbol, $db); } else { $accion = AI_ALTA; - $form->iniciar($obj); + $form->iniciar($obj, $accion, $arbol, $db); } // }}} @@ -213,40 +243,11 @@ if ($tipo) { } // }}} - // 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' => 'nombre', - 'prepend_link' => $tipo.'?accion='.AI_MODIF.'&id=', - 'order' => 'asc', - ); - if ($tipo == 'grupo' or $tipo == 'servicio') { - $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, $arbol); + // Agrego el menu y formulario a la página. {{{ $marco->addMenuVertical($arbol); - // }}} - - // Agrego el formulario a la página. {{{ $marco->addBody($form); // }}} - // }}} - // }}} // No se está editando nada, agrego la imágen de bienvenida a la página. {{{