diff --git a/swad_action.c b/swad_action.c
index ea78946a..9fd63b30 100644
--- a/swad_action.c
+++ b/swad_action.c
@@ -190,7 +190,7 @@ const struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
[ActSeeMai ] = { 855,-1,TabUnk,ActSeeNtf ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Mai_SeeMailDomains ,NULL},
[ActEdiMai ] = { 856,-1,TabUnk,ActSeeNtf ,0x200,0x200,0x200,0x200,0x200,0x200,0x200,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Mai_EditMailDomains ,NULL},
- [ActNewMai ] = { 857,-1,TabUnk,ActSeeNtf ,0x200,0x200,0x200,0x200,0x200,0x200,0x200,Act_CONT_NORM,Act_BRW_1ST_TAB,Mai_RecFormNewMailDomain ,Mai_ContEditAfterChgMai ,NULL},
+ [ActNewMai ] = { 857,-1,TabUnk,ActSeeNtf ,0x200,0x200,0x200,0x200,0x200,0x200,0x200,Act_CONT_NORM,Act_BRW_1ST_TAB,Mai_ReceiveFormNewMailDomain ,Mai_ContEditAfterChgMai ,NULL},
[ActRemMai ] = { 860,-1,TabUnk,ActSeeNtf ,0x200,0x200,0x200,0x200,0x200,0x200,0x200,Act_CONT_NORM,Act_BRW_1ST_TAB,Mai_RemoveMailDomain ,Mai_ContEditAfterChgMai ,NULL},
[ActRenMaiSho ] = { 858,-1,TabUnk,ActSeeNtf ,0x200,0x200,0x200,0x200,0x200,0x200,0x200,Act_CONT_NORM,Act_BRW_1ST_TAB,Mai_RenameMailDomainShort ,Mai_ContEditAfterChgMai ,NULL},
[ActRenMaiFul ] = { 859,-1,TabUnk,ActSeeNtf ,0x200,0x200,0x200,0x200,0x200,0x200,0x200,Act_CONT_NORM,Act_BRW_1ST_TAB,Mai_RenameMailDomainFull ,Mai_ContEditAfterChgMai ,NULL},
@@ -208,14 +208,14 @@ const struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
[ActPrnSysInf ] = {1819,-1,TabUnk,ActSeeSysInf , 0, 0, 0, 0, 0, 0,0x3C7,Act_CONT_NORM,Act_BRW_NEW_TAB,NULL ,SysCfg_PrintConfiguration ,NULL},
[ActEdiCty ] = { 863,-1,TabUnk,ActSeeCty , 0, 0, 0, 0, 0, 0,0x200,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Cty_EditCountries ,NULL},
- [ActNewCty ] = { 864,-1,TabUnk,ActSeeCty , 0, 0, 0, 0, 0, 0,0x200,Act_CONT_NORM,Act_BRW_1ST_TAB,Cty_RecFormNewCountry ,Cty_ContEditAfterChgCty ,NULL},
+ [ActNewCty ] = { 864,-1,TabUnk,ActSeeCty , 0, 0, 0, 0, 0, 0,0x200,Act_CONT_NORM,Act_BRW_1ST_TAB,Cty_ReceiveFormNewCountry ,Cty_ContEditAfterChgCty ,NULL},
[ActRemCty ] = { 893,-1,TabUnk,ActSeeCty , 0, 0, 0, 0, 0, 0,0x200,Act_CONT_NORM,Act_BRW_1ST_TAB,Cty_RemoveCountry ,Cty_ContEditAfterChgCty ,NULL},
[ActRenCty ] = { 866,-1,TabUnk,ActSeeCty , 0, 0, 0, 0, 0, 0,0x200,Act_CONT_NORM,Act_BRW_1ST_TAB,Cty_RenameCountry ,Cty_ContEditAfterChgCty ,NULL},
[ActChgCtyWWW ] = {1157,-1,TabUnk,ActSeeCty , 0, 0, 0, 0, 0, 0,0x200,Act_CONT_NORM,Act_BRW_1ST_TAB,Cty_ChangeCtyWWW ,Cty_ContEditAfterChgCty ,NULL},
[ActSeeBan ] = {1137,-1,TabUnk,ActSeeLnk , 0, 0, 0, 0, 0, 0,0x3FF,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Ban_SeeBanners ,NULL},
[ActEdiBan ] = {1138,-1,TabUnk,ActSeeLnk , 0, 0, 0, 0, 0, 0,0x200,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Ban_EditBanners ,NULL},
- [ActNewBan ] = {1139,-1,TabUnk,ActSeeLnk , 0, 0, 0, 0, 0, 0,0x200,Act_CONT_NORM,Act_BRW_1ST_TAB,Ban_RecFormNewBanner ,Ban_ContEditAfterChgBan ,NULL},
+ [ActNewBan ] = {1139,-1,TabUnk,ActSeeLnk , 0, 0, 0, 0, 0, 0,0x200,Act_CONT_NORM,Act_BRW_1ST_TAB,Ban_ReceiveFormNewBanner ,Ban_ContEditAfterChgBan ,NULL},
[ActRemBan ] = {1140,-1,TabUnk,ActSeeLnk , 0, 0, 0, 0, 0, 0,0x200,Act_CONT_NORM,Act_BRW_1ST_TAB,Ban_RemoveBanner ,Ban_ContEditAfterChgBan ,NULL},
[ActShoBan ] = {1212,-1,TabUnk,ActSeeLnk , 0, 0, 0, 0, 0, 0,0x200,Act_CONT_NORM,Act_BRW_1ST_TAB,Ban_ShowBanner ,Ban_ContEditAfterChgBan ,NULL},
[ActHidBan ] = {1213,-1,TabUnk,ActSeeLnk , 0, 0, 0, 0, 0, 0,0x200,Act_CONT_NORM,Act_BRW_1ST_TAB,Ban_HideBanner ,Ban_ContEditAfterChgBan ,NULL},
@@ -226,14 +226,14 @@ const struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
[ActClkBan ] = {1145,-1,TabUnk,ActSeeLnk , 0, 0, 0, 0, 0, 0,0x3C7,Act_CONT_NORM,Act_DOWNLD_FILE,Ban_ClickOnBanner ,NULL ,NULL},
[ActEdiLnk ] = { 749,-1,TabUnk,ActSeeLnk , 0, 0, 0, 0, 0, 0,0x200,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Lnk_EditLinks ,NULL},
- [ActNewLnk ] = { 750,-1,TabUnk,ActSeeLnk , 0, 0, 0, 0, 0, 0,0x200,Act_CONT_NORM,Act_BRW_1ST_TAB,Lnk_RecFormNewLink ,Lnk_ContEditAfterChgLnk ,NULL},
+ [ActNewLnk ] = { 750,-1,TabUnk,ActSeeLnk , 0, 0, 0, 0, 0, 0,0x200,Act_CONT_NORM,Act_BRW_1ST_TAB,Lnk_ReceiveFormNewLink ,Lnk_ContEditAfterChgLnk ,NULL},
[ActRemLnk ] = { 897,-1,TabUnk,ActSeeLnk , 0, 0, 0, 0, 0, 0,0x200,Act_CONT_NORM,Act_BRW_1ST_TAB,Lnk_RemoveLink ,Lnk_ContEditAfterChgLnk ,NULL},
[ActRenLnkSho ] = { 753,-1,TabUnk,ActSeeLnk , 0, 0, 0, 0, 0, 0,0x200,Act_CONT_NORM,Act_BRW_1ST_TAB,Lnk_RenameLinkShort ,Lnk_ContEditAfterChgLnk ,NULL},
[ActRenLnkFul ] = { 751,-1,TabUnk,ActSeeLnk , 0, 0, 0, 0, 0, 0,0x200,Act_CONT_NORM,Act_BRW_1ST_TAB,Lnk_RenameLinkFull ,Lnk_ContEditAfterChgLnk ,NULL},
[ActChgLnkWWW ] = { 752,-1,TabUnk,ActSeeLnk , 0, 0, 0, 0, 0, 0,0x200,Act_CONT_NORM,Act_BRW_1ST_TAB,Lnk_ChangeLinkWWW ,Lnk_ContEditAfterChgLnk ,NULL},
[ActEdiPlg ] = { 778,-1,TabUnk,ActLstPlg , 0, 0, 0, 0, 0, 0,0x200,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Plg_EditPlugins ,NULL},
- [ActNewPlg ] = { 779,-1,TabUnk,ActLstPlg , 0, 0, 0, 0, 0, 0,0x200,Act_CONT_NORM,Act_BRW_1ST_TAB,Plg_RecFormNewPlg ,Plg_ContEditAfterChgPlg ,NULL},
+ [ActNewPlg ] = { 779,-1,TabUnk,ActLstPlg , 0, 0, 0, 0, 0, 0,0x200,Act_CONT_NORM,Act_BRW_1ST_TAB,Plg_ReceiveFormNewPlg ,Plg_ContEditAfterChgPlg ,NULL},
[ActRemPlg ] = { 889,-1,TabUnk,ActLstPlg , 0, 0, 0, 0, 0, 0,0x200,Act_CONT_NORM,Act_BRW_1ST_TAB,Plg_RemovePlugin ,Plg_ContEditAfterChgPlg ,NULL},
[ActRenPlg ] = { 782,-1,TabUnk,ActLstPlg , 0, 0, 0, 0, 0, 0,0x200,Act_CONT_NORM,Act_BRW_1ST_TAB,Plg_RenamePlugin ,Plg_ContEditAfterChgPlg ,NULL},
[ActChgPlgDes ] = { 888,-1,TabUnk,ActLstPlg , 0, 0, 0, 0, 0, 0,0x200,Act_CONT_NORM,Act_BRW_1ST_TAB,Plg_ChangePlgDescription ,Plg_ContEditAfterChgPlg ,NULL},
@@ -256,8 +256,8 @@ const struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
[ActChgCtyMapAtt ] = {1158,-1,TabUnk,ActSeeCtyInf , 0, 0, 0, 0, 0,0x200, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,CtyCfg_ChangeCtyMapAttr ,NULL},
[ActEdiIns ] = { 697,-1,TabUnk,ActSeeIns , 0, 0, 0, 0, 0,0x3C6, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Ins_EditInstitutions ,NULL},
- [ActReqIns ] = {1210,-1,TabUnk,ActSeeIns , 0, 0, 0, 0, 0,0x3C6, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Ins_RecFormReqIns ,Ins_ContEditAfterChgIns ,NULL},
- [ActNewIns ] = { 698,-1,TabUnk,ActSeeIns , 0, 0, 0, 0, 0,0x200, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Ins_RecFormNewIns ,Ins_ContEditAfterChgIns ,NULL},
+ [ActReqIns ] = {1210,-1,TabUnk,ActSeeIns , 0, 0, 0, 0, 0,0x3C6, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Ins_ReceiveFormReqIns ,Ins_ContEditAfterChgIns ,NULL},
+ [ActNewIns ] = { 698,-1,TabUnk,ActSeeIns , 0, 0, 0, 0, 0,0x200, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Ins_ReceiveFormNewIns ,Ins_ContEditAfterChgIns ,NULL},
[ActRemIns ] = { 759,-1,TabUnk,ActSeeIns , 0, 0, 0, 0, 0,0x3C6, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Ins_RemoveInstitution ,Ins_ContEditAfterChgIns ,NULL},
[ActRenInsSho ] = { 702,-1,TabUnk,ActSeeIns , 0, 0, 0, 0, 0,0x3C6, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Ins_RenameInsShort ,Ins_ContEditAfterChgIns ,NULL},
[ActRenInsFul ] = { 701,-1,TabUnk,ActSeeIns , 0, 0, 0, 0, 0,0x3C6, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Ins_RenameInsFull ,Ins_ContEditAfterChgIns ,NULL},
@@ -283,8 +283,8 @@ const struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
[ActRemInsLog ] = {1341,-1,TabUnk,ActSeeInsInf , 0, 0, 0, 0,0x300, 0, 0,Act_CONT_DATA,Act_BRW_1ST_TAB,InsCfg_RemoveLogo ,InsCfg_ShowConfiguration ,NULL},
[ActEdiCtr ] = { 681,-1,TabUnk,ActSeeCtr , 0, 0, 0, 0,0x3C6, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Ctr_EditCentres ,NULL},
- [ActReqCtr ] = {1208,-1,TabUnk,ActSeeCtr , 0, 0, 0, 0,0x3C6, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Ctr_RecFormReqCtr ,Ctr_ContEditAfterChgCtr ,NULL},
- [ActNewCtr ] = { 685,-1,TabUnk,ActSeeCtr , 0, 0, 0, 0,0x300, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Ctr_RecFormNewCtr ,Ctr_ContEditAfterChgCtr ,NULL},
+ [ActReqCtr ] = {1208,-1,TabUnk,ActSeeCtr , 0, 0, 0, 0,0x3C6, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Ctr_ReceiveFormReqCtr ,Ctr_ContEditAfterChgCtr ,NULL},
+ [ActNewCtr ] = { 685,-1,TabUnk,ActSeeCtr , 0, 0, 0, 0,0x300, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Ctr_ReceiveFormNewCtr ,Ctr_ContEditAfterChgCtr ,NULL},
[ActRemCtr ] = { 686,-1,TabUnk,ActSeeCtr , 0, 0, 0, 0,0x3C6, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Ctr_RemoveCentre ,Ctr_ContEditAfterChgCtr ,NULL},
[ActChgCtrPlc ] = { 706,-1,TabUnk,ActSeeCtr , 0, 0, 0, 0,0x300, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Ctr_ChangeCtrPlc ,Ctr_ContEditAfterChgCtr ,NULL},
[ActRenCtrSho ] = { 682,-1,TabUnk,ActSeeCtr , 0, 0, 0, 0,0x3C6, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Ctr_RenameCentreShort ,Ctr_ContEditAfterChgCtr ,NULL},
@@ -293,13 +293,13 @@ const struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
[ActChgCtrSta ] = {1209,-1,TabUnk,ActSeeCtr , 0, 0, 0, 0,0x300, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Ctr_ChangeCtrStatus ,Ctr_ContEditAfterChgCtr ,NULL},
[ActEdiPlc ] = { 704,-1,TabUnk,ActSeePlc , 0, 0, 0, 0,0x200, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Plc_EditPlaces ,NULL},
- [ActNewPlc ] = { 705,-1,TabUnk,ActSeePlc , 0, 0, 0, 0,0x200, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Plc_RecFormNewPlace ,Plc_ContEditAfterChgPlc ,NULL},
+ [ActNewPlc ] = { 705,-1,TabUnk,ActSeePlc , 0, 0, 0, 0,0x200, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Plc_ReceiveFormNewPlace ,Plc_ContEditAfterChgPlc ,NULL},
[ActRemPlc ] = { 776,-1,TabUnk,ActSeePlc , 0, 0, 0, 0,0x200, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Plc_RemovePlace ,Plc_ContEditAfterChgPlc ,NULL},
[ActRenPlcSho ] = { 894,-1,TabUnk,ActSeePlc , 0, 0, 0, 0,0x200, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Plc_RenamePlaceShort ,Plc_ContEditAfterChgPlc ,NULL},
[ActRenPlcFul ] = { 895,-1,TabUnk,ActSeePlc , 0, 0, 0, 0,0x200, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Plc_RenamePlaceFull ,Plc_ContEditAfterChgPlc ,NULL},
[ActEdiDpt ] = { 677,-1,TabUnk,ActSeeDpt , 0, 0, 0, 0,0x200, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Dpt_EditDepartments ,NULL},
- [ActNewDpt ] = { 687,-1,TabUnk,ActSeeDpt , 0, 0, 0, 0,0x200, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Dpt_RecFormNewDpt ,Dpt_ContEditAfterChgDpt ,NULL},
+ [ActNewDpt ] = { 687,-1,TabUnk,ActSeeDpt , 0, 0, 0, 0,0x200, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Dpt_ReceiveFormNewDpt ,Dpt_ContEditAfterChgDpt ,NULL},
[ActRemDpt ] = { 690,-1,TabUnk,ActSeeDpt , 0, 0, 0, 0,0x200, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Dpt_RemoveDepartment ,Dpt_ContEditAfterChgDpt ,NULL},
[ActChgDptIns ] = { 721,-1,TabUnk,ActSeeDpt , 0, 0, 0, 0,0x200, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Dpt_ChangeDepartIns ,Dpt_ContEditAfterChgDpt ,NULL},
[ActRenDptSho ] = { 688,-1,TabUnk,ActSeeDpt , 0, 0, 0, 0,0x200, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Dpt_RenameDepartShort ,Dpt_ContEditAfterChgDpt ,NULL},
@@ -307,7 +307,7 @@ const struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
[ActChgDptWWW ] = { 691,-1,TabUnk,ActSeeDpt , 0, 0, 0, 0,0x200, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Dpt_ChangeDptWWW ,Dpt_ContEditAfterChgDpt ,NULL},
[ActEdiHld ] = { 713,-1,TabUnk,ActSeeHld , 0, 0, 0, 0,0x300, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Hld_EditHolidays ,NULL},
- [ActNewHld ] = { 714,-1,TabUnk,ActSeeHld , 0, 0, 0, 0,0x300, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Hld_RecFormNewHoliday ,Hld_ContEditAfterChgHld ,NULL},
+ [ActNewHld ] = { 714,-1,TabUnk,ActSeeHld , 0, 0, 0, 0,0x300, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Hld_ReceiveFormNewHoliday ,Hld_ContEditAfterChgHld ,NULL},
[ActRemHld ] = { 716,-1,TabUnk,ActSeeHld , 0, 0, 0, 0,0x300, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Hld_RemoveHoliday ,Hld_ContEditAfterChgHld ,NULL},
[ActChgHldPlc ] = { 896,-1,TabUnk,ActSeeHld , 0, 0, 0, 0,0x300, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Hld_ChangeHolidayPlace ,Hld_ContEditAfterChgHld ,NULL},
[ActChgHldTyp ] = { 715,-1,TabUnk,ActSeeHld , 0, 0, 0, 0,0x300, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Hld_ChangeHolidayType ,Hld_ContEditAfterChgHld ,NULL},
@@ -341,13 +341,13 @@ const struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
[ActSeeDegTyp ] = {1013,-1,TabUnk,ActSeeDeg , 0, 0, 0,0x3C7, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,DT_SeeDegreeTypesInDegTab ,NULL},
[ActEdiDegTyp ] = { 573,-1,TabUnk,ActSeeDeg , 0, 0, 0,0x200, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,DT_EditDegreeTypes ,NULL},
- [ActNewDegTyp ] = { 537,-1,TabUnk,ActSeeDeg , 0, 0, 0,0x200, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,DT_RecFormNewDegreeType ,DT_ContEditAfterChgDegTyp ,NULL},
+ [ActNewDegTyp ] = { 537,-1,TabUnk,ActSeeDeg , 0, 0, 0,0x200, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,DT_ReceiveFormNewDegreeType ,DT_ContEditAfterChgDegTyp ,NULL},
[ActRemDegTyp ] = { 545,-1,TabUnk,ActSeeDeg , 0, 0, 0,0x200, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,DT_RemoveDegreeType ,DT_ContEditAfterChgDegTyp ,NULL},
[ActRenDegTyp ] = { 538,-1,TabUnk,ActSeeDeg , 0, 0, 0,0x200, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,DT_RenameDegreeType ,DT_ContEditAfterChgDegTyp ,NULL},
[ActEdiDeg ] = { 536,-1,TabUnk,ActSeeDeg , 0, 0, 0,0x3C6, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Deg_EditDegrees ,NULL},
- [ActReqDeg ] = {1206,-1,TabUnk,ActSeeDeg , 0, 0, 0,0x3C6, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Deg_RecFormReqDeg ,Deg_ContEditAfterChgDeg ,NULL},
- [ActNewDeg ] = { 540,-1,TabUnk,ActSeeDeg , 0, 0, 0,0x380, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Deg_RecFormNewDeg ,Deg_ContEditAfterChgDeg ,NULL},
+ [ActReqDeg ] = {1206,-1,TabUnk,ActSeeDeg , 0, 0, 0,0x3C6, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Deg_ReceiveFormReqDeg ,Deg_ContEditAfterChgDeg ,NULL},
+ [ActNewDeg ] = { 540,-1,TabUnk,ActSeeDeg , 0, 0, 0,0x380, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Deg_ReceiveFormNewDeg ,Deg_ContEditAfterChgDeg ,NULL},
[ActRemDeg ] = { 542,-1,TabUnk,ActSeeDeg , 0, 0, 0,0x3C6, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Deg_RemoveDegree ,Deg_ContEditAfterChgDeg ,NULL},
[ActRenDegSho ] = { 546,-1,TabUnk,ActSeeDeg , 0, 0, 0,0x3C6, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Deg_RenameDegreeShort ,Deg_ContEditAfterChgDeg ,NULL},
[ActRenDegFul ] = { 547,-1,TabUnk,ActSeeDeg , 0, 0, 0,0x3C6, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Deg_RenameDegreeFull ,Deg_ContEditAfterChgDeg ,NULL},
@@ -356,14 +356,14 @@ const struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
[ActChgDegSta ] = {1207,-1,TabUnk,ActSeeDeg , 0, 0, 0,0x380, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Deg_ChangeDegStatus ,Deg_ContEditAfterChgDeg ,NULL},
[ActEdiBld ] = {1839,-1,TabUnk,ActSeeBld , 0, 0, 0,0x3C6, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Bld_EditBuildings ,NULL},
- [ActNewBld ] = {1840,-1,TabUnk,ActSeeBld , 0, 0, 0,0x3C6, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Bld_RecFormNewBuilding ,Bld_ContEditAfterChgBuilding ,NULL},
+ [ActNewBld ] = {1840,-1,TabUnk,ActSeeBld , 0, 0, 0,0x3C6, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Bld_ReceiveFormNewBuilding ,Bld_ContEditAfterChgBuilding ,NULL},
[ActRemBld ] = {1841,-1,TabUnk,ActSeeBld , 0, 0, 0,0x3C6, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Bld_RemoveBuilding ,Bld_ContEditAfterChgBuilding ,NULL},
[ActRenBldSho ] = {1842,-1,TabUnk,ActSeeBld , 0, 0, 0,0x3C6, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Bld_RenameBuildingShort ,Bld_ContEditAfterChgBuilding ,NULL},
[ActRenBldFul ] = {1843,-1,TabUnk,ActSeeBld , 0, 0, 0,0x3C6, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Bld_RenameBuildingFull ,Bld_ContEditAfterChgBuilding ,NULL},
[ActRenBldLoc ] = {1844,-1,TabUnk,ActSeeBld , 0, 0, 0,0x3C6, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Bld_ChangeBuildingLocation ,Bld_ContEditAfterChgBuilding ,NULL},
[ActEdiRoo ] = {1745,-1,TabUnk,ActSeeRoo , 0, 0, 0,0x3C6, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Roo_EditRooms ,NULL},
- [ActNewRoo ] = {1746,-1,TabUnk,ActSeeRoo , 0, 0, 0,0x3C6, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Roo_RecFormNewRoom ,Roo_ContEditAfterChgRoom ,NULL},
+ [ActNewRoo ] = {1746,-1,TabUnk,ActSeeRoo , 0, 0, 0,0x3C6, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Roo_ReceiveFormNewRoom ,Roo_ContEditAfterChgRoom ,NULL},
[ActRemRoo ] = {1747,-1,TabUnk,ActSeeRoo , 0, 0, 0,0x3C6, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Roo_RemoveRoom ,Roo_ContEditAfterChgRoom ,NULL},
[ActChgRooBld ] = {1845,-1,TabUnk,ActSeeRoo , 0, 0, 0,0x3C6, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Roo_ChangeBuilding ,Roo_ContEditAfterChgRoom ,NULL},
[ActChgRooFlo ] = {1846,-1,TabUnk,ActSeeRoo , 0, 0, 0,0x3C6, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Roo_ChangeFloor ,Roo_ContEditAfterChgRoom ,NULL},
@@ -388,8 +388,8 @@ const struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
[ActRemDegLog ] = {1343,-1,TabUnk,ActSeeDegInf , 0, 0,0x3C0, 0, 0, 0, 0,Act_CONT_DATA,Act_BRW_1ST_TAB,Deg_RemoveLogo ,DegCfg_ShowConfiguration ,NULL},
[ActEdiCrs ] = { 555,-1,TabUnk,ActSeeCrs , 0, 0,0x3C6, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Crs_EditCourses ,NULL},
- [ActReqCrs ] = {1053,-1,TabUnk,ActSeeCrs , 0, 0,0x3C6, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Crs_RecFormReqCrs ,Crs_ContEditAfterChgCrs ,NULL},
- [ActNewCrs ] = { 556,-1,TabUnk,ActSeeCrs , 0, 0,0x3C0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Crs_RecFormNewCrs ,Crs_ContEditAfterChgCrs ,NULL},
+ [ActReqCrs ] = {1053,-1,TabUnk,ActSeeCrs , 0, 0,0x3C6, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Crs_ReceiveFormReqCrs ,Crs_ContEditAfterChgCrs ,NULL},
+ [ActNewCrs ] = { 556,-1,TabUnk,ActSeeCrs , 0, 0,0x3C0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Crs_ReceiveFormNewCrs ,Crs_ContEditAfterChgCrs ,NULL},
[ActRemCrs ] = { 560,-1,TabUnk,ActSeeCrs , 0, 0,0x3C6, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Crs_RemoveCourse ,Crs_ContEditAfterChgCrs ,NULL},
[ActChgInsCrsCod ] = {1025,-1,TabUnk,ActSeeCrs , 0, 0,0x3C6, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Crs_ChangeInsCrsCod ,Crs_ContEditAfterChgCrs ,NULL},
[ActChgCrsYea ] = { 561,-1,TabUnk,ActSeeCrs , 0, 0,0x3C6, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Crs_ChangeCrsYear ,Crs_ContEditAfterChgCrs ,NULL},
@@ -419,8 +419,8 @@ const struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
[ActFrmNewPrgItm ] = {1822,-1,TabUnk,ActSeePrg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prg_RequestCreateItem ,NULL},
[ActFrmChgPrgItm ] = {1823,-1,TabUnk,ActSeePrg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prg_RequestChangeItem ,NULL},
- [ActNewPrgItm ] = {1825,-1,TabUnk,ActSeePrg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prg_RecFormNewItem ,NULL},
- [ActChgPrgItm ] = {1826,-1,TabUnk,ActSeePrg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prg_RecFormChgItem ,NULL},
+ [ActNewPrgItm ] = {1825,-1,TabUnk,ActSeePrg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prg_ReceiveFormNewItem ,NULL},
+ [ActChgPrgItm ] = {1826,-1,TabUnk,ActSeePrg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prg_ReceiveFormChgItem ,NULL},
[ActReqRemPrgItm ] = {1827,-1,TabUnk,ActSeePrg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prg_ReqRemItem ,NULL},
[ActRemPrgItm ] = {1828,-1,TabUnk,ActSeePrg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prg_RemoveItem ,NULL},
[ActHidPrgItm ] = {1829,-1,TabUnk,ActSeePrg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prg_HideItem ,NULL},
@@ -567,8 +567,8 @@ const struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
[ActFrmNewAsg ] = { 812,-1,TabUnk,ActSeeAsg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Asg_RequestCreatOrEditAsg ,NULL},
[ActEdiOneAsg ] = { 814,-1,TabUnk,ActSeeAsg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Asg_RequestCreatOrEditAsg ,NULL},
[ActPrnOneAsg ] = {1637,-1,TabUnk,ActSeeAsg ,0x3F8,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_NEW_TAB,NULL ,Asg_PrintOneAssignment ,NULL},
- [ActNewAsg ] = { 803,-1,TabUnk,ActSeeAsg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Asg_RecFormAssignment ,NULL},
- [ActChgAsg ] = { 815,-1,TabUnk,ActSeeAsg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Asg_RecFormAssignment ,NULL},
+ [ActNewAsg ] = { 803,-1,TabUnk,ActSeeAsg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Asg_ReceiveFormAssignment ,NULL},
+ [ActChgAsg ] = { 815,-1,TabUnk,ActSeeAsg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Asg_ReceiveFormAssignment ,NULL},
[ActReqRemAsg ] = { 813,-1,TabUnk,ActSeeAsg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Asg_ReqRemAssignment ,NULL},
[ActRemAsg ] = { 806,-1,TabUnk,ActSeeAsg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Asg_RemoveAssignment ,NULL},
[ActHidAsg ] = { 964,-1,TabUnk,ActSeeAsg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Asg_HideAssignment ,NULL},
@@ -585,8 +585,8 @@ const struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
[ActFrmNewPrj ] = {1675,-1,TabUnk,ActSeePrj ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_RequestCreatePrj ,NULL},
[ActEdiOnePrj ] = {1676,-1,TabUnk,ActSeePrj ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_RequestEditPrj ,NULL},
[ActPrnOnePrj ] = {1677,-1,TabUnk,ActSeePrj ,0x3F8,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_NEW_TAB,NULL ,Prj_PrintOneProject ,NULL},
- [ActNewPrj ] = {1678,-1,TabUnk,ActSeePrj ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_RecFormProject ,NULL},
- [ActChgPrj ] = {1679,-1,TabUnk,ActSeePrj ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_RecFormProject ,NULL},
+ [ActNewPrj ] = {1678,-1,TabUnk,ActSeePrj ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_ReceiveFormProject ,NULL},
+ [ActChgPrj ] = {1679,-1,TabUnk,ActSeePrj ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_ReceiveFormProject ,NULL},
[ActReqRemPrj ] = {1680,-1,TabUnk,ActSeePrj ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_ReqRemProject ,NULL},
[ActRemPrj ] = {1681,-1,TabUnk,ActSeePrj ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_RemoveProject ,NULL},
[ActHidPrj ] = {1682,-1,TabUnk,ActSeePrj ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_HideProject ,NULL},
@@ -677,12 +677,15 @@ const struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
[ActSeeExa ] = {1849,-1,TabUnk,ActSeeAllExa ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Exa_SeeOneExam ,NULL},
+ [ActReqNewExaEvt ] = {1852,-1,TabUnk,ActSeeAllExa ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaEvt_RequestCreatOrEditEvent ,NULL},
+ [ActEdiOneExaEvt ] = {1902,-1,TabUnk,ActSeeAllExa ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaEvt_RequestCreatOrEditEvent ,NULL},
+ [ActNewExaEvt ] = {1853,-1,TabUnk,ActSeeAllExa ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaEvt_ReceiveFormEvent ,NULL},
+ [ActChgExaEvt ] = {1903,-1,TabUnk,ActSeeAllExa ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaEvt_ReceiveFormEvent ,NULL},
[ActReqRemExaEvt ] = {1850,-1,TabUnk,ActSeeAllExa ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaEvt_RequestRemoveEvent ,NULL},
[ActRemExaEvt ] = {1851,-1,TabUnk,ActSeeAllExa ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaEvt_RemoveEvent ,NULL},
[ActHidExaEvt ] = {1900,-1,TabUnk,ActSeeAllExa ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaEvt_HideEvent ,NULL},
[ActShoExaEvt ] = {1901,-1,TabUnk,ActSeeAllExa ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaEvt_UnhideEvent ,NULL},
- [ActReqNewExaEvt ] = {1852,-1,TabUnk,ActSeeAllExa ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaEvt_RequestNewEvent ,NULL},
- [ActNewExaEvt ] = {1853,-1,TabUnk,ActSeeAllExa ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaEvt_CreateNewEventTch ,NULL},
+
[ActResExaEvt ] = {1854,-1,TabUnk,ActSeeAllExa ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_NEW_TAB,ExaEvt_GetEventBeingPlayed ,ExaEvt_ResumeEvent ,NULL},
[ActBckExaEvt ] = {1855,-1,TabUnk,ActSeeAllExa ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_2ND_TAB,ExaEvt_GetEventBeingPlayed ,ExaEvt_BackEvent ,NULL},
[ActPlyPauExaEvt ] = {1856,-1,TabUnk,ActSeeAllExa ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_2ND_TAB,ExaEvt_GetEventBeingPlayed ,ExaEvt_PlayPauseEvent ,NULL},
@@ -713,15 +716,15 @@ const struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
[ActFrmNewExa ] = {1877,-1,TabUnk,ActSeeAllExa ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Exa_RequestCreatOrEditExam ,NULL},
[ActEdiOneExa ] = {1878,-1,TabUnk,ActSeeAllExa ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Exa_RequestCreatOrEditExam ,NULL},
- [ActNewExa ] = {1879,-1,TabUnk,ActSeeAllExa ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Exa_RecFormExam ,NULL},
- [ActChgExa ] = {1880,-1,TabUnk,ActSeeAllExa ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Exa_RecFormExam ,NULL},
+ [ActNewExa ] = {1879,-1,TabUnk,ActSeeAllExa ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Exa_ReceiveFormExam ,NULL},
+ [ActChgExa ] = {1880,-1,TabUnk,ActSeeAllExa ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Exa_ReceiveFormExam ,NULL},
[ActReqRemExa ] = {1881,-1,TabUnk,ActSeeAllExa ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Exa_AskRemExam ,NULL},
[ActRemExa ] = {1882,-1,TabUnk,ActSeeAllExa ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Exa_RemoveExam ,NULL},
[ActHidExa ] = {1883,-1,TabUnk,ActSeeAllExa ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Exa_HideExam ,NULL},
[ActShoExa ] = {1884,-1,TabUnk,ActSeeAllExa ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Exa_UnhideExam ,NULL},
[ActFrmNewExaSet ] = {1892,-1,TabUnk,ActSeeAllExa ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Dat_SetIniEndDates ,ExaSet_RequestCreatOrEditSet ,NULL},
- [ActNewExaSet ] = {1898,-1,TabUnk,ActSeeAllExa ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaSet_RecFormSet ,NULL},
+ [ActNewExaSet ] = {1898,-1,TabUnk,ActSeeAllExa ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaSet_ReceiveFormSet ,NULL},
[ActReqRemExaSet ] = {1893,-1,TabUnk,ActSeeAllExa ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaSet_RequestRemoveSet ,NULL},
[ActRemExaSet ] = {1894,-1,TabUnk,ActSeeAllExa ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaSet_RemoveSet ,NULL},
[ActUp_ExaSet ] = {1895,-1,TabUnk,ActSeeAllExa ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaSet_MoveUpSet ,NULL},
@@ -771,8 +774,8 @@ const struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
[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},
- [ActNewGam ] = {1654,-1,TabUnk,ActSeeAllGam ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Gam_RecFormGame ,NULL},
- [ActChgGam ] = {1655,-1,TabUnk,ActSeeAllGam ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Gam_RecFormGame ,NULL},
+ [ActNewGam ] = {1654,-1,TabUnk,ActSeeAllGam ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Gam_ReceiveFormGame ,NULL},
+ [ActChgGam ] = {1655,-1,TabUnk,ActSeeAllGam ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Gam_ReceiveFormGame ,NULL},
[ActReqRemGam ] = {1656,-1,TabUnk,ActSeeAllGam ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Gam_AskRemGame ,NULL},
[ActRemGam ] = {1657,-1,TabUnk,ActSeeAllGam ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Gam_RemoveGame ,NULL},
[ActHidGam ] = {1660,-1,TabUnk,ActSeeAllGam ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Gam_HideGame ,NULL},
@@ -789,8 +792,8 @@ const struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
[ActAnsSvy ] = { 983,-1,TabUnk,ActSeeAllSvy ,0x3F8,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Svy_ReceiveSurveyAnswers ,NULL},
[ActFrmNewSvy ] = { 973,-1,TabUnk,ActSeeAllSvy ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Svy_RequestCreatOrEditSvy ,NULL},
[ActEdiOneSvy ] = { 974,-1,TabUnk,ActSeeAllSvy ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Svy_RequestCreatOrEditSvy ,NULL},
- [ActNewSvy ] = { 968,-1,TabUnk,ActSeeAllSvy ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Svy_RecFormSurvey ,NULL},
- [ActChgSvy ] = { 975,-1,TabUnk,ActSeeAllSvy ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Svy_RecFormSurvey ,NULL},
+ [ActNewSvy ] = { 968,-1,TabUnk,ActSeeAllSvy ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Svy_ReceiveFormSurvey ,NULL},
+ [ActChgSvy ] = { 975,-1,TabUnk,ActSeeAllSvy ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Svy_ReceiveFormSurvey ,NULL},
[ActReqRemSvy ] = { 976,-1,TabUnk,ActSeeAllSvy ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Svy_AskRemSurvey ,NULL},
[ActRemSvy ] = { 969,-1,TabUnk,ActSeeAllSvy ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Svy_RemoveSurvey ,NULL},
[ActReqRstSvy ] = { 984,-1,TabUnk,ActSeeAllSvy ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Svy_AskResetSurvey ,NULL},
@@ -1308,7 +1311,7 @@ const struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
[ActReqEdiGrp ] = { 108,-1,TabUnk,ActReqSelGrp ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Grp_ReqEditGroups ,NULL},
- [ActNewGrpTyp ] = { 174,-1,TabUnk,ActReqSelGrp ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Grp_RecFormNewGrpTyp ,NULL},
+ [ActNewGrpTyp ] = { 174,-1,TabUnk,ActReqSelGrp ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Grp_ReceiveFormNewGrpTyp ,NULL},
[ActReqRemGrpTyp ] = { 236,-1,TabUnk,ActReqSelGrp ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Grp_ReqRemGroupType ,NULL},
[ActRemGrpTyp ] = { 237,-1,TabUnk,ActReqSelGrp ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Grp_RemoveGroupType ,NULL},
[ActRenGrpTyp ] = { 304,-1,TabUnk,ActReqSelGrp ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Grp_RenameGroupType ,NULL},
@@ -1316,7 +1319,7 @@ const struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
[ActChgMulGrpTyp ] = { 302,-1,TabUnk,ActReqSelGrp ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Grp_ChangeMultiGrpTyp ,NULL},
[ActChgTimGrpTyp ] = {1061,-1,TabUnk,ActReqSelGrp ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Grp_ChangeOpenTimeGrpTyp ,NULL},
- [ActNewGrp ] = { 122,-1,TabUnk,ActReqSelGrp ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Grp_RecFormNewGrp ,NULL},
+ [ActNewGrp ] = { 122,-1,TabUnk,ActReqSelGrp ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Grp_ReceiveFormNewGrp ,NULL},
[ActReqRemGrp ] = { 107,-1,TabUnk,ActReqSelGrp ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Grp_ReqRemGroup ,NULL},
[ActRemGrp ] = { 175,-1,TabUnk,ActReqSelGrp ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Grp_RemoveGroup ,NULL},
[ActOpeGrp ] = { 322,-1,TabUnk,ActReqSelGrp ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Grp_OpenGroup ,NULL},
@@ -1377,8 +1380,8 @@ const struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
[ActPrnLstUsrAtt ] = {1075,-1,TabUnk,ActSeeAtt ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_NEW_TAB,NULL ,Att_PrintUsrsAttendanceCrs ,NULL},
[ActFrmNewAtt ] = {1063,-1,TabUnk,ActSeeAtt ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Att_RequestCreatOrEditAttEvent ,NULL},
[ActEdiOneAtt ] = {1064,-1,TabUnk,ActSeeAtt ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Att_RequestCreatOrEditAttEvent ,NULL},
- [ActNewAtt ] = {1065,-1,TabUnk,ActSeeAtt ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Att_RecFormAttEvent ,NULL},
- [ActChgAtt ] = {1066,-1,TabUnk,ActSeeAtt ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Att_RecFormAttEvent ,NULL},
+ [ActNewAtt ] = {1065,-1,TabUnk,ActSeeAtt ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Att_ReceiveFormAttEvent ,NULL},
+ [ActChgAtt ] = {1066,-1,TabUnk,ActSeeAtt ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Att_ReceiveFormAttEvent ,NULL},
[ActReqRemAtt ] = {1067,-1,TabUnk,ActSeeAtt ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Att_AskRemAttEvent ,NULL},
[ActRemAtt ] = {1068,-1,TabUnk,ActSeeAtt ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Att_GetAndRemAttEvent ,NULL},
[ActHidAtt ] = {1069,-1,TabUnk,ActSeeAtt ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Att_HideAttEvent ,NULL},
@@ -1741,8 +1744,8 @@ const struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
[ActFrmNewEvtMyAgd ] = {1603,-1,TabUnk,ActSeeMyAgd ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Agd_RequestCreatOrEditEvent ,NULL},
[ActEdiOneEvtMyAgd ] = {1604,-1,TabUnk,ActSeeMyAgd ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Agd_RequestCreatOrEditEvent ,NULL},
- [ActNewEvtMyAgd ] = {1605,-1,TabUnk,ActSeeMyAgd ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Agd_RecFormEvent ,NULL},
- [ActChgEvtMyAgd ] = {1606,-1,TabUnk,ActSeeMyAgd ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Agd_RecFormEvent ,NULL},
+ [ActNewEvtMyAgd ] = {1605,-1,TabUnk,ActSeeMyAgd ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Agd_ReceiveFormEvent ,NULL},
+ [ActChgEvtMyAgd ] = {1606,-1,TabUnk,ActSeeMyAgd ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Agd_ReceiveFormEvent ,NULL},
[ActReqRemEvtMyAgd ] = {1607,-1,TabUnk,ActSeeMyAgd ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Agd_AskRemEvent ,NULL},
[ActRemEvtMyAgd ] = {1608,-1,TabUnk,ActSeeMyAgd ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Agd_RemoveEvent ,NULL},
[ActHidEvtMyAgd ] = {1612,-1,TabUnk,ActSeeMyAgd ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Agd_HideEvent ,NULL},
@@ -3714,6 +3717,8 @@ Act_Action_t Act_FromActCodToAction[1 + Act_MAX_ACTION_COD] = // Do not reuse un
ActChgNumQstExaSet, // #1899
ActHidExaEvt, // #1900
ActShoExaEvt, // #1901
+ ActEdiOneExaEvt, // #1902
+ ActChgExaEvt, // #1903
};
/*****************************************************************************/
diff --git a/swad_action.h b/swad_action.h
index 10bca54e..c0f92b0f 100644
--- a/swad_action.h
+++ b/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_MAX_ACTION_COD 1901
+#define Act_MAX_ACTION_COD 1903
#define Act_MAX_OPTIONS_IN_MENU_PER_TAB 13
@@ -644,137 +644,141 @@ typedef signed int Act_Action_t; // Must be a signed type, because -1 is used to
#define ActSeeOneTstResOth (ActChgCrsTT1stDay + 122)
#define ActSeeExa (ActChgCrsTT1stDay + 123)
-#define ActReqRemExaEvt (ActChgCrsTT1stDay + 124)
-#define ActRemExaEvt (ActChgCrsTT1stDay + 125)
-#define ActHidExaEvt (ActChgCrsTT1stDay + 126)
-#define ActShoExaEvt (ActChgCrsTT1stDay + 127)
-#define ActReqNewExaEvt (ActChgCrsTT1stDay + 128)
-#define ActNewExaEvt (ActChgCrsTT1stDay + 129)
-#define ActResExaEvt (ActChgCrsTT1stDay + 130)
-#define ActBckExaEvt (ActChgCrsTT1stDay + 131)
-#define ActPlyPauExaEvt (ActChgCrsTT1stDay + 132)
-#define ActFwdExaEvt (ActChgCrsTT1stDay + 133)
-#define ActChgNumColExaEvt (ActChgCrsTT1stDay + 134)
-#define ActChgVisResExaEvtQst (ActChgCrsTT1stDay + 135)
-#define ActExaEvtCntDwn (ActChgCrsTT1stDay + 136)
-#define ActRefExaEvtTch (ActChgCrsTT1stDay + 137)
-#define ActJoiExaEvt (ActChgCrsTT1stDay + 138)
-#define ActSeeExaEvtAnsQstStd (ActChgCrsTT1stDay + 139)
-#define ActRemExaEvtAnsQstStd (ActChgCrsTT1stDay + 140)
-#define ActAnsExaEvtQstStd (ActChgCrsTT1stDay + 141)
-#define ActRefExaEvtStd (ActChgCrsTT1stDay + 142)
-#define ActSeeMyExaEvtResCrs (ActChgCrsTT1stDay + 143)
-#define ActSeeMyExaEvtResExa (ActChgCrsTT1stDay + 144)
-#define ActSeeMyExaEvtResEvt (ActChgCrsTT1stDay + 145)
-#define ActSeeOneExaEvtResMe (ActChgCrsTT1stDay + 146)
+#define ActReqNewExaEvt (ActChgCrsTT1stDay + 124)
+#define ActEdiOneExaEvt (ActChgCrsTT1stDay + 125)
+#define ActNewExaEvt (ActChgCrsTT1stDay + 126)
+#define ActChgExaEvt (ActChgCrsTT1stDay + 127)
+#define ActReqRemExaEvt (ActChgCrsTT1stDay + 128)
+#define ActRemExaEvt (ActChgCrsTT1stDay + 129)
+#define ActHidExaEvt (ActChgCrsTT1stDay + 130)
+#define ActShoExaEvt (ActChgCrsTT1stDay + 131)
-#define ActReqSeeAllExaEvtRes (ActChgCrsTT1stDay + 147)
-#define ActSeeAllExaEvtResCrs (ActChgCrsTT1stDay + 148)
-#define ActSeeAllExaEvtResExa (ActChgCrsTT1stDay + 149)
-#define ActSeeAllExaEvtResEvt (ActChgCrsTT1stDay + 150)
-#define ActSeeOneExaEvtResOth (ActChgCrsTT1stDay + 151)
+#define ActResExaEvt (ActChgCrsTT1stDay + 132)
+#define ActBckExaEvt (ActChgCrsTT1stDay + 133)
+#define ActPlyPauExaEvt (ActChgCrsTT1stDay + 134)
+#define ActFwdExaEvt (ActChgCrsTT1stDay + 135)
+#define ActChgNumColExaEvt (ActChgCrsTT1stDay + 136)
+#define ActChgVisResExaEvtQst (ActChgCrsTT1stDay + 137)
+#define ActExaEvtCntDwn (ActChgCrsTT1stDay + 138)
+#define ActRefExaEvtTch (ActChgCrsTT1stDay + 139)
+#define ActJoiExaEvt (ActChgCrsTT1stDay + 140)
+#define ActSeeExaEvtAnsQstStd (ActChgCrsTT1stDay + 141)
+#define ActRemExaEvtAnsQstStd (ActChgCrsTT1stDay + 142)
+#define ActAnsExaEvtQstStd (ActChgCrsTT1stDay + 143)
+#define ActRefExaEvtStd (ActChgCrsTT1stDay + 144)
-#define ActChgVisResExaEvtUsr (ActChgCrsTT1stDay + 152)
+#define ActSeeMyExaEvtResCrs (ActChgCrsTT1stDay + 145)
+#define ActSeeMyExaEvtResExa (ActChgCrsTT1stDay + 146)
+#define ActSeeMyExaEvtResEvt (ActChgCrsTT1stDay + 147)
+#define ActSeeOneExaEvtResMe (ActChgCrsTT1stDay + 148)
-#define ActFrmNewExa (ActChgCrsTT1stDay + 153)
-#define ActEdiOneExa (ActChgCrsTT1stDay + 154)
-#define ActNewExa (ActChgCrsTT1stDay + 155)
-#define ActChgExa (ActChgCrsTT1stDay + 156)
-#define ActReqRemExa (ActChgCrsTT1stDay + 157)
-#define ActRemExa (ActChgCrsTT1stDay + 158)
-#define ActHidExa (ActChgCrsTT1stDay + 159)
-#define ActShoExa (ActChgCrsTT1stDay + 160)
-#define ActFrmNewExaSet (ActChgCrsTT1stDay + 161)
-#define ActNewExaSet (ActChgCrsTT1stDay + 162)
-#define ActReqRemExaSet (ActChgCrsTT1stDay + 163)
-#define ActRemExaSet (ActChgCrsTT1stDay + 164)
-#define ActUp_ExaSet (ActChgCrsTT1stDay + 165)
-#define ActDwnExaSet (ActChgCrsTT1stDay + 166)
-#define ActChgTitExaSet (ActChgCrsTT1stDay + 167)
-#define ActChgNumQstExaSet (ActChgCrsTT1stDay + 168)
+#define ActReqSeeAllExaEvtRes (ActChgCrsTT1stDay + 149)
+#define ActSeeAllExaEvtResCrs (ActChgCrsTT1stDay + 150)
+#define ActSeeAllExaEvtResExa (ActChgCrsTT1stDay + 151)
+#define ActSeeAllExaEvtResEvt (ActChgCrsTT1stDay + 152)
+#define ActSeeOneExaEvtResOth (ActChgCrsTT1stDay + 153)
-#define ActReqAddQstExaSet (ActChgCrsTT1stDay + 169)
-#define ActLstTstQstForSet (ActChgCrsTT1stDay + 170)
-#define ActAddQstToExa (ActChgCrsTT1stDay + 171)
-#define ActReqRemSetQst (ActChgCrsTT1stDay + 172)
-#define ActRemExaQst (ActChgCrsTT1stDay + 173)
+#define ActChgVisResExaEvtUsr (ActChgCrsTT1stDay + 154)
-#define ActSeeGam (ActChgCrsTT1stDay + 174)
-#define ActReqRemMch (ActChgCrsTT1stDay + 175)
-#define ActRemMch (ActChgCrsTT1stDay + 176)
-#define ActReqNewMch (ActChgCrsTT1stDay + 177)
-#define ActNewMch (ActChgCrsTT1stDay + 178)
-#define ActResMch (ActChgCrsTT1stDay + 179)
-#define ActBckMch (ActChgCrsTT1stDay + 180)
-#define ActPlyPauMch (ActChgCrsTT1stDay + 181)
-#define ActFwdMch (ActChgCrsTT1stDay + 182)
-#define ActChgNumColMch (ActChgCrsTT1stDay + 183)
-#define ActChgVisResMchQst (ActChgCrsTT1stDay + 184)
-#define ActMchCntDwn (ActChgCrsTT1stDay + 185)
-#define ActRefMchTch (ActChgCrsTT1stDay + 186)
+#define ActFrmNewExa (ActChgCrsTT1stDay + 155)
+#define ActEdiOneExa (ActChgCrsTT1stDay + 156)
+#define ActNewExa (ActChgCrsTT1stDay + 157)
+#define ActChgExa (ActChgCrsTT1stDay + 158)
+#define ActReqRemExa (ActChgCrsTT1stDay + 159)
+#define ActRemExa (ActChgCrsTT1stDay + 160)
+#define ActHidExa (ActChgCrsTT1stDay + 161)
+#define ActShoExa (ActChgCrsTT1stDay + 162)
+#define ActFrmNewExaSet (ActChgCrsTT1stDay + 163)
+#define ActNewExaSet (ActChgCrsTT1stDay + 164)
+#define ActReqRemExaSet (ActChgCrsTT1stDay + 165)
+#define ActRemExaSet (ActChgCrsTT1stDay + 166)
+#define ActUp_ExaSet (ActChgCrsTT1stDay + 167)
+#define ActDwnExaSet (ActChgCrsTT1stDay + 168)
+#define ActChgTitExaSet (ActChgCrsTT1stDay + 169)
+#define ActChgNumQstExaSet (ActChgCrsTT1stDay + 170)
-#define ActJoiMch (ActChgCrsTT1stDay + 187)
-#define ActSeeMchAnsQstStd (ActChgCrsTT1stDay + 188)
-#define ActRemMchAnsQstStd (ActChgCrsTT1stDay + 189)
-#define ActAnsMchQstStd (ActChgCrsTT1stDay + 190)
-#define ActRefMchStd (ActChgCrsTT1stDay + 191)
+#define ActReqAddQstExaSet (ActChgCrsTT1stDay + 171)
+#define ActLstTstQstForSet (ActChgCrsTT1stDay + 172)
+#define ActAddQstToExa (ActChgCrsTT1stDay + 173)
+#define ActReqRemSetQst (ActChgCrsTT1stDay + 174)
+#define ActRemExaQst (ActChgCrsTT1stDay + 175)
-#define ActSeeMyMchResCrs (ActChgCrsTT1stDay + 192)
-#define ActSeeMyMchResGam (ActChgCrsTT1stDay + 193)
-#define ActSeeMyMchResMch (ActChgCrsTT1stDay + 194)
-#define ActSeeOneMchResMe (ActChgCrsTT1stDay + 195)
+#define ActSeeGam (ActChgCrsTT1stDay + 176)
+#define ActReqRemMch (ActChgCrsTT1stDay + 177)
+#define ActRemMch (ActChgCrsTT1stDay + 178)
+#define ActReqNewMch (ActChgCrsTT1stDay + 179)
+#define ActNewMch (ActChgCrsTT1stDay + 180)
+#define ActResMch (ActChgCrsTT1stDay + 181)
+#define ActBckMch (ActChgCrsTT1stDay + 182)
+#define ActPlyPauMch (ActChgCrsTT1stDay + 183)
+#define ActFwdMch (ActChgCrsTT1stDay + 184)
+#define ActChgNumColMch (ActChgCrsTT1stDay + 185)
+#define ActChgVisResMchQst (ActChgCrsTT1stDay + 186)
+#define ActMchCntDwn (ActChgCrsTT1stDay + 187)
+#define ActRefMchTch (ActChgCrsTT1stDay + 188)
-#define ActReqSeeAllMchRes (ActChgCrsTT1stDay + 196)
-#define ActSeeAllMchResCrs (ActChgCrsTT1stDay + 197)
-#define ActSeeAllMchResGam (ActChgCrsTT1stDay + 198)
-#define ActSeeAllMchResMch (ActChgCrsTT1stDay + 199)
-#define ActSeeOneMchResOth (ActChgCrsTT1stDay + 200)
+#define ActJoiMch (ActChgCrsTT1stDay + 189)
+#define ActSeeMchAnsQstStd (ActChgCrsTT1stDay + 190)
+#define ActRemMchAnsQstStd (ActChgCrsTT1stDay + 191)
+#define ActAnsMchQstStd (ActChgCrsTT1stDay + 192)
+#define ActRefMchStd (ActChgCrsTT1stDay + 193)
-#define ActChgVisResMchUsr (ActChgCrsTT1stDay + 201)
+#define ActSeeMyMchResCrs (ActChgCrsTT1stDay + 194)
+#define ActSeeMyMchResGam (ActChgCrsTT1stDay + 195)
+#define ActSeeMyMchResMch (ActChgCrsTT1stDay + 196)
+#define ActSeeOneMchResMe (ActChgCrsTT1stDay + 197)
-#define ActFrmNewGam (ActChgCrsTT1stDay + 202)
-#define ActEdiOneGam (ActChgCrsTT1stDay + 203)
-#define ActNewGam (ActChgCrsTT1stDay + 204)
-#define ActChgGam (ActChgCrsTT1stDay + 205)
-#define ActReqRemGam (ActChgCrsTT1stDay + 206)
-#define ActRemGam (ActChgCrsTT1stDay + 207)
-#define ActHidGam (ActChgCrsTT1stDay + 208)
-#define ActShoGam (ActChgCrsTT1stDay + 209)
-#define ActAddOneGamQst (ActChgCrsTT1stDay + 210)
-#define ActGamLstTstQst (ActChgCrsTT1stDay + 211)
-#define ActAddTstQstToGam (ActChgCrsTT1stDay + 212)
-#define ActReqRemGamQst (ActChgCrsTT1stDay + 213)
-#define ActRemGamQst (ActChgCrsTT1stDay + 214)
-#define ActUp_GamQst (ActChgCrsTT1stDay + 215)
-#define ActDwnGamQst (ActChgCrsTT1stDay + 216)
+#define ActReqSeeAllMchRes (ActChgCrsTT1stDay + 198)
+#define ActSeeAllMchResCrs (ActChgCrsTT1stDay + 199)
+#define ActSeeAllMchResGam (ActChgCrsTT1stDay + 200)
+#define ActSeeAllMchResMch (ActChgCrsTT1stDay + 201)
+#define ActSeeOneMchResOth (ActChgCrsTT1stDay + 202)
-#define ActSeeSvy (ActChgCrsTT1stDay + 217)
-#define ActAnsSvy (ActChgCrsTT1stDay + 218)
-#define ActFrmNewSvy (ActChgCrsTT1stDay + 219)
-#define ActEdiOneSvy (ActChgCrsTT1stDay + 220)
-#define ActNewSvy (ActChgCrsTT1stDay + 221)
-#define ActChgSvy (ActChgCrsTT1stDay + 222)
-#define ActReqRemSvy (ActChgCrsTT1stDay + 223)
-#define ActRemSvy (ActChgCrsTT1stDay + 224)
-#define ActReqRstSvy (ActChgCrsTT1stDay + 225)
-#define ActRstSvy (ActChgCrsTT1stDay + 226)
-#define ActHidSvy (ActChgCrsTT1stDay + 227)
-#define ActShoSvy (ActChgCrsTT1stDay + 228)
-#define ActEdiOneSvyQst (ActChgCrsTT1stDay + 229)
-#define ActRcvSvyQst (ActChgCrsTT1stDay + 230)
-#define ActReqRemSvyQst (ActChgCrsTT1stDay + 231)
-#define ActRemSvyQst (ActChgCrsTT1stDay + 232)
+#define ActChgVisResMchUsr (ActChgCrsTT1stDay + 203)
-#define ActSeeOneExaAnn (ActChgCrsTT1stDay + 233)
-#define ActSeeDatExaAnn (ActChgCrsTT1stDay + 234)
-#define ActEdiExaAnn (ActChgCrsTT1stDay + 235)
-#define ActRcvExaAnn (ActChgCrsTT1stDay + 236)
-#define ActPrnExaAnn (ActChgCrsTT1stDay + 237)
-#define ActReqRemExaAnn (ActChgCrsTT1stDay + 238)
-#define ActRemExaAnn (ActChgCrsTT1stDay + 239)
-#define ActHidExaAnn (ActChgCrsTT1stDay + 240)
-#define ActShoExaAnn (ActChgCrsTT1stDay + 241)
+#define ActFrmNewGam (ActChgCrsTT1stDay + 204)
+#define ActEdiOneGam (ActChgCrsTT1stDay + 205)
+#define ActNewGam (ActChgCrsTT1stDay + 206)
+#define ActChgGam (ActChgCrsTT1stDay + 207)
+#define ActReqRemGam (ActChgCrsTT1stDay + 208)
+#define ActRemGam (ActChgCrsTT1stDay + 209)
+#define ActHidGam (ActChgCrsTT1stDay + 210)
+#define ActShoGam (ActChgCrsTT1stDay + 211)
+#define ActAddOneGamQst (ActChgCrsTT1stDay + 212)
+#define ActGamLstTstQst (ActChgCrsTT1stDay + 213)
+#define ActAddTstQstToGam (ActChgCrsTT1stDay + 214)
+#define ActReqRemGamQst (ActChgCrsTT1stDay + 215)
+#define ActRemGamQst (ActChgCrsTT1stDay + 216)
+#define ActUp_GamQst (ActChgCrsTT1stDay + 217)
+#define ActDwnGamQst (ActChgCrsTT1stDay + 218)
+
+#define ActSeeSvy (ActChgCrsTT1stDay + 219)
+#define ActAnsSvy (ActChgCrsTT1stDay + 220)
+#define ActFrmNewSvy (ActChgCrsTT1stDay + 221)
+#define ActEdiOneSvy (ActChgCrsTT1stDay + 222)
+#define ActNewSvy (ActChgCrsTT1stDay + 223)
+#define ActChgSvy (ActChgCrsTT1stDay + 224)
+#define ActReqRemSvy (ActChgCrsTT1stDay + 225)
+#define ActRemSvy (ActChgCrsTT1stDay + 226)
+#define ActReqRstSvy (ActChgCrsTT1stDay + 227)
+#define ActRstSvy (ActChgCrsTT1stDay + 228)
+#define ActHidSvy (ActChgCrsTT1stDay + 229)
+#define ActShoSvy (ActChgCrsTT1stDay + 230)
+#define ActEdiOneSvyQst (ActChgCrsTT1stDay + 231)
+#define ActRcvSvyQst (ActChgCrsTT1stDay + 232)
+#define ActReqRemSvyQst (ActChgCrsTT1stDay + 233)
+#define ActRemSvyQst (ActChgCrsTT1stDay + 234)
+
+#define ActSeeOneExaAnn (ActChgCrsTT1stDay + 235)
+#define ActSeeDatExaAnn (ActChgCrsTT1stDay + 236)
+#define ActEdiExaAnn (ActChgCrsTT1stDay + 237)
+#define ActRcvExaAnn (ActChgCrsTT1stDay + 238)
+#define ActPrnExaAnn (ActChgCrsTT1stDay + 239)
+#define ActReqRemExaAnn (ActChgCrsTT1stDay + 240)
+#define ActRemExaAnn (ActChgCrsTT1stDay + 241)
+#define ActHidExaAnn (ActChgCrsTT1stDay + 242)
+#define ActShoExaAnn (ActChgCrsTT1stDay + 243)
/*****************************************************************************/
/******************************** Files tab **********************************/
diff --git a/swad_agenda.c b/swad_agenda.c
index 34c7e913..58b4848f 100644
--- a/swad_agenda.c
+++ b/swad_agenda.c
@@ -1701,7 +1701,7 @@ void Agd_RequestCreatOrEditEvent (void)
/********************* Receive form to create a new event ********************/
/*****************************************************************************/
-void Agd_RecFormEvent (void)
+void Agd_ReceiveFormEvent (void)
{
extern const char *Txt_You_must_specify_the_title_of_the_event;
extern const char *Txt_Created_new_event_X;
diff --git a/swad_agenda.h b/swad_agenda.h
index 2fd08aa4..e08dbfa6 100644
--- a/swad_agenda.h
+++ b/swad_agenda.h
@@ -123,7 +123,7 @@ void Agd_UnhideEvent (void);
void Agd_MakeEventPrivate (void);
void Agd_MakeEventPublic (void);
-void Agd_RecFormEvent (void);
+void Agd_ReceiveFormEvent (void);
void Agd_RemoveUsrEvents (long UsrCod);
unsigned Agd_GetNumEventsFromUsr (long UsrCod);
diff --git a/swad_assignment.c b/swad_assignment.c
index 19d7b2ca..b0286a57 100644
--- a/swad_assignment.c
+++ b/swad_assignment.c
@@ -1382,7 +1382,7 @@ static void Asg_ShowLstGrpsToEditAssignment (long AsgCod)
/****************** Receive form to create a new assignment ******************/
/*****************************************************************************/
-void Asg_RecFormAssignment (void)
+void Asg_ReceiveFormAssignment (void)
{
extern const char *Txt_Already_existed_an_assignment_with_the_title_X;
extern const char *Txt_Already_existed_an_assignment_with_the_folder_X;
diff --git a/swad_assignment.h b/swad_assignment.h
index deed3b40..101287c8 100644
--- a/swad_assignment.h
+++ b/swad_assignment.h
@@ -95,7 +95,7 @@ void Asg_ReqRemAssignment (void);
void Asg_RemoveAssignment (void);
void Asg_HideAssignment (void);
void Asg_ShowAssignment (void);
-void Asg_RecFormAssignment (void);
+void Asg_ReceiveFormAssignment (void);
bool Asg_CheckIfAsgIsAssociatedToGrp (long AsgCod,long GrpCod);
void Asg_RemoveGroup (long GrpCod);
void Asg_RemoveGroupsOfType (long GrpTypCod);
diff --git a/swad_attendance.c b/swad_attendance.c
index 1877c257..e4ba3f23 100644
--- a/swad_attendance.c
+++ b/swad_attendance.c
@@ -1295,7 +1295,7 @@ static void Att_ShowLstGrpsToEditAttEvent (long AttCod)
/*************** Receive form to create a new attendance event ***************/
/*****************************************************************************/
-void Att_RecFormAttEvent (void)
+void Att_ReceiveFormAttEvent (void)
{
extern const char *Txt_Already_existed_an_event_with_the_title_X;
extern const char *Txt_You_must_specify_the_title_of_the_event;
diff --git a/swad_attendance.h b/swad_attendance.h
index c4c679f1..fe08b524 100644
--- a/swad_attendance.h
+++ b/swad_attendance.h
@@ -97,7 +97,7 @@ void Att_RemoveAttEventFromDB (long AttCod);
void Att_HideAttEvent (void);
void Att_ShowAttEvent (void);
-void Att_RecFormAttEvent (void);
+void Att_ReceiveFormAttEvent (void);
void Att_CreateAttEvent (struct Att_Event *Event,const char *Description);
void Att_UpdateAttEvent (struct Att_Event *Event,const char *Description);
bool Att_CheckIfAttEventIsAssociatedToGrps (long AttCod);
diff --git a/swad_banner.c b/swad_banner.c
index aab1f456..1e6f750b 100644
--- a/swad_banner.c
+++ b/swad_banner.c
@@ -1012,7 +1012,7 @@ static void Ban_PutHeadBanners (void)
/******************* Receive form to create a new banner *********************/
/*****************************************************************************/
-void Ban_RecFormNewBanner (void)
+void Ban_ReceiveFormNewBanner (void)
{
extern const char *Txt_The_banner_X_already_exists;
extern const char *Txt_You_must_specify_the_image_of_the_new_banner;
diff --git a/swad_banner.h b/swad_banner.h
index 8aef618e..9928d8fc 100644
--- a/swad_banner.h
+++ b/swad_banner.h
@@ -71,7 +71,7 @@ void Ban_RenameBannerFull (void);
void Ban_ChangeBannerImg (void);
void Ban_ChangeBannerWWW (void);
void Ban_ContEditAfterChgBan (void);
-void Ban_RecFormNewBanner (void);
+void Ban_ReceiveFormNewBanner (void);
void Ban_WriteMenuWithBanners (void);
void Ban_ClickOnBanner (void);
diff --git a/swad_building.c b/swad_building.c
index f63c29b3..16c39427 100644
--- a/swad_building.c
+++ b/swad_building.c
@@ -888,7 +888,7 @@ static void Bld_PutHeadBuildings (void)
/***************** Receive form to create a new building *********************/
/*****************************************************************************/
-void Bld_RecFormNewBuilding (void)
+void Bld_ReceiveFormNewBuilding (void)
{
extern const char *Txt_The_building_X_already_exists;
extern const char *Txt_Created_new_building_X;
diff --git a/swad_building.h b/swad_building.h
index 754d0b36..6dd44a19 100644
--- a/swad_building.h
+++ b/swad_building.h
@@ -99,6 +99,6 @@ void Bld_RenameBuildingFull (void);
void Bld_ChangeBuildingLocation (void);
void Bld_ContEditAfterChgBuilding (void);
-void Bld_RecFormNewBuilding (void);
+void Bld_ReceiveFormNewBuilding (void);
#endif
diff --git a/swad_centre.c b/swad_centre.c
index 940f81a3..a7415551 100644
--- a/swad_centre.c
+++ b/swad_centre.c
@@ -95,7 +95,7 @@ static void Ctr_PutParamGoToCtr (void *CtrCod);
static void Ctr_PutFormToCreateCentre (const struct Plc_Places *Places);
static void Ctr_PutHeadCentresForSeeing (bool OrderSelectable);
static void Ctr_PutHeadCentresForEdition (void);
-static void Ctr_RecFormRequestOrCreateCtr (unsigned Status);
+static void Ctr_ReceiveFormRequestOrCreateCtr (unsigned Status);
static void Ctr_CreateCentre (unsigned Status);
static unsigned Ctr_GetNumCtrsInCty (long CtyCod);
@@ -1812,33 +1812,33 @@ static void Ctr_PutHeadCentresForEdition (void)
/****************** Receive form to request a new centre *********************/
/*****************************************************************************/
-void Ctr_RecFormReqCtr (void)
+void Ctr_ReceiveFormReqCtr (void)
{
/***** Centre constructor *****/
Ctr_EditingCentreConstructor ();
/***** Receive form to request a new centre *****/
- Ctr_RecFormRequestOrCreateCtr ((unsigned) Ctr_STATUS_BIT_PENDING);
+ Ctr_ReceiveFormRequestOrCreateCtr ((unsigned) Ctr_STATUS_BIT_PENDING);
}
/*****************************************************************************/
/******************* Receive form to create a new centre *********************/
/*****************************************************************************/
-void Ctr_RecFormNewCtr (void)
+void Ctr_ReceiveFormNewCtr (void)
{
/***** Centre constructor *****/
Ctr_EditingCentreConstructor ();
/***** Receive form to create a new centre *****/
- Ctr_RecFormRequestOrCreateCtr (0);
+ Ctr_ReceiveFormRequestOrCreateCtr (0);
}
/*****************************************************************************/
/************* Receive form to request or create a new centre ****************/
/*****************************************************************************/
-static void Ctr_RecFormRequestOrCreateCtr (unsigned Status)
+static void Ctr_ReceiveFormRequestOrCreateCtr (unsigned Status)
{
extern const char *Txt_The_centre_X_already_exists;
extern const char *Txt_Created_new_centre_X;
diff --git a/swad_centre.h b/swad_centre.h
index 235c2da0..d5566ba6 100644
--- a/swad_centre.h
+++ b/swad_centre.h
@@ -129,8 +129,8 @@ void Ctr_UpdateCtrWWWDB (long CtrCod,const char NewWWW[Cns_MAX_BYTES_WWW + 1]);
void Ctr_ChangeCtrStatus (void);
void Ctr_ContEditAfterChgCtr (void);
-void Ctr_RecFormReqCtr (void);
-void Ctr_RecFormNewCtr (void);
+void Ctr_ReceiveFormReqCtr (void);
+void Ctr_ReceiveFormNewCtr (void);
unsigned Ctr_GetCachedNumCtrsInSys (void);
diff --git a/swad_changelog.h b/swad_changelog.h
index 5219ef91..071c70da 100644
--- a/swad_changelog.h
+++ b/swad_changelog.h
@@ -544,12 +544,12 @@ enscript -2 --landscape --color --file-align=2 --highlight --line-numbers -o - *
En OpenSWAD:
ps2pdf source.ps destination.pdf
*/
-#define Log_PLATFORM_VERSION "SWAD 19.211 (2020-05-05)"
+#define Log_PLATFORM_VERSION "SWAD 19.212 (2020-05-05)"
#define CSS_FILE "swad19.193.1.css"
#define JS_FILE "swad19.193.1.js"
/*
-
- Version 19.211: May 05, 2020 Exam events can be hidden. (301215 lines)
+ Version 19.212: May 05, 2020 Icon to edit exam event. (301319 lines)
+ Version 19.211: May 05, 2020 Exam events can be hidden/unhidden. (301215 lines)
1 change necessary in database:
ALTER TABLE exa_events ADD COLUMN Hidden ENUM('N','Y') NOT NULL DEFAULT 'N' AFTER ExaCod;
diff --git a/swad_country.c b/swad_country.c
index a2041d49..8c90d013 100644
--- a/swad_country.c
+++ b/swad_country.c
@@ -1747,7 +1747,7 @@ static void Cty_PutHeadCountriesForEdition (void)
/******************* Receive form to create a new country ********************/
/*****************************************************************************/
-void Cty_RecFormNewCountry (void)
+void Cty_ReceiveFormNewCountry (void)
{
extern const char *Txt_You_must_specify_the_numerical_code_of_the_new_country;
extern const char *Txt_The_numerical_code_X_already_exists;
diff --git a/swad_country.h b/swad_country.h
index 37cfac4b..24365a11 100644
--- a/swad_country.h
+++ b/swad_country.h
@@ -110,7 +110,7 @@ void Cty_RemoveCountry (void);
void Cty_RenameCountry (void);
void Cty_ChangeCtyWWW (void);
void Cty_ContEditAfterChgCty (void);
-void Cty_RecFormNewCountry (void);
+void Cty_ReceiveFormNewCountry (void);
unsigned Cty_GetCachedNumCtysInSys (void);
diff --git a/swad_course.c b/swad_course.c
index bdd32dab..2d5eba50 100644
--- a/swad_course.c
+++ b/swad_course.c
@@ -95,7 +95,7 @@ static Crs_Status_t Crs_GetStatusBitsFromStatusTxt (Crs_StatusTxt_t StatusTxt);
static void Crs_PutFormToCreateCourse (void);
static void Crs_PutHeadCoursesForSeeing (void);
static void Crs_PutHeadCoursesForEdition (void);
-static void Crs_RecFormRequestOrCreateCrs (unsigned Status);
+static void Crs_ReceiveFormRequestOrCreateCrs (unsigned Status);
static void Crs_GetParamsNewCourse (struct Course *Crs);
static void Crs_CreateCourse (unsigned Status);
@@ -1577,33 +1577,33 @@ static void Crs_PutHeadCoursesForEdition (void)
/****************** Receive form to request a new course *********************/
/*****************************************************************************/
-void Crs_RecFormReqCrs (void)
+void Crs_ReceiveFormReqCrs (void)
{
/***** Course constructor *****/
Crs_EditingCourseConstructor ();
/***** Receive form to request a new course *****/
- Crs_RecFormRequestOrCreateCrs ((unsigned) Crs_STATUS_BIT_PENDING);
+ Crs_ReceiveFormRequestOrCreateCrs ((unsigned) Crs_STATUS_BIT_PENDING);
}
/*****************************************************************************/
/******************* Receive form to create a new course *********************/
/*****************************************************************************/
-void Crs_RecFormNewCrs (void)
+void Crs_ReceiveFormNewCrs (void)
{
/***** Course constructor *****/
Crs_EditingCourseConstructor ();
/***** Receive form to create a new course *****/
- Crs_RecFormRequestOrCreateCrs (0);
+ Crs_ReceiveFormRequestOrCreateCrs (0);
}
/*****************************************************************************/
/************* Receive form to request or create a new course ****************/
/*****************************************************************************/
-static void Crs_RecFormRequestOrCreateCrs (unsigned Status)
+static void Crs_ReceiveFormRequestOrCreateCrs (unsigned Status)
{
extern const char *Txt_The_course_X_already_exists;
extern const char *Txt_Created_new_course_X;
diff --git a/swad_course.h b/swad_course.h
index 7cd181c3..618661bd 100644
--- a/swad_course.h
+++ b/swad_course.h
@@ -127,8 +127,8 @@ void Crs_WriteSelectorMyCoursesInBreadcrumb (void);
void Crs_EditCourses (void);
-void Crs_RecFormReqCrs (void);
-void Crs_RecFormNewCrs (void);
+void Crs_ReceiveFormReqCrs (void);
+void Crs_ReceiveFormNewCrs (void);
void Crs_RemoveCourse (void);
bool Crs_GetDataOfCourseByCod (struct Course *Crs);
diff --git a/swad_database.c b/swad_database.c
index b94a722a..a74bdb4b 100644
--- a/swad_database.c
+++ b/swad_database.c
@@ -1067,7 +1067,7 @@ mysql> DESCRIBE exa_events;
"UsrCod INT NOT NULL,"
"StartTime DATETIME NOT NULL,"
"EndTime DATETIME NOT NULL,"
- "Title VARCHAR(2047) NOT NULL," // Gam_MAX_BYTES_TITLE
+ "Title VARCHAR(2047) NOT NULL," // ExaEvt_MAX_BYTES_TITLE
"QstInd INT NOT NULL DEFAULT 0,"
"QstCod INT NOT NULL DEFAULT -1,"
"Showing ENUM('start','stem','answers','results','end') NOT NULL DEFAULT 'start',"
diff --git a/swad_degree.c b/swad_degree.c
index cfbe0e0d..b8927f05 100644
--- a/swad_degree.c
+++ b/swad_degree.c
@@ -91,7 +91,7 @@ static void Deg_ListOneDegreeForSeeing (struct Degree *Deg,unsigned NumDeg);
static void Deg_EditDegreesInternal (void);
static void Deg_PutIconsEditingDegrees (__attribute__((unused)) void *Args);
-static void Deg_RecFormRequestOrCreateDeg (unsigned Status);
+static void Deg_ReceiveFormRequestOrCreateDeg (unsigned Status);
static void Deg_PutParamOtherDegCod (long DegCod);
static void Deg_GetDataOfDegreeFromRow (struct Degree *Deg,MYSQL_ROW row);
@@ -1170,33 +1170,33 @@ void Deg_FreeListDegs (struct ListDegrees *Degs)
/****************** Receive form to request a new degree *********************/
/*****************************************************************************/
-void Deg_RecFormReqDeg (void)
+void Deg_ReceiveFormReqDeg (void)
{
/***** Degree constructor *****/
Deg_EditingDegreeConstructor ();
/***** Receive form to request a new degree *****/
- Deg_RecFormRequestOrCreateDeg ((unsigned) Deg_STATUS_BIT_PENDING);
+ Deg_ReceiveFormRequestOrCreateDeg ((unsigned) Deg_STATUS_BIT_PENDING);
}
/*****************************************************************************/
/******************* Receive form to create a new degree *********************/
/*****************************************************************************/
-void Deg_RecFormNewDeg (void)
+void Deg_ReceiveFormNewDeg (void)
{
/***** Degree constructor *****/
Deg_EditingDegreeConstructor ();
/***** Receive form to create a new degree *****/
- Deg_RecFormRequestOrCreateDeg (0);
+ Deg_ReceiveFormRequestOrCreateDeg (0);
}
/*****************************************************************************/
/******************* Receive form to create a new degree *********************/
/*****************************************************************************/
-static void Deg_RecFormRequestOrCreateDeg (unsigned Status)
+static void Deg_ReceiveFormRequestOrCreateDeg (unsigned Status)
{
extern const char *Txt_The_degree_X_already_exists;
extern const char *Txt_Created_new_degree_X;
diff --git a/swad_degree.h b/swad_degree.h
index e84f751f..c2639c61 100644
--- a/swad_degree.h
+++ b/swad_degree.h
@@ -107,8 +107,8 @@ void Deg_GetListAllDegsWithStds (struct ListDegrees *Degs);
void Deg_GetListDegsInCurrentCtr (void);
void Deg_FreeListDegs (struct ListDegrees *Degs);
-void Deg_RecFormReqDeg (void);
-void Deg_RecFormNewDeg (void);
+void Deg_ReceiveFormReqDeg (void);
+void Deg_ReceiveFormNewDeg (void);
void Deg_RemoveDegree (void);
void Deg_PutParamDegCod (long DegCod);
diff --git a/swad_degree_type.c b/swad_degree_type.c
index 7527fcdc..76c7c5b3 100644
--- a/swad_degree_type.c
+++ b/swad_degree_type.c
@@ -749,7 +749,7 @@ void DT_FreeListDegreeTypes (void)
/***************** Receive form to create a new degree type ******************/
/*****************************************************************************/
-void DT_RecFormNewDegreeType (void)
+void DT_ReceiveFormNewDegreeType (void)
{
extern const char *Txt_The_type_of_degree_X_already_exists;
extern const char *Txt_Created_new_type_of_degree_X;
diff --git a/swad_degree_type.h b/swad_degree_type.h
index 7e175853..1dee8cc7 100644
--- a/swad_degree_type.h
+++ b/swad_degree_type.h
@@ -71,7 +71,7 @@ bool DT_CheckIfICanCreateDegreeTypes (void);
void DT_GetListDegreeTypes (Hie_Level_t Scope,DT_Order_t Order);
void DT_FreeListDegreeTypes (void);
-void DT_RecFormNewDegreeType (void);
+void DT_ReceiveFormNewDegreeType (void);
void DT_RemoveDegreeType (void);
diff --git a/swad_department.c b/swad_department.c
index 357b204d..4145fd63 100644
--- a/swad_department.c
+++ b/swad_department.c
@@ -1018,7 +1018,7 @@ static void Dpt_PutHeadDepartments (void)
/***************** Receive form to create a new department *******************/
/*****************************************************************************/
-void Dpt_RecFormNewDpt (void)
+void Dpt_ReceiveFormNewDpt (void)
{
extern const char *Txt_The_department_X_already_exists;
extern const char *Txt_Created_new_department_X;
diff --git a/swad_department.h b/swad_department.h
index b6c46f9e..87dab5e7 100644
--- a/swad_department.h
+++ b/swad_department.h
@@ -77,7 +77,7 @@ void Dpt_RenameDepartFull (void);
void Dpt_ChangeDptWWW (void);
void Dpt_ContEditAfterChgDpt (void);
-void Dpt_RecFormNewDpt (void);
+void Dpt_ReceiveFormNewDpt (void);
unsigned Dpt_GetTotalNumberOfDepartments (void);
void Dpt_FlushCacheNumDptsInIns (void);
unsigned Dpt_GetNumDptsInIns (long InsCod);
diff --git a/swad_exam.c b/swad_exam.c
index 18eb867c..d56a41ac 100644
--- a/swad_exam.c
+++ b/swad_exam.c
@@ -38,6 +38,7 @@
#include "swad_exam.h"
#include "swad_exam_event.h"
#include "swad_exam_result.h"
+#include "swad_exam_type.h"
#include "swad_figure.h"
#include "swad_form.h"
#include "swad_global.h"
@@ -486,12 +487,12 @@ void Exa_SeeOneExam (void)
{
struct Exa_Exams Exams;
struct Exa_Exam Exam;
+ struct ExaEvt_Event Event;
/***** Reset exams context *****/
Exa_ResetExams (&Exams);
-
- /***** Reset exam *****/
Exa_ResetExam (&Exam);
+ ExaEvt_ResetEvent (&Event);
/***** Get parameters *****/
Exa_GetParams (&Exams);
@@ -504,8 +505,8 @@ void Exa_SeeOneExam (void)
Exams.ExaCod = Exam.ExaCod;
/***** Show exam *****/
- Exa_ShowOnlyOneExam (&Exams,&Exam,
- false); // Do not put form to start new event
+ Exa_ShowOnlyOneExam (&Exams,&Exam,&Event,
+ false); // Do not put form for event
}
/*****************************************************************************/
@@ -514,15 +515,17 @@ void Exa_SeeOneExam (void)
void Exa_ShowOnlyOneExam (struct Exa_Exams *Exams,
struct Exa_Exam *Exam,
- bool PutFormNewMatch)
+ struct ExaEvt_Event *Event,
+ bool PutFormEvent)
{
- Exa_ShowOnlyOneExamBegin (Exams,Exam,PutFormNewMatch);
+ Exa_ShowOnlyOneExamBegin (Exams,Exam,Event,PutFormEvent);
Exa_ShowOnlyOneExamEnd ();
}
void Exa_ShowOnlyOneExamBegin (struct Exa_Exams *Exams,
struct Exa_Exam *Exam,
- bool PutFormNewMatch)
+ struct ExaEvt_Event *Event,
+ bool PutFormEvent)
{
extern const char *Hlp_ASSESSMENT_Exams;
extern const char *Txt_Exam;
@@ -539,7 +542,7 @@ void Exa_ShowOnlyOneExamBegin (struct Exa_Exams *Exams,
true); // Show only this exam
/***** List events *****/
- ExaEvt_ListEvents (Exams,Exam,PutFormNewMatch);
+ ExaEvt_ListEvents (Exams,Exam,Event,PutFormEvent);
}
void Exa_ShowOnlyOneExamEnd (void)
@@ -764,11 +767,11 @@ static void Exa_PutIconsToRemEditOneExam (struct Exa_Exams *Exams,
{
Exams->ExaCod = Exam->ExaCod;
- /***** Put icon to remove exam *****/
+ /***** Icon to remove exam *****/
Ico_PutContextualIconToRemove (ActReqRemExa,
Exa_PutParams,Exams);
- /***** Put icon to unhide/hide exam *****/
+ /***** Icon to unhide/hide exam *****/
if (Exam->Hidden)
Ico_PutContextualIconToUnhide (ActShoExa,Anchor,
Exa_PutParams,Exams);
@@ -776,7 +779,7 @@ static void Exa_PutIconsToRemEditOneExam (struct Exa_Exams *Exams,
Ico_PutContextualIconToHide (ActHidExa,Anchor,
Exa_PutParams,Exams);
- /***** Put icon to edit exam *****/
+ /***** Icon to edit exam *****/
Ico_PutContextualIconToEdit (ActEdiOneExa,NULL,
Exa_PutParams,Exams);
}
@@ -1276,8 +1279,6 @@ void Exa_AskRemExam (void)
/***** Reset exams context *****/
Exa_ResetExams (&Exams);
-
- /***** Reset exam *****/
Exa_ResetExam (&Exam);
/***** Get parameters *****/
@@ -1318,8 +1319,6 @@ void Exa_RemoveExam (void)
/***** Reset exams context *****/
Exa_ResetExams (&Exams);
-
- /***** Reset exam *****/
Exa_ResetExam (&Exam);
/***** Get exam code *****/
@@ -1400,8 +1399,6 @@ void Exa_HideExam (void)
/***** Reset exams context *****/
Exa_ResetExams (&Exams);
-
- /***** Reset exam *****/
Exa_ResetExam (&Exam);
/***** Get parameters *****/
@@ -1438,8 +1435,6 @@ void Exa_UnhideExam (void)
/***** Reset exams context *****/
Exa_ResetExams (&Exams);
-
- /***** Reset exam *****/
Exa_ResetExam (&Exam);
/***** Get parameters *****/
@@ -1512,8 +1507,6 @@ void Exa_RequestCreatOrEditExam (void)
/***** Reset exams context *****/
Exa_ResetExams (&Exams);
-
- /***** Reset exam and set *****/
Exa_ResetExam (&Exam);
ExaSet_ResetSet (&Set);
@@ -1639,7 +1632,7 @@ static void ExaSet_PutFormNewSet (struct Exa_Exams *Exams,
/**************** Receive form to create a new set of questions **************/
/*****************************************************************************/
-void ExaSet_RecFormSet (void)
+void ExaSet_ReceiveFormSet (void)
{
struct Exa_Exams Exams;
struct Exa_Exam Exam;
@@ -1652,8 +1645,6 @@ void ExaSet_RecFormSet (void)
/***** Reset exams context *****/
Exa_ResetExams (&Exams);
-
- /***** Reset exam and set *****/
Exa_ResetExam (&Exam);
ExaSet_ResetSet (&Set);
@@ -1747,8 +1738,6 @@ void ExaSet_ChangeSetTitle (void)
/***** Reset exams context *****/
Exa_ResetExams (&Exams);
-
- /***** Reset exam and set *****/
Exa_ResetExam (&Exam);
ExaSet_ResetSet (&Set);
@@ -1803,8 +1792,6 @@ void ExaSet_ChangeNumQstsToExam (void)
/***** Reset exams context *****/
Exa_ResetExams (&Exams);
-
- /***** Reset exam and set *****/
Exa_ResetExam (&Exam);
ExaSet_ResetSet (&Set);
@@ -1957,7 +1944,7 @@ static void Exa_PutFormEditionExam (struct Exa_Exams *Exams,
/********************** Receive form to create a new exam ********************/
/*****************************************************************************/
-void Exa_RecFormExam (void)
+void Exa_ReceiveFormExam (void)
{
struct Exa_Exams Exams;
struct Exa_Exam Exam;
@@ -1971,8 +1958,6 @@ void Exa_RecFormExam (void)
/***** Reset exams context *****/
Exa_ResetExams (&Exams);
-
- /***** Reset exam and set *****/
Exa_ResetExam (&Exam);
ExaSet_ResetSet (&Set);
@@ -2254,8 +2239,6 @@ void ExaSet_RequestCreatOrEditSet (void)
/***** Reset exams context *****/
Exa_ResetExams (&Exams);
-
- /***** Reset exam and set *****/
Exa_ResetExam (&Exam);
ExaSet_ResetSet (&Set);
@@ -2301,8 +2284,6 @@ void ExaSet_ReqSelectQstsToAddToSet (void)
/***** Reset exams context *****/
Exa_ResetExams (&Exams);
-
- /***** Reset exam and set *****/
Exa_ResetExam (&Exam);
ExaSet_ResetSet (&Set);
@@ -2353,8 +2334,6 @@ void ExaSet_ListQstsToAddToSet (void)
/***** Reset exams context *****/
Exa_ResetExams (&Exams);
-
- /***** Reset exam and set *****/
Exa_ResetExam (&Exam);
ExaSet_ResetSet (&Set);
@@ -3141,8 +3120,6 @@ void ExaSet_AddQstsToSet (void)
/***** Reset exams context *****/
Exa_ResetExams (&Exams);
-
- /***** Reset exam and set *****/
Exa_ResetExam (&Exam);
ExaSet_ResetSet (&Set);
@@ -3253,8 +3230,6 @@ void ExaSet_RequestRemoveSet (void)
/***** Reset exams context *****/
Exa_ResetExams (&Exams);
-
- /***** Reset exam and set *****/
Exa_ResetExam (&Exam);
ExaSet_ResetSet (&Set);
@@ -3302,8 +3277,6 @@ void ExaSet_RemoveSet (void)
/***** Reset exams context *****/
Exa_ResetExams (&Exams);
-
- /***** Reset exam and set *****/
Exa_ResetExam (&Exam);
ExaSet_ResetSet (&Set);
@@ -3374,8 +3347,6 @@ void ExaSet_MoveUpSet (void)
/***** Reset exams context *****/
Exa_ResetExams (&Exams);
-
- /***** Reset exam and set *****/
Exa_ResetExam (&Exam);
ExaSet_ResetSet (&Set);
@@ -3436,8 +3407,6 @@ void ExaSet_MoveDownSet (void)
/***** Reset exams context *****/
Exa_ResetExams (&Exams);
-
- /***** Reset exam and set *****/
Exa_ResetExam (&Exam);
ExaSet_ResetSet (&Set);
@@ -3500,8 +3469,6 @@ void ExaSet_RequestRemoveQstFromSet (void)
/***** Reset exams context *****/
Exa_ResetExams (&Exams);
-
- /***** Reset exam and set *****/
Exa_ResetExam (&Exam);
ExaSet_ResetSet (&Set);
@@ -3559,8 +3526,6 @@ void ExaSet_RemoveQstFromSet (void)
/***** Reset exams context *****/
Exa_ResetExams (&Exams);
-
- /***** Reset exam and set *****/
Exa_ResetExam (&Exam);
ExaSet_ResetSet (&Set);
diff --git a/swad_exam.h b/swad_exam.h
index 6bdca1d2..5d0d7915 100644
--- a/swad_exam.h
+++ b/swad_exam.h
@@ -28,88 +28,15 @@
/********************************* Headers ***********************************/
/*****************************************************************************/
-#include "swad_date.h"
-#include "swad_scope.h"
+// #include "swad_date.h"
+// #include "swad_exam_event.h"
+#include "swad_exam_type.h"
+// #include "swad_scope.h"
/*****************************************************************************/
/************************** Public types and constants ***********************/
/*****************************************************************************/
-#define Exa_MAX_CHARS_TITLE (128 - 1) // 127
-#define Exa_MAX_BYTES_TITLE ((Exa_MAX_CHARS_TITLE + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 2047
-
-#define ExaSet_MAX_CHARS_TITLE (128 - 1) // 127
-#define ExaSet_MAX_BYTES_TITLE ((ExaSet_MAX_CHARS_TITLE + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 2047
-
-#define Exa_NUM_ORDERS 3
-typedef enum
- {
- Exa_ORDER_BY_START_DATE = 0,
- Exa_ORDER_BY_END_DATE = 1,
- Exa_ORDER_BY_TITLE = 2,
- } Exa_Order_t;
-#define Exa_ORDER_DEFAULT Exa_ORDER_BY_START_DATE
-
-#define Exa_NUM_ANS_TYPES 2
-typedef enum
- {
- Exa_ANS_UNIQUE_CHOICE = 0,
- Exa_ANS_MULTIPLE_CHOICE = 1,
- } Exa_AnswerType_t;
-#define Exa_ANSWER_TYPE_DEFAULT Exa_ANS_UNIQUE_CHOICE
-
-struct Exa_ExamSelected
- {
- long ExaCod; // Exam code
- bool Selected; // Is this exam selected when seeing match results?
- };
-
-/* Exams context */
-struct Exa_Exams
- {
- bool LstIsRead; // Is the list already read from database...
- // ...or it needs to be read?
- unsigned Num; // Total number of exams
- unsigned NumSelected; // Number of exams selected
- struct Exa_ExamSelected *Lst;// List of exams
- Exa_Order_t SelectedOrder;
- unsigned CurrentPage;
- char *ListQuestions;
- char *ExaCodsSelected; // String with selected exam codes separated by separator multiple
- long ExaCod; // Selected/current exam code
- long SetCod; // Selected/current set code
- long EvtCod; // Selected/current match code
- unsigned SetInd; // Current set index
- long QstCod; // Current question code
- };
-
-struct Exa_Exam
- {
- long ExaCod; // Exam code
- long CrsCod; // Course code
- long UsrCod; // Author code
- double MaxGrade; // Score range [0...max.score]
- // will be converted to
- // grade range [0...max.grade]
- unsigned Visibility; // Visibility of results
- char Title[Exa_MAX_BYTES_TITLE + 1];
- time_t TimeUTC[Dat_NUM_START_END_TIME];
- bool Hidden; // Exam is hidden
- unsigned NumSets; // Number of sets in the exam
- unsigned NumQsts; // Number of questions in the exam
- unsigned NumEvts; // Number of events in the exam
- unsigned NumUnfinishedEvts; // Number of unfinished events in the exam
- };
-
-struct ExaSet_Set
- {
- long ExaCod; // Exam code
- long SetCod; // Set code
- unsigned SetInd; // Set index (position in the exam)
- unsigned NumQstsToExam; // Number of questions in this set taht will appear in the exam
- char Title[ExaSet_MAX_BYTES_TITLE + 1]; // Title of the set
- };
-
/*****************************************************************************/
/***************************** Public prototypes *****************************/
/*****************************************************************************/
@@ -121,10 +48,12 @@ void Exa_SeeAllExams (void);
void Exa_SeeOneExam (void);
void Exa_ShowOnlyOneExam (struct Exa_Exams *Exams,
struct Exa_Exam *Exam,
- bool PutFormNewMatch);
+ struct ExaEvt_Event *Event,
+ bool PutFormEvent);
void Exa_ShowOnlyOneExamBegin (struct Exa_Exams *Exams,
struct Exa_Exam *Exam,
- bool PutFormNewMatch);
+ struct ExaEvt_Event *Event,
+ bool PutFormEvent);
void Exa_ShowOnlyOneExamEnd (void);
void Exa_SetCurrentExaCod (long ExaCod);
@@ -150,11 +79,11 @@ void Exa_UnhideExam (void);
void Exa_RequestCreatOrEditExam (void);
-void ExaSet_RecFormSet (void);
+void ExaSet_ReceiveFormSet (void);
void ExaSet_ChangeSetTitle (void);
void ExaSet_ChangeNumQstsToExam (void);
-void Exa_RecFormExam (void);
+void Exa_ReceiveFormExam (void);
bool Mch_CheckIfMatchIsAssociatedToGrp (long EvtCod,long GrpCod);
unsigned ExaSet_GetNumSetsExam (long ExaCod);
diff --git a/swad_exam_event.c b/swad_exam_event.c
index 9652843d..35274aba 100644
--- a/swad_exam_event.c
+++ b/swad_exam_event.c
@@ -37,6 +37,7 @@
#include "swad_exam.h"
#include "swad_exam_event.h"
#include "swad_exam_result.h"
+#include "swad_exam_type.h"
#include "swad_form.h"
#include "swad_global.h"
#include "swad_HTML.h"
@@ -108,6 +109,7 @@ static void ExaEvt_PutIconToCreateNewEvent (struct Exa_Exams *Exams);
static void ExaEvt_ListOneOrMoreEvents (struct Exa_Exams *Exams,
const struct Exa_Exam *Exam,
+ long EvtCodToBeEdited,
unsigned NumEvents,
MYSQL_RES *mysql_res);
static void ExaEvt_ListOneOrMoreEventsHeading (bool ICanEditEvents);
@@ -285,14 +287,16 @@ void ExaEvt_ResetEvent (struct ExaEvt_Event *Event)
void ExaEvt_ListEvents (struct Exa_Exams *Exams,
struct Exa_Exam *Exam,
- bool PutFormNewEvent)
+ struct ExaEvt_Event *Event,
+ bool PutFormEvent)
{
extern const char *Hlp_ASSESSMENT_Exams_events;
extern const char *Txt_Events;
char *SubQuery;
MYSQL_RES *mysql_res;
unsigned NumEvents;
- struct ExaEvt_Event Event;
+ long EvtCodToBeEdited;
+ bool PutFormNewEvent;
/***** Get data of events from database *****/
/* Fill subquery for exam */
@@ -355,8 +359,12 @@ void ExaEvt_ListEvents (struct Exa_Exams *Exams,
}
if (NumEvents)
+ {
/***** Show the table with the events *****/
- ExaEvt_ListOneOrMoreEvents (Exams,Exam,NumEvents,mysql_res);
+ EvtCodToBeEdited = PutFormEvent && Event->EvtCod > 0 ? Event->EvtCod :
+ -1L;
+ ExaEvt_ListOneOrMoreEvents (Exams,Exam,EvtCodToBeEdited,NumEvents,mysql_res);
+ }
/***** Free structure that stores the query result *****/
DB_FreeMySQLResult (&mysql_res);
@@ -367,18 +375,19 @@ void ExaEvt_ListEvents (struct Exa_Exams *Exams,
case Rol_NET:
case Rol_TCH:
case Rol_SYS_ADM:
+ PutFormNewEvent = PutFormEvent && Event->EvtCod <= 0;
if (PutFormNewEvent)
{
/* Reset event */
- ExaEvt_ResetEvent (&Event);
- Event.ExaCod = Exam->ExaCod;
- Event.TimeUTC[Dat_START_TIME] = Gbl.StartExecutionTimeUTC; // Now
- Event.TimeUTC[Dat_END_TIME ] = Gbl.StartExecutionTimeUTC + (1 * 60 * 60); // Now + 1 hour
- Str_Copy (Event.Title,Exam->Title,
- Exa_MAX_BYTES_TITLE);
+ ExaEvt_ResetEvent (Event);
+ Event->ExaCod = Exam->ExaCod;
+ Event->TimeUTC[Dat_START_TIME] = Gbl.StartExecutionTimeUTC; // Now
+ Event->TimeUTC[Dat_END_TIME ] = Gbl.StartExecutionTimeUTC + (1 * 60 * 60); // Now + 1 hour
+ Str_Copy (Event->Title,Exam->Title,
+ ExaEvt_MAX_BYTES_TITLE);
/* Put form to create new event */
- ExaEvt_PutFormNewEvent (&Event); // Form to fill in data and start playing a new exam event
+ ExaEvt_PutFormNewEvent (Event); // Form to fill in data and start playing a new exam event
}
else
ExaEvt_PutButtonNewEvent (Exams,Exam->ExaCod); // Button to create a new exam event
@@ -472,6 +481,7 @@ static void ExaEvt_PutIconToCreateNewEvent (struct Exa_Exams *Exams)
static void ExaEvt_ListOneOrMoreEvents (struct Exa_Exams *Exams,
const struct Exa_Exam *Exam,
+ long EvtCodToBeEdited,
unsigned NumEvents,
MYSQL_RES *mysql_res)
{
@@ -534,9 +544,19 @@ static void ExaEvt_ListOneOrMoreEvents (struct Exa_Exams *Exams,
/* Event result visible? */
ExaEvt_ListOneOrMoreEventsResult (Exams,&Event);
- /***** End row for this exam event ****/
+ /***** End row for this event ****/
HTM_TR_End ();
+ /***** For to edit this event ****/
+ if (Event.EvtCod == EvtCodToBeEdited)
+ {
+ HTM_TR_Begin (NULL);
+ HTM_TD_Begin ("colspan=\"8\" class=\"CT COLOR%u\"",Gbl.RowEvenOdd);
+ Ale_ShowAlert (Ale_INFO,"Form to edit this event."); // TODO: Replace by form
+ HTM_TD_End ();
+ HTM_TR_End ();
+ }
+
/***** Free anchor string *****/
free (Anchor);
}
@@ -622,18 +642,19 @@ static void ExaEvt_ListOneOrMoreEventsIcons (struct Exa_Exams *Exams,
const struct ExaEvt_Event *Event,
const char *Anchor)
{
+ /***** Begin cell *****/
HTM_TD_Begin ("class=\"BT%u\"",Gbl.RowEvenOdd);
Exams->ExaCod = Event->ExaCod;
Exams->EvtCod = Event->EvtCod;
- /* Icon to remove the exam event */
+ /***** Icon to remove the exam event *****/
Frm_StartForm (ActReqRemExaEvt);
ExaEvt_PutParamsEdit (Exams);
Ico_PutIconRemove ();
Frm_EndForm ();
- /* Icon to hide/unhide the exam event */
+ /***** Icon to hide/unhide the exam event *****/
if (Event->Hidden)
Ico_PutContextualIconToUnhide (ActShoExaEvt,Anchor,
ExaEvt_PutParamsEdit,Exams);
@@ -641,8 +662,11 @@ static void ExaEvt_ListOneOrMoreEventsIcons (struct Exa_Exams *Exams,
Ico_PutContextualIconToHide (ActHidExaEvt,Anchor,
ExaEvt_PutParamsEdit,Exams);
- /* Icon to edit the exam event */
+ /***** Icon to edit the exam event *****/
+ Ico_PutContextualIconToEdit (ActEdiOneExaEvt,NULL,
+ ExaEvt_PutParamsEdit,Exams);
+ /***** End cell *****/
HTM_TD_End ();
}
@@ -941,8 +965,6 @@ void ExaEvt_ToggleVisibilResultsEvtUsr (void)
/***** Reset exams context *****/
Exa_ResetExams (&Exams);
-
- /***** Reset exam and event *****/
Exa_ResetExam (&Exam);
ExaEvt_ResetEvent (&Event);
@@ -964,8 +986,8 @@ void ExaEvt_ToggleVisibilResultsEvtUsr (void)
Event.EvtCod);
/***** Show current exam *****/
- Exa_ShowOnlyOneExam (&Exams,&Exam,
- false); // Do not put form to start new exam event
+ Exa_ShowOnlyOneExam (&Exams,&Exam,&Event,
+ false); // Do not put form for event
}
/*****************************************************************************/
@@ -990,8 +1012,8 @@ static void ExaEvt_GetEventDataFromRow (MYSQL_RES *mysql_res,
row[ 5] UNIX_TIMESTAMP(EndTime)
row[ 6] Title
*/
- /***** Get exam event data *****/
- /* Code of the exam event (row[0]) */
+ /***** Get event data *****/
+ /* Code of the event (row[0]) */
if ((Event->EvtCod = Str_ConvertStrCodToLongCod (row[0])) <= 0)
Lay_ShowErrorAndExit ("Wrong code of exam event.");
@@ -999,10 +1021,10 @@ static void ExaEvt_GetEventDataFromRow (MYSQL_RES *mysql_res,
if ((Event->ExaCod = Str_ConvertStrCodToLongCod (row[1])) <= 0)
Lay_ShowErrorAndExit ("Wrong code of exam.");
- /* Get whether the exam is hidden (row[2]) */
+ /* Get whether the event is hidden (row[2]) */
Event->Hidden = (row[2][0] == 'Y');
- /* Get exam event teacher (row[3]) */
+ /* Get event teacher (row[3]) */
Event->UsrCod = Str_ConvertStrCodToLongCod (row[3]);
/* Get start/end times (row[4], row[5] hold start/end UTC times) */
@@ -1011,14 +1033,14 @@ static void ExaEvt_GetEventDataFromRow (MYSQL_RES *mysql_res,
StartEndTime++)
Event->TimeUTC[StartEndTime] = Dat_GetUNIXTimeFromStr (row[4 + StartEndTime]);
- /* Get the title of the exam (row[6]) */
+ /* Get the title of the event (row[6]) */
if (row[6])
Str_Copy (Event->Title,row[6],
- Exa_MAX_BYTES_TITLE);
+ ExaEvt_MAX_BYTES_TITLE);
else
Event->Title[0] = '\0';
- /***** Get current exam event status *****/
+ /***** Get current event status *****/
/*
row[ 7] QstInd
row[ 8] QstCod
@@ -1090,8 +1112,6 @@ void ExaEvt_RequestRemoveEvent (void)
/***** Reset exams context *****/
Exa_ResetExams (&Exams);
-
- /***** Reset exam and event *****/
Exa_ResetExam (&Exam);
ExaEvt_ResetEvent (&Event);
@@ -1108,8 +1128,8 @@ void ExaEvt_RequestRemoveEvent (void)
Event.Title);
/***** Show current exam *****/
- Exa_ShowOnlyOneExam (&Exams,&Exam,
- false); // Do not put form to start new exam event
+ Exa_ShowOnlyOneExam (&Exams,&Exam,&Event,
+ false); // Do not put form for event
}
/*****************************************************************************/
@@ -1125,8 +1145,6 @@ void ExaEvt_RemoveEvent (void)
/***** Reset exams context *****/
Exa_ResetExams (&Exams);
-
- /***** Reset exam and event *****/
Exa_ResetExam (&Exam);
ExaEvt_ResetEvent (&Event);
@@ -1145,8 +1163,8 @@ void ExaEvt_RemoveEvent (void)
Event.Title);
/***** Show current exam *****/
- Exa_ShowOnlyOneExam (&Exams,&Exam,
- false); // Do not put form to start new exam event
+ Exa_ShowOnlyOneExam (&Exams,&Exam,&Event,
+ false); // Do not put form for event
}
/*****************************************************************************/
@@ -1297,8 +1315,6 @@ void ExaEvt_HideEvent (void)
/***** Reset exams context *****/
Exa_ResetExams (&Exams);
-
- /***** Reset exam and event *****/
Exa_ResetExam (&Exam);
ExaEvt_ResetEvent (&Event);
@@ -1317,8 +1333,8 @@ void ExaEvt_HideEvent (void)
Event.EvtCod,Event.ExaCod);
/***** Show current exam *****/
- Exa_ShowOnlyOneExam (&Exams,&Exam,
- false); // Do not put form to start new exam event
+ Exa_ShowOnlyOneExam (&Exams,&Exam,&Event,
+ false); // Do not put form for event
}
/*****************************************************************************/
@@ -1333,8 +1349,6 @@ void ExaEvt_UnhideEvent (void)
/***** Reset exams context *****/
Exa_ResetExams (&Exams);
-
- /***** Reset exam and event *****/
Exa_ResetExam (&Exam);
ExaEvt_ResetEvent (&Event);
@@ -1353,8 +1367,8 @@ void ExaEvt_UnhideEvent (void)
Event.EvtCod,Event.ExaCod);
/***** Show current exam *****/
- Exa_ShowOnlyOneExam (&Exams,&Exam,
- false); // Do not put form to start new exam event
+ Exa_ShowOnlyOneExam (&Exams,&Exam,&Event,
+ false); // Do not put form for event
}
/*****************************************************************************/
@@ -1411,6 +1425,8 @@ void ExaEvt_GetAndCheckParameters (struct Exa_Exams *Exams,
/***** Get exam data and event from database *****/
Exa_GetDataOfExamByCod (Exam);
+ if (Exam->CrsCod != Gbl.Hierarchy.Crs.CrsCod)
+ Lay_WrongExamExit ();
Exams->ExaCod = Exam->ExaCod;
ExaEvt_GetDataOfEventByCod (Event);
@@ -1469,7 +1485,7 @@ static void ExaEvt_PutFormNewEvent (const struct ExaEvt_Event *Event)
/* Data */
HTM_TD_Begin ("class=\"LT\"");
- HTM_INPUT_TEXT ("Title",Exa_MAX_CHARS_TITLE,Event->Title,
+ HTM_INPUT_TEXT ("Title",ExaEvt_MAX_CHARS_TITLE,Event->Title,
HTM_DONT_SUBMIT_ON_CHANGE,
"id=\"Title\" size=\"45\" required=\"required\"");
HTM_TD_End ();
@@ -1574,40 +1590,59 @@ void ExaEvt_PutButtonNewEvent (struct Exa_Exams *Exams,long ExaCod)
}
/*****************************************************************************/
-/************* Request the creation of a new event as a teacher **************/
+/******************* Request the creation of a new event *********************/
/*****************************************************************************/
-void ExaEvt_RequestNewEvent (void)
+void ExaEvt_RequestCreatOrEditEvent (void)
{
struct Exa_Exams Exams;
struct Exa_Exam Exam;
+ struct ExaEvt_Event Event;
+ bool ItsANewEvent;
/***** Reset exams context *****/
Exa_ResetExams (&Exams);
-
- /***** Reset exam *****/
Exa_ResetExam (&Exam);
+ ExaEvt_ResetEvent (&Event);
/***** Get parameters *****/
Exa_GetParams (&Exams);
if (Exams.ExaCod <= 0)
Lay_WrongExamExit ();
Exam.ExaCod = Exams.ExaCod;
+ Grp_GetParamWhichGroups ();
+ Event.EvtCod = ExaEvt_GetParamEvtCod ();
+ ItsANewEvent = (Event.EvtCod <= 0);
/***** Get exam data from database *****/
Exa_GetDataOfExamByCod (&Exam);
+ if (Exam.CrsCod != Gbl.Hierarchy.Crs.CrsCod)
+ Lay_WrongExamExit ();
Exams.ExaCod = Exam.ExaCod;
+ /***** Get event data *****/
+ if (ItsANewEvent)
+ /* Initialize to empty event */
+ ExaEvt_ResetEvent (&Event);
+ else
+ {
+ /* Get event data from database */
+ ExaEvt_GetDataOfEventByCod (&Event);
+ if (Exam.ExaCod != Event.ExaCod)
+ Lay_WrongExamExit ();
+ Exams.EvtCod = Event.EvtCod;
+ }
+
/***** Show exam *****/
- Exa_ShowOnlyOneExam (&Exams,&Exam,
- true); // Put form to start new event
+ Exa_ShowOnlyOneExam (&Exams,&Exam,&Event,
+ true); // Put form for event
}
/*****************************************************************************/
/******************* Create a new exam event (by a teacher) ******************/
/*****************************************************************************/
-void ExaEvt_CreateNewEventTch (void)
+void ExaEvt_ReceiveFormEvent (void)
{
extern const char *Txt_Created_new_event_X;
struct Exa_Exams Exams;
@@ -1616,8 +1651,6 @@ void ExaEvt_CreateNewEventTch (void)
/***** Reset exams context *****/
Exa_ResetExams (&Exams);
-
- /***** Reset exam and event *****/
Exa_ResetExam (&Exam);
ExaEvt_ResetEvent (&Event);
@@ -1628,7 +1661,7 @@ void ExaEvt_CreateNewEventTch (void)
Lay_WrongExamExit ();
/* Get event title */
- Par_GetParToText ("Title",Event.Title,Exa_MAX_BYTES_TITLE);
+ Par_GetParToText ("Title",Event.Title,ExaEvt_MAX_BYTES_TITLE);
/* Get start/end date-times */
Event.TimeUTC[Dat_START_TIME] = Dat_GetTimeUTCFromForm ("StartTimeUTC");
@@ -1640,6 +1673,8 @@ void ExaEvt_CreateNewEventTch (void)
/***** Get exam data from database *****/
Exam.ExaCod = Exams.ExaCod;
Exa_GetDataOfExamByCod (&Exam);
+ if (Exam.CrsCod != Gbl.Hierarchy.Crs.CrsCod)
+ Lay_WrongExamExit ();
Event.ExaCod = Exams.ExaCod = Exam.ExaCod;
/***** Create a new exam event *****/
@@ -1653,8 +1688,8 @@ void ExaEvt_CreateNewEventTch (void)
Event.Title);
/***** Show current exam *****/
- Exa_ShowOnlyOneExam (&Exams,&Exam,
- false); // Do not put form to start new exam event
+ Exa_ShowOnlyOneExam (&Exams,&Exam,&Event,
+ false); // Do not put form for event
}
/*****************************************************************************/
diff --git a/swad_exam_event.h b/swad_exam_event.h
index 4d267bd8..45f3b9c6 100644
--- a/swad_exam_event.h
+++ b/swad_exam_event.h
@@ -27,7 +27,7 @@
/********************************* Headers ***********************************/
/*****************************************************************************/
-#include "swad_scope.h"
+#include "swad_exam_type.h"
#include "swad_test.h"
/*****************************************************************************/
@@ -38,42 +38,6 @@
#define ExaEvt_AFTER_LAST_QUESTION ((unsigned)((1UL << 31) - 1)) // 2^31 - 1, don't change this number because it is used in database to indicate that a event is finished
-#define ExaEvt_NUM_SHOWING 5
-typedef enum
- {
- ExaEvt_START, // Start: don't show anything
- ExaEvt_STEM, // Showing only the question stem
- ExaEvt_ANSWERS, // Showing the question stem and the answers
- ExaEvt_RESULTS, // Showing the results
- ExaEvt_END, // End: don't show anything
- } ExaEvt_Showing_t;
-#define ExaEvt_SHOWING_DEFAULT ExaEvt_START
-
-struct ExaEvt_Event
- {
- long EvtCod;
- long ExaCod;
- long UsrCod;
- time_t TimeUTC[Dat_NUM_START_END_TIME];
- char Title[Exa_MAX_BYTES_TITLE + 1];
- bool Hidden;
- struct
- {
- unsigned QstInd; // 0 means that the exam has not started. First question has index 1.
- long QstCod;
- time_t QstStartTimeUTC;
- ExaEvt_Showing_t Showing; // What is shown on teacher's screen
- long Countdown; // > 0 ==> countdown in progress
- // = 0 ==> countdown over ==> go to next step
- // < 0 ==> no countdown at this time
- unsigned NumCols; // Number of columns for answers on teacher's screen
- bool ShowQstResults; // Show global results of current question while playing
- bool ShowUsrResults; // Show exam with results of all questions for the student
- bool Happening; // Is being played now?
- unsigned NumParticipants;
- } Status; // Status related to event playing
- };
-
struct ExaEvt_UsrAnswer
{
int NumOpt; // < 0 ==> no answer selected
@@ -90,7 +54,8 @@ void ExaEvt_ResetEvent (struct ExaEvt_Event *Event);
void ExaEvt_ListEvents (struct Exa_Exams *Exams,
struct Exa_Exam *Exam,
- bool PutFormNewEvent);
+ struct ExaEvt_Event *Event,
+ bool PutFormEvent);
void ExaEvt_GetDataOfEventByCod (struct ExaEvt_Event *Event);
void ExaEvt_ToggleVisibilResultsEvtUsr (void);
@@ -112,8 +77,8 @@ void ExaEvt_GetAndCheckParameters (struct Exa_Exams *Exams,
long ExaEvt_GetParamEvtCod (void);
void ExaEvt_PutButtonNewEvent (struct Exa_Exams *Exams,long ExaCod);
-void ExaEvt_RequestNewEvent (void);
-void ExaEvt_CreateNewEventTch (void);
+void ExaEvt_RequestCreatOrEditEvent (void);
+void ExaEvt_ReceiveFormEvent (void);
void ExaEvt_ResumeEvent (void);
void ExaEvt_GetIndexes (long EvtCod,unsigned QstInd,
unsigned Indexes[Tst_MAX_OPTIONS_PER_QUESTION]);
diff --git a/swad_exam_result.c b/swad_exam_result.c
index 9fd8473c..951e84f2 100644
--- a/swad_exam_result.c
+++ b/swad_exam_result.c
@@ -38,6 +38,7 @@
#include "swad_exam.h"
#include "swad_exam_event.h"
#include "swad_exam_result.h"
+#include "swad_exam_type.h"
#include "swad_form.h"
#include "swad_global.h"
#include "swad_HTML.h"
@@ -156,12 +157,12 @@ void ExaRes_ShowMyExaResultsInExa (void)
extern const char *Txt_Results_of_game_X;
struct Exa_Exams Exams;
struct Exa_Exam Exam;
+ struct ExaEvt_Event Event;
/***** Reset exams context *****/
Exa_ResetExams (&Exams);
-
- /***** Reset exam *****/
Exa_ResetExam (&Exam);
+ ExaEvt_ResetEvent (&Event);
/***** Get parameters *****/
Exa_GetParams (&Exams);
@@ -174,7 +175,7 @@ void ExaRes_ShowMyExaResultsInExa (void)
Exams.ExaCod = Exam.ExaCod;
/***** Exam begin *****/
- Exa_ShowOnlyOneExamBegin (&Exams,&Exam,
+ Exa_ShowOnlyOneExamBegin (&Exams,&Exam,&Event,
false); // Do not put form to start new event
/***** List my events results in exam *****/
@@ -212,8 +213,6 @@ void ExaRes_ShowMyExaResultsInEvt (void)
/***** Reset exams context *****/
Exa_ResetExams (&Exams);
-
- /***** Reset exam and event *****/
Exa_ResetExam (&Exam);
ExaEvt_ResetEvent (&Event);
@@ -229,7 +228,7 @@ void ExaRes_ShowMyExaResultsInEvt (void)
ExaEvt_GetDataOfEventByCod (&Event);
/***** Exam begin *****/
- Exa_ShowOnlyOneExamBegin (&Exams,&Exam,
+ Exa_ShowOnlyOneExamBegin (&Exams,&Exam,&Event,
false); // Do not put form to start new event
/***** List my events results in event *****/
@@ -364,12 +363,12 @@ void ExaRes_ShowAllExaResultsInExa (void)
extern const char *Txt_Results_of_game_X;
struct Exa_Exams Exams;
struct Exa_Exam Exam;
+ struct ExaEvt_Event Event;
/***** Reset exams context *****/
Exa_ResetExams (&Exams);
-
- /***** Reset exam *****/
Exa_ResetExam (&Exam);
+ ExaEvt_ResetEvent (&Event);
/***** Get parameters *****/
Exa_GetParams (&Exams);
@@ -380,7 +379,7 @@ void ExaRes_ShowAllExaResultsInExa (void)
Exams.ExaCod = Exam.ExaCod;
/***** Exam begin *****/
- Exa_ShowOnlyOneExamBegin (&Exams,&Exam,
+ Exa_ShowOnlyOneExamBegin (&Exams,&Exam,&Event,
false); // Do not put form to start new event
/***** List events results in exam *****/
@@ -459,8 +458,6 @@ void ExaRes_ShowAllExaResultsInEvt (void)
/***** Reset exams context *****/
Exa_ResetExams (&Exams);
-
- /***** Reset exam and event *****/
Exa_ResetExam (&Exam);
ExaEvt_ResetEvent (&Event);
@@ -478,7 +475,7 @@ void ExaRes_ShowAllExaResultsInEvt (void)
ExaEvt_GetDataOfEventByCod (&Event);
/***** Exam begin *****/
- Exa_ShowOnlyOneExamBegin (&Exams,&Exam,
+ Exa_ShowOnlyOneExamBegin (&Exams,&Exam,&Event,
false); // Do not put form to start new event
/***** List events results in event *****/
@@ -1103,8 +1100,6 @@ void ExaRes_ShowOneExaResult (void)
/***** Reset exams context *****/
Exa_ResetExams (&Exams);
-
- /***** Reset exam and event *****/
Exa_ResetExam (&Exam);
ExaEvt_ResetEvent (&Event);
diff --git a/swad_exam_type.h b/swad_exam_type.h
new file mode 100644
index 00000000..c7705667
--- /dev/null
+++ b/swad_exam_type.h
@@ -0,0 +1,147 @@
+// swad_exam_type.h: definition of types for exams
+
+#ifndef _SWAD_EXA_TYP
+#define _SWAD_EXA_TYP
+/*
+ SWAD (Shared Workspace At a Distance),
+ is a web platform developed at the University of Granada (Spain),
+ and used to support university teaching.
+
+ This file is part of SWAD core.
+ Copyright (C) 1999-2020 Antonio Cañas Vargas
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Affero General 3 License as
+ published by the Free Software Foundation, either version 3 of the
+ License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License
+ along with this program. If not, see .
+*/
+
+/*****************************************************************************/
+/********************************* Headers ***********************************/
+/*****************************************************************************/
+
+#include // For boolean type
+
+#include "swad_date.h"
+#include "swad_hierarchy.h"
+#include "swad_string.h"
+
+/*****************************************************************************/
+/************************** Public types and constants ***********************/
+/*****************************************************************************/
+
+#define Exa_MAX_CHARS_TITLE (128 - 1) // 127
+#define Exa_MAX_BYTES_TITLE ((Exa_MAX_CHARS_TITLE + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 2047
+
+#define ExaSet_MAX_CHARS_TITLE (128 - 1) // 127
+#define ExaSet_MAX_BYTES_TITLE ((ExaSet_MAX_CHARS_TITLE + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 2047
+
+#define ExaEvt_MAX_CHARS_TITLE (128 - 1) // 127
+#define ExaEvt_MAX_BYTES_TITLE ((ExaEvt_MAX_CHARS_TITLE + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 2047
+
+#define Exa_NUM_ORDERS 3
+typedef enum
+ {
+ Exa_ORDER_BY_START_DATE = 0,
+ Exa_ORDER_BY_END_DATE = 1,
+ Exa_ORDER_BY_TITLE = 2,
+ } Exa_Order_t;
+#define Exa_ORDER_DEFAULT Exa_ORDER_BY_START_DATE
+
+struct Exa_ExamSelected
+ {
+ long ExaCod; // Exam code
+ bool Selected; // Is this exam selected when seeing match results?
+ };
+
+/* Exams context */
+struct Exa_Exams
+ {
+ bool LstIsRead; // Is the list already read from database...
+ // ...or it needs to be read?
+ unsigned Num; // Total number of exams
+ unsigned NumSelected; // Number of exams selected
+ struct Exa_ExamSelected *Lst;// List of exams
+ Exa_Order_t SelectedOrder;
+ unsigned CurrentPage;
+ char *ListQuestions;
+ char *ExaCodsSelected; // String with selected exam codes separated by separator multiple
+ long ExaCod; // Selected/current exam code
+ long SetCod; // Selected/current set code
+ long EvtCod; // Selected/current match code
+ unsigned SetInd; // Current set index
+ long QstCod; // Current question code
+ };
+
+struct Exa_Exam
+ {
+ long ExaCod; // Exam code
+ long CrsCod; // Course code
+ long UsrCod; // Author code
+ double MaxGrade; // Score range [0...max.score]
+ // will be converted to
+ // grade range [0...max.grade]
+ unsigned Visibility; // Visibility of results
+ char Title[Exa_MAX_BYTES_TITLE + 1];
+ time_t TimeUTC[Dat_NUM_START_END_TIME];
+ bool Hidden; // Exam is hidden
+ unsigned NumSets; // Number of sets in the exam
+ unsigned NumQsts; // Number of questions in the exam
+ unsigned NumEvts; // Number of events in the exam
+ unsigned NumUnfinishedEvts; // Number of unfinished events in the exam
+ };
+
+struct ExaSet_Set
+ {
+ long ExaCod; // Exam code
+ long SetCod; // Set code
+ unsigned SetInd; // Set index (position in the exam)
+ unsigned NumQstsToExam; // Number of questions in this set taht will appear in the exam
+ char Title[ExaSet_MAX_BYTES_TITLE + 1]; // Title of the set
+ };
+
+#define ExaEvt_NUM_SHOWING 5
+typedef enum
+ {
+ ExaEvt_START, // Start: don't show anything
+ ExaEvt_STEM, // Showing only the question stem
+ ExaEvt_ANSWERS, // Showing the question stem and the answers
+ ExaEvt_RESULTS, // Showing the results
+ ExaEvt_END, // End: don't show anything
+ } ExaEvt_Showing_t;
+#define ExaEvt_SHOWING_DEFAULT ExaEvt_START
+
+struct ExaEvt_Event
+ {
+ long EvtCod;
+ long ExaCod;
+ long UsrCod;
+ time_t TimeUTC[Dat_NUM_START_END_TIME];
+ char Title[ExaEvt_MAX_BYTES_TITLE + 1];
+ bool Hidden;
+ struct
+ {
+ unsigned QstInd; // 0 means that the exam has not started. First question has index 1.
+ long QstCod;
+ time_t QstStartTimeUTC;
+ ExaEvt_Showing_t Showing; // What is shown on teacher's screen
+ long Countdown; // > 0 ==> countdown in progress
+ // = 0 ==> countdown over ==> go to next step
+ // < 0 ==> no countdown at this time
+ unsigned NumCols; // Number of columns for answers on teacher's screen
+ bool ShowQstResults; // Show global results of current question while playing
+ bool ShowUsrResults; // Show exam with results of all questions for the student
+ bool Happening; // Is being played now?
+ unsigned NumParticipants;
+ } Status; // Status related to event playing
+ };
+
+#endif
diff --git a/swad_game.c b/swad_game.c
index c7ef6244..cdbc7fed 100644
--- a/swad_game.c
+++ b/swad_game.c
@@ -1486,7 +1486,7 @@ static void Gam_PutFormsEditionGame (struct Gam_Games *Games,
/********************** Receive form to create a new game ********************/
/*****************************************************************************/
-void Gam_RecFormGame (void)
+void Gam_ReceiveFormGame (void)
{
struct Gam_Games Games;
struct Gam_Game Game;
diff --git a/swad_game.h b/swad_game.h
index 3ed638b6..073e8f3f 100644
--- a/swad_game.h
+++ b/swad_game.h
@@ -133,7 +133,7 @@ void Gam_UnhideGame (void);
void Gam_RequestCreatOrEditGame (void);
-void Gam_RecFormGame (void);
+void Gam_ReceiveFormGame (void);
bool Mch_CheckIfMatchIsAssociatedToGrp (long MchCod,long GrpCod);
unsigned Gam_GetNumQstsGame (long GamCod);
diff --git a/swad_group.c b/swad_group.c
index 7b11f6ba..3fa56f45 100644
--- a/swad_group.c
+++ b/swad_group.c
@@ -3703,7 +3703,7 @@ void Grp_GetNamesGrpsStdBelongsTo (long GrpTypCod,long UsrCod,char *GroupNames)
/****************** Receive form to create a new group type ******************/
/*****************************************************************************/
-void Grp_RecFormNewGrpTyp (void)
+void Grp_ReceiveFormNewGrpTyp (void)
{
extern const char *Txt_The_type_of_group_X_already_exists;
extern const char *Txt_Created_new_type_of_group_X;
@@ -3776,7 +3776,7 @@ static bool Grp_CheckIfOpenTimeInTheFuture (time_t OpenTimeUTC)
/******************** Receive form to create a new group *********************/
/*****************************************************************************/
-void Grp_RecFormNewGrp (void)
+void Grp_ReceiveFormNewGrp (void)
{
extern const char *Txt_The_group_X_already_exists;
extern const char *Txt_Created_new_group_X;
diff --git a/swad_group.h b/swad_group.h
index ea4f4b59..92ae2d31 100644
--- a/swad_group.h
+++ b/swad_group.h
@@ -205,8 +205,8 @@ bool Grp_GetIfAvailableGrpTyp (long GrpTypCod);
void Grp_GetLstCodGrpsWithFileZonesIBelong (struct ListCodGrps *LstGrps);
void Grp_GetNamesGrpsStdBelongsTo (long GrpTypCod,long UsrCod,char *GrpNames);
-void Grp_RecFormNewGrpTyp (void);
-void Grp_RecFormNewGrp (void);
+void Grp_ReceiveFormNewGrpTyp (void);
+void Grp_ReceiveFormNewGrp (void);
void Grp_ReqRemGroupType (void);
void Grp_ReqRemGroup (void);
void Grp_RemoveGroupType (void);
diff --git a/swad_holiday.c b/swad_holiday.c
index 5687a3a4..89c702b8 100644
--- a/swad_holiday.c
+++ b/swad_holiday.c
@@ -1107,7 +1107,7 @@ static void Hld_PutHeadHolidays (void)
/******************* Receive form to create a new holiday ********************/
/*****************************************************************************/
-void Hld_RecFormNewHoliday (void)
+void Hld_ReceiveFormNewHoliday (void)
{
extern const char *Txt_Created_new_holiday_X;
extern const char *Txt_You_must_specify_the_name_of_the_new_holiday;
diff --git a/swad_holiday.h b/swad_holiday.h
index b1fe6cce..edaef717 100644
--- a/swad_holiday.h
+++ b/swad_holiday.h
@@ -99,6 +99,6 @@ void Hld_ChangeStartDate (void);
void Hld_ChangeEndDate (void);
void Hld_RenameHoliday (void);
void Hld_ContEditAfterChgHld (void);
-void Hld_RecFormNewHoliday (void);
+void Hld_ReceiveFormNewHoliday (void);
#endif
diff --git a/swad_institution.c b/swad_institution.c
index 2a391ddd..c79390c5 100644
--- a/swad_institution.c
+++ b/swad_institution.c
@@ -100,7 +100,7 @@ static void Ins_PutParamGoToIns (void *InsCod);
static void Ins_PutFormToCreateInstitution (void);
static void Ins_PutHeadInstitutionsForEdition (void);
-static void Ins_RecFormRequestOrCreateIns (unsigned Status);
+static void Ins_ReceiveFormRequestOrCreateIns (unsigned Status);
static void Ins_CreateInstitution (unsigned Status);
static void Ins_EditingInstitutionConstructor ();
@@ -1831,33 +1831,33 @@ static void Ins_PutHeadInstitutionsForEdition (void)
/*************** Receive form to request a new institution *******************/
/*****************************************************************************/
-void Ins_RecFormReqIns (void)
+void Ins_ReceiveFormReqIns (void)
{
/***** Institution constructor *****/
Ins_EditingInstitutionConstructor ();
/***** Receive form to request a new institution *****/
- Ins_RecFormRequestOrCreateIns ((unsigned) Ins_STATUS_BIT_PENDING);
+ Ins_ReceiveFormRequestOrCreateIns ((unsigned) Ins_STATUS_BIT_PENDING);
}
/*****************************************************************************/
/***************** Receive form to create a new institution ******************/
/*****************************************************************************/
-void Ins_RecFormNewIns (void)
+void Ins_ReceiveFormNewIns (void)
{
/***** Institution constructor *****/
Ins_EditingInstitutionConstructor ();
/***** Receive form to create a new institution *****/
- Ins_RecFormRequestOrCreateIns (0);
+ Ins_ReceiveFormRequestOrCreateIns (0);
}
/*****************************************************************************/
/*********** Receive form to request or create a new institution *************/
/*****************************************************************************/
-static void Ins_RecFormRequestOrCreateIns (unsigned Status)
+static void Ins_ReceiveFormRequestOrCreateIns (unsigned Status)
{
extern const char *Txt_The_institution_X_already_exists;
extern const char *Txt_Created_new_institution_X;
diff --git a/swad_institution.h b/swad_institution.h
index a28abff4..5d3761ea 100644
--- a/swad_institution.h
+++ b/swad_institution.h
@@ -126,8 +126,8 @@ void Ins_UpdateInsWWWDB (long InsCod,const char NewWWW[Cns_MAX_BYTES_WWW + 1]);
void Ins_ChangeInsStatus (void);
void Ins_ContEditAfterChgIns (void);
-void Ins_RecFormReqIns (void);
-void Ins_RecFormNewIns (void);
+void Ins_ReceiveFormReqIns (void);
+void Ins_ReceiveFormNewIns (void);
unsigned Ins_GetCachedNumInssInSys (void);
diff --git a/swad_link.c b/swad_link.c
index 9b004430..7db87d84 100644
--- a/swad_link.c
+++ b/swad_link.c
@@ -797,7 +797,7 @@ static void Lnk_PutHeadLinks (void)
/******************* Receive form to create a new link ***********************/
/*****************************************************************************/
-void Lnk_RecFormNewLink (void)
+void Lnk_ReceiveFormNewLink (void)
{
extern const char *Txt_The_link_X_already_exists;
extern const char *Txt_You_must_specify_the_URL_of_the_new_link;
diff --git a/swad_link.h b/swad_link.h
index 3ba252eb..9df66bf8 100644
--- a/swad_link.h
+++ b/swad_link.h
@@ -65,6 +65,6 @@ void Lnk_RenameLinkShort (void);
void Lnk_RenameLinkFull (void);
void Lnk_ChangeLinkWWW (void);
void Lnk_ContEditAfterChgLnk (void);
-void Lnk_RecFormNewLink (void);
+void Lnk_ReceiveFormNewLink (void);
#endif
diff --git a/swad_mail.c b/swad_mail.c
index aa63a8ae..1a145466 100644
--- a/swad_mail.c
+++ b/swad_mail.c
@@ -813,7 +813,7 @@ static void Mai_PutHeadMailDomains (void)
/******************* Receive form to create a new mail ***********************/
/*****************************************************************************/
-void Mai_RecFormNewMailDomain (void)
+void Mai_ReceiveFormNewMailDomain (void)
{
extern const char *Txt_The_email_domain_X_already_exists;
extern const char *Txt_Created_new_email_domain_X;
diff --git a/swad_mail.h b/swad_mail.h
index 9df90bb4..f5659da7 100644
--- a/swad_mail.h
+++ b/swad_mail.h
@@ -70,7 +70,7 @@ void Mai_RemoveMailDomain (void);
void Mai_RenameMailDomainShort (void);
void Mai_RenameMailDomainFull (void);
void Mai_ContEditAfterChgMai (void);
-void Mai_RecFormNewMailDomain (void);
+void Mai_ReceiveFormNewMailDomain (void);
void Mai_ReqUsrsToListEmails (void);
void Mai_GetSelectedUsrsAndListEmails (void);
diff --git a/swad_place.c b/swad_place.c
index 7c007e5f..2b866b4b 100644
--- a/swad_place.c
+++ b/swad_place.c
@@ -889,7 +889,7 @@ static void Plc_PutHeadPlaces (void)
/******************* Receive form to create a new place **********************/
/*****************************************************************************/
-void Plc_RecFormNewPlace (void)
+void Plc_ReceiveFormNewPlace (void)
{
extern const char *Txt_The_place_X_already_exists;
extern const char *Txt_Created_new_place_X;
diff --git a/swad_place.h b/swad_place.h
index d5292f51..657aa2f8 100644
--- a/swad_place.h
+++ b/swad_place.h
@@ -81,6 +81,6 @@ void Plc_RenamePlaceShort (void);
void Plc_RenamePlaceFull (void);
void Plc_ContEditAfterChgPlc (void);
-void Plc_RecFormNewPlace (void);
+void Plc_ReceiveFormNewPlace (void);
#endif
diff --git a/swad_plugin.c b/swad_plugin.c
index 735b6cbf..cac32324 100644
--- a/swad_plugin.c
+++ b/swad_plugin.c
@@ -973,7 +973,7 @@ static void Plg_PutHeadPlugins (void)
/****************** Receive form to create a new plugin **********************/
/*****************************************************************************/
-void Plg_RecFormNewPlg (void)
+void Plg_ReceiveFormNewPlg (void)
{
extern const char *Txt_The_plugin_X_already_exists;
extern const char *Txt_Created_new_plugin_X;
diff --git a/swad_plugin.h b/swad_plugin.h
index 38c57f95..5c429514 100644
--- a/swad_plugin.h
+++ b/swad_plugin.h
@@ -76,6 +76,6 @@ void Plg_ChangePlgURL (void);
void Plg_ChangePlgIP (void);
void Plg_ContEditAfterChgPlg (void);
-void Plg_RecFormNewPlg (void);
+void Plg_ReceiveFormNewPlg (void);
#endif
diff --git a/swad_program.c b/swad_program.c
index dabeba59..b548cafd 100644
--- a/swad_program.c
+++ b/swad_program.c
@@ -1949,7 +1949,7 @@ static void Prg_ShowFormItem (const struct ProgramItem *Item,
/***************** Receive form to create a new program item *****************/
/*****************************************************************************/
-void Prg_RecFormNewItem (void)
+void Prg_ReceiveFormNewItem (void)
{
struct ProgramItem ParentItem; // Parent item
struct ProgramItem NewItem; // Item data received from form
@@ -2003,7 +2003,7 @@ void Prg_RecFormNewItem (void)
/************* Receive form to change an existing program item ***************/
/*****************************************************************************/
-void Prg_RecFormChgItem (void)
+void Prg_ReceiveFormChgItem (void)
{
struct ProgramItem OldItem; // Current program item data in database
struct ProgramItem NewItem; // Item data received from form
diff --git a/swad_program.h b/swad_program.h
index 99e5881e..c1451917 100644
--- a/swad_program.h
+++ b/swad_program.h
@@ -41,8 +41,8 @@ void Prg_ShowCourseProgram (void);
void Prg_RequestCreateItem (void);
void Prg_RequestChangeItem (void);
-void Prg_RecFormNewItem (void);
-void Prg_RecFormChgItem (void);
+void Prg_ReceiveFormNewItem (void);
+void Prg_ReceiveFormChgItem (void);
void Prg_ReqRemItem (void);
void Prg_RemoveItem (void);
@@ -54,7 +54,6 @@ void Prg_MoveDownItem (void);
void Prg_MoveLeftItem (void);
void Prg_MoveRightItem (void);
-void Prg_RecFormItem (void);
void Prg_RemoveCrsItems (long CrsCod);
unsigned Prg_GetNumCoursesWithItems (Hie_Level_t Scope);
diff --git a/swad_project.c b/swad_project.c
index f5a4d30e..746ff378 100644
--- a/swad_project.c
+++ b/swad_project.c
@@ -3865,7 +3865,7 @@ void Prj_FreeMemProject (struct Prj_Project *Prj)
/******************** Receive form to create a new project *******************/
/*****************************************************************************/
-void Prj_RecFormProject (void)
+void Prj_ReceiveFormProject (void)
{
extern const char *Txt_You_must_specify_the_title_of_the_project;
extern const char *Txt_Created_new_project_X;
diff --git a/swad_project.h b/swad_project.h
index 1c0b30bd..b941e434 100644
--- a/swad_project.h
+++ b/swad_project.h
@@ -226,7 +226,7 @@ void Prj_RemoveProject (void);
void Prj_HideProject (void);
void Prj_UnhideProject (void);
-void Prj_RecFormProject (void);
+void Prj_ReceiveFormProject (void);
void Prj_ShowFormConfig (void);
void Prj_ReceiveConfigPrj (void);
diff --git a/swad_room.c b/swad_room.c
index b8fcbf41..d4b11fb0 100644
--- a/swad_room.c
+++ b/swad_room.c
@@ -1390,7 +1390,7 @@ static void Roo_PutHeadRooms (void)
/******************* Receive form to create a new room ***********************/
/*****************************************************************************/
-void Roo_RecFormNewRoom (void)
+void Roo_ReceiveFormNewRoom (void)
{
extern const char *Txt_The_room_X_already_exists;
extern const char *Txt_Created_new_room_X;
diff --git a/swad_room.h b/swad_room.h
index ddc57f41..14cbb8f2 100644
--- a/swad_room.h
+++ b/swad_room.h
@@ -141,6 +141,6 @@ void Roo_RenameRoomFull (void);
void Roo_ChangeCapacity (void);
void Roo_ContEditAfterChgRoom (void);
-void Roo_RecFormNewRoom (void);
+void Roo_ReceiveFormNewRoom (void);
#endif
diff --git a/swad_survey.c b/swad_survey.c
index c995b227..046fe80a 100644
--- a/swad_survey.c
+++ b/swad_survey.c
@@ -2185,7 +2185,7 @@ static void Svy_ShowLstGrpsToEditSurvey (long SvyCod)
/********************* Receive form to create a new survey *******************/
/*****************************************************************************/
-void Svy_RecFormSurvey (void)
+void Svy_ReceiveFormSurvey (void)
{
extern const char *Txt_Already_existed_a_survey_with_the_title_X;
extern const char *Txt_You_must_specify_the_title_of_the_survey;
diff --git a/swad_survey.h b/swad_survey.h
index 5498d11f..2c67db4e 100644
--- a/swad_survey.h
+++ b/swad_survey.h
@@ -107,7 +107,7 @@ void Svy_AskResetSurvey (void);
void Svy_ResetSurvey (void);
void Svy_HideSurvey (void);
void Svy_UnhideSurvey (void);
-void Svy_RecFormSurvey (void);
+void Svy_ReceiveFormSurvey (void);
bool Svy_CheckIfSvyIsAssociatedToGrp (long SvyCod,long GrpCod);
void Svy_RemoveGroup (long GrpCod);
void Svy_RemoveGroupsOfType (long GrpTypCod);
diff --git a/swad_text_action.c b/swad_text_action.c
index f91e539e..e32caaf5 100644
--- a/swad_text_action.c
+++ b/swad_text_action.c
@@ -10077,6 +10077,90 @@ const char *Txt_Actions[Act_NUM_ACTIONS] =
"" // Potrzebujesz tlumaczenie
#elif L==9 // pt
"" // Precisa de tradução
+#endif
+ ,
+ [ActReqNewExaEvt] =
+#if L==1 // ca
+ "" // Necessita traducció
+#elif L==2 // de
+ "" // Need Übersetzung
+#elif L==3 // en
+ "Request new exam event"
+#elif L==4 // es
+ "Solicitar nuevo evento de examen"
+#elif L==5 // fr
+ "" // Besoin de traduction
+#elif L==6 // gn
+ "" // Okoteve traducción
+#elif L==7 // it
+ "" // Bisogno di traduzione
+#elif L==8 // pl
+ "" // Potrzebujesz tlumaczenie
+#elif L==9 // pt
+ "" // Precisa de tradução
+#endif
+ ,
+ [ActEdiOneExaEvt] =
+#if L==1 // ca
+ "" // Necessita traducció
+#elif L==2 // de
+ "" // Need Übersetzung
+#elif L==3 // en
+ "Edit exam event"
+#elif L==4 // es
+ "Editar evento de examen"
+#elif L==5 // fr
+ "" // Besoin de traduction
+#elif L==6 // gn
+ "" // Okoteve traducción
+#elif L==7 // it
+ "" // Bisogno di traduzione
+#elif L==8 // pl
+ "" // Potrzebujesz tlumaczenie
+#elif L==9 // pt
+ "" // Precisa de tradução
+#endif
+ ,
+ [ActNewExaEvt] =
+#if L==1 // ca
+ "" // Necessita traducció
+#elif L==2 // de
+ "" // Need Übersetzung
+#elif L==3 // en
+ "Create new exam event"
+#elif L==4 // es
+ "Crear nuevo evento de examen"
+#elif L==5 // fr
+ "" // Besoin de traduction
+#elif L==6 // gn
+ "" // Okoteve traducción
+#elif L==7 // it
+ "" // Bisogno di traduzione
+#elif L==8 // pl
+ "" // Potrzebujesz tlumaczenie
+#elif L==9 // pt
+ "" // Precisa de tradução
+#endif
+ ,
+ [ActChgExaEvt] =
+#if L==1 // ca
+ "" // Necessita traducció
+#elif L==2 // de
+ "" // Need Übersetzung
+#elif L==3 // en
+ "Change exam event"
+#elif L==4 // es
+ "Cambiar evento de examen"
+#elif L==5 // fr
+ "" // Besoin de traduction
+#elif L==6 // gn
+ "" // Okoteve traducción
+#elif L==7 // it
+ "" // Bisogno di traduzione
+#elif L==8 // pl
+ "" // Potrzebujesz tlumaczenie
+#elif L==9 // pt
+ "" // Precisa de tradução
#endif
,
[ActReqRemExaEvt] =
@@ -10161,48 +10245,6 @@ const char *Txt_Actions[Act_NUM_ACTIONS] =
"" // Potrzebujesz tlumaczenie
#elif L==9 // pt
"" // Precisa de tradução
-#endif
- ,
- [ActReqNewExaEvt] =
-#if L==1 // ca
- "" // Necessita traducció
-#elif L==2 // de
- "" // Need Übersetzung
-#elif L==3 // en
- "Request new exam event"
-#elif L==4 // es
- "Solicitar nuevo evento de examen"
-#elif L==5 // fr
- "" // Besoin de traduction
-#elif L==6 // gn
- "" // Okoteve traducción
-#elif L==7 // it
- "" // Bisogno di traduzione
-#elif L==8 // pl
- "" // Potrzebujesz tlumaczenie
-#elif L==9 // pt
- "" // Precisa de tradução
-#endif
- ,
- [ActNewExaEvt] =
-#if L==1 // ca
- "" // Necessita traducció
-#elif L==2 // de
- "" // Need Übersetzung
-#elif L==3 // en
- "Create new exam event"
-#elif L==4 // es
- "Crear nuevo evento de examen"
-#elif L==5 // fr
- "" // Besoin de traduction
-#elif L==6 // gn
- "" // Okoteve traducción
-#elif L==7 // it
- "" // Bisogno di traduzione
-#elif L==8 // pl
- "" // Potrzebujesz tlumaczenie
-#elif L==9 // pt
- "" // Precisa de tradução
#endif
,
[ActResExaEvt] =