Version 22.83.1: Mar 27, 2023 Changes in rubric criteria.

This commit is contained in:
acanas 2023-03-27 19:24:10 +02:00
parent 9c436403ff
commit c74c6e2f3e
8 changed files with 154 additions and 51 deletions

View File

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

View File

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

View File

@ -629,10 +629,11 @@ TODO: Emilce Barrera Mesa: Podr
TODO: Emilce Barrera Mesa: Mis estudiantes presentan muchas dificultades a la hora de poner la foto porque la plataforma es muy exigente respecto al fondo de la imagen.
*/
#define Log_PLATFORM_VERSION "SWAD 22.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;

View File

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

View File

@ -53,4 +53,6 @@ void RubCri_RemoveCriterion (void);
void RubCri_MoveUpCriterion (void);
void RubCri_MoveDownCriterion (void);
void RubCri_ChangeLink (void);
#endif

View File

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

View File

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

View File

@ -6412,25 +6412,25 @@ const char *Txt_Actions[ActLst_NUM_ACTIONS] =
,
[ActChgLnkPrgRsc] =
#if L==1 // ca
"Change resource link" // Necessita traducció
"Canviar enlla&ccedil; a recurs des del programa"
#elif L==2 // de
"Change resource link" // Need Übersetzung
"&Auml;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&nacute; 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&gbreve;a ba&gbreve;lant&inodot;y&inodot; de&gbreve;i&scedil;tir"
#endif
,
[ActEdiTchGui] =
@ -14207,7 +14207,7 @@ const char *Txt_Actions[ActLst_NUM_ACTIONS] =
"Puan anahtar&inodot; &ouml;l&ccedil;&uuml;t ba&scedil;l&inodot;&gbreve;&inodot;n&inodot; de&gbreve;i&scedil;tir" // Çeviri lazim!
#endif
,
[ActChgSrcRubCri] =
[ActChgTypRubCri] =
#if L==1 // ca
"Canviar font de criteri de r&uacute;brica"
#elif L==2 // de
@ -14228,6 +14228,29 @@ const char *Txt_Actions[ActLst_NUM_ACTIONS] =
"Alterar origem do crit&eacute;rio de rubrica"
#elif L==10 // tr
"Puan anahtar&inodot; &ouml;l&ccedil;&uuml;t yaz&inodot; tipini de&gbreve;i&scedil;tir"
#endif
,
[ActChgLnkRubCri] =
#if L==1 // ca
"Canviar enlla&ccedil; a recurs des de r&uacute;brica"
#elif L==2 // de
"Link zu Ressource aus Rubrik &auml;ndern"
#elif L==3 // en
"Change link to resource from rubric"
#elif L==4 // es
"Cambiar enlace a recurso desde r&uacute;brica"
#elif L==5 // fr
"Modifier lien vers ressource &agrave; partir de rubrique"
#elif L==6 // gn
"Omoambue enlace recurso-pe r&uacute;brica-gui"
#elif L==7 // it
"Modificare il collegamento alla risorsa dalla rubrica"
#elif L==8 // pl
"Zmie&nacute; link do zasobu z rubryki"
#elif L==9 // pt
"Alterar link para recurso da rubrica"
#elif L==10 // tr
"Puan anahtar&inodot;ndan kayna&gbreve;a ba&gbreve;lant&inodot;y&inodot; de&gbreve;i&scedil;tir"
#endif
,
[ActChgMinRubCri] =