Version 15.106

This commit is contained in:
Antonio Cañas Vargas 2016-01-10 14:27:35 +01:00
parent f1e9b1451e
commit e6558c4cda
11 changed files with 213 additions and 71 deletions

View File

@ -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;
}

View File

@ -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

View File

@ -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;

View File

@ -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 *********************************/

View File

@ -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:

View File

@ -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)

View File

@ -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;

View File

@ -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);

View File

@ -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 *****************************/
/*****************************************************************************/

View File

@ -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);

View File

@ -33851,6 +33851,27 @@ const char *Txt_See_messages_received =
"Veja mensagens recebidas";
#endif
const char *Txt_See_more =
#if L==1
"Veure m&eacute;s";
#elif L==2
"Weitere";
#elif L==3
"See more";
#elif L==4
"Ver m&aacute;s";
#elif L==5
"Voir plus";
#elif L==6
"Ver m&aacute;s"; // Okoteve traducción
#elif L==7
"Vedere pi&ugrave;";
#elif L==8
"Zobacz wi&eogon;cej";
#elif L==9
"Veja mais";
#endif
const char *Txt_See_new_activity =
#if L==1
"Veure nova activitat";