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.=''. $this->titulotabla .' |
';
$arbol_total.='';
$arbol_total.='';
$arbol_total.='';
$arbol_total.=$this->_arbolXmlrecur(0);
$arbol_total.=' ';
$arbol_total.=' | ';
$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.='';
$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].'"> | ';
}
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.='tipotabla<2){
$arbol.=' onclick="clickLiteralNodo(this ,' ."'".$this->baseurlimg."'".');';
$arbol.=" ".$clicksupnodo.'"'.$nodovalue.$mouseovernodo.$clickcontextualnodo;
}
$arbol.=' >'.$infonodo.' | ';
$arbol.='
';
$arbol.='
';
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