diff --git a/swad_action_list.c b/swad_action_list.c
index b28ef728..aeb9a7e7 100644
--- a/swad_action_list.c
+++ b/swad_action_list.c
@@ -849,10 +849,11 @@ const struct Act_Actions ActLst_Actions[ActLst_NUM_ACTIONS] =
[ActRemRubCri ] = {1961,-1,TabUnk,ActSeeAllRub ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,RubCri_RemoveCriterion ,NULL},
[ActUp_RubCri ] = {1962,-1,TabUnk,ActSeeAllRub ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,RubCri_MoveUpCriterion ,NULL},
[ActDwnRubCri ] = {1963,-1,TabUnk,ActSeeAllRub ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,RubCri_MoveDownCriterion ,NULL},
- [ActChgTitRubCri ] = {1964,-1,TabUnk,ActSeeAllRub ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,RubCri_ChangeCriterionTitle ,NULL},
- [ActChgMinRubCri ] = {1965,-1,TabUnk,ActSeeAllRub ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,RubCri_ChangeMinValueCriterion ,NULL},
- [ActChgMaxRubCri ] = {1966,-1,TabUnk,ActSeeAllRub ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,RubCri_ChangeMaxValueCriterion ,NULL},
- [ActChgWeiRubCri ] = {1967,-1,TabUnk,ActSeeAllRub ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,RubCri_ChangeWeightCriterion ,NULL},
+ [ActChgTitRubCri ] = {1964,-1,TabUnk,ActSeeAllRub ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,RubCri_ChangeTitle ,NULL},
+ [ActChgSrcRubCri ] = {1968,-1,TabUnk,ActSeeAllRub ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,RubCri_ChangeSource ,NULL},
+ [ActChgMinRubCri ] = {1965,-1,TabUnk,ActSeeAllRub ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,RubCri_ChangeMinValue ,NULL},
+ [ActChgMaxRubCri ] = {1966,-1,TabUnk,ActSeeAllRub ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,RubCri_ChangeMaxValue ,NULL},
+ [ActChgWeiRubCri ] = {1967,-1,TabUnk,ActSeeAllRub ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,RubCri_ChangeWeight ,NULL},
// TabFil ******************************************************************
// Actions in menu:
@@ -3852,4 +3853,5 @@ Act_Action_t ActLst_FromActCodToAction[1 + ActLst_MAX_ACTION_COD] = // Do not re
ActChgMinRubCri, // #1965
ActChgMaxRubCri, // #1966
ActChgWeiRubCri, // #1967
+ ActChgSrcRubCri, // #1968
};
diff --git a/swad_action_list.h b/swad_action_list.h
index db372657..294893e4 100644
--- a/swad_action_list.h
+++ b/swad_action_list.h
@@ -773,9 +773,10 @@
#define ActUp_RubCri (ActChgCrsTT1stDay + 230)
#define ActDwnRubCri (ActChgCrsTT1stDay + 231)
#define ActChgTitRubCri (ActChgCrsTT1stDay + 232)
-#define ActChgMinRubCri (ActChgCrsTT1stDay + 233)
-#define ActChgMaxRubCri (ActChgCrsTT1stDay + 234)
-#define ActChgWeiRubCri (ActChgCrsTT1stDay + 235)
+#define ActChgSrcRubCri (ActChgCrsTT1stDay + 233)
+#define ActChgMinRubCri (ActChgCrsTT1stDay + 234)
+#define ActChgMaxRubCri (ActChgCrsTT1stDay + 235)
+#define ActChgWeiRubCri (ActChgCrsTT1stDay + 236)
/*****************************************************************************/
/******************************** Files tab **********************************/
@@ -1768,7 +1769,7 @@
#define ActLst_NUM_ACTIONS (ActChgMyTT1stDay + 1)
-#define ActLst_MAX_ACTION_COD 1967
+#define ActLst_MAX_ACTION_COD 1968
#define ActLst_DEFAULT_ACTION_AFTER_LOGIN ActSeeGblTL
diff --git a/swad_changelog.h b/swad_changelog.h
index c3a66fc0..9f1411fc 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.78.15 (2023-03-23)"
+#define Log_PLATFORM_VERSION "SWAD 22.79 (2023-03-24)"
#define CSS_FILE "swad22.78.15.css"
#define JS_FILE "swad22.49.js"
/*
+ 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)
Version 22.78.13: Mar 23, 2023 Code refactoring in rooms. (337641 lines)
diff --git a/swad_rubric_criteria.c b/swad_rubric_criteria.c
index 65db91cf..c2017337 100644
--- a/swad_rubric_criteria.c
+++ b/swad_rubric_criteria.c
@@ -70,6 +70,7 @@ static void RubCri_PutFormNewCriterion (struct Rub_Rubrics *Rubrics,
static void RubCri_ReceiveCriterionFieldsFromForm (struct RubCri_Criterion *Criterion);
static bool RubCri_CheckCriterionTitleReceivedFromForm (const struct RubCri_Criterion *Criterion,
const char NewTitle[RubCri_MAX_BYTES_TITLE + 1]);
+static RubCri_Source_t RubCri_GetParSource (void);
static void RubCri_ChangeValueCriterion (RubCri_ValueRange_t ValueRange);
@@ -141,7 +142,10 @@ static void RubCri_PutFormNewCriterion (struct Rub_Rubrics *Rubrics,
unsigned MaxCriInd)
{
extern const char *Txt_New_criterion;
+ extern const char *Txt_RUBRIC_CRITERION_SOURCES[RubCri_NUM_SOURCES];
extern const char *Txt_Create_criterion;
+ RubCri_Source_t Source;
+ unsigned SourceUnsigned;
RubCri_ValueRange_t ValueRange;
/***** Begin form *****/
@@ -181,10 +185,17 @@ static void RubCri_PutFormNewCriterion (struct Rub_Rubrics *Rubrics,
/***** Source *****/
HTM_TD_Begin ("class=\"LM %s\"",The_GetColorRows ());
HTM_SELECT_Begin (HTM_DONT_SUBMIT_ON_CHANGE,
- "id=\"deg\" name=\"Source\" class=\"INPUT_%s\"",
+ "name=\"Source\" class=\"INPUT_%s\"",
The_GetSuffix ());
- HTM_OPTION (HTM_Type_STRING,"Y",true,false,
- "%s","Fuente");
+ for (Source = (RubCri_Source_t) 0;
+ Source <= (RubCri_Source_t) (RubCri_NUM_SOURCES - 1);
+ Source++)
+ {
+ SourceUnsigned = (unsigned) Source;
+ HTM_OPTION (HTM_Type_UNSIGNED,&SourceUnsigned,
+ Source == Criterion->Source,false,
+ "%s",Txt_RUBRIC_CRITERION_SOURCES[Source]);
+ }
HTM_SELECT_End ();
HTM_TD_End ();
@@ -264,6 +275,9 @@ static void RubCri_ReceiveCriterionFieldsFromForm (struct RubCri_Criterion *Crit
/***** Get criterion title *****/
Par_GetParText ("Title",Criterion->Title,RubCri_MAX_BYTES_TITLE);
+ /***** Get criterion source *****/
+ Criterion->Source = RubCri_GetParSource ();
+
/***** Get minimum and maximum values of criterion *****/
for (ValueRange = (RubCri_ValueRange_t) 0;
ValueRange <= (RubCri_ValueRange_t) (RubCri_NUM_VALUES - 1);
@@ -310,11 +324,24 @@ static bool RubCri_CheckCriterionTitleReceivedFromForm (const struct RubCri_Crit
return NewTitleIsCorrect;
}
+/*****************************************************************************/
+/****************** Get parameter with criterion source **********************/
+/*****************************************************************************/
+
+static RubCri_Source_t RubCri_GetParSource (void)
+ {
+ return (RubCri_Source_t)
+ Par_GetParUnsignedLong ("Source",
+ 0,
+ RubCri_NUM_SOURCES - 1,
+ (unsigned long) RubCri_SOURCE_DEFAULT);
+ }
+
/*****************************************************************************/
/************* Receive form to change title of rubric criterion **************/
/*****************************************************************************/
-void RubCri_ChangeCriterionTitle (void)
+void RubCri_ChangeTitle (void)
{
struct Rub_Rubrics Rubrics;
struct RubCri_Criterion Criterion;
@@ -342,11 +369,9 @@ void RubCri_ChangeCriterionTitle (void)
/***** Check if title should be changed *****/
if (RubCri_CheckCriterionTitleReceivedFromForm (&Criterion,NewTitle))
{
- /* Update the table changing old title by new title */
- Rub_DB_UpdateCriterionTitle (Criterion.CriCod,Criterion.RubCod,NewTitle);
-
- /* Update title */
+ /* Update title and database table */
Str_Copy (Criterion.Title,NewTitle,sizeof (Criterion.Title) - 1);
+ Rub_DB_UpdateCriterionTitle (&Criterion);
}
/***** Show current rubric and its criteria *****/
@@ -354,16 +379,58 @@ void RubCri_ChangeCriterionTitle (void)
false); // It's not a new rubric
}
+/*****************************************************************************/
+/****************** Receive form to change criterion source ******************/
+/*****************************************************************************/
+
+void RubCri_ChangeSource (void)
+ {
+ struct Rub_Rubrics Rubrics;
+ struct RubCri_Criterion Criterion;
+
+ /***** Check if I can edit rubrics *****/
+ if (!Rub_CheckIfICanEditRubrics ())
+ Err_NoPermissionExit ();
+
+ /***** Reset rubrics context *****/
+ Rub_ResetRubrics (&Rubrics);
+ Rub_ResetRubric (&Rubrics.Rubric);
+ RubCri_ResetCriterion (&Criterion);
+
+ /***** Get parameters *****/
+ Rub_GetPars (&Rubrics,true);
+ Criterion.RubCod = Rubrics.Rubric.RubCod;
+ Rubrics.CriCod = Criterion.CriCod = ParCod_GetAndCheckPar (ParCod_Cri);
+
+ /***** Get and check parameters *****/
+ RubCri_GetAndCheckPars (&Rubrics,&Criterion);
+
+ /***** Check if rubric is editable *****/
+ if (!Rub_CheckIfEditable (&Rubrics.Rubric))
+ Err_NoPermissionExit ();
+
+ /***** Receive new source from form *****/
+ Criterion.Source = RubCri_GetParSource ();
+
+ /***** Change source *****/
+ /* Update the table changing old source by new source */
+ Rub_DB_UpdateCriterionSource (&Criterion);
+
+ /***** Show current rubric and its criteria *****/
+ Rub_PutFormsOneRubric (&Rubrics,&Criterion,
+ false); // It's not a new rubric
+ }
+
/*****************************************************************************/
/********* Receive form to change minimum/maximum value of criterion *********/
/*****************************************************************************/
-void RubCri_ChangeMinValueCriterion (void)
+void RubCri_ChangeMinValue (void)
{
RubCri_ChangeValueCriterion (RubCri_MIN);
}
-void RubCri_ChangeMaxValueCriterion (void)
+void RubCri_ChangeMaxValue (void)
{
RubCri_ChangeValueCriterion (RubCri_MAX);
}
@@ -401,8 +468,7 @@ static void RubCri_ChangeValueCriterion (RubCri_ValueRange_t ValueRange)
/***** Change value *****/
/* Update the table changing old value by new value */
- Rub_DB_UpdateCriterionValue (Criterion.CriCod,Criterion.RubCod,
- ValueRange,Criterion.Values[ValueRange]);
+ Rub_DB_UpdateCriterionValue (&Criterion,ValueRange);
/***** Show current rubric and its criteria *****/
Rub_PutFormsOneRubric (&Rubrics,&Criterion,
@@ -410,10 +476,10 @@ static void RubCri_ChangeValueCriterion (RubCri_ValueRange_t ValueRange)
}
/*****************************************************************************/
-/********* Receive form to change minimum/maximum value of criterion *********/
+/****************** Receive form to change criterion weight ******************/
/*****************************************************************************/
-void RubCri_ChangeWeightCriterion (void)
+void RubCri_ChangeWeight (void)
{
struct Rub_Rubrics Rubrics;
struct RubCri_Criterion Criterion;
@@ -440,14 +506,13 @@ void RubCri_ChangeWeightCriterion (void)
if (!Rub_CheckIfEditable (&Rubrics.Rubric))
Err_NoPermissionExit ();
- /***** Receive new value from form *****/
+ /***** Receive new weight from form *****/
Par_GetParText ("Weight",WeightStr,sizeof (WeightStr) - 1);
Criterion.Weight = Str_GetDoubleFromStr (WeightStr);
/***** Change value *****/
- /* Update the table changing old value by new value */
- Rub_DB_UpdateCriterionWeight (Criterion.CriCod,Criterion.RubCod,
- Criterion.Weight);
+ /* Update the table changing old weight by new weight */
+ Rub_DB_UpdateCriterionWeight (&Criterion);
/***** Show current rubric and its criteria *****/
Rub_PutFormsOneRubric (&Rubrics,&Criterion,
@@ -530,6 +595,7 @@ static void RubCri_ListOneOrMoreCriteriaForEdition (struct Rub_Rubrics *Rubrics,
{
extern const char *Txt_Criteria;
extern const char *Txt_Movement_not_allowed;
+ extern const char *Txt_RUBRIC_CRITERION_SOURCES[RubCri_NUM_SOURCES];
// Actions to change minimum/maximum criterion values
static Act_Action_t RubCri_ActionsValues[RubCri_NUM_VALUES] =
{
@@ -539,6 +605,8 @@ static void RubCri_ListOneOrMoreCriteriaForEdition (struct Rub_Rubrics *Rubrics,
unsigned NumCriterion;
struct RubCri_Criterion Criterion;
char *Anchor;
+ RubCri_Source_t Source;
+ unsigned SourceUnsigned;
RubCri_ValueRange_t ValueRange;
/***** Trivial check *****/
@@ -635,12 +703,22 @@ static void RubCri_ListOneOrMoreCriteriaForEdition (struct Rub_Rubrics *Rubrics,
/***** Source *****/
HTM_TD_Begin ("class=\"LT %s\"",The_GetColorRows ());
- HTM_SELECT_Begin (HTM_SUBMIT_ON_CHANGE,
- "id=\"deg\" name=\"Source\" class=\"INPUT_%s\"",
- The_GetSuffix ());
- HTM_OPTION (HTM_Type_STRING,"Y",true,false,
- "%s","Fuente");
- HTM_SELECT_End ();
+ Frm_BeginFormAnchor (ActChgSrcRubCri,Anchor);
+ RubCri_PutParsOneCriterion (Rubrics);
+ HTM_SELECT_Begin (HTM_SUBMIT_ON_CHANGE,
+ "name=\"Source\" class=\"INPUT_%s\"",
+ The_GetSuffix ());
+ for (Source = (RubCri_Source_t) 0;
+ Source <= (RubCri_Source_t) (RubCri_NUM_SOURCES - 1);
+ Source++)
+ {
+ SourceUnsigned = (unsigned) Source;
+ HTM_OPTION (HTM_Type_UNSIGNED,&SourceUnsigned,
+ Source == Criterion.Source,false,
+ "%s",Txt_RUBRIC_CRITERION_SOURCES[Source]);
+ }
+ HTM_SELECT_End ();
+ Frm_EndForm ();
HTM_TD_End ();
/***** Minimum and maximum values of criterion *****/
diff --git a/swad_rubric_criteria.h b/swad_rubric_criteria.h
index aade5d20..e4aaf342 100644
--- a/swad_rubric_criteria.h
+++ b/swad_rubric_criteria.h
@@ -36,10 +36,11 @@
void RubCri_GetCriterionDataByCod (struct RubCri_Criterion *Criterion);
void RubCri_ReceiveFormCriterion (void);
-void RubCri_ChangeCriterionTitle (void);
-void RubCri_ChangeMinValueCriterion (void);
-void RubCri_ChangeMaxValueCriterion (void);
-void RubCri_ChangeWeightCriterion (void);
+void RubCri_ChangeTitle (void);
+void RubCri_ChangeSource (void);
+void RubCri_ChangeMinValue (void);
+void RubCri_ChangeMaxValue (void);
+void RubCri_ChangeWeight (void);
void RubCri_ListCriteria (struct Rub_Rubrics *Rubrics,
struct RubCri_Criterion *Criterion);
diff --git a/swad_rubric_database.c b/swad_rubric_database.c
index e0b5a187..77b31cbc 100644
--- a/swad_rubric_database.c
+++ b/swad_rubric_database.c
@@ -379,25 +379,40 @@ long Rub_DB_CreateCriterion (const struct RubCri_Criterion *Criterion)
/********************* Update criterion title in database ********************/
/*****************************************************************************/
-void Rub_DB_UpdateCriterionTitle (long CriCod,long RubCod,
- const char NewTitle[RubCri_MAX_BYTES_TITLE + 1])
+void Rub_DB_UpdateCriterionTitle (const struct RubCri_Criterion *Criterion)
{
DB_QueryUPDATE ("can not update the title of a criterion",
"UPDATE rub_criteria"
" SET Title='%s'"
" WHERE CriCod=%ld"
" AND RubCod=%ld", // Extra check
- NewTitle,
- CriCod,
- RubCod);
+ Criterion->Title,
+ Criterion->CriCod,
+ Criterion->RubCod);
+ }
+
+/*****************************************************************************/
+/********************* Update criterion source in database *******************/
+/*****************************************************************************/
+
+void Rub_DB_UpdateCriterionSource (const struct RubCri_Criterion *Criterion)
+ {
+ DB_QueryUPDATE ("can not update the value of a criterion",
+ "UPDATE rub_criteria"
+ " SET Source='%s'"
+ " WHERE CriCod=%ld"
+ " AND RubCod=%ld", // Extra check
+ RubCri_GetDBStrFromSource (Criterion->Source),
+ Criterion->CriCod,
+ Criterion->RubCod);
}
/*****************************************************************************/
/********************* Update criterion value in database ********************/
/*****************************************************************************/
-void Rub_DB_UpdateCriterionValue (long CriCod,long RubCod,
- RubCri_ValueRange_t ValueRange,double Value)
+void Rub_DB_UpdateCriterionValue (const struct RubCri_Criterion *Criterion,
+ RubCri_ValueRange_t ValueRange)
{
Str_SetDecimalPointToUS (); // To write the decimal point as a dot
DB_QueryUPDATE ("can not update the value of a criterion",
@@ -405,9 +420,9 @@ void Rub_DB_UpdateCriterionValue (long CriCod,long RubCod,
" SET %s=%.15lg"
" WHERE CriCod=%ld"
" AND RubCod=%ld", // Extra check
- RubCri_ValuesFields[ValueRange],Value,
- CriCod,
- RubCod);
+ RubCri_ValuesFields[ValueRange],Criterion->Values[ValueRange],
+ Criterion->CriCod,
+ Criterion->RubCod);
Str_SetDecimalPointToLocal (); // Return to local system
}
@@ -415,7 +430,7 @@ void Rub_DB_UpdateCriterionValue (long CriCod,long RubCod,
/********************* Update criterion weight in database *******************/
/*****************************************************************************/
-void Rub_DB_UpdateCriterionWeight (long CriCod,long RubCod,double Weight)
+void Rub_DB_UpdateCriterionWeight (const struct RubCri_Criterion *Criterion)
{
Str_SetDecimalPointToUS (); // To write the decimal point as a dot
DB_QueryUPDATE ("can not update the value of a criterion",
@@ -423,9 +438,9 @@ void Rub_DB_UpdateCriterionWeight (long CriCod,long RubCod,double Weight)
" SET Weight=%.15lg"
" WHERE CriCod=%ld"
" AND RubCod=%ld", // Extra check
- Weight,
- CriCod,
- RubCod);
+ Criterion->Weight,
+ Criterion->CriCod,
+ Criterion->RubCod);
Str_SetDecimalPointToLocal (); // Return to local system
}
diff --git a/swad_rubric_database.h b/swad_rubric_database.h
index a5d77ef7..874e5df2 100644
--- a/swad_rubric_database.h
+++ b/swad_rubric_database.h
@@ -55,11 +55,11 @@ void Rub_DB_RemoveCrsRubrics (long CrsCod);
//--------------------------- Rubric criteria -------------------------------
long Rub_DB_CreateCriterion (const struct RubCri_Criterion *Criterion);
-void Rub_DB_UpdateCriterionTitle (long CriCod,long RubCod,
- const char NewTitle[RubCri_MAX_BYTES_TITLE + 1]);
-void Rub_DB_UpdateCriterionValue (long CriCod,long RubCod,
- RubCri_ValueRange_t ValueRange,double Value);
-void Rub_DB_UpdateCriterionWeight (long CriCod,long RubCod,double Weight);
+void Rub_DB_UpdateCriterionTitle (const struct RubCri_Criterion *Criterion);
+void Rub_DB_UpdateCriterionSource (const struct RubCri_Criterion *Criterion);
+void Rub_DB_UpdateCriterionValue (const struct RubCri_Criterion *Criterion,
+ RubCri_ValueRange_t ValueRange);
+void Rub_DB_UpdateCriterionWeight (const struct RubCri_Criterion *Criterion);
void Rub_DB_UpdateCriteriaIndexesInRubricGreaterThan (long RubCod,unsigned CriInd);
void Rub_DB_UpdateCriterionIndex (long CriInd,long CriCod,long RubCod);
void Rub_DB_LockTable (void);
diff --git a/swad_rubric_type.h b/swad_rubric_type.h
index ebe0fee1..aa734516 100644
--- a/swad_rubric_type.h
+++ b/swad_rubric_type.h
@@ -23,7 +23,6 @@
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
-
/*****************************************************************************/
/********************************* Headers ***********************************/
/*****************************************************************************/
diff --git a/swad_text.c b/swad_text.c
index 1d7e4c2f..75341d74 100644
--- a/swad_text.c
+++ b/swad_text.c
@@ -87,6 +87,7 @@
#include "swad_record.h"
#include "swad_role.h"
#include "swad_room.h"
+#include "swad_rubric_type.h"
#include "swad_setting.h"
#include "swad_statistic.h"
#include "swad_survey.h"
@@ -15911,7 +15912,7 @@ const char *Txt_Game =
#elif L==5 // fr
"Jeu";
#elif L==6 // gn
- "Juego"; // Okoteve traducción
+ "Ñeha'a";
#elif L==7 // it
"Gioco";
#elif L==8 // pl
@@ -37722,7 +37723,7 @@ const char *Txt_ROLES_SINGUL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS] =
#elif L==9 // pt
"Professor/a"
#elif L==10 // tr
- "Teacher" // Çeviri lazim!
+ "Öğretmen"
#endif
,
[Rol_TCH][Usr_SEX_FEMALE] =
@@ -37745,7 +37746,7 @@ const char *Txt_ROLES_SINGUL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS] =
#elif L==9 // pt
"Professora"
#elif L==10 // tr
- "Teacher" // Çeviri lazim!
+ "Öğretmen"
#endif
,
[Rol_TCH][Usr_SEX_MALE] =
@@ -37768,7 +37769,7 @@ const char *Txt_ROLES_SINGUL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS] =
#elif L==9 // pt
"Professor"
#elif L==10 // tr
- "Teacher" // Çeviri lazim!
+ "Öğretmen"
#endif
,
[Rol_TCH][Usr_SEX_ALL] =
@@ -37791,7 +37792,7 @@ const char *Txt_ROLES_SINGUL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS] =
#elif L==9 // pt
"Professor/a"
#elif L==10 // tr
- "Teacher" // Çeviri lazim!
+ "Öğretmen"
#endif
,
[Rol_DEG_ADM][Usr_SEX_UNKNOWN] =
@@ -42812,6 +42813,101 @@ const char *Txt_Rubric_X_removed = // Warning: it is very important to include %
"Değerlendirme listesi %s kaldırıldı.";
#endif
+const char *Txt_RUBRIC_CRITERION_SOURCES[RubCri_NUM_SOURCES] =
+ {
+ [RubCri_FROM_TEACHER] =
+#if L==1 // ca
+ "Professor/a"
+#elif L==2 // de
+ "Lehrkraft"
+#elif L==3 // en
+ "Teacher"
+#elif L==4 // es
+ "Profesor/a"
+#elif L==5 // fr
+ "Enseignant/e"
+#elif L==6 // gn
+ "Mbo'ehára"
+#elif L==7 // it
+ "Professore/ssa"
+#elif L==8 // pl
+ "Nauczyciel"
+#elif L==9 // pt
+ "Professor/a"
+#elif L==10 // tr
+ "Öğretmen"
+#endif
+ ,
+ [RubCri_FROM_ANOTHER_RUBRIC] =
+#if L==1 // ca
+ "Rúbrica"
+#elif L==2 // de
+ "Rubrik"
+#elif L==3 // en
+ "Rubric"
+#elif L==4 // es
+ "Rúbrica"
+#elif L==5 // fr
+ "Rubrique"
+#elif L==6 // gn
+ "Rúbrica" // Okoteve traducción
+#elif L==7 // it
+ "Rubriche"
+#elif L==8 // pl
+ "Rubryki"
+#elif L==9 // pt
+ "Rubrica"
+#elif L==10 // tr
+ "Değerlendirme"
+#endif
+ ,
+ [RubCri_FROM_EXAM_PRINT] =
+#if L==1 // ca
+ "Exàmen"
+#elif L==2 // de
+ "Prüfung"
+#elif L==3 // en
+ "Exam"
+#elif L==4 // es
+ "Examen"
+#elif L==5 // fr
+ "Examen"
+#elif L==6 // gn
+ "Aranduchauka"
+#elif L==7 // it
+ "Esame"
+#elif L==8 // pl
+ "Egzamin"
+#elif L==9 // pt
+ "Exame"
+#elif L==10 // tr
+ "Sınav"
+#endif
+ ,
+ [RubCri_FROM_GAME_MATCH] =
+#if L==1 // ca
+ "Joc"
+#elif L==2 // de
+ "Spiel"
+#elif L==3 // en
+ "Game"
+#elif L==4 // es
+ "Juego"
+#elif L==5 // fr
+ "Jeu"
+#elif L==6 // gn
+ "Ñeha'a"
+#elif L==7 // it
+ "Gioco"
+#elif L==8 // pl
+ "Gra"
+#elif L==9 // pt
+ "Jogo"
+#elif L==10 // tr
+ "Oyun"
+#endif
+ };
+
const char *Txt_Rubrics =
#if L==1 // ca
"Rúbriques";
diff --git a/swad_text_action.c b/swad_text_action.c
index e1614094..47e43957 100644
--- a/swad_text_action.c
+++ b/swad_text_action.c
@@ -14182,6 +14182,29 @@ const char *Txt_Actions[ActLst_NUM_ACTIONS] =
"Change rubric criterion title" // Precisa de tradução
#elif L==10 // tr
"Change rubric criterion title" // Çeviri lazim!
+#endif
+ ,
+ [ActChgSrcRubCri] =
+#if L==1 // ca
+ "Change source of rubric criterion" // Necessita traducció
+#elif L==2 // de
+ "Change source of rubric criterion" // Need Übersetzung
+#elif L==3 // en
+ "Change source of rubric criterion"
+#elif L==4 // es
+ "Cambiar fuente de criterio de rúbrica"
+#elif L==5 // fr
+ "Change source of rubric criterion" // Besoin de traduction
+#elif L==6 // gn
+ "Cambiar fuente de criterio de rúbrica" // Okoteve traducción
+#elif L==7 // it
+ "Change source of rubric criterion" // Bisogno di traduzione
+#elif L==8 // pl
+ "Change source of rubric criterion" // Potrzebujesz tlumaczenie
+#elif L==9 // pt
+ "Change source of rubric criterion" // Precisa de tradução
+#elif L==10 // tr
+ "Change source of rubric criterion" // Çeviri lazim!
#endif
,
[ActChgMinRubCri] =