mirror of https://github.com/acanas/swad-core.git
Version 22.83.1: Mar 27, 2023 Changes in rubric criteria.
This commit is contained in:
parent
9c436403ff
commit
c74c6e2f3e
|
@ -852,7 +852,8 @@ const struct Act_Actions ActLst_Actions[ActLst_NUM_ACTIONS] =
|
|||
[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_ChangeTitle ,NULL},
|
||||
[ActChgSrcRubCri ] = {1968,-1,TabUnk,ActSeeAllRub ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,RubCri_ChangeType ,NULL},
|
||||
[ActChgTypRubCri ] = {1968,-1,TabUnk,ActSeeAllRub ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,RubCri_ChangeType ,NULL},
|
||||
[ActChgLnkRubCri ] = {1970,-1,TabUnk,ActSeeAllRub ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,RubCri_ChangeLink ,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},
|
||||
|
@ -3855,6 +3856,7 @@ Act_Action_t ActLst_FromActCodToAction[1 + ActLst_MAX_ACTION_COD] = // Do not re
|
|||
ActChgMinRubCri, // #1965
|
||||
ActChgMaxRubCri, // #1966
|
||||
ActChgWeiRubCri, // #1967
|
||||
ActChgSrcRubCri, // #1968
|
||||
ActChgTypRubCri, // #1968
|
||||
ActReqLnkRub, // #1969
|
||||
ActChgLnkRubCri, // #1970
|
||||
};
|
||||
|
|
|
@ -774,10 +774,11 @@
|
|||
#define ActUp_RubCri (ActChgCrsTT1stDay + 231)
|
||||
#define ActDwnRubCri (ActChgCrsTT1stDay + 232)
|
||||
#define ActChgTitRubCri (ActChgCrsTT1stDay + 233)
|
||||
#define ActChgSrcRubCri (ActChgCrsTT1stDay + 234)
|
||||
#define ActChgMinRubCri (ActChgCrsTT1stDay + 235)
|
||||
#define ActChgMaxRubCri (ActChgCrsTT1stDay + 236)
|
||||
#define ActChgWeiRubCri (ActChgCrsTT1stDay + 237)
|
||||
#define ActChgTypRubCri (ActChgCrsTT1stDay + 234)
|
||||
#define ActChgLnkRubCri (ActChgCrsTT1stDay + 235)
|
||||
#define ActChgMinRubCri (ActChgCrsTT1stDay + 236)
|
||||
#define ActChgMaxRubCri (ActChgCrsTT1stDay + 237)
|
||||
#define ActChgWeiRubCri (ActChgCrsTT1stDay + 238)
|
||||
|
||||
/*****************************************************************************/
|
||||
/******************************** Files tab **********************************/
|
||||
|
@ -1770,7 +1771,7 @@
|
|||
|
||||
#define ActLst_NUM_ACTIONS (ActChgMyTT1stDay + 1)
|
||||
|
||||
#define ActLst_MAX_ACTION_COD 1969
|
||||
#define ActLst_MAX_ACTION_COD 1970
|
||||
|
||||
#define ActLst_DEFAULT_ACTION_AFTER_LOGIN ActSeeGblTL
|
||||
|
||||
|
|
|
@ -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.83 (2023-03-27)"
|
||||
#define Log_PLATFORM_VERSION "SWAD 22.83.1 (2023-03-27)"
|
||||
#define CSS_FILE "swad22.78.15.css"
|
||||
#define JS_FILE "swad22.49.js"
|
||||
/*
|
||||
Version 22.83.1: Mar 27, 2023 Changes in rubric criteria. (338297 lines)
|
||||
Version 22.83: Mar 27, 2023 New module swad_resource_database. (338208 lines)
|
||||
1 change necessary in database:
|
||||
RENAME TABLE prg_clipboards TO rsc_clipboards;
|
||||
|
|
|
@ -97,9 +97,12 @@ static void RubCri_GetAndCheckPars (struct Rub_Rubrics *Rubrics,
|
|||
static void RubCri_ExchangeCriteria (long RubCod,
|
||||
unsigned CriIndTop,unsigned CriIndBottom);
|
||||
|
||||
static void RubCri_ShowResource (const struct RubCri_Criterion *Criterion,
|
||||
static void RubCri_ShowResource (struct Rub_Rubrics *Rubrics,
|
||||
const struct RubCri_Criterion *Criterion,
|
||||
bool Editing,const char *Anchor);
|
||||
static void RubCri_ShowClipboard (const struct RubCri_Criterion *Criterion,const char *Anchor);
|
||||
static void RubCri_ShowClipboard (struct Rub_Rubrics *Rubrics,
|
||||
const struct RubCri_Criterion *Criterion,
|
||||
const char *Anchor);
|
||||
|
||||
/*****************************************************************************/
|
||||
/*************** Put parameter to edit one rubric criterion ******************/
|
||||
|
@ -193,7 +196,7 @@ 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,
|
||||
"name=\"Source\" class=\"INPUT_%s\"",
|
||||
"name=\"Type\" class=\"INPUT_%s\"",
|
||||
The_GetSuffix ());
|
||||
for (Type = (Rsc_Type_t) 0;
|
||||
Type <= (Rsc_Type_t) (Rsc_NUM_TYPES - 1);
|
||||
|
@ -592,7 +595,7 @@ void RubCri_ListCriteria (struct Rub_Rubrics *Rubrics,
|
|||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/********************** List rubric criteria for edition **********************/
|
||||
/********************** List rubric criteria for edition *********************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void RubCri_ListOneOrMoreCriteriaForEdition (struct Rub_Rubrics *Rubrics,
|
||||
|
@ -712,10 +715,10 @@ static void RubCri_ListOneOrMoreCriteriaForEdition (struct Rub_Rubrics *Rubrics,
|
|||
/***** Source *****/
|
||||
HTM_TD_Begin ("class=\"LT %s\"",The_GetColorRows ());
|
||||
/* Type of source selector */
|
||||
Frm_BeginFormAnchor (ActChgSrcRubCri,Anchor);
|
||||
Frm_BeginFormAnchor (ActChgTypRubCri,Anchor);
|
||||
RubCri_PutParsOneCriterion (Rubrics);
|
||||
HTM_SELECT_Begin (HTM_SUBMIT_ON_CHANGE,
|
||||
"name=\"Source\" class=\"INPUT_%s\"",
|
||||
"name=\"Type\" class=\"INPUT_%s\"",
|
||||
The_GetSuffix ());
|
||||
for (Type = (Rsc_Type_t) 0;
|
||||
Type <= (Rsc_Type_t) (Rsc_NUM_TYPES - 1);
|
||||
|
@ -732,7 +735,7 @@ static void RubCri_ListOneOrMoreCriteriaForEdition (struct Rub_Rubrics *Rubrics,
|
|||
HTM_BR ();
|
||||
|
||||
/* Resource */
|
||||
RubCri_ShowResource (&Criterion,
|
||||
RubCri_ShowResource (Rubrics,&Criterion,
|
||||
true,Anchor); // Editing
|
||||
HTM_TD_End ();
|
||||
|
||||
|
@ -1155,17 +1158,15 @@ static void RubCri_ExchangeCriteria (long RubCod,
|
|||
/************************** Show criterion resource **************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void RubCri_ShowResource (const struct RubCri_Criterion *Criterion,
|
||||
static void RubCri_ShowResource (struct Rub_Rubrics *Rubrics,
|
||||
const struct RubCri_Criterion *Criterion,
|
||||
bool Editing,const char *Anchor)
|
||||
{
|
||||
extern const char *Rsc_ResourceTypesIcons[Rsc_NUM_TYPES];
|
||||
extern const char *Txt_RESOURCE_TYPES[Rsc_NUM_TYPES];
|
||||
|
||||
return; // TODO: Provisional. Remove!
|
||||
|
||||
// TODO
|
||||
if (Editing)
|
||||
RubCri_ShowClipboard (Criterion,Anchor);
|
||||
RubCri_ShowClipboard (Rubrics,Criterion,Anchor);
|
||||
else
|
||||
Rsc_WriteLinkName (&Criterion->Link,
|
||||
true, // Put form
|
||||
|
@ -1177,28 +1178,28 @@ static void RubCri_ShowResource (const struct RubCri_Criterion *Criterion,
|
|||
/***************** Show clipboard to change resource link ********************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void RubCri_ShowClipboard (const struct RubCri_Criterion *Criterion,const char *Anchor)
|
||||
static void RubCri_ShowClipboard (struct Rub_Rubrics *Rubrics,
|
||||
const struct RubCri_Criterion *Criterion,
|
||||
const char *Anchor)
|
||||
{
|
||||
MYSQL_RES *mysql_res;
|
||||
unsigned NumLink;
|
||||
unsigned NumLinks;
|
||||
struct Rsc_Link Link;
|
||||
/*
|
||||
static const struct PrgRsc_Link EmptyLink =
|
||||
static const struct Rsc_Link EmptyLink =
|
||||
{
|
||||
.Type = PrgRsc_NONE,
|
||||
.Type = Rsc_NONE,
|
||||
.Cod = -1L,
|
||||
}; */
|
||||
};
|
||||
|
||||
/***** Begin form *****/
|
||||
Frm_BeginFormAnchor (ActChgLnkPrgRsc,Anchor);
|
||||
/*
|
||||
if (Item->Resource.Hierarchy.RscCod > 0)
|
||||
ParCod_PutPar (ParCod_Rsc,Item->Resource.Hierarchy.RscCod);
|
||||
else
|
||||
* No resource selected, so it's a new resource at the end of the item *
|
||||
ParCod_PutPar (ParCod_Itm,Item->Hierarchy.ItmCod);
|
||||
*/
|
||||
Frm_BeginFormAnchor (ActChgLnkRubCri,Anchor);
|
||||
RubCri_PutParsOneCriterion (Rubrics);
|
||||
if (Criterion->CriCod > 0)
|
||||
ParCod_PutPar (ParCod_Cri,Criterion->CriCod);
|
||||
// else
|
||||
/* No resource selected, so it's a new resource at the end of the item */
|
||||
// ParCod_PutPar (ParCod_Itm,Item->Hierarchy.ItmCod);
|
||||
|
||||
/***** Begin list *****/
|
||||
HTM_UL_Begin ("class=\"PRG_CLIPBOARD\"");
|
||||
|
@ -1207,9 +1208,8 @@ static void RubCri_ShowClipboard (const struct RubCri_Criterion *Criterion,const
|
|||
Rsc_WriteRowClipboard (false,&Criterion->Link);
|
||||
|
||||
/***** Row with empty link to remove the current link *****/
|
||||
/*
|
||||
if (Criterion->Source != RubCri_FROM_TEACHER)
|
||||
RubCri_WriteRowClipboard (true,&EmptyLink); */
|
||||
if (Criterion->Link.Type != Rsc_NONE)
|
||||
Rsc_WriteRowClipboard (true,&EmptyLink);
|
||||
|
||||
/***** Get links in clipboard from database and write them *****/
|
||||
NumLinks = Rsc_DB_GetClipboard (&mysql_res);
|
||||
|
@ -1228,3 +1228,58 @@ static void RubCri_ShowClipboard (const struct RubCri_Criterion *Criterion,const
|
|||
/***** End form *****/
|
||||
Frm_EndForm ();
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/***************** Show clipboard to change resource link ********************/
|
||||
/*****************************************************************************/
|
||||
|
||||
void RubCri_ChangeLink (void)
|
||||
{
|
||||
struct Rub_Rubrics Rubrics;
|
||||
struct RubCri_Criterion Criterion;
|
||||
char TypeCod[3 + 1 + Cns_MAX_DECIMAL_DIGITS_LONG + 1];
|
||||
char TypeStr[3 + 1];
|
||||
long Cod;
|
||||
|
||||
/***** Reset rubrics context *****/
|
||||
Rub_ResetRubrics (&Rubrics);
|
||||
Rub_ResetRubric (&Rubrics.Rubric);
|
||||
RubCri_ResetCriterion (&Criterion);
|
||||
|
||||
/***** Get and check parameters *****/
|
||||
RubCri_GetAndCheckPars (&Rubrics,&Criterion);
|
||||
|
||||
/***** Check if rubric is editable *****/
|
||||
if (!Rub_CheckIfEditable (&Rubrics.Rubric))
|
||||
Err_NoPermissionExit ();
|
||||
|
||||
/***** Get link type and code *****/
|
||||
Par_GetParText ("Link",TypeCod,sizeof (TypeCod) - 1);
|
||||
if (sscanf (TypeCod,"%3s_%ld",TypeStr,&Cod) == 2)
|
||||
{
|
||||
Criterion.Link.Type = Rsc_GetTypeFromString (TypeStr);
|
||||
Criterion.Link.Cod = Cod;
|
||||
|
||||
/***** Is it an existing resource? *****/
|
||||
// if (Criterion.CriCod <= 0)
|
||||
//{
|
||||
/* No resource selected, so it's a new resource at the end of the item */
|
||||
/* Get the new title for the new resource from link title */
|
||||
//Rsc_GetResourceTitleFromLink (&Item.Resource.Link,
|
||||
// Item.Resource.Title);
|
||||
|
||||
/***** Create resource *****/
|
||||
// Item.Resource.Hierarchy.RscCod = Prg_DB_CreateResource (&Item);
|
||||
//}
|
||||
|
||||
/***** Update link to resource in criterion *****/
|
||||
Rub_DB_UpdateCriterionLink (&Criterion);
|
||||
|
||||
/***** Remove link from clipboard *****/
|
||||
Rsc_DB_RemoveLinkFromClipboard (&Criterion.Link);
|
||||
}
|
||||
|
||||
/***** Show current rubric and its criteria *****/
|
||||
Rub_PutFormsOneRubric (&Rubrics,&Criterion,
|
||||
Rub_EXISTING_RUBRIC); // It's not a new rubric
|
||||
}
|
||||
|
|
|
@ -53,4 +53,6 @@ void RubCri_RemoveCriterion (void);
|
|||
void RubCri_MoveUpCriterion (void);
|
||||
void RubCri_MoveDownCriterion (void);
|
||||
|
||||
void RubCri_ChangeLink (void);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -358,7 +358,7 @@ long Rub_DB_CreateCriterion (const struct RubCri_Criterion *Criterion)
|
|||
CriCod =
|
||||
DB_QueryINSERTandReturnCode ("can not create new criterion",
|
||||
"INSERT INTO rub_criteria"
|
||||
" (RubCod,CriInd,Source,Cod,%s,%s,Weight,Title)"
|
||||
" (RubCod,CriInd,Type,Cod,%s,%s,Weight,Title)"
|
||||
" VALUES"
|
||||
" (%ld,%u,'%s',%ld,%.15lg,%.15lg,%.15lg,'%s')",
|
||||
RubCri_ValuesFields[RubCri_MIN],
|
||||
|
@ -402,7 +402,7 @@ void Rub_DB_UpdateCriterionType (const struct RubCri_Criterion *Criterion)
|
|||
|
||||
DB_QueryUPDATE ("can not update the value of a criterion",
|
||||
"UPDATE rub_criteria"
|
||||
" SET Source='%s'"
|
||||
" SET Type='%s'"
|
||||
" WHERE CriCod=%ld"
|
||||
" AND RubCod=%ld", // Extra check
|
||||
Rsc_ResourceTypesDB[Criterion->Link.Type],
|
||||
|
@ -478,6 +478,24 @@ void Rub_DB_UpdateCriterionIndex (long CriInd,long CriCod,long RubCod)
|
|||
RubCod);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/******** Update the link to a resource in a criterion given its code ********/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Rub_DB_UpdateCriterionLink (const struct RubCri_Criterion *Criterion)
|
||||
{
|
||||
extern const char *Rsc_ResourceTypesDB[Rsc_NUM_TYPES];
|
||||
|
||||
DB_QueryUPDATE ("can not update link of criterion",
|
||||
"UPDATE rub_criteria"
|
||||
" SET Type='%s',"
|
||||
"Cod=%ld"
|
||||
" WHERE CriCod=%ld",
|
||||
Rsc_ResourceTypesDB[Criterion->Link.Type],
|
||||
Criterion->Link.Cod,
|
||||
Criterion->CriCod);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/************ Lock table to make the exchange of criteria atomic ***********/
|
||||
/*****************************************************************************/
|
||||
|
@ -609,7 +627,7 @@ unsigned Rub_DB_GetCriteria (MYSQL_RES **mysql_res,long RubCod)
|
|||
"SELECT CriCod," // row[0]
|
||||
"RubCod," // row[1]
|
||||
"CriInd," // row[2]
|
||||
"Source," // row[3]
|
||||
"Type," // row[3]
|
||||
"Cod," // row[4]
|
||||
"%s," // row[5]
|
||||
"%s," // row[6]
|
||||
|
@ -634,7 +652,7 @@ unsigned Rub_DB_GetCriterionDataByCod (MYSQL_RES **mysql_res,long CriCod)
|
|||
"SELECT CriCod," // row[0]
|
||||
"RubCod," // row[1]
|
||||
"CriInd," // row[2]
|
||||
"Source," // row[3]
|
||||
"Type," // row[3]
|
||||
"Cod," // row[4]
|
||||
"%s," // row[5]
|
||||
"%s," // row[6]
|
||||
|
|
|
@ -62,6 +62,7 @@ void Rub_DB_UpdateCriterionValue (const struct RubCri_Criterion *Criterion,
|
|||
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_UpdateCriterionLink (const struct RubCri_Criterion *Criterion);
|
||||
void Rub_DB_LockTable (void);
|
||||
|
||||
unsigned Rub_DB_GetNumCriteriaInRubric (long RubCod);
|
||||
|
|
|
@ -6412,25 +6412,25 @@ const char *Txt_Actions[ActLst_NUM_ACTIONS] =
|
|||
,
|
||||
[ActChgLnkPrgRsc] =
|
||||
#if L==1 // ca
|
||||
"Change resource link" // Necessita traducció
|
||||
"Canviar enllaç a recurs des del programa"
|
||||
#elif L==2 // de
|
||||
"Change resource link" // Need Übersetzung
|
||||
"Ändern Sie den Link zur Ressource aus dem Programm"
|
||||
#elif L==3 // en
|
||||
"Change resource link"
|
||||
"Change link to resource from the program"
|
||||
#elif L==4 // es
|
||||
"Cambiar enlace de recurso"
|
||||
"Cambiar enlace a recurso desde el programa"
|
||||
#elif L==5 // fr
|
||||
"Change resource link" // Besoin de traduction
|
||||
"Modifier le lien vers la ressource du programme"
|
||||
#elif L==6 // gn
|
||||
"Cambiar enlace de recurso" // Okoteve traducción
|
||||
"Emoambue enlace recurso-pe programa-gui"
|
||||
#elif L==7 // it
|
||||
"Change resource link" // Bisogno di traduzione
|
||||
"Modificare il collegamento alla risorsa dal programma"
|
||||
#elif L==8 // pl
|
||||
"Change resource link" // Potrzebujesz tlumaczenie
|
||||
"Zmień link do zasobu z programu"
|
||||
#elif L==9 // pt
|
||||
"Change resource link" // Precisa de tradução
|
||||
"Alterar link para recurso do programa"
|
||||
#elif L==10 // tr
|
||||
"Change resource link" // Çeviri lazim!
|
||||
"Programdan kaynağa bağlantıyı değiştir"
|
||||
#endif
|
||||
,
|
||||
[ActEdiTchGui] =
|
||||
|
@ -14207,7 +14207,7 @@ const char *Txt_Actions[ActLst_NUM_ACTIONS] =
|
|||
"Puan anahtarı ölçüt başlığını değiştir" // Çeviri lazim!
|
||||
#endif
|
||||
,
|
||||
[ActChgSrcRubCri] =
|
||||
[ActChgTypRubCri] =
|
||||
#if L==1 // ca
|
||||
"Canviar font de criteri de rúbrica"
|
||||
#elif L==2 // de
|
||||
|
@ -14228,6 +14228,29 @@ const char *Txt_Actions[ActLst_NUM_ACTIONS] =
|
|||
"Alterar origem do critério de rubrica"
|
||||
#elif L==10 // tr
|
||||
"Puan anahtarı ölçüt yazı tipini değiştir"
|
||||
#endif
|
||||
,
|
||||
[ActChgLnkRubCri] =
|
||||
#if L==1 // ca
|
||||
"Canviar enllaç a recurs des de rúbrica"
|
||||
#elif L==2 // de
|
||||
"Link zu Ressource aus Rubrik ändern"
|
||||
#elif L==3 // en
|
||||
"Change link to resource from rubric"
|
||||
#elif L==4 // es
|
||||
"Cambiar enlace a recurso desde rúbrica"
|
||||
#elif L==5 // fr
|
||||
"Modifier lien vers ressource à partir de rubrique"
|
||||
#elif L==6 // gn
|
||||
"Omoambue enlace recurso-pe rúbrica-gui"
|
||||
#elif L==7 // it
|
||||
"Modificare il collegamento alla risorsa dalla rubrica"
|
||||
#elif L==8 // pl
|
||||
"Zmień link do zasobu z rubryki"
|
||||
#elif L==9 // pt
|
||||
"Alterar link para recurso da rubrica"
|
||||
#elif L==10 // tr
|
||||
"Puan anahtarından kaynağa bağlantıyı değiştir"
|
||||
#endif
|
||||
,
|
||||
[ActChgMinRubCri] =
|
||||
|
|
Loading…
Reference in New Issue