Version20.1

This commit is contained in:
acanas 2020-09-25 12:43:21 +02:00
parent b600920e67
commit e341edc427
9 changed files with 325 additions and 197 deletions

1
icon/inbox.svg Normal file
View File

@ -0,0 +1 @@
<svg aria-hidden="true" data-prefix="fas" data-icon="inbox" class="svg-inline--fa fa-inbox fa-w-18" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><path fill="#404040" d="M567.938 243.908L462.25 85.374A48.003 48.003 0 0 0 422.311 64H153.689a48 48 0 0 0-39.938 21.374L8.062 243.908A47.994 47.994 0 0 0 0 270.533V400c0 26.51 21.49 48 48 48h480c26.51 0 48-21.49 48-48V270.533a47.994 47.994 0 0 0-8.062-26.625zM162.252 128h251.497l85.333 128H376l-32 64H232l-32-64H76.918l85.334-128z"></path></svg>

After

Width:  |  Height:  |  Size: 515 B

View File

@ -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);

View File

@ -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
};
/*****************************************************************************/

View File

@ -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 ********************************/

View File

@ -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)

View File

@ -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,

View File

@ -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);

View File

@ -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&sacute;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&sacute;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&aacute;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&aacute;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&aacute;rios"
#endif
,
// 7: ActReqMaiUsr
// 8: ActReqMaiUsr
#if L==1 // ca
"Creaci&oacute; 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&egrave;dia";

View File

@ -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