From 643876456b41e3e59adcc20e2390e94223152c4f Mon Sep 17 00:00:00 2001 From: acanas Date: Mon, 17 Apr 2023 23:55:22 +0200 Subject: [PATCH] Version 22.98: Apr 17, 2023 Code refactoring in rubrics. --- swad_agenda.c | 4 +- swad_alert.c | 40 +++++----- swad_alert.h | 14 ++-- swad_assignment.c | 2 +- swad_attendance.c | 2 +- swad_banner.c | 2 +- swad_building.c | 2 +- swad_center.c | 4 +- swad_changelog.h | 3 +- swad_course.c | 2 +- swad_degree.c | 4 +- swad_department.c | 4 +- swad_exam.c | 2 +- swad_exam_set.c | 2 +- swad_game.c | 2 +- swad_institution.c | 4 +- swad_link.c | 2 +- swad_mail.c | 2 +- swad_parameter.c | 3 +- swad_place.c | 2 +- swad_project.c | 2 +- swad_project_config.c | 11 +-- swad_record.c | 2 +- swad_room.c | 2 +- swad_rubric.c | 166 +++++++++++++++++++++++------------------ swad_rubric.h | 6 +- swad_rubric_criteria.c | 65 +++++++++++----- swad_rubric_database.c | 22 +++--- swad_rubric_database.h | 6 +- swad_rubric_type.h | 5 +- swad_survey.c | 2 +- 31 files changed, 221 insertions(+), 170 deletions(-) diff --git a/swad_agenda.c b/swad_agenda.c index 8f5580e2..b401e401 100644 --- a/swad_agenda.c +++ b/swad_agenda.c @@ -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 *****/ diff --git a/swad_alert.c b/swad_alert.c index 9bcf6b44..e40dc4a1 100644 --- a/swad_alert.c +++ b/swad_alert.c @@ -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; diff --git a/swad_alert.h b/swad_alert.h index b09198eb..1c238773 100644 --- a/swad_alert.h +++ b/swad_alert.h @@ -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 diff --git a/swad_assignment.c b/swad_assignment.c index 3d15d748..8d2e3a92 100644 --- a/swad_assignment.c +++ b/swad_assignment.c @@ -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 *****/ diff --git a/swad_attendance.c b/swad_attendance.c index 796b7cde..e2a7711b 100644 --- a/swad_attendance.c +++ b/swad_attendance.c @@ -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 *****/ diff --git a/swad_banner.c b/swad_banner.c index 17cd0262..858a48b9 100644 --- a/swad_banner.c +++ b/swad_banner.c @@ -945,7 +945,7 @@ void Ban_ReceiveFormNewBanner (void) } } else // If there is not a banner name - Ale_ShowAlertYouMustSpecifyTheShortNameAndTheFullName (); + Ale_CreateAlertYouMustSpecifyTheShortNameAndTheFullName (); } /*****************************************************************************/ diff --git a/swad_building.c b/swad_building.c index 29e8dd57..14a5f1ba 100644 --- a/swad_building.c +++ b/swad_building.c @@ -817,7 +817,7 @@ void Bld_ReceiveFormNewBuilding (void) } } else // If there is not a building name - Ale_ShowAlertYouMustSpecifyTheShortNameAndTheFullName (); + Ale_CreateAlertYouMustSpecifyTheShortNameAndTheFullName (); } /*****************************************************************************/ diff --git a/swad_center.c b/swad_center.c index d6ef16ce..d926f90c 100644 --- a/swad_center.c +++ b/swad_center.c @@ -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 (); } /*****************************************************************************/ diff --git a/swad_changelog.h b/swad_changelog.h index 54b241cc..11e8c97b 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -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. diff --git a/swad_course.c b/swad_course.c index 0581f76d..9f150b8a 100644 --- a/swad_course.c +++ b/swad_course.c @@ -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, diff --git a/swad_degree.c b/swad_degree.c index a0708213..ab0e7194 100644 --- a/swad_degree.c +++ b/swad_degree.c @@ -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 (); } /*****************************************************************************/ diff --git a/swad_department.c b/swad_department.c index cd7a18c2..f2d43fb6 100644 --- a/swad_department.c +++ b/swad_department.c @@ -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 (); } /*****************************************************************************/ diff --git a/swad_exam.c b/swad_exam.c index 4206de50..10a370a6 100644 --- a/swad_exam.c +++ b/swad_exam.c @@ -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; diff --git a/swad_exam_set.c b/swad_exam_set.c index f13f5e8a..609c1613 100644 --- a/swad_exam_set.c +++ b/swad_exam_set.c @@ -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; diff --git a/swad_game.c b/swad_game.c index 1687f533..15359fcc 100644 --- a/swad_game.c +++ b/swad_game.c @@ -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; diff --git a/swad_institution.c b/swad_institution.c index c5daf628..b15b75df 100644 --- a/swad_institution.c +++ b/swad_institution.c @@ -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 (); } /*****************************************************************************/ diff --git a/swad_link.c b/swad_link.c index 0e6ebea4..f814f1e8 100644 --- a/swad_link.c +++ b/swad_link.c @@ -795,7 +795,7 @@ void Lnk_ReceiveFormNewLink (void) } } else // If there is not a link name - Ale_ShowAlertYouMustSpecifyTheShortNameAndTheFullName (); + Ale_CreateAlertYouMustSpecifyTheShortNameAndTheFullName (); } /*****************************************************************************/ diff --git a/swad_mail.c b/swad_mail.c index 89bf1dba..00ebd793 100644 --- a/swad_mail.c +++ b/swad_mail.c @@ -779,7 +779,7 @@ void Mai_ReceiveFormNewMailDomain (void) } } else // If there is not a mail name - Ale_ShowAlertYouMustSpecifyTheShortNameAndTheFullName (); + Ale_CreateAlertYouMustSpecifyTheShortNameAndTheFullName (); } /*****************************************************************************/ diff --git a/swad_parameter.c b/swad_parameter.c index 654fc239..57ae672c 100644 --- a/swad_parameter.c +++ b/swad_parameter.c @@ -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 } /*****************************************************************************/ diff --git a/swad_place.c b/swad_place.c index a806f9f2..57338e10 100644 --- a/swad_place.c +++ b/swad_place.c @@ -804,7 +804,7 @@ void Plc_ReceiveFormNewPlace (void) } } else // If there is not a place name - Ale_ShowAlertYouMustSpecifyTheShortNameAndTheFullName (); + Ale_CreateAlertYouMustSpecifyTheShortNameAndTheFullName (); } /*****************************************************************************/ diff --git a/swad_project.c b/swad_project.c index 063596f6..e5d8b287 100644 --- a/swad_project.c +++ b/swad_project.c @@ -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 *****/ diff --git a/swad_project_config.c b/swad_project_config.c index 67a1c77d..f7457e4a 100644 --- a/swad_project_config.c +++ b/swad_project_config.c @@ -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 (); diff --git a/swad_record.c b/swad_record.c index 857b08dd..e621b519 100644 --- a/swad_record.c +++ b/swad_record.c @@ -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 (); diff --git a/swad_room.c b/swad_room.c index 9717a3a4..a087c9ec 100644 --- a/swad_room.c +++ b/swad_room.c @@ -1403,7 +1403,7 @@ void Roo_ReceiveFormNewRoom (void) } } else // If there is not a room name - Ale_ShowAlertYouMustSpecifyTheShortNameAndTheFullName (); + Ale_CreateAlertYouMustSpecifyTheShortNameAndTheFullName (); } /*****************************************************************************/ diff --git a/swad_rubric.c b/swad_rubric.c index 0a60c2f0..c6c934c1 100644 --- a/swad_rubric.c +++ b/swad_rubric.c @@ -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); diff --git a/swad_rubric.h b/swad_rubric.h index c8572eb5..c3de4d9e 100644 --- a/swad_rubric.h +++ b/swad_rubric.h @@ -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); diff --git a/swad_rubric_criteria.c b/swad_rubric_criteria.c index e2cf81ec..ce98ef8d 100644 --- a/swad_rubric_criteria.c +++ b/swad_rubric_criteria.c @@ -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); } diff --git a/swad_rubric_database.c b/swad_rubric_database.c index c30a936e..5230fa73 100644 --- a/swad_rubric_database.c +++ b/swad_rubric_database.c @@ -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); } /*****************************************************************************/ diff --git a/swad_rubric_database.h b/swad_rubric_database.h index ca3591e2..87484bdf 100644 --- a/swad_rubric_database.h +++ b/swad_rubric_database.h @@ -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); diff --git a/swad_rubric_type.h b/swad_rubric_type.h index 3ce0a50a..ae05e390 100644 --- a/swad_rubric_type.h +++ b/swad_rubric_type.h @@ -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 diff --git a/swad_survey.c b/swad_survey.c index e7be81c6..252f1d5b 100644 --- a/swad_survey.c +++ b/swad_survey.c @@ -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 *****/