diff options
author | irinagomez <irinagomez@us.es> | 2020-03-20 14:23:40 +0000 |
---|---|---|
committer | irinagomez <irinagomez@us.es> | 2020-03-20 14:23:40 +0000 |
commit | 4f16237e29c9678f0edde0806ceb84050caa777d (patch) | |
tree | 389a933ca2daf361aa4292a343f5b64c2bc5be65 /admin/WebConsole/includes | |
parent | a9cb5552a02a2e57c0268f998a45233ca90e8860 (diff) |
#969 node tree: Left frame shows node tree.
Functions lista_raiz_arbol and lista_grupo_arbol are created and used in all left frames.
Diffstat (limited to 'admin/WebConsole/includes')
-rw-r--r-- | admin/WebConsole/includes/arbol.php | 154 |
1 files changed, 133 insertions, 21 deletions
diff --git a/admin/WebConsole/includes/arbol.php b/admin/WebConsole/includes/arbol.php index 89166f17..d26dbc98 100644 --- a/admin/WebConsole/includes/arbol.php +++ b/admin/WebConsole/includes/arbol.php @@ -1,19 +1,21 @@ <?php -/* Funciones auxiliares para pintar árboles de nodos en el frame izquierdo */ - -// grupos(tipo_nodo) -// Descripción: Devuelve un array de grupos de imágenes. Ordenados por tipos de imágenes y grupo padre -// Parámetros: -// tipo_nodo: str tipo de elemento a mostrar en el árbol (aulas, imagenes, ...) -// devuelve: array de grupos. -// Nota: usamos la variable tipo por compatibilidad con grupos de imágenes. +/** @file includes/arbol.php + * Funciones auxiliares para pintar árboles de nodos en el frame izquierdo + */ +/** + * Devuelve un array de grupos de nodos. Ordenados por tipos de nodos y grupo + * @param[tipo_nodo] str tipo de elemento a mostrar en el árbol (aulas, imagenes, ...) + * @return array de grupos. + * @note usamos la variable tipo por compatibilidad con grupos de imágenes. + */ function grupos_arbol($tipo_nodo) { global $cmd; global $idcentro; $grupos_hijos=Array(); $sql=""; + $ambito=""; switch ($tipo_nodo){ case 'aulas': @@ -78,8 +80,8 @@ function grupos_arbol($tipo_nodo) { $rs=new Recordset; $cmd->texto=$sql; - echo "text: ".$cmd->texto; - echo "<br><br>"; + //echo "text: ".$cmd->texto; + //echo "<br><br>"; $rs->Comando=&$cmd; if (!$rs->Abrir()) return($grupos_hijos); @@ -111,6 +113,107 @@ function grupos_arbol($tipo_nodo) { return ($grupos_hijos); } + +/** + * Construye la parte del árbol correspondiente a un grupo de nodos: lista sus nodos y sus grupos hijos. + * + * @param[tipo_nodo] str tipo de elemento que muestra el árbol + * @param[idgrupo] int identificados del grupo que se está listando + * @param[nivel] int nivel de profundidad del árbol + * @param[orden] int orden dentro del nivel del árbol + * @param[nodos] array nodos + * @param[grupos] array grupos de nodos + * @return orden de la lista del último elemento listado + */ +function lista_grupo_arbol($tipo_nodo, $tipo, $idgrupo, $nivel, $orden, $nodos, $grupos){ + /* Al cargar la página sólo se muestra el primer nivel del árbol. */ + $class=($nivel==1)? "": 'class="interior"'; + $nivel=$nivel+1; + if ($tipo_nodo == "aulas") { + global $ordenadores; + global $grp_ordenadores; + global $idaulas; + } + echo "\n".' <ul '.$class." >\n"; + // si existen grupos hijos del actual creo la lista con la función listaGrupo. + if (isset ($grupos[$tipo][$idgrupo])){ + foreach ($grupos[$tipo][$idgrupo] as $hijo) { + $orden=$orden+1; + echo ' <li id="grupo_'.$hijo["id"].'" oncontextmenu="mostrar_menu(event,'. $tipo.', '.$hijo["id"].', \'menu-groups-'.$tipo_nodo.'\');return false;"><input type="checkbox" name="list" id="nivel'.$nivel.'-'.$orden.'"><label for="nivel'.$nivel.'-'.$orden.'"><img class="menu_icono" src="../images/iconos/carpeta.gif">'.$hijo["nombre"].'</label>'."\n"; + //echo ' <li oncontextmenu="mostrar_menu(event,'. $tipo.', '.$hijo["id"].', \'menu-groups\');return false;"><input type="checkbox" name="list" id="nivel'.$nivel.'-'.$hijo["id"].'"><label for="nivel'.$nivel.'-'.$hijo["id"].'"><img class="menu_icono" src="../images/iconos/carpeta.gif">'.$hijo["nombre"].'</label>'."\n"; + + $orden=lista_grupo_arbol($tipo_nodo, $tipo, $hijo["id"], $nivel, $orden, $nodos, $grupos); + } + echo " </li>"."\n"; + } + // creo la lista de las imágenes dentro del grupo (si existen). + if (isset ($nodos[$tipo][$idgrupo])){ + foreach ($nodos[$tipo][$idgrupo] as $nodo){ + if ($tipo_nodo == "aulas"){ + // Incluyo input para que se pueda abrir el nodo + echo ' <li id="'.$tipo_nodo.'_'.$nodo["id"].'" oncontextmenu="ocultar_menu(); mostrar_menu(event,'. $tipo.', '.$nodo["id"].', \'menu-'.$tipo_nodo.'\');return false;">'; + echo '<input type="checkbox" name="list" id="nivel'.$nivel.'-'.$orden.'"><label for="nivel'.$nivel.'-'.$orden.'">'; + echo '<img class="menu_icono" src="../images/iconos/imagen.gif"> '.$nodo["descripcion"]; + echo '</label>'."\n" ; + + // Listo grupo de ordenadores + lista_grupo_arbol("ordenadores",$nodo["id"],0, $nivel, $orden,$ordenadores,$grp_ordenadores); + } else { + echo ' <li id="'.$tipo_nodo.'_'.$nodo["id"].'" oncontextmenu="ocultar_menu(); mostrar_menu(event,'. $tipo.', '.$nodo["id"].', \'menu-'.$tipo_nodo.'\');return false;">'; + echo '<a href="#r">'; + echo '<img class="menu_icono" src="../images/iconos/imagen.gif"> '.$nodo["descripcion"]; + echo '</a>'; + } + echo " </li>"."\n"; + } + } + echo " </ul>"."\n"; + return($orden); +} + + +/** + * Devuelve un array de grupos de nodos. Ordenados por tipos de nodos y grupo + * @param[tipo_nodo] str tipo de elemento a mostrar en el árbol (aulas, imagenes, ...) + * @param[nodos] array nodos a mostrar + * @param[grupos] array grupos de nodos a mostrar + * @return Escribe la raíz del árbol de nodos y el primer nivel. + */ +function lista_raiz_arbol ($tipo_nodo, $nodos, $grupos){ + global $TbMsg; + global $NUM_TIPOS_IMAGENES; + $orden=0; + if ($tipo_nodo == "aulas") { + // Definimos variables para mostrar ordenadores + global $ordenadores; + global $grp_ordenadores; + $ordenadores=nodos_arbol("ordenadores"); + $grp_ordenadores=grupos_arbol("ordenadores"); + } + echo '<ul id="menu_arbol">'."\n"; + echo ' <li><input type="checkbox" name="list" id="nivel1-1"><label for="nivel1-1"><img class="menu-icono" src="../images/iconos/imagenes.gif">'.str_replace ('"','',$TbMsg[9]).'</label>'."\n"; + $keys=array_keys($nodos); + if (count($keys) == 1) { + lista_grupo_arbol($tipo_nodo, $keys[0], 0, 1, $orden, $nodos, $grupos); + } else { + foreach ($keys as $tipo) { + // Recorremos los grupos hijos desde el cero + echo ' <ul>'."\n"; + echo ' <li id="grupo_'.$tipo.'_0" oncontextmenu="mostrar_menu(event, '. $tipo.', 0, \'menu-tipes\');return false;">'."\n"; + //echo ' <input type="checkbox" name="list" id="nivel2-'.$tipo.'"><label for="nivel2-'.$tipo.'"><img class="menu-icono" src="../images/iconos/carpeta.gif"> '.$tipo.' '.str_replace ('"','',$TbMsg[10+$tipo]).'</label>'."\n"; + echo ' <input type="checkbox" name="list" id="nivel2-'.$tipo.'"><label for="nivel2-'.$tipo.'"><img class="menu-icono" src="../images/iconos/carpeta.gif"> Falta nombre del tipo: '.$tipo.'</label>'."\n"; + $orden=lista_grupo_arbol($tipo_nodo, $tipo, 0, 2, $orden, $nodos, $grupos); + $orden=$orden+1; + echo ' </li>'."\n"; + echo ' </ul>'."\n"; + } + } + echo " </li>"."\n"; + echo "</ul>"."\n"; +} + + + /* * Descripción: Devuelve un array de nodos ordenados por el grupo al que pertenecen. * Parámetros: @@ -126,7 +229,8 @@ function nodos_arbol($tipo_nodo){ switch ($tipo_nodo){ case 'aulas': - $sql="SELECT idaula AS id, nombreaula AS nombre, grupoid, '1' AS conjuntoid + global $AMBITO_GRUPOSAULAS; + $sql="SELECT idaula AS id, nombreaula AS nombre, grupoid, '$AMBITO_GRUPOSAULAS' AS conjuntoid FROM aulas WHERE idcentro=$idcentro ORDER BY conjuntoid, grupoid;"; break; @@ -137,15 +241,17 @@ function nodos_arbol($tipo_nodo){ WHERE activo=1 ORDER BY conjuntoid, grupoid;"; break; case 'componenteshardware': + global $AMBITO_GRUPOSCOMPONENTESHARD; $sql="SELECT hardwares.idhardware AS id, hardwares.descripcion AS nombre, - tipohardwares.urlimg, '2' AS conjuntoid, grupoid + tipohardwares.urlimg, '$AMBITO_GRUPOSCOMPONENTESHARD' AS conjuntoid, grupoid FROM hardwares INNER JOIN tipohardwares WHERE hardwares.idtipohardware=tipohardwares.idtipohardware AND idcentro=$idcentro ORDER BY conjuntoid, grupoid;"; break; case 'componentessoftware': + global $AMBITO_GRUPOSCOMPONENTESSOFT; $sql="SELECT softwares.idsoftware AS id, softwares.descripcion AS nombre, - tiposoftwares.urlimg, '2' AS conjuntoid, grupoid + tiposoftwares.urlimg, '$AMBITO_GRUPOSCOMPONENTESSOFT' AS conjuntoid, grupoid FROM softwares INNER JOIN tiposoftwares WHERE softwares.idtiposoftware=tiposoftwares.idtiposoftware AND idcentro=$idcentro ORDER BY conjuntoid, grupoid;"; @@ -159,7 +265,8 @@ function nodos_arbol($tipo_nodo){ WHERE imagenes.idcentro=$idcentro ORDER BY conjuntoid, grupoid;"; break; case 'menus': - $sql="SELECT idmenu AS id, descripcion AS nombre, '1' AS conjuntoid, grupoid + global $AMBITO_GRUPOSMENUS; + $sql="SELECT idmenu AS id, descripcion AS nombre, '$AMBITO_GRUPOSMENUS' AS conjuntoid, grupoid FROM menus WHERE idcentro=$idcentro ORDER BY conjuntoid, grupoid;"; break; @@ -172,31 +279,36 @@ function nodos_arbol($tipo_nodo){ ORDER BY conjuntoid, grupoid;"; break; case 'perfileshardware': + global $AMBITO_GRUPOSPERFILESHARD; $sql="SELECT idperfilhard AS id, descripcion AS nombre, - '3' AS conjuntoid, grupoid + '$AMBITO_GRUPOSPERFILESHARD' AS conjuntoid, grupoid FROM perfileshard WHERE idcentro=$idcentro ORDER BY conjuntoid, grupoid;"; break; case 'perfilessoftware': + global $AMBITO_GRUPOSPERFILESSOFT; $sql="SELECT idperfilsoft AS id, descripcion AS nombre, - '3' AS conjuntoid, grupoid + '$AMBITO_GRUPOSPERFILESSOFT' AS conjuntoid, grupoid FROM perfilessoft WHERE idcentro=$idcentro ORDER BY conjuntoid, grupoid;"; break; case 'procedimientos': - $sql="SELECT idprocedimiento AS id, descripcion AS nombre, '2' AS conjuntoid, grupoid + global $AMBITO_GRUPOSPROCEDIMIENTOS; + $sql="SELECT idprocedimiento AS id, descripcion AS nombre, '$AMBITO_GRUPOSPROCEDIMIENTOS' AS conjuntoid, grupoid FROM procedimientos WHERE idcentro=$idcentro ORDER BY conjuntoid, grupoid;"; break; case 'repositorios': - $sql="SELECT idrepositorio AS id, nombrerepositorio AS nombre, '1' AS conjuntoid, grupoid + global $AMBITO_GRUPOSREPOSITORIOS; + $sql="SELECT idrepositorio AS id, nombrerepositorio AS nombre, '$AMBITO_GRUPOSREPOSITORIOS' AS conjuntoid, grupoid FROM repositorios WHERE idcentro=$idcentro ORDER BY conjuntoid, grupoid;"; break; case 'tareas': - $sql="SELECT idtarea AS id, descripcion AS nombre, ambito, '3' AS conjuntoid, grupoid + global $AMBITO_GRUPOSTAREAS; + $sql="SELECT idtarea AS id, descripcion AS nombre, ambito, '$AMBITO_GRUPOSTAREAS' AS conjuntoid, grupoid FROM tareas WHERE idcentro=$idcentro ORDER BY conjuntoid, grupoid;"; break; @@ -214,8 +326,8 @@ function nodos_arbol($tipo_nodo){ break; } -echo "sql: ".$sql; -echo "<br><br>"; +//echo "sql: ".$sql; +//echo "<br><br>"; $nodos=Array(); $grupos_hijos=Array(); $rs=new Recordset; |