Version20.2

This commit is contained in:
acanas 2020-09-26 17:20:01 +02:00
parent e2ab1b601b
commit d15f8b7d94
14 changed files with 420 additions and 373 deletions

View File

@ -1518,7 +1518,7 @@ 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" },
[ActSeeMsg ] = {1912, 4,TabMsg,ActSeeMsg ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Msg_ShowRecMsgs ,"envelope" },
[ActSeeRcvMsg ] = { 3, 4,TabMsg,ActSeeRcvMsg ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Msg_ShowRecMsgs ,"envelope" },
[ActReqMaiUsr ] = {1772, 5,TabMsg,ActReqMaiUsr ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Mai_ReqUsrsToListEmails ,"at" },
// Actions not in menu:
@ -1682,26 +1682,25 @@ const struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
// [ActCht ] = { 52,-1,TabUnk,ActSeeChtRms ,0x3F8,0x3C4,0x3C4,0x3C4,0x3C4,0x3C4,0x3C4,Act_CONT_NORM,Act_BRW_NEW_TAB,Cht_OpenChatWindow ,NULL ,NULL},
[ActCht ] = { 52,-1,TabUnk,ActSeeChtRms ,0x200,0x200,0x200,0x200,0x200,0x200,0x200,Act_CONT_NORM,Act_BRW_NEW_TAB,Cht_OpenChatWindow ,NULL ,NULL},
[ActReqMsgUsr ] = { 26,-1,TabUnk,ActSeeMsg ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Msg_FormMsgUsrs ,NULL},
[ActSeeRcvMsg ] = { 3,-1,TabUnk,ActSeeMsg ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Msg_ShowRecMsgs ,NULL},
[ActSeeSntMsg ] = { 70,-1,TabUnk,ActSeeMsg ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Msg_ShowSntMsgs ,NULL},
[ActReqMsgUsr ] = { 26,-1,TabUnk,ActSeeRcvMsg ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Msg_FormMsgUsrs ,NULL},
[ActSeeSntMsg ] = { 70,-1,TabUnk,ActSeeRcvMsg ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Msg_ShowSntMsgs ,NULL},
[ActRcvMsgUsr ] = { 27,-1,TabUnk,ActSeeMsg ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_DATA,Act_BRW_1ST_TAB,NULL ,Msg_RecMsgFromUsr ,NULL},
[ActReqDelAllSntMsg ] = { 604,-1,TabUnk,ActSeeMsg ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Msg_ReqDelAllSntMsgs ,NULL},
[ActReqDelAllRcvMsg ] = { 593,-1,TabUnk,ActSeeMsg ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Msg_ReqDelAllRecMsgs ,NULL},
[ActDelAllSntMsg ] = { 434,-1,TabUnk,ActSeeMsg ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Msg_DelAllSntMsgs ,NULL},
[ActDelAllRcvMsg ] = { 436,-1,TabUnk,ActSeeMsg ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Msg_DelAllRecMsgs ,NULL},
[ActDelSntMsg ] = { 90,-1,TabUnk,ActSeeMsg ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Msg_DelSntMsg ,NULL},
[ActDelRcvMsg ] = { 64,-1,TabUnk,ActSeeMsg ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Msg_DelRecMsg ,NULL},
[ActExpSntMsg ] = { 664,-1,TabUnk,ActSeeMsg ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Msg_ExpSntMsg ,NULL},
[ActExpRcvMsg ] = { 663,-1,TabUnk,ActSeeMsg ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Msg_ExpRecMsg ,NULL},
[ActConSntMsg ] = {1020,-1,TabUnk,ActSeeMsg ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Msg_ConSntMsg ,NULL},
[ActConRcvMsg ] = {1019,-1,TabUnk,ActSeeMsg ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Msg_ConRecMsg ,NULL},
[ActRcvMsgUsr ] = { 27,-1,TabUnk,ActSeeRcvMsg ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_DATA,Act_BRW_1ST_TAB,NULL ,Msg_RecMsgFromUsr ,NULL},
[ActReqDelAllSntMsg ] = { 604,-1,TabUnk,ActSeeRcvMsg ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Msg_ReqDelAllSntMsgs ,NULL},
[ActReqDelAllRcvMsg ] = { 593,-1,TabUnk,ActSeeRcvMsg ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Msg_ReqDelAllRecMsgs ,NULL},
[ActDelAllSntMsg ] = { 434,-1,TabUnk,ActSeeRcvMsg ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Msg_DelAllSntMsgs ,NULL},
[ActDelAllRcvMsg ] = { 436,-1,TabUnk,ActSeeRcvMsg ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Msg_DelAllRecMsgs ,NULL},
[ActDelSntMsg ] = { 90,-1,TabUnk,ActSeeRcvMsg ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Msg_DelSntMsg ,NULL},
[ActDelRcvMsg ] = { 64,-1,TabUnk,ActSeeRcvMsg ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Msg_DelRecMsg ,NULL},
[ActExpSntMsg ] = { 664,-1,TabUnk,ActSeeRcvMsg ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Msg_ExpSntMsg ,NULL},
[ActExpRcvMsg ] = { 663,-1,TabUnk,ActSeeRcvMsg ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Msg_ExpRecMsg ,NULL},
[ActConSntMsg ] = {1020,-1,TabUnk,ActSeeRcvMsg ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Msg_ConSntMsg ,NULL},
[ActConRcvMsg ] = {1019,-1,TabUnk,ActSeeRcvMsg ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Msg_ConRecMsg ,NULL},
[ActLstBanUsr ] = {1017,-1,TabUnk,ActSeeMsg ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Msg_ListBannedUsrs ,NULL},
[ActBanUsrMsg ] = {1015,-1,TabUnk,ActSeeMsg ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Msg_BanSenderWhenShowingMsgs ,NULL},
[ActUnbUsrMsg ] = {1016,-1,TabUnk,ActSeeMsg ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Msg_UnbanSenderWhenShowingMsgs ,NULL},
[ActUnbUsrLst ] = {1018,-1,TabUnk,ActSeeMsg ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Msg_UnbanSenderWhenListingUsrs ,NULL},
[ActLstBanUsr ] = {1017,-1,TabUnk,ActSeeRcvMsg ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Msg_ListBannedUsrs ,NULL},
[ActBanUsrMsg ] = {1015,-1,TabUnk,ActSeeRcvMsg ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Msg_BanSenderWhenShowingMsgs ,NULL},
[ActUnbUsrMsg ] = {1016,-1,TabUnk,ActSeeRcvMsg ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Msg_UnbanSenderWhenShowingMsgs ,NULL},
[ActUnbUsrLst ] = {1018,-1,TabUnk,ActSeeRcvMsg ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Msg_UnbanSenderWhenListingUsrs ,NULL},
[ActMaiUsr ] = { 100,-1,TabUnk,ActReqMaiUsr ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Mai_GetSelectedUsrsAndListEmails,NULL},
@ -3726,7 +3725,6 @@ 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 1912
#define Act_MAX_ACTION_COD 1911
#define Act_MAX_OPTIONS_IN_MENU_PER_TAB 13
@ -1457,7 +1457,7 @@ 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 ActSeeMsg (ActUnfSevTch + 5)
#define ActSeeRcvMsg (ActUnfSevTch + 5)
#define ActReqMaiUsr (ActUnfSevTch + 6)
// Secondary actions
#define ActWriAnn (ActUnfSevTch + 7)
@ -1609,26 +1609,25 @@ typedef signed int Act_Action_t; // Must be a signed type, because -1 is used to
#define ActCht (ActUnfSevTch + 151)
#define ActReqMsgUsr (ActUnfSevTch + 152)
#define ActSeeRcvMsg (ActUnfSevTch + 153)
#define ActSeeSntMsg (ActUnfSevTch + 154)
#define ActSeeSntMsg (ActUnfSevTch + 153)
#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 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 ActMaiUsr (ActUnfSevTch + 170)
#define ActMaiUsr (ActUnfSevTch + 169)
/*****************************************************************************/
/****************************** Analytics tab ********************************/

View File

@ -79,7 +79,7 @@ static void Ann_CreateAnnouncement (unsigned Roles,const char *Subject,const cha
void Ann_ShowAllAnnouncements (void)
{
extern const char *Hlp_MESSAGES_Announcements;
extern const char *Hlp_COMMUNICATION_Announcements;
extern const char *Txt_Announcements;
extern const char *Txt_No_announcements;
MYSQL_RES *mysql_res;
@ -130,7 +130,7 @@ void Ann_ShowAllAnnouncements (void)
Box_BoxBegin ("550px",Txt_Announcements,
ICanEdit ? Ann_PutIconToAddNewAnnouncement :
NULL,NULL,
Hlp_MESSAGES_Announcements,Box_NOT_CLOSABLE);
Hlp_COMMUNICATION_Announcements,Box_NOT_CLOSABLE);
if (!NumAnnouncements)
Ale_ShowAlert (Ale_INFO,Txt_No_announcements);
@ -395,7 +395,7 @@ static long Ann_GetParamAnnCod (void)
void Ann_ShowFormAnnouncement (void)
{
extern const char *Hlp_MESSAGES_Announcements;
extern const char *Hlp_COMMUNICATION_Announcements;
extern const char *The_ClassFormInBox[The_NUM_THEMES];
extern const char *Txt_New_announcement;
extern const char *Txt_MSG_Subject;
@ -409,7 +409,7 @@ void Ann_ShowFormAnnouncement (void)
/***** Begin box and table *****/
Box_BoxTableBegin (NULL,Txt_New_announcement,
NULL,NULL,
Hlp_MESSAGES_Announcements,Box_NOT_CLOSABLE,2);
Hlp_COMMUNICATION_Announcements,Box_NOT_CLOSABLE,2);
/***** Announcement subject and body *****/
Ann_PutSubjectMessage ("Subject",Txt_MSG_Subject, 2);

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.1.1 (2020-09-25)"
#define Log_PLATFORM_VERSION "SWAD 20.2 (2020-09-26)"
#define CSS_FILE "swad20.1.1.css"
#define JS_FILE "swad19.254.js"
/*
@ -573,6 +573,9 @@ 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.2: Sep 26, 2020 Removed unused action.
Contextual menu in box used to write a new message.
Changes in help links. (304440 lines)
Version 20.1.1: Sep 25, 2020 Old options related to messages removed from menu. (304394 lines)
Copy the following icon to icon public directory:
sudo cp icon/iconset/awesome/comment.svg /var/www/html/swad/icon/iconset/awesome/

View File

@ -989,7 +989,7 @@ void For_RemoveUsrFromReadThrs (long UsrCod)
static void For_ShowPostsOfAThread (struct For_Forums *Forums,
Ale_AlertType_t AlertType,const char *Message)
{
extern const char *Hlp_MESSAGES_Forums_posts;
extern const char *Hlp_COMMUNICATION_Forums_posts;
extern const char *Txt_Thread;
struct For_Thread Thread;
char LastSubject[Cns_MAX_BYTES_SUBJECT + 1];
@ -1031,7 +1031,7 @@ static void For_ShowPostsOfAThread (struct For_Forums *Forums,
Txt_Thread,Thread.Subject);
Box_BoxBegin (NULL,FrameTitle,
For_PutIconNewPost,Forums,
Hlp_MESSAGES_Forums_posts,Box_NOT_CLOSABLE);
Hlp_COMMUNICATION_Forums_posts,Box_NOT_CLOSABLE);
/***** Get posts of a thread from database *****/
NumRows = DB_QuerySELECT (&mysql_res,"can not get posts of a thread",
@ -1564,7 +1564,7 @@ static void For_PutHiddenParamPstCod (long PstCod)
static void For_ShowForumList (struct For_Forums *Forums)
{
extern const char *Hlp_MESSAGES_Forums;
extern const char *Hlp_COMMUNICATION_Forums;
extern const char *Txt_Forums;
bool IsLastItemInLevel[1 + For_FORUM_MAX_LEVELS];
MYSQL_RES *mysql_resCtr;
@ -1596,7 +1596,7 @@ static void For_ShowForumList (struct For_Forums *Forums)
/***** Begin box *****/
Box_BoxBegin (NULL,Txt_Forums,
For_PutIconsForums,NULL,
Hlp_MESSAGES_Forums,Box_NOT_CLOSABLE);
Hlp_COMMUNICATION_Forums,Box_NOT_CLOSABLE);
/***** Put a form to select which forums *****/
For_PutFormWhichForums (Forums);
@ -2428,7 +2428,7 @@ void For_ShowForumTheads (void)
static void For_ShowForumThreadsHighlightingOneThread (struct For_Forums *Forums,
Ale_AlertType_t AlertType,const char *Message)
{
extern const char *Hlp_MESSAGES_Forums_threads;
extern const char *Hlp_COMMUNICATION_Forums_threads;
extern const char *Txt_Forum;
extern const char *Txt_MSG_Subject;
extern const char *Txt_FORUM_THREAD_HELP_ORDER[Dat_NUM_START_END_TIME];
@ -2518,7 +2518,7 @@ static void For_ShowForumThreadsHighlightingOneThread (struct For_Forums *Forums
Txt_Forum,ForumName);
Box_BoxBegin (NULL,FrameTitle,
For_PutIconNewThread,Forums,
Hlp_MESSAGES_Forums_threads,Box_NOT_CLOSABLE);
Hlp_COMMUNICATION_Forums_threads,Box_NOT_CLOSABLE);
/***** List the threads *****/
if (NumThrs)
@ -3847,8 +3847,8 @@ static void For_RestrictAccess (const struct For_Forums *Forums)
static void For_WriteFormForumPst (struct For_Forums *Forums,
bool IsReply,const char *Subject)
{
extern const char *Hlp_MESSAGES_Forums_new_post;
extern const char *Hlp_MESSAGES_Forums_new_thread;
extern const char *Hlp_COMMUNICATION_Forums_new_post;
extern const char *Hlp_COMMUNICATION_Forums_new_thread;
extern const char *The_ClassFormInBox[The_NUM_THEMES];
extern const char *Txt_New_post;
extern const char *Txt_New_thread;
@ -3860,11 +3860,11 @@ static void For_WriteFormForumPst (struct For_Forums *Forums,
if (IsReply)
Box_BoxBegin (NULL,Txt_New_post,
NULL,NULL,
Hlp_MESSAGES_Forums_new_post,Box_NOT_CLOSABLE);
Hlp_COMMUNICATION_Forums_new_post,Box_NOT_CLOSABLE);
else
Box_BoxBegin (NULL,Txt_New_thread,
NULL,NULL,
Hlp_MESSAGES_Forums_new_thread,Box_NOT_CLOSABLE);
Hlp_COMMUNICATION_Forums_new_thread,Box_NOT_CLOSABLE);
/***** Begin form *****/
if (IsReply) // Form to write a reply to a post of an existing thread

View File

@ -157,6 +157,69 @@ const char *Hlp_START_Calendar =
"START.Calendar.en";
#endif
const char *Hlp_START_Notifications =
#if L==1
"START.Notifications.es";
#elif L==2
"START.Notifications.en";
#elif L==3
"START.Notifications.en";
#elif L==4
"START.Notifications.es";
#elif L==5
"START.Notifications.en";
#elif L==6
"START.Notifications.es";
#elif L==7
"START.Notifications.en";
#elif L==8
"START.Notifications.en";
#elif L==9
"START.Notifications.en";
#endif
const char *Hlp_START_Domains =
#if L==1
"START.Domains.es";
#elif L==2
"START.Domains.en";
#elif L==3
"START.Domains.en";
#elif L==4
"START.Domains.es";
#elif L==5
"START.Domains.en";
#elif L==6
"START.Domains.es";
#elif L==7
"START.Domains.en";
#elif L==8
"START.Domains.en";
#elif L==9
"START.Domains.en";
#endif
const char *Hlp_START_Domains_edit =
#if L==1
"START.Domains.es#editar";
#elif L==2
"START.Domains.en#edit";
#elif L==3
"START.Domains.en#edit";
#elif L==4
"START.Domains.es#editar";
#elif L==5
"START.Domains.en#edit";
#elif L==6
"START.Domains.es#editar";
#elif L==7
"START.Domains.en#edit";
#elif L==8
"START.Domains.en#edit";
#elif L==9
"START.Domains.en#edit";
#endif
/***** SYSTEM tab *****/
const char *Hlp_SYSTEM_Information =
@ -2486,342 +2549,279 @@ const char *Hlp_USERS_Connected_last_clicks =
"USERS.Connected.en#last-clicks";
#endif
/***** MESSAGES tab *****/
/***** COMMUNICATION tab *****/
const char *Hlp_START_Notifications =
const char *Hlp_COMMUNICATION_Announcements =
#if L==1
"MESSAGES.Notifications.es";
"COMMUNICATION.Announcements.es";
#elif L==2
"MESSAGES.Notifications.en";
"COMMUNICATION.Announcements.en";
#elif L==3
"MESSAGES.Notifications.en";
"COMMUNICATION.Announcements.en";
#elif L==4
"MESSAGES.Notifications.es";
"COMMUNICATION.Announcements.es";
#elif L==5
"MESSAGES.Notifications.en";
"COMMUNICATION.Announcements.en";
#elif L==6
"MESSAGES.Notifications.es";
"COMMUNICATION.Announcements.es";
#elif L==7
"MESSAGES.Notifications.en";
"COMMUNICATION.Announcements.en";
#elif L==8
"MESSAGES.Notifications.en";
"COMMUNICATION.Announcements.en";
#elif L==9
"MESSAGES.Notifications.en";
"COMMUNICATION.Announcements.en";
#endif
const char *Hlp_START_Domains =
const char *Hlp_COMMUNICATION_Notices =
#if L==1
"MESSAGES.Domains.es";
"COMMUNICATION.Notices.es";
#elif L==2
"MESSAGES.Domains.en";
"COMMUNICATION.Notices.en";
#elif L==3
"MESSAGES.Domains.en";
"COMMUNICATION.Notices.en";
#elif L==4
"MESSAGES.Domains.es";
"COMMUNICATION.Notices.es";
#elif L==5
"MESSAGES.Domains.en";
"COMMUNICATION.Notices.en";
#elif L==6
"MESSAGES.Domains.es";
"COMMUNICATION.Notices.es";
#elif L==7
"MESSAGES.Domains.en";
"COMMUNICATION.Notices.en";
#elif L==8
"MESSAGES.Domains.en";
"COMMUNICATION.Notices.en";
#elif L==9
"MESSAGES.Domains.en";
"COMMUNICATION.Notices.en";
#endif
const char *Hlp_START_Domains_edit =
const char *Hlp_COMMUNICATION_Forums =
#if L==1
"MESSAGES.Domains.es#editar";
"COMMUNICATION.Forums.es";
#elif L==2
"MESSAGES.Domains.en#edit";
"COMMUNICATION.Forums.en";
#elif L==3
"MESSAGES.Domains.en#edit";
"COMMUNICATION.Forums.en";
#elif L==4
"MESSAGES.Domains.es#editar";
"COMMUNICATION.Forums.es";
#elif L==5
"MESSAGES.Domains.en#edit";
"COMMUNICATION.Forums.en";
#elif L==6
"MESSAGES.Domains.es#editar";
"COMMUNICATION.Forums.es";
#elif L==7
"MESSAGES.Domains.en#edit";
"COMMUNICATION.Forums.en";
#elif L==8
"MESSAGES.Domains.en#edit";
"COMMUNICATION.Forums.en";
#elif L==9
"MESSAGES.Domains.en#edit";
"COMMUNICATION.Forums.en";
#endif
const char *Hlp_MESSAGES_Announcements =
const char *Hlp_COMMUNICATION_Forums_threads =
#if L==1
"MESSAGES.Announcements.es";
"COMMUNICATION.Forums.es#discusiones";
#elif L==2
"MESSAGES.Announcements.en";
"COMMUNICATION.Forums.en#threads";
#elif L==3
"MESSAGES.Announcements.en";
"COMMUNICATION.Forums.en#threads";
#elif L==4
"MESSAGES.Announcements.es";
"COMMUNICATION.Forums.es#discusiones";
#elif L==5
"MESSAGES.Announcements.en";
"COMMUNICATION.Forums.en#threads";
#elif L==6
"MESSAGES.Announcements.es";
"COMMUNICATION.Forums.es#discusiones";
#elif L==7
"MESSAGES.Announcements.en";
"COMMUNICATION.Forums.en#threads";
#elif L==8
"MESSAGES.Announcements.en";
"COMMUNICATION.Forums.en#threads";
#elif L==9
"MESSAGES.Announcements.en";
"COMMUNICATION.Forums.en#threads";
#endif
const char *Hlp_MESSAGES_Notices =
const char *Hlp_COMMUNICATION_Forums_new_thread =
#if L==1
"MESSAGES.Notices.es";
"COMMUNICATION.Forums.es#nueva-discusi%C3%B3n";
#elif L==2
"MESSAGES.Notices.en";
"COMMUNICATION.Forums.en#new-thread";
#elif L==3
"MESSAGES.Notices.en";
"COMMUNICATION.Forums.en#new-thread";
#elif L==4
"MESSAGES.Notices.es";
"COMMUNICATION.Forums.es#nueva-discusi%C3%B3n";
#elif L==5
"MESSAGES.Notices.en";
"COMMUNICATION.Forums.en#new-thread";
#elif L==6
"MESSAGES.Notices.es";
"COMMUNICATION.Forums.es#nueva-discusi%C3%B3n";
#elif L==7
"MESSAGES.Notices.en";
"COMMUNICATION.Forums.en#new-thread";
#elif L==8
"MESSAGES.Notices.en";
"COMMUNICATION.Forums.en#new-thread";
#elif L==9
"MESSAGES.Notices.en";
"COMMUNICATION.Forums.en#new-thread";
#endif
const char *Hlp_MESSAGES_Forums =
const char *Hlp_COMMUNICATION_Forums_posts =
#if L==1
"MESSAGES.Forums.es";
"COMMUNICATION.Forums.es#comentarios";
#elif L==2
"MESSAGES.Forums.en";
"COMMUNICATION.Forums.en#posts";
#elif L==3
"MESSAGES.Forums.en";
"COMMUNICATION.Forums.en#posts";
#elif L==4
"MESSAGES.Forums.es";
"COMMUNICATION.Forums.es#comentarios";
#elif L==5
"MESSAGES.Forums.en";
"COMMUNICATION.Forums.en#posts";
#elif L==6
"MESSAGES.Forums.es";
"COMMUNICATION.Forums.es#comentarios";
#elif L==7
"MESSAGES.Forums.en";
"COMMUNICATION.Forums.en#posts";
#elif L==8
"MESSAGES.Forums.en";
"COMMUNICATION.Forums.en#posts";
#elif L==9
"MESSAGES.Forums.en";
"COMMUNICATION.Forums.en#posts";
#endif
const char *Hlp_MESSAGES_Forums_threads =
const char *Hlp_COMMUNICATION_Forums_new_post =
#if L==1
"MESSAGES.Forums.es#discusiones";
"COMMUNICATION.Forums.es#nuevo-comentario";
#elif L==2
"MESSAGES.Forums.en#threads";
"COMMUNICATION.Forums.en#new-post";
#elif L==3
"MESSAGES.Forums.en#threads";
"COMMUNICATION.Forums.en#new-post";
#elif L==4
"MESSAGES.Forums.es#discusiones";
"COMMUNICATION.Forums.es#nuevo-comentario";
#elif L==5
"MESSAGES.Forums.en#threads";
"COMMUNICATION.Forums.en#new-post";
#elif L==6
"MESSAGES.Forums.es#discusiones";
"COMMUNICATION.Forums.es#nuevo-comentario";
#elif L==7
"MESSAGES.Forums.en#threads";
"COMMUNICATION.Forums.en#new-post";
#elif L==8
"MESSAGES.Forums.en#threads";
"COMMUNICATION.Forums.en#new-post";
#elif L==9
"MESSAGES.Forums.en#threads";
"COMMUNICATION.Forums.en#new-post";
#endif
const char *Hlp_MESSAGES_Forums_new_thread =
const char *Hlp_COMMUNICATION_Messages_write =
#if L==1
"MESSAGES.Forums.es#nueva-discusi%C3%B3n";
"COMMUNICATION.Write.es";
#elif L==2
"MESSAGES.Forums.en#new-thread";
"COMMUNICATION.Write.en";
#elif L==3
"MESSAGES.Forums.en#new-thread";
"COMMUNICATION.Write.en";
#elif L==4
"MESSAGES.Forums.es#nueva-discusi%C3%B3n";
"COMMUNICATION.Write.es";
#elif L==5
"MESSAGES.Forums.en#new-thread";
"COMMUNICATION.Write.en";
#elif L==6
"MESSAGES.Forums.es#nueva-discusi%C3%B3n";
"COMMUNICATION.Write.es";
#elif L==7
"MESSAGES.Forums.en#new-thread";
"COMMUNICATION.Write.en";
#elif L==8
"MESSAGES.Forums.en#new-thread";
"COMMUNICATION.Write.en";
#elif L==9
"MESSAGES.Forums.en#new-thread";
"COMMUNICATION.Write.en";
#endif
const char *Hlp_MESSAGES_Forums_posts =
const char *Hlp_COMMUNICATION_Messages_received =
#if L==1
"MESSAGES.Forums.es#comentarios";
"COMMUNICATION.Received.es";
#elif L==2
"MESSAGES.Forums.en#posts";
"COMMUNICATION.Received.en";
#elif L==3
"MESSAGES.Forums.en#posts";
"COMMUNICATION.Received.en";
#elif L==4
"MESSAGES.Forums.es#comentarios";
"COMMUNICATION.Received.es";
#elif L==5
"MESSAGES.Forums.en#posts";
"COMMUNICATION.Received.en";
#elif L==6
"MESSAGES.Forums.es#comentarios";
"COMMUNICATION.Received.es";
#elif L==7
"MESSAGES.Forums.en#posts";
"COMMUNICATION.Received.en";
#elif L==8
"MESSAGES.Forums.en#posts";
"COMMUNICATION.Received.en";
#elif L==9
"MESSAGES.Forums.en#posts";
"COMMUNICATION.Received.en";
#endif
const char *Hlp_MESSAGES_Forums_new_post =
const char *Hlp_COMMUNICATION_Messages_received_filter =
#if L==1
"MESSAGES.Forums.es#nuevo-comentario";
"COMMUNICATION.Received.es#filtro";
#elif L==2
"MESSAGES.Forums.en#new-post";
"COMMUNICATION.Received.en#filter";
#elif L==3
"MESSAGES.Forums.en#new-post";
"COMMUNICATION.Received.en#filter";
#elif L==4
"MESSAGES.Forums.es#nuevo-comentario";
"COMMUNICATION.Received.es#filtro";
#elif L==5
"MESSAGES.Forums.en#new-post";
"COMMUNICATION.Received.en#filter";
#elif L==6
"MESSAGES.Forums.es#nuevo-comentario";
"COMMUNICATION.Received.es#filtro";
#elif L==7
"MESSAGES.Forums.en#new-post";
"COMMUNICATION.Received.en#filter";
#elif L==8
"MESSAGES.Forums.en#new-post";
"COMMUNICATION.Received.en#filter";
#elif L==9
"MESSAGES.Forums.en#new-post";
"COMMUNICATION.Received.en#filter";
#endif
const char *Hlp_MESSAGES_Write =
const char *Hlp_COMMUNICATION_Messages_sent =
#if L==1
"MESSAGES.Write.es";
"COMMUNICATION.Sent.es";
#elif L==2
"MESSAGES.Write.en";
"COMMUNICATION.Sent.en";
#elif L==3
"MESSAGES.Write.en";
"COMMUNICATION.Sent.en";
#elif L==4
"MESSAGES.Write.es";
"COMMUNICATION.Sent.es";
#elif L==5
"MESSAGES.Write.en";
"COMMUNICATION.Sent.en";
#elif L==6
"MESSAGES.Write.es";
"COMMUNICATION.Sent.es";
#elif L==7
"MESSAGES.Write.en";
"COMMUNICATION.Sent.en";
#elif L==8
"MESSAGES.Write.en";
"COMMUNICATION.Sent.en";
#elif L==9
"MESSAGES.Write.en";
"COMMUNICATION.Sent.en";
#endif
const char *Hlp_MESSAGES_Received =
const char *Hlp_COMMUNICATION_Messages_sent_filter =
#if L==1
"MESSAGES.Received.es";
"COMMUNICATION.Sent.es#filtro";
#elif L==2
"MESSAGES.Received.en";
"COMMUNICATION.Sent.en#filter";
#elif L==3
"MESSAGES.Received.en";
"COMMUNICATION.Sent.en#filter";
#elif L==4
"MESSAGES.Received.es";
"COMMUNICATION.Sent.es#filtro";
#elif L==5
"MESSAGES.Received.en";
"COMMUNICATION.Sent.en#filter";
#elif L==6
"MESSAGES.Received.es";
"COMMUNICATION.Sent.es#filtro";
#elif L==7
"MESSAGES.Received.en";
"COMMUNICATION.Sent.en#filter";
#elif L==8
"MESSAGES.Received.en";
"COMMUNICATION.Sent.en#filter";
#elif L==9
"MESSAGES.Received.en";
"COMMUNICATION.Sent.en#filter";
#endif
const char *Hlp_MESSAGES_Received_filter =
const char *Hlp_COMMUNICATION_Email =
#if L==1
"MESSAGES.Received.es#filtro";
"COMMUNICATION.Email.es";
#elif L==2
"MESSAGES.Received.en#filter";
"COMMUNICATION.Email.en";
#elif L==3
"MESSAGES.Received.en#filter";
"COMMUNICATION.Email.en";
#elif L==4
"MESSAGES.Received.es#filtro";
"COMMUNICATION.Email.es";
#elif L==5
"MESSAGES.Received.en#filter";
"COMMUNICATION.Email.en";
#elif L==6
"MESSAGES.Received.es#filtro";
"COMMUNICATION.Email.es";
#elif L==7
"MESSAGES.Received.en#filter";
"COMMUNICATION.Email.en";
#elif L==8
"MESSAGES.Received.en#filter";
"COMMUNICATION.Email.en";
#elif L==9
"MESSAGES.Received.en#filter";
#endif
const char *Hlp_MESSAGES_Sent =
#if L==1
"MESSAGES.Sent.es";
#elif L==2
"MESSAGES.Sent.en";
#elif L==3
"MESSAGES.Sent.en";
#elif L==4
"MESSAGES.Sent.es";
#elif L==5
"MESSAGES.Sent.en";
#elif L==6
"MESSAGES.Sent.es";
#elif L==7
"MESSAGES.Sent.en";
#elif L==8
"MESSAGES.Sent.en";
#elif L==9
"MESSAGES.Sent.en";
#endif
const char *Hlp_MESSAGES_Sent_filter =
#if L==1
"MESSAGES.Sent.es#filtro";
#elif L==2
"MESSAGES.Sent.en#filter";
#elif L==3
"MESSAGES.Sent.en#filter";
#elif L==4
"MESSAGES.Sent.es#filtro";
#elif L==5
"MESSAGES.Sent.en#filter";
#elif L==6
"MESSAGES.Sent.es#filtro";
#elif L==7
"MESSAGES.Sent.en#filter";
#elif L==8
"MESSAGES.Sent.en#filter";
#elif L==9
"MESSAGES.Sent.en#filter";
#endif
const char *Hlp_MESSAGES_Email =
#if L==1
"MESSAGES.Email.es";
#elif L==2
"MESSAGES.Email.en";
#elif L==3
"MESSAGES.Email.en";
#elif L==4
"MESSAGES.Email.es";
#elif L==5
"MESSAGES.Email.en";
#elif L==6
"MESSAGES.Email.es";
#elif L==7
"MESSAGES.Email.en";
#elif L==8
"MESSAGES.Email.en";
#elif L==9
"MESSAGES.Email.en";
"COMMUNICATION.Email.en";
#endif
/***** ANALYTICS tab *****/

View File

@ -879,7 +879,7 @@ void Mai_ReqUsrsToListEmails (void)
static void Mai_PutFormToSelectUsrsToListEmails (__attribute__((unused)) void *Args)
{
extern const char *Hlp_MESSAGES_Email;
extern const char *Hlp_COMMUNICATION_Email;
extern const char *Txt_Email;
extern const char *Txt_View_email_addresses;
@ -888,7 +888,7 @@ static void Mai_PutFormToSelectUsrsToListEmails (__attribute__((unused)) void *A
ActMaiUsr,
NULL,NULL,
Txt_Email,
Hlp_MESSAGES_Email,
Hlp_COMMUNICATION_Email,
Txt_View_email_addresses,
false); // Do not put form with date range
}
@ -912,7 +912,7 @@ void Mai_GetSelectedUsrsAndListEmails (void)
static void Mai_ListEmails (__attribute__((unused)) void *Args)
{
extern const char *Hlp_MESSAGES_Email;
extern const char *Hlp_COMMUNICATION_Email;
extern const char *The_ClassFormOutBoxBold[The_NUM_THEMES];
extern const char *Txt_Email_addresses;
extern const char *Txt_X_users_who_have_email;
@ -928,7 +928,7 @@ static void Mai_ListEmails (__attribute__((unused)) void *Args)
/***** Start the box used to list the emails *****/
Box_BoxBegin (NULL,Txt_Email_addresses,
NULL,NULL,
Hlp_MESSAGES_Email,Box_NOT_CLOSABLE);
Hlp_COMMUNICATION_Email,Box_NOT_CLOSABLE);
/***** Start list with users' email addresses *****/
HTM_DIV_Begin ("class=\"DAT_SMALL CM\"");

View File

@ -152,7 +152,7 @@ static const Act_Action_t Mnu_MenuActions[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_
[ 1] = ActSeeAllNot,
[ 2] = ActSeeFor,
[ 3] = ActSeeChtRms,
[ 4] = ActSeeMsg,
[ 4] = ActSeeRcvMsg,
[ 5] = ActReqMaiUsr,
},
[TabAna] = {

View File

@ -75,8 +75,9 @@ extern struct Globals Gbl;
static const Pag_WhatPaginate_t Msg_WhatPaginate[Msg_NUM_TYPES_OF_MSGS] =
{
[Msg_MESSAGES_RECEIVED] = Pag_MESSAGES_RECEIVED,
[Msg_MESSAGES_SENT ] = Pag_MESSAGES_SENT,
[Msg_WRITING ] = Pag_NONE,
[Msg_RECEIVED] = Pag_MESSAGES_RECEIVED,
[Msg_SENT ] = Pag_MESSAGES_SENT,
};
/*****************************************************************************/
@ -236,7 +237,7 @@ void Msg_FormMsgUsrs (void)
static void Msg_PutFormMsgUsrs (struct Msg_Messages *Messages,
char Content[Cns_MAX_BYTES_LONG_TEXT + 1])
{
extern const char *Hlp_MESSAGES_Write;
extern const char *Hlp_COMMUNICATION_Messages_write;
extern const char *The_ClassFormInBox[The_NUM_THEMES];
extern const char *Txt_Reply_message;
extern const char *Txt_New_message;
@ -290,8 +291,8 @@ static void Msg_PutFormMsgUsrs (struct Msg_Messages *Messages,
/***** Begin box *****/
Box_BoxBegin (NULL,Messages->Reply.IsReply ? Txt_Reply_message :
Txt_New_message,
NULL,NULL,
Hlp_MESSAGES_Write,Box_NOT_CLOSABLE);
Msg_PutIconsListMsgs,Messages,
Hlp_COMMUNICATION_Messages_write,Box_NOT_CLOSABLE);
if (Messages->ShowOnlyOneRecipient)
/***** Form to show several potential recipients *****/
@ -989,7 +990,7 @@ void Msg_ReqDelAllRecMsgs (void)
}
/* Show received messages again */
Messages.TypeOfMessages = Msg_MESSAGES_RECEIVED;
Messages.TypeOfMessages = Msg_RECEIVED;
Msg_ShowSentOrReceivedMessages (&Messages);
/* End alert */
@ -1032,7 +1033,7 @@ void Msg_ReqDelAllSntMsgs (void)
Messages.FilterCrsShrtName);
/* Show sent messages again */
Messages.TypeOfMessages = Msg_MESSAGES_SENT;
Messages.TypeOfMessages = Msg_SENT;
Msg_ShowSentOrReceivedMessages (&Messages);
/* End alert */
@ -1063,7 +1064,7 @@ void Msg_DelAllRecMsgs (void)
/***** Delete messages *****/
NumMsgs = Msg_DelSomeRecOrSntMsgsUsr (&Messages,
Msg_MESSAGES_RECEIVED,
Msg_RECEIVED,
Gbl.Usrs.Me.UsrDat.UsrCod,
FilterFromToSubquery);
Msg_ShowNumMsgsDeleted (NumMsgs);
@ -1091,7 +1092,7 @@ void Msg_DelAllSntMsgs (void)
/***** Delete messages *****/
NumMsgs = Msg_DelSomeRecOrSntMsgsUsr (&Messages,
Msg_MESSAGES_SENT,
Msg_SENT,
Gbl.Usrs.Me.UsrDat.UsrCod,
FilterFromToSubquery);
Msg_ShowNumMsgsDeleted (NumMsgs);
@ -1470,10 +1471,10 @@ static unsigned long Msg_DelSomeRecOrSntMsgsUsr (const struct Msg_Messages *Mess
Lay_ShowErrorAndExit ("Wrong code of message.");
switch (TypeOfMessages)
{
case Msg_MESSAGES_RECEIVED:
case Msg_RECEIVED:
Msg_MoveReceivedMsgToDeleted (MsgCod,UsrCod);
break;
case Msg_MESSAGES_SENT:
case Msg_SENT:
Msg_MoveSentMsgToDeleted (MsgCod);
break;
default:
@ -1774,7 +1775,7 @@ void Msg_ShowSntMsgs (void)
Msg_ResetMessages (&Messages);
/***** Show the sent messages *****/
Messages.TypeOfMessages = Msg_MESSAGES_SENT;
Messages.TypeOfMessages = Msg_SENT;
Msg_ShowSentOrReceivedMessages (&Messages);
}
@ -1798,7 +1799,7 @@ void Msg_ShowRecMsgs (void)
}
/***** Show the received messages *****/
Messages.TypeOfMessages = Msg_MESSAGES_RECEIVED;
Messages.TypeOfMessages = Msg_RECEIVED;
Msg_ShowSentOrReceivedMessages (&Messages);
}
@ -1808,10 +1809,10 @@ void Msg_ShowRecMsgs (void)
static void Msg_ShowSentOrReceivedMessages (struct Msg_Messages *Messages)
{
extern const char *Hlp_MESSAGES_Received;
extern const char *Hlp_MESSAGES_Received_filter;
extern const char *Hlp_MESSAGES_Sent;
extern const char *Hlp_MESSAGES_Sent_filter;
extern const char *Hlp_COMMUNICATION_Messages_received;
extern const char *Hlp_COMMUNICATION_Messages_received_filter;
extern const char *Hlp_COMMUNICATION_Messages_sent;
extern const char *Hlp_COMMUNICATION_Messages_sent_filter;
extern const char *The_ClassFormLinkInBoxBold[The_NUM_THEMES];
extern const char *Txt_Filter;
extern const char *Txt_Update_messages;
@ -1821,29 +1822,33 @@ static void Msg_ShowSentOrReceivedMessages (struct Msg_Messages *Messages)
unsigned long NumRow;
unsigned long NumRows;
char *NumMsgsStr;
unsigned long NumMsg = 0; // Initialized to avoid warning
unsigned NumUnreadMsgs = 0; // Initialized to avoid warning
unsigned long NumMsg;
unsigned NumUnreadMsgs;
struct Pagination Pagination;
long MsgCod;
static const Act_Action_t ActionSee[Msg_NUM_TYPES_OF_MSGS] =
{
[Msg_MESSAGES_RECEIVED] = ActSeeRcvMsg,
[Msg_MESSAGES_SENT ] = ActSeeSntMsg,
[Msg_WRITING ] = ActUnk,
[Msg_RECEIVED] = ActSeeRcvMsg,
[Msg_SENT ] = ActSeeSntMsg,
};
static const Pag_WhatPaginate_t WhatPaginate[Msg_NUM_TYPES_OF_MSGS] =
{
[Msg_MESSAGES_RECEIVED] = Pag_MESSAGES_RECEIVED,
[Msg_MESSAGES_SENT ] = Pag_MESSAGES_SENT,
[Msg_WRITING ] = Pag_NONE,
[Msg_RECEIVED] = Pag_MESSAGES_RECEIVED,
[Msg_SENT ] = Pag_MESSAGES_SENT,
};
const char *Help[Msg_NUM_TYPES_OF_MSGS] =
{
[Msg_MESSAGES_RECEIVED] = Hlp_MESSAGES_Received,
[Msg_MESSAGES_SENT ] = Hlp_MESSAGES_Sent,
[Msg_WRITING ] = NULL,
[Msg_RECEIVED] = Hlp_COMMUNICATION_Messages_received,
[Msg_SENT ] = Hlp_COMMUNICATION_Messages_sent,
};
const char *HelpFilter[Msg_NUM_TYPES_OF_MSGS] =
{
[Msg_MESSAGES_RECEIVED] = Hlp_MESSAGES_Received_filter,
[Msg_MESSAGES_SENT ] = Hlp_MESSAGES_Sent_filter,
[Msg_WRITING ] = NULL,
[Msg_RECEIVED] = Hlp_COMMUNICATION_Messages_received_filter,
[Msg_SENT ] = Hlp_COMMUNICATION_Messages_sent_filter,
};
/***** Get the page number *****/
@ -1859,14 +1864,17 @@ static void Msg_ShowSentOrReceivedMessages (struct Msg_Messages *Messages)
/***** Get number of unread messages *****/
switch (Messages->TypeOfMessages)
{
case Msg_MESSAGES_RECEIVED:
case Msg_RECEIVED:
Messages->ShowOnlyUnreadMsgs = Msg_GetParamOnlyUnreadMsgs ();
NumUnreadMsgs = Msg_GetNumUnreadMsgs (Messages,
FilterFromToSubquery);
break;
case Msg_MESSAGES_SENT:
case Msg_SENT:
NumUnreadMsgs = 0;
break;
default:
NumUnreadMsgs = 0;
break;
}
/***** Get messages from database *****/
@ -1894,7 +1902,7 @@ static void Msg_ShowSentOrReceivedMessages (struct Msg_Messages *Messages)
HTM_DIV_Begin ("class=\"CM\"");
Msg_ShowFormSelectCourseSentOrRecMsgs (Messages);
if (Messages->TypeOfMessages == Msg_MESSAGES_RECEIVED)
if (Messages->TypeOfMessages == Msg_RECEIVED)
Msg_ShowFormToShowOnlyUnreadMessages (Messages);
HTM_DIV_End ();
Msg_ShowFormToFilterMsgs (Messages);
@ -1954,7 +1962,7 @@ static void Msg_ShowSentOrReceivedMessages (struct Msg_Messages *Messages)
HTM_TABLE_BeginWidePadding (2);
mysql_data_seek (mysql_res,(my_ulonglong) (Pagination.FirstItemVisible - 1));
for (NumRow = Pagination.FirstItemVisible;
for (NumRow = Pagination.FirstItemVisible;
NumRow <= Pagination.LastItemVisible;
NumRow++)
{
@ -2023,7 +2031,7 @@ static unsigned long Msg_GetSentOrReceivedMsgs (const struct Msg_Messages *Messa
if (Messages->FilterCrsCod > 0) // If origin course selected
switch (Messages->TypeOfMessages)
{
case Msg_MESSAGES_RECEIVED:
case Msg_RECEIVED:
StrUnreadMsg = (Messages->ShowOnlyUnreadMsgs ? " AND msg_rcv.Open='N'" :
"");
if (FilterFromToSubquery[0])
@ -2063,7 +2071,7 @@ static unsigned long Msg_GetSentOrReceivedMsgs (const struct Msg_Messages *Messa
Lay_NotEnoughMemoryExit ();
}
break;
case Msg_MESSAGES_SENT:
case Msg_SENT:
if (FilterFromToSubquery[0])
{
if (asprintf (&SubQuery,"(SELECT DISTINCT msg_snt.MsgCod"
@ -2098,7 +2106,7 @@ static unsigned long Msg_GetSentOrReceivedMsgs (const struct Msg_Messages *Messa
else // If no origin course selected
switch (Messages->TypeOfMessages)
{
case Msg_MESSAGES_RECEIVED:
case Msg_RECEIVED:
if (FilterFromToSubquery[0])
{
StrUnreadMsg = (Messages->ShowOnlyUnreadMsgs ? " AND msg_rcv.Open='N'" :
@ -2129,7 +2137,7 @@ static unsigned long Msg_GetSentOrReceivedMsgs (const struct Msg_Messages *Messa
Lay_NotEnoughMemoryExit ();
}
break;
case Msg_MESSAGES_SENT:
case Msg_SENT:
if (FilterFromToSubquery[0])
{
if (asprintf (&SubQuery,"(SELECT msg_snt.MsgCod"
@ -2566,7 +2574,7 @@ static void Msg_SetNumMsgsStr (const struct Msg_Messages *Messages,
switch (Messages->TypeOfMessages)
{
case Msg_MESSAGES_RECEIVED:
case Msg_RECEIVED:
if (Messages->NumMsgs == 1)
{
if (NumUnreadMsgs)
@ -2605,7 +2613,7 @@ static void Msg_SetNumMsgsStr (const struct Msg_Messages *Messages,
}
}
break;
case Msg_MESSAGES_SENT:
case Msg_SENT:
if (Messages->NumMsgs == 1)
{
if (asprintf (NumMsgsStr,"1 %s",Txt_message_sent) < 0)
@ -2618,6 +2626,8 @@ static void Msg_SetNumMsgsStr (const struct Msg_Messages *Messages,
Lay_NotEnoughMemoryExit ();
}
break;
default:
break;
}
}
@ -2632,31 +2642,66 @@ static void Msg_PutIconsListMsgs (void *Messages)
extern const char *Txt_MSGS_Write;
static const Act_Action_t ActionReqDelAllMsg[Msg_NUM_TYPES_OF_MSGS] =
{
[Msg_MESSAGES_RECEIVED] = ActReqDelAllRcvMsg,
[Msg_MESSAGES_SENT ] = ActReqDelAllSntMsg,
[Msg_WRITING ] = ActUnk,
[Msg_RECEIVED] = ActReqDelAllRcvMsg,
[Msg_SENT ] = ActReqDelAllSntMsg,
};
if (Messages)
{
/***** Put icon to write a new message *****/
Lay_PutContextualLinkOnlyIcon (ActReqMsgUsr,NULL,
Msg_PutHiddenParamsMsgsFilters,Messages,
"marker.svg",
Txt_MSGS_Write);
switch (((struct Msg_Messages *) Messages)->TypeOfMessages)
{
case Msg_RECEIVED:
case Msg_SENT:
Lay_PutContextualLinkOnlyIcon (ActReqMsgUsr,NULL,
Msg_PutHiddenParamsMsgsFilters,Messages,
"marker.svg",
Txt_MSGS_Write);
break;
default:
break;
}
/***** Put icon to see received/sent messages *****/
Lay_PutContextualLinkOnlyIcon (ActSeeRcvMsg,NULL,
Msg_PutHiddenParamsMsgsFilters,Messages,
"inbox.svg",
Txt_MSGS_Received);
Lay_PutContextualLinkOnlyIcon (ActSeeSntMsg,NULL,
Msg_PutHiddenParamsMsgsFilters,Messages,
"share.svg",
Txt_MSGS_Sent);
/***** Put icon to see received messages *****/
switch (((struct Msg_Messages *) Messages)->TypeOfMessages)
{
case Msg_WRITING:
case Msg_SENT:
Lay_PutContextualLinkOnlyIcon (ActSeeRcvMsg,NULL,
Msg_PutHiddenParamsMsgsFilters,Messages,
"inbox.svg",
Txt_MSGS_Received);
break;
default:
break;
}
/***** Put icon to see sent messages *****/
switch (((struct Msg_Messages *) Messages)->TypeOfMessages)
{
case Msg_WRITING:
case Msg_RECEIVED:
Lay_PutContextualLinkOnlyIcon (ActSeeSntMsg,NULL,
Msg_PutHiddenParamsMsgsFilters,Messages,
"share.svg",
Txt_MSGS_Sent);
break;
default:
break;
}
/***** Put icon to remove messages *****/
Ico_PutContextualIconToRemove (ActionReqDelAllMsg[((struct Msg_Messages *) Messages)->TypeOfMessages],
Msg_PutHiddenParamsMsgsFilters,Messages);
switch (((struct Msg_Messages *) Messages)->TypeOfMessages)
{
case Msg_RECEIVED:
case Msg_SENT:
Ico_PutContextualIconToRemove (ActionReqDelAllMsg[((struct Msg_Messages *) Messages)->TypeOfMessages],
Msg_PutHiddenParamsMsgsFilters,Messages);
break;
default:
break;
}
/***** Put icon to show a figure *****/
Fig_PutIconToShowFigure (Fig_MESSAGES);
@ -2712,7 +2757,7 @@ static void Msg_GetDistinctCoursesInMyMessages (struct Msg_Messages *Messages)
/***** Get distinct courses in my messages from database *****/
switch (Messages->TypeOfMessages)
{
case Msg_MESSAGES_RECEIVED:
case Msg_RECEIVED:
NumRows = DB_QuerySELECT (&mysql_res,"can not get distinct courses"
" in your messages",""
"SELECT DISTINCT courses.CrsCod,courses.ShortName"
@ -2723,7 +2768,7 @@ static void Msg_GetDistinctCoursesInMyMessages (struct Msg_Messages *Messages)
" ORDER BY courses.ShortName",
Gbl.Usrs.Me.UsrDat.UsrCod);
break;
case Msg_MESSAGES_SENT:
case Msg_SENT:
NumRows = DB_QuerySELECT (&mysql_res,"can not get distinct courses"
" in your messages",
"SELECT DISTINCT courses.CrsCod,courses.ShortName"
@ -2773,8 +2818,9 @@ static void Msg_ShowFormSelectCourseSentOrRecMsgs (const struct Msg_Messages *Me
unsigned NumOriginCrs;
const char *TxtSelector[Msg_NUM_TYPES_OF_MSGS] =
{
[Msg_MESSAGES_RECEIVED] = Txt_Messages_received_from_A_COURSE,
[Msg_MESSAGES_SENT ] = Txt_Messages_sent_from_A_COURSE
[Msg_WRITING ] = NULL,
[Msg_RECEIVED] = Txt_Messages_received_from_A_COURSE,
[Msg_SENT ] = Txt_Messages_sent_from_A_COURSE
};
/***** Course selection *****/
@ -2809,8 +2855,9 @@ static void Msg_ShowFormToFilterMsgs (const struct Msg_Messages *Messages)
extern const char *Txt_MSG_Content;
const char *TxtFromTo[Msg_NUM_TYPES_OF_MSGS] =
{
[Msg_MESSAGES_RECEIVED] = Txt_MSG_From,
[Msg_MESSAGES_SENT ] = Txt_MSG_To
[Msg_WRITING ] = NULL,
[Msg_RECEIVED] = Txt_MSG_From,
[Msg_SENT ] = Txt_MSG_To
};
/***** Begin table *****/
@ -3075,8 +3122,9 @@ static void Msg_ShowASentOrReceivedMessage (struct Msg_Messages *Messages,
extern const char *Txt_MSG_Content;
static const Act_Action_t ActionDelMsg[Msg_NUM_TYPES_OF_MSGS] =
{
[Msg_MESSAGES_RECEIVED] = ActDelRcvMsg,
[Msg_MESSAGES_SENT ] = ActDelSntMsg,
[Msg_WRITING ] = ActUnk,
[Msg_RECEIVED] = ActDelRcvMsg,
[Msg_SENT ] = ActDelSntMsg,
};
struct UsrData UsrDat;
const char *Title = NULL; // Initialized to avoid warning
@ -3098,37 +3146,41 @@ static void Msg_ShowASentOrReceivedMessage (struct Msg_Messages *Messages,
Msg_GetMsgSntData (MsgCod,&CrsCod,&UsrDat.UsrCod,&CreatTimeUTC,Subject,&Deleted);
switch (Messages->TypeOfMessages)
{
case Msg_MESSAGES_RECEIVED:
case Msg_RECEIVED:
Msg_GetStatusOfReceivedMsg (MsgCod,&Open,&Replied,&Expanded);
break;
case Msg_MESSAGES_SENT:
case Msg_SENT:
Msg_GetStatusOfSentMsg (MsgCod,&Expanded);
break;
default:
break;
}
/***** Put an icon with message status *****/
switch (Messages->TypeOfMessages)
{
case Msg_MESSAGES_RECEIVED:
case Msg_RECEIVED:
Title = (Open ? (Replied ? Txt_MSG_Replied :
Txt_MSG_Not_replied) :
Txt_MSG_Unopened);
break;
case Msg_MESSAGES_SENT:
case Msg_SENT:
Title = Txt_MSG_Sent;
break;
default:
break;
}
HTM_TR_Begin (NULL);
HTM_TD_Begin ("class=\"CONTEXT_COL %s\"",
Messages->TypeOfMessages == Msg_MESSAGES_RECEIVED ? (Open ? "BG_MSG_BLUE" :
"BG_MSG_GREEN") :
"BG_MSG_BLUE");
Ico_PutIcon (Messages->TypeOfMessages == Msg_MESSAGES_RECEIVED ? (Open ? (Replied ? "reply.svg" :
"envelope-open-text.svg") :
"envelope.svg") :
"share.svg",
Messages->TypeOfMessages == Msg_RECEIVED ? (Open ? "BG_MSG_BLUE" :
"BG_MSG_GREEN") :
"BG_MSG_BLUE");
Ico_PutIcon (Messages->TypeOfMessages == Msg_RECEIVED ? (Open ? (Replied ? "reply.svg" :
"envelope-open-text.svg") :
"envelope.svg") :
"share.svg",
Title,"ICO16x16");
/***** Form to delete message *****/
@ -3175,7 +3227,7 @@ static void Msg_ShowASentOrReceivedMessage (struct Msg_Messages *Messages,
/***** Form to reply message *****/
HTM_TR_Begin (NULL);
HTM_TD_Begin ("class=\"LM\"");
if (Messages->TypeOfMessages == Msg_MESSAGES_RECEIVED &&
if (Messages->TypeOfMessages == Msg_RECEIVED &&
Gbl.Usrs.Me.Role.Logged >= Rol_USR)
// Guests (users without courses) can read messages but not reply them
Msg_WriteFormToReply (MsgCod,CrsCod,FromThisCrs,Replied,&UsrDat);
@ -3319,7 +3371,7 @@ static void Msg_WriteSentOrReceivedMsgSubject (struct Msg_Messages *Messages,
"MSG_TIT_BG_NEW");
/***** Begin form to expand/contract the message *****/
Frm_StartForm (Messages->TypeOfMessages == Msg_MESSAGES_RECEIVED ? (Expanded ? ActConRcvMsg :
Frm_StartForm (Messages->TypeOfMessages == Msg_RECEIVED ? (Expanded ? ActConRcvMsg :
ActExpRcvMsg) :
(Expanded ? ActConSntMsg :
ActExpSntMsg));
@ -3597,8 +3649,9 @@ static void Msg_WriteMsgTo (struct Msg_Messages *Messages,long MsgCod)
char PhotoURL[PATH_MAX + 1];
static const Act_Action_t ActionSee[Msg_NUM_TYPES_OF_MSGS] =
{
[Msg_MESSAGES_RECEIVED] = ActSeeRcvMsg,
[Msg_MESSAGES_SENT ] = ActSeeSntMsg,
[Msg_WRITING ] = ActUnk,
[Msg_RECEIVED] = ActSeeRcvMsg,
[Msg_SENT ] = ActSeeSntMsg,
};
/***** Get number of recipients of a message from database *****/

View File

@ -40,11 +40,12 @@
/******************************** Public types *******************************/
/*****************************************************************************/
#define Msg_NUM_TYPES_OF_MSGS 2
#define Msg_NUM_TYPES_OF_MSGS 3
typedef enum
{
Msg_MESSAGES_RECEIVED,
Msg_MESSAGES_SENT,
Msg_WRITING,
Msg_RECEIVED,
Msg_SENT,
} Msg_TypeOfMessages_t;
typedef enum

View File

@ -94,7 +94,7 @@ static long Not_GetParamNotCod (void);
void Not_ShowFormNotice (void)
{
extern const char *Hlp_MESSAGES_Notices;
extern const char *Hlp_COMMUNICATION_Notices;
extern const char *Txt_The_notice_will_appear_as_a_yellow_note_;
extern const char *Txt_New_notice;
extern const char *Txt_Create_notice;
@ -109,7 +109,7 @@ void Not_ShowFormNotice (void)
/***** Begin box *****/
Box_BoxBegin (NULL,Txt_New_notice,
NULL,NULL,
Hlp_MESSAGES_Notices,Box_NOT_CLOSABLE);
Hlp_COMMUNICATION_Notices,Box_NOT_CLOSABLE);
/***** Message body *****/
HTM_TEXTAREA_Begin ("name=\"Content\" cols=\"30\" rows=\"10\""
@ -353,7 +353,7 @@ void Not_RemoveNotice (void)
void Not_ShowNotices (Not_Listing_t TypeNoticesListing,long HighlightNotCod)
{
extern const char *Hlp_MESSAGES_Notices;
extern const char *Hlp_COMMUNICATION_Notices;
extern const char *Txt_Notices;
extern const char *Txt_No_notices;
MYSQL_RES *mysql_res;
@ -412,7 +412,7 @@ void Not_ShowNotices (Not_Listing_t TypeNoticesListing,long HighlightNotCod)
Not_ContainerWidth[Not_LIST_FULL_NOTICES] + 50);
Box_BoxBegin (StrWidth,Txt_Notices,
Not_PutIconsListNotices,NULL,
Hlp_MESSAGES_Notices,Box_NOT_CLOSABLE);
Hlp_COMMUNICATION_Notices,Box_NOT_CLOSABLE);
if (!NumNotices)
Ale_ShowAlert (Ale_INFO,Txt_No_notices);
}

View File

@ -61,6 +61,7 @@ extern const Act_Action_t For_ActionsSeePstFor[For_NUM_TYPES_FORUM];
static const char *Pag_ParamNumPag[Pag_NUM_WHAT_PAGINATE] =
{
[Pag_NONE ] = NULL,
[Pag_ASSIGNMENTS ] = "NumPagAsg",
[Pag_PROJECTS ] = "NumPagPrj",
[Pag_EXAMS ] = "NumPagExa",
@ -264,6 +265,8 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,
Pag_PutHiddenParamPagNum (WhatPaginate,1);
Usr_PutParamOtherUsrCodEncrypted (Gbl.Usrs.Other.UsrDat.EncryptedUsrCod);
break;
default:
break;
}
if (asprintf (&ClassLink,"BT_LINK LT %s",ClassTxt) < 0)
Lay_NotEnoughMemoryExit ();
@ -389,6 +392,8 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,
Pag_PutHiddenParamPagNum (WhatPaginate,1);
Usr_PutParamOtherUsrCodEncrypted (Gbl.Usrs.Other.UsrDat.EncryptedUsrCod);
break;
default:
break;
}
if (asprintf (&Title,Txt_Page_X_of_Y,1,Pagination->NumPags) < 0)
Lay_NotEnoughMemoryExit ();
@ -500,6 +505,8 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,
Pag_PutHiddenParamPagNum (WhatPaginate,Pagination->LeftPage);
Usr_PutParamOtherUsrCodEncrypted (Gbl.Usrs.Other.UsrDat.EncryptedUsrCod);
break;
default:
break;
}
if (asprintf (&Title,Txt_Page_X_of_Y,
Pagination->LeftPage,Pagination->NumPags) < 0)
@ -623,6 +630,8 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,
Pag_PutHiddenParamPagNum (WhatPaginate,NumPage);
Usr_PutParamOtherUsrCodEncrypted (Gbl.Usrs.Other.UsrDat.EncryptedUsrCod);
break;
default:
break;
}
HTM_BUTTON_SUBMIT_Begin (Title,ClassLink,NULL);
HTM_Unsigned (NumPage);
@ -733,6 +742,8 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,
Pag_PutHiddenParamPagNum (WhatPaginate,Pagination->RightPage);
Usr_PutParamOtherUsrCodEncrypted (Gbl.Usrs.Other.UsrDat.EncryptedUsrCod);
break;
default:
break;
}
if (asprintf (&Title,Txt_Page_X_of_Y,
Pagination->RightPage,Pagination->NumPags) < 0)
@ -844,6 +855,8 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,
Pag_PutHiddenParamPagNum (WhatPaginate,Pagination->NumPags);
Usr_PutParamOtherUsrCodEncrypted (Gbl.Usrs.Other.UsrDat.EncryptedUsrCod);
break;
default:
break;
}
if (asprintf (&Title,Txt_Page_X_of_Y,
Pagination->NumPags,Pagination->NumPags) < 0)

View File

@ -39,21 +39,22 @@
/******************************** Public types *******************************/
/*****************************************************************************/
#define Pag_NUM_WHAT_PAGINATE 12
#define Pag_NUM_WHAT_PAGINATE 13
typedef enum
{
Pag_ASSIGNMENTS = 0,
Pag_PROJECTS = 1,
Pag_EXAMS = 2,
Pag_GAMES = 3,
Pag_SURVEYS = 4,
Pag_ATT_EVENTS = 5,
Pag_THREADS_FORUM = 6,
Pag_POSTS_FORUM = 7,
Pag_MESSAGES_RECEIVED = 8,
Pag_MESSAGES_SENT = 9,
Pag_MY_AGENDA = 10,
Pag_ANOTHER_AGENDA = 11,
Pag_NONE = 0,
Pag_ASSIGNMENTS = 1,
Pag_PROJECTS = 2,
Pag_EXAMS = 3,
Pag_GAMES = 4,
Pag_SURVEYS = 5,
Pag_ATT_EVENTS = 6,
Pag_THREADS_FORUM = 7,
Pag_POSTS_FORUM = 8,
Pag_MESSAGES_RECEIVED = 9,
Pag_MESSAGES_SENT = 10,
Pag_MY_AGENDA = 11,
Pag_ANOTHER_AGENDA = 12,
} Pag_WhatPaginate_t;
struct Pagination // Used for threads and messages pagination

View File

@ -25367,7 +25367,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] =
"" // Precisa de tradução
#endif
,
[ActSeeMsg] =
[ActSeeRcvMsg] =
#if L==1 // ca
"" // Necessita traducció
#elif L==2 // de
@ -28473,27 +28473,6 @@ const char *Txt_Actions[Act_NUM_ACTIONS] =
"" // Potrzebujesz tlumaczenie
#elif L==9 // pt
"" // Precisa de tradução
#endif
,
[ActSeeRcvMsg] =
#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
,
[ActSeeSntMsg] =