Documentación GVHIDRA 3.1.5
Referencia de la Clase HTML_IgepArbol
Diagrama de herencias de HTML_IgepArbol
HTML_TreeMenu

Métodos públicos

 HTML_IgepArbol ()
 arbolFicheros ($path=".")
 _recorreDirectorio ($path)
anyadeNodoHijo (&$node)
creaNodoHijo ($texto, $enlace="#")
 arbolXML ($xml)
 _XML2Arbol (&$nArbol, &$nodoXML)
 _XML2Nodo (&$nodoXML)
 printMenu ($tipo="arbol")
 generaMenu ($tipo="arbol")

Descripción detallada

HTML_IgepTreeMenu Class

Clase PHP para gestionar rboles dinmicos de expansin en PHP y javascript Para una correcta visualizacin se recomienda navegadores compatibles con la API DOM del W3C, es decir, IExplorer 5.5 o superior o navegadores de la familia Mozilla (Firefox, Mozilla...). Esta clase se basa en HTML_TreeMenu de Richard Heyes y Harald Radi de ella hereda todas las propiedades y extiende algunas de ellas para integrarse mejor en el proyecto IGEP

Definición en la línea 64 del archivo IgepTreeMenu.php.


Documentación de las funciones miembro

_recorreDirectorio ( path)

Metodo privado para el recorrido recursivo de un directorio creando los nodos del arbol private

Parámetros:
object$nodeEl nodo a aadir, de la clase HTML_TreeNode object.
Devuelve:
object Referencia al nuevo nodo aadido al rbol
Parámetros:
string$pathCadena con la ruta al directorio base a explorar

Definición en la línea 96 del archivo IgepTreeMenu.php.

        {
                if (!$dir = opendir($path)) 
                {
                        return false;
                }
                $files = array();
                //Creamos un nodo
                $nodo   = new HTML_IgepNodo (
                        array( //Vector de preferencias
                                'text' => basename($path), //Texto del nodo
                                //'link' => basename($path), //Enlace
                                'icon' => "folder.gif", //Icno minimizado
                                'expandedIcon' => "folder-expanded.gif", //Icono Expandido
                                'expanded' => false //Si aparece expandido o no
                        ),
                        array(
                                'onclick' => "",
                        )
                );//Fin nodo    
                while (($file = readdir($dir)) !== false)//Mientras queden ficheros en el directorio...
                {
                        if ($file != '.' && $file != '..') //Si tratamos un fichero...
                        {
                                if (@is_dir("$path/$file")) 
                                {
                                        $addnode = &$this->_recorreDirectorio("$path/$file");
                                }
                                else
                                {
                                        $addnode = new HTML_IgepNodo (
                                                array( //Vector de preferencias
                                                        'text' => $file, //Texto del nodo
                                                        'link' => $path."/".$file, //Enlace
                                                        'icon' => "file.gif", //Icno minimizado
                                                        'expandedIcon' => "folder-expanded.gif", //Icono Expandido
                                                        'expanded' => false //Si aparece expandido o no
                                                )
                                        );
                                }
                                $nodo->anyadeNodoHijo($addnode);
                        }
                }
                closedir($dir);
                return $nodo;
        }//Fin _recorreDirectorio
_XML2Arbol ( &$  nArbol,
&$  nodoXML 
)

Funcion recursiva, a partir de una rama XML la recorre construyendo el rbol en PHP. private

Parámetros:
object$nodoArbolNodo del arbol PHP
object$nodoXMLDOMNode del PHP XML

Definición en la línea 221 del archivo IgepTreeMenu.php.

        {
                $nodoHijoXML = null;
                $nodoArbolHijo = null;
                
                if ($nodoHijoXML = $nodoXML->firstChild)//Si tiene hijos...
                {
                        while ($nodoHijoXML) 
                        {
                                //Tratamos el NODO hijo 
                                $nodoArbolHijo = &$nArbol->anyadeNodoHijo(HTML_IgepArbol::_XML2Nodo($nodoHijoXML));
                                
                                //Tratamos recursivamente el nodo
                                HTML_IgepArbol::_XML2Arbol($nodoArbolHijo, $nodoHijoXML);
                                //Avanzamos al sigueinte hijo
                                $nodoHijoXML = $nodoHijoXML->nextSibling;
                        }
                }
        }//Fin _XML2Arbol
_XML2Nodo ( &$  nodoXML)

Extrae la informacin del doto XML que debe aplicar al nodo del Arbol

private

Parámetros:
object$nodoArbolNodo del arbol PHP creado
object$nodoXMLDOMNode del PHP XML
Devuelve:
object $nodoArbol Nodo del arbol PHP creado

Definición en la línea 252 del archivo IgepTreeMenu.php.

        {       
                //Obtenemos los atributos del XML
                $textoNodo = utf8_decode ($nodoXML->getAttribute("texto"));

                //Posible solucin al problema de los saltos de lnea,
                //o bien se "escapan" los saltos
                //o bien se transforma en entidades HTML
                //$textoNodo = str_replace("\n",'',$textoNodo);
                //$textoNodo = htmlentities($textoNodo);
                
                $seleccionado =null;
                //Obtenemos los atributos del XML
                $seleccionado = $nodoXML->getAttribute("seleccionado");
                $desplegable = $nodoXML->getAttribute("desplegable");
                $nodoId = $nodoXML->getAttribute("id");
                $ramaSeleccion = $nodoXML->getAttribute('ramaSeleccion');
        
                
                $enlaceNodo = $nodoXML->getAttribute("enlace");
                if($enlaceNodo=="")     $enlaceNodo = "#";
                
                $iconoFichero ="file.gif";//Icono para los ficheros                             
                $expandido = false;
                //Si el nodo es desplegable por negocio, o tiene hijos...
                if($desplegable == '1')
                        $iconoFichero ='';
                if (
                        ($seleccionado=='1') ||
                        ($nodoId=='1') ||
                        ($ramaSeleccion=='1')
                        ) 
                {                                                                       
                        $expandido = true;
                }               
                if ($nodoXML->hasChildNodes()) $iconoFichero ="";
                
                //Construimos el nodo 
                $nodoArbol = new HTML_IgepNodo 
                (
                        array( //Vector de preferencias
                                'text' => $textoNodo, //Texto del nodo
                                'link' => $enlaceNodo, //Enlace
                                'icon' => $iconoFichero, //Icno minimizado
                                'expandedIcon' => "", //Icono Expandido                         
                                'expanded' => $expandido //Si aparece expandido o no
                        )
                );

                if ( ($seleccionado !="no") && ($seleccionado !="false") && ($seleccionado != null) )
                $nodoArbol->nodoSeleccionado = true;
                
                return $nodoArbol;
        }//Fin _XML2Nodo        
& anyadeNodoHijo ( &$  node)

Aade un nodo al rbol, se sobrecarga el metodo addItem de TreeMenu para asociar la CSS de la guia de estilo al nodo aadido public

Parámetros:
object$nodeEl nodo a aadir, de la clase HTML_TreeNode object.
Devuelve:
object Referencia al nuevo nodo aadido al rbol

Definición en la línea 151 del archivo IgepTreeMenu.php.

        {
                $claseCSS = "arbolIgep";
                if ($node->nodoSeleccionado == true) $claseCSS .="seleccionado";
                $node->cssClass = $claseCSS;
                $this->items[] = &$node;
                return $this->items[count($this->items) - 1];
        }//Fin anyadeNodoHijo   
arbolFicheros ( path = ".")

Construye un arbol recogiendo la informacin a partir del directorio de ficheros indicado en el argumento path

Parámetros:
string$pathCadena con la ruta al directorio base a explorar

Definición en la línea 82 del archivo IgepTreeMenu.php.

        {
                $this->addItem($this->_recorreDirectorio($path));
        }//Fin arbolFicheros    
arbolXML ( xml)

Construye un arbol a partir de la estructura XML pasada como argumento

Parámetros:
string$tipoIndica si debe representarse como arbol o como un listBox

Definición en la línea 196 del archivo IgepTreeMenu.php.

        {
                $docXML = DOMDocument::loadXML
                (
                        $xml,
                        DOMXML_LOAD_PARSING + //0
                        DOMXML_LOAD_COMPLETE_ATTRS + //8
                        DOMXML_LOAD_SUBSTITUTE_ENTITIES + //4
                        DOMXML_LOAD_DONT_KEEP_BLANKS //16 
                );
                
                //Raiz del documento XML
                $raizXML = &$docXML->documentElement;
                
                $this->_XML2Arbol($this, $raizXML);     
        }//Fin arbolXML
& creaNodoHijo ( texto,
enlace = "#" 
)

Crea un nodo con el texto y el enlace que se pasan como parmetros y lo aade como hijo del nodo public

Parámetros:
string$textoEl texto del nodo a aadir
string$enlaceEl enlace o link del nodo si es que null
Devuelve:
object Referencia al nuevo nodo aadido al rbol

Definición en la línea 169 del archivo IgepTreeMenu.php.

        {
                if ($enlace!="#") //Si NO tiene enlace, no hay icono de fichero
                        $icono ="file.gif";
                else
                        $icono ="";
                $node = new HTML_IgepNodo 
                (
                        array
                        ( //Vector de preferencias
                                'text' => $texto, //Texto del nodo
                                'link' => $enlace, //Enlace
                                'icon' => $icono, //Icno minimizado
                                'expandedIcon' => $icono, //Icono Expandido                             
                                'expanded' => false //Si aparece expandido o no                                                 
                        )
                );
                $node->cssClass="arbolIgep";
                $this->items[] = &$node;
                return $this->items[count($this->items) - 1];
        }//Fin creaNodoHijo
generaMenu ( tipo = "arbol")

Definición en la línea 331 del archivo IgepTreeMenu.php.

        {
                if ($tipo=="arbol")
                {
                        $menuPresenta = new HTML_TreeMenu_DHTML($this, array('images' => IMG_PATH_CUSTOM.'arbol', 'isDynamic'=>true, 'linkTarget'=>'oculto' ,'defaultClass' => 'arbolIgep'));
                }
                else //if ($tipo=="lista")
                {
                        $menuPresenta  = new HTML_TreeMenu_Listbox($this, array('linkTarget' => 'oculto'));
                        $menuPresenta->promoText  = 'Seleccione...';
                        $menuPresenta->submitText = 'Ir';
                }
                $codigo = $menuPresenta->toHTML();
                return $codigo;
        }

Constructor

public

Definición en la línea 71 del archivo IgepTreeMenu.php.

        {
                parent::HTML_TreeMenu();
        }//Fin HTML_IgepArbol
printMenu ( tipo = "arbol")

Imprime el arbol en pantalla

Parámetros:
string$tipoIndica si debe representarse como arbol o como un listBox

Definición en la línea 315 del archivo IgepTreeMenu.php.

        {
                if ($tipo=="arbol")
                {
                        $menuPresenta = new HTML_TreeMenu_DHTML($this, array('images' => IMG_PATH_CUSTOM.'arbol', 'isDynamic'=>true, 'defaultClass' => 'arbolIgep'));
                }
                else //if ($tipo=="lista")
                {
                        $menuPresenta  = new HTML_TreeMenu_Listbox($this, array('linkTarget' => '_self'));
                        $menuPresenta->promoText  = 'Seleccione...';
                        $menuPresenta->submitText = 'Ir';
                }
                $menuPresenta->printMenu();
        }// Fin Imprime el arbol

La documentación para esta clase fue generada a partir del siguiente fichero: