diff --git a/icon/inbox.svg b/icon/inbox.svg new file mode 100644 index 00000000..1f9fcc84 --- /dev/null +++ b/icon/inbox.svg @@ -0,0 +1 @@ + diff --git a/swad_API.c b/swad_API.c index 00232bae..d2c94205 100644 --- a/swad_API.c +++ b/swad_API.c @@ -1195,7 +1195,10 @@ int swad__getAvailableRoles (struct soap *soap, /***** Initializations *****/ API_Set_gSOAP_RuntimeEnv (soap); Gbl.WebService.Function = API_getAvailableRoles; + + /***** Initialize hierarchy *****/ Gbl.Hierarchy.Crs.CrsCod = (long) courseCode; + Hie_InitHierarchy (); /***** Default value returned on error *****/ getAvailableRolesOut->roles = 0; // error @@ -1473,7 +1476,10 @@ int swad__getCourseInfo (struct soap *soap, /***** Initializations *****/ API_Set_gSOAP_RuntimeEnv (soap); Gbl.WebService.Function = API_getCourseInfo; + + /***** Initialize hierarchy *****/ Gbl.Hierarchy.Crs.CrsCod = (long) courseCode; + Hie_InitHierarchy (); /***** Check web service key *****/ if ((ReturnCode = API_CheckWSKey (wsKey)) != SOAP_OK) @@ -1528,9 +1534,6 @@ int swad__getCourseInfo (struct soap *soap, Str_Copy (getCourseInfo->infoSrc,NamesInWSForInfoSrc[InfoSrc], Length); - /***** Set paths *****/ - Hie_InitHierarchy (); - /***** Get info text *****/ getCourseInfo->infoTxt = NULL; switch (InfoSrc) @@ -2070,7 +2073,10 @@ int swad__getGroupTypes (struct soap *soap, /***** Initializations *****/ API_Set_gSOAP_RuntimeEnv (soap); Gbl.WebService.Function = API_getGroupTypes; + + /***** Initialize hierarchy *****/ Gbl.Hierarchy.Crs.CrsCod = (long) courseCode; + Hie_InitHierarchy (); /***** Open groups of this course that must be opened if open time is in the past *****/ @@ -2186,7 +2192,10 @@ int swad__getGroups (struct soap *soap, /***** Initializations *****/ API_Set_gSOAP_RuntimeEnv (soap); Gbl.WebService.Function = API_getGroups; + + /***** Initialize hierarchy *****/ Gbl.Hierarchy.Crs.CrsCod = (long) courseCode; + Hie_InitHierarchy (); /***** Open groups of this course that must be opened if open time is in the past *****/ @@ -5821,6 +5830,7 @@ int swad__getFile (struct soap *soap, &Gbl.Hierarchy.Deg.DegCod, &Gbl.Hierarchy.Crs.CrsCod, &Gbl.Crs.Grps.GrpCod); + Hie_InitHierarchy (); /***** Get some of my data *****/ if (!API_GetSomeUsrDataFromUsrCod (&Gbl.Usrs.Me.UsrDat,Gbl.Hierarchy.Crs.CrsCod)) @@ -5875,7 +5885,6 @@ int swad__getFile (struct soap *soap, } /***** Set paths *****/ - Hie_InitHierarchy (); Brw_InitializeFileBrowser (); Str_Copy (Gbl.FileBrowser.FilFolLnk.Path,FileMetadata.FilFolLnk.Path, PATH_MAX); diff --git a/swad_action.c b/swad_action.c index 92909c68..f571f3fa 100644 --- a/swad_action.c +++ b/swad_action.c @@ -1518,10 +1518,11 @@ const struct Act_Actions Act_Actions[Act_NUM_ACTIONS] = [ActSeeFor ] = { 95, 2,TabMsg,ActSeeFor ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,For_ShowForumTheads ,"comments" }, // [ActSeeChtRms ] = { 51, 3,TabMsg,ActSeeChtRms ,0x3F8,0x3C4,0x3C4,0x3C4,0x3C4,0x3C4,0x3C4,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Cht_ShowChatRooms ,"comments" }, [ActSeeChtRms ] = { 51, 3,TabMsg,ActSeeChtRms ,0x200,0x200,0x200,0x200,0x200,0x200,0x200,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Cht_ShowChatRooms ,"comments" }, - [ActReqMsgUsr ] = { 26, 4,TabMsg,ActReqMsgUsr ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Msg_FormMsgUsrs ,"marker" }, - [ActSeeRcvMsg ] = { 3, 5,TabMsg,ActSeeRcvMsg ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Msg_ShowRecMsgs ,"inbox" }, - [ActSeeSntMsg ] = { 70, 6,TabMsg,ActSeeSntMsg ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Msg_ShowSntMsgs ,"share" }, - [ActReqMaiUsr ] = {1772, 7,TabMsg,ActReqMaiUsr ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Mai_ReqUsrsToListEmails ,"envelope" }, + [ActSeeMsg ] = {1912, 4,TabMsg,ActSeeMsg ,0x200,0x200,0x200,0x200,0x200,0x200,0x200,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Msg_ShowRecMsgs ,"envelope" }, + [ActReqMsgUsr ] = { 26, 5,TabMsg,ActReqMsgUsr ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Msg_FormMsgUsrs ,"marker" }, + [ActSeeRcvMsg ] = { 3, 6,TabMsg,ActSeeRcvMsg ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Msg_ShowRecMsgs ,"inbox" }, + [ActSeeSntMsg ] = { 70, 7,TabMsg,ActSeeSntMsg ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Msg_ShowSntMsgs ,"share" }, + [ActReqMaiUsr ] = {1772, 8,TabMsg,ActReqMaiUsr ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Mai_ReqUsrsToListEmails ,"at" }, // Actions not in menu: [ActWriAnn ] = {1237,-1,TabUnk,ActSeeAnn ,0x200,0x200,0x200,0x200,0x200,0x200,0x200,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Ann_ShowFormAnnouncement ,NULL}, @@ -3724,6 +3725,7 @@ Act_Action_t Act_FromActCodToAction[1 + Act_MAX_ACTION_COD] = // Do not reuse un ActValSetQst, // #1909 ActInvSetQst, // #1910 ActChgRooMAC, // #1911 + ActSeeMsg, // #1912 }; /*****************************************************************************/ diff --git a/swad_action.h b/swad_action.h index 1cebc9b2..725d6399 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 1911 +#define Act_MAX_ACTION_COD 1912 #define Act_MAX_OPTIONS_IN_MENU_PER_TAB 13 @@ -1457,176 +1457,177 @@ typedef signed int Act_Action_t; // Must be a signed type, because -1 is used to #define ActSeeAllNot (ActUnfSevTch + 2) #define ActSeeFor (ActUnfSevTch + 3) #define ActSeeChtRms (ActUnfSevTch + 4) -#define ActReqMsgUsr (ActUnfSevTch + 5) -#define ActSeeRcvMsg (ActUnfSevTch + 6) -#define ActSeeSntMsg (ActUnfSevTch + 7) -#define ActReqMaiUsr (ActUnfSevTch + 8) +#define ActSeeMsg (ActUnfSevTch + 5) +#define ActReqMsgUsr (ActUnfSevTch + 6) +#define ActSeeRcvMsg (ActUnfSevTch + 7) +#define ActSeeSntMsg (ActUnfSevTch + 8) +#define ActReqMaiUsr (ActUnfSevTch + 9) // Secondary actions -#define ActWriAnn (ActUnfSevTch + 9) -#define ActRcvAnn (ActUnfSevTch + 10) -#define ActHidAnn (ActUnfSevTch + 11) -#define ActRevAnn (ActUnfSevTch + 12) -#define ActRemAnn (ActUnfSevTch + 13) -#define ActSeeOneNot (ActUnfSevTch + 14) -#define ActWriNot (ActUnfSevTch + 15) -#define ActRcvNot (ActUnfSevTch + 16) -#define ActHidNot (ActUnfSevTch + 17) -#define ActRevNot (ActUnfSevTch + 18) -#define ActReqRemNot (ActUnfSevTch + 19) -#define ActRemNot (ActUnfSevTch + 20) +#define ActWriAnn (ActUnfSevTch + 10) +#define ActRcvAnn (ActUnfSevTch + 11) +#define ActHidAnn (ActUnfSevTch + 12) +#define ActRevAnn (ActUnfSevTch + 13) +#define ActRemAnn (ActUnfSevTch + 14) +#define ActSeeOneNot (ActUnfSevTch + 15) +#define ActWriNot (ActUnfSevTch + 16) +#define ActRcvNot (ActUnfSevTch + 17) +#define ActHidNot (ActUnfSevTch + 18) +#define ActRevNot (ActUnfSevTch + 19) +#define ActReqRemNot (ActUnfSevTch + 20) +#define ActRemNot (ActUnfSevTch + 21) -#define ActSeeForCrsUsr (ActUnfSevTch + 21) -#define ActSeeForCrsTch (ActUnfSevTch + 22) -#define ActSeeForDegUsr (ActUnfSevTch + 23) -#define ActSeeForDegTch (ActUnfSevTch + 24) -#define ActSeeForCtrUsr (ActUnfSevTch + 25) -#define ActSeeForCtrTch (ActUnfSevTch + 26) -#define ActSeeForInsUsr (ActUnfSevTch + 27) -#define ActSeeForInsTch (ActUnfSevTch + 28) -#define ActSeeForGenUsr (ActUnfSevTch + 29) -#define ActSeeForGenTch (ActUnfSevTch + 30) -#define ActSeeForSWAUsr (ActUnfSevTch + 31) -#define ActSeeForSWATch (ActUnfSevTch + 32) -#define ActSeePstForCrsUsr (ActUnfSevTch + 33) -#define ActSeePstForCrsTch (ActUnfSevTch + 34) -#define ActSeePstForDegUsr (ActUnfSevTch + 35) -#define ActSeePstForDegTch (ActUnfSevTch + 36) -#define ActSeePstForCtrUsr (ActUnfSevTch + 37) -#define ActSeePstForCtrTch (ActUnfSevTch + 38) -#define ActSeePstForInsUsr (ActUnfSevTch + 39) -#define ActSeePstForInsTch (ActUnfSevTch + 40) -#define ActSeePstForGenUsr (ActUnfSevTch + 41) -#define ActSeePstForGenTch (ActUnfSevTch + 42) -#define ActSeePstForSWAUsr (ActUnfSevTch + 43) -#define ActSeePstForSWATch (ActUnfSevTch + 44) -#define ActRcvThrForCrsUsr (ActUnfSevTch + 45) -#define ActRcvThrForCrsTch (ActUnfSevTch + 46) -#define ActRcvThrForDegUsr (ActUnfSevTch + 47) -#define ActRcvThrForDegTch (ActUnfSevTch + 48) -#define ActRcvThrForCtrUsr (ActUnfSevTch + 49) -#define ActRcvThrForCtrTch (ActUnfSevTch + 50) -#define ActRcvThrForInsUsr (ActUnfSevTch + 51) -#define ActRcvThrForInsTch (ActUnfSevTch + 52) -#define ActRcvThrForGenUsr (ActUnfSevTch + 53) -#define ActRcvThrForGenTch (ActUnfSevTch + 54) -#define ActRcvThrForSWAUsr (ActUnfSevTch + 55) -#define ActRcvThrForSWATch (ActUnfSevTch + 56) -#define ActRcvRepForCrsUsr (ActUnfSevTch + 57) -#define ActRcvRepForCrsTch (ActUnfSevTch + 58) -#define ActRcvRepForDegUsr (ActUnfSevTch + 59) -#define ActRcvRepForDegTch (ActUnfSevTch + 60) -#define ActRcvRepForCtrUsr (ActUnfSevTch + 61) -#define ActRcvRepForCtrTch (ActUnfSevTch + 62) -#define ActRcvRepForInsUsr (ActUnfSevTch + 63) -#define ActRcvRepForInsTch (ActUnfSevTch + 64) -#define ActRcvRepForGenUsr (ActUnfSevTch + 65) -#define ActRcvRepForGenTch (ActUnfSevTch + 66) -#define ActRcvRepForSWAUsr (ActUnfSevTch + 67) -#define ActRcvRepForSWATch (ActUnfSevTch + 68) -#define ActReqDelThrCrsUsr (ActUnfSevTch + 69) -#define ActReqDelThrCrsTch (ActUnfSevTch + 70) -#define ActReqDelThrDegUsr (ActUnfSevTch + 71) -#define ActReqDelThrDegTch (ActUnfSevTch + 72) -#define ActReqDelThrCtrUsr (ActUnfSevTch + 73) -#define ActReqDelThrCtrTch (ActUnfSevTch + 74) -#define ActReqDelThrInsUsr (ActUnfSevTch + 75) -#define ActReqDelThrInsTch (ActUnfSevTch + 76) -#define ActReqDelThrGenUsr (ActUnfSevTch + 77) -#define ActReqDelThrGenTch (ActUnfSevTch + 78) -#define ActReqDelThrSWAUsr (ActUnfSevTch + 79) -#define ActReqDelThrSWATch (ActUnfSevTch + 80) -#define ActDelThrForCrsUsr (ActUnfSevTch + 81) -#define ActDelThrForCrsTch (ActUnfSevTch + 82) -#define ActDelThrForDegUsr (ActUnfSevTch + 83) -#define ActDelThrForDegTch (ActUnfSevTch + 84) -#define ActDelThrForCtrUsr (ActUnfSevTch + 85) -#define ActDelThrForCtrTch (ActUnfSevTch + 86) -#define ActDelThrForInsUsr (ActUnfSevTch + 87) -#define ActDelThrForInsTch (ActUnfSevTch + 88) -#define ActDelThrForGenUsr (ActUnfSevTch + 89) -#define ActDelThrForGenTch (ActUnfSevTch + 90) -#define ActDelThrForSWAUsr (ActUnfSevTch + 91) -#define ActDelThrForSWATch (ActUnfSevTch + 92) -#define ActCutThrForCrsUsr (ActUnfSevTch + 93) -#define ActCutThrForCrsTch (ActUnfSevTch + 94) -#define ActCutThrForDegUsr (ActUnfSevTch + 95) -#define ActCutThrForDegTch (ActUnfSevTch + 96) -#define ActCutThrForCtrUsr (ActUnfSevTch + 97) -#define ActCutThrForCtrTch (ActUnfSevTch + 98) -#define ActCutThrForInsUsr (ActUnfSevTch + 99) -#define ActCutThrForInsTch (ActUnfSevTch + 100) -#define ActCutThrForGenUsr (ActUnfSevTch + 101) -#define ActCutThrForGenTch (ActUnfSevTch + 102) -#define ActCutThrForSWAUsr (ActUnfSevTch + 103) -#define ActCutThrForSWATch (ActUnfSevTch + 104) -#define ActPasThrForCrsUsr (ActUnfSevTch + 105) -#define ActPasThrForCrsTch (ActUnfSevTch + 106) -#define ActPasThrForDegUsr (ActUnfSevTch + 107) -#define ActPasThrForDegTch (ActUnfSevTch + 108) -#define ActPasThrForCtrUsr (ActUnfSevTch + 109) -#define ActPasThrForCtrTch (ActUnfSevTch + 110) -#define ActPasThrForInsUsr (ActUnfSevTch + 111) -#define ActPasThrForInsTch (ActUnfSevTch + 112) -#define ActPasThrForGenUsr (ActUnfSevTch + 113) -#define ActPasThrForGenTch (ActUnfSevTch + 114) -#define ActPasThrForSWAUsr (ActUnfSevTch + 115) -#define ActPasThrForSWATch (ActUnfSevTch + 116) -#define ActDelPstForCrsUsr (ActUnfSevTch + 117) -#define ActDelPstForCrsTch (ActUnfSevTch + 118) -#define ActDelPstForDegUsr (ActUnfSevTch + 119) -#define ActDelPstForDegTch (ActUnfSevTch + 120) -#define ActDelPstForCtrUsr (ActUnfSevTch + 121) -#define ActDelPstForCtrTch (ActUnfSevTch + 122) -#define ActDelPstForInsUsr (ActUnfSevTch + 123) -#define ActDelPstForInsTch (ActUnfSevTch + 124) -#define ActDelPstForGenUsr (ActUnfSevTch + 125) -#define ActDelPstForGenTch (ActUnfSevTch + 126) -#define ActDelPstForSWAUsr (ActUnfSevTch + 127) -#define ActDelPstForSWATch (ActUnfSevTch + 128) -#define ActEnbPstForCrsUsr (ActUnfSevTch + 129) -#define ActEnbPstForCrsTch (ActUnfSevTch + 130) -#define ActEnbPstForDegUsr (ActUnfSevTch + 131) -#define ActEnbPstForDegTch (ActUnfSevTch + 132) -#define ActEnbPstForCtrUsr (ActUnfSevTch + 133) -#define ActEnbPstForCtrTch (ActUnfSevTch + 134) -#define ActEnbPstForInsUsr (ActUnfSevTch + 135) -#define ActEnbPstForInsTch (ActUnfSevTch + 136) -#define ActEnbPstForGenUsr (ActUnfSevTch + 137) -#define ActEnbPstForGenTch (ActUnfSevTch + 138) -#define ActEnbPstForSWAUsr (ActUnfSevTch + 139) -#define ActEnbPstForSWATch (ActUnfSevTch + 140) -#define ActDisPstForCrsUsr (ActUnfSevTch + 141) -#define ActDisPstForCrsTch (ActUnfSevTch + 142) -#define ActDisPstForDegUsr (ActUnfSevTch + 143) -#define ActDisPstForDegTch (ActUnfSevTch + 144) -#define ActDisPstForCtrUsr (ActUnfSevTch + 145) -#define ActDisPstForCtrTch (ActUnfSevTch + 146) -#define ActDisPstForInsUsr (ActUnfSevTch + 147) -#define ActDisPstForInsTch (ActUnfSevTch + 148) -#define ActDisPstForGenUsr (ActUnfSevTch + 149) -#define ActDisPstForGenTch (ActUnfSevTch + 150) -#define ActDisPstForSWAUsr (ActUnfSevTch + 151) -#define ActDisPstForSWATch (ActUnfSevTch + 152) +#define ActSeeForCrsUsr (ActUnfSevTch + 22) +#define ActSeeForCrsTch (ActUnfSevTch + 23) +#define ActSeeForDegUsr (ActUnfSevTch + 24) +#define ActSeeForDegTch (ActUnfSevTch + 25) +#define ActSeeForCtrUsr (ActUnfSevTch + 26) +#define ActSeeForCtrTch (ActUnfSevTch + 27) +#define ActSeeForInsUsr (ActUnfSevTch + 28) +#define ActSeeForInsTch (ActUnfSevTch + 29) +#define ActSeeForGenUsr (ActUnfSevTch + 30) +#define ActSeeForGenTch (ActUnfSevTch + 31) +#define ActSeeForSWAUsr (ActUnfSevTch + 32) +#define ActSeeForSWATch (ActUnfSevTch + 33) +#define ActSeePstForCrsUsr (ActUnfSevTch + 34) +#define ActSeePstForCrsTch (ActUnfSevTch + 35) +#define ActSeePstForDegUsr (ActUnfSevTch + 36) +#define ActSeePstForDegTch (ActUnfSevTch + 37) +#define ActSeePstForCtrUsr (ActUnfSevTch + 38) +#define ActSeePstForCtrTch (ActUnfSevTch + 39) +#define ActSeePstForInsUsr (ActUnfSevTch + 40) +#define ActSeePstForInsTch (ActUnfSevTch + 41) +#define ActSeePstForGenUsr (ActUnfSevTch + 42) +#define ActSeePstForGenTch (ActUnfSevTch + 43) +#define ActSeePstForSWAUsr (ActUnfSevTch + 44) +#define ActSeePstForSWATch (ActUnfSevTch + 45) +#define ActRcvThrForCrsUsr (ActUnfSevTch + 46) +#define ActRcvThrForCrsTch (ActUnfSevTch + 47) +#define ActRcvThrForDegUsr (ActUnfSevTch + 48) +#define ActRcvThrForDegTch (ActUnfSevTch + 49) +#define ActRcvThrForCtrUsr (ActUnfSevTch + 50) +#define ActRcvThrForCtrTch (ActUnfSevTch + 51) +#define ActRcvThrForInsUsr (ActUnfSevTch + 52) +#define ActRcvThrForInsTch (ActUnfSevTch + 53) +#define ActRcvThrForGenUsr (ActUnfSevTch + 54) +#define ActRcvThrForGenTch (ActUnfSevTch + 55) +#define ActRcvThrForSWAUsr (ActUnfSevTch + 56) +#define ActRcvThrForSWATch (ActUnfSevTch + 57) +#define ActRcvRepForCrsUsr (ActUnfSevTch + 58) +#define ActRcvRepForCrsTch (ActUnfSevTch + 59) +#define ActRcvRepForDegUsr (ActUnfSevTch + 60) +#define ActRcvRepForDegTch (ActUnfSevTch + 61) +#define ActRcvRepForCtrUsr (ActUnfSevTch + 62) +#define ActRcvRepForCtrTch (ActUnfSevTch + 63) +#define ActRcvRepForInsUsr (ActUnfSevTch + 64) +#define ActRcvRepForInsTch (ActUnfSevTch + 65) +#define ActRcvRepForGenUsr (ActUnfSevTch + 66) +#define ActRcvRepForGenTch (ActUnfSevTch + 67) +#define ActRcvRepForSWAUsr (ActUnfSevTch + 68) +#define ActRcvRepForSWATch (ActUnfSevTch + 69) +#define ActReqDelThrCrsUsr (ActUnfSevTch + 70) +#define ActReqDelThrCrsTch (ActUnfSevTch + 71) +#define ActReqDelThrDegUsr (ActUnfSevTch + 72) +#define ActReqDelThrDegTch (ActUnfSevTch + 73) +#define ActReqDelThrCtrUsr (ActUnfSevTch + 74) +#define ActReqDelThrCtrTch (ActUnfSevTch + 75) +#define ActReqDelThrInsUsr (ActUnfSevTch + 76) +#define ActReqDelThrInsTch (ActUnfSevTch + 77) +#define ActReqDelThrGenUsr (ActUnfSevTch + 78) +#define ActReqDelThrGenTch (ActUnfSevTch + 79) +#define ActReqDelThrSWAUsr (ActUnfSevTch + 80) +#define ActReqDelThrSWATch (ActUnfSevTch + 81) +#define ActDelThrForCrsUsr (ActUnfSevTch + 82) +#define ActDelThrForCrsTch (ActUnfSevTch + 83) +#define ActDelThrForDegUsr (ActUnfSevTch + 84) +#define ActDelThrForDegTch (ActUnfSevTch + 85) +#define ActDelThrForCtrUsr (ActUnfSevTch + 86) +#define ActDelThrForCtrTch (ActUnfSevTch + 87) +#define ActDelThrForInsUsr (ActUnfSevTch + 88) +#define ActDelThrForInsTch (ActUnfSevTch + 89) +#define ActDelThrForGenUsr (ActUnfSevTch + 90) +#define ActDelThrForGenTch (ActUnfSevTch + 91) +#define ActDelThrForSWAUsr (ActUnfSevTch + 92) +#define ActDelThrForSWATch (ActUnfSevTch + 93) +#define ActCutThrForCrsUsr (ActUnfSevTch + 94) +#define ActCutThrForCrsTch (ActUnfSevTch + 95) +#define ActCutThrForDegUsr (ActUnfSevTch + 96) +#define ActCutThrForDegTch (ActUnfSevTch + 97) +#define ActCutThrForCtrUsr (ActUnfSevTch + 98) +#define ActCutThrForCtrTch (ActUnfSevTch + 99) +#define ActCutThrForInsUsr (ActUnfSevTch + 100) +#define ActCutThrForInsTch (ActUnfSevTch + 101) +#define ActCutThrForGenUsr (ActUnfSevTch + 102) +#define ActCutThrForGenTch (ActUnfSevTch + 103) +#define ActCutThrForSWAUsr (ActUnfSevTch + 104) +#define ActCutThrForSWATch (ActUnfSevTch + 105) +#define ActPasThrForCrsUsr (ActUnfSevTch + 106) +#define ActPasThrForCrsTch (ActUnfSevTch + 107) +#define ActPasThrForDegUsr (ActUnfSevTch + 108) +#define ActPasThrForDegTch (ActUnfSevTch + 109) +#define ActPasThrForCtrUsr (ActUnfSevTch + 110) +#define ActPasThrForCtrTch (ActUnfSevTch + 111) +#define ActPasThrForInsUsr (ActUnfSevTch + 112) +#define ActPasThrForInsTch (ActUnfSevTch + 113) +#define ActPasThrForGenUsr (ActUnfSevTch + 114) +#define ActPasThrForGenTch (ActUnfSevTch + 115) +#define ActPasThrForSWAUsr (ActUnfSevTch + 116) +#define ActPasThrForSWATch (ActUnfSevTch + 117) +#define ActDelPstForCrsUsr (ActUnfSevTch + 118) +#define ActDelPstForCrsTch (ActUnfSevTch + 119) +#define ActDelPstForDegUsr (ActUnfSevTch + 120) +#define ActDelPstForDegTch (ActUnfSevTch + 121) +#define ActDelPstForCtrUsr (ActUnfSevTch + 122) +#define ActDelPstForCtrTch (ActUnfSevTch + 123) +#define ActDelPstForInsUsr (ActUnfSevTch + 124) +#define ActDelPstForInsTch (ActUnfSevTch + 125) +#define ActDelPstForGenUsr (ActUnfSevTch + 126) +#define ActDelPstForGenTch (ActUnfSevTch + 127) +#define ActDelPstForSWAUsr (ActUnfSevTch + 128) +#define ActDelPstForSWATch (ActUnfSevTch + 129) +#define ActEnbPstForCrsUsr (ActUnfSevTch + 130) +#define ActEnbPstForCrsTch (ActUnfSevTch + 131) +#define ActEnbPstForDegUsr (ActUnfSevTch + 132) +#define ActEnbPstForDegTch (ActUnfSevTch + 133) +#define ActEnbPstForCtrUsr (ActUnfSevTch + 134) +#define ActEnbPstForCtrTch (ActUnfSevTch + 135) +#define ActEnbPstForInsUsr (ActUnfSevTch + 136) +#define ActEnbPstForInsTch (ActUnfSevTch + 137) +#define ActEnbPstForGenUsr (ActUnfSevTch + 138) +#define ActEnbPstForGenTch (ActUnfSevTch + 139) +#define ActEnbPstForSWAUsr (ActUnfSevTch + 140) +#define ActEnbPstForSWATch (ActUnfSevTch + 141) +#define ActDisPstForCrsUsr (ActUnfSevTch + 142) +#define ActDisPstForCrsTch (ActUnfSevTch + 143) +#define ActDisPstForDegUsr (ActUnfSevTch + 144) +#define ActDisPstForDegTch (ActUnfSevTch + 145) +#define ActDisPstForCtrUsr (ActUnfSevTch + 146) +#define ActDisPstForCtrTch (ActUnfSevTch + 147) +#define ActDisPstForInsUsr (ActUnfSevTch + 148) +#define ActDisPstForInsTch (ActUnfSevTch + 149) +#define ActDisPstForGenUsr (ActUnfSevTch + 150) +#define ActDisPstForGenTch (ActUnfSevTch + 151) +#define ActDisPstForSWAUsr (ActUnfSevTch + 152) +#define ActDisPstForSWATch (ActUnfSevTch + 153) -#define ActCht (ActUnfSevTch + 153) +#define ActCht (ActUnfSevTch + 154) -#define ActRcvMsgUsr (ActUnfSevTch + 154) -#define ActReqDelAllSntMsg (ActUnfSevTch + 155) -#define ActReqDelAllRcvMsg (ActUnfSevTch + 156) -#define ActDelAllSntMsg (ActUnfSevTch + 157) -#define ActDelAllRcvMsg (ActUnfSevTch + 158) -#define ActDelSntMsg (ActUnfSevTch + 159) -#define ActDelRcvMsg (ActUnfSevTch + 160) -#define ActExpSntMsg (ActUnfSevTch + 161) -#define ActExpRcvMsg (ActUnfSevTch + 162) -#define ActConSntMsg (ActUnfSevTch + 163) -#define ActConRcvMsg (ActUnfSevTch + 164) -#define ActLstBanUsr (ActUnfSevTch + 165) -#define ActBanUsrMsg (ActUnfSevTch + 166) -#define ActUnbUsrMsg (ActUnfSevTch + 167) -#define ActUnbUsrLst (ActUnfSevTch + 168) +#define ActRcvMsgUsr (ActUnfSevTch + 155) +#define ActReqDelAllSntMsg (ActUnfSevTch + 156) +#define ActReqDelAllRcvMsg (ActUnfSevTch + 157) +#define ActDelAllSntMsg (ActUnfSevTch + 158) +#define ActDelAllRcvMsg (ActUnfSevTch + 159) +#define ActDelSntMsg (ActUnfSevTch + 160) +#define ActDelRcvMsg (ActUnfSevTch + 161) +#define ActExpSntMsg (ActUnfSevTch + 162) +#define ActExpRcvMsg (ActUnfSevTch + 163) +#define ActConSntMsg (ActUnfSevTch + 164) +#define ActConRcvMsg (ActUnfSevTch + 165) +#define ActLstBanUsr (ActUnfSevTch + 166) +#define ActBanUsrMsg (ActUnfSevTch + 167) +#define ActUnbUsrMsg (ActUnfSevTch + 168) +#define ActUnbUsrLst (ActUnfSevTch + 169) -#define ActMaiUsr (ActUnfSevTch + 169) +#define ActMaiUsr (ActUnfSevTch + 170) /*****************************************************************************/ /****************************** Analytics tab ********************************/ diff --git a/swad_changelog.h b/swad_changelog.h index 03d37567..b442347b 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -555,7 +555,7 @@ enscript -2 --landscape --color --file-align=2 --highlight --line-numbers -o - * En OpenSWAD: ps2pdf source.ps destination.pdf */ -#define Log_PLATFORM_VERSION "SWAD 20.0 (2020-09-22)" +#define Log_PLATFORM_VERSION "SWAD 20.1 (2020-09-25)" #define CSS_FILE "swad19.253.css" #define JS_FILE "swad19.254.js" /* @@ -573,6 +573,11 @@ TODO: Que al generar un examen s TODO: Create module swad_test_result "sudo apt install webp" en Ubuntu, y "yum install libwebp libwebp-tools" en CentOS, para decodificar imágenes Web/ug reportado por Javier Fernández Baldomero. + Version 20.1: Sep 25, 2020 Options related to messages are grouped into one. (304520 lines) + Copy the following 2 icons to icon public directory: +sudo cp icon/inbox.svg /var/www/html/swad/icon/ +sudo cp icon/marker.svg /var/www/html/swad/icon/ + Version 20.0: Sep 22, 2020 Changes in API function getAvailableRoles. Fixed bug when listing teachers' records. (304400 lines) Version 19.263.1: Sep 02, 2020 MAC address in form to create a new room. (304389 lines) diff --git a/swad_menu.c b/swad_menu.c index f21721a9..a237abc7 100644 --- a/swad_menu.c +++ b/swad_menu.c @@ -152,10 +152,11 @@ static const Act_Action_t Mnu_MenuActions[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_ [ 1] = ActSeeAllNot, [ 2] = ActSeeFor, [ 3] = ActSeeChtRms, - [ 4] = ActReqMsgUsr, - [ 5] = ActSeeRcvMsg, - [ 6] = ActSeeSntMsg, - [ 7] = ActReqMaiUsr, + [ 4] = ActSeeMsg, + [ 5] = ActReqMsgUsr, + [ 6] = ActSeeRcvMsg, + [ 7] = ActSeeSntMsg, + [ 8] = ActReqMaiUsr, }, [TabAna] = { [ 0] = ActReqUseGbl, diff --git a/swad_message.c b/swad_message.c index 9a812fc6..93861718 100644 --- a/swad_message.c +++ b/swad_message.c @@ -2627,6 +2627,19 @@ static void Msg_SetNumMsgsStr (const struct Msg_Messages *Messages, static void Msg_PutIconsListMsgs (void *Messages) { + extern const char *Txt_MSGS_Sent; + extern const char *Txt_MSGS_Received; + extern const char *Txt_MSGS_Write; + static struct + { + const Act_Action_t Act; + const char *Icon; + const char *Title; + } SeeRcvSntMsg[Msg_NUM_TYPES_OF_MSGS] = + { + [Msg_MESSAGES_RECEIVED] = {ActSeeSntMsg,"share.svg",NULL}, + [Msg_MESSAGES_SENT ] = {ActSeeRcvMsg,"inbox.svg",NULL}, + }; static const Act_Action_t ActionReqDelAllMsg[Msg_NUM_TYPES_OF_MSGS] = { [Msg_MESSAGES_RECEIVED] = ActReqDelAllRcvMsg, @@ -2635,6 +2648,20 @@ static void Msg_PutIconsListMsgs (void *Messages) if (Messages) { + /***** Put icon to write a new message *****/ + Lay_PutContextualLinkOnlyIcon (ActReqMsgUsr,NULL, + Msg_PutHiddenParamsMsgsFilters,Messages, + "marker.svg", + Txt_MSGS_Write); + + /***** Put icon to see received/sent messages *****/ + SeeRcvSntMsg[Msg_MESSAGES_RECEIVED].Title = Txt_MSGS_Sent; + SeeRcvSntMsg[Msg_MESSAGES_SENT ].Title = Txt_MSGS_Received; + Lay_PutContextualLinkOnlyIcon (SeeRcvSntMsg[((struct Msg_Messages *) Messages)->TypeOfMessages].Act,NULL, + Msg_PutHiddenParamsMsgsFilters,Messages, + SeeRcvSntMsg[((struct Msg_Messages *) Messages)->TypeOfMessages].Icon, + SeeRcvSntMsg[((struct Msg_Messages *) Messages)->TypeOfMessages].Title); + /***** Put icon to remove messages *****/ Ico_PutContextualIconToRemove (ActionReqDelAllMsg[((struct Msg_Messages *) Messages)->TypeOfMessages], Msg_PutHiddenParamsMsgsFilters,Messages); diff --git a/swad_text.c b/swad_text.c index fd47a54a..d07ccede 100644 --- a/swad_text.c +++ b/swad_text.c @@ -21064,7 +21064,28 @@ const char *Txt_MENU_TITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] = "Chat" #endif , - // 4: ActReqMsgUsr + // 4: ActMsgUsr +#if L==1 // ca + "Missatges" +#elif L==2 // de + "Nachrichten" +#elif L==3 // en + "Messages" +#elif L==4 // es + "Mensajes" +#elif L==5 // fr + "Messages" +#elif L==6 // gn + "Marandu" +#elif L==7 // it + "Messaggi" +#elif L==8 // pl + "Wiadomości" +#elif L==9 // pt + "Mensagens" +#endif + , + // 5: ActReqMsgUsr #if L==1 // ca "Redactar" #elif L==2 // de @@ -21085,7 +21106,7 @@ const char *Txt_MENU_TITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] = "Escrever" #endif , - // 5: ActSeeRcvMsg + // 6: ActSeeRcvMsg #if L==1 // ca "Rebuts" #elif L==2 // de @@ -21106,7 +21127,7 @@ const char *Txt_MENU_TITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] = "Recebidas" #endif , - // 6: ActSeeSntMsg + // 7: ActSeeSntMsg #if L==1 // ca "Enviats" #elif L==2 // de @@ -21127,7 +21148,7 @@ const char *Txt_MENU_TITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] = "Enviadas" #endif , - // 7: ActReqMaiUsr + // 8: ActReqMaiUsr #if L==1 // ca "Correu" #elif L==2 // de @@ -21148,7 +21169,6 @@ const char *Txt_MENU_TITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] = "Email" #endif , - NULL, // 8 NULL, // 9 NULL, // 10 NULL, // 11 @@ -23018,7 +23038,28 @@ const char *Txt_MENU_SUBTITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] = "Chat" #endif , - // 4: ActReqMsgUsr + // 4: ActMsgUsr +#if L==1 // ca + "Missatges" +#elif L==2 // de + "Nachrichten" +#elif L==3 // en + "Messages" +#elif L==4 // es + "Mensajes" +#elif L==5 // fr + "Messages" +#elif L==6 // gn + "Marandu" +#elif L==7 // it + "Messaggi" +#elif L==8 // pl + "Wiadomości" +#elif L==9 // pt + "Mensagens" +#endif + , + // 5: ActReqMsgUsr #if L==1 // ca "Enviament d'un nou missatge a altres usuaris" #elif L==2 // de @@ -23039,7 +23080,7 @@ const char *Txt_MENU_SUBTITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] = "Envio de uma nova mensagem para outros usuários" #endif , - // 5: ActSeeRcvMsg + // 6: ActSeeRcvMsg #if L==1 // ca "Missatges rebuts d'altres usuaris" #elif L==2 // de @@ -23060,7 +23101,7 @@ const char *Txt_MENU_SUBTITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] = "Mensagens recebidas de outros usuários" #endif , - // 6: ActSeeSntMsg + // 7: ActSeeSntMsg #if L==1 // ca "Missatges enviats per mi a altres usuaris" #elif L==2 // de @@ -23081,7 +23122,7 @@ const char *Txt_MENU_SUBTITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] = "Mensagens enviadas por mim para outros usuários" #endif , - // 7: ActReqMaiUsr + // 8: ActReqMaiUsr #if L==1 // ca "Creació d'un missatge de correu" " per enviar-lo a usuaris d'aquesta assignatura" @@ -23108,7 +23149,6 @@ const char *Txt_MENU_SUBTITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] = "Email" #endif , - NULL, // 8 NULL, // 9 NULL, // 10 NULL, // 11 @@ -24930,6 +24970,27 @@ const char *Txt_MSGS_Sent = "Enviadas"; #endif +const char *Txt_MSGS_Write = +#if L==1 // ca + "Redactar"; +#elif L==2 // de + "Schreiben"; +#elif L==3 // en + "Write"; +#elif L==4 // es + "Redactar"; +#elif L==5 // fr + "Ecrire"; +#elif L==6 // gn + "Redactar"; // Okoteve traducción +#elif L==7 // it + "Scrivi"; +#elif L==8 // pl + "Napisz"; +#elif L==9 // pt + "Escrever"; +#endif + const char *Txt_Multimedia = #if L==1 // ca "Multimèdia"; diff --git a/swad_text_action.c b/swad_text_action.c index b0dc7d97..44f4ae90 100644 --- a/swad_text_action.c +++ b/swad_text_action.c @@ -25365,6 +25365,27 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = "" // Potrzebujesz tlumaczenie #elif L==9 // pt "" // Precisa de tradução +#endif + , + [ActSeeMsg] = +#if L==1 // ca + "" // Necessita traducció +#elif L==2 // de + "" // Need Übersetzung +#elif L==3 // en + "Show the messages received from other users" +#elif L==4 // es + "Ver mensajes recibidos de otros usuarios" +#elif L==5 // fr + "" // Besoin de traduction +#elif L==6 // gn + "Ver mensajes recibidos de otros usuarios" // 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 , [ActReqMsgUsr] = @@ -25373,13 +25394,13 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "Write message to several users" + "Write message to other users" #elif L==4 // es - "" + "Redactar mensaje a otros usuarios" #elif L==5 // fr "" // Besoin de traduction #elif L==6 // gn - "" // Okoteve traducción + "Redactar mensaje a otros usuarios" // Okoteve traducción #elif L==7 // it "" // Bisogno di traduzione #elif L==8 // pl @@ -25394,13 +25415,13 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "Show the messages received from other users (link in menu)" + "Show the messages received from other users" #elif L==4 // es - "" + "Ver mensajes recibidos de otros usuarios" #elif L==5 // fr "" // Besoin de traduction #elif L==6 // gn - "" // Okoteve traducción + "Ver mensajes recibidos de otros usuarios" // Okoteve traducción #elif L==7 // it "" // Bisogno di traduzione #elif L==8 // pl @@ -25417,11 +25438,11 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==3 // en "Show the messages sent to other users" #elif L==4 // es - "" + "Ver mensajes enviados a otros usuarios" #elif L==5 // fr "" // Besoin de traduction #elif L==6 // gn - "" // Okoteve traducción + "Ver mensajes enviados a otros usuarios" // Okoteve traducción #elif L==7 // it "" // Bisogno di traduzione #elif L==8 // pl