diff --git a/swad_action.c b/swad_action.c index a06f7d59c..f35424f8e 100644 --- a/swad_action.c +++ b/swad_action.c @@ -611,6 +611,7 @@ Assessment: 456. ActNewMch Create a new match showing first question in a new browser tab (by a teacher) NEW. ActResMch Resume an unfinished match showing current question in a new browser tab (by a teacher) 457. ActNxtMch Show next question when playing a game (by a teacher) + NEW. ActShoMch Show finished match results NEW. ActPlyMchStd Play a game (by a student) NEW. ActGamStdCurQst Show current question when playing a game (by a student) @@ -2148,6 +2149,7 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] = /* ActNewMch */{1671,-1,TabUnk,ActSeeAllGam ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_NEW_TAB,NULL ,Gam_CreateAndStartNewMatch ,NULL}, /* ActResMch */{1785,-1,TabUnk,ActSeeAllGam ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_NEW_TAB,NULL ,Gam_ResumeUnfinishedMatch ,NULL}, /* ActNxtMch */{1672,-1,TabUnk,ActSeeAllGam ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_2ND_TAB,NULL ,Gam_NextStatusMatch ,NULL}, + /* ActShoMch */{1786,-1,TabUnk,ActSeeAllGam ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Gam_ShowFinishedMatchResults ,NULL}, /* ActPlyMchStd */{1779,-1,TabUnk,ActSeeAllGam ,0x008, 0, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Gam_PlayMatchStd ,NULL}, /* ActGamStdCurQst */{1780,-1,TabUnk,ActSeeAllGam ,0x008, 0, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_NEW_TAB,Gam_GetMatchBeingPlayed ,Gam_ShowNewMatchToMeAsStd ,NULL}, @@ -4989,6 +4991,7 @@ Act_Action_t Act_FromActCodToAction[1 + Act_MAX_ACTION_COD] = // Do not reuse un ActReqRemMch, // #1783 ActRemMch, // #1784 ActResMch, // #1785 + ActShoMch, // #1786 }; /*****************************************************************************/ diff --git a/swad_action.h b/swad_action.h index f649a90ea..0a0966010 100644 --- a/swad_action.h +++ b/swad_action.h @@ -64,9 +64,9 @@ typedef enum typedef signed int Act_Action_t; // Must be a signed type, because -1 is used to indicate obsolete action -#define Act_NUM_ACTIONS (1 + 4 + 64 + 38 + 12 + 42 + 36 + 19 + 110 + 168 + 437 + 176 + 169 + 16 + 67) +#define Act_NUM_ACTIONS (1 + 4 + 64 + 38 + 12 + 42 + 36 + 19 + 110 + 169 + 437 + 176 + 169 + 16 + 67) -#define Act_MAX_ACTION_COD 1785 +#define Act_MAX_ACTION_COD 1786 #define Act_MAX_OPTIONS_IN_MENU_PER_TAB 13 @@ -613,54 +613,55 @@ typedef signed int Act_Action_t; // Must be a signed type, because -1 is used to #define ActNewMch (ActChgCrsTT1stDay + 120) #define ActResMch (ActChgCrsTT1stDay + 121) #define ActNxtMch (ActChgCrsTT1stDay + 122) -#define ActPlyMchStd (ActChgCrsTT1stDay + 123) -#define ActGamStdCurQst (ActChgCrsTT1stDay + 124) -#define ActRefGamStd (ActChgCrsTT1stDay + 125) -#define ActAnsGam (ActChgCrsTT1stDay + 126) -#define ActFrmNewGam (ActChgCrsTT1stDay + 127) -#define ActEdiOneGam (ActChgCrsTT1stDay + 128) -#define ActNewGam (ActChgCrsTT1stDay + 129) -#define ActChgGam (ActChgCrsTT1stDay + 130) -#define ActReqRemGam (ActChgCrsTT1stDay + 131) -#define ActRemGam (ActChgCrsTT1stDay + 132) -#define ActReqRstGam (ActChgCrsTT1stDay + 133) -#define ActRstGam (ActChgCrsTT1stDay + 134) -#define ActHidGam (ActChgCrsTT1stDay + 135) -#define ActShoGam (ActChgCrsTT1stDay + 136) -#define ActAddOneGamQst (ActChgCrsTT1stDay + 137) -#define ActGamLstTstQst (ActChgCrsTT1stDay + 138) -#define ActAddTstQstToGam (ActChgCrsTT1stDay + 139) -#define ActReqRemGamQst (ActChgCrsTT1stDay + 140) -#define ActRemGamQst (ActChgCrsTT1stDay + 141) -#define ActUp_GamQst (ActChgCrsTT1stDay + 142) -#define ActDwnGamQst (ActChgCrsTT1stDay + 143) +#define ActShoMch (ActChgCrsTT1stDay + 123) +#define ActPlyMchStd (ActChgCrsTT1stDay + 124) +#define ActGamStdCurQst (ActChgCrsTT1stDay + 125) +#define ActRefGamStd (ActChgCrsTT1stDay + 126) +#define ActAnsGam (ActChgCrsTT1stDay + 127) +#define ActFrmNewGam (ActChgCrsTT1stDay + 128) +#define ActEdiOneGam (ActChgCrsTT1stDay + 129) +#define ActNewGam (ActChgCrsTT1stDay + 130) +#define ActChgGam (ActChgCrsTT1stDay + 131) +#define ActReqRemGam (ActChgCrsTT1stDay + 132) +#define ActRemGam (ActChgCrsTT1stDay + 133) +#define ActReqRstGam (ActChgCrsTT1stDay + 134) +#define ActRstGam (ActChgCrsTT1stDay + 135) +#define ActHidGam (ActChgCrsTT1stDay + 136) +#define ActShoGam (ActChgCrsTT1stDay + 137) +#define ActAddOneGamQst (ActChgCrsTT1stDay + 138) +#define ActGamLstTstQst (ActChgCrsTT1stDay + 139) +#define ActAddTstQstToGam (ActChgCrsTT1stDay + 140) +#define ActReqRemGamQst (ActChgCrsTT1stDay + 141) +#define ActRemGamQst (ActChgCrsTT1stDay + 142) +#define ActUp_GamQst (ActChgCrsTT1stDay + 143) +#define ActDwnGamQst (ActChgCrsTT1stDay + 144) -#define ActSeeSvy (ActChgCrsTT1stDay + 144) -#define ActAnsSvy (ActChgCrsTT1stDay + 145) -#define ActFrmNewSvy (ActChgCrsTT1stDay + 146) -#define ActEdiOneSvy (ActChgCrsTT1stDay + 147) -#define ActNewSvy (ActChgCrsTT1stDay + 148) -#define ActChgSvy (ActChgCrsTT1stDay + 149) -#define ActReqRemSvy (ActChgCrsTT1stDay + 150) -#define ActRemSvy (ActChgCrsTT1stDay + 151) -#define ActReqRstSvy (ActChgCrsTT1stDay + 152) -#define ActRstSvy (ActChgCrsTT1stDay + 153) -#define ActHidSvy (ActChgCrsTT1stDay + 154) -#define ActShoSvy (ActChgCrsTT1stDay + 155) -#define ActEdiOneSvyQst (ActChgCrsTT1stDay + 156) -#define ActRcvSvyQst (ActChgCrsTT1stDay + 157) -#define ActReqRemSvyQst (ActChgCrsTT1stDay + 158) -#define ActRemSvyQst (ActChgCrsTT1stDay + 159) +#define ActSeeSvy (ActChgCrsTT1stDay + 145) +#define ActAnsSvy (ActChgCrsTT1stDay + 146) +#define ActFrmNewSvy (ActChgCrsTT1stDay + 147) +#define ActEdiOneSvy (ActChgCrsTT1stDay + 148) +#define ActNewSvy (ActChgCrsTT1stDay + 149) +#define ActChgSvy (ActChgCrsTT1stDay + 150) +#define ActReqRemSvy (ActChgCrsTT1stDay + 151) +#define ActRemSvy (ActChgCrsTT1stDay + 152) +#define ActReqRstSvy (ActChgCrsTT1stDay + 153) +#define ActRstSvy (ActChgCrsTT1stDay + 154) +#define ActHidSvy (ActChgCrsTT1stDay + 155) +#define ActShoSvy (ActChgCrsTT1stDay + 156) +#define ActEdiOneSvyQst (ActChgCrsTT1stDay + 157) +#define ActRcvSvyQst (ActChgCrsTT1stDay + 158) +#define ActReqRemSvyQst (ActChgCrsTT1stDay + 159) +#define ActRemSvyQst (ActChgCrsTT1stDay + 160) -#define ActSeeOneExaAnn (ActChgCrsTT1stDay + 160) -#define ActSeeDatExaAnn (ActChgCrsTT1stDay + 161) -#define ActEdiExaAnn (ActChgCrsTT1stDay + 162) -#define ActRcvExaAnn (ActChgCrsTT1stDay + 163) -#define ActPrnExaAnn (ActChgCrsTT1stDay + 164) -#define ActReqRemExaAnn (ActChgCrsTT1stDay + 165) -#define ActRemExaAnn (ActChgCrsTT1stDay + 166) -#define ActHidExaAnn (ActChgCrsTT1stDay + 167) -#define ActShoExaAnn (ActChgCrsTT1stDay + 168) +#define ActSeeOneExaAnn (ActChgCrsTT1stDay + 161) +#define ActSeeDatExaAnn (ActChgCrsTT1stDay + 162) +#define ActEdiExaAnn (ActChgCrsTT1stDay + 163) +#define ActRcvExaAnn (ActChgCrsTT1stDay + 164) +#define ActPrnExaAnn (ActChgCrsTT1stDay + 165) +#define ActReqRemExaAnn (ActChgCrsTT1stDay + 166) +#define ActRemExaAnn (ActChgCrsTT1stDay + 167) +#define ActHidExaAnn (ActChgCrsTT1stDay + 168) +#define ActShoExaAnn (ActChgCrsTT1stDay + 169) /*****************************************************************************/ /******************************** Files tab **********************************/ diff --git a/swad_changelog.h b/swad_changelog.h index 68303ca97..28e2ebfaf 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -456,10 +456,15 @@ En OpenSWAD: ps2pdf source.ps destination.pdf */ -#define Log_PLATFORM_VERSION "SWAD 18.127.1 (2019-05-31)" +#define Log_PLATFORM_VERSION "SWAD 18.127.2 (2019-05-31)" #define CSS_FILE "swad18.123.css" #define JS_FILE "swad18.123.js" /* + Version 18.127.2: May 31, 2019 Question index is shown in match status. + New action to show results of a finished match. (243493 lines) + 1 change necessary in database: +INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1785','es','N','Ver resultados partida'); + Version 18.127.1: May 31, 2019 Removed action to end a match. (243464 lines) 1 change necessary in database: UPDATE actions SET Obsolete='Y' WHERE ActCod=1781; diff --git a/swad_game.c b/swad_game.c index 36a336809..17981c9fc 100644 --- a/swad_game.c +++ b/swad_game.c @@ -169,7 +169,8 @@ static void Gam_ExchangeQuestions (long GamCod, static void Gam_ListPlayedMatches (struct Game *Game,bool PutFormNewMatch); static void Gam_PutIconToPlayNewMatch (void); -static void Gam_ListOneOrMoreMatchesForEdition (unsigned NumMatches, +static void Gam_ListOneOrMoreMatchesForEdition (struct Game *Game, + unsigned NumMatches, MYSQL_RES *mysql_res); static void Gam_GetMatchDataFromRow (MYSQL_RES *mysql_res, struct Match *Match); @@ -2912,7 +2913,7 @@ static void Gam_ListPlayedMatches (struct Game *Game,bool PutFormNewMatch) if (NumMatches) /***** Show the table with the matches *****/ - Gam_ListOneOrMoreMatchesForEdition (NumMatches,mysql_res); + Gam_ListOneOrMoreMatchesForEdition (Game,NumMatches,mysql_res); /***** Free structure that stores the query result *****/ DB_FreeMySQLResult (&mysql_res); @@ -2996,7 +2997,8 @@ static void Gam_PutIconToPlayNewMatch (void) /*********************** List game matches for edition ***********************/ /*****************************************************************************/ -static void Gam_ListOneOrMoreMatchesForEdition (unsigned NumMatches, +static void Gam_ListOneOrMoreMatchesForEdition (struct Game *Game, + unsigned NumMatches, MYSQL_RES *mysql_res) { extern const char *Txt_No_INDEX; @@ -3030,7 +3032,7 @@ static void Gam_ListOneOrMoreMatchesForEdition (unsigned NumMatches, "" "%s" "" - "" + "" "%s" "" "", @@ -3062,6 +3064,7 @@ static void Gam_ListOneOrMoreMatchesForEdition (unsigned NumMatches, Frm_EndForm (); /* Put icon to continue playing an unfinished match */ + /* if (!Match.Status.Finished) { Gam_CurrentMchCod = Match.MchCod; @@ -3070,6 +3073,7 @@ static void Gam_ListOneOrMoreMatchesForEdition (unsigned NumMatches, "play.svg", Txt_Resume); } + */ fprintf (Gbl.F.Out,""); @@ -3127,11 +3131,21 @@ static void Gam_ListOneOrMoreMatchesForEdition (unsigned NumMatches, fprintf (Gbl.F.Out,""); /***** Match status ******/ - fprintf (Gbl.F.Out,"",Gbl.RowEvenOdd); + fprintf (Gbl.F.Out,"",Gbl.RowEvenOdd); if (Match.Status.Finished) - Ico_PutIconOff ("flag-checkered.svg",Txt_Finished_match); + /* Icon to inform about finished match */ + // Ico_PutIconOff ("flag-checkered.svg",Txt_Finished_match); + Lay_PutContextualLinkOnlyIcon (ActShoMch,NULL, + Gam_PutParamCurrentMchCod, + "flag-checkered.svg", + Txt_Finished_match); else // Unfinished match { + /* Current question index / total of questions */ + fprintf (Gbl.F.Out,"
%u/%u
", + Match.Status.QstInd,Game->NumQsts); + + /* Icon to resume */ Gam_CurrentMchCod = Match.MchCod; Lay_PutContextualLinkOnlyIcon (ActResMch,NULL, Gam_PutParamCurrentMchCod, @@ -3811,7 +3825,16 @@ static void Gam_PutBigButtonToFinishMatch (long MchCod) } /*****************************************************************************/ -/********************** Get code of match being played ************************/ +/******************* Show the results of a finished match ********************/ +/*****************************************************************************/ + +void Gam_ShowFinishedMatchResults (void) + { + Ale_ShowAlert (Ale_INFO,"To be implemented..."); + } + +/*****************************************************************************/ +/********************** Get code of match being played ***********************/ /*****************************************************************************/ void Gam_GetMatchBeingPlayed (void) diff --git a/swad_game.h b/swad_game.h index 3539801c3..88cafc634 100644 --- a/swad_game.h +++ b/swad_game.h @@ -130,6 +130,8 @@ void Gam_CreateAndStartNewMatch (void); void Gam_ResumeUnfinishedMatch (void); void Gam_NextStatusMatch (void); +void Gam_ShowFinishedMatchResults (void); + void Gam_GetMatchBeingPlayed (void); void Gam_ShowNewMatchToMeAsStd (void); void Gam_RefreshCurrentMatchStd (void);