diff --git a/swad_changelog.h b/swad_changelog.h
index ea2c5b40f..ce061db4a 100644
--- a/swad_changelog.h
+++ b/swad_changelog.h
@@ -254,13 +254,14 @@
/****************************** Public constants *****************************/
/*****************************************************************************/
-#define Log_PLATFORM_VERSION "SWAD 17.24.1 (2017-10-10)"
+#define Log_PLATFORM_VERSION "SWAD 17.24.2 (2017-10-10)"
#define CSS_FILE "swad17.0.css"
#define JS_FILE "swad17.17.1.js"
// Number of lines (includes comments but not blank lines) has been got with the following command:
// nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*?.h sql/swad*.sql | tail -1
/*
+ Version 17.24.2: Oct 10, 2017 Code refactoring in projects filter. (234209 lines)
Version 17.24.1: Oct 10, 2017 Changes in pagination of projects. (234228 lines)
Version 17.24: Oct 10, 2017 Filter projects by department. (234227 lines)
Version 17.23.2: Oct 10, 2017 Code refactoring in filter of projects. (234137 lines)
diff --git a/swad_global.h b/swad_global.h
index 3f8f78d8e..9b1ba5e2e 100644
--- a/swad_global.h
+++ b/swad_global.h
@@ -572,13 +572,7 @@ struct Globals
} Asgs;
struct
{
- struct
- {
- Prj_WhoseProjects_t My_All; // Show my / all projects
- unsigned PreNon; // Show preassigned / non preassigned projects
- unsigned HidVis; // Show hidden / visible projects
- long DptCod; // Show projects of this department
- } Filter;
+ struct Prj_Filter Filter;
bool LstIsRead; // Is the list already read from database, or it needs to be read?
unsigned Num; // Number of projects
long *LstPrjCods; // List of project codes
diff --git a/swad_pagination.c b/swad_pagination.c
index 083bfde17..7c4800f6e 100644
--- a/swad_pagination.c
+++ b/swad_pagination.c
@@ -164,10 +164,7 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,
break;
case Pag_PROJECTS:
Act_FormStartAnchor (ActSeePrj,Pagination->Anchor);
- Prj_PutParams (Gbl.Prjs.Filter.My_All,
- Gbl.Prjs.Filter.PreNon,
- Gbl.Prjs.Filter.HidVis,
- Gbl.Prjs.Filter.DptCod,
+ Prj_PutParams (&Gbl.Prjs.Filter,
Gbl.Prjs.SelectedOrder,
1,
-1L);
@@ -275,10 +272,7 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,
break;
case Pag_PROJECTS:
Act_FormStartAnchor (ActSeePrj,Pagination->Anchor);
- Prj_PutParams (Gbl.Prjs.Filter.My_All,
- Gbl.Prjs.Filter.PreNon,
- Gbl.Prjs.Filter.HidVis,
- Gbl.Prjs.Filter.DptCod,
+ Prj_PutParams (&Gbl.Prjs.Filter,
Gbl.Prjs.SelectedOrder,
1,
-1L);
@@ -372,10 +366,7 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,
break;
case Pag_PROJECTS:
Act_FormStartAnchor (ActSeePrj,Pagination->Anchor);
- Prj_PutParams (Gbl.Prjs.Filter.My_All,
- Gbl.Prjs.Filter.PreNon,
- Gbl.Prjs.Filter.HidVis,
- Gbl.Prjs.Filter.DptCod,
+ Prj_PutParams (&Gbl.Prjs.Filter,
Gbl.Prjs.SelectedOrder,
Pagination->LeftPage,
-1L);
@@ -480,10 +471,7 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,
break;
case Pag_PROJECTS:
Act_FormStartAnchor (ActSeePrj,Pagination->Anchor);
- Prj_PutParams (Gbl.Prjs.Filter.My_All,
- Gbl.Prjs.Filter.PreNon,
- Gbl.Prjs.Filter.HidVis,
- Gbl.Prjs.Filter.DptCod,
+ Prj_PutParams (&Gbl.Prjs.Filter,
Gbl.Prjs.SelectedOrder,
NumPage,
-1L);
@@ -576,10 +564,7 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,
break;
case Pag_PROJECTS:
Act_FormStartAnchor (ActSeePrj,Pagination->Anchor);
- Prj_PutParams (Gbl.Prjs.Filter.My_All,
- Gbl.Prjs.Filter.PreNon,
- Gbl.Prjs.Filter.HidVis,
- Gbl.Prjs.Filter.DptCod,
+ Prj_PutParams (&Gbl.Prjs.Filter,
Gbl.Prjs.SelectedOrder,
Pagination->RightPage,
-1L);
@@ -671,10 +656,7 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,
break;
case Pag_PROJECTS:
Act_FormStartAnchor (ActSeePrj,Pagination->Anchor);
- Prj_PutParams (Gbl.Prjs.Filter.My_All,
- Gbl.Prjs.Filter.PreNon,
- Gbl.Prjs.Filter.HidVis,
- Gbl.Prjs.Filter.DptCod,
+ Prj_PutParams (&Gbl.Prjs.Filter,
Gbl.Prjs.SelectedOrder,
Pagination->NumPags,
-1L);
diff --git a/swad_project.c b/swad_project.c
index 0894b3bb1..c43f2c411 100644
--- a/swad_project.c
+++ b/swad_project.c
@@ -337,6 +337,7 @@ static void Prj_ShowProjectsInCurrentPage (void)
static void Prj_ShowFormToFilterByMy_All (void)
{
extern const char *Txt_PROJECT_MY_ALL_PROJECTS[Prj_NUM_WHOSE_PROJECTS];
+ struct Prj_Filter Filter;
Prj_WhoseProjects_t My_All;
static const char *WhoseProjectsImage[Prj_NUM_WHOSE_PROJECTS] =
{
@@ -353,10 +354,11 @@ static void Prj_ShowFormToFilterByMy_All (void)
(Gbl.Prjs.Filter.My_All == My_All) ? "PREF_ON" :
"PREF_OFF");
Act_FormStart (ActSeePrj);
- Prj_PutParams (My_All,
- Gbl.Prjs.Filter.PreNon,
- Gbl.Prjs.Filter.HidVis,
- Gbl.Prjs.Filter.DptCod,
+ Filter.My_All = My_All;
+ Filter.PreNon = Gbl.Prjs.Filter.PreNon;
+ Filter.HidVis = Gbl.Prjs.Filter.HidVis;
+ Filter.DptCod = Gbl.Prjs.Filter.DptCod;
+ Prj_PutParams (&Filter,
Gbl.Prjs.SelectedOrder,
Gbl.Prjs.CurrentPage,
-1L);
@@ -379,6 +381,7 @@ static void Prj_ShowFormToFilterByMy_All (void)
static void Prj_ShowFormToFilterByPreassignedNonPreassig (void)
{
extern const char *Txt_PROJECT_PREASSIGNED_NONPREASSIGNED_PLURAL[Prj_NUM_PREASSIGNED_NONPREASSIG];
+ struct Prj_Filter Filter;
Prj_PreassignedNonpreassig_t PreNon;
fprintf (Gbl.F.Out,"
");
@@ -390,10 +393,11 @@ static void Prj_ShowFormToFilterByPreassignedNonPreassig (void)
(Gbl.Prjs.Filter.PreNon & (1 << PreNon)) ? "PREF_ON" :
"PREF_OFF");
Act_FormStart (ActSeePrj);
- Prj_PutParams (Gbl.Prjs.Filter.My_All,
- Gbl.Prjs.Filter.PreNon ^ (1 << PreNon), // Toggle
- Gbl.Prjs.Filter.HidVis,
- Gbl.Prjs.Filter.DptCod,
+ Filter.My_All = Gbl.Prjs.Filter.My_All;
+ Filter.PreNon = Gbl.Prjs.Filter.PreNon ^ (1 << PreNon); // Toggle
+ Filter.HidVis = Gbl.Prjs.Filter.HidVis;
+ Filter.DptCod = Gbl.Prjs.Filter.DptCod;
+ Prj_PutParams (&Filter,
Gbl.Prjs.SelectedOrder,
Gbl.Prjs.CurrentPage,
-1L);
@@ -416,6 +420,7 @@ static void Prj_ShowFormToFilterByPreassignedNonPreassig (void)
static void Prj_ShowFormToFilterByHidden (void)
{
extern const char *Txt_PROJECT_HIDDEN_VISIBL_PROJECTS[Prj_NUM_HIDDEN_VISIBL];
+ struct Prj_Filter Filter;
Prj_HiddenVisibl_t HidVis;
static const char *HiddenVisiblImage[Prj_NUM_HIDDEN_VISIBL] =
{
@@ -432,10 +437,11 @@ static void Prj_ShowFormToFilterByHidden (void)
(Gbl.Prjs.Filter.HidVis & (1 << HidVis)) ? "PREF_ON" :
"PREF_OFF");
Act_FormStart (ActSeePrj);
- Prj_PutParams (Gbl.Prjs.Filter.My_All,
- Gbl.Prjs.Filter.PreNon,
- Gbl.Prjs.Filter.HidVis ^ (1 << HidVis), // Toggle
- Gbl.Prjs.Filter.DptCod,
+ Filter.My_All = Gbl.Prjs.Filter.My_All;
+ Filter.PreNon = Gbl.Prjs.Filter.PreNon;
+ Filter.HidVis = Gbl.Prjs.Filter.HidVis ^ (1 << HidVis); // Toggle
+ Filter.DptCod = Gbl.Prjs.Filter.DptCod;
+ Prj_PutParams (&Filter,
Gbl.Prjs.SelectedOrder,
Gbl.Prjs.CurrentPage,
-1L);
@@ -459,14 +465,16 @@ static void Prj_ShowFormToFilterByHidden (void)
static void Prj_ShowFormToFilterByDpt (void)
{
extern const char *Txt_Any_department;
+ struct Prj_Filter Filter;
/***** Start form *****/
fprintf (Gbl.F.Out,"
");
Act_FormStart (ActSeePrj);
- Prj_PutParams (Gbl.Prjs.Filter.My_All,
- Gbl.Prjs.Filter.PreNon,
- Gbl.Prjs.Filter.HidVis,
- Prj_FILTER_DPT_DEFAULT, // Do not put department parameter here
+ Filter.My_All = Gbl.Prjs.Filter.My_All;
+ Filter.PreNon = Gbl.Prjs.Filter.PreNon;
+ Filter.HidVis = Gbl.Prjs.Filter.HidVis;
+ Filter.DptCod = Prj_FILTER_DPT_DEFAULT; // Do not put department parameter here
+ Prj_PutParams (&Filter,
Gbl.Prjs.SelectedOrder,
Gbl.Prjs.CurrentPage,
-1L);
@@ -490,10 +498,7 @@ static void Prj_ShowFormToFilterByDpt (void)
static void Prj_PutCurrentParams (void)
{
- Prj_PutParams (Gbl.Prjs.Filter.My_All,
- Gbl.Prjs.Filter.PreNon,
- Gbl.Prjs.Filter.HidVis,
- Gbl.Prjs.Filter.DptCod,
+ Prj_PutParams (&Gbl.Prjs.Filter,
Gbl.Prjs.SelectedOrder,
Gbl.Prjs.CurrentPage,
Gbl.Prjs.PrjCod);
@@ -503,28 +508,25 @@ static void Prj_PutCurrentParams (void)
when one or more parameters must be passed explicitely.
Each parameter is passed only if its value is distinct to default. */
-void Prj_PutParams (Prj_WhoseProjects_t My_All,
- unsigned PreNon,
- unsigned HidVis,
- long DptCod,
+void Prj_PutParams (struct Prj_Filter *Filter,
Prj_Order_t Order,
unsigned NumPage,
long PrjCod)
{
/***** Put filter parameters (which projects to show) *****/
- if (My_All != Prj_FILTER_WHOSE_PROJECTS_DEFAULT)
- Prj_PutHiddenParamMy_All (My_All);
+ if (Filter->My_All != Prj_FILTER_WHOSE_PROJECTS_DEFAULT)
+ Prj_PutHiddenParamMy_All (Filter->My_All);
- if (PreNon != ((unsigned) Prj_FILTER_PREASSIGNED_DEFAULT |
- (unsigned) Prj_FILTER_NONPREASSIG_DEFAULT))
- Prj_PutHiddenParamPreNon (PreNon);
+ if (Filter->PreNon != ((unsigned) Prj_FILTER_PREASSIGNED_DEFAULT |
+ (unsigned) Prj_FILTER_NONPREASSIG_DEFAULT))
+ Prj_PutHiddenParamPreNon (Filter->PreNon);
- if (HidVis != ((unsigned) Prj_FILTER_HIDDEN_DEFAULT |
- (unsigned) Prj_FILTER_VISIBL_DEFAULT))
- Prj_PutHiddenParamHidVis (HidVis);
+ if (Filter->HidVis != ((unsigned) Prj_FILTER_HIDDEN_DEFAULT |
+ (unsigned) Prj_FILTER_VISIBL_DEFAULT))
+ Prj_PutHiddenParamHidVis (Filter->HidVis);
- if (DptCod != Prj_FILTER_DPT_DEFAULT)
- Prj_PutHiddenParamDptCod (DptCod);
+ if (Filter->DptCod != Prj_FILTER_DPT_DEFAULT)
+ Prj_PutHiddenParamDptCod (Filter->DptCod);
/***** Put order field *****/
if (Order != Prj_ORDER_DEFAULT)
@@ -655,10 +657,7 @@ static void Prj_ShowProjectsHead (bool PrintView)
if (!PrintView)
{
Act_FormStart (ActSeePrj);
- Prj_PutParams (Gbl.Prjs.Filter.My_All,
- Gbl.Prjs.Filter.PreNon,
- Gbl.Prjs.Filter.HidVis,
- Gbl.Prjs.Filter.DptCod,
+ Prj_PutParams (&Gbl.Prjs.Filter,
Order,
Gbl.Prjs.CurrentPage,
-1L);
diff --git a/swad_project.h b/swad_project.h
index 8eaca8be3..c6830e5d1 100644
--- a/swad_project.h
+++ b/swad_project.h
@@ -71,6 +71,15 @@ typedef enum
/* Project department */
#define Prj_FILTER_DPT_DEFAULT -1L // Any department
+/* Struct with all filters */
+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
+ long DptCod; // Show projects of this department
+ };
+
/***** Order listing of projects by... *****/
#define Prj_NUM_ORDERS 4
typedef enum
@@ -133,10 +142,7 @@ struct Project
void Prj_SeeProjects (void);
void Prj_ShowTableAllProjects (void);
-void Prj_PutParams (Prj_WhoseProjects_t My_All,
- unsigned PreNon,
- unsigned HidVis,
- long DptCod,
+void Prj_PutParams (struct Prj_Filter *Filter,
Prj_Order_t Order,
unsigned NumPage,
long PrjCod);