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) { if (objXMLHttpReqNewTL) {
var RefreshParams = RefreshParamNxtActNewPub + '&' + var RefreshParams = RefreshParamNxtActNewPub + '&' +
RefreshParamIdSes + '&' + RefreshParamIdSes + '&' +
RefreshParamWhichUsrs; RefreshParamWho;
objXMLHttpReqNewTL.onreadystatechange = readNewTimelineData; // onreadystatechange must be lowercase objXMLHttpReqNewTL.onreadystatechange = readNewTimelineData; // onreadystatechange must be lowercase
objXMLHttpReqNewTL.open('POST',ActionAJAX,true); objXMLHttpReqNewTL.open('POST',ActionAJAX,true);
@ -753,9 +753,9 @@ function refreshOldTimeline () {
if (RefreshParamUsr.length) if (RefreshParamUsr.length)
RefreshParams += '&' + RefreshParamUsr; RefreshParams += '&' + RefreshParamUsr;
} }
if (typeof RefreshParamWhichUsrs !== 'undefined') { if (typeof RefreshParamWho !== 'undefined') {
if (RefreshParamWhichUsrs.length) if (RefreshParamWho.length)
RefreshParams += '&' + RefreshParamWhichUsrs; RefreshParams += '&' + RefreshParamWho;
} }
objXMLHttpReqOldTL.onreadystatechange = readOldTimelineData; // onreadystatechange must be lowercase 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: En OpenSWAD:
ps2pdf source.ps destination.pdf 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 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: 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: 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: 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 // 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.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.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) 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 */ /* Projects */
Gbl.Prjs.Config.Editable = Prj_EDITABLE_DEFAULT; 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 | Gbl.Prjs.Filter.Assign = Prj_FILTER_ASSIGNED_DEFAULT |
Prj_FILTER_NONASSIG_DEFAULT; Prj_FILTER_NONASSIG_DEFAULT;
Gbl.Prjs.Filter.Hidden = Prj_FILTER_HIDDEN_DEFAULT | Gbl.Prjs.Filter.Hidden = Prj_FILTER_HIDDEN_DEFAULT |
@ -370,7 +370,7 @@ void Gbl_InitializeGlobals (void)
Gbl.Games.ListQuestions = NULL; Gbl.Games.ListQuestions = NULL;
/* Public activity */ /* Public activity */
Gbl.Timeline.WhichUsrs = TL_DEFAULT_WHICH_USRS; Gbl.Timeline.Who = TL_DEFAULT_WHO;
/* Forums */ /* Forums */
Gbl.Forum.ForumSet = For_DEFAULT_FORUM_SET; Gbl.Forum.ForumSet = For_DEFAULT_FORUM_SET;

View File

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

View File

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

View File

@ -58,7 +58,6 @@ extern struct Globals Gbl;
/*****************************************************************************/ /*****************************************************************************/
/***** Parameters used to filter listing of projects *****/ /***** Parameters used to filter listing of projects *****/
#define Prj_PARAM_WHO_NAME "Who"
#define Prj_PARAM_PRE_NON_NAME "PreNon" #define Prj_PARAM_PRE_NON_NAME "PreNon"
#define Prj_PARAM_HID_VIS_NAME "HidVis" #define Prj_PARAM_HID_VIS_NAME "HidVis"
#define Prj_PARAM_FAULTIN_NAME "Faulti" #define Prj_PARAM_FAULTIN_NAME "Faulti"
@ -134,17 +133,16 @@ static void Prj_ShowFormToFilterByWarning (void);
static void Prj_ShowFormToFilterByDpt (void); static void Prj_ShowFormToFilterByDpt (void);
static void Prj_PutCurrentParams (void); static void Prj_PutCurrentParams (void);
static void Prj_PutHiddenParamWho (Usr_Who_t Who);
static void Prj_PutHiddenParamAssign (unsigned Assign); static void Prj_PutHiddenParamAssign (unsigned Assign);
static void Prj_PutHiddenParamHidden (unsigned Hidden); static void Prj_PutHiddenParamHidden (unsigned Hidden);
static void Prj_PutHiddenParamFaulti (unsigned Faulti); static void Prj_PutHiddenParamFaulti (unsigned Faulti);
static void Prj_PutHiddenParamDptCod (long DptCod); static void Prj_PutHiddenParamDptCod (long DptCod);
static void Prj_GetHiddenParamMy_All (void);
static void Prj_GetHiddenParamPreNon (void); static void Prj_GetHiddenParamPreNon (void);
static void Prj_GetHiddenParamHidVis (void); static void Prj_GetHiddenParamHidVis (void);
static void Prj_GetHiddenParamFaulti (void); static void Prj_GetHiddenParamFaulti (void);
static void Prj_GetHiddenParamDptCod (void); static void Prj_GetHiddenParamDptCod (void);
static void Prj_GetParams (void); static void Prj_GetParams (void);
static void Prj_GetParamWho (void);
static void Prj_ShowProjectsHead (Prj_ProjectView_t ProjectView); static void Prj_ShowProjectsHead (Prj_ProjectView_t ProjectView);
static void Prj_ShowTableAllProjectsHead (void); 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 ****/ /*** 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) static void Prj_ShowFormToFilterByMy_All (void)
{ {
struct Prj_Filter Filter; struct Prj_Filter Filter;
Usr_Who_t Who; Usr_Who_t Who;
unsigned Mask = 1 << Usr_WHO_ME |
1 << Usr_WHO_SELECTED |
1 << Usr_WHO_ALL;
Set_StartOneSettingSelector (); Set_StartOneSettingSelector ();
for (Who = (Usr_Who_t) 0; for (Who = (Usr_Who_t) 1;
Who <= (Usr_Who_t) (Usr_NUM_WHO - 1); Who <= (Usr_Who_t) (Usr_NUM_WHO - 1);
Who++) Who++)
{ if (Mask & (1 << Who))
HTM_DIV_Begin ("class=\"%s\"", {
(Gbl.Prjs.Filter.Who == Who) ? "PREF_ON" : HTM_DIV_Begin ("class=\"%s\"",
"PREF_OFF"); (Gbl.Prjs.Filter.Who == Who) ? "PREF_ON" :
Frm_StartForm (ActSeePrj); "PREF_OFF");
Filter.Who = Who; Frm_StartForm (ActSeePrj);
Filter.Assign = Gbl.Prjs.Filter.Assign; Filter.Who = Who;
Filter.Hidden = Gbl.Prjs.Filter.Hidden; Filter.Assign = Gbl.Prjs.Filter.Assign;
Filter.Faulti = Gbl.Prjs.Filter.Faulti; Filter.Hidden = Gbl.Prjs.Filter.Hidden;
Filter.DptCod = Gbl.Prjs.Filter.DptCod; Filter.Faulti = Gbl.Prjs.Filter.Faulti;
Prj_PutParams (&Filter, Filter.DptCod = Gbl.Prjs.Filter.DptCod;
Gbl.Prjs.SelectedOrder, Prj_PutParams (&Filter,
Gbl.Prjs.CurrentPage, Gbl.Prjs.SelectedOrder,
-1L); Gbl.Prjs.CurrentPage,
-1L);
Usr_PutWhoIcon (Who); Usr_PutWhoIcon (Who);
Frm_EndForm ();
Frm_EndForm (); HTM_DIV_End ();
HTM_DIV_End (); }
}
Set_EndOneSettingSelector (); Set_EndOneSettingSelector ();
} }
@ -653,8 +615,8 @@ void Prj_PutParams (struct Prj_Filter *Filter,
long PrjCod) long PrjCod)
{ {
/***** Put filter parameters (which projects to show) *****/ /***** Put filter parameters (which projects to show) *****/
if (Filter->Who != Prj_FILTER_WHOSE_PROJECTS_DEFAULT) if (Filter->Who != Prj_FILTER_WHO_DEFAULT)
Prj_PutHiddenParamWho (Filter->Who); Usr_PutHiddenParamWho (Filter->Who);
if (Filter->Assign != ((unsigned) Prj_FILTER_ASSIGNED_DEFAULT | if (Filter->Assign != ((unsigned) Prj_FILTER_ASSIGNED_DEFAULT |
(unsigned) Prj_FILTER_NONASSIG_DEFAULT)) (unsigned) Prj_FILTER_NONASSIG_DEFAULT))
@ -692,11 +654,6 @@ void Prj_PutParams (struct Prj_Filter *Filter,
/*********************** Put hidden params for projects **********************/ /*********************** 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) static void Prj_PutHiddenParamAssign (unsigned Assign)
{ {
Par_PutHiddenParamUnsigned (NULL,Prj_PARAM_PRE_NON_NAME,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 **********************/ /*********************** 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) static void Prj_GetHiddenParamPreNon (void)
{ {
Gbl.Prjs.Filter.Assign = (unsigned) Par_GetParToUnsignedLong (Prj_PARAM_PRE_NON_NAME, 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) static void Prj_GetParams (void)
{ {
/***** Get filter (which projects to show) *****/ /***** Get filter (which projects to show) *****/
Prj_GetHiddenParamMy_All (); Prj_GetParamWho ();
Prj_GetHiddenParamPreNon (); Prj_GetHiddenParamPreNon ();
Prj_GetHiddenParamHidVis (); Prj_GetHiddenParamHidVis ();
Prj_GetHiddenParamFaulti (); Prj_GetHiddenParamFaulti ();
@ -795,6 +744,24 @@ static void Prj_GetParams (void)
Gbl.Prjs.CurrentPage = Pag_GetParamPagNum (Pag_PROJECTS); 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 *******************/ /******************* Write header with fields of a project *******************/
/*****************************************************************************/ /*****************************************************************************/
@ -2745,7 +2712,7 @@ void Prj_GetListProjects (void)
break; break;
} }
break; break;
case Usr_WHO_SOME: case Usr_WHO_SELECTED:
case Usr_WHO_ALL: case Usr_WHO_ALL:
switch (Gbl.Prjs.SelectedOrder) switch (Gbl.Prjs.SelectedOrder)
{ {
@ -2776,6 +2743,9 @@ void Prj_GetListProjects (void)
break; break;
} }
break; break;
default:
Lay_ShowErrorAndExit ("Wrong parameter which users.");
break;
} }
/* Free allocated memory for subqueries */ /* Free allocated memory for subqueries */

View File

@ -40,8 +40,8 @@
#define Prj_EDITABLE_DEFAULT true #define Prj_EDITABLE_DEFAULT true
/***** Filters to list projects *****/ /***** Filters to list projects *****/
/* My projects / selected users' projects / all projects */ /* Whose projects */
#define Prj_FILTER_WHOSE_PROJECTS_DEFAULT Usr_WHO_ME #define Prj_FILTER_WHO_DEFAULT Usr_WHO_ME
/* Assigned projects / non-assigned projects */ /* Assigned projects / non-assigned projects */
#define Prj_NUM_ASSIGNED_NONASSIG 2 #define Prj_NUM_ASSIGNED_NONASSIG 2
@ -89,8 +89,7 @@ typedef enum
/* Struct with all filters */ /* Struct with all filters */
struct Prj_Filter struct Prj_Filter
{ {
// Prj_WhoseProjects_t My_All; // Show my / all projects Usr_Who_t Who; // Show my / selected users' / all projects
Usr_Who_t Who; // Show my / some / all projects
unsigned Assign; // Show assigned / non assigned projects unsigned Assign; // Show assigned / non assigned projects
unsigned Hidden; // Show hidden / visible projects unsigned Hidden; // Show hidden / visible projects
unsigned Faulti; // Show faulty / faultless 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" "Projetos sem falhas"
#endif #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] = const char *Txt_PROJECT_ASSIGNED_NONASSIGNED_PLURAL[Prj_NUM_ASSIGNED_NONASSIG] =
{ {
// Prj_ASSIGNED // Prj_ASSIGNED
@ -49784,54 +49739,6 @@ const char *Txt_TIMELINE_posts =
"publica&ccedil;&otilde;es"; "publica&ccedil;&otilde;es";
#endif #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] = const char *Txt_TIMETABLE_TYPES[TT_NUM_TIMETABLE_TYPES] =
{ {
// TT_COURSE_TIMETABLE // TT_COURSE_TIMETABLE
@ -53271,6 +53178,96 @@ const char *Txt_Where_s_USER =
"Onde est&aacute; %s?"; "Onde est&aacute; %s?";
#endif #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 = const char *Txt_Who_to_follow =
#if L==1 // ca #if L==1 // ca
"A qui seguir"; "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 *ParamCod,
const char *Icon,const char *Title); const char *Icon,const char *Title);
static void TL_PutFormWhichUsrs (void); static void TL_PutFormWho (void);
static void TL_PutParamWhichUsrs (void); static void TL_GetParamWho (void);
static void TL_GetParamsWhichUsrs (void); static Usr_Who_t TL_GetWhoFromDB (void);
static TL_WhichUsrs_t TL_GetWhichUsrsFromDB (void);
static void TL_SaveWhichUsersInDB (void); static void TL_SaveWhichUsersInDB (void);
static void TL_ShowWarningYouDontFollowAnyUser (void); static void TL_ShowWarningYouDontFollowAnyUser (void);
@ -318,7 +317,7 @@ void TL_ShowTimelineGbl1 (void)
TL_MarkMyNotifAsSeen (); TL_MarkMyNotifAsSeen ();
/***** Get which users *****/ /***** Get which users *****/
TL_GetParamsWhichUsrs (); TL_GetParamWho ();
/***** Save which users in database *****/ /***** Save which users in database *****/
if (Gbl.Action.Act == ActSeeSocTmlGbl) // Only in action to see global timeline 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 if (Gbl.Session.IsOpen) // If session has been closed, do not write anything
{ {
/***** Get which users *****/ /***** Get which users *****/
TL_GetParamsWhichUsrs (); TL_GetParamWho ();
/***** Build query to get timeline *****/ /***** Build query to get timeline *****/
TL_BuildQueryToGetTimeline (&Query, TL_BuildQueryToGetTimeline (&Query,
@ -480,7 +479,7 @@ void TL_RefreshNewTimelineGbl (void)
void TL_RefreshOldTimelineGbl (void) void TL_RefreshOldTimelineGbl (void)
{ {
/***** Get which users *****/ /***** Get which users *****/
TL_GetParamsWhichUsrs (); TL_GetParamWho ();
/***** Show old publications *****/ /***** Show old publications *****/
TL_GetAndShowOldTimeline (TL_TIMELINE_GBL); TL_GetAndShowOldTimeline (TL_TIMELINE_GBL);
@ -591,9 +590,13 @@ static void TL_BuildQueryToGetTimeline (char **Query,
Gbl.Usrs.Other.UsrDat.UsrCod); Gbl.Usrs.Other.UsrDat.UsrCod);
break; break;
case TL_TIMELINE_GBL: // Show the global timeline 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", DB_Query ("can not create temporary table",
"CREATE TEMPORARY TABLE publishers " "CREATE TEMPORARY TABLE publishers "
"(UsrCod INT NOT NULL,UNIQUE INDEX(UsrCod)) ENGINE=MEMORY" "(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 "); sprintf (SubQueryPublishers,"social_pubs.PublisherCod=publishers.UsrCod AND ");
break; break;
case TL_USRS_ALL: // Show the timeline of all users case Usr_WHO_ALL: // Show the timeline of all users
SubQueryPublishers[0] = '\0'; SubQueryPublishers[0] = '\0';
break; break;
default: default:
@ -724,14 +727,15 @@ static void TL_BuildQueryToGetTimeline (char **Query,
RangePubsToGet.Bottom); RangePubsToGet.Bottom);
break; break;
case TL_TIMELINE_GBL: // Show the global timeline 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 (SubQueryRangeBottom,"social_pubs.PubCod>%ld AND ", case Usr_WHO_ALL: // Show the timeline of all users
sprintf (SubQueryRangeBottom,"PubCod>%ld AND ",
RangePubsToGet.Bottom); RangePubsToGet.Bottom);
break; break;
case TL_USRS_ALL: // Show the timeline of all users case Usr_WHO_FOLLOWED:// Show the timeline of the users I follow
sprintf (SubQueryRangeBottom,"PubCod>%ld AND ", sprintf (SubQueryRangeBottom,"social_pubs.PubCod>%ld AND ",
RangePubsToGet.Bottom); RangePubsToGet.Bottom);
break; break;
default: default:
@ -751,14 +755,15 @@ static void TL_BuildQueryToGetTimeline (char **Query,
RangePubsToGet.Top); RangePubsToGet.Top);
break; break;
case TL_TIMELINE_GBL: // Show the global timeline 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 (SubQueryRangeTop,"social_pubs.PubCod<%ld AND ", case Usr_WHO_ALL: // Show the timeline of all users
sprintf (SubQueryRangeTop,"PubCod<%ld AND ",
RangePubsToGet.Top); RangePubsToGet.Top);
break; break;
case TL_USRS_ALL: // Show the timeline of all users case Usr_WHO_FOLLOWED:// Show the timeline of the users I follow
sprintf (SubQueryRangeTop,"PubCod<%ld AND ", sprintf (SubQueryRangeTop,"social_pubs.PubCod<%ld AND ",
RangePubsToGet.Top); RangePubsToGet.Top);
break; break;
default: default:
@ -786,9 +791,20 @@ static void TL_BuildQueryToGetTimeline (char **Query,
SubQueryAlreadyExists); SubQueryAlreadyExists);
break; break;
case TL_TIMELINE_GBL: // Show the global timeline 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 = NumPubs =
(unsigned) DB_QuerySELECT (&mysql_res,"can not get publication", (unsigned) DB_QuerySELECT (&mysql_res,"can not get publication",
"SELECT PubCod,NotCod" "SELECT PubCod,NotCod"
@ -799,7 +815,7 @@ static void TL_BuildQueryToGetTimeline (char **Query,
SubQueryPublishers, SubQueryPublishers,
SubQueryAlreadyExists); SubQueryAlreadyExists);
break; break;
case TL_USRS_ALL: // Show the timeline of all users case Usr_WHO_ALL: // Show the timeline of all users
NumPubs = NumPubs =
(unsigned) DB_QuerySELECT (&mysql_res,"can not get publication", (unsigned) DB_QuerySELECT (&mysql_res,"can not get publication",
"SELECT PubCod,NotCod" "SELECT PubCod,NotCod"
@ -1001,7 +1017,7 @@ static void TL_ShowTimeline (char *Query,
/***** Put form to select users whom public activity is displayed *****/ /***** Put form to select users whom public activity is displayed *****/
if (GlobalTimeline) if (GlobalTimeline)
TL_PutFormWhichUsrs (); TL_PutFormWho ();
/***** Form to write a new post *****/ /***** Form to write a new post *****/
if (GlobalTimeline || ItsMe) if (GlobalTimeline || ItsMe)
@ -1090,7 +1106,7 @@ static void TL_FormStart (Act_Action_t ActionGbl,Act_Action_t ActionUsr)
else else
{ {
Frm_StartForm (ActionGbl); 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 ********/ /******** 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]; Usr_Who_t Who;
TL_WhichUsrs_t WhichUsrs; unsigned Mask = 1 << Usr_WHO_ME |
static const char *Icon[TL_NUM_WHICH_USRS] = 1 << Usr_WHO_FOLLOWED |
{ 1 << Usr_WHO_ALL;
NULL, // TL_USRS_UNKNOWN
"user-check.svg", // TL_USRS_FOLLOWED
"users.svg", // TL_USRS_ALL
};
/***** Setting selector for which users *****/ /***** Setting selector for which users *****/
Set_StartSettingsHead (); Set_StartSettingsHead ();
Set_StartOneSettingSelector (); Set_StartOneSettingSelector ();
for (WhichUsrs = (TL_WhichUsrs_t) 1; for (Who = (Usr_Who_t) 0;
WhichUsrs < TL_NUM_WHICH_USRS; Who <= (Usr_Who_t) (Usr_NUM_WHO - 1);
WhichUsrs++) Who++)
{ if (Mask & (1 << Who))
HTM_DIV_Begin ("class=\"%s\"", {
WhichUsrs == Gbl.Timeline.WhichUsrs ? "PREF_ON" : HTM_DIV_Begin ("class=\"%s\"",
"PREF_OFF"); Who == Gbl.Timeline.Who ? "PREF_ON" :
Frm_StartForm (ActSeeSocTmlGbl); "PREF_OFF");
Par_PutHiddenParamUnsigned (NULL,"WhichUsrs",WhichUsrs); Frm_StartForm (ActSeeSocTmlGbl);
Ico_PutSettingIconLink (Icon[WhichUsrs],Txt_TIMELINE_WHICH_USERS[WhichUsrs]); Par_PutHiddenParamUnsigned (NULL,"Who",(unsigned) Who);
Frm_EndForm (); Usr_PutWhoIcon (Who);
HTM_DIV_End (); Frm_EndForm ();
} HTM_DIV_End ();
}
Set_EndOneSettingSelector (); Set_EndOneSettingSelector ();
Set_EndSettingsHead (); Set_EndSettingsHead ();
/***** Show warning if I do not follow anyone *****/ /***** Show warning if I do not follow anyone *****/
if (Gbl.Timeline.WhichUsrs == TL_USRS_FOLLOWED) if (Gbl.Timeline.Who == Usr_WHO_FOLLOWED)
TL_ShowWarningYouDontFollowAnyUser (); 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 *********/ /********* 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 *****/ /***** Get which users I want to see *****/
Gbl.Timeline.WhichUsrs = (TL_WhichUsrs_t) Gbl.Timeline.Who = Usr_GetHiddenParamWho ();
Par_GetParToUnsignedLong ("WhichUsrs",
1,
TL_NUM_WHICH_USRS - 1,
(unsigned long) TL_USRS_UNKNOWN);
/***** If parameter WhichUsrs is not present, get it from database *****/ /***** If parameter Who is not present, get it from database *****/
if (Gbl.Timeline.WhichUsrs == TL_USRS_UNKNOWN) if (Gbl.Timeline.Who == Usr_WHO_UNKNOWN)
Gbl.Timeline.WhichUsrs = TL_GetWhichUsrsFromDB (); Gbl.Timeline.Who = TL_GetWhoFromDB ();
/***** If parameter WhichUsrs is unknown, set it to default *****/ /***** If parameter Who is unknown, set it to default *****/
if (Gbl.Timeline.WhichUsrs == TL_USRS_UNKNOWN) if (Gbl.Timeline.Who == Usr_WHO_UNKNOWN)
Gbl.Timeline.WhichUsrs = TL_DEFAULT_WHICH_USRS; Gbl.Timeline.Who = TL_DEFAULT_WHO;
} }
/*****************************************************************************/ /*****************************************************************************/
/********** Get user's last data from database giving a user's code **********/ /********** 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_RES *mysql_res;
MYSQL_ROW row; MYSQL_ROW row;
unsigned UnsignedNum; unsigned UnsignedNum;
TL_WhichUsrs_t WhichUsrs = TL_USRS_UNKNOWN; Usr_Who_t Who = Usr_WHO_UNKNOWN;
/***** Get which users from database *****/ /***** Get which users from database *****/
if (DB_QuerySELECT (&mysql_res,"can not get timeline users from user's last data", 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); row = mysql_fetch_row (mysql_res);
/* Get which users */ /* Get who */
if (sscanf (row[0],"%u",&UnsignedNum) == 1) if (sscanf (row[0],"%u",&UnsignedNum) == 1)
if (UnsignedNum < TL_NUM_WHICH_USRS) if (UnsignedNum < Usr_NUM_WHO)
WhichUsrs = (TL_WhichUsrs_t) UnsignedNum; Who = (Usr_Who_t) UnsignedNum;
} }
/***** Free structure that stores the query result *****/ /***** Free structure that stores the query result *****/
DB_FreeMySQLResult (&mysql_res); DB_FreeMySQLResult (&mysql_res);
return WhichUsrs; return Who;
} }
/*****************************************************************************/ /*****************************************************************************/
@ -1260,15 +1260,15 @@ static void TL_SaveWhichUsersInDB (void)
{ {
if (Gbl.Usrs.Me.Logged) if (Gbl.Usrs.Me.Logged)
{ {
if (Gbl.Timeline.WhichUsrs == TL_USRS_UNKNOWN) if (Gbl.Timeline.Who == Usr_WHO_UNKNOWN)
Gbl.Timeline.WhichUsrs = TL_DEFAULT_WHICH_USRS; Gbl.Timeline.Who = TL_DEFAULT_WHO;
/***** Update which users in database *****/ /***** 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", DB_QueryUPDATE ("can not update timeline users in user's last data",
"UPDATE usr_last SET TimelineUsrs=%u" "UPDATE usr_last SET TimelineUsrs=%u"
" WHERE UsrCod=%ld", " WHERE UsrCod=%ld",
(unsigned) Gbl.Timeline.WhichUsrs, (unsigned) Gbl.Timeline.Who,
Gbl.Usrs.Me.UsrDat.UsrCod); Gbl.Usrs.Me.UsrDat.UsrCod);
} }
} }
@ -3834,7 +3834,7 @@ static void TL_PutParamsRemoveNote (void)
if (Gbl.Usrs.Other.UsrDat.UsrCod > 0) if (Gbl.Usrs.Other.UsrDat.UsrCod > 0)
Usr_PutParamOtherUsrCodEncrypted (); Usr_PutParamOtherUsrCodEncrypted ();
else else
TL_PutParamWhichUsrs (); Usr_PutHiddenParamWho (Gbl.Timeline.Who);
TL_PutHiddenParamNotCod (Gbl.Timeline.NotCod); TL_PutHiddenParamNotCod (Gbl.Timeline.NotCod);
} }
@ -4147,7 +4147,7 @@ static void TL_PutParamsRemoveCommment (void)
if (Gbl.Usrs.Other.UsrDat.UsrCod > 0) if (Gbl.Usrs.Other.UsrDat.UsrCod > 0)
Usr_PutParamOtherUsrCodEncrypted (); Usr_PutParamOtherUsrCodEncrypted ();
else else
TL_PutParamWhichUsrs (); Usr_PutHiddenParamWho (Gbl.Timeline.Who);
TL_PutHiddenParamPubCod (Gbl.Timeline.PubCod); TL_PutHiddenParamPubCod (Gbl.Timeline.PubCod);
} }

View File

@ -42,14 +42,7 @@
/******************************** Public types *******************************/ /******************************** Public types *******************************/
/*****************************************************************************/ /*****************************************************************************/
#define TL_NUM_WHICH_USRS 3 #define TL_DEFAULT_WHO Usr_WHO_FOLLOWED
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_NUM_PUB_TYPES 4 #define TL_NUM_PUB_TYPES 4
// If the numbers assigned to each event type change, // 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) void Usr_PutWhoIcon (Usr_Who_t Who)
{ {
extern const char *Txt_WHO[Usr_NUM_WHO];
switch (Who) switch (Who)
{ {
case Usr_WHO_UNKNOWN:
break;
case Usr_WHO_ME: case Usr_WHO_ME:
HTM_INPUT_IMAGE (Gbl.Usrs.Me.PhotoURL[0] ? Gbl.Usrs.Me.PhotoURL : HTM_INPUT_IMAGE (Gbl.Usrs.Me.PhotoURL[0] ? Gbl.Usrs.Me.PhotoURL :
Cfg_URL_ICON_PUBLIC, Cfg_URL_ICON_PUBLIC,
Gbl.Usrs.Me.PhotoURL[0] ? NULL : Gbl.Usrs.Me.PhotoURL[0] ? NULL :
"usr_bl.jpg", "usr_bl.jpg",
"Yo", // TODO: Need translation!!!! Txt_WHO[Who],
"ICO_HIGHLIGHT PHOTO15x20"); "ICO_HIGHLIGHT PHOTO15x20");
break; break;
case Usr_WHO_SOME: case Usr_WHO_SELECTED:
case Usr_WHO_FOLLOWED:
HTM_INPUT_IMAGE (Cfg_URL_ICON_PUBLIC,"user-check.svg", HTM_INPUT_IMAGE (Cfg_URL_ICON_PUBLIC,"user-check.svg",
"Usuarios seleccionados", // TODO: Need translation!!!! Txt_WHO[Who],
"ICO_HIGHLIGHT ICOx20"); "ICO_HIGHLIGHT ICOx20");
break; break;
case Usr_WHO_ALL: case Usr_WHO_ALL:
HTM_INPUT_IMAGE (Cfg_URL_ICON_PUBLIC,"users.svg", HTM_INPUT_IMAGE (Cfg_URL_ICON_PUBLIC,"users.svg",
"Todos", // TODO: Need translation!!!! Txt_WHO[Who],
"ICO_HIGHLIGHT ICOx20"); "ICO_HIGHLIGHT ICOx20");
break; 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_OTHER,
} Usr_MeOrOther_t; } Usr_MeOrOther_t;
#define Usr_NUM_WHO 3 #define Usr_NUM_WHO 5
typedef enum typedef enum
{ {
Usr_WHO_UNKNOWN,
Usr_WHO_ME, Usr_WHO_ME,
Usr_WHO_SOME, Usr_WHO_SELECTED,
Usr_WHO_FOLLOWED,
Usr_WHO_ALL, Usr_WHO_ALL,
} Usr_Who_t; } Usr_Who_t;
#define Usr_WHO_DEFAULT Usr_WHO_ALL #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_ShowTableCellWithUsrData (struct UsrData *UsrDat,unsigned NumRows);
void Usr_PutWhoIcon (Usr_Who_t Who); void Usr_PutWhoIcon (Usr_Who_t Who);
void Usr_PutHiddenParamWho (Usr_Who_t Who);
Usr_Who_t Usr_GetHiddenParamWho (void);
#endif #endif