diff --git a/swad_action.c b/swad_action.c
index be439c2c6..d3f000ede 100644
--- a/swad_action.c
+++ b/swad_action.c
@@ -632,8 +632,6 @@ Assessment:
463. ActChgGam Modify data of an existing game
464. ActReqRemGam Request the removal of a game
465. ActRemGam Remove game
- 466. ActReqRstGam Request the reset of answers of a game
- 467. ActRstGam Reset answers of game
468. ActHidGam Hide game
469. ActShoGam Show game
470. ActAddOneGamQst Add a new question to a game
@@ -2176,8 +2174,6 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
/* ActChgGam */{1655,-1,TabUnk,ActSeeAllGam ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Gam_RecFormGame ,NULL},
/* ActReqRemGam */{1656,-1,TabUnk,ActSeeAllGam ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Gam_AskRemGame ,NULL},
/* ActRemGam */{1657,-1,TabUnk,ActSeeAllGam ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Gam_RemoveGame ,NULL},
- /* ActReqRstGam */{1658,-1,TabUnk,ActSeeAllGam ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Gam_AskResetGame ,NULL},
- /* ActRstGam */{1659,-1,TabUnk,ActSeeAllGam ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Gam_ResetGame ,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},
@@ -4878,8 +4874,8 @@ Act_Action_t Act_FromActCodToAction[1 + Act_MAX_ACTION_COD] = // Do not reuse un
ActChgGam, // #1655
ActReqRemGam, // #1656
ActRemGam, // #1657
- ActReqRstGam, // #1658
- ActRstGam, // #1659
+ -1, // #1658 (obsolete action)
+ -1, // #1659 (obsolete action)
ActHidGam, // #1660
ActShoGam, // #1661
ActAddOneGamQst, // #1662
@@ -4892,7 +4888,7 @@ Act_Action_t Act_FromActCodToAction[1 + Act_MAX_ACTION_COD] = // Do not reuse un
ActDwnGamQst, // #1669
ActReqNewMchTch, // #1670
ActNewMchTch, // #1671
- ActFwdMchTch, // #1672
+ ActFwdMchTch, // #1672
-1, // #1673 (obsolete action)
ActSeePrj, // #1674
ActFrmNewPrj, // #1675
diff --git a/swad_action.h b/swad_action.h
index 53fb67856..b8f09dd4d 100644
--- a/swad_action.h
+++ b/swad_action.h
@@ -64,7 +64,7 @@ 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 + 173 + 437 + 176 + 169 + 16 + 68)
+#define Act_NUM_ACTIONS (1 + 4 + 64 + 38 + 12 + 42 + 36 + 19 + 110 + 171 + 437 + 176 + 169 + 16 + 68)
#define Act_MAX_ACTION_COD 1794
@@ -628,44 +628,42 @@ typedef signed int Act_Action_t; // Must be a signed type, because -1 is used to
#define ActChgGam (ActChgCrsTT1stDay + 135)
#define ActReqRemGam (ActChgCrsTT1stDay + 136)
#define ActRemGam (ActChgCrsTT1stDay + 137)
-#define ActReqRstGam (ActChgCrsTT1stDay + 138)
-#define ActRstGam (ActChgCrsTT1stDay + 139)
-#define ActHidGam (ActChgCrsTT1stDay + 140)
-#define ActShoGam (ActChgCrsTT1stDay + 141)
-#define ActAddOneGamQst (ActChgCrsTT1stDay + 142)
-#define ActGamLstTstQst (ActChgCrsTT1stDay + 143)
-#define ActAddTstQstToGam (ActChgCrsTT1stDay + 144)
-#define ActReqRemGamQst (ActChgCrsTT1stDay + 145)
-#define ActRemGamQst (ActChgCrsTT1stDay + 146)
-#define ActUp_GamQst (ActChgCrsTT1stDay + 147)
-#define ActDwnGamQst (ActChgCrsTT1stDay + 148)
+#define ActHidGam (ActChgCrsTT1stDay + 138)
+#define ActShoGam (ActChgCrsTT1stDay + 139)
+#define ActAddOneGamQst (ActChgCrsTT1stDay + 140)
+#define ActGamLstTstQst (ActChgCrsTT1stDay + 141)
+#define ActAddTstQstToGam (ActChgCrsTT1stDay + 142)
+#define ActReqRemGamQst (ActChgCrsTT1stDay + 143)
+#define ActRemGamQst (ActChgCrsTT1stDay + 144)
+#define ActUp_GamQst (ActChgCrsTT1stDay + 145)
+#define ActDwnGamQst (ActChgCrsTT1stDay + 146)
-#define ActSeeSvy (ActChgCrsTT1stDay + 149)
-#define ActAnsSvy (ActChgCrsTT1stDay + 150)
-#define ActFrmNewSvy (ActChgCrsTT1stDay + 151)
-#define ActEdiOneSvy (ActChgCrsTT1stDay + 152)
-#define ActNewSvy (ActChgCrsTT1stDay + 153)
-#define ActChgSvy (ActChgCrsTT1stDay + 154)
-#define ActReqRemSvy (ActChgCrsTT1stDay + 155)
-#define ActRemSvy (ActChgCrsTT1stDay + 156)
-#define ActReqRstSvy (ActChgCrsTT1stDay + 157)
-#define ActRstSvy (ActChgCrsTT1stDay + 158)
-#define ActHidSvy (ActChgCrsTT1stDay + 159)
-#define ActShoSvy (ActChgCrsTT1stDay + 160)
-#define ActEdiOneSvyQst (ActChgCrsTT1stDay + 161)
-#define ActRcvSvyQst (ActChgCrsTT1stDay + 162)
-#define ActReqRemSvyQst (ActChgCrsTT1stDay + 163)
-#define ActRemSvyQst (ActChgCrsTT1stDay + 164)
+#define ActSeeSvy (ActChgCrsTT1stDay + 147)
+#define ActAnsSvy (ActChgCrsTT1stDay + 148)
+#define ActFrmNewSvy (ActChgCrsTT1stDay + 149)
+#define ActEdiOneSvy (ActChgCrsTT1stDay + 150)
+#define ActNewSvy (ActChgCrsTT1stDay + 151)
+#define ActChgSvy (ActChgCrsTT1stDay + 152)
+#define ActReqRemSvy (ActChgCrsTT1stDay + 153)
+#define ActRemSvy (ActChgCrsTT1stDay + 154)
+#define ActReqRstSvy (ActChgCrsTT1stDay + 155)
+#define ActRstSvy (ActChgCrsTT1stDay + 156)
+#define ActHidSvy (ActChgCrsTT1stDay + 157)
+#define ActShoSvy (ActChgCrsTT1stDay + 158)
+#define ActEdiOneSvyQst (ActChgCrsTT1stDay + 159)
+#define ActRcvSvyQst (ActChgCrsTT1stDay + 160)
+#define ActReqRemSvyQst (ActChgCrsTT1stDay + 161)
+#define ActRemSvyQst (ActChgCrsTT1stDay + 162)
-#define ActSeeOneExaAnn (ActChgCrsTT1stDay + 165)
-#define ActSeeDatExaAnn (ActChgCrsTT1stDay + 166)
-#define ActEdiExaAnn (ActChgCrsTT1stDay + 167)
-#define ActRcvExaAnn (ActChgCrsTT1stDay + 168)
-#define ActPrnExaAnn (ActChgCrsTT1stDay + 169)
-#define ActReqRemExaAnn (ActChgCrsTT1stDay + 170)
-#define ActRemExaAnn (ActChgCrsTT1stDay + 171)
-#define ActHidExaAnn (ActChgCrsTT1stDay + 172)
-#define ActShoExaAnn (ActChgCrsTT1stDay + 173)
+#define ActSeeOneExaAnn (ActChgCrsTT1stDay + 163)
+#define ActSeeDatExaAnn (ActChgCrsTT1stDay + 164)
+#define ActEdiExaAnn (ActChgCrsTT1stDay + 165)
+#define ActRcvExaAnn (ActChgCrsTT1stDay + 166)
+#define ActPrnExaAnn (ActChgCrsTT1stDay + 167)
+#define ActReqRemExaAnn (ActChgCrsTT1stDay + 168)
+#define ActRemExaAnn (ActChgCrsTT1stDay + 169)
+#define ActHidExaAnn (ActChgCrsTT1stDay + 170)
+#define ActShoExaAnn (ActChgCrsTT1stDay + 171)
/*****************************************************************************/
/******************************** Files tab **********************************/
diff --git a/swad_changelog.h b/swad_changelog.h
index b281f021f..f2f3fcda5 100644
--- a/swad_changelog.h
+++ b/swad_changelog.h
@@ -459,20 +459,14 @@ enscript -2 --landscape --color --file-align=2 --highlight --line-numbers -o - *
En OpenSWAD:
ps2pdf source.ps destination.pdf
*/
-/*
-can not remove the groups associated to matches of a game
-Type of answer not valid in a game.
-
-
-¿Eliminar botón de reset en un juego? Tal vez sí, para simplificar. No tiene sentido resetear todas las partidas de un juego.
-¿Poner botón de reset en una partida? No parece necesario, basta con eliminarla y crear otra
-
-*/
-
-#define Log_PLATFORM_VERSION "SWAD 19.5.5 (2019-09-17)"
+#define Log_PLATFORM_VERSION "SWAD 19.6 (2019-09-17)"
#define CSS_FILE "swad19.3.css"
#define JS_FILE "swad18.130.2.js"
/*
+ Version 19.6: Sep 17, 2019 Remove actions to reset a game. (244600 lines)
+ 1 change necessary in database:
+UPDATE actions SET Obsolete='Y' WHERE ActCod IN (1658,1659);
+
Version 19.5.5: Sep 17, 2019 Fixed bug while creating a match. (244733 lines)
Version 19.5.4: Sep 17, 2019 Fixed bugs while removing games in a course. (244732 lines)
Version 19.5.3: Sep 17, 2019 Removed unused column in table of matches.
diff --git a/swad_game.c b/swad_game.c
index bbf48137f..5d965af6e 100644
--- a/swad_game.c
+++ b/swad_game.c
@@ -532,16 +532,9 @@ void Gam_PutHiddenParamGameOrder (void)
static void Gam_PutFormsToRemEditOneGame (const struct Game *Game,
const char *Anchor)
{
- extern const char *Txt_Reset;
-
/***** Put icon to remove game *****/
Ico_PutContextualIconToRemove (ActReqRemGam,Gam_PutParams);
- /***** Put icon to reset game *****/
- Lay_PutContextualLinkOnlyIcon (ActReqRstGam,NULL,Gam_PutParams,
- "recycle.svg",
- Txt_Reset);
-
/***** Put icon to hide/show game *****/
if (Game->Status.Visible)
Ico_PutContextualIconToHide (ActHidGam,Anchor,Gam_PutParams);
@@ -919,77 +912,6 @@ void Gam_RemoveGame (void)
Gam_ListAllGames ();
}
-/*****************************************************************************/
-/***************** Ask for confirmation of reset of a game *****************/
-/*****************************************************************************/
-
-void Gam_AskResetGame (void)
- {
- extern const char *Txt_Do_you_really_want_to_reset_the_game_X;
- extern const char *Txt_Reset_game;
- struct Game Game;
-
- /***** Get parameters *****/
- Gam_GetParamOrder ();
- Grp_GetParamWhichGrps ();
- Gbl.Games.CurrentPage = Pag_GetParamPagNum (Pag_GAMES);
-
- /***** Get game code *****/
- if ((Game.GamCod = Gam_GetParamGameCod ()) == -1L)
- Lay_ShowErrorAndExit ("Code of game is missing.");
-
- /***** Get data of the game from database *****/
- Gam_GetDataOfGameByCod (&Game);
- if (!Game.Status.ICanEdit)
- Lay_ShowErrorAndExit ("You can not reset this game.");
-
- /***** Ask for confirmation of reset *****/
- Gam_CurrentGamCod = Game.GamCod;
- Ale_ShowAlertAndButton (ActRstGam,NULL,NULL,
- Gam_PutParams,
- Btn_REMOVE_BUTTON,
- Txt_Reset_game,
- Ale_QUESTION,Txt_Do_you_really_want_to_reset_the_game_X,
- Game.Title);
-
- /***** Show games again *****/
- Gam_ListAllGames ();
- }
-
-/*****************************************************************************/
-/******************************* Reset a game ******************************/
-/*****************************************************************************/
-
-void Gam_ResetGame (void)
- {
- extern const char *Txt_Game_X_reset;
- struct Game Game;
-
- /***** Get game code *****/
- if ((Game.GamCod = Gam_GetParamGameCod ()) == -1L)
- Lay_ShowErrorAndExit ("Code of game is missing.");
-
- /***** Get data of the game from database *****/
- Gam_GetDataOfGameByCod (&Game);
- if (!Game.Status.ICanEdit)
- Lay_ShowErrorAndExit ("You can not reset this game.");
-
- /***** Reset all the answers in this game *****/
- DB_QueryUPDATE ("can not reset answers of a game",
- "DELETE FROM mch_answers"
- " USING mch_matches,mch_answers"
- " WHERE mch_matches.GamCod=%ld"
- " AND mch_matches.MchCod=mch_answers.MchCod",
- Game.GamCod);
-
- /***** Write message to show the change made *****/
- Ale_ShowAlert (Ale_SUCCESS,Txt_Game_X_reset,
- Game.Title);
-
- /***** Show games again *****/
- Gam_ListAllGames ();
- }
-
/*****************************************************************************/
/******************************** Hide a game ******************************/
/*****************************************************************************/
diff --git a/swad_game.h b/swad_game.h
index 366479c37..9fbef36c3 100644
--- a/swad_game.h
+++ b/swad_game.h
@@ -97,8 +97,6 @@ void Gam_PutParamGameCod (long GamCod);
long Gam_GetParamGameCod (void);
void Gam_AskRemGame (void);
void Gam_RemoveGame (void);
-void Gam_AskResetGame (void);
-void Gam_ResetGame (void);
void Gam_HideGame (void);
void Gam_UnhideGame (void);
void Gam_RecFormGame (void);
diff --git a/swad_text.c b/swad_text.c
index 1e2f3e7b7..4cf5a180c 100644
--- a/swad_text.c
+++ b/swad_text.c
@@ -9075,27 +9075,6 @@ const char *Txt_Do_you_really_want_to_remove_your_photo =
"Você realmente deseja remover a sua foto?";
#endif
-const char *Txt_Do_you_really_want_to_reset_the_game_X = // Warning: it is very important to include %s in the following sentences
-#if L==1 // ca
- "De veres voleu posar a zero le joc %s?";
-#elif L==2 // de
- "Wollen Sie die Spiel %s wirklich reset?";
-#elif L==3 // en
- "Do you really want to reset the game %s?";
-#elif L==4 // es
- "¿Realmente desea poner a cero el juego %s?";
-#elif L==5 // fr
- "Voulez-vous vraiment reset le jeu %s?";
-#elif L==6 // gn
- "¿Realmente desea poner a cero el juego %s?"; // Okoteve traducción
-#elif L==7 // it
- "Vuoi realmente resettare il gioco %s?";
-#elif L==8 // pl
- "Czy na pewno chcesz zresetowac gra %s?";
-#elif L==9 // pt
- "Você realmente deseja reiniciar o jogo %s?";
-#endif
-
const char *Txt_Do_you_really_want_to_reset_the_survey_X = // Warning: it is very important to include %s in the following sentences
#if L==1 // ca
"De veres voleu posar a zero l'enquesta %s?";
@@ -13574,27 +13553,6 @@ const char *Txt_Game_X_removed = // Warning: it is very important to include %s
"Jogo %s removido.";
#endif
-const char *Txt_Game_X_reset = // Warning: it is very important to include %s in the following sentences
-#if L==1 // ca
- "Joc %s posat a zero..";
-#elif L==2 // de
- "Spiel %s zurückgesetzt.";
-#elif L==3 // en
- "Game %s reset.";
-#elif L==4 // es
- "Juego %s puesto a cero.";
-#elif L==5 // fr
- "Jeu %s remis à zéro.";
-#elif L==6 // gn
- "Juego %s puesto a cero."; // Okoteve traducción
-#elif L==7 // it
- "Gioco %s resettato.";
-#elif L==8 // pl
- "Gra %s zresetowane.";
-#elif L==9 // pt
- "Jogo %s fixado em zero.";
-#endif
-
const char *Txt_Games =
#if L==1 // ca
"Jocs";
@@ -33257,27 +33215,6 @@ const char *Txt_Reset =
"Reiniciar";
#endif
-const char *Txt_Reset_game =
-#if L==1 // ca
- "Posar joc a zero";
-#elif L==2 // de
- "Reset Spiel";
-#elif L==3 // en
- "Reset game";
-#elif L==4 // es
- "Poner juego a cero";
-#elif L==5 // fr
- "Reset jeu";
-#elif L==6 // gn
- "Poner juego a cero"; // Okoteve traducción
-#elif L==7 // it
- "Resettare gioco";
-#elif L==8 // pl
- "Reset grę";
-#elif L==9 // pt
- "Reiniciar jogo";
-#endif
-
const char *Txt_Reset_survey =
#if L==1 // ca
"Posar enquesta a zero";