Version 22.76: Mar 17, 2023 Fixed moving rubric criteria up and down.

This commit is contained in:
acanas 2023-03-17 22:23:54 +01:00
parent c4b5199fb7
commit 09bfa8fb79
9 changed files with 212 additions and 312 deletions

View File

@ -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
};

View File

@ -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

View File

@ -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:

View File

@ -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 */

View File

@ -20,35 +20,26 @@
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/*****************************************************************************/
/********************************* Headers ***********************************/
/*****************************************************************************/
#define _GNU_SOURCE // For asprintf
#include <float.h> // For DBL_MAX
#include <linux/limits.h> // For PATH_MAX
#include <stddef.h> // For NULL
#include <stdio.h> // For asprintf
#include <stdlib.h> // For free
#include <mysql/mysql.h> // To access MySQL databases
#include <string.h> // 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 <stdbool.h> // For boolean type
#include <mysql/mysql.h> // To access MySQL databases
#include <string.h> // 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&nbsp;",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 ();
}

View File

@ -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

View File

@ -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);
}
/*****************************************************************************/

View File

@ -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);

View File

@ -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&uacute;brica"
"Crear nuevo criterio de r&uacute;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&uacute;brica" // Okoteve traducción
"Crear nuevo criterio de r&uacute;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&oacute;n de criterio de r&uacute;brica"
#elif L==5 // fr
"Request rubric criterion removal" // Besoin de traduction
#elif L==6 // gn
"Solicitar eliminaci&oacute;n de criterio de r&uacute;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&uacute;brica"
#elif L==5 // fr
"Remove rubric criterion" // Besoin de traduction
#elif L==6 // gn
"Eliminar criterio de r&uacute;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&uacute;brica"
#elif L==5 // fr
"Move up rubric criterion" // Besoin de traduction
#elif L==6 // gn
"Mover hacia arriba criterio de r&uacute;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&uacute;brica"
#elif L==5 // fr
"Move down rubric criterion" // Besoin de traduction
#elif L==6 // gn
"Mover hacia abajo criterio de r&uacute;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&iacute;tulo de criterio de r&uacute;brica"
#elif L==5 // fr
"Change rubric criterion title" // Besoin de traduction
#elif L==6 // gn
"Cambiar t&iacute;tulo de criterio de r&uacute;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&iacute;nimo de criterio de r&uacute;brica"
#elif L==5 // fr
"Change minimum value of rubric criterion" // Besoin de traduction
#elif L==6 // gn
"Cambiar valor m&iacute;nimo de criterio de r&uacute;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&aacute;ximo de criterio de r&uacute;brica"
#elif L==5 // fr
"Change maximum value of rubric criterion" // Besoin de traduction
#elif L==6 // gn
"Cambiar valor m&aacute;ximo de criterio de r&uacute;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] =