mirror of https://github.com/acanas/swad-core.git
Version18.135.7
This commit is contained in:
parent
03cef107c6
commit
8826e77a50
|
@ -2563,20 +2563,20 @@ a:hover img.CENTRE_PHOTO_SHOW
|
||||||
vertical-align:top;
|
vertical-align:top;
|
||||||
}
|
}
|
||||||
|
|
||||||
/********************************** Games ************************************/
|
/********************************** Matches **********************************/
|
||||||
.GAM_PLAY_CONTAINER
|
.MATCH_CONT
|
||||||
{
|
{
|
||||||
box-sizing:border-box;
|
box-sizing:border-box;
|
||||||
display:table;
|
display:table;
|
||||||
margin:5%;
|
margin:5%;
|
||||||
width:90%;
|
width:90%;
|
||||||
}
|
}
|
||||||
.GAM_PLAY_CONTAINER_TOP
|
.MATCH_CONT_TOP
|
||||||
{
|
{
|
||||||
box-sizing:border-box;
|
box-sizing:border-box;
|
||||||
}
|
}
|
||||||
|
|
||||||
.GAM_PLAY_TCH_NUM_QST
|
.MATCH_TCH_NUM_QST
|
||||||
{
|
{
|
||||||
width:15%;
|
width:15%;
|
||||||
float:left;
|
float:left;
|
||||||
|
@ -2585,47 +2585,47 @@ a:hover img.CENTRE_PHOTO_SHOW
|
||||||
font-size:48pt;
|
font-size:48pt;
|
||||||
font-weight:bold;
|
font-weight:bold;
|
||||||
}
|
}
|
||||||
.GAM_PLAY_TCH_QST_CONTAINER
|
.MATCH_TCH_QST_CONTAINER
|
||||||
{
|
{
|
||||||
width:70%;
|
width:70%;
|
||||||
float:left;
|
float:left;
|
||||||
}
|
}
|
||||||
.GAM_PLAY_TCH_NXT_CONTAINER
|
.MATCH_TCH_NXT_CONTAINER
|
||||||
{
|
{
|
||||||
width:15%;
|
width:15%;
|
||||||
float:left;
|
float:left;
|
||||||
}
|
}
|
||||||
.GAM_PLAY_TCH_QST
|
.MATCH_TCH_QST
|
||||||
{
|
{
|
||||||
color:#202020;
|
color:#202020;
|
||||||
font-size:24pt;
|
font-size:24pt;
|
||||||
}
|
}
|
||||||
.GAM_PLAY_TCH_CONTINUE_CONTAINER
|
.MATCH_TCH_CONTINUE_CONTAINER
|
||||||
{
|
{
|
||||||
clear:all;
|
clear:all;
|
||||||
text-align:center;
|
text-align:center;
|
||||||
}
|
}
|
||||||
.GAM_PLAY_TCH_CONTINUE_CONTAINER a
|
.MATCH_TCH_CONTINUE_CONTAINER a
|
||||||
{
|
{
|
||||||
text-decoration:none;
|
text-decoration:none;
|
||||||
}
|
}
|
||||||
.GAM_PLAY_TCH_CONTINUE
|
.MATCH_TCH_CONTINUE
|
||||||
{
|
{
|
||||||
font-size:16pt;
|
font-size:16pt;
|
||||||
}
|
}
|
||||||
|
|
||||||
.GAM_PLAY_STD_WAIT_CONTAINER
|
.MATCH_STD_WAIT_CONTAINER
|
||||||
{
|
{
|
||||||
box-sizing:border-box;
|
box-sizing:border-box;
|
||||||
text-align:center;
|
text-align:center;
|
||||||
}
|
}
|
||||||
.GAM_PLAY_STD_WAIT_IMAGE
|
.MATCH_STD_WAIT_IMAGE
|
||||||
{
|
{
|
||||||
box-sizing:border-box;
|
box-sizing:border-box;
|
||||||
width:50%;
|
width:50%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.GAM_PLAY_STD_NUM_QST
|
.MATCH_STD_NUM_QST
|
||||||
{
|
{
|
||||||
width:15%;
|
width:15%;
|
||||||
float:left;
|
float:left;
|
||||||
|
@ -2634,18 +2634,18 @@ a:hover img.CENTRE_PHOTO_SHOW
|
||||||
font-size:48pt;
|
font-size:48pt;
|
||||||
font-weight:bold;
|
font-weight:bold;
|
||||||
}
|
}
|
||||||
.GAM_PLAY_STD_QST_CONTAINER
|
.MATCH_STD_QST_CONTAINER
|
||||||
{
|
{
|
||||||
width:85%;
|
width:85%;
|
||||||
float:left;
|
float:left;
|
||||||
}
|
}
|
||||||
.GAM_PLAY_STD_QST
|
.MATCH_STD_QST
|
||||||
{
|
{
|
||||||
color:#202020;
|
color:#202020;
|
||||||
font-size:24pt;
|
font-size:24pt;
|
||||||
}
|
}
|
||||||
|
|
||||||
.GAM_PLAY_TCH_BUTTON
|
.MATCH_TCH_BUTTON
|
||||||
{
|
{
|
||||||
box-sizing:border-box;
|
box-sizing:border-box;
|
||||||
width:64px;
|
width:64px;
|
||||||
|
@ -2661,12 +2661,12 @@ a:hover img.CENTRE_PHOTO_SHOW
|
||||||
line-height:normal;
|
line-height:normal;
|
||||||
white-space:nowrap;
|
white-space:nowrap;
|
||||||
}
|
}
|
||||||
.GAM_PLAY_STD_CELL
|
.MATCH_STD_CELL
|
||||||
{
|
{
|
||||||
text-align:center;
|
text-align:center;
|
||||||
vertical-align:middle;
|
vertical-align:middle;
|
||||||
}
|
}
|
||||||
.GAM_PLAY_STD_BUTTON
|
.MATCH_STD_BUTTON
|
||||||
{
|
{
|
||||||
box-sizing:border-box;
|
box-sizing:border-box;
|
||||||
width:80%;
|
width:80%;
|
||||||
|
@ -2682,7 +2682,7 @@ a:hover img.CENTRE_PHOTO_SHOW
|
||||||
line-height:normal;
|
line-height:normal;
|
||||||
white-space:nowrap;
|
white-space:nowrap;
|
||||||
}
|
}
|
||||||
.GAM_PLAY_STD_ANSWER_SELECTED
|
.MATCH_STD_ANSWER_SELECTED
|
||||||
{
|
{
|
||||||
box-shadow: 0px 0px 18px 12px rgba(0,128,0,1);
|
box-shadow: 0px 0px 18px 12px rgba(0,128,0,1);
|
||||||
}
|
}
|
|
@ -458,10 +458,12 @@ En OpenSWAD:
|
||||||
ps2pdf source.ps destination.pdf
|
ps2pdf source.ps destination.pdf
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define Log_PLATFORM_VERSION "SWAD 18.135.5 (2019-07-17)"
|
#define Log_PLATFORM_VERSION "SWAD 18.135.7 (2019-07-17)"
|
||||||
#define CSS_FILE "swad18.132.2.css"
|
#define CSS_FILE "swad18.135.7.css"
|
||||||
#define JS_FILE "swad18.130.2.js"
|
#define JS_FILE "swad18.130.2.js"
|
||||||
/*
|
/*
|
||||||
|
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.5: Jul 17, 2019 Changes while removing a match. (243692 lines)
|
Version 18.135.5: Jul 17, 2019 Changes while removing a match. (243692 lines)
|
||||||
Version 18.135.4: Jul 17, 2019 Changes and bug fixing while removing a match. (243682 lines)
|
Version 18.135.4: Jul 17, 2019 Changes and bug fixing while removing a match. (243682 lines)
|
||||||
Version 18.135.3: Jul 17, 2019 Removed unused code in games.
|
Version 18.135.3: Jul 17, 2019 Removed unused code in games.
|
||||||
|
|
156
swad_game.c
156
swad_game.c
|
@ -151,7 +151,6 @@ static void Gam_RemAnswersOfAQuestion (long GamCod,unsigned QstInd);
|
||||||
|
|
||||||
static long Gam_GetQstCodFromQstInd (long GamCod,unsigned QstInd);
|
static long Gam_GetQstCodFromQstInd (long GamCod,unsigned QstInd);
|
||||||
static unsigned Gam_GetMaxQuestionIndexInGame (long GamCod);
|
static unsigned Gam_GetMaxQuestionIndexInGame (long GamCod);
|
||||||
static unsigned Gam_GetFirstQuestionIndexInGame (long GamCod);
|
|
||||||
static unsigned Gam_GetPrevQuestionIndexInGame (long GamCod,unsigned QstInd);
|
static unsigned Gam_GetPrevQuestionIndexInGame (long GamCod,unsigned QstInd);
|
||||||
static unsigned Gam_GetNextQuestionIndexInGame (long GamCod,unsigned QstInd);
|
static unsigned Gam_GetNextQuestionIndexInGame (long GamCod,unsigned QstInd);
|
||||||
static void Gam_ListGameQuestions (struct Game *Game);
|
static void Gam_ListGameQuestions (struct Game *Game);
|
||||||
|
@ -186,6 +185,7 @@ 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_UpdateMatchBeingPlayed (struct Match *Match);
|
static void Gam_UpdateMatchBeingPlayed (struct Match *Match);
|
||||||
|
|
||||||
|
static void Gam_SetMatchStatusToNextQuestion (struct Match *Match);
|
||||||
static void Gam_ShowMatchStatusForTch (struct Match *Match);
|
static void Gam_ShowMatchStatusForTch (struct Match *Match);
|
||||||
static void Gam_ShowAlertFinishedMatch (void);
|
static void Gam_ShowAlertFinishedMatch (void);
|
||||||
static void Gam_PlayGameShowQuestionAndAnswers (struct Match *Match);
|
static void Gam_PlayGameShowQuestionAndAnswers (struct Match *Match);
|
||||||
|
@ -1826,16 +1826,6 @@ static unsigned Gam_GetMaxQuestionIndexInGame (long GamCod)
|
||||||
return QstInd;
|
return QstInd;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
|
||||||
/******************** Get first question index in a game *********************/
|
|
||||||
/*****************************************************************************/
|
|
||||||
|
|
||||||
static unsigned Gam_GetFirstQuestionIndexInGame (long GamCod)
|
|
||||||
{
|
|
||||||
return Gam_GetNextQuestionIndexInGame (GamCod,
|
|
||||||
0); // First index > 0
|
|
||||||
}
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/*********** Get previous question index to a given index in a game **********/
|
/*********** Get previous question index to a given index in a game **********/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -3281,9 +3271,9 @@ void Gam_RequestStartResumeMatchTch (void)
|
||||||
Gam_GetDataOfMatchByCod (&Match);
|
Gam_GetDataOfMatchByCod (&Match);
|
||||||
|
|
||||||
/***** Show current match status *****/
|
/***** Show current match status *****/
|
||||||
fprintf (Gbl.F.Out,"<div class=\"GAM_PLAY_CONTAINER\">");
|
fprintf (Gbl.F.Out,"<div class=\"MATCH_CONT\">");
|
||||||
|
|
||||||
fprintf (Gbl.F.Out,"<div id=\"game\" class=\"GAM_PLAY_CONTAINER_TOP\">");
|
fprintf (Gbl.F.Out,"<div id=\"game\" class=\"MATCH_CONT_TOP\">");
|
||||||
Gam_GetAndShowNumPlayersInMatch (Match.MchCod);
|
Gam_GetAndShowNumPlayersInMatch (Match.MchCod);
|
||||||
fprintf (Gbl.F.Out,"</div>");
|
fprintf (Gbl.F.Out,"</div>");
|
||||||
|
|
||||||
|
@ -3372,7 +3362,6 @@ static void Gam_UpdateMatchBeingPlayed (struct Match *Match)
|
||||||
void Gam_ResumeMatchTch (void)
|
void Gam_ResumeMatchTch (void)
|
||||||
{
|
{
|
||||||
struct Match Match;
|
struct Match Match;
|
||||||
long NxtQstInd;
|
|
||||||
|
|
||||||
/***** Get data of the match from database *****/
|
/***** Get data of the match from database *****/
|
||||||
Match.MchCod = Gbl.Games.MchCodBeingPlayed;
|
Match.MchCod = Gbl.Games.MchCodBeingPlayed;
|
||||||
|
@ -3382,33 +3371,18 @@ void Gam_ResumeMatchTch (void)
|
||||||
if (!Match.Status.Finished)
|
if (!Match.Status.Finished)
|
||||||
{
|
{
|
||||||
if (Match.Status.QstInd == 0) // Match has been created, but it has not started
|
if (Match.Status.QstInd == 0) // Match has been created, but it has not started
|
||||||
{
|
Gam_SetMatchStatusToNextQuestion (&Match);
|
||||||
/* Get index of the first question */
|
|
||||||
NxtQstInd = Gam_GetFirstQuestionIndexInGame (Match.GamCod);
|
Match.Status.ShowingAnswers = false; // Don't show answers in any case
|
||||||
if (NxtQstInd) // Not last question
|
|
||||||
{
|
|
||||||
Match.Status.QstInd = NxtQstInd; // Go to the next question
|
|
||||||
Match.Status.QstCod = Gam_GetQstCodFromQstInd (Match.GamCod,
|
|
||||||
Match.Status.QstInd);
|
|
||||||
Match.Status.Finished = false; // Match is not finished
|
|
||||||
}
|
|
||||||
else // No more questions
|
|
||||||
{
|
|
||||||
Match.Status.QstInd = 0; // No more questions
|
|
||||||
Match.Status.QstCod = -1L; // No more questions
|
|
||||||
Match.Status.Finished = true; // Match is finished
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Match.Status.ShowingAnswers = false; // Don't show answers
|
|
||||||
|
|
||||||
/* Update match status in database */
|
/* Update match status in database */
|
||||||
Gam_UpdateMatchBeingPlayed (&Match);
|
Gam_UpdateMatchBeingPlayed (&Match);
|
||||||
}
|
}
|
||||||
|
|
||||||
/***** Show current match status *****/
|
/***** Show current match status *****/
|
||||||
fprintf (Gbl.F.Out,"<div class=\"GAM_PLAY_CONTAINER\">");
|
fprintf (Gbl.F.Out,"<div class=\"MATCH_CONT\">");
|
||||||
|
|
||||||
fprintf (Gbl.F.Out,"<div id=\"game\" class=\"GAM_PLAY_CONTAINER_TOP\">");
|
fprintf (Gbl.F.Out,"<div id=\"game\" class=\"MATCH_CONT_TOP\">");
|
||||||
Gam_GetAndShowNumPlayersInMatch (Match.MchCod);
|
Gam_GetAndShowNumPlayersInMatch (Match.MchCod);
|
||||||
fprintf (Gbl.F.Out,"</div>");
|
fprintf (Gbl.F.Out,"</div>");
|
||||||
|
|
||||||
|
@ -3424,7 +3398,6 @@ void Gam_ResumeMatchTch (void)
|
||||||
void Gam_NextStatusMatchTch (void)
|
void Gam_NextStatusMatchTch (void)
|
||||||
{
|
{
|
||||||
struct Match Match;
|
struct Match Match;
|
||||||
long NxtQstInd;
|
|
||||||
|
|
||||||
/***** Get data of the match from database *****/
|
/***** Get data of the match from database *****/
|
||||||
Match.MchCod = Gbl.Games.MchCodBeingPlayed;
|
Match.MchCod = Gbl.Games.MchCodBeingPlayed;
|
||||||
|
@ -3434,46 +3407,11 @@ void Gam_NextStatusMatchTch (void)
|
||||||
if (!Match.Status.Finished)
|
if (!Match.Status.Finished)
|
||||||
{
|
{
|
||||||
if (Match.Status.QstInd == 0) // Match has been created, but it has not started
|
if (Match.Status.QstInd == 0) // Match has been created, but it has not started
|
||||||
{
|
Gam_SetMatchStatusToNextQuestion (&Match);
|
||||||
/* Get index of the first question */
|
|
||||||
NxtQstInd = Gam_GetFirstQuestionIndexInGame (Match.GamCod);
|
|
||||||
if (NxtQstInd) // Not last question
|
|
||||||
{
|
|
||||||
Match.Status.QstInd = NxtQstInd; // Go to the next question
|
|
||||||
Match.Status.QstCod = Gam_GetQstCodFromQstInd (Match.GamCod,
|
|
||||||
Match.Status.QstInd);
|
|
||||||
Match.Status.Finished = false; // Match is not finished
|
|
||||||
}
|
|
||||||
else // No more questions
|
|
||||||
{
|
|
||||||
Match.Status.QstInd = 0; // No more questions
|
|
||||||
Match.Status.QstCod = -1L; // No more questions
|
|
||||||
Match.Status.Finished = true; // Match is finished
|
|
||||||
}
|
|
||||||
Match.Status.ShowingAnswers = false; // Don't show answers
|
|
||||||
}
|
|
||||||
else // Match has started
|
else // Match has started
|
||||||
{
|
{
|
||||||
if (Match.Status.ShowingAnswers) // Showing answers currently
|
if (Match.Status.ShowingAnswers) // Showing answers currently
|
||||||
{
|
Gam_SetMatchStatusToNextQuestion (&Match);
|
||||||
/* Get index of the next question */
|
|
||||||
NxtQstInd = Gam_GetNextQuestionIndexInGame (Match.GamCod,
|
|
||||||
Match.Status.QstInd);
|
|
||||||
if (NxtQstInd) // Not last question
|
|
||||||
{
|
|
||||||
Match.Status.QstInd = NxtQstInd; // Go to the next question
|
|
||||||
Match.Status.QstCod = Gam_GetQstCodFromQstInd (Match.GamCod,
|
|
||||||
Match.Status.QstInd);
|
|
||||||
Match.Status.Finished = false; // Match is not finished
|
|
||||||
}
|
|
||||||
else // No more questions
|
|
||||||
{
|
|
||||||
Match.Status.QstInd = 0; // No more questions
|
|
||||||
Match.Status.QstCod = -1L; // No more questions
|
|
||||||
Match.Status.Finished = true; // Match is finished
|
|
||||||
}
|
|
||||||
Match.Status.ShowingAnswers = false; // Don't show answers
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Match.Status.Finished = false; // Match is not finished
|
Match.Status.Finished = false; // Match is not finished
|
||||||
|
@ -3486,9 +3424,9 @@ void Gam_NextStatusMatchTch (void)
|
||||||
}
|
}
|
||||||
|
|
||||||
/***** Show current match status *****/
|
/***** Show current match status *****/
|
||||||
fprintf (Gbl.F.Out,"<div class=\"GAM_PLAY_CONTAINER\">");
|
fprintf (Gbl.F.Out,"<div class=\"MATCH_CONT\">");
|
||||||
|
|
||||||
fprintf (Gbl.F.Out,"<div id=\"game\" class=\"GAM_PLAY_CONTAINER_TOP\">");
|
fprintf (Gbl.F.Out,"<div id=\"game\" class=\"MATCH_CONT_TOP\">");
|
||||||
Gam_GetAndShowNumPlayersInMatch (Match.MchCod);
|
Gam_GetAndShowNumPlayersInMatch (Match.MchCod);
|
||||||
fprintf (Gbl.F.Out,"</div>");
|
fprintf (Gbl.F.Out,"</div>");
|
||||||
|
|
||||||
|
@ -3497,6 +3435,31 @@ void Gam_NextStatusMatchTch (void)
|
||||||
fprintf (Gbl.F.Out,"</div>");
|
fprintf (Gbl.F.Out,"</div>");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/********************* Set match status to next question *********************/
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
static void Gam_SetMatchStatusToNextQuestion (struct Match *Match)
|
||||||
|
{
|
||||||
|
/***** Get index of the next question *****/
|
||||||
|
Match->Status.QstInd = Gam_GetNextQuestionIndexInGame (Match->GamCod,
|
||||||
|
Match->Status.QstInd);
|
||||||
|
|
||||||
|
if (Match->Status.QstInd) // Not last question
|
||||||
|
{
|
||||||
|
Match->Status.QstCod = Gam_GetQstCodFromQstInd (Match->GamCod,
|
||||||
|
Match->Status.QstInd);
|
||||||
|
Match->Status.Finished = false; // Match is not finished
|
||||||
|
}
|
||||||
|
else // No more questions
|
||||||
|
{
|
||||||
|
Match->Status.QstCod = -1L; // No more questions
|
||||||
|
Match->Status.Finished = true; // Match is finished
|
||||||
|
}
|
||||||
|
|
||||||
|
Match->Status.ShowingAnswers = false; // Don't show answers
|
||||||
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/******* Show current match status (number, question, answers, button) *******/
|
/******* Show current match status (number, question, answers, button) *******/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -3524,12 +3487,13 @@ static void Gam_ShowMatchStatusForTch (struct Match *Match)
|
||||||
static void Gam_ShowAlertFinishedMatch (void)
|
static void Gam_ShowAlertFinishedMatch (void)
|
||||||
{
|
{
|
||||||
extern const char *Txt_Finished_match;
|
extern const char *Txt_Finished_match;
|
||||||
|
extern const char *Txt_Close;
|
||||||
|
|
||||||
/***** Show alert *****/
|
/***** Show alert *****/
|
||||||
Ale_ShowAlert (Ale_INFO,Txt_Finished_match);
|
Ale_ShowAlert (Ale_INFO,Txt_Finished_match);
|
||||||
|
|
||||||
/***** Button to close browser tab *****/
|
/***** Button to close browser tab *****/
|
||||||
Btn_PutCloseTabButton ("Cerrar"); // TODO: Need translation!!!!!
|
Btn_PutCloseTabButton (Txt_Close);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -3561,17 +3525,17 @@ static void Gam_PlayGameShowQuestionAndAnswers (struct Match *Match)
|
||||||
|
|
||||||
/***** Show question *****/
|
/***** Show question *****/
|
||||||
/* Write number of question */
|
/* Write number of question */
|
||||||
fprintf (Gbl.F.Out,"<div class=\"GAM_PLAY_TCH_NUM_QST\">%u</div>",
|
fprintf (Gbl.F.Out,"<div class=\"MATCH_TCH_NUM_QST\">%u</div>",
|
||||||
Match->Status.QstInd);
|
Match->Status.QstInd);
|
||||||
|
|
||||||
fprintf (Gbl.F.Out,"<div class=\"GAM_PLAY_TCH_QST_CONTAINER\">");
|
fprintf (Gbl.F.Out,"<div class=\"MATCH_TCH_QST_CONTAINER\">");
|
||||||
|
|
||||||
/* 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)
|
||||||
|
|
||||||
/* Write stem (row[1]) */
|
/* Write stem (row[1]) */
|
||||||
Tst_WriteQstStem (row[1],"GAM_PLAY_TCH_QST");
|
Tst_WriteQstStem (row[1],"MATCH_TCH_QST");
|
||||||
|
|
||||||
/* Get media (row[2]) */
|
/* Get media (row[2]) */
|
||||||
Gbl.Test.Media.MedCod = Str_ConvertStrCodToLongCod (row[2]);
|
Gbl.Test.Media.MedCod = Str_ConvertStrCodToLongCod (row[2]);
|
||||||
|
@ -3588,12 +3552,12 @@ static void Gam_PlayGameShowQuestionAndAnswers (struct Match *Match)
|
||||||
Tst_WriteAnswersGameResult (Match->GamCod,
|
Tst_WriteAnswersGameResult (Match->GamCod,
|
||||||
Match->Status.QstInd,
|
Match->Status.QstInd,
|
||||||
Match->Status.QstCod,
|
Match->Status.QstCod,
|
||||||
"GAM_PLAY_TCH_QST",false); // Don't show result
|
"MATCH_TCH_QST",false); // Don't show result
|
||||||
|
|
||||||
fprintf (Gbl.F.Out,"</div>");
|
fprintf (Gbl.F.Out,"</div>");
|
||||||
|
|
||||||
/***** Put button to continue *****/
|
/***** Put button to continue *****/
|
||||||
fprintf (Gbl.F.Out,"<div class=\"GAM_PLAY_TCH_NXT_CONTAINER\">");
|
fprintf (Gbl.F.Out,"<div class=\"MATCH_TCH_NXT_CONTAINER\">");
|
||||||
if (Match->Status.ShowingAnswers)
|
if (Match->Status.ShowingAnswers)
|
||||||
{
|
{
|
||||||
/* Get index of the next question */
|
/* Get index of the next question */
|
||||||
|
@ -3623,14 +3587,14 @@ 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 *****/
|
/***** Start container for button *****/
|
||||||
fprintf (Gbl.F.Out,"<div class=\"GAM_PLAY_TCH_CONTINUE_CONTAINER\">");
|
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,"GAM_PLAY_TCH_CONTINUE ICO_HIGHLIGHT",NULL);
|
Frm_LinkFormSubmit (Txt,"MATCH_TCH_CONTINUE ICO_HIGHLIGHT",NULL);
|
||||||
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 />"
|
||||||
|
@ -3709,6 +3673,7 @@ static void Gam_RegisterMeAsPlayerInMatch (long MchCod)
|
||||||
|
|
||||||
static void Gam_GetAndShowNumPlayersInMatch (long MchCod)
|
static void Gam_GetAndShowNumPlayersInMatch (long MchCod)
|
||||||
{
|
{
|
||||||
|
extern const char *Txt_Players;
|
||||||
unsigned NumPlayers;
|
unsigned NumPlayers;
|
||||||
|
|
||||||
/***** Remove old players *****/
|
/***** Remove old players *****/
|
||||||
|
@ -3718,7 +3683,7 @@ static void Gam_GetAndShowNumPlayersInMatch (long MchCod)
|
||||||
NumPlayers = Gam_GetNumPlayers (MchCod);
|
NumPlayers = Gam_GetNumPlayers (MchCod);
|
||||||
|
|
||||||
/***** Show number of players *****/
|
/***** Show number of players *****/
|
||||||
fprintf (Gbl.F.Out,"Players: %u",NumPlayers); // TODO: Need translation!!!!!
|
fprintf (Gbl.F.Out,"%s: %u",Txt_Players,NumPlayers);
|
||||||
}
|
}
|
||||||
|
|
||||||
static unsigned Gam_GetNumPlayers (long MchCod)
|
static unsigned Gam_GetNumPlayers (long MchCod)
|
||||||
|
@ -3764,7 +3729,7 @@ void Gam_ShowMatchToMeAsStd (void)
|
||||||
Gam_GetDataOfMatchByCod (&Match);
|
Gam_GetDataOfMatchByCod (&Match);
|
||||||
|
|
||||||
/***** Show current match status *****/
|
/***** Show current match status *****/
|
||||||
fprintf (Gbl.F.Out,"<div id=\"game\" class=\"GAM_PLAY_CONTAINER\">");
|
fprintf (Gbl.F.Out,"<div id=\"game\" class=\"MATCH_CONT\">");
|
||||||
Gam_ShowMatchStatusForStd (&Match);
|
Gam_ShowMatchStatusForStd (&Match);
|
||||||
fprintf (Gbl.F.Out,"</div>");
|
fprintf (Gbl.F.Out,"</div>");
|
||||||
}
|
}
|
||||||
|
@ -3817,6 +3782,7 @@ void Gam_RefreshMatchStd (void)
|
||||||
|
|
||||||
static void Gam_ShowMatchStatusForStd (struct Match *Match)
|
static void Gam_ShowMatchStatusForStd (struct Match *Match)
|
||||||
{
|
{
|
||||||
|
extern const char *Txt_Please_wait_;
|
||||||
bool IBelongToGroups;
|
bool IBelongToGroups;
|
||||||
bool Shuffle = false; // TODO: Read shuffle from question
|
bool Shuffle = false; // TODO: Read shuffle from question
|
||||||
MYSQL_RES *mysql_res;
|
MYSQL_RES *mysql_res;
|
||||||
|
@ -3846,10 +3812,10 @@ static void Gam_ShowMatchStatusForStd (struct Match *Match)
|
||||||
{
|
{
|
||||||
/***** Show question *****/
|
/***** Show question *****/
|
||||||
/* Write number of question */
|
/* Write number of question */
|
||||||
fprintf (Gbl.F.Out,"<div class=\"GAM_PLAY_STD_NUM_QST\">%u</div>",
|
fprintf (Gbl.F.Out,"<div class=\"MATCH_STD_NUM_QST\">%u</div>",
|
||||||
Match->Status.QstInd);
|
Match->Status.QstInd);
|
||||||
|
|
||||||
fprintf (Gbl.F.Out,"<div class=\"GAM_PLAY_STD_QST_CONTAINER\">");
|
fprintf (Gbl.F.Out,"<div class=\"MATCH_STD_QST_CONTAINER\">");
|
||||||
|
|
||||||
/* Write buttons for answers? */
|
/* Write buttons for answers? */
|
||||||
if (Match->Status.ShowingAnswers)
|
if (Match->Status.ShowingAnswers)
|
||||||
|
@ -3904,7 +3870,7 @@ static void Gam_ShowMatchStatusForStd (struct Match *Match)
|
||||||
|
|
||||||
/***** Write letter for this option *****/
|
/***** Write letter for this option *****/
|
||||||
/* Start table cell */
|
/* Start table cell */
|
||||||
fprintf (Gbl.F.Out,"<td class=\"GAM_PLAY_STD_CELL\">");
|
fprintf (Gbl.F.Out,"<td class=\"MATCH_STD_CELL\">");
|
||||||
|
|
||||||
/* Form with button.
|
/* Form with button.
|
||||||
Sumitting onmousedown instead of default onclick
|
Sumitting onmousedown instead of default onclick
|
||||||
|
@ -3919,8 +3885,8 @@ static void Gam_ShowMatchStatusForStd (struct Match *Match)
|
||||||
"return false;\" class=\"",
|
"return false;\" class=\"",
|
||||||
Gbl.Form.Id);
|
Gbl.Form.Id);
|
||||||
if (StdAnsInd == (int) NumOpt) // Student's answer
|
if (StdAnsInd == (int) NumOpt) // Student's answer
|
||||||
fprintf (Gbl.F.Out,"GAM_PLAY_STD_ANSWER_SELECTED ");
|
fprintf (Gbl.F.Out,"MATCH_STD_ANSWER_SELECTED ");
|
||||||
fprintf (Gbl.F.Out,"GAM_PLAY_STD_BUTTON BT_%c\">"
|
fprintf (Gbl.F.Out,"MATCH_STD_BUTTON BT_%c\">"
|
||||||
"%c"
|
"%c"
|
||||||
"</button>",
|
"</button>",
|
||||||
'A' + (char) NumOpt,
|
'A' + (char) NumOpt,
|
||||||
|
@ -3945,12 +3911,14 @@ static void Gam_ShowMatchStatusForStd (struct Match *Match)
|
||||||
fprintf (Gbl.F.Out,"</div>");
|
fprintf (Gbl.F.Out,"</div>");
|
||||||
}
|
}
|
||||||
else // Not being played
|
else // Not being played
|
||||||
fprintf (Gbl.F.Out,"<div class=\"GAM_PLAY_STD_WAIT_CONTAINER\">"
|
fprintf (Gbl.F.Out,"<div class=\"MATCH_STD_WAIT_CONTAINER\">"
|
||||||
"<img src=\"%s/wait.gif\""
|
"<img src=\"%s/wait.gif\""
|
||||||
" alt=\"Please wait...\" title=\"Please wait...\"" // TODO: Need translation!!!!!
|
" alt=\"%s\" title=\"%s\""
|
||||||
" class=\"GAM_PLAY_STD_WAIT_IMAGE\" />"
|
" class=\"MATCH_STD_WAIT_IMAGE\" />"
|
||||||
"</div>",
|
"</div>",
|
||||||
Cfg_URL_ICON_PUBLIC);
|
Cfg_URL_ICON_PUBLIC,
|
||||||
|
Txt_Please_wait_,
|
||||||
|
Txt_Please_wait_);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4040,7 +4008,7 @@ void Gam_ReceiveQstAnsFromStd (void)
|
||||||
}
|
}
|
||||||
|
|
||||||
/***** Show current match status *****/
|
/***** Show current match status *****/
|
||||||
fprintf (Gbl.F.Out,"<div id=\"game\" class=\"GAM_PLAY_CONTAINER\">");
|
fprintf (Gbl.F.Out,"<div id=\"game\" class=\"MATCH_CONT\">");
|
||||||
Gam_ShowMatchStatusForStd (&Match);
|
Gam_ShowMatchStatusForStd (&Match);
|
||||||
fprintf (Gbl.F.Out,"</div>");
|
fprintf (Gbl.F.Out,"</div>");
|
||||||
}
|
}
|
||||||
|
|
|
@ -1072,11 +1072,11 @@ static void Tst_WriteQstAndAnsTest (Tst_ActionToDoWithQuestions_t ActionToDoWith
|
||||||
break;
|
break;
|
||||||
case Tst_SHOW_GAME_TO_ANSWER:
|
case Tst_SHOW_GAME_TO_ANSWER:
|
||||||
Tst_WriteAnswersGameResult (GamCod,NumQst,QstCod,
|
Tst_WriteAnswersGameResult (GamCod,NumQst,QstCod,
|
||||||
"GAM_PLAY_QST",false); // Don't show result
|
"MATCH_QST",false); // Don't show result
|
||||||
break;
|
break;
|
||||||
case Tst_SHOW_GAME_RESULT:
|
case Tst_SHOW_GAME_RESULT:
|
||||||
Tst_WriteAnswersGameResult (GamCod,NumQst,QstCod,
|
Tst_WriteAnswersGameResult (GamCod,NumQst,QstCod,
|
||||||
"GAM_PLAY_QST",true); // Show result
|
"MATCH_QST",true); // Show result
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
fprintf (Gbl.F.Out,"</td>"
|
fprintf (Gbl.F.Out,"</td>"
|
||||||
|
@ -4113,7 +4113,7 @@ static void Tst_WriteChoiceAnsViewGame (long GamCod,unsigned QstInd,long QstCod,
|
||||||
Class,
|
Class,
|
||||||
'a' + (char) NumOpt);
|
'a' + (char) NumOpt);
|
||||||
else
|
else
|
||||||
fprintf (Gbl.F.Out,"GAM_PLAY_TCH_BUTTON BT_%c\">"
|
fprintf (Gbl.F.Out,"MATCH_TCH_BUTTON BT_%c\">"
|
||||||
"%c",
|
"%c",
|
||||||
'A' + (char) NumOpt,
|
'A' + (char) NumOpt,
|
||||||
'a' + (char) NumOpt);
|
'a' + (char) NumOpt);
|
||||||
|
|
44
swad_text.c
44
swad_text.c
|
@ -29051,7 +29051,7 @@ const char *Txt_PLACES_ORDER[Plc_NUM_ORDERS] =
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
const char *Txt_Play = // To play a game
|
const char *Txt_Play = // To play a game match
|
||||||
#if L==1 // ca
|
#if L==1 // ca
|
||||||
"Jugar";
|
"Jugar";
|
||||||
#elif L==2 // de
|
#elif L==2 // de
|
||||||
|
@ -29072,6 +29072,27 @@ const char *Txt_Play = // To play a game
|
||||||
"Jogar";
|
"Jogar";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
const char *Txt_Players = // Match players
|
||||||
|
#if L==1 // ca
|
||||||
|
"Jugadors";
|
||||||
|
#elif L==2 // de
|
||||||
|
"Spieler";
|
||||||
|
#elif L==3 // en
|
||||||
|
"Players";
|
||||||
|
#elif L==4 // es
|
||||||
|
"Jugadores";
|
||||||
|
#elif L==5 // fr
|
||||||
|
"Joueurs";
|
||||||
|
#elif L==6 // gn
|
||||||
|
"Jugadores"; // Okoteve traducción
|
||||||
|
#elif L==7 // it
|
||||||
|
"Giocatori";
|
||||||
|
#elif L==8 // pl
|
||||||
|
"Gracze";
|
||||||
|
#elif L==9 // pt
|
||||||
|
"Jogadores";
|
||||||
|
#endif
|
||||||
|
|
||||||
const char *Txt_Please_check_your_email_address =
|
const char *Txt_Please_check_your_email_address =
|
||||||
#if L==1 // ca
|
#if L==1 // ca
|
||||||
"Si us plau, comproveu la seva adreça de correu.";
|
"Si us plau, comproveu la seva adreça de correu.";
|
||||||
|
@ -29415,6 +29436,27 @@ const char *Txt_Please_specify_if_you_allow_access_to_test_questions_from_mobile
|
||||||
" para perguntas de teste de aplicativos para dispositivos móveis.";
|
" para perguntas de teste de aplicativos para dispositivos móveis.";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
const char *Txt_Please_wait_ =
|
||||||
|
#if L==1 // ca
|
||||||
|
"Espereu, si us plau…";
|
||||||
|
#elif L==2 // de
|
||||||
|
"Warten Sie bitte…";
|
||||||
|
#elif L==3 // en
|
||||||
|
"Please wait…";
|
||||||
|
#elif L==4 // es
|
||||||
|
"Espere, por favor…";
|
||||||
|
#elif L==5 // fr
|
||||||
|
"Attendez s'il vous plaît…";
|
||||||
|
#elif L==6 // gn
|
||||||
|
"Espere, por favor…"; // Okoteve traducción
|
||||||
|
#elif L==7 // it
|
||||||
|
"Aspetta, per favore…";
|
||||||
|
#elif L==8 // pl
|
||||||
|
"Proszę czekać…";
|
||||||
|
#elif L==9 // pt
|
||||||
|
"Espere, por favor…";
|
||||||
|
#endif
|
||||||
|
|
||||||
const char *Txt_Plugin =
|
const char *Txt_Plugin =
|
||||||
#if L==1 // ca
|
#if L==1 // ca
|
||||||
"Complement";
|
"Complement";
|
||||||
|
|
Loading…
Reference in New Issue