Version19.65

This commit is contained in:
Antonio Cañas Vargas 2019-11-12 00:31:41 +01:00
parent 458529afcd
commit a123470d0a
12 changed files with 279 additions and 283 deletions

View File

@ -663,7 +663,7 @@ function refreshNewTL () {
if (objXMLHttpReqNewTL) {
var RefreshParams = RefreshParamNxtActNewPub + '&' +
RefreshParamIdSes + '&' +
RefreshParamWhichUsrs;
RefreshParamWho;
objXMLHttpReqNewTL.onreadystatechange = readNewTimelineData; // onreadystatechange must be lowercase
objXMLHttpReqNewTL.open('POST',ActionAJAX,true);
@ -753,9 +753,9 @@ function refreshOldTimeline () {
if (RefreshParamUsr.length)
RefreshParams += '&' + RefreshParamUsr;
}
if (typeof RefreshParamWhichUsrs !== 'undefined') {
if (RefreshParamWhichUsrs.length)
RefreshParams += '&' + RefreshParamWhichUsrs;
if (typeof RefreshParamWho !== 'undefined') {
if (RefreshParamWho.length)
RefreshParams += '&' + RefreshParamWho;
}
objXMLHttpReqOldTL.onreadystatechange = readOldTimelineData; // onreadystatechange must be lowercase

View File

@ -487,15 +487,22 @@ enscript -2 --landscape --color --file-align=2 --highlight --line-numbers -o - *
En OpenSWAD:
ps2pdf source.ps destination.pdf
*/
#define Log_PLATFORM_VERSION "SWAD 19.64 (2019-11-11)"
#define Log_PLATFORM_VERSION "SWAD 19.65 (2019-11-12)"
#define CSS_FILE "swad19.47.css"
#define JS_FILE "swad19.39.js"
#define JS_FILE "swad19.65.js"
/*
// TODO: Hacer un nuevo rol en los TFG: tutor externo (profesor de áreas no vinculadas con el centro, profesionales de empresas, etc.)
// TODO: Impedir la creación y edición de proyectos si no son editables.
// TODO: Importante: filtrar proyectos por usuarios (igual que en trabajos o en asistencia)
// TODO: Code refactoring in HTML h1, title, meta, video, p, iframe, input hidden, area
Version 19.65: Nov 12, 2019 Changes in selection of users in timeline. (246451 lines)
4 changes necessary in database:
UPDATE usr_last SET TimelineUsrs=13 WHERE TimelineUsrs=1;
UPDATE usr_last SET TimelineUsrs=14 WHERE TimelineUsrs=2;
UPDATE usr_last SET TimelineUsrs=3 WHERE TimelineUsrs=13;
UPDATE usr_last SET TimelineUsrs=4 WHERE TimelineUsrs=14;
Version 19.64: Nov 11, 2019 Changes in selection of me / all users. (246459 lines)
Version 19.63.2: Nov 11, 2019 Fixed bug showing dates. (246386 lines)
Version 19.63.1: Nov 11, 2019 Fixed bug in lists, reported by Javier Fernández Baldomero. (246381 lines)

View File

@ -304,7 +304,7 @@ void Gbl_InitializeGlobals (void)
/* Projects */
Gbl.Prjs.Config.Editable = Prj_EDITABLE_DEFAULT;
Gbl.Prjs.Filter.My_All = Prj_FILTER_WHOSE_PROJECTS_DEFAULT;
Gbl.Prjs.Filter.Who = Prj_FILTER_WHO_DEFAULT;
Gbl.Prjs.Filter.Assign = Prj_FILTER_ASSIGNED_DEFAULT |
Prj_FILTER_NONASSIG_DEFAULT;
Gbl.Prjs.Filter.Hidden = Prj_FILTER_HIDDEN_DEFAULT |
@ -370,7 +370,7 @@ void Gbl_InitializeGlobals (void)
Gbl.Games.ListQuestions = NULL;
/* Public activity */
Gbl.Timeline.WhichUsrs = TL_DEFAULT_WHICH_USRS;
Gbl.Timeline.Who = TL_DEFAULT_WHO;
/* Forums */
Gbl.Forum.ForumSet = For_DEFAULT_FORUM_SET;

View File

@ -579,7 +579,7 @@ struct Globals
} AttEvents;
struct
{
TL_WhichUsrs_t WhichUsrs;
Usr_Who_t Who;
long NotCod; // Used as parameter about social note to be edited, removed...
long PubCod; // Used as parameter about social publishing to be edited, removed...
} Timeline;

View File

@ -783,10 +783,10 @@ static void Lay_WriteScriptParamsAJAX (void)
// Refresh parameters
HTM_TxtF ("var RefreshParamNxtActNewPub = \"act=%ld\";\n"
"var RefreshParamNxtActOldPub = \"act=%ld\";\n"
"var RefreshParamWhichUsrs = \"WhichUsrs=%u\";\n",
"var RefreshParamWho = \"Who=%u\";\n",
Act_GetActCod (ActRefNewSocPubGbl),
Act_GetActCod (ActRefOldSocPubGbl),
(unsigned) Gbl.Timeline.WhichUsrs);
(unsigned) Gbl.Timeline.Who);
break;
/* Parameters related with user timeline refreshing */
case ActSeeOthPubPrf:

View File

@ -58,7 +58,6 @@ extern struct Globals Gbl;
/*****************************************************************************/
/***** Parameters used to filter listing of projects *****/
#define Prj_PARAM_WHO_NAME "Who"
#define Prj_PARAM_PRE_NON_NAME "PreNon"
#define Prj_PARAM_HID_VIS_NAME "HidVis"
#define Prj_PARAM_FAULTIN_NAME "Faulti"
@ -134,17 +133,16 @@ static void Prj_ShowFormToFilterByWarning (void);
static void Prj_ShowFormToFilterByDpt (void);
static void Prj_PutCurrentParams (void);
static void Prj_PutHiddenParamWho (Usr_Who_t Who);
static void Prj_PutHiddenParamAssign (unsigned Assign);
static void Prj_PutHiddenParamHidden (unsigned Hidden);
static void Prj_PutHiddenParamFaulti (unsigned Faulti);
static void Prj_PutHiddenParamDptCod (long DptCod);
static void Prj_GetHiddenParamMy_All (void);
static void Prj_GetHiddenParamPreNon (void);
static void Prj_GetHiddenParamHidVis (void);
static void Prj_GetHiddenParamFaulti (void);
static void Prj_GetHiddenParamDptCod (void);
static void Prj_GetParams (void);
static void Prj_GetParamWho (void);
static void Prj_ShowProjectsHead (Prj_ProjectView_t ProjectView);
static void Prj_ShowTableAllProjectsHead (void);
@ -407,74 +405,38 @@ static void Prj_ShowProjectsInCurrentPage (void)
/*****************************************************************************/
/*** Show form to choice whether to show only my projects or all projects ****/
/*****************************************************************************/
/*
static void Prj_ShowFormToFilterByMy_All (void)
{
extern const char *Txt_PROJECT_MY_ALL_PROJECTS[Prj_NUM_WHOSE_PROJECTS];
struct Prj_Filter Filter;
Prj_WhoseProjects_t My_All;
static const char *WhoseProjectsIcon[Prj_NUM_WHOSE_PROJECTS] =
{
"mysitemap.png", // Prj_MY__PROJECTS
"sitemap.svg", // Prj_ALL_PROJECTS
};
Set_StartOneSettingSelector ();
for (My_All = (Prj_WhoseProjects_t) 0;
My_All <= (Prj_WhoseProjects_t) (Prj_NUM_WHOSE_PROJECTS - 1);
My_All++)
{
HTM_DIV_Begin ("class=\"%s\"",
(Gbl.Prjs.Filter.My_All == My_All) ? "PREF_ON" :
"PREF_OFF");
Frm_StartForm (ActSeePrj);
Filter.My_All = My_All;
Filter.Assign = Gbl.Prjs.Filter.Assign;
Filter.Hidden = Gbl.Prjs.Filter.Hidden;
Filter.Faulti = Gbl.Prjs.Filter.Faulti;
Filter.DptCod = Gbl.Prjs.Filter.DptCod;
Prj_PutParams (&Filter,
Gbl.Prjs.SelectedOrder,
Gbl.Prjs.CurrentPage,
-1L);
Ico_PutSettingIconLink (WhoseProjectsIcon[My_All],
Txt_PROJECT_MY_ALL_PROJECTS[My_All]);
Frm_EndForm ();
HTM_DIV_End ();
}
Set_EndOneSettingSelector ();
}
*/
static void Prj_ShowFormToFilterByMy_All (void)
{
struct Prj_Filter Filter;
Usr_Who_t Who;
unsigned Mask = 1 << Usr_WHO_ME |
1 << Usr_WHO_SELECTED |
1 << Usr_WHO_ALL;
Set_StartOneSettingSelector ();
for (Who = (Usr_Who_t) 0;
for (Who = (Usr_Who_t) 1;
Who <= (Usr_Who_t) (Usr_NUM_WHO - 1);
Who++)
{
HTM_DIV_Begin ("class=\"%s\"",
(Gbl.Prjs.Filter.Who == Who) ? "PREF_ON" :
"PREF_OFF");
Frm_StartForm (ActSeePrj);
Filter.Who = Who;
Filter.Assign = Gbl.Prjs.Filter.Assign;
Filter.Hidden = Gbl.Prjs.Filter.Hidden;
Filter.Faulti = Gbl.Prjs.Filter.Faulti;
Filter.DptCod = Gbl.Prjs.Filter.DptCod;
Prj_PutParams (&Filter,
Gbl.Prjs.SelectedOrder,
Gbl.Prjs.CurrentPage,
-1L);
Usr_PutWhoIcon (Who);
Frm_EndForm ();
HTM_DIV_End ();
}
if (Mask & (1 << Who))
{
HTM_DIV_Begin ("class=\"%s\"",
(Gbl.Prjs.Filter.Who == Who) ? "PREF_ON" :
"PREF_OFF");
Frm_StartForm (ActSeePrj);
Filter.Who = Who;
Filter.Assign = Gbl.Prjs.Filter.Assign;
Filter.Hidden = Gbl.Prjs.Filter.Hidden;
Filter.Faulti = Gbl.Prjs.Filter.Faulti;
Filter.DptCod = Gbl.Prjs.Filter.DptCod;
Prj_PutParams (&Filter,
Gbl.Prjs.SelectedOrder,
Gbl.Prjs.CurrentPage,
-1L);
Usr_PutWhoIcon (Who);
Frm_EndForm ();
HTM_DIV_End ();
}
Set_EndOneSettingSelector ();
}
@ -653,8 +615,8 @@ void Prj_PutParams (struct Prj_Filter *Filter,
long PrjCod)
{
/***** Put filter parameters (which projects to show) *****/
if (Filter->Who != Prj_FILTER_WHOSE_PROJECTS_DEFAULT)
Prj_PutHiddenParamWho (Filter->Who);
if (Filter->Who != Prj_FILTER_WHO_DEFAULT)
Usr_PutHiddenParamWho (Filter->Who);
if (Filter->Assign != ((unsigned) Prj_FILTER_ASSIGNED_DEFAULT |
(unsigned) Prj_FILTER_NONASSIG_DEFAULT))
@ -692,11 +654,6 @@ void Prj_PutParams (struct Prj_Filter *Filter,
/*********************** Put hidden params for projects **********************/
/*****************************************************************************/
static void Prj_PutHiddenParamWho (Usr_Who_t Who)
{
Par_PutHiddenParamUnsigned (NULL,Prj_PARAM_WHO_NAME,(unsigned) Who);
}
static void Prj_PutHiddenParamAssign (unsigned Assign)
{
Par_PutHiddenParamUnsigned (NULL,Prj_PARAM_PRE_NON_NAME,Assign);
@ -721,14 +678,6 @@ static void Prj_PutHiddenParamDptCod (long DptCod)
/*********************** Get hidden params for projects **********************/
/*****************************************************************************/
static void Prj_GetHiddenParamMy_All (void)
{
Gbl.Prjs.Filter.Who = (Usr_Who_t) Par_GetParToUnsignedLong (Prj_PARAM_WHO_NAME,
0,
Usr_NUM_WHO - 1,
Prj_FILTER_WHOSE_PROJECTS_DEFAULT);
}
static void Prj_GetHiddenParamPreNon (void)
{
Gbl.Prjs.Filter.Assign = (unsigned) Par_GetParToUnsignedLong (Prj_PARAM_PRE_NON_NAME,
@ -784,7 +733,7 @@ static void Prj_GetHiddenParamDptCod (void)
static void Prj_GetParams (void)
{
/***** Get filter (which projects to show) *****/
Prj_GetHiddenParamMy_All ();
Prj_GetParamWho ();
Prj_GetHiddenParamPreNon ();
Prj_GetHiddenParamHidVis ();
Prj_GetHiddenParamFaulti ();
@ -795,6 +744,24 @@ static void Prj_GetParams (void)
Gbl.Prjs.CurrentPage = Pag_GetParamPagNum (Pag_PROJECTS);
}
/*****************************************************************************/
/************* Get parameter with whose users' projects to view **************/
/*****************************************************************************/
static void Prj_GetParamWho (void)
{
/***** Get which users I want to see *****/
Gbl.Prjs.Filter.Who = Usr_GetHiddenParamWho ();
/***** If parameter Who is not present, get it from database *****/
// if (Gbl.Prjs.Filter.Who == Usr_WHO_UNKNOWN)
// Gbl.Prjs.Filter.Who = Prj_GetWhoFromDB ();
/***** If parameter Who is unknown, set it to default *****/
if (Gbl.Prjs.Filter.Who == Usr_WHO_UNKNOWN)
Gbl.Prjs.Filter.Who = Prj_FILTER_WHO_DEFAULT;
}
/*****************************************************************************/
/******************* Write header with fields of a project *******************/
/*****************************************************************************/
@ -2745,7 +2712,7 @@ void Prj_GetListProjects (void)
break;
}
break;
case Usr_WHO_SOME:
case Usr_WHO_SELECTED:
case Usr_WHO_ALL:
switch (Gbl.Prjs.SelectedOrder)
{
@ -2776,6 +2743,9 @@ void Prj_GetListProjects (void)
break;
}
break;
default:
Lay_ShowErrorAndExit ("Wrong parameter which users.");
break;
}
/* Free allocated memory for subqueries */

View File

@ -40,8 +40,8 @@
#define Prj_EDITABLE_DEFAULT true
/***** Filters to list projects *****/
/* My projects / selected users' projects / all projects */
#define Prj_FILTER_WHOSE_PROJECTS_DEFAULT Usr_WHO_ME
/* Whose projects */
#define Prj_FILTER_WHO_DEFAULT Usr_WHO_ME
/* Assigned projects / non-assigned projects */
#define Prj_NUM_ASSIGNED_NONASSIG 2
@ -89,8 +89,7 @@ typedef enum
/* Struct with all filters */
struct Prj_Filter
{
// Prj_WhoseProjects_t My_All; // Show my / all projects
Usr_Who_t Who; // Show my / some / all projects
Usr_Who_t Who; // Show my / selected users' / all projects
unsigned Assign; // Show assigned / non assigned projects
unsigned Hidden; // Show hidden / visible projects
unsigned Faulti; // Show faulty / faultless projects

View File

@ -30944,52 +30944,7 @@ const char *Txt_PROJECT_FAULTY_FAULTLESS_PROJECTS[Prj_NUM_FAULTINESS] =
"Projetos sem falhas"
#endif
};
/*
const char *Txt_PROJECT_MY_ALL_PROJECTS[Prj_NUM_WHOSE_PROJECTS] =
{
// Prj_MY__PROJECTS
#if L==1 // ca
"Nom&eacute;s els meus projectes"
#elif L==2 // de
"Nur meine Projekte"
#elif L==3 // en
"Only my projects"
#elif L==4 // es
"Solo mis proyectos"
#elif L==5 // fr
"Uniquement mes projets"
#elif L==6 // gn
"Solo mis proyectos" // Okoteve traducción
#elif L==7 // it
"Solo i miei progetti"
#elif L==8 // pl
"Tylko moje projekty"
#elif L==9 // pt
"Apenas os meus projetos"
#endif
,
// Prj_ALL_PROJECTS
#if L==1 // ca
"Tots els projectes"
#elif L==2 // de
"Alle Projekte"
#elif L==3 // en
"All projects"
#elif L==4 // es
"Todos los proyectos"
#elif L==5 // fr
"Tous les projets"
#elif L==6 // gn
"Todos los proyectos" // Okoteve traducción
#elif L==7 // it
"Tutti i progetti"
#elif L==8 // pl
"Wszystkie projekty"
#elif L==9 // pt
"Todos os projetos"
#endif
};
*/
const char *Txt_PROJECT_ASSIGNED_NONASSIGNED_PLURAL[Prj_NUM_ASSIGNED_NONASSIG] =
{
// Prj_ASSIGNED
@ -49784,54 +49739,6 @@ const char *Txt_TIMELINE_posts =
"publica&ccedil;&otilde;es";
#endif
const char *Txt_TIMELINE_WHICH_USERS[TL_NUM_WHICH_USRS] =
{
// TL_USRS_UNKNOWN
NULL
,
// TL_USRS_FOLLOWED
#if L==1 // ca
"Usuaris que segueixo"
#elif L==2 // de
"Benutzer Ich folge"
#elif L==3 // en
"Users I'm following"
#elif L==4 // es
"Usuarios que sigo"
#elif L==5 // fr
"Utilisateurs qui je suis"
#elif L==6 // gn
"Usuarios que sigo" // Okoteve traducción
#elif L==7 // it
"Utenti che sto seguenti"
#elif L==8 // pl
"U&zdot;ytkownicy, kt&oacute;rzy mam nast&eogon;puj&aogon;ce"
#elif L==9 // pt
"Usu&aacute;rios que estou seguindo"
#endif
,
// TL_USRS_ALL
#if L==1 // ca
"Tots els usuaris"
#elif L==2 // de
"Alle Benutzer"
#elif L==3 // en
"All users"
#elif L==4 // es
"Todos los usuarios"
#elif L==5 // fr
"Tous les utilisateurs"
#elif L==6 // gn
"Todos los usuarios" // Okoteve traducción
#elif L==7 // it
"Tutti gli utenti"
#elif L==8 // pl
"Wszyscy u&zdot;ytkownicy"
#elif L==9 // pt
"Todos os usu&aacute;rios"
#endif
};
const char *Txt_TIMETABLE_TYPES[TT_NUM_TIMETABLE_TYPES] =
{
// TT_COURSE_TIMETABLE
@ -53271,6 +53178,96 @@ const char *Txt_Where_s_USER =
"Onde est&aacute; %s?";
#endif
const char *Txt_WHO[Usr_NUM_WHO] =
{
// Usr_WHO_UNKNOWN
NULL
,
// Usr_WHO_ME
#if L==1 // ca
"Jo"
#elif L==2 // de
"Mich"
#elif L==3 // en
"Me"
#elif L==4 // es
"Yo"
#elif L==5 // fr
"Moi"
#elif L==6 // gn
"Che"
#elif L==7 // it
"Me"
#elif L==8 // pl
"Mnie"
#elif L==9 // pt
"Eu"
#endif
,
// Usr_WHO_SOME
#if L==1 // ca
"Usuaris seleccionats"
#elif L==2 // de
"Ausgew&auml;hlte Benutzer"
#elif L==3 // en
"Selected users"
#elif L==4 // es
"Usuarios seleccionados"
#elif L==5 // fr
"Utilisateurs s&eacute;lectionn&eacute;s"
#elif L==6 // gn
"Usuarios seleccionados" // Okoteve traducción
#elif L==7 // it
"Utenti selezionati"
#elif L==8 // pl
"Wybrani u&zdot;ytkownicy"
#elif L==9 // pt
"Usu&aacute;rios selecionados"
#endif
,
// Usr_WHO_FOLLOWED
#if L==1 // ca
"Usuaris que segueixo"
#elif L==2 // de
"Benutzer Ich folge"
#elif L==3 // en
"Users I'm following"
#elif L==4 // es
"Usuarios que sigo"
#elif L==5 // fr
"Utilisateurs qui je suis"
#elif L==6 // gn
"Usuarios que sigo" // Okoteve traducción
#elif L==7 // it
"Utenti che sto seguenti"
#elif L==8 // pl
"U&zdot;ytkownicy, kt&oacute;rzy mam nast&eogon;puj&aogon;ce"
#elif L==9 // pt
"Usu&aacute;rios que estou seguindo"
#endif
,
// Usr_WHO_ALL
#if L==1 // ca
"Tots els usuaris"
#elif L==2 // de
"Alle Benutzer"
#elif L==3 // en
"All users"
#elif L==4 // es
"Todos los usuarios"
#elif L==5 // fr
"Tous les utilisateurs"
#elif L==6 // gn
"Todos los usuarios" // Okoteve traducción
#elif L==7 // it
"Tutti gli utenti"
#elif L==8 // pl
"Wszyscy u&zdot;ytkownicy"
#elif L==9 // pt
"Todos os usu&aacute;rios"
#endif
};
const char *Txt_Who_to_follow =
#if L==1 // ca
"A qui seguir";

View File

@ -166,10 +166,9 @@ static void TL_FormFavSha (Act_Action_t ActionGbl,Act_Action_t ActionUsr,
const char *ParamCod,
const char *Icon,const char *Title);
static void TL_PutFormWhichUsrs (void);
static void TL_PutParamWhichUsrs (void);
static void TL_GetParamsWhichUsrs (void);
static TL_WhichUsrs_t TL_GetWhichUsrsFromDB (void);
static void TL_PutFormWho (void);
static void TL_GetParamWho (void);
static Usr_Who_t TL_GetWhoFromDB (void);
static void TL_SaveWhichUsersInDB (void);
static void TL_ShowWarningYouDontFollowAnyUser (void);
@ -318,7 +317,7 @@ void TL_ShowTimelineGbl1 (void)
TL_MarkMyNotifAsSeen ();
/***** Get which users *****/
TL_GetParamsWhichUsrs ();
TL_GetParamWho ();
/***** Save which users in database *****/
if (Gbl.Action.Act == ActSeeSocTmlGbl) // Only in action to see global timeline
@ -458,7 +457,7 @@ void TL_RefreshNewTimelineGbl (void)
if (Gbl.Session.IsOpen) // If session has been closed, do not write anything
{
/***** Get which users *****/
TL_GetParamsWhichUsrs ();
TL_GetParamWho ();
/***** Build query to get timeline *****/
TL_BuildQueryToGetTimeline (&Query,
@ -480,7 +479,7 @@ void TL_RefreshNewTimelineGbl (void)
void TL_RefreshOldTimelineGbl (void)
{
/***** Get which users *****/
TL_GetParamsWhichUsrs ();
TL_GetParamWho ();
/***** Show old publications *****/
TL_GetAndShowOldTimeline (TL_TIMELINE_GBL);
@ -591,9 +590,13 @@ static void TL_BuildQueryToGetTimeline (char **Query,
Gbl.Usrs.Other.UsrDat.UsrCod);
break;
case TL_TIMELINE_GBL: // Show the global timeline
switch (Gbl.Timeline.WhichUsrs)
switch (Gbl.Timeline.Who)
{
case TL_USRS_FOLLOWED: // Show the timeline of the users I follow
case Usr_WHO_ME: // Show my timeline
sprintf (SubQueryPublishers,"PublisherCod=%ld AND ",
Gbl.Usrs.Me.UsrDat.UsrCod);
break;
case Usr_WHO_FOLLOWED: // Show the timeline of the users I follow
DB_Query ("can not create temporary table",
"CREATE TEMPORARY TABLE publishers "
"(UsrCod INT NOT NULL,UNIQUE INDEX(UsrCod)) ENGINE=MEMORY"
@ -606,7 +609,7 @@ static void TL_BuildQueryToGetTimeline (char **Query,
sprintf (SubQueryPublishers,"social_pubs.PublisherCod=publishers.UsrCod AND ");
break;
case TL_USRS_ALL: // Show the timeline of all users
case Usr_WHO_ALL: // Show the timeline of all users
SubQueryPublishers[0] = '\0';
break;
default:
@ -724,14 +727,15 @@ static void TL_BuildQueryToGetTimeline (char **Query,
RangePubsToGet.Bottom);
break;
case TL_TIMELINE_GBL: // Show the global timeline
switch (Gbl.Timeline.WhichUsrs)
switch (Gbl.Timeline.Who)
{
case TL_USRS_FOLLOWED: // Show the timeline of the users I follow
sprintf (SubQueryRangeBottom,"social_pubs.PubCod>%ld AND ",
case Usr_WHO_ME: // Show my timeline
case Usr_WHO_ALL: // Show the timeline of all users
sprintf (SubQueryRangeBottom,"PubCod>%ld AND ",
RangePubsToGet.Bottom);
break;
case TL_USRS_ALL: // Show the timeline of all users
sprintf (SubQueryRangeBottom,"PubCod>%ld AND ",
case Usr_WHO_FOLLOWED:// Show the timeline of the users I follow
sprintf (SubQueryRangeBottom,"social_pubs.PubCod>%ld AND ",
RangePubsToGet.Bottom);
break;
default:
@ -751,14 +755,15 @@ static void TL_BuildQueryToGetTimeline (char **Query,
RangePubsToGet.Top);
break;
case TL_TIMELINE_GBL: // Show the global timeline
switch (Gbl.Timeline.WhichUsrs)
switch (Gbl.Timeline.Who)
{
case TL_USRS_FOLLOWED: // Show the timeline of the users I follow
sprintf (SubQueryRangeTop,"social_pubs.PubCod<%ld AND ",
case Usr_WHO_ME: // Show my timeline
case Usr_WHO_ALL: // Show the timeline of all users
sprintf (SubQueryRangeTop,"PubCod<%ld AND ",
RangePubsToGet.Top);
break;
case TL_USRS_ALL: // Show the timeline of all users
sprintf (SubQueryRangeTop,"PubCod<%ld AND ",
case Usr_WHO_FOLLOWED:// Show the timeline of the users I follow
sprintf (SubQueryRangeTop,"social_pubs.PubCod<%ld AND ",
RangePubsToGet.Top);
break;
default:
@ -786,9 +791,20 @@ static void TL_BuildQueryToGetTimeline (char **Query,
SubQueryAlreadyExists);
break;
case TL_TIMELINE_GBL: // Show the global timeline
switch (Gbl.Timeline.WhichUsrs)
switch (Gbl.Timeline.Who)
{
case TL_USRS_FOLLOWED: // Show the timeline of the users I follow
case Usr_WHO_ME: // Show my timeline
NumPubs =
(unsigned) DB_QuerySELECT (&mysql_res,"can not get publication",
"SELECT PubCod,NotCod"
" FROM social_pubs"
" WHERE %s%s%s%s"
" ORDER BY PubCod DESC LIMIT 1",
SubQueryRangeBottom,SubQueryRangeTop,
SubQueryPublishers,
SubQueryAlreadyExists);
break;
case Usr_WHO_FOLLOWED: // Show the timeline of the users I follow
NumPubs =
(unsigned) DB_QuerySELECT (&mysql_res,"can not get publication",
"SELECT PubCod,NotCod"
@ -799,7 +815,7 @@ static void TL_BuildQueryToGetTimeline (char **Query,
SubQueryPublishers,
SubQueryAlreadyExists);
break;
case TL_USRS_ALL: // Show the timeline of all users
case Usr_WHO_ALL: // Show the timeline of all users
NumPubs =
(unsigned) DB_QuerySELECT (&mysql_res,"can not get publication",
"SELECT PubCod,NotCod"
@ -1001,7 +1017,7 @@ static void TL_ShowTimeline (char *Query,
/***** Put form to select users whom public activity is displayed *****/
if (GlobalTimeline)
TL_PutFormWhichUsrs ();
TL_PutFormWho ();
/***** Form to write a new post *****/
if (GlobalTimeline || ItsMe)
@ -1090,7 +1106,7 @@ static void TL_FormStart (Act_Action_t ActionGbl,Act_Action_t ActionUsr)
else
{
Frm_StartForm (ActionGbl);
TL_PutParamWhichUsrs ();
Usr_PutHiddenParamWho (Gbl.Timeline.Who);
}
}
@ -1155,82 +1171,66 @@ static void TL_FormFavSha (Act_Action_t ActionGbl,Act_Action_t ActionUsr,
/******** Show form to select users whom public activity is displayed ********/
/*****************************************************************************/
static void TL_PutFormWhichUsrs (void)
static void TL_PutFormWho (void)
{
extern const char *Txt_TIMELINE_WHICH_USERS[TL_NUM_WHICH_USRS];
TL_WhichUsrs_t WhichUsrs;
static const char *Icon[TL_NUM_WHICH_USRS] =
{
NULL, // TL_USRS_UNKNOWN
"user-check.svg", // TL_USRS_FOLLOWED
"users.svg", // TL_USRS_ALL
};
Usr_Who_t Who;
unsigned Mask = 1 << Usr_WHO_ME |
1 << Usr_WHO_FOLLOWED |
1 << Usr_WHO_ALL;
/***** Setting selector for which users *****/
Set_StartSettingsHead ();
Set_StartOneSettingSelector ();
for (WhichUsrs = (TL_WhichUsrs_t) 1;
WhichUsrs < TL_NUM_WHICH_USRS;
WhichUsrs++)
{
HTM_DIV_Begin ("class=\"%s\"",
WhichUsrs == Gbl.Timeline.WhichUsrs ? "PREF_ON" :
"PREF_OFF");
Frm_StartForm (ActSeeSocTmlGbl);
Par_PutHiddenParamUnsigned (NULL,"WhichUsrs",WhichUsrs);
Ico_PutSettingIconLink (Icon[WhichUsrs],Txt_TIMELINE_WHICH_USERS[WhichUsrs]);
Frm_EndForm ();
HTM_DIV_End ();
}
for (Who = (Usr_Who_t) 0;
Who <= (Usr_Who_t) (Usr_NUM_WHO - 1);
Who++)
if (Mask & (1 << Who))
{
HTM_DIV_Begin ("class=\"%s\"",
Who == Gbl.Timeline.Who ? "PREF_ON" :
"PREF_OFF");
Frm_StartForm (ActSeeSocTmlGbl);
Par_PutHiddenParamUnsigned (NULL,"Who",(unsigned) Who);
Usr_PutWhoIcon (Who);
Frm_EndForm ();
HTM_DIV_End ();
}
Set_EndOneSettingSelector ();
Set_EndSettingsHead ();
/***** Show warning if I do not follow anyone *****/
if (Gbl.Timeline.WhichUsrs == TL_USRS_FOLLOWED)
if (Gbl.Timeline.Who == Usr_WHO_FOLLOWED)
TL_ShowWarningYouDontFollowAnyUser ();
}
/*****************************************************************************/
/***** Put hidden parameter with which users to view in global timeline ******/
/*****************************************************************************/
static void TL_PutParamWhichUsrs (void)
{
Par_PutHiddenParamUnsigned (NULL,"WhichUsrs",Gbl.Timeline.WhichUsrs);
}
/*****************************************************************************/
/********* Get parameter with which users to view in global timeline *********/
/*****************************************************************************/
static void TL_GetParamsWhichUsrs (void)
static void TL_GetParamWho (void)
{
/***** Get which users I want to see *****/
Gbl.Timeline.WhichUsrs = (TL_WhichUsrs_t)
Par_GetParToUnsignedLong ("WhichUsrs",
1,
TL_NUM_WHICH_USRS - 1,
(unsigned long) TL_USRS_UNKNOWN);
Gbl.Timeline.Who = Usr_GetHiddenParamWho ();
/***** If parameter WhichUsrs is not present, get it from database *****/
if (Gbl.Timeline.WhichUsrs == TL_USRS_UNKNOWN)
Gbl.Timeline.WhichUsrs = TL_GetWhichUsrsFromDB ();
/***** If parameter Who is not present, get it from database *****/
if (Gbl.Timeline.Who == Usr_WHO_UNKNOWN)
Gbl.Timeline.Who = TL_GetWhoFromDB ();
/***** If parameter WhichUsrs is unknown, set it to default *****/
if (Gbl.Timeline.WhichUsrs == TL_USRS_UNKNOWN)
Gbl.Timeline.WhichUsrs = TL_DEFAULT_WHICH_USRS;
/***** If parameter Who is unknown, set it to default *****/
if (Gbl.Timeline.Who == Usr_WHO_UNKNOWN)
Gbl.Timeline.Who = TL_DEFAULT_WHO;
}
/*****************************************************************************/
/********** Get user's last data from database giving a user's code **********/
/*****************************************************************************/
static TL_WhichUsrs_t TL_GetWhichUsrsFromDB (void)
static Usr_Who_t TL_GetWhoFromDB (void)
{
MYSQL_RES *mysql_res;
MYSQL_ROW row;
unsigned UnsignedNum;
TL_WhichUsrs_t WhichUsrs = TL_USRS_UNKNOWN;
Usr_Who_t Who = Usr_WHO_UNKNOWN;
/***** Get which users from database *****/
if (DB_QuerySELECT (&mysql_res,"can not get timeline users from user's last data",
@ -1240,16 +1240,16 @@ static TL_WhichUsrs_t TL_GetWhichUsrsFromDB (void)
{
row = mysql_fetch_row (mysql_res);
/* Get which users */
/* Get who */
if (sscanf (row[0],"%u",&UnsignedNum) == 1)
if (UnsignedNum < TL_NUM_WHICH_USRS)
WhichUsrs = (TL_WhichUsrs_t) UnsignedNum;
if (UnsignedNum < Usr_NUM_WHO)
Who = (Usr_Who_t) UnsignedNum;
}
/***** Free structure that stores the query result *****/
DB_FreeMySQLResult (&mysql_res);
return WhichUsrs;
return Who;
}
/*****************************************************************************/
@ -1260,15 +1260,15 @@ static void TL_SaveWhichUsersInDB (void)
{
if (Gbl.Usrs.Me.Logged)
{
if (Gbl.Timeline.WhichUsrs == TL_USRS_UNKNOWN)
Gbl.Timeline.WhichUsrs = TL_DEFAULT_WHICH_USRS;
if (Gbl.Timeline.Who == Usr_WHO_UNKNOWN)
Gbl.Timeline.Who = TL_DEFAULT_WHO;
/***** Update which users in database *****/
// WhichUsrs is stored in usr_last for next time I log in
// Who is stored in usr_last for next time I log in
DB_QueryUPDATE ("can not update timeline users in user's last data",
"UPDATE usr_last SET TimelineUsrs=%u"
" WHERE UsrCod=%ld",
(unsigned) Gbl.Timeline.WhichUsrs,
(unsigned) Gbl.Timeline.Who,
Gbl.Usrs.Me.UsrDat.UsrCod);
}
}
@ -3834,7 +3834,7 @@ static void TL_PutParamsRemoveNote (void)
if (Gbl.Usrs.Other.UsrDat.UsrCod > 0)
Usr_PutParamOtherUsrCodEncrypted ();
else
TL_PutParamWhichUsrs ();
Usr_PutHiddenParamWho (Gbl.Timeline.Who);
TL_PutHiddenParamNotCod (Gbl.Timeline.NotCod);
}
@ -4147,7 +4147,7 @@ static void TL_PutParamsRemoveCommment (void)
if (Gbl.Usrs.Other.UsrDat.UsrCod > 0)
Usr_PutParamOtherUsrCodEncrypted ();
else
TL_PutParamWhichUsrs ();
Usr_PutHiddenParamWho (Gbl.Timeline.Who);
TL_PutHiddenParamPubCod (Gbl.Timeline.PubCod);
}

View File

@ -42,14 +42,7 @@
/******************************** Public types *******************************/
/*****************************************************************************/
#define TL_NUM_WHICH_USRS 3
typedef enum
{
TL_USRS_UNKNOWN = 0,
TL_USRS_FOLLOWED = 1,
TL_USRS_ALL = 2,
} TL_WhichUsrs_t; // Which users I want to see: only users I follow or all users
#define TL_DEFAULT_WHICH_USRS TL_USRS_FOLLOWED
#define TL_DEFAULT_WHO Usr_WHO_FOLLOWED
#define TL_NUM_PUB_TYPES 4
// If the numbers assigned to each event type change,

View File

@ -9731,25 +9731,51 @@ void Usr_ShowTableCellWithUsrData (struct UsrData *UsrDat,unsigned NumRows)
void Usr_PutWhoIcon (Usr_Who_t Who)
{
extern const char *Txt_WHO[Usr_NUM_WHO];
switch (Who)
{
case Usr_WHO_UNKNOWN:
break;
case Usr_WHO_ME:
HTM_INPUT_IMAGE (Gbl.Usrs.Me.PhotoURL[0] ? Gbl.Usrs.Me.PhotoURL :
Cfg_URL_ICON_PUBLIC,
Gbl.Usrs.Me.PhotoURL[0] ? NULL :
"usr_bl.jpg",
"Yo", // TODO: Need translation!!!!
Txt_WHO[Who],
"ICO_HIGHLIGHT PHOTO15x20");
break;
case Usr_WHO_SOME:
case Usr_WHO_SELECTED:
case Usr_WHO_FOLLOWED:
HTM_INPUT_IMAGE (Cfg_URL_ICON_PUBLIC,"user-check.svg",
"Usuarios seleccionados", // TODO: Need translation!!!!
Txt_WHO[Who],
"ICO_HIGHLIGHT ICOx20");
break;
case Usr_WHO_ALL:
HTM_INPUT_IMAGE (Cfg_URL_ICON_PUBLIC,"users.svg",
"Todos", // TODO: Need translation!!!!
Txt_WHO[Who],
"ICO_HIGHLIGHT ICOx20");
break;
}
}
/*****************************************************************************/
/*************** Put hidden param for which users are involved ***************/
/*****************************************************************************/
void Usr_PutHiddenParamWho (Usr_Who_t Who)
{
Par_PutHiddenParamUnsigned (NULL,"Who",(unsigned) Who);
}
/*****************************************************************************/
/*************** Get hidden param for which users are involved ***************/
/*****************************************************************************/
Usr_Who_t Usr_GetHiddenParamWho (void)
{
return (Usr_Who_t) Par_GetParToUnsignedLong ("Who",
1,
Usr_NUM_WHO - 1,
Usr_WHO_UNKNOWN);
}

View File

@ -142,11 +142,13 @@ typedef enum
Usr_OTHER,
} Usr_MeOrOther_t;
#define Usr_NUM_WHO 3
#define Usr_NUM_WHO 5
typedef enum
{
Usr_WHO_UNKNOWN,
Usr_WHO_ME,
Usr_WHO_SOME,
Usr_WHO_SELECTED,
Usr_WHO_FOLLOWED,
Usr_WHO_ALL,
} Usr_Who_t;
#define Usr_WHO_DEFAULT Usr_WHO_ALL
@ -497,5 +499,7 @@ void Usr_WriteAuthor1Line (long UsrCod,bool Hidden);
void Usr_ShowTableCellWithUsrData (struct UsrData *UsrDat,unsigned NumRows);
void Usr_PutWhoIcon (Usr_Who_t Who);
void Usr_PutHiddenParamWho (Usr_Who_t Who);
Usr_Who_t Usr_GetHiddenParamWho (void);
#endif