Version19.169.5

This commit is contained in:
acanas 2020-04-08 22:09:35 +02:00
parent 505fb31312
commit 4a01070ca3
13 changed files with 564 additions and 615 deletions

View File

@ -497,7 +497,7 @@ enscript -2 --landscape --color --file-align=2 --highlight --line-numbers -o - *
En OpenSWAD: En OpenSWAD:
ps2pdf source.ps destination.pdf ps2pdf source.ps destination.pdf
*/ */
#define Log_PLATFORM_VERSION "SWAD 19.169.4 (2020-04-08)" #define Log_PLATFORM_VERSION "SWAD 19.169.5 (2020-04-08)"
#define CSS_FILE "swad19.146.css" #define CSS_FILE "swad19.146.css"
#define JS_FILE "swad19.153.js" #define JS_FILE "swad19.153.js"
/* /*
@ -548,6 +548,7 @@ Funci
// TODO: Oresti Baños: cambiar ojos por candados en descriptores para prohibir/permitir y dejar los ojos para poder elegir descriptores // TODO: Oresti Baños: cambiar ojos por candados en descriptores para prohibir/permitir y dejar los ojos para poder elegir descriptores
// TODO: Integrar pull requests con traducciones del alemán del usuario eruedin en GitHub // TODO: Integrar pull requests con traducciones del alemán del usuario eruedin en GitHub
Version 19.169.5: Apr 08, 2020 Mark some parameters as unused (functions from O to R). (284854 lines)
Version 19.169.4: Apr 08, 2020 Mark some parameters as unused (functions from I to N). (284903 lines) Version 19.169.4: Apr 08, 2020 Mark some parameters as unused (functions from I to N). (284903 lines)
Version 19.169.3: Apr 08, 2020 Mark some parameters as unused (functions from D to I). (284929 lines) Version 19.169.3: Apr 08, 2020 Mark some parameters as unused (functions from D to I). (284929 lines)
Version 19.169.2: Apr 08, 2020 Mark some parameters as unused (functions from A to C). (284969 lines) Version 19.169.2: Apr 08, 2020 Mark some parameters as unused (functions from A to C). (284969 lines)

View File

@ -3143,7 +3143,7 @@ static void Brw_ShowFileBrowserNormal (void)
static void Brw_ShowFileBrowserProject (void) static void Brw_ShowFileBrowserProject (void)
{ {
extern const char *Hlp_ASSESSMENT_Projects; extern const char *Hlp_ASSESSMENT_Projects;
struct Project Prj; struct Prj_Project Prj;
unsigned MyRolesInProject; unsigned MyRolesInProject;
/***** Allocate memory for the project *****/ /***** Allocate memory for the project *****/
@ -6839,7 +6839,7 @@ static void Brw_WriteCurrentClipboard (void)
struct Degree Deg; struct Degree Deg;
struct Course Crs; struct Course Crs;
struct GroupData GrpDat; struct GroupData GrpDat;
struct Project Prj; struct Prj_Project Prj;
struct UsrData UsrDat; struct UsrData UsrDat;
char TxtClipboardZone[1024 + char TxtClipboardZone[1024 +
Hie_MAX_BYTES_SHRT_NAME + Hie_MAX_BYTES_SHRT_NAME +

View File

@ -519,20 +519,7 @@ struct Globals
char TmpDir[NAME_MAX + 1]; char TmpDir[NAME_MAX + 1];
} ZIP; } ZIP;
} FileBrowser; // Struct used for a file browser } FileBrowser; // Struct used for a file browser
struct struct Prj_Projects Prjs;
{
struct
{
bool Editable;
} Config;
struct Prj_Filter Filter;
bool LstIsRead; // Is the list already read from database, or it needs to be read?
unsigned Num; // Number of projects
long *LstPrjCods; // List of project codes
Prj_Order_t SelectedOrder;
unsigned CurrentPage;
long PrjCod; // Current project
} Prjs;
struct struct
{ {
Usr_Who_t Who; Usr_Who_t Who;

View File

@ -74,7 +74,7 @@ const char *Pwd_PASSWORD_SECTION_ID = "password_section";
static void Pwd_CheckAndUpdateNewPwd (struct UsrData *UsrDat); static void Pwd_CheckAndUpdateNewPwd (struct UsrData *UsrDat);
static void Pwd_PutLinkToSendNewPasswdParams (void *Args); static void Pwd_PutLinkToSendNewPasswdParams (void *UsrIdLogin);
static void Pwd_CreateANewPassword (char PlainPassword[Pwd_MAX_BYTES_PLAIN_PASSWORD + 1]); static void Pwd_CreateANewPassword (char PlainPassword[Pwd_MAX_BYTES_PLAIN_PASSWORD + 1]);
@ -248,15 +248,15 @@ void Pwd_PutLinkToSendNewPasswd (void)
extern const char *Txt_Forgotten_password; extern const char *Txt_Forgotten_password;
Lay_PutContextualLinkIconText (ActReqSndNewPwd,NULL, Lay_PutContextualLinkIconText (ActReqSndNewPwd,NULL,
Pwd_PutLinkToSendNewPasswdParams,&Gbl, Pwd_PutLinkToSendNewPasswdParams,Gbl.Usrs.Me.UsrIdLogin,
"key.svg", "key.svg",
Txt_Forgotten_password); Txt_Forgotten_password);
} }
static void Pwd_PutLinkToSendNewPasswdParams (void *Args) static void Pwd_PutLinkToSendNewPasswdParams (void *UsrIdLogin)
{ {
if (Args) if (UsrIdLogin)
Par_PutHiddenParamString (NULL,"UsrId",Gbl.Usrs.Me.UsrIdLogin); Par_PutHiddenParamString (NULL,"UsrId",(char *) Gbl.Usrs.Me.UsrIdLogin);
} }
/*****************************************************************************/ /*****************************************************************************/

View File

@ -91,8 +91,8 @@ static const char *Pho_StrAvgPhotoPrograms[Pho_NUM_AVERAGE_PHOTO_TYPES] =
/***************************** Private prototypes ****************************/ /***************************** Private prototypes ****************************/
/*****************************************************************************/ /*****************************************************************************/
static void Pho_PutIconToRequestRemoveMyPhoto (void *Args); static void Pho_PutIconToRequestRemoveMyPhoto (__attribute__((unused)) void *Args);
static void Pho_PutIconToRequestRemoveOtherUsrPhoto (void *Args); static void Pho_PutIconToRequestRemoveOtherUsrPhoto (__attribute__((unused)) void *Args);
static void Pho_ReqOtherUsrPhoto (void); static void Pho_ReqOtherUsrPhoto (void);
static void Pho_ReqPhoto (const struct UsrData *UsrDat); static void Pho_ReqPhoto (const struct UsrData *UsrDat);
@ -116,8 +116,8 @@ static Pho_HowComputePhotoSize_t Pho_GetHowComputePhotoSizeFromForm (void);
static void Pho_PutSelectorForHowOrderDegrees (void); static void Pho_PutSelectorForHowOrderDegrees (void);
static Pho_HowOrderDegrees_t Pho_GetHowOrderDegreesFromForm (void); static Pho_HowOrderDegrees_t Pho_GetHowOrderDegreesFromForm (void);
static void Pho_PutIconToPrintDegreeStats (void *Args); static void Pho_PutIconToPrintDegreeStats (__attribute__((unused)) void *Args);
static void Pho_PutLinkToPrintViewOfDegreeStatsParams (void *Args); static void Pho_PutLinkToPrintViewOfDegreeStatsParams (__attribute__((unused)) void *Args);
static void Pho_PutLinkToCalculateDegreeStats (void); static void Pho_PutLinkToCalculateDegreeStats (void);
static void Pho_GetMaxStdsPerDegree (void); static void Pho_GetMaxStdsPerDegree (void);
@ -218,54 +218,50 @@ void Pho_PutIconToChangeUsrPhoto (void)
/************** Put a link to request the removal of my photo ****************/ /************** Put a link to request the removal of my photo ****************/
/*****************************************************************************/ /*****************************************************************************/
static void Pho_PutIconToRequestRemoveMyPhoto (void *Args) static void Pho_PutIconToRequestRemoveMyPhoto (__attribute__((unused)) void *Args)
{ {
extern const char *Txt_Remove_photo; extern const char *Txt_Remove_photo;
if (Args) /***** Link to request the removal of my photo *****/
/***** Link to request the removal of my photo *****/ if (Gbl.Usrs.Me.MyPhotoExists)
if (Gbl.Usrs.Me.MyPhotoExists) Lay_PutContextualLinkOnlyIcon (ActReqRemMyPho,NULL,
Lay_PutContextualLinkOnlyIcon (ActReqRemMyPho,NULL, NULL,NULL,
NULL,NULL, "trash.svg",
"trash.svg", Txt_Remove_photo);
Txt_Remove_photo);
} }
/*****************************************************************************/ /*****************************************************************************/
/********** Put a link to request the removal of a user's photo **************/ /********** Put a link to request the removal of a user's photo **************/
/*****************************************************************************/ /*****************************************************************************/
static void Pho_PutIconToRequestRemoveOtherUsrPhoto (void *Args) static void Pho_PutIconToRequestRemoveOtherUsrPhoto (__attribute__((unused)) void *Args)
{ {
extern const char *Txt_Remove_photo; extern const char *Txt_Remove_photo;
char PhotoURL[PATH_MAX + 1]; char PhotoURL[PATH_MAX + 1];
bool PhotoExists; bool PhotoExists;
Act_Action_t NextAction; Act_Action_t NextAction;
if (Args) /***** Link to request the removal of another user's photo *****/
PhotoExists = Pho_BuildLinkToPhoto (&Gbl.Usrs.Other.UsrDat,PhotoURL);
if (PhotoExists)
{ {
/***** Link to request the removal of another user's photo *****/ switch (Gbl.Usrs.Other.UsrDat.Roles.InCurrentCrs.Role)
PhotoExists = Pho_BuildLinkToPhoto (&Gbl.Usrs.Other.UsrDat,PhotoURL);
if (PhotoExists)
{ {
switch (Gbl.Usrs.Other.UsrDat.Roles.InCurrentCrs.Role) case Rol_STD:
{ NextAction = ActReqRemStdPho;
case Rol_STD: break;
NextAction = ActReqRemStdPho; case Rol_NET:
break; case Rol_TCH:
case Rol_NET: NextAction = ActReqRemTchPho;
case Rol_TCH: break;
NextAction = ActReqRemTchPho; default: // Guest, user or admin
break; NextAction = ActReqRemOthPho;
default: // Guest, user or admin break;
NextAction = ActReqRemOthPho;
break;
}
Lay_PutContextualLinkOnlyIcon (NextAction,NULL,
Usr_PutParamOtherUsrCodEncrypted,Gbl.Usrs.Other.UsrDat.EncryptedUsrCod,
"trash.svg",
Txt_Remove_photo);
} }
Lay_PutContextualLinkOnlyIcon (NextAction,NULL,
Usr_PutParamOtherUsrCodEncrypted,Gbl.Usrs.Other.UsrDat.EncryptedUsrCod,
"trash.svg",
Txt_Remove_photo);
} }
} }
@ -313,7 +309,7 @@ static void Pho_ReqPhoto (const struct UsrData *UsrDat)
/***** Begin box *****/ /***** Begin box *****/
Box_BoxBegin (NULL,Txt_Photo, Box_BoxBegin (NULL,Txt_Photo,
ItsMe ? Pho_PutIconToRequestRemoveMyPhoto : ItsMe ? Pho_PutIconToRequestRemoveMyPhoto :
Pho_PutIconToRequestRemoveOtherUsrPhoto,&Gbl, Pho_PutIconToRequestRemoveOtherUsrPhoto,NULL,
Hlp_PROFILE_Photo,Box_NOT_CLOSABLE); Hlp_PROFILE_Photo,Box_NOT_CLOSABLE);
/***** Begin form *****/ /***** Begin form *****/
@ -1731,7 +1727,7 @@ void Pho_ShowOrPrintPhotoDegree (Pho_AvgPhotoSeeOrPrint_t SeeOrPrint)
case Pho_DEGREES_SEE: case Pho_DEGREES_SEE:
/***** Begin box *****/ /***** Begin box *****/
Box_BoxBegin (NULL,Txt_Degrees, Box_BoxBegin (NULL,Txt_Degrees,
Pho_PutIconToPrintDegreeStats,&Gbl, Pho_PutIconToPrintDegreeStats,NULL,
Hlp_ANALYTICS_Degrees,Box_NOT_CLOSABLE); Hlp_ANALYTICS_Degrees,Box_NOT_CLOSABLE);
HTM_TABLE_BeginCenterPadding (2); HTM_TABLE_BeginCenterPadding (2);
@ -1784,14 +1780,11 @@ void Pho_ShowOrPrintPhotoDegree (Pho_AvgPhotoSeeOrPrint_t SeeOrPrint)
/**************** Put parameter for degree average photos ********************/ /**************** Put parameter for degree average photos ********************/
/*****************************************************************************/ /*****************************************************************************/
void Pho_PutParamsDegPhoto (void *Args) void Pho_PutParamsDegPhoto (__attribute__((unused)) void *Args)
{ {
if (Args) Pho_PutHiddenParamTypeOfAvg ();
{ Pho_PutHiddenParamPhotoSize ();
Pho_PutHiddenParamTypeOfAvg (); Pho_PutHiddenParamOrderDegrees ();
Pho_PutHiddenParamPhotoSize ();
Pho_PutHiddenParamOrderDegrees ();
}
} }
/*****************************************************************************/ /*****************************************************************************/
@ -1990,22 +1983,18 @@ static Pho_HowOrderDegrees_t Pho_GetHowOrderDegreesFromForm (void)
/*************** Put icon to print view the stats of degrees ***************/ /*************** Put icon to print view the stats of degrees ***************/
/*****************************************************************************/ /*****************************************************************************/
static void Pho_PutIconToPrintDegreeStats (void *Args) static void Pho_PutIconToPrintDegreeStats (__attribute__((unused)) void *Args)
{ {
if (Args) Ico_PutContextualIconToPrint (ActPrnPhoDeg,
Ico_PutContextualIconToPrint (ActPrnPhoDeg, Pho_PutLinkToPrintViewOfDegreeStatsParams,NULL);
Pho_PutLinkToPrintViewOfDegreeStatsParams,&Gbl);
} }
static void Pho_PutLinkToPrintViewOfDegreeStatsParams (void *Args) static void Pho_PutLinkToPrintViewOfDegreeStatsParams (__attribute__((unused)) void *Args)
{ {
if (Args) Pho_PutHiddenParamTypeOfAvg ();
{ Pho_PutHiddenParamPhotoSize ();
Pho_PutHiddenParamTypeOfAvg (); Pho_PutHiddenParamOrderDegrees ();
Pho_PutHiddenParamPhotoSize (); Usr_PutParamsPrefsAboutUsrList ();
Pho_PutHiddenParamOrderDegrees ();
Usr_PutParamsPrefsAboutUsrList ();
}
} }
/*****************************************************************************/ /*****************************************************************************/
@ -2159,7 +2148,7 @@ static void Pho_ShowOrPrintClassPhotoDegrees (Pho_AvgPhotoSeeOrPrint_t SeeOrPrin
{ {
/***** Form to select type of list used to display degree photos *****/ /***** Form to select type of list used to display degree photos *****/
if (SeeOrPrint == Pho_DEGREES_SEE) if (SeeOrPrint == Pho_DEGREES_SEE)
Usr_ShowFormsToSelectUsrListType (Pho_PutParamsDegPhoto,&Gbl); Usr_ShowFormsToSelectUsrListType (Pho_PutParamsDegPhoto,NULL);
HTM_TABLE_BeginCenter (); HTM_TABLE_BeginCenter ();
/***** Get and print degrees *****/ /***** Get and print degrees *****/
@ -2240,7 +2229,7 @@ static void Pho_ShowOrPrintListDegrees (Pho_AvgPhotoSeeOrPrint_t SeeOrPrint)
/***** Class photo start *****/ /***** Class photo start *****/
if (SeeOrPrint == Pho_DEGREES_SEE) if (SeeOrPrint == Pho_DEGREES_SEE)
/***** Form to select type of list used to display degree photos *****/ /***** Form to select type of list used to display degree photos *****/
Usr_ShowFormsToSelectUsrListType (Pho_PutParamsDegPhoto,&Gbl); Usr_ShowFormsToSelectUsrListType (Pho_PutParamsDegPhoto,NULL);
/***** Write heading *****/ /***** Write heading *****/
HTM_TABLE_BeginCenterPadding (2); HTM_TABLE_BeginCenterPadding (2);

View File

@ -121,7 +121,7 @@ void Pho_ShowPhotoDegree (void);
void Pho_PrintPhotoDegree (void); void Pho_PrintPhotoDegree (void);
void Pho_ShowOrPrintPhotoDegree (Pho_AvgPhotoSeeOrPrint_t SeeOrPrint); void Pho_ShowOrPrintPhotoDegree (Pho_AvgPhotoSeeOrPrint_t SeeOrPrint);
void Pho_PutParamsDegPhoto (void *Args); void Pho_PutParamsDegPhoto (__attribute__((unused)) void *Args);
void Pho_PutHiddenParamTypeOfAvg (void); void Pho_PutHiddenParamTypeOfAvg (void);
void Pho_PutHiddenParamPhotoSize (void); void Pho_PutHiddenParamPhotoSize (void);
void Pho_PutHiddenParamOrderDegrees (void); void Pho_PutHiddenParamOrderDegrees (void);

View File

@ -65,10 +65,10 @@ static struct Place *Plc_EditingPlc = NULL; // Static variable to keep the place
static void Plc_GetParamPlcOrder (void); static void Plc_GetParamPlcOrder (void);
static bool Plc_CheckIfICanCreatePlaces (void); static bool Plc_CheckIfICanCreatePlaces (void);
static void Plc_PutIconsListingPlaces (void *Args); static void Plc_PutIconsListingPlaces (__attribute__((unused)) void *Args);
static void Plc_PutIconToEditPlaces (void); static void Plc_PutIconToEditPlaces (void);
static void Plc_EditPlacesInternal (void); static void Plc_EditPlacesInternal (void);
static void Plc_PutIconsEditingPlaces (void *Args); static void Plc_PutIconsEditingPlaces (__attribute__((unused)) void *Args);
static void Plc_ListPlacesForEdition (void); static void Plc_ListPlacesForEdition (void);
static void Plc_PutParamPlcCod (long PlcCod); static void Plc_PutParamPlcCod (long PlcCod);
@ -112,7 +112,7 @@ void Plc_SeePlaces (void)
/***** Table head *****/ /***** Table head *****/
Box_BoxBegin (NULL,Txt_Places, Box_BoxBegin (NULL,Txt_Places,
Plc_PutIconsListingPlaces,&Gbl, Plc_PutIconsListingPlaces,NULL,
Hlp_INSTITUTION_Places,Box_NOT_CLOSABLE); Hlp_INSTITUTION_Places,Box_NOT_CLOSABLE);
HTM_TABLE_BeginWideMarginPadding (2); HTM_TABLE_BeginWideMarginPadding (2);
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
@ -238,17 +238,14 @@ static bool Plc_CheckIfICanCreatePlaces (void)
/****************** Put contextual icons in list of places *******************/ /****************** Put contextual icons in list of places *******************/
/*****************************************************************************/ /*****************************************************************************/
static void Plc_PutIconsListingPlaces (void *Args) static void Plc_PutIconsListingPlaces (__attribute__((unused)) void *Args)
{ {
if (Args) /***** Put icon to edit places *****/
{ if (Plc_CheckIfICanCreatePlaces ())
/***** Put icon to edit places *****/ Plc_PutIconToEditPlaces ();
if (Plc_CheckIfICanCreatePlaces ())
Plc_PutIconToEditPlaces ();
/***** Put icon to view centres *****/ /***** Put icon to view centres *****/
Ctr_PutIconToViewCentres (); Ctr_PutIconToViewCentres ();
}
} }
/*****************************************************************************/ /*****************************************************************************/
@ -287,7 +284,7 @@ static void Plc_EditPlacesInternal (void)
/***** Begin box *****/ /***** Begin box *****/
Box_BoxBegin (NULL,Txt_Places, Box_BoxBegin (NULL,Txt_Places,
Plc_PutIconsEditingPlaces,&Gbl, Plc_PutIconsEditingPlaces,NULL,
Hlp_INSTITUTION_Places_edit,Box_NOT_CLOSABLE); Hlp_INSTITUTION_Places_edit,Box_NOT_CLOSABLE);
/***** Put a form to create a new place *****/ /***** Put a form to create a new place *****/
@ -309,16 +306,13 @@ static void Plc_EditPlacesInternal (void)
/**************** Put contextual icons in edition of places *****************/ /**************** Put contextual icons in edition of places *****************/
/*****************************************************************************/ /*****************************************************************************/
static void Plc_PutIconsEditingPlaces (void *Args) static void Plc_PutIconsEditingPlaces (__attribute__((unused)) void *Args)
{ {
if (Args) /***** Put icon to view places *****/
{ Plc_PutIconToViewPlaces ();
/***** Put icon to view places *****/
Plc_PutIconToViewPlaces ();
/***** Put icon to view centres *****/ /***** Put icon to view centres *****/
Ctr_PutIconToViewCentres (); Ctr_PutIconToViewCentres ();
}
} }
/*****************************************************************************/ /*****************************************************************************/

View File

@ -71,7 +71,7 @@ static struct Plugin *Plg_EditingPlg = NULL; // Static variable to keep the plug
/***************************** Private prototypes ****************************/ /***************************** Private prototypes ****************************/
/*****************************************************************************/ /*****************************************************************************/
static void Plg_PutIconToEditPlugins (void *Args); static void Plg_PutIconToEditPlugins (__attribute__((unused)) void *Args);
static void Plg_EditPluginsInternal (void); static void Plg_EditPluginsInternal (void);
static void Plg_ListPluginsForEdition (void); static void Plg_ListPluginsForEdition (void);
static void Plg_PutParamPlgCod (long PlgCod); static void Plg_PutParamPlgCod (long PlgCod);
@ -109,7 +109,7 @@ void Plg_ListPlugins (void)
/***** Begin box and table *****/ /***** Begin box and table *****/
if (Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM) if (Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM)
Box_BoxTableBegin (NULL,Txt_Plugins, Box_BoxTableBegin (NULL,Txt_Plugins,
Plg_PutIconToEditPlugins,&Gbl, Plg_PutIconToEditPlugins,NULL,
NULL,Box_NOT_CLOSABLE,2); NULL,Box_NOT_CLOSABLE,2);
else else
Box_BoxTableBegin (NULL,Txt_Plugins, Box_BoxTableBegin (NULL,Txt_Plugins,
@ -171,11 +171,10 @@ void Plg_ListPlugins (void)
/*************************** Put icon to edit plugins ************************/ /*************************** Put icon to edit plugins ************************/
/*****************************************************************************/ /*****************************************************************************/
static void Plg_PutIconToEditPlugins (void *Args) static void Plg_PutIconToEditPlugins (__attribute__((unused)) void *Args)
{ {
if (Args) Ico_PutContextualIconToEdit (ActEdiPlg,NULL,
Ico_PutContextualIconToEdit (ActEdiPlg,NULL, NULL,NULL);
NULL,NULL);
} }
/*****************************************************************************/ /*****************************************************************************/

View File

@ -130,7 +130,6 @@ static struct
} List; } List;
unsigned MaxLevel; // Maximum level of items unsigned MaxLevel; // Maximum level of items
struct Level *Levels; // Numbers and hidden for each level from 1 to maximum level struct Level *Levels; // Numbers and hidden for each level from 1 to maximum level
long CurrentItmCod; // Used as parameter in contextual links
} Prg_Gbl = } Prg_Gbl =
{ {
.List = .List =
@ -140,8 +139,7 @@ static struct
.Items = NULL, .Items = NULL,
}, },
.MaxLevel = 0, .MaxLevel = 0,
.Levels = NULL, .Levels = NULL
.CurrentItmCod = -1L
}; };
/*****************************************************************************/ /*****************************************************************************/
@ -153,11 +151,11 @@ static void Prg_ShowAllItems (Prg_CreateOrChangeItem_t CreateOrChangeItem,
const struct ItemRange *ToHighlight, const struct ItemRange *ToHighlight,
long ParentItmCod,long ItmCodBeforeForm,unsigned FormLevel); long ParentItmCod,long ItmCodBeforeForm,unsigned FormLevel);
static bool Prg_CheckIfICanCreateItems (void); static bool Prg_CheckIfICanCreateItems (void);
static void Prg_PutIconsListItems (void *Args); static void Prg_PutIconsListItems (__attribute__((unused)) void *Args);
static void Prg_PutIconToCreateNewItem (void); static void Prg_PutIconToCreateNewItem (void);
static void Prg_PutButtonToCreateNewItem (void); static void Prg_PutButtonToCreateNewItem (void);
static void Prg_WriteRowItem (unsigned NumItem,const struct ProgramItem *Item, static void Prg_WriteRowItem (unsigned NumItem,struct ProgramItem *Item,
bool PrintView); bool PrintView);
static void Prg_WriteRowWithItemForm (Prg_CreateOrChangeItem_t CreateOrChangeItem, static void Prg_WriteRowWithItemForm (Prg_CreateOrChangeItem_t CreateOrChangeItem,
long ItmCod,unsigned FormLevel); long ItmCod,unsigned FormLevel);
@ -179,15 +177,13 @@ static bool Prg_GetHiddenLevel (unsigned Level);
static bool Prg_CheckIfAnyHigherLevelIsHidden (unsigned CurrentLevel); static bool Prg_CheckIfAnyHigherLevelIsHidden (unsigned CurrentLevel);
static void Prg_PutFormsToRemEditOneItem (unsigned NumItem, static void Prg_PutFormsToRemEditOneItem (unsigned NumItem,
const struct ProgramItem *Item); struct ProgramItem *Item);
static bool Prg_CheckIfMoveUpIsAllowed (unsigned NumItem); static bool Prg_CheckIfMoveUpIsAllowed (unsigned NumItem);
static bool Prg_CheckIfMoveDownIsAllowed (unsigned NumItem); static bool Prg_CheckIfMoveDownIsAllowed (unsigned NumItem);
static bool Prg_CheckIfMoveLeftIsAllowed (unsigned NumItem); static bool Prg_CheckIfMoveLeftIsAllowed (unsigned NumItem);
static bool Prg_CheckIfMoveRightIsAllowed (unsigned NumItem); static bool Prg_CheckIfMoveRightIsAllowed (unsigned NumItem);
static void Prg_SetCurrentItmCod (long ItmCod); static void Prg_PutParams (void *ItmCod);
static long Prg_GetCurrentItmCod (void);
static void Prg_PutParams (void *Args);
static void Prg_GetListItems (void); static void Prg_GetListItems (void);
static void Prg_GetDataOfItemByCod (struct ProgramItem *Item); static void Prg_GetDataOfItemByCod (struct ProgramItem *Item);
@ -271,7 +267,7 @@ static void Prg_ShowAllItems (Prg_CreateOrChangeItem_t CreateOrChangeItem,
/***** Begin box *****/ /***** Begin box *****/
Box_BoxBegin ("100%",Txt_Course_program, Box_BoxBegin ("100%",Txt_Course_program,
Prg_PutIconsListItems,&Gbl, Prg_PutIconsListItems,NULL,
Hlp_COURSE_Program,Box_NOT_CLOSABLE); Hlp_COURSE_Program,Box_NOT_CLOSABLE);
/***** Table *****/ /***** Table *****/
@ -367,17 +363,14 @@ static bool Prg_CheckIfICanCreateItems (void)
/************** Put contextual icons in list of program items ****************/ /************** Put contextual icons in list of program items ****************/
/*****************************************************************************/ /*****************************************************************************/
static void Prg_PutIconsListItems (void *Args) static void Prg_PutIconsListItems (__attribute__((unused)) void *Args)
{ {
if (Args) /***** Put icon to create a new program item *****/
{ if (Prg_CheckIfICanCreateItems ())
/***** Put icon to create a new program item *****/ Prg_PutIconToCreateNewItem ();
if (Prg_CheckIfICanCreateItems ())
Prg_PutIconToCreateNewItem ();
/***** Put icon to show a figure *****/ /***** Put icon to show a figure *****/
Fig_PutIconToShowFigure (Fig_COURSE_PROGRAMS); Fig_PutIconToShowFigure (Fig_COURSE_PROGRAMS);
}
} }
/*****************************************************************************/ /*****************************************************************************/
@ -387,11 +380,11 @@ static void Prg_PutIconsListItems (void *Args)
static void Prg_PutIconToCreateNewItem (void) static void Prg_PutIconToCreateNewItem (void)
{ {
extern const char *Txt_New_item; extern const char *Txt_New_item;
long ItmCod = -1L;
/***** Put form to create a new program item *****/ /***** Put form to create a new program item *****/
Prg_SetCurrentItmCod (-1L);
Ico_PutContextualIconToAdd (ActFrmNewPrgItm,"item_form", Ico_PutContextualIconToAdd (ActFrmNewPrgItm,"item_form",
Prg_PutParams,&Gbl, Prg_PutParams,&ItmCod,
Txt_New_item); Txt_New_item);
} }
@ -402,10 +395,10 @@ static void Prg_PutIconToCreateNewItem (void)
static void Prg_PutButtonToCreateNewItem (void) static void Prg_PutButtonToCreateNewItem (void)
{ {
extern const char *Txt_New_item; extern const char *Txt_New_item;
long ItmCod = -1L;
Prg_SetCurrentItmCod (-1L);
Frm_StartFormAnchor (ActFrmNewPrgItm,"item_form"); Frm_StartFormAnchor (ActFrmNewPrgItm,"item_form");
Prg_PutParams (&Gbl); Prg_PutParams (&ItmCod);
Btn_PutConfirmButton (Txt_New_item); Btn_PutConfirmButton (Txt_New_item);
Frm_EndForm (); Frm_EndForm ();
} }
@ -414,7 +407,7 @@ static void Prg_PutButtonToCreateNewItem (void)
/************************** Show one program item ****************************/ /************************** Show one program item ****************************/
/*****************************************************************************/ /*****************************************************************************/
static void Prg_WriteRowItem (unsigned NumItem,const struct ProgramItem *Item, static void Prg_WriteRowItem (unsigned NumItem,struct ProgramItem *Item,
bool PrintView) bool PrintView)
{ {
static unsigned UniqueId = 0; static unsigned UniqueId = 0;
@ -774,7 +767,7 @@ static bool Prg_CheckIfAnyHigherLevelIsHidden (unsigned CurrentLevel)
/*****************************************************************************/ /*****************************************************************************/
static void Prg_PutFormsToRemEditOneItem (unsigned NumItem, static void Prg_PutFormsToRemEditOneItem (unsigned NumItem,
const struct ProgramItem *Item) struct ProgramItem *Item)
{ {
extern const char *Txt_New_item; extern const char *Txt_New_item;
extern const char *Txt_Move_up_X; extern const char *Txt_Move_up_X;
@ -784,8 +777,6 @@ static void Prg_PutFormsToRemEditOneItem (unsigned NumItem,
extern const char *Txt_Movement_not_allowed; extern const char *Txt_Movement_not_allowed;
char StrItemIndex[Cns_MAX_DECIMAL_DIGITS_UINT + 1]; char StrItemIndex[Cns_MAX_DECIMAL_DIGITS_UINT + 1];
Prg_SetCurrentItmCod (Item->Hierarchy.ItmCod); // Used as parameter in contextual links
/***** Initialize item index string *****/ /***** Initialize item index string *****/
snprintf (StrItemIndex,sizeof (StrItemIndex), snprintf (StrItemIndex,sizeof (StrItemIndex),
"%u", "%u",
@ -797,23 +788,23 @@ static void Prg_PutFormsToRemEditOneItem (unsigned NumItem,
case Rol_SYS_ADM: case Rol_SYS_ADM:
/***** Put form to remove program item *****/ /***** Put form to remove program item *****/
Ico_PutContextualIconToRemove (ActReqRemPrgItm, Ico_PutContextualIconToRemove (ActReqRemPrgItm,
Prg_PutParams,&Gbl); Prg_PutParams,&Item->Hierarchy.ItmCod);
/***** Put form to hide/show program item *****/ /***** Put form to hide/show program item *****/
if (Item->Hierarchy.Hidden) if (Item->Hierarchy.Hidden)
Ico_PutContextualIconToUnhide (ActShoPrgItm,"prg_highlighted", Ico_PutContextualIconToUnhide (ActShoPrgItm,"prg_highlighted",
Prg_PutParams,&Gbl); Prg_PutParams,&Item->Hierarchy.ItmCod);
else else
Ico_PutContextualIconToHide (ActHidPrgItm,"prg_highlighted", Ico_PutContextualIconToHide (ActHidPrgItm,"prg_highlighted",
Prg_PutParams,&Gbl); Prg_PutParams,&Item->Hierarchy.ItmCod);
/***** Put form to edit program item *****/ /***** Put form to edit program item *****/
Ico_PutContextualIconToEdit (ActFrmChgPrgItm,"item_form", Ico_PutContextualIconToEdit (ActFrmChgPrgItm,"item_form",
Prg_PutParams,&Gbl); Prg_PutParams,&Item->Hierarchy.ItmCod);
/***** Put form to add a new child item inside this item *****/ /***** Put form to add a new child item inside this item *****/
Ico_PutContextualIconToAdd (ActFrmNewPrgItm,"item_form", Ico_PutContextualIconToAdd (ActFrmNewPrgItm,"item_form",
Prg_PutParams,&Gbl, Prg_PutParams,&Item->Hierarchy.ItmCod,
Txt_New_item); Txt_New_item);
HTM_BR (); HTM_BR ();
@ -822,7 +813,7 @@ static void Prg_PutFormsToRemEditOneItem (unsigned NumItem,
if (Prg_CheckIfMoveUpIsAllowed (NumItem)) if (Prg_CheckIfMoveUpIsAllowed (NumItem))
{ {
Lay_PutContextualLinkOnlyIcon (ActUp_PrgItm,"prg_highlighted", Lay_PutContextualLinkOnlyIcon (ActUp_PrgItm,"prg_highlighted",
Prg_PutParams,&Gbl, Prg_PutParams,&Item->Hierarchy.ItmCod,
"arrow-up.svg", "arrow-up.svg",
Str_BuildStringStr (Txt_Move_up_X, Str_BuildStringStr (Txt_Move_up_X,
StrItemIndex)); StrItemIndex));
@ -835,7 +826,7 @@ static void Prg_PutFormsToRemEditOneItem (unsigned NumItem,
if (Prg_CheckIfMoveDownIsAllowed (NumItem)) if (Prg_CheckIfMoveDownIsAllowed (NumItem))
{ {
Lay_PutContextualLinkOnlyIcon (ActDwnPrgItm,"prg_highlighted", Lay_PutContextualLinkOnlyIcon (ActDwnPrgItm,"prg_highlighted",
Prg_PutParams,&Gbl, Prg_PutParams,&Item->Hierarchy.ItmCod,
"arrow-down.svg", "arrow-down.svg",
Str_BuildStringStr (Txt_Move_down_X, Str_BuildStringStr (Txt_Move_down_X,
StrItemIndex)); StrItemIndex));
@ -848,7 +839,7 @@ static void Prg_PutFormsToRemEditOneItem (unsigned NumItem,
if (Prg_CheckIfMoveLeftIsAllowed (NumItem)) if (Prg_CheckIfMoveLeftIsAllowed (NumItem))
{ {
Lay_PutContextualLinkOnlyIcon (ActLftPrgItm,"prg_highlighted", Lay_PutContextualLinkOnlyIcon (ActLftPrgItm,"prg_highlighted",
Prg_PutParams,&Gbl, Prg_PutParams,&Item->Hierarchy.ItmCod,
"arrow-left.svg", "arrow-left.svg",
Str_BuildStringStr (Txt_Increase_level_of_X, Str_BuildStringStr (Txt_Increase_level_of_X,
StrItemIndex)); StrItemIndex));
@ -861,7 +852,7 @@ static void Prg_PutFormsToRemEditOneItem (unsigned NumItem,
if (Prg_CheckIfMoveRightIsAllowed (NumItem)) if (Prg_CheckIfMoveRightIsAllowed (NumItem))
{ {
Lay_PutContextualLinkOnlyIcon (ActRgtPrgItm,"prg_highlighted", Lay_PutContextualLinkOnlyIcon (ActRgtPrgItm,"prg_highlighted",
Prg_PutParams,&Gbl, Prg_PutParams,&Item->Hierarchy.ItmCod,
"arrow-right.svg", "arrow-right.svg",
Str_BuildStringStr (Txt_Decrease_level_of_X, Str_BuildStringStr (Txt_Decrease_level_of_X,
StrItemIndex)); StrItemIndex));
@ -948,34 +939,15 @@ static bool Prg_CheckIfMoveRightIsAllowed (unsigned NumItem)
Prg_Gbl.List.Items[NumItem ].Level; Prg_Gbl.List.Items[NumItem ].Level;
} }
/*****************************************************************************/
/**************** Access to variables used to pass parameter *****************/
/*****************************************************************************/
static void Prg_SetCurrentItmCod (long ItmCod)
{
Prg_Gbl.CurrentItmCod = ItmCod;
}
static long Prg_GetCurrentItmCod (void)
{
return Prg_Gbl.CurrentItmCod;
}
/*****************************************************************************/ /*****************************************************************************/
/******************** Params used to edit a program item *********************/ /******************** Params used to edit a program item *********************/
/*****************************************************************************/ /*****************************************************************************/
static void Prg_PutParams (void *Args) static void Prg_PutParams (void *ItmCod)
{ {
long CurrentItmCod; if (ItmCod)
if (*((long *) ItmCod) > 0)
if (Args) Prg_PutParamItmCod (*((long *) ItmCod));
{
CurrentItmCod = Prg_GetCurrentItmCod ();
if (CurrentItmCod > 0)
Prg_PutParamItmCod (CurrentItmCod);
}
} }
/*****************************************************************************/ /*****************************************************************************/
@ -1284,9 +1256,8 @@ void Prg_ReqRemItem (void)
Lay_ShowErrorAndExit ("Wrong item code."); Lay_ShowErrorAndExit ("Wrong item code.");
/***** Show question and button to remove the program item *****/ /***** Show question and button to remove the program item *****/
Prg_SetCurrentItmCod (Item.Hierarchy.ItmCod);
Ale_ShowAlertAndButton (ActRemPrgItm,NULL,NULL, Ale_ShowAlertAndButton (ActRemPrgItm,NULL,NULL,
Prg_PutParams,&Gbl, Prg_PutParams,&Item.Hierarchy.ItmCod,
Btn_REMOVE_BUTTON,Txt_Remove_item, Btn_REMOVE_BUTTON,Txt_Remove_item,
Ale_QUESTION,Txt_Do_you_really_want_to_remove_the_item_X, Ale_QUESTION,Txt_Do_you_really_want_to_remove_the_item_X,
Item.Title); Item.Title);

View File

@ -146,10 +146,10 @@ struct Prj_Faults
/***************************** Private prototypes ****************************/ /***************************** Private prototypes ****************************/
/*****************************************************************************/ /*****************************************************************************/
static void Prj_ReqUsrsToSelect (void *Args); static void Prj_ReqUsrsToSelect (void *Projects);
static void Prj_GetSelectedUsrsAndShowTheirPrjs (void); static void Prj_GetSelectedUsrsAndShowTheirPrjs (void);
static void Prj_ShowProjects (void); static void Prj_ShowProjects (void);
static void Prj_ShowPrjsInCurrentPage (void *Args); static void Prj_ShowPrjsInCurrentPage (void *Projects);
static void Prj_ShowFormToFilterByMy_All (void); static void Prj_ShowFormToFilterByMy_All (void);
static void Prj_ShowFormToFilterByAssign (void); static void Prj_ShowFormToFilterByAssign (void);
@ -157,7 +157,7 @@ static void Prj_ShowFormToFilterByHidden (void);
static void Prj_ShowFormToFilterByWarning (void); static void Prj_ShowFormToFilterByWarning (void);
static void Prj_ShowFormToFilterByDpt (void); static void Prj_ShowFormToFilterByDpt (void);
static void Prj_PutCurrentParams (void *Args); static void Prj_PutCurrentParams (void *Projects);
static void Prj_PutHiddenParamAssign (unsigned Assign); static void Prj_PutHiddenParamAssign (unsigned Assign);
static void Prj_PutHiddenParamHidden (unsigned Hidden); static void Prj_PutHiddenParamHidden (unsigned Hidden);
static void Prj_PutHiddenParamFaulti (unsigned Faulti); static void Prj_PutHiddenParamFaulti (unsigned Faulti);
@ -172,38 +172,38 @@ static void Prj_GetParamWho (void);
static void Prj_ShowProjectsHead (Prj_ProjectView_t ProjectView); static void Prj_ShowProjectsHead (Prj_ProjectView_t ProjectView);
static void Prj_ShowTableAllProjectsHead (void); static void Prj_ShowTableAllProjectsHead (void);
static bool Prj_CheckIfICanCreateProjects (void); static bool Prj_CheckIfICanCreateProjects (void);
static void Prj_PutIconsListProjects (void *Args); static void Prj_PutIconsListProjects (void *Projects);
static void Prj_PutIconToCreateNewPrj (void); static void Prj_PutIconToCreateNewPrj (void);
static void Prj_PutButtonToCreateNewPrj (void); static void Prj_PutButtonToCreateNewPrj (void);
static void Prj_PutIconToShowAllData (void); static void Prj_PutIconToShowAllData (void);
static void Prj_ShowOneProject (unsigned NumIndex,struct Project *Prj, static void Prj_ShowOneProject (unsigned NumIndex,struct Prj_Project *Prj,
Prj_ProjectView_t ProjectView); Prj_ProjectView_t ProjectView);
static bool Prj_CheckIfPrjIsFaulty (long PrjCod,struct Prj_Faults *Faults); static bool Prj_CheckIfPrjIsFaulty (long PrjCod,struct Prj_Faults *Faults);
static void Prj_PutWarningIcon (void); static void Prj_PutWarningIcon (void);
static void Prj_PutIconToToggleProject (unsigned UniqueId, static void Prj_PutIconToToggleProject (unsigned UniqueId,
const char *Icon,const char *Text); const char *Icon,const char *Text);
static void Prj_ShowTableAllProjectsOneRow (struct Project *Prj); static void Prj_ShowTableAllProjectsOneRow (struct Prj_Project *Prj);
static void Prj_ShowOneProjectDepartment (const struct Project *Prj, static void Prj_ShowOneProjectDepartment (const struct Prj_Project *Prj,
Prj_ProjectView_t ProjectView); Prj_ProjectView_t ProjectView);
static void Prj_ShowTableAllProjectsDepartment (const struct Project *Prj); static void Prj_ShowTableAllProjectsDepartment (const struct Prj_Project *Prj);
static void Prj_ShowOneProjectTxtField (struct Project *Prj, static void Prj_ShowOneProjectTxtField (struct Prj_Project *Prj,
Prj_ProjectView_t ProjectView, Prj_ProjectView_t ProjectView,
const char *id,unsigned UniqueId, const char *id,unsigned UniqueId,
const char *Label,char *TxtField, const char *Label,char *TxtField,
bool Warning); bool Warning);
static void Prj_ShowTableAllProjectsTxtField (struct Project *Prj, static void Prj_ShowTableAllProjectsTxtField (struct Prj_Project *Prj,
char *TxtField); char *TxtField);
static void Prj_ShowOneProjectURL (const struct Project *Prj, static void Prj_ShowOneProjectURL (const struct Prj_Project *Prj,
Prj_ProjectView_t ProjectView, Prj_ProjectView_t ProjectView,
const char *id,unsigned UniqueId); const char *id,unsigned UniqueId);
static void Prj_ShowTableAllProjectsURL (const struct Project *Prj); static void Prj_ShowTableAllProjectsURL (const struct Prj_Project *Prj);
static void Prj_ShowOneProjectMembers (struct Project *Prj, static void Prj_ShowOneProjectMembers (struct Prj_Project *Prj,
Prj_ProjectView_t ProjectView); Prj_ProjectView_t ProjectView);
static void Prj_ShowOneProjectMembersWithARole (const struct Project *Prj, static void Prj_ShowOneProjectMembersWithARole (const struct Prj_Project *Prj,
Prj_ProjectView_t ProjectView, Prj_ProjectView_t ProjectView,
Prj_RoleInProject_t RoleInProject); Prj_RoleInProject_t RoleInProject);
static void Prj_ShowTableAllProjectsMembersWithARole (const struct Project *Prj, static void Prj_ShowTableAllProjectsMembersWithARole (const struct Prj_Project *Prj,
Prj_RoleInProject_t RoleInProject); Prj_RoleInProject_t RoleInProject);
static unsigned Prj_GetNumUsrsInPrj (long PrjCod,Prj_RoleInProject_t RoleInProject); static unsigned Prj_GetNumUsrsInPrj (long PrjCod,Prj_RoleInProject_t RoleInProject);
@ -212,34 +212,37 @@ static unsigned Prj_GetUsrsInPrj (long PrjCod,Prj_RoleInProject_t RoleInProject,
static Prj_RoleInProject_t Prj_ConvertUnsignedStrToRoleInProject (const char *UnsignedStr); static Prj_RoleInProject_t Prj_ConvertUnsignedStrToRoleInProject (const char *UnsignedStr);
static void Prj_ReqAddUsrs (Prj_RoleInProject_t RoleInProject); static void Prj_FormToSelectStds (__attribute__((unused)) void *Args);
static void Prj_AddStds (void *Args); static void Prj_FormToSelectTuts (__attribute__((unused)) void *Args);
static void Prj_AddTuts (void *Args); static void Prj_FormToSelectEvls (__attribute__((unused)) void *Args);
static void Prj_AddEvls (void *Args); static void Prj_FormToSelectUsrs (Prj_RoleInProject_t RoleInProject);
static void Prj_AddStds (__attribute__((unused)) void *Args);
static void Prj_AddTuts (__attribute__((unused)) void *Args);
static void Prj_AddEvls (__attribute__((unused)) void *Args);
static void Prj_AddUsrsToProject (Prj_RoleInProject_t RoleInProject); static void Prj_AddUsrsToProject (Prj_RoleInProject_t RoleInProject);
static void Prj_ReqRemUsrFromPrj (Prj_RoleInProject_t RoleInProject); static void Prj_ReqRemUsrFromPrj (Prj_RoleInProject_t RoleInProject);
static void Prj_RemUsrFromPrj (Prj_RoleInProject_t RoleInProject); static void Prj_RemUsrFromPrj (Prj_RoleInProject_t RoleInProject);
static void Prj_GetParamPrjOrder (void); static void Prj_GetParamPrjOrder (void);
static void Prj_PutFormsToRemEditOnePrj (const struct Project *Prj, static void Prj_PutFormsToRemEditOnePrj (const struct Prj_Project *Prj,
const char *Anchor, const char *Anchor,
bool ICanViewProjectFiles); bool ICanViewProjectFiles);
static bool Prj_CheckIfICanEditProject (const struct Project *Prj); static bool Prj_CheckIfICanEditProject (const struct Prj_Project *Prj);
static void Prj_GetListProjects (void); static void Prj_GetListProjects (void);
static void Prj_ResetProject (struct Project *Prj); static void Prj_ResetProject (struct Prj_Project *Prj);
static void Prj_RequestCreatOrEditPrj (long PrjCod); static void Prj_RequestCreatOrEditPrj (long PrjCod);
static void Prj_PutFormProject (struct Project *Prj,bool ItsANewProject); static void Prj_PutFormProject (struct Prj_Project *Prj,bool ItsANewProject);
static void Prj_EditOneProjectTxtArea (const char *Id, static void Prj_EditOneProjectTxtArea (const char *Id,
const char *Label,char *TxtField, const char *Label,char *TxtField,
unsigned NumRows,bool Required); unsigned NumRows,bool Required);
static void Prj_CreateProject (struct Project *Prj); static void Prj_CreateProject (struct Prj_Project *Prj);
static void Prj_UpdateProject (struct Project *Prj); static void Prj_UpdateProject (struct Prj_Project *Prj);
static bool Prj_CheckIfICanConfigAllProjects (void); static bool Prj_CheckIfICanConfigAllProjects (void);
static void Prj_GetConfigPrjFromDB (void); static void Prj_GetConfigPrjFromDB (void);
@ -247,8 +250,8 @@ static void Prj_GetConfigFromRow (MYSQL_ROW row);
static bool Prj_GetEditableFromForm (void); static bool Prj_GetEditableFromForm (void);
static void Prj_PutIconsToLockUnlockAllProjects (void); static void Prj_PutIconsToLockUnlockAllProjects (void);
static void Prj_FormLockUnlock (const struct Project *Prj); static void Prj_FormLockUnlock (const struct Prj_Project *Prj);
static void Prj_PutIconOffLockedUnlocked (const struct Project *Prj); static void Prj_PutIconOffLockedUnlocked (const struct Prj_Project *Prj);
static void Prj_LockProjectEditionInDB (long PrjCod); static void Prj_LockProjectEditionInDB (long PrjCod);
static void Prj_UnlockProjectEditionInDB (long PrjCod); static void Prj_UnlockProjectEditionInDB (long PrjCod);
@ -263,24 +266,23 @@ void Prj_ListUsrsToSelect (void)
Prj_GetParams (); Prj_GetParams ();
/***** Show list of users to select some of them *****/ /***** Show list of users to select some of them *****/
Prj_ReqUsrsToSelect (&Gbl); Prj_ReqUsrsToSelect (&Gbl.Prjs);
} }
static void Prj_ReqUsrsToSelect (void *Args) static void Prj_ReqUsrsToSelect (void *Projects)
{ {
extern const char *Hlp_ASSESSMENT_Projects; extern const char *Hlp_ASSESSMENT_Projects;
extern const char *Txt_Projects; extern const char *Txt_Projects;
extern const char *Txt_View_projects; extern const char *Txt_View_projects;
if (Args) /***** List users to select some of them *****/
/***** List users to select some of them *****/ Usr_PutFormToSelectUsrsToGoToAct (&Gbl.Usrs.Selected,
Usr_PutFormToSelectUsrsToGoToAct (&Gbl.Usrs.Selected, ActSeePrj,
ActSeePrj, Prj_PutCurrentParams,Projects,
Prj_PutCurrentParams,&Gbl, Txt_Projects,
Txt_Projects, Hlp_ASSESSMENT_Projects,
Hlp_ASSESSMENT_Projects, Txt_View_projects,
Txt_View_projects, false); // Do not put form with date range
false); // Do not put form with date range
} }
/*****************************************************************************/ /*****************************************************************************/
@ -307,7 +309,7 @@ static void Prj_ShowProjects (void)
case Usr_WHO_ME: case Usr_WHO_ME:
case Usr_WHO_ALL: case Usr_WHO_ALL:
/* Show my projects / all projects */ /* Show my projects / all projects */
Prj_ShowPrjsInCurrentPage (&Gbl); Prj_ShowPrjsInCurrentPage (&Gbl.Prjs);
break; break;
case Usr_WHO_SELECTED: case Usr_WHO_SELECTED:
/* Get selected users and show their projects */ /* Get selected users and show their projects */
@ -325,8 +327,8 @@ static void Prj_ShowProjects (void)
static void Prj_GetSelectedUsrsAndShowTheirPrjs (void) static void Prj_GetSelectedUsrsAndShowTheirPrjs (void)
{ {
Usr_GetSelectedUsrsAndGoToAct (&Gbl.Usrs.Selected, Usr_GetSelectedUsrsAndGoToAct (&Gbl.Usrs.Selected,
Prj_ShowPrjsInCurrentPage,&Gbl, // when user(s) selected Prj_ShowPrjsInCurrentPage,&Gbl.Prjs, // when user(s) selected
Prj_ReqUsrsToSelect,&Gbl); // when no user selected Prj_ReqUsrsToSelect,&Gbl.Prjs); // when no user selected
} }
/*****************************************************************************/ /*****************************************************************************/
@ -337,7 +339,7 @@ void Prj_ShowTableSelectedPrjs (void)
{ {
extern const char *Txt_No_projects; extern const char *Txt_No_projects;
unsigned NumPrj; unsigned NumPrj;
struct Project Prj; struct Prj_Project Prj;
/***** Get parameters *****/ /***** Get parameters *****/
Prj_GetParams (); Prj_GetParams ();
@ -380,7 +382,7 @@ void Prj_ShowTableSelectedPrjs (void)
/****************** Show the projects in current page ************************/ /****************** Show the projects in current page ************************/
/*****************************************************************************/ /*****************************************************************************/
static void Prj_ShowPrjsInCurrentPage (void *Args) static void Prj_ShowPrjsInCurrentPage (void *Projects)
{ {
extern const char *Hlp_ASSESSMENT_Projects; extern const char *Hlp_ASSESSMENT_Projects;
extern const char *Txt_Projects; extern const char *Txt_Projects;
@ -388,112 +390,112 @@ static void Prj_ShowPrjsInCurrentPage (void *Args)
struct Pagination Pagination; struct Pagination Pagination;
unsigned NumPrj; unsigned NumPrj;
unsigned NumIndex; unsigned NumIndex;
struct Project Prj; struct Prj_Project Prj;
if (!Args) if (Projects)
return;
/***** Get list of projects *****/
Prj_GetListProjects ();
/***** Compute variables related to pagination *****/
Pagination.NumItems = Gbl.Prjs.Num;
Pagination.CurrentPage = (int) Gbl.Prjs.CurrentPage;
Pag_CalculatePagination (&Pagination);
Gbl.Prjs.CurrentPage = (unsigned) Pagination.CurrentPage;
/***** Begin box *****/
Box_BoxBegin ("100%",Txt_Projects,
Prj_PutIconsListProjects,&Gbl,
Hlp_ASSESSMENT_Projects,Box_NOT_CLOSABLE);
/***** Put forms to choice which projects to show *****/
/* 1st. row */
Set_StartSettingsHead ();
Prj_ShowFormToFilterByMy_All ();
Prj_ShowFormToFilterByAssign ();
switch (Gbl.Usrs.Me.Role.Logged)
{ {
case Rol_NET: /***** Get list of projects *****/
case Rol_TCH: Prj_GetListProjects ();
case Rol_SYS_ADM:
Prj_ShowFormToFilterByHidden ();
break;
default: // Students will see only visible projects
break;
}
Prj_ShowFormToFilterByWarning ();
Set_EndSettingsHead ();
/* 2nd. row */ /***** Compute variables related to pagination *****/
Prj_ShowFormToFilterByDpt (); Pagination.NumItems = ((struct Prj_Projects *) Projects)->Num;
Pagination.CurrentPage = (int) ((struct Prj_Projects *) Projects)->CurrentPage;
Pag_CalculatePagination (&Pagination);
((struct Prj_Projects *) Projects)->CurrentPage = (unsigned) Pagination.CurrentPage;
if (Gbl.Prjs.Num) /***** Begin box *****/
{ Box_BoxBegin ("100%",Txt_Projects,
/***** Write links to pages *****/ Prj_PutIconsListProjects,Projects,
Pag_WriteLinksToPagesCentered (Pag_PROJECTS, Hlp_ASSESSMENT_Projects,Box_NOT_CLOSABLE);
&Pagination,
(unsigned) Gbl.Prjs.SelectedOrder,
NULL,0);
/***** Allocate memory for the project *****/ /***** Put forms to choice which projects to show *****/
Prj_AllocMemProject (&Prj); /* 1st. row */
Set_StartSettingsHead ();
/***** Table head *****/ Prj_ShowFormToFilterByMy_All ();
HTM_TABLE_BeginWideMarginPadding (2); Prj_ShowFormToFilterByAssign ();
Prj_ShowProjectsHead (Prj_LIST_PROJECTS); switch (Gbl.Usrs.Me.Role.Logged)
/***** Write all the projects *****/
for (NumPrj = Pagination.FirstItemVisible;
NumPrj <= Pagination.LastItemVisible;
NumPrj++)
{ {
/* Get project data */ case Rol_NET:
Prj.PrjCod = Gbl.Prjs.LstPrjCods[NumPrj - 1]; case Rol_TCH:
Prj_GetDataOfProjectByCod (&Prj); case Rol_SYS_ADM:
Prj_ShowFormToFilterByHidden ();
break;
default: // Students will see only visible projects
break;
}
Prj_ShowFormToFilterByWarning ();
Set_EndSettingsHead ();
/* Number of index */ /* 2nd. row */
switch (Gbl.Prjs.SelectedOrder) Prj_ShowFormToFilterByDpt ();
if (Gbl.Prjs.Num)
{
/***** Write links to pages *****/
Pag_WriteLinksToPagesCentered (Pag_PROJECTS,
&Pagination,
(unsigned) Gbl.Prjs.SelectedOrder,
NULL,0);
/***** Allocate memory for the project *****/
Prj_AllocMemProject (&Prj);
/***** Table head *****/
HTM_TABLE_BeginWideMarginPadding (2);
Prj_ShowProjectsHead (Prj_LIST_PROJECTS);
/***** Write all the projects *****/
for (NumPrj = Pagination.FirstItemVisible;
NumPrj <= Pagination.LastItemVisible;
NumPrj++)
{ {
case Prj_ORDER_START_TIME: /* Get project data */
case Prj_ORDER_END_TIME: Prj.PrjCod = Gbl.Prjs.LstPrjCods[NumPrj - 1];
// NumPrj: 1, 2, 3 ==> NumIndex = 3, 2, 1 Prj_GetDataOfProjectByCod (&Prj);
NumIndex = Gbl.Prjs.Num + 1 - NumPrj;
break; /* Number of index */
default: switch (Gbl.Prjs.SelectedOrder)
// NumPrj: 1, 2, 3 ==> NumIndex = 1, 2, 3 {
NumIndex = NumPrj; case Prj_ORDER_START_TIME:
break; case Prj_ORDER_END_TIME:
// NumPrj: 1, 2, 3 ==> NumIndex = 3, 2, 1
NumIndex = ((struct Prj_Projects *) Projects)->Num + 1 - NumPrj;
break;
default:
// NumPrj: 1, 2, 3 ==> NumIndex = 1, 2, 3
NumIndex = NumPrj;
break;
}
/* Show project */
Prj_ShowOneProject (NumIndex,&Prj,Prj_LIST_PROJECTS);
} }
/* Show project */ /***** End table *****/
Prj_ShowOneProject (NumIndex,&Prj,Prj_LIST_PROJECTS); HTM_TABLE_End ();
/***** Free memory of the project *****/
Prj_FreeMemProject (&Prj);
/***** Write again links to pages *****/
Pag_WriteLinksToPagesCentered (Pag_PROJECTS,
&Pagination,
(unsigned) ((struct Prj_Projects *) Projects)->SelectedOrder,
NULL,0);
} }
else // No projects created
Ale_ShowAlert (Ale_INFO,Txt_No_projects);
/***** End table *****/ /***** Button to create a new project *****/
HTM_TABLE_End (); if (Prj_CheckIfICanCreateProjects ())
Prj_PutButtonToCreateNewPrj ();
/***** Free memory of the project *****/ /***** End box *****/
Prj_FreeMemProject (&Prj); Box_BoxEnd ();
/***** Write again links to pages *****/ /***** Free list of projects *****/
Pag_WriteLinksToPagesCentered (Pag_PROJECTS, Prj_FreeListProjects ();
&Pagination,
(unsigned) Gbl.Prjs.SelectedOrder,
NULL,0);
} }
else // No projects created
Ale_ShowAlert (Ale_INFO,Txt_No_projects);
/***** Button to create a new project *****/
if (Prj_CheckIfICanCreateProjects ())
Prj_PutButtonToCreateNewPrj ();
/***** End box *****/
Box_BoxEnd ();
/***** Free list of projects *****/
Prj_FreeListProjects ();
} }
/*****************************************************************************/ /*****************************************************************************/
@ -692,13 +694,13 @@ static void Prj_ShowFormToFilterByDpt (void)
/********************** Put parameters used in projects **********************/ /********************** Put parameters used in projects **********************/
/*****************************************************************************/ /*****************************************************************************/
static void Prj_PutCurrentParams (void *Args) static void Prj_PutCurrentParams (void *Projects)
{ {
if (Args) if (Projects)
Prj_PutParams (&Gbl.Prjs.Filter, Prj_PutParams (&((struct Prj_Projects *) Projects)->Filter,
Gbl.Prjs.SelectedOrder, ((struct Prj_Projects *) Projects)->SelectedOrder,
Gbl.Prjs.CurrentPage, ((struct Prj_Projects *) Projects)->CurrentPage,
Gbl.Prjs.PrjCod); ((struct Prj_Projects *) Projects)->PrjCod);
} }
/* The following function is called /* The following function is called
@ -992,11 +994,11 @@ static bool Prj_CheckIfICanCreateProjects (void)
/***************** Put contextual icons in list of projects ******************/ /***************** Put contextual icons in list of projects ******************/
/*****************************************************************************/ /*****************************************************************************/
static void Prj_PutIconsListProjects (void *Args) static void Prj_PutIconsListProjects (void *Projects)
{ {
bool ICanConfigAllProjects; bool ICanConfigAllProjects;
if (Args) if (Projects)
{ {
ICanConfigAllProjects = Prj_CheckIfICanConfigAllProjects (); ICanConfigAllProjects = Prj_CheckIfICanConfigAllProjects ();
@ -1004,7 +1006,7 @@ static void Prj_PutIconsListProjects (void *Args)
if (Prj_CheckIfICanCreateProjects ()) if (Prj_CheckIfICanCreateProjects ())
Prj_PutIconToCreateNewPrj (); Prj_PutIconToCreateNewPrj ();
if (Gbl.Prjs.Num) if (((struct Prj_Projects *) Projects)->Num)
{ {
/***** Put icon to show all data in a table *****/ /***** Put icon to show all data in a table *****/
Prj_PutIconToShowAllData (); Prj_PutIconToShowAllData ();
@ -1036,7 +1038,7 @@ static void Prj_PutIconToCreateNewPrj (void)
/***** Put form to create a new project *****/ /***** Put form to create a new project *****/
Gbl.Prjs.PrjCod = -1L; Gbl.Prjs.PrjCod = -1L;
Ico_PutContextualIconToAdd (ActFrmNewPrj,NULL, Ico_PutContextualIconToAdd (ActFrmNewPrj,NULL,
Prj_PutCurrentParams,&Gbl, Prj_PutCurrentParams,&Gbl.Prjs,
Txt_New_project); Txt_New_project);
} }
@ -1050,7 +1052,7 @@ static void Prj_PutButtonToCreateNewPrj (void)
Gbl.Prjs.PrjCod = -1L; Gbl.Prjs.PrjCod = -1L;
Frm_StartForm (ActFrmNewPrj); Frm_StartForm (ActFrmNewPrj);
Prj_PutCurrentParams (&Gbl); Prj_PutCurrentParams (&Gbl.Prjs);
Btn_PutConfirmButton (Txt_New_project); Btn_PutConfirmButton (Txt_New_project);
Frm_EndForm (); Frm_EndForm ();
} }
@ -1064,7 +1066,7 @@ static void Prj_PutIconToShowAllData (void)
extern const char *Txt_Show_all_data_in_a_table; extern const char *Txt_Show_all_data_in_a_table;
Lay_PutContextualLinkOnlyIcon (ActSeeTblAllPrj,NULL, Lay_PutContextualLinkOnlyIcon (ActSeeTblAllPrj,NULL,
Prj_PutCurrentParams,&Gbl, Prj_PutCurrentParams,&Gbl.Prjs,
"table.svg", "table.svg",
Txt_Show_all_data_in_a_table); Txt_Show_all_data_in_a_table);
} }
@ -1073,7 +1075,7 @@ static void Prj_PutIconToShowAllData (void)
/***************** View / edit file browser of one project *******************/ /***************** View / edit file browser of one project *******************/
/*****************************************************************************/ /*****************************************************************************/
void Prj_ShowOneUniqueProject (struct Project *Prj) void Prj_ShowOneUniqueProject (struct Prj_Project *Prj)
{ {
/***** Begin table *****/ /***** Begin table *****/
HTM_TABLE_BeginWidePadding (2); HTM_TABLE_BeginWidePadding (2);
@ -1094,7 +1096,7 @@ void Prj_ShowOneUniqueProject (struct Project *Prj)
void Prj_PrintOneProject (void) void Prj_PrintOneProject (void)
{ {
struct Project Prj; struct Prj_Project Prj;
/***** Allocate memory for the project *****/ /***** Allocate memory for the project *****/
Prj_AllocMemProject (&Prj); Prj_AllocMemProject (&Prj);
@ -1127,7 +1129,7 @@ void Prj_PrintOneProject (void)
/***************************** Show one project ******************************/ /***************************** Show one project ******************************/
/*****************************************************************************/ /*****************************************************************************/
static void Prj_ShowOneProject (unsigned NumIndex,struct Project *Prj, static void Prj_ShowOneProject (unsigned NumIndex,struct Prj_Project *Prj,
Prj_ProjectView_t ProjectView) Prj_ProjectView_t ProjectView)
{ {
extern const char *Txt_Project_files; extern const char *Txt_Project_files;
@ -1271,7 +1273,7 @@ static void Prj_ShowOneProject (unsigned NumIndex,struct Project *Prj,
if (ICanViewProjectFiles) if (ICanViewProjectFiles)
{ {
Frm_StartForm (ActAdmDocPrj); Frm_StartForm (ActAdmDocPrj);
Prj_PutCurrentParams (&Gbl); Prj_PutCurrentParams (&Gbl.Prjs);
HTM_BUTTON_SUBMIT_Begin (Txt_Project_files,ClassLink,NULL); HTM_BUTTON_SUBMIT_Begin (Txt_Project_files,ClassLink,NULL);
HTM_Txt (Prj->Title); HTM_Txt (Prj->Title);
HTM_BUTTON_End (); HTM_BUTTON_End ();
@ -1578,7 +1580,7 @@ static void Prj_PutIconToToggleProject (unsigned UniqueId,
/***************** Show one row of table with all projects *******************/ /***************** Show one row of table with all projects *******************/
/*****************************************************************************/ /*****************************************************************************/
static void Prj_ShowTableAllProjectsOneRow (struct Project *Prj) static void Prj_ShowTableAllProjectsOneRow (struct Prj_Project *Prj)
{ {
extern const char *Txt_Yes; extern const char *Txt_Yes;
extern const char *Txt_No; extern const char *Txt_No;
@ -1680,7 +1682,7 @@ static void Prj_ShowTableAllProjectsOneRow (struct Project *Prj)
/****************** Show department associated to project ********************/ /****************** Show department associated to project ********************/
/*****************************************************************************/ /*****************************************************************************/
static void Prj_ShowOneProjectDepartment (const struct Project *Prj, static void Prj_ShowOneProjectDepartment (const struct Prj_Project *Prj,
Prj_ProjectView_t ProjectView) Prj_ProjectView_t ProjectView)
{ {
struct Department Dpt; struct Department Dpt;
@ -1719,7 +1721,7 @@ static void Prj_ShowOneProjectDepartment (const struct Project *Prj,
HTM_TR_End (); HTM_TR_End ();
} }
static void Prj_ShowTableAllProjectsDepartment (const struct Project *Prj) static void Prj_ShowTableAllProjectsDepartment (const struct Prj_Project *Prj)
{ {
struct Department Dpt; struct Department Dpt;
const char *ClassData; const char *ClassData;
@ -1742,7 +1744,7 @@ static void Prj_ShowTableAllProjectsDepartment (const struct Project *Prj)
/********************** Show text field about a project **********************/ /********************** Show text field about a project **********************/
/*****************************************************************************/ /*****************************************************************************/
static void Prj_ShowOneProjectTxtField (struct Project *Prj, static void Prj_ShowOneProjectTxtField (struct Prj_Project *Prj,
Prj_ProjectView_t ProjectView, Prj_ProjectView_t ProjectView,
const char *id,unsigned UniqueId, const char *id,unsigned UniqueId,
const char *Label,char *TxtField, const char *Label,char *TxtField,
@ -1812,7 +1814,7 @@ static void Prj_ShowOneProjectTxtField (struct Project *Prj,
HTM_TR_End (); HTM_TR_End ();
} }
static void Prj_ShowTableAllProjectsTxtField (struct Project *Prj, static void Prj_ShowTableAllProjectsTxtField (struct Prj_Project *Prj,
char *TxtField) char *TxtField)
{ {
const char *ClassData; const char *ClassData;
@ -1835,7 +1837,7 @@ static void Prj_ShowTableAllProjectsTxtField (struct Project *Prj,
/********************** Show URL associated to project ***********************/ /********************** Show URL associated to project ***********************/
/*****************************************************************************/ /*****************************************************************************/
static void Prj_ShowOneProjectURL (const struct Project *Prj, static void Prj_ShowOneProjectURL (const struct Prj_Project *Prj,
Prj_ProjectView_t ProjectView, Prj_ProjectView_t ProjectView,
const char *id,unsigned UniqueId) const char *id,unsigned UniqueId)
{ {
@ -1895,7 +1897,7 @@ static void Prj_ShowOneProjectURL (const struct Project *Prj,
HTM_TR_End (); HTM_TR_End ();
} }
static void Prj_ShowTableAllProjectsURL (const struct Project *Prj) static void Prj_ShowTableAllProjectsURL (const struct Prj_Project *Prj)
{ {
const char *ClassData; const char *ClassData;
@ -1913,7 +1915,7 @@ static void Prj_ShowTableAllProjectsURL (const struct Project *Prj)
/************** Show projects members when showing one project ***************/ /************** Show projects members when showing one project ***************/
/*****************************************************************************/ /*****************************************************************************/
static void Prj_ShowOneProjectMembers (struct Project *Prj, static void Prj_ShowOneProjectMembers (struct Prj_Project *Prj,
Prj_ProjectView_t ProjectView) Prj_ProjectView_t ProjectView)
{ {
unsigned NumRoleToShow; unsigned NumRoleToShow;
@ -1929,7 +1931,7 @@ static void Prj_ShowOneProjectMembers (struct Project *Prj,
/************************* Show users row in a project ***********************/ /************************* Show users row in a project ***********************/
/*****************************************************************************/ /*****************************************************************************/
static void Prj_ShowOneProjectMembersWithARole (const struct Project *Prj, static void Prj_ShowOneProjectMembersWithARole (const struct Prj_Project *Prj,
Prj_ProjectView_t ProjectView, Prj_ProjectView_t ProjectView,
Prj_RoleInProject_t RoleInProject) Prj_RoleInProject_t RoleInProject)
{ {
@ -2044,7 +2046,7 @@ static void Prj_ShowOneProjectMembersWithARole (const struct Project *Prj,
{ {
HTM_TD_Begin ("class=\"PRJ_MEMBER_ICO\""); HTM_TD_Begin ("class=\"PRJ_MEMBER_ICO\"");
Lay_PutContextualLinkOnlyIcon (ActionReqRemUsr[RoleInProject],NULL, Lay_PutContextualLinkOnlyIcon (ActionReqRemUsr[RoleInProject],NULL,
Prj_PutCurrentParams,&Gbl, Prj_PutCurrentParams,&Gbl.Prjs,
"trash.svg", "trash.svg",
Txt_Remove); Txt_Remove);
HTM_TD_End (); HTM_TD_End ();
@ -2076,7 +2078,7 @@ static void Prj_ShowOneProjectMembersWithARole (const struct Project *Prj,
HTM_TD_Begin ("class=\"PRJ_MEMBER_ICO\""); HTM_TD_Begin ("class=\"PRJ_MEMBER_ICO\"");
Gbl.Prjs.PrjCod = Prj->PrjCod; // Used to pass project code as a parameter Gbl.Prjs.PrjCod = Prj->PrjCod; // Used to pass project code as a parameter
Ico_PutContextualIconToAdd (ActionReqAddUsr[RoleInProject],NULL, Ico_PutContextualIconToAdd (ActionReqAddUsr[RoleInProject],NULL,
Prj_PutCurrentParams,&Gbl, Prj_PutCurrentParams,&Gbl.Prjs,
Str_BuildStringStr (Txt_Add_USERS, Str_BuildStringStr (Txt_Add_USERS,
Txt_PROJECT_ROLES_PLURAL_abc[RoleInProject])); Txt_PROJECT_ROLES_PLURAL_abc[RoleInProject]));
Str_FreeString (); Str_FreeString ();
@ -2106,7 +2108,7 @@ static void Prj_ShowOneProjectMembersWithARole (const struct Project *Prj,
DB_FreeMySQLResult (&mysql_res); DB_FreeMySQLResult (&mysql_res);
} }
static void Prj_ShowTableAllProjectsMembersWithARole (const struct Project *Prj, static void Prj_ShowTableAllProjectsMembersWithARole (const struct Prj_Project *Prj,
Prj_RoleInProject_t RoleInProject) Prj_RoleInProject_t RoleInProject)
{ {
MYSQL_RES *mysql_res; MYSQL_RES *mysql_res;
@ -2264,25 +2266,37 @@ static Prj_RoleInProject_t Prj_ConvertUnsignedStrToRoleInProject (const char *Un
/******************* Request users to be added to project ********************/ /******************* Request users to be added to project ********************/
/*****************************************************************************/ /*****************************************************************************/
void Prj_ReqAddStds (void *Args) void Prj_ReqAddStds (void)
{ {
if (Args) Prj_FormToSelectStds (NULL);
Prj_ReqAddUsrs (Prj_ROLE_STD);
} }
void Prj_ReqAddTuts (void *Args) void Prj_ReqAddTuts (void)
{ {
if (Args) Prj_FormToSelectTuts (NULL);
Prj_ReqAddUsrs (Prj_ROLE_TUT);
} }
void Prj_ReqAddEvls (void *Args) void Prj_ReqAddEvls (void)
{ {
if (Args) Prj_FormToSelectEvls (NULL);
Prj_ReqAddUsrs (Prj_ROLE_EVL);
} }
static void Prj_ReqAddUsrs (Prj_RoleInProject_t RoleInProject) static void Prj_FormToSelectStds (__attribute__((unused)) void *Args)
{
Prj_FormToSelectUsrs (Prj_ROLE_STD);
}
static void Prj_FormToSelectTuts (__attribute__((unused)) void *Args)
{
Prj_FormToSelectUsrs (Prj_ROLE_TUT);
}
static void Prj_FormToSelectEvls (__attribute__((unused)) void *Args)
{
Prj_FormToSelectUsrs (Prj_ROLE_EVL);
}
static void Prj_FormToSelectUsrs (Prj_RoleInProject_t RoleInProject)
{ {
extern const char *Hlp_ASSESSMENT_Projects_add_user; extern const char *Hlp_ASSESSMENT_Projects_add_user;
extern const char *Txt_Add_USERS; extern const char *Txt_Add_USERS;
@ -2307,7 +2321,7 @@ static void Prj_ReqAddUsrs (Prj_RoleInProject_t RoleInProject)
Lay_NotEnoughMemoryExit (); Lay_NotEnoughMemoryExit ();
Usr_PutFormToSelectUsrsToGoToAct (&Prj_MembersToAdd, Usr_PutFormToSelectUsrsToGoToAct (&Prj_MembersToAdd,
ActionAddUsr[RoleInProject], ActionAddUsr[RoleInProject],
Prj_PutCurrentParams,&Gbl, Prj_PutCurrentParams,&Gbl.Prjs,
TxtButton, TxtButton,
Hlp_ASSESSMENT_Projects_add_user, Hlp_ASSESSMENT_Projects_add_user,
TxtButton, TxtButton,
@ -2325,44 +2339,41 @@ static void Prj_ReqAddUsrs (Prj_RoleInProject_t RoleInProject)
void Prj_GetSelectedUsrsAndAddStds (void) void Prj_GetSelectedUsrsAndAddStds (void)
{ {
Usr_GetSelectedUsrsAndGoToAct (&Prj_MembersToAdd, Usr_GetSelectedUsrsAndGoToAct (&Prj_MembersToAdd,
Prj_AddStds,&Gbl, // when user(s) selected Prj_AddStds,NULL, // when user(s) selected
Prj_ReqAddStds,&Gbl); // when no user selected Prj_FormToSelectStds,NULL); // when no user selected
} }
void Prj_GetSelectedUsrsAndAddTuts (void) void Prj_GetSelectedUsrsAndAddTuts (void)
{ {
Usr_GetSelectedUsrsAndGoToAct (&Prj_MembersToAdd, Usr_GetSelectedUsrsAndGoToAct (&Prj_MembersToAdd,
Prj_AddTuts,&Gbl, // when user(s) selected Prj_AddTuts,NULL, // when user(s) selected
Prj_ReqAddTuts,&Gbl); // when no user selected Prj_FormToSelectTuts,NULL); // when no user selected
} }
void Prj_GetSelectedUsrsAndAddEvls (void) void Prj_GetSelectedUsrsAndAddEvls (void)
{ {
Usr_GetSelectedUsrsAndGoToAct (&Prj_MembersToAdd, Usr_GetSelectedUsrsAndGoToAct (&Prj_MembersToAdd,
Prj_AddEvls,&Gbl, // when user(s) selected Prj_AddEvls,NULL, // when user(s) selected
Prj_ReqAddEvls,&Gbl); // when no user selected Prj_FormToSelectEvls,NULL); // when no user selected
} }
/*****************************************************************************/ /*****************************************************************************/
/**************************** Add users to project ***************************/ /**************************** Add users to project ***************************/
/*****************************************************************************/ /*****************************************************************************/
static void Prj_AddStds (void *Args) static void Prj_AddStds (__attribute__((unused)) void *Args)
{ {
if (Args) Prj_AddUsrsToProject (Prj_ROLE_STD);
Prj_AddUsrsToProject (Prj_ROLE_STD);
} }
static void Prj_AddTuts (void *Args) static void Prj_AddTuts (__attribute__((unused)) void *Args)
{ {
if (Args) Prj_AddUsrsToProject (Prj_ROLE_TUT);
Prj_AddUsrsToProject (Prj_ROLE_TUT);
} }
static void Prj_AddEvls (void *Args) static void Prj_AddEvls (__attribute__((unused)) void *Args)
{ {
if (Args) Prj_AddUsrsToProject (Prj_ROLE_EVL);
Prj_AddUsrsToProject (Prj_ROLE_EVL);
} }
static void Prj_AddUsrsToProject (Prj_RoleInProject_t RoleInProject) static void Prj_AddUsrsToProject (Prj_RoleInProject_t RoleInProject)
@ -2449,7 +2460,7 @@ static void Prj_ReqRemUsrFromPrj (Prj_RoleInProject_t RoleInProject)
[Prj_ROLE_TUT] = ActRemTutPrj, // Tutor [Prj_ROLE_TUT] = ActRemTutPrj, // Tutor
[Prj_ROLE_EVL] = ActRemEvlPrj, // Evaluator [Prj_ROLE_EVL] = ActRemEvlPrj, // Evaluator
}; };
struct Project Prj; struct Prj_Project Prj;
bool ItsMe; bool ItsMe;
/***** Allocate memory for the project *****/ /***** Allocate memory for the project *****/
@ -2483,7 +2494,7 @@ static void Prj_ReqRemUsrFromPrj (Prj_RoleInProject_t RoleInProject)
/* Show form to request confirmation */ /* Show form to request confirmation */
Frm_StartForm (ActionRemUsr[RoleInProject]); Frm_StartForm (ActionRemUsr[RoleInProject]);
Gbl.Prjs.PrjCod = Prj.PrjCod; Gbl.Prjs.PrjCod = Prj.PrjCod;
Prj_PutCurrentParams (&Gbl); Prj_PutCurrentParams (&Gbl.Prjs);
Btn_PutRemoveButton (Str_BuildStringStr (Txt_Remove_USER_from_this_project, Btn_PutRemoveButton (Str_BuildStringStr (Txt_Remove_USER_from_this_project,
Txt_PROJECT_ROLES_SINGUL_abc[RoleInProject][Gbl.Usrs.Other.UsrDat.Sex])); Txt_PROJECT_ROLES_SINGUL_abc[RoleInProject][Gbl.Usrs.Other.UsrDat.Sex]));
Str_FreeString (); Str_FreeString ();
@ -2530,7 +2541,7 @@ static void Prj_RemUsrFromPrj (Prj_RoleInProject_t RoleInProject)
{ {
extern const char *Txt_THE_USER_X_has_been_removed_as_a_Y_from_the_project_Z; extern const char *Txt_THE_USER_X_has_been_removed_as_a_Y_from_the_project_Z;
extern const char *Txt_PROJECT_ROLES_SINGUL_abc[Prj_NUM_ROLES_IN_PROJECT][Usr_NUM_SEXS]; extern const char *Txt_PROJECT_ROLES_SINGUL_abc[Prj_NUM_ROLES_IN_PROJECT][Usr_NUM_SEXS];
struct Project Prj; struct Prj_Project Prj;
bool ItsMe; bool ItsMe;
/***** Allocate memory for the project *****/ /***** Allocate memory for the project *****/
@ -2608,7 +2619,7 @@ void Prj_PutHiddenParamPrjOrder (void)
/****************** Put a link (form) to edit one project ********************/ /****************** Put a link (form) to edit one project ********************/
/*****************************************************************************/ /*****************************************************************************/
static void Prj_PutFormsToRemEditOnePrj (const struct Project *Prj, static void Prj_PutFormsToRemEditOnePrj (const struct Prj_Project *Prj,
const char *Anchor, const char *Anchor,
bool ICanViewProjectFiles) bool ICanViewProjectFiles)
{ {
@ -2618,34 +2629,34 @@ static void Prj_PutFormsToRemEditOnePrj (const struct Project *Prj,
{ {
/***** Put form to remove project *****/ /***** Put form to remove project *****/
Ico_PutContextualIconToRemove (ActReqRemPrj, Ico_PutContextualIconToRemove (ActReqRemPrj,
Prj_PutCurrentParams,&Gbl); Prj_PutCurrentParams,&Gbl.Prjs);
/***** Put form to hide/show project *****/ /***** Put form to hide/show project *****/
switch (Prj->Hidden) switch (Prj->Hidden)
{ {
case Prj_HIDDEN: case Prj_HIDDEN:
Ico_PutContextualIconToUnhide (ActShoPrj,Anchor, Ico_PutContextualIconToUnhide (ActShoPrj,Anchor,
Prj_PutCurrentParams,&Gbl); Prj_PutCurrentParams,&Gbl.Prjs);
break; break;
case Prj_VISIBL: case Prj_VISIBL:
Ico_PutContextualIconToHide (ActHidPrj,Anchor, Ico_PutContextualIconToHide (ActHidPrj,Anchor,
Prj_PutCurrentParams,&Gbl); Prj_PutCurrentParams,&Gbl.Prjs);
break; break;
} }
/***** Put form to edit project *****/ /***** Put form to edit project *****/
Ico_PutContextualIconToEdit (ActEdiOnePrj,NULL, Ico_PutContextualIconToEdit (ActEdiOnePrj,NULL,
Prj_PutCurrentParams,&Gbl); Prj_PutCurrentParams,&Gbl.Prjs);
} }
/***** Put form to admin project documents *****/ /***** Put form to admin project documents *****/
if (ICanViewProjectFiles) if (ICanViewProjectFiles)
Ico_PutContextualIconToViewFiles (ActAdmDocPrj, Ico_PutContextualIconToViewFiles (ActAdmDocPrj,
Prj_PutCurrentParams,&Gbl); Prj_PutCurrentParams,&Gbl.Prjs);
/***** Put form to print project *****/ /***** Put form to print project *****/
Ico_PutContextualIconToPrint (ActPrnOnePrj, Ico_PutContextualIconToPrint (ActPrnOnePrj,
Prj_PutCurrentParams,&Gbl); Prj_PutCurrentParams,&Gbl.Prjs);
/***** Locked/unlocked project edition *****/ /***** Locked/unlocked project edition *****/
if (Prj_CheckIfICanConfigAllProjects ()) if (Prj_CheckIfICanConfigAllProjects ())
@ -2683,7 +2694,7 @@ bool Prj_CheckIfICanViewProjectFiles (unsigned MyRolesInProject)
/************************ Can I edit a given project? ************************/ /************************ Can I edit a given project? ************************/
/*****************************************************************************/ /*****************************************************************************/
static bool Prj_CheckIfICanEditProject (const struct Project *Prj) static bool Prj_CheckIfICanEditProject (const struct Prj_Project *Prj)
{ {
switch (Gbl.Usrs.Me.Role.Logged) switch (Gbl.Usrs.Me.Role.Logged)
{ {
@ -3029,7 +3040,7 @@ long Prj_GetCourseOfProject (long PrjCod)
/********************* Get project data using its code ***********************/ /********************* Get project data using its code ***********************/
/*****************************************************************************/ /*****************************************************************************/
void Prj_GetDataOfProjectByCod (struct Project *Prj) void Prj_GetDataOfProjectByCod (struct Prj_Project *Prj)
{ {
MYSQL_RES *mysql_res; MYSQL_RES *mysql_res;
MYSQL_ROW row; MYSQL_ROW row;
@ -3145,7 +3156,7 @@ void Prj_GetDataOfProjectByCod (struct Project *Prj)
/************************** Clear all project data ***************************/ /************************** Clear all project data ***************************/
/*****************************************************************************/ /*****************************************************************************/
static void Prj_ResetProject (struct Project *Prj) static void Prj_ResetProject (struct Prj_Project *Prj)
{ {
if (Prj->PrjCod <= 0) // If > 0 ==> keep value if (Prj->PrjCod <= 0) // If > 0 ==> keep value
Prj->PrjCod = -1L; Prj->PrjCod = -1L;
@ -3208,7 +3219,7 @@ void Prj_ReqRemProject (void)
{ {
extern const char *Txt_Do_you_really_want_to_remove_the_project_X; extern const char *Txt_Do_you_really_want_to_remove_the_project_X;
extern const char *Txt_Remove_project; extern const char *Txt_Remove_project;
struct Project Prj; struct Prj_Project Prj;
/***** Allocate memory for the project *****/ /***** Allocate memory for the project *****/
Prj_AllocMemProject (&Prj); Prj_AllocMemProject (&Prj);
@ -3226,7 +3237,7 @@ void Prj_ReqRemProject (void)
/***** Show question and button to remove the project *****/ /***** Show question and button to remove the project *****/
Gbl.Prjs.PrjCod = Prj.PrjCod; Gbl.Prjs.PrjCod = Prj.PrjCod;
Ale_ShowAlertAndButton (ActRemPrj,NULL,NULL, Ale_ShowAlertAndButton (ActRemPrj,NULL,NULL,
Prj_PutCurrentParams,&Gbl, Prj_PutCurrentParams,&Gbl.Prjs,
Btn_REMOVE_BUTTON,Txt_Remove_project, Btn_REMOVE_BUTTON,Txt_Remove_project,
Ale_QUESTION,Txt_Do_you_really_want_to_remove_the_project_X, Ale_QUESTION,Txt_Do_you_really_want_to_remove_the_project_X,
Prj.Title); Prj.Title);
@ -3248,7 +3259,7 @@ void Prj_ReqRemProject (void)
void Prj_RemoveProject (void) void Prj_RemoveProject (void)
{ {
extern const char *Txt_Project_X_removed; extern const char *Txt_Project_X_removed;
struct Project Prj; struct Prj_Project Prj;
char PathRelPrj[PATH_MAX + 1]; char PathRelPrj[PATH_MAX + 1];
/***** Allocate memory for the project *****/ /***** Allocate memory for the project *****/
@ -3310,7 +3321,7 @@ void Prj_RemoveProject (void)
void Prj_HideProject (void) void Prj_HideProject (void)
{ {
struct Project Prj; struct Prj_Project Prj;
/***** Allocate memory for the project *****/ /***** Allocate memory for the project *****/
Prj_AllocMemProject (&Prj); Prj_AllocMemProject (&Prj);
@ -3345,7 +3356,7 @@ void Prj_HideProject (void)
void Prj_UnhideProject (void) void Prj_UnhideProject (void)
{ {
struct Project Prj; struct Prj_Project Prj;
/***** Allocate memory for the project *****/ /***** Allocate memory for the project *****/
Prj_AllocMemProject (&Prj); Prj_AllocMemProject (&Prj);
@ -3398,7 +3409,7 @@ void Prj_RequestEditPrj (void)
static void Prj_RequestCreatOrEditPrj (long PrjCod) static void Prj_RequestCreatOrEditPrj (long PrjCod)
{ {
struct Project Prj; struct Prj_Project Prj;
bool ItsANewProject; bool ItsANewProject;
/***** Allocate memory for the project *****/ /***** Allocate memory for the project *****/
@ -3431,7 +3442,7 @@ static void Prj_RequestCreatOrEditPrj (long PrjCod)
Prj_ShowProjects (); Prj_ShowProjects ();
} }
static void Prj_PutFormProject (struct Project *Prj,bool ItsANewProject) static void Prj_PutFormProject (struct Prj_Project *Prj,bool ItsANewProject)
{ {
extern const char *Hlp_ASSESSMENT_Projects_new_project; extern const char *Hlp_ASSESSMENT_Projects_new_project;
extern const char *Hlp_ASSESSMENT_Projects_edit_project; extern const char *Hlp_ASSESSMENT_Projects_edit_project;
@ -3494,7 +3505,7 @@ static void Prj_PutFormProject (struct Project *Prj,bool ItsANewProject)
/* Start data form */ /* Start data form */
Frm_StartForm (ItsANewProject ? ActNewPrj : Frm_StartForm (ItsANewProject ? ActNewPrj :
ActChgPrj); ActChgPrj);
Prj_PutCurrentParams (&Gbl); Prj_PutCurrentParams (&Gbl.Prjs);
/* Begin box and table */ /* Begin box and table */
Box_BoxTableBegin (NULL,Txt_Data, Box_BoxTableBegin (NULL,Txt_Data,
@ -3666,7 +3677,7 @@ static void Prj_EditOneProjectTxtArea (const char *Id,
/*** Allocate memory for those parameters of a project with a lot of text ****/ /*** Allocate memory for those parameters of a project with a lot of text ****/
/*****************************************************************************/ /*****************************************************************************/
void Prj_AllocMemProject (struct Project *Prj) void Prj_AllocMemProject (struct Prj_Project *Prj)
{ {
if ((Prj->Description = (char *) malloc (Cns_MAX_BYTES_TEXT + 1)) == NULL) if ((Prj->Description = (char *) malloc (Cns_MAX_BYTES_TEXT + 1)) == NULL)
Lay_NotEnoughMemoryExit (); Lay_NotEnoughMemoryExit ();
@ -3682,7 +3693,7 @@ void Prj_AllocMemProject (struct Project *Prj)
/****** Free memory of those parameters of a project with a lot of text ******/ /****** Free memory of those parameters of a project with a lot of text ******/
/*****************************************************************************/ /*****************************************************************************/
void Prj_FreeMemProject (struct Project *Prj) void Prj_FreeMemProject (struct Prj_Project *Prj)
{ {
if (Prj->Description) if (Prj->Description)
{ {
@ -3710,7 +3721,7 @@ void Prj_RecFormProject (void)
extern const char *Txt_You_must_specify_the_title_of_the_project; extern const char *Txt_You_must_specify_the_title_of_the_project;
extern const char *Txt_Created_new_project_X; extern const char *Txt_Created_new_project_X;
extern const char *Txt_The_project_has_been_modified; extern const char *Txt_The_project_has_been_modified;
struct Project Prj; // Project data received from form struct Prj_Project Prj; // Project data received from form
bool ItsANewProject; bool ItsANewProject;
bool ICanEditProject; bool ICanEditProject;
bool NewProjectIsCorrect = true; bool NewProjectIsCorrect = true;
@ -3816,7 +3827,7 @@ void Prj_RecFormProject (void)
/************************** Create a new project *****************************/ /************************** Create a new project *****************************/
/*****************************************************************************/ /*****************************************************************************/
static void Prj_CreateProject (struct Project *Prj) static void Prj_CreateProject (struct Prj_Project *Prj)
{ {
/***** Set dates to now *****/ /***** Set dates to now *****/
Prj->CreatTime = Prj->CreatTime =
@ -3867,7 +3878,7 @@ static void Prj_CreateProject (struct Project *Prj)
/*********************** Update an existing project **************************/ /*********************** Update an existing project **************************/
/*****************************************************************************/ /*****************************************************************************/
static void Prj_UpdateProject (struct Project *Prj) static void Prj_UpdateProject (struct Prj_Project *Prj)
{ {
/***** Adjust date of last edition to now *****/ /***** Adjust date of last edition to now *****/
Prj->ModifTime = Gbl.StartExecutionTimeUTC; Prj->ModifTime = Gbl.StartExecutionTimeUTC;
@ -3937,7 +3948,7 @@ void Prj_ShowFormConfig (void)
/***** Begin box *****/ /***** Begin box *****/
Box_BoxBegin (NULL,Txt_Configure_projects, Box_BoxBegin (NULL,Txt_Configure_projects,
Prj_PutIconsListProjects,&Gbl, Prj_PutIconsListProjects,&Gbl.Prjs,
Hlp_ASSESSMENT_Projects,Box_NOT_CLOSABLE); Hlp_ASSESSMENT_Projects,Box_NOT_CLOSABLE);
/***** Begin form *****/ /***** Begin form *****/
@ -4060,13 +4071,13 @@ static void Prj_PutIconsToLockUnlockAllProjects (void)
/***** Put icon to lock all projects *****/ /***** Put icon to lock all projects *****/
Lay_PutContextualLinkOnlyIcon (ActReqLckAllPrj,NULL, Lay_PutContextualLinkOnlyIcon (ActReqLckAllPrj,NULL,
Prj_PutCurrentParams,&Gbl, Prj_PutCurrentParams,&Gbl.Prjs,
"lock.svg", "lock.svg",
Txt_Lock_editing); Txt_Lock_editing);
/***** Put icon to unlock all projects *****/ /***** Put icon to unlock all projects *****/
Lay_PutContextualLinkOnlyIcon (ActReqUnlAllPrj,NULL, Lay_PutContextualLinkOnlyIcon (ActReqUnlAllPrj,NULL,
Prj_PutCurrentParams,&Gbl, Prj_PutCurrentParams,&Gbl.Prjs,
"unlock.svg", "unlock.svg",
Txt_Unlock_editing); Txt_Unlock_editing);
} }
@ -4093,7 +4104,7 @@ void Prj_ReqLockSelectedPrjsEdition (void)
/* Show question and button */ /* Show question and button */
if (Gbl.Prjs.Num) if (Gbl.Prjs.Num)
Ale_ShowAlertAndButton (ActLckAllPrj,NULL,NULL, Ale_ShowAlertAndButton (ActLckAllPrj,NULL,NULL,
Prj_PutCurrentParams,&Gbl, Prj_PutCurrentParams,&Gbl.Prjs,
Btn_REMOVE_BUTTON,Txt_Lock_editing, Btn_REMOVE_BUTTON,Txt_Lock_editing,
Ale_QUESTION,Txt_Do_you_want_to_lock_the_editing_of_the_X_selected_projects, Ale_QUESTION,Txt_Do_you_want_to_lock_the_editing_of_the_X_selected_projects,
Gbl.Prjs.Num); Gbl.Prjs.Num);
@ -4128,7 +4139,7 @@ void Prj_ReqUnloSelectedPrjsEdition (void)
/* Show question and button */ /* Show question and button */
if (Gbl.Prjs.Num) if (Gbl.Prjs.Num)
Ale_ShowAlertAndButton (ActUnlAllPrj,NULL,NULL, Ale_ShowAlertAndButton (ActUnlAllPrj,NULL,NULL,
Prj_PutCurrentParams,&Gbl, Prj_PutCurrentParams,&Gbl.Prjs,
Btn_CREATE_BUTTON,Txt_Unlock_editing, Btn_CREATE_BUTTON,Txt_Unlock_editing,
Ale_QUESTION,Txt_Do_you_want_to_unlock_the_editing_of_the_X_selected_projects, Ale_QUESTION,Txt_Do_you_want_to_unlock_the_editing_of_the_X_selected_projects,
Gbl.Prjs.Num); Gbl.Prjs.Num);
@ -4219,7 +4230,7 @@ void Prj_UnloSelectedPrjsEdition (void)
/******************** Form to lock/unlock project edition ********************/ /******************** Form to lock/unlock project edition ********************/
/*****************************************************************************/ /*****************************************************************************/
static void Prj_FormLockUnlock (const struct Project *Prj) static void Prj_FormLockUnlock (const struct Prj_Project *Prj)
{ {
extern const char *Txt_LOCKED_UNLOCKED[Prj_NUM_LOCKED_UNLOCKED]; extern const char *Txt_LOCKED_UNLOCKED[Prj_NUM_LOCKED_UNLOCKED];
char *OnSubmit; char *OnSubmit;
@ -4256,7 +4267,7 @@ static void Prj_FormLockUnlock (const struct Project *Prj)
/********* Put icon to inform about locked/unlocked project edition **********/ /********* Put icon to inform about locked/unlocked project edition **********/
/*****************************************************************************/ /*****************************************************************************/
static void Prj_PutIconOffLockedUnlocked (const struct Project *Prj) static void Prj_PutIconOffLockedUnlocked (const struct Prj_Project *Prj)
{ {
extern const char *Txt_LOCKED_UNLOCKED[Prj_NUM_LOCKED_UNLOCKED]; extern const char *Txt_LOCKED_UNLOCKED[Prj_NUM_LOCKED_UNLOCKED];
@ -4270,7 +4281,7 @@ static void Prj_PutIconOffLockedUnlocked (const struct Project *Prj)
void Prj_LockProjectEdition (void) void Prj_LockProjectEdition (void)
{ {
struct Project Prj; struct Prj_Project Prj;
/***** Allocate memory for the project *****/ /***** Allocate memory for the project *****/
Prj_AllocMemProject (&Prj); Prj_AllocMemProject (&Prj);
@ -4313,7 +4324,7 @@ static void Prj_LockProjectEditionInDB (long PrjCod)
void Prj_UnloProjectEdition (void) void Prj_UnloProjectEdition (void)
{ {
struct Project Prj; struct Prj_Project Prj;
/***** Allocate memory for the project *****/ /***** Allocate memory for the project *****/
Prj_AllocMemProject (&Prj); Prj_AllocMemProject (&Prj);

View File

@ -132,8 +132,24 @@ typedef enum
Prj_ROLE_EVL = 3, // Evaluator Prj_ROLE_EVL = 3, // Evaluator
} Prj_RoleInProject_t; } Prj_RoleInProject_t;
/***** Struct to store context/status of projects *****/
struct Prj_Projects
{
struct
{
bool Editable;
} Config;
struct Prj_Filter Filter;
bool LstIsRead; // Is the list already read from database, or it needs to be read?
unsigned Num; // Number of projects
long *LstPrjCods; // List of project codes
Prj_Order_t SelectedOrder;
unsigned CurrentPage;
long PrjCod; // Current project
};
/***** Struct to store a project *****/ /***** Struct to store a project *****/
struct Project struct Prj_Project
{ {
long PrjCod; long PrjCod;
long CrsCod; long CrsCod;
@ -165,16 +181,16 @@ void Prj_PutParams (struct Prj_Filter *Filter,
unsigned NumPage, unsigned NumPage,
long PrjCod); long PrjCod);
void Prj_ShowOneUniqueProject (struct Project *Prj); void Prj_ShowOneUniqueProject (struct Prj_Project *Prj);
void Prj_PrintOneProject (void); void Prj_PrintOneProject (void);
void Prj_FlushCacheMyRolesInProject (void); void Prj_FlushCacheMyRolesInProject (void);
Prj_RoleInProject_t Prj_GetMyRolesInProject (long PrjCod); Prj_RoleInProject_t Prj_GetMyRolesInProject (long PrjCod);
void Prj_ReqAddStds (void *Args); void Prj_ReqAddStds (void);
void Prj_ReqAddTuts (void *Args); void Prj_ReqAddTuts (void);
void Prj_ReqAddEvls (void *Args); void Prj_ReqAddEvls (void);
void Prj_GetSelectedUsrsAndAddStds (void); void Prj_GetSelectedUsrsAndAddStds (void);
void Prj_GetSelectedUsrsAndAddTuts (void); void Prj_GetSelectedUsrsAndAddTuts (void);
@ -195,10 +211,10 @@ bool Prj_CheckIfICanViewProjectFiles (unsigned MyRolesInProject);
void Prj_RequestCreatePrj (void); void Prj_RequestCreatePrj (void);
void Prj_RequestEditPrj (void); void Prj_RequestEditPrj (void);
void Prj_AllocMemProject (struct Project *Prj); void Prj_AllocMemProject (struct Prj_Project *Prj);
void Prj_FreeMemProject (struct Project *Prj); void Prj_FreeMemProject (struct Prj_Project *Prj);
void Prj_GetDataOfProjectByCod (struct Project *Prj); void Prj_GetDataOfProjectByCod (struct Prj_Project *Prj);
long Prj_GetCourseOfProject (long PrjCod); long Prj_GetCourseOfProject (long PrjCod);
void Prj_FreeListProjects (void); void Prj_FreeListProjects (void);

View File

@ -78,7 +78,7 @@ extern struct Globals Gbl;
static void Rec_WriteHeadingRecordFields (void); static void Rec_WriteHeadingRecordFields (void);
static void Rec_PutParamFielCod (void *Args); static void Rec_PutParamFieldCod (void *FieldCod);
static void Rec_GetFieldByCod (long FieldCod,char Name[Rec_MAX_BYTES_NAME_FIELD + 1], static void Rec_GetFieldByCod (long FieldCod,char Name[Rec_MAX_BYTES_NAME_FIELD + 1],
unsigned *NumLines,Rec_VisibilityRecordFields_t *Visibility); unsigned *NumLines,Rec_VisibilityRecordFields_t *Visibility);
@ -103,12 +103,12 @@ static void Rec_ShowCrsRecord (Rec_CourseRecordViewType_t TypeOfView,
static void Rec_ShowMyCrsRecordUpdated (void); static void Rec_ShowMyCrsRecordUpdated (void);
static bool Rec_CheckIfICanEditField (Rec_VisibilityRecordFields_t Visibility); static bool Rec_CheckIfICanEditField (Rec_VisibilityRecordFields_t Visibility);
static void Rec_PutIconsCommands (void *Args); static void Rec_PutIconsCommands (__attribute__((unused)) void *Args);
static void Rec_PutParamsMyTsts (void *Args); static void Rec_PutParamsMyTsts (__attribute__((unused)) void *Args);
static void Rec_PutParamsStdTsts (void *Args); static void Rec_PutParamsStdTsts (__attribute__((unused)) void *Args);
static void Rec_PutParamsWorks (void *Args); static void Rec_PutParamsWorks (__attribute__((unused)) void *Args);
static void Rec_PutParamsStudent (void *Args); static void Rec_PutParamsStudent (__attribute__((unused)) void *Args);
static void Rec_PutParamsMsgUsr (void *Args); static void Rec_PutParamsMsgUsr (__attribute__((unused)) void *Args);
static void Rec_ShowInstitutionInHead (struct Instit *Ins,bool PutFormLinks); static void Rec_ShowInstitutionInHead (struct Instit *Ins,bool PutFormLinks);
static void Rec_ShowPhoto (struct UsrData *UsrDat); static void Rec_ShowPhoto (struct UsrData *UsrDat);
static void Rec_ShowFullName (struct UsrData *UsrDat); static void Rec_ShowFullName (struct UsrData *UsrDat);
@ -608,7 +608,7 @@ void Rec_AskConfirmRemFieldWithRecords (unsigned NumRecords)
/***** Show question and button to remove my photo *****/ /***** Show question and button to remove my photo *****/
Ale_ShowAlertAndButton (ActRemFie,NULL,NULL, Ale_ShowAlertAndButton (ActRemFie,NULL,NULL,
Rec_PutParamFielCod,&Gbl, Rec_PutParamFieldCod,&Gbl.Crs.Records.Field.FieldCod,
Btn_REMOVE_BUTTON,Txt_Remove_record_field, Btn_REMOVE_BUTTON,Txt_Remove_record_field,
Ale_QUESTION,Txt_Do_you_really_want_to_remove_the_field_X_from_the_records_of_Y_Z_, Ale_QUESTION,Txt_Do_you_really_want_to_remove_the_field_X_from_the_records_of_Y_Z_,
Gbl.Crs.Records.Field.Name,Gbl.Hierarchy.Crs.FullName, Gbl.Crs.Records.Field.Name,Gbl.Hierarchy.Crs.FullName,
@ -654,10 +654,10 @@ void Rec_RemoveFieldFromDB (void)
/********************** Put parameter with field code ************************/ /********************** Put parameter with field code ************************/
/*****************************************************************************/ /*****************************************************************************/
static void Rec_PutParamFielCod (void *Args) static void Rec_PutParamFieldCod (void *FieldCod)
{ {
if (Args) if (FieldCod)
Par_PutHiddenParamLong (NULL,"FieldCod",Gbl.Crs.Records.Field.FieldCod); Par_PutHiddenParamLong (NULL,"FieldCod",*((long *) FieldCod));
} }
/*****************************************************************************/ /*****************************************************************************/
@ -2219,7 +2219,7 @@ void Rec_ShowSharedUsrRecord (Rec_SharedRecordViewType_t TypeOfView,
Rec_RecordHelp[TypeOfView],Box_NOT_CLOSABLE,2); Rec_RecordHelp[TypeOfView],Box_NOT_CLOSABLE,2);
else else
Box_BoxTableBegin (StrRecordWidth,NULL, Box_BoxTableBegin (StrRecordWidth,NULL,
Rec_PutIconsCommands,&Gbl, Rec_PutIconsCommands,NULL,
Rec_RecordHelp[TypeOfView],Box_NOT_CLOSABLE,2); Rec_RecordHelp[TypeOfView],Box_NOT_CLOSABLE,2);
/***** Institution and user's photo *****/ /***** Institution and user's photo *****/
@ -2418,7 +2418,7 @@ void Rec_ShowSharedUsrRecord (Rec_SharedRecordViewType_t TypeOfView,
/*********** Show commands (icon to make actions) in record card *************/ /*********** Show commands (icon to make actions) in record card *************/
/*****************************************************************************/ /*****************************************************************************/
static void Rec_PutIconsCommands (void *Args) static void Rec_PutIconsCommands (__attribute__((unused)) void *Args)
{ {
extern const char *Txt_Edit_my_personal_data; extern const char *Txt_Edit_my_personal_data;
extern const char *Txt_My_public_profile; extern const char *Txt_My_public_profile;
@ -2438,232 +2438,213 @@ static void Rec_PutIconsCommands (void *Args)
bool RecipientHasBannedMe; bool RecipientHasBannedMe;
Act_Action_t NextAction; Act_Action_t NextAction;
if (Args) if (!Gbl.Form.Inside && // Only if not inside another form
Act_GetBrowserTab (Gbl.Action.Act) == Act_BRW_1ST_TAB && // Only in main browser tab
Gbl.Usrs.Me.Logged) // Only if I am logged
{ {
if (!Gbl.Form.Inside && // Only if not inside another form ICanViewUsrProfile = Pri_ShowingIsAllowed (Gbl.Record.UsrDat->BaPrfVisibility,
Act_GetBrowserTab (Gbl.Action.Act) == Act_BRW_1ST_TAB && // Only in main browser tab Gbl.Record.UsrDat);
Gbl.Usrs.Me.Logged) // Only if I am logged
/***** Start container *****/
HTM_DIV_Begin ("class=\"FRAME_ICO\"");
if (ItsMe)
/***** Button to edit my record card *****/
Lay_PutContextualLinkOnlyIcon (ActReqEdiRecSha,NULL,
NULL,NULL,
"pen.svg",
Txt_Edit_my_personal_data);
if (ICanViewUsrProfile)
/***** Button to view user's profile *****/
Lay_PutContextualLinkOnlyIcon (ActSeeOthPubPrf,NULL,
Rec_PutParamUsrCodEncrypted,NULL,
"user.svg",
ItsMe ? Txt_My_public_profile :
Txt_Another_user_s_profile);
/***** Button to view user's record card *****/
if (Usr_CheckIfICanViewRecordStd (Gbl.Record.UsrDat))
/* View student's records: common record card and course record card */
Lay_PutContextualLinkOnlyIcon (ActSeeRecOneStd,NULL,
Rec_PutParamUsrCodEncrypted,NULL,
"card.svg",
Txt_View_record_for_this_course);
else if (Usr_CheckIfICanViewRecordTch (Gbl.Record.UsrDat))
Lay_PutContextualLinkOnlyIcon (ActSeeRecOneTch,NULL,
Rec_PutParamUsrCodEncrypted,NULL,
"card.svg",
Txt_View_record_and_office_hours);
/***** Button to view user's agenda *****/
if (ItsMe)
Lay_PutContextualLinkOnlyIcon (ActSeeMyAgd,NULL,
NULL,NULL,
"calendar.svg",
Txt_Show_agenda);
else if (Usr_CheckIfICanViewUsrAgenda (Gbl.Record.UsrDat))
Lay_PutContextualLinkOnlyIcon (ActSeeUsrAgd,NULL,
Rec_PutParamUsrCodEncrypted,NULL,
"calendar.svg",
Txt_Show_agenda);
/***** Button to admin user *****/
if (ItsMe ||
Gbl.Usrs.Me.Role.Logged == Rol_TCH ||
Gbl.Usrs.Me.Role.Logged == Rol_DEG_ADM ||
Gbl.Usrs.Me.Role.Logged == Rol_CTR_ADM ||
Gbl.Usrs.Me.Role.Logged == Rol_INS_ADM ||
Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM)
{ {
ICanViewUsrProfile = Pri_ShowingIsAllowed (Gbl.Record.UsrDat->BaPrfVisibility, switch (Gbl.Record.UsrDat->Roles.InCurrentCrs.Role)
Gbl.Record.UsrDat);
/***** Start container *****/
HTM_DIV_Begin ("class=\"FRAME_ICO\"");
if (ItsMe)
/***** Button to edit my record card *****/
Lay_PutContextualLinkOnlyIcon (ActReqEdiRecSha,NULL,
NULL,NULL,
"pen.svg",
Txt_Edit_my_personal_data);
if (ICanViewUsrProfile)
/***** Button to view user's profile *****/
Lay_PutContextualLinkOnlyIcon (ActSeeOthPubPrf,NULL,
Rec_PutParamUsrCodEncrypted,NULL,
"user.svg",
ItsMe ? Txt_My_public_profile :
Txt_Another_user_s_profile);
/***** Button to view user's record card *****/
if (Usr_CheckIfICanViewRecordStd (Gbl.Record.UsrDat))
/* View student's records: common record card and course record card */
Lay_PutContextualLinkOnlyIcon (ActSeeRecOneStd,NULL,
Rec_PutParamUsrCodEncrypted,NULL,
"card.svg",
Txt_View_record_for_this_course);
else if (Usr_CheckIfICanViewRecordTch (Gbl.Record.UsrDat))
Lay_PutContextualLinkOnlyIcon (ActSeeRecOneTch,NULL,
Rec_PutParamUsrCodEncrypted,NULL,
"card.svg",
Txt_View_record_and_office_hours);
/***** Button to view user's agenda *****/
if (ItsMe)
Lay_PutContextualLinkOnlyIcon (ActSeeMyAgd,NULL,
NULL,NULL,
"calendar.svg",
Txt_Show_agenda);
else if (Usr_CheckIfICanViewUsrAgenda (Gbl.Record.UsrDat))
Lay_PutContextualLinkOnlyIcon (ActSeeUsrAgd,NULL,
Rec_PutParamUsrCodEncrypted,NULL,
"calendar.svg",
Txt_Show_agenda);
/***** Button to admin user *****/
if (ItsMe ||
Gbl.Usrs.Me.Role.Logged == Rol_TCH ||
Gbl.Usrs.Me.Role.Logged == Rol_DEG_ADM ||
Gbl.Usrs.Me.Role.Logged == Rol_CTR_ADM ||
Gbl.Usrs.Me.Role.Logged == Rol_INS_ADM ||
Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM)
{ {
switch (Gbl.Record.UsrDat->Roles.InCurrentCrs.Role) case Rol_STD:
{ NextAction = ActReqMdfStd;
case Rol_STD: break;
NextAction = ActReqMdfStd; case Rol_NET:
break; NextAction = ActReqMdfNET;
case Rol_NET: break;
NextAction = ActReqMdfNET; case Rol_TCH:
break; NextAction = ActReqMdfTch;
case Rol_TCH: break;
NextAction = ActReqMdfTch; default: // Guest, user or admin
break; NextAction = ActReqMdfOth;
default: // Guest, user or admin break;
NextAction = ActReqMdfOth;
break;
}
Lay_PutContextualLinkOnlyIcon (NextAction,NULL,
Rec_PutParamUsrCodEncrypted,NULL,
"user-cog.svg",
Txt_Administer_user);
} }
Lay_PutContextualLinkOnlyIcon (NextAction,NULL,
if (Gbl.Hierarchy.Level == Hie_CRS) // Course selected Rec_PutParamUsrCodEncrypted,NULL,
{ "user-cog.svg",
if (Gbl.Record.UsrDat->Roles.InCurrentCrs.Role == Rol_STD) // He/she is a student in current course Txt_Administer_user);
{
/***** Button to view student's test exams *****/
if (Usr_CheckIfICanViewTst (Gbl.Record.UsrDat))
{
if (ItsMe)
Lay_PutContextualLinkOnlyIcon (ActSeeMyTstRes,NULL,
Rec_PutParamsMyTsts,&Gbl,
"check.svg",
Txt_View_test_results);
else // Not me
Lay_PutContextualLinkOnlyIcon (ActSeeUsrTstRes,NULL,
Rec_PutParamsStdTsts,&Gbl,
"check.svg",
Txt_View_test_results);
}
/***** Button to view student's assignments and works *****/
if (Usr_CheckIfICanViewAsgWrk (Gbl.Record.UsrDat))
{
if (ItsMe)
Lay_PutContextualLinkOnlyIcon (ActAdmAsgWrkUsr,NULL,
NULL,NULL,
"folder-open.svg",
Txt_View_homework);
else // Not me, I am not a student in current course
Lay_PutContextualLinkOnlyIcon (ActAdmAsgWrkCrs,NULL,
Rec_PutParamsWorks,&Gbl,
"folder-open.svg",
Txt_View_homework);
}
/***** Button to view student's attendance *****/
if (Usr_CheckIfICanViewAtt (Gbl.Record.UsrDat))
{
if (ItsMe)
Lay_PutContextualLinkOnlyIcon (ActSeeLstMyAtt,NULL,
NULL,NULL,
"calendar-check.svg",
Txt_View_attendance);
else // Not me
Lay_PutContextualLinkOnlyIcon (ActSeeLstUsrAtt,NULL,
Rec_PutParamsStudent,&Gbl,
"calendar-check.svg",
Txt_View_attendance);
}
}
}
/***** Button to print QR code *****/
QR_PutLinkToPrintQRCode (ActPrnUsrQR,
Rec_PutParamUsrCodEncrypted,NULL);
/***** Button to send a message *****/
RecipientHasBannedMe = Msg_CheckIfUsrIsBanned (Gbl.Usrs.Me.UsrDat.UsrCod, // From:
Gbl.Record.UsrDat->UsrCod); // To:
if (!RecipientHasBannedMe)
Lay_PutContextualLinkOnlyIcon (ActReqMsgUsr,NULL,
Rec_PutParamsMsgUsr,&Gbl,
"envelope.svg",
Txt_Write_a_message);
/***** Button to follow / unfollow *****/
if (!ItsMe) // Not me
{
if (Fol_CheckUsrIsFollowerOf (Gbl.Usrs.Me.UsrDat.UsrCod,
Gbl.Record.UsrDat->UsrCod))
// I follow user
Lay_PutContextualLinkOnlyIcon (ActUnfUsr,NULL,
Rec_PutParamUsrCodEncrypted,NULL,
"user-check.svg",
Txt_Following_unfollow); // Put button to unfollow, even if I can not view user's profile
else if (ICanViewUsrProfile)
Lay_PutContextualLinkOnlyIcon (ActFolUsr,NULL,
Rec_PutParamUsrCodEncrypted,NULL,
"user-plus.svg",
Txt_Follow); // Put button to follow
}
/***** Button to change user's photo *****/
Pho_PutIconToChangeUsrPhoto ();
/***** Button to change user's account *****/
Acc_PutIconToChangeUsrAccount ();
/***** End container *****/
HTM_DIV_End ();
} }
if (Gbl.Hierarchy.Level == Hie_CRS) // Course selected
{
if (Gbl.Record.UsrDat->Roles.InCurrentCrs.Role == Rol_STD) // He/she is a student in current course
{
/***** Button to view student's test exams *****/
if (Usr_CheckIfICanViewTst (Gbl.Record.UsrDat))
{
if (ItsMe)
Lay_PutContextualLinkOnlyIcon (ActSeeMyTstRes,NULL,
Rec_PutParamsMyTsts,NULL,
"check.svg",
Txt_View_test_results);
else // Not me
Lay_PutContextualLinkOnlyIcon (ActSeeUsrTstRes,NULL,
Rec_PutParamsStdTsts,NULL,
"check.svg",
Txt_View_test_results);
}
/***** Button to view student's assignments and works *****/
if (Usr_CheckIfICanViewAsgWrk (Gbl.Record.UsrDat))
{
if (ItsMe)
Lay_PutContextualLinkOnlyIcon (ActAdmAsgWrkUsr,NULL,
NULL,NULL,
"folder-open.svg",
Txt_View_homework);
else // Not me, I am not a student in current course
Lay_PutContextualLinkOnlyIcon (ActAdmAsgWrkCrs,NULL,
Rec_PutParamsWorks,NULL,
"folder-open.svg",
Txt_View_homework);
}
/***** Button to view student's attendance *****/
if (Usr_CheckIfICanViewAtt (Gbl.Record.UsrDat))
{
if (ItsMe)
Lay_PutContextualLinkOnlyIcon (ActSeeLstMyAtt,NULL,
NULL,NULL,
"calendar-check.svg",
Txt_View_attendance);
else // Not me
Lay_PutContextualLinkOnlyIcon (ActSeeLstUsrAtt,NULL,
Rec_PutParamsStudent,NULL,
"calendar-check.svg",
Txt_View_attendance);
}
}
}
/***** Button to print QR code *****/
QR_PutLinkToPrintQRCode (ActPrnUsrQR,
Rec_PutParamUsrCodEncrypted,NULL);
/***** Button to send a message *****/
RecipientHasBannedMe = Msg_CheckIfUsrIsBanned (Gbl.Usrs.Me.UsrDat.UsrCod, // From:
Gbl.Record.UsrDat->UsrCod); // To:
if (!RecipientHasBannedMe)
Lay_PutContextualLinkOnlyIcon (ActReqMsgUsr,NULL,
Rec_PutParamsMsgUsr,NULL,
"envelope.svg",
Txt_Write_a_message);
/***** Button to follow / unfollow *****/
if (!ItsMe) // Not me
{
if (Fol_CheckUsrIsFollowerOf (Gbl.Usrs.Me.UsrDat.UsrCod,
Gbl.Record.UsrDat->UsrCod))
// I follow user
Lay_PutContextualLinkOnlyIcon (ActUnfUsr,NULL,
Rec_PutParamUsrCodEncrypted,NULL,
"user-check.svg",
Txt_Following_unfollow); // Put button to unfollow, even if I can not view user's profile
else if (ICanViewUsrProfile)
Lay_PutContextualLinkOnlyIcon (ActFolUsr,NULL,
Rec_PutParamUsrCodEncrypted,NULL,
"user-plus.svg",
Txt_Follow); // Put button to follow
}
/***** Button to change user's photo *****/
Pho_PutIconToChangeUsrPhoto ();
/***** Button to change user's account *****/
Acc_PutIconToChangeUsrAccount ();
/***** End container *****/
HTM_DIV_End ();
} }
} }
void Rec_PutParamUsrCodEncrypted (void *Args) void Rec_PutParamUsrCodEncrypted (__attribute__((unused)) void *Args)
{ {
if (Args) Usr_PutParamUsrCodEncrypted (Gbl.Record.UsrDat->EncryptedUsrCod);
Usr_PutParamUsrCodEncrypted (Gbl.Record.UsrDat->EncryptedUsrCod);
} }
static void Rec_PutParamsMyTsts (void *Args) static void Rec_PutParamsMyTsts (__attribute__((unused)) void *Args)
{ {
if (Args) Dat_SetIniEndDates ();
{ Dat_WriteParamsIniEndDates ();
Dat_SetIniEndDates ();
Dat_WriteParamsIniEndDates ();
}
} }
static void Rec_PutParamsStdTsts (void *Args) static void Rec_PutParamsStdTsts (__attribute__((unused)) void *Args)
{ {
if (Args) Rec_PutParamsStudent (NULL);
{ Dat_SetIniEndDates ();
Rec_PutParamsStudent (&Gbl); Dat_WriteParamsIniEndDates ();
Dat_SetIniEndDates ();
Dat_WriteParamsIniEndDates ();
}
} }
static void Rec_PutParamsWorks (void *Args) static void Rec_PutParamsWorks (__attribute__((unused)) void *Args)
{ {
if (Args) Rec_PutParamsStudent (NULL);
{ Par_PutHiddenParamChar ("FullTree",'Y'); // By default, show all files
Rec_PutParamsStudent (&Gbl); Gbl.FileBrowser.FullTree = true;
Par_PutHiddenParamChar ("FullTree",'Y'); // By default, show all files Brw_PutHiddenParamFullTreeIfSelected (&Gbl.FileBrowser.FullTree);
Gbl.FileBrowser.FullTree = true;
Brw_PutHiddenParamFullTreeIfSelected (&Gbl.FileBrowser.FullTree);
}
} }
static void Rec_PutParamsStudent (void *Args) static void Rec_PutParamsStudent (__attribute__((unused)) void *Args)
{ {
if (Args) Par_PutHiddenParamString (NULL,"UsrCodStd",Gbl.Record.UsrDat->EncryptedUsrCod);
{ Grp_PutParamAllGroups ();
Par_PutHiddenParamString (NULL,"UsrCodStd",Gbl.Record.UsrDat->EncryptedUsrCod);
Grp_PutParamAllGroups ();
}
} }
static void Rec_PutParamsMsgUsr (void *Args) static void Rec_PutParamsMsgUsr (__attribute__((unused)) void *Args)
{ {
if (Args) Rec_PutParamUsrCodEncrypted (NULL);
{ Grp_PutParamAllGroups ();
Rec_PutParamUsrCodEncrypted (Args); Par_PutHiddenParamChar ("ShowOnlyOneRecipient",'Y');
Grp_PutParamAllGroups ();
Par_PutHiddenParamChar ("ShowOnlyOneRecipient",'Y');
}
} }
/*****************************************************************************/ /*****************************************************************************/

View File

@ -167,7 +167,7 @@ void Rec_ShowSharedRecordUnmodifiable (struct UsrData *UsrDat);
void Rec_ShowPublicSharedRecordOtherUsr (void); void Rec_ShowPublicSharedRecordOtherUsr (void);
void Rec_ShowSharedUsrRecord (Rec_SharedRecordViewType_t TypeOfView, void Rec_ShowSharedUsrRecord (Rec_SharedRecordViewType_t TypeOfView,
struct UsrData *UsrDat,const char *Anchor); struct UsrData *UsrDat,const char *Anchor);
void Rec_PutParamUsrCodEncrypted (void *Args); void Rec_PutParamUsrCodEncrypted (__attribute__((unused)) void *Args);
void Rec_UpdateMyRecord (void); void Rec_UpdateMyRecord (void);
Rol_Role_t Rec_GetRoleFromRecordForm (void); Rol_Role_t Rec_GetRoleFromRecordForm (void);