From 366f44f0ec66bc33d096f3055666ed984a10597b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antonio=20Ca=C3=B1as=20Vargas?= Date: Sun, 8 Dec 2019 14:14:29 +0100 Subject: [PATCH] Version19.87.1 --- swad_changelog.h | 4 +++- swad_game.c | 8 +++---- swad_icon.c | 4 ++-- swad_icon.h | 2 +- swad_match_result.c | 56 +++++++++++++++++++++++++-------------------- swad_match_result.h | 2 ++ swad_test.c | 4 ++-- 7 files changed, 45 insertions(+), 35 deletions(-) diff --git a/swad_changelog.h b/swad_changelog.h index ef2b279ba..73f6b53c1 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -490,14 +490,16 @@ enscript -2 --landscape --color --file-align=2 --highlight --line-numbers -o - * En OpenSWAD: ps2pdf source.ps destination.pdf */ -#define Log_PLATFORM_VERSION "SWAD 19.87 (2019-12-07)" +#define Log_PLATFORM_VERSION "SWAD 19.87.1 (2019-12-07)" #define CSS_FILE "swad19.85.css" #define JS_FILE "swad19.70.js" /* // TODO: Hacer un nuevo rol en los TFG: tutor externo (profesor de áreas no vinculadas con el centro, profesionales de empresas, etc.) // TODO: Impedir la creación y edición de proyectos si no son editables. // TODO: En cada partida, poder listar los resultados en una tabla como la de resultados globales +// TODO: En el resultado detallado de una partida, cambiar título "Resultado de una partida" por el título de la partida + Version 19.87.1: Dec 08, 2019 Changes and bug fixing in results of matches. (248000 lines) Version 19.87: Dec 08, 2019 Show matches results in a game for all students. (247990 lines) Version 19.86.1: Dec 07, 2019 Show matches results in a game for a student. (247901 lines) Version 19.86: Dec 07, 2019 New actions to show the matches results in a game. (247905 lines) diff --git a/swad_game.c b/swad_game.c index 00fb7decc..02b90f2b8 100644 --- a/swad_game.c +++ b/swad_game.c @@ -310,12 +310,12 @@ static void Gam_PutIconsListGames (void) switch (Gbl.Usrs.Me.Role.Logged) { case Rol_STD: - Ico_PutContextualIconToShowResults (ActSeeAllMyMchRes,NULL); + Ico_PutContextualIconToShowResults (ActSeeAllMyMchRes,NULL,NULL); break; case Rol_NET: case Rol_TCH: case Rol_SYS_ADM: - Ico_PutContextualIconToShowResults (ActReqSeeAllMchRes,NULL); + Ico_PutContextualIconToShowResults (ActReqSeeAllMchRes,NULL,NULL); break; default: break; @@ -580,12 +580,12 @@ static void Gam_PutIconToShowResultsOfGame (void) switch (Gbl.Usrs.Me.Role.Logged) { case Rol_STD: - Ico_PutContextualIconToShowResults (ActSeeGamMyMchRes,Gam_PutParamCurrentGamCod); + Ico_PutContextualIconToShowResults (ActSeeGamMyMchRes,McR_RESULTS_TABLE_ID,Gam_PutParams); break; case Rol_NET: case Rol_TCH: case Rol_SYS_ADM: - Ico_PutContextualIconToShowResults (ActSeeGamMchRes,Gam_PutParamCurrentGamCod); + Ico_PutContextualIconToShowResults (ActSeeGamMchRes,McR_RESULTS_TABLE_ID,Gam_PutParams); break; default: break; diff --git a/swad_icon.c b/swad_icon.c index 664c710eb..c37115f95 100644 --- a/swad_icon.c +++ b/swad_icon.c @@ -326,11 +326,11 @@ void Ico_PutContextualIconToCreateInFolder (Act_Action_t NextAction,void (*FuncP Txt_Upload_file_or_create_folder); } -void Ico_PutContextualIconToShowResults (Act_Action_t NextAction,void (*FuncParams) (void)) +void Ico_PutContextualIconToShowResults (Act_Action_t NextAction,const char *Anchor,void (*FuncParams) (void)) { extern const char *Txt_Results; - Lay_PutContextualLinkOnlyIcon (NextAction,NULL,FuncParams, + Lay_PutContextualLinkOnlyIcon (NextAction,Anchor,FuncParams, "tasks.svg", Txt_Results); } diff --git a/swad_icon.h b/swad_icon.h index 6dce986b5..d451b9d42 100644 --- a/swad_icon.h +++ b/swad_icon.h @@ -69,7 +69,7 @@ void Ico_PutContextualIconToPrint (Act_Action_t NextAction,void (*FuncParams) (v void Ico_PutContextualIconToCopy (Act_Action_t NextAction,void (*FuncParams) (void)); void Ico_PutContextualIconToPaste (Act_Action_t NextAction,void (*FuncParams) (void)); void Ico_PutContextualIconToCreateInFolder (Act_Action_t NextAction,void (*FuncParams) (void),bool Open); -void Ico_PutContextualIconToShowResults (Act_Action_t NextAction,void (*FuncParams) (void)); +void Ico_PutContextualIconToShowResults (Act_Action_t NextAction,const char *Anchor,void (*FuncParams) (void)); void Ico_PutContextualIconToShowAttendanceList (Act_Action_t NextAction,void (*FuncParams) (void)); void Ico_PutContextualIconToZIP (Act_Action_t NextAction,void (*FuncParams) (void)); diff --git a/swad_match_result.c b/swad_match_result.c index 3a8402d51..b30a0bee3 100644 --- a/swad_match_result.c +++ b/swad_match_result.c @@ -53,8 +53,6 @@ extern struct Globals Gbl; /***************************** Private constants *****************************/ /*****************************************************************************/ -#define McR_RESULTS_TABLE_ID "mcr_table" - /*****************************************************************************/ /******************************* Private types *******************************/ /*****************************************************************************/ @@ -75,7 +73,7 @@ static void McR_ShowUsrsMchResults (void); static void McR_ListGamesToSelect (void); static void McR_ShowHeaderMchResults (Usr_MeOrOther_t MeOrOther); -static void McR_BuildGamesSelectedCommas (char *GamesSelectedCommas); +static void McR_BuildGamesSelectedCommas (char **GamesSelectedCommas); static void McR_ShowMchResults (Usr_MeOrOther_t MeOrOther, const char *GamesSelectedSeparatedByCommas); static void McR_ShowMchResultsSummaryRow (unsigned NumResults, @@ -207,13 +205,10 @@ void McR_ShowMyMchRes (void) /***** Get list of games *****/ Gam_GetListGames (Gam_ORDER_BY_TITLE); Gam_GetListSelectedGamCods (); - McR_BuildGamesSelectedCommas (GamesSelectedCommas); + McR_BuildGamesSelectedCommas (&GamesSelectedCommas); if (Gbl.Games.NumSelected) { - /***** Get feedback type *****/ - Tst_GetConfigTstFromDB (); - /***** Begin box *****/ Box_BoxBegin (NULL,Txt_Results,NULL, Hlp_ASSESSMENT_Games_results,Box_NOT_CLOSABLE); @@ -224,6 +219,7 @@ void McR_ShowMyMchRes (void) McR_ShowHeaderMchResults (Usr_ME); /***** List my matches results *****/ + Tst_GetConfigTstFromDB (); // Get feedback type McR_ShowMchResults (Usr_ME,GamesSelectedCommas); /***** End section with match results table *****/ @@ -252,17 +248,20 @@ void McR_ShowMyMchResInGame (void) extern const char *Hlp_ASSESSMENT_Games_results; extern const char *Txt_Results; extern const char *Txt_No_games; - long GamCod; + struct Game Game; char *GamesSelectedCommas; - /***** Get game code *****/ - if ((GamCod = Gam_GetParamGameCod ()) == -1L) + /***** Get parameters *****/ + if ((Game.GamCod = Gam_GetParams ()) == -1L) Lay_ShowErrorAndExit ("Code of game is missing."); - if (asprintf (&GamesSelectedCommas,"%ld",GamCod) < 0) + if (asprintf (&GamesSelectedCommas,"%ld",Game.GamCod) < 0) Lay_NotEnoughMemoryExit (); - /***** Get feedback type *****/ - Tst_GetConfigTstFromDB (); + /***** Show game *****/ + Gam_ShowOneGame (Game.GamCod, + true, // Show only this game + false, // Do not list game questions + false); // Do not put form to start new match /***** Begin box *****/ Box_BoxBegin (NULL,Txt_Results,NULL, @@ -274,6 +273,7 @@ void McR_ShowMyMchResInGame (void) McR_ShowHeaderMchResults (Usr_ME); /***** List my matches results *****/ + Tst_GetConfigTstFromDB (); // Get feedback type McR_ShowMchResults (Usr_ME,GamesSelectedCommas); /***** End section with match results table *****/ @@ -313,7 +313,7 @@ static void McR_ShowUsrsMchResults (void) /***** Get list of games *****/ Gam_GetListGames (Gam_ORDER_BY_TITLE); Gam_GetListSelectedGamCods (); - McR_BuildGamesSelectedCommas (GamesSelectedCommas); + McR_BuildGamesSelectedCommas (&GamesSelectedCommas); /***** Begin box *****/ Box_BoxBegin (NULL,Txt_Results,NULL, @@ -364,19 +364,25 @@ void McR_ShowUsrsMchResultsInGame (void) { extern const char *Hlp_ASSESSMENT_Games_results; extern const char *Txt_Results; - long GamCod; + struct Game Game; char *GamesSelectedCommas; MYSQL_RES *mysql_res; MYSQL_ROW row; unsigned long NumUsrs; unsigned long NumUsr; - /***** Get game code *****/ - if ((GamCod = Gam_GetParamGameCod ()) == -1L) + /***** Get parameters *****/ + if ((Game.GamCod = Gam_GetParams ()) == -1L) Lay_ShowErrorAndExit ("Code of game is missing."); - if (asprintf (&GamesSelectedCommas,"%ld",GamCod) < 0) + if (asprintf (&GamesSelectedCommas,"%ld",Game.GamCod) < 0) Lay_NotEnoughMemoryExit (); + /***** Show game *****/ + Gam_ShowOneGame (Game.GamCod, + true, // Show only this game + false, // Do not list game questions + false); // Do not put form to start new match + /***** Begin box *****/ Box_BoxBegin (NULL,Txt_Results,NULL, Hlp_ASSESSMENT_Games_results,Box_NOT_CLOSABLE); @@ -388,7 +394,7 @@ void McR_ShowUsrsMchResultsInGame (void) " WHERE mch_matches.GamCod=%ld" " AND mch_matches.MchCod=mch_answers.MchCod" " ORDER BY mch_answers.UsrCod", // TODO: Order by name - GamCod); + Game.GamCod); if (NumUsrs) { /***** Start section with match results table *****/ @@ -554,7 +560,7 @@ static void McR_ShowHeaderMchResults (Usr_MeOrOther_t MeOrOther) /******* from list of selected games ********/ /*****************************************************************************/ -static void McR_BuildGamesSelectedCommas (char *GamesSelectedCommas) +static void McR_BuildGamesSelectedCommas (char **GamesSelectedCommas) { size_t MaxLength; unsigned NumGame; @@ -562,20 +568,20 @@ static void McR_BuildGamesSelectedCommas (char *GamesSelectedCommas) /***** Allocate memory for subquery of games selected *****/ MaxLength = (size_t) Gbl.Games.NumSelected * (Cns_MAX_DECIMAL_DIGITS_LONG + 1); - if ((GamesSelectedCommas = (char *) malloc (MaxLength + 1)) == NULL) + if ((*GamesSelectedCommas = (char *) malloc (MaxLength + 1)) == NULL) Lay_NotEnoughMemoryExit (); /***** Build subquery with list of selected games *****/ - GamesSelectedCommas[0] = '\0'; + (*GamesSelectedCommas)[0] = '\0'; for (NumGame = 0; NumGame < Gbl.Games.Num; NumGame++) if (Gbl.Games.Lst[NumGame].Selected) { sprintf (LongStr,"%ld",Gbl.Games.Lst[NumGame].GamCod); - if (GamesSelectedCommas[0]) - Str_Concat (GamesSelectedCommas,",",MaxLength); - Str_Concat (GamesSelectedCommas,LongStr,MaxLength); + if ((*GamesSelectedCommas)[0]) + Str_Concat (*GamesSelectedCommas,",",MaxLength); + Str_Concat (*GamesSelectedCommas,LongStr,MaxLength); } } diff --git a/swad_match_result.h b/swad_match_result.h index 8af05fcfb..9dce8bcb2 100644 --- a/swad_match_result.h +++ b/swad_match_result.h @@ -31,6 +31,8 @@ /************************** Public types and constants ***********************/ /*****************************************************************************/ +#define McR_RESULTS_TABLE_ID "mcr_table" + /*****************************************************************************/ /***************************** Public prototypes *****************************/ /*****************************************************************************/ diff --git a/swad_test.c b/swad_test.c index 38bb20624..2ee0bcd0c 100644 --- a/swad_test.c +++ b/swad_test.c @@ -1406,12 +1406,12 @@ static void Tst_PutIconsTests (void) switch (Gbl.Usrs.Me.Role.Logged) { case Rol_STD: - Ico_PutContextualIconToShowResults (ActReqSeeMyTstRes,NULL); + Ico_PutContextualIconToShowResults (ActReqSeeMyTstRes,NULL,NULL); break; case Rol_NET: case Rol_TCH: case Rol_SYS_ADM: - Ico_PutContextualIconToShowResults (ActReqSeeUsrTstRes,NULL); + Ico_PutContextualIconToShowResults (ActReqSeeUsrTstRes,NULL,NULL); break; default: break;