Version 16.176.1

This commit is contained in:
Antonio Cañas Vargas 2017-04-11 19:05:15 +02:00
parent 648084e254
commit c20cf1ccac
2 changed files with 54 additions and 40 deletions

View File

@ -212,13 +212,14 @@
/****************************** Public constants *****************************/ /****************************** Public constants *****************************/
/*****************************************************************************/ /*****************************************************************************/
#define Log_PLATFORM_VERSION "SWAD 16.176 (2017-04-11)" #define Log_PLATFORM_VERSION "SWAD 16.176.1 (2017-04-11)"
#define CSS_FILE "swad16.174.1.css" #define CSS_FILE "swad16.174.1.css"
#define JS_FILE "swad16.144.js" #define JS_FILE "swad16.144.js"
// Number of lines (includes comments but not blank lines) has been got with the following command: // 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 // nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*?.h sql/swad*.sql | tail -1
/* /*
Version 16.176.1: Apr 11, 2017 Changes in layout of forums. (217699 lines)
Version 16.176: Apr 11, 2017 Code refactoring in pagination. Version 16.176: Apr 11, 2017 Code refactoring in pagination.
Changes in layout of forums. (217680 lines) Changes in layout of forums. (217680 lines)
Version 16.175.1: Apr 11, 2017 Changes in layout of forums. (217667 lines) Version 16.175.1: Apr 11, 2017 Changes in layout of forums. (217667 lines)

View File

@ -280,12 +280,12 @@ static unsigned For_GetNumOfWritersInThr (long ThrCod);
static unsigned For_GetNumPstsInThr (long ThrCod); static unsigned For_GetNumPstsInThr (long ThrCod);
static unsigned For_GetNumMyPstInThr (long ThrCod); static unsigned For_GetNumMyPstInThr (long ThrCod);
static time_t For_GetThrReadTime (long ThrCod); static time_t For_GetThrReadTime (long ThrCod);
static void For_ShowThreadPosts (long ThrCod,char LastSubject[Cns_MAX_BYTES_SUBJECT + 1]); static void For_ShowThreadPosts (long ThrCod);
static void For_PutIconsForums (void); static void For_PutIconsForums (void);
static void For_PutIconNewThread (void); static void For_PutIconNewThread (void);
static void For_WriteNumPsts (unsigned NumPsts); // static void For_WriteNumPsts (unsigned NumPsts);
static void For_ShowAForumPost (struct ForumThread *Thr,unsigned PstNum,long PstCod, static void For_ShowAForumPost (struct ForumThread *Thr,unsigned PstNum,long PstCod,
bool LastPst,char LastSubject[Cns_MAX_BYTES_SUBJECT + 1], bool LastPst,char LastSubject[Cns_MAX_BYTES_SUBJECT + 1],
bool NewPst,bool ICanModerateForum); bool NewPst,bool ICanModerateForum);
@ -329,7 +329,7 @@ static void For_WriteFormForumPst (bool IsReply,long ThrCod,const char *Subject)
static void For_UpdateNumUsrsNotifiedByEMailAboutPost (long PstCod,unsigned NumUsrsToBeNotifiedByEMail); static void For_UpdateNumUsrsNotifiedByEMailAboutPost (long PstCod,unsigned NumUsrsToBeNotifiedByEMail);
static void For_WriteNumberOfThrs (unsigned NumThrs,unsigned NumThrsWithNewPosts); static void For_WriteNumberOfThrs (unsigned NumThrs,unsigned NumThrsWithNewPosts);
static void For_WriteNumThrsAndPsts (unsigned NumThrs,unsigned NumThrsWithNewPosts,unsigned NumPosts); static void For_WriteNumThrsAndPsts (unsigned NumThrs,unsigned NumThrsWithNewPosts,unsigned NumPosts);
static void For_WriteThrSubject (long ThrCod); // static void For_WriteThrSubject (long ThrCod);
static void For_GetParamsForum (void); static void For_GetParamsForum (void);
static long For_GetParamThrCod (void); static long For_GetParamThrCod (void);
static void For_PutHiddenParamPstCod (long PstCod); static void For_PutHiddenParamPstCod (long PstCod);
@ -965,15 +965,17 @@ void For_RemoveUsrFromReadThrs (long UsrCod)
/****************************** Show forum posts *****************************/ /****************************** Show forum posts *****************************/
/*****************************************************************************/ /*****************************************************************************/
static void For_ShowThreadPosts (long ThrCod,char LastSubject[Cns_MAX_BYTES_SUBJECT + 1]) static void For_ShowThreadPosts (long ThrCod)
{ {
extern const char *Hlp_SOCIAL_Forums; extern const char *Hlp_SOCIAL_Forums;
extern const char *Txt_Thread; extern const char *Txt_Thread;
extern const char *Txt_There_are_new_posts; // extern const char *Txt_There_are_new_posts;
extern const char *Txt_No_new_posts; // extern const char *Txt_No_new_posts;
extern const char *Txt_Posts; // extern const char *Txt_Posts;
bool IsLastItemInLevel[1 + For_FORUM_MAX_LEVELS]; // bool IsLastItemInLevel[1 + For_FORUM_MAX_LEVELS];
struct ForumThread Thr; struct ForumThread Thr;
char LastSubject[Cns_MAX_BYTES_SUBJECT + 1];
char FrameTitle[128 + Cns_MAX_BYTES_SUBJECT];
char Query[256]; char Query[256];
MYSQL_RES *mysql_res; MYSQL_RES *mysql_res;
MYSQL_ROW row; MYSQL_ROW row;
@ -1004,22 +1006,27 @@ static void For_ShowThreadPosts (long ThrCod,char LastSubject[Cns_MAX_BYTES_SUBJ
/* Get thread read time for the current user */ /* Get thread read time for the current user */
ReadTimeUTC = For_GetThrReadTime (ThrCod); ReadTimeUTC = For_GetThrReadTime (ThrCod);
/* Table start */ /***** Start frame *****/
sprintf (FrameTitle,"%s: %s",Txt_Thread,Thr.Subject);
Lay_StartRoundFrame (NULL,FrameTitle,NULL,Hlp_SOCIAL_Forums);
/*
* Table start *
Lay_StartRoundFrame (NULL,Txt_Thread,For_PutIconsForums,Hlp_SOCIAL_Forums); Lay_StartRoundFrame (NULL,Txt_Thread,For_PutIconsForums,Hlp_SOCIAL_Forums);
/* Put a form to select which forums */ * Put a form to select which forums *
For_PutFormWhichForums (); For_PutFormWhichForums ();
/* Write a link to top level of forums */ * Write a link to top level of forums *
fprintf (Gbl.F.Out,"<ul class=\"LIST_LEFT\">"); fprintf (Gbl.F.Out,"<ul class=\"LIST_LEFT\">");
For_WriteLinkToTopLevelOfForums (); For_WriteLinkToTopLevelOfForums ();
/* Write a link to current forum */ * Write a link to current forum *
IsLastItemInLevel[1] = true; IsLastItemInLevel[1] = true;
For_WriteLinkToAForum (Gbl.Forum.Type,Gbl.Forum.Cod, For_WriteLinkToAForum (Gbl.Forum.Type,Gbl.Forum.Cod,
true,true,1,IsLastItemInLevel); true,true,1,IsLastItemInLevel);
/* Write thread title */ * Write thread title *
fprintf (Gbl.F.Out,"<li class=\"DAT\" style=\"height:25px;\">"); fprintf (Gbl.F.Out,"<li class=\"DAT\" style=\"height:25px;\">");
IsLastItemInLevel[2] = true; IsLastItemInLevel[2] = true;
Lay_IndentDependingOnLevel (2,IsLastItemInLevel); Lay_IndentDependingOnLevel (2,IsLastItemInLevel);
@ -1035,7 +1042,7 @@ static void For_ShowThreadPosts (long ThrCod,char LastSubject[Cns_MAX_BYTES_SUBJ
Thr.NumUnreadPosts ? Txt_There_are_new_posts : Thr.NumUnreadPosts ? Txt_There_are_new_posts :
Txt_No_new_posts); Txt_No_new_posts);
For_WriteThrSubject (ThrCod); For_WriteThrSubject (ThrCod);
*/
/***** Get posts of a thread from database *****/ /***** Get posts of a thread from database *****/
sprintf (Query,"SELECT PstCod,UNIX_TIMESTAMP(CreatTime) FROM forum_post" sprintf (Query,"SELECT PstCod,UNIX_TIMESTAMP(CreatTime) FROM forum_post"
" WHERE ThrCod=%ld ORDER BY PstCod", " WHERE ThrCod=%ld ORDER BY PstCod",
@ -1043,15 +1050,15 @@ static void For_ShowThreadPosts (long ThrCod,char LastSubject[Cns_MAX_BYTES_SUBJ
NumRows = DB_QuerySELECT (Query,&mysql_res,"can not get posts of a thread"); NumRows = DB_QuerySELECT (Query,&mysql_res,"can not get posts of a thread");
NumPsts = (unsigned) NumRows; NumPsts = (unsigned) NumRows;
/*
/* Write number of posts and number of new posts */ / Write number of posts and number of new posts /
fprintf (Gbl.F.Out," "); fprintf (Gbl.F.Out," ");
For_WriteNumPsts (NumPsts); For_WriteNumPsts (NumPsts);
fprintf (Gbl.F.Out,"</li>" fprintf (Gbl.F.Out,"</li>"
"</ul>"); "</ul>");
Lay_EndRoundFrame (); Lay_EndRoundFrame ();
*/
LastSubject[0] = '\0'; LastSubject[0] = '\0';
if (NumPsts) // If there are posts... if (NumPsts) // If there are posts...
{ {
@ -1088,9 +1095,10 @@ static void For_ShowThreadPosts (long ThrCod,char LastSubject[Cns_MAX_BYTES_SUBJ
if (Pagination.MoreThanOnePage) if (Pagination.MoreThanOnePage)
Pag_WriteLinksToPagesCentered (Pag_POSTS_FORUM,ThrCod,&Pagination); Pag_WriteLinksToPagesCentered (Pag_POSTS_FORUM,ThrCod,&Pagination);
/***** Show posts from this page, the author and the date of last reply *****/ /***** Start table *****/
Lay_StartRoundFrameTable (NULL,Txt_Posts,NULL,Hlp_SOCIAL_Forums,2); fprintf (Gbl.F.Out,"<table class=\"FRAME_TBL CELLS_PAD_2\">");
/***** Show posts from this page, the author and the date of last reply *****/
mysql_data_seek (mysql_res,(my_ulonglong) (Pagination.FirstItemVisible - 1)); mysql_data_seek (mysql_res,(my_ulonglong) (Pagination.FirstItemVisible - 1));
for (NumRow = Pagination.FirstItemVisible; for (NumRow = Pagination.FirstItemVisible;
NumRow <= Pagination.LastItemVisible; NumRow <= Pagination.LastItemVisible;
@ -1135,7 +1143,8 @@ static void For_ShowThreadPosts (long ThrCod,char LastSubject[Cns_MAX_BYTES_SUBJ
Gbl.Usrs.Me.UsrDat.UsrCod); Gbl.Usrs.Me.UsrDat.UsrCod);
} }
Lay_EndRoundFrameTable (); /***** End table *****/
fprintf (Gbl.F.Out,"</table>");
/***** Write again links to pages *****/ /***** Write again links to pages *****/
if (Pagination.MoreThanOnePage) if (Pagination.MoreThanOnePage)
@ -1144,6 +1153,12 @@ static void For_ShowThreadPosts (long ThrCod,char LastSubject[Cns_MAX_BYTES_SUBJ
/***** Free structure that stores the query result *****/ /***** Free structure that stores the query result *****/
DB_FreeMySQLResult (&mysql_res); DB_FreeMySQLResult (&mysql_res);
/***** Form to write a new message in the thread *****/
For_WriteFormForumPst (true,ThrCod,LastSubject);
/***** End frame *****/
Lay_EndRoundFrame ();
} }
/*****************************************************************************/ /*****************************************************************************/
@ -1174,7 +1189,7 @@ static void For_PutIconNewThread (void)
/*****************************************************************************/ /*****************************************************************************/
/*************************** Write number of posts ***************************/ /*************************** Write number of posts ***************************/
/*****************************************************************************/ /*****************************************************************************/
/*
static void For_WriteNumPsts (unsigned NumPsts) static void For_WriteNumPsts (unsigned NumPsts)
{ {
extern const char *Txt_post; extern const char *Txt_post;
@ -1182,7 +1197,7 @@ static void For_WriteNumPsts (unsigned NumPsts)
fprintf (Gbl.F.Out,"["); fprintf (Gbl.F.Out,"[");
/***** Write total number of posts *****/ ***** Write total number of posts *****
if (NumPsts == 1) if (NumPsts == 1)
fprintf (Gbl.F.Out,"1 %s",Txt_post); fprintf (Gbl.F.Out,"1 %s",Txt_post);
else else
@ -1190,7 +1205,7 @@ static void For_WriteNumPsts (unsigned NumPsts)
fprintf (Gbl.F.Out,"]"); fprintf (Gbl.F.Out,"]");
} }
*/
/*****************************************************************************/ /*****************************************************************************/
/**************************** Show a post from forum *************************/ /**************************** Show a post from forum *************************/
/*****************************************************************************/ /*****************************************************************************/
@ -1798,7 +1813,7 @@ void For_ShowForumList (void)
Usr_GetMyInstits (); Usr_GetMyInstits ();
/***** Table start *****/ /***** Table start *****/
Lay_StartRoundFrame ("100%",Txt_Forums,For_PutIconsForums, Lay_StartRoundFrame (NULL,Txt_Forums,For_PutIconsForums,
Hlp_SOCIAL_Forums); Hlp_SOCIAL_Forums);
/***** Put a form to select which forums *****/ /***** Put a form to select which forums *****/
@ -3773,7 +3788,7 @@ void For_GetThrData (struct ForumThread *Thr)
/*****************************************************************************/ /*****************************************************************************/
/************* Write the subject of the first message of a thread ************/ /************* Write the subject of the first message of a thread ************/
/*****************************************************************************/ /*****************************************************************************/
/*
static void For_WriteThrSubject (long ThrCod) static void For_WriteThrSubject (long ThrCod)
{ {
extern const char *Txt_no_subject; extern const char *Txt_no_subject;
@ -3784,7 +3799,7 @@ static void For_WriteThrSubject (long ThrCod)
unsigned long NumRows; unsigned long NumRows;
long FirstPstCod; long FirstPstCod;
/***** Get subject of a thread from database *****/ ***** Get subject of a thread from database *****
sprintf (Query,"SELECT forum_post.PstCod,forum_post.Subject" sprintf (Query,"SELECT forum_post.PstCod,forum_post.Subject"
" FROM forum_thread,forum_post" " FROM forum_thread,forum_post"
" WHERE forum_thread.ThrCod=%ld" " WHERE forum_thread.ThrCod=%ld"
@ -3792,16 +3807,16 @@ static void For_WriteThrSubject (long ThrCod)
ThrCod); ThrCod);
NumRows = DB_QuerySELECT (Query,&mysql_res,"can not get the subject of a thread"); NumRows = DB_QuerySELECT (Query,&mysql_res,"can not get the subject of a thread");
/***** The result of the query should have only one row *****/ ***** The result of the query should have only one row *****
if (NumRows != 1) if (NumRows != 1)
Lay_ShowErrorAndExit ("Error when getting the subject of a thread."); Lay_ShowErrorAndExit ("Error when getting the subject of a thread.");
row = mysql_fetch_row (mysql_res); row = mysql_fetch_row (mysql_res);
/***** Get message code *****/ ***** Get message code *****
if (sscanf (row[0],"%ld",&FirstPstCod) != 1) if (sscanf (row[0],"%ld",&FirstPstCod) != 1)
Lay_ShowErrorAndExit ("Error when getting the subject of a thread."); Lay_ShowErrorAndExit ("Error when getting the subject of a thread.");
/***** Write the subject of the thread *****/ ***** Write the subject of the thread *****
if (For_GetIfPstIsEnabled (FirstPstCod)) if (For_GetIfPstIsEnabled (FirstPstCod))
{ {
if (row[1][0]) if (row[1][0])
@ -3812,10 +3827,10 @@ static void For_WriteThrSubject (long ThrCod)
else else
fprintf (Gbl.F.Out,"[%s]",Txt_first_message_not_allowed); fprintf (Gbl.F.Out,"[%s]",Txt_first_message_not_allowed);
/***** Free the structure that stores the query result *****/ ***** Free the structure that stores the query result *****
DB_FreeMySQLResult (&mysql_res); DB_FreeMySQLResult (&mysql_res);
} }
*/
/*****************************************************************************/ /*****************************************************************************/
/**************** Show posts of a thread in a discussion forum ***************/ /**************** Show posts of a thread in a discussion forum ***************/
/*****************************************************************************/ /*****************************************************************************/
@ -3933,19 +3948,17 @@ static long For_GetParamPstCod (void)
void For_ShowForumLevel2 (long ThrCod) void For_ShowForumLevel2 (long ThrCod)
{ {
char Subject[Cns_MAX_BYTES_SUBJECT + 1];
/***** Get order type, degree and course of the forum *****/ /***** Get order type, degree and course of the forum *****/
For_GetParamsForum (); // For_GetParamsForum ();
/***** Set forum type *****/ /***** Set forum type *****/
For_SetForumTypeAndRestrictAccess (); // For_SetForumTypeAndRestrictAccess ();
/***** Show forums and threads *****/
For_ShowForumThrs ();
/***** Show the posts of this thread *****/ /***** Show the posts of this thread *****/
For_ShowThreadPosts (ThrCod,Subject); For_ShowThreadPosts (ThrCod);
/***** Form to write a new message in the thread *****/
For_WriteFormForumPst (true,ThrCod,Subject);
} }
/*****************************************************************************/ /*****************************************************************************/