Version 22.79.2: Mar 24, 2023 Code refactoring in rubrics.

This commit is contained in:
acanas 2023-03-24 13:09:44 +01:00
parent 010b2d38e6
commit 8fe944ff1d
6 changed files with 194 additions and 144 deletions

View File

@ -629,10 +629,12 @@ 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.79 (2023-03-24)"
#define Log_PLATFORM_VERSION "SWAD 22.79.2 (2023-03-24)"
#define CSS_FILE "swad22.78.15.css"
#define JS_FILE "swad22.49.js"
/*
Version 22.79.2: Mar 24, 2023 Code refactoring in rubrics. (337937 lines)
Version 22.79.1: Mar 24, 2023 Translation of some actions. (337889 lines)
Version 22.79: Mar 24, 2023 New action to change source of rubric criterion. (337888 lines)
Version 22.78.15: Mar 23, 2023 Changes in rubric criteria. (337686 lines)
Version 22.78.14: Mar 23, 2023 Code refactoring in timeline. (337634 lines)

View File

@ -738,7 +738,7 @@ void Rub_ReqCreatOrEditRubric (void)
{
struct Rub_Rubrics Rubrics;
struct RubCri_Criterion Criterion;
bool ItsANewRubric;
Rub_ExistingNewRubric_t ExistingNewRubric;
/***** Check if I can edit rubrics *****/
if (!Rub_CheckIfICanEditRubrics ())
@ -751,18 +751,24 @@ void Rub_ReqCreatOrEditRubric (void)
/***** Get parameters *****/
Rub_GetPars (&Rubrics,false); // Don't check rubric code
ItsANewRubric = (Rubrics.Rubric.RubCod <= 0);
ExistingNewRubric = (Rubrics.Rubric.RubCod > 0) ? Rub_EXISTING_RUBRIC :
Rub_NEW_RUBRIC;
/***** Get rubric data *****/
if (ItsANewRubric)
/* Initialize to empty rubric */
Rub_ResetRubric (&Rubrics.Rubric);
else
/* Get rubric data from database */
Rub_GetRubricDataByCod (&Rubrics.Rubric);
switch (ExistingNewRubric)
{
case Rub_EXISTING_RUBRIC:
/* Get rubric data from database */
Rub_GetRubricDataByCod (&Rubrics.Rubric);
break;
case Rub_NEW_RUBRIC:
/* Initialize to empty rubric */
Rub_ResetRubric (&Rubrics.Rubric);
break;
}
/***** Put form to create/edit a rubric and show criteria *****/
Rub_PutFormsOneRubric (&Rubrics,&Criterion,ItsANewRubric);
Rub_PutFormsOneRubric (&Rubrics,&Criterion,ExistingNewRubric);
}
/*****************************************************************************/
@ -771,26 +777,36 @@ void Rub_ReqCreatOrEditRubric (void)
void Rub_PutFormsOneRubric (struct Rub_Rubrics *Rubrics,
struct RubCri_Criterion *Criterion,
bool ItsANewRubric)
Rub_ExistingNewRubric_t ExistingNewRubric)
{
char Txt[Cns_MAX_BYTES_TEXT + 1];
/***** Initialize text / get text from database *****/
if (ItsANewRubric)
Txt[0] = '\0';
else
Rub_DB_GetRubricTxt (Rubrics->Rubric.RubCod,Txt);
switch (ExistingNewRubric)
{
case Rub_EXISTING_RUBRIC:
Rub_DB_GetRubricTxt (Rubrics->Rubric.RubCod,Txt);
break;
case Rub_NEW_RUBRIC:
Txt[0] = '\0';
break;
}
/***** Put form to create/edit an exam *****/
Rub_PutFormEditionRubric (Rubrics,Txt,ItsANewRubric);
Rub_PutFormEditionRubric (Rubrics,Txt,ExistingNewRubric);
/***** Show other lists *****/
if (ItsANewRubric)
/* Show rubrics again */
Rub_ListAllRubrics (Rubrics);
else
/* Show list of criteria */
RubCri_ListCriteria (Rubrics,Criterion);
switch (ExistingNewRubric)
{
case Rub_EXISTING_RUBRIC:
/* Show list of criteria */
RubCri_ListCriteria (Rubrics,Criterion);
break;
case Rub_NEW_RUBRIC:
/* Show rubrics again */
Rub_ListAllRubrics (Rubrics);
break;
}
}
/*****************************************************************************/
@ -799,7 +815,7 @@ void Rub_PutFormsOneRubric (struct Rub_Rubrics *Rubrics,
void Rub_PutFormEditionRubric (struct Rub_Rubrics *Rubrics,
char Txt[Cns_MAX_BYTES_TEXT + 1],
bool ItsANewRubric)
Rub_ExistingNewRubric_t ExistingNewRubric)
{
extern const char *Hlp_ASSESSMENT_Rubrics_new_rubric;
extern const char *Hlp_ASSESSMENT_Rubrics_edit_rubric;
@ -809,64 +825,81 @@ void Rub_PutFormEditionRubric (struct Rub_Rubrics *Rubrics,
extern const char *Txt_Description;
extern const char *Txt_Create_rubric;
extern const char *Txt_Save_changes;
static Act_Action_t NextAction[] =
{
[Rub_EXISTING_RUBRIC] = ActChgRub,
[Rub_NEW_RUBRIC ] = ActNewRub,
};
static Btn_Button_t Button[] =
{
[Rub_EXISTING_RUBRIC] = Btn_CONFIRM_BUTTON,
[Rub_NEW_RUBRIC ] = Btn_CREATE_BUTTON,
};
const char *Title[] =
{
[Rub_EXISTING_RUBRIC] = Txt_Edit_rubric,
[Rub_NEW_RUBRIC ] = Txt_New_rubric,
};
const char *HelpLink[] =
{
[Rub_EXISTING_RUBRIC] = Hlp_ASSESSMENT_Rubrics_edit_rubric,
[Rub_NEW_RUBRIC ] = Hlp_ASSESSMENT_Rubrics_new_rubric,
};
const char *TxtButton[] =
{
[Rub_EXISTING_RUBRIC] = Txt_Save_changes,
[Rub_NEW_RUBRIC ] = Txt_Create_rubric,
};
/***** Begin form *****/
Frm_BeginForm (ItsANewRubric ? ActNewRub :
ActChgRub);
Frm_BeginForm (NextAction[ExistingNewRubric]);
Rub_PutPars (Rubrics);
/***** Begin box and table *****/
if (ItsANewRubric)
Box_BoxTableBegin (NULL,Txt_New_rubric,
NULL,NULL,
Hlp_ASSESSMENT_Rubrics_new_rubric,Box_NOT_CLOSABLE,2);
else
Box_BoxTableBegin (NULL,
Rubrics->Rubric.Title[0] ? Rubrics->Rubric.Title :
Txt_Edit_rubric,
NULL,NULL,
Hlp_ASSESSMENT_Rubrics_edit_rubric,Box_NOT_CLOSABLE,2);
Box_BoxTableBegin (NULL,
Rubrics->Rubric.Title[0] ? Rubrics->Rubric.Title :
Title[ExistingNewRubric],
NULL,NULL,
HelpLink[ExistingNewRubric],Box_NOT_CLOSABLE,2);
/***** Rubric title *****/
HTM_TR_Begin (NULL);
/***** Rubric title *****/
HTM_TR_Begin (NULL);
/* Label */
Frm_LabelColumn ("RT","Title",Txt_Title);
/* Label */
Frm_LabelColumn ("RT","Title",Txt_Title);
/* Data */
HTM_TD_Begin ("class=\"LT\"");
HTM_INPUT_TEXT ("Title",Rub_MAX_CHARS_TITLE,Rubrics->Rubric.Title,
HTM_DONT_SUBMIT_ON_CHANGE,
"id=\"Title\""
" class=\"TITLE_DESCRIPTION_WIDTH INPUT_%s\""
" required=\"required\"",
The_GetSuffix ());
HTM_TD_End ();
/* Data */
HTM_TD_Begin ("class=\"LT\"");
HTM_INPUT_TEXT ("Title",Rub_MAX_CHARS_TITLE,Rubrics->Rubric.Title,
HTM_DONT_SUBMIT_ON_CHANGE,
"id=\"Title\""
" class=\"TITLE_DESCRIPTION_WIDTH INPUT_%s\""
" required=\"required\"",
The_GetSuffix ());
HTM_TD_End ();
HTM_TR_End ();
HTM_TR_End ();
/***** Rubric text *****/
HTM_TR_Begin (NULL);
/***** Rubric text *****/
HTM_TR_Begin (NULL);
/* Label */
Frm_LabelColumn ("RT","Txt",Txt_Description);
/* Label */
Frm_LabelColumn ("RT","Txt",Txt_Description);
/* Data */
HTM_TD_Begin ("class=\"LT\"");
HTM_TEXTAREA_Begin ("id=\"Txt\" name=\"Txt\" rows=\"5\""
" class=\"TITLE_DESCRIPTION_WIDTH INPUT_%s\"",
The_GetSuffix ());
HTM_Txt (Txt);
HTM_TEXTAREA_End ();
HTM_TD_End ();
/* Data */
HTM_TD_Begin ("class=\"LT\"");
HTM_TEXTAREA_Begin ("id=\"Txt\" name=\"Txt\" rows=\"5\""
" class=\"TITLE_DESCRIPTION_WIDTH INPUT_%s\"",
The_GetSuffix ());
HTM_Txt (Txt);
HTM_TEXTAREA_End ();
HTM_TD_End ();
HTM_TR_End ();
HTM_TR_End ();
/***** End table, send button and end box *****/
if (ItsANewRubric)
Box_BoxTableWithButtonEnd (Btn_CREATE_BUTTON,Txt_Create_rubric);
else
Box_BoxTableWithButtonEnd (Btn_CONFIRM_BUTTON,Txt_Save_changes);
Box_BoxTableWithButtonEnd (Button[ExistingNewRubric],
TxtButton[ExistingNewRubric]);
/***** End form *****/
Frm_EndForm ();
@ -880,7 +913,7 @@ void Rub_ReceiveFormRubric (void)
{
struct Rub_Rubrics Rubrics;
struct RubCri_Criterion Criterion;
bool ItsANewRubric;
Rub_ExistingNewRubric_t ExistingNewRubric;
char Txt[Cns_MAX_BYTES_TEXT + 1];
/***** Check if I can edit rubrics *****/
@ -894,31 +927,40 @@ void Rub_ReceiveFormRubric (void)
/***** Get parameters *****/
Rub_GetPars (&Rubrics,false);
ItsANewRubric = (Rubrics.Rubric.RubCod <= 0);
ExistingNewRubric = (Rubrics.Rubric.RubCod > 0) ? Rub_EXISTING_RUBRIC :
Rub_NEW_RUBRIC;
/***** Get all current rubric data from database *****/
// Some data, not received from form,
// are necessary to show rubric and criteria again
if (!ItsANewRubric)
Rub_GetRubricDataByCod (&Rubrics.Rubric);
switch (ExistingNewRubric)
{
case Rub_EXISTING_RUBRIC:
Rub_GetRubricDataByCod (&Rubrics.Rubric);
break;
case Rub_NEW_RUBRIC:
break;
}
/***** Overwrite some rubric data with the data received from form *****/
Rub_ReceiveRubricFieldsFromForm (&Rubrics.Rubric,Txt);
if (Rub_CheckRubricFieldsReceivedFromForm (&Rubrics.Rubric))
{
/***** Create a new rubric or update an existing one *****/
if (ItsANewRubric)
switch (ExistingNewRubric)
{
Rub_CreateRubric (&Rubrics.Rubric,Txt); // Add new rubric to database
ItsANewRubric = false;
case Rub_EXISTING_RUBRIC:
Rub_UpdateRubric (&Rubrics.Rubric,Txt); // Update rubric data in database
break;
case Rub_NEW_RUBRIC:
Rub_CreateRubric (&Rubrics.Rubric,Txt); // Add new rubric to database
ExistingNewRubric = Rub_EXISTING_RUBRIC;
break;
}
else
Rub_UpdateRubric (&Rubrics.Rubric,Txt); // Update rubric data in database
}
/***** Show current rubric and its criteria *****/
Rub_PutFormsOneRubric (&Rubrics,&Criterion,
ItsANewRubric);
Rub_PutFormsOneRubric (&Rubrics,&Criterion,ExistingNewRubric);
}
static void Rub_ReceiveRubricFieldsFromForm (struct Rub_Rubric *Rubric,

View File

@ -72,10 +72,10 @@ void Rub_ListRubric (void);
void Rub_ReqCreatOrEditRubric (void);
void Rub_PutFormsOneRubric (struct Rub_Rubrics *Rubrics,
struct RubCri_Criterion *Criterion,
bool ItsANewRubric);
Rub_ExistingNewRubric_t ExistingNewRubric);
void Rub_PutFormEditionRubric (struct Rub_Rubrics *Rubrics,
char Txt[Cns_MAX_BYTES_TEXT + 1],
bool ItsANewRubric);
Rub_ExistingNewRubric_t ExistingNewRubric);
void Rub_ReceiveFormRubric (void);

View File

@ -263,7 +263,7 @@ void RubCri_ReceiveFormCriterion (void)
/***** Show current rubric and its criteria *****/
Rub_PutFormsOneRubric (&Rubrics,&Criterion,
false); // It's not a new rubric
Rub_EXISTING_RUBRIC); // It's not a new rubric
}
static void RubCri_ReceiveCriterionFieldsFromForm (struct RubCri_Criterion *Criterion)
@ -376,7 +376,7 @@ void RubCri_ChangeTitle (void)
/***** Show current rubric and its criteria *****/
Rub_PutFormsOneRubric (&Rubrics,&Criterion,
false); // It's not a new rubric
Rub_EXISTING_RUBRIC); // It's not a new rubric
}
/*****************************************************************************/
@ -418,7 +418,7 @@ void RubCri_ChangeSource (void)
/***** Show current rubric and its criteria *****/
Rub_PutFormsOneRubric (&Rubrics,&Criterion,
false); // It's not a new rubric
Rub_EXISTING_RUBRIC); // It's not a new rubric
}
/*****************************************************************************/
@ -472,7 +472,7 @@ static void RubCri_ChangeValueCriterion (RubCri_ValueRange_t ValueRange)
/***** Show current rubric and its criteria *****/
Rub_PutFormsOneRubric (&Rubrics,&Criterion,
false); // It's not a new rubric
Rub_EXISTING_RUBRIC); // It's not a new rubric
}
/*****************************************************************************/
@ -516,7 +516,7 @@ void RubCri_ChangeWeight (void)
/***** Show current rubric and its criteria *****/
Rub_PutFormsOneRubric (&Rubrics,&Criterion,
false); // It's not a new rubric
Rub_EXISTING_RUBRIC); // It's not a new rubric
}
/*****************************************************************************/
@ -966,7 +966,7 @@ void RubCri_ReqRemCriterion (void)
/***** Show current rubric and its criteria *****/
Rub_PutFormsOneRubric (&Rubrics,&Criterion,
false); // It's not a new rubric
Rub_EXISTING_RUBRIC); // It's not a new rubric
}
/*****************************************************************************/
@ -1006,7 +1006,7 @@ void RubCri_RemoveCriterion (void)
/***** Show current rubric and its criteria *****/
Rub_PutFormsOneRubric (&Rubrics,&Criterion,
false); // It's not a new rubric
Rub_EXISTING_RUBRIC); // It's not a new rubric
}
/*****************************************************************************/
@ -1052,7 +1052,7 @@ void RubCri_MoveUpCriterion (void)
/***** Show current rubric and its criteria *****/
Rub_PutFormsOneRubric (&Rubrics,&Criterion,
false); // It's not a new rubric
Rub_EXISTING_RUBRIC); // It's not a new rubric
}
/*****************************************************************************/
@ -1102,7 +1102,7 @@ void RubCri_MoveDownCriterion (void)
/***** Show current rubric and its criteria *****/
Rub_PutFormsOneRubric (&Rubrics,&Criterion,
false); // It's not a new trubric
Rub_EXISTING_RUBRIC); // It's not a new trubric
}
/*****************************************************************************/

View File

@ -65,6 +65,12 @@ struct Rub_Rubrics
long QstCod; // Current question code
};
typedef enum
{
Rub_EXISTING_RUBRIC,
Rub_NEW_RUBRIC,
} Rub_ExistingNewRubric_t;
#define RubCri_NUM_VALUES 2
typedef enum
{

View File

@ -13887,163 +13887,163 @@ const char *Txt_Actions[ActLst_NUM_ACTIONS] =
,
[ActSeeRub] =
#if L==1 // ca
"See rubric" // Necessita traducció
"Veure r&uacute;brica"
#elif L==2 // de
"See rubric" // Need Übersetzung
"Siehe Rubrik"
#elif L==3 // en
"See rubric"
#elif L==4 // es
"Ver r&uacute;brica"
#elif L==5 // fr
"See rubric" // Besoin de traduction
"Voir rubrique"
#elif L==6 // gn
"Ver r&uacute;brica" // Okoteve traducción
"Ehecha r&uacute;brica"
#elif L==7 // it
"See rubric" // Bisogno di traduzione
"Vedi rubrica"
#elif L==8 // pl
"See rubric" // Potrzebujesz tlumaczenie
"Zobacz rubryk&eogon;"
#elif L==9 // pt
"See rubric" // Precisa de tradução
"Ver rubrica"
#elif L==10 // tr
"See rubric" // Çeviri lazim!
"De&gbreve;erlendirme tablosuna bak&inodot;n"
#endif
,
[ActFrmNewRub] =
#if L==1 // ca
"Edit new rubric" // Necessita traducció
"Editar nova r&uacute;brica"
#elif L==2 // de
"Edit new rubric" // Need Übersetzung
"Neue Rubrik bearbeiten"
#elif L==3 // en
"Edit new rubric"
#elif L==4 // es
"Editar nueva r&uacute;brica"
#elif L==5 // fr
"Edit new rubric" // Besoin de traduction
"Modifier nouvelle rubrique"
#elif L==6 // gn
"Editar nueva r&uacute;brica" // Okoteve traducción
"Emohenda r&uacute;brica pyahu"
#elif L==7 // it
"Edit new rubric" // Bisogno di traduzione
"Modificare nuova rubrica"
#elif L==8 // pl
"Edit new rubric" // Potrzebujesz tlumaczenie
"Edytuj now&aogon; rubryk&eogon;"
#elif L==9 // pt
"Edit new rubric" // Precisa de tradução
"Editar nova rubrica"
#elif L==10 // tr
"Edit new rubric" // Çeviri lazim!
"Yeni puan anahtar&inodot;n&inodot; d&uacute;zenle"
#endif
,
[ActEdiOneRub] =
#if L==1 // ca
"Edit rubric" // Necessita traducció
"Editar r&uacute;brica"
#elif L==2 // de
"Edit rubric" // Need Übersetzung
"Rubrik bearbeiten"
#elif L==3 // en
"Edit rubric"
#elif L==4 // es
"Editar r&uacute;brica"
#elif L==5 // fr
"Edit rubric" // Besoin de traduction
"Modifier rubrique"
#elif L==6 // gn
"Editar r&uacute;brica" // Okoteve traducción
"Editar r&uacute;brica rehegua"
#elif L==7 // it
"Edit rubric" // Bisogno di traduzione
"Modificare rubrica"
#elif L==8 // pl
"Edit rubric" // Potrzebujesz tlumaczenie
"Edytuj rubryk&eogon;"
#elif L==9 // pt
"Edit rubric" // Precisa de tradução
"Editar rubrica"
#elif L==10 // tr
"Edit rubric" // Çeviri lazim!
"Puan anahtar&inodot;n&inodot; d&uacute;zenle"
#endif
,
[ActNewRub] =
#if L==1 // ca
"Create new rubric" // Necessita traducció
"Crear nova r&uacute;brica"
#elif L==2 // de
"Create new rubric" // Need Übersetzung
"Neue Rubrik erstellen"
#elif L==3 // en
"Create new rubric"
#elif L==4 // es
"Crear nueva r&uacute;brica"
#elif L==5 // fr
"Create new rubric" // Besoin de traduction
"Cr&eacute;er nouvelle rubrique"
#elif L==6 // gn
"Crear nueva r&uacute;brica" // Okoteve traducción
"Ojapo r&uacute;brica pyahu"
#elif L==7 // it
"Create new rubric" // Bisogno di traduzione
"Creare nuova rubrica"
#elif L==8 // pl
"Create new rubric" // Potrzebujesz tlumaczenie
"Utw&oacute;rz now&aogon; rubryk&eogon;"
#elif L==9 // pt
"Create new rubric" // Precisa de tradução
"Criar nova rubrica"
#elif L==10 // tr
"Create new rubric" // Çeviri lazim!
"Yeni de&gbreve;erlendirme listesi olu&scedil;tur"
#endif
,
[ActChgRub] =
#if L==1 // ca
"Change rubric" // Necessita traducció
"Canviar r&uacute;brica"
#elif L==2 // de
"Change rubric" // Need Übersetzung
"Rubrik wechseln"
#elif L==3 // en
"Change rubric"
#elif L==4 // es
"Cambiar r&uacute;brica"
#elif L==5 // fr
"Change rubric" // Besoin de traduction
"Changer rubrique"
#elif L==6 // gn
"Cambiar r&uacute;brica" // Okoteve traducción
"Omoambue r&uacute;brica"
#elif L==7 // it
"Change rubric" // Bisogno di traduzione
"Cambiare rubrica"
#elif L==8 // pl
"Change rubric" // Potrzebujesz tlumaczenie
"Zmieni&cacute; rubryk&eogon;"
#elif L==9 // pt
"Change rubric" // Precisa de tradução
"Mudar rubrica"
#elif L==10 // tr
"Change rubric" // Çeviri lazim!
"Puan anahtar&inodot;n&inodot; de&gbreve;i&scedil;tir"
#endif
,
[ActReqRemRub] =
#if L==1 // ca
"Request removal of rubric" // Necessita traducció
"Sol&middot;licitar eliminaci&oacute; de r&uacute;brica"
#elif L==2 // de
"Request removal of rubric" // Need Übersetzung
"Entfernung der Rubrik beantragen"
#elif L==3 // en
"Request removal of rubric"
#elif L==4 // es
"Solicitar eliminaci&oacute;n de r&uacute;brica"
#elif L==5 // fr
"Request removal of rubric" // Besoin de traduction
"Demander suppression de rubrique"
#elif L==6 // gn
"Solicitar eliminaci&oacute;n de r&uacute;brica" // Okoteve traducción
"Ojerure ojeipe'a hagu&atilde; r&uacute;brica"
#elif L==7 // it
"Request removal of rubric" // Bisogno di traduzione
"Richiesta rimozione di rubrica"
#elif L==8 // pl
"Request removal of rubric" // Potrzebujesz tlumaczenie
"Popro&sacute; o usuni&eogon;cie rubryki"
#elif L==9 // pt
"Request removal of rubric" // Precisa de tradução
"Solicitar remo&ccedil;&atilde;o de rubrica"
#elif L==10 // tr
"Request removal of rubric" // Çeviri lazim!
"Puan anahtar&inodot;n&inodot;n kald&inodot;r&inodot;lmas&inodot;n&inodot; talep etme"
#endif
,
[ActRemRub] =
#if L==1 // ca
"Remove rubric" // Necessita traducció
"Eliminar r&uacute;brica"
#elif L==2 // de
"Remove rubric" // Need Übersetzung
"Rubrik entfernen"
#elif L==3 // en
"Remove rubric"
#elif L==4 // es
"Eliminar r&uacute;brica"
#elif L==5 // fr
"Remove rubric" // Besoin de traduction
"Supprimer rubrique"
#elif L==6 // gn
"Eliminar r&uacute;brica" // Okoteve traducción
"Ojepe'a pe r&uacute;brica"
#elif L==7 // it
"Remove rubric" // Bisogno di traduzione
"Rimuovere rubrica"
#elif L==8 // pl
"Remove rubric" // Potrzebujesz tlumaczenie
"Usu&nacute; rubryk&eogon;"
#elif L==9 // pt
"Remove rubric" // Precisa de tradução
"Remover rubrica"
#elif L==10 // tr
"Remove rubric" // Çeviri lazim!
"Puan anahtar&inodot;n&inodot; kald&inodot;r"
#endif
,
[ActNewRubCri] =