From ab6ae6d5f45725f9bd31a6ca94dc26ec4fbf17a4 Mon Sep 17 00:00:00 2001 From: Irina Gómez Date: Fri, 24 Apr 2020 19:37:21 +0200 Subject: functions nodos_arbol and grupos_arbol: If there isn't elements returns a empty array: element[int_node_tipe]=Array(); functions lista_grupo_arbol and lista_raiz_arbol: The active zone for show contextual menus is asociated to label (before was to 'li' elements). This avoids zones overlapping function lista_grupo_arbol: Fixs error in classrooms tree: before to list groups, the order of elements is incremented function lista_raiz_arbol: If all nodes is equal shows root tree. If nodes are diferent shows root and first level of tree. --- admin/WebConsole/includes/arbol.php | 109 ++++++++++++++++++++---------------- 1 file changed, 62 insertions(+), 47 deletions(-) diff --git a/admin/WebConsole/includes/arbol.php b/admin/WebConsole/includes/arbol.php index d26dbc98..d1cbe997 100644 --- a/admin/WebConsole/includes/arbol.php +++ b/admin/WebConsole/includes/arbol.php @@ -5,9 +5,9 @@ /** * 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; @@ -15,27 +15,27 @@ function grupos_arbol($tipo_nodo) { $grupos_hijos=Array(); $sql=""; - $ambito=""; + $num_tipo=""; switch ($tipo_nodo){ case 'aulas': global $AMBITO_GRUPOSAULAS; - $ambito=$AMBITO_GRUPOSAULAS; + $num_tipo=$AMBITO_GRUPOSAULAS; break; case 'componenteshardware': global $AMBITO_GRUPOSCOMPONENTESHARD; - $ambito=$AMBITO_GRUPOSCOMPONENTESHARD; + $num_tipo=$AMBITO_GRUPOSCOMPONENTESHARD; break; case 'componentessoftware': global $AMBITO_GRUPOSCOMPONENTESSOFT; - $ambito=$AMBITO_GRUPOSCOMPONENTESSOFT; + $num_tipo=$AMBITO_GRUPOSCOMPONENTESSOFT; break; case 'imagenes': - $ambito="70, 71, 72"; + $num_tipo="70, 71, 72"; break; case 'menus': global $AMBITO_GRUPOSMENUS; - $ambito=$AMBITO_GRUPOSMENUS; + $num_tipo=$AMBITO_GRUPOSMENUS; break; case 'ordenadores': $sql="SELECT gruposordenadores.idgrupo AS id, nombregrupoordenador AS nombre, @@ -47,41 +47,39 @@ function grupos_arbol($tipo_nodo) { break; case 'perfileshardware': global $AMBITO_GRUPOSPERFILESHARD; - $ambito=$AMBITO_GRUPOSPERFILESHARD; + $num_tipo=$AMBITO_GRUPOSPERFILESHARD; break; case 'perfilessoftware': global $AMBITO_GRUPOSPERFILESSOFT; - $ambito=$AMBITO_GRUPOSPERFILESSOFT; + $num_tipo=$AMBITO_GRUPOSPERFILESSOFT; break; case 'perfilessoftwareincremental': global $AMBITO_GRUPOSSOFTINCREMENTAL; - $ambito=$AMBITO_GRUPOSSOFTINCREMENTAL; + $num_tipo=$AMBITO_GRUPOSSOFTINCREMENTAL; break; case 'procedimientos': global $AMBITO_GRUPOSPROCEDIMIENTOS; - $ambito=$AMBITO_GRUPOSPROCEDIMIENTOS; + $num_tipo=$AMBITO_GRUPOSPROCEDIMIENTOS; break; case 'repositorios': global $AMBITO_GRUPOSREPOSITORIOS; - $ambito=$AMBITO_GRUPOSREPOSITORIOS; + $num_tipo=$AMBITO_GRUPOSREPOSITORIOS; break; case 'tareas': global $AMBITO_GRUPOSTAREAS; - $ambito=$AMBITO_GRUPOSTAREAS; + $num_tipo=$AMBITO_GRUPOSTAREAS; break; } - if ($sql == "" && $ambito != "") { + if ($sql == "" && $num_tipo != "") { $sql="SELECT idgrupo AS id, nombregrupo AS nombre, grupos.grupoid AS grupopadre, tipo AS conjuntoid FROM grupos - WHERE idcentro=$idcentro AND tipo IN ($ambito) + WHERE idcentro=$idcentro AND tipo IN ($num_tipo) ORDER BY tipo, grupopadre, grupoid;"; } if ($sql == "") return ($grupos_hijos); $rs=new Recordset; $cmd->texto=$sql; - //echo "text: ".$cmd->texto; - //echo "

"; $rs->Comando=&$cmd; if (!$rs->Abrir()) return($grupos_hijos); @@ -139,30 +137,32 @@ function lista_grupo_arbol($tipo_nodo, $tipo, $idgrupo, $nivel, $orden, $nodos, if (isset ($grupos[$tipo][$idgrupo])){ foreach ($grupos[$tipo][$idgrupo] as $hijo) { $orden=$orden+1; - echo '
  • '."\n"; - //echo '
  • '."\n"; + echo '
  • + '."\n"; + $orden++; $orden=lista_grupo_arbol($tipo_nodo, $tipo, $hijo["id"], $nivel, $orden, $nodos, $grupos); } echo "
  • "."\n"; } - // creo la lista de las imágenes dentro del grupo (si existen). + // Creo la lista de las nodos 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 '
  • '; - echo ''."\n" ; + echo '
  • + + '."\n" ; // Listo grupo de ordenadores lista_grupo_arbol("ordenadores",$nodo["id"],0, $nivel, $orden,$ordenadores,$grp_ordenadores); } else { - echo '
  • '; - echo ''; - echo ' '.$nodo["descripcion"]; - echo ''; + echo '
  • + '.$nodo["descripcion"].''; } echo "
  • "."\n"; } @@ -173,7 +173,8 @@ function lista_grupo_arbol($tipo_nodo, $tipo, $idgrupo, $nivel, $orden, $nodos, /** - * Devuelve un array de grupos de nodos. Ordenados por tipos de nodos y grupo + * Construye la parte del árbol correspondiente al raíz. Si los nodos son de distintos tipos muestra también el primer nivel (ej: procedimientos y tareas). + * * @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 @@ -191,17 +192,24 @@ function lista_raiz_arbol ($tipo_nodo, $nodos, $grupos){ $grp_ordenadores=grupos_arbol("ordenadores"); } echo '