Version 14.98

This commit is contained in:
Antonio Cañas Vargas 2015-03-19 01:59:08 +01:00
parent 04e21f0745
commit bf0d59fa6a
6 changed files with 395 additions and 192 deletions

View File

@ -955,6 +955,9 @@ Users:
---. ActFolUsr Follow another user
---. ActUnfUsr Unfollow another user
---. ActSeeFlg Show following
---. ActSeeFlr Show followers
Messages:
794. ActSeeNtf Show my recent notifications
795. ActSeeAnn Show global announcements
@ -2343,6 +2346,8 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
/* ActFolUsr */{1410,-1,TabUsr,ActReqPubPrf ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Fol_FollowUsr ,NULL},
/* ActUnfUsr */{1411,-1,TabUsr,ActReqPubPrf ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Fol_UnfollowUsr ,NULL},
/* ActSeeFlg */{1412,-1,TabUsr,ActReqPubPrf ,0x1FF,0x1FF,0x1FF,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Fol_ListFollowing ,NULL},
/* ActSeeFlr */{1413,-1,TabUsr,ActReqPubPrf ,0x1FF,0x1FF,0x1FF,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Fol_ListFollowers ,NULL},
// TabMsg ******************************************************************
// Actions in menu:
@ -4084,6 +4089,8 @@ Act_Action_t Act_FromActCodToAction[1+Act_MAX_ACTION_COD] = // Do not reuse uniq
ActCalNumFilVie, // #1409
ActFolUsr, // #1410
ActUnfUsr, // #1411
ActSeeFlg, // #1412
ActSeeFlr, // #1413
};
/*****************************************************************************/

View File

@ -69,9 +69,9 @@ typedef enum
typedef int Act_Action_t; // Must be a signed type, because -1 is used to indicate obsolete action
#define Act_NUM_ACTIONS (7+52+15+90+73+68+204+184+107+168+28+77)
#define Act_NUM_ACTIONS (7+52+15+90+73+68+204+184+109+168+28+77)
#define Act_MAX_ACTION_COD 1411
#define Act_MAX_ACTION_COD 1413
#define Act_MAX_OPTIONS_IN_MENU_PER_TAB 20
@ -988,180 +988,182 @@ typedef int Act_Action_t; // Must be a signed type, because -1 is used to indica
#define ActFolUsr (ActChgNumRowFooGrp+106)
#define ActUnfUsr (ActChgNumRowFooGrp+107)
#define ActSeeFlg (ActChgNumRowFooGrp+108)
#define ActSeeFlr (ActChgNumRowFooGrp+109)
/*****************************************************************************/
/******************************* Messages tab ********************************/
/*****************************************************************************/
// Actions in menu
#define ActSeeNtf (ActUnfUsr+ 1)
#define ActSeeAnn (ActUnfUsr+ 2)
#define ActSeeNot (ActUnfUsr+ 3)
#define ActSeeFor (ActUnfUsr+ 4)
#define ActSeeChtRms (ActUnfUsr+ 5)
#define ActReqMsgUsr (ActUnfUsr+ 6)
#define ActSeeRcvMsg (ActUnfUsr+ 7)
#define ActSeeSntMsg (ActUnfUsr+ 8)
#define ActMaiStd (ActUnfUsr+ 9)
#define ActSeeNtf (ActSeeFlr+ 1)
#define ActSeeAnn (ActSeeFlr+ 2)
#define ActSeeNot (ActSeeFlr+ 3)
#define ActSeeFor (ActSeeFlr+ 4)
#define ActSeeChtRms (ActSeeFlr+ 5)
#define ActReqMsgUsr (ActSeeFlr+ 6)
#define ActSeeRcvMsg (ActSeeFlr+ 7)
#define ActSeeSntMsg (ActSeeFlr+ 8)
#define ActMaiStd (ActSeeFlr+ 9)
// Secondary actions
#define ActWriAnn (ActUnfUsr+ 10)
#define ActRcvAnn (ActUnfUsr+ 11)
#define ActRemAnn (ActUnfUsr+ 12)
#define ActShoNot (ActUnfUsr+ 13)
#define ActWriNot (ActUnfUsr+ 14)
#define ActRcvNot (ActUnfUsr+ 15)
#define ActHidNot (ActUnfUsr+ 16)
#define ActRevNot (ActUnfUsr+ 17)
#define ActRemNot (ActUnfUsr+ 18)
#define ActSeeNewNtf (ActUnfUsr+ 19)
#define ActMrkNtfSee (ActUnfUsr+ 20)
#define ActSeeForCrsUsr (ActUnfUsr+ 21)
#define ActSeeForCrsTch (ActUnfUsr+ 22)
#define ActSeeForDegUsr (ActUnfUsr+ 23)
#define ActSeeForDegTch (ActUnfUsr+ 24)
#define ActSeeForCtrUsr (ActUnfUsr+ 25)
#define ActSeeForCtrTch (ActUnfUsr+ 26)
#define ActSeeForInsUsr (ActUnfUsr+ 27)
#define ActSeeForInsTch (ActUnfUsr+ 28)
#define ActSeeForGenUsr (ActUnfUsr+ 29)
#define ActSeeForGenTch (ActUnfUsr+ 30)
#define ActSeeForSWAUsr (ActUnfUsr+ 31)
#define ActSeeForSWATch (ActUnfUsr+ 32)
#define ActSeePstForCrsUsr (ActUnfUsr+ 33)
#define ActSeePstForCrsTch (ActUnfUsr+ 34)
#define ActSeePstForDegUsr (ActUnfUsr+ 35)
#define ActSeePstForDegTch (ActUnfUsr+ 36)
#define ActSeePstForCtrUsr (ActUnfUsr+ 37)
#define ActSeePstForCtrTch (ActUnfUsr+ 38)
#define ActSeePstForInsUsr (ActUnfUsr+ 39)
#define ActSeePstForInsTch (ActUnfUsr+ 40)
#define ActSeePstForGenUsr (ActUnfUsr+ 41)
#define ActSeePstForGenTch (ActUnfUsr+ 42)
#define ActSeePstForSWAUsr (ActUnfUsr+ 43)
#define ActSeePstForSWATch (ActUnfUsr+ 44)
#define ActRcvThrForCrsUsr (ActUnfUsr+ 45)
#define ActRcvThrForCrsTch (ActUnfUsr+ 46)
#define ActRcvThrForDegUsr (ActUnfUsr+ 47)
#define ActRcvThrForDegTch (ActUnfUsr+ 48)
#define ActRcvThrForCtrUsr (ActUnfUsr+ 49)
#define ActRcvThrForCtrTch (ActUnfUsr+ 50)
#define ActRcvThrForInsUsr (ActUnfUsr+ 51)
#define ActRcvThrForInsTch (ActUnfUsr+ 52)
#define ActRcvThrForGenUsr (ActUnfUsr+ 53)
#define ActRcvThrForGenTch (ActUnfUsr+ 54)
#define ActRcvThrForSWAUsr (ActUnfUsr+ 55)
#define ActRcvThrForSWATch (ActUnfUsr+ 56)
#define ActRcvRepForCrsUsr (ActUnfUsr+ 57)
#define ActRcvRepForCrsTch (ActUnfUsr+ 58)
#define ActRcvRepForDegUsr (ActUnfUsr+ 59)
#define ActRcvRepForDegTch (ActUnfUsr+ 60)
#define ActRcvRepForCtrUsr (ActUnfUsr+ 61)
#define ActRcvRepForCtrTch (ActUnfUsr+ 62)
#define ActRcvRepForInsUsr (ActUnfUsr+ 63)
#define ActRcvRepForInsTch (ActUnfUsr+ 64)
#define ActRcvRepForGenUsr (ActUnfUsr+ 65)
#define ActRcvRepForGenTch (ActUnfUsr+ 66)
#define ActRcvRepForSWAUsr (ActUnfUsr+ 67)
#define ActRcvRepForSWATch (ActUnfUsr+ 68)
#define ActReqDelThrCrsUsr (ActUnfUsr+ 69)
#define ActReqDelThrCrsTch (ActUnfUsr+ 70)
#define ActReqDelThrDegUsr (ActUnfUsr+ 71)
#define ActReqDelThrDegTch (ActUnfUsr+ 72)
#define ActReqDelThrCtrUsr (ActUnfUsr+ 73)
#define ActReqDelThrCtrTch (ActUnfUsr+ 74)
#define ActReqDelThrInsUsr (ActUnfUsr+ 75)
#define ActReqDelThrInsTch (ActUnfUsr+ 76)
#define ActReqDelThrGenUsr (ActUnfUsr+ 77)
#define ActReqDelThrGenTch (ActUnfUsr+ 78)
#define ActReqDelThrSWAUsr (ActUnfUsr+ 79)
#define ActReqDelThrSWATch (ActUnfUsr+ 80)
#define ActDelThrForCrsUsr (ActUnfUsr+ 81)
#define ActDelThrForCrsTch (ActUnfUsr+ 82)
#define ActDelThrForDegUsr (ActUnfUsr+ 83)
#define ActDelThrForDegTch (ActUnfUsr+ 84)
#define ActDelThrForCtrUsr (ActUnfUsr+ 85)
#define ActDelThrForCtrTch (ActUnfUsr+ 86)
#define ActDelThrForInsUsr (ActUnfUsr+ 87)
#define ActDelThrForInsTch (ActUnfUsr+ 88)
#define ActDelThrForGenUsr (ActUnfUsr+ 89)
#define ActDelThrForGenTch (ActUnfUsr+ 90)
#define ActDelThrForSWAUsr (ActUnfUsr+ 91)
#define ActDelThrForSWATch (ActUnfUsr+ 92)
#define ActCutThrForCrsUsr (ActUnfUsr+ 93)
#define ActCutThrForCrsTch (ActUnfUsr+ 94)
#define ActCutThrForDegUsr (ActUnfUsr+ 95)
#define ActCutThrForDegTch (ActUnfUsr+ 96)
#define ActCutThrForCtrUsr (ActUnfUsr+ 97)
#define ActCutThrForCtrTch (ActUnfUsr+ 98)
#define ActCutThrForInsUsr (ActUnfUsr+ 99)
#define ActCutThrForInsTch (ActUnfUsr+100)
#define ActCutThrForGenUsr (ActUnfUsr+101)
#define ActCutThrForGenTch (ActUnfUsr+102)
#define ActCutThrForSWAUsr (ActUnfUsr+103)
#define ActCutThrForSWATch (ActUnfUsr+104)
#define ActPasThrForCrsUsr (ActUnfUsr+105)
#define ActPasThrForCrsTch (ActUnfUsr+106)
#define ActPasThrForDegUsr (ActUnfUsr+107)
#define ActPasThrForDegTch (ActUnfUsr+108)
#define ActPasThrForCtrUsr (ActUnfUsr+109)
#define ActPasThrForCtrTch (ActUnfUsr+110)
#define ActPasThrForInsUsr (ActUnfUsr+111)
#define ActPasThrForInsTch (ActUnfUsr+112)
#define ActPasThrForGenUsr (ActUnfUsr+113)
#define ActPasThrForGenTch (ActUnfUsr+114)
#define ActPasThrForSWAUsr (ActUnfUsr+115)
#define ActPasThrForSWATch (ActUnfUsr+116)
#define ActDelPstForCrsUsr (ActUnfUsr+117)
#define ActDelPstForCrsTch (ActUnfUsr+118)
#define ActDelPstForDegUsr (ActUnfUsr+119)
#define ActDelPstForDegTch (ActUnfUsr+120)
#define ActDelPstForCtrUsr (ActUnfUsr+121)
#define ActDelPstForCtrTch (ActUnfUsr+122)
#define ActDelPstForInsUsr (ActUnfUsr+123)
#define ActDelPstForInsTch (ActUnfUsr+124)
#define ActDelPstForGenUsr (ActUnfUsr+125)
#define ActDelPstForGenTch (ActUnfUsr+126)
#define ActDelPstForSWAUsr (ActUnfUsr+127)
#define ActDelPstForSWATch (ActUnfUsr+128)
#define ActEnbPstForCrsUsr (ActUnfUsr+129)
#define ActEnbPstForCrsTch (ActUnfUsr+130)
#define ActEnbPstForDegUsr (ActUnfUsr+131)
#define ActEnbPstForDegTch (ActUnfUsr+132)
#define ActEnbPstForCtrUsr (ActUnfUsr+133)
#define ActEnbPstForCtrTch (ActUnfUsr+134)
#define ActEnbPstForInsUsr (ActUnfUsr+135)
#define ActEnbPstForInsTch (ActUnfUsr+136)
#define ActEnbPstForGenUsr (ActUnfUsr+137)
#define ActEnbPstForGenTch (ActUnfUsr+138)
#define ActEnbPstForSWAUsr (ActUnfUsr+139)
#define ActEnbPstForSWATch (ActUnfUsr+140)
#define ActDisPstForCrsUsr (ActUnfUsr+141)
#define ActDisPstForCrsTch (ActUnfUsr+142)
#define ActDisPstForDegUsr (ActUnfUsr+143)
#define ActDisPstForDegTch (ActUnfUsr+144)
#define ActDisPstForCtrUsr (ActUnfUsr+145)
#define ActDisPstForCtrTch (ActUnfUsr+146)
#define ActDisPstForInsUsr (ActUnfUsr+147)
#define ActDisPstForInsTch (ActUnfUsr+148)
#define ActDisPstForGenUsr (ActUnfUsr+149)
#define ActDisPstForGenTch (ActUnfUsr+150)
#define ActDisPstForSWAUsr (ActUnfUsr+151)
#define ActDisPstForSWATch (ActUnfUsr+152)
#define ActRcvMsgUsr (ActUnfUsr+153)
#define ActReqDelAllSntMsg (ActUnfUsr+154)
#define ActReqDelAllRcvMsg (ActUnfUsr+155)
#define ActDelAllSntMsg (ActUnfUsr+156)
#define ActDelAllRcvMsg (ActUnfUsr+157)
#define ActDelSntMsg (ActUnfUsr+158)
#define ActDelRcvMsg (ActUnfUsr+159)
#define ActExpSntMsg (ActUnfUsr+160)
#define ActExpRcvMsg (ActUnfUsr+161)
#define ActConSntMsg (ActUnfUsr+162)
#define ActConRcvMsg (ActUnfUsr+163)
#define ActLstBanUsr (ActUnfUsr+164)
#define ActBanUsrMsg (ActUnfUsr+165)
#define ActUnbUsrMsg (ActUnfUsr+166)
#define ActUnbUsrLst (ActUnfUsr+167)
#define ActCht (ActUnfUsr+168)
#define ActWriAnn (ActSeeFlr+ 10)
#define ActRcvAnn (ActSeeFlr+ 11)
#define ActRemAnn (ActSeeFlr+ 12)
#define ActShoNot (ActSeeFlr+ 13)
#define ActWriNot (ActSeeFlr+ 14)
#define ActRcvNot (ActSeeFlr+ 15)
#define ActHidNot (ActSeeFlr+ 16)
#define ActRevNot (ActSeeFlr+ 17)
#define ActRemNot (ActSeeFlr+ 18)
#define ActSeeNewNtf (ActSeeFlr+ 19)
#define ActMrkNtfSee (ActSeeFlr+ 20)
#define ActSeeForCrsUsr (ActSeeFlr+ 21)
#define ActSeeForCrsTch (ActSeeFlr+ 22)
#define ActSeeForDegUsr (ActSeeFlr+ 23)
#define ActSeeForDegTch (ActSeeFlr+ 24)
#define ActSeeForCtrUsr (ActSeeFlr+ 25)
#define ActSeeForCtrTch (ActSeeFlr+ 26)
#define ActSeeForInsUsr (ActSeeFlr+ 27)
#define ActSeeForInsTch (ActSeeFlr+ 28)
#define ActSeeForGenUsr (ActSeeFlr+ 29)
#define ActSeeForGenTch (ActSeeFlr+ 30)
#define ActSeeForSWAUsr (ActSeeFlr+ 31)
#define ActSeeForSWATch (ActSeeFlr+ 32)
#define ActSeePstForCrsUsr (ActSeeFlr+ 33)
#define ActSeePstForCrsTch (ActSeeFlr+ 34)
#define ActSeePstForDegUsr (ActSeeFlr+ 35)
#define ActSeePstForDegTch (ActSeeFlr+ 36)
#define ActSeePstForCtrUsr (ActSeeFlr+ 37)
#define ActSeePstForCtrTch (ActSeeFlr+ 38)
#define ActSeePstForInsUsr (ActSeeFlr+ 39)
#define ActSeePstForInsTch (ActSeeFlr+ 40)
#define ActSeePstForGenUsr (ActSeeFlr+ 41)
#define ActSeePstForGenTch (ActSeeFlr+ 42)
#define ActSeePstForSWAUsr (ActSeeFlr+ 43)
#define ActSeePstForSWATch (ActSeeFlr+ 44)
#define ActRcvThrForCrsUsr (ActSeeFlr+ 45)
#define ActRcvThrForCrsTch (ActSeeFlr+ 46)
#define ActRcvThrForDegUsr (ActSeeFlr+ 47)
#define ActRcvThrForDegTch (ActSeeFlr+ 48)
#define ActRcvThrForCtrUsr (ActSeeFlr+ 49)
#define ActRcvThrForCtrTch (ActSeeFlr+ 50)
#define ActRcvThrForInsUsr (ActSeeFlr+ 51)
#define ActRcvThrForInsTch (ActSeeFlr+ 52)
#define ActRcvThrForGenUsr (ActSeeFlr+ 53)
#define ActRcvThrForGenTch (ActSeeFlr+ 54)
#define ActRcvThrForSWAUsr (ActSeeFlr+ 55)
#define ActRcvThrForSWATch (ActSeeFlr+ 56)
#define ActRcvRepForCrsUsr (ActSeeFlr+ 57)
#define ActRcvRepForCrsTch (ActSeeFlr+ 58)
#define ActRcvRepForDegUsr (ActSeeFlr+ 59)
#define ActRcvRepForDegTch (ActSeeFlr+ 60)
#define ActRcvRepForCtrUsr (ActSeeFlr+ 61)
#define ActRcvRepForCtrTch (ActSeeFlr+ 62)
#define ActRcvRepForInsUsr (ActSeeFlr+ 63)
#define ActRcvRepForInsTch (ActSeeFlr+ 64)
#define ActRcvRepForGenUsr (ActSeeFlr+ 65)
#define ActRcvRepForGenTch (ActSeeFlr+ 66)
#define ActRcvRepForSWAUsr (ActSeeFlr+ 67)
#define ActRcvRepForSWATch (ActSeeFlr+ 68)
#define ActReqDelThrCrsUsr (ActSeeFlr+ 69)
#define ActReqDelThrCrsTch (ActSeeFlr+ 70)
#define ActReqDelThrDegUsr (ActSeeFlr+ 71)
#define ActReqDelThrDegTch (ActSeeFlr+ 72)
#define ActReqDelThrCtrUsr (ActSeeFlr+ 73)
#define ActReqDelThrCtrTch (ActSeeFlr+ 74)
#define ActReqDelThrInsUsr (ActSeeFlr+ 75)
#define ActReqDelThrInsTch (ActSeeFlr+ 76)
#define ActReqDelThrGenUsr (ActSeeFlr+ 77)
#define ActReqDelThrGenTch (ActSeeFlr+ 78)
#define ActReqDelThrSWAUsr (ActSeeFlr+ 79)
#define ActReqDelThrSWATch (ActSeeFlr+ 80)
#define ActDelThrForCrsUsr (ActSeeFlr+ 81)
#define ActDelThrForCrsTch (ActSeeFlr+ 82)
#define ActDelThrForDegUsr (ActSeeFlr+ 83)
#define ActDelThrForDegTch (ActSeeFlr+ 84)
#define ActDelThrForCtrUsr (ActSeeFlr+ 85)
#define ActDelThrForCtrTch (ActSeeFlr+ 86)
#define ActDelThrForInsUsr (ActSeeFlr+ 87)
#define ActDelThrForInsTch (ActSeeFlr+ 88)
#define ActDelThrForGenUsr (ActSeeFlr+ 89)
#define ActDelThrForGenTch (ActSeeFlr+ 90)
#define ActDelThrForSWAUsr (ActSeeFlr+ 91)
#define ActDelThrForSWATch (ActSeeFlr+ 92)
#define ActCutThrForCrsUsr (ActSeeFlr+ 93)
#define ActCutThrForCrsTch (ActSeeFlr+ 94)
#define ActCutThrForDegUsr (ActSeeFlr+ 95)
#define ActCutThrForDegTch (ActSeeFlr+ 96)
#define ActCutThrForCtrUsr (ActSeeFlr+ 97)
#define ActCutThrForCtrTch (ActSeeFlr+ 98)
#define ActCutThrForInsUsr (ActSeeFlr+ 99)
#define ActCutThrForInsTch (ActSeeFlr+100)
#define ActCutThrForGenUsr (ActSeeFlr+101)
#define ActCutThrForGenTch (ActSeeFlr+102)
#define ActCutThrForSWAUsr (ActSeeFlr+103)
#define ActCutThrForSWATch (ActSeeFlr+104)
#define ActPasThrForCrsUsr (ActSeeFlr+105)
#define ActPasThrForCrsTch (ActSeeFlr+106)
#define ActPasThrForDegUsr (ActSeeFlr+107)
#define ActPasThrForDegTch (ActSeeFlr+108)
#define ActPasThrForCtrUsr (ActSeeFlr+109)
#define ActPasThrForCtrTch (ActSeeFlr+110)
#define ActPasThrForInsUsr (ActSeeFlr+111)
#define ActPasThrForInsTch (ActSeeFlr+112)
#define ActPasThrForGenUsr (ActSeeFlr+113)
#define ActPasThrForGenTch (ActSeeFlr+114)
#define ActPasThrForSWAUsr (ActSeeFlr+115)
#define ActPasThrForSWATch (ActSeeFlr+116)
#define ActDelPstForCrsUsr (ActSeeFlr+117)
#define ActDelPstForCrsTch (ActSeeFlr+118)
#define ActDelPstForDegUsr (ActSeeFlr+119)
#define ActDelPstForDegTch (ActSeeFlr+120)
#define ActDelPstForCtrUsr (ActSeeFlr+121)
#define ActDelPstForCtrTch (ActSeeFlr+122)
#define ActDelPstForInsUsr (ActSeeFlr+123)
#define ActDelPstForInsTch (ActSeeFlr+124)
#define ActDelPstForGenUsr (ActSeeFlr+125)
#define ActDelPstForGenTch (ActSeeFlr+126)
#define ActDelPstForSWAUsr (ActSeeFlr+127)
#define ActDelPstForSWATch (ActSeeFlr+128)
#define ActEnbPstForCrsUsr (ActSeeFlr+129)
#define ActEnbPstForCrsTch (ActSeeFlr+130)
#define ActEnbPstForDegUsr (ActSeeFlr+131)
#define ActEnbPstForDegTch (ActSeeFlr+132)
#define ActEnbPstForCtrUsr (ActSeeFlr+133)
#define ActEnbPstForCtrTch (ActSeeFlr+134)
#define ActEnbPstForInsUsr (ActSeeFlr+135)
#define ActEnbPstForInsTch (ActSeeFlr+136)
#define ActEnbPstForGenUsr (ActSeeFlr+137)
#define ActEnbPstForGenTch (ActSeeFlr+138)
#define ActEnbPstForSWAUsr (ActSeeFlr+139)
#define ActEnbPstForSWATch (ActSeeFlr+140)
#define ActDisPstForCrsUsr (ActSeeFlr+141)
#define ActDisPstForCrsTch (ActSeeFlr+142)
#define ActDisPstForDegUsr (ActSeeFlr+143)
#define ActDisPstForDegTch (ActSeeFlr+144)
#define ActDisPstForCtrUsr (ActSeeFlr+145)
#define ActDisPstForCtrTch (ActSeeFlr+146)
#define ActDisPstForInsUsr (ActSeeFlr+147)
#define ActDisPstForInsTch (ActSeeFlr+148)
#define ActDisPstForGenUsr (ActSeeFlr+149)
#define ActDisPstForGenTch (ActSeeFlr+150)
#define ActDisPstForSWAUsr (ActSeeFlr+151)
#define ActDisPstForSWATch (ActSeeFlr+152)
#define ActRcvMsgUsr (ActSeeFlr+153)
#define ActReqDelAllSntMsg (ActSeeFlr+154)
#define ActReqDelAllRcvMsg (ActSeeFlr+155)
#define ActDelAllSntMsg (ActSeeFlr+156)
#define ActDelAllRcvMsg (ActSeeFlr+157)
#define ActDelSntMsg (ActSeeFlr+158)
#define ActDelRcvMsg (ActSeeFlr+159)
#define ActExpSntMsg (ActSeeFlr+160)
#define ActExpRcvMsg (ActSeeFlr+161)
#define ActConSntMsg (ActSeeFlr+162)
#define ActConRcvMsg (ActSeeFlr+163)
#define ActLstBanUsr (ActSeeFlr+164)
#define ActBanUsrMsg (ActSeeFlr+165)
#define ActUnbUsrMsg (ActSeeFlr+166)
#define ActUnbUsrLst (ActSeeFlr+167)
#define ActCht (ActSeeFlr+168)
/*****************************************************************************/
/****************************** Statistics tab *******************************/

View File

@ -103,11 +103,12 @@
/****************************** Public constants *****************************/
/*****************************************************************************/
#define Log_PLATFORM_VERSION "SWAD 14.97 (2015/03/18)"
#define Log_PLATFORM_VERSION "SWAD 14.98 (2015/03/19)"
// Number of lines (includes comments but not blank lines) has been got with the following command:
// nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*.h sql/swad*.sql | tail -1
/*
Version 14.98: Mar 19, 2015 Show list of following and followers. (183300 lines)
Version 14.97: Mar 18, 2015 Show number of following and followers in user's profile. (183130 lines)
Version 14.96.3: Mar 18, 2015 Changes in record cards. (183017 lines)
Version 14.96.2: Mar 18, 2015 Changes in record cards. (183011 lines)

View File

@ -62,6 +62,7 @@ extern struct Globals Gbl;
static unsigned Fol_GetNumFollowing (long UsrCod);
static unsigned Fol_GetNumFollowers (long UsrCod);
static void Fol_ShowFollowedOrFollowed (const struct UsrData *UsrDat);
/*****************************************************************************/
/*************** Check if a user is a follower of another user ***************/
@ -85,13 +86,13 @@ bool Fol_CheckUsrIsFollowerOf (long FollowerCod,long FollowedCod)
/**************** Show following and followers of a user *********************/
/*****************************************************************************/
void Fol_ShowFollowingAndFollowers (long UsrCod)
void Fol_ShowFollowingAndFollowers (const struct UsrData *UsrDat)
{
extern const char *The_ClassFormul[The_NUM_THEMES];
extern const char *Txt_Following;
extern const char *Txt_Followers;
unsigned Following = Fol_GetNumFollowing (UsrCod);
unsigned Followers = Fol_GetNumFollowers (UsrCod);
unsigned Following = Fol_GetNumFollowing (UsrDat->UsrCod);
unsigned Followers = Fol_GetNumFollowers (UsrDat->UsrCod);
/***** Start table *****/
fprintf (Gbl.F.Out,"<table class=\"CELLS_PAD_4\" style=\"margin:0 auto;\">"
@ -100,30 +101,38 @@ void Fol_ShowFollowingAndFollowers (long UsrCod)
/***** Following *****/
fprintf (Gbl.F.Out,"<td style=\"min-width:100px;"
" text-align:center; vertical-align:top;\">"
"<div class=\"FOLLOW\">"
"%u"
"</div>"
"<div class=\"FOLLOW\">");
Act_FormStart (ActSeeFlg);
Usr_PutParamOtherUsrCodEncrypted (UsrDat->EncryptedUsrCod);
Act_LinkFormSubmit (Txt_Following,"FOLLOW");
fprintf (Gbl.F.Out,"%u</a>",Following);
Act_FormEnd ();
fprintf (Gbl.F.Out,"</div>"
"<div class=\"%s\">"
"%s"
"</div>"
"%s</div>"
"</td>",
Following,
The_ClassFormul[Gbl.Prefs.Theme],
Txt_Following);
Txt_Following);
/***** Followers *****/
fprintf (Gbl.F.Out,"<td style=\"min-width:100px;"
" text-align:center; vertical-align:top;\">"
"<div class=\"FOLLOW\">"
"%u"
"</div>"
"<div class=\"FOLLOW\">");
Act_FormStart (ActSeeFlr);
Usr_PutParamOtherUsrCodEncrypted (UsrDat->EncryptedUsrCod);
Act_LinkFormSubmit (Txt_Followers,"FOLLOW");
fprintf (Gbl.F.Out,"%u</a>",Followers);
Act_FormEnd ();
fprintf (Gbl.F.Out,"</div>"
"<div class=\"%s\">"
"%s"
"</div>"
"%s</div>"
"</td>",
Followers,
The_ClassFormul[Gbl.Prefs.Theme],
Txt_Followers);
Txt_Followers);
/***** End table *****/
fprintf (Gbl.F.Out,"</tr>"
@ -158,6 +167,186 @@ static unsigned Fol_GetNumFollowers (long UsrCod)
return DB_QueryCOUNT (Query,"can not get number of followers");
}
/*****************************************************************************/
/***************************** List followed users ***************************/
/*****************************************************************************/
void Fol_ListFollowing (void)
{
extern const char *Txt_User_not_found_or_you_do_not_have_permission_;
extern const char *Txt_Following;
char Query[256];
MYSQL_RES *mysql_res;
MYSQL_ROW row;
unsigned NumUsrs;
unsigned NumUsr;
struct UsrData UsrDat;
/***** Get user to view user he/she follows *****/
if (Usr_GetParamOtherUsrCodEncryptedAndGetUsrData ())
{
/***** Show user's profile *****/
if (Prf_ShowUserProfile ())
{
/***** Check if a user is a follower of another user *****/
sprintf (Query,"SELECT FollowedCod FROM usr_follow"
" WHERE FollowerCod='%ld' ORDER BY FollowTime DESC",
Gbl.Usrs.Other.UsrDat.UsrCod);
NumUsrs = (unsigned) DB_QuerySELECT (Query,&mysql_res,"can not get followed users");
if (NumUsrs)
{
/***** Initialize structure with user's data *****/
Usr_UsrDataConstructor (&UsrDat);
/***** Start listing *****/
Lay_StartRoundFrameTable10 (NULL,2,Txt_Following);
for (NumUsr = 0;
NumUsr < NumUsrs;
NumUsr++)
{
/***** Get user and number of clicks *****/
row = mysql_fetch_row (mysql_res);
/* Get user's code (row[0]) */
UsrDat.UsrCod = Str_ConvertStrCodToLongCod (row[0]);
Usr_GetAllUsrDataFromUsrCod (&UsrDat);
/***** Show user *****/
if (!(NumUsr % 10))
fprintf (Gbl.F.Out,"<tr>");
Fol_ShowFollowedOrFollowed (&UsrDat);
if ((NumUsr % 10) == 9 || NumUsr == NumUsrs - 1)
fprintf (Gbl.F.Out,"</tr>");
}
/***** End listing *****/
Lay_EndRoundFrameTable10 ();
/***** Free memory used for user's data *****/
Usr_UsrDataDestructor (&UsrDat);
}
/***** Free structure that stores the query result *****/
DB_FreeMySQLResult (&mysql_res);
}
else
Lay_ShowAlert (Lay_WARNING,Txt_User_not_found_or_you_do_not_have_permission_);
}
else
Lay_ShowAlert (Lay_WARNING,Txt_User_not_found_or_you_do_not_have_permission_);
}
/*****************************************************************************/
/******************************* List followers ******************************/
/*****************************************************************************/
void Fol_ListFollowers (void)
{
extern const char *Txt_User_not_found_or_you_do_not_have_permission_;
extern const char *Txt_Followers;
char Query[256];
MYSQL_RES *mysql_res;
MYSQL_ROW row;
unsigned NumUsrs;
unsigned NumUsr;
struct UsrData UsrDat;
/***** Get user to view user he/she follows *****/
if (Usr_GetParamOtherUsrCodEncryptedAndGetUsrData ())
{
/***** Show user's profile *****/
if (Prf_ShowUserProfile ())
{
/***** Check if a user is a follower of another user *****/
sprintf (Query,"SELECT FollowerCod FROM usr_follow"
" WHERE FollowedCod='%ld' ORDER BY FollowTime DESC",
Gbl.Usrs.Other.UsrDat.UsrCod);
NumUsrs = (unsigned) DB_QuerySELECT (Query,&mysql_res,"can not get followers");
if (NumUsrs)
{
/***** Initialize structure with user's data *****/
Usr_UsrDataConstructor (&UsrDat);
/***** Start listing *****/
Lay_StartRoundFrameTable10 (NULL,2,Txt_Followers);
for (NumUsr = 0;
NumUsr < NumUsrs;
NumUsr++)
{
/***** Get user and number of clicks *****/
row = mysql_fetch_row (mysql_res);
/* Get user's code (row[0]) */
UsrDat.UsrCod = Str_ConvertStrCodToLongCod (row[0]);
Usr_GetAllUsrDataFromUsrCod (&UsrDat);
/***** Show user *****/
if (!(NumUsr % 10))
fprintf (Gbl.F.Out,"<tr>");
Fol_ShowFollowedOrFollowed (&UsrDat);
if ((NumUsr % 10) == 9 || NumUsr == NumUsrs - 1)
fprintf (Gbl.F.Out,"</tr>");
}
/***** End listing *****/
Lay_EndRoundFrameTable10 ();
/***** Free memory used for user's data *****/
Usr_UsrDataDestructor (&UsrDat);
}
/***** Free structure that stores the query result *****/
DB_FreeMySQLResult (&mysql_res);
}
else
Lay_ShowAlert (Lay_WARNING,Txt_User_not_found_or_you_do_not_have_permission_);
}
else
Lay_ShowAlert (Lay_WARNING,Txt_User_not_found_or_you_do_not_have_permission_);
}
/*****************************************************************************/
/************** Show user's photo and nickname in ranking list ***************/
/*****************************************************************************/
static void Fol_ShowFollowedOrFollowed (const struct UsrData *UsrDat)
{
extern const char *Txt_View_public_profile;
bool ShowPhoto;
char PhotoURL[PATH_MAX+1];
bool Visible = Pri_ShowIsAllowed (UsrDat->ProfileVisibility,UsrDat->UsrCod);
fprintf (Gbl.F.Out,"<td style=\"width:18px; height:40px;\">");
/***** Check if I can see the public profile *****/
if (Visible)
{
/***** User's photo *****/
ShowPhoto = Pho_ShowUsrPhotoIsAllowed (UsrDat,PhotoURL);
Pho_ShowUsrPhoto (UsrDat,ShowPhoto ? PhotoURL :
NULL,
"PHOTO18x24",Pho_ZOOM);
}
fprintf (Gbl.F.Out,"</td>"
"<td style=\"height:40px;>");
/***** Put form to go to public profile *****/
if (Visible && UsrDat->Nickname[0])
{
Act_FormStart (ActSeePubPrf);
Usr_PutParamOtherUsrCodEncrypted (UsrDat->EncryptedUsrCod);
Act_LinkFormSubmit (Txt_View_public_profile,"DAT_SMALL");
Usr_RestrictLengthAndWriteName (UsrDat,8);
fprintf (Gbl.F.Out,"</a>");
Act_FormEnd ();
}
fprintf (Gbl.F.Out,"</td>");
}
/*****************************************************************************/
/***************************** Follow another user ***************************/
/*****************************************************************************/
@ -168,7 +357,7 @@ void Fol_FollowUsr (void)
char Query[256];
bool Error;
/***** Get user to be removed *****/
/***** Get user to be followed *****/
if (Usr_GetParamOtherUsrCodEncryptedAndGetUsrData ())
{
if (!Fol_CheckUsrIsFollowerOf (Gbl.Usrs.Me.UsrDat.UsrCod,
@ -203,7 +392,7 @@ void Fol_UnfollowUsr (void)
char Query[256];
bool Error;
/***** Get user to be removed *****/
/***** Get user to be unfollowed *****/
if (Usr_GetParamOtherUsrCodEncryptedAndGetUsrData ())
{
if (Fol_CheckUsrIsFollowerOf (Gbl.Usrs.Me.UsrDat.UsrCod,

View File

@ -27,6 +27,8 @@
/********************************** Headers **********************************/
/*****************************************************************************/
#include "swad_user.h"
/*****************************************************************************/
/****************************** Public constants *****************************/
/*****************************************************************************/
@ -40,7 +42,9 @@
/*****************************************************************************/
bool Fol_CheckUsrIsFollowerOf (long FollowerCod,long FollowedCod);
void Fol_ShowFollowingAndFollowers (long UsrCod);
void Fol_ShowFollowingAndFollowers (const struct UsrData *UsrDat);
void Fol_ListFollowing (void);
void Fol_ListFollowers (void);
void Fol_FollowUsr (void);
void Fol_UnfollowUsr (void);

View File

@ -240,7 +240,7 @@ bool Prf_ShowUserProfile (void)
/***** Show following and followers *****/
if (Gbl.Usrs.Me.LoggedRole == Rol_ROLE_SYS_ADM)
Fol_ShowFollowingAndFollowers (Gbl.Usrs.Other.UsrDat.UsrCod);
Fol_ShowFollowingAndFollowers (&Gbl.Usrs.Other.UsrDat);
fprintf (Gbl.F.Out,"</td>"
"<td style=\"text-align:left;"