diff options
author | Ramón M. Gómez <ramongomez@us.es> | 2020-06-01 18:01:54 +0200 |
---|---|---|
committer | Ramón M. Gómez <ramongomez@us.es> | 2020-06-01 18:22:33 +0200 |
commit | 34f40d6cc0ee6e8dff503da93ce4b61b13cd5d88 (patch) | |
tree | f91dcfe2364d76e3967c6e01fa47696ca5a3b156 | |
parent | 994e4133f431fc1bbfcd3f2f76f92a09ecda541d (diff) | |
parent | 2421c50ddfcca9b32385eb139e83edbb50bdd883 (diff) |
#944: Merge branch 'labgrid'
7 files changed, 159 insertions, 40 deletions
diff --git a/admin/Database/ogAdmBD-1.1.1.sql b/admin/Database/ogAdmBD-1.1.1.sql new file mode 100644 index 00000000..228d609d --- /dev/null +++ b/admin/Database/ogAdmBD-1.1.1.sql @@ -0,0 +1,22 @@ +### Fichero de actualización de la base de datos. +# OpenGnsys 1.1.1 +#use ogAdmBD + +DROP PROCEDURE IF EXISTS addcols; +# Procedimiento para actualización condicional de tablas. +DELIMITER '//' +CREATE PROCEDURE addcols() BEGIN + # Añadir campos fila y columna para localización de ordenador en el aula (ticket #944). + IF NOT EXISTS (SELECT * FROM information_schema.COLUMNS + WHERE COLUMN_NAME='n_row' AND TABLE_NAME='ordenadores' AND TABLE_SCHEMA=DATABASE()) + THEN + ALTER TABLE ordenadores + ADD n_row SMALLINT DEFAULT 0, + ADD n_col SMALLINT DEFAULT 0; + END IF; +END// +# Ejecutar actualización condicional. +DELIMITER ';' +CALL addcols(); +DROP PROCEDURE addcols; + diff --git a/admin/WebConsole/gestores/gestor_ordenadores.php b/admin/WebConsole/gestores/gestor_ordenadores.php index e0123d6d..0b5321c2 100644 --- a/admin/WebConsole/gestores/gestor_ordenadores.php +++ b/admin/WebConsole/gestores/gestor_ordenadores.php @@ -31,6 +31,8 @@ $idaula=0; $idordenador=0; $nombreordenador=""; $numserie=""; +$n_row=0; +$n_col=0; $ip=""; $mac=""; $idperfilhard=0; @@ -71,6 +73,8 @@ if (isset($_POST["idordenador"])) $idordenador=$_POST["idordenador"]; if (isset($_POST["identificador"])) $idordenador=$_POST["identificador"]; if (isset($_POST["nombreordenador"])) $nombreordenador=$_POST["nombreordenador"]; if (isset($_POST["numserie"])) $numserie=$_POST["numserie"]; +$n_row=$_POST["n_row"]??0; +$n_col=$_POST["n_col"]??0; if (isset($_POST["ip"])) $ip=$_POST["ip"]; if (isset($_POST["mac"])) $mac=str_replace(":","",$_POST["mac"]); if (isset($_POST["idperfilhard"])) $idperfilhard=$_POST["idperfilhard"]; @@ -207,6 +211,8 @@ function Gestiona(){ global $idordenador; global $nombreordenador; global $numserie; + global $n_row; + global $n_col; global $ip; global $mac; global $idaula; @@ -240,6 +246,8 @@ function Gestiona(){ $cmd->CreaParametro("@idordenador",$idordenador,1); $cmd->CreaParametro("@nombreordenador",$nombreordenador,0); $cmd->CreaParametro("@numserie",$numserie,0); + $cmd->CreaParametro("@n_row",$n_row,1); + $cmd->CreaParametro("@n_col",$n_col,1); $cmd->CreaParametro("@ip",$ip,0); $cmd->CreaParametro("@mac",$mac,0); $cmd->CreaParametro("@idperfilhard",$idperfilhard,1); @@ -262,8 +270,8 @@ function Gestiona(){ $duplicates = checkDuplicates($cmd, $datosduplicados, $idordenador, $nombreordenador, $ip, $mac); // Si no hay datos duplicados insertamos el ordenador; if (!$duplicates) { - $cmd->texto="INSERT INTO ordenadores(nombreordenador,numserie,ip,mac,idperfilhard,idrepositorio,oglivedir, - idmenu,idproautoexec,idaula,grupoid,netiface,netdriver,fotoord,validacion,paginalogin,paginavalidacion) VALUES (@nombreordenador,@numserie,@ip,@mac,@idperfilhard,@idrepositorio,@oglivedir, + $cmd->texto="INSERT INTO ordenadores(nombreordenador,numserie,n_row,n_col,ip,mac,idperfilhard,idrepositorio,oglivedir, + idmenu,idproautoexec,idaula,grupoid,netiface,netdriver,fotoord,validacion,paginalogin,paginavalidacion) VALUES (@nombreordenador,@numserie,@n_row,@n_col,@ip,@mac,@idperfilhard,@idrepositorio,@oglivedir, @idmenu,@idprocedimiento,@idaula,@grupoid,@netiface,@netdriver,@fotoordenador,@validacion,@paginalogin,@paginavalidacion)"; } $resul=$cmd->Ejecutar(); @@ -282,7 +290,7 @@ function Gestiona(){ case $op_modificacion: $duplicates = checkDuplicates($cmd, $datosduplicados, $idordenador, $nombreordenador, $ip, $mac); if (!$duplicates) { - $cmd->texto="UPDATE ordenadores SET nombreordenador=@nombreordenador,numserie=@numserie,ip=@ip,mac=@mac,idperfilhard=@idperfilhard, + $cmd->texto="UPDATE ordenadores SET nombreordenador=@nombreordenador,numserie=@numserie,n_row=@n_row,n_col=@n_col,ip=@ip,mac=@mac,idperfilhard=@idperfilhard, idrepositorio=@idrepositorio,oglivedir=@oglivedir,idmenu=@idmenu,idproautoexec=@idprocedimiento,netiface=@netiface,netdriver=@netdriver,fotoord=@fotoordenador,validacion=@validacion,paginalogin=@paginalogin,paginavalidacion=@paginavalidacion WHERE idordenador=@idordenador"; } diff --git a/admin/WebConsole/idiomas/php/cat/propiedades_ordenadores_cat.php b/admin/WebConsole/idiomas/php/cat/propiedades_ordenadores_cat.php index d4e1a97b..d5cd6ef0 100644 --- a/admin/WebConsole/idiomas/php/cat/propiedades_ordenadores_cat.php +++ b/admin/WebConsole/idiomas/php/cat/propiedades_ordenadores_cat.php @@ -29,7 +29,12 @@ $TbMsg[495]="Data/Caché"; $TbMsg[4951]="Caché lliure"; // AGP $TbMsg['COMM_DEFOGLIVE']="Assignat per l'administrador"; -$TbMsg["PROP_SERIALNO"]="Nº de serie"; +$TbMsg["LABEL_SERIALNO"]="Nº de serie"; $TbMsg["WARN_NOTREPO"]="<em>AVISO: sin repositorio asignado.</em>"; $TbMsg["WARN_NOTDETECTED"]="<em>(no detectado)</em>"; $TbMsg['WARN_PROFESSOR']="profesor"; +$TbMsg["LABEL_LOCATION"]="Localización en el aula"; +$TbMsg["PROP_ROW"]="Fila"; +$TbMsg["PROP_COLUMN"]="Columna"; +$TbMsg["VAL_UNSPECIFIED"]="No especificado"; + diff --git a/admin/WebConsole/idiomas/php/eng/propiedades_ordenadores_eng.php b/admin/WebConsole/idiomas/php/eng/propiedades_ordenadores_eng.php index 0a18d8a4..7bc37799 100644 --- a/admin/WebConsole/idiomas/php/eng/propiedades_ordenadores_eng.php +++ b/admin/WebConsole/idiomas/php/eng/propiedades_ordenadores_eng.php @@ -28,7 +28,12 @@ $TbMsg[495]="Content Cache"; $TbMsg[4951]="Cache Free"; // AGP $TbMsg['COMM_DEFOGLIVE']="Assigned by administrator"; -$TbMsg["PROP_SERIALNO"]="Serial No."; +$TbMsg["LABEL_SERIALNO"]="Serial No."; $TbMsg["WARN_NOREPO"]="<em>WARNING: no repository assigned.</em>"; $TbMsg["WARN_NOTDETECTED"]="<em>(not detected)</em>"; $TbMsg['WARN_PROFESSOR']="teacher"; +$TbMsg["LABEL_LOCATION"]="Location in the lab."; +$TbMsg["PROP_ROW"]="Row"; +$TbMsg["PROP_COLUMN"]="Column"; +$TbMsg["VAL_UNSPECIFIED"]="Unspecified"; + diff --git a/admin/WebConsole/idiomas/php/esp/propiedades_ordenadores_esp.php b/admin/WebConsole/idiomas/php/esp/propiedades_ordenadores_esp.php index be2bbb93..00377b76 100644 --- a/admin/WebConsole/idiomas/php/esp/propiedades_ordenadores_esp.php +++ b/admin/WebConsole/idiomas/php/esp/propiedades_ordenadores_esp.php @@ -34,7 +34,11 @@ $TbMsg[495]="Fecha/Caché"; $TbMsg[4951]="Caché libre"; //AGP $TbMsg['COMM_DEFOGLIVE']="Asignado por el administrador"; -$TbMsg["PROP_SERIALNO"]="Nº de serie"; +$TbMsg["LABEL_SERIALNO"]="Nº de serie"; $TbMsg["WARN_NOREPO"]="<em>AVISO: sin repositorio asignado.</em>"; $TbMsg["WARN_NOTDETECTED"]="<em>(no detectado)</em>"; $TbMsg['WARN_PROFESSOR']="profesor"; +$TbMsg["LABEL_LOCATION"]="Localización en el aula"; +$TbMsg["PROP_ROW"]="Fila"; +$TbMsg["PROP_COLUMN"]="Columna"; +$TbMsg["VAL_UNSPECIFIED"]="No especificado"; diff --git a/admin/WebConsole/principal/aula.php b/admin/WebConsole/principal/aula.php index 05f38a4d..47809398 100644 --- a/admin/WebConsole/principal/aula.php +++ b/admin/WebConsole/principal/aula.php @@ -32,10 +32,13 @@ if (isset($_GET["nombreambito"])) $nombreambito=$_GET["nombreambito"]; $Midordenador= Array(); $Mnombreordenador= Array(); $MimgOrdenador=Array(); +$Mrow=[]; +$Mcol=[]; $Mip= Array(); $Mmac= Array(); +$map=[]; // Mapa del aula $k=0; // Indice de la Matriz - + $cadenaip=""; $idaula=0; $nombreaula=""; @@ -187,7 +190,7 @@ function RecorreAulas($cmd){ $idaula=$rs->campos["idaula"]; $nombreaula=$rs->campos["nombreaula"]; $idordprofesor=(isset($rs->campos["idordprofesor"]) ? $rs->campos["idordprofesor"] : 0); - $cmd->texto="SELECT idordenador,nombreordenador,ip,mac FROM ordenadores WHERE idaula=".$idaula; + $cmd->texto="SELECT idordenador,nombreordenador,n_row,n_col,ip,mac FROM ordenadores WHERE idaula=".$idaula; $k=0; $cadenaip=""; RecorreOrdenadores($cmd); @@ -206,7 +209,7 @@ while (!$rs->EOF){ $idgrupo=$rs->campos["idgrupo"]; $cmd->texto="SELECT idgrupo,nombregrupoordenador FROM gruposOrdenadores WHERE grupoid=".$idgrupo." ORDER BY nombregrupoordenador"; RecorreGruposOrdenadores($cmd); - $cmd->texto="SELECT idordenador,nombreordenador,ip,mac FROM ordenadores WHERE grupoid=".$idgrupo; + $cmd->texto="SELECT idordenador,nombreordenador,n_row,n_col,ip,mac FROM ordenadores WHERE grupoid=".$idgrupo; RecorreOrdenadores($cmd); $rs->Siguiente(); } @@ -217,23 +220,36 @@ function RecorreOrdenadores($cmd){ global $Midordenador; global $Mnombreordenador; global $MimgOrdenador; + global $Mrow; + global $Mcol; global $Mip; global $Mmac; + global $map; // Mapa del aula + global $max_col; // Nº máximo de columnas del aula global $k; // Indice de la Matriz global $cadenaip; - $cmd->texto.= " ORDER BY nombreordenador"; + $cmd->texto.= " ORDER BY n_row, n_col"; $rs=new Recordset; $rs->Comando=&$cmd; if (!$rs->Abrir()) return; // Error al abrir recordset $rs->Primero(); - + $max_col=0; while (!$rs->EOF){ $idordenador=$rs->campos["idordenador"]; $Midordenador[$k]=$rs->campos["idordenador"]; $Mnombreordenador[$k]=$rs->campos["nombreordenador"]; $MimgOrdenador[$k]="ordenador_OFF.png"; + $Mrow[$k]=$rs->campos["n_row"]; + $Mcol[$k]=$rs->campos["n_col"]; + // Calcula nº máximo de columnas para pintar el aula (-1, modo antiguo) + if ($max_col === -1 or $Mrow[$k] === 0 or $Mcol[$k] === 0 or isset($map[$Mrow[$k]][$Mcol[$k]])) { + $max_col = -1; + } else { + $max_col = max($max_col, $Mcol[$k]); + $map[$Mrow[$k]][$Mcol[$k]]=$k; + } $Mip[$k]=$rs->campos["ip"]; $Mmac[$k]=$rs->campos["mac"]; $cadenaip.=$rs->campos["ip"].";"; @@ -252,6 +268,8 @@ function pintaordenadores(){ global $Midordenador; global $Mnombreordenador; global $MimgOrdenador; + global $Mrow; + global $Mcol; global $Mip; global $Mmac; global $k; // Indice de la Matriz @@ -261,6 +279,8 @@ function pintaordenadores(){ global $idordprofesor; global $servidorhidra,$hidraport; global $TbMsg; + global $map; + global $max_col; $ntr=0; // Numero de ordenadores por fila if ($nombreaula!=""){ @@ -268,35 +288,64 @@ function pintaordenadores(){ echo '<p align=center class=cabeceras><img border=0 nod="'.$LITAMBITO_AULAS.'-'.$idaula.'" value="'.$nombreaula.'" style="cursor:pointer" src="../images/iconos/aula.gif" oncontextmenu="nwmenucontextual(this,' ."'flo_".$LITAMBITO_AULAS."'" .')" > '.$TbMsg[23].'</br><span id="'.$LITAMBITO_AULAS.'-'.$idaula.'" class=subcabeceras>'.$nombreaula.'</span></p>'; } - echo '<TABLE style="border: 1px solid #d4d0c8;" align="center"><TR>'; - for($i=0;$i<$k;$i++){ // Vuelve a recorrer los datos de ordenadores para crear HTML - $ntr++; - echo '<TD>'; - echo '<table border=0>'; - echo '<tr>'; - echo ' <td align=center width=70 height=40>'; - echo ' <a href="#"><img id="'.$Mip[$i].'" border=0 sondeo="" nod="'.$LITAMBITO_ORDENADORES.'-'.$Midordenador[$i].'" - value="'.$Mnombreordenador[$i].'" src="../images/'.$MimgOrdenador[$i].'" oncontextmenu="nwmenucontextual(this,'."'flo_".$LITAMBITO_ORDENADORES."'" .')" width="32" height="32"></A>'; - echo ' </td>'; - echo '</tr>'; + echo '<table style="border: 1px solid #d4d0c8;" align="center">'; + if ($max_col === -1) { // Modo antiguo echo '<tr>'; - echo '<td align=center id="'.$LITAMBITO_ORDENADORES.'-'.$Midordenador[$i].'">'; - echo ' <font color="#003300" size="1" face="Arial, Helvetica, sans-serif">'.$Mnombreordenador[$i].($Midordenador[$i]==$idordprofesor?' *':'').'</font>'; - echo ' </br>'; - echo ' <font color="#003300" size="1" face="Arial, Helvetica, sans-serif">'; - echo ' <strong><font color="#D0A126">'.$Mip[$i].'</font></strong>'; - echo ' </br>'; - echo ' <font color="#003300" size="1" face="Arial, Helvetica, sans-serif">'.$Mmac[$i].'</font>'; - echo '</td>'; - echo '</tr>'; - echo '</table>'; - echo '</TD>'; - if ($ntr>4){ - $ntr=0; - echo '</TR><TR>'; + for($i=0;$i<$k;$i++){ // Vuelve a recorrer los datos de ordenadores para crear HTML + $ntr++; + echo '<td>'; + echo '<table border="0">'; + echo '<tr>'; + echo ' <td align=center width=70 height=40>'; + echo ' <a href="#"><img id="'.$Mip[$i].'" border=0 sondeo="" nod="'.$LITAMBITO_ORDENADORES.'-'.$Midordenador[$i].'" + value="'.$Mnombreordenador[$i].'" src="../images/'.$MimgOrdenador[$i].'" oncontextmenu="nwmenucontextual(this,'."'flo_".$LITAMBITO_ORDENADORES."'" .')" width="32" height="32"></a>'; + echo ' </td>'; + echo '</tr>'; + echo '<tr>'; + echo '<td align=center id="'.$LITAMBITO_ORDENADORES.'-'.$Midordenador[$i].'">'; + echo ' <font color="#003300" size="1" face="Arial, Helvetica, sans-serif">'.$Mnombreordenador[$i].($Midordenador[$i]==$idordprofesor?' *':'').'</font>'; + echo ' </br>'; + echo ' <font color="#003300" size="1" face="Arial, Helvetica, sans-serif">'; + echo ' <strong><font color="#D0A126">'.$Mip[$i].'</font></strong>'; + echo ' </br>'; + echo ' <font color="#003300" size="1" face="Arial, Helvetica, sans-serif">'.$Mmac[$i].'</font>'; + echo '</td>'; + echo '</tr>'; + echo '</table>'; + echo '</td>'; + if ($ntr>4){ + $ntr=0; + echo '</TR><TR>'; + } + } + } else { + foreach ($map as $i => $tmp) { + echo "<tr>"; + for ($j=1; $j<=$max_col; $j++) { + echo '<td>'; + echo '<table border="0">'; + echo '<tr>'; + echo ' <td align=center width=70 height=40>'; + if (isset($map[$i][$j])) { + $n=$map[$i][$j]; + echo '<div align="center" id="'.$LITAMBITO_ORDENADORES.'-'.$Midordenador[$n].'">'; + echo ' <a href="#"><img id="'.$Mip[$n].'" border="0" sondeo="" nod="'.$LITAMBITO_ORDENADORES.'-'.$Midordenador[$n].'" value="'.$Mnombreordenador[$n].'" src="../images/'.$MimgOrdenador[$n].'" oncontextmenu="nwmenucontextual(this,'."'flo_".$LITAMBITO_ORDENADORES."'" .')" width="32" height="32"></a>'; + echo ' </div>'; + echo ' <font color="#003300" size="1" face="Arial, Helvetica, sans-serif">'.$Mnombreordenador[$n].($Midordenador[$n]==$idordprofesor?' *':'').'</font>'; + echo ' </br>'; + echo ' <font color="#003300" size="1" face="Arial, Helvetica, sans-serif">'; + echo ' <strong><font color="#D0A126">'.$Mip[$n].'</font></strong>'; + echo ' </br>'; + echo ' <font color="#003300" size="1" face="Arial, Helvetica, sans-serif">'.$Mmac[$n].'</font>'; + } + echo '</td>'; + echo '</tr>'; + echo '</table>'; + echo '</td>'; + } } } - echo '</TABLE>'; + echo '</table>'; echo '<p>'; echo '<table style="border: #d4d0c8 1px solid; background: #eeeeee" align="center">'; echo ' <tr align="center" valign="top">'; diff --git a/admin/WebConsole/propiedades/propiedades_ordenadores.php b/admin/WebConsole/propiedades/propiedades_ordenadores.php index e00f33ee..6e7c60c2 100644 --- a/admin/WebConsole/propiedades/propiedades_ordenadores.php +++ b/admin/WebConsole/propiedades/propiedades_ordenadores.php @@ -26,6 +26,8 @@ $idordenador=0; $ordprofesor=false; $nombreordenador=""; $numserie=""; +$n_row=0; +$n_col=0; $ip=""; $mac=""; $idperfilhard=0; @@ -99,7 +101,7 @@ function abrir_ventana(URL){ $fotomenu=$fotoordenador; $dirfotos="../images/fotos"; ?> - <td colspan="2" valign="top" align="left" rowspan="4"> + <td colspan="2" valign="top" align="left" rowspan="5"> <img border="2" style="border-color:#63676b" src="<?php echo $dirfotos.'/'.$fotoordenador?>" /> <?php if ($opcion!=$op_eliminacion) { echo '<br />(150X110)-(jpg - gif - png) ---- '.$TbMsg[5091].'><br />'; @@ -128,7 +130,7 @@ function abrir_ventana(URL){ </tr> <!-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> <tr> - <th align="center"> <?php echo $TbMsg["PROP_SERIALNO"]?> </th> + <th align="center"> <?php echo $TbMsg["LABEL_SERIALNO"]?> </th> <?php if ($opcion==$op_eliminacion) { echo '<td>'.(isset($numserie)?$numserie:$TbMsg["WARN_NOTDETECTED"]).'</td>'; } else { @@ -140,6 +142,27 @@ function abrir_ventana(URL){ } ?> </tr> +<!-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> + <tr> + <th align="center"> <?php echo $TbMsg["LABEL_LOCATION"] ?> </th> + <?php if ($opcion==$op_eliminacion) { + echo '<td>'.$n_row.', '.$n_col.'</td>'; + } else { + echo "<td>\n"; + $row="0=".$TbMsg["VAL_UNSPECIFIED"].chr(13); + foreach (range(1, 15) as $n) { + $row.="$n=".$TbMsg["PROP_ROW"]." $n".chr(13); + } + echo HTMLCTESELECT($row,"n_row","estilodesple","",$n_row,100); + $col="0=".$TbMsg["VAL_UNSPECIFIED"].chr(13); + foreach (range(1, 15) as $n) { + $col.="$n=".$TbMsg["PROP_COLUMN"]." $n".chr(13); + } + echo HTMLCTESELECT($col,"n_col","estilodesple","",$n_col,100); + echo "</td>\n"; + } + ?> + </tr> <!-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> <TR> <th align=center> <?php echo $TbMsg[509]?> </th> @@ -355,6 +378,8 @@ function TomaPropiedades($cmd,$id){ global $ordprofesor; global $nombreordenador; global $numserie; + global $n_row; + global $n_col; global $ip; global $mac; global $fotoordenador; @@ -400,7 +425,8 @@ EOD; $paginavalidacion=$rs->campos["paginavalidacion"]; ########################### Ramón $arranque=$rs->campos["arranque"]; - + $n_row=$rs->campos["n_row"]; + $n_col=$rs->campos["n_col"]; $rs->Cerrar(); return(true); } |