mirror of
https://github.com/acanas/swad-core.git
synced 2024-06-13 04:04:35 +02:00
Version19.64
This commit is contained in:
parent
a13f3ffc8a
commit
458529afcd
12
swad_HTML.c
12
swad_HTML.c
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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");
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
197
swad_project.c
197
swad_project.c
|
@ -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);
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
28
swad_user.c
28
swad_user.c
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
11
swad_user.h
11
swad_user.h
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue
Block a user