mirror of
https://github.com/acanas/swad-core.git
synced 2024-06-10 02:35:25 +02:00
Version19.26
This commit is contained in:
parent
72e11e1ec2
commit
f24974157b
|
@ -456,6 +456,8 @@ Lo de mutear anuncios, en principio prefiero hacer una opci
|
||||||
|
|
||||||
// TODO: URGENTE: Reportado por Javier Fernández Baldomero. Al pasar lista con SWADroid, los estudiantes sin foto no salen en la lista de alumnos de SWADroid.
|
// TODO: URGENTE: Reportado por Javier Fernández Baldomero. Al pasar lista con SWADroid, los estudiantes sin foto no salen en la lista de alumnos de SWADroid.
|
||||||
|
|
||||||
|
// TODO: No repintar los botones de matches del profesor durante el refresco AJAX
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/****************************** Public constants *****************************/
|
/****************************** Public constants *****************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -474,10 +476,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.25.3 (2019-09-30)"
|
#define Log_PLATFORM_VERSION "SWAD 19.26 (2019-09-30)"
|
||||||
#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.26: Sep 30, 2019 Changes in edition of games. (246743 lines)
|
||||||
Version 19.25.3: Sep 30, 2019 Fixed bug: students should not see icon to add a match. (246745 lines)
|
Version 19.25.3: Sep 30, 2019 Fixed bug: students should not see icon to add a match. (246745 lines)
|
||||||
Version 19.25.2: Sep 30, 2019 Fixed bug in match results. (246744 lines)
|
Version 19.25.2: Sep 30, 2019 Fixed bug in match results. (246744 lines)
|
||||||
Version 19.25.1: Sep 30, 2019 Fixed bug in match results. (246743 lines)
|
Version 19.25.1: Sep 30, 2019 Fixed bug in match results. (246743 lines)
|
||||||
|
|
227
swad_game.c
227
swad_game.c
|
@ -114,7 +114,8 @@ static void Gam_RemAnswersOfAQuestion (long GamCod,unsigned QstInd);
|
||||||
static unsigned Gam_GetMaxQuestionIndexInGame (long GamCod);
|
static unsigned Gam_GetMaxQuestionIndexInGame (long GamCod);
|
||||||
static void Gam_ListGameQuestions (struct Game *Game);
|
static void Gam_ListGameQuestions (struct Game *Game);
|
||||||
static void Gam_ListOneOrMoreQuestionsForEdition (long GamCod,unsigned NumQsts,
|
static void Gam_ListOneOrMoreQuestionsForEdition (long GamCod,unsigned NumQsts,
|
||||||
MYSQL_RES *mysql_res);
|
MYSQL_RES *mysql_res,
|
||||||
|
bool ICanEditQuestions);
|
||||||
static void Gam_PutIconToAddNewQuestions (void);
|
static void Gam_PutIconToAddNewQuestions (void);
|
||||||
static void Gam_PutButtonToAddNewQuestions (void);
|
static void Gam_PutButtonToAddNewQuestions (void);
|
||||||
|
|
||||||
|
@ -573,8 +574,7 @@ static void Gam_PutFormsToRemEditOneGame (const struct Game *Game,
|
||||||
Ico_PutContextualIconToHide (ActHidGam,Anchor,Gam_PutParams);
|
Ico_PutContextualIconToHide (ActHidGam,Anchor,Gam_PutParams);
|
||||||
|
|
||||||
/***** Put icon to edit game *****/
|
/***** Put icon to edit game *****/
|
||||||
if (!Game->NumMchs) // Edit only if match has no matches
|
Ico_PutContextualIconToEdit (ActEdiOneGam,Gam_PutParams);
|
||||||
Ico_PutContextualIconToEdit (ActEdiOneGam,Gam_PutParams);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -1085,95 +1085,88 @@ void Gam_RequestCreatOrEditGame (void)
|
||||||
/***** Get parameters *****/
|
/***** Get parameters *****/
|
||||||
Game.GamCod = Gam_GetParams ();
|
Game.GamCod = Gam_GetParams ();
|
||||||
|
|
||||||
/***** Check if game has matches *****/
|
/***** Get from the database the data of the game *****/
|
||||||
if (Gam_GetNumMchsGameAndCheckIfEditable (&Game))
|
ItsANewGame = (Game.GamCod < 0);
|
||||||
|
if (ItsANewGame)
|
||||||
{
|
{
|
||||||
/***** Get from the database the data of the game *****/
|
/***** Put link (form) to create new game *****/
|
||||||
ItsANewGame = (Game.GamCod < 0);
|
if (!Gam_CheckIfICanEditGames ())
|
||||||
if (ItsANewGame)
|
Act_NoPermissionExit ();
|
||||||
{
|
|
||||||
/***** Put link (form) to create new game *****/
|
|
||||||
if (!Gam_CheckIfICanEditGames ())
|
|
||||||
Act_NoPermissionExit ();
|
|
||||||
|
|
||||||
/* Initialize to empty game */
|
/* Initialize to empty game */
|
||||||
Gam_ResetGame (&Game);
|
Gam_ResetGame (&Game);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* Get data of the game from database */
|
/* Get data of the game from database */
|
||||||
Gam_GetDataOfGameByCod (&Game);
|
Gam_GetDataOfGameByCod (&Game);
|
||||||
if (!Gam_CheckIfICanEditGames ())
|
if (!Gam_CheckIfICanEditGames ())
|
||||||
Act_NoPermissionExit ();
|
Act_NoPermissionExit ();
|
||||||
|
|
||||||
/* Get text of the game from database */
|
/* Get text of the game from database */
|
||||||
Gam_GetGameTxtFromDB (Game.GamCod,Txt);
|
Gam_GetGameTxtFromDB (Game.GamCod,Txt);
|
||||||
}
|
|
||||||
|
|
||||||
/***** Start form *****/
|
|
||||||
Gam_SetParamCurrentGamCod (Game.GamCod); // Used to pass parameter
|
|
||||||
Frm_StartForm (ItsANewGame ? ActNewGam :
|
|
||||||
ActChgGam);
|
|
||||||
Gam_PutParams ();
|
|
||||||
|
|
||||||
/***** Start box and table *****/
|
|
||||||
if (ItsANewGame)
|
|
||||||
Box_StartBoxTable (NULL,Txt_New_game,NULL,
|
|
||||||
Hlp_ASSESSMENT_Games_new_game,Box_NOT_CLOSABLE,2);
|
|
||||||
else
|
|
||||||
Box_StartBoxTable (NULL,
|
|
||||||
Game.Title[0] ? Game.Title :
|
|
||||||
Txt_Edit_game,
|
|
||||||
NULL,
|
|
||||||
Hlp_ASSESSMENT_Games_edit_game,Box_NOT_CLOSABLE,2);
|
|
||||||
|
|
||||||
/***** Game title *****/
|
|
||||||
fprintf (Gbl.F.Out,"<tr>"
|
|
||||||
"<td class=\"RIGHT_MIDDLE\">"
|
|
||||||
"<label for=\"Title\" class=\"%s\">%s:</label>"
|
|
||||||
"</td>"
|
|
||||||
"<td class=\"LEFT_MIDDLE\">"
|
|
||||||
"<input type=\"text\" id=\"Title\" name=\"Title\""
|
|
||||||
" size=\"45\" maxlength=\"%u\" value=\"%s\""
|
|
||||||
" required=\"required\" />"
|
|
||||||
"</td>"
|
|
||||||
"</tr>",
|
|
||||||
The_ClassFormInBox[Gbl.Prefs.Theme],
|
|
||||||
Txt_Title,
|
|
||||||
Gam_MAX_CHARS_TITLE,Game.Title);
|
|
||||||
|
|
||||||
/***** Game text *****/
|
|
||||||
fprintf (Gbl.F.Out,"<tr>"
|
|
||||||
"<td class=\"RIGHT_TOP\">"
|
|
||||||
"<label for=\"Txt\" class=\"%s\">%s:</label>"
|
|
||||||
"</td>"
|
|
||||||
"<td class=\"LEFT_TOP\">"
|
|
||||||
"<textarea id=\"Txt\" name=\"Txt\""
|
|
||||||
" cols=\"60\" rows=\"10\">",
|
|
||||||
The_ClassFormInBox[Gbl.Prefs.Theme],
|
|
||||||
Txt_Description);
|
|
||||||
if (!ItsANewGame)
|
|
||||||
fprintf (Gbl.F.Out,"%s",Txt);
|
|
||||||
fprintf (Gbl.F.Out,"</textarea>"
|
|
||||||
"</td>"
|
|
||||||
"</tr>");
|
|
||||||
|
|
||||||
/***** End table, send button and end box *****/
|
|
||||||
if (ItsANewGame)
|
|
||||||
Box_EndBoxTableWithButton (Btn_CREATE_BUTTON,Txt_Create_game);
|
|
||||||
else
|
|
||||||
Box_EndBoxTableWithButton (Btn_CONFIRM_BUTTON,Txt_Save_changes);
|
|
||||||
|
|
||||||
/***** End form *****/
|
|
||||||
Frm_EndForm ();
|
|
||||||
|
|
||||||
/***** Show questions of the game ready to be edited *****/
|
|
||||||
if (!ItsANewGame)
|
|
||||||
Gam_ListGameQuestions (&Game);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/***** Show all games *****/
|
/***** Start form *****/
|
||||||
Gam_ListAllGames ();
|
Gam_SetParamCurrentGamCod (Game.GamCod); // Used to pass parameter
|
||||||
|
Frm_StartForm (ItsANewGame ? ActNewGam :
|
||||||
|
ActChgGam);
|
||||||
|
Gam_PutParams ();
|
||||||
|
|
||||||
|
/***** Start box and table *****/
|
||||||
|
if (ItsANewGame)
|
||||||
|
Box_StartBoxTable (NULL,Txt_New_game,NULL,
|
||||||
|
Hlp_ASSESSMENT_Games_new_game,Box_NOT_CLOSABLE,2);
|
||||||
|
else
|
||||||
|
Box_StartBoxTable (NULL,
|
||||||
|
Game.Title[0] ? Game.Title :
|
||||||
|
Txt_Edit_game,
|
||||||
|
NULL,
|
||||||
|
Hlp_ASSESSMENT_Games_edit_game,Box_NOT_CLOSABLE,2);
|
||||||
|
|
||||||
|
/***** Game title *****/
|
||||||
|
fprintf (Gbl.F.Out,"<tr>"
|
||||||
|
"<td class=\"RIGHT_MIDDLE\">"
|
||||||
|
"<label for=\"Title\" class=\"%s\">%s:</label>"
|
||||||
|
"</td>"
|
||||||
|
"<td class=\"LEFT_MIDDLE\">"
|
||||||
|
"<input type=\"text\" id=\"Title\" name=\"Title\""
|
||||||
|
" size=\"45\" maxlength=\"%u\" value=\"%s\""
|
||||||
|
" required=\"required\" />"
|
||||||
|
"</td>"
|
||||||
|
"</tr>",
|
||||||
|
The_ClassFormInBox[Gbl.Prefs.Theme],
|
||||||
|
Txt_Title,
|
||||||
|
Gam_MAX_CHARS_TITLE,Game.Title);
|
||||||
|
|
||||||
|
/***** Game text *****/
|
||||||
|
fprintf (Gbl.F.Out,"<tr>"
|
||||||
|
"<td class=\"RIGHT_TOP\">"
|
||||||
|
"<label for=\"Txt\" class=\"%s\">%s:</label>"
|
||||||
|
"</td>"
|
||||||
|
"<td class=\"LEFT_TOP\">"
|
||||||
|
"<textarea id=\"Txt\" name=\"Txt\""
|
||||||
|
" cols=\"60\" rows=\"10\">",
|
||||||
|
The_ClassFormInBox[Gbl.Prefs.Theme],
|
||||||
|
Txt_Description);
|
||||||
|
if (!ItsANewGame)
|
||||||
|
fprintf (Gbl.F.Out,"%s",Txt);
|
||||||
|
fprintf (Gbl.F.Out,"</textarea>"
|
||||||
|
"</td>"
|
||||||
|
"</tr>");
|
||||||
|
|
||||||
|
/***** End table, send button and end box *****/
|
||||||
|
if (ItsANewGame)
|
||||||
|
Box_EndBoxTableWithButton (Btn_CREATE_BUTTON,Txt_Create_game);
|
||||||
|
else
|
||||||
|
Box_EndBoxTableWithButton (Btn_CONFIRM_BUTTON,Txt_Save_changes);
|
||||||
|
|
||||||
|
/***** End form *****/
|
||||||
|
Frm_EndForm ();
|
||||||
|
|
||||||
|
/***** Show questions of the game ready to be edited *****/
|
||||||
|
if (!ItsANewGame)
|
||||||
|
Gam_ListGameQuestions (&Game);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -1554,9 +1547,7 @@ static void Gam_ListGameQuestions (struct Game *Game)
|
||||||
extern const char *Txt_This_game_has_no_questions;
|
extern const char *Txt_This_game_has_no_questions;
|
||||||
MYSQL_RES *mysql_res;
|
MYSQL_RES *mysql_res;
|
||||||
unsigned NumQsts;
|
unsigned NumQsts;
|
||||||
bool Editing = (Gbl.Action.Act == ActEdiOneGam ||
|
bool ICanEditQuestions = Gam_GetNumMchsGameAndCheckIfEditable (Game);
|
||||||
Gbl.Action.Act == ActAddOneGamQst); // TODO: Ampliar casos en los que se está editando para que se muestre el botón de Añadir preguntas
|
|
||||||
bool ICanEditGames = Gam_CheckIfICanEditGames ();
|
|
||||||
|
|
||||||
/***** Get data of questions from database *****/
|
/***** Get data of questions from database *****/
|
||||||
NumQsts = (unsigned) DB_QuerySELECT (&mysql_res,"can not get data of a question",
|
NumQsts = (unsigned) DB_QuerySELECT (&mysql_res,"can not get data of a question",
|
||||||
|
@ -1574,19 +1565,19 @@ static void Gam_ListGameQuestions (struct Game *Game)
|
||||||
|
|
||||||
/***** Start box *****/
|
/***** Start box *****/
|
||||||
Gam_SetParamCurrentGamCod (Game->GamCod); // Used to pass parameter
|
Gam_SetParamCurrentGamCod (Game->GamCod); // Used to pass parameter
|
||||||
Box_StartBox (NULL,Txt_Questions,ICanEditGames ? Gam_PutIconToAddNewQuestions :
|
Box_StartBox (NULL,Txt_Questions,ICanEditQuestions ? Gam_PutIconToAddNewQuestions :
|
||||||
NULL,
|
NULL,
|
||||||
Hlp_ASSESSMENT_Games_questions,Box_NOT_CLOSABLE);
|
Hlp_ASSESSMENT_Games_questions,Box_NOT_CLOSABLE);
|
||||||
|
|
||||||
if (NumQsts)
|
if (NumQsts)
|
||||||
/***** Show the table with the questions *****/
|
/***** Show the table with the questions *****/
|
||||||
Gam_ListOneOrMoreQuestionsForEdition (Game->GamCod,NumQsts,mysql_res);
|
Gam_ListOneOrMoreQuestionsForEdition (Game->GamCod,NumQsts,mysql_res,
|
||||||
|
ICanEditQuestions);
|
||||||
else // This game has no questions
|
else // This game has no questions
|
||||||
Ale_ShowAlert (Ale_INFO,Txt_This_game_has_no_questions);
|
Ale_ShowAlert (Ale_INFO,Txt_This_game_has_no_questions);
|
||||||
|
|
||||||
if (ICanEditGames && // I can edit
|
if (ICanEditQuestions && // I can edit questions
|
||||||
(!NumQsts || // This game has no questions
|
!NumQsts) // This game has no questions
|
||||||
Editing)) // I am editing
|
|
||||||
/***** Put button to add a new question in this game *****/
|
/***** Put button to add a new question in this game *****/
|
||||||
Gam_PutButtonToAddNewQuestions ();
|
Gam_PutButtonToAddNewQuestions ();
|
||||||
|
|
||||||
|
@ -1602,7 +1593,8 @@ static void Gam_ListGameQuestions (struct Game *Game)
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
static void Gam_ListOneOrMoreQuestionsForEdition (long GamCod,unsigned NumQsts,
|
static void Gam_ListOneOrMoreQuestionsForEdition (long GamCod,unsigned NumQsts,
|
||||||
MYSQL_RES *mysql_res)
|
MYSQL_RES *mysql_res,
|
||||||
|
bool ICanEditQuestions)
|
||||||
{
|
{
|
||||||
extern const char *Txt_Questions;
|
extern const char *Txt_Questions;
|
||||||
extern const char *Txt_No_INDEX;
|
extern const char *Txt_No_INDEX;
|
||||||
|
@ -1617,7 +1609,6 @@ static void Gam_ListOneOrMoreQuestionsForEdition (long GamCod,unsigned NumQsts,
|
||||||
MYSQL_ROW row;
|
MYSQL_ROW row;
|
||||||
unsigned QstInd;
|
unsigned QstInd;
|
||||||
unsigned MaxQstInd;
|
unsigned MaxQstInd;
|
||||||
long QstCod;
|
|
||||||
char StrQstInd[10 + 1];
|
char StrQstInd[10 + 1];
|
||||||
|
|
||||||
/***** Get maximum question index *****/
|
/***** Get maximum question index *****/
|
||||||
|
@ -1671,7 +1662,7 @@ static void Gam_ListOneOrMoreQuestionsForEdition (long GamCod,unsigned NumQsts,
|
||||||
QstInd);
|
QstInd);
|
||||||
|
|
||||||
/* Get question code (row[1]) */
|
/* Get question code (row[1]) */
|
||||||
QstCod = Str_ConvertStrCodToLongCod (row[1]);
|
Gbl.Test.QstCod = Str_ConvertStrCodToLongCod (row[1]);
|
||||||
|
|
||||||
/***** Icons *****/
|
/***** Icons *****/
|
||||||
Gam_SetParamCurrentGamCod (GamCod); // Used to pass parameter
|
Gam_SetParamCurrentGamCod (GamCod); // Used to pass parameter
|
||||||
|
@ -1680,14 +1671,19 @@ static void Gam_ListOneOrMoreQuestionsForEdition (long GamCod,unsigned NumQsts,
|
||||||
"<td class=\"BT%u\">",Gbl.RowEvenOdd);
|
"<td class=\"BT%u\">",Gbl.RowEvenOdd);
|
||||||
|
|
||||||
/* Put icon to remove the question */
|
/* Put icon to remove the question */
|
||||||
Frm_StartForm (ActReqRemGamQst);
|
if (ICanEditQuestions)
|
||||||
Gam_PutParams ();
|
{
|
||||||
Gam_PutParamQstInd (QstInd);
|
Frm_StartForm (ActReqRemGamQst);
|
||||||
Ico_PutIconRemove ();
|
Gam_PutParams ();
|
||||||
Frm_EndForm ();
|
Gam_PutParamQstInd (QstInd);
|
||||||
|
Ico_PutIconRemove ();
|
||||||
|
Frm_EndForm ();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
Ico_PutIconRemovalNotAllowed ();
|
||||||
|
|
||||||
/* Put icon to move up the question */
|
/* Put icon to move up the question */
|
||||||
if (QstInd > 1)
|
if (ICanEditQuestions && QstInd > 1)
|
||||||
{
|
{
|
||||||
snprintf (Gbl.Title,sizeof (Gbl.Title),
|
snprintf (Gbl.Title,sizeof (Gbl.Title),
|
||||||
Txt_Move_up_X,
|
Txt_Move_up_X,
|
||||||
|
@ -1700,7 +1696,7 @@ static void Gam_ListOneOrMoreQuestionsForEdition (long GamCod,unsigned NumQsts,
|
||||||
Ico_PutIconOff ("arrow-up.svg",Txt_Movement_not_allowed);
|
Ico_PutIconOff ("arrow-up.svg",Txt_Movement_not_allowed);
|
||||||
|
|
||||||
/* Put icon to move down the question */
|
/* Put icon to move down the question */
|
||||||
if (QstInd < MaxQstInd)
|
if (ICanEditQuestions && QstInd < MaxQstInd)
|
||||||
{
|
{
|
||||||
snprintf (Gbl.Title,sizeof (Gbl.Title),
|
snprintf (Gbl.Title,sizeof (Gbl.Title),
|
||||||
Txt_Move_down_X,
|
Txt_Move_down_X,
|
||||||
|
@ -1713,8 +1709,8 @@ static void Gam_ListOneOrMoreQuestionsForEdition (long GamCod,unsigned NumQsts,
|
||||||
Ico_PutIconOff ("arrow-down.svg",Txt_Movement_not_allowed);
|
Ico_PutIconOff ("arrow-down.svg",Txt_Movement_not_allowed);
|
||||||
|
|
||||||
/* Put icon to edit the question */
|
/* Put icon to edit the question */
|
||||||
Gbl.Test.QstCod = QstCod;
|
if (ICanEditQuestions)
|
||||||
Ico_PutContextualIconToEdit (ActEdiOneTstQst,Tst_PutParamQstCod);
|
Ico_PutContextualIconToEdit (ActEdiOneTstQst,Tst_PutParamQstCod);
|
||||||
|
|
||||||
fprintf (Gbl.F.Out,"</td>");
|
fprintf (Gbl.F.Out,"</td>");
|
||||||
|
|
||||||
|
@ -2181,20 +2177,17 @@ static void Gam_ExchangeQuestions (long GamCod,
|
||||||
/*********** Get number of matches and check is edition is possible **********/
|
/*********** Get number of matches and check is edition is possible **********/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
// Games with matches should not be edited
|
// Games with matches should not be edited
|
||||||
// Return true if no matches (if game is editable)
|
|
||||||
|
|
||||||
static bool Gam_GetNumMchsGameAndCheckIfEditable (struct Game *Game)
|
static bool Gam_GetNumMchsGameAndCheckIfEditable (struct Game *Game)
|
||||||
{
|
{
|
||||||
extern const char *Txt_You_can_not_edit_a_game_with_matches;
|
/***** Get number of matches *****/
|
||||||
|
Game->NumMchs = Mch_GetNumMchsInGame (Game->GamCod);
|
||||||
|
|
||||||
/***** Check if game has matches *****/
|
if (Gam_CheckIfICanEditGames ())
|
||||||
if ((Game->NumMchs = Mch_GetNumMchsInGame (Game->GamCod)))
|
/***** Questions are editable only if game has no matches *****/
|
||||||
{
|
return (bool) (Game->NumMchs == 0);
|
||||||
Ale_ShowAlert (Ale_WARNING,Txt_You_can_not_edit_a_game_with_matches);
|
|
||||||
return false; // It has matches ==> it's not editable
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
return true; // It has no matches ==> it's editable
|
return false; // Questions are not editable
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
|
@ -54242,7 +54242,7 @@ const char *Txt_You_can_not_disable_file_uploading_once_folders_have_been_create
|
||||||
"Você não pode desativar o upload de arquivos,"
|
"Você não pode desativar o upload de arquivos,"
|
||||||
" uma vez diretórios foram criados.";
|
" uma vez diretórios foram criados.";
|
||||||
#endif
|
#endif
|
||||||
|
/*
|
||||||
const char *Txt_You_can_not_edit_a_game_with_matches =
|
const char *Txt_You_can_not_edit_a_game_with_matches =
|
||||||
#if L==1 // ca
|
#if L==1 // ca
|
||||||
"No es pot editar un joc amb partides.";
|
"No es pot editar un joc amb partides.";
|
||||||
|
@ -54263,8 +54263,7 @@ const char *Txt_You_can_not_edit_a_game_with_matches =
|
||||||
#elif L==9 // pt
|
#elif L==9 // pt
|
||||||
"Você não pode editar um jogo com partidas.";
|
"Você não pode editar um jogo com partidas.";
|
||||||
#endif
|
#endif
|
||||||
|
*/
|
||||||
|
|
||||||
const char *Txt_You_can_not_leave_empty_intermediate_answers =
|
const char *Txt_You_can_not_leave_empty_intermediate_answers =
|
||||||
#if L==1 // ca
|
#if L==1 // ca
|
||||||
"No puede dejar respuestas intermedias sin rellenar."; // Necessita traduccio
|
"No puede dejar respuestas intermedias sin rellenar."; // Necessita traduccio
|
||||||
|
|
Loading…
Reference in New Issue
Block a user