mirror of https://github.com/acanas/swad-core.git
Version19.16.1
This commit is contained in:
parent
cf2a210545
commit
4c166d3bdc
|
@ -470,10 +470,11 @@ enscript -2 --landscape --color --file-align=2 --highlight --line-numbers -o - *
|
||||||
En OpenSWAD:
|
En OpenSWAD:
|
||||||
ps2pdf source.ps destination.pdf
|
ps2pdf source.ps destination.pdf
|
||||||
*/
|
*/
|
||||||
#define Log_PLATFORM_VERSION "SWAD 19.16 (2019-09-26)"
|
#define Log_PLATFORM_VERSION "SWAD 19.16.1 (2019-09-26)"
|
||||||
#define CSS_FILE "swad19.15.css"
|
#define CSS_FILE "swad19.15.css"
|
||||||
#define JS_FILE "swad19.15.js"
|
#define JS_FILE "swad19.15.js"
|
||||||
/*
|
/*
|
||||||
|
Version 19.16.1: Sep 26, 2019 Code refactoring in edition of games. (246416 lines)
|
||||||
Version 19.16: Sep 26, 2019 Make it impossible to edit a game when it has matches. (246424 lines)
|
Version 19.16: Sep 26, 2019 Make it impossible to edit a game when it has matches. (246424 lines)
|
||||||
Version 19.15: Sep 26, 2019 Refresh only left part of the teacher's screen when playing a match. (246332 lines)
|
Version 19.15: Sep 26, 2019 Refresh only left part of the teacher's screen when playing a match. (246332 lines)
|
||||||
Version 19.14.6: Sep 26, 2019 Code refactoring related to match refreshing. (246294 lines)
|
Version 19.14.6: Sep 26, 2019 Code refactoring related to match refreshing. (246294 lines)
|
||||||
|
|
69
swad_game.c
69
swad_game.c
|
@ -128,6 +128,8 @@ static void Gam_PutParamsOneQst (void);
|
||||||
static void Gam_ExchangeQuestions (long GamCod,
|
static void Gam_ExchangeQuestions (long GamCod,
|
||||||
unsigned QstIndTop,unsigned QstIndBottom);
|
unsigned QstIndTop,unsigned QstIndBottom);
|
||||||
|
|
||||||
|
static bool Gam_GetNumMchsGameAndCheckIfEditable (struct Game *Game);
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/*************************** List all the games ******************************/
|
/*************************** List all the games ******************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -1043,7 +1045,6 @@ void Gam_RequestCreatOrEditGame (void)
|
||||||
extern const char *Hlp_ASSESSMENT_Games_new_game;
|
extern const char *Hlp_ASSESSMENT_Games_new_game;
|
||||||
extern const char *Hlp_ASSESSMENT_Games_edit_game;
|
extern const char *Hlp_ASSESSMENT_Games_edit_game;
|
||||||
extern const char *The_ClassFormInBox[The_NUM_THEMES];
|
extern const char *The_ClassFormInBox[The_NUM_THEMES];
|
||||||
extern const char *Txt_You_can_not_edit_a_game_with_matches;
|
|
||||||
extern const char *Txt_New_game;
|
extern const char *Txt_New_game;
|
||||||
extern const char *Txt_Edit_game;
|
extern const char *Txt_Edit_game;
|
||||||
extern const char *Txt_Title;
|
extern const char *Txt_Title;
|
||||||
|
@ -1063,9 +1064,7 @@ void Gam_RequestCreatOrEditGame (void)
|
||||||
Game.GamCod = Gam_GetParamGameCod ();
|
Game.GamCod = Gam_GetParamGameCod ();
|
||||||
|
|
||||||
/***** Check if game has matches *****/
|
/***** Check if game has matches *****/
|
||||||
if ((Game.NumMchs = Gam_GetNumMchsGame (Game.GamCod)))
|
if (Gam_GetNumMchsGameAndCheckIfEditable (&Game))
|
||||||
Ale_ShowAlert (Ale_WARNING,Txt_You_can_not_edit_a_game_with_matches);
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
/***** Get from the database the data of the game *****/
|
/***** Get from the database the data of the game *****/
|
||||||
ItsANewGame = (Game.GamCod < 0);
|
ItsANewGame = (Game.GamCod < 0);
|
||||||
|
@ -1158,7 +1157,6 @@ void Gam_RequestCreatOrEditGame (void)
|
||||||
|
|
||||||
void Gam_RecFormGame (void)
|
void Gam_RecFormGame (void)
|
||||||
{
|
{
|
||||||
extern const char *Txt_You_can_not_edit_a_game_with_matches;
|
|
||||||
extern const char *Txt_Already_existed_a_game_with_the_title_X;
|
extern const char *Txt_Already_existed_a_game_with_the_title_X;
|
||||||
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;
|
||||||
|
@ -1171,9 +1169,7 @@ void Gam_RecFormGame (void)
|
||||||
NewGame.GamCod = Gam_GetParamGameCod ();
|
NewGame.GamCod = Gam_GetParamGameCod ();
|
||||||
|
|
||||||
/***** Check if game has matches *****/
|
/***** Check if game has matches *****/
|
||||||
if ((NewGame.NumMchs = Gam_GetNumMchsGame (NewGame.GamCod)))
|
if (Gam_GetNumMchsGameAndCheckIfEditable (&NewGame))
|
||||||
Ale_ShowAlert (Ale_WARNING,Txt_You_can_not_edit_a_game_with_matches);
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
ItsANewGame = (NewGame.GamCod < 0);
|
ItsANewGame = (NewGame.GamCod < 0);
|
||||||
if (!ItsANewGame)
|
if (!ItsANewGame)
|
||||||
|
@ -1395,7 +1391,6 @@ unsigned Gam_GetNumQstsGame (long GamCod)
|
||||||
|
|
||||||
void Gam_RequestNewQuestion (void)
|
void Gam_RequestNewQuestion (void)
|
||||||
{
|
{
|
||||||
extern const char *Txt_You_can_not_edit_a_game_with_matches;
|
|
||||||
struct Game Game;
|
struct Game Game;
|
||||||
|
|
||||||
/***** Get game code *****/
|
/***** Get game code *****/
|
||||||
|
@ -1403,9 +1398,7 @@ void Gam_RequestNewQuestion (void)
|
||||||
Lay_ShowErrorAndExit ("Code of game is missing.");
|
Lay_ShowErrorAndExit ("Code of game is missing.");
|
||||||
|
|
||||||
/***** Check if game has matches *****/
|
/***** Check if game has matches *****/
|
||||||
if ((Game.NumMchs = Gam_GetNumMchsGame (Game.GamCod)))
|
if (Gam_GetNumMchsGameAndCheckIfEditable (&Game))
|
||||||
Ale_ShowAlert (Ale_WARNING,Txt_You_can_not_edit_a_game_with_matches);
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
/***** Get other parameters *****/
|
/***** Get other parameters *****/
|
||||||
Gam_GetParamOrder ();
|
Gam_GetParamOrder ();
|
||||||
|
@ -1429,7 +1422,6 @@ void Gam_RequestNewQuestion (void)
|
||||||
|
|
||||||
void Gam_ListTstQuestionsToSelect (void)
|
void Gam_ListTstQuestionsToSelect (void)
|
||||||
{
|
{
|
||||||
extern const char *Txt_You_can_not_edit_a_game_with_matches;
|
|
||||||
struct Game Game;
|
struct Game Game;
|
||||||
|
|
||||||
/***** Get game code *****/
|
/***** Get game code *****/
|
||||||
|
@ -1437,9 +1429,7 @@ void Gam_ListTstQuestionsToSelect (void)
|
||||||
Lay_ShowErrorAndExit ("Code of game is missing.");
|
Lay_ShowErrorAndExit ("Code of game is missing.");
|
||||||
|
|
||||||
/***** Check if game has matches *****/
|
/***** Check if game has matches *****/
|
||||||
if ((Game.NumMchs = Gam_GetNumMchsGame (Game.GamCod)))
|
if (Gam_GetNumMchsGameAndCheckIfEditable (&Game))
|
||||||
Ale_ShowAlert (Ale_WARNING,Txt_You_can_not_edit_a_game_with_matches);
|
|
||||||
else
|
|
||||||
/***** List several test questions for selection *****/
|
/***** List several test questions for selection *****/
|
||||||
Tst_ListQuestionsToSelect (Game.GamCod);
|
Tst_ListQuestionsToSelect (Game.GamCod);
|
||||||
}
|
}
|
||||||
|
@ -1886,7 +1876,6 @@ static void Gam_PutButtonToAddNewQuestions (void)
|
||||||
|
|
||||||
void Gam_AddTstQuestionsToGame (void)
|
void Gam_AddTstQuestionsToGame (void)
|
||||||
{
|
{
|
||||||
extern const char *Txt_You_can_not_edit_a_game_with_matches;
|
|
||||||
extern const char *Txt_You_must_select_one_ore_more_questions;
|
extern const char *Txt_You_must_select_one_ore_more_questions;
|
||||||
struct Game Game;
|
struct Game Game;
|
||||||
const char *Ptr;
|
const char *Ptr;
|
||||||
|
@ -1899,9 +1888,7 @@ void Gam_AddTstQuestionsToGame (void)
|
||||||
Lay_ShowErrorAndExit ("Code of game is missing.");
|
Lay_ShowErrorAndExit ("Code of game is missing.");
|
||||||
|
|
||||||
/***** Check if game has matches *****/
|
/***** Check if game has matches *****/
|
||||||
if ((Game.NumMchs = Gam_GetNumMchsGame (Game.GamCod)))
|
if (Gam_GetNumMchsGameAndCheckIfEditable (&Game))
|
||||||
Ale_ShowAlert (Ale_WARNING,Txt_You_can_not_edit_a_game_with_matches);
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
/***** Get selected questions *****/
|
/***** Get selected questions *****/
|
||||||
/* Allocate space for selected question codes */
|
/* Allocate space for selected question codes */
|
||||||
|
@ -2017,7 +2004,6 @@ static void Gam_PutParamsOneQst (void)
|
||||||
|
|
||||||
void Gam_RequestRemoveQst (void)
|
void Gam_RequestRemoveQst (void)
|
||||||
{
|
{
|
||||||
extern const char *Txt_You_can_not_edit_a_game_with_matches;
|
|
||||||
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;
|
||||||
|
@ -2028,9 +2014,7 @@ void Gam_RequestRemoveQst (void)
|
||||||
Lay_ShowErrorAndExit ("Code of game is missing.");
|
Lay_ShowErrorAndExit ("Code of game is missing.");
|
||||||
|
|
||||||
/***** Check if game has matches *****/
|
/***** Check if game has matches *****/
|
||||||
if ((Game.NumMchs = Gam_GetNumMchsGame (Game.GamCod)))
|
if (Gam_GetNumMchsGameAndCheckIfEditable (&Game))
|
||||||
Ale_ShowAlert (Ale_WARNING,Txt_You_can_not_edit_a_game_with_matches);
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
/***** Get question index *****/
|
/***** Get question index *****/
|
||||||
QstInd = Gam_GetParamQstInd ();
|
QstInd = Gam_GetParamQstInd ();
|
||||||
|
@ -2057,7 +2041,6 @@ void Gam_RequestRemoveQst (void)
|
||||||
|
|
||||||
void Gam_RemoveQst (void)
|
void Gam_RemoveQst (void)
|
||||||
{
|
{
|
||||||
extern const char *Txt_You_can_not_edit_a_game_with_matches;
|
|
||||||
extern const char *Txt_Question_removed;
|
extern const char *Txt_Question_removed;
|
||||||
struct Game Game;
|
struct Game Game;
|
||||||
unsigned QstInd;
|
unsigned QstInd;
|
||||||
|
@ -2067,9 +2050,7 @@ void Gam_RemoveQst (void)
|
||||||
Lay_ShowErrorAndExit ("Code of game is missing.");
|
Lay_ShowErrorAndExit ("Code of game is missing.");
|
||||||
|
|
||||||
/***** Check if game has matches *****/
|
/***** Check if game has matches *****/
|
||||||
if ((Game.NumMchs = Gam_GetNumMchsGame (Game.GamCod)))
|
if (Gam_GetNumMchsGameAndCheckIfEditable (&Game))
|
||||||
Ale_ShowAlert (Ale_WARNING,Txt_You_can_not_edit_a_game_with_matches);
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
/***** Get question index *****/
|
/***** Get question index *****/
|
||||||
QstInd = Gam_GetParamQstInd ();
|
QstInd = Gam_GetParamQstInd ();
|
||||||
|
@ -2116,7 +2097,6 @@ void Gam_RemoveQst (void)
|
||||||
|
|
||||||
void Gam_MoveUpQst (void)
|
void Gam_MoveUpQst (void)
|
||||||
{
|
{
|
||||||
extern const char *Txt_You_can_not_edit_a_game_with_matches;
|
|
||||||
extern const char *Txt_The_question_has_been_moved_up;
|
extern const char *Txt_The_question_has_been_moved_up;
|
||||||
extern const char *Txt_Movement_not_allowed;
|
extern const char *Txt_Movement_not_allowed;
|
||||||
struct Game Game;
|
struct Game Game;
|
||||||
|
@ -2128,9 +2108,7 @@ void Gam_MoveUpQst (void)
|
||||||
Lay_ShowErrorAndExit ("Code of game is missing.");
|
Lay_ShowErrorAndExit ("Code of game is missing.");
|
||||||
|
|
||||||
/***** Check if game has matches *****/
|
/***** Check if game has matches *****/
|
||||||
if ((Game.NumMchs = Gam_GetNumMchsGame (Game.GamCod)))
|
if (Gam_GetNumMchsGameAndCheckIfEditable (&Game))
|
||||||
Ale_ShowAlert (Ale_WARNING,Txt_You_can_not_edit_a_game_with_matches);
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
/***** Get question index *****/
|
/***** Get question index *****/
|
||||||
QstIndBottom = Gam_GetParamQstInd ();
|
QstIndBottom = Gam_GetParamQstInd ();
|
||||||
|
@ -2166,7 +2144,6 @@ void Gam_MoveUpQst (void)
|
||||||
|
|
||||||
void Gam_MoveDownQst (void)
|
void Gam_MoveDownQst (void)
|
||||||
{
|
{
|
||||||
extern const char *Txt_You_can_not_edit_a_game_with_matches;
|
|
||||||
extern const char *Txt_The_question_has_been_moved_down;
|
extern const char *Txt_The_question_has_been_moved_down;
|
||||||
extern const char *Txt_Movement_not_allowed;
|
extern const char *Txt_Movement_not_allowed;
|
||||||
extern const char *Txt_This_game_has_no_questions;
|
extern const char *Txt_This_game_has_no_questions;
|
||||||
|
@ -2180,9 +2157,7 @@ void Gam_MoveDownQst (void)
|
||||||
Lay_ShowErrorAndExit ("Code of game is missing.");
|
Lay_ShowErrorAndExit ("Code of game is missing.");
|
||||||
|
|
||||||
/***** Check if game has matches *****/
|
/***** Check if game has matches *****/
|
||||||
if ((Game.NumMchs = Gam_GetNumMchsGame (Game.GamCod)))
|
if (Gam_GetNumMchsGameAndCheckIfEditable (&Game))
|
||||||
Ale_ShowAlert (Ale_WARNING,Txt_You_can_not_edit_a_game_with_matches);
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
/***** Get question index *****/
|
/***** Get question index *****/
|
||||||
QstIndTop = Gam_GetParamQstInd ();
|
QstIndTop = Gam_GetParamQstInd ();
|
||||||
|
@ -2271,6 +2246,27 @@ static void Gam_ExchangeQuestions (long GamCod,
|
||||||
"UNLOCK TABLES");
|
"UNLOCK TABLES");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/*********** Get number of matches and check is edition is possible **********/
|
||||||
|
/*****************************************************************************/
|
||||||
|
// Games with matches should not be edited
|
||||||
|
// Return true if no matches (if game is editable)
|
||||||
|
|
||||||
|
static bool Gam_GetNumMchsGameAndCheckIfEditable (struct Game *Game)
|
||||||
|
{
|
||||||
|
extern const char *Txt_You_can_not_edit_a_game_with_matches;
|
||||||
|
|
||||||
|
/***** Check if game has matches *****/
|
||||||
|
if ((Game->NumMchs = Gam_GetNumMchsGame (Game->GamCod)))
|
||||||
|
{
|
||||||
|
Ale_ShowAlert (Ale_WARNING,Txt_You_can_not_edit_a_game_with_matches);
|
||||||
|
return false; // It has matches ==> it's not editable
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return true; // It has no matches ==> it's editable
|
||||||
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/************* Request the creation of a new match as a teacher **************/
|
/************* Request the creation of a new match as a teacher **************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -2579,4 +2575,3 @@ void Gam_ShowTstTagsPresentInAGame (long GamCod)
|
||||||
/***** Free structure that stores the query result *****/
|
/***** Free structure that stores the query result *****/
|
||||||
DB_FreeMySQLResult (&mysql_res);
|
DB_FreeMySQLResult (&mysql_res);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue