mirror of https://github.com/acanas/swad-core.git
Version 17.24
This commit is contained in:
parent
1783c7d40a
commit
03827a85a1
|
@ -254,13 +254,14 @@
|
||||||
/****************************** Public constants *****************************/
|
/****************************** Public constants *****************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
#define Log_PLATFORM_VERSION "SWAD 17.23.2 (2017-10-10)"
|
#define Log_PLATFORM_VERSION "SWAD 17.24 (2017-10-10)"
|
||||||
#define CSS_FILE "swad17.0.css"
|
#define CSS_FILE "swad17.0.css"
|
||||||
#define JS_FILE "swad17.17.1.js"
|
#define JS_FILE "swad17.17.1.js"
|
||||||
|
|
||||||
// Number of lines (includes comments but not blank lines) has been got with the following command:
|
// 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
|
// 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: Oct 10, 2017 Filter projects by department. (234227 lines)
|
||||||
Version 17.23.2: Oct 10, 2017 Code refactoring in filter of projects. (234137 lines)
|
Version 17.23.2: Oct 10, 2017 Code refactoring in filter of projects. (234137 lines)
|
||||||
Version 17.23.1: Oct 10, 2017 Changes in selectors of departments. (234133 lines)
|
Version 17.23.1: Oct 10, 2017 Changes in selectors of departments. (234133 lines)
|
||||||
Version 17.23: Oct 10, 2017 New filter to select preassigned/non-preassigned projects.
|
Version 17.23: Oct 10, 2017 New filter to select preassigned/non-preassigned projects.
|
||||||
|
|
|
@ -582,7 +582,7 @@ static void Dpt_ListDepartmentsForEdition (void)
|
||||||
|
|
||||||
static void Dpt_PutParamDptCod (long DptCod)
|
static void Dpt_PutParamDptCod (long DptCod)
|
||||||
{
|
{
|
||||||
Par_PutHiddenParamLong ("DptCod",DptCod);
|
Par_PutHiddenParamLong (Dpt_PARAM_DPT_COD_NAME,DptCod);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -594,7 +594,7 @@ long Dpt_GetAndCheckParamDptCod (long MinCodAllowed)
|
||||||
long DptCod;
|
long DptCod;
|
||||||
|
|
||||||
/***** Get and check parameter with code of department *****/
|
/***** Get and check parameter with code of department *****/
|
||||||
if ((DptCod = Par_GetParToLong ("DptCod")) < MinCodAllowed)
|
if ((DptCod = Par_GetParToLong (Dpt_PARAM_DPT_COD_NAME)) < MinCodAllowed)
|
||||||
Lay_ShowErrorAndExit ("Code of department is missing or invalid.");
|
Lay_ShowErrorAndExit ("Code of department is missing or invalid.");
|
||||||
|
|
||||||
return DptCod;
|
return DptCod;
|
||||||
|
@ -1125,8 +1125,9 @@ void Dpt_WriteSelectorDepartment (long InsCod,long DptCod,
|
||||||
|
|
||||||
/***** Selector to select department *****/
|
/***** Selector to select department *****/
|
||||||
/* Start selector */
|
/* Start selector */
|
||||||
fprintf (Gbl.F.Out,"<select id=\"DptCod\" name=\"DptCod\""
|
fprintf (Gbl.F.Out,"<select id=\"%s\" name=\"%s\""
|
||||||
" style=\"width:%upx;\"",
|
" style=\"width:%upx;\"",
|
||||||
|
Dpt_PARAM_DPT_COD_NAME,Dpt_PARAM_DPT_COD_NAME,
|
||||||
SelectorWidth);
|
SelectorWidth);
|
||||||
if (SubmitFormOnChange)
|
if (SubmitFormOnChange)
|
||||||
fprintf (Gbl.F.Out," onchange=\"document.getElementById('%s').submit();\"",
|
fprintf (Gbl.F.Out," onchange=\"document.getElementById('%s').submit();\"",
|
||||||
|
|
|
@ -51,6 +51,8 @@ typedef enum
|
||||||
} Dpt_Order_t;
|
} Dpt_Order_t;
|
||||||
#define Dpt_ORDER_DEFAULT Dpt_ORDER_BY_DEPARTMENT
|
#define Dpt_ORDER_DEFAULT Dpt_ORDER_BY_DEPARTMENT
|
||||||
|
|
||||||
|
#define Dpt_PARAM_DPT_COD_NAME "DptCod"
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/***************************** Public prototypes *****************************/
|
/***************************** Public prototypes *****************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
|
@ -350,11 +350,12 @@ void Gbl_InitializeGlobals (void)
|
||||||
Gbl.Asgs.SelectedOrder = Asg_ORDER_DEFAULT;
|
Gbl.Asgs.SelectedOrder = Asg_ORDER_DEFAULT;
|
||||||
|
|
||||||
/* Projects */
|
/* Projects */
|
||||||
Gbl.Prjs.Filter.My_All = Prj_WHOSE_PROJECTS_DEFAULT;
|
Gbl.Prjs.Filter.My_All = Prj_FILTER_WHOSE_PROJECTS_DEFAULT;
|
||||||
Gbl.Prjs.Filter.PreNon = Prj_PREASSIGNED_DEFAULT |
|
Gbl.Prjs.Filter.PreNon = Prj_FILTER_PREASSIGNED_DEFAULT |
|
||||||
Prj_NONPREASSIG_DEFAULT;
|
Prj_FILTER_NONPREASSIG_DEFAULT;
|
||||||
Gbl.Prjs.Filter.HidVis = Prj_HIDDEN_DEFAULT |
|
Gbl.Prjs.Filter.HidVis = Prj_FILTER_HIDDEN_DEFAULT |
|
||||||
Prj_VISIBL_DEFAULT;
|
Prj_FILTER_VISIBL_DEFAULT;
|
||||||
|
Gbl.Prjs.Filter.DptCod = Prj_FILTER_DPT_DEFAULT;
|
||||||
Gbl.Prjs.LstIsRead = false; // List is not read
|
Gbl.Prjs.LstIsRead = false; // List is not read
|
||||||
Gbl.Prjs.Num = 0;
|
Gbl.Prjs.Num = 0;
|
||||||
Gbl.Prjs.LstPrjCods = NULL;
|
Gbl.Prjs.LstPrjCods = NULL;
|
||||||
|
|
|
@ -575,8 +575,9 @@ struct Globals
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
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
|
||||||
|
long DptCod; // Show projects of this department
|
||||||
} Filter;
|
} Filter;
|
||||||
bool LstIsRead; // Is the list already read from database, or it needs to be read?
|
bool LstIsRead; // Is the list already read from database, or it needs to be read?
|
||||||
unsigned Num; // Number of projects
|
unsigned Num; // Number of projects
|
||||||
|
|
|
@ -144,9 +144,10 @@ void Ind_ReqIndicatorsCourses (void)
|
||||||
/* Compute stats for courses with teachers belonging to any department or to a particular departament? */
|
/* Compute stats for courses with teachers belonging to any department or to a particular departament? */
|
||||||
fprintf (Gbl.F.Out,"<tr>"
|
fprintf (Gbl.F.Out,"<tr>"
|
||||||
"<td class=\"RIGHT_MIDDLE\">"
|
"<td class=\"RIGHT_MIDDLE\">"
|
||||||
"<label for=\"DptCod\" class=\"%s\">%s:</label>"
|
"<label for=\"%s\" class=\"%s\">%s:</label>"
|
||||||
"</td>"
|
"</td>"
|
||||||
"<td class=\"LEFT_MIDDLE\">",
|
"<td class=\"LEFT_MIDDLE\">",
|
||||||
|
Dpt_PARAM_DPT_COD_NAME,
|
||||||
The_ClassForm[Gbl.Prefs.Theme],Txt_Department);
|
The_ClassForm[Gbl.Prefs.Theme],Txt_Department);
|
||||||
Dpt_WriteSelectorDepartment (Gbl.CurrentIns.Ins.InsCod, // Departments in current insitution
|
Dpt_WriteSelectorDepartment (Gbl.CurrentIns.Ins.InsCod, // Departments in current insitution
|
||||||
Gbl.Stat.DptCod, // Selected department
|
Gbl.Stat.DptCod, // Selected department
|
||||||
|
@ -199,7 +200,7 @@ void Ind_ReqIndicatorsCourses (void)
|
||||||
Act_FormStart (ActSeeAllStaCrs);
|
Act_FormStart (ActSeeAllStaCrs);
|
||||||
Sco_PutParamScope ("ScopeInd",Gbl.Scope.Current);
|
Sco_PutParamScope ("ScopeInd",Gbl.Scope.Current);
|
||||||
Par_PutHiddenParamLong ("OthDegTypCod",Gbl.Stat.DegTypCod);
|
Par_PutHiddenParamLong ("OthDegTypCod",Gbl.Stat.DegTypCod);
|
||||||
Par_PutHiddenParamLong ("DptCod",Gbl.Stat.DptCod);
|
Par_PutHiddenParamLong (Dpt_PARAM_DPT_COD_NAME,Gbl.Stat.DptCod);
|
||||||
if (Gbl.Stat.StrIndicatorsSelected[0])
|
if (Gbl.Stat.StrIndicatorsSelected[0])
|
||||||
Par_PutHiddenParamString ("Indicators",Gbl.Stat.StrIndicatorsSelected);
|
Par_PutHiddenParamString ("Indicators",Gbl.Stat.StrIndicatorsSelected);
|
||||||
Btn_PutConfirmButton (Txt_Show_more_details);
|
Btn_PutConfirmButton (Txt_Show_more_details);
|
||||||
|
@ -540,7 +541,7 @@ static void Ind_PutParamsConfirmIWantToSeeBigList (void)
|
||||||
{
|
{
|
||||||
Sco_PutParamScope ("ScopeInd",Gbl.Scope.Current);
|
Sco_PutParamScope ("ScopeInd",Gbl.Scope.Current);
|
||||||
Par_PutHiddenParamLong ("OthDegTypCod",Gbl.Stat.DegTypCod);
|
Par_PutHiddenParamLong ("OthDegTypCod",Gbl.Stat.DegTypCod);
|
||||||
Par_PutHiddenParamLong ("DptCod",Gbl.Stat.DptCod);
|
Par_PutHiddenParamLong (Dpt_PARAM_DPT_COD_NAME,Gbl.Stat.DptCod);
|
||||||
if (Gbl.Stat.StrIndicatorsSelected[0])
|
if (Gbl.Stat.StrIndicatorsSelected[0])
|
||||||
Par_PutHiddenParamString ("Indicators",Gbl.Stat.StrIndicatorsSelected);
|
Par_PutHiddenParamString ("Indicators",Gbl.Stat.StrIndicatorsSelected);
|
||||||
Par_PutHiddenParamChar ("ShowBigList",'Y');
|
Par_PutHiddenParamChar ("ShowBigList",'Y');
|
||||||
|
|
|
@ -167,6 +167,7 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,
|
||||||
Prj_PutParams (Gbl.Prjs.Filter.My_All,
|
Prj_PutParams (Gbl.Prjs.Filter.My_All,
|
||||||
Gbl.Prjs.Filter.PreNon,
|
Gbl.Prjs.Filter.PreNon,
|
||||||
Gbl.Prjs.Filter.HidVis,
|
Gbl.Prjs.Filter.HidVis,
|
||||||
|
Gbl.Prjs.Filter.DptCod,
|
||||||
Gbl.Prjs.SelectedOrder,
|
Gbl.Prjs.SelectedOrder,
|
||||||
1,
|
1,
|
||||||
-1L);
|
-1L);
|
||||||
|
@ -277,6 +278,7 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,
|
||||||
Prj_PutParams (Gbl.Prjs.Filter.My_All,
|
Prj_PutParams (Gbl.Prjs.Filter.My_All,
|
||||||
Gbl.Prjs.Filter.PreNon,
|
Gbl.Prjs.Filter.PreNon,
|
||||||
Gbl.Prjs.Filter.HidVis,
|
Gbl.Prjs.Filter.HidVis,
|
||||||
|
Gbl.Prjs.Filter.DptCod,
|
||||||
Gbl.Prjs.SelectedOrder,
|
Gbl.Prjs.SelectedOrder,
|
||||||
1,
|
1,
|
||||||
-1L);
|
-1L);
|
||||||
|
@ -373,6 +375,7 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,
|
||||||
Prj_PutParams (Gbl.Prjs.Filter.My_All,
|
Prj_PutParams (Gbl.Prjs.Filter.My_All,
|
||||||
Gbl.Prjs.Filter.PreNon,
|
Gbl.Prjs.Filter.PreNon,
|
||||||
Gbl.Prjs.Filter.HidVis,
|
Gbl.Prjs.Filter.HidVis,
|
||||||
|
Gbl.Prjs.Filter.DptCod,
|
||||||
Gbl.Prjs.SelectedOrder,
|
Gbl.Prjs.SelectedOrder,
|
||||||
Pagination->LeftPage,
|
Pagination->LeftPage,
|
||||||
-1L);
|
-1L);
|
||||||
|
@ -480,6 +483,7 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,
|
||||||
Prj_PutParams (Gbl.Prjs.Filter.My_All,
|
Prj_PutParams (Gbl.Prjs.Filter.My_All,
|
||||||
Gbl.Prjs.Filter.PreNon,
|
Gbl.Prjs.Filter.PreNon,
|
||||||
Gbl.Prjs.Filter.HidVis,
|
Gbl.Prjs.Filter.HidVis,
|
||||||
|
Gbl.Prjs.Filter.DptCod,
|
||||||
Gbl.Prjs.SelectedOrder,
|
Gbl.Prjs.SelectedOrder,
|
||||||
NumPage,
|
NumPage,
|
||||||
-1L);
|
-1L);
|
||||||
|
@ -575,6 +579,7 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,
|
||||||
Prj_PutParams (Gbl.Prjs.Filter.My_All,
|
Prj_PutParams (Gbl.Prjs.Filter.My_All,
|
||||||
Gbl.Prjs.Filter.PreNon,
|
Gbl.Prjs.Filter.PreNon,
|
||||||
Gbl.Prjs.Filter.HidVis,
|
Gbl.Prjs.Filter.HidVis,
|
||||||
|
Gbl.Prjs.Filter.DptCod,
|
||||||
Gbl.Prjs.SelectedOrder,
|
Gbl.Prjs.SelectedOrder,
|
||||||
Pagination->RightPage,
|
Pagination->RightPage,
|
||||||
-1L);
|
-1L);
|
||||||
|
@ -669,6 +674,7 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,
|
||||||
Prj_PutParams (Gbl.Prjs.Filter.My_All,
|
Prj_PutParams (Gbl.Prjs.Filter.My_All,
|
||||||
Gbl.Prjs.Filter.PreNon,
|
Gbl.Prjs.Filter.PreNon,
|
||||||
Gbl.Prjs.Filter.HidVis,
|
Gbl.Prjs.Filter.HidVis,
|
||||||
|
Gbl.Prjs.Filter.DptCod,
|
||||||
Gbl.Prjs.SelectedOrder,
|
Gbl.Prjs.SelectedOrder,
|
||||||
Pagination->NumPags,
|
Pagination->NumPags,
|
||||||
-1L);
|
-1L);
|
||||||
|
|
160
swad_project.c
160
swad_project.c
|
@ -52,10 +52,12 @@ extern struct Globals Gbl;
|
||||||
/************************* Private constants and types ***********************/
|
/************************* Private constants and types ***********************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
static const char *ParamMy_AllName = "My_All";
|
/***** Parameters used to filter listing of projects *****/
|
||||||
static const char *ParamPreNonName = "PreNon";
|
#define Prj_PARAM_MY__ALL_NAME "My_All"
|
||||||
static const char *ParamHidVisName = "HidVis";
|
#define Prj_PARAM_PRE_NON_NAME "PreNon"
|
||||||
|
#define Prj_PARAM_HID_VIS_NAME "HidVis"
|
||||||
|
|
||||||
|
/***** Type of view when writing one project *****/
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
Prj_LIST_PROJECTS,
|
Prj_LIST_PROJECTS,
|
||||||
|
@ -64,14 +66,17 @@ typedef enum
|
||||||
Prj_EDIT_ONE_PROJECT,
|
Prj_EDIT_ONE_PROJECT,
|
||||||
} Prj_ProjectView_t;
|
} Prj_ProjectView_t;
|
||||||
|
|
||||||
|
/***** User roles are shown in this order *****/
|
||||||
static const Prj_RoleInProject_t Prj_RolesToShow[] =
|
static const Prj_RoleInProject_t Prj_RolesToShow[] =
|
||||||
{
|
{
|
||||||
Prj_ROLE_TUT, // Tutor
|
Prj_ROLE_TUT, // Tutor
|
||||||
Prj_ROLE_STD, // Student
|
Prj_ROLE_STD, // Student
|
||||||
Prj_ROLE_EVA, // Evaluator
|
Prj_ROLE_EVA, // Evaluator
|
||||||
};
|
};
|
||||||
static const unsigned Brw_NUM_ROLES_TO_SHOW = sizeof (Prj_RolesToShow) / sizeof (Prj_RolesToShow[0]);
|
static const unsigned Brw_NUM_ROLES_TO_SHOW = sizeof (Prj_RolesToShow) /
|
||||||
|
sizeof (Prj_RolesToShow[0]);
|
||||||
|
|
||||||
|
/***** Enum field in database for types of proposal *****/
|
||||||
static const char *Prj_Proposal_DB[Prj_NUM_PROPOSAL_TYPES] =
|
static const char *Prj_Proposal_DB[Prj_NUM_PROPOSAL_TYPES] =
|
||||||
{
|
{
|
||||||
"new", // Prj_PROPOSAL_NEW
|
"new", // Prj_PROPOSAL_NEW
|
||||||
|
@ -79,9 +84,10 @@ static const char *Prj_Proposal_DB[Prj_NUM_PROPOSAL_TYPES] =
|
||||||
"unmodified", // Prj_PROPOSAL_UNMODIFIED
|
"unmodified", // Prj_PROPOSAL_UNMODIFIED
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/***** Image for preassigned and non-preassigned projects *****/
|
||||||
static const char *PreassignedNonpreassigImage[Prj_NUM_PREASSIGNED_NONPREASSIG] =
|
static const char *PreassignedNonpreassigImage[Prj_NUM_PREASSIGNED_NONPREASSIG] =
|
||||||
{
|
{
|
||||||
"lock-on64x64.png", // Prj_PREASSIGNED
|
"lock-on64x64.png", // Prj_PREASSIGNED
|
||||||
"unlock-on64x64.png", // Prj_NONPREASSIG
|
"unlock-on64x64.png", // Prj_NONPREASSIG
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -95,17 +101,20 @@ static const char *PreassignedNonpreassigImage[Prj_NUM_PREASSIGNED_NONPREASSIG]
|
||||||
|
|
||||||
static void Prj_ShowProjectsInCurrentPage (void);
|
static void Prj_ShowProjectsInCurrentPage (void);
|
||||||
|
|
||||||
static void Prj_ShowFormToSelMy_AllPrjs (void);
|
static void Prj_ShowFormToFilterByMy_All (void);
|
||||||
static void Prj_ShowFormToSelPreassignedOrNotProjects (void);
|
static void Prj_ShowFormToFilterByPreassignedNonPreassig (void);
|
||||||
static void Prj_ShowFormToSelHiddenVisiblProjects (void);
|
static void Prj_ShowFormToFilterByHidden (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_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_GetHiddenParamDptCod (void);
|
||||||
static void Prj_GetParams (void);
|
static void Prj_GetParams (void);
|
||||||
|
|
||||||
static void Prj_ShowProjectsHead (bool PrintView);
|
static void Prj_ShowProjectsHead (bool PrintView);
|
||||||
|
@ -259,18 +268,19 @@ static void Prj_ShowProjectsInCurrentPage (void)
|
||||||
Hlp_ASSESSMENT_Projects,Box_NOT_CLOSABLE);
|
Hlp_ASSESSMENT_Projects,Box_NOT_CLOSABLE);
|
||||||
|
|
||||||
/***** Put forms to choice which projects to show *****/
|
/***** Put forms to choice which projects to show *****/
|
||||||
Prj_ShowFormToSelMy_AllPrjs ();
|
Prj_ShowFormToFilterByMy_All ();
|
||||||
Prj_ShowFormToSelPreassignedOrNotProjects ();
|
Prj_ShowFormToFilterByPreassignedNonPreassig ();
|
||||||
switch (Gbl.Usrs.Me.Role.Logged)
|
switch (Gbl.Usrs.Me.Role.Logged)
|
||||||
{
|
{
|
||||||
case Rol_NET:
|
case Rol_NET:
|
||||||
case Rol_TCH:
|
case Rol_TCH:
|
||||||
case Rol_SYS_ADM:
|
case Rol_SYS_ADM:
|
||||||
Prj_ShowFormToSelHiddenVisiblProjects ();
|
Prj_ShowFormToFilterByHidden ();
|
||||||
break;
|
break;
|
||||||
default: // Students will see only visible projects
|
default: // Students will see only visible projects
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
Prj_ShowFormToFilterByDpt ();
|
||||||
|
|
||||||
if (Gbl.Prjs.Num)
|
if (Gbl.Prjs.Num)
|
||||||
{
|
{
|
||||||
|
@ -324,7 +334,7 @@ static void Prj_ShowProjectsInCurrentPage (void)
|
||||||
/*** Show form to choice whether to show only my projects or all projects ****/
|
/*** Show form to choice whether to show only my projects or all projects ****/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
static void Prj_ShowFormToSelMy_AllPrjs (void)
|
static void Prj_ShowFormToFilterByMy_All (void)
|
||||||
{
|
{
|
||||||
extern const char *Txt_PROJECT_MY_ALL_PROJECTS[Prj_NUM_WHOSE_PROJECTS];
|
extern const char *Txt_PROJECT_MY_ALL_PROJECTS[Prj_NUM_WHOSE_PROJECTS];
|
||||||
Prj_WhoseProjects_t My_All;
|
Prj_WhoseProjects_t My_All;
|
||||||
|
@ -346,6 +356,7 @@ static void Prj_ShowFormToSelMy_AllPrjs (void)
|
||||||
Prj_PutParams (My_All,
|
Prj_PutParams (My_All,
|
||||||
Gbl.Prjs.Filter.PreNon,
|
Gbl.Prjs.Filter.PreNon,
|
||||||
Gbl.Prjs.Filter.HidVis,
|
Gbl.Prjs.Filter.HidVis,
|
||||||
|
Gbl.Prjs.Filter.DptCod,
|
||||||
Gbl.Prjs.SelectedOrder,
|
Gbl.Prjs.SelectedOrder,
|
||||||
Gbl.Prjs.CurrentPage,
|
Gbl.Prjs.CurrentPage,
|
||||||
-1L);
|
-1L);
|
||||||
|
@ -365,7 +376,7 @@ static void Prj_ShowFormToSelMy_AllPrjs (void)
|
||||||
/******** Show form to select preassigned / non-preassigned projects *********/
|
/******** Show form to select preassigned / non-preassigned projects *********/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
static void Prj_ShowFormToSelPreassignedOrNotProjects (void)
|
static void Prj_ShowFormToFilterByPreassignedNonPreassig (void)
|
||||||
{
|
{
|
||||||
extern const char *Txt_PROJECT_PREASSIGNED_NONPREASSIGNED_PLURAL[Prj_NUM_PREASSIGNED_NONPREASSIG];
|
extern const char *Txt_PROJECT_PREASSIGNED_NONPREASSIGNED_PLURAL[Prj_NUM_PREASSIGNED_NONPREASSIG];
|
||||||
Prj_PreassignedNonpreassig_t PreNon;
|
Prj_PreassignedNonpreassig_t PreNon;
|
||||||
|
@ -382,6 +393,7 @@ static void Prj_ShowFormToSelPreassignedOrNotProjects (void)
|
||||||
Prj_PutParams (Gbl.Prjs.Filter.My_All,
|
Prj_PutParams (Gbl.Prjs.Filter.My_All,
|
||||||
Gbl.Prjs.Filter.PreNon ^ (1 << PreNon), // Toggle
|
Gbl.Prjs.Filter.PreNon ^ (1 << PreNon), // Toggle
|
||||||
Gbl.Prjs.Filter.HidVis,
|
Gbl.Prjs.Filter.HidVis,
|
||||||
|
Gbl.Prjs.Filter.DptCod,
|
||||||
Gbl.Prjs.SelectedOrder,
|
Gbl.Prjs.SelectedOrder,
|
||||||
Gbl.Prjs.CurrentPage,
|
Gbl.Prjs.CurrentPage,
|
||||||
-1L);
|
-1L);
|
||||||
|
@ -401,7 +413,7 @@ static void Prj_ShowFormToSelPreassignedOrNotProjects (void)
|
||||||
/************* Show form to select hidden / visible projects *****************/
|
/************* Show form to select hidden / visible projects *****************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
static void Prj_ShowFormToSelHiddenVisiblProjects (void)
|
static void Prj_ShowFormToFilterByHidden (void)
|
||||||
{
|
{
|
||||||
extern const char *Txt_PROJECT_HIDDEN_VISIBL_PROJECTS[Prj_NUM_HIDDEN_VISIBL];
|
extern const char *Txt_PROJECT_HIDDEN_VISIBL_PROJECTS[Prj_NUM_HIDDEN_VISIBL];
|
||||||
Prj_HiddenVisibl_t HidVis;
|
Prj_HiddenVisibl_t HidVis;
|
||||||
|
@ -423,6 +435,7 @@ static void Prj_ShowFormToSelHiddenVisiblProjects (void)
|
||||||
Prj_PutParams (Gbl.Prjs.Filter.My_All,
|
Prj_PutParams (Gbl.Prjs.Filter.My_All,
|
||||||
Gbl.Prjs.Filter.PreNon,
|
Gbl.Prjs.Filter.PreNon,
|
||||||
Gbl.Prjs.Filter.HidVis ^ (1 << HidVis), // Toggle
|
Gbl.Prjs.Filter.HidVis ^ (1 << HidVis), // Toggle
|
||||||
|
Gbl.Prjs.Filter.DptCod,
|
||||||
Gbl.Prjs.SelectedOrder,
|
Gbl.Prjs.SelectedOrder,
|
||||||
Gbl.Prjs.CurrentPage,
|
Gbl.Prjs.CurrentPage,
|
||||||
-1L);
|
-1L);
|
||||||
|
@ -439,6 +452,38 @@ static void Prj_ShowFormToSelHiddenVisiblProjects (void)
|
||||||
fprintf (Gbl.F.Out,"</div>");
|
fprintf (Gbl.F.Out,"</div>");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/*************** Show form to filter projects by department ******************/
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
static void Prj_ShowFormToFilterByDpt (void)
|
||||||
|
{
|
||||||
|
extern const char *Txt_Any_department;
|
||||||
|
|
||||||
|
/***** Start form *****/
|
||||||
|
fprintf (Gbl.F.Out,"<div>");
|
||||||
|
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
|
||||||
|
Gbl.Prjs.SelectedOrder,
|
||||||
|
Gbl.Prjs.CurrentPage,
|
||||||
|
-1L);
|
||||||
|
|
||||||
|
/***** Write selector with departments *****/
|
||||||
|
Dpt_WriteSelectorDepartment (Gbl.CurrentIns.Ins.InsCod, // Departments in current insitution
|
||||||
|
Gbl.Prjs.Filter.DptCod, // Selected department
|
||||||
|
275, // Width in pixels
|
||||||
|
-1L, // First option
|
||||||
|
Txt_Any_department, // Text when no department selected
|
||||||
|
true); // Submit on change
|
||||||
|
|
||||||
|
/***** End form *****/
|
||||||
|
Act_FormEnd ();
|
||||||
|
fprintf (Gbl.F.Out,"</div>");
|
||||||
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/********************** Put parameters used in projects **********************/
|
/********************** Put parameters used in projects **********************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -448,6 +493,7 @@ static void Prj_PutCurrentParams (void)
|
||||||
Prj_PutParams (Gbl.Prjs.Filter.My_All,
|
Prj_PutParams (Gbl.Prjs.Filter.My_All,
|
||||||
Gbl.Prjs.Filter.PreNon,
|
Gbl.Prjs.Filter.PreNon,
|
||||||
Gbl.Prjs.Filter.HidVis,
|
Gbl.Prjs.Filter.HidVis,
|
||||||
|
Gbl.Prjs.Filter.DptCod,
|
||||||
Gbl.Prjs.SelectedOrder,
|
Gbl.Prjs.SelectedOrder,
|
||||||
Gbl.Prjs.CurrentPage,
|
Gbl.Prjs.CurrentPage,
|
||||||
Gbl.Prjs.PrjCod);
|
Gbl.Prjs.PrjCod);
|
||||||
|
@ -460,30 +506,39 @@ static void Prj_PutCurrentParams (void)
|
||||||
void Prj_PutParams (Prj_WhoseProjects_t My_All,
|
void Prj_PutParams (Prj_WhoseProjects_t My_All,
|
||||||
unsigned PreNon,
|
unsigned PreNon,
|
||||||
unsigned HidVis,
|
unsigned HidVis,
|
||||||
|
long DptCod,
|
||||||
Prj_Order_t Order,
|
Prj_Order_t Order,
|
||||||
unsigned NumPage,
|
unsigned NumPage,
|
||||||
long PrjCod)
|
long PrjCod)
|
||||||
{
|
{
|
||||||
if (My_All != Prj_WHOSE_PROJECTS_DEFAULT)
|
/***** Put filter parameters (which projects to show) *****/
|
||||||
|
if (My_All != Prj_FILTER_WHOSE_PROJECTS_DEFAULT)
|
||||||
Prj_PutHiddenParamMy_All (My_All);
|
Prj_PutHiddenParamMy_All (My_All);
|
||||||
|
|
||||||
if (PreNon != ((unsigned) Prj_PREASSIGNED_DEFAULT |
|
if (PreNon != ((unsigned) Prj_FILTER_PREASSIGNED_DEFAULT |
|
||||||
(unsigned) Prj_NONPREASSIG_DEFAULT))
|
(unsigned) Prj_FILTER_NONPREASSIG_DEFAULT))
|
||||||
Prj_PutHiddenParamPreNon (PreNon);
|
Prj_PutHiddenParamPreNon (PreNon);
|
||||||
|
|
||||||
if (HidVis != ((unsigned) Prj_HIDDEN_DEFAULT |
|
if (HidVis != ((unsigned) Prj_FILTER_HIDDEN_DEFAULT |
|
||||||
(unsigned) Prj_VISIBL_DEFAULT))
|
(unsigned) Prj_FILTER_VISIBL_DEFAULT))
|
||||||
Prj_PutHiddenParamHidVis (HidVis);
|
Prj_PutHiddenParamHidVis (HidVis);
|
||||||
|
|
||||||
|
if (DptCod != Prj_FILTER_DPT_DEFAULT)
|
||||||
|
Prj_PutHiddenParamDptCod (DptCod);
|
||||||
|
|
||||||
|
/***** Put order field *****/
|
||||||
if (Order != Prj_ORDER_DEFAULT)
|
if (Order != Prj_ORDER_DEFAULT)
|
||||||
Par_PutHiddenParamUnsigned ("Order",(unsigned) Order);
|
Par_PutHiddenParamUnsigned ("Order",(unsigned) Order);
|
||||||
|
|
||||||
|
/***** Put number of page *****/
|
||||||
if (NumPage > 1)
|
if (NumPage > 1)
|
||||||
Pag_PutHiddenParamPagNum (Pag_PROJECTS,NumPage);
|
Pag_PutHiddenParamPagNum (Pag_PROJECTS,NumPage);
|
||||||
|
|
||||||
|
/***** Put selected project code *****/
|
||||||
if (PrjCod > 0)
|
if (PrjCod > 0)
|
||||||
Prj_PutParamPrjCod (PrjCod);
|
Prj_PutParamPrjCod (PrjCod);
|
||||||
|
|
||||||
|
/***** Put another user's code *****/
|
||||||
if (Gbl.Usrs.Other.UsrDat.UsrCod > 0)
|
if (Gbl.Usrs.Other.UsrDat.UsrCod > 0)
|
||||||
Usr_PutParamOtherUsrCodEncrypted ();
|
Usr_PutParamOtherUsrCodEncrypted ();
|
||||||
}
|
}
|
||||||
|
@ -494,17 +549,22 @@ void Prj_PutParams (Prj_WhoseProjects_t My_All,
|
||||||
|
|
||||||
static void Prj_PutHiddenParamMy_All (Prj_WhoseProjects_t My_All)
|
static void Prj_PutHiddenParamMy_All (Prj_WhoseProjects_t My_All)
|
||||||
{
|
{
|
||||||
Par_PutHiddenParamUnsigned (ParamMy_AllName,(unsigned) My_All);
|
Par_PutHiddenParamUnsigned (Prj_PARAM_MY__ALL_NAME,(unsigned) My_All);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void Prj_PutHiddenParamPreNon (unsigned PreNon)
|
static void Prj_PutHiddenParamPreNon (unsigned PreNon)
|
||||||
{
|
{
|
||||||
Par_PutHiddenParamUnsigned (ParamPreNonName,PreNon);
|
Par_PutHiddenParamUnsigned (Prj_PARAM_PRE_NON_NAME,PreNon);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void Prj_PutHiddenParamHidVis (unsigned HidVis)
|
static void Prj_PutHiddenParamHidVis (unsigned HidVis)
|
||||||
{
|
{
|
||||||
Par_PutHiddenParamUnsigned (ParamHidVisName,HidVis);
|
Par_PutHiddenParamUnsigned (Prj_PARAM_HID_VIS_NAME,HidVis);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void Prj_PutHiddenParamDptCod (long DptCod)
|
||||||
|
{
|
||||||
|
Par_PutHiddenParamUnsigned (Dpt_PARAM_DPT_COD_NAME,DptCod);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -513,20 +573,20 @@ static void Prj_PutHiddenParamHidVis (unsigned HidVis)
|
||||||
|
|
||||||
static void Prj_GetHiddenParamMy_All (void)
|
static void Prj_GetHiddenParamMy_All (void)
|
||||||
{
|
{
|
||||||
Gbl.Prjs.Filter.My_All = (Prj_WhoseProjects_t) Par_GetParToUnsignedLong (ParamMy_AllName,
|
Gbl.Prjs.Filter.My_All = (Prj_WhoseProjects_t) Par_GetParToUnsignedLong (Prj_PARAM_MY__ALL_NAME,
|
||||||
0,
|
0,
|
||||||
Prj_NUM_WHOSE_PROJECTS - 1,
|
Prj_NUM_WHOSE_PROJECTS - 1,
|
||||||
Prj_WHOSE_PROJECTS_DEFAULT);
|
Prj_FILTER_WHOSE_PROJECTS_DEFAULT);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void Prj_GetHiddenParamPreNon (void)
|
static void Prj_GetHiddenParamPreNon (void)
|
||||||
{
|
{
|
||||||
Gbl.Prjs.Filter.PreNon = (unsigned) Par_GetParToUnsignedLong (ParamPreNonName,
|
Gbl.Prjs.Filter.PreNon = (unsigned) Par_GetParToUnsignedLong (Prj_PARAM_PRE_NON_NAME,
|
||||||
0,
|
0,
|
||||||
(1 << Prj_PREASSIGNED) |
|
(1 << Prj_PREASSIGNED) |
|
||||||
(1 << Prj_NONPREASSIG),
|
(1 << Prj_NONPREASSIG),
|
||||||
(unsigned) Prj_PREASSIGNED_DEFAULT |
|
(unsigned) Prj_FILTER_PREASSIGNED_DEFAULT |
|
||||||
(unsigned) Prj_NONPREASSIG_DEFAULT);
|
(unsigned) Prj_FILTER_NONPREASSIG_DEFAULT);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void Prj_GetHiddenParamHidVis (void)
|
static void Prj_GetHiddenParamHidVis (void)
|
||||||
|
@ -539,12 +599,12 @@ static void Prj_GetHiddenParamHidVis (void)
|
||||||
case Rol_NET:
|
case Rol_NET:
|
||||||
case Rol_TCH:
|
case Rol_TCH:
|
||||||
case Rol_SYS_ADM:
|
case Rol_SYS_ADM:
|
||||||
Gbl.Prjs.Filter.HidVis = (unsigned) Par_GetParToUnsignedLong (ParamHidVisName,
|
Gbl.Prjs.Filter.HidVis = (unsigned) Par_GetParToUnsignedLong (Prj_PARAM_HID_VIS_NAME,
|
||||||
0,
|
0,
|
||||||
(1 << Prj_HIDDEN) |
|
(1 << Prj_HIDDEN) |
|
||||||
(1 << Prj_VISIBL),
|
(1 << Prj_VISIBL),
|
||||||
(unsigned) Prj_HIDDEN_DEFAULT |
|
(unsigned) Prj_FILTER_HIDDEN_DEFAULT |
|
||||||
(unsigned) Prj_VISIBL_DEFAULT);
|
(unsigned) Prj_FILTER_VISIBL_DEFAULT);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
Lay_ShowErrorAndExit ("Wrong role.");
|
Lay_ShowErrorAndExit ("Wrong role.");
|
||||||
|
@ -552,16 +612,22 @@ static void Prj_GetHiddenParamHidVis (void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void Prj_GetHiddenParamDptCod (void)
|
||||||
|
{
|
||||||
|
Gbl.Prjs.Filter.DptCod = Par_GetParToLong (Dpt_PARAM_DPT_COD_NAME);
|
||||||
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/***************** Get generic parameters to list projects *******************/
|
/***************** Get generic parameters to list projects *******************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
static void Prj_GetParams (void)
|
static void Prj_GetParams (void)
|
||||||
{
|
{
|
||||||
/***** Get which projects to show *****/
|
/***** Get filter (which projects to show) *****/
|
||||||
Prj_GetHiddenParamMy_All ();
|
Prj_GetHiddenParamMy_All ();
|
||||||
Prj_GetHiddenParamPreNon ();
|
Prj_GetHiddenParamPreNon ();
|
||||||
Prj_GetHiddenParamHidVis ();
|
Prj_GetHiddenParamHidVis ();
|
||||||
|
Prj_GetHiddenParamDptCod ();
|
||||||
|
|
||||||
/***** Get order and page *****/
|
/***** Get order and page *****/
|
||||||
Prj_GetParamPrjOrder ();
|
Prj_GetParamPrjOrder ();
|
||||||
|
@ -592,6 +658,7 @@ static void Prj_ShowProjectsHead (bool PrintView)
|
||||||
Prj_PutParams (Gbl.Prjs.Filter.My_All,
|
Prj_PutParams (Gbl.Prjs.Filter.My_All,
|
||||||
Gbl.Prjs.Filter.PreNon,
|
Gbl.Prjs.Filter.PreNon,
|
||||||
Gbl.Prjs.Filter.HidVis,
|
Gbl.Prjs.Filter.HidVis,
|
||||||
|
Gbl.Prjs.Filter.DptCod,
|
||||||
Order,
|
Order,
|
||||||
Gbl.Prjs.CurrentPage,
|
Gbl.Prjs.CurrentPage,
|
||||||
-1L);
|
-1L);
|
||||||
|
@ -2076,8 +2143,9 @@ void Prj_GetListProjects (void)
|
||||||
{
|
{
|
||||||
char PreNonSubQuery[Prj_MAX_BYTES_SUBQUERY];
|
char PreNonSubQuery[Prj_MAX_BYTES_SUBQUERY];
|
||||||
char HidVisSubQuery[Prj_MAX_BYTES_SUBQUERY];
|
char HidVisSubQuery[Prj_MAX_BYTES_SUBQUERY];
|
||||||
|
char DptCodSubQuery[Prj_MAX_BYTES_SUBQUERY];
|
||||||
char OrderBySubQuery[Prj_MAX_BYTES_SUBQUERY];
|
char OrderBySubQuery[Prj_MAX_BYTES_SUBQUERY];
|
||||||
char Query[512 * Prj_MAX_BYTES_SUBQUERY * 3];
|
char Query[512 * Prj_MAX_BYTES_SUBQUERY * 4];
|
||||||
MYSQL_RES *mysql_res;
|
MYSQL_RES *mysql_res;
|
||||||
MYSQL_ROW row;
|
MYSQL_ROW row;
|
||||||
unsigned long NumRows;
|
unsigned long NumRows;
|
||||||
|
@ -2138,6 +2206,13 @@ void Prj_GetListProjects (void)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Department subquery */
|
||||||
|
if (Gbl.Prjs.Filter.DptCod >= 0)
|
||||||
|
sprintf (DptCodSubQuery," AND projects.DptCod=%ld",
|
||||||
|
Gbl.Prjs.Filter.DptCod);
|
||||||
|
else // Any department
|
||||||
|
DptCodSubQuery[0] = '\0';
|
||||||
|
|
||||||
/* Order subquery */
|
/* Order subquery */
|
||||||
switch (Gbl.Prjs.SelectedOrder)
|
switch (Gbl.Prjs.SelectedOrder)
|
||||||
{
|
{
|
||||||
|
@ -2174,12 +2249,12 @@ void Prj_GetListProjects (void)
|
||||||
sprintf (Query,"SELECT projects.PrjCod"
|
sprintf (Query,"SELECT projects.PrjCod"
|
||||||
" FROM projects,prj_usr"
|
" FROM projects,prj_usr"
|
||||||
" WHERE projects.CrsCod=%ld"
|
" WHERE projects.CrsCod=%ld"
|
||||||
"%s%s"
|
"%s%s%s"
|
||||||
" AND projects.PrjCod=prj_usr.PrjCod"
|
" AND projects.PrjCod=prj_usr.PrjCod"
|
||||||
" AND prj_usr.UsrCod=%ld"
|
" AND prj_usr.UsrCod=%ld"
|
||||||
" ORDER BY %s",
|
" ORDER BY %s",
|
||||||
Gbl.CurrentCrs.Crs.CrsCod,
|
Gbl.CurrentCrs.Crs.CrsCod,
|
||||||
PreNonSubQuery,HidVisSubQuery,
|
PreNonSubQuery,HidVisSubQuery,DptCodSubQuery,
|
||||||
Gbl.Usrs.Me.UsrDat.UsrCod,
|
Gbl.Usrs.Me.UsrDat.UsrCod,
|
||||||
OrderBySubQuery);
|
OrderBySubQuery);
|
||||||
break;
|
break;
|
||||||
|
@ -2188,12 +2263,12 @@ void Prj_GetListProjects (void)
|
||||||
" FROM prj_usr,projects LEFT JOIN departments"
|
" FROM prj_usr,projects LEFT JOIN departments"
|
||||||
" ON projects.DptCod=departments.DptCod"
|
" ON projects.DptCod=departments.DptCod"
|
||||||
" WHERE projects.CrsCod=%ld"
|
" WHERE projects.CrsCod=%ld"
|
||||||
"%s%s"
|
"%s%s%s"
|
||||||
" AND projects.PrjCod=prj_usr.PrjCod"
|
" AND projects.PrjCod=prj_usr.PrjCod"
|
||||||
" AND prj_usr.UsrCod=%ld"
|
" AND prj_usr.UsrCod=%ld"
|
||||||
" ORDER BY %s",
|
" ORDER BY %s",
|
||||||
Gbl.CurrentCrs.Crs.CrsCod,
|
Gbl.CurrentCrs.Crs.CrsCod,
|
||||||
PreNonSubQuery,HidVisSubQuery,
|
PreNonSubQuery,HidVisSubQuery,DptCodSubQuery,
|
||||||
Gbl.Usrs.Me.UsrDat.UsrCod,
|
Gbl.Usrs.Me.UsrDat.UsrCod,
|
||||||
OrderBySubQuery);
|
OrderBySubQuery);
|
||||||
break;
|
break;
|
||||||
|
@ -2207,10 +2282,10 @@ void Prj_GetListProjects (void)
|
||||||
sprintf (Query,"SELECT projects.PrjCod"
|
sprintf (Query,"SELECT projects.PrjCod"
|
||||||
" FROM projects"
|
" FROM projects"
|
||||||
" WHERE projects.CrsCod=%ld"
|
" WHERE projects.CrsCod=%ld"
|
||||||
"%s%s"
|
"%s%s%s"
|
||||||
" ORDER BY %s",
|
" ORDER BY %s",
|
||||||
Gbl.CurrentCrs.Crs.CrsCod,
|
Gbl.CurrentCrs.Crs.CrsCod,
|
||||||
PreNonSubQuery,HidVisSubQuery,
|
PreNonSubQuery,HidVisSubQuery,DptCodSubQuery,
|
||||||
OrderBySubQuery);
|
OrderBySubQuery);
|
||||||
break;
|
break;
|
||||||
case Prj_ORDER_DEPARTMENT:
|
case Prj_ORDER_DEPARTMENT:
|
||||||
|
@ -2218,10 +2293,10 @@ void Prj_GetListProjects (void)
|
||||||
" FROM projects LEFT JOIN departments"
|
" FROM projects LEFT JOIN departments"
|
||||||
" ON projects.DptCod=departments.DptCod"
|
" ON projects.DptCod=departments.DptCod"
|
||||||
" WHERE projects.CrsCod=%ld"
|
" WHERE projects.CrsCod=%ld"
|
||||||
"%s%s"
|
"%s%s%s"
|
||||||
" ORDER BY %s",
|
" ORDER BY %s",
|
||||||
Gbl.CurrentCrs.Crs.CrsCod,
|
Gbl.CurrentCrs.Crs.CrsCod,
|
||||||
PreNonSubQuery,HidVisSubQuery,
|
PreNonSubQuery,HidVisSubQuery,DptCodSubQuery,
|
||||||
OrderBySubQuery);
|
OrderBySubQuery);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -2828,9 +2903,10 @@ static void Prj_PutFormProject (struct Project *Prj,bool ItsANewProject)
|
||||||
/* Department */
|
/* Department */
|
||||||
fprintf (Gbl.F.Out,"<tr>"
|
fprintf (Gbl.F.Out,"<tr>"
|
||||||
"<td class=\"RIGHT_MIDDLE\">"
|
"<td class=\"RIGHT_MIDDLE\">"
|
||||||
"<label for=\"DptCod\" class=\"%s\">%s:</label>"
|
"<label for=\"%s\" class=\"%s\">%s:</label>"
|
||||||
"</td>"
|
"</td>"
|
||||||
"<td class=\"LEFT_MIDDLE\">",
|
"<td class=\"LEFT_MIDDLE\">",
|
||||||
|
Dpt_PARAM_DPT_COD_NAME,
|
||||||
The_ClassForm[Gbl.Prefs.Theme],Txt_Department);
|
The_ClassForm[Gbl.Prefs.Theme],Txt_Department);
|
||||||
Dpt_WriteSelectorDepartment (Gbl.CurrentIns.Ins.InsCod, // Departments in current institution
|
Dpt_WriteSelectorDepartment (Gbl.CurrentIns.Ins.InsCod, // Departments in current institution
|
||||||
Prj->DptCod, // Selected department
|
Prj->DptCod, // Selected department
|
||||||
|
@ -3048,7 +3124,7 @@ void Prj_RecFormProject (void)
|
||||||
Par_GetParToText ("Title",Prj.Title,Prj_MAX_BYTES_PROJECT_TITLE);
|
Par_GetParToText ("Title",Prj.Title,Prj_MAX_BYTES_PROJECT_TITLE);
|
||||||
|
|
||||||
/* Get department */
|
/* Get department */
|
||||||
Prj.DptCod = Par_GetParToLong ("DptCod");
|
Prj.DptCod = Par_GetParToLong (Dpt_PARAM_DPT_COD_NAME);
|
||||||
|
|
||||||
/* Get whether the project is preassigned */
|
/* Get whether the project is preassigned */
|
||||||
Prj.Preassigned = (Par_GetParToBool ("Preassigned")) ? Prj_PREASSIGNED :
|
Prj.Preassigned = (Par_GetParToBool ("Preassigned")) ? Prj_PREASSIGNED :
|
||||||
|
|
|
@ -36,29 +36,42 @@
|
||||||
/************************** Public types and constants ***********************/
|
/************************** Public types and constants ***********************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
#define Prj_MAX_CHARS_PROJECT_TITLE (128 - 1) // 127
|
/***** Filters to list departments *****/
|
||||||
#define Prj_MAX_BYTES_PROJECT_TITLE ((Prj_MAX_CHARS_PROJECT_TITLE + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 2047
|
/* My projects / all projects */
|
||||||
|
#define Prj_NUM_WHOSE_PROJECTS 2
|
||||||
#define Prj_NUM_PROPOSAL_TYPES 3
|
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
Prj_PROPOSAL_NEW,
|
Prj_MY__PROJECTS,
|
||||||
Prj_PROPOSAL_MODIFIED,
|
Prj_ALL_PROJECTS,
|
||||||
Prj_PROPOSAL_UNMODIFIED,
|
} Prj_WhoseProjects_t;
|
||||||
} Prj_Proposal_t;
|
#define Prj_FILTER_WHOSE_PROJECTS_DEFAULT Prj_MY__PROJECTS
|
||||||
#define Prj_PROPOSAL_DEFAULT Prj_PROPOSAL_NEW
|
|
||||||
|
|
||||||
// Related with user's roles in a project
|
/* Preassigned projects / non-preassigned projects */
|
||||||
// Don't change these numbers! They are used in database
|
#define Prj_NUM_PREASSIGNED_NONPREASSIG 2
|
||||||
#define Prj_NUM_ROLES_IN_PROJECT 4
|
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
Prj_ROLE_UNK = 0, // Unknown
|
Prj_PREASSIGNED = 0,
|
||||||
Prj_ROLE_STD = 1, // Student
|
Prj_NONPREASSIG = 1,
|
||||||
Prj_ROLE_TUT = 2, // Tutor
|
} Prj_PreassignedNonpreassig_t;
|
||||||
Prj_ROLE_EVA = 3, // Evaluator
|
#define Prj_NEW_PRJ_PREASSIGNED_NONPREASSIG_DEFAULT Prj_NONPREASSIG
|
||||||
} Prj_RoleInProject_t;
|
#define Prj_FILTER_PREASSIGNED_DEFAULT (1 << Prj_PREASSIGNED) // on
|
||||||
|
#define Prj_FILTER_NONPREASSIG_DEFAULT (1 << Prj_NONPREASSIG) // on
|
||||||
|
|
||||||
|
/* Hidden projects / visible projects */
|
||||||
|
#define Prj_NUM_HIDDEN_VISIBL 2
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
Prj_HIDDEN = 0,
|
||||||
|
Prj_VISIBL = 1,
|
||||||
|
} Prj_HiddenVisibl_t;
|
||||||
|
#define Prj_NEW_PRJ_HIDDEN_VISIBL_DEFAULT Prj_VISIBL
|
||||||
|
#define Prj_FILTER_HIDDEN_DEFAULT (1 << Prj_HIDDEN) // on
|
||||||
|
#define Prj_FILTER_VISIBL_DEFAULT (1 << Prj_VISIBL) // on
|
||||||
|
|
||||||
|
/* Project department */
|
||||||
|
#define Prj_FILTER_DPT_DEFAULT -1L // Any department
|
||||||
|
|
||||||
|
/***** Order listing of projects by... *****/
|
||||||
#define Prj_NUM_ORDERS 4
|
#define Prj_NUM_ORDERS 4
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
|
@ -69,34 +82,32 @@ typedef enum
|
||||||
} Prj_Order_t;
|
} Prj_Order_t;
|
||||||
#define Prj_ORDER_DEFAULT Prj_ORDER_START_TIME
|
#define Prj_ORDER_DEFAULT Prj_ORDER_START_TIME
|
||||||
|
|
||||||
#define Prj_NUM_WHOSE_PROJECTS 2
|
/***** Project title *****/
|
||||||
|
#define Prj_MAX_CHARS_PROJECT_TITLE (128 - 1) // 127
|
||||||
|
#define Prj_MAX_BYTES_PROJECT_TITLE ((Prj_MAX_CHARS_PROJECT_TITLE + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 2047
|
||||||
|
|
||||||
|
/***** Type of proposal ******/
|
||||||
|
#define Prj_NUM_PROPOSAL_TYPES 3
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
Prj_MY__PROJECTS,
|
Prj_PROPOSAL_NEW,
|
||||||
Prj_ALL_PROJECTS,
|
Prj_PROPOSAL_MODIFIED,
|
||||||
} Prj_WhoseProjects_t;
|
Prj_PROPOSAL_UNMODIFIED,
|
||||||
#define Prj_WHOSE_PROJECTS_DEFAULT Prj_MY__PROJECTS
|
} Prj_Proposal_t;
|
||||||
|
#define Prj_PROPOSAL_DEFAULT Prj_PROPOSAL_NEW
|
||||||
|
|
||||||
#define Prj_NUM_PREASSIGNED_NONPREASSIG 2
|
/***** User roles in a project *****/
|
||||||
|
// Don't change these numbers! They are used in database
|
||||||
|
#define Prj_NUM_ROLES_IN_PROJECT 4
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
Prj_PREASSIGNED = 0,
|
Prj_ROLE_UNK = 0, // Unknown
|
||||||
Prj_NONPREASSIG = 1,
|
Prj_ROLE_STD = 1, // Student
|
||||||
} Prj_PreassignedNonpreassig_t;
|
Prj_ROLE_TUT = 2, // Tutor
|
||||||
#define Prj_NEW_PRJ_PREASSIGNED_NONPREASSIG_DEFAULT Prj_NONPREASSIG
|
Prj_ROLE_EVA = 3, // Evaluator
|
||||||
#define Prj_PREASSIGNED_DEFAULT (1 << Prj_PREASSIGNED) // on
|
} Prj_RoleInProject_t;
|
||||||
#define Prj_NONPREASSIG_DEFAULT (1 << Prj_NONPREASSIG) // on
|
|
||||||
|
|
||||||
#define Prj_NUM_HIDDEN_VISIBL 2
|
|
||||||
typedef enum
|
|
||||||
{
|
|
||||||
Prj_HIDDEN = 0,
|
|
||||||
Prj_VISIBL = 1,
|
|
||||||
} Prj_HiddenVisibl_t;
|
|
||||||
#define Prj_NEW_PRJ_HIDDEN_VISIBL_DEFAULT Prj_VISIBL
|
|
||||||
#define Prj_HIDDEN_DEFAULT (1 << Prj_HIDDEN) // on
|
|
||||||
#define Prj_VISIBL_DEFAULT (1 << Prj_VISIBL) // on
|
|
||||||
|
|
||||||
|
/***** Struct to store a project *****/
|
||||||
struct Project
|
struct Project
|
||||||
{
|
{
|
||||||
long PrjCod;
|
long PrjCod;
|
||||||
|
@ -125,6 +136,7 @@ void Prj_ShowTableAllProjects (void);
|
||||||
void Prj_PutParams (Prj_WhoseProjects_t My_All,
|
void Prj_PutParams (Prj_WhoseProjects_t My_All,
|
||||||
unsigned PreNon,
|
unsigned PreNon,
|
||||||
unsigned HidVis,
|
unsigned HidVis,
|
||||||
|
long DptCod,
|
||||||
Prj_Order_t Order,
|
Prj_Order_t Order,
|
||||||
unsigned NumPage,
|
unsigned NumPage,
|
||||||
long PrjCod);
|
long PrjCod);
|
||||||
|
|
|
@ -4135,10 +4135,10 @@ void Rec_ShowFormMyInsCtrDpt (void)
|
||||||
/***** Department *****/
|
/***** Department *****/
|
||||||
fprintf (Gbl.F.Out,"<tr>"
|
fprintf (Gbl.F.Out,"<tr>"
|
||||||
"<td class=\"RIGHT_MIDDLE\">"
|
"<td class=\"RIGHT_MIDDLE\">"
|
||||||
"<label for=\"DptCod\" class=\"%s\">%s:</label>"
|
"<label for=\"%s\" class=\"%s\">%s:</label>"
|
||||||
"</td>"
|
"</td>"
|
||||||
"<td class=\"LEFT_MIDDLE\" style=\"width:%upx;\">",
|
"<td class=\"LEFT_MIDDLE\" style=\"width:%upx;\">",
|
||||||
ClassForm,Txt_Department,
|
Dpt_PARAM_DPT_COD_NAME,ClassForm,Txt_Department,
|
||||||
COL2_WIDTH);
|
COL2_WIDTH);
|
||||||
Act_FormGoToStart (ActChgMyDpt);
|
Act_FormGoToStart (ActChgMyDpt);
|
||||||
Dpt_WriteSelectorDepartment (Gbl.Usrs.Me.UsrDat.InsCod, // Departments in my institution
|
Dpt_WriteSelectorDepartment (Gbl.Usrs.Me.UsrDat.InsCod, // Departments in my institution
|
||||||
|
|
Loading…
Reference in New Issue