Version18.126.2

This commit is contained in:
Antonio Cañas Vargas 2019-05-30 13:46:57 +02:00
parent 03d23f968f
commit 03a88663d5
3 changed files with 83 additions and 16 deletions

View File

@ -453,10 +453,11 @@ En OpenSWAD:
ps2pdf source.ps destination.pdf
*/
#define Log_PLATFORM_VERSION "SWAD 18.126.1 (2019-05-29)"
#define Log_PLATFORM_VERSION "SWAD 18.126.2 (2019-05-29)"
#define CSS_FILE "swad18.123.css"
#define JS_FILE "swad18.123.js"
/*
Version 18.126.2: May 30, 2019 New column in list of matches for match status. (? lines)
Version 18.126.1: May 30, 2019 New option to resume an unfinished match. (243415 lines)
11 changes necessary in database:
UPDATE actions SET Txt='Preparar partida (como profesor)' WHERE ActCod='1670' AND Language='es';

View File

@ -146,6 +146,7 @@ static void Gam_RemAnswersOfAQuestion (long GamCod,unsigned QstInd);
static long Gam_GetQstCodFromQstInd (long GamCod,unsigned QstInd);
static unsigned Gam_GetMaxQuestionIndexInGame (long GamCod);
static unsigned Gam_GetFirstQuestionIndexInGame (long GamCod);
static unsigned Gam_GetPrevQuestionIndexInGame (long GamCod,unsigned QstInd);
static unsigned Gam_GetNextQuestionIndexInGame (long GamCod,unsigned QstInd);
static void Gam_ListGameQuestions (struct Game *Game);
@ -2047,11 +2048,21 @@ static unsigned Gam_GetMaxQuestionIndexInGame (long GamCod)
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 **********/
/*****************************************************************************/
// Question index can be 1, 2, 3...
// Return 0 if no previous question
// Input question index can be 1, 2, 3... n-1
// Return question index will be 1, 2, 3... n if previous question exists, or 0 if no previous question
static unsigned Gam_GetPrevQuestionIndexInGame (long GamCod,unsigned QstInd)
{
@ -2083,8 +2094,8 @@ static unsigned Gam_GetPrevQuestionIndexInGame (long GamCod,unsigned QstInd)
/*****************************************************************************/
/************* Get next question index to a given index in a game ************/
/*****************************************************************************/
// Question index can be 1, 2, 3...
// Return 0 if no next question
// Input question index can be 0, 1, 2, 3... n-1
// Return question index will be 1, 2, 3... n if next question exists, or 0 if no next question
static unsigned Gam_GetNextQuestionIndexInGame (long GamCod,unsigned QstInd)
{
@ -2996,8 +3007,10 @@ static void Gam_ListOneOrMoreMatchesForEdition (unsigned NumMatches,
extern const char *Txt_ROLES_SINGUL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
extern const char *Txt_START_END_TIME[Dat_NUM_START_END_TIME];
extern const char *Txt_Match;
extern const char *Txt_Status;
extern const char *Txt_Resume;
extern const char *Txt_Today;
extern const char *Txt_Finished_match;
unsigned NumMatch;
unsigned UniqueId;
struct Match Match;
@ -3021,12 +3034,16 @@ static void Gam_ListOneOrMoreMatchesForEdition (unsigned NumMatches,
"<th class=\"LEFT_TOP\">"
"%s"
"</th>"
"<th class=\"LEFT_TOP\">"
"%s"
"</th>"
"</tr>",
Txt_No_INDEX,
Txt_ROLES_SINGUL_Abc[Rol_TCH][Usr_SEX_UNKNOWN],
Txt_START_END_TIME[Gam_ORDER_BY_START_DATE],
Txt_START_END_TIME[Gam_ORDER_BY_END_DATE],
Txt_Match);
Txt_Match,
Txt_Status);
/***** Write rows *****/
for (NumMatch = 0, UniqueId = 1;
@ -3061,11 +3078,8 @@ static void Gam_ListOneOrMoreMatchesForEdition (unsigned NumMatches,
fprintf (Gbl.F.Out,"</td>");
/***** Number of match ******/
fprintf (Gbl.F.Out,"<td class=\"RIGHT_TOP COLOR%u\">"
"<div class=\"BIG_INDEX\">%u</div>"
"</td>",
Gbl.RowEvenOdd,
NumMatch + 1);
fprintf (Gbl.F.Out,"<td class=\"BIG_INDEX RIGHT_TOP COLOR%u\">%u</td>",
Gbl.RowEvenOdd,NumMatch + 1);
/***** Match player *****/
fprintf (Gbl.F.Out,"<td class=\"LEFT_TOP COLOR%u\">",
@ -3116,6 +3130,20 @@ static void Gam_ListOneOrMoreMatchesForEdition (unsigned NumMatches,
fprintf (Gbl.F.Out,"</td>");
/***** Match status ******/
fprintf (Gbl.F.Out,"<td class=\"DAT LEFT_TOP COLOR%u\">",Gbl.RowEvenOdd);
if (Match.Status.Finished)
Ico_PutIconOff ("flag-checkered.svg",Txt_Finished_match);
else // Unfinished match
{
Gam_CurrentMchCod = Match.MchCod;
Lay_PutContextualLinkOnlyIcon (ActResMch,NULL,
Gam_PutParamCurrentMchCod,
"play.svg",
Txt_Resume);
}
fprintf (Gbl.F.Out,"</td>");
fprintf (Gbl.F.Out,"</tr>");
}
@ -3439,6 +3467,7 @@ static void Gam_PutBigButtonToPlayMatchStd (long MchCod)
void Gam_CreateAndStartNewMatch (void)
{
struct Match Match;
unsigned QstInd;
/***** Get form parameters *****/
/* Get game code */
@ -3458,8 +3487,9 @@ void Gam_CreateAndStartNewMatch (void)
Grp_FreeListCodSelectedGrps ();
/***** Show questions and possible answers *****/
QstInd = Gam_GetFirstQuestionIndexInGame (Match.GamCod);
Gam_PlayGameShowQuestionAndAnswers (Match.MchCod,
0, // First question (index is 0)
QstInd, // First question
false); // Don't show answers
}
@ -3496,7 +3526,9 @@ static long Gam_CreateMatch (struct Match *Match)
void Gam_ResumeUnfinishedMatch (void)
{
extern const char *Txt_Finished_match;
struct Match Match;
unsigned QstInd;
/***** Get parameters *****/
/* Get match code */
@ -3509,16 +3541,28 @@ void Gam_ResumeUnfinishedMatch (void)
if (Match.Status.Finished)
{
/***** Show alert *****/
Ale_ShowAlert (Ale_WARNING,"Partida finalizada."); // TODO: Need translation!!!!!
Ale_ShowAlert (Ale_WARNING,Txt_Finished_match);
/***** Button to close browser tab *****/
Btn_PutCloseButton ("Cerrar"); // TODO: Need translation!!!!!
}
else // Unfinished match
{
/***** In what question do we resume the match? *****/
if (Match.Status.QstInd == 0)
/* If current question index is 0 ==>
start playing the first question */
QstInd = Gam_GetFirstQuestionIndexInGame (Match.GamCod);
else
/* If current question index is >0 ==>
show again current question, without answers */
QstInd = Match.Status.QstInd;
/***** Show questions and possible answers *****/
Gam_PlayGameShowQuestionAndAnswers (Match.MchCod,
Match.Status.QstInd, // Resume last question index shown
Match.Status.ShowAnswers); // Show answers?
QstInd,
false); // Don't show answers
}
}
/*****************************************************************************/
@ -3766,6 +3810,7 @@ static void Gam_PutBigButtonToFinishMatch (long MchCod)
void Gam_MatchTchEnd (void)
{
extern const char *Txt_Finished_match;
long MchCod;
/***** Get match code *****/
@ -3783,7 +3828,7 @@ void Gam_MatchTchEnd (void)
MchCod,Gbl.Hierarchy.Crs.CrsCod);
/***** Show alert *****/
Ale_ShowAlert (Ale_INFO,"Partida finalizada."); // TODO: Need translation!!!!!
Ale_ShowAlert (Ale_INFO,Txt_Finished_match);
/***** Button to close browser tab *****/
Btn_PutCloseButton ("Cerrar"); // TODO: Need translation!!!!!

View File

@ -12247,6 +12247,27 @@ const char *Txt_Finish =
"Terminar";
#endif
const char *Txt_Finished_match =
#if L==1 // ca
"Partida finalitzada";
#elif L==2 // de
"Spiel beendet";
#elif L==3 // en
"Finished match";
#elif L==4 // es
"Partida finalizada";
#elif L==5 // fr
"Match termin&eacute;";
#elif L==6 // gn
"Partida finalizada"; // Okoteve traducción
#elif L==7 // it
"Partita finita";
#elif L==8 // pl
"Zako&nacute;czony mecz";
#elif L==9 // pt
"Jogo terminado";
#endif
const char *Txt_First_day_of_the_week =
#if L==1 // ca
"Primer dia de la setmana";