diff --git a/swad_action.c b/swad_action.c index c7a171e07..dda5eafc1 100644 --- a/swad_action.c +++ b/swad_action.c @@ -606,10 +606,10 @@ Assessment: 453. ActRemSvyQst Confirm the removal of a question of a survey 454. ActSeeGam Show one game - 455. ActPlyGam Start playing a game - 456. ActPlyGam1stQst Show first question when playing a game - 457. ActPlyGamNxtQst Show next question when playing a game - 458. ActPlyGamAns Show answers of current question when playing a game + 455. ActStrGamTch Start playing a game + 456. ActGamTch1stQst Show first question when playing a game + 457. ActGamTchNxtQst Show next question when playing a game + 458. ActGamTchAns Show answers of current question when playing a game 459. ActAnsGam Answer a game 460. ActFrmNewGam Form to create a new game 461. ActEdiOneGam Edit one game @@ -2135,10 +2135,14 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] = /* ActSeeOneTstResOth*/{1082,-1,TabUnk,ActReqTst ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Tst_ShowOneTestResult ,NULL}, /* ActSeeGam */{1650,-1,TabUnk,ActSeeAllGam ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Gam_SeeOneGame ,NULL}, - /* ActPlyGam */{1670,-1,TabUnk,ActSeeAllGam ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Gam_PlayGame ,NULL}, - /* ActPlyGam1stQst */{1671,-1,TabUnk,ActSeeAllGam ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_NEW_TAB,NULL ,Gam_PlayGameNextQuestion ,NULL}, - /* ActPlyGamNxtQst */{1672,-1,TabUnk,ActSeeAllGam ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_2ND_TAB,NULL ,Gam_PlayGameNextQuestion ,NULL}, - /* ActPlyGamAns */{1673,-1,TabUnk,ActSeeAllGam ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_2ND_TAB,NULL ,Gam_PlayGameShowAnswers ,NULL}, + + /* ActStrGamTch */{1670,-1,TabUnk,ActSeeAllGam ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Gam_StartGameTch ,NULL}, + /* ActGamTch1stQst */{1671,-1,TabUnk,ActSeeAllGam ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_NEW_TAB,NULL ,Gam_GameTchNextQuestion ,NULL}, + /* ActGamTchNxtQst */{1672,-1,TabUnk,ActSeeAllGam ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_2ND_TAB,NULL ,Gam_GameTchNextQuestion ,NULL}, + /* ActGamTchAns */{1673,-1,TabUnk,ActSeeAllGam ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_2ND_TAB,NULL ,Gam_GameTchShowAnswers ,NULL}, + + /* ActPlyGamStd */{1779,-1,TabUnk,ActSeeAllGam ,0x208,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Gam_PlayGameStd ,NULL}, + /* ActAnsGam */{1651,-1,TabUnk,ActSeeAllGam ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Gam_ReceiveGameAnswers ,NULL}, /* ActFrmNewGam */{1652,-1,TabUnk,ActSeeAllGam ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Gam_RequestCreatOrEditGame ,NULL}, /* ActEdiOneGam */{1653,-1,TabUnk,ActSeeAllGam ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Gam_RequestCreatOrEditGame ,NULL}, @@ -4858,10 +4862,10 @@ Act_Action_t Act_FromActCodToAction[1 + Act_MAX_ACTION_COD] = // Do not reuse un ActAddTstQstToGam, // #1667 ActUp_GamQst, // #1668 ActDwnGamQst, // #1669 - ActPlyGam, // #1670 - ActPlyGam1stQst, // #1671 - ActPlyGamNxtQst, // #1672 - ActPlyGamAns, // #1673 + ActStrGamTch, // #1670 + ActGamTch1stQst, // #1671 + ActGamTchNxtQst, // #1672 + ActGamTchAns, // #1673 ActSeePrj, // #1674 ActFrmNewPrj, // #1675 ActEdiOnePrj, // #1676 @@ -4967,6 +4971,7 @@ Act_Action_t Act_FromActCodToAction[1 + Act_MAX_ACTION_COD] = // Do not reuse un ActReqUnlAllPrj, // #1776 ActLckAllPrj, // #1777 ActUnlAllPrj, // #1778 + ActPlyGamStd, // #1779 }; /*****************************************************************************/ diff --git a/swad_action.h b/swad_action.h index ffca49bd1..38a85c0ab 100644 --- a/swad_action.h +++ b/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 -#define Act_NUM_ACTIONS (1 + 8 + 61 + 38 + 12 + 42 + 36 + 19 + 110 + 163 + 437 + 176 + 169 + 15 + 67) +#define Act_NUM_ACTIONS (1 + 8 + 61 + 38 + 12 + 42 + 36 + 19 + 110 + 164 + 437 + 176 + 169 + 15 + 67) -#define Act_MAX_ACTION_COD 1778 +#define Act_MAX_ACTION_COD 1779 #define Act_MAX_OPTIONS_IN_MENU_PER_TAB 13 @@ -609,55 +609,56 @@ typedef signed int Act_Action_t; // Must be a signed type, because -1 is used to #define ActSeeOneTstResOth (ActChgCrsTT1stDay + 115) #define ActSeeGam (ActChgCrsTT1stDay + 116) -#define ActPlyGam (ActChgCrsTT1stDay + 117) -#define ActPlyGam1stQst (ActChgCrsTT1stDay + 118) -#define ActPlyGamNxtQst (ActChgCrsTT1stDay + 119) -#define ActPlyGamAns (ActChgCrsTT1stDay + 120) -#define ActAnsGam (ActChgCrsTT1stDay + 121) -#define ActFrmNewGam (ActChgCrsTT1stDay + 122) -#define ActEdiOneGam (ActChgCrsTT1stDay + 123) -#define ActNewGam (ActChgCrsTT1stDay + 124) -#define ActChgGam (ActChgCrsTT1stDay + 125) -#define ActReqRemGam (ActChgCrsTT1stDay + 126) -#define ActRemGam (ActChgCrsTT1stDay + 127) -#define ActReqRstGam (ActChgCrsTT1stDay + 128) -#define ActRstGam (ActChgCrsTT1stDay + 129) -#define ActHidGam (ActChgCrsTT1stDay + 130) -#define ActShoGam (ActChgCrsTT1stDay + 131) -#define ActAddOneGamQst (ActChgCrsTT1stDay + 132) -#define ActGamLstTstQst (ActChgCrsTT1stDay + 133) -#define ActAddTstQstToGam (ActChgCrsTT1stDay + 134) -#define ActReqRemGamQst (ActChgCrsTT1stDay + 135) -#define ActRemGamQst (ActChgCrsTT1stDay + 136) -#define ActUp_GamQst (ActChgCrsTT1stDay + 137) -#define ActDwnGamQst (ActChgCrsTT1stDay + 138) +#define ActStrGamTch (ActChgCrsTT1stDay + 117) +#define ActGamTch1stQst (ActChgCrsTT1stDay + 118) +#define ActGamTchNxtQst (ActChgCrsTT1stDay + 119) +#define ActGamTchAns (ActChgCrsTT1stDay + 120) +#define ActPlyGamStd (ActChgCrsTT1stDay + 121) +#define ActAnsGam (ActChgCrsTT1stDay + 122) +#define ActFrmNewGam (ActChgCrsTT1stDay + 123) +#define ActEdiOneGam (ActChgCrsTT1stDay + 124) +#define ActNewGam (ActChgCrsTT1stDay + 125) +#define ActChgGam (ActChgCrsTT1stDay + 126) +#define ActReqRemGam (ActChgCrsTT1stDay + 127) +#define ActRemGam (ActChgCrsTT1stDay + 128) +#define ActReqRstGam (ActChgCrsTT1stDay + 129) +#define ActRstGam (ActChgCrsTT1stDay + 130) +#define ActHidGam (ActChgCrsTT1stDay + 131) +#define ActShoGam (ActChgCrsTT1stDay + 132) +#define ActAddOneGamQst (ActChgCrsTT1stDay + 133) +#define ActGamLstTstQst (ActChgCrsTT1stDay + 134) +#define ActAddTstQstToGam (ActChgCrsTT1stDay + 135) +#define ActReqRemGamQst (ActChgCrsTT1stDay + 136) +#define ActRemGamQst (ActChgCrsTT1stDay + 137) +#define ActUp_GamQst (ActChgCrsTT1stDay + 138) +#define ActDwnGamQst (ActChgCrsTT1stDay + 139) -#define ActSeeSvy (ActChgCrsTT1stDay + 139) -#define ActAnsSvy (ActChgCrsTT1stDay + 140) -#define ActFrmNewSvy (ActChgCrsTT1stDay + 141) -#define ActEdiOneSvy (ActChgCrsTT1stDay + 142) -#define ActNewSvy (ActChgCrsTT1stDay + 143) -#define ActChgSvy (ActChgCrsTT1stDay + 144) -#define ActReqRemSvy (ActChgCrsTT1stDay + 145) -#define ActRemSvy (ActChgCrsTT1stDay + 146) -#define ActReqRstSvy (ActChgCrsTT1stDay + 147) -#define ActRstSvy (ActChgCrsTT1stDay + 148) -#define ActHidSvy (ActChgCrsTT1stDay + 149) -#define ActShoSvy (ActChgCrsTT1stDay + 150) -#define ActEdiOneSvyQst (ActChgCrsTT1stDay + 151) -#define ActRcvSvyQst (ActChgCrsTT1stDay + 152) -#define ActReqRemSvyQst (ActChgCrsTT1stDay + 153) -#define ActRemSvyQst (ActChgCrsTT1stDay + 154) +#define ActSeeSvy (ActChgCrsTT1stDay + 140) +#define ActAnsSvy (ActChgCrsTT1stDay + 141) +#define ActFrmNewSvy (ActChgCrsTT1stDay + 142) +#define ActEdiOneSvy (ActChgCrsTT1stDay + 143) +#define ActNewSvy (ActChgCrsTT1stDay + 144) +#define ActChgSvy (ActChgCrsTT1stDay + 145) +#define ActReqRemSvy (ActChgCrsTT1stDay + 146) +#define ActRemSvy (ActChgCrsTT1stDay + 147) +#define ActReqRstSvy (ActChgCrsTT1stDay + 148) +#define ActRstSvy (ActChgCrsTT1stDay + 149) +#define ActHidSvy (ActChgCrsTT1stDay + 150) +#define ActShoSvy (ActChgCrsTT1stDay + 151) +#define ActEdiOneSvyQst (ActChgCrsTT1stDay + 152) +#define ActRcvSvyQst (ActChgCrsTT1stDay + 153) +#define ActReqRemSvyQst (ActChgCrsTT1stDay + 154) +#define ActRemSvyQst (ActChgCrsTT1stDay + 155) -#define ActSeeOneExaAnn (ActChgCrsTT1stDay + 155) -#define ActSeeDatExaAnn (ActChgCrsTT1stDay + 156) -#define ActEdiExaAnn (ActChgCrsTT1stDay + 157) -#define ActRcvExaAnn (ActChgCrsTT1stDay + 158) -#define ActPrnExaAnn (ActChgCrsTT1stDay + 159) -#define ActReqRemExaAnn (ActChgCrsTT1stDay + 160) -#define ActRemExaAnn (ActChgCrsTT1stDay + 161) -#define ActHidExaAnn (ActChgCrsTT1stDay + 162) -#define ActShoExaAnn (ActChgCrsTT1stDay + 163) +#define ActSeeOneExaAnn (ActChgCrsTT1stDay + 156) +#define ActSeeDatExaAnn (ActChgCrsTT1stDay + 157) +#define ActEdiExaAnn (ActChgCrsTT1stDay + 158) +#define ActRcvExaAnn (ActChgCrsTT1stDay + 159) +#define ActPrnExaAnn (ActChgCrsTT1stDay + 160) +#define ActReqRemExaAnn (ActChgCrsTT1stDay + 161) +#define ActRemExaAnn (ActChgCrsTT1stDay + 162) +#define ActHidExaAnn (ActChgCrsTT1stDay + 163) +#define ActShoExaAnn (ActChgCrsTT1stDay + 164) /*****************************************************************************/ /******************************** Files tab **********************************/ diff --git a/swad_changelog.h b/swad_changelog.h index d29fd75bf..19225f98f 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -448,10 +448,15 @@ En OpenSWAD: ps2pdf source.ps destination.pdf */ -#define Log_PLATFORM_VERSION "SWAD 18.122 (2019-05-18)" +#define Log_PLATFORM_VERSION "SWAD 18.122.1 (2019-05-18)" #define CSS_FILE "swad18.112.1.css" #define JS_FILE "swad18.116.5.js" /* + Version 18.122.1: May 20, 2019 New action to play game by a student. (242257 lines) + 2 changes necessary in database: +UPDATE actions SET Txt='Preparar para comenzar juego' WHERE ActCod='1670' AND Language='es'; +INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1779','es','N','Preparar para jugar como estudiante'); + Version 18.122: May 18, 2019 Games available for students. Scope and roles removed from games. (242145 lines) 3 changes necessary in database: diff --git a/swad_game.c b/swad_game.c index cf1154fc1..a1199402b 100644 --- a/swad_game.c +++ b/swad_game.c @@ -97,7 +97,8 @@ static void Gam_ParamsWhichGroupsToShow (void); static void Gam_ShowOneGame (long GamCod, bool ShowOnlyThisGame, bool ListGameQuestions, - bool PutButtonToStart); + bool PutButtonToStart, + bool PutButtonToPlay); static void Gam_WriteAuthor (struct Game *Game); static void Gam_WriteStatus (struct Game *Game); static void Gam_GetParamGameOrder (void); @@ -152,7 +153,8 @@ static void Gam_PutParamsOneQst (void); static void Gam_ExchangeQuestions (long GamCod, unsigned QstIndTop,unsigned QstIndBottom); -static void Gam_PutBigButtonToStartGame (long GamCod); +static void Gam_PutBigButtonToStartGameTch (long GamCod); +static void Gam_PutBigButtonToPlayGameStd (long GamCod); static void Gam_PlayGameShowQuestionAndAnswers (bool ShowAnswers); static void Gam_PutBigButtonToContinue (Act_Action_t NextAction, @@ -272,7 +274,8 @@ static void Gam_ListAllGames (void) Gam_ShowOneGame (Gbl.Games.LstGamCods[NumGame - 1], false, false, - false); + false, // Do not put button to start game + false); // Do not put button to play /***** End table *****/ Tbl_EndTable (); @@ -400,7 +403,8 @@ void Gam_SeeOneGame (void) Gam_ShowOneGame (Game.GamCod, true, // Show only this game true, // List game questions - false); + false, // Do not put button to start game + false); // Do not put button to play } /*****************************************************************************/ @@ -410,7 +414,8 @@ void Gam_SeeOneGame (void) static void Gam_ShowOneGame (long GamCod, bool ShowOnlyThisGame, bool ListGameQuestions, - bool PutButtonToStart) + bool PutButtonToStart, + bool PutButtonToPlay) { extern const char *Hlp_ASSESSMENT_Games; extern const char *Txt_Game; @@ -419,6 +424,7 @@ static void Gam_ShowOneGame (long GamCod, extern const char *Txt_No_of_questions; extern const char *Txt_No_of_users; extern const char *Txt_Play; + extern const char *Txt_Start_game; extern const char *Txt_View_game_results; char *Anchor = NULL; static unsigned UniqueId = 0; @@ -455,17 +461,33 @@ static void Gam_ShowOneGame (long GamCod, /* Icons to remove/edit this game */ Gam_PutFormsToRemEditOneGame (&Game,Anchor); - if (ShowOnlyThisGame) - /* Icon to show first question */ - Lay_PutContextualLinkOnlyIcon (ActPlyGam1stQst,NULL, - Gam_PutParamsToPlayGame1stQst, - "play.svg", - Txt_Play); - else - /* Icon to play game */ - Lay_PutContextualLinkOnlyIcon (ActPlyGam,NULL,Gam_PutParams, - "play.svg", - Txt_Play); + switch (Gbl.Usrs.Me.Role.Logged) + { + case Rol_STD: + /* Icon to play game */ + Lay_PutContextualLinkOnlyIcon (ActPlyGamStd,NULL, + Gam_PutParams, + "play.svg", + Txt_Play); + break; + case Rol_NET: + case Rol_TCH: + if (ShowOnlyThisGame) + /* Icon to show first question */ + Lay_PutContextualLinkOnlyIcon (ActGamTch1stQst,NULL, + Gam_PutParamsToPlayGame1stQst, + "play.svg", + Txt_Play); + else + /* Icon to start game */ + Lay_PutContextualLinkOnlyIcon (ActStrGamTch,NULL, + Gam_PutParams, + "play.svg", + Txt_Play); + break; + default: + break; + } fprintf (Gbl.F.Out,""); @@ -516,9 +538,6 @@ static void Gam_ShowOneGame (long GamCod, Lay_StartArticle (Anchor); Frm_StartForm (ActSeeGam); Gam_PutParamGameCod (GamCod); - // Gam_PutHiddenParamGameOrder (); - // Grp_PutParamWhichGrps (); - // Pag_PutHiddenParamPagNum (Pag_GAMES,Gbl.Games.CurrentPage); Frm_LinkFormSubmit (Txt_View_game, Game.Status.Visible ? "ASG_TITLE" : "ASG_TITLE_LIGHT",NULL); @@ -553,16 +572,29 @@ static void Gam_ShowOneGame (long GamCod, { fprintf (Gbl.F.Out,"