summaryrefslogtreecommitdiffstats
path: root/admin/WebConsole/clases/MenuContextual.php
diff options
context:
space:
mode:
authorramon <ramongomez@us.es>2009-10-29 10:39:24 +0000
committerramon <ramongomez@us.es>2009-10-29 10:39:24 +0000
commit1b9262949ad2e32b4a82338d45fb4b6e5b293fba (patch)
tree3aee6892f32251570b996f7321a06980588cbc1e /admin/WebConsole/clases/MenuContextual.php
parentafcf2a19aa44ea6d03e02abd05b6f2938d687225 (diff)
Reorganización directorios OpenGNSys Admin.
git-svn-id: https://opengnsys.es/svn/trunk@455 a21b9725-9963-47de-94b9-378ad31fedc9
Diffstat (limited to 'admin/WebConsole/clases/MenuContextual.php')
-rw-r--r--admin/WebConsole/clases/MenuContextual.php164
1 files changed, 164 insertions, 0 deletions
diff --git a/admin/WebConsole/clases/MenuContextual.php b/admin/WebConsole/clases/MenuContextual.php
new file mode 100644
index 00000000..4c05013e
--- /dev/null
+++ b/admin/WebConsole/clases/MenuContextual.php
@@ -0,0 +1,164 @@
+<?php
+/*==================================================================================================
+Clase para trabajar con menús contextuales.
+
+ Especificaciones de las etiquetas XML:
+ - MENUCONTEXTUAL: Elemento raiz en el se especifican los atributos del <DIV>
+ - ITEM: Especificaciones de cada item.
+ - SEPARADOR: Indica una linea divisoria entre items
+
+ Especificaciones de atributos:
+ - idctx: Identificador del menu contextual (DIV)
+ - imgitem: La url de la imagen que acompañará al literal
+ - alignitem: La alineación del texto del item (por defecto left)
+ - textoitem: El literal del item
+ - subflotante: Si el item despliega otro menu contextual. El valor es el id de ése
+ - maxanchu: Máxima anchura del menu contextual
+ - swimg: Vale 1 si el menu tiene algún item con imagen y 0 en caso contrario
+ - alpulsar: Nombre de la función javascript que se ejecutará en respuesta al evento onclick
+ - clase: Estilo CSS que tendrán los item menu contextual
+ - origen_x: Posición de origen, coordenada x
+ - origen_y: Posición de origen, coordenada y
+
+
+ Especificaciones de eventos:
+ - Los eventos onmouseover y onmouseout están implicitos en la clase por defecto
+ Especificaciones de submenus:
+ - Si una opción lleva un submenu asociado el id de éste va en el atributo name del <TR>
+
+
+==================================================================================================*/
+class MenuContextual{
+ Function MenuContextual($urlImages="../images/flotantes"){
+ $this->urlImg=$urlImages;
+ }
+ /*---------------------------------------------------------------------------------------------
+ Devuelve una cadena en formato HTML de un layer para usarlo como menu contextual
+ Parametros:
+ - cadenaXML: Una cadena en formato XML con los atributos de cada item
+ ---------------------------------------------------------------------------------------------*/
+ function CreaMenuContextual($cadenaXML){
+ $idx=0;
+ $layer="";
+ $idctx="";
+ $maxanchu=100;
+ $swimg=0;
+ $imgitem="";
+ $alignitem="";
+ $textoitem="";
+ $clase="";
+ $subflotante="";
+ $origen_x="0";
+ $origen_y="0";
+
+ $gXML=new XmlPhp($cadenaXML,0);
+ $gXML->NodoRaiz();
+ $atributosHTML=$gXML->Atributos();
+ $atributosHTML=$gXML->TomaAtributoEspecial("maxanchu",$maxanchu,$atributosHTML);
+ $atributosHTML=$gXML->TomaAtributoEspecial("swimg",$swimg,$atributosHTML);
+ $atributosHTML=$gXML->TomaAtributoEspecial("clase",$clase,$atributosHTML);
+ $atributosHTML=$gXML->TomaAtributoEspecial("idctx",$idctx,$atributosHTML);
+ $atributosHTML=$gXML->TomaAtributoEspecial("origen_x",$origen_x,$atributosHTML);
+ $atributosHTML=$gXML->TomaAtributoEspecial("origen_y",$origen_y,$atributosHTML);
+ if(empty($origen_x)) $origen_x=0;
+ if(empty($origen_y)) $origen_y=0;
+ if (!$clase) $clase="menu_contextual";
+ $layer.='<DIV class="'.$clase.'" id="'.$idctx.'" width='.$maxanchu.' style="visibility:hidden;position:absolute;top:'.$origen_y.';left:'.$origen_x.'" >';
+ $nuitems=2;
+ if ($gXML->PrimerNodoHijo()){
+ $layer.='<TABLE border=0 width='.$maxanchu.' border=0 cellspacing=0 cellpadding=0>';
+ $layer.='<TR width='.$maxanchu.' height=3>'; // Primera linea
+ $layer.='<TD width=3 background="'.$this->urlImg.'/esi.gif"></TD>';
+ $layer.='<TD colspan=6 background="'.$this->urlImg.'/lsu.gif"></TD>';
+ $layer.='<TD width=3 background="'.$this->urlImg.'/esd.gif"></TD>';
+ $layer.='</TR>';
+
+ $layer.='<TR width='.$maxanchu.' height=3>'; // Linea de relleno
+ $layer.='<TD width=3 background="'.$this->urlImg.'/liz.gif"></TD>';
+ $layer.='<TD width=3></TD>';
+ $layer.='<TD colspan=4></TD>';
+ $layer.='<TD width=3></TD>';
+ $layer.='<TD width=3 background="'.$this->urlImg.'/ldr.gif"></TD>';
+ $layer.='</TR>';
+ do{
+ $nuitems++;
+ $atributosHTML=$gXML->Atributos();
+ $tiponodo=$gXML->NombreNodo();
+ if ($tiponodo=="ITEM"){
+ $atributosHTML=$gXML->TomaAtributoEspecial("imgitem",$imgitem,$atributosHTML);
+ $atributosHTML=$gXML->TomaAtributoEspecial("textoitem",$textoitem,$atributosHTML);
+ $atributosHTML=$gXML->TomaAtributoEspecial("subflotante",$subflotante,$atributosHTML);
+ $atributosHTML=$gXML->TomaAtributoEspecial("alpulsar",$alpulsar,$atributosHTML);
+ $atributosHTML=$gXML->TomaAtributoEspecial("alignitem",$alignitem,$atributosHTML);
+
+ if ($alignitem==null) $alignitem="left";
+
+ $clickcontextual=' onclick="'.$alpulsar.'" ';
+ $oncontextual=' onmouseover="sobre_contextual(this)" ';
+ $offcontextual="";
+
+ $idx++;
+ $layer.='<TR id='.$idx.' name="'.$subflotante.'" width='.$maxanchu.' '.$clickcontextual.' '.$oncontextual.' '.$offcontextual.' height=20>'; // Linea de item
+ $layer.='<TD width=3 background="'.$this->urlImg.'/liz.gif"></TD>';
+ $layer.='<TD width=3></TD>';
+
+ if ($imgitem!=null){ // Item con imagen
+ $imgonclick="";
+ $layer.='<TD width=20 align=center id="TDimg-'.$idx .'"><IMG width=16 src="'.$imgitem.'"></TD>';
+ $layer.='<TD width=3></TD>';
+ $layer.='<TD align='.$alignitem.' id="TDLit-'.$idx .'" width='.($maxanchu-38).' '.$atributosHTML.'><A href="#" style="text-decoration: none"><SPAN>'.$textoitem.'</SPAN></A></TD>';
+ }
+ else{
+ if ($swimg==1){ // Hay algún item con imagen
+ $layer.='<TD width=20></TD>';
+ $layer.='<TD width=3></TD>';
+ $layer.='<TD align='.$alignitem.' width='.($maxanchu-38).' '.$atributosHTML.'><A href="#" style="text-decoration: none"><SPAN>'.$textoitem.'</SPAN></A></TD>';
+ }
+ else{
+ $layer.='<TD width=10></TD>';
+ $layer.='<TD colspan=2 align='.$alignitem.' width='.($maxanchu-25).' ' .$atributosHTML.' ><A href="#" style="text-decoration: none"><SPAN>'.$textoitem.'</SPAN></A></TD>';
+ }
+ }
+ if ($subflotante!=null)
+ $layer.='<TD valign=middle><IMG width=3 name="swsbfn" align=left src="'.$this->urlImg.'/swsbfn.gif">';
+ else
+ $layer.='<TD width=3 >';
+ $layer.='</TD>';
+ $layer.='<TD width=3></TD>';
+ $layer.='<TD width=3 background="'.$this->urlImg.'/ldr.gif"></TD>';
+ $layer.='</TR>';
+ }
+ if ($tiponodo=="SEPARADOR"){ // Separadores
+ $layer.='<TR width='.$maxanchu.' height=16>'; // Linea de separación
+ $layer.='<TD width=3 background="'.$this->urlImg.'/liz.gif"></TD>';
+ $layer.='<TD width=3></TD>';
+ $layer.='<TD colspan=4 background="'.$this->urlImg.'/sep.gif"></TD>';
+ $layer.='<TD width=3></TD>';
+ $layer.='<TD width=3 background="'.$this->urlImg.'/ldr.gif"></TD>';
+ $layer.='</TR>';
+ }
+
+ }while($gXML->SiguienteNodoHermano());
+
+ $layer.='<TR width='.$maxanchu.' height=3>'; // Linea de relleno
+ $layer.='<TD width=3 background="'.$this->urlImg.'/liz.gif"></TD>';
+ $layer.='<TD width=3></TD>';
+ $layer.='<TD colspan=4></TD>';
+ $layer.='<TD width=3></TD>';
+ $layer.='<TD width=3 background="'.$this->urlImg.'/ldr.gif"></TD>';
+ $layer.='</TR>';
+
+
+ $layer.='<TR width='.$maxanchu.' height=3>'; // Última linea
+ $layer.='<TD width=3 background="'.$this->urlImg.'/eii.gif"></TD>';
+ $layer.='<TD colspan=6 background="'.$this->urlImg.'/lin.gif"></TD>';
+ $layer.='<TD width=3 background="'.$this->urlImg.'/eid.gif"></TD>';
+ $layer.='</TR>';
+ $layer.='</TABLE>';
+ $layer.='<INPUT type=hidden value="-1">'; // Representará el índice seleccionado
+ $layer.='</DIV>';
+ }
+ return($layer);
+ }
+}
+?> \ No newline at end of file