From a895afca0ad91370845b987bf27595b32b20b073 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antonio=20Ca=C3=B1as=20Vargas?= Date: Mon, 17 Apr 2017 12:19:58 +0200 Subject: [PATCH] Version 16.180.1 --- swad_changelog.h | 3 +- swad_forum.c | 190 ++++++++++++++++++++++++++--------------------- swad_text.c | 27 ++++++- 3 files changed, 130 insertions(+), 90 deletions(-) diff --git a/swad_changelog.h b/swad_changelog.h index 95833e773..12bd10556 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -214,13 +214,14 @@ /****************************** Public constants *****************************/ /*****************************************************************************/ -#define Log_PLATFORM_VERSION "SWAD 16.180 (2017-04-17)" +#define Log_PLATFORM_VERSION "SWAD 16.180.1 (2017-04-17)" #define CSS_FILE "swad16.177.css" #define JS_FILE "swad16.144.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.180.1: Apr 17, 2017 New '+' icon in list of thread posts to add a new post. (217558 lines) Version 16.180: Apr 17, 2017 Code refactoring in forums. (217521 lines) Version 16.179: Apr 16, 2017 Code refactoring in forums. (217444 lines) Version 16.178.1: Apr 16, 2017 Code refactoring in forums. (217601 lines) diff --git a/swad_forum.c b/swad_forum.c index 439f8bfba..e552fce85 100644 --- a/swad_forum.c +++ b/swad_forum.c @@ -242,6 +242,7 @@ const Act_Action_t For_ActionsDisPstFor[For_NUM_TYPES_FORUM] = #define For_ID_FORUM_THREADS_SECTION "forum_threads" #define For_ID_NEW_THREAD_SECTION "new_thread" #define For_ID_FORUM_POSTS_SECTION "thread_posts" +#define For_ID_NEW_POST_SECTION "new_post" // Forum images will be saved with: // - maximum width of For_IMAGE_SAVED_MAX_HEIGHT @@ -284,9 +285,7 @@ static unsigned For_GetNumMyPstInThr (long ThrCod); static time_t For_GetThrReadTime (long ThrCod); static void For_DeleteThrFromReadThrs (long ThrCod); static void For_ShowThreadPosts (long ThrCod); - -static void For_PutIconsForums (void); -static void For_PutIconNewThread (void); +static void For_PutIconNewPost (void); static void For_ShowAForumPost (struct Forum *WhichForum,struct ForumThread *Thr,unsigned PstNum,long PstCod, bool LastPst,char LastSubject[Cns_MAX_BYTES_SUBJECT + 1], @@ -299,6 +298,9 @@ static void For_WriteNumberOfPosts (struct Forum *WhichForum,long UsrCod); static void For_PutParamWhichForum (void); static void For_PutParamForumOrder (void); + +static void For_PutIconsForums (void); + static void For_PutFormWhichForums (void); static void For_PutParamForumInsCtrDegCrs (void); @@ -331,24 +333,12 @@ static unsigned For_GetNumOfThreadsInForumNewerThan (struct Forum *WhichForum, static unsigned For_GetNumOfUnreadPostsInThr (long ThrCod,unsigned NumPostsInThr); static unsigned For_GetNumOfPostsInThrNewerThan (long ThrCod,const char *Time); -static void For_ShowForumThreadsHighlightingOneThread (long ThrCodHighlighted); - -static void For_WriteFormForumPst (bool IsReply,long ThrCod,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 void For_MoveThrToCurrentForum (long ThrCod); -static void For_InsertThrInClipboard (long ThrCod); -static void For_RemoveExpiredThrsClipboards (void); -static void For_RemoveThrCodFromThrClipboard (long ThrCod); - -static void For_WriteNumberOfThrs (unsigned NumThrs,unsigned NumThrsWithNewPosts); static void For_WriteNumThrsAndPsts (unsigned NumThrs,unsigned NumThrsWithNewPosts,unsigned NumPosts); +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 void For_ListForumThrs (long ThrCods[Pag_ITEMS_PER_PAGE], long ThrCodHighlighted, struct Pagination *PaginationThrs); @@ -361,6 +351,17 @@ static long For_GetParamThrCod (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_UpdateNumUsrsNotifiedByEMailAboutPost (long PstCod,unsigned NumUsrsToBeNotifiedByEMail); + +static long For_GetThrInMyClipboard (void); +static bool For_CheckIfThrBelongsToForum (long ThrCod,struct Forum *WhichForum); +static void For_MoveThrToCurrentForum (long ThrCod); +static void For_InsertThrInClipboard (long ThrCod); +static void For_RemoveExpiredThrsClipboards (void); +static void For_RemoveThrCodFromThrClipboard (long ThrCod); + /*****************************************************************************/ /****************************** Enable a forum post **************************/ /*****************************************************************************/ @@ -1005,7 +1006,8 @@ static void For_ShowThreadPosts (long ThrCod) /***** Start frame *****/ fprintf (Gbl.F.Out,"
",For_ID_FORUM_POSTS_SECTION); sprintf (FrameTitle,"%s: %s",Txt_Thread,Thr.Subject); - Lay_StartRoundFrame (NULL,FrameTitle,NULL,Hlp_SOCIAL_Forums); + Lay_StartRoundFrame (NULL,FrameTitle,For_PutIconNewPost, + Hlp_SOCIAL_Forums); /***** Get posts of a thread from database *****/ sprintf (Query,"SELECT PstCod,UNIX_TIMESTAMP(CreatTime)" @@ -1119,8 +1121,10 @@ static void For_ShowThreadPosts (long ThrCod) /***** Free structure that stores the query result *****/ DB_FreeMySQLResult (&mysql_res); - /***** Form to write a new message in the thread *****/ + /***** Form to write a new post in the thread *****/ + fprintf (Gbl.F.Out,"
",For_ID_NEW_POST_SECTION); For_WriteFormForumPst (true,ThrCod,LastSubject); + fprintf (Gbl.F.Out,"
"); /***** End frame *****/ Lay_EndRoundFrame (); @@ -1128,27 +1132,16 @@ static void For_ShowThreadPosts (long ThrCod) } /*****************************************************************************/ -/********************** Put contextual icons in forums ***********************/ +/*********************** Put icon to write a new post ************************/ /*****************************************************************************/ -static void For_PutIconsForums (void) +static void For_PutIconNewPost (void) { - /***** Put icon to show a figure *****/ - Gbl.Stat.FigureType = Sta_FORUMS; - Sta_PutIconToShowFigure (); - } - -/*****************************************************************************/ -/********************** Put icon to write a new thread ***********************/ -/*****************************************************************************/ - -static void For_PutIconNewThread (void) - { - extern const char *Txt_New_thread; + extern const char *Txt_New_post; fprintf (Gbl.F.Out,"", - For_ID_NEW_THREAD_SECTION,Txt_New_thread); - Lay_PutIconWithText ("plus64x64.png",Txt_New_thread,NULL); + For_ID_NEW_POST_SECTION,Txt_New_post); + Lay_PutIconWithText ("plus64x64.png",Txt_New_post,NULL); fprintf (Gbl.F.Out,""); } @@ -1718,6 +1711,17 @@ static void For_ShowForumList (void) Lay_EndRoundFrame (); } +/*****************************************************************************/ +/********************** Put contextual icons in forums ***********************/ +/*****************************************************************************/ + +static void For_PutIconsForums (void) + { + /***** Put icon to show a figure *****/ + Gbl.Stat.FigureType = Sta_FORUMS; + Sta_PutIconToShowFigure (); + } + /*****************************************************************************/ /*************** Put form to select which forums I want to see ***************/ /*****************************************************************************/ @@ -2348,6 +2352,62 @@ static unsigned For_GetNumOfPostsInThrNewerThan (long ThrCod,const char *Time) return (unsigned) DB_QueryCOUNT (Query,"can not check if there are new posts in a thread of a forum"); } +/*****************************************************************************/ +/*************** Get and write total number of threads and posts *************/ +/*****************************************************************************/ + +static void For_WriteNumThrsAndPsts (unsigned NumThrs,unsigned NumThrsWithNewPosts,unsigned NumPosts) + { + extern const char *Txt_thread; + extern const char *Txt_threads; + extern const char *Txt_post; + extern const char *Txt_posts; + extern const char *Txt_with_new_posts; + + /***** Write number of threads and number of posts *****/ + fprintf (Gbl.F.Out," ["); + if (NumThrs == 1) + { + fprintf (Gbl.F.Out,"1 %s",Txt_thread); + if (NumThrsWithNewPosts) + fprintf (Gbl.F.Out,", 1 %s",Txt_with_new_posts); + fprintf (Gbl.F.Out,"; "); + if (NumPosts == 1) + fprintf (Gbl.F.Out,"1 %s",Txt_post); + else + fprintf (Gbl.F.Out,"%u %s",NumPosts,Txt_posts); + } + else + { + fprintf (Gbl.F.Out,"%u %s",NumThrs,Txt_threads); + if (NumThrsWithNewPosts) + fprintf (Gbl.F.Out,", %u %s",NumThrsWithNewPosts,Txt_with_new_posts); + fprintf (Gbl.F.Out,"; %u %s",NumPosts,Txt_posts); + } + fprintf (Gbl.F.Out,"]"); + } + +/*****************************************************************************/ +/************** Get and write total number of threads and posts **************/ +/*****************************************************************************/ + +static void For_WriteNumberOfThrs (unsigned NumThrs,unsigned NumThrsWithNewPosts) + { + extern const char *Txt_thread; + extern const char *Txt_threads; + extern const char *Txt_with_new_posts; + + /***** Write number of threads and number of posts *****/ + fprintf (Gbl.F.Out," ["); + if (NumThrs == 1) + fprintf (Gbl.F.Out,"1 %s",Txt_thread); + else + fprintf (Gbl.F.Out,"%u %s",NumThrs,Txt_threads); + if (NumThrsWithNewPosts) + fprintf (Gbl.F.Out,", %u %s",NumThrsWithNewPosts,Txt_with_new_posts); + fprintf (Gbl.F.Out,"]"); + } + /*****************************************************************************/ /********************** Show available threads of a forum ********************/ /*****************************************************************************/ @@ -2546,7 +2606,7 @@ static void For_ShowForumThreadsHighlightingOneThread (long ThrCodHighlighted) &PaginationThrs); } - /***** Put a form to write the first message of a new thread *****/ + /***** 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); fprintf (Gbl.F.Out,"
"); @@ -2557,59 +2617,17 @@ static void For_ShowForumThreadsHighlightingOneThread (long ThrCodHighlighted) } /*****************************************************************************/ -/************** Get and write total number of threads and posts **************/ +/********************** Put icon to write a new thread ***********************/ /*****************************************************************************/ -static void For_WriteNumberOfThrs (unsigned NumThrs,unsigned NumThrsWithNewPosts) +static void For_PutIconNewThread (void) { - extern const char *Txt_thread; - extern const char *Txt_threads; - extern const char *Txt_with_new_posts; + extern const char *Txt_New_thread; - /***** Write number of threads and number of posts *****/ - fprintf (Gbl.F.Out," ["); - if (NumThrs == 1) - fprintf (Gbl.F.Out,"1 %s",Txt_thread); - else - fprintf (Gbl.F.Out,"%u %s",NumThrs,Txt_threads); - if (NumThrsWithNewPosts) - fprintf (Gbl.F.Out,", %u %s",NumThrsWithNewPosts,Txt_with_new_posts); - fprintf (Gbl.F.Out,"]"); - } - -/*****************************************************************************/ -/*************** Get and write total number of threads and posts *************/ -/*****************************************************************************/ - -static void For_WriteNumThrsAndPsts (unsigned NumThrs,unsigned NumThrsWithNewPosts,unsigned NumPosts) - { - extern const char *Txt_thread; - extern const char *Txt_threads; - extern const char *Txt_post; - extern const char *Txt_posts; - extern const char *Txt_with_new_posts; - - /***** Write number of threads and number of posts *****/ - fprintf (Gbl.F.Out," ["); - if (NumThrs == 1) - { - fprintf (Gbl.F.Out,"1 %s",Txt_thread); - if (NumThrsWithNewPosts) - fprintf (Gbl.F.Out,", 1 %s",Txt_with_new_posts); - fprintf (Gbl.F.Out,"; "); - if (NumPosts == 1) - fprintf (Gbl.F.Out,"1 %s",Txt_post); - else - fprintf (Gbl.F.Out,"%u %s",NumPosts,Txt_posts); - } - else - { - fprintf (Gbl.F.Out,"%u %s",NumThrs,Txt_threads); - if (NumThrsWithNewPosts) - fprintf (Gbl.F.Out,", %u %s",NumThrsWithNewPosts,Txt_with_new_posts); - fprintf (Gbl.F.Out,"; %u %s",NumPosts,Txt_posts); - } - fprintf (Gbl.F.Out,"]"); + fprintf (Gbl.F.Out,"", + For_ID_NEW_THREAD_SECTION,Txt_New_thread); + Lay_PutIconWithText ("plus64x64.png",Txt_New_thread,NULL); + fprintf (Gbl.F.Out,""); } /*****************************************************************************/ diff --git a/swad_text.c b/swad_text.c index 6bb1bef33..18a2740da 100644 --- a/swad_text.c +++ b/swad_text.c @@ -24327,6 +24327,27 @@ const char *Txt_New_plugin = "Novo plugin"; #endif +const char *Txt_New_post = +#if L==1 + "Novo missatge"; +#elif L==2 + "Neue Nachricht"; +#elif L==3 + "New post"; +#elif L==4 + "Nuevo mensaje"; +#elif L==5 + "Nouveau message"; +#elif L==6 + "Nuevo mensaje"; // Okoteve traducción +#elif L==7 + "Nuovo post"; +#elif L==8 + "Nowy post"; +#elif L==9 + "Novo post"; +#endif + const char *Txt_New_question = #if L==1 "Nova pregunta"; @@ -29621,13 +29642,13 @@ const char *Txt_Post_X_banned_Click_to_unban_it = // Warning: it is very importa #if L==1 "Mensaje %u no permitido. Pulse para permitirlo."; // Necessita traduccio #elif L==2 - "Post %u banned. Click to unban it."; // Need Übersetzung + "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."; #elif L==5 - "Post %u banned. Click to unban it."; // Besoin de traduction + "Post %u banned. Click to unban it."; // Besoin de traduction #elif L==6 "Mensaje %u no permitido. Pulse para permitirlo."; // Okoteve traducción #elif L==7 @@ -29635,7 +29656,7 @@ const char *Txt_Post_X_banned_Click_to_unban_it = // Warning: it is very importa #elif L==8 "Post %u zakazany.Kliknij, aby to odbanowac."; #elif L==9 - "Post %u banned. Click to unban it."; // Necessita de tradução + "Post %u banned. Click to unban it."; // Necessita de tradução #endif const char *Txt_Post_sent =