mirror of
https://github.com/acanas/swad-core.git
synced 2024-09-24 00:01:03 +02:00
Version19.39
This commit is contained in:
parent
1ed5e35ce4
commit
e6309124ab
|
@ -4,7 +4,7 @@
|
|||
SWAD (Shared Workspace At a Distance),
|
||||
is a web platform developed at the University of Granada (Spain),
|
||||
and used to support university teaching.
|
||||
Copyright (C) 1999-2019 Antonio Ca<EFBFBD>as-Vargas
|
||||
Copyright (C) 1999-2019 Antonio Cañas-Vargas
|
||||
University of Granada (SPAIN) (acanas@ugr.es)
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
|
@ -28,6 +28,41 @@ var Gbl_HTMLContent;
|
|||
// Global variable used to call SWAD via AJAX
|
||||
var ActionAJAX;
|
||||
|
||||
/*****************************************************************************/
|
||||
/************************** Handle match keystrokes **************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
function handleMatchKeys(event) {
|
||||
switch (event.key) {
|
||||
case 'PageUp':
|
||||
case 'ArrowLeft':
|
||||
case 'ArrowUp':
|
||||
submitForm('backward');
|
||||
break;
|
||||
case ' ': // Space
|
||||
submitForm('play_pause');
|
||||
break;
|
||||
case 'PageDown':
|
||||
case 'ArrowRight':
|
||||
case 'ArrowDown':
|
||||
submitForm('forward');
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/************************ Submit a form given its id *************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
function submitForm(FormId) {
|
||||
var Form = document.getElementById(FormId);
|
||||
|
||||
if (Form)
|
||||
Form.submit();
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/*************** Write a date-time in client local time **********************/
|
||||
/*****************************************************************************/
|
|
@ -614,8 +614,7 @@ Assessment:
|
|||
464. ActNewMch Create a new match showing first question in a new browser tab
|
||||
465. ActResMch Resume an unfinished match showing current question in a new browser tab
|
||||
466. ActBckMch Go back when playing a match
|
||||
467. ActPlyMch Play current match (go from pause to play)
|
||||
468. ActPauMch Pause current match (go from play to pause)
|
||||
467. ActPlyPauMch Play/pause current match
|
||||
469. ActFwdMch Go forward when playing a match
|
||||
471. ActChgVisResMchQst Change visibility of question results when playing a match
|
||||
470. ActRefMchTch Refresh current question when playing a match (as teacher)
|
||||
|
@ -2163,8 +2162,7 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
|
|||
/* ActNewMch */{1671,-1,TabUnk,ActSeeAllGam ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_NEW_TAB,Mch_CreateNewMatchTch ,Mch_ResumeMatch ,NULL},
|
||||
/* ActResMch */{1785,-1,TabUnk,ActSeeAllGam ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_NEW_TAB,Mch_GetMatchBeingPlayed ,Mch_ResumeMatch ,NULL},
|
||||
/* ActBckMch */{1790,-1,TabUnk,ActSeeAllGam ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_2ND_TAB,Mch_GetMatchBeingPlayed ,Mch_BackMatch ,NULL},
|
||||
/* ActPlyMch */{1789,-1,TabUnk,ActSeeAllGam ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_2ND_TAB,Mch_GetMatchBeingPlayed ,Mch_PlayMatch ,NULL},
|
||||
/* ActPauMch */{1791,-1,TabUnk,ActSeeAllGam ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_2ND_TAB,Mch_GetMatchBeingPlayed ,Mch_PauseMatch ,NULL},
|
||||
/* ActPlyPauMch */{1789,-1,TabUnk,ActSeeAllGam ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_2ND_TAB,Mch_GetMatchBeingPlayed ,Mch_PlayMatch ,NULL},
|
||||
/* ActFwdMch */{1672,-1,TabUnk,ActSeeAllGam ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_2ND_TAB,Mch_GetMatchBeingPlayed ,Mch_ForwardMatch ,NULL},
|
||||
/* ActChgVisResMchQst*/{1794,-1,TabUnk,ActSeeAllGam ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_2ND_TAB,Mch_GetMatchBeingPlayed ,Mch_ToggleVisibilResultsMchQst ,NULL},
|
||||
/* ActRefMchTch */{1788,-1,TabUnk,ActSeeAllGam ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_AJAX_RFRESH,Mch_GetMatchBeingPlayed ,Mch_RefreshMatchTch ,NULL},
|
||||
|
@ -5019,9 +5017,9 @@ Act_Action_t Act_FromActCodToAction[1 + Act_MAX_ACTION_COD] = // Do not reuse un
|
|||
-1, // #1786 (obsolete action)
|
||||
ActCreMyAcc, // #1787
|
||||
ActRefMchTch, // #1788
|
||||
ActPlyMch, // #1789
|
||||
ActPlyPauMch, // #1789
|
||||
ActBckMch, // #1790
|
||||
ActPauMch, // #1791
|
||||
-1, // #1791 (obsolete action)
|
||||
-1, // #1792 (obsolete action)
|
||||
-1, // #1793 (obsolete action)
|
||||
ActChgVisResMchQst, // #1794
|
||||
|
|
111
swad_action.h
111
swad_action.h
|
@ -64,7 +64,7 @@ typedef enum
|
|||
|
||||
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 + 177 + 437 + 176 + 169 + 16 + 68)
|
||||
#define Act_NUM_ACTIONS (1 + 4 + 64 + 38 + 12 + 42 + 36 + 19 + 110 + 176 + 437 + 176 + 169 + 16 + 68)
|
||||
|
||||
#define Act_MAX_ACTION_COD 1801
|
||||
|
||||
|
@ -613,67 +613,66 @@ typedef signed int Act_Action_t; // Must be a signed type, because -1 is used to
|
|||
#define ActNewMch (ActChgCrsTT1stDay + 120)
|
||||
#define ActResMch (ActChgCrsTT1stDay + 121)
|
||||
#define ActBckMch (ActChgCrsTT1stDay + 122)
|
||||
#define ActPlyMch (ActChgCrsTT1stDay + 123)
|
||||
#define ActPauMch (ActChgCrsTT1stDay + 124)
|
||||
#define ActFwdMch (ActChgCrsTT1stDay + 125)
|
||||
#define ActChgVisResMchQst (ActChgCrsTT1stDay + 126)
|
||||
#define ActRefMchTch (ActChgCrsTT1stDay + 127)
|
||||
#define ActPlyPauMch (ActChgCrsTT1stDay + 123)
|
||||
#define ActFwdMch (ActChgCrsTT1stDay + 124)
|
||||
#define ActChgVisResMchQst (ActChgCrsTT1stDay + 125)
|
||||
#define ActRefMchTch (ActChgCrsTT1stDay + 126)
|
||||
|
||||
#define ActJoiMch (ActChgCrsTT1stDay + 128)
|
||||
#define ActAnsMchQstStd (ActChgCrsTT1stDay + 129)
|
||||
#define ActRefMchStd (ActChgCrsTT1stDay + 130)
|
||||
#define ActJoiMch (ActChgCrsTT1stDay + 127)
|
||||
#define ActAnsMchQstStd (ActChgCrsTT1stDay + 128)
|
||||
#define ActRefMchStd (ActChgCrsTT1stDay + 129)
|
||||
|
||||
#define ActReqSeeMyMchRes (ActChgCrsTT1stDay + 131)
|
||||
#define ActSeeMyMchRes (ActChgCrsTT1stDay + 132)
|
||||
#define ActSeeOneMchResMe (ActChgCrsTT1stDay + 133)
|
||||
#define ActReqSeeMyMchRes (ActChgCrsTT1stDay + 130)
|
||||
#define ActSeeMyMchRes (ActChgCrsTT1stDay + 131)
|
||||
#define ActSeeOneMchResMe (ActChgCrsTT1stDay + 132)
|
||||
|
||||
#define ActReqSeeUsrMchRes (ActChgCrsTT1stDay + 134)
|
||||
#define ActSeeUsrMchRes (ActChgCrsTT1stDay + 135)
|
||||
#define ActSeeOneMchResOth (ActChgCrsTT1stDay + 136)
|
||||
#define ActChgVisResMchUsr (ActChgCrsTT1stDay + 137)
|
||||
#define ActReqSeeUsrMchRes (ActChgCrsTT1stDay + 133)
|
||||
#define ActSeeUsrMchRes (ActChgCrsTT1stDay + 134)
|
||||
#define ActSeeOneMchResOth (ActChgCrsTT1stDay + 135)
|
||||
#define ActChgVisResMchUsr (ActChgCrsTT1stDay + 136)
|
||||
|
||||
#define ActFrmNewGam (ActChgCrsTT1stDay + 138)
|
||||
#define ActEdiOneGam (ActChgCrsTT1stDay + 139)
|
||||
#define ActNewGam (ActChgCrsTT1stDay + 140)
|
||||
#define ActChgGam (ActChgCrsTT1stDay + 141)
|
||||
#define ActReqRemGam (ActChgCrsTT1stDay + 142)
|
||||
#define ActRemGam (ActChgCrsTT1stDay + 143)
|
||||
#define ActHidGam (ActChgCrsTT1stDay + 144)
|
||||
#define ActShoGam (ActChgCrsTT1stDay + 145)
|
||||
#define ActAddOneGamQst (ActChgCrsTT1stDay + 146)
|
||||
#define ActGamLstTstQst (ActChgCrsTT1stDay + 147)
|
||||
#define ActAddTstQstToGam (ActChgCrsTT1stDay + 148)
|
||||
#define ActReqRemGamQst (ActChgCrsTT1stDay + 149)
|
||||
#define ActRemGamQst (ActChgCrsTT1stDay + 150)
|
||||
#define ActUp_GamQst (ActChgCrsTT1stDay + 151)
|
||||
#define ActDwnGamQst (ActChgCrsTT1stDay + 152)
|
||||
#define ActFrmNewGam (ActChgCrsTT1stDay + 137)
|
||||
#define ActEdiOneGam (ActChgCrsTT1stDay + 138)
|
||||
#define ActNewGam (ActChgCrsTT1stDay + 139)
|
||||
#define ActChgGam (ActChgCrsTT1stDay + 140)
|
||||
#define ActReqRemGam (ActChgCrsTT1stDay + 141)
|
||||
#define ActRemGam (ActChgCrsTT1stDay + 142)
|
||||
#define ActHidGam (ActChgCrsTT1stDay + 143)
|
||||
#define ActShoGam (ActChgCrsTT1stDay + 144)
|
||||
#define ActAddOneGamQst (ActChgCrsTT1stDay + 145)
|
||||
#define ActGamLstTstQst (ActChgCrsTT1stDay + 146)
|
||||
#define ActAddTstQstToGam (ActChgCrsTT1stDay + 147)
|
||||
#define ActReqRemGamQst (ActChgCrsTT1stDay + 148)
|
||||
#define ActRemGamQst (ActChgCrsTT1stDay + 149)
|
||||
#define ActUp_GamQst (ActChgCrsTT1stDay + 150)
|
||||
#define ActDwnGamQst (ActChgCrsTT1stDay + 151)
|
||||
|
||||
#define ActSeeSvy (ActChgCrsTT1stDay + 153)
|
||||
#define ActAnsSvy (ActChgCrsTT1stDay + 154)
|
||||
#define ActFrmNewSvy (ActChgCrsTT1stDay + 155)
|
||||
#define ActEdiOneSvy (ActChgCrsTT1stDay + 156)
|
||||
#define ActNewSvy (ActChgCrsTT1stDay + 157)
|
||||
#define ActChgSvy (ActChgCrsTT1stDay + 158)
|
||||
#define ActReqRemSvy (ActChgCrsTT1stDay + 159)
|
||||
#define ActRemSvy (ActChgCrsTT1stDay + 160)
|
||||
#define ActReqRstSvy (ActChgCrsTT1stDay + 161)
|
||||
#define ActRstSvy (ActChgCrsTT1stDay + 162)
|
||||
#define ActHidSvy (ActChgCrsTT1stDay + 163)
|
||||
#define ActShoSvy (ActChgCrsTT1stDay + 164)
|
||||
#define ActEdiOneSvyQst (ActChgCrsTT1stDay + 165)
|
||||
#define ActRcvSvyQst (ActChgCrsTT1stDay + 166)
|
||||
#define ActReqRemSvyQst (ActChgCrsTT1stDay + 167)
|
||||
#define ActRemSvyQst (ActChgCrsTT1stDay + 168)
|
||||
#define ActSeeSvy (ActChgCrsTT1stDay + 152)
|
||||
#define ActAnsSvy (ActChgCrsTT1stDay + 153)
|
||||
#define ActFrmNewSvy (ActChgCrsTT1stDay + 154)
|
||||
#define ActEdiOneSvy (ActChgCrsTT1stDay + 155)
|
||||
#define ActNewSvy (ActChgCrsTT1stDay + 156)
|
||||
#define ActChgSvy (ActChgCrsTT1stDay + 157)
|
||||
#define ActReqRemSvy (ActChgCrsTT1stDay + 158)
|
||||
#define ActRemSvy (ActChgCrsTT1stDay + 159)
|
||||
#define ActReqRstSvy (ActChgCrsTT1stDay + 160)
|
||||
#define ActRstSvy (ActChgCrsTT1stDay + 161)
|
||||
#define ActHidSvy (ActChgCrsTT1stDay + 162)
|
||||
#define ActShoSvy (ActChgCrsTT1stDay + 163)
|
||||
#define ActEdiOneSvyQst (ActChgCrsTT1stDay + 164)
|
||||
#define ActRcvSvyQst (ActChgCrsTT1stDay + 165)
|
||||
#define ActReqRemSvyQst (ActChgCrsTT1stDay + 166)
|
||||
#define ActRemSvyQst (ActChgCrsTT1stDay + 167)
|
||||
|
||||
#define ActSeeOneExaAnn (ActChgCrsTT1stDay + 169)
|
||||
#define ActSeeDatExaAnn (ActChgCrsTT1stDay + 170)
|
||||
#define ActEdiExaAnn (ActChgCrsTT1stDay + 171)
|
||||
#define ActRcvExaAnn (ActChgCrsTT1stDay + 172)
|
||||
#define ActPrnExaAnn (ActChgCrsTT1stDay + 173)
|
||||
#define ActReqRemExaAnn (ActChgCrsTT1stDay + 174)
|
||||
#define ActRemExaAnn (ActChgCrsTT1stDay + 175)
|
||||
#define ActHidExaAnn (ActChgCrsTT1stDay + 176)
|
||||
#define ActShoExaAnn (ActChgCrsTT1stDay + 177)
|
||||
#define ActSeeOneExaAnn (ActChgCrsTT1stDay + 168)
|
||||
#define ActSeeDatExaAnn (ActChgCrsTT1stDay + 169)
|
||||
#define ActEdiExaAnn (ActChgCrsTT1stDay + 170)
|
||||
#define ActRcvExaAnn (ActChgCrsTT1stDay + 171)
|
||||
#define ActPrnExaAnn (ActChgCrsTT1stDay + 172)
|
||||
#define ActReqRemExaAnn (ActChgCrsTT1stDay + 173)
|
||||
#define ActRemExaAnn (ActChgCrsTT1stDay + 174)
|
||||
#define ActHidExaAnn (ActChgCrsTT1stDay + 175)
|
||||
#define ActShoExaAnn (ActChgCrsTT1stDay + 176)
|
||||
|
||||
/*****************************************************************************/
|
||||
/******************************** Files tab **********************************/
|
||||
|
|
|
@ -487,13 +487,19 @@ enscript -2 --landscape --color --file-align=2 --highlight --line-numbers -o - *
|
|||
En OpenSWAD:
|
||||
ps2pdf source.ps destination.pdf
|
||||
*/
|
||||
#define Log_PLATFORM_VERSION "SWAD 19.38.1 (2019-10-17)"
|
||||
#define CSS_FILE "swad19.38.1.css"
|
||||
#define JS_FILE "swad19.35.js"
|
||||
#define Log_PLATFORM_VERSION "SWAD 19.39 (2019-10-17)"
|
||||
#define CSS_FILE "swad19.39.css"
|
||||
#define JS_FILE "swad19.39.js"
|
||||
/*
|
||||
// TODO: Perico: poner un candado de bloqueo de creación/edición de proyectos (por ejemplo en asignaturas obsoletas)
|
||||
// TODO: Hacer un nuevo rol en los TFG: tutor externo (profesor de áreas no vinculadas con el centro, profesionales de empresas, etc.)
|
||||
|
||||
Version 19.39: Oct 17, 2019 Keyboard/presenter is allowed for playing matches. (245657 lines)
|
||||
2 changes necessary in database:
|
||||
UPDATE actions SET Obsolete='Y' WHERE ActCod=1791;
|
||||
UPDATE actions SET Txt='Lugar/pausar partida' WHERE ActCod='1789' AND Language='es';
|
||||
|
||||
Version 19.38.2: Oct 17, 2019 Some CSS styles converted to CSS classes. (? lines)
|
||||
Version 19.38.1: Oct 17, 2019 Some CSS styles converted to CSS classes. (245636 lines)
|
||||
Version 19.38: Oct 17, 2019 Filter to select faulty/faltless projects. (245624 lines)
|
||||
Version 19.37: Oct 16, 2019 New filter to select faulty/faltless projects. Not yet filtered. (245543 lines)
|
||||
|
|
|
@ -44,7 +44,7 @@ extern struct Globals Gbl;
|
|||
should be large enough to prevent an IP from being banned
|
||||
due to automatic refresh when the user is viewing the last clicks. */
|
||||
#define Fw_CHECK_INTERVAL ((time_t)(10UL)) // Check clicks in the last 10 seconds
|
||||
#define Fw_MAX_CLICKS_IN_INTERVAL 50 // Maximum of 50 clicks allowed in 10 seconds
|
||||
#define Fw_MAX_CLICKS_IN_INTERVAL 100 // Maximum of 100 clicks allowed in 10 seconds
|
||||
|
||||
#define Fw_TIME_BANNED ((time_t)(60UL*60UL)) // Ban IP for 1 hour
|
||||
|
||||
|
|
|
@ -703,8 +703,7 @@ static void Lay_WriteScriptInit (void)
|
|||
case ActNewMch:
|
||||
case ActResMch:
|
||||
case ActBckMch:
|
||||
case ActPlyMch:
|
||||
case ActPauMch:
|
||||
case ActPlyPauMch:
|
||||
case ActFwdMch:
|
||||
case ActChgVisResMchQst:
|
||||
RefreshMatchTch = true;
|
||||
|
@ -763,6 +762,7 @@ static void Lay_WriteScriptParamsAJAX (void)
|
|||
fprintf (Gbl.F.Out,"<script type=\"text/javascript\">\n");
|
||||
|
||||
/***** Parameters with code of session and current course code *****/
|
||||
// Refresh parameters
|
||||
fprintf (Gbl.F.Out,"var RefreshParamIdSes = \"ses=%s\";\n"
|
||||
"var RefreshParamCrsCod = \"crs=%ld\";\n",
|
||||
Gbl.Session.Id,
|
||||
|
@ -770,6 +770,7 @@ static void Lay_WriteScriptParamsAJAX (void)
|
|||
|
||||
/***** Parameter to refresh connected users *****/
|
||||
if (Act_GetBrowserTab (Gbl.Action.Act) == Act_BRW_1ST_TAB)
|
||||
// Refresh parameter
|
||||
fprintf (Gbl.F.Out,"var RefreshParamNxtActCon = \"act=%ld\";\n",
|
||||
Act_GetActCod (ActRefCon));
|
||||
|
||||
|
@ -777,6 +778,7 @@ static void Lay_WriteScriptParamsAJAX (void)
|
|||
if (Gbl.FileBrowser.Type != Brw_UNKNOWN)
|
||||
/* In all the actions related to file browsers ==>
|
||||
put parameters used by AJAX */
|
||||
// Refresh parameters
|
||||
fprintf (Gbl.F.Out,"var RefreshParamExpand = \"act=%ld\";\n"
|
||||
"var RefreshParamContract = \"act=%ld\";\n",
|
||||
Act_GetActCod (Brw_GetActionExpand ()),
|
||||
|
@ -795,6 +797,7 @@ static void Lay_WriteScriptParamsAJAX (void)
|
|||
case ActRemSocComGbl:
|
||||
/* In all the actions related to view or editing global timeline ==>
|
||||
put parameters used by AJAX */
|
||||
// Refresh parameters
|
||||
fprintf (Gbl.F.Out,"var RefreshParamNxtActNewPub = \"act=%ld\";\n"
|
||||
"var RefreshParamNxtActOldPub = \"act=%ld\";\n"
|
||||
"var RefreshParamWhichUsrs = \"WhichUsrs=%u\";\n",
|
||||
|
@ -817,6 +820,7 @@ static void Lay_WriteScriptParamsAJAX (void)
|
|||
if (!Gbl.Usrs.Other.UsrDat.Nickname[0])
|
||||
Nck_GetNicknameFromUsrCod (Gbl.Usrs.Other.UsrDat.UsrCod,
|
||||
Gbl.Usrs.Other.UsrDat.Nickname);
|
||||
// Refresh parameters
|
||||
fprintf (Gbl.F.Out,"var RefreshParamNxtActOldPub = \"act=%ld\";\n"
|
||||
"var RefreshParamUsr = \"OtherUsrCod=%s\";\n",
|
||||
Act_GetActCod (ActRefOldSocPubUsr),
|
||||
|
@ -825,6 +829,7 @@ static void Lay_WriteScriptParamsAJAX (void)
|
|||
/* Parameters related with match refreshing (for students) */
|
||||
case ActJoiMch:
|
||||
case ActAnsMchQstStd:
|
||||
// Refresh parameters
|
||||
fprintf (Gbl.F.Out,"var RefreshParamNxtActMch = \"act=%ld\";\n"
|
||||
"var RefreshParamMchCod = \"MchCod=%ld\";\n",
|
||||
Act_GetActCod (ActRefMchStd),
|
||||
|
@ -834,10 +839,12 @@ static void Lay_WriteScriptParamsAJAX (void)
|
|||
case ActNewMch:
|
||||
case ActResMch:
|
||||
case ActBckMch:
|
||||
case ActPlyMch:
|
||||
case ActPauMch:
|
||||
case ActPlyPauMch:
|
||||
case ActFwdMch:
|
||||
case ActChgVisResMchQst:
|
||||
// Handle keys in keyboard/presenter
|
||||
fprintf (Gbl.F.Out,"document.addEventListener(\"keydown\",handleMatchKeys);\n");
|
||||
// Refresh parameters
|
||||
fprintf (Gbl.F.Out,"var RefreshParamNxtActMch = \"act=%ld\";\n"
|
||||
"var RefreshParamMchCod = \"MchCod=%ld\";\n",
|
||||
Act_GetActCod (ActRefMchTch),
|
||||
|
@ -845,6 +852,7 @@ static void Lay_WriteScriptParamsAJAX (void)
|
|||
break;
|
||||
/* Parameter related with clicks refreshing */
|
||||
case ActLstClk:
|
||||
// Refresh parameter
|
||||
fprintf (Gbl.F.Out,"var RefreshParamNxtActLstClk = \"act=%ld\";\n",
|
||||
Act_GetActCod (ActRefLstClk));
|
||||
break;
|
||||
|
|
67
swad_match.c
67
swad_match.c
|
@ -165,8 +165,8 @@ static void Mch_ShowMatchPodium (struct Match *Match);
|
|||
static void Mch_PutParamNumOpt (unsigned NumOpt);
|
||||
static unsigned Mch_GetParamNumOpt (void);
|
||||
|
||||
static void Mch_PutBigButton (Act_Action_t NextAction,long MchCod,
|
||||
const char *Icon,const char *Txt);
|
||||
static void Mch_PutBigButton (Act_Action_t NextAction,const char *Id,
|
||||
long MchCod,const char *Icon,const char *Txt);
|
||||
static void Mch_PutBigButtonOff (const char *Icon);
|
||||
static void Mch_PutBigButtonClose (void);
|
||||
|
||||
|
@ -1717,35 +1717,6 @@ static void Mch_GetElapsedTime (unsigned NumRows,MYSQL_RES *mysql_res,
|
|||
Time->Second = 0;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/********************* Pause current match (by a teacher) ********************/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Mch_PauseMatch (void)
|
||||
{
|
||||
struct Match Match;
|
||||
|
||||
/***** Remove old players.
|
||||
This function must be called by a teacher
|
||||
before getting match status. *****/
|
||||
Mch_RemoveOldPlayers ();
|
||||
|
||||
/***** Get data of the match from database *****/
|
||||
Match.MchCod = Gbl.Games.MchCodBeingPlayed;
|
||||
Mch_GetDataOfMatchByCod (&Match);
|
||||
|
||||
/***** Update status *****/
|
||||
Match.Status.Playing = false; // Pause match
|
||||
|
||||
/***** Update match status in database *****/
|
||||
Mch_UpdateMatchStatusInDB (&Match);
|
||||
|
||||
/***** Show current match status *****/
|
||||
fprintf (Gbl.F.Out,"<div id=\"match\" class=\"MATCH_CONT\">");
|
||||
Mch_ShowMatchStatusForTch (&Match);
|
||||
fprintf (Gbl.F.Out,"</div>");
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/** Show current match status (current question, answers...) (by a teacher) **/
|
||||
/*****************************************************************************/
|
||||
|
@ -1763,12 +1734,18 @@ void Mch_PlayMatch (void)
|
|||
Match.MchCod = Gbl.Games.MchCodBeingPlayed;
|
||||
Mch_GetDataOfMatchByCod (&Match);
|
||||
|
||||
/***** If not yet finished, update status *****/
|
||||
if (Match.Status.QstInd < Mch_AFTER_LAST_QUESTION) // Unfinished
|
||||
/***** Update status *****/
|
||||
if (Match.Status.Playing) // match is being played ==> pause it
|
||||
Match.Status.Playing = false; // Pause match
|
||||
else // match is paused ==> play it
|
||||
{
|
||||
if (Match.Status.QstInd == 0) // Match has been created, but it has not started
|
||||
Mch_SetMatchStatusToNext (&Match);
|
||||
Match.Status.Playing = true; // Start/resume match
|
||||
/* If unfinished, update status */
|
||||
if (Match.Status.QstInd < Mch_AFTER_LAST_QUESTION) // Unfinished
|
||||
{
|
||||
if (Match.Status.QstInd == 0) // Match has been created, but it has not started
|
||||
Mch_SetMatchStatusToNext (&Match);
|
||||
Match.Status.Playing = true; // Start/resume match
|
||||
}
|
||||
}
|
||||
|
||||
/***** Update match status in database *****/
|
||||
|
@ -2264,7 +2241,7 @@ static void Mch_PutMatchControlButtons (struct Match *Match)
|
|||
Mch_PutBigButtonClose ();
|
||||
else
|
||||
/* Put button to go back */
|
||||
Mch_PutBigButton (ActBckMch,Match->MchCod,
|
||||
Mch_PutBigButton (ActBckMch,"backward",Match->MchCod,
|
||||
Mch_ICON_PREVIOUS,Txt_Go_back);
|
||||
fprintf (Gbl.F.Out,"</div>");
|
||||
|
||||
|
@ -2272,15 +2249,13 @@ static void Mch_PutMatchControlButtons (struct Match *Match)
|
|||
fprintf (Gbl.F.Out,"<div class=\"MATCH_BUTTON_CENTER_CONTAINER\">");
|
||||
if (Match->Status.Playing) // Being played
|
||||
/* Put button to pause match */
|
||||
Mch_PutBigButton (ActPauMch,
|
||||
Match->MchCod,
|
||||
Mch_PutBigButton (ActPlyPauMch,"play_pause",Match->MchCod,
|
||||
Mch_ICON_PAUSE,Txt_Pause);
|
||||
else // Paused
|
||||
{
|
||||
if (Match->Status.QstInd < Mch_AFTER_LAST_QUESTION) // Not finished
|
||||
/* Put button to play match */
|
||||
Mch_PutBigButton (ActPlyMch,
|
||||
Match->MchCod,
|
||||
Mch_PutBigButton (ActPlyPauMch,"play_pause",Match->MchCod,
|
||||
Mch_ICON_PLAY,Match->Status.QstInd == 0 ? Txt_Start :
|
||||
Txt_Resume);
|
||||
else // Finished
|
||||
|
@ -2296,7 +2271,7 @@ static void Mch_PutMatchControlButtons (struct Match *Match)
|
|||
Mch_PutBigButtonClose ();
|
||||
else
|
||||
/* Put button to show answers */
|
||||
Mch_PutBigButton (ActFwdMch,Match->MchCod,
|
||||
Mch_PutBigButton (ActFwdMch,"forward",Match->MchCod,
|
||||
Mch_ICON_NEXT,Txt_Go_forward);
|
||||
fprintf (Gbl.F.Out,"</div>");
|
||||
|
||||
|
@ -2625,11 +2600,11 @@ static unsigned Mch_GetParamNumOpt (void)
|
|||
/*********************** Put a big button to do action ***********************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Mch_PutBigButton (Act_Action_t NextAction,long MchCod,
|
||||
const char *Icon,const char *Txt)
|
||||
static void Mch_PutBigButton (Act_Action_t NextAction,const char *Id,
|
||||
long MchCod,const char *Icon,const char *Txt)
|
||||
{
|
||||
/***** Start form *****/
|
||||
Frm_StartForm (NextAction);
|
||||
Frm_StartFormId (NextAction,Id);
|
||||
Mch_PutParamMchCod (MchCod);
|
||||
|
||||
/***** Put icon with link *****/
|
||||
|
@ -2641,7 +2616,7 @@ static void Mch_PutBigButton (Act_Action_t NextAction,long MchCod,
|
|||
"</a>"
|
||||
"</div>",
|
||||
Txt,
|
||||
Gbl.Form.Id,
|
||||
Id,
|
||||
Icon);
|
||||
|
||||
/***** End form *****/
|
||||
|
|
|
@ -101,7 +101,6 @@ void Mch_GetIndexes (long MchCod,unsigned QstInd,
|
|||
void Mch_RemoveGroup (long GrpCod);
|
||||
void Mch_RemoveGroupsOfType (long GrpTypCod);
|
||||
|
||||
void Mch_PauseMatch (void);
|
||||
void Mch_PlayMatch (void);
|
||||
void Mch_ToggleVisibilResultsMchQst (void);
|
||||
void Mch_BackMatch (void);
|
||||
|
|
Loading…
Reference in New Issue
Block a user