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 *****************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
#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 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: 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.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.
|
||||
|
|
|
@ -582,7 +582,7 @@ static void Dpt_ListDepartmentsForEdition (void)
|
|||
|
||||
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;
|
||||
|
||||
/***** 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.");
|
||||
|
||||
return DptCod;
|
||||
|
@ -1125,8 +1125,9 @@ void Dpt_WriteSelectorDepartment (long InsCod,long DptCod,
|
|||
|
||||
/***** Selector to select department *****/
|
||||
/* Start selector */
|
||||
fprintf (Gbl.F.Out,"<select id=\"DptCod\" name=\"DptCod\""
|
||||
fprintf (Gbl.F.Out,"<select id=\"%s\" name=\"%s\""
|
||||
" style=\"width:%upx;\"",
|
||||
Dpt_PARAM_DPT_COD_NAME,Dpt_PARAM_DPT_COD_NAME,
|
||||
SelectorWidth);
|
||||
if (SubmitFormOnChange)
|
||||
fprintf (Gbl.F.Out," onchange=\"document.getElementById('%s').submit();\"",
|
||||
|
|
|
@ -51,6 +51,8 @@ typedef enum
|
|||
} Dpt_Order_t;
|
||||
#define Dpt_ORDER_DEFAULT Dpt_ORDER_BY_DEPARTMENT
|
||||
|
||||
#define Dpt_PARAM_DPT_COD_NAME "DptCod"
|
||||
|
||||
/*****************************************************************************/
|
||||
/***************************** Public prototypes *****************************/
|
||||
/*****************************************************************************/
|
||||
|
|
|
@ -350,11 +350,12 @@ void Gbl_InitializeGlobals (void)
|
|||
Gbl.Asgs.SelectedOrder = Asg_ORDER_DEFAULT;
|
||||
|
||||
/* Projects */
|
||||
Gbl.Prjs.Filter.My_All = Prj_WHOSE_PROJECTS_DEFAULT;
|
||||
Gbl.Prjs.Filter.PreNon = Prj_PREASSIGNED_DEFAULT |
|
||||
Prj_NONPREASSIG_DEFAULT;
|
||||
Gbl.Prjs.Filter.HidVis = Prj_HIDDEN_DEFAULT |
|
||||
Prj_VISIBL_DEFAULT;
|
||||
Gbl.Prjs.Filter.My_All = Prj_FILTER_WHOSE_PROJECTS_DEFAULT;
|
||||
Gbl.Prjs.Filter.PreNon = Prj_FILTER_PREASSIGNED_DEFAULT |
|
||||
Prj_FILTER_NONPREASSIG_DEFAULT;
|
||||
Gbl.Prjs.Filter.HidVis = Prj_FILTER_HIDDEN_DEFAULT |
|
||||
Prj_FILTER_VISIBL_DEFAULT;
|
||||
Gbl.Prjs.Filter.DptCod = Prj_FILTER_DPT_DEFAULT;
|
||||
Gbl.Prjs.LstIsRead = false; // List is not read
|
||||
Gbl.Prjs.Num = 0;
|
||||
Gbl.Prjs.LstPrjCods = NULL;
|
||||
|
|
|
@ -575,8 +575,9 @@ struct Globals
|
|||
struct
|
||||
{
|
||||
Prj_WhoseProjects_t My_All; // Show my / all projects
|
||||
unsigned PreNon; // Show preassigned / non preassigned projects
|
||||
unsigned HidVis; // Show hidden / visible projects
|
||||
unsigned PreNon; // Show preassigned / non preassigned projects
|
||||
unsigned HidVis; // Show hidden / visible projects
|
||||
long DptCod; // Show projects of this department
|
||||
} Filter;
|
||||
bool LstIsRead; // Is the list already read from database, or it needs to be read?
|
||||
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? */
|
||||
fprintf (Gbl.F.Out,"<tr>"
|
||||
"<td class=\"RIGHT_MIDDLE\">"
|
||||
"<label for=\"DptCod\" class=\"%s\">%s:</label>"
|
||||
"<label for=\"%s\" class=\"%s\">%s:</label>"
|
||||
"</td>"
|
||||
"<td class=\"LEFT_MIDDLE\">",
|
||||
Dpt_PARAM_DPT_COD_NAME,
|
||||
The_ClassForm[Gbl.Prefs.Theme],Txt_Department);
|
||||
Dpt_WriteSelectorDepartment (Gbl.CurrentIns.Ins.InsCod, // Departments in current insitution
|
||||
Gbl.Stat.DptCod, // Selected department
|
||||
|
@ -199,7 +200,7 @@ void Ind_ReqIndicatorsCourses (void)
|
|||
Act_FormStart (ActSeeAllStaCrs);
|
||||
Sco_PutParamScope ("ScopeInd",Gbl.Scope.Current);
|
||||
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])
|
||||
Par_PutHiddenParamString ("Indicators",Gbl.Stat.StrIndicatorsSelected);
|
||||
Btn_PutConfirmButton (Txt_Show_more_details);
|
||||
|
@ -540,7 +541,7 @@ static void Ind_PutParamsConfirmIWantToSeeBigList (void)
|
|||
{
|
||||
Sco_PutParamScope ("ScopeInd",Gbl.Scope.Current);
|
||||
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])
|
||||
Par_PutHiddenParamString ("Indicators",Gbl.Stat.StrIndicatorsSelected);
|
||||
Par_PutHiddenParamChar ("ShowBigList",'Y');
|
||||
|
|
|
@ -167,6 +167,7 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,
|
|||
Prj_PutParams (Gbl.Prjs.Filter.My_All,
|
||||
Gbl.Prjs.Filter.PreNon,
|
||||
Gbl.Prjs.Filter.HidVis,
|
||||
Gbl.Prjs.Filter.DptCod,
|
||||
Gbl.Prjs.SelectedOrder,
|
||||
1,
|
||||
-1L);
|
||||
|
@ -277,6 +278,7 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,
|
|||
Prj_PutParams (Gbl.Prjs.Filter.My_All,
|
||||
Gbl.Prjs.Filter.PreNon,
|
||||
Gbl.Prjs.Filter.HidVis,
|
||||
Gbl.Prjs.Filter.DptCod,
|
||||
Gbl.Prjs.SelectedOrder,
|
||||
1,
|
||||
-1L);
|
||||
|
@ -373,6 +375,7 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,
|
|||
Prj_PutParams (Gbl.Prjs.Filter.My_All,
|
||||
Gbl.Prjs.Filter.PreNon,
|
||||
Gbl.Prjs.Filter.HidVis,
|
||||
Gbl.Prjs.Filter.DptCod,
|
||||
Gbl.Prjs.SelectedOrder,
|
||||
Pagination->LeftPage,
|
||||
-1L);
|
||||
|
@ -480,6 +483,7 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,
|
|||
Prj_PutParams (Gbl.Prjs.Filter.My_All,
|
||||
Gbl.Prjs.Filter.PreNon,
|
||||
Gbl.Prjs.Filter.HidVis,
|
||||
Gbl.Prjs.Filter.DptCod,
|
||||
Gbl.Prjs.SelectedOrder,
|
||||
NumPage,
|
||||
-1L);
|
||||
|
@ -575,6 +579,7 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,
|
|||
Prj_PutParams (Gbl.Prjs.Filter.My_All,
|
||||
Gbl.Prjs.Filter.PreNon,
|
||||
Gbl.Prjs.Filter.HidVis,
|
||||
Gbl.Prjs.Filter.DptCod,
|
||||
Gbl.Prjs.SelectedOrder,
|
||||
Pagination->RightPage,
|
||||
-1L);
|
||||
|
@ -669,6 +674,7 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,
|
|||
Prj_PutParams (Gbl.Prjs.Filter.My_All,
|
||||
Gbl.Prjs.Filter.PreNon,
|
||||
Gbl.Prjs.Filter.HidVis,
|
||||
Gbl.Prjs.Filter.DptCod,
|
||||
Gbl.Prjs.SelectedOrder,
|
||||
Pagination->NumPags,
|
||||
-1L);
|
||||
|
|
160
swad_project.c
160
swad_project.c
|
@ -52,10 +52,12 @@ extern struct Globals Gbl;
|
|||
/************************* Private constants and types ***********************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static const char *ParamMy_AllName = "My_All";
|
||||
static const char *ParamPreNonName = "PreNon";
|
||||
static const char *ParamHidVisName = "HidVis";
|
||||
/***** Parameters used to filter listing of projects *****/
|
||||
#define Prj_PARAM_MY__ALL_NAME "My_All"
|
||||
#define Prj_PARAM_PRE_NON_NAME "PreNon"
|
||||
#define Prj_PARAM_HID_VIS_NAME "HidVis"
|
||||
|
||||
/***** Type of view when writing one project *****/
|
||||
typedef enum
|
||||
{
|
||||
Prj_LIST_PROJECTS,
|
||||
|
@ -64,14 +66,17 @@ typedef enum
|
|||
Prj_EDIT_ONE_PROJECT,
|
||||
} Prj_ProjectView_t;
|
||||
|
||||
/***** User roles are shown in this order *****/
|
||||
static const Prj_RoleInProject_t Prj_RolesToShow[] =
|
||||
{
|
||||
Prj_ROLE_TUT, // Tutor
|
||||
Prj_ROLE_STD, // Student
|
||||
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] =
|
||||
{
|
||||
"new", // Prj_PROPOSAL_NEW
|
||||
|
@ -79,9 +84,10 @@ static const char *Prj_Proposal_DB[Prj_NUM_PROPOSAL_TYPES] =
|
|||
"unmodified", // Prj_PROPOSAL_UNMODIFIED
|
||||
};
|
||||
|
||||
/***** Image for preassigned and non-preassigned projects *****/
|
||||
static const char *PreassignedNonpreassigImage[Prj_NUM_PREASSIGNED_NONPREASSIG] =
|
||||
{
|
||||
"lock-on64x64.png", // Prj_PREASSIGNED
|
||||
"lock-on64x64.png", // Prj_PREASSIGNED
|
||||
"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_ShowFormToSelMy_AllPrjs (void);
|
||||
static void Prj_ShowFormToSelPreassignedOrNotProjects (void);
|
||||
static void Prj_ShowFormToSelHiddenVisiblProjects (void);
|
||||
static void Prj_ShowFormToFilterByMy_All (void);
|
||||
static void Prj_ShowFormToFilterByPreassignedNonPreassig (void);
|
||||
static void Prj_ShowFormToFilterByHidden (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_PutHiddenParamDptCod (long DptCod);
|
||||
static void Prj_GetHiddenParamMy_All (void);
|
||||
static void Prj_GetHiddenParamPreNon (void);
|
||||
static void Prj_GetHiddenParamHidVis (void);
|
||||
static void Prj_GetHiddenParamDptCod (void);
|
||||
static void Prj_GetParams (void);
|
||||
|
||||
static void Prj_ShowProjectsHead (bool PrintView);
|
||||
|
@ -259,18 +268,19 @@ static void Prj_ShowProjectsInCurrentPage (void)
|
|||
Hlp_ASSESSMENT_Projects,Box_NOT_CLOSABLE);
|
||||
|
||||
/***** Put forms to choice which projects to show *****/
|
||||
Prj_ShowFormToSelMy_AllPrjs ();
|
||||
Prj_ShowFormToSelPreassignedOrNotProjects ();
|
||||
Prj_ShowFormToFilterByMy_All ();
|
||||
Prj_ShowFormToFilterByPreassignedNonPreassig ();
|
||||
switch (Gbl.Usrs.Me.Role.Logged)
|
||||
{
|
||||
case Rol_NET:
|
||||
case Rol_TCH:
|
||||
case Rol_SYS_ADM:
|
||||
Prj_ShowFormToSelHiddenVisiblProjects ();
|
||||
Prj_ShowFormToFilterByHidden ();
|
||||
break;
|
||||
default: // Students will see only visible projects
|
||||
break;
|
||||
}
|
||||
Prj_ShowFormToFilterByDpt ();
|
||||
|
||||
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 ****/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Prj_ShowFormToSelMy_AllPrjs (void)
|
||||
static void Prj_ShowFormToFilterByMy_All (void)
|
||||
{
|
||||
extern const char *Txt_PROJECT_MY_ALL_PROJECTS[Prj_NUM_WHOSE_PROJECTS];
|
||||
Prj_WhoseProjects_t My_All;
|
||||
|
@ -346,6 +356,7 @@ static void Prj_ShowFormToSelMy_AllPrjs (void)
|
|||
Prj_PutParams (My_All,
|
||||
Gbl.Prjs.Filter.PreNon,
|
||||
Gbl.Prjs.Filter.HidVis,
|
||||
Gbl.Prjs.Filter.DptCod,
|
||||
Gbl.Prjs.SelectedOrder,
|
||||
Gbl.Prjs.CurrentPage,
|
||||
-1L);
|
||||
|
@ -365,7 +376,7 @@ static void Prj_ShowFormToSelMy_AllPrjs (void)
|
|||
/******** 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];
|
||||
Prj_PreassignedNonpreassig_t PreNon;
|
||||
|
@ -382,6 +393,7 @@ static void Prj_ShowFormToSelPreassignedOrNotProjects (void)
|
|||
Prj_PutParams (Gbl.Prjs.Filter.My_All,
|
||||
Gbl.Prjs.Filter.PreNon ^ (1 << PreNon), // Toggle
|
||||
Gbl.Prjs.Filter.HidVis,
|
||||
Gbl.Prjs.Filter.DptCod,
|
||||
Gbl.Prjs.SelectedOrder,
|
||||
Gbl.Prjs.CurrentPage,
|
||||
-1L);
|
||||
|
@ -401,7 +413,7 @@ static void Prj_ShowFormToSelPreassignedOrNotProjects (void)
|
|||
/************* 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];
|
||||
Prj_HiddenVisibl_t HidVis;
|
||||
|
@ -423,6 +435,7 @@ static void Prj_ShowFormToSelHiddenVisiblProjects (void)
|
|||
Prj_PutParams (Gbl.Prjs.Filter.My_All,
|
||||
Gbl.Prjs.Filter.PreNon,
|
||||
Gbl.Prjs.Filter.HidVis ^ (1 << HidVis), // Toggle
|
||||
Gbl.Prjs.Filter.DptCod,
|
||||
Gbl.Prjs.SelectedOrder,
|
||||
Gbl.Prjs.CurrentPage,
|
||||
-1L);
|
||||
|
@ -439,6 +452,38 @@ static void Prj_ShowFormToSelHiddenVisiblProjects (void)
|
|||
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 **********************/
|
||||
/*****************************************************************************/
|
||||
|
@ -448,6 +493,7 @@ static void Prj_PutCurrentParams (void)
|
|||
Prj_PutParams (Gbl.Prjs.Filter.My_All,
|
||||
Gbl.Prjs.Filter.PreNon,
|
||||
Gbl.Prjs.Filter.HidVis,
|
||||
Gbl.Prjs.Filter.DptCod,
|
||||
Gbl.Prjs.SelectedOrder,
|
||||
Gbl.Prjs.CurrentPage,
|
||||
Gbl.Prjs.PrjCod);
|
||||
|
@ -460,30 +506,39 @@ static void Prj_PutCurrentParams (void)
|
|||
void Prj_PutParams (Prj_WhoseProjects_t My_All,
|
||||
unsigned PreNon,
|
||||
unsigned HidVis,
|
||||
long DptCod,
|
||||
Prj_Order_t Order,
|
||||
unsigned NumPage,
|
||||
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);
|
||||
|
||||
if (PreNon != ((unsigned) Prj_PREASSIGNED_DEFAULT |
|
||||
(unsigned) Prj_NONPREASSIG_DEFAULT))
|
||||
if (PreNon != ((unsigned) Prj_FILTER_PREASSIGNED_DEFAULT |
|
||||
(unsigned) Prj_FILTER_NONPREASSIG_DEFAULT))
|
||||
Prj_PutHiddenParamPreNon (PreNon);
|
||||
|
||||
if (HidVis != ((unsigned) Prj_HIDDEN_DEFAULT |
|
||||
(unsigned) Prj_VISIBL_DEFAULT))
|
||||
if (HidVis != ((unsigned) Prj_FILTER_HIDDEN_DEFAULT |
|
||||
(unsigned) Prj_FILTER_VISIBL_DEFAULT))
|
||||
Prj_PutHiddenParamHidVis (HidVis);
|
||||
|
||||
if (DptCod != Prj_FILTER_DPT_DEFAULT)
|
||||
Prj_PutHiddenParamDptCod (DptCod);
|
||||
|
||||
/***** Put order field *****/
|
||||
if (Order != Prj_ORDER_DEFAULT)
|
||||
Par_PutHiddenParamUnsigned ("Order",(unsigned) Order);
|
||||
|
||||
/***** Put number of page *****/
|
||||
if (NumPage > 1)
|
||||
Pag_PutHiddenParamPagNum (Pag_PROJECTS,NumPage);
|
||||
|
||||
/***** Put selected project code *****/
|
||||
if (PrjCod > 0)
|
||||
Prj_PutParamPrjCod (PrjCod);
|
||||
|
||||
/***** Put another user's code *****/
|
||||
if (Gbl.Usrs.Other.UsrDat.UsrCod > 0)
|
||||
Usr_PutParamOtherUsrCodEncrypted ();
|
||||
}
|
||||
|
@ -494,17 +549,22 @@ void Prj_PutParams (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)
|
||||
{
|
||||
Par_PutHiddenParamUnsigned (ParamPreNonName,PreNon);
|
||||
Par_PutHiddenParamUnsigned (Prj_PARAM_PRE_NON_NAME,PreNon);
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
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,
|
||||
Prj_NUM_WHOSE_PROJECTS - 1,
|
||||
Prj_WHOSE_PROJECTS_DEFAULT);
|
||||
Prj_FILTER_WHOSE_PROJECTS_DEFAULT);
|
||||
}
|
||||
|
||||
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,
|
||||
(1 << Prj_PREASSIGNED) |
|
||||
(1 << Prj_NONPREASSIG),
|
||||
(unsigned) Prj_PREASSIGNED_DEFAULT |
|
||||
(unsigned) Prj_NONPREASSIG_DEFAULT);
|
||||
(unsigned) Prj_FILTER_PREASSIGNED_DEFAULT |
|
||||
(unsigned) Prj_FILTER_NONPREASSIG_DEFAULT);
|
||||
}
|
||||
|
||||
static void Prj_GetHiddenParamHidVis (void)
|
||||
|
@ -539,12 +599,12 @@ static void Prj_GetHiddenParamHidVis (void)
|
|||
case Rol_NET:
|
||||
case Rol_TCH:
|
||||
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,
|
||||
(1 << Prj_HIDDEN) |
|
||||
(1 << Prj_VISIBL),
|
||||
(unsigned) Prj_HIDDEN_DEFAULT |
|
||||
(unsigned) Prj_VISIBL_DEFAULT);
|
||||
(unsigned) Prj_FILTER_HIDDEN_DEFAULT |
|
||||
(unsigned) Prj_FILTER_VISIBL_DEFAULT);
|
||||
break;
|
||||
default:
|
||||
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 *******************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Prj_GetParams (void)
|
||||
{
|
||||
/***** Get which projects to show *****/
|
||||
/***** Get filter (which projects to show) *****/
|
||||
Prj_GetHiddenParamMy_All ();
|
||||
Prj_GetHiddenParamPreNon ();
|
||||
Prj_GetHiddenParamHidVis ();
|
||||
Prj_GetHiddenParamDptCod ();
|
||||
|
||||
/***** Get order and page *****/
|
||||
Prj_GetParamPrjOrder ();
|
||||
|
@ -592,6 +658,7 @@ static void Prj_ShowProjectsHead (bool PrintView)
|
|||
Prj_PutParams (Gbl.Prjs.Filter.My_All,
|
||||
Gbl.Prjs.Filter.PreNon,
|
||||
Gbl.Prjs.Filter.HidVis,
|
||||
Gbl.Prjs.Filter.DptCod,
|
||||
Order,
|
||||
Gbl.Prjs.CurrentPage,
|
||||
-1L);
|
||||
|
@ -2076,8 +2143,9 @@ void Prj_GetListProjects (void)
|
|||
{
|
||||
char PreNonSubQuery[Prj_MAX_BYTES_SUBQUERY];
|
||||
char HidVisSubQuery[Prj_MAX_BYTES_SUBQUERY];
|
||||
char DptCodSubQuery[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_ROW row;
|
||||
unsigned long NumRows;
|
||||
|
@ -2138,6 +2206,13 @@ void Prj_GetListProjects (void)
|
|||
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 */
|
||||
switch (Gbl.Prjs.SelectedOrder)
|
||||
{
|
||||
|
@ -2174,12 +2249,12 @@ void Prj_GetListProjects (void)
|
|||
sprintf (Query,"SELECT projects.PrjCod"
|
||||
" FROM projects,prj_usr"
|
||||
" WHERE projects.CrsCod=%ld"
|
||||
"%s%s"
|
||||
"%s%s%s"
|
||||
" AND projects.PrjCod=prj_usr.PrjCod"
|
||||
" AND prj_usr.UsrCod=%ld"
|
||||
" ORDER BY %s",
|
||||
Gbl.CurrentCrs.Crs.CrsCod,
|
||||
PreNonSubQuery,HidVisSubQuery,
|
||||
PreNonSubQuery,HidVisSubQuery,DptCodSubQuery,
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod,
|
||||
OrderBySubQuery);
|
||||
break;
|
||||
|
@ -2188,12 +2263,12 @@ void Prj_GetListProjects (void)
|
|||
" FROM prj_usr,projects LEFT JOIN departments"
|
||||
" ON projects.DptCod=departments.DptCod"
|
||||
" WHERE projects.CrsCod=%ld"
|
||||
"%s%s"
|
||||
"%s%s%s"
|
||||
" AND projects.PrjCod=prj_usr.PrjCod"
|
||||
" AND prj_usr.UsrCod=%ld"
|
||||
" ORDER BY %s",
|
||||
Gbl.CurrentCrs.Crs.CrsCod,
|
||||
PreNonSubQuery,HidVisSubQuery,
|
||||
PreNonSubQuery,HidVisSubQuery,DptCodSubQuery,
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod,
|
||||
OrderBySubQuery);
|
||||
break;
|
||||
|
@ -2207,10 +2282,10 @@ void Prj_GetListProjects (void)
|
|||
sprintf (Query,"SELECT projects.PrjCod"
|
||||
" FROM projects"
|
||||
" WHERE projects.CrsCod=%ld"
|
||||
"%s%s"
|
||||
"%s%s%s"
|
||||
" ORDER BY %s",
|
||||
Gbl.CurrentCrs.Crs.CrsCod,
|
||||
PreNonSubQuery,HidVisSubQuery,
|
||||
PreNonSubQuery,HidVisSubQuery,DptCodSubQuery,
|
||||
OrderBySubQuery);
|
||||
break;
|
||||
case Prj_ORDER_DEPARTMENT:
|
||||
|
@ -2218,10 +2293,10 @@ void Prj_GetListProjects (void)
|
|||
" FROM projects LEFT JOIN departments"
|
||||
" ON projects.DptCod=departments.DptCod"
|
||||
" WHERE projects.CrsCod=%ld"
|
||||
"%s%s"
|
||||
"%s%s%s"
|
||||
" ORDER BY %s",
|
||||
Gbl.CurrentCrs.Crs.CrsCod,
|
||||
PreNonSubQuery,HidVisSubQuery,
|
||||
PreNonSubQuery,HidVisSubQuery,DptCodSubQuery,
|
||||
OrderBySubQuery);
|
||||
break;
|
||||
}
|
||||
|
@ -2828,9 +2903,10 @@ static void Prj_PutFormProject (struct Project *Prj,bool ItsANewProject)
|
|||
/* Department */
|
||||
fprintf (Gbl.F.Out,"<tr>"
|
||||
"<td class=\"RIGHT_MIDDLE\">"
|
||||
"<label for=\"DptCod\" class=\"%s\">%s:</label>"
|
||||
"<label for=\"%s\" class=\"%s\">%s:</label>"
|
||||
"</td>"
|
||||
"<td class=\"LEFT_MIDDLE\">",
|
||||
Dpt_PARAM_DPT_COD_NAME,
|
||||
The_ClassForm[Gbl.Prefs.Theme],Txt_Department);
|
||||
Dpt_WriteSelectorDepartment (Gbl.CurrentIns.Ins.InsCod, // Departments in current institution
|
||||
Prj->DptCod, // Selected department
|
||||
|
@ -3048,7 +3124,7 @@ void Prj_RecFormProject (void)
|
|||
Par_GetParToText ("Title",Prj.Title,Prj_MAX_BYTES_PROJECT_TITLE);
|
||||
|
||||
/* Get department */
|
||||
Prj.DptCod = Par_GetParToLong ("DptCod");
|
||||
Prj.DptCod = Par_GetParToLong (Dpt_PARAM_DPT_COD_NAME);
|
||||
|
||||
/* Get whether the project is preassigned */
|
||||
Prj.Preassigned = (Par_GetParToBool ("Preassigned")) ? Prj_PREASSIGNED :
|
||||
|
|
|
@ -36,29 +36,42 @@
|
|||
/************************** Public types and constants ***********************/
|
||||
/*****************************************************************************/
|
||||
|
||||
#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
|
||||
|
||||
#define Prj_NUM_PROPOSAL_TYPES 3
|
||||
/***** Filters to list departments *****/
|
||||
/* My projects / all projects */
|
||||
#define Prj_NUM_WHOSE_PROJECTS 2
|
||||
typedef enum
|
||||
{
|
||||
Prj_PROPOSAL_NEW,
|
||||
Prj_PROPOSAL_MODIFIED,
|
||||
Prj_PROPOSAL_UNMODIFIED,
|
||||
} Prj_Proposal_t;
|
||||
#define Prj_PROPOSAL_DEFAULT Prj_PROPOSAL_NEW
|
||||
Prj_MY__PROJECTS,
|
||||
Prj_ALL_PROJECTS,
|
||||
} Prj_WhoseProjects_t;
|
||||
#define Prj_FILTER_WHOSE_PROJECTS_DEFAULT Prj_MY__PROJECTS
|
||||
|
||||
// Related with user's roles in a project
|
||||
// Don't change these numbers! They are used in database
|
||||
#define Prj_NUM_ROLES_IN_PROJECT 4
|
||||
/* Preassigned projects / non-preassigned projects */
|
||||
#define Prj_NUM_PREASSIGNED_NONPREASSIG 2
|
||||
typedef enum
|
||||
{
|
||||
Prj_ROLE_UNK = 0, // Unknown
|
||||
Prj_ROLE_STD = 1, // Student
|
||||
Prj_ROLE_TUT = 2, // Tutor
|
||||
Prj_ROLE_EVA = 3, // Evaluator
|
||||
} Prj_RoleInProject_t;
|
||||
Prj_PREASSIGNED = 0,
|
||||
Prj_NONPREASSIG = 1,
|
||||
} Prj_PreassignedNonpreassig_t;
|
||||
#define Prj_NEW_PRJ_PREASSIGNED_NONPREASSIG_DEFAULT Prj_NONPREASSIG
|
||||
#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
|
||||
typedef enum
|
||||
{
|
||||
|
@ -69,34 +82,32 @@ typedef enum
|
|||
} Prj_Order_t;
|
||||
#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
|
||||
{
|
||||
Prj_MY__PROJECTS,
|
||||
Prj_ALL_PROJECTS,
|
||||
} Prj_WhoseProjects_t;
|
||||
#define Prj_WHOSE_PROJECTS_DEFAULT Prj_MY__PROJECTS
|
||||
Prj_PROPOSAL_NEW,
|
||||
Prj_PROPOSAL_MODIFIED,
|
||||
Prj_PROPOSAL_UNMODIFIED,
|
||||
} 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
|
||||
{
|
||||
Prj_PREASSIGNED = 0,
|
||||
Prj_NONPREASSIG = 1,
|
||||
} Prj_PreassignedNonpreassig_t;
|
||||
#define Prj_NEW_PRJ_PREASSIGNED_NONPREASSIG_DEFAULT Prj_NONPREASSIG
|
||||
#define Prj_PREASSIGNED_DEFAULT (1 << Prj_PREASSIGNED) // on
|
||||
#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
|
||||
Prj_ROLE_UNK = 0, // Unknown
|
||||
Prj_ROLE_STD = 1, // Student
|
||||
Prj_ROLE_TUT = 2, // Tutor
|
||||
Prj_ROLE_EVA = 3, // Evaluator
|
||||
} Prj_RoleInProject_t;
|
||||
|
||||
/***** Struct to store a project *****/
|
||||
struct Project
|
||||
{
|
||||
long PrjCod;
|
||||
|
@ -125,6 +136,7 @@ void Prj_ShowTableAllProjects (void);
|
|||
void Prj_PutParams (Prj_WhoseProjects_t My_All,
|
||||
unsigned PreNon,
|
||||
unsigned HidVis,
|
||||
long DptCod,
|
||||
Prj_Order_t Order,
|
||||
unsigned NumPage,
|
||||
long PrjCod);
|
||||
|
|
|
@ -4135,10 +4135,10 @@ void Rec_ShowFormMyInsCtrDpt (void)
|
|||
/***** Department *****/
|
||||
fprintf (Gbl.F.Out,"<tr>"
|
||||
"<td class=\"RIGHT_MIDDLE\">"
|
||||
"<label for=\"DptCod\" class=\"%s\">%s:</label>"
|
||||
"<label for=\"%s\" class=\"%s\">%s:</label>"
|
||||
"</td>"
|
||||
"<td class=\"LEFT_MIDDLE\" style=\"width:%upx;\">",
|
||||
ClassForm,Txt_Department,
|
||||
Dpt_PARAM_DPT_COD_NAME,ClassForm,Txt_Department,
|
||||
COL2_WIDTH);
|
||||
Act_FormGoToStart (ActChgMyDpt);
|
||||
Dpt_WriteSelectorDepartment (Gbl.Usrs.Me.UsrDat.InsCod, // Departments in my institution
|
||||
|
|
Loading…
Reference in New Issue