mirror of https://github.com/acanas/swad-core.git
Version19.122.3
This commit is contained in:
parent
6c8af18e80
commit
b22ef280ae
|
@ -679,7 +679,7 @@ const struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
|
|||
[ActRemGam ] = {1657,-1,TabUnk,ActSeeAllGam ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Gam_RemoveGame ,NULL},
|
||||
[ActHidGam ] = {1660,-1,TabUnk,ActSeeAllGam ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Gam_HideGame ,NULL},
|
||||
[ActShoGam ] = {1661,-1,TabUnk,ActSeeAllGam ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Gam_UnhideGame ,NULL},
|
||||
[ActAddOneGamQst ] = {1662,-1,TabUnk,ActSeeAllGam ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Gam_RequestNewQuestion ,NULL},
|
||||
[ActAddOneGamQst ] = {1662,-1,TabUnk,ActSeeAllGam ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Dat_SetIniEndDates ,Gam_RequestNewQuestion ,NULL},
|
||||
[ActGamLstTstQst ] = {1666,-1,TabUnk,ActSeeAllGam ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Gam_ListTstQuestionsToSelect ,NULL},
|
||||
[ActAddTstQstToGam ] = {1667,-1,TabUnk,ActSeeAllGam ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Gam_AddTstQuestionsToGame ,NULL},
|
||||
[ActReqRemGamQst ] = {1664,-1,TabUnk,ActSeeAllGam ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Gam_RequestRemoveQst ,NULL},
|
||||
|
|
|
@ -497,7 +497,7 @@ enscript -2 --landscape --color --file-align=2 --highlight --line-numbers -o - *
|
|||
En OpenSWAD:
|
||||
ps2pdf source.ps destination.pdf
|
||||
*/
|
||||
#define Log_PLATFORM_VERSION "SWAD 19.122.2 (2020-02-13)"
|
||||
#define Log_PLATFORM_VERSION "SWAD 19.122.3 (2020-02-14)"
|
||||
#define CSS_FILE "swad19.118.css"
|
||||
#define JS_FILE "swad19.91.1.js"
|
||||
/*
|
||||
|
@ -506,9 +506,11 @@ ps2pdf source.ps destination.pdf
|
|||
// TODO: No se puede entrar con DNI '1' suponiendo que no tenga password ¿por qué?
|
||||
// TODO: En la lista de conectados central, poner el logo de la institución a la que pertenece el usuario
|
||||
// TODO: En la lista de solicitudes de inscripción, alinear a la izquierda el nombre de la asignatura
|
||||
// TODO: Urgente: Añadir nuevos niveles de realimentación tras sugerencia de Mancia y conversación con Javier.
|
||||
// TODO: Urgente: en swad.ugr.es sale error al refrescar una titulación en la orla de titulaciones.
|
||||
// TODO: URGENTÍSIMO: NO SE PUEDEN AÑADIR PREGUNTAS EN LOS JUEGOS. FALLA LA SELECCIÓN DE FECHAS.
|
||||
|
||||
Version 19.122.3: Feb 14, 2020 Fixed bug in games, reported by Gustavo Romero López.
|
||||
Fixed bug in listing of departments, reported by Daniel Haro Contreras. (278698 lines)
|
||||
Version 19.122.2: Feb 13, 2020 Increased quality in images. (278698 lines)
|
||||
Version 19.122.1: Feb 07, 2020 Fixed bug removing test tags, reported by Mancia Anguita López. (278692 lines)
|
||||
Version 19.122: Jan 30, 2020 Some options changed in system tab. (278690 lines)
|
||||
|
|
32
swad_date.c
32
swad_date.c
|
@ -438,7 +438,7 @@ void Dat_PutFormStartEndClientLocalDateTimesWithYesterdayToday (bool SetHMS00000
|
|||
HTM_TD_Begin ("class=\"LM\"");
|
||||
Dat_WriteFormClientLocalDateTimeFromTimeUTC ("Start",
|
||||
"Start",
|
||||
Gbl.DateRange.TimeUTC[0],
|
||||
Gbl.DateRange.TimeUTC[Dat_START_TIME],
|
||||
Cfg_LOG_START_YEAR,
|
||||
Gbl.Now.Date.Year,
|
||||
Dat_FORM_SECONDS_ON,
|
||||
|
@ -466,7 +466,7 @@ void Dat_PutFormStartEndClientLocalDateTimesWithYesterdayToday (bool SetHMS00000
|
|||
HTM_TD_Begin ("class=\"LM\"");
|
||||
Dat_WriteFormClientLocalDateTimeFromTimeUTC ("End",
|
||||
"End",
|
||||
Gbl.DateRange.TimeUTC[1],
|
||||
Gbl.DateRange.TimeUTC[Dat_END_TIME],
|
||||
Cfg_LOG_START_YEAR,
|
||||
Gbl.Now.Date.Year,
|
||||
Dat_FORM_SECONDS_ON,
|
||||
|
@ -956,8 +956,8 @@ void Dat_GetDateFromForm (const char *ParamNameDay,const char *ParamNameMonth,co
|
|||
|
||||
void Dat_SetIniEndDates (void)
|
||||
{
|
||||
Gbl.DateRange.TimeUTC[0] = (time_t) 0;
|
||||
Gbl.DateRange.TimeUTC[1] = Gbl.StartExecutionTimeUTC;
|
||||
Gbl.DateRange.TimeUTC[Dat_START_TIME] = (time_t) 0;
|
||||
Gbl.DateRange.TimeUTC[Dat_END_TIME ] = Gbl.StartExecutionTimeUTC;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -966,8 +966,8 @@ void Dat_SetIniEndDates (void)
|
|||
|
||||
void Dat_WriteParamsIniEndDates (void)
|
||||
{
|
||||
Par_PutHiddenParamUnsigned (NULL,"StartTimeUTC",Gbl.DateRange.TimeUTC[0]);
|
||||
Par_PutHiddenParamUnsigned (NULL,"EndTimeUTC" ,Gbl.DateRange.TimeUTC[1]);
|
||||
Par_PutHiddenParamUnsigned (NULL,"StartTimeUTC",Gbl.DateRange.TimeUTC[Dat_START_TIME]);
|
||||
Par_PutHiddenParamUnsigned (NULL,"EndTimeUTC" ,Gbl.DateRange.TimeUTC[Dat_END_TIME ]);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -980,11 +980,11 @@ void Dat_GetIniEndDatesFromForm (void)
|
|||
struct tm *tm_ptr;
|
||||
|
||||
/***** Get initial date *****/
|
||||
Gbl.DateRange.TimeUTC[0] = Dat_GetTimeUTCFromForm ("StartTimeUTC");
|
||||
if (Gbl.DateRange.TimeUTC[0])
|
||||
Gbl.DateRange.TimeUTC[Dat_START_TIME] = Dat_GetTimeUTCFromForm ("StartTimeUTC");
|
||||
if (Gbl.DateRange.TimeUTC[Dat_START_TIME])
|
||||
/* Convert time UTC to a local date */
|
||||
tm_ptr = Dat_GetLocalTimeFromClock (&Gbl.DateRange.TimeUTC[0]);
|
||||
else // Gbl.DateRange.TimeUTC[0] == 0 ==> initial date not specified
|
||||
tm_ptr = Dat_GetLocalTimeFromClock (&Gbl.DateRange.TimeUTC[Dat_START_TIME]);
|
||||
else // Gbl.DateRange.TimeUTC[Dat_START_TIME] == 0 ==> initial date not specified
|
||||
{
|
||||
tm.tm_year = Cfg_LOG_START_YEAR - 1900;
|
||||
tm.tm_mon = 0; // January
|
||||
|
@ -996,8 +996,8 @@ void Dat_GetIniEndDatesFromForm (void)
|
|||
// (use timezone information and system databases to)
|
||||
// attempt to determine whether DST
|
||||
// is in effect at the specified time.
|
||||
if ((Gbl.DateRange.TimeUTC[0] = mktime (&tm)) < 0)
|
||||
Gbl.DateRange.TimeUTC[0] = (time_t) 0;
|
||||
if ((Gbl.DateRange.TimeUTC[Dat_START_TIME] = mktime (&tm)) < 0)
|
||||
Gbl.DateRange.TimeUTC[Dat_START_TIME] = (time_t) 0;
|
||||
tm_ptr = &tm;
|
||||
}
|
||||
|
||||
|
@ -1009,12 +1009,12 @@ void Dat_GetIniEndDatesFromForm (void)
|
|||
Gbl.DateRange.DateIni.Time.Second = tm_ptr->tm_sec;
|
||||
|
||||
/***** Get end date *****/
|
||||
Gbl.DateRange.TimeUTC[1] = Dat_GetTimeUTCFromForm ("EndTimeUTC");
|
||||
if (Gbl.DateRange.TimeUTC[1] == 0) // Gbl.DateRange.TimeUTC[1] == 0 ==> end date not specified
|
||||
Gbl.DateRange.TimeUTC[1] = Gbl.StartExecutionTimeUTC;
|
||||
Gbl.DateRange.TimeUTC[Dat_END_TIME] = Dat_GetTimeUTCFromForm ("EndTimeUTC");
|
||||
if (Gbl.DateRange.TimeUTC[Dat_END_TIME] == 0) // Gbl.DateRange.TimeUTC[Dat_END_TIME] == 0 ==> end date not specified
|
||||
Gbl.DateRange.TimeUTC[Dat_END_TIME] = Gbl.StartExecutionTimeUTC;
|
||||
|
||||
/* Convert current time UTC to a local date */
|
||||
tm_ptr = Dat_GetLocalTimeFromClock (&Gbl.DateRange.TimeUTC[1]);
|
||||
tm_ptr = Dat_GetLocalTimeFromClock (&Gbl.DateRange.TimeUTC[Dat_END_TIME]);
|
||||
|
||||
Gbl.DateRange.DateEnd.Date.Year = tm_ptr->tm_year + 1900;
|
||||
Gbl.DateRange.DateEnd.Date.Month = tm_ptr->tm_mon + 1;
|
||||
|
|
|
@ -97,8 +97,8 @@ void Dpt_SeeDepts (void)
|
|||
extern const char *Txt_Department_unspecified;
|
||||
Dpt_Order_t Order;
|
||||
unsigned NumDpt;
|
||||
unsigned NumTchsInsWithDpt = 0; // Number of teachers from the current institution with department
|
||||
unsigned NumTchsInOtherDpts;
|
||||
unsigned NumTchsInsInOtherDpts;
|
||||
unsigned NumTchsInsWithNoDpt;
|
||||
|
||||
/***** Trivial check *****/
|
||||
if (Gbl.Hierarchy.Ins.InsCod <= 0) // No institution selected
|
||||
|
@ -124,7 +124,8 @@ void Dpt_SeeDepts (void)
|
|||
Order <= Dpt_ORDER_BY_NUM_TCHS;
|
||||
Order++)
|
||||
{
|
||||
HTM_TH_Begin (1,1,"LM");
|
||||
HTM_TH_Begin (1,1,Order == Dpt_ORDER_BY_NUM_TCHS ? "RM" :
|
||||
"LM");
|
||||
|
||||
Frm_StartForm (ActSeeDpt);
|
||||
Par_PutHiddenParamUnsigned (NULL,"Order",(unsigned) Order);
|
||||
|
@ -161,10 +162,6 @@ void Dpt_SeeDepts (void)
|
|||
HTM_TD_End ();
|
||||
|
||||
HTM_TR_End ();
|
||||
|
||||
/* Update number of teachers from the current institution
|
||||
with department */
|
||||
NumTchsInsWithDpt += Gbl.Dpts.Lst[NumDpt].NumTchs;
|
||||
}
|
||||
|
||||
/***** Separation row *****/
|
||||
|
@ -174,8 +171,9 @@ void Dpt_SeeDepts (void)
|
|||
HTM_TD_End ();
|
||||
HTM_TR_End ();
|
||||
|
||||
/***** Write teachers with other department *****/
|
||||
NumTchsInOtherDpts = Usr_GetNumTchsCurrentInsInDepartment (0);
|
||||
/***** Write teachers of this institution with other department *****/
|
||||
NumTchsInsInOtherDpts = Usr_GetNumTchsCurrentInsInDepartment (0);
|
||||
|
||||
HTM_TR_Begin (NULL);
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT LM\"");
|
||||
|
@ -183,13 +181,14 @@ void Dpt_SeeDepts (void)
|
|||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT RM\"");
|
||||
HTM_Unsigned (NumTchsInOtherDpts);
|
||||
HTM_Unsigned (NumTchsInsInOtherDpts);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TR_End ();
|
||||
NumTchsInsWithDpt += NumTchsInOtherDpts;
|
||||
|
||||
/***** Write teachers with no department *****/
|
||||
NumTchsInsWithNoDpt = Usr_GetNumTchsCurrentInsInDepartment (-1L);
|
||||
|
||||
HTM_TR_Begin (NULL);
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT LM\"");
|
||||
|
@ -197,10 +196,7 @@ void Dpt_SeeDepts (void)
|
|||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT RM\"");
|
||||
HTM_Unsigned (Usr_GetNumUsrsInCrss (Hie_INS,Gbl.Hierarchy.Ins.InsCod,
|
||||
1 << Rol_NET | // Non-editing teachers
|
||||
1 << Rol_TCH) - // Teachers
|
||||
NumTchsInsWithDpt);
|
||||
HTM_Unsigned (NumTchsInsWithNoDpt);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TR_End ();
|
||||
|
|
|
@ -1503,7 +1503,7 @@ unsigned Gam_GetNumQstsGame (long GamCod)
|
|||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/*********** Put a form to edit/create a question in game *****************/
|
||||
/*************** Put a form to edit/create a question in game ****************/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Gam_RequestNewQuestion (void)
|
||||
|
|
|
@ -701,7 +701,7 @@ struct Globals
|
|||
{
|
||||
struct DateTime DateIni; // TODO: Remove in future versions
|
||||
struct DateTime DateEnd; // TODO: Remove in future versions
|
||||
time_t TimeUTC[2];
|
||||
time_t TimeUTC[Dat_NUM_START_END_TIME];
|
||||
} DateRange;
|
||||
struct
|
||||
{
|
||||
|
|
|
@ -629,8 +629,8 @@ static void Sta_WriteSelectorAction (void)
|
|||
|
||||
void Sta_SetIniEndDates (void)
|
||||
{
|
||||
Gbl.DateRange.TimeUTC[0] = Gbl.StartExecutionTimeUTC - ((Cfg_DAYS_IN_RECENT_LOG - 1) * 24 * 60 * 60);
|
||||
Gbl.DateRange.TimeUTC[1] = Gbl.StartExecutionTimeUTC;
|
||||
Gbl.DateRange.TimeUTC[Dat_START_TIME] = Gbl.StartExecutionTimeUTC - ((Cfg_DAYS_IN_RECENT_LOG - 1) * 24 * 60 * 60);
|
||||
Gbl.DateRange.TimeUTC[Dat_END_TIME ] = Gbl.StartExecutionTimeUTC;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -987,8 +987,8 @@ static void Sta_ShowHits (Sta_GlobalOrCourseAccesses_t GlobalOrCourse)
|
|||
sprintf (QueryAux," WHERE %s.ClickTime"
|
||||
" BETWEEN FROM_UNIXTIME(%ld) AND FROM_UNIXTIME(%ld)",
|
||||
LogTable,
|
||||
(long) Gbl.DateRange.TimeUTC[0],
|
||||
(long) Gbl.DateRange.TimeUTC[1]);
|
||||
(long) Gbl.DateRange.TimeUTC[Dat_START_TIME],
|
||||
(long) Gbl.DateRange.TimeUTC[Dat_END_TIME ]);
|
||||
Str_Concat (Query,QueryAux,
|
||||
Sta_MAX_BYTES_QUERY_ACCESS);
|
||||
|
||||
|
|
|
@ -2489,14 +2489,14 @@ static unsigned long Tst_GetQuestions (MYSQL_RES **mysql_res)
|
|||
Tst_MAX_BYTES_QUERY_TEST);
|
||||
snprintf (LongStr,sizeof (LongStr),
|
||||
"%ld",
|
||||
(long) Gbl.DateRange.TimeUTC[0]);
|
||||
(long) Gbl.DateRange.TimeUTC[Dat_START_TIME]);
|
||||
Str_Concat (Query,LongStr,
|
||||
Tst_MAX_BYTES_QUERY_TEST);
|
||||
Str_Concat (Query,"') AND tst_questions.EditTime<=FROM_UNIXTIME('",
|
||||
Tst_MAX_BYTES_QUERY_TEST);
|
||||
snprintf (LongStr,sizeof (LongStr),
|
||||
"%ld",
|
||||
(long) Gbl.DateRange.TimeUTC[1]);
|
||||
(long) Gbl.DateRange.TimeUTC[Dat_END_TIME]);
|
||||
Str_Concat (Query,LongStr,
|
||||
Tst_MAX_BYTES_QUERY_TEST);
|
||||
Str_Concat (Query,"')",
|
||||
|
@ -7748,8 +7748,8 @@ static void Tst_ShowTstResults (struct UsrData *UsrDat)
|
|||
" ORDER BY TstCod",
|
||||
Gbl.Hierarchy.Crs.CrsCod,
|
||||
UsrDat->UsrCod,
|
||||
(long) Gbl.DateRange.TimeUTC[0],
|
||||
(long) Gbl.DateRange.TimeUTC[1]);
|
||||
(long) Gbl.DateRange.TimeUTC[Dat_START_TIME],
|
||||
(long) Gbl.DateRange.TimeUTC[Dat_END_TIME ]);
|
||||
|
||||
/***** Show user's data *****/
|
||||
HTM_TR_Begin (NULL);
|
||||
|
|
19
swad_user.c
19
swad_user.c
|
@ -4224,7 +4224,7 @@ long Usr_GetRamdomStdFromGrp (long GrpCod)
|
|||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/**** Get number of teachers from the current institution in a department ****/
|
||||
/* Get number of teachers in courses of the current instit. in a department **/
|
||||
/*****************************************************************************/
|
||||
|
||||
unsigned Usr_GetNumTchsCurrentInsInDepartment (long DptCod)
|
||||
|
@ -4235,13 +4235,18 @@ unsigned Usr_GetNumTchsCurrentInsInDepartment (long DptCod)
|
|||
(unsigned) DB_QueryCOUNT ("can not get the number of teachers"
|
||||
" in a department",
|
||||
"SELECT COUNT(DISTINCT usr_data.UsrCod)"
|
||||
" FROM usr_data,crs_usr"
|
||||
" WHERE usr_data.InsCod=%ld"
|
||||
" AND usr_data.DptCod=%ld"
|
||||
" AND usr_data.UsrCod=crs_usr.UsrCod"
|
||||
" AND crs_usr.Role IN (%u,%u)",
|
||||
" FROM usr_data,crs_usr,courses,degrees,centres"
|
||||
" WHERE usr_data.InsCod=%ld" // User in the current institution...
|
||||
" AND usr_data.DptCod=%ld" // ...and the specified department...
|
||||
" AND usr_data.UsrCod=crs_usr.UsrCod" // ...who is...
|
||||
" AND crs_usr.Role IN (%u,%u)" // ...a teacher...
|
||||
" AND crs_usr.CrsCod=courses.CrsCod" // ...in a course...
|
||||
" AND courses.DegCod=degrees.DegCod" // ...of a degree...
|
||||
" AND degrees.CtrCod=centres.InsCod" // ...of a centre...
|
||||
" AND centres.InsCod=%ld", // ...of the current institution
|
||||
Gbl.Hierarchy.Ins.InsCod,DptCod,
|
||||
(unsigned) Rol_NET,(unsigned) Rol_TCH);
|
||||
(unsigned) Rol_NET,(unsigned) Rol_TCH,
|
||||
Gbl.Hierarchy.Ins.InsCod);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
Loading…
Reference in New Issue