Version19.115.1

This commit is contained in:
Antonio Cañas Vargas 2020-01-11 13:52:56 +01:00
parent 684071c4ae
commit 75dfe814fc
3 changed files with 76 additions and 61 deletions

View File

@ -492,7 +492,7 @@ enscript -2 --landscape --color --file-align=2 --highlight --line-numbers -o - *
En OpenSWAD: En OpenSWAD:
ps2pdf source.ps destination.pdf ps2pdf source.ps destination.pdf
*/ */
#define Log_PLATFORM_VERSION "SWAD 19.115 (2020-01-09)" #define Log_PLATFORM_VERSION "SWAD 19.115.1 (2020-01-11)"
#define CSS_FILE "swad19.115.css" #define CSS_FILE "swad19.115.css"
#define JS_FILE "swad19.91.1.js" #define JS_FILE "swad19.91.1.js"
/* /*
@ -501,6 +501,7 @@ ps2pdf source.ps destination.pdf
// TODO: No se puede entrar con DNI '1' suponiendo que no tenga password ¿por qué? // TODO: No se puede entrar con DNI '1' suponiendo que no tenga password ¿por qué?
// TODO: Mapas más estrechos en móvil // TODO: Mapas más estrechos en móvil
Version 19.115.1: Jan 11, 2020 Fixed bug in edition of degrees. (278531 lines)
Version 19.115: Jan 09, 2020 Map column in listing of institutions. Version 19.115: Jan 09, 2020 Map column in listing of institutions.
Fixed bug in edition of timetable, reported by Miguel Damas Hermoso. Fixed bug in edition of timetable, reported by Miguel Damas Hermoso.
Language removed from shortcuts. (278515 lines) Language removed from shortcuts. (278515 lines)

View File

@ -356,7 +356,6 @@ static void Deg_ListDegreesForEdition (void)
Deg = &(Gbl.Hierarchy.Degs.Lst[NumDeg]); Deg = &(Gbl.Hierarchy.Degs.Lst[NumDeg]);
NumCrss = Crs_GetNumCrssInDeg (Deg->DegCod); NumCrss = Crs_GetNumCrssInDeg (Deg->DegCod);
ICanEdit = Deg_CheckIfICanEditADegree (Deg); ICanEdit = Deg_CheckIfICanEditADegree (Deg);
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
@ -427,7 +426,7 @@ static void Deg_ListDegreesForEdition (void)
{ {
DegTyp = &Gbl.DegTypes.Lst[NumDegTyp]; DegTyp = &Gbl.DegTypes.Lst[NumDegTyp];
HTM_OPTION (HTM_Type_LONG,&DegTyp->DegTypCod, HTM_OPTION (HTM_Type_LONG,&DegTyp->DegTypCod,
Gbl.Hierarchy.Deg.DegCod > 0 && // Gbl.Hierarchy.Deg.DegCod > 0 &&
DegTyp->DegTypCod == Deg->DegTypCod,false, DegTyp->DegTypCod == Deg->DegTypCod,false,
"%s",DegTyp->DegTypName); "%s",DegTyp->DegTypName);
} }
@ -516,8 +515,8 @@ static void Deg_ListDegreesForEdition (void)
static bool Deg_CheckIfICanEditADegree (struct Degree *Deg) static bool Deg_CheckIfICanEditADegree (struct Degree *Deg)
{ {
return (bool) (Gbl.Usrs.Me.Role.Logged >= Rol_CTR_ADM || // I am a centre administrator or higher return (bool) (Gbl.Usrs.Me.Role.Logged >= Rol_CTR_ADM || // I am a centre administrator or higher
((Deg->Status & Deg_STATUS_BIT_PENDING) != 0 && // Degree is not yet activated ((Deg->Status & Deg_STATUS_BIT_PENDING) != 0 && // Degree is not yet activated
Gbl.Usrs.Me.UsrDat.UsrCod == Deg->RequesterUsrCod)); // I am the requester Gbl.Usrs.Me.UsrDat.UsrCod == Deg->RequesterUsrCod)); // I am the requester
} }
/*****************************************************************************/ /*****************************************************************************/

View File

@ -585,75 +585,90 @@ void DT_GetListDegreeTypes (Hie_Level_t Scope,DT_Order_t Order)
all degree types with degrees all degree types with degrees
union with union with
all degree types without any degree */ all degree types without any degree */
Gbl.DegTypes.Num = (unsigned) DB_QuerySELECT (&mysql_res,"can not get types of degree", Gbl.DegTypes.Num = (unsigned)
"(SELECT deg_types.DegTypCod,deg_types.DegTypName," DB_QuerySELECT (&mysql_res,"can not get types of degree",
"COUNT(degrees.DegCod) AS NumDegs" "(SELECT deg_types.DegTypCod," // row[0]
" FROM degrees,deg_types" "deg_types.DegTypName," // row[1]
" WHERE degrees.DegTypCod=deg_types.DegTypCod" "COUNT(degrees.DegCod) AS NumDegs" // row[2]
" GROUP BY degrees.DegTypCod)" " FROM degrees,deg_types"
" UNION " " WHERE degrees.DegTypCod=deg_types.DegTypCod"
"(SELECT DegTypCod,DegTypName,0 AS NumDegs" // Do not use '0' because NumDegs will be casted to string and order will be wrong " GROUP BY degrees.DegTypCod)"
" FROM deg_types" " UNION "
" WHERE DegTypCod NOT IN" "(SELECT DegTypCod," // row[0]
" (SELECT DegTypCod FROM degrees))" "DegTypName," // row[1]
" ORDER BY %s", "0 AS NumDegs" // row[2]
OrderBySubQuery[Order]); // do not use '0' because
// NumDegs will be casted to string
// and order will be wrong
" FROM deg_types"
" WHERE DegTypCod NOT IN"
" (SELECT DegTypCod FROM degrees))"
" ORDER BY %s",
OrderBySubQuery[Order]);
break; break;
case Hie_CTY: case Hie_CTY:
/* Get only degree types with degrees in the current country */ /* Get only degree types with degrees in the current country */
Gbl.DegTypes.Num = (unsigned) DB_QuerySELECT (&mysql_res,"can not get types of degree", Gbl.DegTypes.Num = (unsigned)
"SELECT deg_types.DegTypCod,deg_types.DegTypName," DB_QuerySELECT (&mysql_res,"can not get types of degree",
"COUNT(degrees.DegCod) AS NumDegs" "SELECT deg_types.DegTypCod," // row[0]
" FROM institutions,centres,degrees,deg_types" "deg_types.DegTypName," // row[1]
" WHERE institutions.CtyCod=%ld" "COUNT(degrees.DegCod) AS NumDegs" // row[2]
" AND institutions.InsCod=centres.InsCod" " FROM institutions,centres,degrees,deg_types"
" AND centres.CtrCod=degrees.CtrCod" " WHERE institutions.CtyCod=%ld"
" AND degrees.DegTypCod=deg_types.DegTypCod" " AND institutions.InsCod=centres.InsCod"
" GROUP BY degrees.DegTypCod" " AND centres.CtrCod=degrees.CtrCod"
" ORDER BY %s", " AND degrees.DegTypCod=deg_types.DegTypCod"
Gbl.Hierarchy.Cty.CtyCod, " GROUP BY degrees.DegTypCod"
OrderBySubQuery[Order]); " ORDER BY %s",
Gbl.Hierarchy.Cty.CtyCod,
OrderBySubQuery[Order]);
break; break;
case Hie_INS: case Hie_INS:
/* Get only degree types with degrees in the current institution */ /* Get only degree types with degrees in the current institution */
Gbl.DegTypes.Num = (unsigned) DB_QuerySELECT (&mysql_res,"can not get types of degree", Gbl.DegTypes.Num = (unsigned)
"SELECT deg_types.DegTypCod,deg_types.DegTypName," DB_QuerySELECT (&mysql_res,"can not get types of degree",
"COUNT(degrees.DegCod) AS NumDegs" "SELECT deg_types.DegTypCod," // row[0]
" FROM centres,degrees,deg_types" "deg_types.DegTypName," // row[1]
" WHERE centres.InsCod=%ld" "COUNT(degrees.DegCod) AS NumDegs" // row[2]
" AND centres.CtrCod=degrees.CtrCod" " FROM centres,degrees,deg_types"
" AND degrees.DegTypCod=deg_types.DegTypCod" " WHERE centres.InsCod=%ld"
" GROUP BY degrees.DegTypCod" " AND centres.CtrCod=degrees.CtrCod"
" ORDER BY %s", " AND degrees.DegTypCod=deg_types.DegTypCod"
Gbl.Hierarchy.Ins.InsCod, " GROUP BY degrees.DegTypCod"
OrderBySubQuery[Order]); " ORDER BY %s",
Gbl.Hierarchy.Ins.InsCod,
OrderBySubQuery[Order]);
break; break;
case Hie_CTR: case Hie_CTR:
/* Get only degree types with degrees in the current centre */ /* Get only degree types with degrees in the current centre */
Gbl.DegTypes.Num = (unsigned) DB_QuerySELECT (&mysql_res,"can not get types of degree", Gbl.DegTypes.Num = (unsigned)
"SELECT deg_types.DegTypCod,deg_types.DegTypName," DB_QuerySELECT (&mysql_res,"can not get types of degree",
"COUNT(degrees.DegCod) AS NumDegs" "SELECT deg_types.DegTypCod," // row[0]
" FROM degrees,deg_types" "deg_types.DegTypName," // row[1]
" WHERE degrees.CtrCod=%ld" "COUNT(degrees.DegCod) AS NumDegs" // row[2]
" AND degrees.DegTypCod=deg_types.DegTypCod" " FROM degrees,deg_types"
" GROUP BY degrees.DegTypCod" " WHERE degrees.CtrCod=%ld"
" ORDER BY %s", " AND degrees.DegTypCod=deg_types.DegTypCod"
Gbl.Hierarchy.Ctr.CtrCod, " GROUP BY degrees.DegTypCod"
OrderBySubQuery[Order]); " ORDER BY %s",
Gbl.Hierarchy.Ctr.CtrCod,
OrderBySubQuery[Order]);
break; break;
case Hie_DEG: case Hie_DEG:
case Hie_CRS: case Hie_CRS:
/* Get only degree types with degrees in the current degree */ /* Get only degree types with degrees in the current degree */
Gbl.DegTypes.Num = (unsigned) DB_QuerySELECT (&mysql_res,"can not get types of degree", Gbl.DegTypes.Num = (unsigned)
"SELECT deg_types.DegTypCod,deg_types.DegTypName," DB_QuerySELECT (&mysql_res,"can not get types of degree",
"COUNT(degrees.DegCod) AS NumDegs" "SELECT deg_types.DegTypCod," // row[0]
" FROM degrees,deg_types" "deg_types.DegTypName," // row[1]
" WHERE degrees.DegCod=%ld" "COUNT(degrees.DegCod) AS NumDegs" // row[2]
" AND degrees.DegTypCod=deg_types.DegTypCod" " FROM degrees,deg_types"
" GROUP BY degrees.DegTypCod" " WHERE degrees.DegCod=%ld"
" ORDER BY %s", " AND degrees.DegTypCod=deg_types.DegTypCod"
Gbl.Hierarchy.Deg.DegCod, " GROUP BY degrees.DegTypCod"
OrderBySubQuery[Order]); " ORDER BY %s",
Gbl.Hierarchy.Deg.DegCod,
OrderBySubQuery[Order]);
break; break;
default: default:
Lay_WrongScopeExit (); Lay_WrongScopeExit ();