mirror of https://github.com/acanas/swad-core.git
Version 15.106
This commit is contained in:
parent
f1e9b1451e
commit
e6558c4cda
|
@ -1668,14 +1668,14 @@ a:hover img.CENTRE_PHOTO_SHOW
|
|||
.LOG_R {font-family:"Arial Narrow","Nimbus Sans L","DejaVu LGC Sans Condensed",sans-serif; color:red; font-size:11pt;}
|
||||
|
||||
/******************************** Social activity ****************************/
|
||||
#view_new_posts_container
|
||||
#view_new_posts_container,#view_old_posts_container
|
||||
{
|
||||
display:table-cell;
|
||||
height:50px;
|
||||
text-align:center;
|
||||
vertical-align:middle;
|
||||
}
|
||||
#recent_timeline_list
|
||||
#new_timeline_list
|
||||
{
|
||||
display:none;
|
||||
}
|
||||
|
|
|
@ -349,15 +349,30 @@ function refreshLastClicks() {
|
|||
}
|
||||
}
|
||||
|
||||
//Automatic refresh of social timeline using AJAX. This function must be called from time to time
|
||||
// Automatic refresh of new publishings in social timeline using AJAX. This function must be called from time to time
|
||||
var objXMLHttpReqSoc = false;
|
||||
function refreshSocialTimeline() {
|
||||
function refreshNewTimeline() {
|
||||
objXMLHttpReqSoc = AJAXCreateObject();
|
||||
if (objXMLHttpReqSoc) {
|
||||
var RefreshParams = RefreshParamNxtActSoc + '&' +
|
||||
var RefreshParams = RefreshParamNxtActNewPub + '&' +
|
||||
RefreshParamIdSes;
|
||||
|
||||
objXMLHttpReqSoc.onreadystatechange = readSocialTimelineData; // onreadystatechange must be lowercase
|
||||
objXMLHttpReqSoc.onreadystatechange = readNewTimelineData; // onreadystatechange must be lowercase
|
||||
objXMLHttpReqSoc.open('POST',ActionAJAX,true);
|
||||
objXMLHttpReqSoc.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
|
||||
objXMLHttpReqSoc.send(RefreshParams);
|
||||
}
|
||||
}
|
||||
|
||||
// Refresh of old publishings in social timeline using AJAX. This function is called when user clicks in link
|
||||
var objXMLHttpReqSoc = false;
|
||||
function refreshOldTimeline() {
|
||||
objXMLHttpReqSoc = AJAXCreateObject();
|
||||
if (objXMLHttpReqSoc) {
|
||||
var RefreshParams = RefreshParamNxtActOldPub + '&' +
|
||||
RefreshParamIdSes;
|
||||
|
||||
objXMLHttpReqSoc.onreadystatechange = readOldTimelineData; // onreadystatechange must be lowercase
|
||||
objXMLHttpReqSoc.open('POST',ActionAJAX,true);
|
||||
objXMLHttpReqSoc.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
|
||||
objXMLHttpReqSoc.send(RefreshParams);
|
||||
|
@ -446,25 +461,25 @@ function readLastClicksData() {
|
|||
}
|
||||
}
|
||||
|
||||
//Receives and show social timeline data
|
||||
function readSocialTimelineData() {
|
||||
// Receives and show new social timeline data
|
||||
function readNewTimelineData() {
|
||||
if (objXMLHttpReqSoc.readyState == 4) { // Check if data have been received
|
||||
if (objXMLHttpReqSoc.status == 200) {
|
||||
var endOfDelay = objXMLHttpReqSoc.responseText.indexOf('|',0); // Get separator position
|
||||
var delay = parseInt(objXMLHttpReqSoc.responseText.substring(0,endOfDelay)); // Get refresh delay
|
||||
var htmlRecentTimeline = objXMLHttpReqSoc.responseText.substring(endOfDelay+1); // Get HTML code for social timeline
|
||||
var htmlNewTimeline = objXMLHttpReqSoc.responseText.substring(endOfDelay+1); // Get HTML code for social timeline
|
||||
|
||||
var recentTimeline = document.getElementById('recent_timeline_list'); // Access to UL with the recent timeline
|
||||
if (recentTimeline) {
|
||||
recentTimeline.innerHTML = htmlRecentTimeline + recentTimeline.innerHTML; // Update list of publishings in recent timeline
|
||||
var countRecentTimeline = recentTimeline.childNodes.length;
|
||||
var newTimeline = document.getElementById('new_timeline_list'); // Access to UL with the new timeline
|
||||
if (newTimeline) {
|
||||
newTimeline.innerHTML = htmlNewTimeline + newTimeline.innerHTML; // Update list of publishings in new timeline
|
||||
var countNewTimeline = newTimeline.childNodes.length;
|
||||
|
||||
if (countRecentTimeline) {
|
||||
if (countNewTimeline) {
|
||||
var viewNewPostsContainer = document.getElementById('view_new_posts_container');
|
||||
var viewNewPostsCount = document.getElementById('view_new_posts_count');
|
||||
|
||||
// Update number of new posts
|
||||
viewNewPostsCount.innerHTML = countRecentTimeline;
|
||||
viewNewPostsCount.innerHTML = countNewTimeline;
|
||||
|
||||
// Display message with new posts if hidden
|
||||
viewNewPostsContainer.style.display = '';
|
||||
|
@ -472,23 +487,49 @@ function readSocialTimelineData() {
|
|||
}
|
||||
|
||||
if (delay >= 5000) // If refresh slower than 1 time each 5 seconds, do refresh; else abort
|
||||
setTimeout('refreshSocialTimeline()',delay);
|
||||
setTimeout('refreshNewTimeline()',delay);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Move recent timeline to timeline
|
||||
function moveRecentTimelineToTimeline() {
|
||||
// Receives and show old social timeline data
|
||||
function readOldTimelineData() {
|
||||
if (objXMLHttpReqSoc.readyState == 4) { // Check if data have been received
|
||||
if (objXMLHttpReqSoc.status == 200) {
|
||||
var endOfDelay = objXMLHttpReqSoc.responseText.indexOf('|',0); // Get separator position
|
||||
var delay = parseInt(objXMLHttpReqSoc.responseText.substring(0,endOfDelay)); // Get refresh delay
|
||||
var htmlOldTimeline = objXMLHttpReqSoc.responseText.substring(endOfDelay+1); // Get HTML code for social timeline
|
||||
|
||||
var oldTimeline = document.getElementById('old_timeline_list'); // Access to UL with the recent timeline
|
||||
if (oldTimeline) {
|
||||
oldTimeline.innerHTML = htmlOldTimeline; // Fill list of publishings in old timeline
|
||||
var countOldTimeline = oldTimeline.childNodes.length;
|
||||
|
||||
if (countOldTimeline) {
|
||||
var timeline = document.getElementById("timeline_list");
|
||||
|
||||
// Move all the LI elements in UL 'old_timeline_list' to the bottom of UL 'timeline_list'
|
||||
for (var i=0; i<countOldTimeline; i++)
|
||||
timeline.appendChild(oldTimeline.firstChild);
|
||||
// oldTimeline.removeChild(oldTimeline.childNodes[0]); // Not necessary
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Move new timeline to top of timeline
|
||||
function moveNewTimelineToTimeline() {
|
||||
var viewNewPostsContainer = document.getElementById('view_new_posts_container');
|
||||
var viewNewPostsCount = document.getElementById('view_new_posts_count');
|
||||
var recentTimeline = document.getElementById('recent_timeline_list'); // Access to social timeline DIV
|
||||
var countRecentTimeline = recentTimeline.childNodes.length;
|
||||
var newTimeline = document.getElementById('new_timeline_list');
|
||||
var countNewTimeline = newTimeline.childNodes.length;
|
||||
|
||||
if (countRecentTimeline) {
|
||||
if (countNewTimeline) {
|
||||
var timeline = document.getElementById("timeline_list");
|
||||
// Move all the LI elements in UL 'recentTimeline' to the top of UL 'timeline'
|
||||
for(var i=0; i < countRecentTimeline; i++)
|
||||
timeline.insertBefore(recentTimeline.lastChild, timeline.childNodes[0]);
|
||||
// Move all the LI elements in UL 'new_timeline_list' to the top of UL 'timeline_list'
|
||||
for (var i=0; i<countNewTimeline; i++)
|
||||
timeline.insertBefore(newTimeline.lastChild, timeline.childNodes[0]);
|
||||
}
|
||||
|
||||
// Reset and hide number of new posts after moving
|
|
@ -83,7 +83,8 @@ extern struct Globals Gbl;
|
|||
3. ActMnu Show menu of a tab
|
||||
4. ActRefCon Refresh number of notifications and connected users via AJAX
|
||||
5. ActRefLstClk Refresh last clicks in log via AJAX
|
||||
New!!!!!!!!. ActRefSocTim Refresh recent social timeline via AJAX
|
||||
New!!!!!!!!. ActRefNewSocPub Refresh recent social timeline via AJAX
|
||||
New!!!!!!!!. ActRefNewSocPub View old social timeline via AJAX
|
||||
6. ActWebSvc Call plugin function
|
||||
System:
|
||||
7. ActSysReqSch Request search in system tab
|
||||
|
@ -1339,7 +1340,8 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
|
|||
/* ActMnu */{ 2,-1,TabUnk,ActMnu ,0x1FF,0x1FF,0x1FF,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,NULL ,NULL},
|
||||
/* ActRefCon */{ 845,-1,TabUnk,ActRefCon ,0x1FF,0x1FF,0x1FF,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Lay_RefreshNotifsAndConnected ,NULL},
|
||||
/* ActRefLstClk */{ 994,-1,TabUnk,ActRefLstClk ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Lay_RefreshLastClicks ,NULL},
|
||||
/* ActRefSocTim */{1509,-1,TabUnk,ActRefSocTim ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Lay_RefreshSocialTimeline ,NULL},
|
||||
/* ActRefNewSocPub */{1509,-1,TabUnk,ActRefNewSocPub ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Lay_RefreshNewTimeline ,NULL},
|
||||
/* ActRefOldSocPub */{1510,-1,TabUnk,ActRefNewSocPub ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Lay_RefreshOldTimeline ,NULL},
|
||||
/* ActWebSvc */{ 892,-1,TabUnk,ActWebSvc ,0x1FF,0x1FF,0x1FF,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Plg_WebService ,NULL},
|
||||
|
||||
// TabSys ******************************************************************
|
||||
|
@ -4202,7 +4204,8 @@ Act_Action_t Act_FromActCodToAction[1+Act_MAX_ACTION_COD] = // Do not reuse uniq
|
|||
ActReqRemSocComUsr, // #1506
|
||||
ActRemSocComGbl, // #1507
|
||||
ActRemSocComUsr, // #1508
|
||||
ActRefSocTim, // #1509
|
||||
ActRefNewSocPub, // #1509
|
||||
ActRefOldSocPub, // #1510
|
||||
};
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -4501,9 +4504,10 @@ void Act_AdjustCurrentAction (void)
|
|||
return;
|
||||
|
||||
/***** Don't adjust anything when refreshing users or on a web service *****/
|
||||
if (Gbl.CurrentAct == ActRefCon ||
|
||||
Gbl.CurrentAct == ActRefLstClk ||
|
||||
Gbl.CurrentAct == ActRefSocTim ||
|
||||
if (Gbl.CurrentAct == ActRefCon ||
|
||||
Gbl.CurrentAct == ActRefLstClk ||
|
||||
Gbl.CurrentAct == ActRefNewSocPub ||
|
||||
Gbl.CurrentAct == ActRefOldSocPub ||
|
||||
Gbl.WebService.IsWebService)
|
||||
return;
|
||||
|
||||
|
|
|
@ -71,9 +71,9 @@ typedef enum
|
|||
|
||||
typedef int Act_Action_t; // Must be a signed type, because -1 is used to indicate obsolete action
|
||||
|
||||
#define Act_NUM_ACTIONS (8+52+15+90+72+67+205+183+143+163+36+27+82)
|
||||
#define Act_NUM_ACTIONS (9+52+15+90+72+67+205+183+143+163+36+27+82)
|
||||
|
||||
#define Act_MAX_ACTION_COD 1509
|
||||
#define Act_MAX_ACTION_COD 1510
|
||||
|
||||
#define Act_MAX_OPTIONS_IN_MENU_PER_TAB 20
|
||||
|
||||
|
@ -86,8 +86,9 @@ typedef int Act_Action_t; // Must be a signed type, because -1 is used to indica
|
|||
#define ActMnu 3
|
||||
#define ActRefCon 4
|
||||
#define ActRefLstClk 5
|
||||
#define ActRefSocTim 6
|
||||
#define ActWebSvc 7
|
||||
#define ActRefNewSocPub 6
|
||||
#define ActRefOldSocPub 7
|
||||
#define ActWebSvc 8
|
||||
|
||||
/*****************************************************************************/
|
||||
/******************************** System tab *********************************/
|
||||
|
|
|
@ -115,18 +115,20 @@
|
|||
// TODO: Go to forum post (or at least to forum thread) from social timeline?
|
||||
// TODO: Include time of last comment in table social_timeline to display social publishings with new comments when refreshing
|
||||
// TODO: Change refreshing time from 5 seconds to 1 minute or so. Increment one second after each refresh?
|
||||
// TODO: Show error message when commenting a removed social note
|
||||
|
||||
/*****************************************************************************/
|
||||
/****************************** Public constants *****************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
#define Log_PLATFORM_VERSION "SWAD 15.105.1 (2016-01-10)"
|
||||
#define Log_PLATFORM_VERSION "SWAD 15.106 (2016-01-10)"
|
||||
#define CSS_FILE "swad15.102.css"
|
||||
#define JS_FILE "swad15.104.js"
|
||||
#define JS_FILE "swad15.106.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 15.106: Jan 10, 2016 Link at the bottom of timeline to get older publishings. (192028 lines)
|
||||
Version 15.105.1: Jan 10, 2016 Change in style writing recent social publishings. (191909 lines)
|
||||
Version 15.105: Jan 10, 2016 Get only publishings newest than a give publishing. (191912 lines)
|
||||
1 change necessary in database:
|
||||
|
|
|
@ -438,9 +438,10 @@ void Gbl_InitializeGlobals (void)
|
|||
|
||||
void Gbl_Cleanup (void)
|
||||
{
|
||||
if (Gbl.CurrentAct != ActRefCon &&
|
||||
Gbl.CurrentAct != ActRefLstClk &&
|
||||
Gbl.CurrentAct != ActRefSocTim &&
|
||||
if (Gbl.CurrentAct != ActRefCon &&
|
||||
Gbl.CurrentAct != ActRefLstClk &&
|
||||
Gbl.CurrentAct != ActRefNewSocPub &&
|
||||
Gbl.CurrentAct != ActRefOldSocPub &&
|
||||
!Gbl.WebService.IsWebService &&
|
||||
Act_Actions[Gbl.CurrentAct].BrowserWindow == Act_MAIN_WINDOW &&
|
||||
!Gbl.HiddenParamsInsertedIntoDB)
|
||||
|
|
|
@ -123,9 +123,10 @@ void Lay_WriteStartOfPage (void)
|
|||
Con_ComputeConnectedUsrsBelongingToCurrentCrs ();
|
||||
|
||||
/***** Send head width the file type for the HTTP protocol *****/
|
||||
if (Gbl.CurrentAct == ActRefCon ||
|
||||
Gbl.CurrentAct == ActRefLstClk ||
|
||||
Gbl.CurrentAct == ActRefSocTim)
|
||||
if (Gbl.CurrentAct == ActRefCon ||
|
||||
Gbl.CurrentAct == ActRefLstClk ||
|
||||
Gbl.CurrentAct == ActRefNewSocPub ||
|
||||
Gbl.CurrentAct == ActRefOldSocPub)
|
||||
// Don't generate a full HTML page, only the content of a DIV or similar
|
||||
{
|
||||
fprintf (Gbl.F.Out,"Content-Type: text/html; charset=windows-1252\r\n\r\n");
|
||||
|
@ -611,7 +612,7 @@ static void Lay_WriteScriptInit (void)
|
|||
fprintf (Gbl.F.Out," setTimeout(\"refreshLastClicks()\",%lu);\n",
|
||||
Cfg_TIME_TO_REFRESH_LAST_CLICKS);
|
||||
else if (Gbl.CurrentAct == ActSeeSocTmlGbl)
|
||||
fprintf (Gbl.F.Out," setTimeout(\"refreshSocialTimeline()\",%lu);\n",
|
||||
fprintf (Gbl.F.Out," setTimeout(\"refreshNewTimeline()\",%lu);\n",
|
||||
Cfg_TIME_TO_REFRESH_SOCIAL_TIMELINE);
|
||||
fprintf (Gbl.F.Out,"}\n"
|
||||
"</script>\n");
|
||||
|
@ -626,13 +627,15 @@ static void Lay_WriteScriptParamsAJAX (void)
|
|||
fprintf (Gbl.F.Out,"<script type=\"text/javascript\">\n"
|
||||
"var RefreshParamNxtActCon = \"act=%ld\";\n"
|
||||
"var RefreshParamNxtActLog = \"act=%ld\";\n"
|
||||
"var RefreshParamNxtActSoc = \"act=%ld\";\n"
|
||||
"var RefreshParamNxtActNewPub = \"act=%ld\";\n"
|
||||
"var RefreshParamNxtActOldPub = \"act=%ld\";\n"
|
||||
"var RefreshParamIdSes = \"ses=%s\";\n"
|
||||
"var RefreshParamCrsCod = \"crs=%ld\";\n"
|
||||
"</script>\n",
|
||||
Act_Actions[ActRefCon ].ActCod,
|
||||
Act_Actions[ActRefLstClk].ActCod,
|
||||
Act_Actions[ActRefSocTim].ActCod,
|
||||
Act_Actions[ActRefCon ].ActCod,
|
||||
Act_Actions[ActRefLstClk ].ActCod,
|
||||
Act_Actions[ActRefNewSocPub].ActCod,
|
||||
Act_Actions[ActRefOldSocPub].ActCod,
|
||||
Gbl.Session.Id,
|
||||
Gbl.CurrentCrs.Crs.CrsCod);
|
||||
}
|
||||
|
@ -1295,9 +1298,10 @@ void Lay_ShowErrorAndExit (const char *Message)
|
|||
|
||||
/***** Page is generated (except </body> and </html>).
|
||||
Compute time to generate page *****/
|
||||
if (Gbl.CurrentAct != ActRefCon && // Refreshing connected users
|
||||
Gbl.CurrentAct != ActRefLstClk && // Refreshing last clics
|
||||
Gbl.CurrentAct != ActRefSocTim) // Refreshing social timeline
|
||||
if (Gbl.CurrentAct != ActRefCon && // Refreshing connected users
|
||||
Gbl.CurrentAct != ActRefLstClk && // Refreshing last clics
|
||||
Gbl.CurrentAct != ActRefNewSocPub && // Refreshing new social publishings in timeline
|
||||
Gbl.CurrentAct != ActRefOldSocPub) // Refreshing old social publishings in timeline
|
||||
Sta_ComputeTimeToGeneratePage ();
|
||||
|
||||
if (Gbl.WebService.IsWebService) // Serving a plugin request
|
||||
|
@ -1315,9 +1319,10 @@ void Lay_ShowErrorAndExit (const char *Message)
|
|||
Fil_FastCopyOfOpenFiles (Gbl.F.Out,stdout);
|
||||
Fil_CloseAndRemoveFileForHTMLOutput ();
|
||||
|
||||
if (Gbl.CurrentAct != ActRefCon && // Refreshing connected users
|
||||
Gbl.CurrentAct != ActRefLstClk && // Refreshing last clicks
|
||||
Gbl.CurrentAct != ActRefSocTim) // Refreshing last clicks
|
||||
if (Gbl.CurrentAct != ActRefCon && // Refreshing connected users
|
||||
Gbl.CurrentAct != ActRefLstClk && // Refreshing last clicks
|
||||
Gbl.CurrentAct != ActRefNewSocPub && // Refreshing new social publishings in timeline
|
||||
Gbl.CurrentAct != ActRefOldSocPub) // Refreshing old social publishings in timeline
|
||||
{
|
||||
/***** Compute time to send page *****/
|
||||
Sta_ComputeTimeToSendPage ();
|
||||
|
@ -1492,15 +1497,27 @@ void Lay_RefreshLastClicks (void)
|
|||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/********************* Refresh social timeline via AJAX **********************/
|
||||
/********** Refresh new publishings in social timeline via AJAX **************/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Lay_RefreshSocialTimeline (void)
|
||||
void Lay_RefreshNewTimeline (void)
|
||||
{
|
||||
// Send, before the HTML, the refresh time and the last publishing got from database
|
||||
fprintf (Gbl.F.Out,"%lu|",
|
||||
Cfg_TIME_TO_REFRESH_SOCIAL_TIMELINE);
|
||||
Soc_GetAndShowRecentTimelineGbl ();
|
||||
Soc_GetAndShowNewTimelineGbl ();
|
||||
|
||||
/***** All the output is made, so don't write anymore *****/
|
||||
Gbl.Layout.DivsEndWritten = Gbl.Layout.HTMLEndWritten = true;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/************ View new publishings in social timeline via AJAX ***************/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Lay_RefreshOldTimeline (void)
|
||||
{
|
||||
Soc_GetAndShowOldTimelineGbl ();
|
||||
|
||||
/***** All the output is made, so don't write anymore *****/
|
||||
Gbl.Layout.DivsEndWritten = Gbl.Layout.HTMLEndWritten = true;
|
||||
|
|
|
@ -111,7 +111,8 @@ void Lay_ShowAlert (Lay_AlertType_t MsgType,const char *Message);
|
|||
|
||||
void Lay_RefreshNotifsAndConnected (void);
|
||||
void Lay_RefreshLastClicks (void);
|
||||
void Lay_RefreshSocialTimeline (void);
|
||||
void Lay_RefreshNewTimeline (void);
|
||||
void Lay_RefreshOldTimeline (void);
|
||||
|
||||
void Lay_WriteHeaderClassPhoto (unsigned NumColumns,bool PrintView,bool DrawingClassPhoto,
|
||||
long InsCod,long DegCod,long CrsCod);
|
||||
|
|
|
@ -49,10 +49,10 @@
|
|||
/***************************** Private constants *****************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
#define Soc_MAX_BYTES_SUMMARY 100
|
||||
#define Soc_NUM_PUBS_IN_TIMELINE 100
|
||||
#define Soc_WIDTH_TIMELINE "560px"
|
||||
#define Soc_MAX_NUM_SHARERS_SHOWN 10 // Maximum number of users shown who have share a social note
|
||||
#define Soc_WIDTH_TIMELINE "560px"
|
||||
#define Soc_NUM_PUBS_IN_TIMELINE 5 // Number of recent publishings shown before refreshing
|
||||
#define Soc_MAX_NUM_SHARERS_SHOWN 10 // Maximum number of users shown who have share a social note
|
||||
#define Soc_MAX_BYTES_SUMMARY 100
|
||||
|
||||
static const Act_Action_t Soc_DefaultActions[Soc_NUM_SOCIAL_NOTES] =
|
||||
{
|
||||
|
@ -187,7 +187,10 @@ static void Soc_ShowTimeline (const char *Query,const char *Title);
|
|||
static void Soc_ShowRecentTimeline (const char *Query);
|
||||
|
||||
static void Soc_GetDataOfSocialPublishingFromRow (MYSQL_ROW row,struct SocialPublishing *SocPub);
|
||||
static void Soc_PutLinkToViewRecentPublishings (void);
|
||||
|
||||
static void Soc_PutLinkToViewNewPublishings (void);
|
||||
static void Soc_PutLinkToViewOldPublishings (void);
|
||||
|
||||
static void Soc_WriteSocialNote (const struct SocialPublishing *SocPub,
|
||||
const struct SocialNote *SocNot,
|
||||
bool ShowAlone,
|
||||
|
@ -302,7 +305,7 @@ void Soc_ShowTimelineGbl (void)
|
|||
/******* Get and show recent timeline including all the users I follow *******/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Soc_GetAndShowRecentTimelineGbl (void)
|
||||
void Soc_GetAndShowNewTimelineGbl (void)
|
||||
{
|
||||
char Query[512];
|
||||
|
||||
|
@ -317,6 +320,27 @@ void Soc_GetAndShowRecentTimelineGbl (void)
|
|||
Soc_DropTemporaryTableWithPubCods ();
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/******** Get and show old timeline including all the users I follow *********/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Soc_GetAndShowOldTimelineGbl (void)
|
||||
{
|
||||
// char Query[512];
|
||||
|
||||
/***** Build query to get timeline *****/
|
||||
// Soc_BuildQueryToGetTimelineGbl (true, // Get only new publishings
|
||||
// Query);
|
||||
|
||||
/***** Show recent timeline *****/
|
||||
// Soc_ShowRecentTimeline (Query);
|
||||
|
||||
/***** Drop temporary table with publishing codes *****/
|
||||
// Soc_DropTemporaryTableWithPubCods ();
|
||||
|
||||
fprintf (Gbl.F.Out,"<li class=\"SOCIAL_PUB\">Un ejemplo de post.</li>");
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/************************ Build query to get timeline ************************/
|
||||
/*****************************************************************************/
|
||||
|
@ -452,11 +476,13 @@ static void Soc_ShowTimeline (const char *Query,const char *Title)
|
|||
Gbl.Usrs.Other.UsrDat.UsrCod == Gbl.Usrs.Me.UsrDat.UsrCod) // It's me
|
||||
Soc_PutHiddenFormToWriteNewPost ();
|
||||
|
||||
/***** Hidden div where insert new publishings via AJAX *****/
|
||||
Soc_PutLinkToViewRecentPublishings ();
|
||||
fprintf (Gbl.F.Out,"<ul id=\"recent_timeline_list\"></ul>");
|
||||
/***** Link to view new publishings via AJAX *****/
|
||||
Soc_PutLinkToViewNewPublishings ();
|
||||
|
||||
/***** List publishings in timeline one by one *****/
|
||||
/***** Hidden list where insert new publishings via AJAX *****/
|
||||
fprintf (Gbl.F.Out,"<ul id=\"new_timeline_list\"></ul>");
|
||||
|
||||
/***** List with the publishings in timeline *****/
|
||||
fprintf (Gbl.F.Out,"<ul id=\"timeline_list\" class=\"LIST_LEFT\">");
|
||||
for (NumPub = 0;
|
||||
NumPub < NumPublishings;
|
||||
|
@ -475,6 +501,12 @@ static void Soc_ShowTimeline (const char *Query,const char *Title)
|
|||
}
|
||||
fprintf (Gbl.F.Out,"</ul>");
|
||||
|
||||
/***** Link to view old publishings via AJAX *****/
|
||||
Soc_PutLinkToViewOldPublishings ();
|
||||
|
||||
/***** Hidden list where insert old publishings via AJAX *****/
|
||||
fprintf (Gbl.F.Out,"<ul id=\"old_timeline_list\"></ul>");
|
||||
|
||||
/***** End frame *****/
|
||||
Lay_EndRoundFrame ();
|
||||
}
|
||||
|
@ -526,18 +558,18 @@ static void Soc_ShowRecentTimeline (const char *Query)
|
|||
/***************** Put link to view new publishings in timeline **************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Soc_PutLinkToViewRecentPublishings (void)
|
||||
static void Soc_PutLinkToViewNewPublishings (void)
|
||||
{
|
||||
extern const char *The_ClassFormBold[The_NUM_THEMES];
|
||||
extern const char *Txt_See_new_activity;
|
||||
|
||||
/***** Link to toggle on/off the form to comment a social note *****/
|
||||
/***** Link to view (show hidden) new publishings *****/
|
||||
// div is hidden. When new posts arrive to the client via AJAX, div is shown
|
||||
fprintf (Gbl.F.Out,"<div id=\"view_new_posts_container\""
|
||||
" class=\"SOCIAL_PUB VERY_LIGHT_BLUE\""
|
||||
" style=\"display:none;\">"
|
||||
"<a href=\"\" class=\"%s\""
|
||||
" onclick=\"moveRecentTimelineToTimeline();return false;\" />"
|
||||
" onclick=\"moveNewTimelineToTimeline();return false;\" />"
|
||||
"%s (<span id=\"view_new_posts_count\">0</span>)"
|
||||
"</a>"
|
||||
"</div>",
|
||||
|
@ -545,6 +577,27 @@ static void Soc_PutLinkToViewRecentPublishings (void)
|
|||
Txt_See_new_activity);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/***************** Put link to view old publishings in timeline **************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Soc_PutLinkToViewOldPublishings (void)
|
||||
{
|
||||
extern const char *The_ClassFormBold[The_NUM_THEMES];
|
||||
extern const char *Txt_See_more;
|
||||
|
||||
/***** Link to view old publishings *****/
|
||||
fprintf (Gbl.F.Out,"<div id=\"view_old_posts_container\""
|
||||
" class=\"SOCIAL_PUB VERY_LIGHT_BLUE\">"
|
||||
"<a href=\"\" class=\"%s\""
|
||||
" onclick=\"refreshOldTimeline();return false;\" />"
|
||||
"%s"
|
||||
"</a>"
|
||||
"</div>",
|
||||
The_ClassFormBold[Gbl.Prefs.Theme],
|
||||
Txt_See_more);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/***************************** Write social note *****************************/
|
||||
/*****************************************************************************/
|
||||
|
|
|
@ -83,7 +83,8 @@ typedef enum
|
|||
|
||||
void Soc_ShowTimelineUsr (void);
|
||||
void Soc_ShowTimelineGbl (void);
|
||||
void Soc_GetAndShowRecentTimelineGbl (void);
|
||||
void Soc_GetAndShowNewTimelineGbl (void);
|
||||
void Soc_GetAndShowOldTimelineGbl (void);
|
||||
|
||||
void Soc_StoreAndPublishSocialNote (Soc_NoteType_t NoteType,long Cod);
|
||||
void Soc_MarkSocialNoteAsUnavailableUsingNotCod (long NotCod);
|
||||
|
|
21
swad_text.c
21
swad_text.c
|
@ -33851,6 +33851,27 @@ const char *Txt_See_messages_received =
|
|||
"Veja mensagens recebidas";
|
||||
#endif
|
||||
|
||||
const char *Txt_See_more =
|
||||
#if L==1
|
||||
"Veure més";
|
||||
#elif L==2
|
||||
"Weitere";
|
||||
#elif L==3
|
||||
"See more";
|
||||
#elif L==4
|
||||
"Ver más";
|
||||
#elif L==5
|
||||
"Voir plus";
|
||||
#elif L==6
|
||||
"Ver más"; // Okoteve traducción
|
||||
#elif L==7
|
||||
"Vedere più";
|
||||
#elif L==8
|
||||
"Zobacz więcej";
|
||||
#elif L==9
|
||||
"Veja mais";
|
||||
#endif
|
||||
|
||||
const char *Txt_See_new_activity =
|
||||
#if L==1
|
||||
"Veure nova activitat";
|
||||
|
|
Loading…
Reference in New Issue