Version18.142

This commit is contained in:
Antonio Cañas Vargas 2019-09-10 01:37:10 +02:00
parent 238583e362
commit 578f218098
5 changed files with 125 additions and 106 deletions

View File

@ -612,9 +612,10 @@ Assessment:
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. ActPrvMchTch Show previous question when playing a match (by a teacher)
NEW. ActPauMchTch Pause/hide current 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. ActPauMchTch Pause current match (by a teacher)
NEW. ActPlyMchTch Play/resume current match (by a teacher)
NEW. ActSteMchTch 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. ActShoMchTch Show finished match results
@ -2156,7 +2157,8 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
/* 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},
/* ActPauMchTch */{1791,-1,TabUnk,ActSeeAllGam ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_2ND_TAB,Gam_GetMatchBeingPlayed ,Gam_PauseMatchTch ,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},
/* ActPlyMchTch */{1789,-1,TabUnk,ActSeeAllGam ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_2ND_TAB,Gam_GetMatchBeingPlayed ,Gam_ResumeMatchTch ,NULL},
/* ActSteMchTch */{1792,-1,TabUnk,ActSeeAllGam ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_2ND_TAB,Gam_GetMatchBeingPlayed ,Gam_PrevStatusMatchTch ,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},
/* ActShoMchTch */{1786,-1,TabUnk,ActSeeAllGam ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Gam_ShowFinishedMatchResults ,NULL},
@ -5004,9 +5006,10 @@ Act_Action_t Act_FromActCodToAction[1 + Act_MAX_ACTION_COD] = // Do not reuse un
ActShoMchTch, // #1786
ActCreMyAcc, // #1787
ActRefMchTch, // #1788
ActCurMchTch, // #1789
ActPlyMchTch, // #1789
ActPrvMchTch, // #1790
ActPauMchTch, // #1791
ActSteMchTch, // #1792
};
/*****************************************************************************/

View File

@ -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
#define Act_NUM_ACTIONS (1 + 4 + 64 + 38 + 12 + 42 + 36 + 19 + 110 + 172 + 437 + 176 + 169 + 16 + 68)
#define Act_NUM_ACTIONS (1 + 4 + 64 + 38 + 12 + 42 + 36 + 19 + 110 + 173 + 437 + 176 + 169 + 16 + 68)
#define Act_MAX_ACTION_COD 1791
#define Act_MAX_ACTION_COD 1792
#define Act_MAX_OPTIONS_IN_MENU_PER_TAB 13
@ -614,57 +614,58 @@ typedef signed int Act_Action_t; // Must be a signed type, because -1 is used to
#define ActResMchTch (ActChgCrsTT1stDay + 121)
#define ActPrvMchTch (ActChgCrsTT1stDay + 122)
#define ActPauMchTch (ActChgCrsTT1stDay + 123)
#define ActCurMchTch (ActChgCrsTT1stDay + 124)
#define ActNxtMchTch (ActChgCrsTT1stDay + 125)
#define ActRefMchTch (ActChgCrsTT1stDay + 126)
#define ActShoMchTch (ActChgCrsTT1stDay + 127)
#define ActPlyMchStd (ActChgCrsTT1stDay + 128)
#define ActRefMchStd (ActChgCrsTT1stDay + 129)
#define ActAnsMchQstStd (ActChgCrsTT1stDay + 130)
#define ActFrmNewGam (ActChgCrsTT1stDay + 131)
#define ActEdiOneGam (ActChgCrsTT1stDay + 132)
#define ActNewGam (ActChgCrsTT1stDay + 133)
#define ActChgGam (ActChgCrsTT1stDay + 134)
#define ActReqRemGam (ActChgCrsTT1stDay + 135)
#define ActRemGam (ActChgCrsTT1stDay + 136)
#define ActReqRstGam (ActChgCrsTT1stDay + 137)
#define ActRstGam (ActChgCrsTT1stDay + 138)
#define ActHidGam (ActChgCrsTT1stDay + 139)
#define ActShoGam (ActChgCrsTT1stDay + 140)
#define ActAddOneGamQst (ActChgCrsTT1stDay + 141)
#define ActGamLstTstQst (ActChgCrsTT1stDay + 142)
#define ActAddTstQstToGam (ActChgCrsTT1stDay + 143)
#define ActReqRemGamQst (ActChgCrsTT1stDay + 144)
#define ActRemGamQst (ActChgCrsTT1stDay + 145)
#define ActUp_GamQst (ActChgCrsTT1stDay + 146)
#define ActDwnGamQst (ActChgCrsTT1stDay + 147)
#define ActPlyMchTch (ActChgCrsTT1stDay + 124)
#define ActSteMchTch (ActChgCrsTT1stDay + 125)
#define ActNxtMchTch (ActChgCrsTT1stDay + 126)
#define ActRefMchTch (ActChgCrsTT1stDay + 127)
#define ActShoMchTch (ActChgCrsTT1stDay + 128)
#define ActPlyMchStd (ActChgCrsTT1stDay + 129)
#define ActRefMchStd (ActChgCrsTT1stDay + 130)
#define ActAnsMchQstStd (ActChgCrsTT1stDay + 131)
#define ActFrmNewGam (ActChgCrsTT1stDay + 132)
#define ActEdiOneGam (ActChgCrsTT1stDay + 133)
#define ActNewGam (ActChgCrsTT1stDay + 134)
#define ActChgGam (ActChgCrsTT1stDay + 135)
#define ActReqRemGam (ActChgCrsTT1stDay + 136)
#define ActRemGam (ActChgCrsTT1stDay + 137)
#define ActReqRstGam (ActChgCrsTT1stDay + 138)
#define ActRstGam (ActChgCrsTT1stDay + 139)
#define ActHidGam (ActChgCrsTT1stDay + 140)
#define ActShoGam (ActChgCrsTT1stDay + 141)
#define ActAddOneGamQst (ActChgCrsTT1stDay + 142)
#define ActGamLstTstQst (ActChgCrsTT1stDay + 143)
#define ActAddTstQstToGam (ActChgCrsTT1stDay + 144)
#define ActReqRemGamQst (ActChgCrsTT1stDay + 145)
#define ActRemGamQst (ActChgCrsTT1stDay + 146)
#define ActUp_GamQst (ActChgCrsTT1stDay + 147)
#define ActDwnGamQst (ActChgCrsTT1stDay + 148)
#define ActSeeSvy (ActChgCrsTT1stDay + 148)
#define ActAnsSvy (ActChgCrsTT1stDay + 149)
#define ActFrmNewSvy (ActChgCrsTT1stDay + 150)
#define ActEdiOneSvy (ActChgCrsTT1stDay + 151)
#define ActNewSvy (ActChgCrsTT1stDay + 152)
#define ActChgSvy (ActChgCrsTT1stDay + 153)
#define ActReqRemSvy (ActChgCrsTT1stDay + 154)
#define ActRemSvy (ActChgCrsTT1stDay + 155)
#define ActReqRstSvy (ActChgCrsTT1stDay + 156)
#define ActRstSvy (ActChgCrsTT1stDay + 157)
#define ActHidSvy (ActChgCrsTT1stDay + 158)
#define ActShoSvy (ActChgCrsTT1stDay + 159)
#define ActEdiOneSvyQst (ActChgCrsTT1stDay + 160)
#define ActRcvSvyQst (ActChgCrsTT1stDay + 161)
#define ActReqRemSvyQst (ActChgCrsTT1stDay + 162)
#define ActRemSvyQst (ActChgCrsTT1stDay + 163)
#define ActSeeSvy (ActChgCrsTT1stDay + 149)
#define ActAnsSvy (ActChgCrsTT1stDay + 150)
#define ActFrmNewSvy (ActChgCrsTT1stDay + 151)
#define ActEdiOneSvy (ActChgCrsTT1stDay + 152)
#define ActNewSvy (ActChgCrsTT1stDay + 153)
#define ActChgSvy (ActChgCrsTT1stDay + 154)
#define ActReqRemSvy (ActChgCrsTT1stDay + 155)
#define ActRemSvy (ActChgCrsTT1stDay + 156)
#define ActReqRstSvy (ActChgCrsTT1stDay + 157)
#define ActRstSvy (ActChgCrsTT1stDay + 158)
#define ActHidSvy (ActChgCrsTT1stDay + 159)
#define ActShoSvy (ActChgCrsTT1stDay + 160)
#define ActEdiOneSvyQst (ActChgCrsTT1stDay + 161)
#define ActRcvSvyQst (ActChgCrsTT1stDay + 162)
#define ActReqRemSvyQst (ActChgCrsTT1stDay + 163)
#define ActRemSvyQst (ActChgCrsTT1stDay + 164)
#define ActSeeOneExaAnn (ActChgCrsTT1stDay + 164)
#define ActSeeDatExaAnn (ActChgCrsTT1stDay + 165)
#define ActEdiExaAnn (ActChgCrsTT1stDay + 166)
#define ActRcvExaAnn (ActChgCrsTT1stDay + 167)
#define ActPrnExaAnn (ActChgCrsTT1stDay + 168)
#define ActReqRemExaAnn (ActChgCrsTT1stDay + 169)
#define ActRemExaAnn (ActChgCrsTT1stDay + 170)
#define ActHidExaAnn (ActChgCrsTT1stDay + 171)
#define ActShoExaAnn (ActChgCrsTT1stDay + 172)
#define ActSeeOneExaAnn (ActChgCrsTT1stDay + 165)
#define ActSeeDatExaAnn (ActChgCrsTT1stDay + 166)
#define ActEdiExaAnn (ActChgCrsTT1stDay + 167)
#define ActRcvExaAnn (ActChgCrsTT1stDay + 168)
#define ActPrnExaAnn (ActChgCrsTT1stDay + 169)
#define ActReqRemExaAnn (ActChgCrsTT1stDay + 170)
#define ActRemExaAnn (ActChgCrsTT1stDay + 171)
#define ActHidExaAnn (ActChgCrsTT1stDay + 172)
#define ActShoExaAnn (ActChgCrsTT1stDay + 173)
/*****************************************************************************/
/******************************** Files tab **********************************/

View File

@ -460,10 +460,15 @@ En OpenSWAD:
ps2pdf source.ps destination.pdf
*/
#define Log_PLATFORM_VERSION "SWAD 18.141.1 (2019-09-09)"
#define Log_PLATFORM_VERSION "SWAD 18.142 (2019-09-10)"
#define CSS_FILE "swad18.138.css"
#define JS_FILE "swad18.130.2.js"
/*
Version 18.142: Sep 10, 2019 New action to see the stem/hide the answers of a question when playing a match. (244345 lines)
2 changes necessary in database:
UPDATE actions SET Txt='Comenzar/reanudar partida (como profesor)' WHERE ActCod='1789' AND Language='es';
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1792','es','N','Mostrar solo enunciado en partida (como profesor)');
Version 18.141.1: Sep 09, 2019 Display question elapsed time. (244329 lines)
Version 18.141: Sep 09, 2019 New action to pause a match. (244312 lines)
1 change necessary in database:

View File

@ -88,12 +88,14 @@ const char *Gam_StrAnswerTypesDB[Gam_NUM_ANS_TYPES] =
#define Gam_ICON_CLOSE "fas fa-times"
#define Gam_ICON_PLAY "fas fa-play"
#define Gam_ICON_PAUSE "fas fa-pause"
#define Gam_ICON_STEM "fas fa-step-backward"
// #define Gam_ICON_STEM "fas fa-step-backward"
#define Gam_ICON_STEM "fas fa-file"
#define Gam_ICON_START "fas fa-step-backward"
#define Gam_ICON_PREVIOUS "fas fa-step-backward"
#define Gam_ICON_FINISH "fas fa-step-forward"
#define Gam_ICON_NEXT "fas fa-step-forward"
#define Gam_ICON_ANSWERS "fas fa-step-forward"
// #define Gam_ICON_ANSWERS "fas fa-step-forward"
#define Gam_ICON_ANSWERS "fas fa-file-alt"
/*****************************************************************************/
/******************************* Private types *******************************/
@ -3516,9 +3518,7 @@ void Gam_ResumeMatchTch (void)
{
if (Match.Status.QstInd == 0) // Match has been created, but it has not started
Gam_SetMatchStatusToNextQuestion (&Match);
Match.Status.ShowingAnswers = false; // Don't show answers in any case
Match.Status.BeingPlayed = true; // Resume match
Match.Status.BeingPlayed = true; // Start/resume match
}
/***** Update match status in database *****/
@ -3621,7 +3621,6 @@ static void Gam_SetMatchStatusToPrevQuestion (struct Match *Match)
{
Match->Status.QstCod = Gam_GetQstCodFromQstInd (Match->GamCod,
Match->Status.QstInd);
Match->Status.BeingPlayed = true; // Match is being played
Match->Status.ShowingAnswers = true; // Show answers
}
}
@ -3636,11 +3635,8 @@ static void Gam_SetMatchStatusToNextQuestion (struct Match *Match)
Match->Status.QstInd = Gam_GetNextQuestionIndexInGame (Match->GamCod,
Match->Status.QstInd);
if (Match->Status.QstInd < Gam_AFTER_LAST_QUESTION) // Unfinished
{
Match->Status.QstCod = Gam_GetQstCodFromQstInd (Match->GamCod,
Match->Status.QstInd);
Match->Status.BeingPlayed = true;
}
else // Finished
{
Match->Status.QstCod = -1L; // No more questions
@ -3782,30 +3778,34 @@ static void Gam_ShowLeftColumnTch (struct Match *Match)
fprintf (Gbl.F.Out,"<div class=\"MATCH_BUTTON_LEFT_CONTAINER\">");
if (Match->Status.QstInd < Gam_AFTER_LAST_QUESTION) // Unfinished
{
if (Match->Status.BeingPlayed)
if (Match->Status.ShowingAnswers)
/* Put button to show stem of current question, hiding answers */
Gam_PutBigButton (ActSteMchTch,Match->MchCod,
Gam_ICON_STEM,Txt_Stem);
else if (Match->Status.QstInd == 0)
{
if (Match->Status.ShowingAnswers)
/* Put button to hide answers */
Gam_PutBigButton (ActCurMchTch,Match->MchCod,
Gam_ICON_STEM,Txt_Stem);
else
{
/* Get index of the previous question */
PrvQstInd = Gam_GetPrevQuestionIndexInGame (Match->GamCod,
Match->Status.QstInd);
if (PrvQstInd == 0) // There is not a previous question
/* Put button to resume match before first question */
Gam_PutBigButton (ActPrvMchTch,Match->MchCod,
Gam_ICON_START,Txt_MATCH_Start);
else // There is a previous question
/* Put button to show previous question */
Gam_PutBigButton (ActPrvMchTch,Match->MchCod,
Gam_ICON_PREVIOUS,Txt_Previous_QUESTION);
}
if (Match->Status.BeingPlayed)
/* Put button to go to start of match before first question */
Gam_PutBigButton (ActPrvMchTch,Match->MchCod,
Gam_ICON_START,Txt_MATCH_Start);
else // Not being played
/* Put button to close browser tab */
Gam_PutBigButtonClose ();
}
else
{
/* Get index of the previous question */
PrvQstInd = Gam_GetPrevQuestionIndexInGame (Match->GamCod,
Match->Status.QstInd);
if (PrvQstInd == 0) // There is not a previous question
/* Put button to resume match before first question */
Gam_PutBigButton (ActPrvMchTch,Match->MchCod,
Gam_ICON_START,Txt_MATCH_Start);
else // There is a previous question
/* Put button to show previous question */
Gam_PutBigButton (ActPrvMchTch,Match->MchCod,
Gam_ICON_PREVIOUS,Txt_Previous_QUESTION);
}
else // Not being played
/* Put button to close browser tab */
Gam_PutBigButtonClose ();
}
else // Finished
/* Put button to show last question */
@ -3822,8 +3822,16 @@ static void Gam_ShowLeftColumnTch (struct Match *Match)
Match->MchCod,
Gam_ICON_PAUSE,Txt_Pause);
else
/* Put inactive button to pause match */
Gam_PutBigButtonOff (Gam_ICON_PAUSE);
{
if (Match->Status.QstInd < Gam_AFTER_LAST_QUESTION) // Not finished
/* Put button to resume match */
Gam_PutBigButton (ActPlyMchTch,
Match->MchCod,
Gam_ICON_PLAY,Match->Status.QstInd == 0 ? Txt_Start :
Txt_Resume);
else // Finished
Gam_PutBigButtonOff (Gam_ICON_PLAY);
}
fprintf (Gbl.F.Out,"</div>");
/* Right button */
@ -3831,13 +3839,13 @@ static void Gam_ShowLeftColumnTch (struct Match *Match)
if (Match->Status.QstInd >= Gam_AFTER_LAST_QUESTION) // Finished
/* Put button to close browser tab */
Gam_PutBigButtonClose ();
else if (Match->Status.BeingPlayed)
else
{
/* Get index of the next question */
NxtQstInd = Gam_GetNextQuestionIndexInGame (Match->GamCod,
Match->Status.QstInd);
if (Match->Status.ShowingAnswers)
{
/* Get index of the next question */
NxtQstInd = Gam_GetNextQuestionIndexInGame (Match->GamCod,
Match->Status.QstInd);
if (NxtQstInd >= Gam_AFTER_LAST_QUESTION) // No more questions
/* Put button to finish */
Gam_PutBigButton (ActNxtMchTch,Match->MchCod,
@ -3848,17 +3856,17 @@ static void Gam_ShowLeftColumnTch (struct Match *Match)
Gam_ICON_NEXT,Txt_Next_QUESTION);
}
else
/* Put button to show answers */
Gam_PutBigButton (ActNxtMchTch,Match->MchCod,
Gam_ICON_ANSWERS,Txt_Answers);
{
if (Match->Status.QstInd == 0)
/* Put button to show first question */
Gam_PutBigButton (ActNxtMchTch,Match->MchCod,
Gam_ICON_NEXT,Txt_Next_QUESTION);
else
/* Put button to show answers */
Gam_PutBigButton (ActNxtMchTch,Match->MchCod,
Gam_ICON_ANSWERS,Txt_Answers);
}
}
else
/* Put button to start / resume match */
Gam_PutBigButton (ActCurMchTch,
Match->MchCod,
Gam_ICON_PLAY,Match->Status.QstInd == 0 ? Txt_Start :
Txt_Resume);
fprintf (Gbl.F.Out,"</div>");
/* End buttons container */

View File

@ -698,7 +698,8 @@ static void Lay_WriteScriptInit (void)
case ActResMchTch:
case ActPrvMchTch:
case ActPauMchTch:
case ActCurMchTch:
case ActPlyMchTch:
case ActSteMchTch:
case ActNxtMchTch:
case ActPlyMchStd:
case ActAnsMchQstStd:
@ -820,7 +821,8 @@ static void Lay_WriteScriptParamsAJAX (void)
case ActResMchTch:
case ActPrvMchTch:
case ActPauMchTch:
case ActCurMchTch:
case ActPlyMchTch:
case ActSteMchTch:
case ActNxtMchTch:
fprintf (Gbl.F.Out,"var RefreshParamNxtActGam = \"act=%ld\";\n"
"var RefreshParamMchCod = \"MchCod=%ld\";\n",