mirror of https://github.com/acanas/swad-core.git
Version18.138
This commit is contained in:
parent
4640f5fdc1
commit
fa3cb6f77d
|
@ -2641,28 +2641,46 @@ a:hover img.CENTRE_PHOTO_SHOW
|
||||||
font-size:16pt;
|
font-size:16pt;
|
||||||
}
|
}
|
||||||
|
|
||||||
.MATCH_TCH_NXT_CONTAINER
|
.MATCH_BUTTONS_CONTAINER
|
||||||
{
|
{
|
||||||
|
box-sizing:border-box;
|
||||||
|
display:table;
|
||||||
|
width:100%;
|
||||||
|
background:pink;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.MATCH_BUTTON_LEFT_CONTAINER
|
||||||
|
{
|
||||||
|
box-sizing:border-box;
|
||||||
|
float:left;
|
||||||
|
width:50%;
|
||||||
|
margin:0 auto;
|
||||||
|
text-align:center;
|
||||||
|
border:1px solid red;
|
||||||
|
}
|
||||||
|
.MATCH_BUTTON_RIGHT_CONTAINER
|
||||||
|
{
|
||||||
|
box-sizing:border-box;
|
||||||
|
float:left;
|
||||||
|
width:50%;
|
||||||
|
margin:0 auto;
|
||||||
|
text-align:center;
|
||||||
|
border:1px solid blue;
|
||||||
|
}
|
||||||
|
.MATCH_BUTTON_RIGHT_CONTAINER a
|
||||||
|
{
|
||||||
|
text-decoration:none;
|
||||||
|
}
|
||||||
|
.MATCH_BUTTON
|
||||||
|
{
|
||||||
|
font-size:12pt;
|
||||||
|
}
|
||||||
|
|
||||||
.MATCH_TCH_QST
|
.MATCH_TCH_QST
|
||||||
{
|
{
|
||||||
color:#202020;
|
color:#202020;
|
||||||
font-size:24pt;
|
font-size:24pt;
|
||||||
}
|
}
|
||||||
.MATCH_TCH_CONTINUE_CONTAINER
|
|
||||||
{
|
|
||||||
clear:all;
|
|
||||||
margin:0 auto;
|
|
||||||
text-align:center;
|
|
||||||
}
|
|
||||||
.MATCH_TCH_CONTINUE_CONTAINER a
|
|
||||||
{
|
|
||||||
text-decoration:none;
|
|
||||||
}
|
|
||||||
.MATCH_TCH_CONTINUE
|
|
||||||
{
|
|
||||||
font-size:16pt;
|
|
||||||
}
|
|
||||||
|
|
||||||
.MATCH_STD_WAIT_CONTAINER
|
.MATCH_STD_WAIT_CONTAINER
|
||||||
{
|
{
|
||||||
|
@ -2675,11 +2693,6 @@ a:hover img.CENTRE_PHOTO_SHOW
|
||||||
width:50%;
|
width:50%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.MATCH_STD_QST_CONTAINER
|
|
||||||
{
|
|
||||||
width:85%;
|
|
||||||
float:left;
|
|
||||||
}
|
|
||||||
.MATCH_STD_QST
|
.MATCH_STD_QST
|
||||||
{
|
{
|
||||||
color:#202020;
|
color:#202020;
|
||||||
|
@ -2706,6 +2719,7 @@ a:hover img.CENTRE_PHOTO_SHOW
|
||||||
{
|
{
|
||||||
text-align:center;
|
text-align:center;
|
||||||
vertical-align:middle;
|
vertical-align:middle;
|
||||||
|
border:1px solid green;
|
||||||
}
|
}
|
||||||
.MATCH_STD_BUTTON
|
.MATCH_STD_BUTTON
|
||||||
{
|
{
|
|
@ -0,0 +1 @@
|
||||||
|
<svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="step-backward" class="svg-inline--fa fa-step-backward fa-w-14" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="#404040" d="M64 468V44c0-6.6 5.4-12 12-12h48c6.6 0 12 5.4 12 12v176.4l195.5-181C352.1 22.3 384 36.6 384 64v384c0 27.4-31.9 41.7-52.5 24.6L136 292.7V468c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12z"></path></svg>
|
After Width: | Height: | Size: 424 B |
|
@ -1 +1 @@
|
||||||
<svg aria-hidden="true" data-prefix="fas" data-icon="step-forward" class="svg-inline--fa fa-step-forward fa-w-14" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="#404040" d="M384 44v424c0 6.6-5.4 12-12 12h-48c-6.6 0-12-5.4-12-12V291.6l-195.5 181C95.9 489.7 64 475.4 64 448V64c0-27.4 31.9-41.7 52.5-24.6L312 219.3V44c0-6.6 5.4-12 12-12h48c6.6 0 12 5.4 12 12z"></path></svg>
|
<svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="step-forward" class="svg-inline--fa fa-step-forward fa-w-14" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="#404040" d="M384 44v424c0 6.6-5.4 12-12 12h-48c-6.6 0-12-5.4-12-12V291.6l-195.5 181C95.9 489.7 64 475.4 64 448V64c0-27.4 31.9-41.7 52.5-24.6L312 219.3V44c0-6.6 5.4-12 12-12h48c6.6 0 12 5.4 12 12z"></path></svg>
|
||||||
|
|
Before Width: | Height: | Size: 405 B After Width: | Height: | Size: 423 B |
Binary file not shown.
Before Width: | Height: | Size: 1.1 KiB |
Binary file not shown.
Before Width: | Height: | Size: 521 B |
|
@ -611,8 +611,9 @@ Assessment:
|
||||||
455. ActReqNewMchTch Put form to create a new match (by a teacher)
|
455. ActReqNewMchTch Put form to create a new match (by a teacher)
|
||||||
456. ActNewMchTch Create a new match showing first question in a new browser tab (by a teacher)
|
456. ActNewMchTch Create a new match showing first question in a new browser tab (by a teacher)
|
||||||
NEW. ActResMchTch Resume an unfinished match showing current question in a new browser tab (by a teacher)
|
NEW. ActResMchTch Resume an unfinished match showing current question in a new browser tab (by a teacher)
|
||||||
NEW. ActCurMchTch Show current question when playing a match (by a teacher)
|
NEW. ActPrvMchTch Show previous question when playing a match (by a teacher)
|
||||||
457. ActNxtMchTch Show next question when playing a match (by a teacher)
|
NEW. ActCurMchTch Show current question when playing a match (by a teacher)
|
||||||
|
457. ActNxtMchTch Show next question when playing a match (by a teacher)
|
||||||
NEW. ActRefMchTch Refresh current question when playing a match (as teacher)
|
NEW. ActRefMchTch Refresh current question when playing a match (as teacher)
|
||||||
NEW. ActShoMchTch Show finished match results
|
NEW. ActShoMchTch Show finished match results
|
||||||
|
|
||||||
|
@ -2152,6 +2153,7 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
|
||||||
/* ActReqNewMchTch */{1670,-1,TabUnk,ActSeeAllGam ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Gam_RequestNewMatchTch ,NULL},
|
/* ActReqNewMchTch */{1670,-1,TabUnk,ActSeeAllGam ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Gam_RequestNewMatchTch ,NULL},
|
||||||
/* ActNewMchTch */{1671,-1,TabUnk,ActSeeAllGam ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_NEW_TAB,Gam_CreateNewMatchTch ,Gam_RequestStartResumeMatchTch ,NULL},
|
/* ActNewMchTch */{1671,-1,TabUnk,ActSeeAllGam ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_NEW_TAB,Gam_CreateNewMatchTch ,Gam_RequestStartResumeMatchTch ,NULL},
|
||||||
/* ActResMchTch */{1785,-1,TabUnk,ActSeeAllGam ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_NEW_TAB,Gam_GetMatchBeingPlayed ,Gam_RequestStartResumeMatchTch ,NULL},
|
/* ActResMchTch */{1785,-1,TabUnk,ActSeeAllGam ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_NEW_TAB,Gam_GetMatchBeingPlayed ,Gam_RequestStartResumeMatchTch ,NULL},
|
||||||
|
/* ActPrvMchTch */{1790,-1,TabUnk,ActSeeAllGam ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_2ND_TAB,Gam_GetMatchBeingPlayed ,Gam_PrevStatusMatchTch ,NULL},
|
||||||
/* ActCurMchTch */{1789,-1,TabUnk,ActSeeAllGam ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_2ND_TAB,Gam_GetMatchBeingPlayed ,Gam_ResumeMatchTch ,NULL},
|
/* ActCurMchTch */{1789,-1,TabUnk,ActSeeAllGam ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_2ND_TAB,Gam_GetMatchBeingPlayed ,Gam_ResumeMatchTch ,NULL},
|
||||||
/* ActNxtMchTch */{1672,-1,TabUnk,ActSeeAllGam ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_2ND_TAB,Gam_GetMatchBeingPlayed ,Gam_NextStatusMatchTch ,NULL},
|
/* ActNxtMchTch */{1672,-1,TabUnk,ActSeeAllGam ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_2ND_TAB,Gam_GetMatchBeingPlayed ,Gam_NextStatusMatchTch ,NULL},
|
||||||
/* ActRefMchTch */{1788,-1,TabUnk,ActSeeAllGam ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_AJAX_RFRESH,Gam_GetMatchBeingPlayed ,Gam_RefreshMatchTch ,NULL},
|
/* ActRefMchTch */{1788,-1,TabUnk,ActSeeAllGam ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_AJAX_RFRESH,Gam_GetMatchBeingPlayed ,Gam_RefreshMatchTch ,NULL},
|
||||||
|
@ -5001,6 +5003,7 @@ Act_Action_t Act_FromActCodToAction[1 + Act_MAX_ACTION_COD] = // Do not reuse un
|
||||||
ActCreMyAcc, // #1787
|
ActCreMyAcc, // #1787
|
||||||
ActRefMchTch, // #1788
|
ActRefMchTch, // #1788
|
||||||
ActCurMchTch, // #1789
|
ActCurMchTch, // #1789
|
||||||
|
ActPrvMchTch, // #1790
|
||||||
};
|
};
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
103
swad_action.h
103
swad_action.h
|
@ -64,9 +64,9 @@ typedef enum
|
||||||
|
|
||||||
typedef signed int Act_Action_t; // Must be a signed type, because -1 is used to indicate obsolete action
|
typedef signed int Act_Action_t; // Must be a signed type, because -1 is used to indicate obsolete action
|
||||||
|
|
||||||
#define Act_NUM_ACTIONS (1 + 4 + 64 + 38 + 12 + 42 + 36 + 19 + 110 + 170 + 437 + 176 + 169 + 16 + 68)
|
#define Act_NUM_ACTIONS (1 + 4 + 64 + 38 + 12 + 42 + 36 + 19 + 110 + 171 + 437 + 176 + 169 + 16 + 68)
|
||||||
|
|
||||||
#define Act_MAX_ACTION_COD 1789
|
#define Act_MAX_ACTION_COD 1790
|
||||||
|
|
||||||
#define Act_MAX_OPTIONS_IN_MENU_PER_TAB 13
|
#define Act_MAX_OPTIONS_IN_MENU_PER_TAB 13
|
||||||
|
|
||||||
|
@ -612,57 +612,58 @@ typedef signed int Act_Action_t; // Must be a signed type, because -1 is used to
|
||||||
#define ActReqNewMchTch (ActChgCrsTT1stDay + 119)
|
#define ActReqNewMchTch (ActChgCrsTT1stDay + 119)
|
||||||
#define ActNewMchTch (ActChgCrsTT1stDay + 120)
|
#define ActNewMchTch (ActChgCrsTT1stDay + 120)
|
||||||
#define ActResMchTch (ActChgCrsTT1stDay + 121)
|
#define ActResMchTch (ActChgCrsTT1stDay + 121)
|
||||||
#define ActCurMchTch (ActChgCrsTT1stDay + 122)
|
#define ActPrvMchTch (ActChgCrsTT1stDay + 122)
|
||||||
#define ActNxtMchTch (ActChgCrsTT1stDay + 123)
|
#define ActCurMchTch (ActChgCrsTT1stDay + 123)
|
||||||
#define ActRefMchTch (ActChgCrsTT1stDay + 124)
|
#define ActNxtMchTch (ActChgCrsTT1stDay + 124)
|
||||||
#define ActShoMchTch (ActChgCrsTT1stDay + 125)
|
#define ActRefMchTch (ActChgCrsTT1stDay + 125)
|
||||||
#define ActPlyMchStd (ActChgCrsTT1stDay + 126)
|
#define ActShoMchTch (ActChgCrsTT1stDay + 126)
|
||||||
#define ActRefMchStd (ActChgCrsTT1stDay + 127)
|
#define ActPlyMchStd (ActChgCrsTT1stDay + 127)
|
||||||
#define ActAnsMchQstStd (ActChgCrsTT1stDay + 128)
|
#define ActRefMchStd (ActChgCrsTT1stDay + 128)
|
||||||
#define ActFrmNewGam (ActChgCrsTT1stDay + 129)
|
#define ActAnsMchQstStd (ActChgCrsTT1stDay + 129)
|
||||||
#define ActEdiOneGam (ActChgCrsTT1stDay + 130)
|
#define ActFrmNewGam (ActChgCrsTT1stDay + 130)
|
||||||
#define ActNewGam (ActChgCrsTT1stDay + 131)
|
#define ActEdiOneGam (ActChgCrsTT1stDay + 131)
|
||||||
#define ActChgGam (ActChgCrsTT1stDay + 132)
|
#define ActNewGam (ActChgCrsTT1stDay + 132)
|
||||||
#define ActReqRemGam (ActChgCrsTT1stDay + 133)
|
#define ActChgGam (ActChgCrsTT1stDay + 133)
|
||||||
#define ActRemGam (ActChgCrsTT1stDay + 134)
|
#define ActReqRemGam (ActChgCrsTT1stDay + 134)
|
||||||
#define ActReqRstGam (ActChgCrsTT1stDay + 135)
|
#define ActRemGam (ActChgCrsTT1stDay + 135)
|
||||||
#define ActRstGam (ActChgCrsTT1stDay + 136)
|
#define ActReqRstGam (ActChgCrsTT1stDay + 136)
|
||||||
#define ActHidGam (ActChgCrsTT1stDay + 137)
|
#define ActRstGam (ActChgCrsTT1stDay + 137)
|
||||||
#define ActShoGam (ActChgCrsTT1stDay + 138)
|
#define ActHidGam (ActChgCrsTT1stDay + 138)
|
||||||
#define ActAddOneGamQst (ActChgCrsTT1stDay + 139)
|
#define ActShoGam (ActChgCrsTT1stDay + 139)
|
||||||
#define ActGamLstTstQst (ActChgCrsTT1stDay + 140)
|
#define ActAddOneGamQst (ActChgCrsTT1stDay + 140)
|
||||||
#define ActAddTstQstToGam (ActChgCrsTT1stDay + 141)
|
#define ActGamLstTstQst (ActChgCrsTT1stDay + 141)
|
||||||
#define ActReqRemGamQst (ActChgCrsTT1stDay + 142)
|
#define ActAddTstQstToGam (ActChgCrsTT1stDay + 142)
|
||||||
#define ActRemGamQst (ActChgCrsTT1stDay + 143)
|
#define ActReqRemGamQst (ActChgCrsTT1stDay + 143)
|
||||||
#define ActUp_GamQst (ActChgCrsTT1stDay + 144)
|
#define ActRemGamQst (ActChgCrsTT1stDay + 144)
|
||||||
#define ActDwnGamQst (ActChgCrsTT1stDay + 145)
|
#define ActUp_GamQst (ActChgCrsTT1stDay + 145)
|
||||||
|
#define ActDwnGamQst (ActChgCrsTT1stDay + 146)
|
||||||
|
|
||||||
#define ActSeeSvy (ActChgCrsTT1stDay + 146)
|
#define ActSeeSvy (ActChgCrsTT1stDay + 147)
|
||||||
#define ActAnsSvy (ActChgCrsTT1stDay + 147)
|
#define ActAnsSvy (ActChgCrsTT1stDay + 148)
|
||||||
#define ActFrmNewSvy (ActChgCrsTT1stDay + 148)
|
#define ActFrmNewSvy (ActChgCrsTT1stDay + 149)
|
||||||
#define ActEdiOneSvy (ActChgCrsTT1stDay + 149)
|
#define ActEdiOneSvy (ActChgCrsTT1stDay + 150)
|
||||||
#define ActNewSvy (ActChgCrsTT1stDay + 150)
|
#define ActNewSvy (ActChgCrsTT1stDay + 151)
|
||||||
#define ActChgSvy (ActChgCrsTT1stDay + 151)
|
#define ActChgSvy (ActChgCrsTT1stDay + 152)
|
||||||
#define ActReqRemSvy (ActChgCrsTT1stDay + 152)
|
#define ActReqRemSvy (ActChgCrsTT1stDay + 153)
|
||||||
#define ActRemSvy (ActChgCrsTT1stDay + 153)
|
#define ActRemSvy (ActChgCrsTT1stDay + 154)
|
||||||
#define ActReqRstSvy (ActChgCrsTT1stDay + 154)
|
#define ActReqRstSvy (ActChgCrsTT1stDay + 155)
|
||||||
#define ActRstSvy (ActChgCrsTT1stDay + 155)
|
#define ActRstSvy (ActChgCrsTT1stDay + 156)
|
||||||
#define ActHidSvy (ActChgCrsTT1stDay + 156)
|
#define ActHidSvy (ActChgCrsTT1stDay + 157)
|
||||||
#define ActShoSvy (ActChgCrsTT1stDay + 157)
|
#define ActShoSvy (ActChgCrsTT1stDay + 158)
|
||||||
#define ActEdiOneSvyQst (ActChgCrsTT1stDay + 158)
|
#define ActEdiOneSvyQst (ActChgCrsTT1stDay + 159)
|
||||||
#define ActRcvSvyQst (ActChgCrsTT1stDay + 159)
|
#define ActRcvSvyQst (ActChgCrsTT1stDay + 160)
|
||||||
#define ActReqRemSvyQst (ActChgCrsTT1stDay + 160)
|
#define ActReqRemSvyQst (ActChgCrsTT1stDay + 161)
|
||||||
#define ActRemSvyQst (ActChgCrsTT1stDay + 161)
|
#define ActRemSvyQst (ActChgCrsTT1stDay + 162)
|
||||||
|
|
||||||
#define ActSeeOneExaAnn (ActChgCrsTT1stDay + 162)
|
#define ActSeeOneExaAnn (ActChgCrsTT1stDay + 163)
|
||||||
#define ActSeeDatExaAnn (ActChgCrsTT1stDay + 163)
|
#define ActSeeDatExaAnn (ActChgCrsTT1stDay + 164)
|
||||||
#define ActEdiExaAnn (ActChgCrsTT1stDay + 164)
|
#define ActEdiExaAnn (ActChgCrsTT1stDay + 165)
|
||||||
#define ActRcvExaAnn (ActChgCrsTT1stDay + 165)
|
#define ActRcvExaAnn (ActChgCrsTT1stDay + 166)
|
||||||
#define ActPrnExaAnn (ActChgCrsTT1stDay + 166)
|
#define ActPrnExaAnn (ActChgCrsTT1stDay + 167)
|
||||||
#define ActReqRemExaAnn (ActChgCrsTT1stDay + 167)
|
#define ActReqRemExaAnn (ActChgCrsTT1stDay + 168)
|
||||||
#define ActRemExaAnn (ActChgCrsTT1stDay + 168)
|
#define ActRemExaAnn (ActChgCrsTT1stDay + 169)
|
||||||
#define ActHidExaAnn (ActChgCrsTT1stDay + 169)
|
#define ActHidExaAnn (ActChgCrsTT1stDay + 170)
|
||||||
#define ActShoExaAnn (ActChgCrsTT1stDay + 170)
|
#define ActShoExaAnn (ActChgCrsTT1stDay + 171)
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/******************************** Files tab **********************************/
|
/******************************** Files tab **********************************/
|
||||||
|
|
|
@ -460,10 +460,22 @@ En OpenSWAD:
|
||||||
ps2pdf source.ps destination.pdf
|
ps2pdf source.ps destination.pdf
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define Log_PLATFORM_VERSION "SWAD 18.136.5 (2019-07-25)"
|
#define Log_PLATFORM_VERSION "SWAD 18.138 (2019-07-30)"
|
||||||
#define CSS_FILE "swad18.136.4.css"
|
#define CSS_FILE "swad18.138.css"
|
||||||
#define JS_FILE "swad18.130.2.js"
|
#define JS_FILE "swad18.130.2.js"
|
||||||
/*
|
/*
|
||||||
|
Version 18.138.3: Jul 30, 2019 Time of current match and current match question are stored in database. (? lines)
|
||||||
|
Version 18.138.2: Jul 30, 2019 Buttons backward and start on finished games. (? lines)
|
||||||
|
Version 18.138.1: Jul 30, 2019 Close button in games always present. (? lines)
|
||||||
|
Version 18.138: Jul 30, 2019 Button to go backward when playing a game. (244080 lines)
|
||||||
|
1 change necessary in database:
|
||||||
|
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1790','es','N','Mostrar pregunta anterior en partida (como profesor)');
|
||||||
|
|
||||||
|
Copy the following icons to icon public directory:
|
||||||
|
sudo cp icon/step-backward.svg /var/www/html/swad/icon/
|
||||||
|
sudo cp icon/step-forward.svg /var/www/html/swad/icon/
|
||||||
|
|
||||||
|
Version 18.136.6: Jul 25, 2019 Changes in layout of match for students. (243931 lines)
|
||||||
Version 18.136.5: Jul 25, 2019 Changes in layout of match for students. (243936 lines)
|
Version 18.136.5: Jul 25, 2019 Changes in layout of match for students. (243936 lines)
|
||||||
Version 18.136.4: Jul 19, 2019 Changes in layout of match for teachers. (243920 lines)
|
Version 18.136.4: Jul 19, 2019 Changes in layout of match for teachers. (243920 lines)
|
||||||
Version 18.136.3: Jul 19, 2019 New icon to see answers in a match. (243924 lines)
|
Version 18.136.3: Jul 19, 2019 New icon to see answers in a match. (243924 lines)
|
||||||
|
|
194
swad_game.c
194
swad_game.c
|
@ -187,6 +187,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_UpdateMatchStatusInDB (struct Match *Match);
|
static void Gam_UpdateMatchStatusInDB (struct Match *Match);
|
||||||
|
|
||||||
|
static void Gam_SetMatchStatusToPrevQuestion (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);
|
||||||
static void Gam_ShowMatchStatusForStd (struct Match *Match);
|
static void Gam_ShowMatchStatusForStd (struct Match *Match);
|
||||||
|
@ -3293,6 +3294,9 @@ void Gam_RequestStartResumeMatchTch (void)
|
||||||
Match.MchCod = Gbl.Games.MchCodBeingPlayed;
|
Match.MchCod = Gbl.Games.MchCodBeingPlayed;
|
||||||
Gam_GetDataOfMatchByCod (&Match);
|
Gam_GetDataOfMatchByCod (&Match);
|
||||||
|
|
||||||
|
/***** Update match status in database *****/
|
||||||
|
Gam_UpdateMatchStatusInDB (&Match);
|
||||||
|
|
||||||
/***** Show current match status *****/
|
/***** Show current match status *****/
|
||||||
fprintf (Gbl.F.Out,"<div id=\"game\" class=\"MATCH_CONT\">");
|
fprintf (Gbl.F.Out,"<div id=\"game\" class=\"MATCH_CONT\">");
|
||||||
Gam_ShowMatchStatusForTch (&Match);
|
Gam_ShowMatchStatusForTch (&Match);
|
||||||
|
@ -3359,7 +3363,10 @@ static void Gam_UpdateMatchStatusInDB (struct Match *Match)
|
||||||
'N',
|
'N',
|
||||||
Match->MchCod,Gbl.Hierarchy.Crs.CrsCod);
|
Match->MchCod,Gbl.Hierarchy.Crs.CrsCod);
|
||||||
|
|
||||||
if (Match->Status.Finished)
|
if (Match->Status.BeingPlayed)
|
||||||
|
/* Update match as being played */
|
||||||
|
Gam_UpdateMatchAsBeingPlayed (Match->MchCod);
|
||||||
|
else
|
||||||
/* Update match as not being played */
|
/* Update match as not being played */
|
||||||
Gam_SetMatchAsNotBeingPlayed (Match->MchCod);
|
Gam_SetMatchAsNotBeingPlayed (Match->MchCod);
|
||||||
}
|
}
|
||||||
|
@ -3388,11 +3395,48 @@ void Gam_ResumeMatchTch (void)
|
||||||
|
|
||||||
Match.Status.ShowingAnswers = false; // Don't show answers in any case
|
Match.Status.ShowingAnswers = false; // Don't show answers in any case
|
||||||
Match.Status.BeingPlayed = true; // Resume match
|
Match.Status.BeingPlayed = true; // Resume match
|
||||||
|
|
||||||
/* Update match status in database */
|
|
||||||
Gam_UpdateMatchStatusInDB (&Match);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/***** Update match status in database *****/
|
||||||
|
Gam_UpdateMatchStatusInDB (&Match);
|
||||||
|
|
||||||
|
/***** Show current match status *****/
|
||||||
|
fprintf (Gbl.F.Out,"<div id=\"game\" class=\"MATCH_CONT\">");
|
||||||
|
Gam_ShowMatchStatusForTch (&Match);
|
||||||
|
fprintf (Gbl.F.Out,"</div>");
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/* Show previous match status (previous question, answers...) (by a teacher) */
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
void Gam_PrevStatusMatchTch (void)
|
||||||
|
{
|
||||||
|
struct Match Match;
|
||||||
|
|
||||||
|
/***** Remove old players.
|
||||||
|
This function must be called before getting match status. *****/
|
||||||
|
Gam_RemoveOldPlayers ();
|
||||||
|
|
||||||
|
/***** Get data of the match from database *****/
|
||||||
|
Match.MchCod = Gbl.Games.MchCodBeingPlayed;
|
||||||
|
Gam_GetDataOfMatchByCod (&Match);
|
||||||
|
|
||||||
|
/***** If not yet finished, update status *****/
|
||||||
|
if (!Match.Status.Finished)
|
||||||
|
{
|
||||||
|
if (Match.Status.ShowingAnswers) // Showing answers currently
|
||||||
|
{
|
||||||
|
Match.Status.Finished = false; // Match is not finished
|
||||||
|
Match.Status.ShowingAnswers = false; // Do not show answers
|
||||||
|
}
|
||||||
|
else
|
||||||
|
Gam_SetMatchStatusToPrevQuestion (&Match);
|
||||||
|
}
|
||||||
|
|
||||||
|
/***** Update match status in database *****/
|
||||||
|
Gam_UpdateMatchStatusInDB (&Match);
|
||||||
|
|
||||||
/***** Show current match status *****/
|
/***** Show current match status *****/
|
||||||
fprintf (Gbl.F.Out,"<div id=\"game\" class=\"MATCH_CONT\">");
|
fprintf (Gbl.F.Out,"<div id=\"game\" class=\"MATCH_CONT\">");
|
||||||
Gam_ShowMatchStatusForTch (&Match);
|
Gam_ShowMatchStatusForTch (&Match);
|
||||||
|
@ -3430,17 +3474,43 @@ void Gam_NextStatusMatchTch (void)
|
||||||
Match.Status.ShowingAnswers = true; // Show answers
|
Match.Status.ShowingAnswers = true; // Show answers
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Update match status in database */
|
|
||||||
Gam_UpdateMatchStatusInDB (&Match);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/***** Update match status in database *****/
|
||||||
|
Gam_UpdateMatchStatusInDB (&Match);
|
||||||
|
|
||||||
/***** Show current match status *****/
|
/***** Show current match status *****/
|
||||||
fprintf (Gbl.F.Out,"<div id=\"game\" class=\"MATCH_CONT\">");
|
fprintf (Gbl.F.Out,"<div id=\"game\" class=\"MATCH_CONT\">");
|
||||||
Gam_ShowMatchStatusForTch (&Match);
|
Gam_ShowMatchStatusForTch (&Match);
|
||||||
fprintf (Gbl.F.Out,"</div>");
|
fprintf (Gbl.F.Out,"</div>");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/******************* Set match status to previous question *******************/
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
static void Gam_SetMatchStatusToPrevQuestion (struct Match *Match)
|
||||||
|
{
|
||||||
|
/***** Get index of the previous question *****/
|
||||||
|
Match->Status.QstInd = Gam_GetPrevQuestionIndexInGame (Match->GamCod,
|
||||||
|
Match->Status.QstInd);
|
||||||
|
|
||||||
|
if (Match->Status.QstInd) // Not first question
|
||||||
|
{
|
||||||
|
Match->Status.QstCod = Gam_GetQstCodFromQstInd (Match->GamCod,
|
||||||
|
Match->Status.QstInd);
|
||||||
|
Match->Status.Finished = false; // Match is not finished
|
||||||
|
}
|
||||||
|
else // No previous question
|
||||||
|
{
|
||||||
|
Match->Status.QstCod = -1L; // No previous questions
|
||||||
|
Match->Status.BeingPlayed = false; // Match is not being played
|
||||||
|
Match->Status.Finished = false; // Match is not finished
|
||||||
|
}
|
||||||
|
|
||||||
|
Match->Status.ShowingAnswers = false; // Don't show answers
|
||||||
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/********************* Set match status to next question *********************/
|
/********************* Set match status to next question *********************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -3486,20 +3556,11 @@ static void Gam_ShowMatchStatusForTch (struct Match *Match)
|
||||||
Gam_ShowMatchTitleAndPlayers (Match);
|
Gam_ShowMatchTitleAndPlayers (Match);
|
||||||
|
|
||||||
/***** Bottom row *****/
|
/***** Bottom row *****/
|
||||||
fprintf (Gbl.F.Out,"<div class=\"MATCH_BOTTOM\">");
|
|
||||||
|
|
||||||
if (!Match->Status.Finished &&
|
if (!Match->Status.Finished &&
|
||||||
Match->Status.BeingPlayed)
|
Match->Status.BeingPlayed)
|
||||||
{
|
|
||||||
/* Show current question and possible answers */
|
/* Show current question and possible answers */
|
||||||
Gam_ShowQuestionAndAnswersTch (Match);
|
Gam_ShowQuestionAndAnswersTch (Match);
|
||||||
|
|
||||||
/* Update match as being played */
|
|
||||||
Gam_UpdateMatchAsBeingPlayed (Match->MchCod);
|
|
||||||
}
|
|
||||||
|
|
||||||
fprintf (Gbl.F.Out,"</div>");
|
|
||||||
|
|
||||||
/* End right container */
|
/* End right container */
|
||||||
fprintf (Gbl.F.Out,"</div>");
|
fprintf (Gbl.F.Out,"</div>");
|
||||||
}
|
}
|
||||||
|
@ -3533,9 +3594,10 @@ static void Gam_ShowMatchStatusForStd (struct Match *Match)
|
||||||
Gam_ShowMatchTitleAndPlayers (Match);
|
Gam_ShowMatchTitleAndPlayers (Match);
|
||||||
|
|
||||||
/***** Bottom row *****/
|
/***** Bottom row *****/
|
||||||
fprintf (Gbl.F.Out,"<div class=\"MATCH_BOTTOM\">");
|
|
||||||
if (!Match->Status.Finished)
|
if (!Match->Status.Finished)
|
||||||
{
|
{
|
||||||
|
fprintf (Gbl.F.Out,"<div class=\"MATCH_BOTTOM\">");
|
||||||
|
|
||||||
/***** Update players ******/
|
/***** Update players ******/
|
||||||
Gam_RegisterMeAsPlayerInMatch (Match->MchCod);
|
Gam_RegisterMeAsPlayerInMatch (Match->MchCod);
|
||||||
|
|
||||||
|
@ -3551,8 +3613,9 @@ static void Gam_ShowMatchStatusForStd (struct Match *Match)
|
||||||
Cfg_URL_ICON_PUBLIC,
|
Cfg_URL_ICON_PUBLIC,
|
||||||
Txt_Please_wait_,
|
Txt_Please_wait_,
|
||||||
Txt_Please_wait_);
|
Txt_Please_wait_);
|
||||||
|
|
||||||
|
fprintf (Gbl.F.Out,"</div>");
|
||||||
}
|
}
|
||||||
fprintf (Gbl.F.Out,"</div>");
|
|
||||||
|
|
||||||
/* End right container */
|
/* End right container */
|
||||||
fprintf (Gbl.F.Out,"</div>");
|
fprintf (Gbl.F.Out,"</div>");
|
||||||
|
@ -3565,12 +3628,16 @@ static void Gam_ShowMatchStatusForStd (struct Match *Match)
|
||||||
static void Gam_ShowLeftColumnTch (struct Match *Match)
|
static void Gam_ShowLeftColumnTch (struct Match *Match)
|
||||||
{
|
{
|
||||||
extern const char *Txt_End;
|
extern const char *Txt_End;
|
||||||
|
extern const char *Txt_Stem;
|
||||||
|
extern const char *Txt_Previous_QUESTION;
|
||||||
|
extern const char *Txt_Start;
|
||||||
extern const char *Txt_Next_QUESTION;
|
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_Answers;
|
||||||
extern const char *Txt_Start;
|
extern const char *Txt_Start;
|
||||||
extern const char *Txt_Resume;
|
extern const char *Txt_Resume;
|
||||||
unsigned NxtQstInd;
|
unsigned PrvQstInd; // Previous question index
|
||||||
|
unsigned NxtQstInd; // Next question index
|
||||||
unsigned NumQsts;
|
unsigned NumQsts;
|
||||||
unsigned NumAnswerers;
|
unsigned NumAnswerers;
|
||||||
|
|
||||||
|
@ -3589,9 +3656,44 @@ static void Gam_ShowLeftColumnTch (struct Match *Match)
|
||||||
fprintf (Gbl.F.Out,"%u/%u",Match->Status.QstInd,NumQsts);
|
fprintf (Gbl.F.Out,"%u/%u",Match->Status.QstInd,NumQsts);
|
||||||
fprintf (Gbl.F.Out,"</div>");
|
fprintf (Gbl.F.Out,"</div>");
|
||||||
|
|
||||||
/***** Button *****/
|
/***** Buttons *****/
|
||||||
fprintf (Gbl.F.Out,"<div class=\"MATCH_TCH_NXT_CONTAINER\">"
|
/* Start buttons container */
|
||||||
"<div class=\"MATCH_TCH_CONTINUE_CONTAINER\">");
|
fprintf (Gbl.F.Out,"<div class=\"MATCH_BUTTONS_CONTAINER\">");
|
||||||
|
|
||||||
|
/* Left button */
|
||||||
|
fprintf (Gbl.F.Out,"<div class=\"MATCH_BUTTON_RIGHT_CONTAINER\">");
|
||||||
|
if (!Match->Status.Finished) // Not finished
|
||||||
|
{
|
||||||
|
if (Match->Status.BeingPlayed)
|
||||||
|
{
|
||||||
|
/* Put button to go backward */
|
||||||
|
if (Match->Status.ShowingAnswers)
|
||||||
|
/* Put button to start current question */
|
||||||
|
Gam_PutBigButton (ActCurMchTch,Match->MchCod,
|
||||||
|
"step-backward.svg",Txt_Stem);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* Get index of the previous question */
|
||||||
|
PrvQstInd = Gam_GetPrevQuestionIndexInGame (Match->GamCod,
|
||||||
|
Match->Status.QstInd);
|
||||||
|
if (PrvQstInd) // There is a previous question
|
||||||
|
/* Put button to show previous question */
|
||||||
|
Gam_PutBigButton (ActPrvMchTch,Match->MchCod,
|
||||||
|
"step-backward.svg",Txt_Previous_QUESTION);
|
||||||
|
else // There is not a previous question
|
||||||
|
/* Put button to resume match before first question */
|
||||||
|
Gam_PutBigButton (ActPrvMchTch,Match->MchCod,
|
||||||
|
"step-backward.svg",Txt_Start);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else // Not being played
|
||||||
|
/* Put button to close browser tab */
|
||||||
|
Gam_PutBigButtonClose ();
|
||||||
|
}
|
||||||
|
fprintf (Gbl.F.Out,"</div>");
|
||||||
|
|
||||||
|
/* Right button */
|
||||||
|
fprintf (Gbl.F.Out,"<div class=\"MATCH_BUTTON_RIGHT_CONTAINER\">");
|
||||||
if (Match->Status.Finished)
|
if (Match->Status.Finished)
|
||||||
/* Put button to close browser tab */
|
/* Put button to close browser tab */
|
||||||
Gam_PutBigButtonClose ();
|
Gam_PutBigButtonClose ();
|
||||||
|
@ -3615,7 +3717,7 @@ static void Gam_ShowLeftColumnTch (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,
|
||||||
"list.svg",Txt_Answers);
|
"step-forward.svg",Txt_Answers);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
/* Put button to start / resume match */
|
/* Put button to start / resume match */
|
||||||
|
@ -3624,8 +3726,10 @@ static void Gam_ShowLeftColumnTch (struct Match *Match)
|
||||||
"play.svg",
|
"play.svg",
|
||||||
Match->Status.QstInd == 0 ? Txt_Start :
|
Match->Status.QstInd == 0 ? Txt_Start :
|
||||||
Txt_Resume);
|
Txt_Resume);
|
||||||
fprintf (Gbl.F.Out,"</div>"
|
fprintf (Gbl.F.Out,"</div>");
|
||||||
"</div>");
|
|
||||||
|
/* End buttons container */
|
||||||
|
fprintf (Gbl.F.Out,"</div>");
|
||||||
|
|
||||||
/***** Write number of users who have answered *****/
|
/***** Write number of users who have answered *****/
|
||||||
if (!Match->Status.Finished &&
|
if (!Match->Status.Finished &&
|
||||||
|
@ -3668,14 +3772,23 @@ static void Gam_ShowLeftColumnStd (struct Match *Match)
|
||||||
fprintf (Gbl.F.Out,"%u/%u",Match->Status.QstInd,NumQsts);
|
fprintf (Gbl.F.Out,"%u/%u",Match->Status.QstInd,NumQsts);
|
||||||
fprintf (Gbl.F.Out,"</div>");
|
fprintf (Gbl.F.Out,"</div>");
|
||||||
|
|
||||||
/***** Button *****/
|
/***** Buttons *****/
|
||||||
fprintf (Gbl.F.Out,"<div class=\"MATCH_TCH_NXT_CONTAINER\">"
|
/* Start buttons container */
|
||||||
"<div class=\"MATCH_TCH_CONTINUE_CONTAINER\">");
|
fprintf (Gbl.F.Out,"<div class=\"MATCH_BUTTONS_CONTAINER\">");
|
||||||
|
|
||||||
|
/* Left button */
|
||||||
|
fprintf (Gbl.F.Out,"<div class=\"MATCH_BUTTON_LEFT_CONTAINER\">"
|
||||||
|
"</div>");
|
||||||
|
|
||||||
|
/* Right button */
|
||||||
|
fprintf (Gbl.F.Out,"<div class=\"MATCH_BUTTON_RIGHT_CONTAINER\">");
|
||||||
if (Match->Status.Finished)
|
if (Match->Status.Finished)
|
||||||
/* Put button to close browser tab */
|
/* Put button to close browser tab */
|
||||||
Gam_PutBigButtonClose ();
|
Gam_PutBigButtonClose ();
|
||||||
fprintf (Gbl.F.Out,"</div>"
|
fprintf (Gbl.F.Out,"</div>");
|
||||||
"</div>");
|
|
||||||
|
/* End buttons container */
|
||||||
|
fprintf (Gbl.F.Out,"</div>");
|
||||||
|
|
||||||
/***** End left container *****/
|
/***** End left container *****/
|
||||||
fprintf (Gbl.F.Out,"</div>");
|
fprintf (Gbl.F.Out,"</div>");
|
||||||
|
@ -3735,6 +3848,8 @@ static void Gam_ShowQuestionAndAnswersTch (struct Match *Match)
|
||||||
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)
|
||||||
|
|
||||||
|
fprintf (Gbl.F.Out,"<div class=\"MATCH_BOTTOM\">");
|
||||||
|
|
||||||
/* Write stem (row[1]) */
|
/* Write stem (row[1]) */
|
||||||
Tst_WriteQstStem (row[1],"MATCH_TCH_QST");
|
Tst_WriteQstStem (row[1],"MATCH_TCH_QST");
|
||||||
|
|
||||||
|
@ -3754,6 +3869,8 @@ 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>");
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -3772,8 +3889,6 @@ static void Gam_ShowQuestionAndAnswersStd (struct Match *Match)
|
||||||
bool ErrorInIndex = false;
|
bool ErrorInIndex = false;
|
||||||
|
|
||||||
/***** Show question *****/
|
/***** Show question *****/
|
||||||
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)
|
||||||
{
|
{
|
||||||
|
@ -3864,8 +3979,6 @@ static void Gam_ShowQuestionAndAnswersStd (struct Match *Match)
|
||||||
else
|
else
|
||||||
Ale_ShowAlert (Ale_ERROR,"Type of answer not valid in a game.");
|
Ale_ShowAlert (Ale_ERROR,"Type of answer not valid in a game.");
|
||||||
}
|
}
|
||||||
|
|
||||||
fprintf (Gbl.F.Out,"</div>");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -3885,7 +3998,7 @@ static void Gam_PutBigButton (Act_Action_t NextAction,long MchCod,
|
||||||
and not lose clicks due to refresh */
|
and not lose clicks due to refresh */
|
||||||
fprintf (Gbl.F.Out,"<a href=\"\"");
|
fprintf (Gbl.F.Out,"<a href=\"\"");
|
||||||
fprintf (Gbl.F.Out," title=\"%s\"",Txt);
|
fprintf (Gbl.F.Out," title=\"%s\"",Txt);
|
||||||
fprintf (Gbl.F.Out," class=\"%s\"","MATCH_TCH_CONTINUE ICO_HIGHLIGHT");
|
fprintf (Gbl.F.Out," class=\"%s\"","MATCH_BUTTON ICO_HIGHLIGHT");
|
||||||
fprintf (Gbl.F.Out," onmousedown=\"");
|
fprintf (Gbl.F.Out," onmousedown=\"");
|
||||||
fprintf (Gbl.F.Out,"document.getElementById('%s').submit();"
|
fprintf (Gbl.F.Out,"document.getElementById('%s').submit();"
|
||||||
"return false;\">",
|
"return false;\">",
|
||||||
|
@ -3913,7 +4026,7 @@ static void Gam_PutBigButtonClose (void)
|
||||||
and not lose clicks due to refresh */
|
and not lose clicks due to refresh */
|
||||||
fprintf (Gbl.F.Out,"<a href=\"\"");
|
fprintf (Gbl.F.Out,"<a href=\"\"");
|
||||||
fprintf (Gbl.F.Out," title=\"%s\"",Txt_Close);
|
fprintf (Gbl.F.Out," title=\"%s\"",Txt_Close);
|
||||||
fprintf (Gbl.F.Out," class=\"%s\"","MATCH_TCH_CONTINUE ICO_HIGHLIGHT");
|
fprintf (Gbl.F.Out," class=\"%s\"","MATCH_BUTTON ICO_HIGHLIGHT");
|
||||||
fprintf (Gbl.F.Out," onmousedown=\"window.close();\"\">");
|
fprintf (Gbl.F.Out," onmousedown=\"window.close();\"\">");
|
||||||
fprintf (Gbl.F.Out,"<img src=\"%s/close.svg\""
|
fprintf (Gbl.F.Out,"<img src=\"%s/close.svg\""
|
||||||
" alt=\"%s\" title=\"%s\" class=\"ICO64x64\" />"
|
" alt=\"%s\" title=\"%s\" class=\"ICO64x64\" />"
|
||||||
|
@ -3946,7 +4059,7 @@ static void Gam_RemoveOldPlayers (void)
|
||||||
|
|
||||||
static void Gam_UpdateMatchAsBeingPlayed (long MchCod)
|
static void Gam_UpdateMatchAsBeingPlayed (long MchCod)
|
||||||
{
|
{
|
||||||
/***** Insert me as match player *****/
|
/***** Insert match as being played *****/
|
||||||
DB_QueryREPLACE ("can not set match as being played",
|
DB_QueryREPLACE ("can not set match as being played",
|
||||||
"REPLACE gam_mch_being_played (MchCod) VALUE (%ld)",
|
"REPLACE gam_mch_being_played (MchCod) VALUE (%ld)",
|
||||||
MchCod);
|
MchCod);
|
||||||
|
@ -4055,12 +4168,11 @@ void Gam_RefreshMatchTch (void)
|
||||||
Match.MchCod = Gbl.Games.MchCodBeingPlayed;
|
Match.MchCod = Gbl.Games.MchCodBeingPlayed;
|
||||||
Gam_GetDataOfMatchByCod (&Match);
|
Gam_GetDataOfMatchByCod (&Match);
|
||||||
|
|
||||||
|
/***** Update match status in database *****/
|
||||||
|
Gam_UpdateMatchStatusInDB (&Match);
|
||||||
|
|
||||||
/***** Show current match status *****/
|
/***** Show current match status *****/
|
||||||
Gam_ShowMatchStatusForTch (&Match);
|
Gam_ShowMatchStatusForTch (&Match);
|
||||||
|
|
||||||
/***** Update match as being played *****/
|
|
||||||
if (Match.Status.BeingPlayed)
|
|
||||||
Gam_UpdateMatchAsBeingPlayed (Match.MchCod);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
|
@ -123,6 +123,7 @@ void Gam_RequestNewMatchTch (void);
|
||||||
void Gam_CreateNewMatchTch (void);
|
void Gam_CreateNewMatchTch (void);
|
||||||
void Gam_RequestStartResumeMatchTch (void);
|
void Gam_RequestStartResumeMatchTch (void);
|
||||||
void Gam_ResumeMatchTch (void);
|
void Gam_ResumeMatchTch (void);
|
||||||
|
void Gam_PrevStatusMatchTch (void);
|
||||||
void Gam_NextStatusMatchTch (void);
|
void Gam_NextStatusMatchTch (void);
|
||||||
|
|
||||||
void Gam_ShowFinishedMatchResults (void);
|
void Gam_ShowFinishedMatchResults (void);
|
||||||
|
|
|
@ -684,6 +684,7 @@ static void Lay_WriteScriptInit (void)
|
||||||
break;
|
break;
|
||||||
case ActNewMchTch:
|
case ActNewMchTch:
|
||||||
case ActResMchTch:
|
case ActResMchTch:
|
||||||
|
case ActPrvMchTch:
|
||||||
case ActCurMchTch:
|
case ActCurMchTch:
|
||||||
case ActNxtMchTch:
|
case ActNxtMchTch:
|
||||||
case ActPlyMchStd:
|
case ActPlyMchStd:
|
||||||
|
@ -804,6 +805,7 @@ static void Lay_WriteScriptParamsAJAX (void)
|
||||||
/* Parameters related with match refreshing (for teachers) */
|
/* Parameters related with match refreshing (for teachers) */
|
||||||
case ActNewMchTch:
|
case ActNewMchTch:
|
||||||
case ActResMchTch:
|
case ActResMchTch:
|
||||||
|
case ActPrvMchTch:
|
||||||
case ActCurMchTch:
|
case ActCurMchTch:
|
||||||
case ActNxtMchTch:
|
case ActNxtMchTch:
|
||||||
fprintf (Gbl.F.Out,"var RefreshParamNxtActGam = \"act=%ld\";\n"
|
fprintf (Gbl.F.Out,"var RefreshParamNxtActGam = \"act=%ld\";\n"
|
||||||
|
|
21
swad_text.c
21
swad_text.c
|
@ -29668,6 +29668,27 @@ const char *Txt_Presents =
|
||||||
"Presentes";
|
"Presentes";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
const char *Txt_Previous_QUESTION =
|
||||||
|
#if L==1 // ca
|
||||||
|
"Anterior";
|
||||||
|
#elif L==2 // de
|
||||||
|
"Vorherige";
|
||||||
|
#elif L==3 // en
|
||||||
|
"Previous";
|
||||||
|
#elif L==4 // es
|
||||||
|
"Anterior";
|
||||||
|
#elif L==5 // fr
|
||||||
|
"Précédente";
|
||||||
|
#elif L==6 // gn
|
||||||
|
"Anterior"; // Okoteve traducción
|
||||||
|
#elif L==7 // it
|
||||||
|
"Precedente";
|
||||||
|
#elif L==8 // pl
|
||||||
|
"Poprzednie";
|
||||||
|
#elif L==9 // pt
|
||||||
|
"Anterior";
|
||||||
|
#endif
|
||||||
|
|
||||||
const char *Txt_Print =
|
const char *Txt_Print =
|
||||||
#if L==1 // ca
|
#if L==1 // ca
|
||||||
"Imprimir";
|
"Imprimir";
|
||||||
|
|
Loading…
Reference in New Issue