Version 22.37.1: Oct 01, 2022 Fixed issues in exams and games.

This commit is contained in:
acanas 2022-10-01 13:51:03 +02:00
parent d7fa488e47
commit af4f21d673
5 changed files with 78 additions and 80 deletions

View File

@ -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)

View File

@ -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])

View File

@ -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 ();

View File

@ -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);

View File

@ -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&oacute;n de examen" "Ver resultados de usuarios seleccionados en sesi&oacute;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&oacute;n de examen" // Okoteve traducción "Ver resultados de usuarios seleccionados en sesi&oacute;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] =