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" },
[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" },
[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:
[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},
[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},
[ActSeeDatExaAnn ] = {1571,-1,TabUnk,ActSeeAllExaAnn ,0x3F8,0x3C7, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaAnn_ListExamAnnouncementsDay,NULL},
[ActEdiExaAnn ] = { 91,-1,TabUnk,ActSeeAllExaAnn ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaAnn_PutFrmEditAExamAnnouncement,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},
[ActPrnExaAnn ] = { 179,-1,TabUnk,ActSeeAllExaAnn ,0x3F8,0x3C7, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_NEW_TAB,NULL ,ExaAnn_PrintExamAnnouncement ,NULL},
[ActReqRemExaAnn ] = {1619,-1,TabUnk,ActSeeAllExaAnn ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaAnn_ReqRemoveExamAnnouncement,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},
[ActHidExaAnn ] = {1620,-1,TabUnk,ActSeeAllExaAnn ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,ExaAnn_HideExamAnnouncement ,ExaAnn_ListExamAnnouncementsEdit,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},
[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_ListExamAnnsDay ,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_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_PrintExamAnn ,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_RemoveExamAnn1 ,ExaAnn_RemoveExamAnn2 ,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_UnhideExamAnn ,ExaAnn_ListExamAnnsEdit ,NULL},
// TabFil ******************************************************************
// Actions in menu:

View File

@ -548,10 +548,12 @@ enscript -2 --landscape --color --file-align=2 --highlight --line-numbers -o - *
En OpenSWAD:
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 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.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)

View File

@ -98,6 +98,25 @@ static const unsigned Dat_NumDaysMonth[1 + 12] =
static void Dat_PutIconsDateFormat (__attribute__((unused)) void *Args);
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 ****************/
/*****************************************************************************/

View File

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

View File

@ -68,44 +68,44 @@ extern struct Globals Gbl;
/***************************** 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_FreeMemExamAnnouncement (struct ExaAnn_ExamAnnouncements *ExamAnns);
static void ExaAnn_AllocMemExamAnn (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_GetDateToHighlight (struct ExaAnn_ExamAnnouncements *ExamAnns);
static void ExaAnn_ListExamAnnouncements (struct ExaAnn_ExamAnnouncements *ExamAnns,
ExaAnn_TypeViewExamAnnouncement_t TypeViewExamAnnouncement);
static void ExaAnn_PutIconToCreateNewExamAnnouncement (__attribute__((unused)) void *Args);
static void ExaAnn_PutButtonToCreateNewExamAnnouncement (void);
static void ExaAnn_ListExamAnns (struct ExaAnn_ExamAnnouncements *ExamAnns,
ExaAnn_TypeViewExamAnnouncement_t TypeViewExamAnnouncement);
static void ExaAnn_PutIconToCreateNewExamAnn (__attribute__((unused)) void *Args);
static void ExaAnn_PutButtonToCreateNewExamAnn (void);
static long ExaAnn_AddExamAnnouncementToDB (const struct ExaAnn_ExamAnnouncements *ExamAnns);
static void ExaAnn_ModifyExamAnnouncementInDB (const struct ExaAnn_ExamAnnouncements *ExamAnns,
long ExaCod);
static void ExaAnn_GetDataExamAnnouncementFromDB (struct ExaAnn_ExamAnnouncements *ExamAnns,
long ExaCod);
static void ExaAnn_ShowExamAnnouncement (struct ExaAnn_ExamAnnouncements *ExamAnns,
long ExaCod,
ExaAnn_TypeViewExamAnnouncement_t TypeViewExamAnnouncement,
bool HighLight);
static void ExaAnn_PutIconsExamAnnouncement (void *ExamAnns);
static long ExaAnn_AddExamAnnToDB (const struct ExaAnn_ExamAnnouncements *ExamAnns);
static void ExaAnn_ModifyExamAnnInDB (const struct ExaAnn_ExamAnnouncements *ExamAnns,
long ExaCod);
static void ExaAnn_GetDataExamAnnFromDB (struct ExaAnn_ExamAnnouncements *ExamAnns,
long ExaCod);
static void ExaAnn_ShowExamAnn (struct ExaAnn_ExamAnnouncements *ExamAnns,
long ExaCod,
ExaAnn_TypeViewExamAnnouncement_t TypeViewExamAnnouncement,
bool HighLight);
static void ExaAnn_PutIconsExamAnn (void *ExamAnns);
static void ExaAnn_PutParamExaCodToEdit (void *ExaCod);
static long ExaAnn_GetParamExaCod (void);
static void ExaAnn_GetNotifContentExamAnnouncement (const struct ExaAnn_ExamAnnouncements *ExamAnns,
char **ContentStr);
static void ExaAnn_GetNotifContentExamAnn (const struct ExaAnn_ExamAnnouncements *ExamAnns,
char **ContentStr);
/*****************************************************************************/
/******************* 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
@ -116,7 +116,7 @@ static struct ExaAnn_ExamAnnouncements *ExaAnn_GetGlobalExamAnnouncements (void)
/********************** Reset exam announcements context *********************/
/*****************************************************************************/
void ExaAnn_ResetExamAnnouncements (struct ExaAnn_ExamAnnouncements *ExamAnns)
void ExaAnn_ResetExamAnns (struct ExaAnn_ExamAnnouncements *ExamAnns)
{
ExamAnns->NumExaAnns = 0;
ExamAnns->Lst = NULL;
@ -125,43 +125,60 @@ void ExaAnn_ResetExamAnnouncements (struct ExaAnn_ExamAnnouncements *ExamAnns)
ExamAnns->HighlightDate[0] = '\0'; // No exam announcements highlighted
ExamAnns->ExaCod = -1L;
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 ********************/
/*****************************************************************************/
void ExaAnn_PutFrmEditAExamAnnouncement (void)
void ExaAnn_PutFrmEditAExamAnn (void)
{
struct ExaAnn_ExamAnnouncements ExamAnns;
long ExaCod;
/***** Reset exam announcements context *****/
ExaAnn_ResetExamAnnouncements (&ExamAnns);
ExaAnn_ResetExamAnns (&ExamAnns);
/***** Allocate memory for the exam announcement *****/
ExaAnn_AllocMemExamAnnouncement (&ExamAnns);
ExaAnn_AllocMemExamAnn (&ExamAnns);
/***** 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
/***** Read exam announcement from the database *****/
ExaAnn_GetDataExamAnnouncementFromDB (&ExamAnns,ExaCod);
ExaAnn_GetDataExamAnnFromDB (&ExamAnns,ExaCod);
/***** Show exam announcement *****/
ExaAnn_ShowExamAnnouncement (&ExamAnns,ExaCod,ExaAnn_FORM_VIEW,
false); // Don't highlight
ExaAnn_ShowExamAnn (&ExamAnns,ExaCod,ExaAnn_FORM_VIEW,
false); // Don't highlight
/***** Free memory of the exam announcement *****/
ExaAnn_FreeMemExamAnnouncement (&ExamAnns);
ExaAnn_FreeMemExamAnn (&ExamAnns);
}
/*****************************************************************************/
/**************** Get parameters of an exam announcement *********************/
/*****************************************************************************/
static long ExaAnn_GetParamsExamAnnouncement (struct ExaAnn_ExamAnnouncements *ExamAnns)
static long ExaAnn_GetParamsExamAnn (struct ExaAnn_ExamAnnouncements *ExamAnns)
{
long ExaCod;
@ -185,7 +202,7 @@ static long ExaAnn_GetParamsExamAnnouncement (struct ExaAnn_ExamAnnouncements *E
/***** Get the type of exam announcement *****/
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",
&ExamAnns->ExamAnn.ExamDate.Day,
&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 **/
/*****************************************************************************/
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)
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 **/
/*****************************************************************************/
static void ExaAnn_FreeMemExamAnnouncement (struct ExaAnn_ExamAnnouncements *ExamAnns)
static void ExaAnn_FreeMemExamAnn (struct ExaAnn_ExamAnnouncements *ExamAnns)
{
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
// 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_The_announcement_of_exam_has_been_successfully_updated;
struct ExaAnn_ExamAnnouncements *ExamAnns = ExaAnn_GetGlobalExamAnnouncements ();
struct ExaAnn_ExamAnnouncements *ExamAnns = ExaAnn_GetGlobalExamAnns ();
long ExaCod;
bool NewExamAnnouncement;
char *Anchor = NULL;
/***** Reset exam announcements context *****/
ExaAnn_ResetExamAnnouncements (ExamAnns);
ExaAnn_ResetExamAnns (ExamAnns);
/***** Allocate memory for the exam announcement *****/
ExaAnn_AllocMemExamAnnouncement (ExamAnns);
ExaAnn_AllocMemExamAnn (ExamAnns);
/***** Get parameters of the exam announcement *****/
ExaCod = ExaAnn_GetParamsExamAnnouncement (ExamAnns);
ExaCod = ExaAnn_GetParamsExamAnn (ExamAnns);
NewExamAnnouncement = (ExaCod < 0);
/***** Add the exam announcement to the database and read it again from the database *****/
if (NewExamAnnouncement)
ExamAnns->NewExaCod = ExaCod = ExaAnn_AddExamAnnouncementToDB (ExamAnns);
ExamAnns->NewExaCod = ExaCod = ExaAnn_AddExamAnnToDB (ExamAnns);
else
ExaAnn_ModifyExamAnnouncementInDB (ExamAnns,ExaCod);
ExaAnn_ModifyExamAnnInDB (ExamAnns,ExaCod);
/***** Free memory of the exam announcement *****/
ExaAnn_FreeMemExamAnnouncement (ExamAnns);
ExaAnn_FreeMemExamAnn (ExamAnns);
/***** Create alert to show the change made *****/
Frm_SetAnchorStr (ExaCod,&Anchor);
@ -351,15 +368,15 @@ void ExaAnn_ReceiveExamAnnouncement1 (void)
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;
struct TL_Publication SocPub;
/***** Notify by email about the new exam announcement *****/
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 *****/
TL_StoreAndPublishNote (TL_NOTE_EXAM_ANNOUNCEMENT,ExamAnns->HighlightExaCod,&SocPub);
@ -368,14 +385,14 @@ void ExaAnn_ReceiveExamAnnouncement2 (void)
RSS_UpdateRSSFileForACrs (&Gbl.Hierarchy.Crs);
/***** Show exam announcements *****/
ExaAnn_ListExamAnnouncementsEdit ();
ExaAnn_ListExamAnnsEdit ();
}
/*****************************************************************************/
/***** 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 *****/
DB_QueryUPDATE ("can not update the number of notifications"
@ -389,37 +406,37 @@ static void ExaAnn_UpdateNumUsrsNotifiedByEMailAboutExamAnnouncement (long ExaCo
/************************* Print an exam announcement ************************/
/*****************************************************************************/
void ExaAnn_PrintExamAnnouncement (void)
void ExaAnn_PrintExamAnn (void)
{
struct ExaAnn_ExamAnnouncements ExamAnns;
long ExaCod;
/***** Reset exam announcements context *****/
ExaAnn_ResetExamAnnouncements (&ExamAnns);
ExaAnn_ResetExamAnns (&ExamAnns);
/***** Allocate memory for the exam announcement *****/
ExaAnn_AllocMemExamAnnouncement (&ExamAnns);
ExaAnn_AllocMemExamAnn (&ExamAnns);
/***** Get the code of the exam announcement *****/
if ((ExaCod = ExaAnn_GetParamExaCod ()) <= 0)
Lay_ShowErrorAndExit ("Code of exam announcement is missing.");
/***** Read exam announcement from the database *****/
ExaAnn_GetDataExamAnnouncementFromDB (&ExamAnns,ExaCod);
ExaAnn_GetDataExamAnnFromDB (&ExamAnns,ExaCod);
/***** Show exam announcement *****/
ExaAnn_ShowExamAnnouncement (&ExamAnns,ExaCod,ExaAnn_PRINT_VIEW,
ExaAnn_ShowExamAnn (&ExamAnns,ExaCod,ExaAnn_PRINT_VIEW,
false); // Don't highlight
/***** Free memory of the exam announcement *****/
ExaAnn_FreeMemExamAnnouncement (&ExamAnns);
ExaAnn_FreeMemExamAnn (&ExamAnns);
}
/*****************************************************************************/
/************************ 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_Remove;
@ -427,7 +444,7 @@ void ExaAnn_ReqRemoveExamAnnouncement (void)
long ExaCod;
/***** Reset exam announcements context *****/
ExaAnn_ResetExamAnnouncements (&ExamAnns);
ExaAnn_ResetExamAnns (&ExamAnns);
/***** Get the code of the exam announcement *****/
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);
/* Show announcement */
ExaAnn_AllocMemExamAnnouncement (&ExamAnns);
ExaAnn_GetDataExamAnnouncementFromDB (&ExamAnns,ExaCod);
ExaAnn_ShowExamAnnouncement (&ExamAnns,ExaCod,ExaAnn_NORMAL_VIEW,
ExaAnn_AllocMemExamAnn (&ExamAnns);
ExaAnn_GetDataExamAnnFromDB (&ExamAnns,ExaCod);
ExaAnn_ShowExamAnn (&ExamAnns,ExaCod,ExaAnn_NORMAL_VIEW,
false); // Don't highlight
ExaAnn_FreeMemExamAnnouncement (&ExamAnns);
ExaAnn_FreeMemExamAnn (&ExamAnns);
/* End alert */
@ -457,13 +474,13 @@ void ExaAnn_ReqRemoveExamAnnouncement (void)
// This function is splitted into a-priori and a-posteriori functions
// 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;
/***** Reset exam announcements context *****/
ExaAnn_ResetExamAnnouncements (ExamAnns);
ExaAnn_ResetExamAnns (ExamAnns);
/***** Get the code of the exam announcement *****/
if ((ExaCod = ExaAnn_GetParamExaCod ()) <= 0)
@ -486,7 +503,7 @@ void ExaAnn_RemoveExamAnnouncement1 (void)
RSS_UpdateRSSFileForACrs (&Gbl.Hierarchy.Crs);
}
void ExaAnn_RemoveExamAnnouncement2 (void)
void ExaAnn_RemoveExamAnn2 (void)
{
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);
/***** 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
// 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;
/***** Reset exam announcements context *****/
ExaAnn_ResetExamAnnouncements (ExamAnns);
ExaAnn_ResetExamAnns (ExamAnns);
/***** Get the code of the exam announcement *****/
if ((ExaCod = ExaAnn_GetParamExaCod ()) <= 0)
@ -532,13 +549,13 @@ void ExaAnn_HideExamAnnouncement (void)
// This function is splitted into a-priori and a-posteriori functions
// 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;
/***** Reset exam announcements context *****/
ExaAnn_ResetExamAnnouncements (ExamAnns);
ExaAnn_ResetExamAnns (ExamAnns);
/***** Get the code of the exam announcement *****/
if ((ExaCod = ExaAnn_GetParamExaCod ()) <= 0)
@ -559,15 +576,15 @@ void ExaAnn_UnhideExamAnnouncement (void)
/*************** List all the exam announcements to see them *****************/
/*****************************************************************************/
void ExaAnn_ListExamAnnouncementsSee (void)
void ExaAnn_ListExamAnnsSee (void)
{
struct ExaAnn_ExamAnnouncements ExamAnns;
/***** Reset exam announcements context *****/
ExaAnn_ResetExamAnnouncements (&ExamAnns);
ExaAnn_ResetExamAnns (&ExamAnns);
/***** List all exam announcements *****/
ExaAnn_ListExamAnnouncements (&ExamAnns,ExaAnn_NORMAL_VIEW);
ExaAnn_ListExamAnns (&ExamAnns,ExaAnn_NORMAL_VIEW);
/***** Mark possible notifications as seen *****/
Ntf_MarkNotifAsSeen (Ntf_EVENT_EXAM_ANNOUNCEMENT,
@ -579,47 +596,47 @@ void ExaAnn_ListExamAnnouncementsSee (void)
/********** 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 ***********/
/*****************************************************************************/
void ExaAnn_ListExamAnnouncementsCod (void)
void ExaAnn_ListExamAnnsCod (void)
{
struct ExaAnn_ExamAnnouncements ExamAnns;
/***** Reset exam announcements context *****/
ExaAnn_ResetExamAnnouncements (&ExamAnns);
ExaAnn_ResetExamAnns (&ExamAnns);
/***** Get exam announcement code *****/
ExaAnn_GetExaCodToHighlight (&ExamAnns);
/***** List all exam announcements *****/
ExaAnn_ListExamAnnouncements (&ExamAnns,ExaAnn_NORMAL_VIEW);
ExaAnn_ListExamAnns (&ExamAnns,ExaAnn_NORMAL_VIEW);
}
/*****************************************************************************/
/***************** List exam announcements on a given date *******************/
/*****************************************************************************/
void ExaAnn_ListExamAnnouncementsDay (void)
void ExaAnn_ListExamAnnsDay (void)
{
struct ExaAnn_ExamAnnouncements ExamAnns;
/***** Reset exam announcements context *****/
ExaAnn_ResetExamAnnouncements (&ExamAnns);
ExaAnn_ResetExamAnns (&ExamAnns);
/***** Get date *****/
ExaAnn_GetDateToHighlight (&ExamAnns);
/***** 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 ************************/
/*****************************************************************************/
static void ExaAnn_ListExamAnnouncements (struct ExaAnn_ExamAnnouncements *ExamAnns,
ExaAnn_TypeViewExamAnnouncement_t TypeViewExamAnnouncement)
static void ExaAnn_ListExamAnns (struct ExaAnn_ExamAnnouncements *ExamAnns,
ExaAnn_TypeViewExamAnnouncement_t TypeViewExamAnnouncement)
{
extern const char *Hlp_ASSESSMENT_Announcements;
extern const char *Txt_Announcements_of_exams;
@ -685,7 +702,7 @@ static void ExaAnn_ListExamAnnouncements (struct ExaAnn_ExamAnnouncements *ExamA
/***** Begin box *****/
if (ICanEdit)
Box_BoxBegin (NULL,Txt_Announcements_of_exams,
ExaAnn_PutIconToCreateNewExamAnnouncement,NULL,
ExaAnn_PutIconToCreateNewExamAnn,NULL,
Hlp_ASSESSMENT_Announcements,Box_NOT_CLOSABLE);
else
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.");
/***** Allocate memory for the exam announcement *****/
ExaAnn_AllocMemExamAnnouncement (ExamAnns);
ExaAnn_AllocMemExamAnn (ExamAnns);
/***** Read the data of the exam announcement *****/
ExaAnn_GetDataExamAnnouncementFromDB (ExamAnns,ExaCod);
ExaAnn_GetDataExamAnnFromDB (ExamAnns,ExaCod);
/***** Show exam announcement *****/
HighLight = false;
@ -724,11 +741,11 @@ static void ExaAnn_ListExamAnnouncements (struct ExaAnn_ExamAnnouncements *ExamA
ExamAnns->HighlightDate))
HighLight = true;
}
ExaAnn_ShowExamAnnouncement (ExamAnns,ExaCod,TypeViewExamAnnouncement,
ExaAnn_ShowExamAnn (ExamAnns,ExaCod,TypeViewExamAnnouncement,
HighLight);
/***** Free memory of the exam announcement *****/
ExaAnn_FreeMemExamAnnouncement (ExamAnns);
ExaAnn_FreeMemExamAnn (ExamAnns);
}
/***** 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 *****/
if (ICanEdit)
ExaAnn_PutButtonToCreateNewExamAnnouncement ();
ExaAnn_PutButtonToCreateNewExamAnn ();
/***** End box *****/
Box_BoxEnd ();
@ -746,7 +763,7 @@ static void ExaAnn_ListExamAnnouncements (struct ExaAnn_ExamAnnouncements *ExamA
/***************** 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;
@ -759,7 +776,7 @@ static void ExaAnn_PutIconToCreateNewExamAnnouncement (__attribute__((unused)) v
/**************** 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;
@ -773,7 +790,7 @@ static void ExaAnn_PutButtonToCreateNewExamAnnouncement (void)
/*****************************************************************************/
// 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;
@ -815,8 +832,8 @@ static long ExaAnn_AddExamAnnouncementToDB (const struct ExaAnn_ExamAnnouncement
/*************** Modify an exam announcement in the database *****************/
/*****************************************************************************/
static void ExaAnn_ModifyExamAnnouncementInDB (const struct ExaAnn_ExamAnnouncements *ExamAnns,
long ExaCod)
static void ExaAnn_ModifyExamAnnInDB (const struct ExaAnn_ExamAnnouncements *ExamAnns,
long ExaCod)
{
/***** Modify 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 **********/
/*****************************************************************************/
void ExaAnn_CreateListExamAnnouncements (struct ExaAnn_ExamAnnouncements *ExamAnns)
void ExaAnn_CreateListExamAnns (struct ExaAnn_ExamAnnouncements *ExamAnns)
{
MYSQL_RES *mysql_res;
MYSQL_ROW row;
@ -913,7 +930,7 @@ void ExaAnn_CreateListExamAnnouncements (struct ExaAnn_ExamAnnouncements *ExamAn
/***************** Free list of dates of exam announcements ******************/
/*****************************************************************************/
void ExaAnn_FreeListExamAnnouncements (struct ExaAnn_ExamAnnouncements *ExamAnns)
void ExaAnn_FreeListExamAnns (struct ExaAnn_ExamAnnouncements *ExamAnns)
{
if (ExamAnns->Lst)
{
@ -927,8 +944,8 @@ void ExaAnn_FreeListExamAnnouncements (struct ExaAnn_ExamAnnouncements *ExamAnns
/******** Read the data of an exam announcement from the database ************/
/*****************************************************************************/
static void ExaAnn_GetDataExamAnnouncementFromDB (struct ExaAnn_ExamAnnouncements *ExamAnns,
long ExaCod)
static void ExaAnn_GetDataExamAnnFromDB (struct ExaAnn_ExamAnnouncements *ExamAnns,
long ExaCod)
{
MYSQL_RES *mysql_res;
MYSQL_ROW row;
@ -1041,10 +1058,10 @@ static void ExaAnn_GetDataExamAnnouncementFromDB (struct ExaAnn_ExamAnnouncement
/************ Show a form with the data of an exam announcement **************/
/*****************************************************************************/
static void ExaAnn_ShowExamAnnouncement (struct ExaAnn_ExamAnnouncements *ExamAnns,
long ExaCod,
ExaAnn_TypeViewExamAnnouncement_t TypeViewExamAnnouncement,
bool HighLight)
static void ExaAnn_ShowExamAnn (struct ExaAnn_ExamAnnouncements *ExamAnns,
long ExaCod,
ExaAnn_TypeViewExamAnnouncement_t TypeViewExamAnnouncement,
bool HighLight)
{
extern const char *Hlp_ASSESSMENT_Announcements_new_announcement;
extern const char *Hlp_ASSESSMENT_Announcements_edit_announcement;
@ -1108,11 +1125,11 @@ static void ExaAnn_ShowExamAnnouncement (struct ExaAnn_ExamAnnouncements *ExamAn
Width = "625px";
ExamAnns->Anchor = Anchor; // Used to put contextual icons
ExamAnns->ExaCod = ExaCod; // Used to put contextual icons
FunctionToDrawContextualIcons = TypeViewExamAnnouncement == ExaAnn_NORMAL_VIEW ? ExaAnn_PutIconsExamAnnouncement :
NULL;
FunctionToDrawContextualIcons = TypeViewExamAnnouncement == ExaAnn_NORMAL_VIEW ? ExaAnn_PutIconsExamAnn :
NULL;
HelpLink = TypeViewExamAnnouncement == ExaAnn_FORM_VIEW ? ((ExaCod > 0) ? Hlp_ASSESSMENT_Announcements_edit_announcement :
Hlp_ASSESSMENT_Announcements_new_announcement) :
NULL;
Hlp_ASSESSMENT_Announcements_new_announcement) :
NULL;
if (HighLight)
{
/* Show pending alerts */
@ -1194,11 +1211,11 @@ static void ExaAnn_ShowExamAnnouncement (struct ExaAnn_ExamAnnouncements *ExamAn
/* Label */
Frm_LabelColumn ("RT",
TypeViewExamAnnouncement == ExaAnn_FORM_VIEW ? "CrsName" :
NULL,
NULL,
Txt_EXAM_ANNOUNCEMENT_Course);
/* Data */
HTM_TD_Begin ("class=\"EXAM LT\"");
HTM_TD_Begin ("class=\"EXAM LB\"");
if (TypeViewExamAnnouncement == ExaAnn_FORM_VIEW)
HTM_INPUT_TEXT ("CrsName",Hie_MAX_CHARS_FULL_NAME,ExamAnns->ExamAnn.CrsFullName,
HTM_DONT_SUBMIT_ON_CHANGE,
@ -1223,7 +1240,7 @@ static void ExaAnn_ShowExamAnnouncement (struct ExaAnn_ExamAnnouncements *ExamAn
Txt_EXAM_ANNOUNCEMENT_Year_or_semester);
/* Data */
HTM_TD_Begin ("class=\"EXAM LT\"");
HTM_TD_Begin ("class=\"EXAM LB\"");
if (TypeViewExamAnnouncement == ExaAnn_FORM_VIEW)
{
HTM_SELECT_Begin (HTM_DONT_SUBMIT_ON_CHANGE,
@ -1248,11 +1265,11 @@ static void ExaAnn_ShowExamAnnouncement (struct ExaAnn_ExamAnnouncements *ExamAn
/* Label */
Frm_LabelColumn ("RT",
TypeViewExamAnnouncement == ExaAnn_FORM_VIEW ? "ExamSession" :
NULL,
NULL,
Txt_EXAM_ANNOUNCEMENT_Session);
/* Data */
HTM_TD_Begin ("class=\"EXAM LT\"");
HTM_TD_Begin ("class=\"EXAM LB\"");
if (TypeViewExamAnnouncement == ExaAnn_FORM_VIEW)
HTM_INPUT_TEXT ("ExamSession",ExaAnn_MAX_CHARS_SESSION,ExamAnns->ExamAnn.Session,
HTM_DONT_SUBMIT_ON_CHANGE,
@ -1267,12 +1284,15 @@ static void ExaAnn_ShowExamAnnouncement (struct ExaAnn_ExamAnnouncements *ExamAn
HTM_TR_Begin (NULL);
/* 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 */
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 :
Gbl.Now.Date.Year,
Gbl.Now.Date.Year + 1,"Exam",
@ -1284,7 +1304,7 @@ static void ExaAnn_ShowExamAnnouncement (struct ExaAnn_ExamAnnouncements *ExamAn
{
Dat_ConvDateToDateStr (&ExamAnns->ExamAnn.ExamDate,
StrExamDate);
HTM_TD_Begin ("class=\"EXAM LT\"");
HTM_TD_Begin ("class=\"EXAM LB\"");
HTM_Txt (StrExamDate);
HTM_TD_End ();
}
@ -1294,14 +1314,17 @@ static void ExaAnn_ShowExamAnnouncement (struct ExaAnn_ExamAnnouncements *ExamAn
HTM_TR_Begin (NULL);
/* 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 */
HTM_TD_Begin ("class=\"EXAM LT\"");
HTM_TD_Begin ("class=\"EXAM LB\"");
if (TypeViewExamAnnouncement == ExaAnn_FORM_VIEW)
{
HTM_SELECT_Begin (HTM_DONT_SUBMIT_ON_CHANGE,
"name=\"ExamHour\"");
"id=\"ExamHour\" name=\"ExamHour\"");
HTM_OPTION (HTM_Type_STRING,"0",
ExamAnns->ExamAnn.StartTime.Hour == 0,false,
"-");
@ -1334,14 +1357,17 @@ static void ExaAnn_ShowExamAnnouncement (struct ExaAnn_ExamAnnouncements *ExamAn
HTM_TR_Begin (NULL);
/* 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 */
HTM_TD_Begin ("class=\"EXAM LT\"");
HTM_TD_Begin ("class=\"EXAM LB\"");
if (TypeViewExamAnnouncement == ExaAnn_FORM_VIEW)
{
HTM_SELECT_Begin (HTM_DONT_SUBMIT_ON_CHANGE,
"name=\"DurationHour\"");
"id=\"DurationHour\" name=\"DurationHour\"");
for (Hour = 0;
Hour <= 8;
Hour++)
@ -1366,7 +1392,7 @@ static void ExaAnn_ShowExamAnnouncement (struct ExaAnn_ExamAnnouncements *ExamAn
if (ExamAnns->ExamAnn.Duration.Hour)
{
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,
ExamAnns->ExamAnn.Duration.Minute);
else
@ -1395,7 +1421,7 @@ static void ExaAnn_ShowExamAnnouncement (struct ExaAnn_ExamAnnouncements *ExamAn
Txt_EXAM_ANNOUNCEMENT_Place_of_exam);
/* Data */
HTM_TD_Begin ("class=\"EXAM LT\"");
HTM_TD_Begin ("class=\"EXAM LB\"");
if (TypeViewExamAnnouncement == ExaAnn_FORM_VIEW)
{
HTM_TEXTAREA_Begin ("id=\"Place\" name=\"Place\" cols=\"40\" rows=\"4\"");
@ -1419,11 +1445,11 @@ static void ExaAnn_ShowExamAnnouncement (struct ExaAnn_ExamAnnouncements *ExamAn
/* Label */
Frm_LabelColumn ("RT",
TypeViewExamAnnouncement == ExaAnn_FORM_VIEW ? "ExamMode" :
NULL,
NULL,
Txt_EXAM_ANNOUNCEMENT_Mode);
/* Data */
HTM_TD_Begin ("class=\"EXAM LT\"");
HTM_TD_Begin ("class=\"EXAM LB\"");
if (TypeViewExamAnnouncement == ExaAnn_FORM_VIEW)
{
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);
/* Data */
HTM_TD_Begin ("class=\"EXAM LT\"");
HTM_TD_Begin ("class=\"EXAM LB\"");
if (TypeViewExamAnnouncement == ExaAnn_FORM_VIEW)
{
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);
/* Data */
HTM_TD_Begin ("class=\"EXAM LT\"");
HTM_TD_Begin ("class=\"EXAM LB\"");
if (TypeViewExamAnnouncement == ExaAnn_FORM_VIEW)
{
HTM_TEXTAREA_Begin ("id=\"DocRequired\" name=\"DocRequired\" cols=\"40\" rows=\"2\"");
@ -1503,11 +1529,11 @@ static void ExaAnn_ShowExamAnnouncement (struct ExaAnn_ExamAnnouncements *ExamAn
/* Label */
Frm_LabelColumn ("RT",
TypeViewExamAnnouncement == ExaAnn_FORM_VIEW ? "MatRequired" :
NULL,
NULL,
Txt_EXAM_ANNOUNCEMENT_Material_required);
/* Data */
HTM_TD_Begin ("class=\"EXAM LT\"");
HTM_TD_Begin ("class=\"EXAM LB\"");
if (TypeViewExamAnnouncement == ExaAnn_FORM_VIEW)
{
HTM_TEXTAREA_Begin ("id=\"MatRequired\" name=\"MatRequired\" cols=\"40\" rows=\"4\"");
@ -1531,11 +1557,11 @@ static void ExaAnn_ShowExamAnnouncement (struct ExaAnn_ExamAnnouncements *ExamAn
/* Label */
Frm_LabelColumn ("RT",
TypeViewExamAnnouncement == ExaAnn_FORM_VIEW ? "MatAllowed" :
NULL,
NULL,
Txt_EXAM_ANNOUNCEMENT_Material_allowed);
/* Data */
HTM_TD_Begin ("class=\"EXAM LT\"");
HTM_TD_Begin ("class=\"EXAM LB\"");
if (TypeViewExamAnnouncement == ExaAnn_FORM_VIEW)
{
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);
/* Data */
HTM_TD_Begin ("class=\"EXAM LT\"");
HTM_TD_Begin ("class=\"EXAM LB\"");
if (TypeViewExamAnnouncement == ExaAnn_FORM_VIEW)
{
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 ***********/
/*****************************************************************************/
static void ExaAnn_PutIconsExamAnnouncement (void *ExamAnns)
static void ExaAnn_PutIconsExamAnn (void *ExamAnns)
{
if (ExamAnns)
{
@ -1671,9 +1697,9 @@ static long ExaAnn_GetParamExaCod (void)
/************ Get summary and content about an exam announcement *************/
/*****************************************************************************/
void ExaAnn_GetSummaryAndContentExamAnnouncement (char SummaryStr[Ntf_MAX_BYTES_SUMMARY + 1],
char **ContentStr,
long ExaCod,bool GetContent)
void ExaAnn_GetSummaryAndContentExamAnn (char SummaryStr[Ntf_MAX_BYTES_SUMMARY + 1],
char **ContentStr,
long ExaCod,bool GetContent)
{
extern const char *Txt_hours_ABBREVIATION;
struct ExaAnn_ExamAnnouncements ExamAnns;
@ -1681,20 +1707,20 @@ void ExaAnn_GetSummaryAndContentExamAnnouncement (char SummaryStr[Ntf_MAX_BYTES_
char StrExamDate[Cns_MAX_BYTES_DATE + 1];
/***** Reset exam announcements context *****/
ExaAnn_ResetExamAnnouncements (&ExamAnns);
ExaAnn_ResetExamAnns (&ExamAnns);
/***** Initializations *****/
SummaryStr[0] = '\0'; // Return nothing on error
/***** Allocate memory for the exam announcement *****/
ExaAnn_AllocMemExamAnnouncement (&ExamAnns);
ExaAnn_AllocMemExamAnn (&ExamAnns);
/***** Get data of an exam announcement from database *****/
ExaAnn_GetDataExamAnnouncementFromDB (&ExamAnns,ExaCod);
ExaAnn_GetDataExamAnnFromDB (&ExamAnns,ExaCod);
/***** Content *****/
if (GetContent)
ExaAnn_GetNotifContentExamAnnouncement (&ExamAnns,ContentStr);
ExaAnn_GetNotifContentExamAnn (&ExamAnns,ContentStr);
/***** Summary *****/
/* Name of the course and date of exam */
@ -1709,15 +1735,15 @@ void ExaAnn_GetSummaryAndContentExamAnnouncement (char SummaryStr[Ntf_MAX_BYTES_
Ntf_MAX_BYTES_SUMMARY);
/***** Free memory of the exam announcement *****/
ExaAnn_FreeMemExamAnnouncement (&ExamAnns);
ExaAnn_FreeMemExamAnn (&ExamAnns);
}
/*****************************************************************************/
/************ Show a form with the data of an exam announcement **************/
/*****************************************************************************/
static void ExaAnn_GetNotifContentExamAnnouncement (const struct ExaAnn_ExamAnnouncements *ExamAnns,
char **ContentStr)
static void ExaAnn_GetNotifContentExamAnn (const struct ExaAnn_ExamAnnouncements *ExamAnns,
char **ContentStr)
{
extern const char *Txt_Institution;
extern const char *Txt_Degree;

View File

@ -53,6 +53,7 @@ typedef enum
ExaAnn_HIDDEN_EXAM_ANNOUNCEMENT = 1,
ExaAnn_DELETED_EXAM_ANNOUNCEMENT = 2,
} 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_BYTES_SESSION ((ExaAnn_MAX_CHARS_SESSION + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 2047
@ -99,30 +100,30 @@ struct ExaAnn_ExamAnnouncements
/***************************** Public prototypes *****************************/
/*****************************************************************************/
void ExaAnn_ResetExamAnnouncements (struct ExaAnn_ExamAnnouncements *ExamAnns);
void ExaAnn_ResetExamAnns (struct ExaAnn_ExamAnnouncements *ExamAnns);
void ExaAnn_PutFrmEditAExamAnnouncement (void);
void ExaAnn_ReceiveExamAnnouncement1 (void);
void ExaAnn_ReceiveExamAnnouncement2 (void);
void ExaAnn_PrintExamAnnouncement (void);
void ExaAnn_ReqRemoveExamAnnouncement (void);
void ExaAnn_RemoveExamAnnouncement1 (void);
void ExaAnn_RemoveExamAnnouncement2 (void);
void ExaAnn_HideExamAnnouncement (void);
void ExaAnn_UnhideExamAnnouncement (void);
void ExaAnn_PutFrmEditAExamAnn (void);
void ExaAnn_ReceiveExamAnn1 (void);
void ExaAnn_ReceiveExamAnn2 (void);
void ExaAnn_PrintExamAnn (void);
void ExaAnn_ReqRemoveExamAnn (void);
void ExaAnn_RemoveExamAnn1 (void);
void ExaAnn_RemoveExamAnn2 (void);
void ExaAnn_HideExamAnn (void);
void ExaAnn_UnhideExamAnn (void);
void ExaAnn_FreeListExamAnnouncements (struct ExaAnn_ExamAnnouncements *ExamAnns);
void ExaAnn_ListExamAnnouncementsSee (void);
void ExaAnn_ListExamAnnouncementsEdit (void);
void ExaAnn_FreeListExamAnns (struct ExaAnn_ExamAnnouncements *ExamAnns);
void ExaAnn_ListExamAnnsSee (void);
void ExaAnn_ListExamAnnsEdit (void);
void ExaAnn_ListExamAnnouncementsCod (void);
void ExaAnn_ListExamAnnouncementsDay (void);
void ExaAnn_ListExamAnnsCod (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_GetSummaryAndContentExamAnnouncement (char SummaryStr[Ntf_MAX_BYTES_SUMMARY + 1],
char **ContentStr,
long ExaCod,bool GetContent);
void ExaAnn_GetSummaryAndContentExamAnn (char SummaryStr[Ntf_MAX_BYTES_SUMMARY + 1],
char **ContentStr,
long ExaCod,bool GetContent);
#endif

View File

@ -550,10 +550,10 @@ static void Lay_WriteScripts (void)
Hld_GetListHolidays (&Holidays);
/***** Reset exam announcements context *****/
ExaAnn_ResetExamAnnouncements (&ExamAnns);
ExaAnn_ResetExamAnns (&ExamAnns);
/***** Create list of exam announcements *****/
ExaAnn_CreateListExamAnnouncements (&ExamAnns);
ExaAnn_CreateListExamAnns (&ExamAnns);
/***** Write script to initialize variables used to draw months *****/
HTM_SCRIPT_Begin (NULL,NULL);
@ -598,7 +598,7 @@ static void Lay_WriteScripts (void)
HTM_SCRIPT_End ();
/***** Free list of exam announcements *****/
ExaAnn_FreeListExamAnnouncements (&ExamAnns);
ExaAnn_FreeListExamAnns (&ExamAnns);
/***** Free list of 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);
break;
case Ntf_EVENT_EXAM_ANNOUNCEMENT:
ExaAnn_GetSummaryAndContentExamAnnouncement (SummaryStr,ContentStr,Cod,GetContent);
ExaAnn_GetSummaryAndContentExamAnn (SummaryStr,ContentStr,Cod,GetContent);
break;
case Ntf_EVENT_MARKS_FILE:
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);
break;
case TL_NOTE_EXAM_ANNOUNCEMENT:
ExaAnn_GetSummaryAndContentExamAnnouncement (SummaryStr,NULL,SocNot->Cod,false);
ExaAnn_GetSummaryAndContentExamAnn (SummaryStr,NULL,SocNot->Cod,false);
break;
case TL_NOTE_POST:
// Not applicable