X-Git-Url: https://git.llucax.com/mecon/meconlib.git/blobdiff_plain/ce1b40d981eccb0f01656d9796582d9562685f17..fe7e792266c5fe68f6e2cc70898eb45ef8e8424d:/lib/MECON/HTML/Arbol.php
diff --git a/lib/MECON/HTML/Arbol.php b/lib/MECON/HTML/Arbol.php
index 899fb76..7c39ca2 100644
--- a/lib/MECON/HTML/Arbol.php
+++ b/lib/MECON/HTML/Arbol.php
@@ -26,12 +26,38 @@ $Id$
-----------------------------------------------------------------------------*/
require_once 'HTML/Table.php';
-require_once 'HTML/Image.php';
+require_once 'MECON/HTML/Image.php';
-class HTML_Arbol extends HTML_Table
+/**
+ * DESC
+ *
+ * @access public
+ */
+class MECON_HTML_Arbol extends HTML_Table
{
+
+ /**
+ * DESC
+ *
+ * @var TIPO $datos
+ * @access public
+ */
var $datos;
+
+ /**
+ * DESC
+ *
+ * @var TIPO $titulo
+ * @access public
+ */
var $titulo;
+
+ /**
+ * DESC
+ *
+ * @var string $link_append
+ * @access public
+ */
var $link_append;
/**
@@ -39,9 +65,12 @@ class HTML_Arbol extends HTML_Table
*
* @param array $datos Datos con los cuales construir el árbol.
* @param string $titulo Título.
- * @param int $raiz Nodo raíz (de donde empezar a dibujar el árbol).
+ * @param string $link_append DESC.
+ *
+ * @return void
+ * @access public
*/
- function HTML_Arbol($datos, $titulo, $link_append = '')
+ function MECON_HTML_Arbol($datos, $titulo, $link_append = '')
{
parent::HTML_Table(array(
'width' => '132',
@@ -54,30 +83,63 @@ class HTML_Arbol extends HTML_Table
$this->link_append = $link_append;
}
+ /**
+ * Devuelve el path del stylesheet de esta clase
+ *
+ * @retur string
+ * @access public
+ */
function getCSS() {
- return '/MECON/css/arbol';
+ return '/MECON/css/html/arbol';
}
+ /**
+ * DESC
+ *
+ * @param TIPO $dat DESC
+ * @param TIPO $n DESC
+ * @param TIPO &$tabla DESC
+ *
+ * @return TIPO
+ * @access public
+ */
function expandir($dat, $n, &$tabla)
{
- $imagen = '';
$bullets = array(
'',
'/MECON/images/arbol_bullet_1.gif',
'/MECON/images/arbol_bullet_2.gif',
'/MECON/images/arbol_bullet_3.gif'
);
+ $alts = array(
+ '',
+ '*',
+ '-',
+ '·'
+ );
+ $classes = array('mecon_html_arbol_menu', 'mecon_html_arbol_menu1',
+ 'mecon_html_arbol_menu1', 'mecon_html_arbol_menu2');
$tabulados = 7;
- $classes = array('menu', 'menu1', 'menu1', 'menu2');
-
- $atr = array('border' => '0',
- 'width' => $n * $tabulados,
- 'height' => '10');
- $imagen =& new HTML_Image(@$bullets[$n] ? $bullets[$n] : '', 'bullet', $atr);
+ $atr = array(
+ 'border' => '0',
+ 'width' => $n * $tabulados,
+ 'height' => '1'
+ );
+ $margen = ' ';
+ if ($n) {
+ $margen = new MECON_HTML_Image('/MECON/images/blanco.gif', str_repeat(' ', $n), $atr);
+ $margen = $margen->toHtml();
+ }
+ $imagen = '';
+ if (@$bullets[$n]) {
+ $imagen = new MECON_HTML_Image($bullets[$n], @$alts[$n]);
+ $imagen = $imagen->toHtml();
+ }
foreach ($dat as $e) {
- $titulo = $imagen->toHTML().$e['titulo'];
- if(isset($e['activado']) && $e['activado'] != 0) $class = 'menu_activo';
- else $class = $classes[$n];
+ $titulo = $e['titulo'];
+ if(isset($e['activo']) && $e['activo'] != 0) $class = 'mecon_html_arbol_menu_activo';
+ else $class = @$classes[$n] ? $classes[$n] : end($classes);
+ if(isset($e['bold'])) $class .= '_bold';
if(!is_null($e['link'])) {
$link = $e['link'];
if ($this->link_append and @$e['id']) {
@@ -85,6 +147,7 @@ class HTML_Arbol extends HTML_Table
}
$titulo = ''.$titulo.'';
}
+ $titulo = '
'.$margen.$imagen.' | '.$titulo.' |
';//TODO
$tabla->addRow(array($titulo), array('class' => $class));
if(isset($e['sub'])) {
$this->expandir($e['sub'], $n+1, $tabla);
@@ -92,6 +155,12 @@ class HTML_Arbol extends HTML_Table
}
}
+ /**
+ * Devuelve el html a imprimir
+ *
+ * @return string
+ * @access public
+ */
function toHTML()
{
$this->setRowCount(0);
@@ -100,7 +169,7 @@ class HTML_Arbol extends HTML_Table
'border' => '0',
'cellspacing' => '2',
'cellpadding' => '0',
- 'class' => 'bodytext'));
+ 'class' => 'mecon_html_arbol_bodytext'));
$titulo = new HTML_Table(array(
'width' => '132',
'height' => '26',
@@ -111,21 +180,30 @@ class HTML_Arbol extends HTML_Table
'background' => '/MECON/images/arbol_titulo.gif'));
$titulo->addRow(array($this->titulo), array(
'align' => 'center',
- 'class' => 'arboltitulo'));
+ 'class' => 'mecon_html_arbol_titulo'));
$this->addRow(array($titulo), array('bgcolor' => '#FFFFFF'));
$this->expandir($this->datos, 0, $t_interna);
$this->addRow(array($t_interna->toHTML()));
- // FIXME - sacar la style sheet de aca.
- return ''.parent::toHTML();
+ return parent::toHTML();
}
+ /**
+ * DESC
+ *
+ * @param TIPO $dat DESC
+ * @param TIPO $n DESC
+ * @param TIPO $filtarActivos DESC
+ *
+ * @return array
+ * @access public
+ */
function expandirArray($dat, $n, $filtrarActivos)
{
$array = array();
foreach ($dat as $e) {
// Si no tiene ID o esta activo y se filtran los activos, se
// continua con el proximo item.
- if (!@$e['id'] or $filtrarActivos and @$e['activado']) {
+ if (!@$e['id'] or $filtrarActivos and @$e['activo']) {
continue;
}
$array[$e['id']] = str_repeat(' ', $n) . $e['titulo'];
@@ -136,21 +214,78 @@ class HTML_Arbol extends HTML_Table
return $array;
}
+ /**
+ * DESC
+ *
+ * @param bool $filtrarActivos DESC
+ *
+ * @return array
+ * @access public
+ */
function toArray($filtrarActivos = true)
{
return $this->expandirArray($this->datos, 0, $filtrarActivos);
}
+ /**
+ * DESC
+ *
+ * @param TIPO $dat DESC
+ * @param TIPO $n DESC
+ * @param TIPO $filtarActivos DESC
+ *
+ * @return string
+ * @access public
+ */
+ function expandirString($dat, $n, $filtrarActivos)
+ {
+ $str = '';
+ $tot = count($dat);
+ for ($i = 0; $i < $tot; $i++) {
+ $e = $dat[$i];
+ // Si no tiene ID o esta activo y se filtran los activos, se
+ // continua con el proximo item.
+ if (!@$e['id'] or $filtrarActivos and @$e['activo']) {
+ continue;
+ }
+ $indent = str_repeat('| ', $n);
+ if ($i == ($tot - 1)) {
+ $indent .= '`- ';
+ } else {
+ $indent .= '|- ';
+ }
+ $str .= $indent . $e['titulo'] . "\n";
+ if(@$e['sub']) {
+ $str .= $this->expandirString($e['sub'], $n + 1, $filtrarActivos);
+ }
+ }
+ return $str;
+ }
+
+ /**
+ * DESC
+ *
+ * @param bool $filtrarActivos DESC
+ *
+ * @return string
+ * @access public
+ */
+ function toString($filtrarActivos = true)
+ {
+ return $this->expandirString($this->datos, 0, $filtrarActivos);
+ }
+
/**
* Activa un nodo del árbol.
*
* @param int $id Id del nodo a modificar.
- * @param bool $activado Nuevo valor, true si está activado, false si no.
+ * @param bool $activo Nuevo valor, true si está activo, false si no.
*
* @return bool True si se pudo modificar.
+ * @access public
*/
- function setActivado($id, $activado = 1) {
- return $this->modificarNodo($this->datos, $id, 'activado', $activado);
+ function setActivo($id, $activo = 1) {
+ return $this->modificarNodo($this->datos, $id, 'activo', $activo);
}
/**
@@ -162,6 +297,7 @@ class HTML_Arbol extends HTML_Table
* @param mixed $val Nuevo valor.
*
* @return bool True si se pudo modificar.
+ * @access public
*/
function modificarNodo(&$datos, $id, $key, $val) {
foreach (array_keys($datos) as $k) {