mirror of https://github.com/acanas/swad-core.git
Version 22.80: Mar 25, 2023 Resources in rubric criteria. Not finished.
This commit is contained in:
parent
13aad1a6fe
commit
d7b20db859
|
@ -629,11 +629,12 @@ 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.79.3 (2023-03-24)"
|
||||
#define Log_PLATFORM_VERSION "SWAD 22.80 (2023-03-25)"
|
||||
#define CSS_FILE "swad22.78.15.css"
|
||||
#define JS_FILE "swad22.49.js"
|
||||
/*
|
||||
Version 22.79.3: Mar 24, 2023 Translation of some actions. (? lines)
|
||||
Version 22.80: Mar 25, 2023 Resources in rubric criteria. Not finished. (338110 lines)
|
||||
Version 22.79.3: Mar 24, 2023 Translation of some actions. (337938 lines)
|
||||
Version 22.79.2: Mar 24, 2023 Code refactoring in rubrics. (337937 lines)
|
||||
Version 22.79.1: Mar 24, 2023 Translation of some actions. (337889 lines)
|
||||
Version 22.79: Mar 24, 2023 New action to change source of rubric criterion. (337888 lines)
|
||||
|
|
|
@ -70,7 +70,7 @@ typedef enum
|
|||
PrgRsc_FORUM_THREAD,
|
||||
} PrgRsc_Type_t;
|
||||
|
||||
struct Prg_Link
|
||||
struct PrgRsc_Link
|
||||
{
|
||||
PrgRsc_Type_t Type;
|
||||
long Cod;
|
||||
|
@ -98,7 +98,7 @@ struct Prg_Item
|
|||
struct
|
||||
{
|
||||
struct Prg_ResourceHierarchy Hierarchy;
|
||||
struct Prg_Link Link;
|
||||
struct PrgRsc_Link Link;
|
||||
char Title[PrgRsc_MAX_BYTES_PROGRAM_RESOURCE_TITLE + 1];
|
||||
} Resource;
|
||||
};
|
||||
|
|
|
@ -707,7 +707,7 @@ unsigned Prg_DB_GetClipboard (MYSQL_RES **mysql_res)
|
|||
/*************************** Remove link from clipboard **********************/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Prg_DB_RemoveLinkFromClipboard (struct Prg_Link *Link)
|
||||
void Prg_DB_RemoveLinkFromClipboard (struct PrgRsc_Link *Link)
|
||||
{
|
||||
DB_QueryDELETE ("can not remove link from clipboard",
|
||||
"DELETE FROM prg_clipboards"
|
||||
|
|
|
@ -79,7 +79,7 @@ void Prg_DB_UpdateRscLink (const struct Prg_Item *Item);
|
|||
|
||||
void Prg_DB_CopyToClipboard (PrgRsc_Type_t Type,long Cod);
|
||||
unsigned Prg_DB_GetClipboard (MYSQL_RES **mysql_res);
|
||||
void Prg_DB_RemoveLinkFromClipboard (struct Prg_Link *Link);
|
||||
void Prg_DB_RemoveLinkFromClipboard (struct PrgRsc_Link *Link);
|
||||
|
||||
void Prg_DB_InsertItemInExpandedItems (long ItmCod);
|
||||
bool Prg_DB_GetIfExpandedItem (long ItmCod);
|
||||
|
|
|
@ -126,15 +126,15 @@ static bool PrgRsc_ExchangeResources (const struct Prg_ResourceHierarchy *Rsc1,
|
|||
const struct Prg_ResourceHierarchy *Rsc2);
|
||||
|
||||
static void PrgRsc_ShowClipboard (struct Prg_Item *Item);
|
||||
static void PrgRsc_WriteRowClipboard (bool SubmitOnClick,const struct Prg_Link *Link);
|
||||
static void PrgRsc_WriteLinkName (const struct Prg_Link *Link,bool PutFormToGo,
|
||||
static void PrgRsc_WriteRowClipboard (bool SubmitOnClick,const struct PrgRsc_Link *Link);
|
||||
static void PrgRsc_WriteLinkName (const struct PrgRsc_Link *Link,bool PutFormToGo,
|
||||
const char *Icon,const char *IconTitle);
|
||||
static void PrgRsc_WriteEmptyLinkInCrsProgram (__attribute__((unused)) long Cod,
|
||||
__attribute__((unused)) bool PutFormToGo,
|
||||
const char *Icon,const char *IconTitle);
|
||||
static void PrgRsc_GetResourceTitleFromLink (struct Prg_Item *Item);
|
||||
static void PrgRsc_GetLinkDataFromRow (MYSQL_RES *mysql_res,
|
||||
struct Prg_Link *Link);
|
||||
struct PrgRsc_Link *Link);
|
||||
|
||||
/*****************************************************************************/
|
||||
/****************************** View resources *******************************/
|
||||
|
@ -907,8 +907,8 @@ static void PrgRsc_ShowClipboard (struct Prg_Item *Item)
|
|||
MYSQL_RES *mysql_res;
|
||||
unsigned NumLink;
|
||||
unsigned NumLinks;
|
||||
struct Prg_Link Link;
|
||||
static const struct Prg_Link EmptyLink =
|
||||
struct PrgRsc_Link Link;
|
||||
static const struct PrgRsc_Link EmptyLink =
|
||||
{
|
||||
.Type = PrgRsc_NONE,
|
||||
.Cod = -1L,
|
||||
|
@ -954,7 +954,7 @@ static void PrgRsc_ShowClipboard (struct Prg_Item *Item)
|
|||
/************************ Show one link from clipboard ***********************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void PrgRsc_WriteRowClipboard (bool SubmitOnClick,const struct Prg_Link *Link)
|
||||
static void PrgRsc_WriteRowClipboard (bool SubmitOnClick,const struct PrgRsc_Link *Link)
|
||||
{
|
||||
extern const char *Prg_ResourceTypesDB[PrgRsc_NUM_TYPES];
|
||||
extern const char *Txt_RESOURCE_TYPES[PrgRsc_NUM_TYPES];
|
||||
|
@ -983,7 +983,7 @@ static void PrgRsc_WriteRowClipboard (bool SubmitOnClick,const struct Prg_Link *
|
|||
/************* Write link name (filename, assignment title...) ***************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void PrgRsc_WriteLinkName (const struct Prg_Link *Link,bool PutFormToGo,
|
||||
static void PrgRsc_WriteLinkName (const struct PrgRsc_Link *Link,bool PutFormToGo,
|
||||
const char *Icon,const char *IconTitle)
|
||||
{
|
||||
static void (*WriteLinkName[PrgRsc_NUM_TYPES]) (long Cod,bool PutFormToGo,
|
||||
|
@ -1011,7 +1011,7 @@ static void PrgRsc_WriteLinkName (const struct Prg_Link *Link,bool PutFormToGo,
|
|||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/********************** Write survey in course program ***********************/
|
||||
/******************** Write empty link in course program *********************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void PrgRsc_WriteEmptyLinkInCrsProgram (__attribute__((unused)) long Cod,
|
||||
|
@ -1023,7 +1023,7 @@ static void PrgRsc_WriteEmptyLinkInCrsProgram (__attribute__((unused)) long Cod,
|
|||
/***** Icon depending on type ******/
|
||||
Ico_PutIconOn (Icon,Ico_BLACK,IconTitle);
|
||||
|
||||
/***** Write Name of the course and date of exam *****/
|
||||
/***** Write text *****/
|
||||
HTM_Txt (Txt_RESOURCE_TYPES[PrgRsc_NONE]);
|
||||
}
|
||||
|
||||
|
@ -1117,7 +1117,7 @@ void PrgRsc_ChangeLink (void)
|
|||
/*****************************************************************************/
|
||||
|
||||
static void PrgRsc_GetLinkDataFromRow (MYSQL_RES *mysql_res,
|
||||
struct Prg_Link *Link)
|
||||
struct PrgRsc_Link *Link)
|
||||
{
|
||||
MYSQL_ROW row;
|
||||
|
||||
|
|
|
@ -30,13 +30,18 @@
|
|||
|
||||
#include "swad_action_list.h"
|
||||
#include "swad_alert.h"
|
||||
#include "swad_assignment_resource.h"
|
||||
#include "swad_box.h"
|
||||
#include "swad_database.h"
|
||||
#include "swad_error.h"
|
||||
#include "swad_exam_resource.h"
|
||||
#include "swad_form.h"
|
||||
#include "swad_game_resource.h"
|
||||
#include "swad_global.h"
|
||||
#include "swad_parameter.h"
|
||||
#include "swad_parameter_code.h"
|
||||
#include "swad_program_database.h"
|
||||
#include "swad_program_resource.h"
|
||||
#include "swad_rubric.h"
|
||||
#include "swad_rubric_criteria.h"
|
||||
#include "swad_rubric_database.h"
|
||||
|
@ -58,6 +63,26 @@ static const char *RubCri_ParValues[RubCri_NUM_VALUES] =
|
|||
[RubCri_MAX] = "MaxVal",
|
||||
};
|
||||
|
||||
static const char *RubCri_SourceDB[RubCri_NUM_SOURCES] =
|
||||
{
|
||||
[RubCri_FROM_TEACHER ] = "teacher",
|
||||
[RubCri_FROM_ANOTHER_RUBRIC] = "rubric",
|
||||
[RubCri_FROM_EXAM_PRINT ] = "exam",
|
||||
[RubCri_FROM_GAME_MATCH ] = "game",
|
||||
};
|
||||
|
||||
/*****************************************************************************/
|
||||
/**************************** Private constants ******************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
const char *RubCri_SourceIcons[RubCri_NUM_SOURCES] =
|
||||
{
|
||||
[RubCri_FROM_TEACHER ] = "user-tie.svg",
|
||||
[RubCri_FROM_ANOTHER_RUBRIC] = "tasks.svg",
|
||||
[RubCri_FROM_EXAM_PRINT ] = "file-signature.svg",
|
||||
[RubCri_FROM_GAME_MATCH ] = "gamepad.svg",
|
||||
};
|
||||
|
||||
/*****************************************************************************/
|
||||
/***************************** Private prototypes ****************************/
|
||||
/*****************************************************************************/
|
||||
|
@ -93,6 +118,18 @@ static void RubCri_GetAndCheckPars (struct Rub_Rubrics *Rubrics,
|
|||
static void RubCri_ExchangeCriteria (long RubCod,
|
||||
unsigned CriIndTop,unsigned CriIndBottom);
|
||||
|
||||
static void RubCri_ShowResource (struct RubCri_Criterion *Criterion,
|
||||
bool Editing,const char *Anchor);
|
||||
static void RubCri_ShowClipboard (struct RubCri_Criterion *Criterion,const char *Anchor);
|
||||
static void RubCri_GetLinkDataFromRow (MYSQL_RES *mysql_res,
|
||||
struct RubCri_Criterion *Criterion);
|
||||
static void RubCri_WriteRowClipboard (bool SubmitOnClick,
|
||||
const struct RubCri_Criterion *Criterion);
|
||||
static void RubCri_WriteLinkName (const struct RubCri_Criterion *Criterion,bool PutFormToGo);
|
||||
static void RubCri_WriteEmptyLinkInRubricCriterion (__attribute__((unused)) long Cod,
|
||||
__attribute__((unused)) bool PutFormToGo,
|
||||
const char *Icon,const char *IconTitle);
|
||||
|
||||
/*****************************************************************************/
|
||||
/*************** Put parameter to edit one rubric criterion ******************/
|
||||
/*****************************************************************************/
|
||||
|
@ -703,6 +740,7 @@ 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);
|
||||
RubCri_PutParsOneCriterion (Rubrics);
|
||||
HTM_SELECT_Begin (HTM_SUBMIT_ON_CHANGE,
|
||||
|
@ -719,6 +757,12 @@ static void RubCri_ListOneOrMoreCriteriaForEdition (struct Rub_Rubrics *Rubrics,
|
|||
}
|
||||
HTM_SELECT_End ();
|
||||
Frm_EndForm ();
|
||||
|
||||
HTM_BR ();
|
||||
|
||||
/* Resource */
|
||||
RubCri_ShowResource (&Criterion,
|
||||
true,Anchor); // Editing
|
||||
HTM_TD_End ();
|
||||
|
||||
/***** Minimum and maximum values of criterion *****/
|
||||
|
@ -864,14 +908,6 @@ RubCri_Source_t RubCri_GetSourceFromDBStr (const char *SourceDBStr)
|
|||
|
||||
const char *RubCri_GetDBStrFromSource (RubCri_Source_t Source)
|
||||
{
|
||||
static const char *RubCri_SourceDB[RubCri_NUM_SOURCES] =
|
||||
{
|
||||
[RubCri_FROM_TEACHER ] = "teacher",
|
||||
[RubCri_FROM_ANOTHER_RUBRIC] = "rubric",
|
||||
[RubCri_FROM_EXAM_PRINT ] = "exam",
|
||||
[RubCri_FROM_GAME_MATCH ] = "game",
|
||||
};
|
||||
|
||||
if (Source >= RubCri_NUM_SOURCES)
|
||||
Source = RubCri_SOURCE_DEFAULT;
|
||||
|
||||
|
@ -1172,3 +1208,171 @@ static void RubCri_ExchangeCriteria (long RubCod,
|
|||
/***** Unlock table *****/
|
||||
DB_UnlockTables ();
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/************************** Show criterion resource **************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void RubCri_ShowResource (struct RubCri_Criterion *Criterion,
|
||||
bool Editing,const char *Anchor)
|
||||
{
|
||||
return; // TODO: Provisional. Remove!
|
||||
|
||||
// TODO
|
||||
if (Editing)
|
||||
RubCri_ShowClipboard (Criterion,Anchor);
|
||||
else
|
||||
RubCri_WriteLinkName (Criterion,
|
||||
true); // Put form
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/***************** Show clipboard to change resource link ********************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void RubCri_ShowClipboard (struct RubCri_Criterion *Criterion,const char *Anchor)
|
||||
{
|
||||
MYSQL_RES *mysql_res;
|
||||
unsigned NumLink;
|
||||
unsigned NumLinks;
|
||||
// struct PrgRsc_Link Link;
|
||||
struct RubCri_Criterion Cri;
|
||||
/*
|
||||
static const struct PrgRsc_Link EmptyLink =
|
||||
{
|
||||
.Type = PrgRsc_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);
|
||||
*/
|
||||
|
||||
/***** Begin list *****/
|
||||
HTM_UL_Begin ("class=\"PRG_CLIPBOARD\"");
|
||||
|
||||
/***** Current link (empty or not) *****/
|
||||
RubCri_WriteRowClipboard (false,Criterion);
|
||||
|
||||
/***** Row with empty link to remove the current link *****/
|
||||
/*
|
||||
if (Criterion->Source != RubCri_FROM_TEACHER)
|
||||
RubCri_WriteRowClipboard (true,&EmptyLink); */
|
||||
|
||||
/***** Get links in clipboard from database and write them *****/
|
||||
NumLinks = Prg_DB_GetClipboard (&mysql_res);
|
||||
for (NumLink = 1;
|
||||
NumLink <= NumLinks;
|
||||
NumLink++)
|
||||
{
|
||||
RubCri_GetLinkDataFromRow (mysql_res,&Cri);
|
||||
/*
|
||||
Cri.Source = Link->Type;
|
||||
Cri.Cod = Link->Cod;
|
||||
*/
|
||||
RubCri_WriteRowClipboard (true,&Cri);
|
||||
}
|
||||
DB_FreeMySQLResult (&mysql_res);
|
||||
|
||||
/***** End list *****/
|
||||
HTM_UL_End ();
|
||||
|
||||
/***** End form *****/
|
||||
Frm_EndForm ();
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/********************** Get resource data from clipboard *********************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void RubCri_GetLinkDataFromRow (MYSQL_RES *mysql_res,
|
||||
struct RubCri_Criterion *Criterion)
|
||||
{
|
||||
MYSQL_ROW row;
|
||||
|
||||
/***** Get row *****/
|
||||
row = mysql_fetch_row (mysql_res);
|
||||
/*
|
||||
Type row[0]
|
||||
Cod row[1]
|
||||
*/
|
||||
/***** Get type (row[0]) *****/
|
||||
Criterion->Source = (RubCri_Source_t) PrgRsc_GetTypeFromString (row[0]); // TODO
|
||||
|
||||
/***** Get code (row[1]) *****/
|
||||
Criterion->Cod = Str_ConvertStrCodToLongCod (row[1]);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/************************ Show one link from clipboard ***********************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void RubCri_WriteRowClipboard (bool SubmitOnClick,
|
||||
const struct RubCri_Criterion *Criterion)
|
||||
{
|
||||
HTM_LI_Begin ("class=\"PRG_RSC_%s\"",The_GetSuffix ());
|
||||
HTM_LABEL_Begin (NULL);
|
||||
|
||||
/***** Radio selector *****/
|
||||
HTM_INPUT_RADIO ("Link",SubmitOnClick,
|
||||
"value=\"%s_%ld\"%s",
|
||||
RubCri_SourceDB[Criterion->Source],Criterion->Cod,
|
||||
SubmitOnClick ? "" :
|
||||
" checked=\"checked\"");
|
||||
|
||||
/***** Name *****/
|
||||
RubCri_WriteLinkName (Criterion,
|
||||
false); // Don't put form
|
||||
|
||||
HTM_LABEL_End ();
|
||||
HTM_LI_End ();
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/************* Write link name (filename, assignment title...) ***************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void RubCri_WriteLinkName (const struct RubCri_Criterion *Criterion,bool PutFormToGo)
|
||||
{
|
||||
extern const char *Txt_RUBRIC_CRITERION_SOURCES[RubCri_NUM_SOURCES];
|
||||
static void (*WriteLinkName[RubCri_NUM_SOURCES]) (long Cod,bool PutFormToGo,
|
||||
const char *Icon,
|
||||
const char *IconTitle) =
|
||||
{
|
||||
[RubCri_FROM_TEACHER ] = RubCri_WriteEmptyLinkInRubricCriterion,
|
||||
[RubCri_FROM_ANOTHER_RUBRIC] = AsgRsc_WriteAssignmentInCrsProgram,
|
||||
[RubCri_FROM_EXAM_PRINT ] = ExaRsc_WriteExamInCrsProgram,
|
||||
[RubCri_FROM_GAME_MATCH ] = GamRsc_WriteGameInCrsProgram,
|
||||
};
|
||||
|
||||
/***** Write link name *****/
|
||||
if (WriteLinkName[Criterion->Source])
|
||||
WriteLinkName[Criterion->Source] (Criterion->Cod,PutFormToGo,
|
||||
RubCri_SourceIcons[Criterion->Source],
|
||||
Txt_RUBRIC_CRITERION_SOURCES[Criterion->Source]);
|
||||
else
|
||||
Ale_ShowAlert (Ale_ERROR,"Not implemented!");
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/******************** Write empty link in course program *********************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void RubCri_WriteEmptyLinkInRubricCriterion (__attribute__((unused)) long Cod,
|
||||
__attribute__((unused)) bool PutFormToGo,
|
||||
const char *Icon,const char *IconTitle)
|
||||
{
|
||||
extern const char *Txt_RUBRIC_CRITERION_SOURCES[RubCri_NUM_SOURCES];
|
||||
|
||||
/***** Icon depending on type ******/
|
||||
Ico_PutIconOn (Icon,Ico_BLACK,IconTitle);
|
||||
|
||||
/***** Write text *****/
|
||||
HTM_Txt (Txt_RUBRIC_CRITERION_SOURCES[RubCri_FROM_TEACHER]);
|
||||
}
|
||||
|
|
|
@ -36675,7 +36675,7 @@ const char *Txt_Resources_of_X = // Warning: it is very important to include %s
|
|||
#elif L==5 // fr
|
||||
"Ressources de %s";
|
||||
#elif L==6 // gn
|
||||
"Recursos de %s"; // Okoteve traducción
|
||||
"%s recursos rehegua";
|
||||
#elif L==7 // it
|
||||
"Risorse di %s";
|
||||
#elif L==8 // pl
|
||||
|
|
Loading…
Reference in New Issue