mirror of https://github.com/acanas/swad-core.git
Version 22.37.1: Oct 01, 2022 Fixed issues in exams and games.
This commit is contained in:
parent
d7fa488e47
commit
af4f21d673
|
@ -606,10 +606,11 @@ TODO: Fix bug: error al enviar un mensaje a dos recipientes, error on duplicate
|
||||||
|
|
||||||
TODO: Attach pdf files in multimedia.
|
TODO: Attach pdf files in multimedia.
|
||||||
*/
|
*/
|
||||||
#define Log_PLATFORM_VERSION "SWAD 22.37 (2022-10-01)"
|
#define Log_PLATFORM_VERSION "SWAD 22.37.1 (2022-10-01)"
|
||||||
#define CSS_FILE "swad22.35.css"
|
#define CSS_FILE "swad22.35.css"
|
||||||
#define JS_FILE "swad21.100.js"
|
#define JS_FILE "swad21.100.js"
|
||||||
/*
|
/*
|
||||||
|
Version 22.37.1: Oct 01, 2022 Fixed issues in exams and games. (332527 lines)
|
||||||
Version 22.37: Oct 01, 2022 Code refactoring and changes in layout of games. (? lines)
|
Version 22.37: Oct 01, 2022 Code refactoring and changes in layout of games. (? lines)
|
||||||
Version 22.36.1: Sep 30, 2022 Changes in layout of exams. (332596 lines)
|
Version 22.36.1: Sep 30, 2022 Changes in layout of exams. (332596 lines)
|
||||||
Version 22.36: Sep 30, 2022 Code refactoring in exams. (332589 lines)
|
Version 22.36: Sep 30, 2022 Code refactoring in exams. (332589 lines)
|
||||||
|
|
39
swad_exam.c
39
swad_exam.c
|
@ -244,8 +244,7 @@ void Exa_ListAllExams (struct Exa_Exams *Exams)
|
||||||
/***** Table head *****/
|
/***** Table head *****/
|
||||||
HTM_TABLE_BeginWideMarginPadding (5);
|
HTM_TABLE_BeginWideMarginPadding (5);
|
||||||
HTM_TR_Begin (NULL);
|
HTM_TR_Begin (NULL);
|
||||||
if (Exa_CheckIfICanEditExams ())
|
HTM_TH_Span (NULL,HTM_HEAD_CENTER,1,1,"CONTEXT_COL"); // Column for contextual icons
|
||||||
HTM_TH_Span (NULL,HTM_HEAD_CENTER,1,1,"CONTEXT_COL"); // Column for contextual icons
|
|
||||||
|
|
||||||
for (Order = (Exa_Order_t) 0;
|
for (Order = (Exa_Order_t) 0;
|
||||||
Order <= (Exa_Order_t) (Exa_NUM_ORDERS - 1);
|
Order <= (Exa_Order_t) (Exa_NUM_ORDERS - 1);
|
||||||
|
@ -487,13 +486,12 @@ static void Exa_ShowOneExam (struct Exa_Exams *Exams,bool ShowOnlyThisExam)
|
||||||
|
|
||||||
/***** Icons related to this exam *****/
|
/***** Icons related to this exam *****/
|
||||||
if (!ShowOnlyThisExam)
|
if (!ShowOnlyThisExam)
|
||||||
if (Exa_CheckIfICanEditExams ())
|
{
|
||||||
{
|
HTM_TD_Begin ("rowspan=\"2\" class=\"CONTEXT_COL %s\"",
|
||||||
HTM_TD_Begin ("rowspan=\"2\" class=\"CONTEXT_COL %s\"",
|
The_GetColorRows ());
|
||||||
The_GetColorRows ());
|
Exa_PutIconsToRemEditOneExam (Exams,Anchor);
|
||||||
Exa_PutIconsToRemEditOneExam (Exams,Anchor);
|
HTM_TD_End ();
|
||||||
HTM_TD_End ();
|
}
|
||||||
}
|
|
||||||
|
|
||||||
/***** Start/end date/time *****/
|
/***** Start/end date/time *****/
|
||||||
UniqueId++;
|
UniqueId++;
|
||||||
|
@ -680,18 +678,21 @@ static void Exa_PutIconsToRemEditOneExam (struct Exa_Exams *Exams,
|
||||||
[Rol_SYS_ADM] = ActSeeUsrExaResExa,
|
[Rol_SYS_ADM] = ActSeeUsrExaResExa,
|
||||||
};
|
};
|
||||||
|
|
||||||
/***** Icon to remove exam *****/
|
if (Exa_CheckIfICanEditExams ())
|
||||||
Ico_PutContextualIconToRemove (ActReqRemExa,NULL,
|
{
|
||||||
Exa_PutParams,Exams);
|
/***** Icon to remove exam *****/
|
||||||
|
Ico_PutContextualIconToRemove (ActReqRemExa,NULL,
|
||||||
|
Exa_PutParams,Exams);
|
||||||
|
|
||||||
/***** Icon to hide/unhide exam *****/
|
/***** Icon to hide/unhide exam *****/
|
||||||
Ico_PutContextualIconToHideUnhide (ActionHideUnhide,Anchor,
|
Ico_PutContextualIconToHideUnhide (ActionHideUnhide,Anchor,
|
||||||
Exa_PutParams,Exams,
|
Exa_PutParams,Exams,
|
||||||
Exams->Exam.Hidden);
|
Exams->Exam.Hidden);
|
||||||
|
|
||||||
/***** Icon to edit exam *****/
|
/***** Icon to edit exam *****/
|
||||||
Ico_PutContextualIconToEdit (ActEdiOneExa,NULL,
|
Ico_PutContextualIconToEdit (ActEdiOneExa,NULL,
|
||||||
Exa_PutParams,Exams);
|
Exa_PutParams,Exams);
|
||||||
|
}
|
||||||
|
|
||||||
/***** Put icon to view results of sessions in exam *****/
|
/***** Put icon to view results of sessions in exam *****/
|
||||||
if (ActionShowResults[Gbl.Usrs.Me.Role.Logged])
|
if (ActionShowResults[Gbl.Usrs.Me.Role.Logged])
|
||||||
|
|
|
@ -300,8 +300,7 @@ static void ExaSes_ListOneOrMoreSessions (struct Exa_Exams *Exams,
|
||||||
|
|
||||||
/* Icons */
|
/* Icons */
|
||||||
if (ICanEditSessions)
|
if (ICanEditSessions)
|
||||||
if (ExaSes_CheckIfICanEditThisSession (Session.UsrCod))
|
ExaSes_ListOneOrMoreSessionsIcons (Exams,&Session,Anchor);
|
||||||
ExaSes_ListOneOrMoreSessionsIcons (Exams,&Session,Anchor);
|
|
||||||
|
|
||||||
/* Session participant */
|
/* Session participant */
|
||||||
ExaSes_ListOneOrMoreSessionsAuthor (&Session);
|
ExaSes_ListOneOrMoreSessionsAuthor (&Session);
|
||||||
|
@ -435,18 +434,21 @@ static void ExaSes_ListOneOrMoreSessionsIcons (struct Exa_Exams *Exams,
|
||||||
/***** Begin cell *****/
|
/***** Begin cell *****/
|
||||||
HTM_TD_Begin ("class=\"BT %s\"",The_GetColorRows ());
|
HTM_TD_Begin ("class=\"BT %s\"",The_GetColorRows ());
|
||||||
|
|
||||||
/***** Icon to remove the exam session *****/
|
if (ExaSes_CheckIfICanEditThisSession (Session->UsrCod))
|
||||||
Ico_PutContextualIconToRemove (ActReqRemExaSes,NULL,
|
{
|
||||||
ExaSes_PutParamsEdit,Exams);
|
/***** Icon to remove the exam session *****/
|
||||||
|
Ico_PutContextualIconToRemove (ActReqRemExaSes,NULL,
|
||||||
|
ExaSes_PutParamsEdit,Exams);
|
||||||
|
|
||||||
/***** Icon to hide/unhide the exam session *****/
|
/***** Icon to hide/unhide the exam session *****/
|
||||||
Ico_PutContextualIconToHideUnhide (ActionHideUnhide,Anchor,
|
Ico_PutContextualIconToHideUnhide (ActionHideUnhide,Anchor,
|
||||||
ExaSes_PutParamsEdit,Exams,
|
ExaSes_PutParamsEdit,Exams,
|
||||||
Session->Hidden);
|
Session->Hidden);
|
||||||
|
|
||||||
/***** Icon to edit the exam session *****/
|
/***** Icon to edit the exam session *****/
|
||||||
Ico_PutContextualIconToEdit (ActEdiOneExaSes,Anchor,
|
Ico_PutContextualIconToEdit (ActEdiOneExaSes,Anchor,
|
||||||
ExaSes_PutParamsEdit,Exams);
|
ExaSes_PutParamsEdit,Exams);
|
||||||
|
}
|
||||||
|
|
||||||
/***** End cell *****/
|
/***** End cell *****/
|
||||||
HTM_TD_End ();
|
HTM_TD_End ();
|
||||||
|
|
30
swad_game.c
30
swad_game.c
|
@ -142,7 +142,7 @@ static void Gam_UpdateGame (struct Gam_Game *Game,const char *Txt);
|
||||||
|
|
||||||
static void Gam_ListGameQuestions (struct Gam_Games *Games);
|
static void Gam_ListGameQuestions (struct Gam_Games *Games);
|
||||||
static void Gam_ListOneOrMoreQuestionsForEdition (struct Gam_Games *Games,
|
static void Gam_ListOneOrMoreQuestionsForEdition (struct Gam_Games *Games,
|
||||||
long GamCod,unsigned NumQsts,
|
unsigned NumQsts,
|
||||||
MYSQL_RES *mysql_res,
|
MYSQL_RES *mysql_res,
|
||||||
bool ICanEditQuestions);
|
bool ICanEditQuestions);
|
||||||
|
|
||||||
|
@ -265,9 +265,7 @@ void Gam_ListAllGames (struct Gam_Games *Games)
|
||||||
/***** Table head *****/
|
/***** Table head *****/
|
||||||
HTM_TR_Begin (NULL);
|
HTM_TR_Begin (NULL);
|
||||||
|
|
||||||
if (Gam_CheckIfICanEditGames () ||
|
HTM_TH_Span (NULL,HTM_HEAD_CENTER,1,1,"CONTEXT_COL"); // Column for contextual icons
|
||||||
Gam_CheckIfICanListGameQuestions ())
|
|
||||||
HTM_TH_Span (NULL,HTM_HEAD_CENTER,1,1,"CONTEXT_COL"); // Column for contextual icons
|
|
||||||
|
|
||||||
for (Order = (Gam_Order_t) 0;
|
for (Order = (Gam_Order_t) 0;
|
||||||
Order <= (Gam_Order_t) (Gam_NUM_ORDERS - 1);
|
Order <= (Gam_Order_t) (Gam_NUM_ORDERS - 1);
|
||||||
|
@ -536,14 +534,12 @@ static void Gam_ShowGameMainData (struct Gam_Games *Games,
|
||||||
|
|
||||||
/***** Icons related to this game *****/
|
/***** Icons related to this game *****/
|
||||||
if (!ShowOnlyThisGame)
|
if (!ShowOnlyThisGame)
|
||||||
if (Gam_CheckIfICanEditGames () ||
|
{
|
||||||
Gam_CheckIfICanListGameQuestions ())
|
HTM_TD_Begin ("rowspan=\"2\" class=\"CONTEXT_COL %s\"",
|
||||||
{
|
The_GetColorRows ());
|
||||||
HTM_TD_Begin ("rowspan=\"2\" class=\"CONTEXT_COL %s\"",
|
Gam_PutIconsToRemEditOneGame (Games,Anchor);
|
||||||
The_GetColorRows ());
|
HTM_TD_End ();
|
||||||
Gam_PutIconsToRemEditOneGame (Games,Anchor);
|
}
|
||||||
HTM_TD_End ();
|
|
||||||
}
|
|
||||||
|
|
||||||
/***** Start/end date/time *****/
|
/***** Start/end date/time *****/
|
||||||
UniqueId++;
|
UniqueId++;
|
||||||
|
@ -1654,8 +1650,7 @@ static void Gam_ListGameQuestions (struct Gam_Games *Games)
|
||||||
|
|
||||||
/***** Show table with questions *****/
|
/***** Show table with questions *****/
|
||||||
if (NumQsts)
|
if (NumQsts)
|
||||||
Gam_ListOneOrMoreQuestionsForEdition (Games,
|
Gam_ListOneOrMoreQuestionsForEdition (Games,NumQsts,mysql_res,
|
||||||
Games->Game.GamCod,NumQsts,mysql_res,
|
|
||||||
ICanEditQuestions);
|
ICanEditQuestions);
|
||||||
|
|
||||||
/***** Put button to add a new question in this game *****/
|
/***** Put button to add a new question in this game *****/
|
||||||
|
@ -1674,7 +1669,7 @@ static void Gam_ListGameQuestions (struct Gam_Games *Games)
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
static void Gam_ListOneOrMoreQuestionsForEdition (struct Gam_Games *Games,
|
static void Gam_ListOneOrMoreQuestionsForEdition (struct Gam_Games *Games,
|
||||||
long GamCod,unsigned NumQsts,
|
unsigned NumQsts,
|
||||||
MYSQL_RES *mysql_res,
|
MYSQL_RES *mysql_res,
|
||||||
bool ICanEditQuestions)
|
bool ICanEditQuestions)
|
||||||
{
|
{
|
||||||
|
@ -1698,7 +1693,7 @@ static void Gam_ListOneOrMoreQuestionsForEdition (struct Gam_Games *Games,
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/***** Get maximum question index *****/
|
/***** Get maximum question index *****/
|
||||||
MaxQstInd = Gam_DB_GetMaxQuestionIndexInGame (GamCod); // 0 is no questions in game
|
MaxQstInd = Gam_DB_GetMaxQuestionIndexInGame (Games->Game.GamCod); // 0 is no questions in game
|
||||||
|
|
||||||
/***** Write the heading *****/
|
/***** Write the heading *****/
|
||||||
HTM_TABLE_BeginWideMarginPadding (5);
|
HTM_TABLE_BeginWideMarginPadding (5);
|
||||||
|
@ -1733,8 +1728,7 @@ static void Gam_ListOneOrMoreQuestionsForEdition (struct Gam_Games *Games,
|
||||||
snprintf (StrQstInd,sizeof (StrQstInd),"%u",QstInd);
|
snprintf (StrQstInd,sizeof (StrQstInd),"%u",QstInd);
|
||||||
|
|
||||||
/* Initialize context */
|
/* Initialize context */
|
||||||
Games->Game.GamCod = GamCod;
|
Games->QstInd = QstInd;
|
||||||
Games->QstInd = QstInd;
|
|
||||||
|
|
||||||
/***** Build anchor string *****/
|
/***** Build anchor string *****/
|
||||||
Frm_SetAnchorStr (Question.QstCod,&Anchor);
|
Frm_SetAnchorStr (Question.QstCod,&Anchor);
|
||||||
|
|
|
@ -12668,71 +12668,71 @@ const char *Txt_Actions[Act_NUM_ACTIONS] =
|
||||||
,
|
,
|
||||||
[ActSeeUsrExaResCrs] =
|
[ActSeeUsrExaResCrs] =
|
||||||
#if L==1 // ca
|
#if L==1 // ca
|
||||||
"See all exam results of a user" // Necessita traducció
|
"See all exam results of selected users" // Necessita traducció
|
||||||
#elif L==2 // de
|
#elif L==2 // de
|
||||||
"See all exam results of a user" // Need Übersetzung
|
"See all exam results of selected users" // Need Übersetzung
|
||||||
#elif L==3 // en
|
#elif L==3 // en
|
||||||
"See all exam results of a user"
|
"See all exam results of selected users"
|
||||||
#elif L==4 // es
|
#elif L==4 // es
|
||||||
"Ver todos los resultados de examen de un usuario"
|
"Ver todos los resultados de examen de usuarios seleccionados"
|
||||||
#elif L==5 // fr
|
#elif L==5 // fr
|
||||||
"See all exam results of a user" // Besoin de traduction
|
"See all exam results of selected users" // Besoin de traduction
|
||||||
#elif L==6 // gn
|
#elif L==6 // gn
|
||||||
"Ver todos los resultados de examen de un usuario" // Okoteve traducción
|
"Ver todos los resultados de examen de usuarios seleccionados" // Okoteve traducción
|
||||||
#elif L==7 // it
|
#elif L==7 // it
|
||||||
"See all exam results of a user" // Bisogno di traduzione
|
"See all exam results of selected users" // Bisogno di traduzione
|
||||||
#elif L==8 // pl
|
#elif L==8 // pl
|
||||||
"See all exam results of a user" // Potrzebujesz tlumaczenie
|
"See all exam results of selected users" // Potrzebujesz tlumaczenie
|
||||||
#elif L==9 // pt
|
#elif L==9 // pt
|
||||||
"See all exam results of a user" // Precisa de tradução
|
"See all exam results of selected users" // Precisa de tradução
|
||||||
#elif L==10 // tr
|
#elif L==10 // tr
|
||||||
"See all exam results of a user" // Çeviri lazim!
|
"See all exam results of selected users" // Çeviri lazim!
|
||||||
#endif
|
#endif
|
||||||
,
|
,
|
||||||
[ActSeeUsrExaResExa] =
|
[ActSeeUsrExaResExa] =
|
||||||
#if L==1 // ca
|
#if L==1 // ca
|
||||||
"See all results of a user in exam" // Necessita traducció
|
"See results of selected users in exam" // Necessita traducció
|
||||||
#elif L==2 // de
|
#elif L==2 // de
|
||||||
"See all results of a user in exam" // Need Übersetzung
|
"See results of selected users in exam" // Need Übersetzung
|
||||||
#elif L==3 // en
|
#elif L==3 // en
|
||||||
"See all results of a user in exam"
|
"See results of selected users in exam"
|
||||||
#elif L==4 // es
|
#elif L==4 // es
|
||||||
"Ver todos los resultados de un usuario en examen"
|
"Ver resultados de usuarios seleccionados en examen"
|
||||||
#elif L==5 // fr
|
#elif L==5 // fr
|
||||||
"See all results of a user in exam" // Besoin de traduction
|
"See results of selected users in exam" // Besoin de traduction
|
||||||
#elif L==6 // gn
|
#elif L==6 // gn
|
||||||
"Ver todos los resultados de un usuario en examen" // Okoteve traducción
|
"Ver resultados de usuarios seleccionados en examen" // Okoteve traducción
|
||||||
#elif L==7 // it
|
#elif L==7 // it
|
||||||
"See all results of a user in exam" // Bisogno di traduzione
|
"See results of selected users in exam" // Bisogno di traduzione
|
||||||
#elif L==8 // pl
|
#elif L==8 // pl
|
||||||
"See all results of a user in exam" // Potrzebujesz tlumaczenie
|
"See results of selected users in exam" // Potrzebujesz tlumaczenie
|
||||||
#elif L==9 // pt
|
#elif L==9 // pt
|
||||||
"See all results of a user in exam" // Precisa de tradução
|
"See results of selected users in exam" // Precisa de tradução
|
||||||
#elif L==10 // tr
|
#elif L==10 // tr
|
||||||
"See all results of a user in exam" // Çeviri lazim!
|
"See results of selected users in exam" // Çeviri lazim!
|
||||||
#endif
|
#endif
|
||||||
,
|
,
|
||||||
[ActSeeUsrExaResSes] =
|
[ActSeeUsrExaResSes] =
|
||||||
#if L==1 // ca
|
#if L==1 // ca
|
||||||
"See all results of a user in exam session" // Necessita traducció
|
"See results of selected users in exam session" // Necessita traducció
|
||||||
#elif L==2 // de
|
#elif L==2 // de
|
||||||
"See all results of a user in exam session" // Need Übersetzung
|
"See results of selected users in exam session" // Need Übersetzung
|
||||||
#elif L==3 // en
|
#elif L==3 // en
|
||||||
"See all results of a user in exam session"
|
"See results of selected users in exam session"
|
||||||
#elif L==4 // es
|
#elif L==4 // es
|
||||||
"Ver todos los resultados de un usuario en una sesión de examen"
|
"Ver resultados de usuarios seleccionados en sesión de examen"
|
||||||
#elif L==5 // fr
|
#elif L==5 // fr
|
||||||
"See all results of a user in exam session" // Besoin de traduction
|
"See results of selected users in exam session" // Besoin de traduction
|
||||||
#elif L==6 // gn
|
#elif L==6 // gn
|
||||||
"Ver todos los resultados de un usuario en una sesión de examen" // Okoteve traducción
|
"Ver resultados de usuarios seleccionados en sesión de examen" // Okoteve traducción
|
||||||
#elif L==7 // it
|
#elif L==7 // it
|
||||||
"See all results of a user in exam session" // Bisogno di traduzione
|
"See results of selected users in exam session" // Bisogno di traduzione
|
||||||
#elif L==8 // pl
|
#elif L==8 // pl
|
||||||
"See all results of a user in exam session" // Potrzebujesz tlumaczenie
|
"See results of selected users in exam session" // Potrzebujesz tlumaczenie
|
||||||
#elif L==9 // pt
|
#elif L==9 // pt
|
||||||
"See all results of a user in exam session" // Precisa de tradução
|
"See results of selected users in exam session" // Precisa de tradução
|
||||||
#elif L==10 // tr
|
#elif L==10 // tr
|
||||||
"See all results of a user in exam session" // Çeviri lazim!
|
"See results of selected users in exam session" // Çeviri lazim!
|
||||||
#endif
|
#endif
|
||||||
,
|
,
|
||||||
[ActSeeOneExaResOth] =
|
[ActSeeOneExaResOth] =
|
||||||
|
|
Loading…
Reference in New Issue