diff --git a/swad_action_list.c b/swad_action_list.c
index e3edbcff..8ce472b9 100644
--- a/swad_action_list.c
+++ b/swad_action_list.c
@@ -844,15 +844,14 @@ const struct Act_Actions ActLst_Actions[ActLst_NUM_ACTIONS] =
[ActReqRemRub ] = {1957,-1,TabUnk,ActSeeAllRub ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Rub_AskRemRubric ,NULL},
[ActRemRub ] = {1958,-1,TabUnk,ActSeeAllRub ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Rub_RemoveRubric ,NULL},
- [ActFrmNewRubCri ] = {1959,-1,TabUnk,ActSeeAllRub ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,RubCri_ReqCreatOrEditCriterion ,NULL},
- [ActNewRubCri ] = {1960,-1,TabUnk,ActSeeAllRub ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,RubCri_ReceiveFormCriterion ,NULL},
- [ActReqRemRubCri ] = {1961,-1,TabUnk,ActSeeAllRub ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,RubCri_ReqRemCriterion ,NULL},
- [ActRemRubCri ] = {1962,-1,TabUnk,ActSeeAllRub ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,RubCri_RemoveCriterion ,NULL},
- [ActUp_RubCri ] = {1963,-1,TabUnk,ActSeeAllRub ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,RubCri_MoveUpCriterion ,NULL},
- [ActDwnRubCri ] = {1964,-1,TabUnk,ActSeeAllRub ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,RubCri_MoveDownCriterion ,NULL},
- [ActChgTitRubCri ] = {1965,-1,TabUnk,ActSeeAllRub ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,RubCri_ChangeCriterionTitle ,NULL},
- [ActChgMinRubCri ] = {1966,-1,TabUnk,ActSeeAllRub ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,RubCri_ChangeMinValueCriterion ,NULL},
- [ActChgMaxRubCri ] = {1967,-1,TabUnk,ActSeeAllRub ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,RubCri_ChangeMaxValueCriterion ,NULL},
+ [ActNewRubCri ] = {1959,-1,TabUnk,ActSeeAllRub ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,RubCri_ReceiveFormCriterion ,NULL},
+ [ActReqRemRubCri ] = {1960,-1,TabUnk,ActSeeAllRub ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,RubCri_ReqRemCriterion ,NULL},
+ [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},
// TabFil ******************************************************************
// Actions in menu:
@@ -3843,13 +3842,12 @@ Act_Action_t ActLst_FromActCodToAction[1 + ActLst_MAX_ACTION_COD] = // Do not re
ActChgRub, // #1956
ActReqRemRub, // #1957
ActRemRub, // #1958
- ActFrmNewRubCri, // #1959
- ActNewRubCri, // #1960
- ActReqRemRubCri, // #1961
- ActRemRubCri, // #1962
- ActUp_RubCri, // #1963
- ActDwnRubCri, // #1964
- ActChgTitRubCri, // #1965
- ActChgMinRubCri, // #1966
- ActChgMaxRubCri, // #1967
+ ActNewRubCri, // #1959
+ ActReqRemRubCri, // #1960
+ ActRemRubCri, // #1961
+ ActUp_RubCri, // #1962
+ ActDwnRubCri, // #1963
+ ActChgTitRubCri, // #1964
+ ActChgMinRubCri, // #1965
+ ActChgMaxRubCri, // #1966
};
diff --git a/swad_action_list.h b/swad_action_list.h
index c1989f40..bda44e96 100644
--- a/swad_action_list.h
+++ b/swad_action_list.h
@@ -767,15 +767,14 @@
#define ActReqRemRub (ActChgCrsTT1stDay + 225)
#define ActRemRub (ActChgCrsTT1stDay + 226)
-#define ActFrmNewRubCri (ActChgCrsTT1stDay + 227)
-#define ActNewRubCri (ActChgCrsTT1stDay + 228)
-#define ActReqRemRubCri (ActChgCrsTT1stDay + 229)
-#define ActRemRubCri (ActChgCrsTT1stDay + 230)
-#define ActUp_RubCri (ActChgCrsTT1stDay + 231)
-#define ActDwnRubCri (ActChgCrsTT1stDay + 232)
-#define ActChgTitRubCri (ActChgCrsTT1stDay + 233)
-#define ActChgMinRubCri (ActChgCrsTT1stDay + 234)
-#define ActChgMaxRubCri (ActChgCrsTT1stDay + 235)
+#define ActNewRubCri (ActChgCrsTT1stDay + 227)
+#define ActReqRemRubCri (ActChgCrsTT1stDay + 228)
+#define ActRemRubCri (ActChgCrsTT1stDay + 229)
+#define ActUp_RubCri (ActChgCrsTT1stDay + 230)
+#define ActDwnRubCri (ActChgCrsTT1stDay + 231)
+#define ActChgTitRubCri (ActChgCrsTT1stDay + 232)
+#define ActChgMinRubCri (ActChgCrsTT1stDay + 233)
+#define ActChgMaxRubCri (ActChgCrsTT1stDay + 234)
/*****************************************************************************/
/******************************** Files tab **********************************/
@@ -1768,7 +1767,7 @@
#define ActLst_NUM_ACTIONS (ActChgMyTT1stDay + 1)
-#define ActLst_MAX_ACTION_COD 1967
+#define ActLst_MAX_ACTION_COD 1966
#define ActLst_DEFAULT_ACTION_AFTER_LOGIN ActSeeGblTL
diff --git a/swad_changelog.h b/swad_changelog.h
index 88b24d9a..54541852 100644
--- a/swad_changelog.h
+++ b/swad_changelog.h
@@ -629,11 +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.75 (2023-03-17)"
+#define Log_PLATFORM_VERSION "SWAD 22.76 (2023-03-17)"
#define CSS_FILE "swad22.57.1.css"
#define JS_FILE "swad22.49.js"
/*
- Version 22.75.1: Mar 17, 2023 Fixed up and down criteria. (? lines)
+ Version 22.76: Mar 17, 2023 Fixed moving rubric criteria up and down. (337585 lines)
Version 22.75: Mar 17, 2023 New module swad_rubric_criteria. (337631 lines)
Code refactoring in exams.
2 changes necessary in database:
diff --git a/swad_exam_set.c b/swad_exam_set.c
index 13b6cbf0..242c40de 100644
--- a/swad_exam_set.c
+++ b/swad_exam_set.c
@@ -154,7 +154,6 @@ void ExaSet_GetDataOfSetByCod (struct ExaSet_Set *Set)
{
MYSQL_RES *mysql_res;
MYSQL_ROW row;
- char StrSetInd[Cns_MAX_DECIMAL_DIGITS_UINT + 1];
/***** Trivial check *****/
if (Set->SetCod <= 0)
@@ -184,7 +183,6 @@ void ExaSet_GetDataOfSetByCod (struct ExaSet_Set *Set)
/* Get set index (row[2]) */
Set->SetInd = Str_ConvertStrToUnsigned (row[2]);
- snprintf (StrSetInd,sizeof (Set->SetInd),"%u",Set->SetInd);
/* Get set index (row[3]) */
Set->NumQstsToPrint = Str_ConvertStrToUnsigned (row[3]);
@@ -653,7 +651,6 @@ static void ExaSet_ListOneOrMoreSetsForEdition (struct Exa_Exams *Exams,
struct ExaSet_Set Set;
MYSQL_ROW row;
char *Anchor;
- char StrSetInd[Cns_MAX_DECIMAL_DIGITS_UINT + 1];
/***** Trivial check *****/
if (!NumSets)
@@ -687,7 +684,6 @@ static void ExaSet_ListOneOrMoreSetsForEdition (struct Exa_Exams *Exams,
/* Get set index (row[1]) */
Set.SetInd = Str_ConvertStrToUnsigned (row[1]);
- snprintf (StrSetInd,sizeof (Set.SetInd),"%u",Set.SetInd);
/* Get number of questions to exam (row[2]) */
Set.NumQstsToPrint = Str_ConvertStrToUnsigned (row[2]);
@@ -1467,7 +1463,7 @@ void ExaSet_MoveDownSet (void)
{
/* Indexes of sets to be exchanged */
SetIndBottom = Exa_DB_GetNextSetIndexInExam (Exams.Exam.ExaCod,SetIndTop);
- if (SetIndBottom == 0)
+ if (SetIndBottom == 0) // 0 means error reading from database
Err_ShowErrorAndExit ("Wrong set index.");
/* Exchange sets */
diff --git a/swad_rubric_criteria.c b/swad_rubric_criteria.c
index 62fea47c..6f914400 100644
--- a/swad_rubric_criteria.c
+++ b/swad_rubric_criteria.c
@@ -20,35 +20,26 @@
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
+/*****************************************************************************/
+/********************************* Headers ***********************************/
+/*****************************************************************************/
-#define _GNU_SOURCE // For asprintf
#include // For DBL_MAX
-#include // For PATH_MAX
-#include // For NULL
-#include // For asprintf
-#include // For free
+#include // To access MySQL databases
#include // For string functions
#include "swad_action_list.h"
+#include "swad_alert.h"
#include "swad_box.h"
#include "swad_database.h"
#include "swad_error.h"
-#include "swad_figure.h"
#include "swad_form.h"
#include "swad_global.h"
-#include "swad_HTML.h"
-#include "swad_match.h"
-#include "swad_match_result.h"
-#include "swad_pagination.h"
#include "swad_parameter.h"
#include "swad_parameter_code.h"
-#include "swad_question_database.h"
-#include "swad_role.h"
#include "swad_rubric.h"
#include "swad_rubric_criteria.h"
#include "swad_rubric_database.h"
-#include "swad_test.h"
-#include "swad_test_visibility.h"
/*****************************************************************************/
/************** External global variables from others modules ****************/
@@ -60,9 +51,6 @@ extern struct Globals Gbl;
/***************************** Private constants *****************************/
/*****************************************************************************/
-#define RubCri_MAX_SELECTED_QUESTIONS 10000
-#define RubCri_MAX_BYTES_LIST_SELECTED_QUESTIONS (RubCri_MAX_SELECTED_QUESTIONS * (Cns_MAX_DECIMAL_DIGITS_LONG + 1))
-
// Form parameters for minimum/maximum criterion values
static const char *RubCri_ParValues[RubCri_NUM_VALUES] =
{
@@ -70,10 +58,6 @@ static const char *RubCri_ParValues[RubCri_NUM_VALUES] =
[RubCri_MAX] = "MaxVal",
};
-/*****************************************************************************/
-/************************** Public types and constants ***********************/
-/*****************************************************************************/
-
/*****************************************************************************/
/***************************** Private prototypes ****************************/
/*****************************************************************************/
@@ -104,189 +88,6 @@ static void RubCri_GetAndCheckPars (struct Rub_Rubrics *Rubrics,
static void RubCri_ExchangeCriteria (long RubCod,
unsigned CriIndTop,unsigned CriIndBottom);
-/*****************************************************************************/
-/********************************* Headers ***********************************/
-/*****************************************************************************/
-
-#include // For boolean type
-#include // To access MySQL databases
-#include // For string functions
-
-#include "swad_action_list.h"
-#include "swad_box.h"
-#include "swad_button.h"
-#include "swad_database.h"
-#include "swad_error.h"
-#include "swad_form.h"
-#include "swad_parameter.h"
-#include "swad_rubric.h"
-#include "swad_rubric_criteria.h"
-#include "swad_rubric_database.h"
-
-/*****************************************************************************/
-/************** External global variables from others modules ****************/
-/*****************************************************************************/
-
-extern struct Globals Gbl;
-
-/*****************************************************************************/
-/***************************** Private prototypes ****************************/
-/*****************************************************************************/
-
-
-/*****************************************************************************/
-/********************** Initialize a new citerion to zero ********************/
-/*****************************************************************************/
-
-void RubCri_CriterionConstructor (struct RubCri_Criterion *Criterion)
- {
- Criterion->CriCod = -1L;
- }
-
-/*****************************************************************************/
-/*************** Free memory allocated for rubric criterion ******************/
-/*****************************************************************************/
-
-void RubCri_CriterionDestructor (struct RubCri_Criterion *Criterion)
- {
- Criterion->CriCod = -1L;
- }
-
-/*****************************************************************************/
-/******************* List a rubric criterion for edition *********************/
-/*****************************************************************************/
-
-void RubCri_ListCriterionForEdition (struct RubCri_Criterion *Criterion,
- unsigned CriInd,bool CriterionExists,
- const char *Anchor)
- {
- extern const char *Txt_Criterion_removed;
-
- /***** Number of criterion *****/
- HTM_TD_Begin ("class=\"RT %s\"",The_GetColorRows ());
- Lay_WriteIndex (CriInd,"BIG_INDEX");
- HTM_TD_End ();
-
- /***** Write criterion code *****/
- HTM_TD_Begin ("class=\"CT DAT_SMALL_%s %s CT\"",
- The_GetSuffix (),The_GetColorRows ());
- HTM_TxtF ("%ld ",Criterion->CriCod);
- HTM_TD_End ();
-
- /***** Write title *****/
- HTM_TD_Begin ("class=\"LT %s\"",The_GetColorRows ());
- HTM_ARTICLE_Begin (Anchor);
- if (CriterionExists)
- /* Write title */
- RubCri_WriteCriterionTitle (Criterion); // Visible
- else
- {
- HTM_SPAN_Begin ("class=\"DAT_LIGHT_%s\"",
- The_GetSuffix ());
- HTM_Txt (Txt_Criterion_removed);
- HTM_SPAN_End ();
- }
- HTM_ARTICLE_End ();
- HTM_TD_End ();
- }
-
-/*****************************************************************************/
-/***************** Put icon to add a new criterion to rubric *****************/
-/*****************************************************************************/
-
-void RubCri_PutIconToAddNewCriterion (void *Rubrics)
- {
- Ico_PutContextualIconToAdd (ActFrmNewRubCri,NULL,Rub_PutPars,Rubrics);
- }
-
-/*****************************************************************************/
-/***************** Put button to add new criteria to rubric ******************/
-/*****************************************************************************/
-
-void RubCri_PutButtonToAddNewCriterion (struct Rub_Rubrics *Rubrics)
- {
- extern const char *Txt_New_criterion;
-
- Frm_BeginForm (ActFrmNewRubCri);
- Rub_PutPars (Rubrics);
-
- Btn_PutConfirmButton (Txt_New_criterion);
-
- Frm_EndForm ();
- }
-
-/*****************************************************************************/
-/****************** Write parameter with index of criterion ******************/
-/*****************************************************************************/
-
-void RubCri_PutParCriInd (unsigned CriInd)
- {
- Par_PutParUnsigned (NULL,"CriInd",CriInd);
- }
-
-/*****************************************************************************/
-/******************* Get parameter with index of criterion *******************/
-/*****************************************************************************/
-
-unsigned RubCri_GetParCriInd (void)
- {
- long CriInd;
-
- if ((CriInd = Par_GetParLong ("CriInd")) <= 0) // In rubrics, criterion index should be 1, 2, 3...
- Err_WrongCriterionIndexExit ();
-
- return (unsigned) CriInd;
- }
-
-/*****************************************************************************/
-/************ Request the creation or edition of a rubric criterion **********/
-/*****************************************************************************/
-
-void RubCri_ReqCreatOrEditCriterion (void)
- {
- struct Rub_Rubrics Rubrics;
- struct RubCri_Criterion Criterion;
- bool ItsANewCriterion;
- char Txt[Cns_MAX_BYTES_TEXT + 1];
-
- /***** 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);
- Rubrics.CriCod = Criterion.CriCod = ParCod_GetPar (ParCod_Cri);
- ItsANewCriterion = (Criterion.CriCod <= 0);
-
- /***** Get exam data from database *****/
- Rub_GetDataOfRubricByCod (&Rubrics.Rubric);
- Rub_DB_GetRubricTxt (Rubrics.Rubric.RubCod,Txt);
-
- /***** Get rubric data *****/
- if (ItsANewCriterion)
- /* Initialize to empty rubric */
- Rub_ResetRubric (&Rubrics.Rubric);
- else
- {
- /* Get rubric data from database */
- RubCri_GetDataOfCriterionByCod (&Criterion);
- Rubrics.CriCod = Criterion.CriCod;
- }
-
- /***** Put form to edit the rubric created or updated *****/
- Rub_PutFormEditionRubric (&Rubrics,Txt,
- false); // No new rubric
- }
-
-/****************************************************************************************************************************/
-/******************************************************* Headers ************************************************************/
-/****************************************************************************************************************************/
-
/*****************************************************************************/
/*************** Put parameter to edit one rubric criterion ******************/
/*****************************************************************************/
@@ -308,7 +109,6 @@ void RubCri_GetDataOfCriterionByCod (struct RubCri_Criterion *Criterion)
{
MYSQL_RES *mysql_res;
MYSQL_ROW row;
- char StrCriInd[Cns_MAX_DECIMAL_DIGITS_UINT + 1];
RubCri_ValueRange_t ValueRange;
/***** Trivial check *****/
@@ -340,7 +140,6 @@ void RubCri_GetDataOfCriterionByCod (struct RubCri_Criterion *Criterion)
/* Get criterion index (row[2]) */
Criterion->CriInd = Str_ConvertStrToUnsigned (row[2]);
- snprintf (StrCriInd,sizeof (Criterion->CriInd),"%u",Criterion->CriInd);
/* Get criterion minimum and maximum values (row[3], row[4]) */
for (ValueRange = (RubCri_ValueRange_t) 0;
@@ -699,7 +498,6 @@ static void RubCri_ListOneOrMoreCriteriaForEdition (struct Rub_Rubrics *Rubrics,
struct RubCri_Criterion Criterion;
MYSQL_ROW row;
char *Anchor;
- char StrCriInd[Cns_MAX_DECIMAL_DIGITS_UINT + 1];
RubCri_ValueRange_t ValueRange;
/***** Trivial check *****/
@@ -735,7 +533,6 @@ static void RubCri_ListOneOrMoreCriteriaForEdition (struct Rub_Rubrics *Rubrics,
/* Get criterion index (row[1]) */
Criterion.CriInd = Str_ConvertStrToUnsigned (row[1]);
- snprintf (StrCriInd,sizeof (Criterion.CriInd),"%u",Criterion.CriInd);
/* Get minimum value (row[2]) and maximum value (row[3]) */
for (ValueRange = (RubCri_ValueRange_t) 0;
@@ -1071,7 +868,7 @@ void RubCri_MoveDownCriterion (void)
{
/* Indexes of criteria to be exchanged */
CriIndBottom = Rub_DB_GetNextCriterionIndexInRubric (Rubrics.Rubric.RubCod,CriIndTop);
- if (CriIndBottom == 0)
+ if (CriIndBottom == 0) // 0 means error reading from database
Err_ShowErrorAndExit ("Wrong criterion index.");
/* Exchange criteria */
@@ -1152,33 +949,3 @@ static void RubCri_ExchangeCriteria (long RubCod,
/***** Unlock table *****/
DB_UnlockTables ();
}
-
-/*****************************************************************************/
-/********************** Show title of rubric criterion ***********************/
-/*****************************************************************************/
-
-void RubCri_WriteCriterionTitle (const struct RubCri_Criterion *Criterion)
- {
- RubCri_ValueRange_t ValueRange;
-
- /***** Begin table *****/
- HTM_TABLE_BeginWide ();
-
- /***** Title *****/
- HTM_TD_Begin ("class=\"CRI_TITLE\"");
- HTM_Txt (Criterion->Title);
- HTM_TD_End ();
-
- /***** Minimum and maximum values *****/
- for (ValueRange = (RubCri_ValueRange_t) 0;
- ValueRange <= (RubCri_ValueRange_t) (RubCri_NUM_VALUES - 1);
- ValueRange++)
- {
- HTM_TD_Begin ("class=\"CRI_VALUE\"");
- HTM_Double (Criterion->Values[ValueRange]);
- HTM_TD_End ();
- }
-
- /***** End table *****/
- HTM_TABLE_End ();
- }
diff --git a/swad_rubric_criteria.h b/swad_rubric_criteria.h
index 9a1f326b..5abdd34d 100644
--- a/swad_rubric_criteria.h
+++ b/swad_rubric_criteria.h
@@ -33,25 +33,6 @@
/***************************** Public prototypes *****************************/
/*****************************************************************************/
-void RubCri_CriterionConstructor (struct RubCri_Criterion *Criterion);
-void RubCri_CriterionDestructor (struct RubCri_Criterion *Criterion);
-
-void RubCri_ListCriterionForEdition (struct RubCri_Criterion *Criterion,
- unsigned CriInd,bool CriterionExists,
- const char *Anchor);
-
-void RubCri_PutIconToAddNewCriterion (void *Rubrics);
-void RubCri_PutButtonToAddNewCriterion (struct Rub_Rubrics *Rubrics);
-
-void RubCri_PutParCriInd (unsigned CriInd);
-unsigned RubCri_GetParCriInd (void);
-
-void RubCri_ReqCreatOrEditCriterion (void);
-
-/*****************************************************************************/
-/***************************** Public prototypes *****************************/
-/*****************************************************************************/
-
void RubCri_GetDataOfCriterionByCod (struct RubCri_Criterion *Criterion);
void RubCri_ReceiveFormCriterion (void);
@@ -70,6 +51,4 @@ void RubCri_RemoveCriterion (void);
void RubCri_MoveUpCriterion (void);
void RubCri_MoveDownCriterion (void);
-void RubCri_WriteCriterionTitle (const struct RubCri_Criterion *Criterion);
-
#endif
diff --git a/swad_rubric_database.c b/swad_rubric_database.c
index 767691ea..73b658d4 100644
--- a/swad_rubric_database.c
+++ b/swad_rubric_database.c
@@ -426,16 +426,16 @@ void Rub_DB_UpdateCriteriaIndexesInRubricGreaterThan (long RubCod,unsigned CriIn
/****************** Change index of a criterion in a rubric ******************/
/*****************************************************************************/
-void Rub_DB_UpdateCriterionIndex (long CriInd,long RubCod,long CriCod)
+void Rub_DB_UpdateCriterionIndex (long CriInd,long CriCod,long RubCod)
{
DB_QueryUPDATE ("can not exchange indexes of criteria",
"UPDATE rub_criteria"
" SET CriInd=%ld"
- " WHERE RubCod=%ld"
- " AND CriCod=%ld",
+ " WHERE CriCod=%ld"
+ " AND RubCod=%ld", // Extra check
CriInd,
- RubCod,
- CriCod);
+ CriCod,
+ RubCod);
}
/*****************************************************************************/
diff --git a/swad_rubric_database.h b/swad_rubric_database.h
index 23055f29..349e8ca8 100644
--- a/swad_rubric_database.h
+++ b/swad_rubric_database.h
@@ -60,7 +60,7 @@ void Rub_DB_UpdateCriterionTitle (long CriCod,long RubCod,
void Rub_DB_UpdateCriterionValue (long CriCod,long RubCod,
RubCri_ValueRange_t ValueRange,double Value);
void Rub_DB_UpdateCriteriaIndexesInRubricGreaterThan (long RubCod,unsigned CriInd);
-void Rub_DB_UpdateCriterionIndex (long CriInd,long RubCod,long CriCod);
+void Rub_DB_UpdateCriterionIndex (long CriInd,long CriCod,long RubCod);
void Rub_DB_LockTable (void);
unsigned Rub_DB_GetNumCriteriaInRubric (long RubCod);
diff --git a/swad_text_action.c b/swad_text_action.c
index 768ba109..63c70fce 100644
--- a/swad_text_action.c
+++ b/swad_text_action.c
@@ -14046,27 +14046,188 @@ const char *Txt_Actions[ActLst_NUM_ACTIONS] =
"Remove rubric" // Çeviri lazim!
#endif
,
- [ActFrmNewRubCri] =
+ [ActNewRubCri] =
#if L==1 // ca
- "Edit new rubric criterion" // Necessita traducció
+ "Create new rubric criterion" // Necessita traducció
#elif L==2 // de
- "Edit new rubric criterion" // Need Übersetzung
+ "Create new rubric criterion" // Need Übersetzung
#elif L==3 // en
- "Edit new rubric criterion"
+ "Create new rubric criterion"
#elif L==4 // es
- "Editar nuevo criterio de rúbrica"
+ "Crear nuevo criterio de rúbrica"
#elif L==5 // fr
- "Edit new rubric criterion" // Besoin de traduction
+ "Create new rubric criterion" // Besoin de traduction
#elif L==6 // gn
- "Editar nuevo criterio de rúbrica" // Okoteve traducción
+ "Crear nuevo criterio de rúbrica" // Okoteve traducción
#elif L==7 // it
- "Edit new rubric criterion" // Bisogno di traduzione
+ "Create new rubric criterion" // Bisogno di traduzione
#elif L==8 // pl
- "Edit new rubric criterion" // Potrzebujesz tlumaczenie
+ "Create new rubric criterion" // Potrzebujesz tlumaczenie
#elif L==9 // pt
- "Edit new rubric criterion" // Precisa de tradução
+ "Create new rubric criterion" // Precisa de tradução
#elif L==10 // tr
- "Edit new rubric criterion" // Çeviri lazim!
+ "Create new rubric criterion" // Çeviri lazim!
+#endif
+ ,
+ [ActReqRemRubCri] =
+#if L==1 // ca
+ "Request rubric criterion removal" // Necessita traducció
+#elif L==2 // de
+ "Request rubric criterion removal" // Need Übersetzung
+#elif L==3 // en
+ "Request rubric criterion removal"
+#elif L==4 // es
+ "Solicitar eliminación de criterio de rúbrica"
+#elif L==5 // fr
+ "Request rubric criterion removal" // Besoin de traduction
+#elif L==6 // gn
+ "Solicitar eliminación de criterio de rúbrica" // Okoteve traducción
+#elif L==7 // it
+ "Request rubric criterion removal" // Bisogno di traduzione
+#elif L==8 // pl
+ "Request rubric criterion removal" // Potrzebujesz tlumaczenie
+#elif L==9 // pt
+ "Request rubric criterion removal" // Precisa de tradução
+#elif L==10 // tr
+ "Request rubric criterion removal" // Çeviri lazim!
+#endif
+ ,
+ [ActRemRubCri] =
+#if L==1 // ca
+ "Remove rubric criterion" // Necessita traducció
+#elif L==2 // de
+ "Remove rubric criterion" // Need Übersetzung
+#elif L==3 // en
+ "Remove rubric criterion"
+#elif L==4 // es
+ "Eliminar criterio de rúbrica"
+#elif L==5 // fr
+ "Remove rubric criterion" // Besoin de traduction
+#elif L==6 // gn
+ "Eliminar criterio de rúbrica" // Okoteve traducción
+#elif L==7 // it
+ "Remove rubric criterion" // Bisogno di traduzione
+#elif L==8 // pl
+ "Remove rubric criterion" // Potrzebujesz tlumaczenie
+#elif L==9 // pt
+ "Remove rubric criterion" // Precisa de tradução
+#elif L==10 // tr
+ "Remove rubric criterion" // Çeviri lazim!
+#endif
+ ,
+ [ActUp_RubCri] =
+#if L==1 // ca
+ "Move up rubric criterion" // Necessita traducció
+#elif L==2 // de
+ "Move up rubric criterion" // Need Übersetzung
+#elif L==3 // en
+ "Move up rubric criterion"
+#elif L==4 // es
+ "Mover hacia arriba criterio de rúbrica"
+#elif L==5 // fr
+ "Move up rubric criterion" // Besoin de traduction
+#elif L==6 // gn
+ "Mover hacia arriba criterio de rúbrica" // Okoteve traducción
+#elif L==7 // it
+ "Move up rubric criterion" // Bisogno di traduzione
+#elif L==8 // pl
+ "Move up rubric criterion" // Potrzebujesz tlumaczenie
+#elif L==9 // pt
+ "Move up rubric criterion" // Precisa de tradução
+#elif L==10 // tr
+ "Move up rubric criterion" // Çeviri lazim!
+#endif
+ ,
+ [ActDwnRubCri] =
+#if L==1 // ca
+ "Move down rubric criterion" // Necessita traducció
+#elif L==2 // de
+ "Move down rubric criterion" // Need Übersetzung
+#elif L==3 // en
+ "Move down rubric criterion"
+#elif L==4 // es
+ "Mover hacia abajo criterio de rúbrica"
+#elif L==5 // fr
+ "Move down rubric criterion" // Besoin de traduction
+#elif L==6 // gn
+ "Mover hacia abajo criterio de rúbrica" // Okoteve traducción
+#elif L==7 // it
+ "Move down rubric criterion" // Bisogno di traduzione
+#elif L==8 // pl
+ "Move down rubric criterion" // Potrzebujesz tlumaczenie
+#elif L==9 // pt
+ "Move down rubric criterion" // Precisa de tradução
+#elif L==10 // tr
+ "Move down rubric criterion" // Çeviri lazim!
+#endif
+ ,
+ [ActChgTitRubCri] =
+#if L==1 // ca
+ "Change rubric criterion title" // Necessita traducció
+#elif L==2 // de
+ "Change rubric criterion title" // Need Übersetzung
+#elif L==3 // en
+ "Change rubric criterion title"
+#elif L==4 // es
+ "Cambiar título de criterio de rúbrica"
+#elif L==5 // fr
+ "Change rubric criterion title" // Besoin de traduction
+#elif L==6 // gn
+ "Cambiar título de criterio de rúbrica" // Okoteve traducción
+#elif L==7 // it
+ "Change rubric criterion title" // Bisogno di traduzione
+#elif L==8 // pl
+ "Change rubric criterion title" // Potrzebujesz tlumaczenie
+#elif L==9 // pt
+ "Change rubric criterion title" // Precisa de tradução
+#elif L==10 // tr
+ "Change rubric criterion title" // Çeviri lazim!
+#endif
+ ,
+ [ActChgMinRubCri] =
+#if L==1 // ca
+ "Change minimum value of rubric criterion" // Necessita traducció
+#elif L==2 // de
+ "Change minimum value of rubric criterion" // Need Übersetzung
+#elif L==3 // en
+ "Change minimum value of rubric criterion"
+#elif L==4 // es
+ "Cambiar valor mínimo de criterio de rúbrica"
+#elif L==5 // fr
+ "Change minimum value of rubric criterion" // Besoin de traduction
+#elif L==6 // gn
+ "Cambiar valor mínimo de criterio de rúbrica" // Okoteve traducción
+#elif L==7 // it
+ "Change minimum value of rubric criterion" // Bisogno di traduzione
+#elif L==8 // pl
+ "Change minimum value of rubric criterion" // Potrzebujesz tlumaczenie
+#elif L==9 // pt
+ "Change minimum value of rubric criterion" // Precisa de tradução
+#elif L==10 // tr
+ "Change minimum value of rubric criterion" // Çeviri lazim!
+#endif
+ ,
+ [ActChgMaxRubCri] =
+#if L==1 // ca
+ "Change maximum value of rubric criterion" // Necessita traducció
+#elif L==2 // de
+ "Change maximum value of rubric criterion" // Need Übersetzung
+#elif L==3 // en
+ "Change maximum value of rubric criterion"
+#elif L==4 // es
+ "Cambiar valor máximo de criterio de rúbrica"
+#elif L==5 // fr
+ "Change maximum value of rubric criterion" // Besoin de traduction
+#elif L==6 // gn
+ "Cambiar valor máximo de criterio de rúbrica" // Okoteve traducción
+#elif L==7 // it
+ "Change maximum value of rubric criterion" // Bisogno di traduzione
+#elif L==8 // pl
+ "Change maximum value of rubric criterion" // Potrzebujesz tlumaczenie
+#elif L==9 // pt
+ "Change maximum value of rubric criterion" // Precisa de tradução
+#elif L==10 // tr
+ "Change maximum value of rubric criterion" // Çeviri lazim!
#endif
,
[ActSeeAdmDocIns] =