From c0d40cb83427a13638a97f0f9aaa735f6f1ab21c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antonio=20Ca=C3=B1as=20Vargas?= Date: Wed, 16 Oct 2019 01:11:42 +0200 Subject: [PATCH] Version19.37 --- swad_changelog.h | 5 ++-- swad_project.c | 71 ++++++++++++++++++++++++++++++++++++++++++++++++ swad_project.h | 11 ++++++++ swad_text.c | 46 ++++++++++++++++++++++++++++++- 4 files changed, 130 insertions(+), 3 deletions(-) diff --git a/swad_changelog.h b/swad_changelog.h index d781e43ae..a41c26108 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -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. diff --git a/swad_project.c b/swad_project.c index 8171797de..de65b475d 100644 --- a/swad_project.c +++ b/swad_project.c @@ -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,"
", + (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,"
"); + } + 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 *****/ diff --git a/swad_project.h b/swad_project.h index 6a1d71677..4eac261b7 100644 --- a/swad_project.h +++ b/swad_project.h @@ -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 }; diff --git a/swad_text.c b/swad_text.c index 863b0ef91..1474a16e1 100644 --- a/swad_text.c +++ b/swad_text.c @@ -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é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] = { // Prj_MY__PROJECTS