Version19.218

This commit is contained in:
acanas 2020-05-07 19:31:58 +02:00
parent dc919206d6
commit c313c5947d
9 changed files with 230 additions and 179 deletions

View File

@ -551,7 +551,7 @@ const struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
[ActSeeAllExa ] = {1848, 4,TabAss,ActSeeAllExa ,0x200,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Exa_SeeAllExams ,"file-signature" }, [ActSeeAllExa ] = {1848, 4,TabAss,ActSeeAllExa ,0x200,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Exa_SeeAllExams ,"file-signature" },
[ActSeeAllGam ] = {1649, 4,TabAss,ActSeeAllGam ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Gam_SeeAllGames ,"gamepad" }, [ActSeeAllGam ] = {1649, 4,TabAss,ActSeeAllGam ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Gam_SeeAllGames ,"gamepad" },
[ActSeeAllSvy ] = { 966, 5,TabAss,ActSeeAllSvy ,0x3F8,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Svy_SeeAllSurveys ,"poll" }, [ActSeeAllSvy ] = { 966, 5,TabAss,ActSeeAllSvy ,0x3F8,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Svy_SeeAllSurveys ,"poll" },
[ActSeeAllExaAnn ] = { 85, 6,TabAss,ActSeeAllExaAnn ,0x3F8,0x3C7, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaAnn_ListExamAnnouncementsSee,"bullhorn" }, [ActSeeAllExaAnn ] = { 85, 6,TabAss,ActSeeAllExaAnn ,0x3F8,0x3C7, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaAnn_ListExamAnnsSee,"bullhorn" },
// Actions not in menu: // Actions not in menu:
[ActEdiAss ] = { 69,-1,TabUnk,ActSeeAss ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Inf_FormsToSelSendInfo ,NULL}, [ActEdiAss ] = { 69,-1,TabUnk,ActSeeAss ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Inf_FormsToSelSendInfo ,NULL},
@ -809,15 +809,15 @@ const struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
[ActReqRemSvyQst ] = {1524,-1,TabUnk,ActSeeAllSvy ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Svy_RequestRemoveQst ,NULL}, [ActReqRemSvyQst ] = {1524,-1,TabUnk,ActSeeAllSvy ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Svy_RequestRemoveQst ,NULL},
[ActRemSvyQst ] = { 981,-1,TabUnk,ActSeeAllSvy ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Svy_RemoveQst ,NULL}, [ActRemSvyQst ] = { 981,-1,TabUnk,ActSeeAllSvy ,0x3E0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Svy_RemoveQst ,NULL},
[ActSeeOneExaAnn ] = {1572,-1,TabUnk,ActSeeAllExaAnn ,0x3F8,0x3C7, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaAnn_ListExamAnnouncementsCod,NULL}, [ActSeeOneExaAnn ] = {1572,-1,TabUnk,ActSeeAllExaAnn ,0x3F8,0x3C7, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaAnn_ListExamAnnsCod ,NULL},
[ActSeeDatExaAnn ] = {1571,-1,TabUnk,ActSeeAllExaAnn ,0x3F8,0x3C7, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaAnn_ListExamAnnouncementsDay,NULL}, [ActSeeDatExaAnn ] = {1571,-1,TabUnk,ActSeeAllExaAnn ,0x3F8,0x3C7, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaAnn_ListExamAnnsDay ,NULL},
[ActEdiExaAnn ] = { 91,-1,TabUnk,ActSeeAllExaAnn ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaAnn_PutFrmEditAExamAnnouncement,NULL}, [ActEdiExaAnn ] = { 91,-1,TabUnk,ActSeeAllExaAnn ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaAnn_PutFrmEditAExamAnn ,NULL},
[ActRcvExaAnn ] = { 110,-1,TabUnk,ActSeeAllExaAnn ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,ExaAnn_ReceiveExamAnnouncement1,ExaAnn_ReceiveExamAnnouncement2,NULL}, [ActRcvExaAnn ] = { 110,-1,TabUnk,ActSeeAllExaAnn ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,ExaAnn_ReceiveExamAnn1 ,ExaAnn_ReceiveExamAnn2 ,NULL},
[ActPrnExaAnn ] = { 179,-1,TabUnk,ActSeeAllExaAnn ,0x3F8,0x3C7, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_NEW_TAB,NULL ,ExaAnn_PrintExamAnnouncement ,NULL}, [ActPrnExaAnn ] = { 179,-1,TabUnk,ActSeeAllExaAnn ,0x3F8,0x3C7, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_NEW_TAB,NULL ,ExaAnn_PrintExamAnn ,NULL},
[ActReqRemExaAnn ] = {1619,-1,TabUnk,ActSeeAllExaAnn ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaAnn_ReqRemoveExamAnnouncement,NULL}, [ActReqRemExaAnn ] = {1619,-1,TabUnk,ActSeeAllExaAnn ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaAnn_ReqRemoveExamAnn ,NULL},
[ActRemExaAnn ] = { 187,-1,TabUnk,ActSeeAllExaAnn ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,ExaAnn_RemoveExamAnnouncement1 ,ExaAnn_RemoveExamAnnouncement2 ,NULL}, [ActRemExaAnn ] = { 187,-1,TabUnk,ActSeeAllExaAnn ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,ExaAnn_RemoveExamAnn1 ,ExaAnn_RemoveExamAnn2 ,NULL},
[ActHidExaAnn ] = {1620,-1,TabUnk,ActSeeAllExaAnn ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,ExaAnn_HideExamAnnouncement ,ExaAnn_ListExamAnnouncementsEdit,NULL}, [ActHidExaAnn ] = {1620,-1,TabUnk,ActSeeAllExaAnn ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,ExaAnn_HideExamAnn ,ExaAnn_ListExamAnnsEdit ,NULL},
[ActShoExaAnn ] = {1621,-1,TabUnk,ActSeeAllExaAnn ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,ExaAnn_UnhideExamAnnouncement ,ExaAnn_ListExamAnnouncementsEdit,NULL}, [ActShoExaAnn ] = {1621,-1,TabUnk,ActSeeAllExaAnn ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,ExaAnn_UnhideExamAnn ,ExaAnn_ListExamAnnsEdit ,NULL},
// TabFil ****************************************************************** // TabFil ******************************************************************
// Actions in menu: // Actions in menu:

View File

@ -548,10 +548,12 @@ 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.217 (2020-05-07)" #define Log_PLATFORM_VERSION "SWAD 19.218 (2020-05-07)"
#define CSS_FILE "swad19.217.css" #define CSS_FILE "swad19.217.css"
#define JS_FILE "swad19.193.1.js" #define JS_FILE "swad19.193.1.js"
/* /*
Version 19.218: May 07, 2020 Fixed bug in creation of new exam announcements, reported by Francisco Gómez Mula.
Changes in exam announcementes. (302170 lines)
Version 19.217: May 07, 2020 Generate and show questions of each set in an exam print. Not finished. (302124 lines) Version 19.217: May 07, 2020 Generate and show questions of each set in an exam print. Not finished. (302124 lines)
Version 19.216.1: May 07, 2020 Fixed bug in edition of exam questions, reported by Antonio Cañas Martínez. Version 19.216.1: May 07, 2020 Fixed bug in edition of exam questions, reported by Antonio Cañas Martínez.
Changes in some texts. (301957 lines) Changes in some texts. (301957 lines)

View File

@ -98,6 +98,25 @@ static const unsigned Dat_NumDaysMonth[1 + 12] =
static void Dat_PutIconsDateFormat (__attribute__((unused)) void *Args); static void Dat_PutIconsDateFormat (__attribute__((unused)) void *Args);
static unsigned Dat_GetParamDateFormat (void); static unsigned Dat_GetParamDateFormat (void);
/*****************************************************************************/
/******************************** Reset date *********************************/
/*****************************************************************************/
void Dat_ResetDate (struct Date *Date)
{
Date->Day = 0;
Date->Month = 0;
Date->Year = 0;
Date->Week = 0;
Date->YYYYMMDD[0] = '\0';
}
void Dat_ResetHour (struct Hour *Hour)
{
Hour->Hour = 0;
Hour->Minute = 0;
}
/*****************************************************************************/ /*****************************************************************************/
/************** Put icons to select the first day of the week ****************/ /************** Put icons to select the first day of the week ****************/
/*****************************************************************************/ /*****************************************************************************/

View File

@ -124,6 +124,9 @@ typedef enum
/***************************** Public prototypes *****************************/ /***************************** Public prototypes *****************************/
/*****************************************************************************/ /*****************************************************************************/
void Dat_ResetDate (struct Date *Date);
void Dat_ResetHour (struct Hour *Hour);
void Dat_PutBoxToSelectDateFormat (void); void Dat_PutBoxToSelectDateFormat (void);
void Dat_PutSpanDateFormat (Dat_Format_t Format); void Dat_PutSpanDateFormat (Dat_Format_t Format);

View File

@ -68,44 +68,44 @@ extern struct Globals Gbl;
/***************************** Private prototypes ****************************/ /***************************** Private prototypes ****************************/
/*****************************************************************************/ /*****************************************************************************/
static struct ExaAnn_ExamAnnouncements *ExaAnn_GetGlobalExamAnnouncements (void); static struct ExaAnn_ExamAnnouncements *ExaAnn_GetGlobalExamAnns (void);
static long ExaAnn_GetParamsExamAnnouncement (struct ExaAnn_ExamAnnouncements *ExamAnns); static long ExaAnn_GetParamsExamAnn (struct ExaAnn_ExamAnnouncements *ExamAnns);
static void ExaAnn_AllocMemExamAnnouncement (struct ExaAnn_ExamAnnouncements *ExamAnns); static void ExaAnn_AllocMemExamAnn (struct ExaAnn_ExamAnnouncements *ExamAnns);
static void ExaAnn_FreeMemExamAnnouncement (struct ExaAnn_ExamAnnouncements *ExamAnns); static void ExaAnn_FreeMemExamAnn (struct ExaAnn_ExamAnnouncements *ExamAnns);
static void ExaAnn_UpdateNumUsrsNotifiedByEMailAboutExamAnnouncement (long ExaCod,unsigned NumUsrsToBeNotifiedByEMail); static void ExaAnn_UpdateNumUsrsNotifiedByEMailAboutExamAnn (long ExaCod,unsigned NumUsrsToBeNotifiedByEMail);
static void ExaAnn_GetExaCodToHighlight (struct ExaAnn_ExamAnnouncements *ExamAnns); static void ExaAnn_GetExaCodToHighlight (struct ExaAnn_ExamAnnouncements *ExamAnns);
static void ExaAnn_GetDateToHighlight (struct ExaAnn_ExamAnnouncements *ExamAnns); static void ExaAnn_GetDateToHighlight (struct ExaAnn_ExamAnnouncements *ExamAnns);
static void ExaAnn_ListExamAnnouncements (struct ExaAnn_ExamAnnouncements *ExamAnns, static void ExaAnn_ListExamAnns (struct ExaAnn_ExamAnnouncements *ExamAnns,
ExaAnn_TypeViewExamAnnouncement_t TypeViewExamAnnouncement); ExaAnn_TypeViewExamAnnouncement_t TypeViewExamAnnouncement);
static void ExaAnn_PutIconToCreateNewExamAnnouncement (__attribute__((unused)) void *Args); static void ExaAnn_PutIconToCreateNewExamAnn (__attribute__((unused)) void *Args);
static void ExaAnn_PutButtonToCreateNewExamAnnouncement (void); static void ExaAnn_PutButtonToCreateNewExamAnn (void);
static long ExaAnn_AddExamAnnouncementToDB (const struct ExaAnn_ExamAnnouncements *ExamAnns); static long ExaAnn_AddExamAnnToDB (const struct ExaAnn_ExamAnnouncements *ExamAnns);
static void ExaAnn_ModifyExamAnnouncementInDB (const struct ExaAnn_ExamAnnouncements *ExamAnns, static void ExaAnn_ModifyExamAnnInDB (const struct ExaAnn_ExamAnnouncements *ExamAnns,
long ExaCod); long ExaCod);
static void ExaAnn_GetDataExamAnnouncementFromDB (struct ExaAnn_ExamAnnouncements *ExamAnns, static void ExaAnn_GetDataExamAnnFromDB (struct ExaAnn_ExamAnnouncements *ExamAnns,
long ExaCod); long ExaCod);
static void ExaAnn_ShowExamAnnouncement (struct ExaAnn_ExamAnnouncements *ExamAnns, static void ExaAnn_ShowExamAnn (struct ExaAnn_ExamAnnouncements *ExamAnns,
long ExaCod, long ExaCod,
ExaAnn_TypeViewExamAnnouncement_t TypeViewExamAnnouncement, ExaAnn_TypeViewExamAnnouncement_t TypeViewExamAnnouncement,
bool HighLight); bool HighLight);
static void ExaAnn_PutIconsExamAnnouncement (void *ExamAnns); static void ExaAnn_PutIconsExamAnn (void *ExamAnns);
static void ExaAnn_PutParamExaCodToEdit (void *ExaCod); static void ExaAnn_PutParamExaCodToEdit (void *ExaCod);
static long ExaAnn_GetParamExaCod (void); static long ExaAnn_GetParamExaCod (void);
static void ExaAnn_GetNotifContentExamAnnouncement (const struct ExaAnn_ExamAnnouncements *ExamAnns, static void ExaAnn_GetNotifContentExamAnn (const struct ExaAnn_ExamAnnouncements *ExamAnns,
char **ContentStr); char **ContentStr);
/*****************************************************************************/ /*****************************************************************************/
/******************* Get global exam announcements context *******************/ /******************* Get global exam announcements context *******************/
/*****************************************************************************/ /*****************************************************************************/
static struct ExaAnn_ExamAnnouncements *ExaAnn_GetGlobalExamAnnouncements (void) static struct ExaAnn_ExamAnnouncements *ExaAnn_GetGlobalExamAnns (void)
{ {
static struct ExaAnn_ExamAnnouncements ExaAnn_GlobalExamAnns; // Used to preserve information between priori and posteriori functions static struct ExaAnn_ExamAnnouncements ExaAnn_GlobalExamAnns; // Used to preserve information between priori and posteriori functions
@ -116,7 +116,7 @@ static struct ExaAnn_ExamAnnouncements *ExaAnn_GetGlobalExamAnnouncements (void)
/********************** Reset exam announcements context *********************/ /********************** Reset exam announcements context *********************/
/*****************************************************************************/ /*****************************************************************************/
void ExaAnn_ResetExamAnnouncements (struct ExaAnn_ExamAnnouncements *ExamAnns) void ExaAnn_ResetExamAnns (struct ExaAnn_ExamAnnouncements *ExamAnns)
{ {
ExamAnns->NumExaAnns = 0; ExamAnns->NumExaAnns = 0;
ExamAnns->Lst = NULL; ExamAnns->Lst = NULL;
@ -125,43 +125,60 @@ void ExaAnn_ResetExamAnnouncements (struct ExaAnn_ExamAnnouncements *ExamAnns)
ExamAnns->HighlightDate[0] = '\0'; // No exam announcements highlighted ExamAnns->HighlightDate[0] = '\0'; // No exam announcements highlighted
ExamAnns->ExaCod = -1L; ExamAnns->ExaCod = -1L;
ExamAnns->Anchor = NULL; ExamAnns->Anchor = NULL;
ExamAnns->ExamAnn.CrsCod = -1L;
ExamAnns->ExamAnn.Status = ExaAnn_STATUS_DEFAULT;
ExamAnns->ExamAnn.CrsFullName[0] = '\0';
ExamAnns->ExamAnn.Year = 0;
ExamAnns->ExamAnn.Session[0] = '\0';
Dat_ResetDate (&ExamAnns->ExamAnn.CallDate);
Dat_ResetDate (&ExamAnns->ExamAnn.ExamDate);
Dat_ResetHour (&ExamAnns->ExamAnn.StartTime);
Dat_ResetHour (&ExamAnns->ExamAnn.Duration);
ExamAnns->ExamAnn.Place = NULL;
ExamAnns->ExamAnn.Mode = NULL;
ExamAnns->ExamAnn.Structure = NULL;
ExamAnns->ExamAnn.DocRequired = NULL;
ExamAnns->ExamAnn.MatRequired = NULL;
ExamAnns->ExamAnn.MatAllowed = NULL;
ExamAnns->ExamAnn.OtherInfo = NULL;
} }
/*****************************************************************************/ /*****************************************************************************/
/********************** Form to edit an exam announcement ********************/ /********************** Form to edit an exam announcement ********************/
/*****************************************************************************/ /*****************************************************************************/
void ExaAnn_PutFrmEditAExamAnnouncement (void) void ExaAnn_PutFrmEditAExamAnn (void)
{ {
struct ExaAnn_ExamAnnouncements ExamAnns; struct ExaAnn_ExamAnnouncements ExamAnns;
long ExaCod; long ExaCod;
/***** Reset exam announcements context *****/ /***** Reset exam announcements context *****/
ExaAnn_ResetExamAnnouncements (&ExamAnns); ExaAnn_ResetExamAnns (&ExamAnns);
/***** Allocate memory for the exam announcement *****/ /***** Allocate memory for the exam announcement *****/
ExaAnn_AllocMemExamAnnouncement (&ExamAnns); ExaAnn_AllocMemExamAnn (&ExamAnns);
/***** Get the code of the exam announcement *****/ /***** Get the code of the exam announcement *****/
ExaCod = ExaAnn_GetParamsExamAnnouncement (&ExamAnns); ExaCod = ExaAnn_GetParamsExamAnn (&ExamAnns);
if (ExaCod > 0) // -1 indicates that this is a new exam announcement if (ExaCod > 0) // -1 indicates that this is a new exam announcement
/***** Read exam announcement from the database *****/ /***** Read exam announcement from the database *****/
ExaAnn_GetDataExamAnnouncementFromDB (&ExamAnns,ExaCod); ExaAnn_GetDataExamAnnFromDB (&ExamAnns,ExaCod);
/***** Show exam announcement *****/ /***** Show exam announcement *****/
ExaAnn_ShowExamAnnouncement (&ExamAnns,ExaCod,ExaAnn_FORM_VIEW, ExaAnn_ShowExamAnn (&ExamAnns,ExaCod,ExaAnn_FORM_VIEW,
false); // Don't highlight false); // Don't highlight
/***** Free memory of the exam announcement *****/ /***** Free memory of the exam announcement *****/
ExaAnn_FreeMemExamAnnouncement (&ExamAnns); ExaAnn_FreeMemExamAnn (&ExamAnns);
} }
/*****************************************************************************/ /*****************************************************************************/
/**************** Get parameters of an exam announcement *********************/ /**************** Get parameters of an exam announcement *********************/
/*****************************************************************************/ /*****************************************************************************/
static long ExaAnn_GetParamsExamAnnouncement (struct ExaAnn_ExamAnnouncements *ExamAnns) static long ExaAnn_GetParamsExamAnn (struct ExaAnn_ExamAnnouncements *ExamAnns)
{ {
long ExaCod; long ExaCod;
@ -185,7 +202,7 @@ static long ExaAnn_GetParamsExamAnnouncement (struct ExaAnn_ExamAnnouncements *E
/***** Get the type of exam announcement *****/ /***** Get the type of exam announcement *****/
Par_GetParToText ("ExamSession",ExamAnns->ExamAnn.Session,ExaAnn_MAX_BYTES_SESSION); Par_GetParToText ("ExamSession",ExamAnns->ExamAnn.Session,ExaAnn_MAX_BYTES_SESSION);
/***** Get the data of the exam *****/ /***** Get the date of the exam *****/
Dat_GetDateFromForm ("ExamDay","ExamMonth","ExamYear", Dat_GetDateFromForm ("ExamDay","ExamMonth","ExamYear",
&ExamAnns->ExamAnn.ExamDate.Day, &ExamAnns->ExamAnn.ExamDate.Day,
&ExamAnns->ExamAnn.ExamDate.Month, &ExamAnns->ExamAnn.ExamDate.Month,
@ -239,7 +256,7 @@ static long ExaAnn_GetParamsExamAnnouncement (struct ExaAnn_ExamAnnouncements *E
/* Allocate memory for those parameters of an exam anno. with a lot of text **/ /* Allocate memory for those parameters of an exam anno. with a lot of text **/
/*****************************************************************************/ /*****************************************************************************/
static void ExaAnn_AllocMemExamAnnouncement (struct ExaAnn_ExamAnnouncements *ExamAnns) static void ExaAnn_AllocMemExamAnn (struct ExaAnn_ExamAnnouncements *ExamAnns)
{ {
if ((ExamAnns->ExamAnn.Place = (char *) malloc (Cns_MAX_BYTES_TEXT + 1)) == NULL) if ((ExamAnns->ExamAnn.Place = (char *) malloc (Cns_MAX_BYTES_TEXT + 1)) == NULL)
Lay_NotEnoughMemoryExit (); Lay_NotEnoughMemoryExit ();
@ -267,7 +284,7 @@ static void ExaAnn_AllocMemExamAnnouncement (struct ExaAnn_ExamAnnouncements *Ex
/* Free memory of those parameters of an exam announcem. with a lot of text **/ /* Free memory of those parameters of an exam announcem. with a lot of text **/
/*****************************************************************************/ /*****************************************************************************/
static void ExaAnn_FreeMemExamAnnouncement (struct ExaAnn_ExamAnnouncements *ExamAnns) static void ExaAnn_FreeMemExamAnn (struct ExaAnn_ExamAnnouncements *ExamAnns)
{ {
if (ExamAnns->ExamAnn.Place) if (ExamAnns->ExamAnn.Place)
{ {
@ -312,33 +329,33 @@ static void ExaAnn_FreeMemExamAnnouncement (struct ExaAnn_ExamAnnouncements *Exa
// This function is splitted into a-priori and a-posteriori functions // This function is splitted into a-priori and a-posteriori functions
// in order to view updated links in month of left column // in order to view updated links in month of left column
void ExaAnn_ReceiveExamAnnouncement1 (void) void ExaAnn_ReceiveExamAnn1 (void)
{ {
extern const char *Txt_Created_new_announcement_of_exam; extern const char *Txt_Created_new_announcement_of_exam;
extern const char *Txt_The_announcement_of_exam_has_been_successfully_updated; extern const char *Txt_The_announcement_of_exam_has_been_successfully_updated;
struct ExaAnn_ExamAnnouncements *ExamAnns = ExaAnn_GetGlobalExamAnnouncements (); struct ExaAnn_ExamAnnouncements *ExamAnns = ExaAnn_GetGlobalExamAnns ();
long ExaCod; long ExaCod;
bool NewExamAnnouncement; bool NewExamAnnouncement;
char *Anchor = NULL; char *Anchor = NULL;
/***** Reset exam announcements context *****/ /***** Reset exam announcements context *****/
ExaAnn_ResetExamAnnouncements (ExamAnns); ExaAnn_ResetExamAnns (ExamAnns);
/***** Allocate memory for the exam announcement *****/ /***** Allocate memory for the exam announcement *****/
ExaAnn_AllocMemExamAnnouncement (ExamAnns); ExaAnn_AllocMemExamAnn (ExamAnns);
/***** Get parameters of the exam announcement *****/ /***** Get parameters of the exam announcement *****/
ExaCod = ExaAnn_GetParamsExamAnnouncement (ExamAnns); ExaCod = ExaAnn_GetParamsExamAnn (ExamAnns);
NewExamAnnouncement = (ExaCod < 0); NewExamAnnouncement = (ExaCod < 0);
/***** Add the exam announcement to the database and read it again from the database *****/ /***** Add the exam announcement to the database and read it again from the database *****/
if (NewExamAnnouncement) if (NewExamAnnouncement)
ExamAnns->NewExaCod = ExaCod = ExaAnn_AddExamAnnouncementToDB (ExamAnns); ExamAnns->NewExaCod = ExaCod = ExaAnn_AddExamAnnToDB (ExamAnns);
else else
ExaAnn_ModifyExamAnnouncementInDB (ExamAnns,ExaCod); ExaAnn_ModifyExamAnnInDB (ExamAnns,ExaCod);
/***** Free memory of the exam announcement *****/ /***** Free memory of the exam announcement *****/
ExaAnn_FreeMemExamAnnouncement (ExamAnns); ExaAnn_FreeMemExamAnn (ExamAnns);
/***** Create alert to show the change made *****/ /***** Create alert to show the change made *****/
Frm_SetAnchorStr (ExaCod,&Anchor); Frm_SetAnchorStr (ExaCod,&Anchor);
@ -351,15 +368,15 @@ void ExaAnn_ReceiveExamAnnouncement1 (void)
ExamAnns->HighlightExaCod = ExaCod; ExamAnns->HighlightExaCod = ExaCod;
} }
void ExaAnn_ReceiveExamAnnouncement2 (void) void ExaAnn_ReceiveExamAnn2 (void)
{ {
struct ExaAnn_ExamAnnouncements *ExamAnns = ExaAnn_GetGlobalExamAnnouncements (); struct ExaAnn_ExamAnnouncements *ExamAnns = ExaAnn_GetGlobalExamAnns ();
unsigned NumUsrsToBeNotifiedByEMail; unsigned NumUsrsToBeNotifiedByEMail;
struct TL_Publication SocPub; struct TL_Publication SocPub;
/***** Notify by email about the new exam announcement *****/ /***** Notify by email about the new exam announcement *****/
if ((NumUsrsToBeNotifiedByEMail = Ntf_StoreNotifyEventsToAllUsrs (Ntf_EVENT_EXAM_ANNOUNCEMENT,ExamAnns->HighlightExaCod))) if ((NumUsrsToBeNotifiedByEMail = Ntf_StoreNotifyEventsToAllUsrs (Ntf_EVENT_EXAM_ANNOUNCEMENT,ExamAnns->HighlightExaCod)))
ExaAnn_UpdateNumUsrsNotifiedByEMailAboutExamAnnouncement (ExamAnns->HighlightExaCod,NumUsrsToBeNotifiedByEMail); ExaAnn_UpdateNumUsrsNotifiedByEMailAboutExamAnn (ExamAnns->HighlightExaCod,NumUsrsToBeNotifiedByEMail);
/***** Create a new social note about the new exam announcement *****/ /***** Create a new social note about the new exam announcement *****/
TL_StoreAndPublishNote (TL_NOTE_EXAM_ANNOUNCEMENT,ExamAnns->HighlightExaCod,&SocPub); TL_StoreAndPublishNote (TL_NOTE_EXAM_ANNOUNCEMENT,ExamAnns->HighlightExaCod,&SocPub);
@ -368,14 +385,14 @@ void ExaAnn_ReceiveExamAnnouncement2 (void)
RSS_UpdateRSSFileForACrs (&Gbl.Hierarchy.Crs); RSS_UpdateRSSFileForACrs (&Gbl.Hierarchy.Crs);
/***** Show exam announcements *****/ /***** Show exam announcements *****/
ExaAnn_ListExamAnnouncementsEdit (); ExaAnn_ListExamAnnsEdit ();
} }
/*****************************************************************************/ /*****************************************************************************/
/***** Update number of users notified in table of exam announcements ********/ /***** Update number of users notified in table of exam announcements ********/
/*****************************************************************************/ /*****************************************************************************/
static void ExaAnn_UpdateNumUsrsNotifiedByEMailAboutExamAnnouncement (long ExaCod,unsigned NumUsrsToBeNotifiedByEMail) static void ExaAnn_UpdateNumUsrsNotifiedByEMailAboutExamAnn (long ExaCod,unsigned NumUsrsToBeNotifiedByEMail)
{ {
/***** Update number of users notified *****/ /***** Update number of users notified *****/
DB_QueryUPDATE ("can not update the number of notifications" DB_QueryUPDATE ("can not update the number of notifications"
@ -389,37 +406,37 @@ static void ExaAnn_UpdateNumUsrsNotifiedByEMailAboutExamAnnouncement (long ExaCo
/************************* Print an exam announcement ************************/ /************************* Print an exam announcement ************************/
/*****************************************************************************/ /*****************************************************************************/
void ExaAnn_PrintExamAnnouncement (void) void ExaAnn_PrintExamAnn (void)
{ {
struct ExaAnn_ExamAnnouncements ExamAnns; struct ExaAnn_ExamAnnouncements ExamAnns;
long ExaCod; long ExaCod;
/***** Reset exam announcements context *****/ /***** Reset exam announcements context *****/
ExaAnn_ResetExamAnnouncements (&ExamAnns); ExaAnn_ResetExamAnns (&ExamAnns);
/***** Allocate memory for the exam announcement *****/ /***** Allocate memory for the exam announcement *****/
ExaAnn_AllocMemExamAnnouncement (&ExamAnns); ExaAnn_AllocMemExamAnn (&ExamAnns);
/***** Get the code of the exam announcement *****/ /***** Get the code of the exam announcement *****/
if ((ExaCod = ExaAnn_GetParamExaCod ()) <= 0) if ((ExaCod = ExaAnn_GetParamExaCod ()) <= 0)
Lay_ShowErrorAndExit ("Code of exam announcement is missing."); Lay_ShowErrorAndExit ("Code of exam announcement is missing.");
/***** Read exam announcement from the database *****/ /***** Read exam announcement from the database *****/
ExaAnn_GetDataExamAnnouncementFromDB (&ExamAnns,ExaCod); ExaAnn_GetDataExamAnnFromDB (&ExamAnns,ExaCod);
/***** Show exam announcement *****/ /***** Show exam announcement *****/
ExaAnn_ShowExamAnnouncement (&ExamAnns,ExaCod,ExaAnn_PRINT_VIEW, ExaAnn_ShowExamAnn (&ExamAnns,ExaCod,ExaAnn_PRINT_VIEW,
false); // Don't highlight false); // Don't highlight
/***** Free memory of the exam announcement *****/ /***** Free memory of the exam announcement *****/
ExaAnn_FreeMemExamAnnouncement (&ExamAnns); ExaAnn_FreeMemExamAnn (&ExamAnns);
} }
/*****************************************************************************/ /*****************************************************************************/
/************************ Remove an exam announcement ************************/ /************************ Remove an exam announcement ************************/
/*****************************************************************************/ /*****************************************************************************/
void ExaAnn_ReqRemoveExamAnnouncement (void) void ExaAnn_ReqRemoveExamAnn (void)
{ {
extern const char *Txt_Do_you_really_want_to_remove_the_following_announcement_of_exam; extern const char *Txt_Do_you_really_want_to_remove_the_following_announcement_of_exam;
extern const char *Txt_Remove; extern const char *Txt_Remove;
@ -427,7 +444,7 @@ void ExaAnn_ReqRemoveExamAnnouncement (void)
long ExaCod; long ExaCod;
/***** Reset exam announcements context *****/ /***** Reset exam announcements context *****/
ExaAnn_ResetExamAnnouncements (&ExamAnns); ExaAnn_ResetExamAnns (&ExamAnns);
/***** Get the code of the exam announcement *****/ /***** Get the code of the exam announcement *****/
if ((ExaCod = ExaAnn_GetParamExaCod ()) <= 0) if ((ExaCod = ExaAnn_GetParamExaCod ()) <= 0)
@ -438,11 +455,11 @@ void ExaAnn_ReqRemoveExamAnnouncement (void)
Ale_ShowAlertAndButton1 (Ale_QUESTION,Txt_Do_you_really_want_to_remove_the_following_announcement_of_exam); Ale_ShowAlertAndButton1 (Ale_QUESTION,Txt_Do_you_really_want_to_remove_the_following_announcement_of_exam);
/* Show announcement */ /* Show announcement */
ExaAnn_AllocMemExamAnnouncement (&ExamAnns); ExaAnn_AllocMemExamAnn (&ExamAnns);
ExaAnn_GetDataExamAnnouncementFromDB (&ExamAnns,ExaCod); ExaAnn_GetDataExamAnnFromDB (&ExamAnns,ExaCod);
ExaAnn_ShowExamAnnouncement (&ExamAnns,ExaCod,ExaAnn_NORMAL_VIEW, ExaAnn_ShowExamAnn (&ExamAnns,ExaCod,ExaAnn_NORMAL_VIEW,
false); // Don't highlight false); // Don't highlight
ExaAnn_FreeMemExamAnnouncement (&ExamAnns); ExaAnn_FreeMemExamAnn (&ExamAnns);
/* End alert */ /* End alert */
@ -457,13 +474,13 @@ void ExaAnn_ReqRemoveExamAnnouncement (void)
// This function is splitted into a-priori and a-posteriori functions // This function is splitted into a-priori and a-posteriori functions
// in order to view updated links in month of left column // in order to view updated links in month of left column
void ExaAnn_RemoveExamAnnouncement1 (void) void ExaAnn_RemoveExamAnn1 (void)
{ {
struct ExaAnn_ExamAnnouncements *ExamAnns = ExaAnn_GetGlobalExamAnnouncements (); struct ExaAnn_ExamAnnouncements *ExamAnns = ExaAnn_GetGlobalExamAnns ();
long ExaCod; long ExaCod;
/***** Reset exam announcements context *****/ /***** Reset exam announcements context *****/
ExaAnn_ResetExamAnnouncements (ExamAnns); ExaAnn_ResetExamAnns (ExamAnns);
/***** Get the code of the exam announcement *****/ /***** Get the code of the exam announcement *****/
if ((ExaCod = ExaAnn_GetParamExaCod ()) <= 0) if ((ExaCod = ExaAnn_GetParamExaCod ()) <= 0)
@ -486,7 +503,7 @@ void ExaAnn_RemoveExamAnnouncement1 (void)
RSS_UpdateRSSFileForACrs (&Gbl.Hierarchy.Crs); RSS_UpdateRSSFileForACrs (&Gbl.Hierarchy.Crs);
} }
void ExaAnn_RemoveExamAnnouncement2 (void) void ExaAnn_RemoveExamAnn2 (void)
{ {
extern const char *Txt_Announcement_of_exam_removed; extern const char *Txt_Announcement_of_exam_removed;
@ -494,7 +511,7 @@ void ExaAnn_RemoveExamAnnouncement2 (void)
Ale_ShowAlert (Ale_SUCCESS,Txt_Announcement_of_exam_removed); Ale_ShowAlert (Ale_SUCCESS,Txt_Announcement_of_exam_removed);
/***** List again all the remaining exam announcements *****/ /***** List again all the remaining exam announcements *****/
ExaAnn_ListExamAnnouncementsEdit (); ExaAnn_ListExamAnnsEdit ();
} }
/*****************************************************************************/ /*****************************************************************************/
@ -503,13 +520,13 @@ void ExaAnn_RemoveExamAnnouncement2 (void)
// This function is splitted into a-priori and a-posteriori functions // This function is splitted into a-priori and a-posteriori functions
// in order to view updated links in month of left column // in order to view updated links in month of left column
void ExaAnn_HideExamAnnouncement (void) void ExaAnn_HideExamAnn (void)
{ {
struct ExaAnn_ExamAnnouncements *ExamAnns = ExaAnn_GetGlobalExamAnnouncements (); struct ExaAnn_ExamAnnouncements *ExamAnns = ExaAnn_GetGlobalExamAnns ();
long ExaCod; long ExaCod;
/***** Reset exam announcements context *****/ /***** Reset exam announcements context *****/
ExaAnn_ResetExamAnnouncements (ExamAnns); ExaAnn_ResetExamAnns (ExamAnns);
/***** Get the code of the exam announcement *****/ /***** Get the code of the exam announcement *****/
if ((ExaCod = ExaAnn_GetParamExaCod ()) <= 0) if ((ExaCod = ExaAnn_GetParamExaCod ()) <= 0)
@ -532,13 +549,13 @@ void ExaAnn_HideExamAnnouncement (void)
// This function is splitted into a-priori and a-posteriori functions // This function is splitted into a-priori and a-posteriori functions
// in order to view updated links in month of left column // in order to view updated links in month of left column
void ExaAnn_UnhideExamAnnouncement (void) void ExaAnn_UnhideExamAnn (void)
{ {
struct ExaAnn_ExamAnnouncements *ExamAnns = ExaAnn_GetGlobalExamAnnouncements (); struct ExaAnn_ExamAnnouncements *ExamAnns = ExaAnn_GetGlobalExamAnns ();
long ExaCod; long ExaCod;
/***** Reset exam announcements context *****/ /***** Reset exam announcements context *****/
ExaAnn_ResetExamAnnouncements (ExamAnns); ExaAnn_ResetExamAnns (ExamAnns);
/***** Get the code of the exam announcement *****/ /***** Get the code of the exam announcement *****/
if ((ExaCod = ExaAnn_GetParamExaCod ()) <= 0) if ((ExaCod = ExaAnn_GetParamExaCod ()) <= 0)
@ -559,15 +576,15 @@ void ExaAnn_UnhideExamAnnouncement (void)
/*************** List all the exam announcements to see them *****************/ /*************** List all the exam announcements to see them *****************/
/*****************************************************************************/ /*****************************************************************************/
void ExaAnn_ListExamAnnouncementsSee (void) void ExaAnn_ListExamAnnsSee (void)
{ {
struct ExaAnn_ExamAnnouncements ExamAnns; struct ExaAnn_ExamAnnouncements ExamAnns;
/***** Reset exam announcements context *****/ /***** Reset exam announcements context *****/
ExaAnn_ResetExamAnnouncements (&ExamAnns); ExaAnn_ResetExamAnns (&ExamAnns);
/***** List all exam announcements *****/ /***** List all exam announcements *****/
ExaAnn_ListExamAnnouncements (&ExamAnns,ExaAnn_NORMAL_VIEW); ExaAnn_ListExamAnns (&ExamAnns,ExaAnn_NORMAL_VIEW);
/***** Mark possible notifications as seen *****/ /***** Mark possible notifications as seen *****/
Ntf_MarkNotifAsSeen (Ntf_EVENT_EXAM_ANNOUNCEMENT, Ntf_MarkNotifAsSeen (Ntf_EVENT_EXAM_ANNOUNCEMENT,
@ -579,47 +596,47 @@ void ExaAnn_ListExamAnnouncementsSee (void)
/********** List all the exam announcements to edit or remove them ***********/ /********** List all the exam announcements to edit or remove them ***********/
/*****************************************************************************/ /*****************************************************************************/
void ExaAnn_ListExamAnnouncementsEdit (void) void ExaAnn_ListExamAnnsEdit (void)
{ {
struct ExaAnn_ExamAnnouncements *ExamAnns = ExaAnn_GetGlobalExamAnnouncements (); struct ExaAnn_ExamAnnouncements *ExamAnns = ExaAnn_GetGlobalExamAnns ();
ExaAnn_ListExamAnnouncements (ExamAnns,ExaAnn_NORMAL_VIEW); ExaAnn_ListExamAnns (ExamAnns,ExaAnn_NORMAL_VIEW);
} }
/*****************************************************************************/ /*****************************************************************************/
/********** List exam announcement given an exam announcement code ***********/ /********** List exam announcement given an exam announcement code ***********/
/*****************************************************************************/ /*****************************************************************************/
void ExaAnn_ListExamAnnouncementsCod (void) void ExaAnn_ListExamAnnsCod (void)
{ {
struct ExaAnn_ExamAnnouncements ExamAnns; struct ExaAnn_ExamAnnouncements ExamAnns;
/***** Reset exam announcements context *****/ /***** Reset exam announcements context *****/
ExaAnn_ResetExamAnnouncements (&ExamAnns); ExaAnn_ResetExamAnns (&ExamAnns);
/***** Get exam announcement code *****/ /***** Get exam announcement code *****/
ExaAnn_GetExaCodToHighlight (&ExamAnns); ExaAnn_GetExaCodToHighlight (&ExamAnns);
/***** List all exam announcements *****/ /***** List all exam announcements *****/
ExaAnn_ListExamAnnouncements (&ExamAnns,ExaAnn_NORMAL_VIEW); ExaAnn_ListExamAnns (&ExamAnns,ExaAnn_NORMAL_VIEW);
} }
/*****************************************************************************/ /*****************************************************************************/
/***************** List exam announcements on a given date *******************/ /***************** List exam announcements on a given date *******************/
/*****************************************************************************/ /*****************************************************************************/
void ExaAnn_ListExamAnnouncementsDay (void) void ExaAnn_ListExamAnnsDay (void)
{ {
struct ExaAnn_ExamAnnouncements ExamAnns; struct ExaAnn_ExamAnnouncements ExamAnns;
/***** Reset exam announcements context *****/ /***** Reset exam announcements context *****/
ExaAnn_ResetExamAnnouncements (&ExamAnns); ExaAnn_ResetExamAnns (&ExamAnns);
/***** Get date *****/ /***** Get date *****/
ExaAnn_GetDateToHighlight (&ExamAnns); ExaAnn_GetDateToHighlight (&ExamAnns);
/***** List all exam announcements *****/ /***** List all exam announcements *****/
ExaAnn_ListExamAnnouncements (&ExamAnns,ExaAnn_NORMAL_VIEW); ExaAnn_ListExamAnns (&ExamAnns,ExaAnn_NORMAL_VIEW);
} }
/*****************************************************************************/ /*****************************************************************************/
@ -648,8 +665,8 @@ static void ExaAnn_GetDateToHighlight (struct ExaAnn_ExamAnnouncements *ExamAnns
/******************** List all the exam announcements ************************/ /******************** List all the exam announcements ************************/
/*****************************************************************************/ /*****************************************************************************/
static void ExaAnn_ListExamAnnouncements (struct ExaAnn_ExamAnnouncements *ExamAnns, static void ExaAnn_ListExamAnns (struct ExaAnn_ExamAnnouncements *ExamAnns,
ExaAnn_TypeViewExamAnnouncement_t TypeViewExamAnnouncement) ExaAnn_TypeViewExamAnnouncement_t TypeViewExamAnnouncement)
{ {
extern const char *Hlp_ASSESSMENT_Announcements; extern const char *Hlp_ASSESSMENT_Announcements;
extern const char *Txt_Announcements_of_exams; extern const char *Txt_Announcements_of_exams;
@ -685,7 +702,7 @@ static void ExaAnn_ListExamAnnouncements (struct ExaAnn_ExamAnnouncements *ExamA
/***** Begin box *****/ /***** Begin box *****/
if (ICanEdit) if (ICanEdit)
Box_BoxBegin (NULL,Txt_Announcements_of_exams, Box_BoxBegin (NULL,Txt_Announcements_of_exams,
ExaAnn_PutIconToCreateNewExamAnnouncement,NULL, ExaAnn_PutIconToCreateNewExamAnn,NULL,
Hlp_ASSESSMENT_Announcements,Box_NOT_CLOSABLE); Hlp_ASSESSMENT_Announcements,Box_NOT_CLOSABLE);
else else
Box_BoxBegin (NULL,Txt_Announcements_of_exams, Box_BoxBegin (NULL,Txt_Announcements_of_exams,
@ -709,10 +726,10 @@ static void ExaAnn_ListExamAnnouncements (struct ExaAnn_ExamAnnouncements *ExamA
Lay_ShowErrorAndExit ("Wrong code of exam announcement."); Lay_ShowErrorAndExit ("Wrong code of exam announcement.");
/***** Allocate memory for the exam announcement *****/ /***** Allocate memory for the exam announcement *****/
ExaAnn_AllocMemExamAnnouncement (ExamAnns); ExaAnn_AllocMemExamAnn (ExamAnns);
/***** Read the data of the exam announcement *****/ /***** Read the data of the exam announcement *****/
ExaAnn_GetDataExamAnnouncementFromDB (ExamAnns,ExaCod); ExaAnn_GetDataExamAnnFromDB (ExamAnns,ExaCod);
/***** Show exam announcement *****/ /***** Show exam announcement *****/
HighLight = false; HighLight = false;
@ -724,11 +741,11 @@ static void ExaAnn_ListExamAnnouncements (struct ExaAnn_ExamAnnouncements *ExamA
ExamAnns->HighlightDate)) ExamAnns->HighlightDate))
HighLight = true; HighLight = true;
} }
ExaAnn_ShowExamAnnouncement (ExamAnns,ExaCod,TypeViewExamAnnouncement, ExaAnn_ShowExamAnn (ExamAnns,ExaCod,TypeViewExamAnnouncement,
HighLight); HighLight);
/***** Free memory of the exam announcement *****/ /***** Free memory of the exam announcement *****/
ExaAnn_FreeMemExamAnnouncement (ExamAnns); ExaAnn_FreeMemExamAnn (ExamAnns);
} }
/***** Free structure that stores the query result *****/ /***** Free structure that stores the query result *****/
@ -736,7 +753,7 @@ static void ExaAnn_ListExamAnnouncements (struct ExaAnn_ExamAnnouncements *ExamA
/***** Button to create a new exam announcement *****/ /***** Button to create a new exam announcement *****/
if (ICanEdit) if (ICanEdit)
ExaAnn_PutButtonToCreateNewExamAnnouncement (); ExaAnn_PutButtonToCreateNewExamAnn ();
/***** End box *****/ /***** End box *****/
Box_BoxEnd (); Box_BoxEnd ();
@ -746,7 +763,7 @@ static void ExaAnn_ListExamAnnouncements (struct ExaAnn_ExamAnnouncements *ExamA
/***************** Put icon to create a new exam announcement ****************/ /***************** Put icon to create a new exam announcement ****************/
/*****************************************************************************/ /*****************************************************************************/
static void ExaAnn_PutIconToCreateNewExamAnnouncement (__attribute__((unused)) void *Args) static void ExaAnn_PutIconToCreateNewExamAnn (__attribute__((unused)) void *Args)
{ {
extern const char *Txt_New_announcement_OF_EXAM; extern const char *Txt_New_announcement_OF_EXAM;
@ -759,7 +776,7 @@ static void ExaAnn_PutIconToCreateNewExamAnnouncement (__attribute__((unused)) v
/**************** Put button to create a new exam announcement ***************/ /**************** Put button to create a new exam announcement ***************/
/*****************************************************************************/ /*****************************************************************************/
static void ExaAnn_PutButtonToCreateNewExamAnnouncement (void) static void ExaAnn_PutButtonToCreateNewExamAnn (void)
{ {
extern const char *Txt_New_announcement_OF_EXAM; extern const char *Txt_New_announcement_OF_EXAM;
@ -773,7 +790,7 @@ static void ExaAnn_PutButtonToCreateNewExamAnnouncement (void)
/*****************************************************************************/ /*****************************************************************************/
// Return the code of the exam announcement just added // Return the code of the exam announcement just added
static long ExaAnn_AddExamAnnouncementToDB (const struct ExaAnn_ExamAnnouncements *ExamAnns) static long ExaAnn_AddExamAnnToDB (const struct ExaAnn_ExamAnnouncements *ExamAnns)
{ {
long ExaCod; long ExaCod;
@ -815,8 +832,8 @@ static long ExaAnn_AddExamAnnouncementToDB (const struct ExaAnn_ExamAnnouncement
/*************** Modify an exam announcement in the database *****************/ /*************** Modify an exam announcement in the database *****************/
/*****************************************************************************/ /*****************************************************************************/
static void ExaAnn_ModifyExamAnnouncementInDB (const struct ExaAnn_ExamAnnouncements *ExamAnns, static void ExaAnn_ModifyExamAnnInDB (const struct ExaAnn_ExamAnnouncements *ExamAnns,
long ExaCod) long ExaCod)
{ {
/***** Modify exam announcement *****/ /***** Modify exam announcement *****/
DB_QueryUPDATE ("can not update an exam announcement", DB_QueryUPDATE ("can not update an exam announcement",
@ -851,7 +868,7 @@ static void ExaAnn_ModifyExamAnnouncementInDB (const struct ExaAnn_ExamAnnouncem
/******* Create a list with the dates of all the exam announcements **********/ /******* Create a list with the dates of all the exam announcements **********/
/*****************************************************************************/ /*****************************************************************************/
void ExaAnn_CreateListExamAnnouncements (struct ExaAnn_ExamAnnouncements *ExamAnns) void ExaAnn_CreateListExamAnns (struct ExaAnn_ExamAnnouncements *ExamAnns)
{ {
MYSQL_RES *mysql_res; MYSQL_RES *mysql_res;
MYSQL_ROW row; MYSQL_ROW row;
@ -913,7 +930,7 @@ void ExaAnn_CreateListExamAnnouncements (struct ExaAnn_ExamAnnouncements *ExamAn
/***************** Free list of dates of exam announcements ******************/ /***************** Free list of dates of exam announcements ******************/
/*****************************************************************************/ /*****************************************************************************/
void ExaAnn_FreeListExamAnnouncements (struct ExaAnn_ExamAnnouncements *ExamAnns) void ExaAnn_FreeListExamAnns (struct ExaAnn_ExamAnnouncements *ExamAnns)
{ {
if (ExamAnns->Lst) if (ExamAnns->Lst)
{ {
@ -927,8 +944,8 @@ void ExaAnn_FreeListExamAnnouncements (struct ExaAnn_ExamAnnouncements *ExamAnns
/******** Read the data of an exam announcement from the database ************/ /******** Read the data of an exam announcement from the database ************/
/*****************************************************************************/ /*****************************************************************************/
static void ExaAnn_GetDataExamAnnouncementFromDB (struct ExaAnn_ExamAnnouncements *ExamAnns, static void ExaAnn_GetDataExamAnnFromDB (struct ExaAnn_ExamAnnouncements *ExamAnns,
long ExaCod) long ExaCod)
{ {
MYSQL_RES *mysql_res; MYSQL_RES *mysql_res;
MYSQL_ROW row; MYSQL_ROW row;
@ -1041,10 +1058,10 @@ static void ExaAnn_GetDataExamAnnouncementFromDB (struct ExaAnn_ExamAnnouncement
/************ Show a form with the data of an exam announcement **************/ /************ Show a form with the data of an exam announcement **************/
/*****************************************************************************/ /*****************************************************************************/
static void ExaAnn_ShowExamAnnouncement (struct ExaAnn_ExamAnnouncements *ExamAnns, static void ExaAnn_ShowExamAnn (struct ExaAnn_ExamAnnouncements *ExamAnns,
long ExaCod, long ExaCod,
ExaAnn_TypeViewExamAnnouncement_t TypeViewExamAnnouncement, ExaAnn_TypeViewExamAnnouncement_t TypeViewExamAnnouncement,
bool HighLight) bool HighLight)
{ {
extern const char *Hlp_ASSESSMENT_Announcements_new_announcement; extern const char *Hlp_ASSESSMENT_Announcements_new_announcement;
extern const char *Hlp_ASSESSMENT_Announcements_edit_announcement; extern const char *Hlp_ASSESSMENT_Announcements_edit_announcement;
@ -1108,11 +1125,11 @@ static void ExaAnn_ShowExamAnnouncement (struct ExaAnn_ExamAnnouncements *ExamAn
Width = "625px"; Width = "625px";
ExamAnns->Anchor = Anchor; // Used to put contextual icons ExamAnns->Anchor = Anchor; // Used to put contextual icons
ExamAnns->ExaCod = ExaCod; // Used to put contextual icons ExamAnns->ExaCod = ExaCod; // Used to put contextual icons
FunctionToDrawContextualIcons = TypeViewExamAnnouncement == ExaAnn_NORMAL_VIEW ? ExaAnn_PutIconsExamAnnouncement : FunctionToDrawContextualIcons = TypeViewExamAnnouncement == ExaAnn_NORMAL_VIEW ? ExaAnn_PutIconsExamAnn :
NULL; NULL;
HelpLink = TypeViewExamAnnouncement == ExaAnn_FORM_VIEW ? ((ExaCod > 0) ? Hlp_ASSESSMENT_Announcements_edit_announcement : HelpLink = TypeViewExamAnnouncement == ExaAnn_FORM_VIEW ? ((ExaCod > 0) ? Hlp_ASSESSMENT_Announcements_edit_announcement :
Hlp_ASSESSMENT_Announcements_new_announcement) : Hlp_ASSESSMENT_Announcements_new_announcement) :
NULL; NULL;
if (HighLight) if (HighLight)
{ {
/* Show pending alerts */ /* Show pending alerts */
@ -1194,11 +1211,11 @@ static void ExaAnn_ShowExamAnnouncement (struct ExaAnn_ExamAnnouncements *ExamAn
/* Label */ /* Label */
Frm_LabelColumn ("RT", Frm_LabelColumn ("RT",
TypeViewExamAnnouncement == ExaAnn_FORM_VIEW ? "CrsName" : TypeViewExamAnnouncement == ExaAnn_FORM_VIEW ? "CrsName" :
NULL, NULL,
Txt_EXAM_ANNOUNCEMENT_Course); Txt_EXAM_ANNOUNCEMENT_Course);
/* Data */ /* Data */
HTM_TD_Begin ("class=\"EXAM LT\""); HTM_TD_Begin ("class=\"EXAM LB\"");
if (TypeViewExamAnnouncement == ExaAnn_FORM_VIEW) if (TypeViewExamAnnouncement == ExaAnn_FORM_VIEW)
HTM_INPUT_TEXT ("CrsName",Hie_MAX_CHARS_FULL_NAME,ExamAnns->ExamAnn.CrsFullName, HTM_INPUT_TEXT ("CrsName",Hie_MAX_CHARS_FULL_NAME,ExamAnns->ExamAnn.CrsFullName,
HTM_DONT_SUBMIT_ON_CHANGE, HTM_DONT_SUBMIT_ON_CHANGE,
@ -1223,7 +1240,7 @@ static void ExaAnn_ShowExamAnnouncement (struct ExaAnn_ExamAnnouncements *ExamAn
Txt_EXAM_ANNOUNCEMENT_Year_or_semester); Txt_EXAM_ANNOUNCEMENT_Year_or_semester);
/* Data */ /* Data */
HTM_TD_Begin ("class=\"EXAM LT\""); HTM_TD_Begin ("class=\"EXAM LB\"");
if (TypeViewExamAnnouncement == ExaAnn_FORM_VIEW) if (TypeViewExamAnnouncement == ExaAnn_FORM_VIEW)
{ {
HTM_SELECT_Begin (HTM_DONT_SUBMIT_ON_CHANGE, HTM_SELECT_Begin (HTM_DONT_SUBMIT_ON_CHANGE,
@ -1248,11 +1265,11 @@ static void ExaAnn_ShowExamAnnouncement (struct ExaAnn_ExamAnnouncements *ExamAn
/* Label */ /* Label */
Frm_LabelColumn ("RT", Frm_LabelColumn ("RT",
TypeViewExamAnnouncement == ExaAnn_FORM_VIEW ? "ExamSession" : TypeViewExamAnnouncement == ExaAnn_FORM_VIEW ? "ExamSession" :
NULL, NULL,
Txt_EXAM_ANNOUNCEMENT_Session); Txt_EXAM_ANNOUNCEMENT_Session);
/* Data */ /* Data */
HTM_TD_Begin ("class=\"EXAM LT\""); HTM_TD_Begin ("class=\"EXAM LB\"");
if (TypeViewExamAnnouncement == ExaAnn_FORM_VIEW) if (TypeViewExamAnnouncement == ExaAnn_FORM_VIEW)
HTM_INPUT_TEXT ("ExamSession",ExaAnn_MAX_CHARS_SESSION,ExamAnns->ExamAnn.Session, HTM_INPUT_TEXT ("ExamSession",ExaAnn_MAX_CHARS_SESSION,ExamAnns->ExamAnn.Session,
HTM_DONT_SUBMIT_ON_CHANGE, HTM_DONT_SUBMIT_ON_CHANGE,
@ -1267,12 +1284,15 @@ static void ExaAnn_ShowExamAnnouncement (struct ExaAnn_ExamAnnouncements *ExamAn
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
/* Label */ /* Label */
Frm_LabelColumn ("RT",NULL,Txt_EXAM_ANNOUNCEMENT_Exam_date); Frm_LabelColumn ("RT",
TypeViewExamAnnouncement == ExaAnn_FORM_VIEW ? "ExamYear" :
NULL,
Txt_EXAM_ANNOUNCEMENT_Exam_date);
/* Data */ /* Data */
if (TypeViewExamAnnouncement == ExaAnn_FORM_VIEW) if (TypeViewExamAnnouncement == ExaAnn_FORM_VIEW)
{ {
HTM_TD_Begin ("class=\"LT\""); HTM_TD_Begin ("class=\"LB\"");
Dat_WriteFormDate (ExamAnns->ExamAnn.ExamDate.Year < Gbl.Now.Date.Year ? ExamAnns->ExamAnn.ExamDate.Year : Dat_WriteFormDate (ExamAnns->ExamAnn.ExamDate.Year < Gbl.Now.Date.Year ? ExamAnns->ExamAnn.ExamDate.Year :
Gbl.Now.Date.Year, Gbl.Now.Date.Year,
Gbl.Now.Date.Year + 1,"Exam", Gbl.Now.Date.Year + 1,"Exam",
@ -1284,7 +1304,7 @@ static void ExaAnn_ShowExamAnnouncement (struct ExaAnn_ExamAnnouncements *ExamAn
{ {
Dat_ConvDateToDateStr (&ExamAnns->ExamAnn.ExamDate, Dat_ConvDateToDateStr (&ExamAnns->ExamAnn.ExamDate,
StrExamDate); StrExamDate);
HTM_TD_Begin ("class=\"EXAM LT\""); HTM_TD_Begin ("class=\"EXAM LB\"");
HTM_Txt (StrExamDate); HTM_Txt (StrExamDate);
HTM_TD_End (); HTM_TD_End ();
} }
@ -1294,14 +1314,17 @@ static void ExaAnn_ShowExamAnnouncement (struct ExaAnn_ExamAnnouncements *ExamAn
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
/* Label */ /* Label */
Frm_LabelColumn ("RT",NULL,Txt_EXAM_ANNOUNCEMENT_Start_time); Frm_LabelColumn ("RT",
TypeViewExamAnnouncement == ExaAnn_FORM_VIEW ? "ExamHour" :
NULL,
Txt_EXAM_ANNOUNCEMENT_Start_time);
/* Data */ /* Data */
HTM_TD_Begin ("class=\"EXAM LT\""); HTM_TD_Begin ("class=\"EXAM LB\"");
if (TypeViewExamAnnouncement == ExaAnn_FORM_VIEW) if (TypeViewExamAnnouncement == ExaAnn_FORM_VIEW)
{ {
HTM_SELECT_Begin (HTM_DONT_SUBMIT_ON_CHANGE, HTM_SELECT_Begin (HTM_DONT_SUBMIT_ON_CHANGE,
"name=\"ExamHour\""); "id=\"ExamHour\" name=\"ExamHour\"");
HTM_OPTION (HTM_Type_STRING,"0", HTM_OPTION (HTM_Type_STRING,"0",
ExamAnns->ExamAnn.StartTime.Hour == 0,false, ExamAnns->ExamAnn.StartTime.Hour == 0,false,
"-"); "-");
@ -1334,14 +1357,17 @@ static void ExaAnn_ShowExamAnnouncement (struct ExaAnn_ExamAnnouncements *ExamAn
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
/* Label */ /* Label */
Frm_LabelColumn ("RT",NULL,Txt_EXAM_ANNOUNCEMENT_Approximate_duration); Frm_LabelColumn ("RT",
TypeViewExamAnnouncement == ExaAnn_FORM_VIEW ? "DurationHour" :
NULL,
Txt_EXAM_ANNOUNCEMENT_Approximate_duration);
/* Data */ /* Data */
HTM_TD_Begin ("class=\"EXAM LT\""); HTM_TD_Begin ("class=\"EXAM LB\"");
if (TypeViewExamAnnouncement == ExaAnn_FORM_VIEW) if (TypeViewExamAnnouncement == ExaAnn_FORM_VIEW)
{ {
HTM_SELECT_Begin (HTM_DONT_SUBMIT_ON_CHANGE, HTM_SELECT_Begin (HTM_DONT_SUBMIT_ON_CHANGE,
"name=\"DurationHour\""); "id=\"DurationHour\" name=\"DurationHour\"");
for (Hour = 0; for (Hour = 0;
Hour <= 8; Hour <= 8;
Hour++) Hour++)
@ -1366,7 +1392,7 @@ static void ExaAnn_ShowExamAnnouncement (struct ExaAnn_ExamAnnouncements *ExamAn
if (ExamAnns->ExamAnn.Duration.Hour) if (ExamAnns->ExamAnn.Duration.Hour)
{ {
if (ExamAnns->ExamAnn.Duration.Minute) if (ExamAnns->ExamAnn.Duration.Minute)
HTM_TxtF ("%u %s %u &prime;",ExamAnns->ExamAnn.Duration.Hour, HTM_TxtF ("%u%s %u&prime;",ExamAnns->ExamAnn.Duration.Hour,
Txt_hours_ABBREVIATION, Txt_hours_ABBREVIATION,
ExamAnns->ExamAnn.Duration.Minute); ExamAnns->ExamAnn.Duration.Minute);
else else
@ -1395,7 +1421,7 @@ static void ExaAnn_ShowExamAnnouncement (struct ExaAnn_ExamAnnouncements *ExamAn
Txt_EXAM_ANNOUNCEMENT_Place_of_exam); Txt_EXAM_ANNOUNCEMENT_Place_of_exam);
/* Data */ /* Data */
HTM_TD_Begin ("class=\"EXAM LT\""); HTM_TD_Begin ("class=\"EXAM LB\"");
if (TypeViewExamAnnouncement == ExaAnn_FORM_VIEW) if (TypeViewExamAnnouncement == ExaAnn_FORM_VIEW)
{ {
HTM_TEXTAREA_Begin ("id=\"Place\" name=\"Place\" cols=\"40\" rows=\"4\""); HTM_TEXTAREA_Begin ("id=\"Place\" name=\"Place\" cols=\"40\" rows=\"4\"");
@ -1419,11 +1445,11 @@ static void ExaAnn_ShowExamAnnouncement (struct ExaAnn_ExamAnnouncements *ExamAn
/* Label */ /* Label */
Frm_LabelColumn ("RT", Frm_LabelColumn ("RT",
TypeViewExamAnnouncement == ExaAnn_FORM_VIEW ? "ExamMode" : TypeViewExamAnnouncement == ExaAnn_FORM_VIEW ? "ExamMode" :
NULL, NULL,
Txt_EXAM_ANNOUNCEMENT_Mode); Txt_EXAM_ANNOUNCEMENT_Mode);
/* Data */ /* Data */
HTM_TD_Begin ("class=\"EXAM LT\""); HTM_TD_Begin ("class=\"EXAM LB\"");
if (TypeViewExamAnnouncement == ExaAnn_FORM_VIEW) if (TypeViewExamAnnouncement == ExaAnn_FORM_VIEW)
{ {
HTM_TEXTAREA_Begin ("id=\"ExamMode\" name=\"ExamMode\" cols=\"40\" rows=\"2\""); HTM_TEXTAREA_Begin ("id=\"ExamMode\" name=\"ExamMode\" cols=\"40\" rows=\"2\"");
@ -1451,7 +1477,7 @@ static void ExaAnn_ShowExamAnnouncement (struct ExaAnn_ExamAnnouncements *ExamAn
Txt_EXAM_ANNOUNCEMENT_Structure_of_the_exam); Txt_EXAM_ANNOUNCEMENT_Structure_of_the_exam);
/* Data */ /* Data */
HTM_TD_Begin ("class=\"EXAM LT\""); HTM_TD_Begin ("class=\"EXAM LB\"");
if (TypeViewExamAnnouncement == ExaAnn_FORM_VIEW) if (TypeViewExamAnnouncement == ExaAnn_FORM_VIEW)
{ {
HTM_TEXTAREA_Begin ("id=\"Structure\" name=\"Structure\" cols=\"40\" rows=\"8\""); HTM_TEXTAREA_Begin ("id=\"Structure\" name=\"Structure\" cols=\"40\" rows=\"8\"");
@ -1479,7 +1505,7 @@ static void ExaAnn_ShowExamAnnouncement (struct ExaAnn_ExamAnnouncements *ExamAn
Txt_EXAM_ANNOUNCEMENT_Documentation_required); Txt_EXAM_ANNOUNCEMENT_Documentation_required);
/* Data */ /* Data */
HTM_TD_Begin ("class=\"EXAM LT\""); HTM_TD_Begin ("class=\"EXAM LB\"");
if (TypeViewExamAnnouncement == ExaAnn_FORM_VIEW) if (TypeViewExamAnnouncement == ExaAnn_FORM_VIEW)
{ {
HTM_TEXTAREA_Begin ("id=\"DocRequired\" name=\"DocRequired\" cols=\"40\" rows=\"2\""); HTM_TEXTAREA_Begin ("id=\"DocRequired\" name=\"DocRequired\" cols=\"40\" rows=\"2\"");
@ -1503,11 +1529,11 @@ static void ExaAnn_ShowExamAnnouncement (struct ExaAnn_ExamAnnouncements *ExamAn
/* Label */ /* Label */
Frm_LabelColumn ("RT", Frm_LabelColumn ("RT",
TypeViewExamAnnouncement == ExaAnn_FORM_VIEW ? "MatRequired" : TypeViewExamAnnouncement == ExaAnn_FORM_VIEW ? "MatRequired" :
NULL, NULL,
Txt_EXAM_ANNOUNCEMENT_Material_required); Txt_EXAM_ANNOUNCEMENT_Material_required);
/* Data */ /* Data */
HTM_TD_Begin ("class=\"EXAM LT\""); HTM_TD_Begin ("class=\"EXAM LB\"");
if (TypeViewExamAnnouncement == ExaAnn_FORM_VIEW) if (TypeViewExamAnnouncement == ExaAnn_FORM_VIEW)
{ {
HTM_TEXTAREA_Begin ("id=\"MatRequired\" name=\"MatRequired\" cols=\"40\" rows=\"4\""); HTM_TEXTAREA_Begin ("id=\"MatRequired\" name=\"MatRequired\" cols=\"40\" rows=\"4\"");
@ -1531,11 +1557,11 @@ static void ExaAnn_ShowExamAnnouncement (struct ExaAnn_ExamAnnouncements *ExamAn
/* Label */ /* Label */
Frm_LabelColumn ("RT", Frm_LabelColumn ("RT",
TypeViewExamAnnouncement == ExaAnn_FORM_VIEW ? "MatAllowed" : TypeViewExamAnnouncement == ExaAnn_FORM_VIEW ? "MatAllowed" :
NULL, NULL,
Txt_EXAM_ANNOUNCEMENT_Material_allowed); Txt_EXAM_ANNOUNCEMENT_Material_allowed);
/* Data */ /* Data */
HTM_TD_Begin ("class=\"EXAM LT\""); HTM_TD_Begin ("class=\"EXAM LB\"");
if (TypeViewExamAnnouncement == ExaAnn_FORM_VIEW) if (TypeViewExamAnnouncement == ExaAnn_FORM_VIEW)
{ {
HTM_TEXTAREA_Begin ("id=\"MatAllowed\" name=\"MatAllowed\" cols=\"40\" rows=\"4\""); HTM_TEXTAREA_Begin ("id=\"MatAllowed\" name=\"MatAllowed\" cols=\"40\" rows=\"4\"");
@ -1563,7 +1589,7 @@ static void ExaAnn_ShowExamAnnouncement (struct ExaAnn_ExamAnnouncements *ExamAn
Txt_EXAM_ANNOUNCEMENT_Other_information); Txt_EXAM_ANNOUNCEMENT_Other_information);
/* Data */ /* Data */
HTM_TD_Begin ("class=\"EXAM LT\""); HTM_TD_Begin ("class=\"EXAM LB\"");
if (TypeViewExamAnnouncement == ExaAnn_FORM_VIEW) if (TypeViewExamAnnouncement == ExaAnn_FORM_VIEW)
{ {
HTM_TEXTAREA_Begin ("id=\"OtherInfo\" name=\"OtherInfo\" cols=\"40\" rows=\"5\""); HTM_TEXTAREA_Begin ("id=\"OtherInfo\" name=\"OtherInfo\" cols=\"40\" rows=\"5\"");
@ -1605,7 +1631,7 @@ static void ExaAnn_ShowExamAnnouncement (struct ExaAnn_ExamAnnouncements *ExamAn
/********* Put icons to remove / edit / print an exam announcement ***********/ /********* Put icons to remove / edit / print an exam announcement ***********/
/*****************************************************************************/ /*****************************************************************************/
static void ExaAnn_PutIconsExamAnnouncement (void *ExamAnns) static void ExaAnn_PutIconsExamAnn (void *ExamAnns)
{ {
if (ExamAnns) if (ExamAnns)
{ {
@ -1671,9 +1697,9 @@ static long ExaAnn_GetParamExaCod (void)
/************ Get summary and content about an exam announcement *************/ /************ Get summary and content about an exam announcement *************/
/*****************************************************************************/ /*****************************************************************************/
void ExaAnn_GetSummaryAndContentExamAnnouncement (char SummaryStr[Ntf_MAX_BYTES_SUMMARY + 1], void ExaAnn_GetSummaryAndContentExamAnn (char SummaryStr[Ntf_MAX_BYTES_SUMMARY + 1],
char **ContentStr, char **ContentStr,
long ExaCod,bool GetContent) long ExaCod,bool GetContent)
{ {
extern const char *Txt_hours_ABBREVIATION; extern const char *Txt_hours_ABBREVIATION;
struct ExaAnn_ExamAnnouncements ExamAnns; struct ExaAnn_ExamAnnouncements ExamAnns;
@ -1681,20 +1707,20 @@ void ExaAnn_GetSummaryAndContentExamAnnouncement (char SummaryStr[Ntf_MAX_BYTES_
char StrExamDate[Cns_MAX_BYTES_DATE + 1]; char StrExamDate[Cns_MAX_BYTES_DATE + 1];
/***** Reset exam announcements context *****/ /***** Reset exam announcements context *****/
ExaAnn_ResetExamAnnouncements (&ExamAnns); ExaAnn_ResetExamAnns (&ExamAnns);
/***** Initializations *****/ /***** Initializations *****/
SummaryStr[0] = '\0'; // Return nothing on error SummaryStr[0] = '\0'; // Return nothing on error
/***** Allocate memory for the exam announcement *****/ /***** Allocate memory for the exam announcement *****/
ExaAnn_AllocMemExamAnnouncement (&ExamAnns); ExaAnn_AllocMemExamAnn (&ExamAnns);
/***** Get data of an exam announcement from database *****/ /***** Get data of an exam announcement from database *****/
ExaAnn_GetDataExamAnnouncementFromDB (&ExamAnns,ExaCod); ExaAnn_GetDataExamAnnFromDB (&ExamAnns,ExaCod);
/***** Content *****/ /***** Content *****/
if (GetContent) if (GetContent)
ExaAnn_GetNotifContentExamAnnouncement (&ExamAnns,ContentStr); ExaAnn_GetNotifContentExamAnn (&ExamAnns,ContentStr);
/***** Summary *****/ /***** Summary *****/
/* Name of the course and date of exam */ /* Name of the course and date of exam */
@ -1709,15 +1735,15 @@ void ExaAnn_GetSummaryAndContentExamAnnouncement (char SummaryStr[Ntf_MAX_BYTES_
Ntf_MAX_BYTES_SUMMARY); Ntf_MAX_BYTES_SUMMARY);
/***** Free memory of the exam announcement *****/ /***** Free memory of the exam announcement *****/
ExaAnn_FreeMemExamAnnouncement (&ExamAnns); ExaAnn_FreeMemExamAnn (&ExamAnns);
} }
/*****************************************************************************/ /*****************************************************************************/
/************ Show a form with the data of an exam announcement **************/ /************ Show a form with the data of an exam announcement **************/
/*****************************************************************************/ /*****************************************************************************/
static void ExaAnn_GetNotifContentExamAnnouncement (const struct ExaAnn_ExamAnnouncements *ExamAnns, static void ExaAnn_GetNotifContentExamAnn (const struct ExaAnn_ExamAnnouncements *ExamAnns,
char **ContentStr) char **ContentStr)
{ {
extern const char *Txt_Institution; extern const char *Txt_Institution;
extern const char *Txt_Degree; extern const char *Txt_Degree;

View File

@ -53,6 +53,7 @@ typedef enum
ExaAnn_HIDDEN_EXAM_ANNOUNCEMENT = 1, ExaAnn_HIDDEN_EXAM_ANNOUNCEMENT = 1,
ExaAnn_DELETED_EXAM_ANNOUNCEMENT = 2, ExaAnn_DELETED_EXAM_ANNOUNCEMENT = 2,
} ExaAnn_Status_t; // Don't change these numbers because they are used in database } ExaAnn_Status_t; // Don't change these numbers because they are used in database
#define ExaAnn_STATUS_DEFAULT ExaAnn_VISIBLE_EXAM_ANNOUNCEMENT
#define ExaAnn_MAX_CHARS_SESSION (128 - 1) // 127 #define ExaAnn_MAX_CHARS_SESSION (128 - 1) // 127
#define ExaAnn_MAX_BYTES_SESSION ((ExaAnn_MAX_CHARS_SESSION + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 2047 #define ExaAnn_MAX_BYTES_SESSION ((ExaAnn_MAX_CHARS_SESSION + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 2047
@ -99,30 +100,30 @@ struct ExaAnn_ExamAnnouncements
/***************************** Public prototypes *****************************/ /***************************** Public prototypes *****************************/
/*****************************************************************************/ /*****************************************************************************/
void ExaAnn_ResetExamAnnouncements (struct ExaAnn_ExamAnnouncements *ExamAnns); void ExaAnn_ResetExamAnns (struct ExaAnn_ExamAnnouncements *ExamAnns);
void ExaAnn_PutFrmEditAExamAnnouncement (void); void ExaAnn_PutFrmEditAExamAnn (void);
void ExaAnn_ReceiveExamAnnouncement1 (void); void ExaAnn_ReceiveExamAnn1 (void);
void ExaAnn_ReceiveExamAnnouncement2 (void); void ExaAnn_ReceiveExamAnn2 (void);
void ExaAnn_PrintExamAnnouncement (void); void ExaAnn_PrintExamAnn (void);
void ExaAnn_ReqRemoveExamAnnouncement (void); void ExaAnn_ReqRemoveExamAnn (void);
void ExaAnn_RemoveExamAnnouncement1 (void); void ExaAnn_RemoveExamAnn1 (void);
void ExaAnn_RemoveExamAnnouncement2 (void); void ExaAnn_RemoveExamAnn2 (void);
void ExaAnn_HideExamAnnouncement (void); void ExaAnn_HideExamAnn (void);
void ExaAnn_UnhideExamAnnouncement (void); void ExaAnn_UnhideExamAnn (void);
void ExaAnn_FreeListExamAnnouncements (struct ExaAnn_ExamAnnouncements *ExamAnns); void ExaAnn_FreeListExamAnns (struct ExaAnn_ExamAnnouncements *ExamAnns);
void ExaAnn_ListExamAnnouncementsSee (void); void ExaAnn_ListExamAnnsSee (void);
void ExaAnn_ListExamAnnouncementsEdit (void); void ExaAnn_ListExamAnnsEdit (void);
void ExaAnn_ListExamAnnouncementsCod (void); void ExaAnn_ListExamAnnsCod (void);
void ExaAnn_ListExamAnnouncementsDay (void); void ExaAnn_ListExamAnnsDay (void);
void ExaAnn_CreateListExamAnnouncements (struct ExaAnn_ExamAnnouncements *ExamAnns); void ExaAnn_CreateListExamAnns (struct ExaAnn_ExamAnnouncements *ExamAnns);
void ExaAnn_PutHiddenParamExaCod (long ExaCod); void ExaAnn_PutHiddenParamExaCod (long ExaCod);
void ExaAnn_GetSummaryAndContentExamAnnouncement (char SummaryStr[Ntf_MAX_BYTES_SUMMARY + 1], void ExaAnn_GetSummaryAndContentExamAnn (char SummaryStr[Ntf_MAX_BYTES_SUMMARY + 1],
char **ContentStr, char **ContentStr,
long ExaCod,bool GetContent); long ExaCod,bool GetContent);
#endif #endif

View File

@ -550,10 +550,10 @@ static void Lay_WriteScripts (void)
Hld_GetListHolidays (&Holidays); Hld_GetListHolidays (&Holidays);
/***** Reset exam announcements context *****/ /***** Reset exam announcements context *****/
ExaAnn_ResetExamAnnouncements (&ExamAnns); ExaAnn_ResetExamAnns (&ExamAnns);
/***** Create list of exam announcements *****/ /***** Create list of exam announcements *****/
ExaAnn_CreateListExamAnnouncements (&ExamAnns); ExaAnn_CreateListExamAnns (&ExamAnns);
/***** Write script to initialize variables used to draw months *****/ /***** Write script to initialize variables used to draw months *****/
HTM_SCRIPT_Begin (NULL,NULL); HTM_SCRIPT_Begin (NULL,NULL);
@ -598,7 +598,7 @@ static void Lay_WriteScripts (void)
HTM_SCRIPT_End (); HTM_SCRIPT_End ();
/***** Free list of exam announcements *****/ /***** Free list of exam announcements *****/
ExaAnn_FreeListExamAnnouncements (&ExamAnns); ExaAnn_FreeListExamAnns (&ExamAnns);
/***** Free list of holidays *****/ /***** Free list of holidays *****/
Hld_FreeListHolidays (&Holidays); Hld_FreeListHolidays (&Holidays);

View File

@ -859,7 +859,7 @@ void Ntf_GetNotifSummaryAndContent (char SummaryStr[Ntf_MAX_BYTES_SUMMARY + 1],
Asg_GetNotifAssignment (SummaryStr,ContentStr,Cod,GetContent); Asg_GetNotifAssignment (SummaryStr,ContentStr,Cod,GetContent);
break; break;
case Ntf_EVENT_EXAM_ANNOUNCEMENT: case Ntf_EVENT_EXAM_ANNOUNCEMENT:
ExaAnn_GetSummaryAndContentExamAnnouncement (SummaryStr,ContentStr,Cod,GetContent); ExaAnn_GetSummaryAndContentExamAnn (SummaryStr,ContentStr,Cod,GetContent);
break; break;
case Ntf_EVENT_MARKS_FILE: case Ntf_EVENT_MARKS_FILE:
Mrk_GetNotifMyMarks (SummaryStr,ContentStr,Cod,UsrCod,GetContent); Mrk_GetNotifMyMarks (SummaryStr,ContentStr,Cod,UsrCod,GetContent);

View File

@ -2209,7 +2209,7 @@ static void TL_GetNoteSummary (const struct TL_Note *SocNot,
Brw_GetSummaryAndContentOfFile (SummaryStr,NULL,SocNot->Cod,false); Brw_GetSummaryAndContentOfFile (SummaryStr,NULL,SocNot->Cod,false);
break; break;
case TL_NOTE_EXAM_ANNOUNCEMENT: case TL_NOTE_EXAM_ANNOUNCEMENT:
ExaAnn_GetSummaryAndContentExamAnnouncement (SummaryStr,NULL,SocNot->Cod,false); ExaAnn_GetSummaryAndContentExamAnn (SummaryStr,NULL,SocNot->Cod,false);
break; break;
case TL_NOTE_POST: case TL_NOTE_POST:
// Not applicable // Not applicable