gXML=new XmlPhp($fXML,$fileocade); $this->baseurlimg=$baseurlimg; $this->clasedefault=$clasedefault; $this->nivelexp=$nivelexp; $this->x=$x; $this->y=$y; $this->tipotabla=$tipotabla; $this->titulotabla=$titulotabla; // Anchura de los distibtos tipos de tablas if($this->tipotabla>0){ $this->anchoM=" width=100% "; $this->ancho=" width=100% "; } else{ $this->anchoM=" width=100% "; $this->ancho=""; } for($i=0;$i<=5;$i++){ // Inicializar $this->c_imgnivel[$i]=$this->baseurlimg.'/nada.gif'; $this->v_imgnivel[$i]="nada"; } $this->nodos_count=0; } /*------------------------------------------------------------------------------------------------ Esta función devuelve una cadena con el contenido de un treeview en código HTML ------------------------------------------------------------------------------------------------*/ Function CreaArbolVistaXML(){ if (!$this->gXML->NodoRaiz()) return; // No existe documento XML que analizar $arbol_total='anchoM.' class="'.$this->clasedefault. '" style="POSITION:absolute;TOP:'.$this->y.'px;LEFT:'.$this->x.'px" class=texto_arbol cellspacing=0 cellpadding=0 border=0>'; if($this->tipotabla>0) $arbol_total.=''; $arbol_total.=''; $arbol_total.=''; $arbol_total.=''; $arbol_total.='
'. $this->titulotabla .'
'; $arbol_total.=''; $arbol_total.=$this->_arbolXmlrecur(0); $arbol_total.='
'; $arbol_total.='
'; return($arbol_total); } // ------------------------------------------------------------------------------------- // Recorrido recursivo del arbol XML // Parámetros: // nivel: nivel del nodo // ------------------------------------------------------------------------------------- function _arbolXmlrecur($nivel){ $arbol_total=""; if ($nivel+1>$this->nivelexp) $displai="none"; else $displai="block"; do{ $gnptr=$this->gXML->nptr; $arbol_total.='nodos_count.'>'; $arbol_total.=''; $arbol_total.=$this->_dibujo_nodo($this->gXML->Nodo(),$nivel,$this->gXML->NumerodeHijos(),$this->gXML->EsUltimoHermano()); $arbol_total.=''; $arbol_total.=''; $this->nodos_count++; if ($this->gXML->PrimerNodoHijo()){ $arbol_total.=''; $arbol_total.=''; $arbol_total.=''; $arbol_total.=$this->_arbolXmlrecur($nivel+1); $arbol_total.='
'; $arbol_total.=''; $arbol_total.=''; } $this->gXML->nptr=$gnptr; }while($this->gXML->SiguienteNodoHermano()); return($arbol_total); } // ------------------------------------------------------------------------------------- // Crea un nodo // Parámetros: // nivel: nivel del nodo // ------------------------------------------------------------------------------------- function CreaNodo($nivel){ $nodo=$this->_dibujo_nodo($this->gXML->Nodo(),$nivel,0,true); return($nodo); } /*------------------------------------------------------------------------------------------------ Dibuja los nodos del árbol parámetros: nodo: La información del nodo nivel: Nivel del nodo nhijos: numero de hijos uhermano: Es true si el nodo es el último de sus hermanos Especificaciones: Los atributos de los nodos pueden ser HTML o especificos de esta aplicación. Lso atributos del nodo propios de ésta son: - clicksupimg: Función suplementaria de la imagen de signo - imagenid: Identificador de la imagen de signo - clickimg: La función que se ejecutará al hacer click sobre la imagen de nodo - downimg: La función que se ejecutará al pulsar el ratón sobre la imagen de nodo - clickcontextualimg: Función que se ejecutara al hacer click con el boton derecho sobre la imagen del nodo - imagenodo: Es la url de la imagen de nodo - infonodo: Es texto que se visualiza del nodo - mouseovernodo: La función a ejecutar cuando se posa el ratón sobre el literal del nodo - clicksupnodo: Función suplementaria del literal del nodo - clickcontextualnodo: Función que se ejecutara al hacer click con el boton derecho sobre el nodo - classnodo: Clase (style) a la que pertenece el nodo - nodoid: identificador del nodo - nodovalue: parametro value del nodo ------------------------------------------------------------------------------------------------*/ function _dibujo_nodo($nodo,$nivel,$nhijos,$uhermano){ // Comprobar descendencia y posición dentro de los hermanos $swu=false; // switch para saber si el nodo es el último hermano $swh=false; // switch para saber si el nodo tiene hijos if ($nhijos>0) $swh=true; $swu=$uhermano; if ($swh){ // Si tiene hijos .. if ($swu){ // Si es el último de sus hermanos .. if ($nivel<$this->nivelexp){ $this->c_imgnivel[$nivel]=$this->baseurlimg.'/menos_c.gif'; $this->v_imgnivel[$nivel]="menos_c"; } else{ $this->c_imgnivel[$nivel]=$this->baseurlimg.'/mas_c.gif'; $this->v_imgnivel[$nivel]="mas_c"; } } else{ // Si NO lo es .. if ($nivel<$this->nivelexp){ $this->c_imgnivel[$nivel]=$this->baseurlimg.'/menos_t.gif'; $this->v_imgnivel[$nivel]="menos_t"; } else{ $this->c_imgnivel[$nivel]=$this->baseurlimg.'/mas_t.gif'; $this->v_imgnivel[$nivel]="mas_t"; } } if ($nivel==0){ if ($this->nivelexp>0) $this->c_imgnivel[$nivel]=$this->baseurlimg.'/menos_root.gif'; else $this->c_imgnivel[$nivel]=$this->baseurlimg.'/mas_root.gif'; } } else{ // Si NO tiene hijos .. if ($swu){ // Si es el último de sus hermanos .. $this->c_imgnivel[$nivel]=$this->baseurlimg.'/nada_c.gif'; $this->v_imgnivel[$nivel]="nada_c"; } else{ // Si no lo es .. $this->c_imgnivel[$nivel]=$this->baseurlimg.'/nada_t.gif'; $this->v_imgnivel[$nivel]="nada_t"; } } // Fin Comprobar descendencia y posición dentro de los hermanos if($this->tipotabla==0) $arbol=''; else $arbol='
'; $arbol.=''; $atributosHTML=$this->gXML->Atributos($nodo); $colornodo=""; $fondonodo=""; $atributosHTML=$this->gXML->TomaAtributoEspecial("colornodo",$colornodo,$atributosHTML); $atributosHTML=$this->gXML->TomaAtributoEspecial("fondonodo",$fondonodo,$atributosHTML); if ($colornodo!="" ) $colornodo=' COLOR:'.$colornodo.";"; if ($fondonodo!="" ) $fondonodo=' BACKGROUND-COLOR:'.$fondonodo.";"; $estilo=$colornodo || $fondonodo; if ($estilo!="" ) $estilo='style="'.$colornodo.$fondonodo.'"'; for ($i=0;$i<$nivel;$i++){ // Niveles previos $arbol.=''; $arbol.=''; } $arbol.=''; // Desplazamiento de la imagen $arbol.=''; } else $arbol.=''; $imagenodo=""; $clickimg=""; $downimg=""; $clickcontextualimg=""; $styleimg=""; $atributosHTML=$this->gXML->TomaAtributoEspecial("imagenodo",$imagenodo,$atributosHTML); $atributosHTML=$this->gXML->TomaAtributoEspecial("clickimg",$clickimg,$atributosHTML); $atributosHTML=$this->gXML->TomaAtributoEspecial("downimg",$downimg,$atributosHTML); $atributosHTML=$this->gXML->TomaAtributoEspecial("clickcontextualimg",$clickcontextualimg,$atributosHTML); if ($clickimg!="" ) $clickimg=' onclick="'.$clickimg.'" '; if ($downimg!="" ) $downimg=' onmousedown="'.$downimg.'" '; if ($clickcontextualimg!="" ) $clickcontextualimg=' oncontextmenu=" '.$clickcontextualimg.'" '; if ($clickimg!="" || $downimg!="" || $clickcontextualimg!="" ) $styleimg=' style="cursor:hand"'; $arbol.=''; $arbol.=''; $clicksupnodo=""; $clickcontextualnodo=""; $classnodo=""; $nodoid=""; $nodovalue=""; $mouseovernodo=""; $infonodo=""; $atributosHTML=$this->gXML->TomaAtributoEspecial("clickcontextualnodo",$clickcontextualnodo,$atributosHTML); $atributosHTML=$this->gXML->TomaAtributoEspecial("clicksupnodo",$clicksupnodo,$atributosHTML); $atributosHTML=$this->gXML->TomaAtributoEspecial("classnodo",$classnodo,$atributosHTML); $atributosHTML=$this->gXML->TomaAtributoEspecial("nodoid",$nodoid,$atributosHTML); $atributosHTML=$this->gXML->TomaAtributoEspecial("nodovalue",$nodovalue,$atributosHTML); $atributosHTML=$this->gXML->TomaAtributoEspecial("colornodo",$colornodo,$atributosHTML); $atributosHTML=$this->gXML->TomaAtributoEspecial("fondonodo",$fondonodo,$atributosHTML); $atributosHTML=$this->gXML->TomaAtributoEspecial("mouseovernodo",$mouseovernodo,$atributosHTML); $atributosHTML=$this->gXML->TomaAtributoEspecial("infonodo",$infonodo,$atributosHTML); if ($clickcontextualnodo!="" ) $clickcontextualnodo=' oncontextmenu="'.$clickcontextualnodo.'" '; if ($mouseovernodo!="" ) $mouseovernodo=' onmouseover="'.$mouseovernodo.'" '; if ($nodovalue!="" ) $nodovalue=' value="'.$nodovalue.'" '; if (!$classnodo) $classnodo=$this->clasedefault; $arbol.=''; $arbol.=''; $arbol.='
'; $imagenid=""; $clicksupimg=""; $atributosHTML=$this->gXML->TomaAtributoEspecial("imagenid",$imagenid,$atributosHTML); $atributosHTML=$this->gXML->TomaAtributoEspecial("clicksupimg",$clicksupimg,$atributosHTML); if ($clicksupimg!="") $clicksupimg.=';'; if ($swh){ // El nodo tiene hijos $arbol.='baseurlimg."'".','.$nivel.');'.$clicksupimg.'" src="'.$this->c_imgnivel[$nivel].'" width="16px" height="16px" value="'.$this->v_imgnivel[$nivel].'">'; $arbol.='tipotabla<2){ $arbol.=' onclick="clickLiteralNodo(this ,' ."'".$this->baseurlimg."'".');'; $arbol.=" ".$clicksupnodo.'"'.$nodovalue.$mouseovernodo.$clickcontextualnodo; } $arbol.=' >'.$infonodo.'
'; if ($swu) $this->c_imgnivel[$nivel]=$this->baseurlimg.'/nada.gif'; else $this->c_imgnivel[$nivel]=$this->baseurlimg.'/nada_l.gif'; return($arbol); } } // Fin de la clase