mirror of
https://github.com/acanas/swad-core.git
synced 2024-09-20 00:02:42 +02:00
Version 16.251.11
This commit is contained in:
parent
3964984d31
commit
c8129ec0ee
|
@ -502,7 +502,7 @@ Assessment:
|
||||||
NEW. ActRstGam Reset answers of game
|
NEW. ActRstGam Reset answers of game
|
||||||
NEW. ActHidGam Hide game
|
NEW. ActHidGam Hide game
|
||||||
NEW. ActShoGam Show game
|
NEW. ActShoGam Show game
|
||||||
NEW. ActEdiOneGamQst Edit a new question for a game
|
NEW. ActAddOneGamQst Add a new question to a game
|
||||||
NEW. ActGamLstTstQst List test questions to select one or several questions
|
NEW. ActGamLstTstQst List test questions to select one or several questions
|
||||||
NEW. ActAddTstQstToGam Add selected test questions to game
|
NEW. ActAddTstQstToGam Add selected test questions to game
|
||||||
NEW. ActReqRemGamQst Request the removal of a question of a game
|
NEW. ActReqRemGamQst Request the removal of a question of a game
|
||||||
|
@ -1979,7 +1979,7 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
|
||||||
/* ActRstGam */{1659,-1,TabUnk,ActSeeAllGam ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Rmt_ResetGame ,NULL},
|
/* ActRstGam */{1659,-1,TabUnk,ActSeeAllGam ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Rmt_ResetGame ,NULL},
|
||||||
/* ActHidGam */{1660,-1,TabUnk,ActSeeAllGam ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Rmt_HideGame ,NULL},
|
/* ActHidGam */{1660,-1,TabUnk,ActSeeAllGam ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Rmt_HideGame ,NULL},
|
||||||
/* ActShoGam */{1661,-1,TabUnk,ActSeeAllGam ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Rmt_UnhideGame ,NULL},
|
/* ActShoGam */{1661,-1,TabUnk,ActSeeAllGam ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Rmt_UnhideGame ,NULL},
|
||||||
/* ActEdiOneGamQst */{1662,-1,TabUnk,ActSeeAllGam ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Rmt_RequestEditQuestion ,NULL},
|
/* ActAddOneGamQst */{1662,-1,TabUnk,ActSeeAllGam ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Rmt_RequestNewQuestion ,NULL},
|
||||||
/* ActGamLstTstQst */{1666,-1,TabUnk,ActSeeAllGam ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Tst_ListQuestionsToSelect ,NULL},
|
/* ActGamLstTstQst */{1666,-1,TabUnk,ActSeeAllGam ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Tst_ListQuestionsToSelect ,NULL},
|
||||||
/* ActAddTstQstToGam */{1667,-1,TabUnk,ActSeeAllGam ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Rmt_AddTstQuestionsToGame ,NULL},
|
/* ActAddTstQstToGam */{1667,-1,TabUnk,ActSeeAllGam ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Rmt_AddTstQuestionsToGame ,NULL},
|
||||||
/* ActReqRemGamQst */{1664,-1,TabUnk,ActSeeAllGam ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Rmt_RequestRemoveQst ,NULL},
|
/* ActReqRemGamQst */{1664,-1,TabUnk,ActSeeAllGam ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Rmt_RequestRemoveQst ,NULL},
|
||||||
|
@ -4705,7 +4705,7 @@ Act_Action_t Act_FromActCodToAction[1 + Act_MAX_ACTION_COD] = // Do not reuse un
|
||||||
ActRstGam, // #1659
|
ActRstGam, // #1659
|
||||||
ActHidGam, // #1660
|
ActHidGam, // #1660
|
||||||
ActShoGam, // #1661
|
ActShoGam, // #1661
|
||||||
ActEdiOneGamQst, // #1662
|
ActAddOneGamQst, // #1662
|
||||||
-1, // #1663 (obsolete action)
|
-1, // #1663 (obsolete action)
|
||||||
ActReqRemGamQst, // #1664
|
ActReqRemGamQst, // #1664
|
||||||
ActRemGamQst, // #1665
|
ActRemGamQst, // #1665
|
||||||
|
|
|
@ -514,7 +514,7 @@ typedef signed int Act_Action_t; // Must be a signed type, because -1 is used to
|
||||||
#define ActRstGam (ActChgCalCrs1stDay + 74)
|
#define ActRstGam (ActChgCalCrs1stDay + 74)
|
||||||
#define ActHidGam (ActChgCalCrs1stDay + 75)
|
#define ActHidGam (ActChgCalCrs1stDay + 75)
|
||||||
#define ActShoGam (ActChgCalCrs1stDay + 76)
|
#define ActShoGam (ActChgCalCrs1stDay + 76)
|
||||||
#define ActEdiOneGamQst (ActChgCalCrs1stDay + 77)
|
#define ActAddOneGamQst (ActChgCalCrs1stDay + 77)
|
||||||
#define ActGamLstTstQst (ActChgCalCrs1stDay + 78)
|
#define ActGamLstTstQst (ActChgCalCrs1stDay + 78)
|
||||||
#define ActAddTstQstToGam (ActChgCalCrs1stDay + 79)
|
#define ActAddTstQstToGam (ActChgCalCrs1stDay + 79)
|
||||||
#define ActReqRemGamQst (ActChgCalCrs1stDay + 80)
|
#define ActReqRemGamQst (ActChgCalCrs1stDay + 80)
|
||||||
|
|
|
@ -238,13 +238,14 @@
|
||||||
/****************************** Public constants *****************************/
|
/****************************** Public constants *****************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
#define Log_PLATFORM_VERSION "SWAD 16.251.10 (2017-09-06)"
|
#define Log_PLATFORM_VERSION "SWAD 16.251.11 (2017-09-06)"
|
||||||
#define CSS_FILE "swad16.251.8.css"
|
#define CSS_FILE "swad16.251.8.css"
|
||||||
#define JS_FILE "swad16.206.3.js"
|
#define JS_FILE "swad16.206.3.js"
|
||||||
|
|
||||||
// Number of lines (includes comments but not blank lines) has been got with the following command:
|
// Number of lines (includes comments but not blank lines) has been got with the following command:
|
||||||
// nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*?.h sql/swad*.sql | tail -1
|
// nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*?.h sql/swad*.sql | tail -1
|
||||||
/*
|
/*
|
||||||
|
Version 16.251.11:Sep 07, 2017 Listing games for remote control. Not finished. (226868 lines)
|
||||||
Version 16.251.10:Sep 06, 2017 Listing games for remote control. Not finished. (226913 lines)
|
Version 16.251.10:Sep 06, 2017 Listing games for remote control. Not finished. (226913 lines)
|
||||||
2 changes necessary in database:
|
2 changes necessary in database:
|
||||||
DROP TABLE IF EXISTS gam_answers;
|
DROP TABLE IF EXISTS gam_answers;
|
||||||
|
|
|
@ -66,19 +66,6 @@ const char *Rmt_StrAnswerTypesDB[Rmt_NUM_ANS_TYPES] =
|
||||||
|
|
||||||
#define Rmt_MAX_ANSWERS_PER_QUESTION 10
|
#define Rmt_MAX_ANSWERS_PER_QUESTION 10
|
||||||
|
|
||||||
struct GameQuestion
|
|
||||||
{
|
|
||||||
long QstCod;
|
|
||||||
unsigned QstInd;
|
|
||||||
Rmt_AnswerType_t AnswerType;
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
char *Text;
|
|
||||||
} AnsChoice[Rmt_MAX_ANSWERS_PER_QUESTION];
|
|
||||||
bool AllAnsTypes;
|
|
||||||
char ListAnsTypes[Rmt_MAX_BYTES_LIST_ANSWER_TYPES + 1];
|
|
||||||
};
|
|
||||||
|
|
||||||
#define Rmt_MAX_SELECTED_QUESTIONS 1000
|
#define Rmt_MAX_SELECTED_QUESTIONS 1000
|
||||||
#define Rmt_MAX_BYTES_LIST_SELECTED_QUESTIONS (Rmt_MAX_SELECTED_QUESTIONS * (1 + 10 + 1))
|
#define Rmt_MAX_BYTES_LIST_SELECTED_QUESTIONS (Rmt_MAX_SELECTED_QUESTIONS * (1 + 10 + 1))
|
||||||
|
|
||||||
|
@ -94,7 +81,7 @@ struct GameQuestion
|
||||||
/***************************** Private prototypes ****************************/
|
/***************************** Private prototypes ****************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
static void Rmt_ListAllGames (struct GameQuestion *GameQst);
|
static void Rmt_ListAllGames (void);
|
||||||
static bool Rmt_CheckIfICanCreateGame (void);
|
static bool Rmt_CheckIfICanCreateGame (void);
|
||||||
static void Rmt_PutIconsListGames (void);
|
static void Rmt_PutIconsListGames (void);
|
||||||
static void Rmt_PutIconToCreateNewGame (void);
|
static void Rmt_PutIconToCreateNewGame (void);
|
||||||
|
@ -102,8 +89,7 @@ static void Rmt_PutButtonToCreateNewGame (void);
|
||||||
static void Rmt_PutParamsToCreateNewGame (void);
|
static void Rmt_PutParamsToCreateNewGame (void);
|
||||||
static void Rmt_PutFormToSelectWhichGroupsToShow (void);
|
static void Rmt_PutFormToSelectWhichGroupsToShow (void);
|
||||||
static void Rmt_ParamsWhichGroupsToShow (void);
|
static void Rmt_ParamsWhichGroupsToShow (void);
|
||||||
static void Rmt_ShowOneGame (long GamCod,struct GameQuestion *GameQst,
|
static void Rmt_ShowOneGame (long GamCod,bool ShowOnlyThisGameComplete);
|
||||||
bool ShowOnlyThisGameComplete);
|
|
||||||
static void Rmt_WriteAuthor (struct Game *Game);
|
static void Rmt_WriteAuthor (struct Game *Game);
|
||||||
static void Rmt_WriteStatus (struct Game *Game);
|
static void Rmt_WriteStatus (struct Game *Game);
|
||||||
static void Rmt_GetParamGameOrder (void);
|
static void Rmt_GetParamGameOrder (void);
|
||||||
|
@ -132,16 +118,14 @@ static void Rmt_GetAndWriteNamesOfGrpsAssociatedToGame (struct Game *Game);
|
||||||
static bool Rmt_CheckIfICanDoThisGameBasedOnGrps (long GamCod);
|
static bool Rmt_CheckIfICanDoThisGameBasedOnGrps (long GamCod);
|
||||||
|
|
||||||
static unsigned Rmt_GetNumQstsGame (long GamCod);
|
static unsigned Rmt_GetNumQstsGame (long GamCod);
|
||||||
static void Rmt_InitQst (struct GameQuestion *GameQst);
|
|
||||||
static void Rmt_PutParamQstCod (long QstCod);
|
static void Rmt_PutParamQstCod (long QstCod);
|
||||||
static long Rmt_GetParamQstCod (void);
|
static long Rmt_GetParamQstCod (void);
|
||||||
static void Rmt_RemAnswersOfAQuestion (long QstCod);
|
static void Rmt_RemAnswersOfAQuestion (long QstCod);
|
||||||
|
|
||||||
static unsigned Rmt_GetQstIndFromQstCod (long QstCod);
|
static unsigned Rmt_GetQstIndFromQstCod (long QstCod);
|
||||||
static unsigned Rmt_GetNextQuestionIndexInGame (long GamCod);
|
static unsigned Rmt_GetNextQuestionIndexInGame (long GamCod);
|
||||||
static void Rmt_ListGameQuestions (struct Game *Game,struct GameQuestion *GameQst);
|
static void Rmt_ListGameQuestions (struct Game *Game);
|
||||||
static void Rmt_ListOneOrMoreQuestionsForEdition (struct Game *Game,
|
static void Rmt_ListOneOrMoreQuestionsForEdition (struct Game *Game,
|
||||||
struct GameQuestion *GameQst,
|
|
||||||
unsigned NumQsts,
|
unsigned NumQsts,
|
||||||
MYSQL_RES *mysql_res);
|
MYSQL_RES *mysql_res);
|
||||||
static void Rmt_PutIconToAddNewQuestions (void);
|
static void Rmt_PutIconToAddNewQuestions (void);
|
||||||
|
@ -169,22 +153,20 @@ static unsigned Rmt_GetNumUsrsWhoHaveAnsweredGame (long GamCod);
|
||||||
|
|
||||||
void Rmt_SeeAllGames (void)
|
void Rmt_SeeAllGames (void)
|
||||||
{
|
{
|
||||||
struct GameQuestion GameQst;
|
|
||||||
|
|
||||||
/***** Get parameters *****/
|
/***** Get parameters *****/
|
||||||
Rmt_GetParamGameOrder ();
|
Rmt_GetParamGameOrder ();
|
||||||
Grp_GetParamWhichGrps ();
|
Grp_GetParamWhichGrps ();
|
||||||
Gbl.Games.CurrentPage = Pag_GetParamPagNum (Pag_SURVEYS);
|
Gbl.Games.CurrentPage = Pag_GetParamPagNum (Pag_SURVEYS);
|
||||||
|
|
||||||
/***** Show all the games *****/
|
/***** Show all the games *****/
|
||||||
Rmt_ListAllGames (&GameQst);
|
Rmt_ListAllGames ();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/*************************** Show all the games ****************************/
|
/*************************** Show all the games ****************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
static void Rmt_ListAllGames (struct GameQuestion *GameQst)
|
static void Rmt_ListAllGames (void)
|
||||||
{
|
{
|
||||||
extern const char *Hlp_ASSESSMENT_Games;
|
extern const char *Hlp_ASSESSMENT_Games;
|
||||||
extern const char *Txt_Games;
|
extern const char *Txt_Games;
|
||||||
|
@ -266,7 +248,7 @@ static void Rmt_ListAllGames (struct GameQuestion *GameQst)
|
||||||
for (NumGame = Pagination.FirstItemVisible;
|
for (NumGame = Pagination.FirstItemVisible;
|
||||||
NumGame <= Pagination.LastItemVisible;
|
NumGame <= Pagination.LastItemVisible;
|
||||||
NumGame++)
|
NumGame++)
|
||||||
Rmt_ShowOneGame (Gbl.Games.LstGamCods[NumGame - 1],GameQst,false);
|
Rmt_ShowOneGame (Gbl.Games.LstGamCods[NumGame - 1],false);
|
||||||
|
|
||||||
/***** End table *****/
|
/***** End table *****/
|
||||||
Tbl_EndTable ();
|
Tbl_EndTable ();
|
||||||
|
@ -393,10 +375,6 @@ static void Rmt_ParamsWhichGroupsToShow (void)
|
||||||
void Rmt_SeeOneGame (void)
|
void Rmt_SeeOneGame (void)
|
||||||
{
|
{
|
||||||
struct Game Game;
|
struct Game Game;
|
||||||
struct GameQuestion GameQst;
|
|
||||||
|
|
||||||
/***** Initialize question to zero *****/
|
|
||||||
Rmt_InitQst (&GameQst);
|
|
||||||
|
|
||||||
/***** Get parameters *****/
|
/***** Get parameters *****/
|
||||||
Rmt_GetParamGameOrder ();
|
Rmt_GetParamGameOrder ();
|
||||||
|
@ -408,15 +386,14 @@ void Rmt_SeeOneGame (void)
|
||||||
Lay_ShowErrorAndExit ("Code of game is missing.");
|
Lay_ShowErrorAndExit ("Code of game is missing.");
|
||||||
|
|
||||||
/***** Show game *****/
|
/***** Show game *****/
|
||||||
Rmt_ShowOneGame (Game.GamCod,&GameQst,true);
|
Rmt_ShowOneGame (Game.GamCod,true);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/****************************** Show one game ******************************/
|
/****************************** Show one game ******************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
static void Rmt_ShowOneGame (long GamCod,struct GameQuestion *GameQst,
|
static void Rmt_ShowOneGame (long GamCod,bool ShowOnlyThisGameComplete)
|
||||||
bool ShowOnlyThisGameComplete)
|
|
||||||
{
|
{
|
||||||
extern const char *Hlp_ASSESSMENT_Games;
|
extern const char *Hlp_ASSESSMENT_Games;
|
||||||
extern const char *Txt_Game;
|
extern const char *Txt_Game;
|
||||||
|
@ -660,7 +637,7 @@ static void Rmt_ShowOneGame (long GamCod,struct GameQuestion *GameQst,
|
||||||
{
|
{
|
||||||
fprintf (Gbl.F.Out,"<tr>"
|
fprintf (Gbl.F.Out,"<tr>"
|
||||||
"<td colspan=\"5\">");
|
"<td colspan=\"5\">");
|
||||||
Rmt_ListGameQuestions (&Game,GameQst);
|
Rmt_ListGameQuestions (&Game);
|
||||||
fprintf (Gbl.F.Out,"</td>"
|
fprintf (Gbl.F.Out,"</td>"
|
||||||
"</tr>");
|
"</tr>");
|
||||||
}
|
}
|
||||||
|
@ -1485,7 +1462,6 @@ void Rmt_AskRemGame (void)
|
||||||
extern const char *Txt_Do_you_really_want_to_remove_the_game_X;
|
extern const char *Txt_Do_you_really_want_to_remove_the_game_X;
|
||||||
extern const char *Txt_Remove_game;
|
extern const char *Txt_Remove_game;
|
||||||
struct Game Game;
|
struct Game Game;
|
||||||
struct GameQuestion GameQst;
|
|
||||||
|
|
||||||
/***** Get parameters *****/
|
/***** Get parameters *****/
|
||||||
Rmt_GetParamGameOrder ();
|
Rmt_GetParamGameOrder ();
|
||||||
|
@ -1510,7 +1486,7 @@ void Rmt_AskRemGame (void)
|
||||||
Btn_REMOVE_BUTTON,Txt_Remove_game);
|
Btn_REMOVE_BUTTON,Txt_Remove_game);
|
||||||
|
|
||||||
/***** Show games again *****/
|
/***** Show games again *****/
|
||||||
Rmt_ListAllGames (&GameQst);
|
Rmt_ListAllGames ();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -1522,7 +1498,6 @@ void Rmt_RemoveGame (void)
|
||||||
extern const char *Txt_Game_X_removed;
|
extern const char *Txt_Game_X_removed;
|
||||||
char Query[512];
|
char Query[512];
|
||||||
struct Game Game;
|
struct Game Game;
|
||||||
struct GameQuestion GameQst;
|
|
||||||
|
|
||||||
/***** Get game code *****/
|
/***** Get game code *****/
|
||||||
if ((Game.GamCod = Rmt_GetParamGameCod ()) == -1L)
|
if ((Game.GamCod = Rmt_GetParamGameCod ()) == -1L)
|
||||||
|
@ -1561,7 +1536,7 @@ void Rmt_RemoveGame (void)
|
||||||
Ale_ShowAlert (Ale_SUCCESS,Gbl.Alert.Txt);
|
Ale_ShowAlert (Ale_SUCCESS,Gbl.Alert.Txt);
|
||||||
|
|
||||||
/***** Show games again *****/
|
/***** Show games again *****/
|
||||||
Rmt_ListAllGames (&GameQst);
|
Rmt_ListAllGames ();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -1572,7 +1547,6 @@ void Rmt_AskResetGame (void)
|
||||||
{
|
{
|
||||||
extern const char *Txt_Do_you_really_want_to_reset_the_game_X;
|
extern const char *Txt_Do_you_really_want_to_reset_the_game_X;
|
||||||
struct Game Game;
|
struct Game Game;
|
||||||
struct GameQuestion GameQst;
|
|
||||||
|
|
||||||
/***** Get parameters *****/
|
/***** Get parameters *****/
|
||||||
Rmt_GetParamGameOrder ();
|
Rmt_GetParamGameOrder ();
|
||||||
|
@ -1598,7 +1572,7 @@ void Rmt_AskResetGame (void)
|
||||||
Rmt_PutButtonToResetGame ();
|
Rmt_PutButtonToResetGame ();
|
||||||
|
|
||||||
/***** Show games again *****/
|
/***** Show games again *****/
|
||||||
Rmt_ListAllGames (&GameQst);
|
Rmt_ListAllGames ();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -1624,7 +1598,6 @@ void Rmt_ResetGame (void)
|
||||||
extern const char *Txt_Game_X_reset;
|
extern const char *Txt_Game_X_reset;
|
||||||
char Query[512];
|
char Query[512];
|
||||||
struct Game Game;
|
struct Game Game;
|
||||||
struct GameQuestion GameQst;
|
|
||||||
|
|
||||||
/***** Get game code *****/
|
/***** Get game code *****/
|
||||||
if ((Game.GamCod = Rmt_GetParamGameCod ()) == -1L)
|
if ((Game.GamCod = Rmt_GetParamGameCod ()) == -1L)
|
||||||
|
@ -1653,7 +1626,7 @@ void Rmt_ResetGame (void)
|
||||||
Ale_ShowAlert (Ale_SUCCESS,Gbl.Alert.Txt);
|
Ale_ShowAlert (Ale_SUCCESS,Gbl.Alert.Txt);
|
||||||
|
|
||||||
/***** Show games again *****/
|
/***** Show games again *****/
|
||||||
Rmt_ListAllGames (&GameQst);
|
Rmt_ListAllGames ();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -1665,7 +1638,6 @@ void Rmt_HideGame (void)
|
||||||
extern const char *Txt_Game_X_is_now_hidden;
|
extern const char *Txt_Game_X_is_now_hidden;
|
||||||
char Query[128];
|
char Query[128];
|
||||||
struct Game Game;
|
struct Game Game;
|
||||||
struct GameQuestion GameQst;
|
|
||||||
|
|
||||||
/***** Get game code *****/
|
/***** Get game code *****/
|
||||||
if ((Game.GamCod = Rmt_GetParamGameCod ()) == -1L)
|
if ((Game.GamCod = Rmt_GetParamGameCod ()) == -1L)
|
||||||
|
@ -1687,7 +1659,7 @@ void Rmt_HideGame (void)
|
||||||
Ale_ShowAlert (Ale_SUCCESS,Gbl.Alert.Txt);
|
Ale_ShowAlert (Ale_SUCCESS,Gbl.Alert.Txt);
|
||||||
|
|
||||||
/***** Show games again *****/
|
/***** Show games again *****/
|
||||||
Rmt_ListAllGames (&GameQst);
|
Rmt_ListAllGames ();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -1699,7 +1671,6 @@ void Rmt_UnhideGame (void)
|
||||||
extern const char *Txt_Game_X_is_now_visible;
|
extern const char *Txt_Game_X_is_now_visible;
|
||||||
char Query[128];
|
char Query[128];
|
||||||
struct Game Game;
|
struct Game Game;
|
||||||
struct GameQuestion GameQst;
|
|
||||||
|
|
||||||
/***** Get game code *****/
|
/***** Get game code *****/
|
||||||
if ((Game.GamCod = Rmt_GetParamGameCod ()) == -1L)
|
if ((Game.GamCod = Rmt_GetParamGameCod ()) == -1L)
|
||||||
|
@ -1721,7 +1692,7 @@ void Rmt_UnhideGame (void)
|
||||||
Ale_ShowAlert (Ale_SUCCESS,Gbl.Alert.Txt);
|
Ale_ShowAlert (Ale_SUCCESS,Gbl.Alert.Txt);
|
||||||
|
|
||||||
/***** Show games again *****/
|
/***** Show games again *****/
|
||||||
Rmt_ListAllGames (&GameQst);
|
Rmt_ListAllGames ();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -1760,7 +1731,6 @@ void Rmt_RequestCreatOrEditGame (void)
|
||||||
extern const char *Txt_Create_game;
|
extern const char *Txt_Create_game;
|
||||||
extern const char *Txt_Save;
|
extern const char *Txt_Save;
|
||||||
struct Game Game;
|
struct Game Game;
|
||||||
struct GameQuestion GameQst;
|
|
||||||
bool ItsANewGame;
|
bool ItsANewGame;
|
||||||
char Txt[Cns_MAX_BYTES_TEXT + 1];
|
char Txt[Cns_MAX_BYTES_TEXT + 1];
|
||||||
|
|
||||||
|
@ -1899,7 +1869,7 @@ void Rmt_RequestCreatOrEditGame (void)
|
||||||
|
|
||||||
/***** Show questions of the game ready to be edited *****/
|
/***** Show questions of the game ready to be edited *****/
|
||||||
if (!ItsANewGame)
|
if (!ItsANewGame)
|
||||||
Rmt_ListGameQuestions (&Game,&GameQst);
|
Rmt_ListGameQuestions (&Game);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -2062,7 +2032,6 @@ void Rmt_RecFormGame (void)
|
||||||
extern const char *Txt_You_must_specify_the_title_of_the_game;
|
extern const char *Txt_You_must_specify_the_title_of_the_game;
|
||||||
struct Game OldGame;
|
struct Game OldGame;
|
||||||
struct Game NewGame;
|
struct Game NewGame;
|
||||||
struct GameQuestion GameQst;
|
|
||||||
bool ItsANewGame;
|
bool ItsANewGame;
|
||||||
bool NewGameIsCorrect = true;
|
bool NewGameIsCorrect = true;
|
||||||
unsigned NumUsrsToBeNotifiedByEMail;
|
unsigned NumUsrsToBeNotifiedByEMail;
|
||||||
|
@ -2193,7 +2162,7 @@ void Rmt_RecFormGame (void)
|
||||||
Rmt_UpdateNumUsrsNotifiedByEMailAboutGame (NewGame.GamCod,NumUsrsToBeNotifiedByEMail);
|
Rmt_UpdateNumUsrsNotifiedByEMailAboutGame (NewGame.GamCod,NumUsrsToBeNotifiedByEMail);
|
||||||
|
|
||||||
/***** Show games again *****/
|
/***** Show games again *****/
|
||||||
Rmt_ListAllGames (&GameQst);
|
Rmt_ListAllGames ();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -2545,21 +2514,14 @@ static unsigned Rmt_GetNumQstsGame (long GamCod)
|
||||||
/*********** Put a form to edit/create a question in game *****************/
|
/*********** Put a form to edit/create a question in game *****************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
void Rmt_RequestEditQuestion (void)
|
void Rmt_RequestNewQuestion (void)
|
||||||
{
|
{
|
||||||
struct Game Game;
|
struct Game Game;
|
||||||
struct GameQuestion GameQst;
|
|
||||||
|
|
||||||
/***** Initialize question to zero *****/
|
|
||||||
Rmt_InitQst (&GameQst);
|
|
||||||
|
|
||||||
/***** Get game code *****/
|
/***** Get game code *****/
|
||||||
if ((Game.GamCod = Rmt_GetParamGameCod ()) == -1L)
|
if ((Game.GamCod = Rmt_GetParamGameCod ()) == -1L)
|
||||||
Lay_ShowErrorAndExit ("Code of game is missing.");
|
Lay_ShowErrorAndExit ("Code of game is missing.");
|
||||||
|
|
||||||
/* Get the question code */
|
|
||||||
GameQst.QstCod = Rmt_GetParamQstCod ();
|
|
||||||
|
|
||||||
/***** Get other parameters *****/
|
/***** Get other parameters *****/
|
||||||
Rmt_GetParamGameOrder ();
|
Rmt_GetParamGameOrder ();
|
||||||
Grp_GetParamWhichGrps ();
|
Grp_GetParamWhichGrps ();
|
||||||
|
@ -2569,24 +2531,7 @@ void Rmt_RequestEditQuestion (void)
|
||||||
Tst_ShowFormAskSelectTstsForGame (Game.GamCod);
|
Tst_ShowFormAskSelectTstsForGame (Game.GamCod);
|
||||||
|
|
||||||
/***** Show current game *****/
|
/***** Show current game *****/
|
||||||
Rmt_ShowOneGame (Game.GamCod,&GameQst,true);
|
Rmt_ShowOneGame (Game.GamCod,true);
|
||||||
}
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
|
||||||
/********************* Initialize a new question to zero *********************/
|
|
||||||
/*****************************************************************************/
|
|
||||||
|
|
||||||
static void Rmt_InitQst (struct GameQuestion *GameQst)
|
|
||||||
{
|
|
||||||
unsigned NumAns;
|
|
||||||
|
|
||||||
GameQst->QstCod = -1L;
|
|
||||||
GameQst->QstInd = 0;
|
|
||||||
GameQst->AnswerType = Rmt_ANS_UNIQUE_CHOICE;
|
|
||||||
for (NumAns = 0;
|
|
||||||
NumAns < Rmt_MAX_ANSWERS_PER_QUESTION;
|
|
||||||
NumAns++)
|
|
||||||
GameQst->AnsChoice[NumAns].Text = NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -2688,7 +2633,7 @@ static unsigned Rmt_GetNextQuestionIndexInGame (long GamCod)
|
||||||
/************************ List the questions of a game ***********************/
|
/************************ List the questions of a game ***********************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
static void Rmt_ListGameQuestions (struct Game *Game,struct GameQuestion *GameQst)
|
static void Rmt_ListGameQuestions (struct Game *Game)
|
||||||
{
|
{
|
||||||
extern const char *Hlp_ASSESSMENT_Games_questions;
|
extern const char *Hlp_ASSESSMENT_Games_questions;
|
||||||
extern const char *Txt_Questions;
|
extern const char *Txt_Questions;
|
||||||
|
@ -2698,7 +2643,7 @@ static void Rmt_ListGameQuestions (struct Game *Game,struct GameQuestion *GameQs
|
||||||
MYSQL_RES *mysql_res;
|
MYSQL_RES *mysql_res;
|
||||||
unsigned NumQsts;
|
unsigned NumQsts;
|
||||||
bool Editing = (Gbl.Action.Act == ActEdiOneGam ||
|
bool Editing = (Gbl.Action.Act == ActEdiOneGam ||
|
||||||
Gbl.Action.Act == ActEdiOneGamQst);
|
Gbl.Action.Act == ActAddOneGamQst);
|
||||||
Tst_ActionToDoWithQuestions_t ActionToDoWithQuestions;
|
Tst_ActionToDoWithQuestions_t ActionToDoWithQuestions;
|
||||||
|
|
||||||
/***** How to show the questions ******/
|
/***** How to show the questions ******/
|
||||||
|
@ -2740,8 +2685,7 @@ static void Rmt_ListGameQuestions (struct Game *Game,struct GameQuestion *GameQs
|
||||||
if (NumQsts)
|
if (NumQsts)
|
||||||
{
|
{
|
||||||
/***** Show the table with the questions *****/
|
/***** Show the table with the questions *****/
|
||||||
Rmt_ListOneOrMoreQuestionsForEdition (Game,GameQst,
|
Rmt_ListOneOrMoreQuestionsForEdition (Game,NumQsts,mysql_res);
|
||||||
NumQsts,mysql_res);
|
|
||||||
|
|
||||||
if (ActionToDoWithQuestions == Tst_SHOW_GAME_TO_ANSWER)
|
if (ActionToDoWithQuestions == Tst_SHOW_GAME_TO_ANSWER)
|
||||||
{
|
{
|
||||||
|
@ -2773,7 +2717,6 @@ static void Rmt_ListGameQuestions (struct Game *Game,struct GameQuestion *GameQs
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
static void Rmt_ListOneOrMoreQuestionsForEdition (struct Game *Game,
|
static void Rmt_ListOneOrMoreQuestionsForEdition (struct Game *Game,
|
||||||
struct GameQuestion *GameQst,
|
|
||||||
unsigned NumQsts,
|
unsigned NumQsts,
|
||||||
MYSQL_RES *mysql_res)
|
MYSQL_RES *mysql_res)
|
||||||
{
|
{
|
||||||
|
@ -2787,6 +2730,7 @@ static void Rmt_ListOneOrMoreQuestionsForEdition (struct Game *Game,
|
||||||
unsigned NumQst;
|
unsigned NumQst;
|
||||||
MYSQL_ROW row;
|
MYSQL_ROW row;
|
||||||
unsigned UniqueId;
|
unsigned UniqueId;
|
||||||
|
long QstCod;
|
||||||
|
|
||||||
/***** Write the heading *****/
|
/***** Write the heading *****/
|
||||||
Tbl_StartTableWideMargin (2);
|
Tbl_StartTableWideMargin (2);
|
||||||
|
@ -2831,9 +2775,9 @@ static void Rmt_ListOneOrMoreQuestionsForEdition (struct Game *Game,
|
||||||
Tst_QstConstructor ();
|
Tst_QstConstructor ();
|
||||||
|
|
||||||
/* row[0] holds the code of the question */
|
/* row[0] holds the code of the question */
|
||||||
if ((Gbl.Test.QstCod = Str_ConvertStrCodToLongCod (row[0])) < 0)
|
if ((QstCod = Str_ConvertStrCodToLongCod (row[0])) < 0)
|
||||||
Lay_ShowErrorAndExit ("Wrong code of question.");
|
Lay_ShowErrorAndExit ("Wrong code of question.");
|
||||||
GameQst->QstCod = Gbl.Test.QstCod;
|
Gbl.Test.QstCod = QstCod;
|
||||||
|
|
||||||
/***** Icons *****/
|
/***** Icons *****/
|
||||||
fprintf (Gbl.F.Out,"<tr>"
|
fprintf (Gbl.F.Out,"<tr>"
|
||||||
|
@ -2842,13 +2786,13 @@ static void Rmt_ListOneOrMoreQuestionsForEdition (struct Game *Game,
|
||||||
/* Write icon to remove the question */
|
/* Write icon to remove the question */
|
||||||
Act_FormStart (ActReqRemGamQst);
|
Act_FormStart (ActReqRemGamQst);
|
||||||
Rmt_PutParamGameCod (Game->GamCod);
|
Rmt_PutParamGameCod (Game->GamCod);
|
||||||
Rmt_PutParamQstCod (GameQst->QstCod);
|
Rmt_PutParamQstCod (QstCod);
|
||||||
Ico_PutIconRemove ();
|
Ico_PutIconRemove ();
|
||||||
Act_FormEnd ();
|
Act_FormEnd ();
|
||||||
|
|
||||||
/* Write icon to edit the question */
|
/* Write icon to edit the question */
|
||||||
Act_FormStart (ActEdiOneTstQst);
|
Act_FormStart (ActEdiOneTstQst);
|
||||||
Rmt_PutParamQstCod (GameQst->QstCod);
|
Rmt_PutParamQstCod (QstCod);
|
||||||
fprintf (Gbl.F.Out,"<input type=\"image\" src=\"%s/edit64x64.png\""
|
fprintf (Gbl.F.Out,"<input type=\"image\" src=\"%s/edit64x64.png\""
|
||||||
" alt=\"%s\" title=\"%s\""
|
" alt=\"%s\" title=\"%s\""
|
||||||
" class=\"ICO20x20\" />",
|
" class=\"ICO20x20\" />",
|
||||||
|
@ -2893,7 +2837,7 @@ static void Rmt_ListOneOrMoreQuestionsForEdition (struct Game *Game,
|
||||||
"TEST_IMG_EDIT_LIST_STEM_CONTAINER",
|
"TEST_IMG_EDIT_LIST_STEM_CONTAINER",
|
||||||
"TEST_IMG_EDIT_LIST_STEM");
|
"TEST_IMG_EDIT_LIST_STEM");
|
||||||
Tst_WriteQstFeedback (row[3],"TEST_EDI_LIGHT");
|
Tst_WriteQstFeedback (row[3],"TEST_EDI_LIGHT");
|
||||||
Tst_WriteAnswersGameResult (Game,GameQst->QstInd,GameQst->QstCod);
|
Tst_WriteAnswersGameResult (Game,NumQst,QstCod);
|
||||||
|
|
||||||
fprintf (Gbl.F.Out,"</td>"
|
fprintf (Gbl.F.Out,"</td>"
|
||||||
"</tr>");
|
"</tr>");
|
||||||
|
@ -2906,7 +2850,7 @@ static void Rmt_ListOneOrMoreQuestionsForEdition (struct Game *Game,
|
||||||
Tbl_EndTable ();
|
Tbl_EndTable ();
|
||||||
|
|
||||||
/***** Button to add a new question *****/
|
/***** Button to add a new question *****/
|
||||||
Tst_PutButtonToAddQuestion ();
|
Rmt_PutButtonToAddNewQuestions ();
|
||||||
|
|
||||||
/***** End box *****/
|
/***** End box *****/
|
||||||
Box_EndBox ();
|
Box_EndBox ();
|
||||||
|
@ -2921,7 +2865,7 @@ static void Rmt_PutIconToAddNewQuestions (void)
|
||||||
extern const char *Txt_Add_questions;
|
extern const char *Txt_Add_questions;
|
||||||
|
|
||||||
/***** Put form to create a new question *****/
|
/***** Put form to create a new question *****/
|
||||||
Lay_PutContextualLink (ActEdiOneGamQst,NULL,Rmt_PutParams,
|
Lay_PutContextualLink (ActAddOneGamQst,NULL,Rmt_PutParams,
|
||||||
"plus64x64.png",
|
"plus64x64.png",
|
||||||
Txt_Add_questions,NULL,
|
Txt_Add_questions,NULL,
|
||||||
NULL);
|
NULL);
|
||||||
|
@ -2935,7 +2879,7 @@ static void Rmt_PutButtonToAddNewQuestions (void)
|
||||||
{
|
{
|
||||||
extern const char *Txt_Add_questions;
|
extern const char *Txt_Add_questions;
|
||||||
|
|
||||||
Act_FormStart (ActEdiOneGamQst);
|
Act_FormStart (ActAddOneGamQst);
|
||||||
Rmt_PutParams ();
|
Rmt_PutParams ();
|
||||||
Btn_PutConfirmButton (Txt_Add_questions);
|
Btn_PutConfirmButton (Txt_Add_questions);
|
||||||
Act_FormEnd ();
|
Act_FormEnd ();
|
||||||
|
@ -2951,7 +2895,8 @@ void Rmt_AddTstQuestionsToGame (void)
|
||||||
struct Game Game;
|
struct Game Game;
|
||||||
const char *Ptr;
|
const char *Ptr;
|
||||||
char LongStr[1 + 10 + 1];
|
char LongStr[1 + 10 + 1];
|
||||||
struct GameQuestion GameQst;
|
long QstCod;
|
||||||
|
unsigned QstInd;
|
||||||
char Query[256];
|
char Query[256];
|
||||||
|
|
||||||
/***** Get game code *****/
|
/***** Get game code *****/
|
||||||
|
@ -2980,23 +2925,25 @@ void Rmt_AddTstQuestionsToGame (void)
|
||||||
{
|
{
|
||||||
/* Get next code */
|
/* Get next code */
|
||||||
Par_GetNextStrUntilSeparParamMult (&Ptr,LongStr,1 + 10);
|
Par_GetNextStrUntilSeparParamMult (&Ptr,LongStr,1 + 10);
|
||||||
if (sscanf (LongStr,"%ld",&GameQst.QstCod) != 1)
|
if (sscanf (LongStr,"%ld",&QstCod) != 1)
|
||||||
Lay_ShowErrorAndExit ("Wrong question code.");
|
Lay_ShowErrorAndExit ("Wrong question code.");
|
||||||
|
|
||||||
/* Get next index */
|
/* Get next index */
|
||||||
GameQst.QstInd = Rmt_GetNextQuestionIndexInGame (Game.GamCod);
|
QstInd = Rmt_GetNextQuestionIndexInGame (Game.GamCod);
|
||||||
|
|
||||||
/* Insert question in the table of questions */
|
/* Insert question in the table of questions */
|
||||||
sprintf (Query,"INSERT INTO gam_questions"
|
sprintf (Query,"INSERT INTO gam_questions"
|
||||||
" (GamCod,QstCod,QstInd)"
|
" (GamCod,QstCod,QstInd)"
|
||||||
" VALUES"
|
" VALUES"
|
||||||
" (%ld,%ld,%u)",
|
" (%ld,%ld,%u)",
|
||||||
Game.GamCod,GameQst.QstCod,GameQst.QstInd);
|
Game.GamCod,QstCod,QstInd);
|
||||||
DB_QueryINSERT (Query,"can not create question");
|
DB_QueryINSERT (Query,"can not create question");
|
||||||
}
|
}
|
||||||
|
|
||||||
/***** Free space for selected question codes *****/
|
/***** Free space for selected question codes *****/
|
||||||
Rmt_FreeListsSelectedQuestions ();
|
Rmt_FreeListsSelectedQuestions ();
|
||||||
|
|
||||||
|
/***** Show game again *****/
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -3162,7 +3109,8 @@ void Rmt_RequestRemoveQst (void)
|
||||||
extern const char *Txt_Do_you_really_want_to_remove_the_question_X;
|
extern const char *Txt_Do_you_really_want_to_remove_the_question_X;
|
||||||
extern const char *Txt_Remove_question;
|
extern const char *Txt_Remove_question;
|
||||||
struct Game Game;
|
struct Game Game;
|
||||||
struct GameQuestion GameQst;
|
long QstCod;
|
||||||
|
unsigned QstInd;
|
||||||
|
|
||||||
/***** Get parameters from form *****/
|
/***** Get parameters from form *****/
|
||||||
/* Get game code */
|
/* Get game code */
|
||||||
|
@ -3170,23 +3118,23 @@ void Rmt_RequestRemoveQst (void)
|
||||||
Lay_ShowErrorAndExit ("Code of game is missing.");
|
Lay_ShowErrorAndExit ("Code of game is missing.");
|
||||||
|
|
||||||
/* Get question code */
|
/* Get question code */
|
||||||
if ((GameQst.QstCod = Rmt_GetParamQstCod ()) < 0)
|
if ((QstCod = Rmt_GetParamQstCod ()) < 0)
|
||||||
Lay_ShowErrorAndExit ("Wrong code of question.");
|
Lay_ShowErrorAndExit ("Wrong code of question.");
|
||||||
|
|
||||||
/* Get question index */
|
/* Get question index */
|
||||||
GameQst.QstInd = Rmt_GetQstIndFromQstCod (GameQst.QstCod);
|
QstInd = Rmt_GetQstIndFromQstCod (QstCod);
|
||||||
|
|
||||||
/***** Show question and button to remove question *****/
|
/***** Show question and button to remove question *****/
|
||||||
Gbl.Games.CurrentGamCod = Game.GamCod;
|
Gbl.Games.CurrentGamCod = Game.GamCod;
|
||||||
Gbl.Games.CurrentQstCod = GameQst.QstCod;
|
Gbl.Games.CurrentQstCod = QstCod;
|
||||||
sprintf (Gbl.Alert.Txt,Txt_Do_you_really_want_to_remove_the_question_X,
|
sprintf (Gbl.Alert.Txt,Txt_Do_you_really_want_to_remove_the_question_X,
|
||||||
(unsigned long) (GameQst.QstInd + 1));
|
(unsigned long) (QstInd + 1));
|
||||||
Ale_ShowAlertAndButton (Ale_QUESTION,Gbl.Alert.Txt,
|
Ale_ShowAlertAndButton (Ale_QUESTION,Gbl.Alert.Txt,
|
||||||
ActRemGamQst,NULL,NULL,Rmt_PutParamsRemoveOneQst,
|
ActRemGamQst,NULL,NULL,Rmt_PutParamsRemoveOneQst,
|
||||||
Btn_REMOVE_BUTTON,Txt_Remove_question);
|
Btn_REMOVE_BUTTON,Txt_Remove_question);
|
||||||
|
|
||||||
/***** Show current game *****/
|
/***** Show current game *****/
|
||||||
Rmt_ShowOneGame (Game.GamCod,&GameQst,true);
|
Rmt_ShowOneGame (Game.GamCod,true);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -3198,7 +3146,8 @@ void Rmt_RemoveQst (void)
|
||||||
extern const char *Txt_Question_removed;
|
extern const char *Txt_Question_removed;
|
||||||
char Query[512];
|
char Query[512];
|
||||||
struct Game Game;
|
struct Game Game;
|
||||||
struct GameQuestion GameQst;
|
long QstCod;
|
||||||
|
unsigned QstInd;
|
||||||
|
|
||||||
/***** Get parameters from form *****/
|
/***** Get parameters from form *****/
|
||||||
/* Get game code */
|
/* Get game code */
|
||||||
|
@ -3206,19 +3155,19 @@ void Rmt_RemoveQst (void)
|
||||||
Lay_ShowErrorAndExit ("Code of game is missing.");
|
Lay_ShowErrorAndExit ("Code of game is missing.");
|
||||||
|
|
||||||
/* Get question code */
|
/* Get question code */
|
||||||
if ((GameQst.QstCod = Rmt_GetParamQstCod ()) < 0)
|
if ((QstCod = Rmt_GetParamQstCod ()) < 0)
|
||||||
Lay_ShowErrorAndExit ("Wrong code of question.");
|
Lay_ShowErrorAndExit ("Wrong code of question.");
|
||||||
|
|
||||||
/* Get question index */
|
/* Get question index */
|
||||||
GameQst.QstInd = Rmt_GetQstIndFromQstCod (GameQst.QstCod);
|
QstInd = Rmt_GetQstIndFromQstCod (QstCod);
|
||||||
|
|
||||||
/***** Remove the question from all the tables *****/
|
/***** Remove the question from all the tables *****/
|
||||||
/* Remove answers from this test question */
|
/* Remove answers from this test question */
|
||||||
Rmt_RemAnswersOfAQuestion (GameQst.QstCod);
|
Rmt_RemAnswersOfAQuestion (QstCod);
|
||||||
|
|
||||||
/* Remove the question itself */
|
/* Remove the question itself */
|
||||||
sprintf (Query,"DELETE FROM gam_questions WHERE QstCod=%ld",
|
sprintf (Query,"DELETE FROM gam_questions WHERE QstCod=%ld",
|
||||||
GameQst.QstCod);
|
QstCod);
|
||||||
DB_QueryDELETE (Query,"can not remove a question");
|
DB_QueryDELETE (Query,"can not remove a question");
|
||||||
if (!mysql_affected_rows (&Gbl.mysql))
|
if (!mysql_affected_rows (&Gbl.mysql))
|
||||||
Lay_ShowErrorAndExit ("The question to be removed does not exist.");
|
Lay_ShowErrorAndExit ("The question to be removed does not exist.");
|
||||||
|
@ -3226,7 +3175,7 @@ void Rmt_RemoveQst (void)
|
||||||
/* Change index of questions greater than this */
|
/* Change index of questions greater than this */
|
||||||
sprintf (Query,"UPDATE gam_questions SET QstInd=QstInd-1"
|
sprintf (Query,"UPDATE gam_questions SET QstInd=QstInd-1"
|
||||||
" WHERE GamCod=%ld AND QstInd>%u",
|
" WHERE GamCod=%ld AND QstInd>%u",
|
||||||
Game.GamCod,GameQst.QstInd);
|
Game.GamCod,QstInd);
|
||||||
DB_QueryUPDATE (Query,"can not update indexes of questions");
|
DB_QueryUPDATE (Query,"can not update indexes of questions");
|
||||||
|
|
||||||
/***** Write message *****/
|
/***** Write message *****/
|
||||||
|
@ -3234,7 +3183,7 @@ void Rmt_RemoveQst (void)
|
||||||
Ale_ShowAlert (Ale_SUCCESS,Gbl.Alert.Txt);
|
Ale_ShowAlert (Ale_SUCCESS,Gbl.Alert.Txt);
|
||||||
|
|
||||||
/***** Show current game *****/
|
/***** Show current game *****/
|
||||||
Rmt_ShowOneGame (Game.GamCod,&GameQst,true);
|
Rmt_ShowOneGame (Game.GamCod,true);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -3246,7 +3195,6 @@ void Rmt_ReceiveGameAnswers (void)
|
||||||
extern const char *Txt_You_already_played_this_game_before;
|
extern const char *Txt_You_already_played_this_game_before;
|
||||||
extern const char *Txt_Thanks_for_playing_the_game;
|
extern const char *Txt_Thanks_for_playing_the_game;
|
||||||
struct Game Game;
|
struct Game Game;
|
||||||
struct GameQuestion GameQst;
|
|
||||||
|
|
||||||
/***** Get game code *****/
|
/***** Get game code *****/
|
||||||
if ((Game.GamCod = Rmt_GetParamGameCod ()) == -1L)
|
if ((Game.GamCod = Rmt_GetParamGameCod ()) == -1L)
|
||||||
|
@ -3266,7 +3214,7 @@ void Rmt_ReceiveGameAnswers (void)
|
||||||
}
|
}
|
||||||
|
|
||||||
/***** Show current game *****/
|
/***** Show current game *****/
|
||||||
Rmt_ShowOneGame (Game.GamCod,&GameQst,true);
|
Rmt_ShowOneGame (Game.GamCod,true);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -3282,7 +3230,7 @@ static void Rmt_ReceiveAndStoreUserAnswersToAGame (long GamCod)
|
||||||
unsigned NumQsts;
|
unsigned NumQsts;
|
||||||
long QstCod;
|
long QstCod;
|
||||||
char ParamName[3 + 10 + 6 + 1];
|
char ParamName[3 + 10 + 6 + 1];
|
||||||
char StrAnswersIndexes[Rmt_MAX_ANSWERS_PER_QUESTION * (10 + 1)];
|
char StrAnswersIndexes[Tst_MAX_OPTIONS_PER_QUESTION * (10 + 1)];
|
||||||
const char *Ptr;
|
const char *Ptr;
|
||||||
char UnsignedStr[10 + 1];
|
char UnsignedStr[10 + 1];
|
||||||
unsigned AnsInd;
|
unsigned AnsInd;
|
||||||
|
|
|
@ -110,8 +110,7 @@ void Rmt_RemoveGroup (long GrpCod);
|
||||||
void Rmt_RemoveGroupsOfType (long GrpTypCod);
|
void Rmt_RemoveGroupsOfType (long GrpTypCod);
|
||||||
void Rmt_RemoveGames (Sco_Scope_t Scope,long Cod);
|
void Rmt_RemoveGames (Sco_Scope_t Scope,long Cod);
|
||||||
|
|
||||||
void Rmt_RequestEditQuestion (void);
|
void Rmt_RequestNewQuestion (void);
|
||||||
// void Rmt_ReceiveQst (void);
|
|
||||||
|
|
||||||
void Rmt_GetAndDrawBarNumUsrsWhoAnswered (struct Game *Game,long QstCod,unsigned AnsInd);
|
void Rmt_GetAndDrawBarNumUsrsWhoAnswered (struct Game *Game,long QstCod,unsigned AnsInd);
|
||||||
|
|
||||||
|
|
|
@ -164,6 +164,8 @@ static void Tst_UpdateMyNumAccessTst (unsigned NumAccessesTst);
|
||||||
static void Tst_UpdateLastAccTst (void);
|
static void Tst_UpdateLastAccTst (void);
|
||||||
static bool Tst_CheckIfICanEditTests (void);
|
static bool Tst_CheckIfICanEditTests (void);
|
||||||
static void Tst_PutIconsTests (void);
|
static void Tst_PutIconsTests (void);
|
||||||
|
static void Tst_PutButtonToAddQuestion (void);
|
||||||
|
|
||||||
static long Tst_GetParamTagCode (void);
|
static long Tst_GetParamTagCode (void);
|
||||||
static bool Tst_CheckIfCurrentCrsHasTestTags (void);
|
static bool Tst_CheckIfCurrentCrsHasTestTags (void);
|
||||||
static unsigned long Tst_GetAllTagsFromCurrentCrs (MYSQL_RES **mysql_res);
|
static unsigned long Tst_GetAllTagsFromCurrentCrs (MYSQL_RES **mysql_res);
|
||||||
|
@ -1446,7 +1448,7 @@ static void Tst_PutIconsTests (void)
|
||||||
/**************** Put button to create a new test question *******************/
|
/**************** Put button to create a new test question *******************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
void Tst_PutButtonToAddQuestion (void)
|
static void Tst_PutButtonToAddQuestion (void)
|
||||||
{
|
{
|
||||||
extern const char *Txt_New_question;
|
extern const char *Txt_New_question;
|
||||||
|
|
||||||
|
|
|
@ -56,7 +56,6 @@
|
||||||
|
|
||||||
#define Tst_MAX_BYTES_ANSWER_TYPE 32
|
#define Tst_MAX_BYTES_ANSWER_TYPE 32
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/******************************* Public types ********************************/
|
/******************************* Public types ********************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -166,7 +165,6 @@ void Tst_CheckIfNumberOfAnswersIsOne (void);
|
||||||
unsigned long Tst_GetTagsQst (long QstCod,MYSQL_RES **mysql_res);
|
unsigned long Tst_GetTagsQst (long QstCod,MYSQL_RES **mysql_res);
|
||||||
void Tst_GetAndWriteTagsQst (long QstCod);
|
void Tst_GetAndWriteTagsQst (long QstCod);
|
||||||
|
|
||||||
void Tst_PutButtonToAddQuestion (void);
|
|
||||||
void Tst_ShowFormConfig (void);
|
void Tst_ShowFormConfig (void);
|
||||||
void Tst_EnableTag (void);
|
void Tst_EnableTag (void);
|
||||||
void Tst_DisableTag (void);
|
void Tst_DisableTag (void);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user