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:
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 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: 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.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)

View File

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

View File

@ -519,20 +519,7 @@ struct Globals
char TmpDir[NAME_MAX + 1];
} ZIP;
} FileBrowser; // Struct used for a file browser
struct
{
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 Prj_Projects Prjs;
struct
{
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_PutLinkToSendNewPasswdParams (void *Args);
static void Pwd_PutLinkToSendNewPasswdParams (void *UsrIdLogin);
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;
Lay_PutContextualLinkIconText (ActReqSndNewPwd,NULL,
Pwd_PutLinkToSendNewPasswdParams,&Gbl,
Pwd_PutLinkToSendNewPasswdParams,Gbl.Usrs.Me.UsrIdLogin,
"key.svg",
Txt_Forgotten_password);
}
static void Pwd_PutLinkToSendNewPasswdParams (void *Args)
static void Pwd_PutLinkToSendNewPasswdParams (void *UsrIdLogin)
{
if (Args)
Par_PutHiddenParamString (NULL,"UsrId",Gbl.Usrs.Me.UsrIdLogin);
if (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 ****************************/
/*****************************************************************************/
static void Pho_PutIconToRequestRemoveMyPhoto (void *Args);
static void Pho_PutIconToRequestRemoveOtherUsrPhoto (void *Args);
static void Pho_PutIconToRequestRemoveMyPhoto (__attribute__((unused)) void *Args);
static void Pho_PutIconToRequestRemoveOtherUsrPhoto (__attribute__((unused)) void *Args);
static void Pho_ReqOtherUsrPhoto (void);
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 Pho_HowOrderDegrees_t Pho_GetHowOrderDegreesFromForm (void);
static void Pho_PutIconToPrintDegreeStats (void *Args);
static void Pho_PutLinkToPrintViewOfDegreeStatsParams (void *Args);
static void Pho_PutIconToPrintDegreeStats (__attribute__((unused)) void *Args);
static void Pho_PutLinkToPrintViewOfDegreeStatsParams (__attribute__((unused)) void *Args);
static void Pho_PutLinkToCalculateDegreeStats (void);
static void Pho_GetMaxStdsPerDegree (void);
@ -218,54 +218,50 @@ void Pho_PutIconToChangeUsrPhoto (void)
/************** 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;
if (Args)
/***** Link to request the removal of my photo *****/
if (Gbl.Usrs.Me.MyPhotoExists)
Lay_PutContextualLinkOnlyIcon (ActReqRemMyPho,NULL,
NULL,NULL,
"trash.svg",
Txt_Remove_photo);
/***** Link to request the removal of my photo *****/
if (Gbl.Usrs.Me.MyPhotoExists)
Lay_PutContextualLinkOnlyIcon (ActReqRemMyPho,NULL,
NULL,NULL,
"trash.svg",
Txt_Remove_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;
char PhotoURL[PATH_MAX + 1];
bool PhotoExists;
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 *****/
PhotoExists = Pho_BuildLinkToPhoto (&Gbl.Usrs.Other.UsrDat,PhotoURL);
if (PhotoExists)
switch (Gbl.Usrs.Other.UsrDat.Roles.InCurrentCrs.Role)
{
switch (Gbl.Usrs.Other.UsrDat.Roles.InCurrentCrs.Role)
{
case Rol_STD:
NextAction = ActReqRemStdPho;
break;
case Rol_NET:
case Rol_TCH:
NextAction = ActReqRemTchPho;
break;
default: // Guest, user or admin
NextAction = ActReqRemOthPho;
break;
}
Lay_PutContextualLinkOnlyIcon (NextAction,NULL,
Usr_PutParamOtherUsrCodEncrypted,Gbl.Usrs.Other.UsrDat.EncryptedUsrCod,
"trash.svg",
Txt_Remove_photo);
case Rol_STD:
NextAction = ActReqRemStdPho;
break;
case Rol_NET:
case Rol_TCH:
NextAction = ActReqRemTchPho;
break;
default: // Guest, user or admin
NextAction = ActReqRemOthPho;
break;
}
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 *****/
Box_BoxBegin (NULL,Txt_Photo,
ItsMe ? Pho_PutIconToRequestRemoveMyPhoto :
Pho_PutIconToRequestRemoveOtherUsrPhoto,&Gbl,
Pho_PutIconToRequestRemoveOtherUsrPhoto,NULL,
Hlp_PROFILE_Photo,Box_NOT_CLOSABLE);
/***** Begin form *****/
@ -1731,7 +1727,7 @@ void Pho_ShowOrPrintPhotoDegree (Pho_AvgPhotoSeeOrPrint_t SeeOrPrint)
case Pho_DEGREES_SEE:
/***** Begin box *****/
Box_BoxBegin (NULL,Txt_Degrees,
Pho_PutIconToPrintDegreeStats,&Gbl,
Pho_PutIconToPrintDegreeStats,NULL,
Hlp_ANALYTICS_Degrees,Box_NOT_CLOSABLE);
HTM_TABLE_BeginCenterPadding (2);
@ -1784,14 +1780,11 @@ void Pho_ShowOrPrintPhotoDegree (Pho_AvgPhotoSeeOrPrint_t SeeOrPrint)
/**************** 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_PutHiddenParamOrderDegrees ();
}
Pho_PutHiddenParamTypeOfAvg ();
Pho_PutHiddenParamPhotoSize ();
Pho_PutHiddenParamOrderDegrees ();
}
/*****************************************************************************/
@ -1990,22 +1983,18 @@ static Pho_HowOrderDegrees_t Pho_GetHowOrderDegreesFromForm (void)
/*************** 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,
Pho_PutLinkToPrintViewOfDegreeStatsParams,&Gbl);
Ico_PutContextualIconToPrint (ActPrnPhoDeg,
Pho_PutLinkToPrintViewOfDegreeStatsParams,NULL);
}
static void Pho_PutLinkToPrintViewOfDegreeStatsParams (void *Args)
static void Pho_PutLinkToPrintViewOfDegreeStatsParams (__attribute__((unused)) void *Args)
{
if (Args)
{
Pho_PutHiddenParamTypeOfAvg ();
Pho_PutHiddenParamPhotoSize ();
Pho_PutHiddenParamOrderDegrees ();
Usr_PutParamsPrefsAboutUsrList ();
}
Pho_PutHiddenParamTypeOfAvg ();
Pho_PutHiddenParamPhotoSize ();
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 *****/
if (SeeOrPrint == Pho_DEGREES_SEE)
Usr_ShowFormsToSelectUsrListType (Pho_PutParamsDegPhoto,&Gbl);
Usr_ShowFormsToSelectUsrListType (Pho_PutParamsDegPhoto,NULL);
HTM_TABLE_BeginCenter ();
/***** Get and print degrees *****/
@ -2240,7 +2229,7 @@ static void Pho_ShowOrPrintListDegrees (Pho_AvgPhotoSeeOrPrint_t SeeOrPrint)
/***** Class photo start *****/
if (SeeOrPrint == Pho_DEGREES_SEE)
/***** Form to select type of list used to display degree photos *****/
Usr_ShowFormsToSelectUsrListType (Pho_PutParamsDegPhoto,&Gbl);
Usr_ShowFormsToSelectUsrListType (Pho_PutParamsDegPhoto,NULL);
/***** Write heading *****/
HTM_TABLE_BeginCenterPadding (2);

View File

@ -121,7 +121,7 @@ void Pho_ShowPhotoDegree (void);
void Pho_PrintPhotoDegree (void);
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_PutHiddenParamPhotoSize (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 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_EditPlacesInternal (void);
static void Plc_PutIconsEditingPlaces (void *Args);
static void Plc_PutIconsEditingPlaces (__attribute__((unused)) void *Args);
static void Plc_ListPlacesForEdition (void);
static void Plc_PutParamPlcCod (long PlcCod);
@ -112,7 +112,7 @@ void Plc_SeePlaces (void)
/***** Table head *****/
Box_BoxBegin (NULL,Txt_Places,
Plc_PutIconsListingPlaces,&Gbl,
Plc_PutIconsListingPlaces,NULL,
Hlp_INSTITUTION_Places,Box_NOT_CLOSABLE);
HTM_TABLE_BeginWideMarginPadding (2);
HTM_TR_Begin (NULL);
@ -238,17 +238,14 @@ static bool Plc_CheckIfICanCreatePlaces (void)
/****************** 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 ())
Plc_PutIconToEditPlaces ();
/***** Put icon to edit places *****/
if (Plc_CheckIfICanCreatePlaces ())
Plc_PutIconToEditPlaces ();
/***** Put icon to view centres *****/
Ctr_PutIconToViewCentres ();
}
/***** Put icon to view centres *****/
Ctr_PutIconToViewCentres ();
}
/*****************************************************************************/
@ -287,7 +284,7 @@ static void Plc_EditPlacesInternal (void)
/***** Begin box *****/
Box_BoxBegin (NULL,Txt_Places,
Plc_PutIconsEditingPlaces,&Gbl,
Plc_PutIconsEditingPlaces,NULL,
Hlp_INSTITUTION_Places_edit,Box_NOT_CLOSABLE);
/***** Put a form to create a new place *****/
@ -309,16 +306,13 @@ static void Plc_EditPlacesInternal (void)
/**************** 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 *****/
Ctr_PutIconToViewCentres ();
}
/***** Put icon to view centres *****/
Ctr_PutIconToViewCentres ();
}
/*****************************************************************************/

View File

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

View File

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

View File

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

View File

@ -132,8 +132,24 @@ typedef enum
Prj_ROLE_EVL = 3, // Evaluator
} 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 Project
struct Prj_Project
{
long PrjCod;
long CrsCod;
@ -165,16 +181,16 @@ void Prj_PutParams (struct Prj_Filter *Filter,
unsigned NumPage,
long PrjCod);
void Prj_ShowOneUniqueProject (struct Project *Prj);
void Prj_ShowOneUniqueProject (struct Prj_Project *Prj);
void Prj_PrintOneProject (void);
void Prj_FlushCacheMyRolesInProject (void);
Prj_RoleInProject_t Prj_GetMyRolesInProject (long PrjCod);
void Prj_ReqAddStds (void *Args);
void Prj_ReqAddTuts (void *Args);
void Prj_ReqAddEvls (void *Args);
void Prj_ReqAddStds (void);
void Prj_ReqAddTuts (void);
void Prj_ReqAddEvls (void);
void Prj_GetSelectedUsrsAndAddStds (void);
void Prj_GetSelectedUsrsAndAddTuts (void);
@ -195,10 +211,10 @@ bool Prj_CheckIfICanViewProjectFiles (unsigned MyRolesInProject);
void Prj_RequestCreatePrj (void);
void Prj_RequestEditPrj (void);
void Prj_AllocMemProject (struct Project *Prj);
void Prj_FreeMemProject (struct Project *Prj);
void Prj_AllocMemProject (struct Prj_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);
void Prj_FreeListProjects (void);

View File

@ -78,7 +78,7 @@ extern struct Globals Gbl;
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],
unsigned *NumLines,Rec_VisibilityRecordFields_t *Visibility);
@ -103,12 +103,12 @@ static void Rec_ShowCrsRecord (Rec_CourseRecordViewType_t TypeOfView,
static void Rec_ShowMyCrsRecordUpdated (void);
static bool Rec_CheckIfICanEditField (Rec_VisibilityRecordFields_t Visibility);
static void Rec_PutIconsCommands (void *Args);
static void Rec_PutParamsMyTsts (void *Args);
static void Rec_PutParamsStdTsts (void *Args);
static void Rec_PutParamsWorks (void *Args);
static void Rec_PutParamsStudent (void *Args);
static void Rec_PutParamsMsgUsr (void *Args);
static void Rec_PutIconsCommands (__attribute__((unused)) void *Args);
static void Rec_PutParamsMyTsts (__attribute__((unused)) void *Args);
static void Rec_PutParamsStdTsts (__attribute__((unused)) void *Args);
static void Rec_PutParamsWorks (__attribute__((unused)) void *Args);
static void Rec_PutParamsStudent (__attribute__((unused)) void *Args);
static void Rec_PutParamsMsgUsr (__attribute__((unused)) void *Args);
static void Rec_ShowInstitutionInHead (struct Instit *Ins,bool PutFormLinks);
static void Rec_ShowPhoto (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 *****/
Ale_ShowAlertAndButton (ActRemFie,NULL,NULL,
Rec_PutParamFielCod,&Gbl,
Rec_PutParamFieldCod,&Gbl.Crs.Records.Field.FieldCod,
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_,
Gbl.Crs.Records.Field.Name,Gbl.Hierarchy.Crs.FullName,
@ -654,10 +654,10 @@ void Rec_RemoveFieldFromDB (void)
/********************** Put parameter with field code ************************/
/*****************************************************************************/
static void Rec_PutParamFielCod (void *Args)
static void Rec_PutParamFieldCod (void *FieldCod)
{
if (Args)
Par_PutHiddenParamLong (NULL,"FieldCod",Gbl.Crs.Records.Field.FieldCod);
if (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);
else
Box_BoxTableBegin (StrRecordWidth,NULL,
Rec_PutIconsCommands,&Gbl,
Rec_PutIconsCommands,NULL,
Rec_RecordHelp[TypeOfView],Box_NOT_CLOSABLE,2);
/***** 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 *************/
/*****************************************************************************/
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_My_public_profile;
@ -2438,232 +2438,213 @@ static void Rec_PutIconsCommands (void *Args)
bool RecipientHasBannedMe;
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
Act_GetBrowserTab (Gbl.Action.Act) == Act_BRW_1ST_TAB && // Only in main browser tab
Gbl.Usrs.Me.Logged) // Only if I am logged
ICanViewUsrProfile = Pri_ShowingIsAllowed (Gbl.Record.UsrDat->BaPrfVisibility,
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)
{
ICanViewUsrProfile = Pri_ShowingIsAllowed (Gbl.Record.UsrDat->BaPrfVisibility,
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)
{
switch (Gbl.Record.UsrDat->Roles.InCurrentCrs.Role)
{
case Rol_STD:
NextAction = ActReqMdfStd;
break;
case Rol_NET:
NextAction = ActReqMdfNET;
break;
case Rol_TCH:
NextAction = ActReqMdfTch;
break;
default: // Guest, user or admin
NextAction = ActReqMdfOth;
break;
}
Lay_PutContextualLinkOnlyIcon (NextAction,NULL,
Rec_PutParamUsrCodEncrypted,NULL,
"user-cog.svg",
Txt_Administer_user);
case Rol_STD:
NextAction = ActReqMdfStd;
break;
case Rol_NET:
NextAction = ActReqMdfNET;
break;
case Rol_TCH:
NextAction = ActReqMdfTch;
break;
default: // Guest, user or admin
NextAction = ActReqMdfOth;
break;
}
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,&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 ();
Lay_PutContextualLinkOnlyIcon (NextAction,NULL,
Rec_PutParamUsrCodEncrypted,NULL,
"user-cog.svg",
Txt_Administer_user);
}
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 (&Gbl);
Dat_SetIniEndDates ();
Dat_WriteParamsIniEndDates ();
}
Rec_PutParamsStudent (NULL);
Dat_SetIniEndDates ();
Dat_WriteParamsIniEndDates ();
}
static void Rec_PutParamsWorks (void *Args)
static void Rec_PutParamsWorks (__attribute__((unused)) void *Args)
{
if (Args)
{
Rec_PutParamsStudent (&Gbl);
Par_PutHiddenParamChar ("FullTree",'Y'); // By default, show all files
Gbl.FileBrowser.FullTree = true;
Brw_PutHiddenParamFullTreeIfSelected (&Gbl.FileBrowser.FullTree);
}
Rec_PutParamsStudent (NULL);
Par_PutHiddenParamChar ("FullTree",'Y'); // By default, show all files
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 (Args);
Grp_PutParamAllGroups ();
Par_PutHiddenParamChar ("ShowOnlyOneRecipient",'Y');
}
Rec_PutParamUsrCodEncrypted (NULL);
Grp_PutParamAllGroups ();
Par_PutHiddenParamChar ("ShowOnlyOneRecipient",'Y');
}
/*****************************************************************************/

View File

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