summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRamón M. Gómez <ramongomez@us.es>2020-06-01 18:01:54 +0200
committerRamón M. Gómez <ramongomez@us.es>2020-06-01 18:22:33 +0200
commit34f40d6cc0ee6e8dff503da93ce4b61b13cd5d88 (patch)
treef91dcfe2364d76e3967c6e01fa47696ca5a3b156
parent994e4133f431fc1bbfcd3f2f76f92a09ecda541d (diff)
parent2421c50ddfcca9b32385eb139e83edbb50bdd883 (diff)
#944: Merge branch 'labgrid'
-rw-r--r--admin/Database/ogAdmBD-1.1.1.sql22
-rw-r--r--admin/WebConsole/gestores/gestor_ordenadores.php14
-rw-r--r--admin/WebConsole/idiomas/php/cat/propiedades_ordenadores_cat.php7
-rw-r--r--admin/WebConsole/idiomas/php/eng/propiedades_ordenadores_eng.php7
-rw-r--r--admin/WebConsole/idiomas/php/esp/propiedades_ordenadores_esp.php6
-rw-r--r--admin/WebConsole/principal/aula.php111
-rw-r--r--admin/WebConsole/propiedades/propiedades_ordenadores.php32
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&ordm; de serie";
+$TbMsg["LABEL_SERIALNO"]="N&ordm; 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&eacute;";
$TbMsg[4951]="Cach&eacute; libre";
//AGP
$TbMsg['COMM_DEFOGLIVE']="Asignado por el administrador";
-$TbMsg["PROP_SERIALNO"]="N&ordm; de serie";
+$TbMsg["LABEL_SERIALNO"]="N&ordm; 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."'" .')" >&nbsp;&nbsp;'.$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">&nbsp;<?php echo $TbMsg["PROP_SERIALNO"]?>&nbsp;</th>
+ <th align="center">&nbsp;<?php echo $TbMsg["LABEL_SERIALNO"]?>&nbsp;</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">&nbsp;<?php echo $TbMsg["LABEL_LOCATION"] ?>&nbsp;</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>&nbsp;<?php echo $TbMsg[509]?>&nbsp;</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);
}