mirror of https://github.com/acanas/swad-core.git
Version 16.176.1
This commit is contained in:
parent
648084e254
commit
c20cf1ccac
|
@ -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)
|
||||||
|
|
91
swad_forum.c
91
swad_forum.c
|
@ -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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
Loading…
Reference in New Issue