mirror of
https://github.com/acanas/swad-core.git
synced 2024-06-18 06:25:42 +02:00
Version 22.102: Apr 21, 2023 Rubrics in project. Not finished.
This commit is contained in:
parent
96d71b5ce3
commit
adcdd5a0e9
|
@ -9146,7 +9146,7 @@ static bool Brw_CheckIfICanModifyPrjAssFileOrFolder (void)
|
|||
{
|
||||
case Rol_STD:
|
||||
case Rol_NET:
|
||||
if ((Prj_GetMyRolesInProject (Prj_GetPrjCod ()) & (1 << Prj_ROLE_TUT | // Tutor...
|
||||
if ((Prj_GetMyRolesInProject (Prj_GetPrjCod ()) & (1 << Prj_ROLE_TUT | // Tutor...
|
||||
1 << Prj_ROLE_EVL))) // ...or evaluator
|
||||
return (Gbl.Usrs.Me.UsrDat.UsrCod == Brw_DB_GetPublisherOfSubtree (Gbl.FileBrowser.FilFolLnk.Full)); // Am I the publisher of subtree?
|
||||
return false;
|
||||
|
|
|
@ -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.101.12 (2023-04-21)"
|
||||
#define Log_PLATFORM_VERSION "SWAD 22.102 (2023-04-21)"
|
||||
#define CSS_FILE "swad22.95.css"
|
||||
#define JS_FILE "swad22.49.js"
|
||||
/*
|
||||
Version 22.102: Apr 21, 2023 Rubrics in project. Not finished. (337360 lines)
|
||||
Version 22.101.12:Apr 21, 2023 Code refactoring in attendance and match results. (337275 lines)
|
||||
Version 22.101.11:Apr 21, 2023 Changes in edition of centers and places. (337289 lines)
|
||||
Version 22.101.10:Apr 21, 2023 Changes in course information. (337302 lines)
|
||||
|
|
129
swad_project.c
129
swad_project.c
|
@ -309,6 +309,11 @@ static void Prj_PutIconOffLockedUnlocked (const struct Prj_Project *Prj);
|
|||
//---------------------------- Review status ----------------------------------
|
||||
static Prj_ReviewStatus_t Prj_GetParReviewStatus (void);
|
||||
|
||||
//------------------------------- Rubrics -------------------------------------
|
||||
static void Prj_ShowRubrics (long PrjCod);
|
||||
static bool Prj_CheckIfICanViewRubric (long PrjCod,PrjCfg_Rubric_t WhichRubric);
|
||||
static bool Prj_CheckIfICanFillRubric (long PrjCod,PrjCfg_Rubric_t WhichRubric);
|
||||
|
||||
/*****************************************************************************/
|
||||
/******* Set/get project code (used to pass parameter to file browser) *******/
|
||||
/*****************************************************************************/
|
||||
|
@ -1154,12 +1159,12 @@ static void Prj_ShowProjectsHead (struct Prj_Projects *Projects)
|
|||
switch (Projects->View)
|
||||
{
|
||||
case Prj_LIST_PROJECTS:
|
||||
case Prj_FILE_BROWSER_ONE_PROJECT:
|
||||
case Prj_VIEW_ONE_PROJECT:
|
||||
Frm_BeginForm (ActSeeAllPrj);
|
||||
Prj_PutPars (&Projects->Filter,
|
||||
Order,
|
||||
Projects->CurrentPage,
|
||||
-1L);
|
||||
Order,
|
||||
Projects->CurrentPage,
|
||||
-1L);
|
||||
HTM_BUTTON_Submit_Begin (Txt_PROJECT_ORDER_HELP[Order],
|
||||
"class=\"BT_LINK\"");
|
||||
if (Order == Projects->SelectedOrder)
|
||||
|
@ -1314,7 +1319,7 @@ void Prj_ShowOneProject (void)
|
|||
then show project and (if possible) its file browser *****/
|
||||
Prj_AllocMemProject (&Projects.Prj);
|
||||
Prj_GetProjectDataByCod (&Projects.Prj);
|
||||
Prj_ShowOneProjectWithFileBrowser (&Projects);
|
||||
Prj_ShowBoxWithOneProject (&Projects);
|
||||
Prj_FreeMemProject (&Projects.Prj);
|
||||
|
||||
/***** Show projects again *****/
|
||||
|
@ -1325,7 +1330,7 @@ void Prj_ShowOneProject (void)
|
|||
/*** Show one project and (if possible) a file browser with its documents ****/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Prj_ShowOneProjectWithFileBrowser (struct Prj_Projects *Projects)
|
||||
void Prj_ShowBoxWithOneProject (struct Prj_Projects *Projects)
|
||||
{
|
||||
extern const char *Hlp_ASSESSMENT_Projects;
|
||||
extern const char *Txt_Project;
|
||||
|
@ -1340,8 +1345,7 @@ void Prj_ShowOneProjectWithFileBrowser (struct Prj_Projects *Projects)
|
|||
HTM_TABLE_BeginWidePadding (2);
|
||||
|
||||
/***** Table head and project *****/
|
||||
Projects->View = Prj_FILE_BROWSER_ONE_PROJECT;
|
||||
Projects->NumIndex = 0;
|
||||
Projects->View = Prj_VIEW_ONE_PROJECT;
|
||||
Prj_ShowProjectsHead (Projects);
|
||||
Prj_ShowProjectRow (Projects);
|
||||
|
||||
|
@ -1352,6 +1356,9 @@ void Prj_ShowOneProjectWithFileBrowser (struct Prj_Projects *Projects)
|
|||
if (Prj_CheckIfICanViewProjectFiles (Projects->Prj.PrjCod))
|
||||
Brw_ShowFileBrowserProject (Projects->Prj.PrjCod);
|
||||
|
||||
/***** Show project rubrics *****/
|
||||
Prj_ShowRubrics (Projects->Prj.PrjCod);
|
||||
|
||||
/***** End box *****/
|
||||
Box_BoxEnd ();
|
||||
}
|
||||
|
@ -1406,7 +1413,6 @@ void Prj_PrintOneProject (void)
|
|||
|
||||
/***** Table head and project *****/
|
||||
Projects.View = Prj_PRINT_ONE_PROJECT;
|
||||
Projects.NumIndex = 0;
|
||||
Prj_ShowProjectsHead (&Projects);
|
||||
Prj_ShowProjectRow (&Projects);
|
||||
|
||||
|
@ -1626,7 +1632,7 @@ static void Prj_ShowProjectDepartment (const struct Prj_Projects *Projects,
|
|||
/***** Show department *****/
|
||||
PutLink = (Dpt.WWW[0] &&
|
||||
(Projects->View == Prj_LIST_PROJECTS ||
|
||||
Projects->View == Prj_FILE_BROWSER_ONE_PROJECT));
|
||||
Projects->View == Prj_VIEW_ONE_PROJECT));
|
||||
|
||||
switch (Projects->View)
|
||||
{
|
||||
|
@ -2014,7 +2020,7 @@ static void Prj_ShowProjectMembersWithARole (struct Prj_Projects *Projects,
|
|||
HTM_TxtColon (NumUsrs == 1 ? Txt_PROJECT_ROLES_SINGUL_Abc[RoleInPrj] :
|
||||
Txt_PROJECT_ROLES_PLURAL_Abc[RoleInPrj]);
|
||||
break;
|
||||
case Prj_FILE_BROWSER_ONE_PROJECT:
|
||||
case Prj_VIEW_ONE_PROJECT:
|
||||
case Prj_PRINT_ONE_PROJECT:
|
||||
HTM_TD_Begin ("colspan=\"2\" class=\"RT %s_%s\"",
|
||||
ClassLabel,The_GetSuffix ());
|
||||
|
@ -2037,7 +2043,7 @@ static void Prj_ShowProjectMembersWithARole (struct Prj_Projects *Projects,
|
|||
ClassData,The_GetSuffix (),
|
||||
The_GetColorRows ());
|
||||
break;
|
||||
case Prj_FILE_BROWSER_ONE_PROJECT:
|
||||
case Prj_VIEW_ONE_PROJECT:
|
||||
case Prj_PRINT_ONE_PROJECT:
|
||||
HTM_TD_Begin ("colspan=\"2\" class=\"LT %s_%s\"",
|
||||
ClassData,The_GetSuffix ());
|
||||
|
@ -2159,7 +2165,7 @@ static void Prj_PutLinkToShowHiddenInfo (const struct Prj_Projects *Projects,
|
|||
HTM_TD_End ();
|
||||
HTM_TR_End ();
|
||||
break;
|
||||
case Prj_FILE_BROWSER_ONE_PROJECT:
|
||||
case Prj_VIEW_ONE_PROJECT:
|
||||
HTM_TR_Begin ("id=\"prj_exp_%u\"",UniqueId);
|
||||
HTM_TD_Begin ("colspan=\"5\" class=\"CM\"");
|
||||
Prj_PutIconToToggleProject (UniqueId,"angle-down.svg",Txt_See_more);
|
||||
|
@ -2196,7 +2202,7 @@ static void Prj_ShowProposal (const struct Prj_Projects *Projects,
|
|||
HTM_TD_Begin ("colspan=\"4\" class=\"RT %s_%s %s\"",
|
||||
ClassLabel,The_GetSuffix (),The_GetColorRows ());
|
||||
break;
|
||||
case Prj_FILE_BROWSER_ONE_PROJECT:
|
||||
case Prj_VIEW_ONE_PROJECT:
|
||||
HTM_TR_Begin ("id=\"prj_pro_%u\" style=\"display:none;\"",UniqueId);
|
||||
HTM_TD_Begin ("colspan=\"2\" class=\"RT %s_%s\"",
|
||||
ClassLabel,The_GetSuffix ());
|
||||
|
@ -2247,7 +2253,7 @@ static void Prj_ShowTxtField (const struct Prj_Projects *Projects,
|
|||
HTM_TD_Begin ("colspan=\"4\" class=\"RT %s_%s %s\"",
|
||||
ClassLabel,The_GetSuffix (),The_GetColorRows ());
|
||||
break;
|
||||
case Prj_FILE_BROWSER_ONE_PROJECT:
|
||||
case Prj_VIEW_ONE_PROJECT:
|
||||
HTM_TR_Begin ("id=\"%s%u\" style=\"display:none;\"",id,UniqueId);
|
||||
HTM_TD_Begin ("colspan=\"2\" class=\"RT %s_%s\"",
|
||||
ClassLabel,The_GetSuffix ());
|
||||
|
@ -2270,7 +2276,7 @@ static void Prj_ShowTxtField (const struct Prj_Projects *Projects,
|
|||
switch (Projects->View)
|
||||
{
|
||||
case Prj_LIST_PROJECTS:
|
||||
case Prj_FILE_BROWSER_ONE_PROJECT:
|
||||
case Prj_VIEW_ONE_PROJECT:
|
||||
ALn_InsertLinks (TxtField,Cns_MAX_BYTES_TEXT,60); // Insert links
|
||||
break;
|
||||
default:
|
||||
|
@ -2310,7 +2316,7 @@ static void Prj_ShowURL (const struct Prj_Projects *Projects,
|
|||
extern const char *Txt_URL;
|
||||
bool PutLink = (Projects->Prj.URL[0] &&
|
||||
(Projects->View == Prj_LIST_PROJECTS ||
|
||||
Projects->View == Prj_FILE_BROWSER_ONE_PROJECT));
|
||||
Projects->View == Prj_VIEW_ONE_PROJECT));
|
||||
|
||||
/***** Write row with label and text *****/
|
||||
switch (Projects->View)
|
||||
|
@ -2320,7 +2326,7 @@ static void Prj_ShowURL (const struct Prj_Projects *Projects,
|
|||
HTM_TD_Begin ("colspan=\"4\" class=\"RT %s_%s %s\"",
|
||||
ClassLabel,The_GetSuffix (),The_GetColorRows ());
|
||||
break;
|
||||
case Prj_FILE_BROWSER_ONE_PROJECT:
|
||||
case Prj_VIEW_ONE_PROJECT:
|
||||
HTM_TR_Begin ("id=\"%s%u\" style=\"display:none;\"",id,UniqueId);
|
||||
HTM_TD_Begin ("colspan=\"2\" class=\"RT %s_%s\"",
|
||||
ClassLabel,The_GetSuffix ());
|
||||
|
@ -4463,6 +4469,93 @@ static Prj_ReviewStatus_t Prj_GetParReviewStatus (void)
|
|||
(unsigned long) Prj_REVIEW_STATUS_DEFAULT);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/************************ Show rubrics in a project **************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Prj_ShowRubrics (long PrjCod)
|
||||
{
|
||||
extern const char *Hlp_ASSESSMENT_Projects;
|
||||
extern const char *Txt_Rubrics;
|
||||
extern const char *Txt_PROJECT_RUBRIC[PrjCfg_NUM_RUBRICS];
|
||||
PrjCfg_Rubric_t WhichRubric;
|
||||
|
||||
/***** Begin box *****/
|
||||
Box_BoxBegin ("100%",Txt_Rubrics,
|
||||
NULL,NULL,
|
||||
Hlp_ASSESSMENT_Projects,Box_NOT_CLOSABLE);
|
||||
|
||||
/***** Rubrics *****/
|
||||
for (WhichRubric = (PrjCfg_Rubric_t) 0;
|
||||
WhichRubric <= (PrjCfg_Rubric_t) (PrjCfg_NUM_RUBRICS - 1);
|
||||
WhichRubric++)
|
||||
{
|
||||
if (Prj_CheckIfICanViewRubric (PrjCod,WhichRubric))
|
||||
{
|
||||
Ale_ShowAlert (Ale_INFO,Txt_PROJECT_RUBRIC[WhichRubric]);
|
||||
Ale_ShowAlert (Ale_SUCCESS,"Can see");
|
||||
if (Prj_CheckIfICanFillRubric (PrjCod,WhichRubric))
|
||||
Ale_ShowAlert (Ale_SUCCESS,"Can fill");
|
||||
}
|
||||
}
|
||||
|
||||
/***** End box *****/
|
||||
Box_BoxEnd ();
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/************************* Who can view/fill rubrics *************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static bool Prj_CheckIfICanViewRubric (long PrjCod,PrjCfg_Rubric_t WhichRubric)
|
||||
{
|
||||
switch (Gbl.Usrs.Me.Role.Logged)
|
||||
{
|
||||
case Rol_STD:
|
||||
case Rol_NET:
|
||||
switch (WhichRubric)
|
||||
{
|
||||
case PrjCfg_RUBRIC_TUT:
|
||||
case PrjCfg_RUBRIC_EVL:
|
||||
return ((Prj_GetMyRolesInProject (PrjCod) & (1 << Prj_ROLE_TUT | // I am a tutor
|
||||
1 << Prj_ROLE_EVL)) != 0); // or an evaluator
|
||||
case PrjCfg_RUBRIC_GBL:
|
||||
return (Prj_GetMyRolesInProject (PrjCod) != 0); // I am a member
|
||||
}
|
||||
return false;
|
||||
case Rol_TCH: // Editing teachers in a course can view all rubrics
|
||||
case Rol_SYS_ADM:
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
static bool Prj_CheckIfICanFillRubric (long PrjCod,PrjCfg_Rubric_t WhichRubric)
|
||||
{
|
||||
switch (Gbl.Usrs.Me.Role.Logged)
|
||||
{
|
||||
case Rol_STD:
|
||||
case Rol_NET:
|
||||
switch (WhichRubric)
|
||||
{
|
||||
case PrjCfg_RUBRIC_TUT:
|
||||
return ((Prj_GetMyRolesInProject (PrjCod) & (1 << Prj_ROLE_TUT)) != 0); // I am a tutor
|
||||
case PrjCfg_RUBRIC_EVL:
|
||||
return ((Prj_GetMyRolesInProject (PrjCod) & (1 << Prj_ROLE_EVL)) != 0); // Am I an evaluator
|
||||
case PrjCfg_RUBRIC_GBL:
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
case Rol_TCH: // Editing teachers in a course can fill all rubrics
|
||||
case Rol_SYS_ADM:
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/********************** Remove all projects in a course **********************/
|
||||
/*****************************************************************************/
|
||||
|
|
|
@ -151,7 +151,7 @@ typedef enum
|
|||
typedef enum
|
||||
{
|
||||
Prj_LIST_PROJECTS,
|
||||
Prj_FILE_BROWSER_ONE_PROJECT,
|
||||
Prj_VIEW_ONE_PROJECT,
|
||||
Prj_PRINT_ONE_PROJECT,
|
||||
Prj_EDIT_ONE_PROJECT,
|
||||
} Prj_ProjectView_t;
|
||||
|
@ -223,7 +223,7 @@ void Prj_GetPars (struct Prj_Projects *Projects);
|
|||
void Prj_PutIconsListProjects (void *Projects);
|
||||
|
||||
void Prj_ShowOneProject (void);
|
||||
void Prj_ShowOneProjectWithFileBrowser (struct Prj_Projects *Projects);
|
||||
void Prj_ShowBoxWithOneProject (struct Prj_Projects *Projects);
|
||||
|
||||
void Prj_PrintOneProject (void);
|
||||
|
||||
|
|
|
@ -66,9 +66,10 @@ void PrjRsc_GetLinkToProject (void)
|
|||
Projects.Prj.PrjCod > 0 ? Projects.Prj.Title :
|
||||
Txt_Projects);
|
||||
|
||||
/***** Show project and (if possible) its file browser *****/
|
||||
/***** The link may point to all projects or to a given project.
|
||||
It it points to a given project, show it. *****/
|
||||
if (Projects.Prj.PrjCod > 0)
|
||||
Prj_ShowOneProjectWithFileBrowser (&Projects);
|
||||
Prj_ShowBoxWithOneProject (&Projects);
|
||||
|
||||
/***** Free memory of the project *****/
|
||||
Prj_FreeMemProject (&Projects.Prj);
|
||||
|
|
Loading…
Reference in New Issue
Block a user