]> git.llucax.com Git - mecon/meconlib.git/blobdiff - lib/MECON/HTML/Arbol.php
Se agrega la callback que faltaba al ejemplo.
[mecon/meconlib.git] / lib / MECON / HTML / Arbol.php
index 5ba8f0a62e2344f3e75b0688beb6057157150086..7c39ca25e9d928d5ea2ef6eff942c44c1e6e8c41 100644 (file)
@@ -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,10 +83,26 @@ 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)
     {
         $bullets = array(
@@ -72,27 +117,29 @@ class HTML_Arbol extends HTML_Table
             '-',
             '·'
         );
-        $classes = array('menu', 'menu1', 'menu1', 'menu2');
+        $classes = array('mecon_html_arbol_menu', 'mecon_html_arbol_menu1',
+            'mecon_html_arbol_menu1', 'mecon_html_arbol_menu2');
         $tabulados = 7;
         $atr = array(
             'border' => '0',
             'width'  => $n * $tabulados,
-            'height' => '10'
+            'height' => '1'
         );
         $margen = ' ';
         if ($n) {
-            $margen = new HTML_Image('/MECON/images/blanco.gif', str_repeat('  ', $n), $atr);
+            $margen = new MECON_HTML_Image('/MECON/images/blanco.gif', str_repeat('  ', $n), $atr);
             $margen = $margen->toHtml();
         }
         $imagen = '';
         if (@$bullets[$n]) {
-            $imagen = new HTML_Image($bullets[$n], @$alts[$n]);
+            $imagen = new MECON_HTML_Image($bullets[$n], @$alts[$n]);
             $imagen = $imagen->toHtml();
         }
         foreach ($dat as $e) {
-            $titulo = $margen.$imagen.$e['titulo'];
-            if(isset($e['activo']) && $e['activo'] != 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']) {
@@ -100,6 +147,7 @@ class HTML_Arbol extends HTML_Table
                 }
                 $titulo = '<a href="'.$link.'" class="'.$class.'">'.$titulo.'</a>';
             }
+            $titulo = '<table border=0 cellpadding=0 cellspacing=0 align="left"><tr><td valign="top">'.$margen.$imagen.'</td><td>'.$titulo.'</td></tr></table>';//TODO
             $tabla->addRow(array($titulo), array('class' => $class));
             if(isset($e['sub'])) {
                 $this->expandir($e['sub'], $n+1, $tabla);
@@ -107,6 +155,12 @@ class HTML_Arbol extends HTML_Table
         }
     }
 
+    /**
+     * Devuelve el html a imprimir
+     *
+     * @return string
+     * @access public
+     */
     function toHTML()
     {
         $this->setRowCount(0);
@@ -115,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',
@@ -126,14 +180,23 @@ 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 '<link rel="stylesheet" href="'.$this->getCSS().'">'.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();
@@ -151,11 +214,67 @@ 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.
      *
@@ -163,6 +282,7 @@ class HTML_Arbol extends HTML_Table
      * @param bool $activo Nuevo valor, true si está activo, false si no.
      *
      * @return bool True si se pudo modificar.
+     * @access public
      */
     function setActivo($id, $activo = 1) {
         return $this->modificarNodo($this->datos, $id, 'activo', $activo);
@@ -177,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) {