Version19.64

This commit is contained in:
Antonio Cañas Vargas 2019-11-11 15:46:54 +01:00
parent a13f3ffc8a
commit 458529afcd
9 changed files with 176 additions and 98 deletions

View File

@ -1188,11 +1188,15 @@ void HTM_INPUT_BUTTON (const char *Name,const char *Value,const char *Attr)
Name,Value,Attr); Name,Value,Attr);
} }
void HTM_INPUT_IMAGE (const char *ImgFile,const char *Title,const char *Class) void HTM_INPUT_IMAGE (const char *URL,const char *Icon,const char *Title,const char *Class)
{ {
fprintf (Gbl.F.Out,"<input type=\"image\" src=\"%s/%s\"" fprintf (Gbl.F.Out,"<input type=\"image\" src=\"%s",URL);
" alt=\"%s\" title=\"%s\" class=\"%s\" />", if (Icon)
Cfg_URL_ICON_PUBLIC,ImgFile, if (Icon[0])
fprintf (Gbl.F.Out,"/%s",Icon);
fprintf (Gbl.F.Out,"\"");
fprintf (Gbl.F.Out," alt=\"%s\" title=\"%s\" class=\"%s\" />",
Title,Title,Class); Title,Title,Class);
} }

View File

@ -123,7 +123,7 @@ void HTM_INPUT_URL (const char *Name,const char *Value,bool SubmitOnChange,
void HTM_INPUT_FILE (const char *Name,const char *Accept,bool SubmitOnChange, void HTM_INPUT_FILE (const char *Name,const char *Accept,bool SubmitOnChange,
const char *fmt,...); const char *fmt,...);
void HTM_INPUT_BUTTON (const char *Name,const char *Value,const char *Attr); void HTM_INPUT_BUTTON (const char *Name,const char *Value,const char *Attr);
void HTM_INPUT_IMAGE (const char *ImgFile,const char *Title,const char *Class); void HTM_INPUT_IMAGE (const char *URL,const char *Icon,const char *Title,const char *Class);
void HTM_INPUT_PASSWORD (const char *Name,const char *PlaceHolder, void HTM_INPUT_PASSWORD (const char *Name,const char *PlaceHolder,
const char *AutoComplete,bool Required); const char *AutoComplete,bool Required);
void HTM_INPUT_NUMBER (const char *Name,long Min,long Max,long Value,bool Disabled); void HTM_INPUT_NUMBER (const char *Name,long Min,long Max,long Value,bool Disabled);

View File

@ -487,7 +487,7 @@ 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.63.2 (2019-11-11)" #define Log_PLATFORM_VERSION "SWAD 19.64 (2019-11-11)"
#define CSS_FILE "swad19.47.css" #define CSS_FILE "swad19.47.css"
#define JS_FILE "swad19.39.js" #define JS_FILE "swad19.39.js"
/* /*
@ -496,6 +496,7 @@ ps2pdf source.ps destination.pdf
// 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.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)
Version 19.63: Nov 11, 2019 Code refactoring in HTML. (246384 lines) Version 19.63: Nov 11, 2019 Code refactoring in HTML. (246384 lines)

View File

@ -363,7 +363,7 @@ void Ico_PutDivIconLink (const char *DivClass,const char *Icon,const char *Title
void Ico_PutIconLink (const char *Icon,const char *Title) void Ico_PutIconLink (const char *Icon,const char *Title)
{ {
HTM_INPUT_IMAGE (Icon,Title,"CONTEXT_OPT ICO_HIGHLIGHT CONTEXT_ICO_16x16"); HTM_INPUT_IMAGE (Cfg_URL_ICON_PUBLIC,Icon,Title,"CONTEXT_OPT ICO_HIGHLIGHT CONTEXT_ICO_16x16");
} }
/*****************************************************************************/ /*****************************************************************************/
@ -385,7 +385,7 @@ void Ico_PutIconTextLink (const char *Icon,const char *Text)
void Ico_PutSettingIconLink (const char *Icon,const char *Title) void Ico_PutSettingIconLink (const char *Icon,const char *Title)
{ {
HTM_INPUT_IMAGE (Icon,Title,"ICO_HIGHLIGHT ICOx20"); HTM_INPUT_IMAGE (Cfg_URL_ICON_PUBLIC,Icon,Title,"ICO_HIGHLIGHT ICOx20");
} }
/*****************************************************************************/ /*****************************************************************************/

View File

@ -58,7 +58,7 @@ extern struct Globals Gbl;
/*****************************************************************************/ /*****************************************************************************/
/***** Parameters used to filter listing of projects *****/ /***** Parameters used to filter listing of projects *****/
#define Prj_PARAM_MY__ALL_NAME "My_All" #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,7 +134,7 @@ 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_PutHiddenParamMy_All (Prj_WhoseProjects_t My_All); 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);
@ -407,7 +407,7 @@ 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) static void Prj_ShowFormToFilterByMy_All (void)
{ {
extern const char *Txt_PROJECT_MY_ALL_PROJECTS[Prj_NUM_WHOSE_PROJECTS]; extern const char *Txt_PROJECT_MY_ALL_PROJECTS[Prj_NUM_WHOSE_PROJECTS];
@ -444,6 +444,39 @@ static void Prj_ShowFormToFilterByMy_All (void)
} }
Set_EndOneSettingSelector (); Set_EndOneSettingSelector ();
} }
*/
static void Prj_ShowFormToFilterByMy_All (void)
{
struct Prj_Filter Filter;
Usr_Who_t Who;
Set_StartOneSettingSelector ();
for (Who = (Usr_Who_t) 0;
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 ();
}
Set_EndOneSettingSelector ();
}
/*****************************************************************************/ /*****************************************************************************/
/*********** Show form to select assigned / non-assigned projects ************/ /*********** Show form to select assigned / non-assigned projects ************/
@ -464,7 +497,7 @@ static void Prj_ShowFormToFilterByAssign (void)
(Gbl.Prjs.Filter.Assign & (1 << Assign)) ? "PREF_ON" : (Gbl.Prjs.Filter.Assign & (1 << Assign)) ? "PREF_ON" :
"PREF_OFF"); "PREF_OFF");
Frm_StartForm (ActSeePrj); Frm_StartForm (ActSeePrj);
Filter.My_All = Gbl.Prjs.Filter.My_All; Filter.Who = Gbl.Prjs.Filter.Who;
Filter.Assign = Gbl.Prjs.Filter.Assign ^ (1 << Assign); // Toggle Filter.Assign = Gbl.Prjs.Filter.Assign ^ (1 << Assign); // Toggle
Filter.Hidden = Gbl.Prjs.Filter.Hidden; Filter.Hidden = Gbl.Prjs.Filter.Hidden;
Filter.Faulti = Gbl.Prjs.Filter.Faulti; Filter.Faulti = Gbl.Prjs.Filter.Faulti;
@ -505,7 +538,7 @@ static void Prj_ShowFormToFilterByHidden (void)
(Gbl.Prjs.Filter.Hidden & (1 << HidVis)) ? "PREF_ON" : (Gbl.Prjs.Filter.Hidden & (1 << HidVis)) ? "PREF_ON" :
"PREF_OFF"); "PREF_OFF");
Frm_StartForm (ActSeePrj); Frm_StartForm (ActSeePrj);
Filter.My_All = Gbl.Prjs.Filter.My_All; Filter.Who = Gbl.Prjs.Filter.Who;
Filter.Assign = Gbl.Prjs.Filter.Assign; Filter.Assign = Gbl.Prjs.Filter.Assign;
Filter.Hidden = Gbl.Prjs.Filter.Hidden ^ (1 << HidVis); // Toggle Filter.Hidden = Gbl.Prjs.Filter.Hidden ^ (1 << HidVis); // Toggle
Filter.Faulti = Gbl.Prjs.Filter.Faulti; Filter.Faulti = Gbl.Prjs.Filter.Faulti;
@ -546,7 +579,7 @@ static void Prj_ShowFormToFilterByWarning (void)
(Gbl.Prjs.Filter.Faulti & (1 << Faultiness)) ? "PREF_ON" : (Gbl.Prjs.Filter.Faulti & (1 << Faultiness)) ? "PREF_ON" :
"PREF_OFF"); "PREF_OFF");
Frm_StartForm (ActSeePrj); Frm_StartForm (ActSeePrj);
Filter.My_All = Gbl.Prjs.Filter.My_All; Filter.Who = Gbl.Prjs.Filter.Who;
Filter.Assign = Gbl.Prjs.Filter.Assign; Filter.Assign = Gbl.Prjs.Filter.Assign;
Filter.Hidden = Gbl.Prjs.Filter.Hidden; Filter.Hidden = Gbl.Prjs.Filter.Hidden;
Filter.Faulti = Gbl.Prjs.Filter.Faulti ^ (1 << Faultiness); // Toggle Filter.Faulti = Gbl.Prjs.Filter.Faulti ^ (1 << Faultiness); // Toggle
@ -575,7 +608,7 @@ static void Prj_ShowFormToFilterByDpt (void)
/***** Begin form *****/ /***** Begin form *****/
HTM_DIV_Begin (NULL); HTM_DIV_Begin (NULL);
Frm_StartForm (ActSeePrj); Frm_StartForm (ActSeePrj);
Filter.My_All = Gbl.Prjs.Filter.My_All; Filter.Who = Gbl.Prjs.Filter.Who;
Filter.Assign = Gbl.Prjs.Filter.Assign; Filter.Assign = Gbl.Prjs.Filter.Assign;
Filter.Hidden = Gbl.Prjs.Filter.Hidden; Filter.Hidden = Gbl.Prjs.Filter.Hidden;
Filter.Faulti = Gbl.Prjs.Filter.Faulti; Filter.Faulti = Gbl.Prjs.Filter.Faulti;
@ -620,8 +653,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->My_All != Prj_FILTER_WHOSE_PROJECTS_DEFAULT) if (Filter->Who != Prj_FILTER_WHOSE_PROJECTS_DEFAULT)
Prj_PutHiddenParamMy_All (Filter->My_All); Prj_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))
@ -659,9 +692,9 @@ void Prj_PutParams (struct Prj_Filter *Filter,
/*********************** Put hidden params for projects **********************/ /*********************** Put hidden params for projects **********************/
/*****************************************************************************/ /*****************************************************************************/
static void Prj_PutHiddenParamMy_All (Prj_WhoseProjects_t My_All) static void Prj_PutHiddenParamWho (Usr_Who_t Who)
{ {
Par_PutHiddenParamUnsigned (NULL,Prj_PARAM_MY__ALL_NAME,(unsigned) My_All); Par_PutHiddenParamUnsigned (NULL,Prj_PARAM_WHO_NAME,(unsigned) Who);
} }
static void Prj_PutHiddenParamAssign (unsigned Assign) static void Prj_PutHiddenParamAssign (unsigned Assign)
@ -690,10 +723,10 @@ static void Prj_PutHiddenParamDptCod (long DptCod)
static void Prj_GetHiddenParamMy_All (void) static void Prj_GetHiddenParamMy_All (void)
{ {
Gbl.Prjs.Filter.My_All = (Prj_WhoseProjects_t) Par_GetParToUnsignedLong (Prj_PARAM_MY__ALL_NAME, Gbl.Prjs.Filter.Who = (Usr_Who_t) Par_GetParToUnsignedLong (Prj_PARAM_WHO_NAME,
0, 0,
Prj_NUM_WHOSE_PROJECTS - 1, Usr_NUM_WHO - 1,
Prj_FILTER_WHOSE_PROJECTS_DEFAULT); Prj_FILTER_WHOSE_PROJECTS_DEFAULT);
} }
static void Prj_GetHiddenParamPreNon (void) static void Prj_GetHiddenParamPreNon (void)
@ -2674,70 +2707,76 @@ void Prj_GetListProjects (void)
} }
/* Query */ /* Query */
if (Gbl.Prjs.Filter.My_All == Prj_MY__PROJECTS) switch (Gbl.Prjs.Filter.Who)
switch (Gbl.Prjs.SelectedOrder) {
{ case Usr_WHO_ME:
case Prj_ORDER_START_TIME: switch (Gbl.Prjs.SelectedOrder)
case Prj_ORDER_END_TIME: {
case Prj_ORDER_TITLE: case Prj_ORDER_START_TIME:
NumRows = DB_QuerySELECT (&mysql_res,"can not get projects", case Prj_ORDER_END_TIME:
"SELECT projects.PrjCod" case Prj_ORDER_TITLE:
" FROM projects,prj_usr" NumRows = DB_QuerySELECT (&mysql_res,"can not get projects",
" WHERE projects.CrsCod=%ld" "SELECT projects.PrjCod"
"%s%s%s" " FROM projects,prj_usr"
" AND projects.PrjCod=prj_usr.PrjCod" " WHERE projects.CrsCod=%ld"
" AND prj_usr.UsrCod=%ld" "%s%s%s"
" ORDER BY %s", " AND projects.PrjCod=prj_usr.PrjCod"
Gbl.Hierarchy.Crs.CrsCod, " AND prj_usr.UsrCod=%ld"
PreNonSubQuery,HidVisSubQuery,DptCodSubQuery, " ORDER BY %s",
Gbl.Usrs.Me.UsrDat.UsrCod, Gbl.Hierarchy.Crs.CrsCod,
OrderBySubQuery[Gbl.Prjs.SelectedOrder]); PreNonSubQuery,HidVisSubQuery,DptCodSubQuery,
break; Gbl.Usrs.Me.UsrDat.UsrCod,
case Prj_ORDER_DEPARTMENT: OrderBySubQuery[Gbl.Prjs.SelectedOrder]);
NumRows = DB_QuerySELECT (&mysql_res,"can not get projects", break;
"SELECT projects.PrjCod" case Prj_ORDER_DEPARTMENT:
" FROM prj_usr,projects LEFT JOIN departments" NumRows = DB_QuerySELECT (&mysql_res,"can not get projects",
" ON projects.DptCod=departments.DptCod" "SELECT projects.PrjCod"
" WHERE projects.CrsCod=%ld" " FROM prj_usr,projects LEFT JOIN departments"
"%s%s%s" " ON projects.DptCod=departments.DptCod"
" AND projects.PrjCod=prj_usr.PrjCod" " WHERE projects.CrsCod=%ld"
" AND prj_usr.UsrCod=%ld" "%s%s%s"
" ORDER BY %s", " AND projects.PrjCod=prj_usr.PrjCod"
Gbl.Hierarchy.Crs.CrsCod, " AND prj_usr.UsrCod=%ld"
PreNonSubQuery,HidVisSubQuery,DptCodSubQuery, " ORDER BY %s",
Gbl.Usrs.Me.UsrDat.UsrCod, Gbl.Hierarchy.Crs.CrsCod,
OrderBySubQuery[Gbl.Prjs.SelectedOrder]); PreNonSubQuery,HidVisSubQuery,DptCodSubQuery,
break; Gbl.Usrs.Me.UsrDat.UsrCod,
} OrderBySubQuery[Gbl.Prjs.SelectedOrder]);
else // Gbl.Prjs.My_All == Prj_ALL_PROJECTS break;
switch (Gbl.Prjs.SelectedOrder) }
{ break;
case Prj_ORDER_START_TIME: case Usr_WHO_SOME:
case Prj_ORDER_END_TIME: case Usr_WHO_ALL:
case Prj_ORDER_TITLE: switch (Gbl.Prjs.SelectedOrder)
NumRows = DB_QuerySELECT (&mysql_res,"can not get projects", {
"SELECT projects.PrjCod" case Prj_ORDER_START_TIME:
" FROM projects" case Prj_ORDER_END_TIME:
" WHERE projects.CrsCod=%ld" case Prj_ORDER_TITLE:
"%s%s%s" NumRows = DB_QuerySELECT (&mysql_res,"can not get projects",
" ORDER BY %s", "SELECT projects.PrjCod"
Gbl.Hierarchy.Crs.CrsCod, " FROM projects"
PreNonSubQuery,HidVisSubQuery,DptCodSubQuery, " WHERE projects.CrsCod=%ld"
OrderBySubQuery[Gbl.Prjs.SelectedOrder]); "%s%s%s"
break; " ORDER BY %s",
case Prj_ORDER_DEPARTMENT: Gbl.Hierarchy.Crs.CrsCod,
NumRows = DB_QuerySELECT (&mysql_res,"can not get projects", PreNonSubQuery,HidVisSubQuery,DptCodSubQuery,
"SELECT projects.PrjCod" OrderBySubQuery[Gbl.Prjs.SelectedOrder]);
" FROM projects LEFT JOIN departments" break;
" ON projects.DptCod=departments.DptCod" case Prj_ORDER_DEPARTMENT:
" WHERE projects.CrsCod=%ld" NumRows = DB_QuerySELECT (&mysql_res,"can not get projects",
"%s%s%s" "SELECT projects.PrjCod"
" ORDER BY %s", " FROM projects LEFT JOIN departments"
Gbl.Hierarchy.Crs.CrsCod, " ON projects.DptCod=departments.DptCod"
PreNonSubQuery,HidVisSubQuery,DptCodSubQuery, " WHERE projects.CrsCod=%ld"
OrderBySubQuery[Gbl.Prjs.SelectedOrder]); "%s%s%s"
break; " ORDER BY %s",
} Gbl.Hierarchy.Crs.CrsCod,
PreNonSubQuery,HidVisSubQuery,DptCodSubQuery,
OrderBySubQuery[Gbl.Prjs.SelectedOrder]);
break;
}
break;
}
/* Free allocated memory for subqueries */ /* Free allocated memory for subqueries */
free (PreNonSubQuery); free (PreNonSubQuery);

View File

@ -40,14 +40,8 @@
#define Prj_EDITABLE_DEFAULT true #define Prj_EDITABLE_DEFAULT true
/***** Filters to list projects *****/ /***** Filters to list projects *****/
/* My projects / all projects */ /* My projects / selected users' projects / all projects */
#define Prj_NUM_WHOSE_PROJECTS 2 #define Prj_FILTER_WHOSE_PROJECTS_DEFAULT Usr_WHO_ME
typedef enum
{
Prj_MY__PROJECTS,
Prj_ALL_PROJECTS,
} Prj_WhoseProjects_t;
#define Prj_FILTER_WHOSE_PROJECTS_DEFAULT Prj_MY__PROJECTS
/* Assigned projects / non-assigned projects */ /* Assigned projects / non-assigned projects */
#define Prj_NUM_ASSIGNED_NONASSIG 2 #define Prj_NUM_ASSIGNED_NONASSIG 2
@ -95,7 +89,8 @@ 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 // Prj_WhoseProjects_t My_All; // Show my / 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,7 +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] = const char *Txt_PROJECT_MY_ALL_PROJECTS[Prj_NUM_WHOSE_PROJECTS] =
{ {
// Prj_MY__PROJECTS // Prj_MY__PROJECTS
@ -30989,7 +30989,7 @@ const char *Txt_PROJECT_MY_ALL_PROJECTS[Prj_NUM_WHOSE_PROJECTS] =
"Todos os projetos" "Todos os projetos"
#endif #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

View File

@ -9725,3 +9725,31 @@ void Usr_ShowTableCellWithUsrData (struct UsrData *UsrDat,unsigned NumRows)
HTM_TD_End (); HTM_TD_End ();
} }
/*****************************************************************************/
/********** Show a setting selector for me / selected users / all ************/
/*****************************************************************************/
void Usr_PutWhoIcon (Usr_Who_t Who)
{
switch (Who)
{
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!!!!
"ICO_HIGHLIGHT PHOTO15x20");
break;
case Usr_WHO_SOME:
HTM_INPUT_IMAGE (Cfg_URL_ICON_PUBLIC,"user-check.svg",
"Usuarios seleccionados", // TODO: Need translation!!!!
"ICO_HIGHLIGHT ICOx20");
break;
case Usr_WHO_ALL:
HTM_INPUT_IMAGE (Cfg_URL_ICON_PUBLIC,"users.svg",
"Todos", // TODO: Need translation!!!!
"ICO_HIGHLIGHT ICOx20");
break;
}
}

View File

@ -142,6 +142,15 @@ typedef enum
Usr_OTHER, Usr_OTHER,
} Usr_MeOrOther_t; } Usr_MeOrOther_t;
#define Usr_NUM_WHO 3
typedef enum
{
Usr_WHO_ME,
Usr_WHO_SOME,
Usr_WHO_ALL,
} Usr_Who_t;
#define Usr_WHO_DEFAULT Usr_WHO_ALL
// Related with user's data // Related with user's data
struct UsrData struct UsrData
{ {
@ -487,4 +496,6 @@ 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);
#endif #endif