Version 22.98: Apr 17, 2023 Code refactoring in rubrics.

This commit is contained in:
acanas 2023-04-17 23:55:22 +02:00
parent d6cce8b198
commit 643876456b
31 changed files with 221 additions and 170 deletions

View File

@ -1563,14 +1563,14 @@ void Agd_ReceiveFormEvent (void)
if (!AgdEvent.Location[0]) // If there is no event
{
NewEventIsCorrect = false;
Ale_ShowAlertYouMustSpecifyTheTitle ();
Ale_CreateAlertYouMustSpecifyTheTitle ();
}
/***** Check if event is correct *****/
if (!AgdEvent.Event[0]) // If there is no event
{
NewEventIsCorrect = false;
Ale_ShowAlertYouMustSpecifyTheTitle ();
Ale_CreateAlertYouMustSpecifyTheTitle ();
}
/***** Create a new event or update an existing one *****/

View File

@ -476,15 +476,14 @@ void Ale_ShowAlertAndButton2 (Act_Action_t NextAction,const char *Anchor,const c
}
/*****************************************************************************/
/** Create alert when user not found or no permission to perform an action ***/
/**************** Create alert when a form field is empty ********************/
/*****************************************************************************/
void Ale_CreateAlertUserNotFoundOrYouDoNotHavePermission (void)
void Ale_ShowAlertYouCanNotLeaveFieldEmpty (void)
{
extern const char *Txt_User_not_found_or_you_do_not_have_permission_;
extern const char *Txt_You_can_not_leave_the_field_empty;
Ale_CreateAlert (Ale_WARNING,NULL,
Txt_User_not_found_or_you_do_not_have_permission_);
Ale_ShowAlert (Ale_WARNING,Txt_You_can_not_leave_the_field_empty);
}
/*****************************************************************************/
@ -498,6 +497,18 @@ void Ale_ShowAlertUserNotFoundOrYouDoNotHavePermission (void)
Ale_ShowAlert (Ale_WARNING,Txt_User_not_found_or_you_do_not_have_permission_);
}
/*****************************************************************************/
/** Create alert when user not found or no permission to perform an action ***/
/*****************************************************************************/
void Ale_CreateAlertUserNotFoundOrYouDoNotHavePermission (void)
{
extern const char *Txt_User_not_found_or_you_do_not_have_permission_;
Ale_CreateAlert (Ale_WARNING,NULL,
Txt_User_not_found_or_you_do_not_have_permission_);
}
/*****************************************************************************/
/**************** Create alert when a form field is empty ********************/
/*****************************************************************************/
@ -509,22 +520,11 @@ void Ale_CreateAlertYouCanNotLeaveFieldEmpty (void)
Ale_CreateAlert (Ale_WARNING,NULL,Txt_You_can_not_leave_the_field_empty);
}
/*****************************************************************************/
/**************** Create alert when a form field is empty ********************/
/*****************************************************************************/
void Ale_ShowAlertYouCanNotLeaveFieldEmpty (void)
{
extern const char *Txt_You_can_not_leave_the_field_empty;
Ale_ShowAlert (Ale_WARNING,Txt_You_can_not_leave_the_field_empty);
}
/*****************************************************************************/
/********************* Create alert when title is empty **********************/
/*****************************************************************************/
void Ale_ShowAlertYouMustSpecifyTheTitle (void)
void Ale_CreateAlertYouMustSpecifyTheTitle (void)
{
extern const char *Txt_You_must_specify_the_title;
@ -536,7 +536,7 @@ void Ale_ShowAlertYouMustSpecifyTheTitle (void)
/****************** Create alert when web address is empty *******************/
/*****************************************************************************/
void Ale_ShowAlertYouMustSpecifyTheWebAddress (void)
void Ale_CreateAlertYouMustSpecifyTheWebAddress (void)
{
extern const char *Txt_You_must_specify_the_web_address;
@ -548,7 +548,7 @@ void Ale_ShowAlertYouMustSpecifyTheWebAddress (void)
/************ Create alert when short name or full name are empty ************/
/*****************************************************************************/
void Ale_ShowAlertYouMustSpecifyTheName (void)
void Ale_CreateAlertYouMustSpecifyTheName (void)
{
extern const char *Txt_You_must_specify_the_name;
@ -560,7 +560,7 @@ void Ale_ShowAlertYouMustSpecifyTheName (void)
/************ Create alert when short name or full name are empty ************/
/*****************************************************************************/
void Ale_ShowAlertYouMustSpecifyTheShortNameAndTheFullName (void)
void Ale_CreateAlertYouMustSpecifyTheShortNameAndTheFullName (void)
{
extern const char *Txt_You_must_specify_the_short_name_and_the_full_name;

View File

@ -82,13 +82,13 @@ void Ale_ShowAlertAndButton2 (Act_Action_t NextAction,const char *Anchor,const c
void (*FuncPars) (void *Args),void *Args,
Btn_Button_t Button,const char *TxtButton);
void Ale_CreateAlertUserNotFoundOrYouDoNotHavePermission (void);
void Ale_ShowAlertUserNotFoundOrYouDoNotHavePermission (void);
void Ale_CreateAlertYouCanNotLeaveFieldEmpty (void);
void Ale_ShowAlertYouCanNotLeaveFieldEmpty (void);
void Ale_ShowAlertYouMustSpecifyTheTitle (void);
void Ale_ShowAlertYouMustSpecifyTheWebAddress (void);
void Ale_ShowAlertYouMustSpecifyTheName (void);
void Ale_ShowAlertYouMustSpecifyTheShortNameAndTheFullName (void);
void Ale_ShowAlertUserNotFoundOrYouDoNotHavePermission (void);
void Ale_CreateAlertUserNotFoundOrYouDoNotHavePermission (void);
void Ale_CreateAlertYouCanNotLeaveFieldEmpty (void);
void Ale_CreateAlertYouMustSpecifyTheTitle (void);
void Ale_CreateAlertYouMustSpecifyTheWebAddress (void);
void Ale_CreateAlertYouMustSpecifyTheName (void);
void Ale_CreateAlertYouMustSpecifyTheShortNameAndTheFullName (void);
#endif

View File

@ -1483,7 +1483,7 @@ void Asg_ReceiveFormAssignment (void)
else // If there is not an assignment title
{
NewAssignmentIsCorrect = false;
Ale_ShowAlertYouMustSpecifyTheTitle ();
Ale_CreateAlertYouMustSpecifyTheTitle ();
}
/***** Create a new assignment or update an existing one *****/

View File

@ -1237,7 +1237,7 @@ void Att_ReceiveFormEvent (void)
else // If there is not an attendance event title
{
ReceivedAttEventIsCorrect = false;
Ale_ShowAlertYouMustSpecifyTheTitle ();
Ale_CreateAlertYouMustSpecifyTheTitle ();
}
/***** Create a new attendance event or update an existing one *****/

View File

@ -945,7 +945,7 @@ void Ban_ReceiveFormNewBanner (void)
}
}
else // If there is not a banner name
Ale_ShowAlertYouMustSpecifyTheShortNameAndTheFullName ();
Ale_CreateAlertYouMustSpecifyTheShortNameAndTheFullName ();
}
/*****************************************************************************/

View File

@ -817,7 +817,7 @@ void Bld_ReceiveFormNewBuilding (void)
}
}
else // If there is not a building name
Ale_ShowAlertYouMustSpecifyTheShortNameAndTheFullName ();
Ale_CreateAlertYouMustSpecifyTheShortNameAndTheFullName ();
}
/*****************************************************************************/

View File

@ -1560,10 +1560,10 @@ static void Ctr_ReceiveFormRequestOrCreateCtr (Hie_Status_t Status)
}
}
else // If there is not a web
Ale_ShowAlertYouMustSpecifyTheWebAddress ();
Ale_CreateAlertYouMustSpecifyTheWebAddress ();
}
else // If there is not a center name
Ale_ShowAlertYouMustSpecifyTheShortNameAndTheFullName ();
Ale_CreateAlertYouMustSpecifyTheShortNameAndTheFullName ();
}
/*****************************************************************************/

View File

@ -629,10 +629,11 @@ TODO: Emilce Barrera Mesa: Podr
TODO: Emilce Barrera Mesa: Mis estudiantes presentan muchas dificultades a la hora de poner la foto porque la plataforma es muy exigente respecto al fondo de la imagen.
*/
#define Log_PLATFORM_VERSION "SWAD 22.97 (2023-04-14)"
#define Log_PLATFORM_VERSION "SWAD 22.98 (2023-04-17)"
#define CSS_FILE "swad22.95.css"
#define JS_FILE "swad22.49.js"
/*
Version 22.98: Apr 17, 2023 Code refactoring in rubrics. (339062 lines)
Version 22.97: Apr 14, 2023 Changes in listing of rubrics. (339029 lines)
Version 22.96.1: Apr 14, 2023 Code refactoring in selectors. (338991 lines)
Version 22.96: Apr 12, 2023 Changes in configuration of projects.

View File

@ -1543,7 +1543,7 @@ static void Crs_ReceiveFormRequestOrCreateCrs (Hie_Status_t Status)
}
}
else // If there is not a course name
Ale_ShowAlertYouMustSpecifyTheShortNameAndTheFullName ();
Ale_CreateAlertYouMustSpecifyTheShortNameAndTheFullName ();
}
else // Year not valid
Ale_CreateAlert (Ale_WARNING,NULL,

View File

@ -1121,10 +1121,10 @@ static void Deg_ReceiveFormRequestOrCreateDeg (Hie_Status_t Status)
}
}
else // If there is not a degree logo or web
Ale_ShowAlertYouMustSpecifyTheWebAddress ();
Ale_CreateAlertYouMustSpecifyTheWebAddress ();
}
else // If there is not a degree name
Ale_ShowAlertYouMustSpecifyTheShortNameAndTheFullName ();
Ale_CreateAlertYouMustSpecifyTheShortNameAndTheFullName ();
}
/*****************************************************************************/

View File

@ -946,10 +946,10 @@ void Dpt_ReceiveFormNewDpt (void)
}
}
else // If there is not a web
Ale_ShowAlertYouMustSpecifyTheWebAddress ();
Ale_CreateAlertYouMustSpecifyTheWebAddress ();
}
else // If there is not a department name
Ale_ShowAlertYouMustSpecifyTheShortNameAndTheFullName ();
Ale_CreateAlertYouMustSpecifyTheShortNameAndTheFullName ();
}
/*****************************************************************************/

View File

@ -1488,7 +1488,7 @@ static bool Exa_CheckExamFieldsReceivedFromForm (const struct Exa_Exam *Exam)
else // If there is not an exam title
{
NewExamIsCorrect = false;
Ale_ShowAlertYouMustSpecifyTheTitle ();
Ale_CreateAlertYouMustSpecifyTheTitle ();
}
return NewExamIsCorrect;

View File

@ -313,7 +313,7 @@ static bool ExaSet_CheckSetTitleReceivedFromForm (const struct ExaSet_Set *Set,
else // If there is not a set title
{
NewTitleIsCorrect = false;
Ale_ShowAlertYouMustSpecifyTheTitle ();
Ale_CreateAlertYouMustSpecifyTheTitle ();
}
return NewTitleIsCorrect;

View File

@ -1484,7 +1484,7 @@ static bool Gam_CheckGameFieldsReceivedFromForm (const struct Gam_Game *Game)
else // If there is not a game title
{
NewGameIsCorrect = false;
Ale_ShowAlertYouMustSpecifyTheTitle ();
Ale_CreateAlertYouMustSpecifyTheTitle ();
}
return NewGameIsCorrect;

View File

@ -1600,10 +1600,10 @@ static void Ins_ReceiveFormRequestOrCreateIns (Hie_Status_t Status)
}
}
else // If there is not a web
Ale_ShowAlertYouMustSpecifyTheWebAddress ();
Ale_CreateAlertYouMustSpecifyTheWebAddress ();
}
else // If there is not a institution name
Ale_ShowAlertYouMustSpecifyTheShortNameAndTheFullName ();
Ale_CreateAlertYouMustSpecifyTheShortNameAndTheFullName ();
}
/*****************************************************************************/

View File

@ -795,7 +795,7 @@ void Lnk_ReceiveFormNewLink (void)
}
}
else // If there is not a link name
Ale_ShowAlertYouMustSpecifyTheShortNameAndTheFullName ();
Ale_CreateAlertYouMustSpecifyTheShortNameAndTheFullName ();
}
/*****************************************************************************/

View File

@ -779,7 +779,7 @@ void Mai_ReceiveFormNewMailDomain (void)
}
}
else // If there is not a mail name
Ale_ShowAlertYouMustSpecifyTheShortNameAndTheFullName ();
Ale_CreateAlertYouMustSpecifyTheShortNameAndTheFullName ();
}
/*****************************************************************************/

View File

@ -911,7 +911,8 @@ void Par_GetMainPars (void)
unsigned Par_GetParText (const char *ParName,char *ParValue,size_t MaxBytes)
{
return Par_GetParAndChangeFormat (ParName,ParValue,MaxBytes,
Str_TO_TEXT,true);
Str_TO_TEXT,
true); // Remove leading and trailing spaces
}
/*****************************************************************************/

View File

@ -804,7 +804,7 @@ void Plc_ReceiveFormNewPlace (void)
}
}
else // If there is not a place name
Ale_ShowAlertYouMustSpecifyTheShortNameAndTheFullName ();
Ale_CreateAlertYouMustSpecifyTheShortNameAndTheFullName ();
}
/*****************************************************************************/

View File

@ -4093,7 +4093,7 @@ void Prj_ReceiveFormProject (void)
if (!Projects.Prj.Title[0]) // If there is not a project title
{
NewProjectIsCorrect = false;
Ale_ShowAlertYouMustSpecifyTheTitle ();
Ale_CreateAlertYouMustSpecifyTheTitle ();
}
/***** Create a new project or update an existing one *****/

View File

@ -37,6 +37,7 @@
#include "swad_project_config.h"
#include "swad_project_database.h"
#include "swad_rubric.h"
#include "swad_rubric_database.h"
/*****************************************************************************/
/**************************** Private constants ******************************/
@ -193,7 +194,7 @@ static void PrjCfg_ShowFormRubric (const struct PrjCfg_Config *Config,
extern const char *Txt_PROJECT_RUBRIC[PrjCfg_NUM_RUBRICS];
extern const char *Txt_no_rubric;
unsigned NumRub;
const struct Rub_Rubric *Rubric;
char Title[Rub_MAX_BYTES_TITLE + 1];
long RubCodInConfig = Config->RubCod[WhichRubric];
/***** Row with form for rubric *****/
@ -222,11 +223,11 @@ static void PrjCfg_ShowFormRubric (const struct PrjCfg_Config *Config,
NumRub < Rubrics->Num;
NumRub++)
{
Rubric = &Rubrics->Lst[NumRub];
HTM_OPTION (HTM_Type_LONG,&Rubric->RubCod,
Rubric->RubCod == RubCodInConfig, // Selected?
Rub_DB_GetRubricTitle (Rubrics->Lst[NumRub],Title,Rub_MAX_BYTES_TITLE);
HTM_OPTION (HTM_Type_LONG,&Rubrics->Lst[NumRub],
Rubrics->Lst[NumRub] == RubCodInConfig, // Selected?
HTM_OPTION_ENABLED,
"%s",Rubric->Title);
"%s",Title);
}
HTM_SELECT_End ();

View File

@ -474,7 +474,7 @@ void Rec_ReceiveFormField (void)
Rec_CreateRecordField ();
}
else // If there is not name
Ale_ShowAlertYouMustSpecifyTheName ();
Ale_CreateAlertYouMustSpecifyTheName ();
/***** Show the form again *****/
Rec_ReqEditRecordFields ();

View File

@ -1403,7 +1403,7 @@ void Roo_ReceiveFormNewRoom (void)
}
}
else // If there is not a room name
Ale_ShowAlertYouMustSpecifyTheShortNameAndTheFullName ();
Ale_CreateAlertYouMustSpecifyTheShortNameAndTheFullName ();
}
/*****************************************************************************/

View File

@ -65,7 +65,7 @@ static void Rub_PutButtonToCreateNewRubric (struct Rub_Rubrics *Rubrics);
static void Rub_PutParsToCreateNewRubric (void *Rubrics);
static void Rub_ShowRubricMainData (struct Rub_Rubrics *Rubrics,
const struct Rub_Rubric *Rubric,
struct Rub_Rubric *Rubric,
bool ShowOnlyThisRubric);
static void Rub_PutIconsOneRubric (void *Rubrics);
@ -75,12 +75,11 @@ static void Rub_PutIconsToRemEditOneRubric (struct Rub_Rubrics *Rubrics);
static void Rub_RemoveRubricFromAllTables (long RubCod);
static void Rub_ReceiveRubricFieldsFromForm (struct Rub_Rubric *Rubric,
char Txt[Cns_MAX_BYTES_TEXT + 1]);
static void Rub_ReceiveRubricFieldsFromForm (struct Rub_Rubric *Rubric);
static bool Rub_CheckRubricFieldsReceivedFromForm (const struct Rub_Rubric *Rubric);
static void Rub_CreateRubric (struct Rub_Rubric *Rubric,const char *Txt);
static void Rub_UpdateRubric (struct Rub_Rubric *Rubric,const char *Txt);
static void Rub_CreateRubric (struct Rub_Rubric *Rubric);
static void Rub_UpdateRubric (struct Rub_Rubric *Rubric);
/*****************************************************************************/
/*************************** Reset rubrics context ***************************/
@ -96,16 +95,30 @@ void Rub_ResetRubrics (struct Rub_Rubrics *Rubrics)
}
/*****************************************************************************/
/*************************** Initialize rubric to empty **********************/
/************************ Rubric constructor/destructor **********************/
/*****************************************************************************/
void Rub_ResetRubric (struct Rub_Rubric *Rubric)
void Rub_RubricConstructor (struct Rub_Rubric *Rubric)
{
/***** Initialize to empty rubric *****/
Rubric->RubCod = -1L;
Rubric->CrsCod = -1L;
Rubric->UsrCod = -1L;
Rubric->Title[0] = '\0';
Rubric->RubCod = -1L;
Rubric->CrsCod = -1L;
Rubric->UsrCod = -1L;
Rubric->Title[0] = '\0';
/***** Allocate memory for rubric text *****/
if ((Rubric->Txt = malloc (Cns_MAX_BYTES_TEXT + 1)) == NULL)
Err_NotEnoughMemoryExit ();
}
void Rub_RubricDestructor (struct Rub_Rubric *Rubric)
{
/***** Free memory used for rubric text *****/
if (Rubric->Txt != NULL)
{
free (Rubric->Txt);
Rubric->Txt = NULL;
}
}
/*****************************************************************************/
@ -138,6 +151,7 @@ void Rub_ListAllRubrics (struct Rub_Rubrics *Rubrics)
extern const char *Txt_No_rubrics;
struct Pag_Pagination Pagination;
unsigned NumRubric;
struct Rub_Rubric Rubric;
/***** Get number of groups in current course *****/
if (!Gbl.Crs.Grps.NumGrps)
@ -170,11 +184,6 @@ void Rub_ListAllRubrics (struct Rub_Rubrics *Rubrics)
HTM_TR_Begin (NULL);
HTM_TH_Span (NULL,HTM_HEAD_CENTER,1,1,"CONTEXT_COL"); // Column for contextual icons
/*
HTM_TH_Begin (HTM_HEAD_LEFT);
HTM_Txt (Txt_Rubric);
HTM_TH_End ();
*/
HTM_TH_Span (Txt_Rubric,HTM_HEAD_LEFT,1,2,NULL);
// HTM_TH (Txt_Criteria,HTM_HEAD_RIGHT);
@ -186,10 +195,17 @@ void Rub_ListAllRubrics (struct Rub_Rubrics *Rubrics)
NumRubric <= Pagination.LastItemVisible;
NumRubric++)
{
/* Show a pair of rows with the main data of this rubric */
Rubrics->RubCod = Rubrics->Lst[NumRubric - 1].RubCod;
Rub_ShowRubricMainData (Rubrics,&Rubrics->Lst[NumRubric - 1],
/***** Get rubric data *****/
Rub_RubricConstructor (&Rubric);
Rubrics->RubCod = Rubric.RubCod = Rubrics->Lst[NumRubric - 1];
Rub_GetRubricDataByCod (&Rubric);
/***** Show main data of this rubric *****/
Rub_ShowRubricMainData (Rubrics,&Rubric,
false); // Do not show only this rubric
/***** Free memory used for rubric *****/
Rub_RubricDestructor (&Rubric);
}
/***** End table *****/
@ -330,15 +346,20 @@ void Rub_SeeOneRubric (void)
/***** Reset rubrics context *****/
Rub_ResetRubrics (&Rubrics);
Rub_ResetRubric (&Rubric);
Rub_RubricConstructor (&Rubric);
/***** Get parameters *****/
Rub_GetPars (&Rubrics,true);
Rubric.RubCod = Rubrics.RubCod;
/***** Get rubric data *****/
Rub_GetRubricDataByCod (&Rubric);
/***** Show rubric *****/
Rub_ShowOnlyOneRubric (&Rubrics,&Rubric);
/***** Free memory used for rubric *****/
Rub_RubricDestructor (&Rubric);
}
/*****************************************************************************/
@ -346,13 +367,14 @@ void Rub_SeeOneRubric (void)
/*****************************************************************************/
void Rub_ShowOnlyOneRubric (struct Rub_Rubrics *Rubrics,
const struct Rub_Rubric *Rubric)
struct Rub_Rubric *Rubric)
{
extern const char *Hlp_ASSESSMENT_Rubrics;
extern const char *Txt_Rubric;
/***** Begin box *****/
Box_BoxBegin (NULL,Txt_Rubric,
Box_BoxBegin (NULL,Rubric->Title[0] ? Rubric->Title :
Txt_Rubric,
Rub_PutIconsOneRubric,Rubrics,
Hlp_ASSESSMENT_Rubrics,Box_NOT_CLOSABLE);
@ -372,12 +394,11 @@ void Rub_ShowOnlyOneRubric (struct Rub_Rubrics *Rubrics,
/*****************************************************************************/
static void Rub_ShowRubricMainData (struct Rub_Rubrics *Rubrics,
const struct Rub_Rubric *Rubric,
struct Rub_Rubric *Rubric,
bool ShowOnlyThisRubric)
{
extern const char *Txt_View_rubric;
extern const char *Txt_Number_of_criteria;
char Txt[Cns_MAX_BYTES_TEXT + 1];
/***** Begin box and table *****/
if (ShowOnlyThisRubric)
@ -436,12 +457,11 @@ static void Rub_ShowRubricMainData (struct Rub_Rubrics *Rubrics,
HTM_TD_Begin ("class=\"LT\"");
else
HTM_TD_Begin ("class=\"LT %s\"",The_GetColorRows ());
Rub_DB_GetRubricTxt (Rubric->RubCod,Txt);
Str_ChangeFormat (Str_FROM_HTML,Str_TO_RIGOROUS_HTML,
Txt,Cns_MAX_BYTES_TEXT,false); // Convert from HTML to rigorous HTML
ALn_InsertLinks (Txt,Cns_MAX_BYTES_TEXT,60); // Insert links
Rubric->Txt,Cns_MAX_BYTES_TEXT,false); // Convert from HTML to rigorous HTML
ALn_InsertLinks (Rubric->Txt,Cns_MAX_BYTES_TEXT,60); // Insert links
HTM_DIV_Begin ("class=\"PAR DAT_%s\"",The_GetSuffix ());
HTM_Txt (Txt);
HTM_Txt (Rubric->Txt);
HTM_DIV_End ();
HTM_TD_End ();
@ -533,6 +553,7 @@ void Rub_GetPars (struct Rub_Rubrics *Rubrics,bool CheckRubCod)
/*****************************************************************************/
/************************* Get list of all rubrics ***************************/
/*****************************************************************************/
// Txt is not retrieved from database
void Rub_GetListRubrics (struct Rub_Rubrics *Rubrics)
{
@ -560,13 +581,8 @@ void Rub_GetListRubrics (struct Rub_Rubrics *Rubrics)
/* Get row */
row = mysql_fetch_row (mysql_res);
/* Get code of the rubric (row[0]), course (row[1] and author (row[2]) */
Rubrics->Lst[NumRubric].RubCod = Str_ConvertStrCodToLongCod (row[0]);
Rubrics->Lst[NumRubric].CrsCod = Str_ConvertStrCodToLongCod (row[1]);
Rubrics->Lst[NumRubric].UsrCod = Str_ConvertStrCodToLongCod (row[2]);
/* Get the title of the rubric (row[3]) */
Str_Copy (Rubrics->Lst[NumRubric].Title,row[3],sizeof (Rubrics->Lst[NumRubric].Title) - 1);
/* Get code of the rubric (row[0]) */
Rubrics->Lst[NumRubric] = Str_ConvertStrCodToLongCod (row[0]);
}
}
@ -577,7 +593,7 @@ void Rub_GetListRubrics (struct Rub_Rubrics *Rubrics)
}
/*****************************************************************************/
/********************* Get rubric data using its code ************************/
/*********************** Get rubric data using its code **********************/
/*****************************************************************************/
void Rub_GetRubricDataByCod (struct Rub_Rubric *Rubric)
@ -598,10 +614,19 @@ void Rub_GetRubricDataByCod (struct Rub_Rubric *Rubric)
/* Get the title of the rubric (row[3]) */
Str_Copy (Rubric->Title,row[3],sizeof (Rubric->Title) - 1);
/* Get rubric text */
Rub_DB_GetRubricTxt (Rubric);
}
else
/* Initialize to empty rubric */
Rub_ResetRubric (Rubric);
{
/***** Initialize to empty rubric *****/
Rubric->RubCod = -1L;
Rubric->CrsCod = -1L;
Rubric->UsrCod = -1L;
Rubric->Title[0] = '\0';
Rubric->Txt[0] = '\0';
}
/* Free structure that stores the query result */
DB_FreeMySQLResult (&mysql_res);
@ -636,7 +661,7 @@ void Rub_AskRemRubric (void)
/***** Reset rubrics context *****/
Rub_ResetRubrics (&Rubrics);
Rub_ResetRubric (&Rubric);
Rub_RubricConstructor (&Rubric);
/***** Get parameters *****/
Rub_GetPars (&Rubrics,true);
@ -656,6 +681,9 @@ void Rub_AskRemRubric (void)
/***** Show rubrics again *****/
Rub_ListAllRubrics (&Rubrics);
/***** Free memory used for rubric *****/
Rub_RubricDestructor (&Rubric);
}
/*****************************************************************************/
@ -670,7 +698,7 @@ void Rub_RemoveRubric (void)
/***** Reset rubrics context *****/
Rub_ResetRubrics (&Rubrics);
Rub_ResetRubric (&Rubric);
Rub_RubricConstructor (&Rubric);
/***** Get parameters *****/
Rub_GetPars (&Rubrics,true);
@ -690,6 +718,9 @@ void Rub_RemoveRubric (void)
/***** Show rubrics again *****/
Rub_ListAllRubrics (&Rubrics);
/***** Free memory used for rubric *****/
Rub_RubricDestructor (&Rubric);
}
/*****************************************************************************/
@ -735,7 +766,7 @@ void Rub_ReqCreatOrEditRubric (void)
/***** Reset rubrics context *****/
Rub_ResetRubrics (&Rubrics);
Rub_ResetRubric (&Rubric);
Rub_RubricConstructor (&Rubric);
RubCri_ResetCriterion (&Criterion);
/***** Get parameters *****/
@ -752,13 +783,14 @@ void Rub_ReqCreatOrEditRubric (void)
Rub_GetRubricDataByCod (&Rubric);
break;
case Rub_NEW_RUBRIC:
/* Initialize to empty rubric */
Rub_ResetRubric (&Rubric);
break;
}
/***** Put form to create/edit a rubric and show criteria *****/
Rub_PutFormsOneRubric (&Rubrics,&Rubric,&Criterion,ExistingNewRubric);
/***** Free memory used for rubric *****/
Rub_RubricDestructor (&Rubric);
}
/*****************************************************************************/
@ -770,21 +802,8 @@ void Rub_PutFormsOneRubric (struct Rub_Rubrics *Rubrics,
struct RubCri_Criterion *Criterion,
Rub_ExistingNewRubric_t ExistingNewRubric)
{
char Txt[Cns_MAX_BYTES_TEXT + 1];
/***** Initialize text / get text from database *****/
switch (ExistingNewRubric)
{
case Rub_EXISTING_RUBRIC:
Rub_DB_GetRubricTxt (Rubric->RubCod,Txt);
break;
case Rub_NEW_RUBRIC:
Txt[0] = '\0';
break;
}
/***** Put form to create/edit a rubric *****/
Rub_PutFormEditionRubric (Rubrics,Rubric,Txt,ExistingNewRubric);
Rub_PutFormEditionRubric (Rubrics,Rubric,ExistingNewRubric);
/***** Show other lists *****/
switch (ExistingNewRubric)
@ -806,7 +825,6 @@ void Rub_PutFormsOneRubric (struct Rub_Rubrics *Rubrics,
void Rub_PutFormEditionRubric (struct Rub_Rubrics *Rubrics,
struct Rub_Rubric *Rubric,
char Txt[Cns_MAX_BYTES_TEXT + 1],
Rub_ExistingNewRubric_t ExistingNewRubric)
{
extern const char *Hlp_ASSESSMENT_Rubrics_new_rubric;
@ -883,7 +901,7 @@ void Rub_PutFormEditionRubric (struct Rub_Rubrics *Rubrics,
HTM_TEXTAREA_Begin ("id=\"Txt\" name=\"Txt\" rows=\"5\""
" class=\"TITLE_DESCRIPTION_WIDTH INPUT_%s\"",
The_GetSuffix ());
HTM_Txt (Txt);
HTM_Txt (Rubric->Txt);
HTM_TEXTAREA_End ();
HTM_TD_End ();
@ -907,7 +925,6 @@ void Rub_ReceiveFormRubric (void)
struct Rub_Rubric Rubric;
struct RubCri_Criterion Criterion;
Rub_ExistingNewRubric_t ExistingNewRubric;
char Txt[Cns_MAX_BYTES_TEXT + 1];
/***** Check if I can edit rubrics *****/
if (!Rub_CheckIfICanEditRubrics ())
@ -915,7 +932,7 @@ void Rub_ReceiveFormRubric (void)
/***** Reset rubrics context *****/
Rub_ResetRubrics (&Rubrics);
Rub_ResetRubric (&Rubric);
Rub_RubricConstructor (&Rubric);
RubCri_ResetCriterion (&Criterion);
/***** Get parameters *****/
@ -937,34 +954,39 @@ void Rub_ReceiveFormRubric (void)
}
/***** Overwrite some rubric data with the data received from form *****/
Rub_ReceiveRubricFieldsFromForm (&Rubric,Txt);
Rub_ReceiveRubricFieldsFromForm (&Rubric);
if (Rub_CheckRubricFieldsReceivedFromForm (&Rubric))
{
/***** Create a new rubric or update an existing one *****/
switch (ExistingNewRubric)
{
case Rub_EXISTING_RUBRIC:
Rub_UpdateRubric (&Rubric,Txt); // Update rubric data in database
Rub_UpdateRubric (&Rubric); // Update rubric data in database
break;
case Rub_NEW_RUBRIC:
Rub_CreateRubric (&Rubric,Txt); // Add new rubric to database
Rub_CreateRubric (&Rubric); // Add new rubric to database
ExistingNewRubric = Rub_EXISTING_RUBRIC;
break;
}
}
/***** Show pending alerts */
Ale_ShowAlerts (NULL);
/***** Show current rubric and its criteria *****/
Rub_PutFormsOneRubric (&Rubrics,&Rubric,&Criterion,ExistingNewRubric);
/***** Free memory used for rubric *****/
Rub_RubricDestructor (&Rubric);
}
static void Rub_ReceiveRubricFieldsFromForm (struct Rub_Rubric *Rubric,
char Txt[Cns_MAX_BYTES_TEXT + 1])
static void Rub_ReceiveRubricFieldsFromForm (struct Rub_Rubric *Rubric)
{
/***** Get rubric title *****/
Par_GetParText ("Title",Rubric->Title,Rub_MAX_BYTES_TITLE);
/***** Get rubric text *****/
Par_GetParHTML ("Txt",Txt,Cns_MAX_BYTES_TEXT); // Store in HTML format (not rigorous)
Par_GetParHTML ("Txt",Rubric->Txt,Cns_MAX_BYTES_TEXT); // Store in HTML format (not rigorous)
}
static bool Rub_CheckRubricFieldsReceivedFromForm (const struct Rub_Rubric *Rubric)
@ -987,7 +1009,7 @@ static bool Rub_CheckRubricFieldsReceivedFromForm (const struct Rub_Rubric *Rubr
else // If there is not a rubric title
{
NewRubricIsCorrect = false;
Ale_ShowAlertYouMustSpecifyTheTitle ();
Ale_CreateAlertYouMustSpecifyTheTitle ();
}
return NewRubricIsCorrect;
@ -997,12 +1019,12 @@ static bool Rub_CheckRubricFieldsReceivedFromForm (const struct Rub_Rubric *Rubr
/**************************** Create a new rubric ****************************/
/*****************************************************************************/
static void Rub_CreateRubric (struct Rub_Rubric *Rubric,const char *Txt)
static void Rub_CreateRubric (struct Rub_Rubric *Rubric)
{
extern const char *Txt_Created_new_rubric_X;
/***** Create a new rubric *****/
Rubric->RubCod = Rub_DB_CreateRubric (Rubric,Txt);
Rubric->RubCod = Rub_DB_CreateRubric (Rubric);
/***** Write success message *****/
Ale_ShowAlert (Ale_SUCCESS,Txt_Created_new_rubric_X,Rubric->Title);
@ -1012,12 +1034,12 @@ static void Rub_CreateRubric (struct Rub_Rubric *Rubric,const char *Txt)
/************************* Update an existing rubric *************************/
/*****************************************************************************/
static void Rub_UpdateRubric (struct Rub_Rubric *Rubric,const char *Txt)
static void Rub_UpdateRubric (struct Rub_Rubric *Rubric)
{
extern const char *Txt_The_rubric_has_been_modified;
/***** Update the data of the rubric *****/
Rub_DB_UpdateRubric (Rubric,Txt);
Rub_DB_UpdateRubric (Rubric);
/***** Write success message *****/
Ale_ShowAlert (Ale_SUCCESS,Txt_The_rubric_has_been_modified);

View File

@ -41,7 +41,8 @@
/*****************************************************************************/
void Rub_ResetRubrics (struct Rub_Rubrics *Rubrics);
void Rub_ResetRubric (struct Rub_Rubric *Rubric);
void Rub_RubricConstructor (struct Rub_Rubric *Rubric);
void Rub_RubricDestructor (struct Rub_Rubric *Rubric);
void Rub_SeeAllRubrics (void);
void Rub_ListAllRubrics (struct Rub_Rubrics *Rubrics);
@ -49,7 +50,7 @@ bool Rub_CheckIfICanEditRubrics (void);
bool Rub_CheckIfEditable (void);
void Rub_SeeOneRubric (void);
void Rub_ShowOnlyOneRubric (struct Rub_Rubrics *Rubrics,
const struct Rub_Rubric *Rubric);
struct Rub_Rubric *Rubric);
void Rub_SetCurrentRubCod (long GamCod);
void Rub_PutPars (void *Rubrics);
@ -70,7 +71,6 @@ void Rub_PutFormsOneRubric (struct Rub_Rubrics *Rubrics,
Rub_ExistingNewRubric_t ExistingNewRubric);
void Rub_PutFormEditionRubric (struct Rub_Rubrics *Rubrics,
struct Rub_Rubric *Rubric,
char Txt[Cns_MAX_BYTES_TEXT + 1],
Rub_ExistingNewRubric_t ExistingNewRubric);
void Rub_ReceiveFormRubric (void);

View File

@ -239,7 +239,7 @@ void RubCri_ReceiveFormCriterion (void)
/***** Reset rubrics context *****/
Rub_ResetRubrics (&Rubrics);
Rub_ResetRubric (&Rubric);
Rub_RubricConstructor (&Rubric);
RubCri_ResetCriterion (&Criterion);
/***** Get parameters *****/
@ -261,7 +261,10 @@ void RubCri_ReceiveFormCriterion (void)
/***** Show current rubric and its criteria *****/
Rub_PutFormsOneRubric (&Rubrics,&Rubric,&Criterion,
Rub_EXISTING_RUBRIC); // It's not a new rubric
Rub_EXISTING_RUBRIC);
/***** Free memory used for rubric *****/
Rub_RubricDestructor (&Rubric);
}
static void RubCri_ReceiveCriterionFieldsFromForm (struct RubCri_Criterion *Criterion)
@ -318,7 +321,7 @@ static bool RubCri_CheckCriterionTitleReceivedFromForm (const struct RubCri_Crit
else // If there is not a criterion title
{
NewTitleIsCorrect = false;
Ale_ShowAlertYouMustSpecifyTheTitle ();
Ale_CreateAlertYouMustSpecifyTheTitle ();
}
return NewTitleIsCorrect;
@ -337,7 +340,7 @@ void RubCri_ChangeTitle (void)
/***** Reset rubrics context *****/
Rub_ResetRubrics (&Rubrics);
Rub_ResetRubric (&Rubric);
Rub_RubricConstructor (&Rubric);
RubCri_ResetCriterion (&Criterion);
/***** Get and check parameters *****/
@ -360,7 +363,10 @@ void RubCri_ChangeTitle (void)
/***** Show current rubric and its criteria *****/
Rub_PutFormsOneRubric (&Rubrics,&Rubric,&Criterion,
Rub_EXISTING_RUBRIC); // It's not a new rubric
Rub_EXISTING_RUBRIC);
/***** Free memory used for rubric *****/
Rub_RubricDestructor (&Rubric);
}
/*****************************************************************************/
@ -386,7 +392,7 @@ static void RubCri_ChangeValueCriterion (RubCri_ValueRange_t ValueRange)
/***** Reset rubrics context *****/
Rub_ResetRubrics (&Rubrics);
Rub_ResetRubric (&Rubric);
Rub_RubricConstructor (&Rubric);
RubCri_ResetCriterion (&Criterion);
/***** Get parameters *****/
@ -411,7 +417,10 @@ static void RubCri_ChangeValueCriterion (RubCri_ValueRange_t ValueRange)
/***** Show current rubric and its criteria *****/
Rub_PutFormsOneRubric (&Rubrics,&Rubric,&Criterion,
Rub_EXISTING_RUBRIC); // It's not a new rubric
Rub_EXISTING_RUBRIC);
/***** Free memory used for rubric *****/
Rub_RubricDestructor (&Rubric);
}
/*****************************************************************************/
@ -427,7 +436,7 @@ void RubCri_ChangeWeight (void)
/***** Reset rubrics context *****/
Rub_ResetRubrics (&Rubrics);
Rub_ResetRubric (&Rubric);
Rub_RubricConstructor (&Rubric);
RubCri_ResetCriterion (&Criterion);
/***** Get parameters *****/
@ -452,7 +461,10 @@ void RubCri_ChangeWeight (void)
/***** Show current rubric and its criteria *****/
Rub_PutFormsOneRubric (&Rubrics,&Rubric,&Criterion,
Rub_EXISTING_RUBRIC); // It's not a new rubric
Rub_EXISTING_RUBRIC);
/***** Free memory used for rubric *****/
Rub_RubricDestructor (&Rubric);
}
/*****************************************************************************/
@ -941,7 +953,7 @@ void RubCri_ReqRemCriterion (void)
/***** Reset rubrics context *****/
Rub_ResetRubrics (&Rubrics);
Rub_ResetRubric (&Rubric);
Rub_RubricConstructor (&Rubric);
RubCri_ResetCriterion (&Criterion);
/***** Get and check parameters *****/
@ -960,7 +972,10 @@ void RubCri_ReqRemCriterion (void)
/***** Show current rubric and its criteria *****/
Rub_PutFormsOneRubric (&Rubrics,&Rubric,&Criterion,
Rub_EXISTING_RUBRIC); // It's not a new rubric
Rub_EXISTING_RUBRIC);
/***** Free memory used for rubric *****/
Rub_RubricDestructor (&Rubric);
}
/*****************************************************************************/
@ -976,7 +991,7 @@ void RubCri_RemoveCriterion (void)
/***** Reset rubrics context *****/
Rub_ResetRubrics (&Rubrics);
Rub_ResetRubric (&Rubric);
Rub_RubricConstructor (&Rubric);
RubCri_ResetCriterion (&Criterion);
/***** Get and check parameters *****/
@ -1001,7 +1016,10 @@ void RubCri_RemoveCriterion (void)
/***** Show current rubric and its criteria *****/
Rub_PutFormsOneRubric (&Rubrics,&Rubric,&Criterion,
Rub_EXISTING_RUBRIC); // It's not a new rubric
Rub_EXISTING_RUBRIC);
/***** Free memory used for rubric *****/
Rub_RubricDestructor (&Rubric);
}
/*****************************************************************************/
@ -1019,7 +1037,7 @@ void RubCri_MoveUpCriterion (void)
/***** Reset rubrics context *****/
Rub_ResetRubrics (&Rubrics);
Rub_ResetRubric (&Rubric);
Rub_RubricConstructor (&Rubric);
RubCri_ResetCriterion (&Criterion);
/***** Get and check parameters *****/
@ -1048,7 +1066,10 @@ void RubCri_MoveUpCriterion (void)
/***** Show current rubric and its criteria *****/
Rub_PutFormsOneRubric (&Rubrics,&Rubric,&Criterion,
Rub_EXISTING_RUBRIC); // It's not a new rubric
Rub_EXISTING_RUBRIC);
/***** Free memory used for rubric *****/
Rub_RubricDestructor (&Rubric);
}
/*****************************************************************************/
@ -1067,7 +1088,7 @@ void RubCri_MoveDownCriterion (void)
/***** Reset rubrics context *****/
Rub_ResetRubrics (&Rubrics);
Rub_ResetRubric (&Rubric);
Rub_RubricConstructor (&Rubric);
RubCri_ResetCriterion (&Criterion);
/***** Get and check parameters *****/
@ -1099,7 +1120,10 @@ void RubCri_MoveDownCriterion (void)
/***** Show current rubric and its criteria *****/
Rub_PutFormsOneRubric (&Rubrics,&Rubric,&Criterion,
Rub_EXISTING_RUBRIC); // It's not a new trubric
Rub_EXISTING_RUBRIC);
/***** Free memory used for rubric *****/
Rub_RubricDestructor (&Rubric);
}
/*****************************************************************************/
@ -1184,7 +1208,7 @@ void RubCri_ChangeLink (void)
/***** Reset rubrics context *****/
Rub_ResetRubrics (&Rubrics);
Rub_ResetRubric (&Rubric);
Rub_RubricConstructor (&Rubric);
RubCri_ResetCriterion (&Criterion);
/***** Get and check parameters *****/
@ -1206,5 +1230,8 @@ void RubCri_ChangeLink (void)
/***** Show current rubric and its criteria *****/
Rub_PutFormsOneRubric (&Rubrics,&Rubric,&Criterion,
Rub_EXISTING_RUBRIC); // It's not a new rubric
Rub_EXISTING_RUBRIC);
/***** Free memory used for rubric *****/
Rub_RubricDestructor (&Rubric);
}

View File

@ -58,7 +58,7 @@ extern struct Globals Gbl;
/*************************** Create a new rubric *****************************/
/*****************************************************************************/
long Rub_DB_CreateRubric (const struct Rub_Rubric *Rubric,const char *Txt)
long Rub_DB_CreateRubric (const struct Rub_Rubric *Rubric)
{
return
DB_QueryINSERTandReturnCode ("can not create new rubric",
@ -69,14 +69,14 @@ long Rub_DB_CreateRubric (const struct Rub_Rubric *Rubric,const char *Txt)
Gbl.Hierarchy.Crs.CrsCod,
Gbl.Usrs.Me.UsrDat.UsrCod,
Rubric->Title,
Txt);
Rubric->Txt);
}
/*****************************************************************************/
/************************** Update an existing rubric ************************/
/*****************************************************************************/
void Rub_DB_UpdateRubric (const struct Rub_Rubric *Rubric,const char *Txt)
void Rub_DB_UpdateRubric (const struct Rub_Rubric *Rubric)
{
DB_QueryUPDATE ("can not update rubric",
"UPDATE rub_rubrics"
@ -86,22 +86,19 @@ void Rub_DB_UpdateRubric (const struct Rub_Rubric *Rubric,const char *Txt)
" WHERE RubCod=%ld",
Gbl.Hierarchy.Crs.CrsCod,
Rubric->Title,
Txt,
Rubric->Txt,
Rubric->RubCod);
}
/*****************************************************************************/
/************** Get list of all rubrics in the current course ****************/
/************ Get list of all rubric codes in the current course *************/
/*****************************************************************************/
unsigned Rub_DB_GetListRubrics (MYSQL_RES **mysql_res)
{
return (unsigned)
DB_QuerySELECT (mysql_res,"can not get rubrics",
"SELECT RubCod," // row[0]
"CrsCod," // row[1]
"UsrCod," // row[2]
"Title" // row[3]
"SELECT RubCod" // row[0]
" FROM rub_rubrics"
" WHERE CrsCod=%ld"
" ORDER BY Title",
@ -145,14 +142,15 @@ void Rub_DB_GetRubricTitle (long RubCod,char *Title,size_t TitleSize)
/*****************************************************************************/
/********************** Get rubric text from database ************************/
/*****************************************************************************/
// Rubric->Txt must be allocated with Cns_MAX_BYTES_TEXT + 1 bytes
void Rub_DB_GetRubricTxt (long RubCod,char Txt[Cns_MAX_BYTES_TEXT + 1])
void Rub_DB_GetRubricTxt (struct Rub_Rubric *Rubric)
{
DB_QuerySELECTString (Txt,Cns_MAX_BYTES_TEXT,"can not get rubric text",
DB_QuerySELECTString (Rubric->Txt,Cns_MAX_BYTES_TEXT,"can not get rubric text",
"SELECT Txt" // row[0]
" FROM rub_rubrics"
" WHERE RubCod=%ld",
RubCod);
Rubric->RubCod);
}
/*****************************************************************************/

View File

@ -38,14 +38,14 @@
/*****************************************************************************/
//-------------------------------- Rubrics ------------------------------------
long Rub_DB_CreateRubric (const struct Rub_Rubric *Rubric,const char *Txt);
void Rub_DB_UpdateRubric (const struct Rub_Rubric *Rubric,const char *Txt);
long Rub_DB_CreateRubric (const struct Rub_Rubric *Rubric);
void Rub_DB_UpdateRubric (const struct Rub_Rubric *Rubric);
void Rub_DB_HideOrUnhideRubric (long RubCod,bool Hide);
unsigned Rub_DB_GetListRubrics (MYSQL_RES **mysql_res);
unsigned Rub_DB_GetRubricDataByCod (MYSQL_RES **mysql_res,long RubCod);
void Rub_DB_GetRubricTitle (long RubCod,char *Title,size_t TitleSize);
void Rub_DB_GetRubricTxt (long RubCod,char Txt[Cns_MAX_BYTES_TEXT + 1]);
void Rub_DB_GetRubricTxt (struct Rub_Rubric *Rubric);
bool Rub_DB_CheckIfSimilarRubricExists (const struct Rub_Rubric *Rubric);
unsigned Rub_DB_GetNumCoursesWithRubrics (HieLvl_Level_t Scope);
unsigned Rub_DB_GetNumRubrics (HieLvl_Level_t Scope);

View File

@ -49,7 +49,8 @@ struct Rub_Rubric
long RubCod; // Rubric code
long CrsCod; // Course code
long UsrCod; // Author code
char Title[Rub_MAX_BYTES_TITLE + 1];
char Title[Rub_MAX_BYTES_TITLE + 1]; // Title
char *Txt; // Text (dynamically allocated)
};
struct Rub_Rubrics
@ -57,7 +58,7 @@ struct Rub_Rubrics
bool LstIsRead; // Is the list already read from database...
// ...or it needs to be read?
unsigned Num; // Total number of rubrics
struct Rub_Rubric *Lst; // List of rubrics
long *Lst; // List of rubric codes
unsigned CurrentPage;
long RubCod; // Selected/current rubric code
long CriCod; // Selected/current criterion code

View File

@ -2074,7 +2074,7 @@ void Svy_ReceiveFormSurvey (void)
else // If there is not a survey title
{
NewSurveyIsCorrect = false;
Ale_ShowAlertYouMustSpecifyTheTitle ();
Ale_CreateAlertYouMustSpecifyTheTitle ();
}
/***** Create a new survey or update an existing one *****/