mirror of https://github.com/acanas/swad-core.git
Version 22.44.2: Oct 12, 2022 Code refactoring in projects.
This commit is contained in:
parent
36b3f0c9f0
commit
8922c4d135
|
@ -606,10 +606,11 @@ TODO: Fix bug: error al enviar un mensaje a dos recipientes, error on duplicate
|
||||||
|
|
||||||
TODO: Attach pdf files in multimedia.
|
TODO: Attach pdf files in multimedia.
|
||||||
*/
|
*/
|
||||||
#define Log_PLATFORM_VERSION "SWAD 22.44.1 (2022-10-12)"
|
#define Log_PLATFORM_VERSION "SWAD 22.44.2 (2022-10-12)"
|
||||||
#define CSS_FILE "swad22.40.css"
|
#define CSS_FILE "swad22.40.css"
|
||||||
#define JS_FILE "swad21.100.js"
|
#define JS_FILE "swad21.100.js"
|
||||||
/*
|
/*
|
||||||
|
Version 22.44.2: Oct 12, 2022 Code refactoring in projects. (333001 lines)
|
||||||
Version 22.44.1: Oct 12, 2022 Code refactoring in projects. (332985 lines)
|
Version 22.44.1: Oct 12, 2022 Code refactoring in projects. (332985 lines)
|
||||||
Version 22.44: Oct 12, 2022 Code refactoring in projects. (332980 lines)
|
Version 22.44: Oct 12, 2022 Code refactoring in projects. (332980 lines)
|
||||||
Version 22.43.2: Oct 12, 2022 Code refactoring in projects. (332984 lines)
|
Version 22.43.2: Oct 12, 2022 Code refactoring in projects. (332984 lines)
|
||||||
|
|
131
swad_project.c
131
swad_project.c
|
@ -145,11 +145,13 @@ struct Usr_SelectedUsrs Prj_MembersToAdd =
|
||||||
|
|
||||||
struct Prj_Faults
|
struct Prj_Faults
|
||||||
{
|
{
|
||||||
|
bool PrjIsFaulty;
|
||||||
bool WrongTitle;
|
bool WrongTitle;
|
||||||
bool WrongDescription;
|
bool WrongDescription;
|
||||||
bool WrongNumStds;
|
bool WrongNumStds;
|
||||||
bool WrongAssigned;
|
bool WrongAssigned;
|
||||||
};
|
};
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/***************************** Private variables *****************************/
|
/***************************** Private variables *****************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -197,6 +199,9 @@ static void Prj_PutIconsOnePrj (void *Projects);
|
||||||
//---------------------- Show one project in a row ----------------------------
|
//---------------------- Show one project in a row ----------------------------
|
||||||
static void Prj_ShowProjectRow (struct Prj_Projects *Projects,
|
static void Prj_ShowProjectRow (struct Prj_Projects *Projects,
|
||||||
unsigned NumIndex);
|
unsigned NumIndex);
|
||||||
|
static void Prj_ShowProjectFirstRow (struct Prj_Projects *Projects,
|
||||||
|
const struct Prj_Faults *Faults,
|
||||||
|
unsigned NumIndex,unsigned UniqueId);
|
||||||
static void Prj_ShowProjectReviewStatus (const struct Prj_Projects *Projects);
|
static void Prj_ShowProjectReviewStatus (const struct Prj_Projects *Projects);
|
||||||
static void Prj_ShowProjectAssigned (const struct Prj_Projects *Projects,
|
static void Prj_ShowProjectAssigned (const struct Prj_Projects *Projects,
|
||||||
const struct Prj_Faults *Faults);
|
const struct Prj_Faults *Faults);
|
||||||
|
@ -211,7 +216,7 @@ static void Prj_ShowOneProjectProposal (const struct Prj_Projects *Projects,
|
||||||
unsigned UniqueId);
|
unsigned UniqueId);
|
||||||
|
|
||||||
//------------------------------------------------ ----------------------------
|
//------------------------------------------------ ----------------------------
|
||||||
static bool Prj_CheckIfPrjIsFaulty (long PrjCod,struct Prj_Faults *Faults);
|
static void Prj_CheckIfPrjIsFaulty (long PrjCod,struct Prj_Faults *Faults);
|
||||||
static void Prj_PutWarningIcon (void);
|
static void Prj_PutWarningIcon (void);
|
||||||
static void Prj_PutIconToToggleProject (unsigned UniqueId,
|
static void Prj_PutIconToToggleProject (unsigned UniqueId,
|
||||||
const char *Icon,const char *Text);
|
const char *Icon,const char *Text);
|
||||||
|
@ -1351,25 +1356,75 @@ void Prj_PrintOneProject (void)
|
||||||
static void Prj_ShowProjectRow (struct Prj_Projects *Projects,
|
static void Prj_ShowProjectRow (struct Prj_Projects *Projects,
|
||||||
unsigned NumIndex)
|
unsigned NumIndex)
|
||||||
{
|
{
|
||||||
extern const char *Txt_Actions[Act_NUM_ACTIONS];
|
|
||||||
extern const char *Txt_Description;
|
extern const char *Txt_Description;
|
||||||
extern const char *Txt_Required_knowledge;
|
extern const char *Txt_Required_knowledge;
|
||||||
extern const char *Txt_Required_materials;
|
extern const char *Txt_Required_materials;
|
||||||
|
struct Prj_Faults Faults;
|
||||||
|
static unsigned UniqueId = 0;
|
||||||
|
|
||||||
|
/***** Check project faults *****/
|
||||||
|
Prj_CheckIfPrjIsFaulty (Projects->Prj.PrjCod,&Faults);
|
||||||
|
|
||||||
|
/***** First row with main data (dates, title...) *****/
|
||||||
|
UniqueId++;
|
||||||
|
Prj_ShowProjectFirstRow (Projects,&Faults,NumIndex,UniqueId);
|
||||||
|
|
||||||
|
/***** Review status *****/
|
||||||
|
Prj_ShowProjectReviewStatus (Projects);
|
||||||
|
|
||||||
|
/***** Assigned? *****/
|
||||||
|
Prj_ShowProjectAssigned (Projects,&Faults);
|
||||||
|
|
||||||
|
/***** Number of students *****/
|
||||||
|
Prj_ShowProjectNumStds (Projects,&Faults);
|
||||||
|
|
||||||
|
/***** Project members *****/
|
||||||
|
Prj_ShowProjectMembers (Projects);
|
||||||
|
|
||||||
|
/***** Link to show hidden info *****/
|
||||||
|
Prj_ShowOneProjectLinkToShowHiddenInfo (Projects,UniqueId);
|
||||||
|
|
||||||
|
/***** Proposal *****/
|
||||||
|
Prj_ShowOneProjectProposal (Projects,UniqueId);
|
||||||
|
|
||||||
|
/***** Write rows of data of this project *****/
|
||||||
|
/* Description of the project */
|
||||||
|
Prj_ShowOneProjectTxtField (Projects,"prj_dsc_",UniqueId,
|
||||||
|
Txt_Description,Projects->Prj.Description,
|
||||||
|
Faults.WrongDescription);
|
||||||
|
|
||||||
|
/* Required knowledge to carry out the project */
|
||||||
|
Prj_ShowOneProjectTxtField (Projects,"prj_knw_",UniqueId,
|
||||||
|
Txt_Required_knowledge,Projects->Prj.Knowledge,
|
||||||
|
false); // No warning
|
||||||
|
|
||||||
|
/* Required materials to carry out the project */
|
||||||
|
Prj_ShowOneProjectTxtField (Projects,"prj_mtr_",UniqueId,
|
||||||
|
Txt_Required_materials,Projects->Prj.Materials,
|
||||||
|
false); // No warning
|
||||||
|
|
||||||
|
/* Link to view more info about the project */
|
||||||
|
Prj_ShowOneProjectURL (Projects,"prj_url_",UniqueId);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/** When listing a project, show first row with main data (dates, title...) **/
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
static void Prj_ShowProjectFirstRow (struct Prj_Projects *Projects,
|
||||||
|
const struct Prj_Faults *Faults,
|
||||||
|
unsigned NumIndex,unsigned UniqueId)
|
||||||
|
{
|
||||||
|
extern const char *Txt_Actions[Act_NUM_ACTIONS];
|
||||||
|
char *Id;
|
||||||
Act_Action_t NextAction;
|
Act_Action_t NextAction;
|
||||||
char *Anchor = NULL;
|
char *Anchor = NULL;
|
||||||
const char *ClassDate = (Projects->Prj.Hidden == Prj_HIDDEN) ? "DATE_BLUE_LIGHT" :
|
const char *ClassDate = (Projects->Prj.Hidden == Prj_HIDDEN) ? "DATE_BLUE_LIGHT" :
|
||||||
"DATE_BLUE";
|
"DATE_BLUE";
|
||||||
struct Prj_Faults Faults;
|
|
||||||
bool PrjIsFaulty;
|
|
||||||
static unsigned UniqueId = 0;
|
|
||||||
char *Id;
|
|
||||||
|
|
||||||
/***** Set anchor string *****/
|
/***** Set anchor string *****/
|
||||||
Frm_SetAnchorStr (Projects->Prj.PrjCod,&Anchor);
|
Frm_SetAnchorStr (Projects->Prj.PrjCod,&Anchor);
|
||||||
|
|
||||||
/***** Check if project is faulty or faultless *****/
|
|
||||||
PrjIsFaulty = Prj_CheckIfPrjIsFaulty (Projects->Prj.PrjCod,&Faults);
|
|
||||||
|
|
||||||
/***** Write first row of data of this project *****/
|
/***** Write first row of data of this project *****/
|
||||||
HTM_TR_Begin (NULL);
|
HTM_TR_Begin (NULL);
|
||||||
|
|
||||||
|
@ -1381,7 +1436,7 @@ static void Prj_ShowProjectRow (struct Prj_Projects *Projects,
|
||||||
The_GetSuffix (),
|
The_GetSuffix (),
|
||||||
The_GetColorRows ());
|
The_GetColorRows ());
|
||||||
HTM_Unsigned (NumIndex);
|
HTM_Unsigned (NumIndex);
|
||||||
if (PrjIsFaulty)
|
if (Faults->PrjIsFaulty)
|
||||||
{
|
{
|
||||||
HTM_BR ();
|
HTM_BR ();
|
||||||
Prj_PutWarningIcon ();
|
Prj_PutWarningIcon ();
|
||||||
|
@ -1406,7 +1461,6 @@ static void Prj_ShowProjectRow (struct Prj_Projects *Projects,
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Creation date/time */
|
/* Creation date/time */
|
||||||
UniqueId++;
|
|
||||||
if (asprintf (&Id,"prj_creat_%u",UniqueId) < 0)
|
if (asprintf (&Id,"prj_creat_%u",UniqueId) < 0)
|
||||||
Err_NotEnoughMemoryExit ();
|
Err_NotEnoughMemoryExit ();
|
||||||
switch (Projects->View)
|
switch (Projects->View)
|
||||||
|
@ -1479,7 +1533,7 @@ static void Prj_ShowProjectRow (struct Prj_Projects *Projects,
|
||||||
HTM_BUTTON_End ();
|
HTM_BUTTON_End ();
|
||||||
Frm_EndForm ();
|
Frm_EndForm ();
|
||||||
}
|
}
|
||||||
if (Faults.WrongTitle)
|
if (Faults->WrongTitle)
|
||||||
Prj_PutWarningIcon ();
|
Prj_PutWarningIcon ();
|
||||||
HTM_ARTICLE_End ();
|
HTM_ARTICLE_End ();
|
||||||
HTM_TD_End ();
|
HTM_TD_End ();
|
||||||
|
@ -1489,43 +1543,6 @@ static void Prj_ShowProjectRow (struct Prj_Projects *Projects,
|
||||||
|
|
||||||
HTM_TR_End ();
|
HTM_TR_End ();
|
||||||
|
|
||||||
/***** Review status *****/
|
|
||||||
Prj_ShowProjectReviewStatus (Projects);
|
|
||||||
|
|
||||||
/***** Assigned? *****/
|
|
||||||
Prj_ShowProjectAssigned (Projects,&Faults);
|
|
||||||
|
|
||||||
/***** Number of students *****/
|
|
||||||
Prj_ShowProjectNumStds (Projects,&Faults);
|
|
||||||
|
|
||||||
/***** Project members *****/
|
|
||||||
Prj_ShowProjectMembers (Projects);
|
|
||||||
|
|
||||||
/***** Link to show hidden info *****/
|
|
||||||
Prj_ShowOneProjectLinkToShowHiddenInfo (Projects,UniqueId);
|
|
||||||
|
|
||||||
/***** Proposal *****/
|
|
||||||
Prj_ShowOneProjectProposal (Projects,UniqueId);
|
|
||||||
|
|
||||||
/***** Write rows of data of this project *****/
|
|
||||||
/* Description of the project */
|
|
||||||
Prj_ShowOneProjectTxtField (Projects,"prj_dsc_",UniqueId,
|
|
||||||
Txt_Description,Projects->Prj.Description,
|
|
||||||
Faults.WrongDescription);
|
|
||||||
|
|
||||||
/* Required knowledge to carry out the project */
|
|
||||||
Prj_ShowOneProjectTxtField (Projects,"prj_knw_",UniqueId,
|
|
||||||
Txt_Required_knowledge,Projects->Prj.Knowledge,
|
|
||||||
false); // No warning
|
|
||||||
|
|
||||||
/* Required materials to carry out the project */
|
|
||||||
Prj_ShowOneProjectTxtField (Projects,"prj_mtr_",UniqueId,
|
|
||||||
Txt_Required_materials,Projects->Prj.Materials,
|
|
||||||
false); // No warning
|
|
||||||
|
|
||||||
/* Link to view more info about the project */
|
|
||||||
Prj_ShowOneProjectURL (Projects,"prj_url_",UniqueId);
|
|
||||||
|
|
||||||
/***** Free anchor string *****/
|
/***** Free anchor string *****/
|
||||||
Frm_FreeAnchorStr (Anchor);
|
Frm_FreeAnchorStr (Anchor);
|
||||||
}
|
}
|
||||||
|
@ -1983,7 +2000,7 @@ static void Prj_ShowOneProjectProposal (const struct Prj_Projects *Projects,
|
||||||
/********************** Check if a project has faults ************************/
|
/********************** Check if a project has faults ************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
static bool Prj_CheckIfPrjIsFaulty (long PrjCod,struct Prj_Faults *Faults)
|
static void Prj_CheckIfPrjIsFaulty (long PrjCod,struct Prj_Faults *Faults)
|
||||||
{
|
{
|
||||||
MYSQL_RES *mysql_res;
|
MYSQL_RES *mysql_res;
|
||||||
MYSQL_ROW row;
|
MYSQL_ROW row;
|
||||||
|
@ -2048,10 +2065,10 @@ static bool Prj_CheckIfPrjIsFaulty (long PrjCod,struct Prj_Faults *Faults)
|
||||||
DB_FreeMySQLResult (&mysql_res);
|
DB_FreeMySQLResult (&mysql_res);
|
||||||
}
|
}
|
||||||
|
|
||||||
return Faults->WrongTitle ||
|
Faults->PrjIsFaulty = Faults->WrongTitle ||
|
||||||
Faults->WrongDescription ||
|
Faults->WrongDescription ||
|
||||||
Faults->WrongNumStds ||
|
Faults->WrongNumStds ||
|
||||||
Faults->WrongAssigned;
|
Faults->WrongAssigned;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -3069,11 +3086,13 @@ static void Prj_GetListProjects (struct Prj_Projects *Projects)
|
||||||
switch (Projects->Filter.Faulti)
|
switch (Projects->Filter.Faulti)
|
||||||
{
|
{
|
||||||
case (1 << Prj_FAULTY): // Faulty projects
|
case (1 << Prj_FAULTY): // Faulty projects
|
||||||
if (Prj_CheckIfPrjIsFaulty (PrjCod,&Faults))
|
Prj_CheckIfPrjIsFaulty (PrjCod,&Faults);
|
||||||
|
if (Faults.PrjIsFaulty)
|
||||||
Projects->LstPrjCods[NumPrjsAfterFilter++] = PrjCod;
|
Projects->LstPrjCods[NumPrjsAfterFilter++] = PrjCod;
|
||||||
break;
|
break;
|
||||||
case (1 << Prj_FAULTLESS): // Faultless projects
|
case (1 << Prj_FAULTLESS): // Faultless projects
|
||||||
if (!Prj_CheckIfPrjIsFaulty (PrjCod,&Faults))
|
Prj_CheckIfPrjIsFaulty (PrjCod,&Faults);
|
||||||
|
if (!Faults.PrjIsFaulty)
|
||||||
Projects->LstPrjCods[NumPrjsAfterFilter++] = PrjCod;
|
Projects->LstPrjCods[NumPrjsAfterFilter++] = PrjCod;
|
||||||
break;
|
break;
|
||||||
default: // All projects
|
default: // All projects
|
||||||
|
|
Loading…
Reference in New Issue