Version 16.74

This commit is contained in:
Antonio Cañas Vargas 2016-11-28 14:48:16 +01:00
parent 6b8d5353b0
commit 82d2d9ba39
5 changed files with 80 additions and 68 deletions

View File

@ -176,13 +176,15 @@
/****************************** Public constants *****************************/
/*****************************************************************************/
#define Log_PLATFORM_VERSION "SWAD 16.73.10 (2016-11-28)"
#define Log_PLATFORM_VERSION "SWAD 16.74 (2016-11-28)"
#define CSS_FILE "swad16.69.css"
#define JS_FILE "swad16.46.1.js"
// Number of lines (includes comments but not blank lines) has been got with the following command:
// nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*?.h sql/swad*.sql | tail -1
/*
Version 16.74: Nov 28, 2016 Contextual help on holidays.
Fixed bugs and code refactoring in holidays. (207803 lines)
Version 16.73.10: Nov 28, 2016 Contextual help on places. (207794 lines)
Version 16.73.9: Nov 28, 2016 Contextual help on departments. (207786 lines)
Version 16.73.8: Nov 28, 2016 Contextual help on system links. (207778 lines)

View File

@ -1074,6 +1074,7 @@ void Dat_AssignDate (struct Date *DateDst,struct Date *DateSrc)
DateDst->Month = DateSrc->Month;
DateDst->Day = DateSrc->Day;
DateDst->Week = DateSrc->Week;
strcpy (DateDst->YYYYMMDD,DateSrc->YYYYMMDD);
}
/*****************************************************************************/

View File

@ -78,6 +78,9 @@ const char *Hlp_INSTITUTION_Departments_edit = WIKI "INSTITUTION.Departments#edi
const char *Hlp_INSTITUTION_Places = WIKI "INSTITUTION.Places";
const char *Hlp_INSTITUTION_Places_edit = WIKI "INSTITUTION.Places#edit";
const char *Hlp_INSTITUTION_Holidays = WIKI "INSTITUTION.Holidays";
const char *Hlp_INSTITUTION_Holidays_edit = WIKI "INSTITUTION.Holidays#edit";
const char *Hlp_INSTITUTION_Documents = WIKI "INSTITUTION.Documents";
const char *Hlp_INSTITUTION_Shared = WIKI "INSTITUTION.Shared";

View File

@ -59,6 +59,9 @@ extern struct Globals Gbl;
static void Hld_GetParamHldOrderType (void);
static void Hld_PutIconToEditHlds (void);
static void Hld_GetDataOfHolidayByCod (struct Holiday *Hld);
static Hld_HolidayType_t Hld_GetParamHldType (void);
static Hld_HolidayType_t Hld_GetTypeOfHoliday (const char *UnsignedStr);
static void Hld_ListHolidaysForEdition (void);
@ -74,6 +77,7 @@ static void Hld_CreateHoliday (struct Holiday *Hld);
void Hld_SeeHolidays (void)
{
extern const char *Hlp_INSTITUTION_Holidays;
extern const char *Txt_Holidays;
extern const char *Txt_HOLIDAYS_HELP_ORDER[2];
extern const char *Txt_HOLIDAYS_ORDER[2];
@ -95,7 +99,7 @@ void Hld_SeeHolidays (void)
Lay_StartRoundFrameTable (NULL,Txt_Holidays,
Gbl.Usrs.Me.LoggedRole >= Rol_INS_ADM ? Hld_PutIconToEditHlds :
NULL,
NULL,2);
Hlp_INSTITUTION_Holidays,2);
fprintf (Gbl.F.Out,"<tr>");
for (Order = Hld_ORDER_BY_PLACE;
Order <= Hld_ORDER_BY_START_DATE;
@ -147,7 +151,6 @@ void Hld_SeeHolidays (void)
switch (Gbl.Hlds.Lst[NumHld].HldTyp)
{
case Hld_HOLIDAY:
fprintf (Gbl.F.Out,"-");
break;
case Hld_NON_SCHOOL_PERIOD:
fprintf (Gbl.F.Out,"%04u-%02u-%02u",
@ -318,9 +321,19 @@ void Hld_GetListHolidays (void)
if (!(Dat_GetDateFromYYYYMMDD (&(Hld->StartDate),row[4])))
Lay_ShowErrorAndExit ("Wrong start date.");
/* Get end date (row[5] holds the end date in YYYYMMDD format) */
if (!(Dat_GetDateFromYYYYMMDD (&(Hld->EndDate),row[5])))
Lay_ShowErrorAndExit ("Wrong end date.");
/* Set / get end date */
switch (Hld->HldTyp)
{
case Hld_HOLIDAY: // Only one day
/* Set end date = start date */
Dat_AssignDate (&Hld->EndDate,&Hld->StartDate);
break;
case Hld_NON_SCHOOL_PERIOD: // One or more days
/* Get end date (row[5] holds the end date in YYYYMMDD format) */
if (!(Dat_GetDateFromYYYYMMDD (&(Hld->EndDate),row[5])))
Lay_ShowErrorAndExit ("Wrong end date.");
break;
}
/* Get the name of the holiday/non school period (row[6]) */
strcpy (Hld->Name,row[6]);
@ -335,10 +348,10 @@ void Hld_GetListHolidays (void)
}
/*****************************************************************************/
/**************************** Get holiday full name **************************/
/************************* Get holiday data by code **************************/
/*****************************************************************************/
void Hld_GetDataOfHolidayByCod (struct Holiday *Hld)
static void Hld_GetDataOfHolidayByCod (struct Holiday *Hld)
{
char Query[1024];
MYSQL_RES *mysql_res;
@ -398,9 +411,19 @@ void Hld_GetDataOfHolidayByCod (struct Holiday *Hld)
if (!(Dat_GetDateFromYYYYMMDD (&(Hld->StartDate),row[3])))
Lay_ShowErrorAndExit ("Wrong start date.");
/* Get end date (row[4] holds the end date in YYYYMMDD format) */
if (!(Dat_GetDateFromYYYYMMDD (&(Hld->EndDate),row[4])))
Lay_ShowErrorAndExit ("Wrong end date.");
/* Set / get end date */
switch (Hld->HldTyp)
{
case Hld_HOLIDAY: // Only one day
/* Assign end date = start date */
Dat_AssignDate (&Hld->EndDate,&Hld->StartDate);
break;
case Hld_NON_SCHOOL_PERIOD: // One or more days
/* Get end date (row[4] holds the end date in YYYYMMDD format) */
if (!(Dat_GetDateFromYYYYMMDD (&(Hld->EndDate),row[4])))
Lay_ShowErrorAndExit ("Wrong end date.");
break;
}
/* Get the name of the holiday/non school period (row[5]) */
strcpy (Hld->Name,row[5]);
@ -461,6 +484,7 @@ void Hld_FreeListHolidays (void)
static void Hld_ListHolidaysForEdition (void)
{
extern const char *Hlp_INSTITUTION_Holidays_edit;
extern const char *Txt_Holidays;
extern const char *Txt_All_places;
extern const char *Txt_HOLIDAY_TYPES[Hld_NUM_TYPES_HOLIDAY];
@ -469,7 +493,8 @@ static void Hld_ListHolidaysForEdition (void)
struct Holiday *Hld;
Hld_HolidayType_t HolidayType;
Lay_StartRoundFrameTable (NULL,Txt_Holidays,NULL,NULL,2);
Lay_StartRoundFrameTable (NULL,Txt_Holidays,
NULL,Hlp_INSTITUTION_Holidays_edit,2);
/***** Table head *****/
Hld_PutHeadHolidays ();
@ -680,7 +705,7 @@ void Hld_ChangeHolidayPlace (void)
void Hld_ChangeHolidayType (void)
{
extern const char *Txt_The_type_of_the_holiday_X_has_changed;
char Query[512];
char Query[256];
struct Holiday *Hld;
Hld = &Gbl.Hlds.EditingHld;
@ -696,23 +721,10 @@ void Hld_ChangeHolidayType (void)
Hld->HldTyp = Hld_GetParamHldType ();
/***** Update holiday/no school period in database *****/
switch (Hld->HldTyp)
{
case Hld_HOLIDAY:
Hld->EndDate.Day = Hld->EndDate.Month = Hld->EndDate.Year = 0;
sprintf (Query,"UPDATE holidays SET HldTyp='%u',EndDate='00000000'"
" WHERE HldCod='%ld'",
(unsigned) Hld_HOLIDAY,Hld->HldCod);
break;
case Hld_NON_SCHOOL_PERIOD:
Hld->EndDate.Day = Hld->StartDate.Day;
Hld->EndDate.Month = Hld->StartDate.Month;
Hld->EndDate.Year = Hld->StartDate.Year;
sprintf (Query,"UPDATE holidays SET HldTyp='%u',EndDate=StartDate"
" WHERE HldCod='%ld'",
(unsigned) Hld_NON_SCHOOL_PERIOD,Hld->HldCod);
break;
}
Dat_AssignDate (&Hld->EndDate,&Hld->StartDate);
sprintf (Query,"UPDATE holidays SET HldTyp='%u',EndDate=StartDate"
" WHERE HldCod='%ld'",
(unsigned) Hld->HldTyp,Hld->HldCod);
DB_QueryUPDATE (Query,"can not update the type of a holiday");
/***** Write message to show the change made *****/
@ -752,7 +764,7 @@ static void Hld_ChangeDate (Hld_StartOrEndDate_t StartOrEndDate)
char Query[512];
struct Holiday *Hld;
struct Date NewDate;
struct Date *PtrDate;
struct Date *PtrDate = NULL; // Initialized to avoid warning
const char *StrStartOrEndDate;
char StrDate[11];
@ -773,30 +785,26 @@ static void Hld_ChangeDate (Hld_StartOrEndDate_t StartOrEndDate)
PtrDate = &(Hld->StartDate);
Dat_GetDateFromForm ("StartDay","StartMonth","StartYear",
&(NewDate.Day),&(NewDate.Month),&(NewDate.Year));
if (NewDate.Day == 0 || NewDate.Month == 0 || NewDate.Year == 0)
{
NewDate.Day = Gbl.Now.Date.Day;
NewDate.Month = Gbl.Now.Date.Month;
NewDate.Year = Gbl.Now.Date.Year;
}
if (NewDate.Day == 0 ||
NewDate.Month == 0 ||
NewDate.Year == 0)
Dat_AssignDate (&NewDate,&Gbl.Now.Date);
break;
default: // HLD_END_DATE
case HLD_END_DATE:
StrStartOrEndDate = "EndDate";
PtrDate = &(Hld->EndDate);
switch (Hld->HldTyp)
{
case Hld_HOLIDAY:
NewDate.Day = NewDate.Month = NewDate.Year = 0;
Dat_AssignDate (&NewDate,&Hld->StartDate);
break;
case Hld_NON_SCHOOL_PERIOD:
Dat_GetDateFromForm ("EndDay","EndMonth","EndYear",
&(NewDate.Day),&(NewDate.Month),&(NewDate.Year));
if (NewDate.Day == 0 || NewDate.Month == 0 || NewDate.Year == 0)
{
NewDate.Day = Gbl.Now.Date.Day;
NewDate.Month = Gbl.Now.Date.Month;
NewDate.Year = Gbl.Now.Date.Year;
}
if (NewDate.Day == 0 ||
NewDate.Month == 0 ||
NewDate.Year == 0)
Dat_AssignDate (&NewDate,&Gbl.Now.Date);
break;
}
break;
@ -891,6 +899,7 @@ void Hld_RenameHoliday (void)
static void Hld_PutFormToCreateHoliday (void)
{
extern const char *Hlp_INSTITUTION_Holidays_edit;
extern const char *Txt_All_places;
extern const char *Txt_New_holiday;
extern const char *Txt_Place;
@ -910,7 +919,8 @@ static void Hld_PutFormToCreateHoliday (void)
Act_FormStart (ActNewHld);
/***** Start of frame *****/
Lay_StartRoundFrameTable (NULL,Txt_New_holiday,NULL,NULL,2);
Lay_StartRoundFrameTable (NULL,Txt_New_holiday,
NULL,Hlp_INSTITUTION_Holidays_edit,2);
/***** Write heading *****/
fprintf (Gbl.F.Out,"<tr>"
@ -1066,36 +1076,32 @@ void Hld_RecFormNewHoliday (void)
/***** Get start date *****/
Dat_GetDateFromForm ("StartDay","StartMonth","StartYear",
&(Hld->StartDate.Day),&(Hld->StartDate.Month),&(Hld->StartDate.Year));
if (Hld->StartDate.Day == 0 ||
Hld->StartDate.Month == 0 ||
Hld->StartDate.Year == 0)
Dat_AssignDate (&Hld->StartDate,&Gbl.Now.Date);
/***** Get end date *****/
Dat_GetDateFromForm ("EndDay","EndMonth","EndYear",
&(Hld->EndDate.Day),&(Hld->EndDate.Month),&(Hld->EndDate.Year));
/***** Get holiday name *****/
Par_GetParToText ("Name",Hld->Name,Hld_MAX_LENGTH_HOLIDAY_NAME);
/***** Adjust dates *****/
if (Hld->StartDate.Day == 0 || Hld->StartDate.Month == 0 || Hld->StartDate.Year == 0)
{
Hld->StartDate.Day = Gbl.Now.Date.Day;
Hld->StartDate.Month = Gbl.Now.Date.Month;
Hld->StartDate.Year = Gbl.Now.Date.Year;
}
/***** Set end date *****/
switch (Hld->HldTyp)
{
case Hld_HOLIDAY:
Hld->EndDate.Day = Hld->EndDate.Month = Hld->EndDate.Year = 0;
/* Set end date = start date (ignore end date from form) */
Dat_AssignDate (&Hld->EndDate,&Hld->StartDate);
break;
case Hld_NON_SCHOOL_PERIOD:
if (Hld->EndDate.Day == 0 || Hld->EndDate.Month == 0 || Hld->EndDate.Year == 0)
{
Hld->EndDate.Day = Gbl.Now.Date.Day;
Hld->EndDate.Month = Gbl.Now.Date.Month;
Hld->EndDate.Year = Gbl.Now.Date.Year;
}
/* Get end date from form */
Dat_GetDateFromForm ("EndDay","EndMonth","EndYear",
&(Hld->EndDate.Day),&(Hld->EndDate.Month),&(Hld->EndDate.Year));
if (Hld->EndDate.Day == 0 ||
Hld->EndDate.Month == 0 ||
Hld->EndDate.Year == 0)
Dat_AssignDate (&Hld->EndDate,&Gbl.Now.Date);
break;
}
/***** Get holiday name *****/
Par_GetParToText ("Name",Hld->Name,Hld_MAX_LENGTH_HOLIDAY_NAME);
/***** Create the new holiday or write warning message *****/
if (Hld->Name[0]) // If there's a holiday name
Hld_CreateHoliday (Hld);

View File

@ -76,7 +76,7 @@ void Hld_SeeHolidays (void);
void Hld_EditHolidays (void);
void Hld_GetListHolidays (void);
void Hld_FreeListHolidays (void);
void Hld_GetDataOfHolidayByCod (struct Holiday *Hld);
long Hld_GetParamHldCod (void);
void Hld_RemoveHoliday (void);
void Hld_ChangeHolidayPlace (void);