mirror of https://github.com/acanas/swad-core.git
Version19.37
This commit is contained in:
parent
65fdd65f53
commit
c0d40cb834
|
@ -487,14 +487,15 @@ 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.36 (2019-10-15)"
|
#define Log_PLATFORM_VERSION "SWAD 19.37 (2019-10-16)"
|
||||||
#define CSS_FILE "swad19.36.css"
|
#define CSS_FILE "swad19.36.css"
|
||||||
#define JS_FILE "swad19.35.js"
|
#define JS_FILE "swad19.35.js"
|
||||||
/*
|
/*
|
||||||
// TODO: Perico: poner un candado de bloqueo de creación/edición de proyectos (por ejemplo en asignaturas obsoletas)
|
// TODO: Perico: poner un candado de bloqueo de creación/edición de proyectos (por ejemplo en asignaturas obsoletas)
|
||||||
// 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.)
|
||||||
|
|
||||||
Version 19.36: Oct 15, 2019 Some CSS styles converted to CSS classes. (245424 lines)
|
Version 19.37: Oct 16, 2019 New filter to select projects with problems. Not yet filtered. (245543 lines)
|
||||||
|
Version 19.36: Oct 16, 2019 Some CSS styles converted to CSS classes. (245424 lines)
|
||||||
Version 19.35: Oct 15, 2019 Changes in CSS. (245373 lines)
|
Version 19.35: Oct 15, 2019 Changes in CSS. (245373 lines)
|
||||||
Version 19.34.2: Oct 14, 2019 Fixed bug in IDs.
|
Version 19.34.2: Oct 14, 2019 Fixed bug in IDs.
|
||||||
Fixed bug in timetable.
|
Fixed bug in timetable.
|
||||||
|
|
|
@ -61,6 +61,7 @@ extern struct Globals Gbl;
|
||||||
#define Prj_PARAM_MY__ALL_NAME "My_All"
|
#define Prj_PARAM_MY__ALL_NAME "My_All"
|
||||||
#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"
|
||||||
|
|
||||||
/***** Type of view when writing one project *****/
|
/***** Type of view when writing one project *****/
|
||||||
typedef enum
|
typedef enum
|
||||||
|
@ -121,16 +122,19 @@ static void Prj_ShowProjectsInCurrentPage (void);
|
||||||
static void Prj_ShowFormToFilterByMy_All (void);
|
static void Prj_ShowFormToFilterByMy_All (void);
|
||||||
static void Prj_ShowFormToFilterByPreassignedNonPreassig (void);
|
static void Prj_ShowFormToFilterByPreassignedNonPreassig (void);
|
||||||
static void Prj_ShowFormToFilterByHidden (void);
|
static void Prj_ShowFormToFilterByHidden (void);
|
||||||
|
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_PutHiddenParamMy_All (Prj_WhoseProjects_t My_All);
|
||||||
static void Prj_PutHiddenParamPreNon (unsigned PreNon);
|
static void Prj_PutHiddenParamPreNon (unsigned PreNon);
|
||||||
static void Prj_PutHiddenParamHidVis (unsigned HidVis);
|
static void Prj_PutHiddenParamHidVis (unsigned HidVis);
|
||||||
|
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_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_GetHiddenParamDptCod (void);
|
static void Prj_GetHiddenParamDptCod (void);
|
||||||
static void Prj_GetParams (void);
|
static void Prj_GetParams (void);
|
||||||
|
|
||||||
|
@ -312,7 +316,9 @@ static void Prj_ShowProjectsInCurrentPage (void)
|
||||||
default: // Students will see only visible projects
|
default: // Students will see only visible projects
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
Prj_ShowFormToFilterByWarning ();
|
||||||
Set_EndSettingsHead ();
|
Set_EndSettingsHead ();
|
||||||
|
|
||||||
/* 2nd. row */
|
/* 2nd. row */
|
||||||
Prj_ShowFormToFilterByDpt ();
|
Prj_ShowFormToFilterByDpt ();
|
||||||
|
|
||||||
|
@ -411,6 +417,7 @@ static void Prj_ShowFormToFilterByMy_All (void)
|
||||||
Filter.My_All = My_All;
|
Filter.My_All = My_All;
|
||||||
Filter.PreNon = Gbl.Prjs.Filter.PreNon;
|
Filter.PreNon = Gbl.Prjs.Filter.PreNon;
|
||||||
Filter.HidVis = Gbl.Prjs.Filter.HidVis;
|
Filter.HidVis = Gbl.Prjs.Filter.HidVis;
|
||||||
|
Filter.Faulti = Gbl.Prjs.Filter.Faulti;
|
||||||
Filter.DptCod = Gbl.Prjs.Filter.DptCod;
|
Filter.DptCod = Gbl.Prjs.Filter.DptCod;
|
||||||
Prj_PutParams (&Filter,
|
Prj_PutParams (&Filter,
|
||||||
Gbl.Prjs.SelectedOrder,
|
Gbl.Prjs.SelectedOrder,
|
||||||
|
@ -446,6 +453,7 @@ static void Prj_ShowFormToFilterByPreassignedNonPreassig (void)
|
||||||
Filter.My_All = Gbl.Prjs.Filter.My_All;
|
Filter.My_All = Gbl.Prjs.Filter.My_All;
|
||||||
Filter.PreNon = Gbl.Prjs.Filter.PreNon ^ (1 << PreNon); // Toggle
|
Filter.PreNon = Gbl.Prjs.Filter.PreNon ^ (1 << PreNon); // Toggle
|
||||||
Filter.HidVis = Gbl.Prjs.Filter.HidVis;
|
Filter.HidVis = Gbl.Prjs.Filter.HidVis;
|
||||||
|
Filter.Faulti = Gbl.Prjs.Filter.Faulti;
|
||||||
Filter.DptCod = Gbl.Prjs.Filter.DptCod;
|
Filter.DptCod = Gbl.Prjs.Filter.DptCod;
|
||||||
Prj_PutParams (&Filter,
|
Prj_PutParams (&Filter,
|
||||||
Gbl.Prjs.SelectedOrder,
|
Gbl.Prjs.SelectedOrder,
|
||||||
|
@ -486,6 +494,7 @@ static void Prj_ShowFormToFilterByHidden (void)
|
||||||
Filter.My_All = Gbl.Prjs.Filter.My_All;
|
Filter.My_All = Gbl.Prjs.Filter.My_All;
|
||||||
Filter.PreNon = Gbl.Prjs.Filter.PreNon;
|
Filter.PreNon = Gbl.Prjs.Filter.PreNon;
|
||||||
Filter.HidVis = Gbl.Prjs.Filter.HidVis ^ (1 << HidVis); // Toggle
|
Filter.HidVis = Gbl.Prjs.Filter.HidVis ^ (1 << HidVis); // Toggle
|
||||||
|
Filter.Faulti = Gbl.Prjs.Filter.Faulti;
|
||||||
Filter.DptCod = Gbl.Prjs.Filter.DptCod;
|
Filter.DptCod = Gbl.Prjs.Filter.DptCod;
|
||||||
Prj_PutParams (&Filter,
|
Prj_PutParams (&Filter,
|
||||||
Gbl.Prjs.SelectedOrder,
|
Gbl.Prjs.SelectedOrder,
|
||||||
|
@ -499,6 +508,47 @@ static void Prj_ShowFormToFilterByHidden (void)
|
||||||
Set_EndOneSettingSelector ();
|
Set_EndOneSettingSelector ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/************** Show form to select faulty/faultless projects ****************/
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
static void Prj_ShowFormToFilterByWarning (void)
|
||||||
|
{
|
||||||
|
extern const char *Txt_PROJECT_FAULTY_FAULTLESS_PROJECTS[Prj_NUM_FAULTINESS];
|
||||||
|
struct Prj_Filter Filter;
|
||||||
|
Prj_Faultiness_t Faultiness;
|
||||||
|
static const char *FaultinessIcon[Prj_NUM_FAULTINESS] =
|
||||||
|
{
|
||||||
|
"exclamation-triangle.svg", // Prj_FAULTY
|
||||||
|
"check-circle.svg", // Prj_FAULTLESS
|
||||||
|
};
|
||||||
|
|
||||||
|
Set_StartOneSettingSelector ();
|
||||||
|
for (Faultiness = (Prj_Faultiness_t) 0;
|
||||||
|
Faultiness <= (Prj_Faultiness_t) (Prj_NUM_FAULTINESS - 1);
|
||||||
|
Faultiness++)
|
||||||
|
{
|
||||||
|
fprintf (Gbl.F.Out,"<div class=\"%s\">",
|
||||||
|
(Gbl.Prjs.Filter.Faulti & (1 << Faultiness)) ? "PREF_ON" :
|
||||||
|
"PREF_OFF");
|
||||||
|
Frm_StartForm (ActSeePrj);
|
||||||
|
Filter.My_All = Gbl.Prjs.Filter.My_All;
|
||||||
|
Filter.PreNon = Gbl.Prjs.Filter.PreNon;
|
||||||
|
Filter.HidVis = Gbl.Prjs.Filter.HidVis;
|
||||||
|
Filter.Faulti = Gbl.Prjs.Filter.Faulti ^ (1 << Faultiness); // Toggle
|
||||||
|
Filter.DptCod = Gbl.Prjs.Filter.DptCod;
|
||||||
|
Prj_PutParams (&Filter,
|
||||||
|
Gbl.Prjs.SelectedOrder,
|
||||||
|
Gbl.Prjs.CurrentPage,
|
||||||
|
-1L);
|
||||||
|
Ico_PutSettingIconLink (FaultinessIcon[Faultiness],
|
||||||
|
Txt_PROJECT_FAULTY_FAULTLESS_PROJECTS[Faultiness]);
|
||||||
|
Frm_EndForm ();
|
||||||
|
fprintf (Gbl.F.Out,"</div>");
|
||||||
|
}
|
||||||
|
Set_EndOneSettingSelector ();
|
||||||
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/*************** Show form to filter projects by department ******************/
|
/*************** Show form to filter projects by department ******************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -514,6 +564,7 @@ static void Prj_ShowFormToFilterByDpt (void)
|
||||||
Filter.My_All = Gbl.Prjs.Filter.My_All;
|
Filter.My_All = Gbl.Prjs.Filter.My_All;
|
||||||
Filter.PreNon = Gbl.Prjs.Filter.PreNon;
|
Filter.PreNon = Gbl.Prjs.Filter.PreNon;
|
||||||
Filter.HidVis = Gbl.Prjs.Filter.HidVis;
|
Filter.HidVis = Gbl.Prjs.Filter.HidVis;
|
||||||
|
Filter.Faulti = Gbl.Prjs.Filter.Faulti;
|
||||||
Filter.DptCod = Prj_FILTER_DPT_DEFAULT; // Do not put department parameter here
|
Filter.DptCod = Prj_FILTER_DPT_DEFAULT; // Do not put department parameter here
|
||||||
Prj_PutParams (&Filter,
|
Prj_PutParams (&Filter,
|
||||||
Gbl.Prjs.SelectedOrder,
|
Gbl.Prjs.SelectedOrder,
|
||||||
|
@ -566,6 +617,10 @@ void Prj_PutParams (struct Prj_Filter *Filter,
|
||||||
(unsigned) Prj_FILTER_VISIBL_DEFAULT))
|
(unsigned) Prj_FILTER_VISIBL_DEFAULT))
|
||||||
Prj_PutHiddenParamHidVis (Filter->HidVis);
|
Prj_PutHiddenParamHidVis (Filter->HidVis);
|
||||||
|
|
||||||
|
if (Filter->Faulti != ((unsigned) Prj_FILTER_FAULTY_DEFAULT |
|
||||||
|
(unsigned) Prj_FILTER_FAULTLESS_DEFAULT))
|
||||||
|
Prj_PutHiddenParamFaulti (Filter->Faulti);
|
||||||
|
|
||||||
if (Filter->DptCod != Prj_FILTER_DPT_DEFAULT)
|
if (Filter->DptCod != Prj_FILTER_DPT_DEFAULT)
|
||||||
Prj_PutHiddenParamDptCod (Filter->DptCod);
|
Prj_PutHiddenParamDptCod (Filter->DptCod);
|
||||||
|
|
||||||
|
@ -605,6 +660,11 @@ static void Prj_PutHiddenParamHidVis (unsigned HidVis)
|
||||||
Par_PutHiddenParamUnsigned (Prj_PARAM_HID_VIS_NAME,HidVis);
|
Par_PutHiddenParamUnsigned (Prj_PARAM_HID_VIS_NAME,HidVis);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void Prj_PutHiddenParamFaulti (unsigned Faulti)
|
||||||
|
{
|
||||||
|
Par_PutHiddenParamUnsigned (Prj_PARAM_FAULTIN_NAME,Faulti);
|
||||||
|
}
|
||||||
|
|
||||||
static void Prj_PutHiddenParamDptCod (long DptCod)
|
static void Prj_PutHiddenParamDptCod (long DptCod)
|
||||||
{
|
{
|
||||||
Par_PutHiddenParamUnsigned (Dpt_PARAM_DPT_COD_NAME,DptCod);
|
Par_PutHiddenParamUnsigned (Dpt_PARAM_DPT_COD_NAME,DptCod);
|
||||||
|
@ -655,6 +715,16 @@ static void Prj_GetHiddenParamHidVis (void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void Prj_GetHiddenParamFaulti (void)
|
||||||
|
{
|
||||||
|
Gbl.Prjs.Filter.Faulti = (unsigned) Par_GetParToUnsignedLong (Prj_PARAM_FAULTIN_NAME,
|
||||||
|
0,
|
||||||
|
(1 << Prj_FAULTY) |
|
||||||
|
(1 << Prj_FAULTLESS),
|
||||||
|
(unsigned) Prj_FILTER_FAULTY_DEFAULT |
|
||||||
|
(unsigned) Prj_FILTER_FAULTLESS_DEFAULT);
|
||||||
|
}
|
||||||
|
|
||||||
static void Prj_GetHiddenParamDptCod (void)
|
static void Prj_GetHiddenParamDptCod (void)
|
||||||
{
|
{
|
||||||
Gbl.Prjs.Filter.DptCod = Par_GetParToLong (Dpt_PARAM_DPT_COD_NAME);
|
Gbl.Prjs.Filter.DptCod = Par_GetParToLong (Dpt_PARAM_DPT_COD_NAME);
|
||||||
|
@ -670,6 +740,7 @@ static void Prj_GetParams (void)
|
||||||
Prj_GetHiddenParamMy_All ();
|
Prj_GetHiddenParamMy_All ();
|
||||||
Prj_GetHiddenParamPreNon ();
|
Prj_GetHiddenParamPreNon ();
|
||||||
Prj_GetHiddenParamHidVis ();
|
Prj_GetHiddenParamHidVis ();
|
||||||
|
Prj_GetHiddenParamFaulti ();
|
||||||
Prj_GetHiddenParamDptCod ();
|
Prj_GetHiddenParamDptCod ();
|
||||||
|
|
||||||
/***** Get order and page *****/
|
/***** Get order and page *****/
|
||||||
|
|
|
@ -76,6 +76,16 @@ typedef enum
|
||||||
#define Prj_FILTER_HIDDEN_DEFAULT (1 << Prj_HIDDEN) // on
|
#define Prj_FILTER_HIDDEN_DEFAULT (1 << Prj_HIDDEN) // on
|
||||||
#define Prj_FILTER_VISIBL_DEFAULT (1 << Prj_VISIBL) // on
|
#define Prj_FILTER_VISIBL_DEFAULT (1 << Prj_VISIBL) // on
|
||||||
|
|
||||||
|
/* Faulty/faultless project */
|
||||||
|
#define Prj_NUM_FAULTINESS 2
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
Prj_FAULTY = 0,
|
||||||
|
Prj_FAULTLESS = 1,
|
||||||
|
} Prj_Faultiness_t;
|
||||||
|
#define Prj_FILTER_FAULTY_DEFAULT (1 << Prj_FAULTY) // on
|
||||||
|
#define Prj_FILTER_FAULTLESS_DEFAULT (1 << Prj_FAULTLESS) // on
|
||||||
|
|
||||||
/* Project department */
|
/* Project department */
|
||||||
#define Prj_FILTER_DPT_DEFAULT -1L // Any department
|
#define Prj_FILTER_DPT_DEFAULT -1L // Any department
|
||||||
|
|
||||||
|
@ -85,6 +95,7 @@ struct Prj_Filter
|
||||||
Prj_WhoseProjects_t My_All; // Show my / all projects
|
Prj_WhoseProjects_t My_All; // Show my / all projects
|
||||||
unsigned PreNon; // Show preassigned / non preassigned projects
|
unsigned PreNon; // Show preassigned / non preassigned projects
|
||||||
unsigned HidVis; // Show hidden / visible projects
|
unsigned HidVis; // Show hidden / visible projects
|
||||||
|
unsigned Faulti; // Show faulty / faultless projects
|
||||||
long DptCod; // Show projects of this department
|
long DptCod; // Show projects of this department
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
46
swad_text.c
46
swad_text.c
|
@ -30859,7 +30859,6 @@ const char *Txt_PROJECT_ROLES_PLURAL_abc[Prj_NUM_ROLES_IN_PROJECT] =
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
const char *Txt_PROJECT_STATUS[Prj_NUM_PROPOSAL_TYPES] =
|
const char *Txt_PROJECT_STATUS[Prj_NUM_PROPOSAL_TYPES] =
|
||||||
{
|
{
|
||||||
#if L==1 // ca // Prj_PROPOSAL_NEW
|
#if L==1 // ca // Prj_PROPOSAL_NEW
|
||||||
|
@ -30923,6 +30922,51 @@ const char *Txt_PROJECT_STATUS[Prj_NUM_PROPOSAL_TYPES] =
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const char *Txt_PROJECT_FAULTY_FAULTLESS_PROJECTS[Prj_NUM_FAULTINESS] =
|
||||||
|
{
|
||||||
|
// Prj_FAULTY
|
||||||
|
#if L==1 // ca
|
||||||
|
"Projectes defectuosos"
|
||||||
|
#elif L==2 // de
|
||||||
|
"Fehlerhafte Projekte"
|
||||||
|
#elif L==3 // en
|
||||||
|
"Faulty projects"
|
||||||
|
#elif L==4 // es
|
||||||
|
"Proyectos defectuosos"
|
||||||
|
#elif L==5 // fr
|
||||||
|
"Projets défectueux"
|
||||||
|
#elif L==6 // gn
|
||||||
|
"Proyectos defectuosos" // Okoteve traducción
|
||||||
|
#elif L==7 // it
|
||||||
|
"Progetti difettosi"
|
||||||
|
#elif L==8 // pl
|
||||||
|
"Wadliwe projekty"
|
||||||
|
#elif L==9 // pt
|
||||||
|
"Projetos defeituosos"
|
||||||
|
#endif
|
||||||
|
,
|
||||||
|
// Prj_FAULTLESS
|
||||||
|
#if L==1 // ca
|
||||||
|
"Projectes correctos"
|
||||||
|
#elif L==2 // de
|
||||||
|
"Fehlerfreie Projekte"
|
||||||
|
#elif L==3 // en
|
||||||
|
"Faultless projects"
|
||||||
|
#elif L==4 // es
|
||||||
|
"Proyectos correctos"
|
||||||
|
#elif L==5 // fr
|
||||||
|
"Projets sans faille"
|
||||||
|
#elif L==6 // gn
|
||||||
|
"Proyectos correctos" // Okoteve traducción
|
||||||
|
#elif L==7 // it
|
||||||
|
"Progetti corretti"
|
||||||
|
#elif L==8 // pl
|
||||||
|
"Bezbłędne projekty"
|
||||||
|
#elif L==9 // pt
|
||||||
|
"Projetos sem falhas"
|
||||||
|
#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
|
||||||
|
|
Loading…
Reference in New Issue