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: 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.

View File

@ -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 *****/

View File

@ -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
}; };

View File

@ -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&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] = const char *Txt_PROJECT_MY_ALL_PROJECTS[Prj_NUM_WHOSE_PROJECTS] =
{ {
// Prj_MY__PROJECTS // Prj_MY__PROJECTS