Version 22.95: Apr 12, 2023 Changes in configuration of projects.

This commit is contained in:
acanas 2023-04-12 11:05:40 +02:00
parent 45d2b2a2d9
commit b8c3daf585
5 changed files with 171 additions and 104 deletions

View File

@ -3294,6 +3294,7 @@ table.CELLS_PAD_10 > tbody > tr > td {padding:10px;}
text-align:center;
vertical-align:middle;
}
.PrjCfg_RUBRIC_SEL {max-width:400px;}
/********************************** Tests ************************************/
.TAG_SEL {box-sizing:border-box; width:346px;}

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.94 (2023-04-12)"
#define CSS_FILE "swad22.88.css"
#define Log_PLATFORM_VERSION "SWAD 22.95 (2023-04-12)"
#define CSS_FILE "swad22.95.css"
#define JS_FILE "swad22.49.js"
/*
Version 22.95: Apr 12, 2023 Changes in configuration of projects. (338602 lines)
Version 22.94: Apr 12, 2023 Code refactoring in rubrics.
Changes in configuration of projects. (338537 lines)
Version 22.93: Apr 10, 2023 Changes in configuration of projects. (338417 lines)

View File

@ -38,18 +38,37 @@
#include "swad_project_database.h"
#include "swad_rubric.h"
/*****************************************************************************/
/**************************** Private constants ******************************/
/*****************************************************************************/
static const char *PrjCfg_RubricIDs[PrjCfg_NUM_RUBRICS] =
{
[PrjCfg_RUBRIC_TUT] = "rub_tut",
[PrjCfg_RUBRIC_EVL] = "rub_evl",
[PrjCfg_RUBRIC_GBL] = "rub_gbl",
};
/*****************************************************************************/
/************** External global variables from others modules ****************/
/*****************************************************************************/
extern struct Globals Gbl;
/*****************************************************************************/
/************************* Private global variables **************************/
/*****************************************************************************/
static struct Rub_Rubric PrjCfg_Rubrics[PrjCfg_NUM_RUBRICS];
/*****************************************************************************/
/***************************** Private prototypes ****************************/
/*****************************************************************************/
static void PrjCfg_ShowFormNETCanCreate (const struct Prj_Projects *Projects);
static void PrjCfg_ShowFormRubrics (void);
static void PrjCfg_ShowFormRubric (struct Rub_Rubrics *Rubrics,
PrjCfg_Rubric_t WhichRubric);
static void PrjCfg_GetConfigDataFromRow (MYSQL_RES *mysql_res,
struct Prj_Projects *Projects);
@ -142,13 +161,13 @@ static void PrjCfg_ShowFormNETCanCreate (const struct Prj_Projects *Projects)
HTM_TR_Begin (NULL);
/***** Label *****/
HTM_TD_Begin ("class=\"RT FORM_IN_%s\"",
HTM_TD_Begin ("class=\"RM FORM_IN_%s\"",
The_GetSuffix ());
HTM_TxtColon (Txt_Create_project);
HTM_TD_End ();
/***** Data *****/
HTM_TD_Begin ("class=\"LT\"");
HTM_TD_Begin ("class=\"LM\"");
HTM_LABEL_Begin ("class=\"DAT_%s\"",
The_GetSuffix ());
HTM_INPUT_CHECKBOX ("NETCanCreate",HTM_DONT_SUBMIT_ON_CHANGE,
@ -169,13 +188,7 @@ static void PrjCfg_ShowFormNETCanCreate (const struct Prj_Projects *Projects)
static void PrjCfg_ShowFormRubrics (void)
{
struct Rub_Rubrics Rubrics;
unsigned NumRub;
struct
{
struct Rub_Rubric Tutors;
struct Rub_Rubric Evaluators;
struct Rub_Rubric Global;
} PrjRubrics = {};
PrjCfg_Rubric_t WhichRubric;
/***** Reset rubrics context *****/
Rub_ResetRubrics (&Rubrics);
@ -183,81 +196,53 @@ static void PrjCfg_ShowFormRubrics (void)
/***** Get list of rubrics *****/
Rub_GetListRubrics (&Rubrics);
/***** Rubric for tutors *****/
HTM_TR_Begin (NULL);
/* Label */
HTM_TD_Begin ("class=\"RT FORM_IN_%s\"",
The_GetSuffix ());
HTM_TxtColon ("Rúbrica para tutores");
HTM_TD_End ();
/* Data */
HTM_TD_Begin ("class=\"LT\"");
HTM_SELECT_Begin (HTM_DONT_SUBMIT_ON_CHANGE,NULL,
"id=\"rub_tut\" name=\"rub_tut\" class=\"LICENSE\"");
for (NumRub = 0;
NumRub < Rubrics.Num;
NumRub++)
HTM_OPTION (HTM_Type_LONG,&Rubrics.Lst[NumRub].RubCod,
Rubrics.Lst[NumRub].RubCod == PrjRubrics.Global.RubCod,false,
"%s",Rubrics.Lst[NumRub].Title);
HTM_SELECT_End ();
HTM_TD_End ();
HTM_TR_End ();
/***** Rubric for evaluators *****/
HTM_TR_Begin (NULL);
/* Label */
HTM_TD_Begin ("class=\"RT FORM_IN_%s\"",
The_GetSuffix ());
HTM_TxtColon ("R&uacute;brica para evaluadores");
HTM_TD_End ();
/* Data */
HTM_TD_Begin ("class=\"LT\"");
HTM_SELECT_Begin (HTM_DONT_SUBMIT_ON_CHANGE,NULL,
"id=\"rub_eva\" name=\"rub_eva\" class=\"LICENSE\"");
for (NumRub = 0;
NumRub < Rubrics.Num;
NumRub++)
HTM_OPTION (HTM_Type_LONG,&Rubrics.Lst[NumRub].RubCod,
Rubrics.Lst[NumRub].RubCod == PrjRubrics.Global.RubCod,false,
"%s",Rubrics.Lst[NumRub].Title);
HTM_SELECT_End ();
HTM_TD_End ();
HTM_TR_End ();
/***** Rubric global *****/
HTM_TR_Begin (NULL);
/* Label */
HTM_TD_Begin ("class=\"RT FORM_IN_%s\"",
The_GetSuffix ());
HTM_TxtColon ("R&uacute;brica global");
HTM_TD_End ();
/* Data */
HTM_TD_Begin ("class=\"LT\"");
HTM_SELECT_Begin (HTM_DONT_SUBMIT_ON_CHANGE,NULL,
"id=\"rub_gbl\" name=\"rub_gbl\" class=\"LICENSE\"");
for (NumRub = 0;
NumRub < Rubrics.Num;
NumRub++)
HTM_OPTION (HTM_Type_LONG,&Rubrics.Lst[NumRub].RubCod,
Rubrics.Lst[NumRub].RubCod == PrjRubrics.Global.RubCod,false,
"%s",Rubrics.Lst[NumRub].Title);
HTM_SELECT_End ();
HTM_TD_End ();
HTM_TR_End ();
/***** Rubric selectors *****/
for (WhichRubric = (PrjCfg_Rubric_t) 0;
WhichRubric <= (PrjCfg_Rubric_t) (PrjCfg_NUM_RUBRICS - 1);
WhichRubric++)
PrjCfg_ShowFormRubric (&Rubrics,WhichRubric);
/***** Free list of rubrics *****/
Rub_FreeListRubrics (&Rubrics);
}
/*****************************************************************************/
/************ Show form to edit rubrics associated to projects ***************/
/*****************************************************************************/
static void PrjCfg_ShowFormRubric (struct Rub_Rubrics *Rubrics,
PrjCfg_Rubric_t WhichRubric)
{
extern const char *Txt_PROJECT_RUBRIC[PrjCfg_NUM_RUBRICS];
unsigned NumRub;
/***** Row with form for rubric *****/
HTM_TR_Begin (NULL);
/* Label */
HTM_TD_Begin ("class=\"RM FORM_IN_%s\"",
The_GetSuffix ());
HTM_TxtColon (Txt_PROJECT_RUBRIC[WhichRubric]);
HTM_TD_End ();
/* Data */
HTM_TD_Begin ("class=\"LM\"");
HTM_SELECT_Begin (HTM_DONT_SUBMIT_ON_CHANGE,NULL,
"id=\"%s\" name=\"%s\" class=\"PrjCfg_RUBRIC_SEL\"",
PrjCfg_RubricIDs[WhichRubric],
PrjCfg_RubricIDs[WhichRubric]);
for (NumRub = 0;
NumRub < Rubrics->Num;
NumRub++)
HTM_OPTION (HTM_Type_LONG,&Rubrics->Lst[NumRub].RubCod,
Rubrics->Lst[NumRub].RubCod == PrjCfg_Rubrics[WhichRubric].RubCod,false,
"%s",Rubrics->Lst[NumRub].Title);
HTM_SELECT_End ();
HTM_TD_End ();
HTM_TR_End ();
}
/*****************************************************************************/
/************ Get configuration values from a database table row *************/
/*****************************************************************************/

View File

@ -31,9 +31,16 @@
/************************** Public types and constants ***********************/
/*****************************************************************************/
/***** Configuration *****/
#define PrjCfg_NET_CAN_CREATE_DEFAULT true
#define PrjCfg_NUM_RUBRICS 3
typedef enum
{
PrjCfg_RUBRIC_TUT,
PrjCfg_RUBRIC_EVL,
PrjCfg_RUBRIC_GBL,
} PrjCfg_Rubric_t;
/*****************************************************************************/
/***************************** Public prototypes *****************************/
/*****************************************************************************/

View File

@ -84,6 +84,7 @@
#include "swad_privacy.h"
#include "swad_program.h"
#include "swad_project.h"
#include "swad_project_config.h"
#include "swad_record.h"
#include "swad_role.h"
#include "swad_room.h"
@ -22528,7 +22529,7 @@ const char *Txt_MENU_TITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] =
#elif L==5 // fr
"&Eacute;tudiants"
#elif L==6 // gn
"Estudiantes" // Okoteve traducción
"Temimbo'eku&eacute;ra"
#elif L==7 // it
"Studenti"
#elif L==8 // pl
@ -33243,7 +33244,7 @@ const char *Txt_PROJECT_ROLES_PLURAL_Abc[Prj_NUM_ROLES_IN_PROJECT] =
#elif L==5 // fr
"&Eacute;tudiants"
#elif L==6 // gn
"Temimbo'e"
"Temimbo'eku&eacute;ra"
#elif L==7 // it
"Studenti"
#elif L==8 // pl
@ -33266,7 +33267,7 @@ const char *Txt_PROJECT_ROLES_PLURAL_Abc[Prj_NUM_ROLES_IN_PROJECT] =
#elif L==5 // fr
"Tuteurs"
#elif L==6 // gn
"Tutores" // Okoteve traducción
"Tutor-ku&eacute;ra"
#elif L==7 // it
"Precettori"
#elif L==8 // pl
@ -33274,7 +33275,7 @@ const char *Txt_PROJECT_ROLES_PLURAL_Abc[Prj_NUM_ROLES_IN_PROJECT] =
#elif L==9 // pt
"Tutores"
#elif L==10 // tr
"Tutors" // Çeviri lazim!
"&Ouml;&gbreve;retmenler"
#endif
,
[Prj_ROLE_EVL] =
@ -33289,7 +33290,7 @@ const char *Txt_PROJECT_ROLES_PLURAL_Abc[Prj_NUM_ROLES_IN_PROJECT] =
#elif L==5 // fr
"&Eacute;valuateurs"
#elif L==6 // gn
"Evaluadores" // Okoteve traducción
"Evaluador-ku&eacute;ra"
#elif L==7 // it
"Valutatori"
#elif L==8 // pl
@ -33297,7 +33298,7 @@ const char *Txt_PROJECT_ROLES_PLURAL_Abc[Prj_NUM_ROLES_IN_PROJECT] =
#elif L==9 // pt
"Avaliadores"
#elif L==10 // tr
"Evaluators" // Çeviri lazim!
"De&gbreve;erlendiriciler"
#endif
};
@ -33338,7 +33339,7 @@ const char *Txt_PROJECT_ROLES_PLURAL_abc[Prj_NUM_ROLES_IN_PROJECT] =
#elif L==5 // fr
"&eacute;tudiants"
#elif L==6 // gn
"temimbo'e"
"temimbo'eku&eacute;ra"
#elif L==7 // it
"studenti"
#elif L==8 // pl
@ -33346,7 +33347,7 @@ const char *Txt_PROJECT_ROLES_PLURAL_abc[Prj_NUM_ROLES_IN_PROJECT] =
#elif L==9 // pt
"estudantes"
#elif L==10 // tr
"students" // Çeviri lazim!
"&ouml;&gbreve;renciler"
#endif
,
[Prj_ROLE_TUT] =
@ -33361,7 +33362,7 @@ const char *Txt_PROJECT_ROLES_PLURAL_abc[Prj_NUM_ROLES_IN_PROJECT] =
#elif L==5 // fr
"tuteurs"
#elif L==6 // gn
"tutores" // Okoteve traducción
"tutor-ku&eacute;ra"
#elif L==7 // it
"precettori"
#elif L==8 // pl
@ -33369,7 +33370,7 @@ const char *Txt_PROJECT_ROLES_PLURAL_abc[Prj_NUM_ROLES_IN_PROJECT] =
#elif L==9 // pt
"tutores"
#elif L==10 // tr
"tutors" // Çeviri lazim!
"&ouml;&gbreve;retmenler"
#endif
,
[Prj_ROLE_EVL] =
@ -33384,7 +33385,7 @@ const char *Txt_PROJECT_ROLES_PLURAL_abc[Prj_NUM_ROLES_IN_PROJECT] =
#elif L==5 // fr
"&eacute;valuateurs"
#elif L==6 // gn
"evaluadores" // Okoteve traducción
"evaluador-ku&eacute;ra"
#elif L==7 // it
"valutatori"
#elif L==8 // pl
@ -33392,7 +33393,79 @@ const char *Txt_PROJECT_ROLES_PLURAL_abc[Prj_NUM_ROLES_IN_PROJECT] =
#elif L==9 // pt
"avaliadores"
#elif L==10 // tr
"evaluators" // Çeviri lazim!
"de&gbreve;erlendiriciler"
#endif
};
const char *Txt_PROJECT_RUBRIC[PrjCfg_NUM_RUBRICS] =
{
[PrjCfg_RUBRIC_TUT] =
#if L==1 // ca
"R&uacute;brica per a tutors"
#elif L==2 // de
"Rubrik f&uuml;r Tutoren"
#elif L==3 // en
"Rubric for tutors"
#elif L==4 // es
"R&uacute;brica para tutores"
#elif L==5 // fr
"Rubrique pour les tuteurs"
#elif L==6 // gn
"R&uacute;brica tutor-ku&eacute;rape guar&atilde;"
#elif L==7 // it
"Rubrica per precettori"
#elif L==8 // pl
"Rubryka dla nauczyciele"
#elif L==9 // pt
"Rubrica para tutores"
#elif L==10 // tr
"&Ouml;&gbreve;retmenler i&ccedil;in de&gbreve;erlendirme listesi"
#endif
,
[PrjCfg_RUBRIC_EVL] =
#if L==1 // ca
"R&uacute;brica per a avaluadors"
#elif L==2 // de
"Rubrik f&uuml;r Auswerter"
#elif L==3 // en
"Rubric for evaluators"
#elif L==4 // es
"R&uacute;brica para evaluadores"
#elif L==5 // fr
"Rubrique pour les &eacute;valuateurs"
#elif L==6 // gn
"R&uacute;brica evaluador-ku&eacute;rape guar&atilde;"
#elif L==7 // it
"Rubrica per valutatori"
#elif L==8 // pl
"Rubryka dla ewaluator&oacute;w"
#elif L==9 // pt
"Rubrica para avaliadores"
#elif L==10 // tr
"De&gbreve;erlendiriciler i&ccedil;in de&gbreve;erlendirme listesi"
#endif
,
[PrjCfg_RUBRIC_GBL] =
#if L==1 // ca
"R&uacute;brica global"
#elif L==2 // de
"Gesamtrubrik"
#elif L==3 // en
"Globale rubric"
#elif L==4 // es
"R&uacute;brica global"
#elif L==5 // fr
"Rubrique globale"
#elif L==6 // gn
"R&uacute;brica general"
#elif L==7 // it
"Rubrica complessiva"
#elif L==8 // pl
"Globalna rubryka"
#elif L==9 // pt
"Rubrica geral"
#elif L==10 // tr
"Genel de&gbreve;erlendirme listesi"
#endif
};
@ -37206,7 +37279,7 @@ const char *Txt_ROLE_STATS[Sta_NUM_ROLES_STAT] =
#elif L==5 // fr
"&eacute;tudiants"
#elif L==6 // gn
"temimbo'e"
"temimbo'eku&eacute;ra"
#elif L==7 // it
"studenti"
#elif L==8 // pl
@ -37214,7 +37287,7 @@ const char *Txt_ROLE_STATS[Sta_NUM_ROLES_STAT] =
#elif L==9 // pt
"estudantes"
#elif L==10 // tr
"students" // Çeviri lazim!
"&ouml;&gbreve;renciler"
#endif
,
[Sta_ROLE_USERS] =
@ -39446,7 +39519,7 @@ const char *Txt_ROLES_PLURAL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS] =
#elif L==5 // fr
"&Eacute;tudiants"
#elif L==6 // gn
"Temimbo'e"
"Temimbo'eku&eacute;ra"
#elif L==7 // it
"Studenti"
#elif L==8 // pl
@ -39469,7 +39542,7 @@ const char *Txt_ROLES_PLURAL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS] =
#elif L==5 // fr
"&Eacute;tudiantes"
#elif L==6 // gn
"Temimbo'e"
"Temimbo'eku&eacute;ra"
#elif L==7 // it
"Studentesse"
#elif L==8 // pl
@ -39492,7 +39565,7 @@ const char *Txt_ROLES_PLURAL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS] =
#elif L==5 // fr
"&Eacute;tudiants"
#elif L==6 // gn
"Temimbo'e"
"Temimbo'eku&eacute;ra"
#elif L==7 // it
"Studenti"
#elif L==8 // pl
@ -39515,7 +39588,7 @@ const char *Txt_ROLES_PLURAL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS] =
#elif L==5 // fr
"&Eacute;tudiants"
#elif L==6 // gn
"Temimbo'e"
"Temimbo'eku&eacute;ra"
#elif L==7 // it
"Studenti"
#elif L==8 // pl
@ -40602,7 +40675,7 @@ const char *Txt_ROLES_PLURAL_abc[Rol_NUM_ROLES][Usr_NUM_SEXS] =
#elif L==5 // fr
"&eacute;tudiants"
#elif L==6 // gn
"temimbo'e"
"temimbo'eku&eacute;ra"
#elif L==7 // it
"studenti"
#elif L==8 // pl
@ -40625,7 +40698,7 @@ const char *Txt_ROLES_PLURAL_abc[Rol_NUM_ROLES][Usr_NUM_SEXS] =
#elif L==5 // fr
"&eacute;tudiantes"
#elif L==6 // gn
"temimbo'e"
"temimbo'eku&eacute;ra"
#elif L==7 // it
"studentesse"
#elif L==8 // pl
@ -40648,7 +40721,7 @@ const char *Txt_ROLES_PLURAL_abc[Rol_NUM_ROLES][Usr_NUM_SEXS] =
#elif L==5 // fr
"&eacute;tudiants"
#elif L==6 // gn
"temimbo'e"
"temimbo'eku&eacute;ra"
#elif L==7 // it
"studenti"
#elif L==8 // pl
@ -40671,7 +40744,7 @@ const char *Txt_ROLES_PLURAL_abc[Rol_NUM_ROLES][Usr_NUM_SEXS] =
#elif L==5 // fr
"&eacute;tudiants"
#elif L==6 // gn
"temimbo'e"
"temimbo'eku&eacute;ra"
#elif L==7 // it
"studenti"
#elif L==8 // pl