Version19.37

This commit is contained in:
Antonio Cañas Vargas 2019-10-16 01:11:42 +02:00
parent 65fdd65f53
commit c0d40cb834
4 changed files with 130 additions and 3 deletions

View File

@ -487,14 +487,15 @@ enscript -2 --landscape --color --file-align=2 --highlight --line-numbers -o - *
En OpenSWAD:
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 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: 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.34.2: Oct 14, 2019 Fixed bug in IDs.
Fixed bug in timetable.

View File

@ -61,6 +61,7 @@ extern struct Globals Gbl;
#define Prj_PARAM_MY__ALL_NAME "My_All"
#define Prj_PARAM_PRE_NON_NAME "PreNon"
#define Prj_PARAM_HID_VIS_NAME "HidVis"
#define Prj_PARAM_FAULTIN_NAME "Faulti"
/***** Type of view when writing one project *****/
typedef enum
@ -121,16 +122,19 @@ static void Prj_ShowProjectsInCurrentPage (void);
static void Prj_ShowFormToFilterByMy_All (void);
static void Prj_ShowFormToFilterByPreassignedNonPreassig (void);
static void Prj_ShowFormToFilterByHidden (void);
static void Prj_ShowFormToFilterByWarning (void);
static void Prj_ShowFormToFilterByDpt (void);
static void Prj_PutCurrentParams (void);
static void Prj_PutHiddenParamMy_All (Prj_WhoseProjects_t My_All);
static void Prj_PutHiddenParamPreNon (unsigned PreNon);
static void Prj_PutHiddenParamHidVis (unsigned HidVis);
static void Prj_PutHiddenParamFaulti (unsigned Faulti);
static void Prj_PutHiddenParamDptCod (long DptCod);
static void Prj_GetHiddenParamMy_All (void);
static void Prj_GetHiddenParamPreNon (void);
static void Prj_GetHiddenParamHidVis (void);
static void Prj_GetHiddenParamFaulti (void);
static void Prj_GetHiddenParamDptCod (void);
static void Prj_GetParams (void);
@ -312,7 +316,9 @@ static void Prj_ShowProjectsInCurrentPage (void)
default: // Students will see only visible projects
break;
}
Prj_ShowFormToFilterByWarning ();
Set_EndSettingsHead ();
/* 2nd. row */
Prj_ShowFormToFilterByDpt ();
@ -411,6 +417,7 @@ static void Prj_ShowFormToFilterByMy_All (void)
Filter.My_All = My_All;
Filter.PreNon = Gbl.Prjs.Filter.PreNon;
Filter.HidVis = Gbl.Prjs.Filter.HidVis;
Filter.Faulti = Gbl.Prjs.Filter.Faulti;
Filter.DptCod = Gbl.Prjs.Filter.DptCod;
Prj_PutParams (&Filter,
Gbl.Prjs.SelectedOrder,
@ -446,6 +453,7 @@ static void Prj_ShowFormToFilterByPreassignedNonPreassig (void)
Filter.My_All = Gbl.Prjs.Filter.My_All;
Filter.PreNon = Gbl.Prjs.Filter.PreNon ^ (1 << PreNon); // Toggle
Filter.HidVis = Gbl.Prjs.Filter.HidVis;
Filter.Faulti = Gbl.Prjs.Filter.Faulti;
Filter.DptCod = Gbl.Prjs.Filter.DptCod;
Prj_PutParams (&Filter,
Gbl.Prjs.SelectedOrder,
@ -486,6 +494,7 @@ static void Prj_ShowFormToFilterByHidden (void)
Filter.My_All = Gbl.Prjs.Filter.My_All;
Filter.PreNon = Gbl.Prjs.Filter.PreNon;
Filter.HidVis = Gbl.Prjs.Filter.HidVis ^ (1 << HidVis); // Toggle
Filter.Faulti = Gbl.Prjs.Filter.Faulti;
Filter.DptCod = Gbl.Prjs.Filter.DptCod;
Prj_PutParams (&Filter,
Gbl.Prjs.SelectedOrder,
@ -499,6 +508,47 @@ static void Prj_ShowFormToFilterByHidden (void)
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 ******************/
/*****************************************************************************/
@ -514,6 +564,7 @@ static void Prj_ShowFormToFilterByDpt (void)
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;
Filter.DptCod = Prj_FILTER_DPT_DEFAULT; // Do not put department parameter here
Prj_PutParams (&Filter,
Gbl.Prjs.SelectedOrder,
@ -566,6 +617,10 @@ void Prj_PutParams (struct Prj_Filter *Filter,
(unsigned) Prj_FILTER_VISIBL_DEFAULT))
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)
Prj_PutHiddenParamDptCod (Filter->DptCod);
@ -605,6 +660,11 @@ static void Prj_PutHiddenParamHidVis (unsigned 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)
{
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)
{
Gbl.Prjs.Filter.DptCod = Par_GetParToLong (Dpt_PARAM_DPT_COD_NAME);
@ -670,6 +740,7 @@ static void Prj_GetParams (void)
Prj_GetHiddenParamMy_All ();
Prj_GetHiddenParamPreNon ();
Prj_GetHiddenParamHidVis ();
Prj_GetHiddenParamFaulti ();
Prj_GetHiddenParamDptCod ();
/***** Get order and page *****/

View File

@ -76,6 +76,16 @@ typedef enum
#define Prj_FILTER_HIDDEN_DEFAULT (1 << Prj_HIDDEN) // 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 */
#define Prj_FILTER_DPT_DEFAULT -1L // Any department
@ -85,6 +95,7 @@ struct Prj_Filter
Prj_WhoseProjects_t My_All; // Show my / all projects
unsigned PreNon; // Show preassigned / non preassigned projects
unsigned HidVis; // Show hidden / visible projects
unsigned Faulti; // Show faulty / faultless projects
long DptCod; // Show projects of this department
};

View File

@ -30859,7 +30859,6 @@ const char *Txt_PROJECT_ROLES_PLURAL_abc[Prj_NUM_ROLES_IN_PROJECT] =
#endif
};
const char *Txt_PROJECT_STATUS[Prj_NUM_PROPOSAL_TYPES] =
{
#if L==1 // ca // Prj_PROPOSAL_NEW
@ -30923,6 +30922,51 @@ const char *Txt_PROJECT_STATUS[Prj_NUM_PROPOSAL_TYPES] =
#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&eacute;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&lstrok;&eogon;dne projekty"
#elif L==9 // pt
"Projetos sem falhas"
#endif
};
const char *Txt_PROJECT_MY_ALL_PROJECTS[Prj_NUM_WHOSE_PROJECTS] =
{
// Prj_MY__PROJECTS