From ffceaa474fd22a08fe00a165b865e183d2c17974 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antonio=20Ca=C3=B1as=20Vargas?= Date: Tue, 18 Apr 2017 01:25:44 +0200 Subject: [PATCH] Version 16.181.2 --- swad_changelog.h | 3 +- swad_forum.c | 688 ++++++++++++++++++++++---------------------- swad_forum.h | 12 +- swad_global.c | 6 +- swad_global.h | 2 +- swad_notification.c | 34 ++- swad_pagination.c | 106 ++++--- swad_social.c | 12 +- swad_text.c | 243 +++++++--------- swad_web_service.c | 6 +- 10 files changed, 578 insertions(+), 534 deletions(-) diff --git a/swad_changelog.h b/swad_changelog.h index 7e581109..7d99b3f6 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -214,13 +214,14 @@ /****************************** Public constants *****************************/ /*****************************************************************************/ -#define Log_PLATFORM_VERSION "SWAD 16.181.1 (2017-04-17)" +#define Log_PLATFORM_VERSION "SWAD 16.181.2 (2017-04-18)" #define CSS_FILE "swad16.181.css" #define JS_FILE "swad16.181.js" // 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 16.181.2: Apr 18, 2017 Code refactoring in forums. (217590 lines) Version 16.181.1: Apr 17, 2017 Code refactoring in forums. (217538 lines) Version 16.181: Apr 17, 2017 Changes in layout of messages. Changes in layout of some tables. diff --git a/swad_forum.c b/swad_forum.c index 63175bd9..ca00cd5d 100644 --- a/swad_forum.c +++ b/swad_forum.c @@ -272,7 +272,7 @@ static long For_InsertForumThread (struct Forum *WichForum,long FirstPstCod); static void For_RemoveThreadOnly (long ThrCod); static void For_RemoveThreadAndItsPsts (long ThrCod); static void For_GetThrSubject (long ThrCod,char Subject[Cns_MAX_BYTES_SUBJECT + 1]); -static void For_GetForumTypeAndLocationFromQuery (const char *Query,struct Forum *WhichForum); +static void For_GetForumTypeAndLocationFromQuery (const char *Query,struct Forum *ForumSelected); static void For_UpdateThrFirstAndLastPst (long ThrCod,long FirstPstCod,long LastPstCod); static void For_UpdateThrLastPst (long ThrCod,long LastPstCod); static long For_GetLastPstCod (long ThrCod); @@ -287,24 +287,26 @@ static void For_DeleteThrFromReadThrs (long ThrCod); static void For_ShowThreadPosts (void); static void For_PutIconNewPost (void); -static void For_ShowAForumPost (struct Forum *WhichForum,struct ForumThread *Thr,unsigned PstNum,long PstCod, +static void For_ShowAForumPost (struct Forum *ForumSelected, + unsigned PstNum,long PstCod, bool LastPst,char LastSubject[Cns_MAX_BYTES_SUBJECT + 1], bool NewPst,bool ICanModerateForum); static void For_GetPstData (long PstCod,long *UsrCod,time_t *CreatTimeUTC, char Subject[Cns_MAX_BYTES_SUBJECT + 1], char Content[Cns_MAX_BYTES_LONG_TEXT + 1], struct Image *Image); -static void For_WriteNumberOfPosts (struct Forum *WhichForum,long UsrCod); +static void For_WriteNumberOfPosts (struct Forum *ForumSelected,long UsrCod); -static void For_PutParamForumSet (void); -static void For_PutParamForumOrder (void); - -static void For_PutIconsForums (void); - -static void For_PutFormWhichForums (void); -static void For_PutParamForumInsCtrDegCrs (void); +static void For_PutAllHiddenParamsSelectedForum (void); +static void For_PutParamForumSet (For_ForumSet_t ForumSet); +static void For_PutParamForumOrder (For_Order_t Order); +static void For_PutParamForumLocation (long Location); +static void For_PutHiddenParamThrCod (long ThrCod); +static void For_PutHiddenParamPstCod (long PstCod); static void For_ShowForumList (void); +static void For_PutIconsForums (void); +static void For_PutFormWhichForums (void); static void For_WriteLinksToGblForums (bool IsLastItemInLevel[1 + For_FORUM_MAX_LEVELS]); static void For_WriteLinksToPlatformForums (bool IsLastForum, @@ -317,18 +319,18 @@ static long For_WriteLinksToDegForums (long DegCod,bool IsLastDeg, bool IsLastItemInLevel[1 + For_FORUM_MAX_LEVELS]); static long For_WriteLinksToCrsForums (long CrsCod,bool IsLastCrs, bool IsLastItemInLevel[1 + For_FORUM_MAX_LEVELS]); -static void For_WriteLinkToAForum (struct Forum *WhichForum, +static void For_WriteLinkToAForum (struct Forum *Forum, bool Highlight,bool ShowNumOfPosts, unsigned Level, bool IsLastItemInLevel[1 + For_FORUM_MAX_LEVELS]); -static void For_WriteLinkToForum (struct Forum *WhichForum, +static void For_WriteLinkToForum (struct Forum *Forum, Act_Action_t NextAct, const char *Icon,const char *ForumName, bool Highlight,bool ShowNumOfPosts, unsigned Level,bool IsLastItemInLevel[1 + For_FORUM_MAX_LEVELS]); -static unsigned For_GetNumThrsWithNewPstsInForum (struct Forum *WhichForum, +static unsigned For_GetNumThrsWithNewPstsInForum (struct Forum *ForumSelected, unsigned NumThreads); -static unsigned For_GetNumOfThreadsInForumNewerThan (struct Forum *WhichForum, +static unsigned For_GetNumOfThreadsInForumNewerThan (struct Forum *ForumSelected, const char *Time); static unsigned For_GetNumOfUnreadPostsInThr (long ThrCod,unsigned NumPostsInThr); static unsigned For_GetNumOfPostsInThrNewerThan (long ThrCod,const char *Time); @@ -337,8 +339,8 @@ static void For_WriteNumThrsAndPsts (unsigned NumThrs,unsigned NumThrsWithNewPos static void For_WriteNumberOfThrs (unsigned NumThrs,unsigned NumThrsWithNewPosts); static void For_ShowForumThreadsHighlightingOneThread (long ThrCodHighlighted); static void For_PutIconNewThread (void); -static unsigned For_GetNumThrsInForum (struct Forum *WhichForum); -static unsigned For_GetNumPstsInForum (struct Forum *WhichForum); +static unsigned For_GetNumThrsInForum (struct Forum *ForumSelected); +static unsigned For_GetNumPstsInForum (struct Forum *ForumSelected); static void For_ListForumThrs (long ThrCods[Pag_ITEMS_PER_PAGE], long ThrCodHighlighted, struct Pagination *PaginationThrs); @@ -347,15 +349,13 @@ static void For_GetThrData (struct ForumThread *Thr); static void For_GetParamsForum (void); static void For_SetForumType (void); static void For_RestrictAccess (void); -static void For_PutHiddenParamPstCod (long PstCod); -static long For_GetParamPstCod (void); -static void For_WriteFormForumPst (bool IsReply,long ThrCod,const char *Subject); +static void For_WriteFormForumPst (bool IsReply,const char *Subject); static void For_UpdateNumUsrsNotifiedByEMailAboutPost (long PstCod,unsigned NumUsrsToBeNotifiedByEMail); static long For_GetThrInMyClipboard (void); -static bool For_CheckIfThrBelongsToForum (long ThrCod,struct Forum *WhichForum); +static bool For_CheckIfThrBelongsToForum (long ThrCod,struct Forum *ForumSelected); static void For_MoveThrToCurrentForum (long ThrCod); static void For_InsertThrInClipboard (long ThrCod); static void For_RemoveExpiredThrsClipboards (void); @@ -368,16 +368,12 @@ static void For_RemoveThrCodFromThrClipboard (long ThrCod); void For_EnbPst (void) { extern const char *Txt_Post_unbanned; - long PstCod; /***** Get parameters related to forum *****/ For_GetParamsForum (); - /***** Get the post code to unban *****/ - PstCod = For_GetParamPstCod (); - /***** Delete post from table of disabled posts *****/ - For_DeletePstFromDisabledPstTable (PstCod); + For_DeletePstFromDisabledPstTable (Gbl.Forum.ForumSelected.PstCod); Lay_ShowAlert (Lay_SUCCESS,Txt_Post_unbanned); /***** Show the posts again *****/ @@ -391,19 +387,15 @@ void For_EnbPst (void) void For_DisPst (void) { extern const char *Txt_Post_banned; - long PstCod; /***** Get parameters related to forum *****/ For_GetParamsForum (); - /***** Get the post code to ban *****/ - PstCod = For_GetParamPstCod (); - /***** Check if post really exists, if it has not been removed *****/ - if (For_GetIfForumPstExists (PstCod)) + if (For_GetIfForumPstExists (Gbl.Forum.ForumSelected.PstCod)) { /***** Insert post into table of banned posts *****/ - For_InsertPstIntoBannedPstTable (PstCod); + For_InsertPstIntoBannedPstTable (Gbl.Forum.ForumSelected.PstCod); Lay_ShowAlert (Lay_SUCCESS,Txt_Post_banned); } else @@ -683,7 +675,7 @@ static void For_GetThrSubject (long ThrCod,char Subject[Cns_MAX_BYTES_SUBJECT + /*************** Get the forum type and location of a post *******************/ /*****************************************************************************/ -void For_GetForumTypeAndLocationOfAPost (long PstCod,struct Forum *WhichForum) +void For_GetForumTypeAndLocationOfAPost (long PstCod,struct Forum *ForumSelected) { char Query[512]; @@ -693,14 +685,14 @@ void For_GetForumTypeAndLocationOfAPost (long PstCod,struct Forum *WhichForum) " WHERE forum_post.PstCod=%ld" " AND forum_post.ThrCod=forum_thread.ThrCod", PstCod); - For_GetForumTypeAndLocationFromQuery (Query,WhichForum); + For_GetForumTypeAndLocationFromQuery (Query,ForumSelected); } /*****************************************************************************/ /*********** Get the forum type and location of a thread or post *************/ /*****************************************************************************/ -static void For_GetForumTypeAndLocationFromQuery (const char *Query,struct Forum *WhichForum) +static void For_GetForumTypeAndLocationFromQuery (const char *Query,struct Forum *ForumSelected) { MYSQL_RES *mysql_res; MYSQL_ROW row; @@ -716,10 +708,10 @@ static void For_GetForumTypeAndLocationFromQuery (const char *Query,struct Forum Lay_ShowErrorAndExit ("Wrong forum type."); if (UnsignedNum >= For_NUM_TYPES_FORUM) Lay_ShowErrorAndExit ("Wrong forum type."); - WhichForum->Type = (For_ForumType_t) UnsignedNum; + ForumSelected->Type = (For_ForumType_t) UnsignedNum; /* Get forum location (row[1]) */ - if (sscanf (row[1],"%ld",&(WhichForum->Location)) != 1) + if (sscanf (row[1],"%ld",&(ForumSelected->Location)) != 1) Lay_ShowErrorAndExit ("Wrong forum location."); } else @@ -977,10 +969,10 @@ static void For_ShowThreadPosts (void) bool ICanMoveThreads = (Gbl.Usrs.Me.LoggedRole == Rol_SYS_ADM); // If I have permission to move threads... /***** Show threads *****/ - For_ShowForumThreadsHighlightingOneThread (Gbl.Forum.WhichForum.ThrCod); + For_ShowForumThreadsHighlightingOneThread (Gbl.Forum.ForumSelected.ThrCod); /***** Get data of the thread *****/ - Thr.ThrCod = Gbl.Forum.WhichForum.ThrCod; + Thr.ThrCod = Gbl.Forum.ForumSelected.ThrCod; For_GetThrData (&Thr); /***** Get the page number *****/ @@ -992,7 +984,7 @@ static void For_ShowThreadPosts (void) Gbl.Forum.ThreadToMove = For_GetThrInMyClipboard (); /* Get thread read time for the current user */ - ReadTimeUTC = For_GetThrReadTime (Gbl.Forum.WhichForum.ThrCod); + ReadTimeUTC = For_GetThrReadTime (Gbl.Forum.ForumSelected.ThrCod); /***** Start frame *****/ fprintf (Gbl.F.Out,"
",For_ID_FORUM_POSTS_SECTION); @@ -1004,14 +996,14 @@ static void For_ShowThreadPosts (void) sprintf (Query,"SELECT PstCod,UNIX_TIMESTAMP(CreatTime)" " FROM forum_post" " WHERE ThrCod=%ld ORDER BY PstCod", - Gbl.Forum.WhichForum.ThrCod); + Gbl.Forum.ForumSelected.ThrCod); NumRows = DB_QuerySELECT (Query,&mysql_res,"can not get posts of a thread"); NumPsts = (unsigned) NumRows; LastSubject[0] = '\0'; if (NumPsts) // If there are posts... { /***** Check if I can moderate posts in forum *****/ - switch (Gbl.Forum.WhichForum.Type) + switch (Gbl.Forum.ForumSelected.Type) { case For_FORUM_SWAD_USRS: case For_FORUM_SWAD_TCHS: @@ -1048,7 +1040,7 @@ static void For_ShowThreadPosts (void) /***** Write links to pages *****/ if (PaginationPsts.MoreThanOnePage) Pag_WriteLinksToPagesCentered (Pag_POSTS_FORUM, - Gbl.Forum.WhichForum.ThrCod, + Gbl.Forum.ForumSelected.ThrCod, &PaginationPsts); /***** Start table *****/ @@ -1074,15 +1066,16 @@ static void For_ShowThreadPosts (void) /* Update forum_thr_read table indicating that this thread page and previous ones have been read and have no new posts for the current user (even if any previous pages have been no read actually) */ - For_UpdateThrReadTime (Gbl.Forum.WhichForum.ThrCod,CreatTimeUTC); + For_UpdateThrReadTime (Gbl.Forum.ForumSelected.ThrCod,CreatTimeUTC); /* Show post */ - For_ShowAForumPost (&Gbl.Forum.WhichForum,&Thr,NumPst,PstCod, + For_ShowAForumPost (&Gbl.Forum.ForumSelected, + NumPst,PstCod, (NumRow == NumRows),LastSubject, NewPst,ICanModerateForum); /* Mark possible notification as seen */ - switch (Gbl.Forum.WhichForum.Type) + switch (Gbl.Forum.ForumSelected.Type) { case For_FORUM_COURSE_TCHS: case For_FORUM_COURSE_USRS: @@ -1105,7 +1098,7 @@ static void For_ShowThreadPosts (void) /***** Write again links to pages *****/ if (PaginationPsts.MoreThanOnePage) Pag_WriteLinksToPagesCentered (Pag_POSTS_FORUM, - Gbl.Forum.WhichForum.ThrCod, + Gbl.Forum.ForumSelected.ThrCod, &PaginationPsts); } @@ -1114,7 +1107,7 @@ static void For_ShowThreadPosts (void) /***** Form to write a new post in the thread *****/ fprintf (Gbl.F.Out,"
",For_ID_NEW_POST_SECTION); - For_WriteFormForumPst (true,Gbl.Forum.WhichForum.ThrCod,LastSubject); + For_WriteFormForumPst (true,LastSubject); fprintf (Gbl.F.Out,"
"); /***** End frame *****/ @@ -1130,8 +1123,8 @@ static void For_PutIconNewPost (void) { extern const char *Txt_New_post; - Lay_PutContextualLink (For_ActionsSeePstFor[Gbl.Forum.WhichForum.Type], - For_ID_NEW_POST_SECTION,For_PutAllHiddenParamsForum, + Lay_PutContextualLink (For_ActionsSeePstFor[Gbl.Forum.ForumSelected.Type], + For_ID_NEW_POST_SECTION,For_PutAllHiddenParamsSelectedForum, "plus64x64.png", Txt_New_post,NULL, NULL); @@ -1141,7 +1134,8 @@ static void For_PutIconNewPost (void) /**************************** Show a post from forum *************************/ /*****************************************************************************/ -static void For_ShowAForumPost (struct Forum *WhichForum,struct ForumThread *Thr,unsigned PstNum,long PstCod, +static void For_ShowAForumPost (struct Forum *ForumSelected, + unsigned PstNum,long PstCod, bool LastPst,char LastSubject[Cns_MAX_BYTES_SUBJECT + 1], bool NewPst,bool ICanModerateForum) { @@ -1226,11 +1220,13 @@ static void For_ShowAForumPost (struct Forum *WhichForum,struct ForumThread *Thr if (LastPst && Gbl.Usrs.Me.UsrDat.UsrCod == UsrDat.UsrCod) // Post can be removed if post is the last (without answers) and it's mine { - Act_FormStart (For_ActionsDelPstFor[WhichForum->Type]); + Act_FormStart (For_ActionsDelPstFor[ForumSelected->Type]); Pag_PutHiddenParamPagNum (Pag_POSTS_FORUM,Gbl.Forum.CurrentPagePsts); - For_PutHiddenParamPstCod (PstCod); - For_PutAllHiddenParamsForum (); - For_PutHiddenParamThrCod (Thr->ThrCod); + For_PutAllHiddenParamsForum (Gbl.Forum.ForumSet, + Gbl.Forum.SelectedOrder, + Gbl.Forum.ForumSelected.Location, + Gbl.Forum.ForumSelected.ThrCod, + PstCod); Lay_PutIconRemove (); Act_FormEnd (); } @@ -1240,12 +1236,14 @@ static void For_ShowAForumPost (struct Forum *WhichForum,struct ForumThread *Thr { if (ICanModerateForum) { - Act_FormStart (Enabled ? For_ActionsDisPstFor[WhichForum->Type] : - For_ActionsEnbPstFor[WhichForum->Type]); + Act_FormStart (Enabled ? For_ActionsDisPstFor[ForumSelected->Type] : + For_ActionsEnbPstFor[ForumSelected->Type]); Pag_PutHiddenParamPagNum (Pag_POSTS_FORUM,Gbl.Forum.CurrentPagePsts); - For_PutHiddenParamPstCod (PstCod); - For_PutAllHiddenParamsForum (); - For_PutHiddenParamThrCod (Thr->ThrCod); + For_PutAllHiddenParamsForum (Gbl.Forum.ForumSet, + Gbl.Forum.SelectedOrder, + Gbl.Forum.ForumSelected.Location, + Gbl.Forum.ForumSelected.ThrCod, + PstCod); sprintf (Gbl.Title,Enabled ? Txt_Post_X_allowed_Click_to_ban_it : Txt_Post_X_banned_Click_to_unban_it, @@ -1294,7 +1292,7 @@ static void For_ShowAForumPost (struct Forum *WhichForum,struct ForumThread *Thr { /* Write number of posts from this user */ fprintf (Gbl.F.Out,""); - For_WriteNumberOfPosts (WhichForum,UsrDat.UsrCod); + For_WriteNumberOfPosts (ForumSelected,UsrDat.UsrCod); fprintf (Gbl.F.Out,""); } @@ -1435,7 +1433,7 @@ void For_GetSummaryAndContentForumPst (char SummaryStr[Ntf_MAX_BYTES_SUMMARY + 1 /*************** Write number of posts in a forum of an user *****************/ /*****************************************************************************/ -static void For_WriteNumberOfPosts (struct Forum *WhichForum,long UsrCod) +static void For_WriteNumberOfPosts (struct Forum *ForumSelected,long UsrCod) { extern const char *Txt_post; extern const char *Txt_posts; @@ -1448,15 +1446,15 @@ static void For_WriteNumberOfPosts (struct Forum *WhichForum,long UsrCod) " style=\"width:150px;\">"); /***** Get number of posts from database *****/ - if (WhichForum->Location > 0) - sprintf (SubQuery," AND forum_thread.Location=%ld",WhichForum->Location); + if (ForumSelected->Location > 0) + sprintf (SubQuery," AND forum_thread.Location=%ld",ForumSelected->Location); else SubQuery[0] = '\0'; sprintf (Query,"SELECT COUNT(*) FROM forum_post,forum_thread" " WHERE forum_post.UsrCod=%ld" " AND forum_post.ThrCod=forum_thread.ThrCod" " AND forum_thread.ForumType=%u%s", - UsrCod,(unsigned) WhichForum->Type,SubQuery); + UsrCod,(unsigned) ForumSelected->Type,SubQuery); NumPsts = (unsigned) DB_QueryCOUNT (Query,"can not get the number of posts of a user in a forum"); /***** Write number of threads and number of posts *****/ @@ -1473,31 +1471,44 @@ static void For_WriteNumberOfPosts (struct Forum *WhichForum,long UsrCod) /************ Put all the hidden parameters related to forums ****************/ /*****************************************************************************/ -void For_PutAllHiddenParamsForum (void) +static void For_PutAllHiddenParamsSelectedForum (void) { - For_PutParamForumSet (); - For_PutParamForumOrder (); - For_PutParamForumInsCtrDegCrs (); - if (Gbl.Forum.WhichForum.ThrCod > 0) // A thread is selected - For_PutHiddenParamThrCod (Gbl.Forum.WhichForum.ThrCod); + For_PutAllHiddenParamsForum (Gbl.Forum.ForumSet, + Gbl.Forum.SelectedOrder, + Gbl.Forum.ForumSelected.Location, + Gbl.Forum.ForumSelected.ThrCod, + -1L); + } + +void For_PutAllHiddenParamsForum (For_ForumSet_t ForumSet, + For_Order_t Order, + long Location, + long ThrCod, + long PstCod) + { + For_PutParamForumSet (ForumSet); + For_PutParamForumOrder (Order); + For_PutParamForumLocation (Location); + For_PutHiddenParamThrCod (ThrCod); + For_PutHiddenParamPstCod (PstCod); } /*****************************************************************************/ /********* Put a hidden parameter with set of forums I want to see ***********/ /*****************************************************************************/ -static void For_PutParamForumSet (void) +static void For_PutParamForumSet (For_ForumSet_t ForumSet) { - Par_PutHiddenParamUnsigned ("ForumSet",(unsigned) Gbl.Forum.ForumSet); + Par_PutHiddenParamUnsigned ("ForumSet",(unsigned) ForumSet); } /*****************************************************************************/ /******** Put a hidden parameter with the order criterium for forums *********/ /*****************************************************************************/ -static void For_PutParamForumOrder (void) +static void For_PutParamForumOrder (For_Order_t Order) { - Par_PutHiddenParamUnsigned ("Order",(unsigned) Gbl.Forum.SelectedOrder); + Par_PutHiddenParamUnsigned ("Order",(unsigned) Order); } /*****************************************************************************/ @@ -1505,11 +1516,32 @@ static void For_PutParamForumOrder (void) /************** forum institution, centre, degree and course *****************/ /*****************************************************************************/ -static void For_PutParamForumInsCtrDegCrs (void) +static void For_PutParamForumLocation (long Location) { - if (Gbl.Forum.WhichForum.Location > 0) - /***** Put a hidden parameter with the institution, centre, degree or course of the forum *****/ - Par_PutHiddenParamLong ("Location",Gbl.Forum.WhichForum.Location); + if (Location > 0) + /***** Put a hidden parameter with the + institution, centre, degree or course of the forum *****/ + Par_PutHiddenParamLong ("Location",Location); + } + +/*****************************************************************************/ +/************ Write a form parameter to specify a thread code ****************/ +/*****************************************************************************/ + +static void For_PutHiddenParamThrCod (long ThrCod) + { + if (ThrCod > 0) + Par_PutHiddenParamLong ("ThrCod",ThrCod); + } + +/*****************************************************************************/ +/************* Write a form parameter to specify a post code *****************/ +/*****************************************************************************/ + +static void For_PutHiddenParamPstCod (long PstCod) + { + if (PstCod > 0) + Par_PutHiddenParamLong ("PstCod",PstCod); } /*****************************************************************************/ @@ -1520,7 +1552,7 @@ static void For_ShowForumList (void) { extern const char *Hlp_SOCIAL_Forums; extern const char *Txt_Forums; - bool ICanMoveThreads = (Gbl.Usrs.Me.LoggedRole == Rol_SYS_ADM); // If I have permission to move threads... + bool ICanMoveThreads = (Gbl.Usrs.Me.LoggedRole == Rol_SYS_ADM); bool IsLastItemInLevel[1 + For_FORUM_MAX_LEVELS]; MYSQL_RES *mysql_resCtr; MYSQL_RES *mysql_resDeg; @@ -1542,7 +1574,7 @@ static void For_ShowForumList (void) bool ICanSeeDegForum; /***** Get if there is a thread ready to be moved *****/ - if (ICanMoveThreads) + if (ICanMoveThreads) // If I have permission to move threads... Gbl.Forum.ThreadToMove = For_GetThrInMyClipboard (); /***** Fill the list with the institutions I belong to *****/ @@ -1729,7 +1761,7 @@ static void For_PutFormWhichForums (void) - all my forums - only the forums of current institution/degree/course *****/ Act_FormStart (ActSeeFor); - For_PutParamForumOrder (); + For_PutParamForumOrder (Gbl.Forum.SelectedOrder); fprintf (Gbl.F.Out,"
" "
    "); @@ -1762,24 +1794,24 @@ static void For_PutFormWhichForums (void) static void For_WriteLinksToGblForums (bool IsLastItemInLevel[1 + For_FORUM_MAX_LEVELS]) { bool Highlight; - struct Forum WhichForum; + struct Forum ForumSelected; /***** Link to forum global *****/ - WhichForum.Type = For_FORUM_GLOBAL_USRS; - WhichForum.Location = -1L; - Highlight = (Gbl.Forum.WhichForum.Type == For_FORUM_GLOBAL_USRS); + ForumSelected.Type = For_FORUM_GLOBAL_USRS; + ForumSelected.Location = -1L; + Highlight = (Gbl.Forum.ForumSelected.Type == For_FORUM_GLOBAL_USRS); IsLastItemInLevel[1] = false; - For_WriteLinkToAForum (&WhichForum,Highlight,false,0,IsLastItemInLevel); + For_WriteLinkToAForum (&ForumSelected,Highlight,false,0,IsLastItemInLevel); /***** Link to forum of teachers global *****/ Rol_GetRolesInAllCrssIfNotYetGot (&Gbl.Usrs.Me.UsrDat); if (Gbl.Usrs.Me.UsrDat.Roles >= (1 << Rol_TEACHER)) { - WhichForum.Type = For_FORUM_GLOBAL_TCHS; - WhichForum.Location = -1L; - Highlight = (Gbl.Forum.WhichForum.Type == For_FORUM_GLOBAL_TCHS); + ForumSelected.Type = For_FORUM_GLOBAL_TCHS; + ForumSelected.Location = -1L; + Highlight = (Gbl.Forum.ForumSelected.Type == For_FORUM_GLOBAL_TCHS); IsLastItemInLevel[1] = false; - For_WriteLinkToAForum (&WhichForum,Highlight,false,0,IsLastItemInLevel); + For_WriteLinkToAForum (&ForumSelected,Highlight,false,0,IsLastItemInLevel); } } @@ -1792,7 +1824,7 @@ static void For_WriteLinksToPlatformForums (bool IsLastForum, { bool Highlight; bool ICanSeeTeacherForum; - struct Forum WhichForum; + struct Forum ForumSelected; /***** Can I see teachers's forums? *****/ Rol_GetRolesInAllCrssIfNotYetGot (&Gbl.Usrs.Me.UsrDat); @@ -1800,20 +1832,20 @@ static void For_WriteLinksToPlatformForums (bool IsLastForum, Gbl.Usrs.Me.UsrDat.Roles >= (1 << Rol_TEACHER)); /***** Link to forum of users about the platform *****/ - WhichForum.Type = For_FORUM_SWAD_USRS; - WhichForum.Location = -1L; - Highlight = (Gbl.Forum.WhichForum.Type == For_FORUM_SWAD_USRS); + ForumSelected.Type = For_FORUM_SWAD_USRS; + ForumSelected.Location = -1L; + Highlight = (Gbl.Forum.ForumSelected.Type == For_FORUM_SWAD_USRS); IsLastItemInLevel[1] = (IsLastForum && !ICanSeeTeacherForum); - For_WriteLinkToAForum (&WhichForum,Highlight,false,0,IsLastItemInLevel); + For_WriteLinkToAForum (&ForumSelected,Highlight,false,0,IsLastItemInLevel); /***** Link to forum of teachers about the platform *****/ if (ICanSeeTeacherForum) { - WhichForum.Type = For_FORUM_SWAD_TCHS; - WhichForum.Location = -1L; - Highlight = (Gbl.Forum.WhichForum.Type == For_FORUM_SWAD_TCHS); + ForumSelected.Type = For_FORUM_SWAD_TCHS; + ForumSelected.Location = -1L; + Highlight = (Gbl.Forum.ForumSelected.Type == For_FORUM_SWAD_TCHS); IsLastItemInLevel[1] = IsLastForum; - For_WriteLinkToAForum (&WhichForum,Highlight,false,0,IsLastItemInLevel); + For_WriteLinkToAForum (&ForumSelected,Highlight,false,0,IsLastItemInLevel); } } @@ -1827,7 +1859,7 @@ static long For_WriteLinksToInsForums (long InsCod,bool IsLastIns, { bool Highlight; bool ICanSeeTeacherForum; - struct Forum WhichForum; + struct Forum ForumSelected; if (InsCod > 0) { @@ -1835,22 +1867,22 @@ static long For_WriteLinksToInsForums (long InsCod,bool IsLastIns, Rol_GetMyMaxRoleInIns (InsCod) >= Rol_TEACHER); /***** Link to the forum of users from this institution *****/ - WhichForum.Type = For_FORUM_INSTIT_USRS; - WhichForum.Location = InsCod; - Highlight = (Gbl.Forum.WhichForum.Type == For_FORUM_INSTIT_USRS && - Gbl.Forum.WhichForum.Location == InsCod); + ForumSelected.Type = For_FORUM_INSTIT_USRS; + ForumSelected.Location = InsCod; + Highlight = (Gbl.Forum.ForumSelected.Type == For_FORUM_INSTIT_USRS && + Gbl.Forum.ForumSelected.Location == InsCod); IsLastItemInLevel[1] = (IsLastIns && !ICanSeeTeacherForum); - For_WriteLinkToAForum (&WhichForum,Highlight,false,1,IsLastItemInLevel); + For_WriteLinkToAForum (&ForumSelected,Highlight,false,1,IsLastItemInLevel); /***** Link to forum of teachers from this institution *****/ if (ICanSeeTeacherForum) { - WhichForum.Type = For_FORUM_INSTIT_TCHS; - WhichForum.Location = InsCod; - Highlight = (Gbl.Forum.WhichForum.Type == For_FORUM_INSTIT_TCHS && - Gbl.Forum.WhichForum.Location == InsCod); + ForumSelected.Type = For_FORUM_INSTIT_TCHS; + ForumSelected.Location = InsCod; + Highlight = (Gbl.Forum.ForumSelected.Type == For_FORUM_INSTIT_TCHS && + Gbl.Forum.ForumSelected.Location == InsCod); IsLastItemInLevel[1] = IsLastIns; - For_WriteLinkToAForum (&WhichForum,Highlight,false,1,IsLastItemInLevel); + For_WriteLinkToAForum (&ForumSelected,Highlight,false,1,IsLastItemInLevel); } } return InsCod; @@ -1866,7 +1898,7 @@ static long For_WriteLinksToCtrForums (long CtrCod,bool IsLastCtr, { bool Highlight; bool ICanSeeTeacherForum; - struct Forum WhichForum; + struct Forum ForumSelected; if (CtrCod > 0) { @@ -1874,22 +1906,22 @@ static long For_WriteLinksToCtrForums (long CtrCod,bool IsLastCtr, Rol_GetMyMaxRoleInCtr (CtrCod) >= Rol_TEACHER); /***** Link to the forum of users from this centre *****/ - WhichForum.Type = For_FORUM_CENTRE_USRS; - WhichForum.Location = CtrCod; - Highlight = (Gbl.Forum.WhichForum.Type == For_FORUM_CENTRE_USRS && - Gbl.Forum.WhichForum.Location == CtrCod); + ForumSelected.Type = For_FORUM_CENTRE_USRS; + ForumSelected.Location = CtrCod; + Highlight = (Gbl.Forum.ForumSelected.Type == For_FORUM_CENTRE_USRS && + Gbl.Forum.ForumSelected.Location == CtrCod); IsLastItemInLevel[2] = (IsLastCtr && !ICanSeeTeacherForum); - For_WriteLinkToAForum (&WhichForum,Highlight,false,2,IsLastItemInLevel); + For_WriteLinkToAForum (&ForumSelected,Highlight,false,2,IsLastItemInLevel); /***** Link to forum of teachers from this centre *****/ if (ICanSeeTeacherForum) { - WhichForum.Type = For_FORUM_CENTRE_TCHS; - WhichForum.Location = CtrCod; - Highlight = (Gbl.Forum.WhichForum.Type == For_FORUM_CENTRE_TCHS && - Gbl.Forum.WhichForum.Location == CtrCod); + ForumSelected.Type = For_FORUM_CENTRE_TCHS; + ForumSelected.Location = CtrCod; + Highlight = (Gbl.Forum.ForumSelected.Type == For_FORUM_CENTRE_TCHS && + Gbl.Forum.ForumSelected.Location == CtrCod); IsLastItemInLevel[2] = IsLastCtr; - For_WriteLinkToAForum (&WhichForum,Highlight,false,2,IsLastItemInLevel); + For_WriteLinkToAForum (&ForumSelected,Highlight,false,2,IsLastItemInLevel); } } return CtrCod; @@ -1905,7 +1937,7 @@ static long For_WriteLinksToDegForums (long DegCod,bool IsLastDeg, { bool Highlight; bool ICanSeeTeacherForum; - struct Forum WhichForum; + struct Forum ForumSelected; if (DegCod > 0) { @@ -1913,22 +1945,22 @@ static long For_WriteLinksToDegForums (long DegCod,bool IsLastDeg, Rol_GetMyMaxRoleInDeg (DegCod) >= Rol_TEACHER); /***** Link to the forum of users from this degree *****/ - WhichForum.Type = For_FORUM_DEGREE_USRS; - WhichForum.Location = DegCod; - Highlight = (Gbl.Forum.WhichForum.Type == For_FORUM_DEGREE_USRS && - Gbl.Forum.WhichForum.Location == DegCod); + ForumSelected.Type = For_FORUM_DEGREE_USRS; + ForumSelected.Location = DegCod; + Highlight = (Gbl.Forum.ForumSelected.Type == For_FORUM_DEGREE_USRS && + Gbl.Forum.ForumSelected.Location == DegCod); IsLastItemInLevel[3] = (IsLastDeg && !ICanSeeTeacherForum); - For_WriteLinkToAForum (&WhichForum,Highlight,false,3,IsLastItemInLevel); + For_WriteLinkToAForum (&ForumSelected,Highlight,false,3,IsLastItemInLevel); /***** Link to forum of teachers from this degree *****/ if (ICanSeeTeacherForum) { - WhichForum.Type = For_FORUM_DEGREE_TCHS; - WhichForum.Location = DegCod; - Highlight = (Gbl.Forum.WhichForum.Type == For_FORUM_DEGREE_TCHS && - Gbl.Forum.WhichForum.Location == DegCod); + ForumSelected.Type = For_FORUM_DEGREE_TCHS; + ForumSelected.Location = DegCod; + Highlight = (Gbl.Forum.ForumSelected.Type == For_FORUM_DEGREE_TCHS && + Gbl.Forum.ForumSelected.Location == DegCod); IsLastItemInLevel[3] = IsLastDeg; - For_WriteLinkToAForum (&WhichForum,Highlight,false,3,IsLastItemInLevel); + For_WriteLinkToAForum (&ForumSelected,Highlight,false,3,IsLastItemInLevel); } } return DegCod; @@ -1944,7 +1976,7 @@ static long For_WriteLinksToCrsForums (long CrsCod,bool IsLastCrs, { bool Highlight; bool ICanSeeTeacherForum; - struct Forum WhichForum; + struct Forum ForumSelected; if (CrsCod > 0) { @@ -1952,22 +1984,22 @@ static long For_WriteLinksToCrsForums (long CrsCod,bool IsLastCrs, Rol_GetMyRoleInCrs (CrsCod) >= Rol_TEACHER); /***** Link to the forum of users from this course *****/ - WhichForum.Type = For_FORUM_COURSE_USRS; - WhichForum.Location = CrsCod; - Highlight = (Gbl.Forum.WhichForum.Type == For_FORUM_COURSE_USRS && - Gbl.Forum.WhichForum.Location == CrsCod); + ForumSelected.Type = For_FORUM_COURSE_USRS; + ForumSelected.Location = CrsCod; + Highlight = (Gbl.Forum.ForumSelected.Type == For_FORUM_COURSE_USRS && + Gbl.Forum.ForumSelected.Location == CrsCod); IsLastItemInLevel[4] = (IsLastCrs && !ICanSeeTeacherForum); - For_WriteLinkToAForum (&WhichForum,Highlight,false,4,IsLastItemInLevel); + For_WriteLinkToAForum (&ForumSelected,Highlight,false,4,IsLastItemInLevel); /***** Link to forum of teachers from this course *****/ if (ICanSeeTeacherForum) { - WhichForum.Type = For_FORUM_COURSE_TCHS; - WhichForum.Location = CrsCod; - Highlight = (Gbl.Forum.WhichForum.Type == For_FORUM_COURSE_TCHS && - Gbl.Forum.WhichForum.Location == CrsCod); + ForumSelected.Type = For_FORUM_COURSE_TCHS; + ForumSelected.Location = CrsCod; + Highlight = (Gbl.Forum.ForumSelected.Type == For_FORUM_COURSE_TCHS && + Gbl.Forum.ForumSelected.Location == CrsCod); IsLastItemInLevel[4] = IsLastCrs; - For_WriteLinkToAForum (&WhichForum,Highlight,false,4,IsLastItemInLevel); + For_WriteLinkToAForum (&ForumSelected,Highlight,false,4,IsLastItemInLevel); } } return CrsCod; @@ -1977,7 +2009,7 @@ static long For_WriteLinksToCrsForums (long CrsCod,bool IsLastCrs, /********************** Write title and link to a forum **********************/ /*****************************************************************************/ -static void For_WriteLinkToAForum (struct Forum *WhichForum, +static void For_WriteLinkToAForum (struct Forum *Forum, bool Highlight,bool ShowNumOfPosts, unsigned Level, bool IsLastItemInLevel[1 + For_FORUM_MAX_LEVELS]) @@ -1985,9 +2017,9 @@ static void For_WriteLinkToAForum (struct Forum *WhichForum, char Icon[512]; char ForumName[For_MAX_BYTES_FORUM_NAME + 1]; - For_SetForumName (WhichForum,ForumName,Gbl.Prefs.Language,true); + For_SetForumName (Forum,ForumName,Gbl.Prefs.Language,true); - switch (WhichForum->Type) + switch (Forum->Type) { case For_FORUM_GLOBAL_USRS: case For_FORUM_GLOBAL_TCHS: @@ -2022,8 +2054,8 @@ static void For_WriteLinkToAForum (struct Forum *WhichForum, break; } - For_WriteLinkToForum (WhichForum, - For_ActionsSeeFor[WhichForum->Type],Icon,ForumName, + For_WriteLinkToForum (Forum, + For_ActionsSeeFor[Forum->Type],Icon,ForumName, Highlight,ShowNumOfPosts, Level,IsLastItemInLevel); } @@ -2032,7 +2064,7 @@ static void For_WriteLinkToAForum (struct Forum *WhichForum, /************************** Set the name of a forum **************************/ /*****************************************************************************/ -void For_SetForumName (struct Forum *WhichForum, +void For_SetForumName (struct Forum *Forum, char ForumName[For_MAX_BYTES_FORUM_NAME + 1], Txt_Language_t Language,bool UseHTMLEntities) { @@ -2045,17 +2077,17 @@ void For_SetForumName (struct Forum *WhichForum, struct Degree Deg; struct Course Crs; - switch (WhichForum->Type) + switch (Forum->Type) { case For_FORUM_COURSE_USRS: - Crs.CrsCod = WhichForum->Location; + Crs.CrsCod = Forum->Location; if (!Crs_GetDataOfCourseByCod (&Crs)) Lay_ShowErrorAndExit ("Course not found."); Str_Copy (ForumName,Crs.ShrtName, For_MAX_BYTES_FORUM_NAME); break; case For_FORUM_COURSE_TCHS: - Crs.CrsCod = WhichForum->Location; + Crs.CrsCod = Forum->Location; if (!Crs_GetDataOfCourseByCod (&Crs)) Lay_ShowErrorAndExit ("Course not found."); sprintf (ForumName,"%s%s",Crs.ShrtName, @@ -2063,14 +2095,14 @@ void For_SetForumName (struct Forum *WhichForum, Txt_only_teachers_NO_HTML[Language]); break; case For_FORUM_DEGREE_USRS: - Deg.DegCod = WhichForum->Location; + Deg.DegCod = Forum->Location; if (!Deg_GetDataOfDegreeByCod (&Deg)) Lay_ShowErrorAndExit ("Degree not found."); Str_Copy (ForumName,Deg.ShrtName, For_MAX_BYTES_FORUM_NAME); break; case For_FORUM_DEGREE_TCHS: - Deg.DegCod = WhichForum->Location; + Deg.DegCod = Forum->Location; if (!Deg_GetDataOfDegreeByCod (&Deg)) Lay_ShowErrorAndExit ("Degree not found."); sprintf (ForumName,"%s%s",Deg.ShrtName, @@ -2078,14 +2110,14 @@ void For_SetForumName (struct Forum *WhichForum, Txt_only_teachers_NO_HTML[Language]); break; case For_FORUM_CENTRE_USRS: - Ctr.CtrCod = WhichForum->Location; + Ctr.CtrCod = Forum->Location; if (!Ctr_GetDataOfCentreByCod (&Ctr)) Lay_ShowErrorAndExit ("Centre not found."); Str_Copy (ForumName,Ctr.ShrtName, For_MAX_BYTES_FORUM_NAME); break; case For_FORUM_CENTRE_TCHS: - Ctr.CtrCod = WhichForum->Location; + Ctr.CtrCod = Forum->Location; if (!Ctr_GetDataOfCentreByCod (&Ctr)) Lay_ShowErrorAndExit ("Centre not found."); sprintf (ForumName,"%s%s",Ctr.ShrtName, @@ -2093,14 +2125,14 @@ void For_SetForumName (struct Forum *WhichForum, Txt_only_teachers_NO_HTML[Language]); break; case For_FORUM_INSTIT_USRS: - Ins.InsCod = WhichForum->Location; + Ins.InsCod = Forum->Location; if (!Ins_GetDataOfInstitutionByCod (&Ins,Ins_GET_BASIC_DATA)) Lay_ShowErrorAndExit ("Institution not found."); Str_Copy (ForumName,Ins.ShrtName, For_MAX_BYTES_FORUM_NAME); break; case For_FORUM_INSTIT_TCHS: - Ins.InsCod = WhichForum->Location; + Ins.InsCod = Forum->Location; if (!Ins_GetDataOfInstitutionByCod (&Ins,Ins_GET_BASIC_DATA)) Lay_ShowErrorAndExit ("Institution not found."); sprintf (ForumName,"%s%s",Ins.ShrtName, @@ -2135,7 +2167,7 @@ void For_SetForumName (struct Forum *WhichForum, /*********************** Write title and link to a forum *********************/ /*****************************************************************************/ -static void For_WriteLinkToForum (struct Forum *WhichForum, +static void For_WriteLinkToForum (struct Forum *Forum, Act_Action_t NextAct, const char *Icon,const char *ForumName, bool Highlight,bool ShowNumOfPosts, @@ -2153,8 +2185,8 @@ static void For_WriteLinkToForum (struct Forum *WhichForum, char ActTxt[Act_MAX_BYTES_ACTION_TXT + 1]; /***** Get number of threads and number of posts *****/ - NumThrs = For_GetNumThrsInForum (WhichForum); - NumThrsWithNewPosts = For_GetNumThrsWithNewPstsInForum (WhichForum,NumThrs); + NumThrs = For_GetNumThrsInForum (Forum); + NumThrsWithNewPosts = For_GetNumThrsWithNewPstsInForum (Forum,NumThrs); Style = (NumThrsWithNewPosts ? The_ClassFormBold[Gbl.Prefs.Theme] : The_ClassForm[Gbl.Prefs.Theme]); @@ -2171,7 +2203,7 @@ static void For_WriteLinkToForum (struct Forum *WhichForum, if (Gbl.Forum.ThreadToMove >= 0) // If I have permission to paste threads and there is a thread ready to be pasted... { /* Check if thread to move is yet in current forum */ - if (For_CheckIfThrBelongsToForum (Gbl.Forum.ThreadToMove,WhichForum)) + if (For_CheckIfThrBelongsToForum (Gbl.Forum.ThreadToMove,Forum)) fprintf (Gbl.F.Out,"\"%s\"", @@ -2179,10 +2211,13 @@ static void For_WriteLinkToForum (struct Forum *WhichForum, Txt_Copy_not_allowed,Txt_Copy_not_allowed); else { - Act_FormStart (For_ActionsPasThrFor[WhichForum->Type]); + Act_FormStart (For_ActionsPasThrFor[Forum->Type]); Pag_PutHiddenParamPagNum (Pag_THREADS_FORUM,Gbl.Forum.CurrentPageThrs); - For_PutAllHiddenParamsForum (); - For_PutHiddenParamThrCod (Gbl.Forum.ThreadToMove); + For_PutAllHiddenParamsForum (Gbl.Forum.ForumSet, + Gbl.Forum.SelectedOrder, + Gbl.Forum.ForumSelected.Location, + Gbl.Forum.ThreadToMove, + -1L); fprintf (Gbl.F.Out,"", @@ -2195,24 +2230,25 @@ static void For_WriteLinkToForum (struct Forum *WhichForum, /***** Write link to forum *****/ Act_FormStartAnchor (NextAct,For_ID_FORUM_THREADS_SECTION); - For_PutParamForumSet (); - For_PutParamForumOrder (); - if (WhichForum->Location > 0) // Code of forum institution, centre, degree or course - Par_PutHiddenParamLong ("Location",WhichForum->Location); + For_PutAllHiddenParamsForum (Gbl.Forum.ForumSet, + Gbl.Forum.SelectedOrder, + Forum->Location, + -1L, + -1L); Act_LinkFormSubmit (Act_GetActionTextFromDB (Act_Actions[NextAct].ActCod,ActTxt),Style,NULL); - switch (WhichForum->Type) + switch (Forum->Type) { case For_FORUM_INSTIT_USRS: case For_FORUM_INSTIT_TCHS: - Log_DrawLogo (Sco_SCOPE_INS,WhichForum->Location,ForumName,20,NULL,true); + Log_DrawLogo (Sco_SCOPE_INS,Forum->Location,ForumName,20,NULL,true); break; case For_FORUM_CENTRE_USRS: case For_FORUM_CENTRE_TCHS: - Log_DrawLogo (Sco_SCOPE_CTR,WhichForum->Location,ForumName,20,NULL,true); + Log_DrawLogo (Sco_SCOPE_CTR,Forum->Location,ForumName,20,NULL,true); break; case For_FORUM_DEGREE_USRS: case For_FORUM_DEGREE_TCHS: - Log_DrawLogo (Sco_SCOPE_DEG,WhichForum->Location,ForumName,20,NULL,true); + Log_DrawLogo (Sco_SCOPE_DEG,Forum->Location,ForumName,20,NULL,true); break; default: fprintf (Gbl.F.Out,"%s",Icon); @@ -2223,7 +2259,7 @@ static void For_WriteLinkToForum (struct Forum *WhichForum, /***** Write total number of threads and posts in this forum *****/ if (ShowNumOfPosts) { - if ((NumPosts = For_GetNumPstsInForum (WhichForum))) + if ((NumPosts = For_GetNumPstsInForum (Forum))) For_WriteNumThrsAndPsts (NumThrs,NumThrsWithNewPosts,NumPosts); } else @@ -2239,7 +2275,7 @@ static void For_WriteLinkToForum (struct Forum *WhichForum, /***** Get number of threads with new posts since my last read of a forum ****/ /*****************************************************************************/ -static unsigned For_GetNumThrsWithNewPstsInForum (struct Forum *WhichForum, +static unsigned For_GetNumThrsWithNewPstsInForum (struct Forum *ForumSelected, unsigned NumThreads) { char SubQuery[256]; @@ -2250,8 +2286,8 @@ static unsigned For_GetNumThrsWithNewPstsInForum (struct Forum *WhichForum, unsigned NumThrsWithNewPosts = NumThreads; // By default, all the threads are new to me /***** Get last time I read this forum from database *****/ - if (WhichForum->Location > 0) - sprintf (SubQuery," AND forum_thread.Location=%ld",WhichForum->Location); + if (ForumSelected->Location > 0) + sprintf (SubQuery," AND forum_thread.Location=%ld",ForumSelected->Location); else SubQuery[0] = '\0'; sprintf (Query,"SELECT MAX(forum_thr_read.ReadTime)" @@ -2259,14 +2295,14 @@ static unsigned For_GetNumThrsWithNewPstsInForum (struct Forum *WhichForum, " WHERE forum_thr_read.UsrCod=%ld" " AND forum_thr_read.ThrCod=forum_thread.ThrCod" " AND forum_thread.ForumType=%u%s", - Gbl.Usrs.Me.UsrDat.UsrCod,(unsigned) WhichForum->Type,SubQuery); + Gbl.Usrs.Me.UsrDat.UsrCod,(unsigned) ForumSelected->Type,SubQuery); NumRows = DB_QuerySELECT (Query,&mysql_res,"can not get the date of reading of a forum"); if (NumRows) { /***** Get number of threads with a last message modify time > newest read time (row[0]) *****/ row = mysql_fetch_row (mysql_res); - NumThrsWithNewPosts = For_GetNumOfThreadsInForumNewerThan (WhichForum,row[0]); + NumThrsWithNewPosts = For_GetNumOfThreadsInForumNewerThan (ForumSelected,row[0]); } /***** Free structure that stores the query result *****/ @@ -2279,7 +2315,7 @@ static unsigned For_GetNumThrsWithNewPstsInForum (struct Forum *WhichForum, /**** Get number of threads in forum with a modify time > a specified time ***/ /*****************************************************************************/ -static unsigned For_GetNumOfThreadsInForumNewerThan (struct Forum *WhichForum, +static unsigned For_GetNumOfThreadsInForumNewerThan (struct Forum *ForumSelected, const char *Time) { char SubQuery[256]; @@ -2287,15 +2323,15 @@ static unsigned For_GetNumOfThreadsInForumNewerThan (struct Forum *WhichForum, /***** Get number of threads with a last message modify time > specified time from database *****/ - if (WhichForum->Location > 0) - sprintf (SubQuery," AND forum_thread.Location=%ld",WhichForum->Location); + if (ForumSelected->Location > 0) + sprintf (SubQuery," AND forum_thread.Location=%ld",ForumSelected->Location); else SubQuery[0] = '\0'; sprintf (Query,"SELECT COUNT(*) FROM forum_thread,forum_post" " WHERE forum_thread.ForumType=%u%s" " AND forum_thread.LastPstCod=forum_post.PstCod" " AND forum_post.ModifTime>'%s'", - (unsigned) WhichForum->Type,SubQuery,Time); + (unsigned) ForumSelected->Type,SubQuery,Time); return (unsigned) DB_QueryCOUNT (Query,"can not check if there are new posts in a forum"); } @@ -2452,30 +2488,18 @@ static void For_ShowForumThreadsHighlightingOneThread (long ThrCodHighlighted) For_ShowForumList (); /***** Set forum name *****/ - For_SetForumName (&Gbl.Forum.WhichForum, + For_SetForumName (&Gbl.Forum.ForumSelected, ForumName,Gbl.Prefs.Language,true); /***** Get page number *****/ Gbl.Forum.CurrentPageThrs = Pag_GetParamPagNum (Pag_THREADS_FORUM); /***** Get threads of a forum from database *****/ - switch (Gbl.Forum.WhichForum.Type) - { - case For_FORUM_INSTIT_USRS: - case For_FORUM_INSTIT_TCHS: - case For_FORUM_CENTRE_USRS: - case For_FORUM_CENTRE_TCHS: - case For_FORUM_DEGREE_USRS: - case For_FORUM_DEGREE_TCHS: - case For_FORUM_COURSE_USRS: - case For_FORUM_COURSE_TCHS: - sprintf (SubQuery," AND forum_thread.Location=%ld", - Gbl.Forum.WhichForum.Location); - break; - default: - SubQuery[0] = '\0'; - break; - } + if (Gbl.Forum.ForumSelected.Location > 0) + sprintf (SubQuery," AND forum_thread.Location=%ld", + Gbl.Forum.ForumSelected.Location); + else + SubQuery[0] = '\0'; switch (Gbl.Forum.SelectedOrder) { case For_FIRST_MSG: @@ -2484,7 +2508,7 @@ static void For_ShowForumThreadsHighlightingOneThread (long ThrCodHighlighted) " WHERE forum_thread.ForumType=%u%s" " AND forum_thread.FirstPstCod=forum_post.PstCod" " ORDER BY forum_post.CreatTime DESC", - (unsigned) Gbl.Forum.WhichForum.Type,SubQuery); + (unsigned) Gbl.Forum.ForumSelected.Type,SubQuery); break; case For_LAST_MSG: sprintf (Query,"SELECT forum_thread.ThrCod" @@ -2492,7 +2516,7 @@ static void For_ShowForumThreadsHighlightingOneThread (long ThrCodHighlighted) " WHERE forum_thread.ForumType=%u%s" " AND forum_thread.LastPstCod=forum_post.PstCod" " ORDER BY forum_post.CreatTime DESC", - (unsigned) Gbl.Forum.WhichForum.Type,SubQuery); + (unsigned) Gbl.Forum.ForumSelected.Type,SubQuery); break; } NumThrs = (unsigned) DB_QuerySELECT (Query,&mysql_res,"can not get thread of a forum"); @@ -2553,12 +2577,14 @@ static void For_ShowForumThreadsHighlightingOneThread (long ThrCodHighlighted) Order++) { fprintf (Gbl.F.Out,""); - Act_FormStartAnchor (For_ActionsSeeFor[Gbl.Forum.WhichForum.Type], + Act_FormStartAnchor (For_ActionsSeeFor[Gbl.Forum.ForumSelected.Type], For_ID_FORUM_THREADS_SECTION); Pag_PutHiddenParamPagNum (Pag_THREADS_FORUM,PaginationThrs.CurrentPage); - For_PutParamForumSet (); - For_PutParamForumInsCtrDegCrs (); - Par_PutHiddenParamUnsigned ("Order",(unsigned) Order); + For_PutAllHiddenParamsForum (Gbl.Forum.ForumSet, + Order, + Gbl.Forum.ForumSelected.Location, + -1L, + -1L); Act_LinkFormSubmit (Txt_FORUM_THREAD_HELP_ORDER[Order],"TIT_TBL",NULL); if (Order == Gbl.Forum.SelectedOrder) fprintf (Gbl.F.Out,""); @@ -2602,7 +2628,7 @@ static void For_ShowForumThreadsHighlightingOneThread (long ThrCodHighlighted) /***** Put a form to write the first post of a new thread *****/ fprintf (Gbl.F.Out,"
    ",For_ID_NEW_THREAD_SECTION); - For_WriteFormForumPst (false,-1,NULL); + For_WriteFormForumPst (false,NULL); fprintf (Gbl.F.Out,"
    "); /***** End frame with threads of this forum ****/ @@ -2950,18 +2976,18 @@ unsigned For_GetNumTotalThrsInForumsOfType (For_ForumType_t ForumType, /******************* Get number of threads in a forum ************************/ /*****************************************************************************/ -static unsigned For_GetNumThrsInForum (struct Forum *WhichForum) +static unsigned For_GetNumThrsInForum (struct Forum *ForumSelected) { char SubQuery[256]; char Query[1024]; /***** Get number of threads in a forum from database *****/ - if (WhichForum->Location > 0) - sprintf (SubQuery," AND Location=%ld",WhichForum->Location); + if (ForumSelected->Location > 0) + sprintf (SubQuery," AND Location=%ld",ForumSelected->Location); else SubQuery[0] = '\0'; sprintf (Query,"SELECT COUNT(*) FROM forum_thread WHERE ForumType=%u%s", - (unsigned) WhichForum->Type,SubQuery); + (unsigned) ForumSelected->Type,SubQuery); return (unsigned) DB_QueryCOUNT (Query,"can not get number of threads in a forum"); } @@ -3169,20 +3195,20 @@ unsigned For_GetNumTotalPstsInForumsOfType (For_ForumType_t ForumType, /********************* Get number of posts in a forum ************************/ /*****************************************************************************/ -static unsigned For_GetNumPstsInForum (struct Forum *WhichForum) +static unsigned For_GetNumPstsInForum (struct Forum *ForumSelected) { char SubQuery[256]; char Query[1024]; /***** Get number of posts in a forum from database *****/ - if (WhichForum->Location > 0) - sprintf (SubQuery," AND forum_thread.Location=%ld",WhichForum->Location); + if (ForumSelected->Location > 0) + sprintf (SubQuery," AND forum_thread.Location=%ld",ForumSelected->Location); else SubQuery[0] = '\0'; sprintf (Query,"SELECT COUNT(*) FROM forum_thread,forum_post " " WHERE forum_thread.ForumType=%u%s" " AND forum_thread.ThrCod=forum_post.ThrCod", - (unsigned) WhichForum->Type,SubQuery); + (unsigned) ForumSelected->Type,SubQuery); return (unsigned) DB_QueryCOUNT (Query,"can not get the number of posts in a forum"); } @@ -3274,14 +3300,18 @@ static void For_ListForumThrs (long ThrCods[Pag_ITEMS_PER_PAGE], Txt_No_new_posts, Thr.NumUnreadPosts ? Txt_There_are_new_posts : Txt_No_new_posts); - if (PermissionThreadDeletion[Gbl.Forum.WhichForum.Type] & + if (PermissionThreadDeletion[Gbl.Forum.ForumSelected.Type] & (1 << Gbl.Usrs.Me.LoggedRole)) // If I have permission to remove thread in this forum... { /* Put button to remove the thread */ fprintf (Gbl.F.Out,"
    "); - Act_FormStart (For_ActionsReqDelThr[Gbl.Forum.WhichForum.Type]); - For_PutAllHiddenParamsForum (); - For_PutHiddenParamThrCod (Thr.ThrCod); + Act_FormStart (For_ActionsReqDelThr[Gbl.Forum.ForumSelected.Type]); + Pag_PutHiddenParamPagNum (Pag_THREADS_FORUM,Gbl.Forum.CurrentPageThrs); + For_PutAllHiddenParamsForum (Gbl.Forum.ForumSet, + Gbl.Forum.SelectedOrder, + Gbl.Forum.ForumSelected.Location, + Thr.ThrCod, + -1L); Lay_PutIconRemove (); Act_FormEnd (); } @@ -3290,10 +3320,13 @@ static void For_ListForumThrs (long ThrCods[Pag_ITEMS_PER_PAGE], { /* Put button to cut the thread for moving it to another forum */ fprintf (Gbl.F.Out,"
    "); - Act_FormStart (For_ActionsCutThrFor[Gbl.Forum.WhichForum.Type]); + Act_FormStart (For_ActionsCutThrFor[Gbl.Forum.ForumSelected.Type]); Pag_PutHiddenParamPagNum (Pag_THREADS_FORUM,Gbl.Forum.CurrentPageThrs); - For_PutAllHiddenParamsForum (); - For_PutHiddenParamThrCod (Thr.ThrCod); + For_PutAllHiddenParamsForum (Gbl.Forum.ForumSet, + Gbl.Forum.SelectedOrder, + Gbl.Forum.ForumSelected.Location, + Thr.ThrCod, + -1L); fprintf (Gbl.F.Out,"", @@ -3499,7 +3532,7 @@ static void For_GetParamsForum (void) For_SetForumType (); /***** Get parameter with code of course, degree, centre or institution *****/ - switch (Gbl.Forum.WhichForum.Type) + switch (Gbl.Forum.ForumSelected.Type) { case For_FORUM_COURSE_USRS: case For_FORUM_COURSE_TCHS: @@ -3509,15 +3542,18 @@ static void For_GetParamsForum (void) case For_FORUM_CENTRE_TCHS: case For_FORUM_INSTIT_USRS: case For_FORUM_INSTIT_TCHS: - Gbl.Forum.WhichForum.Location = Par_GetParToLong ("Location"); + Gbl.Forum.ForumSelected.Location = Par_GetParToLong ("Location"); break; default: - Gbl.Forum.WhichForum.Location = -1L; + Gbl.Forum.ForumSelected.Location = -1L; break; } /***** Get optional parameter with code of a selected thread *****/ - Gbl.Forum.WhichForum.ThrCod = Par_GetParToLong ("ThrCod"); + Gbl.Forum.ForumSelected.ThrCod = Par_GetParToLong ("ThrCod"); + + /***** Get optional parameter with code of a selected post *****/ + Gbl.Forum.ForumSelected.PstCod = Par_GetParToLong ("PstCod"); /***** Get which forums I want to see *****/ Gbl.Forum.ForumSet = (For_ForumSet_t) @@ -3552,7 +3588,7 @@ static void For_SetForumType (void) case ActCutThrForGenUsr: case ActPasThrForGenUsr: case ActDelPstForGenUsr: case ActEnbPstForGenUsr: case ActDisPstForGenUsr: - Gbl.Forum.WhichForum.Type = For_FORUM_GLOBAL_USRS; + Gbl.Forum.ForumSelected.Type = For_FORUM_GLOBAL_USRS; Gbl.Forum.Level = 1; break; case ActSeeForGenTch: case ActSeePstForGenTch: @@ -3561,7 +3597,7 @@ static void For_SetForumType (void) case ActCutThrForGenTch: case ActPasThrForGenTch: case ActDelPstForGenTch: case ActEnbPstForGenTch: case ActDisPstForGenTch: - Gbl.Forum.WhichForum.Type = For_FORUM_GLOBAL_TCHS; + Gbl.Forum.ForumSelected.Type = For_FORUM_GLOBAL_TCHS; Gbl.Forum.Level = 1; break; case ActSeeForSWAUsr: case ActSeePstForSWAUsr: @@ -3570,7 +3606,7 @@ static void For_SetForumType (void) case ActCutThrForSWAUsr: case ActPasThrForSWAUsr: case ActDelPstForSWAUsr: case ActEnbPstForSWAUsr: case ActDisPstForSWAUsr: - Gbl.Forum.WhichForum.Type = For_FORUM_SWAD_USRS; + Gbl.Forum.ForumSelected.Type = For_FORUM_SWAD_USRS; Gbl.Forum.Level = 1; break; case ActSeeForSWATch: case ActSeePstForSWATch: @@ -3579,7 +3615,7 @@ static void For_SetForumType (void) case ActCutThrForSWATch: case ActPasThrForSWATch: case ActDelPstForSWATch: case ActEnbPstForSWATch: case ActDisPstForSWATch: - Gbl.Forum.WhichForum.Type = For_FORUM_SWAD_TCHS; + Gbl.Forum.ForumSelected.Type = For_FORUM_SWAD_TCHS; Gbl.Forum.Level = 1; break; case ActSeeForInsUsr: case ActSeePstForInsUsr: @@ -3588,7 +3624,7 @@ static void For_SetForumType (void) case ActCutThrForInsUsr: case ActPasThrForInsUsr: case ActDelPstForInsUsr: case ActEnbPstForInsUsr: case ActDisPstForInsUsr: - Gbl.Forum.WhichForum.Type = For_FORUM_INSTIT_USRS; + Gbl.Forum.ForumSelected.Type = For_FORUM_INSTIT_USRS; Gbl.Forum.Level = 1; break; case ActSeeForInsTch: case ActSeePstForInsTch: @@ -3597,7 +3633,7 @@ static void For_SetForumType (void) case ActCutThrForInsTch: case ActPasThrForInsTch: case ActDelPstForInsTch: case ActEnbPstForInsTch: case ActDisPstForInsTch: - Gbl.Forum.WhichForum.Type = For_FORUM_INSTIT_TCHS; + Gbl.Forum.ForumSelected.Type = For_FORUM_INSTIT_TCHS; Gbl.Forum.Level = 1; break; case ActSeeForCtrUsr: case ActSeePstForCtrUsr: @@ -3606,7 +3642,7 @@ static void For_SetForumType (void) case ActCutThrForCtrUsr: case ActPasThrForCtrUsr: case ActDelPstForCtrUsr: case ActEnbPstForCtrUsr: case ActDisPstForCtrUsr: - Gbl.Forum.WhichForum.Type = For_FORUM_CENTRE_USRS; + Gbl.Forum.ForumSelected.Type = For_FORUM_CENTRE_USRS; Gbl.Forum.Level = 1; break; case ActSeeForCtrTch: case ActSeePstForCtrTch: @@ -3615,7 +3651,7 @@ static void For_SetForumType (void) case ActCutThrForCtrTch: case ActPasThrForCtrTch: case ActDelPstForCtrTch: case ActEnbPstForCtrTch: case ActDisPstForCtrTch: - Gbl.Forum.WhichForum.Type = For_FORUM_CENTRE_TCHS; + Gbl.Forum.ForumSelected.Type = For_FORUM_CENTRE_TCHS; Gbl.Forum.Level = 1; break; case ActSeeForDegUsr: case ActSeePstForDegUsr: @@ -3624,7 +3660,7 @@ static void For_SetForumType (void) case ActCutThrForDegUsr: case ActPasThrForDegUsr: case ActDelPstForDegUsr: case ActEnbPstForDegUsr: case ActDisPstForDegUsr: - Gbl.Forum.WhichForum.Type = For_FORUM_DEGREE_USRS; + Gbl.Forum.ForumSelected.Type = For_FORUM_DEGREE_USRS; Gbl.Forum.Level = 2; break; case ActSeeForDegTch: case ActSeePstForDegTch: @@ -3633,7 +3669,7 @@ static void For_SetForumType (void) case ActCutThrForDegTch: case ActPasThrForDegTch: case ActDelPstForDegTch: case ActEnbPstForDegTch: case ActDisPstForDegTch: - Gbl.Forum.WhichForum.Type = For_FORUM_DEGREE_TCHS; + Gbl.Forum.ForumSelected.Type = For_FORUM_DEGREE_TCHS; Gbl.Forum.Level = 2; break; case ActSeeForCrsUsr: case ActSeePstForCrsUsr: @@ -3642,7 +3678,7 @@ static void For_SetForumType (void) case ActCutThrForCrsUsr: case ActPasThrForCrsUsr: case ActDelPstForCrsUsr: case ActEnbPstForCrsUsr: case ActDisPstForCrsUsr: - Gbl.Forum.WhichForum.Type = For_FORUM_COURSE_USRS; + Gbl.Forum.ForumSelected.Type = For_FORUM_COURSE_USRS; Gbl.Forum.Level = 3; break; case ActSeeForCrsTch: case ActSeePstForCrsTch: @@ -3651,7 +3687,7 @@ static void For_SetForumType (void) case ActCutThrForCrsTch: case ActPasThrForCrsTch: case ActDelPstForCrsTch: case ActEnbPstForCrsTch: case ActDisPstForCrsTch: - Gbl.Forum.WhichForum.Type = For_FORUM_COURSE_TCHS; + Gbl.Forum.ForumSelected.Type = For_FORUM_COURSE_TCHS; Gbl.Forum.Level = 3; break; } @@ -3667,39 +3703,39 @@ static void For_RestrictAccess (void) bool ICanSeeForum = false; /***** Restrict access *****/ - switch (Gbl.Forum.WhichForum.Type) + switch (Gbl.Forum.ForumSelected.Type) { case For_FORUM_COURSE_USRS: ICanSeeForum = (Gbl.Usrs.Me.LoggedRole == Rol_SYS_ADM || - Rol_GetMyRoleInCrs (Gbl.Forum.WhichForum.Location) >= Rol_STUDENT); + Rol_GetMyRoleInCrs (Gbl.Forum.ForumSelected.Location) >= Rol_STUDENT); break; case For_FORUM_COURSE_TCHS: ICanSeeForum = (Gbl.Usrs.Me.LoggedRole == Rol_SYS_ADM || - Rol_GetMyRoleInCrs (Gbl.Forum.WhichForum.Location) >= Rol_TEACHER); + Rol_GetMyRoleInCrs (Gbl.Forum.ForumSelected.Location) >= Rol_TEACHER); break; case For_FORUM_DEGREE_USRS: ICanSeeForum = (Gbl.Usrs.Me.LoggedRole == Rol_SYS_ADM || - Rol_GetMyMaxRoleInDeg (Gbl.Forum.WhichForum.Location) >= Rol_STUDENT); + Rol_GetMyMaxRoleInDeg (Gbl.Forum.ForumSelected.Location) >= Rol_STUDENT); break; case For_FORUM_DEGREE_TCHS: ICanSeeForum = (Gbl.Usrs.Me.LoggedRole == Rol_SYS_ADM || - Rol_GetMyMaxRoleInDeg (Gbl.Forum.WhichForum.Location) >= Rol_TEACHER); + Rol_GetMyMaxRoleInDeg (Gbl.Forum.ForumSelected.Location) >= Rol_TEACHER); break; case For_FORUM_CENTRE_USRS: ICanSeeForum = (Gbl.Usrs.Me.LoggedRole == Rol_SYS_ADM || - Rol_GetMyMaxRoleInCtr (Gbl.Forum.WhichForum.Location) >= Rol_STUDENT); + Rol_GetMyMaxRoleInCtr (Gbl.Forum.ForumSelected.Location) >= Rol_STUDENT); break; case For_FORUM_CENTRE_TCHS: ICanSeeForum = (Gbl.Usrs.Me.LoggedRole == Rol_SYS_ADM || - Rol_GetMyMaxRoleInCtr (Gbl.Forum.WhichForum.Location) >= Rol_TEACHER); + Rol_GetMyMaxRoleInCtr (Gbl.Forum.ForumSelected.Location) >= Rol_TEACHER); break; case For_FORUM_INSTIT_USRS: ICanSeeForum = (Gbl.Usrs.Me.LoggedRole == Rol_SYS_ADM || - Rol_GetMyMaxRoleInIns (Gbl.Forum.WhichForum.Location) >= Rol_STUDENT); + Rol_GetMyMaxRoleInIns (Gbl.Forum.ForumSelected.Location) >= Rol_STUDENT); break; case For_FORUM_INSTIT_TCHS: ICanSeeForum = (Gbl.Usrs.Me.LoggedRole == Rol_SYS_ADM || - Rol_GetMyMaxRoleInIns (Gbl.Forum.WhichForum.Location) >= Rol_TEACHER); + Rol_GetMyMaxRoleInIns (Gbl.Forum.ForumSelected.Location) >= Rol_TEACHER); break; case For_FORUM_GLOBAL_USRS: case For_FORUM_SWAD_USRS: @@ -3715,44 +3751,11 @@ static void For_RestrictAccess (void) Lay_ShowErrorAndExit (Txt_You_dont_have_permission_to_access_to_this_forum); } -/*****************************************************************************/ -/************ Write a form parameter to specify a thread code ****************/ -/*****************************************************************************/ - -void For_PutHiddenParamThrCod (long ThrCod) - { - Par_PutHiddenParamLong ("ThrCod",ThrCod); - } - -/*****************************************************************************/ -/************* Write a form parameter to specify a post code *****************/ -/*****************************************************************************/ - -static void For_PutHiddenParamPstCod (long PstCod) - { - Par_PutHiddenParamLong ("PstCod",PstCod); - } - -/*****************************************************************************/ -/********** Get the value of the parameter with the code of a post ***********/ -/*****************************************************************************/ - -static long For_GetParamPstCod (void) - { - long PstCod; - - /***** Get post code *****/ - if ((PstCod = Par_GetParToLong ("PstCod")) <= 0) - Lay_ShowErrorAndExit ("Wrong post code."); - - return PstCod; - } - /*****************************************************************************/ /********************** Show an area to write a message **********************/ /*****************************************************************************/ -static void For_WriteFormForumPst (bool IsReply,long ThrCod,const char *Subject) +static void For_WriteFormForumPst (bool IsReply,const char *Subject) { extern const char *Hlp_SOCIAL_Forums; extern const char *The_ClassForm[The_NUM_THEMES]; @@ -3771,15 +3774,25 @@ static void For_WriteFormForumPst (bool IsReply,long ThrCod,const char *Subject) /***** Start form *****/ if (IsReply) // Form to write a reply to a message of an existing thread { - Act_FormStartAnchor (For_ActionsRecRepFor[Gbl.Forum.WhichForum.Type], + Act_FormStartAnchor (For_ActionsRecRepFor[Gbl.Forum.ForumSelected.Type], For_ID_FORUM_POSTS_SECTION); - For_PutHiddenParamThrCod (ThrCod); Pag_PutHiddenParamPagNum (Pag_POSTS_FORUM,0); + For_PutAllHiddenParamsForum (Gbl.Forum.ForumSet, + Gbl.Forum.SelectedOrder, + Gbl.Forum.ForumSelected.Location, + Gbl.Forum.ForumSelected.ThrCod, + -1L); } else // Form to write the first message of a new thread - Act_FormStartAnchor (For_ActionsRecThrFor[Gbl.Forum.WhichForum.Type], + { + Act_FormStartAnchor (For_ActionsRecThrFor[Gbl.Forum.ForumSelected.Type], For_ID_FORUM_POSTS_SECTION); - For_PutAllHiddenParamsForum (); + For_PutAllHiddenParamsForum (Gbl.Forum.ForumSet, + Gbl.Forum.SelectedOrder, + Gbl.Forum.ForumSelected.Location, + -1L, + -1L); + } /***** Subject and content *****/ // If writing a reply to a message of an existing thread ==> write subject @@ -3841,7 +3854,6 @@ static void For_WriteFormForumPst (bool IsReply,long ThrCod,const char *Subject) void For_RecForumPst (void) { extern const char *Txt_Post_sent; - extern const char *Txt_Do_not_reload_this_page_because_the_post_will_be_sent_again_; bool PstIsAReply = false; long PstCod = 0; unsigned NumUsrsToBeNotifiedByEMail; @@ -3883,26 +3895,26 @@ void For_RecForumPst (void) /***** Create a new message *****/ if (PstIsAReply) // This post is a reply to another posts in the thread { - // Gbl.Forum.WhichForum.ThrCod has been received from form + // Gbl.Forum.ForumSelected.ThrCod has been received from form /***** Create last message of the thread *****/ - PstCod = For_InsertForumPst (Gbl.Forum.WhichForum.ThrCod,Gbl.Usrs.Me.UsrDat.UsrCod, + PstCod = For_InsertForumPst (Gbl.Forum.ForumSelected.ThrCod,Gbl.Usrs.Me.UsrDat.UsrCod, Gbl.Msg.Subject,Content,&Image); /***** Modify last message of the thread *****/ - For_UpdateThrLastPst (Gbl.Forum.WhichForum.ThrCod,PstCod); + For_UpdateThrLastPst (Gbl.Forum.ForumSelected.ThrCod,PstCod); } else // This post is the first of a new thread { /***** Create new thread with unknown first and last message codes *****/ - Gbl.Forum.WhichForum.ThrCod = For_InsertForumThread (&Gbl.Forum.WhichForum,-1L); + Gbl.Forum.ForumSelected.ThrCod = For_InsertForumThread (&Gbl.Forum.ForumSelected,-1L); /***** Create first (and last) message of the thread *****/ - PstCod = For_InsertForumPst (Gbl.Forum.WhichForum.ThrCod,Gbl.Usrs.Me.UsrDat.UsrCod, + PstCod = For_InsertForumPst (Gbl.Forum.ForumSelected.ThrCod,Gbl.Usrs.Me.UsrDat.UsrCod, Gbl.Msg.Subject,Content,&Image); /***** Update first and last posts of new thread *****/ - For_UpdateThrFirstAndLastPst (Gbl.Forum.WhichForum.ThrCod,PstCod,PstCod); + For_UpdateThrFirstAndLastPst (Gbl.Forum.ForumSelected.ThrCod,PstCod,PstCod); } /***** Free image *****/ @@ -3913,10 +3925,9 @@ void For_RecForumPst (void) /***** Write message of success *****/ Lay_ShowAlert (Lay_SUCCESS,Txt_Post_sent); - Lay_ShowAlert (Lay_INFO,Txt_Do_not_reload_this_page_because_the_post_will_be_sent_again_); /***** Notify the new post to users in course *****/ - switch (Gbl.Forum.WhichForum.Type) + switch (Gbl.Forum.ForumSelected.Type) { case For_FORUM_COURSE_USRS: case For_FORUM_COURSE_TCHS: @@ -3937,7 +3948,7 @@ void For_RecForumPst (void) } /***** Insert forum post into public social activity *****/ - switch (Gbl.Forum.WhichForum.Type) // Only if forum is public for any logged user + switch (Gbl.Forum.ForumSelected.Type) // Only if forum is public for any logged user { case For_FORUM_GLOBAL_USRS: case For_FORUM_SWAD_USRS: @@ -3974,7 +3985,6 @@ void For_DelPst (void) { extern const char *Txt_Post_and_thread_removed; extern const char *Txt_Post_removed; - long PstCod; struct UsrData UsrDat; time_t CreatTimeUTC; // Creation time of a message char Subject[Cns_MAX_BYTES_SUBJECT + 1]; @@ -3985,19 +3995,16 @@ void For_DelPst (void) /***** Get parameters related to forum *****/ For_GetParamsForum (); - /***** Get the code of the post to remove *****/ - PstCod = For_GetParamPstCod (); - /***** Initialize image *****/ Img_ImageConstructor (&Image); /***** Get forum post data *****/ - For_GetPstData (PstCod,&UsrDat.UsrCod,&CreatTimeUTC, + For_GetPstData (Gbl.Forum.ForumSelected.PstCod,&UsrDat.UsrCod,&CreatTimeUTC, Subject,OriginalContent,&Image); /***** Check if I can remove the post *****/ /* Check if the message really exists, if it has not been removed */ - if (!For_GetIfForumPstExists (PstCod)) + if (!For_GetIfForumPstExists (Gbl.Forum.ForumSelected.PstCod)) Lay_ShowErrorAndExit ("The post to remove no longer exists."); /* Check if I am the author of the message */ @@ -4005,25 +4012,25 @@ void For_DelPst (void) Lay_ShowErrorAndExit ("You can not remove post because you aren't the author."); /* Check if the message is the last message in the thread */ - if (PstCod != For_GetLastPstCod (Gbl.Forum.WhichForum.ThrCod)) + if (Gbl.Forum.ForumSelected.PstCod != For_GetLastPstCod (Gbl.Forum.ForumSelected.ThrCod)) Lay_ShowErrorAndExit ("You can not remove post because it is not the last of the thread."); /***** Remove the post *****/ - ThreadDeleted = For_RemoveForumPst (PstCod,&Image); + ThreadDeleted = For_RemoveForumPst (Gbl.Forum.ForumSelected.PstCod,&Image); /***** Free image *****/ Img_ImageDestructor (&Image); /***** Mark possible notifications as removed *****/ - Ntf_MarkNotifAsRemoved (Ntf_EVENT_FORUM_POST_COURSE,PstCod); - Ntf_MarkNotifAsRemoved (Ntf_EVENT_FORUM_REPLY,PstCod); + Ntf_MarkNotifAsRemoved (Ntf_EVENT_FORUM_POST_COURSE,Gbl.Forum.ForumSelected.PstCod); + Ntf_MarkNotifAsRemoved (Ntf_EVENT_FORUM_REPLY,Gbl.Forum.ForumSelected.PstCod); /***** Mark possible social note as unavailable *****/ - switch (Gbl.Forum.WhichForum.Type) // Only if forum is public for any logged user + switch (Gbl.Forum.ForumSelected.Type) // Only if forum is public for any logged user { case For_FORUM_GLOBAL_USRS: case For_FORUM_SWAD_USRS: - Soc_MarkSocialNoteAsUnavailableUsingNoteTypeAndCod (Soc_NOTE_FORUM_POST,PstCod); + Soc_MarkSocialNoteAsUnavailableUsingNoteTypeAndCod (Soc_NOTE_FORUM_POST,Gbl.Forum.ForumSelected.PstCod); break; default: break; @@ -4034,7 +4041,7 @@ void For_DelPst (void) Lay_ShowAlert (Lay_SUCCESS,Txt_Post_and_thread_removed); /* Show the remaining threads */ - For_ShowForumThreadsHighlightingOneThread (Gbl.Forum.WhichForum.ThrCod); + For_ShowForumThreadsHighlightingOneThread (Gbl.Forum.ForumSelected.ThrCod); } else { @@ -4046,7 +4053,7 @@ void For_DelPst (void) } /*****************************************************************************/ -/**************** Solicitar the eliminación of a existing thread **************/ +/***************** Request the removing of an existing thread ****************/ /*****************************************************************************/ void For_ReqDelThr (void) @@ -4060,7 +4067,7 @@ void For_ReqDelThr (void) For_GetParamsForum (); /***** Get subject of thread to delete *****/ - For_GetThrSubject (Gbl.Forum.WhichForum.ThrCod,Subject); + For_GetThrSubject (Gbl.Forum.ForumSelected.ThrCod,Subject); /***** Request confirmation to remove the thread *****/ if (Subject[0]) @@ -4070,9 +4077,12 @@ void For_ReqDelThr (void) sprintf (Gbl.Message,"%s",Txt_Do_you_really_want_to_remove_the_entire_thread); Lay_ShowAlert (Lay_WARNING,Gbl.Message); - Act_FormStart (For_ActionsDelThrFor[Gbl.Forum.WhichForum.Type]); - For_PutAllHiddenParamsForum (); - For_PutHiddenParamThrCod (Gbl.Forum.WhichForum.ThrCod); + Act_FormStart (For_ActionsDelThrFor[Gbl.Forum.ForumSelected.Type]); + For_PutAllHiddenParamsForum (Gbl.Forum.ForumSet, + Gbl.Forum.SelectedOrder, + Gbl.Forum.ForumSelected.Location, + Gbl.Forum.ForumSelected.ThrCod, + -1L); Lay_PutRemoveButton (Txt_Remove_thread); Act_FormEnd (); } @@ -4090,14 +4100,14 @@ void For_DelThr (void) /***** Get parameters related to forum *****/ For_GetParamsForum (); - if (PermissionThreadDeletion[Gbl.Forum.WhichForum.Type] & + if (PermissionThreadDeletion[Gbl.Forum.ForumSelected.Type] & (1 << Gbl.Usrs.Me.LoggedRole)) // If I have permission to remove thread in this forum... { /***** Get subject of thread to delete *****/ - For_GetThrSubject (Gbl.Forum.WhichForum.ThrCod,Subject); + For_GetThrSubject (Gbl.Forum.ForumSelected.ThrCod,Subject); /***** Remove the thread and all its posts *****/ - For_RemoveThreadAndItsPsts (Gbl.Forum.WhichForum.ThrCod); + For_RemoveThreadAndItsPsts (Gbl.Forum.ForumSelected.ThrCod); /***** Write message confirming the deletion *****/ if (Subject[0]) @@ -4113,7 +4123,7 @@ void For_DelThr (void) Lay_ShowErrorAndExit ("You can not remove threads in this forum."); /***** Show the threads again *****/ - For_ShowForumThreadsHighlightingOneThread (Gbl.Forum.WhichForum.ThrCod); + For_ShowForumThreadsHighlightingOneThread (Gbl.Forum.ForumSelected.ThrCod); } /*****************************************************************************/ @@ -4130,10 +4140,10 @@ void For_CutThr (void) For_GetParamsForum (); /***** Get subject of thread to cut *****/ - For_GetThrSubject (Gbl.Forum.WhichForum.ThrCod,Subject); + For_GetThrSubject (Gbl.Forum.ForumSelected.ThrCod,Subject); /***** Mark the thread as cut *****/ - For_InsertThrInClipboard (Gbl.Forum.WhichForum.ThrCod); + For_InsertThrInClipboard (Gbl.Forum.ForumSelected.ThrCod); /***** Write message confirming that thread has been marked to move it *****/ if (Subject[0]) @@ -4144,7 +4154,7 @@ void For_CutThr (void) Lay_ShowAlert (Lay_SUCCESS,Gbl.Message); /***** Show the threads again *****/ - For_ShowForumThreadsHighlightingOneThread (Gbl.Forum.WhichForum.ThrCod); + For_ShowForumThreadsHighlightingOneThread (Gbl.Forum.ForumSelected.ThrCod); } /*****************************************************************************/ @@ -4163,10 +4173,10 @@ void For_PasteThr (void) For_GetParamsForum (); /***** Get subject of thread to paste *****/ - For_GetThrSubject (Gbl.Forum.WhichForum.ThrCod,Subject); + For_GetThrSubject (Gbl.Forum.ForumSelected.ThrCod,Subject); /***** Paste (move) the thread to current forum *****/ - if (For_CheckIfThrBelongsToForum (Gbl.Forum.WhichForum.ThrCod,&Gbl.Forum.WhichForum)) + if (For_CheckIfThrBelongsToForum (Gbl.Forum.ForumSelected.ThrCod,&Gbl.Forum.ForumSelected)) { if (Subject[0]) sprintf (Gbl.Message,Txt_The_thread_X_is_already_in_this_forum, @@ -4177,7 +4187,7 @@ void For_PasteThr (void) } else { - For_MoveThrToCurrentForum (Gbl.Forum.WhichForum.ThrCod); + For_MoveThrToCurrentForum (Gbl.Forum.ForumSelected.ThrCod); if (Subject[0]) sprintf (Gbl.Message,Txt_Thread_X_moved_to_this_forum, Subject); @@ -4187,7 +4197,7 @@ void For_PasteThr (void) } /***** Show the threads again *****/ - For_ShowForumThreadsHighlightingOneThread (Gbl.Forum.WhichForum.ThrCod); + For_ShowForumThreadsHighlightingOneThread (Gbl.Forum.ForumSelected.ThrCod); } /*****************************************************************************/ @@ -4225,19 +4235,19 @@ static long For_GetThrInMyClipboard (void) /***************** Get if a thread belongs to current forum ******************/ /*****************************************************************************/ -static bool For_CheckIfThrBelongsToForum (long ThrCod,struct Forum *WhichForum) +static bool For_CheckIfThrBelongsToForum (long ThrCod,struct Forum *ForumSelected) { char SubQuery[256]; char Query[512]; /***** Get if a thread belong to current forum from database *****/ - if (WhichForum->Location > 0) - sprintf (SubQuery," AND forum_thread.Location=%ld",WhichForum->Location); + if (ForumSelected->Location > 0) + sprintf (SubQuery," AND forum_thread.Location=%ld",ForumSelected->Location); else SubQuery[0] = '\0'; sprintf (Query,"SELECT COUNT(*) FROM forum_thread" " WHERE ThrCod=%ld AND ForumType=%u%s", - ThrCod,(unsigned) WhichForum->Type,SubQuery); + ThrCod,(unsigned) ForumSelected->Type,SubQuery); return (DB_QueryCOUNT (Query,"can not get if a thread belong to current forum") != 0); } @@ -4250,7 +4260,7 @@ static void For_MoveThrToCurrentForum (long ThrCod) char Query[512]; /***** Move a thread to current forum *****/ - switch (Gbl.Forum.WhichForum.Type) + switch (Gbl.Forum.ForumSelected.Type) { case For_FORUM_SWAD_USRS: case For_FORUM_SWAD_TCHS: @@ -4259,7 +4269,7 @@ static void For_MoveThrToCurrentForum (long ThrCod) sprintf (Query,"UPDATE forum_thread" " SET ForumType=%u,Location=-1" " WHERE ThrCod=%ld", - (unsigned) Gbl.Forum.WhichForum.Type, + (unsigned) Gbl.Forum.ForumSelected.Type, ThrCod); break; case For_FORUM_INSTIT_USRS: @@ -4267,8 +4277,8 @@ static void For_MoveThrToCurrentForum (long ThrCod) sprintf (Query,"UPDATE forum_thread" " SET ForumType=%u,Location=%ld" " WHERE ThrCod=%ld", - (unsigned) Gbl.Forum.WhichForum.Type, - Gbl.Forum.WhichForum.Location, + (unsigned) Gbl.Forum.ForumSelected.Type, + Gbl.Forum.ForumSelected.Location, ThrCod); break; case For_FORUM_CENTRE_USRS: @@ -4276,8 +4286,8 @@ static void For_MoveThrToCurrentForum (long ThrCod) sprintf (Query,"UPDATE forum_thread" " SET ForumType=%u,Location=%ld" " WHERE ThrCod=%ld", - (unsigned) Gbl.Forum.WhichForum.Type, - Gbl.Forum.WhichForum.Location, + (unsigned) Gbl.Forum.ForumSelected.Type, + Gbl.Forum.ForumSelected.Location, ThrCod); break; case For_FORUM_DEGREE_USRS: @@ -4285,8 +4295,8 @@ static void For_MoveThrToCurrentForum (long ThrCod) sprintf (Query,"UPDATE forum_thread" " SET ForumType=%u,Location=%ld" " WHERE ThrCod=%ld", - (unsigned) Gbl.Forum.WhichForum.Type, - Gbl.Forum.WhichForum.Location, + (unsigned) Gbl.Forum.ForumSelected.Type, + Gbl.Forum.ForumSelected.Location, ThrCod); break; case For_FORUM_COURSE_USRS: @@ -4294,8 +4304,8 @@ static void For_MoveThrToCurrentForum (long ThrCod) sprintf (Query,"UPDATE forum_thread" " SET ForumType=%u,Location=%ld" " WHERE ThrCod=%ld", - (unsigned) Gbl.Forum.WhichForum.Type, - Gbl.Forum.WhichForum.Location, + (unsigned) Gbl.Forum.ForumSelected.Type, + Gbl.Forum.ForumSelected.Location, ThrCod); break; } diff --git a/swad_forum.h b/swad_forum.h index 36823873..9cabf1e5 100644 --- a/swad_forum.h +++ b/swad_forum.h @@ -69,6 +69,7 @@ struct Forum For_ForumType_t Type; // Type of forum long Location; // Code of institution, centre, degree or course long ThrCod; // Optional thread code + long PstCod; // Optional post code }; struct ForumThread @@ -103,7 +104,7 @@ typedef enum void For_EnbPst (void); void For_DisPst (void); -void For_GetForumTypeAndLocationOfAPost (long PstCod,struct Forum *WhichForum); +void For_GetForumTypeAndLocationOfAPost (long PstCod,struct Forum *ForumSelected); unsigned long For_GetNumPostsUsr (long UsrCod); void For_RemoveUsrFromReadThrs (long UsrCod); @@ -112,9 +113,13 @@ void For_GetSummaryAndContentForumPst (char SummaryStr[Ntf_MAX_BYTES_SUMMARY + 1 char **ContentStr, long PstCod,bool GetContent); -void For_PutAllHiddenParamsForum (void); +void For_PutAllHiddenParamsForum (For_ForumSet_t ForumSet, + For_Order_t Order, + long Location, + long ThrCod, + long PstCod); -void For_SetForumName (struct Forum *WhichForum, +void For_SetForumName (struct Forum *ForumSelected, char ForumName[For_MAX_BYTES_FORUM_NAME + 1], Txt_Language_t Language,bool UseHTMLEntities); @@ -128,7 +133,6 @@ unsigned For_GetNumTotalPstsInForumsOfType (For_ForumType_t ForumType, unsigned *NumUsrsToBeNotifiedByEMail); void For_ShowThrPsts (void); -void For_PutHiddenParamThrCod (long ThrCod); void For_RecForumPst (void); void For_DelPst (void); void For_ReqDelThr (void); diff --git a/swad_global.c b/swad_global.c index caf55798..f608845d 100644 --- a/swad_global.c +++ b/swad_global.c @@ -407,9 +407,9 @@ void Gbl_InitializeGlobals (void) /* Forums */ Gbl.Forum.ForumSet = For_DEFAULT_FORUM_SET; - Gbl.Forum.WhichForum.Type = (For_ForumType_t) 0; - Gbl.Forum.WhichForum.Location = -1L; - Gbl.Forum.WhichForum.ThrCod = -1L; + Gbl.Forum.ForumSelected.Type = (For_ForumType_t) 0; + Gbl.Forum.ForumSelected.Location = -1L; + Gbl.Forum.ForumSelected.ThrCod = -1L; Gbl.Forum.SelectedOrder = For_DEFAULT_ORDER; Gbl.Forum.ThreadToMove = -1L; // Gbl.Forum.CurrentPageThrs = 1; // TODO: Remove this line diff --git a/swad_global.h b/swad_global.h index eeb0a878..03f2b912 100644 --- a/swad_global.h +++ b/swad_global.h @@ -582,7 +582,7 @@ struct Globals struct { For_ForumSet_t ForumSet; - struct Forum WhichForum; // Forum type and location + struct Forum ForumSelected; // Forum type, location, thread and post int Level; For_Order_t SelectedOrder; char PathRelOld[PATH_MAX + 1]; diff --git a/swad_notification.c b/swad_notification.c index c9b0cb7a..d5acde46 100644 --- a/swad_notification.c +++ b/swad_notification.c @@ -450,8 +450,8 @@ void Ntf_ShowMyNotifications (void) if (NotifyEvent == Ntf_EVENT_FORUM_POST_COURSE || NotifyEvent == Ntf_EVENT_FORUM_REPLY) { - For_GetForumTypeAndLocationOfAPost (Cod,&Gbl.Forum.WhichForum); - For_SetForumName (&Gbl.Forum.WhichForum, + For_GetForumTypeAndLocationOfAPost (Cod,&Gbl.Forum.ForumSelected); + For_SetForumName (&Gbl.Forum.ForumSelected, ForumName,Gbl.Prefs.Language,false); // Set forum name in recipient's language } @@ -763,8 +763,12 @@ static bool Ntf_StartFormGoToAction (Ntf_NotifyEvent_t NotifyEvent, break; case Ntf_EVENT_FORUM_POST_COURSE: case Ntf_EVENT_FORUM_REPLY: - Act_FormStart (For_ActionsSeeFor[Gbl.Forum.WhichForum.Type]); - For_PutAllHiddenParamsForum (); + Act_FormStart (For_ActionsSeeFor[Gbl.Forum.ForumSelected.Type]); + For_PutAllHiddenParamsForum (Gbl.Forum.ForumSet, + Gbl.Forum.SelectedOrder, + Gbl.Forum.ForumSelected.Location, + Gbl.Forum.ForumSelected.ThrCod, + -1L); break; case Ntf_EVENT_NOTICE: Act_FormStart (ActSeeOneNot); @@ -1170,7 +1174,7 @@ unsigned Ntf_StoreNotifyEventsToAllUsrs (Ntf_NotifyEvent_t NotifyEvent,long Cod) unsigned long NumRow; unsigned long NumRows; struct UsrData UsrDat; - struct Forum WhichForum; + struct Forum ForumSelected; unsigned NumUsrsToBeNotifiedByEMail = 0; unsigned NotifyEventMask = (1 << NotifyEvent); @@ -1301,8 +1305,8 @@ unsigned Ntf_StoreNotifyEventsToAllUsrs (Ntf_NotifyEvent_t NotifyEvent,long Cod) return 0; case Ntf_EVENT_FORUM_POST_COURSE: // Check if forum is for users or for all users in the course - For_GetForumTypeAndLocationOfAPost (Cod,&WhichForum); - switch (WhichForum.Type) + For_GetForumTypeAndLocationOfAPost (Cod,&ForumSelected); + switch (ForumSelected.Type) { case For_FORUM_COURSE_USRS: sprintf (Query,"SELECT UsrCod FROM crs_usr" @@ -1420,23 +1424,23 @@ void Ntf_StoreNotifyEventToOneUser (Ntf_NotifyEvent_t NotifyEvent, NotifyEvent == Ntf_EVENT_FORUM_REPLY) { InsCod = CtrCod = DegCod = CrsCod = -1L; - switch (Gbl.Forum.WhichForum.Type) + switch (Gbl.Forum.ForumSelected.Type) { case For_FORUM_INSTIT_USRS: case For_FORUM_INSTIT_TCHS: - InsCod = Gbl.Forum.WhichForum.Location; + InsCod = Gbl.Forum.ForumSelected.Location; break; case For_FORUM_CENTRE_USRS: case For_FORUM_CENTRE_TCHS: - CtrCod = Gbl.Forum.WhichForum.Location; + CtrCod = Gbl.Forum.ForumSelected.Location; break; case For_FORUM_DEGREE_USRS: case For_FORUM_DEGREE_TCHS: - DegCod = Gbl.Forum.WhichForum.Location; + DegCod = Gbl.Forum.ForumSelected.Location; break; case For_FORUM_COURSE_USRS: case For_FORUM_COURSE_TCHS: - CrsCod = Gbl.Forum.WhichForum.Location; + CrsCod = Gbl.Forum.ForumSelected.Location; break; default: break; @@ -1571,7 +1575,7 @@ static void Ntf_SendPendingNotifByEMailToOneUsr (struct UsrData *ToUsrDat,unsign struct Degree Deg; struct Course Crs; long Cod; - struct Forum WhichForum; + struct Forum ForumSelected; char ForumName[For_MAX_BYTES_FORUM_NAME + 1]; char Command[2048]; // Command to execute for sending an email int ReturnCode; @@ -1650,7 +1654,7 @@ static void Ntf_SendPendingNotifByEMailToOneUsr (struct UsrData *ToUsrDat,unsign /* Get forum type */ if (NotifyEvent == Ntf_EVENT_FORUM_POST_COURSE || NotifyEvent == Ntf_EVENT_FORUM_REPLY) - For_GetForumTypeAndLocationOfAPost (Cod,&WhichForum); + For_GetForumTypeAndLocationOfAPost (Cod,&ForumSelected); /* Information about the type of this event */ fprintf (Gbl.Msg.FileMail,Txt_NOTIFY_EVENTS_SINGULAR_NO_HTML[NotifyEvent][ToUsrLanguage], @@ -1686,7 +1690,7 @@ static void Ntf_SendPendingNotifByEMailToOneUsr (struct UsrData *ToUsrDat,unsign break; case Ntf_EVENT_FORUM_POST_COURSE: case Ntf_EVENT_FORUM_REPLY: - For_SetForumName (&WhichForum, + For_SetForumName (&ForumSelected, ForumName,ToUsrLanguage,false); // Set forum name in recipient's language fprintf (Gbl.Msg.FileMail,"%s: %s\n", Txt_Forum_NO_HTML[ToUsrLanguage], diff --git a/swad_pagination.c b/swad_pagination.c index 74f14dcb..57c906f1 100644 --- a/swad_pagination.c +++ b/swad_pagination.c @@ -160,17 +160,24 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate, Grp_PutParamWhichGrps (); break; case Pag_THREADS_FORUM: - Act_FormStartAnchor (For_ActionsSeeFor[Gbl.Forum.WhichForum.Type], + Act_FormStartAnchor (For_ActionsSeeFor[Gbl.Forum.ForumSelected.Type], Pagination->Anchor); Pag_PutHiddenParamPagNum (WhatPaginate,1); - For_PutAllHiddenParamsForum (); + For_PutAllHiddenParamsForum (Gbl.Forum.ForumSet, + Gbl.Forum.SelectedOrder, + Gbl.Forum.ForumSelected.Location, + -1L, + -1L); break; case Pag_POSTS_FORUM: - Act_FormStartAnchor (For_ActionsSeePstFor[Gbl.Forum.WhichForum.Type], + Act_FormStartAnchor (For_ActionsSeePstFor[Gbl.Forum.ForumSelected.Type], Pagination->Anchor); Pag_PutHiddenParamPagNum (WhatPaginate,1); - For_PutHiddenParamThrCod (ThrCod); - For_PutAllHiddenParamsForum (); + For_PutAllHiddenParamsForum (Gbl.Forum.ForumSet, + Gbl.Forum.SelectedOrder, + Gbl.Forum.ForumSelected.Location, + ThrCod, + -1L); break; case Pag_MESSAGES_RECEIVED: Act_FormStartAnchor (ActSeeRcvMsg,Pagination->Anchor); @@ -253,17 +260,24 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate, Grp_PutParamWhichGrps (); break; case Pag_THREADS_FORUM: - Act_FormStartAnchor (For_ActionsSeeFor[Gbl.Forum.WhichForum.Type], + Act_FormStartAnchor (For_ActionsSeeFor[Gbl.Forum.ForumSelected.Type], Pagination->Anchor); Pag_PutHiddenParamPagNum (WhatPaginate,1); - For_PutAllHiddenParamsForum (); - break; + For_PutAllHiddenParamsForum (Gbl.Forum.ForumSet, + Gbl.Forum.SelectedOrder, + Gbl.Forum.ForumSelected.Location, + -1L, + -1L); + break; case Pag_POSTS_FORUM: - Act_FormStartAnchor (For_ActionsSeePstFor[Gbl.Forum.WhichForum.Type], + Act_FormStartAnchor (For_ActionsSeePstFor[Gbl.Forum.ForumSelected.Type], Pagination->Anchor); Pag_PutHiddenParamPagNum (WhatPaginate,1); - For_PutHiddenParamThrCod (ThrCod); - For_PutAllHiddenParamsForum (); + For_PutAllHiddenParamsForum (Gbl.Forum.ForumSet, + Gbl.Forum.SelectedOrder, + Gbl.Forum.ForumSelected.Location, + ThrCod, + -1L); break; case Pag_MESSAGES_RECEIVED: Act_FormStartAnchor (ActSeeRcvMsg,Pagination->Anchor); @@ -329,17 +343,24 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate, Grp_PutParamWhichGrps (); break; case Pag_THREADS_FORUM: - Act_FormStartAnchor (For_ActionsSeeFor[Gbl.Forum.WhichForum.Type], + Act_FormStartAnchor (For_ActionsSeeFor[Gbl.Forum.ForumSelected.Type], Pagination->Anchor); Pag_PutHiddenParamPagNum (WhatPaginate,Pagination->LeftPage); - For_PutAllHiddenParamsForum (); + For_PutAllHiddenParamsForum (Gbl.Forum.ForumSet, + Gbl.Forum.SelectedOrder, + Gbl.Forum.ForumSelected.Location, + -1L, + -1L); break; case Pag_POSTS_FORUM: - Act_FormStartAnchor (For_ActionsSeePstFor[Gbl.Forum.WhichForum.Type], + Act_FormStartAnchor (For_ActionsSeePstFor[Gbl.Forum.ForumSelected.Type], Pagination->Anchor); Pag_PutHiddenParamPagNum (WhatPaginate,Pagination->LeftPage); - For_PutHiddenParamThrCod (ThrCod); - For_PutAllHiddenParamsForum (); + For_PutAllHiddenParamsForum (Gbl.Forum.ForumSet, + Gbl.Forum.SelectedOrder, + Gbl.Forum.ForumSelected.Location, + ThrCod, + -1L); break; case Pag_MESSAGES_RECEIVED: Act_FormStartAnchor (ActSeeRcvMsg,Pagination->Anchor); @@ -412,17 +433,24 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate, Grp_PutParamWhichGrps (); break; case Pag_THREADS_FORUM: - Act_FormStartAnchor (For_ActionsSeeFor[Gbl.Forum.WhichForum.Type], + Act_FormStartAnchor (For_ActionsSeeFor[Gbl.Forum.ForumSelected.Type], Pagination->Anchor); Pag_PutHiddenParamPagNum (WhatPaginate,NumPage); - For_PutAllHiddenParamsForum (); + For_PutAllHiddenParamsForum (Gbl.Forum.ForumSet, + Gbl.Forum.SelectedOrder, + Gbl.Forum.ForumSelected.Location, + -1L, + -1L); break; case Pag_POSTS_FORUM: - Act_FormStartAnchor (For_ActionsSeePstFor[Gbl.Forum.WhichForum.Type], + Act_FormStartAnchor (For_ActionsSeePstFor[Gbl.Forum.ForumSelected.Type], Pagination->Anchor); Pag_PutHiddenParamPagNum (WhatPaginate,NumPage); - For_PutHiddenParamThrCod (ThrCod); - For_PutAllHiddenParamsForum (); + For_PutAllHiddenParamsForum (Gbl.Forum.ForumSet, + Gbl.Forum.SelectedOrder, + Gbl.Forum.ForumSelected.Location, + ThrCod, + -1L); break; case Pag_MESSAGES_RECEIVED: Act_FormStartAnchor (ActSeeRcvMsg,Pagination->Anchor); @@ -491,17 +519,24 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate, Grp_PutParamWhichGrps (); break; case Pag_THREADS_FORUM: - Act_FormStartAnchor (For_ActionsSeeFor[Gbl.Forum.WhichForum.Type], + Act_FormStartAnchor (For_ActionsSeeFor[Gbl.Forum.ForumSelected.Type], Pagination->Anchor); Pag_PutHiddenParamPagNum (WhatPaginate,Pagination->RightPage); - For_PutAllHiddenParamsForum (); - break; + For_PutAllHiddenParamsForum (Gbl.Forum.ForumSet, + Gbl.Forum.SelectedOrder, + Gbl.Forum.ForumSelected.Location, + -1L, + -1L); + break; case Pag_POSTS_FORUM: - Act_FormStartAnchor (For_ActionsSeePstFor[Gbl.Forum.WhichForum.Type], + Act_FormStartAnchor (For_ActionsSeePstFor[Gbl.Forum.ForumSelected.Type], Pagination->Anchor); Pag_PutHiddenParamPagNum (WhatPaginate,Pagination->RightPage); - For_PutHiddenParamThrCod (ThrCod); - For_PutAllHiddenParamsForum (); + For_PutAllHiddenParamsForum (Gbl.Forum.ForumSet, + Gbl.Forum.SelectedOrder, + Gbl.Forum.ForumSelected.Location, + ThrCod, + -1L); break; case Pag_MESSAGES_RECEIVED: Act_FormStartAnchor (ActSeeRcvMsg,Pagination->Anchor); @@ -567,17 +602,24 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate, Grp_PutParamWhichGrps (); break; case Pag_THREADS_FORUM: - Act_FormStartAnchor (For_ActionsSeeFor[Gbl.Forum.WhichForum.Type], + Act_FormStartAnchor (For_ActionsSeeFor[Gbl.Forum.ForumSelected.Type], Pagination->Anchor); Pag_PutHiddenParamPagNum (WhatPaginate,Pagination->NumPags); - For_PutAllHiddenParamsForum (); + For_PutAllHiddenParamsForum (Gbl.Forum.ForumSet, + Gbl.Forum.SelectedOrder, + Gbl.Forum.ForumSelected.Location, + -1L, + -1L); break; case Pag_POSTS_FORUM: - Act_FormStartAnchor (For_ActionsSeePstFor[Gbl.Forum.WhichForum.Type], + Act_FormStartAnchor (For_ActionsSeePstFor[Gbl.Forum.ForumSelected.Type], Pagination->Anchor); Pag_PutHiddenParamPagNum (WhatPaginate,Pagination->NumPags); - For_PutHiddenParamThrCod (ThrCod); - For_PutAllHiddenParamsForum (); + For_PutAllHiddenParamsForum (Gbl.Forum.ForumSet, + Gbl.Forum.SelectedOrder, + Gbl.Forum.ForumSelected.Location, + ThrCod, + -1L); break; case Pag_MESSAGES_RECEIVED: Act_FormStartAnchor (ActSeeRcvMsg,Pagination->Anchor); diff --git a/swad_social.c b/swad_social.c index 49cec38c..4273e381 100644 --- a/swad_social.c +++ b/swad_social.c @@ -1375,8 +1375,8 @@ static void Soc_WriteSocialNote (const struct SocialNote *SocNot, break; case Soc_NOTE_FORUM_POST: /* Get forum type of the post */ - For_GetForumTypeAndLocationOfAPost (SocNot->Cod,&Gbl.Forum.WhichForum); - For_SetForumName (&Gbl.Forum.WhichForum, + For_GetForumTypeAndLocationOfAPost (SocNot->Cod,&Gbl.Forum.ForumSelected); + For_SetForumName (&Gbl.Forum.ForumSelected, ForumName,Gbl.Prefs.Language,false); // Set forum name in recipient's language break; default: @@ -1825,8 +1825,12 @@ static void Soc_PutFormGoToAction (const struct SocialNote *SocNot) case Soc_NOTE_SOCIAL_POST: // Not applicable return; case Soc_NOTE_FORUM_POST: - Act_FormStartUnique (For_ActionsSeeFor[Gbl.Forum.WhichForum.Type]); - For_PutAllHiddenParamsForum (); + Act_FormStartUnique (For_ActionsSeeFor[Gbl.Forum.ForumSelected.Type]); + For_PutAllHiddenParamsForum (Gbl.Forum.ForumSet, + Gbl.Forum.SelectedOrder, + Gbl.Forum.ForumSelected.Location, + Gbl.Forum.ForumSelected.ThrCod, + -1L); if (SocNot->HieCod != Gbl.CurrentCrs.Crs.CrsCod) // Not the current course Crs_PutParamCrsCod (SocNot->HieCod); // Go to another course break; diff --git a/swad_text.c b/swad_text.c index dec115d4..dbf12dfc 100644 --- a/swad_text.c +++ b/swad_text.c @@ -751,12 +751,12 @@ const char *Txt_NOTIFY_EVENTS_SINGULAR_NO_HTML[Ntf_NUM_NOTIFY_EVENTS][1 + Txt_NU { // Ntf_EVENT_FORUM_POST_COURSE "", - "Novo missatge en un fòrum", + "Novo comentari en un fòrum", "Neue Nachricht in einem Forum", "New post in a forum", - "Nuevo mensaje en un foro", - "Nouveau message dans un forum", - "Nuevo mensaje en un foro", // Okoteve traducción + "Nuevo comentario en un foro", + "Nouveau post dans un forum", + "Nuevo comentario en un foro", // Okoteve traducción "Nuovo post in un forum", "Nowy post na forum", "Novo post em um fórum", @@ -8547,27 +8547,6 @@ const char *Txt_Do_not_reload_this_page_because_the_message_will_be_sent_again_ "Do not reload this page because the message would be sent again and would arrive repeated."; // Necessita de tradução #endif -const char *Txt_Do_not_reload_this_page_because_the_post_will_be_sent_again_ = -#if L==1 - "No recargue esta página, pues el mensaje se enviaría de nuevo y llegaría repetido."; // Necessita traduccio -#elif L==2 - "Do not reload this page because the post would be sent again and would arrive repeated."; // Need Übersetzung -#elif L==3 - "Do not reload this page because the post would be sent again and would arrive repeated."; -#elif L==4 - "No recargue esta página, pues el mensaje se enviaría de nuevo y llegaría repetido."; -#elif L==5 - "Do not reload this page because the post would be sent again and would arrive repeated."; // Besoin de traduction -#elif L==6 - "No recargue esta página, pues el mensaje se enviaría de nuevo y llegaría repetido."; // Okoteve traducción -#elif L==7 - "Non ricaricare questa pagina perchè il post sarà nuovamente inviato."; -#elif L==8 - "Nie przeladuj strone, poniewaz post zostanie wyslany ponownie przyjedzie powtarzane."; -#elif L==9 - "Do not reload this page because the post would be sent again and would arrive repeated."; // Necessita de tradução -#endif - const char *Txt_Do_not_show_again = #if L==1 "No mostrar de nou"; @@ -9212,17 +9191,17 @@ const char *Txt_Do_you_really_want_to_remove_the_following_comment = const char *Txt_Do_you_really_want_to_remove_the_following_post = #if L==1 - "De veres voleu eliminar el següent missatge?"; + "De veres voleu eliminar el següent comentari?"; #elif L==2 "Wollen Sie wirklich, um die folgende Beitrag zu entfernen?"; #elif L==3 "Do you really want to remove the following post?"; #elif L==4 - "¿Realmente desea eliminar el siguiente mensaje?"; + "¿Realmente desea eliminar el siguiente comentario?"; #elif L==5 - "Voulez-vous vraiment supprimer le message suivant?"; + "Voulez-vous vraiment supprimer le post suivant?"; #elif L==6 - "¿Realmente desea eliminar el siguiente mensaje?"; // Okoteve traducción + "¿Realmente desea eliminar el siguiente comentario?"; // Okoteve traducción #elif L==7 "Vuoi realmente rimuovere il seguente post?"; #elif L==8 @@ -13316,17 +13295,17 @@ const char *Txt_Forum = const char *Txt_Forum_posts = #if L==1 - "Mensajes en foros"; // Necessita traduccio + "Comentarios en foros"; // Necessita traduccio #elif L==2 "Forum-Beiträge"; #elif L==3 "Forum posts"; #elif L==4 - "Mensajes en foros"; + "Comentarios en foros"; #elif L==5 - "Messages de forum"; + "Posts de forum"; #elif L==6 - "Mensajes en foros"; // Okoteve traducción + "Comentarios en foros"; // Okoteve traducción #elif L==7 "Post del forum"; #elif L==8 @@ -24331,13 +24310,13 @@ const char *Txt_New_post = #if L==1 "Nou comentari"; #elif L==2 - "Neue Kommentar"; + "Neue Post"; #elif L==3 "New post"; #elif L==4 "Nuevo comentario"; #elif L==5 - "Nouveau commentaire"; + "Nouveau post"; #elif L==6 "Nuevo comentario"; // Okoteve traducción #elif L==7 @@ -25166,17 +25145,17 @@ const char *Txt_No_BR_msgs = const char *Txt_No_new_posts = #if L==1 - "No hay mensajes nuevos"; // Necessita traduccio + "No hay comentarios nuevos"; // Necessita traduccio #elif L==2 "Keine neuen Nachrichten"; #elif L==3 "No new posts"; #elif L==4 - "No hay mensajes nuevos"; + "No hay comentarios nuevos"; #elif L==5 - "Pas de nouveaux messages"; + "Pas de nouveaux posts"; #elif L==6 - "No hay mensajes nuevos"; // Okoteve traducción + "No hay comentarios nuevos"; // Okoteve traducción #elif L==7 "Nessun nuovo post"; #elif L==8 @@ -25355,86 +25334,86 @@ const char *Txt_No_of_BR_lines = const char *Txt_No_of_posts = #if L==1 - "Nº de mensajes"; // Necessita traduccio + "Nº de comentarios"; // Necessita traduccio #elif L==2 "Anzahl der Nachrichten"; #elif L==3 "No. of posts"; #elif L==4 - "Nº de mensajes"; + "Nº de comentarios"; #elif L==5 - "Nombre de messages"; + "Nombre de posts"; #elif L==6 - "Nº de mensajes"; // Okoteve traducción + "Nº de comentarios"; // Okoteve traducción #elif L==7 "Numero di post"; #elif L==8 "Liczba wiadomosci"; #elif L==9 - "Nº de mensagens"; + "Nº de posts"; #endif const char *Txt_No_of_posts_BR_per_forum = #if L==1 - "Nº de mensajes
    por foro"; // Necessita traduccio + "Nº de comentarios
    por foro"; // Necessita traduccio #elif L==2 "Anzahl der Nachrichten
    pro Forum"; #elif L==3 "No. of posts
    per forum"; #elif L==4 - "Nº de mensajes
    por foro"; + "Nº de comentarios
    por foro"; #elif L==5 - "Nombre de messages
    par forum"; + "Nombre de posts
    par forum"; #elif L==6 - "Nº de mensajes
    por foro"; // Okoteve traducción + "Nº de comentarios
    por foro"; // Okoteve traducción #elif L==7 "Numero di post
    per forum"; #elif L==8 "Liczba wiadomosci
    per forum"; #elif L==9 - "Nº de mensagens
    por fórum"; + "Nº de posts
    por fórum"; #endif const char *Txt_No_of_posts_BR_per_user = #if L==1 - "Nº de mensajes
    por usuari"; // Necessita traduccio + "Nº de comentarios
    por usuari"; // Necessita traduccio #elif L==2 "Anzahl der Nachrichten
    pro Benutzer"; #elif L==3 "No. of posts
    per user"; #elif L==4 - "Nº de mensajes
    por usuario"; + "Nº de comentarios
    por usuario"; #elif L==5 - "Nombre de messages
    par utilisateur"; + "Nombre de posts
    par utilisateur"; #elif L==6 - "Nº de mensajes
    por puruhára"; // Okoteve traducción + "Nº de comentarios
    por puruhára"; // Okoteve traducción #elif L==7 "Numero di post
    per utente"; #elif L==8 "Liczba wiadomosci
    per użytkownik"; #elif L==9 - "Nº de mensagens
    por utilizador"; + "Nº de posts
    por utilizador"; #endif const char *Txt_No_of_posts_BR_per_thread = #if L==1 - "Nº de mensajes
    por discusión"; // Necessita traduccio + "Nº de comentarios
    por discusión"; // Necessita traduccio #elif L==2 "Anzahl der Nachrichten
    pro Thread"; #elif L==3 "No. of posts
    per thread"; #elif L==4 - "Nº de mensajes
    por usuario"; + "Nº de comentarios
    por usuario"; #elif L==5 - "Nombre de messages
    par fil"; + "Nombre de posts
    par fil"; #elif L==6 - "Nº de mensajes
    por discusión"; // Okoteve traducción + "Nº de comentarios
    por discusión"; // Okoteve traducción #elif L==7 "Numero di post
    per discussione"; #elif L==8 "Liczba wiadomosci
    per watku"; #elif L==9 - "Nº de mensagens
    por thread"; + "Nº de posts
    por thread"; #endif const char *Txt_No_of_private_files = @@ -26843,7 +26822,7 @@ const char *Txt_NOTIFY_EVENTS_PLURAL[Ntf_NUM_NOTIFY_EVENTS] = #elif L==8 "Nowe komentarze do moich post społecznej" #elif L==9 - "Novos comentário às minhos post sociais" + "Novos comentário às minhos posts sociais" #endif , #if L==1 // Ntf_EVENT_TIMELINE_FAV @@ -26863,7 +26842,7 @@ const char *Txt_NOTIFY_EVENTS_PLURAL[Ntf_NUM_NOTIFY_EVENTS] = #elif L==8 "Nowe ulubiony do moich post społecznej" #elif L==9 - "Novos favoritos às minhos post sociais" + "Novos favoritos às minhos posts sociais" #endif , #if L==1 // Ntf_EVENT_TIMELINE_SHARE @@ -26883,7 +26862,7 @@ const char *Txt_NOTIFY_EVENTS_PLURAL[Ntf_NUM_NOTIFY_EVENTS] = #elif L==8 "Nowe podzial moich post społecznej" #elif L==9 - "Novas partilhas de minhos post sociais" + "Novas partilhas de minhos posts sociais" #endif , #if L==1 // Ntf_EVENT_TIMELINE_MENTION @@ -26927,17 +26906,17 @@ const char *Txt_NOTIFY_EVENTS_PLURAL[Ntf_NUM_NOTIFY_EVENTS] = #endif , #if L==1 // Ntf_EVENT_FORUM_POST_COURSE - "Novos missatges en fòrums" + "Novos comentaris en fòrums" #elif L==2 "Neue Beiträge in den Foren" #elif L==3 "New posts in course forums" #elif L==4 - "Nuevos mensajes en foros de asignaturas" + "Nuevos comentarios en foros de asignaturas" #elif L==5 - "Nouveaux messages dans les forums" + "Nouveaux posts dans les forums" #elif L==6 - "Nuevos mensajes en foros de asignaturas" // Okoteve traducción + "Nuevos comentarios en foros de asignaturas" // Okoteve traducción #elif L==7 "Nuovi post nei forum" #elif L==8 @@ -26947,17 +26926,17 @@ const char *Txt_NOTIFY_EVENTS_PLURAL[Ntf_NUM_NOTIFY_EVENTS] = #endif , #if L==1 // Ntf_EVENT_FORUM_REPLY - "Noves respostes als meus missatges en fòrums" + "Noves respostes als meus comentaris en fòrums" #elif L==2 "Neue Antworten auf meine Beiträge in den Foren" #elif L==3 "New replies to my posts in forums" #elif L==4 - "Nuevas respuestas a mis mensajes en foros" + "Nuevas respuestas a mis comentarios en foros" #elif L==5 - "Nouvelles réponses à mes messages dans les forums" + "Nouvelles réponses à mes posts dans les forums" #elif L==6 - "Nuevas respuestas a mis mensajes en foros" // Okoteve traducción + "Nuevas respuestas a mis comentarios en foros" // Okoteve traducción #elif L==7 "Nuove risposte ai miei post nei forum" #elif L==8 @@ -27330,17 +27309,17 @@ const char *Txt_NOTIFY_EVENTS_SINGULAR[Ntf_NUM_NOTIFY_EVENTS] = #endif , #if L==1 // Ntf_EVENT_FORUM_POST_COURSE - "Missatge en un fòrum" + "Comentari en un fòrum" #elif L==2 "Beiträge in einem Forum" #elif L==3 "Post in a forum" #elif L==4 - "Mensaje en un foro" + "Comentario en un foro" #elif L==5 - "Message dans un forum" + "Post dans un forum" #elif L==6 - "Mensaje en un foro" // Okoteve traducción + "Comentario en un foro" // Okoteve traducción #elif L==7 "Post in un forum" #elif L==8 @@ -29535,17 +29514,17 @@ const char *Txt_Possibly_duplicate_users = const char *Txt_Post_X_allowed = // Warning: it is very important to include %u in the following sentences #if L==1 - "Mensaje %u permitido."; // Necessita traduccio + "Comentario %u permitido."; // Necessita traduccio #elif L==2 "Post %u allowed."; // Need Übersetzung #elif L==3 "Post %u allowed."; #elif L==4 - "Mensaje %u permitido."; + "Comentario %u permitido."; #elif L==5 "Post %u allowed."; // Besoin de traduction #elif L==6 - "Mensaje %u permitido."; // Okoteve traducción + "Comentario %u permitido."; // Okoteve traducción #elif L==7 "Post %u autorizzato."; #elif L==8 @@ -29556,38 +29535,38 @@ const char *Txt_Post_X_allowed = // Warning: it is very important to include %u const char *Txt_Post_X_allowed_Click_to_ban_it = // Warning: it is very important to include %u in the following sentences #if L==1 - "Mensaje %u permitido. Pulse para censurarlo."; // Necessita traduccio + "Comentario %u permitido. Pulse para censurarlo."; // Necessita traduccio #elif L==2 - "Post %u allowed. Click to ban it."; // Need Übersetzung + "Post %u allowed. Click to ban it."; // Need Übersetzung #elif L==3 "Post %u allowed. Click to ban it."; #elif L==4 - "Mensaje %u permitido. Pulse para censurarlo."; + "Comentario %u permitido. Pulse para censurarlo."; #elif L==5 - "Post %u allowed. Click to ban it."; // Besoin de traduction + "Post %u allowed. Click to ban it."; // Besoin de traduction #elif L==6 - "Mensaje %u permitido. Pulse para censurarlo."; // Okoteve traducción + "Comentario %u permitido. Pulse para censurarlo."; // Okoteve traducción #elif L==7 "Post %u autorizzato. Clicca per censurarlo."; #elif L==8 "Post% u dozwolone. Kliknij, aby to zakazac."; #elif L==9 - "Post %u allowed. Click to ban it."; // Necessita de tradução + "Post %u allowed. Click to ban it."; // Necessita de tradução #endif const char *Txt_Post_and_thread_removed = #if L==1 - "Mensaje y discusión eliminados."; // Necessita traduccio + "Comentario y discusión eliminados."; // Necessita traduccio #elif L==2 "Nachricht und Faden entfernt."; #elif L==3 "Post and thread removed."; #elif L==4 - "Mensaje y discusión eliminados."; + "Comentario y discusión eliminados."; #elif L==5 "Post and thread removed."; // Besoin de traduction #elif L==6 - "Mensaje y discusión eliminados."; // Okoteve traducción + "Comentario y discusión eliminados."; // Okoteve traducción #elif L==7 "Post e discussione rimossi."; #elif L==8 @@ -29598,17 +29577,17 @@ const char *Txt_Post_and_thread_removed = const char *Txt_Post_banned = #if L==1 - "Mensaje no permitido"; // Necessita traduccio + "Comentario no permitido"; // Necessita traduccio #elif L==2 "Post banned."; // Need Übersetzung #elif L==3 "Post banned."; #elif L==4 - "Mensaje no permitido"; + "Comentario no permitido"; #elif L==5 "Post banned."; // Besoin de traduction #elif L==6 - "Mensaje no permitido"; // Okoteve traducción + "Comentario no permitido"; // Okoteve traducción #elif L==7 "Post censurato."; #elif L==8 @@ -29619,17 +29598,17 @@ const char *Txt_Post_banned = const char *Txt_Post_X_banned = // Warning: it is very important to include %u in the following sentences #if L==1 - "Mensaje %u no permitido"; // Necessita traduccio + "Comentario %u no permitido"; // Necessita traduccio #elif L==2 "Post %u banned."; // Need Übersetzung #elif L==3 "Post %u banned."; #elif L==4 - "Mensaje %u no permitido"; + "Comentario %u no permitido"; #elif L==5 "Post %u banned."; // Besoin de traduction #elif L==6 - "Mensaje %u no permitido"; // Okoteve traducción + "Comentario %u no permitido"; // Okoteve traducción #elif L==7 "Post %u censurato."; #elif L==8 @@ -29640,17 +29619,17 @@ const char *Txt_Post_X_banned = // Warning: it is very important to include %u i const char *Txt_Post_X_banned_Click_to_unban_it = // Warning: it is very important to include %u in the following sentences #if L==1 - "Mensaje %u no permitido. Pulse para permitirlo."; // Necessita traduccio + "Comentario %u no permitido. Pulse para permitirlo."; // Necessita traduccio #elif L==2 "Post %u banned. Click to unban it."; // Need Übersetzung #elif L==3 "Post %u banned. Click to unban it."; #elif L==4 - "Mensaje %u no permitido. Pulse para permitirlo."; + "Comentario %u no permitido. Pulse para permitirlo."; #elif L==5 "Post %u banned. Click to unban it."; // Besoin de traduction #elif L==6 - "Mensaje %u no permitido. Pulse para permitirlo."; // Okoteve traducción + "Comentario %u no permitido. Pulse para permitirlo."; // Okoteve traducción #elif L==7 "Post %u censurato. Clicca per autorizzarlo."; #elif L==8 @@ -29661,17 +29640,17 @@ const char *Txt_Post_X_banned_Click_to_unban_it = // Warning: it is very importa const char *Txt_Post_sent = #if L==1 - "Mensaje enviado."; // Necessita traduccio + "Comentario enviado."; // Necessita traduccio #elif L==2 "Post sent."; // Need Übersetzung #elif L==3 "Post sent."; #elif L==4 - "Mensaje enviado."; + "Comentario enviado."; #elif L==5 "Post sent."; // Besoin de traduction #elif L==6 - "Mensaje enviado."; // Okoteve traducción + "Comentario enviado."; // Okoteve traducción #elif L==7 "Post inviato."; #elif L==8 @@ -29682,17 +29661,17 @@ const char *Txt_Post_sent = const char *Txt_Post_removed = #if L==1 - "Missatge eliminat."; + "Comentari eliminat."; #elif L==2 "Nachricht entfernt."; #elif L==3 "Post removed."; #elif L==4 - "Mensaje eliminado."; + "Comentario eliminado."; #elif L==5 "Message supprimé."; #elif L==6 - "Mensaje eliminado."; // Okoteve traducción + "Comentario eliminado."; // Okoteve traducción #elif L==7 "Post rimosso."; #elif L==8 @@ -29703,17 +29682,17 @@ const char *Txt_Post_removed = const char *Txt_Post_unbanned = #if L==1 - "Mensaje permitido"; // Necessita traduccio + "Comentario permitido"; // Necessita traduccio #elif L==2 "Post unbanned."; // Need Übersetzung #elif L==3 "Post unbanned"; #elif L==4 - "Mensaje permitido"; + "Comentario permitido"; #elif L==5 "Post unbanned."; // Besoin de traduction #elif L==6 - "Mensaje permitido"; // Okoteve traducción + "Comentario permitido"; // Okoteve traducción #elif L==7 "Post autorizzato."; #elif L==8 @@ -29974,15 +29953,15 @@ const char *Txt_Post = // Publish (verb) const char *Txt_post = #if L==1 - "missatge"; + "comentari"; #elif L==2 "Nachricht"; #elif L==3 "post"; #elif L==4 - "mensaje"; + "comentario"; #elif L==5 - "message"; + "post"; #elif L==6 "marandu"; #elif L==7 @@ -29995,15 +29974,15 @@ const char *Txt_post = const char *Txt_posts = #if L==1 - "missatges"; + "comentaris"; #elif L==2 "Nachrichten"; #elif L==3 "posts"; #elif L==4 - "mensajes"; + "comentarios"; #elif L==5 - "messages"; + "posts"; #elif L==6 "marandu"; #elif L==7 @@ -37930,17 +37909,17 @@ const char *Txt_SOCIAL_NOTE[Soc_NUM_NOTE_TYPES] = #endif , #if L==1 // Soc_NOTE_FORUM_POST - "Missatge en un fòrum" + "Comentari en un fòrum" #elif L==2 "Beiträge in einem Forum" #elif L==3 "Post in a forum" #elif L==4 - "Mensaje en un foro" + "Comentario en un foro" #elif L==5 - "Message dans un forum" + "Post dans un forum" #elif L==6 - "Mensaje en un foro" // Okoteve traducción + "Comentario en un foro" // Okoteve traducción #elif L==7 "Post in un forum" #elif L==8 @@ -47290,7 +47269,7 @@ const char *Txt_This_link_will_remain_active_as_long_as_your_user_s_account_exis const char *Txt_This_post_has_been_banned_probably_for_not_satisfy_the_rules_of_the_forums = #if L==1 - "Este mensaje ha sido censurado," + "Este comentario ha sido censurado," " probablemente por no cumplir las normas de los foros."; // Necessita traduccio #elif L==2 "This post has been banned," @@ -47299,13 +47278,13 @@ const char *Txt_This_post_has_been_banned_probably_for_not_satisfy_the_rules_of_ "This post has been banned," " probably for not satisfy the rules of the forums."; #elif L==4 - "Este mensaje ha sido censurado," + "Este comentario ha sido censurado," " probablemente por no cumplir las normas de los foros."; #elif L==5 "This post has been banned," " probably for not satisfy the rules of the forums."; // Besoin de traduction #elif L==6 - "Este mensaje ha sido censurado," + "Este comentario ha sido censurado," " probablemente por no cumplir las normas de los foros."; // Okoteve traducción #elif L==7 "Questo post è stato censurato," @@ -47509,17 +47488,17 @@ const char *Txt_Thread_X_removed = // Warning: it is very important to include % const char *Txt_Thread_with_posts_from_you = #if L==1 - "Discusión con mensajes de usted."; // Necessita traduccio + "Discusión con comentarios de usted."; // Necessita traduccio #elif L==2 "Thread with posts from you."; // Need Übersetzung #elif L==3 "Thread with posts from you."; #elif L==4 - "Discusión con mensajes de usted."; + "Discusión con comentarios de usted."; #elif L==5 "Thread with posts from you."; // Besoin de traduction #elif L==6 - "Discusión con mensajes de usted."; // Okoteve traducción + "Discusión con comentarios de usted."; // Okoteve traducción #elif L==7 "Discussione con post per te."; #elif L==8 @@ -51293,17 +51272,17 @@ const char *Txt_With_institutions = const char *Txt_with_new_posts = #if L==1 - "con mensajes nuevos"; // Necessita traduccio + "con comentarios nuevos"; // Necessita traduccio #elif L==2 "mit neuen Beiträge"; #elif L==3 "with new posts"; #elif L==4 - "con mensajes nuevos"; + "con comentarios nuevos"; #elif L==5 - "avec de nouveaux messages"; + "avec de nouveaux posts"; #elif L==6 - "con mensajes nuevos"; // Okoteve traducción + "con comentarios nuevos"; // Okoteve traducción #elif L==7 "con nuovi post"; #elif L==8 @@ -53628,17 +53607,17 @@ const char *Txt_You_have_to_register_compulsorily_in_one_group_of_type_X = // Wa const char *Txt_You_have_written_1_post_in_this_thread = #if L==1 - "Usted ha escrito 1 mensaje en esta discusión"; // Necessita traduccio + "Usted ha escrito 1 comentario en esta discusión"; // Necessita traduccio #elif L==2 "Sie haben 1 Nachricht in diesem Thread"; #elif L==3 "You have written 1 post in this thread"; #elif L==4 - "Usted ha escrito 1 mensaje en esta discusión"; + "Usted ha escrito 1 comentario en esta discusión"; #elif L==5 - "Vous avez écrit 1 message dans ce fil"; + "Vous avez écrit 1 post dans ce fil"; #elif L==6 - "Usted ha escrito 1 mensaje en esta discusión"; // Okoteve traducción + "Usted ha escrito 1 comentario en esta discusión"; // Okoteve traducción #elif L==7 "Hai scritto 1 post in questa discussione"; #elif L==8 @@ -53649,17 +53628,17 @@ const char *Txt_You_have_written_1_post_in_this_thread = const char *Txt_You_have_written_X_posts_in_this_thread = // Warning: it is very important to include %u in the following sentences #if L==1 - "Usted ha escrito %u mensajes en esta discusión"; // Necessita traduccio + "Usted ha escrito %u comentarios en esta discusión"; // Necessita traduccio #elif L==2 "Sie haben %u Nachrichten in diesem Thread"; #elif L==3 "You have written %u posts in this thread"; #elif L==4 - "Usted ha escrito %u mensajes en esta discusión"; + "Usted ha escrito %u comentarios en esta discusión"; #elif L==5 - "Vous avez écrit %u messages dans ce fil"; + "Vous avez écrit %u posts dans ce fil"; #elif L==6 - "Usted ha escrito %u mensajes en esta discusión"; // Okoteve traducción + "Usted ha escrito %u comentarios en esta discusión"; // Okoteve traducción #elif L==7 "Hai scritto %u post in questa discussione"; #elif L==8 diff --git a/swad_web_service.c b/swad_web_service.c index 011fea30..e87c8b94 100644 --- a/swad_web_service.c +++ b/swad_web_service.c @@ -2813,7 +2813,7 @@ int swad__getNotifications (struct soap *soap, struct Degree Deg; struct Course Crs; long Cod; - struct Forum WhichForum; + struct Forum ForumSelected; char ForumName[For_MAX_BYTES_FORUM_NAME + 1]; char SummaryStr[Ntf_MAX_BYTES_SUMMARY + 1]; char *ContentStr; @@ -2948,8 +2948,8 @@ int swad__getNotifications (struct soap *soap, if (NotifyEvent == Ntf_EVENT_FORUM_POST_COURSE || NotifyEvent == Ntf_EVENT_FORUM_REPLY) { - For_GetForumTypeAndLocationOfAPost (Cod,&WhichForum); - For_SetForumName (&WhichForum, + For_GetForumTypeAndLocationOfAPost (Cod,&ForumSelected); + For_SetForumName (&ForumSelected, ForumName,Gbl.Prefs.Language,false); // Set forum name in recipient's language sprintf (getNotificationsOut->notificationsArray.__ptr[NumNotif].location,"%s: %s", Txt_Forum,ForumName);