mirror of https://github.com/acanas/swad-core.git
Version18.136.1
This commit is contained in:
parent
f7d404a4fa
commit
cfe0560b60
|
@ -2576,6 +2576,8 @@ a:hover img.CENTRE_PHOTO_SHOW
|
||||||
box-sizing:border-box;
|
box-sizing:border-box;
|
||||||
display:table;
|
display:table;
|
||||||
width:100%;
|
width:100%;
|
||||||
|
padding-bottom:12pt;
|
||||||
|
font-size:18pt;
|
||||||
border:1px solid pink;
|
border:1px solid pink;
|
||||||
}
|
}
|
||||||
.MATCH_TOP_LEFT
|
.MATCH_TOP_LEFT
|
||||||
|
|
|
@ -458,10 +458,11 @@ En OpenSWAD:
|
||||||
ps2pdf source.ps destination.pdf
|
ps2pdf source.ps destination.pdf
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define Log_PLATFORM_VERSION "SWAD 18.136 (2019-07-17)"
|
#define Log_PLATFORM_VERSION "SWAD 18.136.1 (2019-07-18)"
|
||||||
#define CSS_FILE "swad18.136.css"
|
#define CSS_FILE "swad18.136.css"
|
||||||
#define JS_FILE "swad18.130.2.js"
|
#define JS_FILE "swad18.130.2.js"
|
||||||
/*
|
/*
|
||||||
|
Version 18.136.1: Jul 18, 2019 Changes in layout of match. (243853 lines)
|
||||||
Version 18.136: Jul 18, 2019 Changes in layout of match. (243767 lines)
|
Version 18.136: Jul 18, 2019 Changes in layout of match. (243767 lines)
|
||||||
Version 18.135.7: Jul 17, 2019 CSS refactoring and translation in match playing. (243699 lines)
|
Version 18.135.7: Jul 17, 2019 CSS refactoring and translation in match playing. (243699 lines)
|
||||||
Version 18.135.6: Jul 17, 2019 Code refactoring in match playing. (243654 lines)
|
Version 18.135.6: Jul 17, 2019 Code refactoring in match playing. (243654 lines)
|
||||||
|
|
|
@ -503,7 +503,7 @@
|
||||||
#define Cfg_TIME_TO_REFRESH_TIMELINE ((time_t)( 2UL * 1000UL)) // Initial refresh period of social timeline in miliseconds
|
#define Cfg_TIME_TO_REFRESH_TIMELINE ((time_t)( 2UL * 1000UL)) // Initial refresh period of social timeline in miliseconds
|
||||||
// This delay is increased 1 second on each refresh
|
// This delay is increased 1 second on each refresh
|
||||||
|
|
||||||
#define Cfg_SECONDS_TO_REFRESH_GAME 60 // Refresh period of game being played in seconds
|
#define Cfg_SECONDS_TO_REFRESH_GAME 1 // Refresh period of game being played in seconds
|
||||||
#define Cfg_TIME_TO_REFRESH_GAME ((time_t)(Cfg_SECONDS_TO_REFRESH_GAME * 1000UL)) // Refresh period of game being played in miliseconds
|
#define Cfg_TIME_TO_REFRESH_GAME ((time_t)(Cfg_SECONDS_TO_REFRESH_GAME * 1000UL)) // Refresh period of game being played in miliseconds
|
||||||
|
|
||||||
#define Cfg_TIME_TO_REFRESH_LAST_CLICKS ((time_t)( 1UL * 1000UL)) // Refresh period of last clicks in miliseconds
|
#define Cfg_TIME_TO_REFRESH_LAST_CLICKS ((time_t)( 1UL * 1000UL)) // Refresh period of last clicks in miliseconds
|
||||||
|
|
124
swad_game.c
124
swad_game.c
|
@ -183,7 +183,7 @@ static void Gam_PutButtonNewMatch (long GamCod);
|
||||||
static void Gam_PutFormNewMatch (struct Game *Game);
|
static void Gam_PutFormNewMatch (struct Game *Game);
|
||||||
|
|
||||||
static long Gam_CreateMatch (long GamCod,char Title[Gam_MAX_BYTES_TITLE + 1]);
|
static long Gam_CreateMatch (long GamCod,char Title[Gam_MAX_BYTES_TITLE + 1]);
|
||||||
static void Gam_UpdateMatchStatus (struct Match *Match);
|
static void Gam_UpdateMatchStatusInDB (struct Match *Match);
|
||||||
|
|
||||||
static void Gam_SetMatchStatusToNextQuestion (struct Match *Match);
|
static void Gam_SetMatchStatusToNextQuestion (struct Match *Match);
|
||||||
static void Gam_ShowMatchStatusForTch (struct Match *Match);
|
static void Gam_ShowMatchStatusForTch (struct Match *Match);
|
||||||
|
@ -192,6 +192,7 @@ static void Gam_ShowBottonLeftColumnTch (struct Match *Match);
|
||||||
static void Gam_ShowQuestionAndAnswersTch (struct Match *Match);
|
static void Gam_ShowQuestionAndAnswersTch (struct Match *Match);
|
||||||
static void Gam_PutBigButton (Act_Action_t NextAction,long MchCod,
|
static void Gam_PutBigButton (Act_Action_t NextAction,long MchCod,
|
||||||
const char *Icon,const char *Txt);
|
const char *Icon,const char *Txt);
|
||||||
|
static void Gam_PutBigButtonClose (void);
|
||||||
|
|
||||||
static void Gam_RemoveOldPlayers (void);
|
static void Gam_RemoveOldPlayers (void);
|
||||||
static void Gam_UpdateMatchAsBeingPlayed (long MchCod);
|
static void Gam_UpdateMatchAsBeingPlayed (long MchCod);
|
||||||
|
@ -3265,6 +3266,10 @@ void Gam_RequestStartResumeMatchTch (void)
|
||||||
{
|
{
|
||||||
struct Match Match;
|
struct Match Match;
|
||||||
|
|
||||||
|
/***** Remove old players.
|
||||||
|
This function must be called before getting match status. *****/
|
||||||
|
Gam_RemoveOldPlayers ();
|
||||||
|
|
||||||
/***** Get data of the match from database *****/
|
/***** Get data of the match from database *****/
|
||||||
Match.MchCod = Gbl.Games.MchCodBeingPlayed;
|
Match.MchCod = Gbl.Games.MchCodBeingPlayed;
|
||||||
Gam_GetDataOfMatchByCod (&Match);
|
Gam_GetDataOfMatchByCod (&Match);
|
||||||
|
@ -3314,7 +3319,7 @@ static long Gam_CreateMatch (long GamCod,char Title[Gam_MAX_BYTES_TITLE + 1])
|
||||||
/***************** Insert/update a game match being played *******************/
|
/***************** Insert/update a game match being played *******************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
static void Gam_UpdateMatchStatus (struct Match *Match)
|
static void Gam_UpdateMatchStatusInDB (struct Match *Match)
|
||||||
{
|
{
|
||||||
/***** Update match status in database *****/
|
/***** Update match status in database *****/
|
||||||
DB_QueryUPDATE ("can not update match being played",
|
DB_QueryUPDATE ("can not update match being played",
|
||||||
|
@ -3348,6 +3353,10 @@ void Gam_ResumeMatchTch (void)
|
||||||
{
|
{
|
||||||
struct Match Match;
|
struct Match Match;
|
||||||
|
|
||||||
|
/***** Remove old players.
|
||||||
|
This function must be called before getting match status. *****/
|
||||||
|
Gam_RemoveOldPlayers ();
|
||||||
|
|
||||||
/***** Get data of the match from database *****/
|
/***** Get data of the match from database *****/
|
||||||
Match.MchCod = Gbl.Games.MchCodBeingPlayed;
|
Match.MchCod = Gbl.Games.MchCodBeingPlayed;
|
||||||
Gam_GetDataOfMatchByCod (&Match);
|
Gam_GetDataOfMatchByCod (&Match);
|
||||||
|
@ -3362,7 +3371,7 @@ void Gam_ResumeMatchTch (void)
|
||||||
Match.Status.BeingPlayed = true; // Resume match
|
Match.Status.BeingPlayed = true; // Resume match
|
||||||
|
|
||||||
/* Update match status in database */
|
/* Update match status in database */
|
||||||
Gam_UpdateMatchStatus (&Match);
|
Gam_UpdateMatchStatusInDB (&Match);
|
||||||
}
|
}
|
||||||
|
|
||||||
/***** Show current match status *****/
|
/***** Show current match status *****/
|
||||||
|
@ -3379,6 +3388,10 @@ void Gam_NextStatusMatchTch (void)
|
||||||
{
|
{
|
||||||
struct Match Match;
|
struct Match Match;
|
||||||
|
|
||||||
|
/***** Remove old players.
|
||||||
|
This function must be called before getting match status. *****/
|
||||||
|
Gam_RemoveOldPlayers ();
|
||||||
|
|
||||||
/***** Get data of the match from database *****/
|
/***** Get data of the match from database *****/
|
||||||
Match.MchCod = Gbl.Games.MchCodBeingPlayed;
|
Match.MchCod = Gbl.Games.MchCodBeingPlayed;
|
||||||
Gam_GetDataOfMatchByCod (&Match);
|
Gam_GetDataOfMatchByCod (&Match);
|
||||||
|
@ -3400,7 +3413,7 @@ void Gam_NextStatusMatchTch (void)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Update match status in database */
|
/* Update match status in database */
|
||||||
Gam_UpdateMatchStatus (&Match);
|
Gam_UpdateMatchStatusInDB (&Match);
|
||||||
}
|
}
|
||||||
|
|
||||||
/***** Show current match status *****/
|
/***** Show current match status *****/
|
||||||
|
@ -3465,11 +3478,10 @@ static void Gam_ShowMatchStatusForTch (struct Match *Match)
|
||||||
/* Show left column */
|
/* Show left column */
|
||||||
Gam_ShowBottonLeftColumnTch (Match);
|
Gam_ShowBottonLeftColumnTch (Match);
|
||||||
|
|
||||||
/* Bottom content */
|
/* Show right column */
|
||||||
if (Match->Status.Finished)
|
fprintf (Gbl.F.Out,"<div class=\"MATCH_BOTTOM_RIGHT\">");
|
||||||
/* Show alert */
|
if (!Match->Status.Finished &&
|
||||||
Gam_ShowAlertFinishedMatch ();
|
Match->Status.BeingPlayed)
|
||||||
else if (Match->Status.BeingPlayed)
|
|
||||||
{
|
{
|
||||||
/* Show current question and possible answers */
|
/* Show current question and possible answers */
|
||||||
Gam_ShowQuestionAndAnswersTch (Match);
|
Gam_ShowQuestionAndAnswersTch (Match);
|
||||||
|
@ -3477,6 +3489,7 @@ static void Gam_ShowMatchStatusForTch (struct Match *Match)
|
||||||
/* Update match as being played */
|
/* Update match as being played */
|
||||||
Gam_UpdateMatchAsBeingPlayed (Match->MchCod);
|
Gam_UpdateMatchAsBeingPlayed (Match->MchCod);
|
||||||
}
|
}
|
||||||
|
fprintf (Gbl.F.Out,"</div>");
|
||||||
|
|
||||||
/* End bottom container */
|
/* End bottom container */
|
||||||
fprintf (Gbl.F.Out,"</div>");
|
fprintf (Gbl.F.Out,"</div>");
|
||||||
|
@ -3504,23 +3517,36 @@ static void Gam_ShowAlertFinishedMatch (void)
|
||||||
|
|
||||||
static void Gam_ShowBottonLeftColumnTch (struct Match *Match)
|
static void Gam_ShowBottonLeftColumnTch (struct Match *Match)
|
||||||
{
|
{
|
||||||
extern const char *Txt_Continue;
|
extern const char *Txt_End;
|
||||||
|
extern const char *Txt_Next_QUESTION;
|
||||||
extern const char *Txt_Finish;
|
extern const char *Txt_Finish;
|
||||||
|
extern const char *Txt_Answers;
|
||||||
extern const char *Txt_Start_match;
|
extern const char *Txt_Start_match;
|
||||||
extern const char *Txt_Resume_match;
|
extern const char *Txt_Resume_match;
|
||||||
unsigned NxtQstInd;
|
unsigned NxtQstInd;
|
||||||
|
unsigned NumQsts;
|
||||||
|
|
||||||
/***** Start bottom left container *****/
|
/***** Start bottom left container *****/
|
||||||
fprintf (Gbl.F.Out,"<div class=\"MATCH_BOTTOM_LEFT\">");
|
fprintf (Gbl.F.Out,"<div class=\"MATCH_BOTTOM_LEFT\">");
|
||||||
|
|
||||||
if (Match->Status.BeingPlayed)
|
/***** Write number of question *****/
|
||||||
{
|
NumQsts = Gam_GetNumQstsGame (Match->GamCod);
|
||||||
/***** Write number of question *****/
|
fprintf (Gbl.F.Out,"<div class=\"MATCH_TCH_NUM_QST\">");
|
||||||
fprintf (Gbl.F.Out,"<div class=\"MATCH_TCH_NUM_QST\">%u</div>",
|
if (Match->Status.Finished)
|
||||||
Match->Status.QstInd);
|
fprintf (Gbl.F.Out,"%s",Txt_End);
|
||||||
|
else
|
||||||
|
fprintf (Gbl.F.Out,"%u/%u",Match->Status.QstInd,NumQsts);
|
||||||
|
fprintf (Gbl.F.Out,"</div>");
|
||||||
|
|
||||||
/***** Put button to continue *****/
|
/***** Button *****/
|
||||||
fprintf (Gbl.F.Out,"<div class=\"MATCH_TCH_NXT_CONTAINER\">");
|
fprintf (Gbl.F.Out,"<div class=\"MATCH_TCH_NXT_CONTAINER\">"
|
||||||
|
"<div class=\"MATCH_TCH_CONTINUE_CONTAINER\">");
|
||||||
|
if (Match->Status.Finished)
|
||||||
|
/* Put button to close browser tab */
|
||||||
|
Gam_PutBigButtonClose ();
|
||||||
|
else if (Match->Status.BeingPlayed)
|
||||||
|
{
|
||||||
|
/* Put button to continue */
|
||||||
if (Match->Status.ShowingAnswers)
|
if (Match->Status.ShowingAnswers)
|
||||||
{
|
{
|
||||||
/* Get index of the next question */
|
/* Get index of the next question */
|
||||||
|
@ -3529,7 +3555,7 @@ static void Gam_ShowBottonLeftColumnTch (struct Match *Match)
|
||||||
if (NxtQstInd) // Not last question
|
if (NxtQstInd) // Not last question
|
||||||
/* Put button to show next question */
|
/* Put button to show next question */
|
||||||
Gam_PutBigButton (ActNxtMchTch,Match->MchCod,
|
Gam_PutBigButton (ActNxtMchTch,Match->MchCod,
|
||||||
"step-forward.svg",Txt_Continue);
|
"step-forward.svg",Txt_Next_QUESTION);
|
||||||
else // Last question
|
else // Last question
|
||||||
/* Put button to finish */
|
/* Put button to finish */
|
||||||
Gam_PutBigButton (ActNxtMchTch,Match->MchCod,
|
Gam_PutBigButton (ActNxtMchTch,Match->MchCod,
|
||||||
|
@ -3538,20 +3564,17 @@ static void Gam_ShowBottonLeftColumnTch (struct Match *Match)
|
||||||
else
|
else
|
||||||
/* Put button to show answers */
|
/* Put button to show answers */
|
||||||
Gam_PutBigButton (ActNxtMchTch,Match->MchCod,
|
Gam_PutBigButton (ActNxtMchTch,Match->MchCod,
|
||||||
"step-forward.svg",Txt_Continue);
|
"step-forward.svg",Txt_Answers);
|
||||||
fprintf (Gbl.F.Out,"</div>");
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
|
||||||
fprintf (Gbl.F.Out,"<div class=\"MATCH_TCH_NXT_CONTAINER\">");
|
|
||||||
/* Put button to start / resume match */
|
/* Put button to start / resume match */
|
||||||
Gam_PutBigButton (ActCurMchTch,
|
Gam_PutBigButton (ActCurMchTch,
|
||||||
Match->MchCod,
|
Match->MchCod,
|
||||||
"play.svg",
|
"play.svg",
|
||||||
Match->Status.QstInd == 0 ? Txt_Start_match :
|
Match->Status.QstInd == 0 ? Txt_Start_match :
|
||||||
Txt_Resume_match);
|
Txt_Resume_match);
|
||||||
fprintf (Gbl.F.Out,"</div>");
|
fprintf (Gbl.F.Out,"</div>"
|
||||||
}
|
"</div>");
|
||||||
|
|
||||||
/***** End bottom left container *****/
|
/***** End bottom left container *****/
|
||||||
fprintf (Gbl.F.Out,"</div>");
|
fprintf (Gbl.F.Out,"</div>");
|
||||||
|
@ -3582,8 +3605,6 @@ static void Gam_ShowQuestionAndAnswersTch (struct Match *Match)
|
||||||
row = mysql_fetch_row (mysql_res);
|
row = mysql_fetch_row (mysql_res);
|
||||||
|
|
||||||
/***** Show question *****/
|
/***** Show question *****/
|
||||||
fprintf (Gbl.F.Out,"<div class=\"MATCH_BOTTOM_RIGHT\">");
|
|
||||||
|
|
||||||
/* Get answer type (row[0]) */
|
/* Get answer type (row[0]) */
|
||||||
Gbl.Test.AnswerType = Tst_ConvertFromStrAnsTypDBToAnsTyp (row[0]);
|
Gbl.Test.AnswerType = Tst_ConvertFromStrAnsTypDBToAnsTyp (row[0]);
|
||||||
// TODO: Check that answer type is correct (unique choice)
|
// TODO: Check that answer type is correct (unique choice)
|
||||||
|
@ -3607,26 +3628,30 @@ static void Gam_ShowQuestionAndAnswersTch (struct Match *Match)
|
||||||
Match->Status.QstInd,
|
Match->Status.QstInd,
|
||||||
Match->Status.QstCod,
|
Match->Status.QstCod,
|
||||||
"MATCH_TCH_QST",false); // Don't show result
|
"MATCH_TCH_QST",false); // Don't show result
|
||||||
|
|
||||||
fprintf (Gbl.F.Out,"</div>");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/************************** Put a big button to start ************************/
|
/*********************** Put a big button to do action ***********************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
static void Gam_PutBigButton (Act_Action_t NextAction,long MchCod,
|
static void Gam_PutBigButton (Act_Action_t NextAction,long MchCod,
|
||||||
const char *Icon,const char *Txt)
|
const char *Icon,const char *Txt)
|
||||||
{
|
{
|
||||||
/***** Start container for button *****/
|
|
||||||
fprintf (Gbl.F.Out,"<div class=\"MATCH_TCH_CONTINUE_CONTAINER\">");
|
|
||||||
|
|
||||||
/***** Start form *****/
|
/***** Start form *****/
|
||||||
Frm_StartForm (NextAction);
|
Frm_StartForm (NextAction);
|
||||||
Gam_PutParamMatchCod (MchCod);
|
Gam_PutParamMatchCod (MchCod);
|
||||||
|
|
||||||
/***** Put icon with link *****/
|
/***** Put icon with link *****/
|
||||||
Frm_LinkFormSubmit (Txt,"MATCH_TCH_CONTINUE ICO_HIGHLIGHT",NULL);
|
/* Submitting onmousedown instead of default onclick
|
||||||
|
is necessary in order to be fast
|
||||||
|
and not lose clicks due to refresh */
|
||||||
|
fprintf (Gbl.F.Out,"<a href=\"\"");
|
||||||
|
fprintf (Gbl.F.Out," title=\"%s\"",Txt);
|
||||||
|
fprintf (Gbl.F.Out," class=\"%s\"","MATCH_TCH_CONTINUE ICO_HIGHLIGHT");
|
||||||
|
fprintf (Gbl.F.Out," onmousedown=\"");
|
||||||
|
fprintf (Gbl.F.Out,"document.getElementById('%s').submit();"
|
||||||
|
"return false;\">",
|
||||||
|
Gbl.Form.Id);
|
||||||
fprintf (Gbl.F.Out,"<img src=\"%s/%s\""
|
fprintf (Gbl.F.Out,"<img src=\"%s/%s\""
|
||||||
" alt=\"%s\" title=\"%s\" class=\"ICO64x64\" />"
|
" alt=\"%s\" title=\"%s\" class=\"ICO64x64\" />"
|
||||||
"<br />"
|
"<br />"
|
||||||
|
@ -3638,13 +3663,32 @@ static void Gam_PutBigButton (Act_Action_t NextAction,long MchCod,
|
||||||
|
|
||||||
/***** End form *****/
|
/***** End form *****/
|
||||||
Frm_EndForm ();
|
Frm_EndForm ();
|
||||||
|
}
|
||||||
|
|
||||||
/***** End container for button *****/
|
static void Gam_PutBigButtonClose (void)
|
||||||
fprintf (Gbl.F.Out,"</div>");
|
{
|
||||||
|
extern const char *Txt_Close;
|
||||||
|
|
||||||
|
/***** Put icon with link *****/
|
||||||
|
/* onmousedown instead of default onclick
|
||||||
|
is necessary in order to be fast
|
||||||
|
and not lose clicks due to refresh */
|
||||||
|
fprintf (Gbl.F.Out,"<a href=\"\"");
|
||||||
|
fprintf (Gbl.F.Out," title=\"%s\"",Txt_Close);
|
||||||
|
fprintf (Gbl.F.Out," class=\"%s\"","MATCH_TCH_CONTINUE ICO_HIGHLIGHT");
|
||||||
|
fprintf (Gbl.F.Out," onmousedown=\"window.close();\"\">");
|
||||||
|
fprintf (Gbl.F.Out,"<img src=\"%s/close.svg\""
|
||||||
|
" alt=\"%s\" title=\"%s\" class=\"ICO64x64\" />"
|
||||||
|
"<br />"
|
||||||
|
"%s",
|
||||||
|
Cfg_URL_ICON_PUBLIC,
|
||||||
|
Txt_Close,Txt_Close,
|
||||||
|
Txt_Close);
|
||||||
|
fprintf (Gbl.F.Out,"</a>");
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/*********************** Get number of players in a match ********************/
|
/**************************** Remove old players *****************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
static void Gam_RemoveOldPlayers (void)
|
static void Gam_RemoveOldPlayers (void)
|
||||||
|
@ -3708,9 +3752,6 @@ static void Gam_GetAndShowNumPlayersInMatch (long MchCod)
|
||||||
extern const char *Txt_Players;
|
extern const char *Txt_Players;
|
||||||
unsigned NumPlayers;
|
unsigned NumPlayers;
|
||||||
|
|
||||||
/***** Remove old players *****/
|
|
||||||
Gam_RemoveOldPlayers ();
|
|
||||||
|
|
||||||
/***** Get number of players (students who have joined this match) *****/
|
/***** Get number of players (students who have joined this match) *****/
|
||||||
NumPlayers = Gam_GetNumPlayers (MchCod);
|
NumPlayers = Gam_GetNumPlayers (MchCod);
|
||||||
|
|
||||||
|
@ -3777,6 +3818,10 @@ void Gam_RefreshMatchTch (void)
|
||||||
if (!Gbl.Session.IsOpen) // If session has been closed, do not write anything
|
if (!Gbl.Session.IsOpen) // If session has been closed, do not write anything
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
/***** Remove old players.
|
||||||
|
This function must be called before getting match status. *****/
|
||||||
|
Gam_RemoveOldPlayers ();
|
||||||
|
|
||||||
/***** Get data of the match from database *****/
|
/***** Get data of the match from database *****/
|
||||||
Match.MchCod = Gbl.Games.MchCodBeingPlayed;
|
Match.MchCod = Gbl.Games.MchCodBeingPlayed;
|
||||||
Gam_GetDataOfMatchByCod (&Match);
|
Gam_GetDataOfMatchByCod (&Match);
|
||||||
|
@ -3837,7 +3882,6 @@ static void Gam_ShowMatchStatusForStd (struct Match *Match)
|
||||||
else // Unfinished match
|
else // Unfinished match
|
||||||
{
|
{
|
||||||
/***** Update players ******/
|
/***** Update players ******/
|
||||||
Gam_RemoveOldPlayers ();
|
|
||||||
Gam_RegisterMeAsPlayerInMatch (Match->MchCod);
|
Gam_RegisterMeAsPlayerInMatch (Match->MchCod);
|
||||||
|
|
||||||
if (Match->Status.BeingPlayed)
|
if (Match->Status.BeingPlayed)
|
||||||
|
|
42
swad_text.c
42
swad_text.c
|
@ -10451,6 +10451,27 @@ const char *Txt_Email_X_removed = // Warning: it is very important to include %s
|
||||||
"Email <strong>%s</strong> removido.";
|
"Email <strong>%s</strong> removido.";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
const char *Txt_End =
|
||||||
|
#if L==1 // ca
|
||||||
|
"Final";
|
||||||
|
#elif L==2 // de
|
||||||
|
"Ende";
|
||||||
|
#elif L==3 // en
|
||||||
|
"End";
|
||||||
|
#elif L==4 // es
|
||||||
|
"Final";
|
||||||
|
#elif L==5 // fr
|
||||||
|
"Fin";
|
||||||
|
#elif L==6 // gn
|
||||||
|
"Paha";
|
||||||
|
#elif L==7 // it
|
||||||
|
"Fine";
|
||||||
|
#elif L==8 // pl
|
||||||
|
"Koniec";
|
||||||
|
#elif L==9 // pt
|
||||||
|
"Fim";
|
||||||
|
#endif
|
||||||
|
|
||||||
const char *Txt_End_date =
|
const char *Txt_End_date =
|
||||||
#if L==1 // ca
|
#if L==1 // ca
|
||||||
"Data final";
|
"Data final";
|
||||||
|
@ -24380,6 +24401,27 @@ const char *Txt_NEW_YEAR_GREETING = // Warning: it is very important to include
|
||||||
"Feliz %u!";
|
"Feliz %u!";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
const char *Txt_Next_QUESTION =
|
||||||
|
#if L==1 // ca
|
||||||
|
"Següent";
|
||||||
|
#elif L==2 // de
|
||||||
|
"Nächste";
|
||||||
|
#elif L==3 // en
|
||||||
|
"Next";
|
||||||
|
#elif L==4 // es
|
||||||
|
"Siguiente";
|
||||||
|
#elif L==5 // fr
|
||||||
|
"Suivante";
|
||||||
|
#elif L==6 // gn
|
||||||
|
"Siguiente"; // Okoteve traducción
|
||||||
|
#elif L==7 // it
|
||||||
|
"Successiva";
|
||||||
|
#elif L==8 // pl
|
||||||
|
"Następne";
|
||||||
|
#elif L==9 // pt
|
||||||
|
"Seguinte";
|
||||||
|
#endif
|
||||||
|
|
||||||
const char *Txt_nick_email_or_ID =
|
const char *Txt_nick_email_or_ID =
|
||||||
#if L==1 // ca
|
#if L==1 // ca
|
||||||
"@sobrenom, correu o ID (DNI/cèdula)";
|
"@sobrenom, correu o ID (DNI/cèdula)";
|
||||||
|
|
Loading…
Reference in New Issue