");
- for (Order = Asg_ORDER_BY_START_DATE;
- Order <= Asg_ORDER_BY_END_DATE;
+ for (Order = Dat_START_TIME;
+ Order <= Dat_END_TIME;
Order++)
{
fprintf (Gbl.F.Out,"");
@@ -159,10 +159,10 @@ static void Asg_ShowAllAssignments (void)
Grp_PutParamWhichGrps ();
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
Par_PutHiddenParamUnsigned ("Order",(unsigned) Order);
- Act_LinkFormSubmit (Txt_ASG_ATT_SVY_OR_AGD_HELP_ORDER[Order],"TIT_TBL",NULL);
+ Act_LinkFormSubmit (Txt_START_END_TIME_HELP[Order],"TIT_TBL",NULL);
if (Order == Gbl.Asgs.SelectedOrderType)
fprintf (Gbl.F.Out,"");
- fprintf (Gbl.F.Out,"%s",Txt_ASG_ATT_SVY_OR_AGD_ORDER[Order]);
+ fprintf (Gbl.F.Out,"%s",Txt_START_END_TIME[Order]);
if (Order == Gbl.Asgs.SelectedOrderType)
fprintf (Gbl.F.Out,"");
fprintf (Gbl.F.Out,"");
@@ -326,7 +326,7 @@ static void Asg_ShowOneAssignment (long AsgCod)
(Asg.Open ? "DATE_GREEN" :
"DATE_RED"),
Gbl.RowEvenOdd,
- UniqueId,Asg.TimeUTC[Asg_START_TIME],Txt_Today);
+ UniqueId,Asg.TimeUTC[Dat_START_TIME],Txt_Today);
/* End date/time */
UniqueId++;
@@ -342,7 +342,7 @@ static void Asg_ShowOneAssignment (long AsgCod)
(Asg.Open ? "DATE_GREEN" :
"DATE_RED"),
Gbl.RowEvenOdd,
- UniqueId,Asg.TimeUTC[Asg_END_TIME],Txt_Today);
+ UniqueId,Asg.TimeUTC[Dat_END_TIME],Txt_Today);
/* Assignment title */
fprintf (Gbl.F.Out," | "
@@ -520,7 +520,7 @@ static void Asg_GetParamAsgOrderType (void)
Par_GetParToText ("Order",UnsignedStr,10);
if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1)
- Gbl.Asgs.SelectedOrderType = (tAsgsOrderType) UnsignedNum;
+ Gbl.Asgs.SelectedOrderType = (Dat_StartEndTime_t) UnsignedNum;
else
Gbl.Asgs.SelectedOrderType = Asg_DEFAULT_ORDER_TYPE;
}
@@ -618,10 +618,10 @@ void Asg_GetListAssignments (void)
}
switch (Gbl.Asgs.SelectedOrderType)
{
- case Asg_ORDER_BY_START_DATE:
+ case Dat_START_TIME:
sprintf (OrderBySubQuery,"StartTime DESC,EndTime DESC,Title DESC");
break;
- case Asg_ORDER_BY_END_DATE:
+ case Dat_END_TIME:
sprintf (OrderBySubQuery,"EndTime DESC,StartTime DESC,Title DESC");
break;
}
@@ -731,8 +731,8 @@ static void Asg_GetDataOfAssignment (struct Assignment *Asg,const char *Query)
Asg->AsgCod = -1L;
Asg->Hidden = false;
Asg->UsrCod = -1L;
- Asg->TimeUTC[Asg_START_TIME] =
- Asg->TimeUTC[Asg_END_TIME ] = (time_t) 0;
+ Asg->TimeUTC[Dat_START_TIME] =
+ Asg->TimeUTC[Dat_END_TIME ] = (time_t) 0;
Asg->Open = false;
Asg->Title[0] = '\0';
Asg->SendWork = false;
@@ -757,10 +757,10 @@ static void Asg_GetDataOfAssignment (struct Assignment *Asg,const char *Query)
Asg->UsrCod = Str_ConvertStrCodToLongCod (row[2]);
/* Get start date (row[3] holds the start UTC time) */
- Asg->TimeUTC[Asg_START_TIME] = Dat_GetUNIXTimeFromStr (row[3]);
+ Asg->TimeUTC[Dat_START_TIME] = Dat_GetUNIXTimeFromStr (row[3]);
/* Get end date (row[4] holds the end UTC time) */
- Asg->TimeUTC[Asg_END_TIME ] = Dat_GetUNIXTimeFromStr (row[4]);
+ Asg->TimeUTC[Dat_END_TIME ] = Dat_GetUNIXTimeFromStr (row[4]);
/* Get whether the assignment is open or closed (row(5)) */
Asg->Open = (row[5][0] == '1');
@@ -1090,8 +1090,8 @@ void Asg_RequestCreatOrEditAsg (void)
{
/* Initialize to empty assignment */
Asg.AsgCod = -1L;
- Asg.TimeUTC[Asg_START_TIME] = Gbl.StartExecutionTimeUTC;
- Asg.TimeUTC[Asg_END_TIME ] = Gbl.StartExecutionTimeUTC + (2 * 60 * 60); // +2 hours
+ Asg.TimeUTC[Dat_START_TIME] = Gbl.StartExecutionTimeUTC;
+ Asg.TimeUTC[Dat_END_TIME ] = Gbl.StartExecutionTimeUTC + (2 * 60 * 60); // +2 hours
Asg.Open = true;
Asg.Title[0] = '\0';
Asg.SendWork = false;
@@ -1275,8 +1275,8 @@ void Asg_RecFormAssignment (void)
}
/***** Get start/end date-times *****/
- NewAsg.TimeUTC[Asg_START_TIME] = Dat_GetTimeUTCFromForm ("StartTimeUTC");
- NewAsg.TimeUTC[Asg_END_TIME ] = Dat_GetTimeUTCFromForm ("EndTimeUTC" );
+ NewAsg.TimeUTC[Dat_START_TIME] = Dat_GetTimeUTCFromForm ("StartTimeUTC");
+ NewAsg.TimeUTC[Dat_END_TIME ] = Dat_GetTimeUTCFromForm ("EndTimeUTC" );
/***** Get assignment title *****/
Par_GetParToText ("Title",NewAsg.Title,Asg_MAX_LENGTH_ASSIGNMENT_TITLE);
@@ -1290,10 +1290,10 @@ void Asg_RecFormAssignment (void)
Par_GetParToHTML ("Txt",Txt,Cns_MAX_BYTES_TEXT); // Store in HTML format (not rigorous)
/***** Adjust dates *****/
- if (NewAsg.TimeUTC[Asg_START_TIME] == 0)
- NewAsg.TimeUTC[Asg_START_TIME] = Gbl.StartExecutionTimeUTC;
- if (NewAsg.TimeUTC[Asg_END_TIME] == 0)
- NewAsg.TimeUTC[Asg_END_TIME] = NewAsg.TimeUTC[Asg_START_TIME] + 2*60*60; // +2 hours
+ if (NewAsg.TimeUTC[Dat_START_TIME] == 0)
+ NewAsg.TimeUTC[Dat_START_TIME] = Gbl.StartExecutionTimeUTC;
+ if (NewAsg.TimeUTC[Dat_END_TIME] == 0)
+ NewAsg.TimeUTC[Dat_END_TIME] = NewAsg.TimeUTC[Dat_START_TIME] + 2*60*60; // +2 hours
/***** Check if title is correct *****/
if (NewAsg.Title[0]) // If there's an assignment title
@@ -1420,8 +1420,8 @@ static void Asg_CreateAssignment (struct Assignment *Asg,const char *Txt)
"'%s','%s','%s')",
Gbl.CurrentCrs.Crs.CrsCod,
Gbl.Usrs.Me.UsrDat.UsrCod,
- Asg->TimeUTC[Asg_START_TIME],
- Asg->TimeUTC[Asg_END_TIME ],
+ Asg->TimeUTC[Dat_START_TIME],
+ Asg->TimeUTC[Dat_END_TIME ],
Asg->Title,
Asg->Folder,
Txt);
@@ -1446,8 +1446,8 @@ static void Asg_UpdateAssignment (struct Assignment *Asg,const char *Txt)
"EndTime=FROM_UNIXTIME('%ld'),"
"Title='%s',Folder='%s',Txt='%s'"
" WHERE AsgCod='%ld' AND CrsCod='%ld'",
- Asg->TimeUTC[Asg_START_TIME],
- Asg->TimeUTC[Asg_END_TIME ],
+ Asg->TimeUTC[Dat_START_TIME],
+ Asg->TimeUTC[Dat_END_TIME ],
Asg->Title,
Asg->Folder,
Txt,
diff --git a/swad_assignment.h b/swad_assignment.h
index 8c1fc918..7ce63601 100644
--- a/swad_assignment.h
+++ b/swad_assignment.h
@@ -45,19 +45,12 @@ typedef enum
Asg_SEND_WORK = 1,
} Asg_SendWork_t;
-#define Asg_NUM_DATES 2
-typedef enum
- {
- Asg_START_TIME = 0,
- Asg_END_TIME = 1,
- } Asg_StartOrEndTime_t;
-
struct Assignment
{
long AsgCod;
bool Hidden;
long UsrCod;
- time_t TimeUTC[Asg_NUM_DATES];
+ time_t TimeUTC[Dat_NUM_START_END_TIME];
bool Open;
char Title[Asg_MAX_LENGTH_ASSIGNMENT_TITLE+1];
Asg_SendWork_t SendWork;
@@ -68,13 +61,7 @@ struct Assignment
// I belong to any of the groups)
};
-typedef enum
- {
- Asg_ORDER_BY_START_DATE = 0,
- Asg_ORDER_BY_END_DATE = 1,
- } tAsgsOrderType;
-
-#define Asg_DEFAULT_ORDER_TYPE Asg_ORDER_BY_START_DATE
+#define Asg_DEFAULT_ORDER_TYPE Dat_START_TIME
/*****************************************************************************/
/***************************** Public prototypes *****************************/
diff --git a/swad_attendance.c b/swad_attendance.c
index 1f396dbb..26d90899 100644
--- a/swad_attendance.c
+++ b/swad_attendance.c
@@ -194,12 +194,12 @@ static void Att_ShowAllAttEvents (void)
{
extern const char *Hlp_USERS_Attendance;
extern const char *Txt_Events;
- extern const char *Txt_ASG_ATT_SVY_OR_AGD_HELP_ORDER[2];
- extern const char *Txt_ASG_ATT_SVY_OR_AGD_ORDER[2];
+ extern const char *Txt_START_END_TIME_HELP[Dat_NUM_START_END_TIME];
+ extern const char *Txt_START_END_TIME[Dat_NUM_START_END_TIME];
extern const char *Txt_Event;
extern const char *Txt_ROLES_PLURAL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
extern const char *Txt_No_events;
- Att_EventsOrderType_t Order;
+ Dat_StartEndTime_t Order;
struct Pagination Pagination;
unsigned NumAttEvent;
bool ICanEdit = (Gbl.Usrs.Me.LoggedRole == Rol_TEACHER ||
@@ -230,8 +230,8 @@ static void Att_ShowAllAttEvents (void)
/***** Table head *****/
fprintf (Gbl.F.Out,""
"");
- for (Order = Att_ORDER_BY_START_DATE;
- Order <= Att_ORDER_BY_END_DATE;
+ for (Order = Dat_START_TIME;
+ Order <= Dat_END_TIME;
Order++)
{
fprintf (Gbl.F.Out,"");
@@ -239,10 +239,10 @@ static void Att_ShowAllAttEvents (void)
Grp_PutParamWhichGrps ();
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
Par_PutHiddenParamUnsigned ("Order",(unsigned) Order);
- Act_LinkFormSubmit (Txt_ASG_ATT_SVY_OR_AGD_HELP_ORDER[Order],"TIT_TBL",NULL);
+ Act_LinkFormSubmit (Txt_START_END_TIME_HELP[Order],"TIT_TBL",NULL);
if (Order == Gbl.AttEvents.SelectedOrderType)
fprintf (Gbl.F.Out,"");
- fprintf (Gbl.F.Out,"%s",Txt_ASG_ATT_SVY_OR_AGD_ORDER[Order]);
+ fprintf (Gbl.F.Out,"%s",Txt_START_END_TIME[Order]);
if (Order == Gbl.AttEvents.SelectedOrderType)
fprintf (Gbl.F.Out,"");
fprintf (Gbl.F.Out,"");
@@ -520,7 +520,7 @@ static void Att_GetParamAttOrderType (void)
Par_GetParToText ("Order",UnsignedStr,10);
if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1)
- Gbl.AttEvents.SelectedOrderType = (Att_EventsOrderType_t) UnsignedNum;
+ Gbl.AttEvents.SelectedOrderType = (Dat_StartEndTime_t) UnsignedNum;
else
Gbl.AttEvents.SelectedOrderType = Att_DEFAULT_ORDER_TYPE;
}
@@ -652,13 +652,13 @@ static void Att_GetListAttEvents (Att_OrderTime_t Order)
}
switch (Gbl.AttEvents.SelectedOrderType)
{
- case Att_ORDER_BY_START_DATE:
+ case Dat_START_TIME:
if (Order == Att_NEWEST_FIRST)
sprintf (OrderBySubQuery,"StartTime DESC,EndTime DESC,Title DESC");
else
sprintf (OrderBySubQuery,"StartTime,EndTime,Title");
break;
- case Att_ORDER_BY_END_DATE:
+ case Dat_END_TIME:
if (Order == Att_NEWEST_FIRST)
sprintf (OrderBySubQuery,"EndTime DESC,StartTime DESC,Title DESC");
else
diff --git a/swad_attendance.h b/swad_attendance.h
index e5d27c0f..48c98d2f 100644
--- a/swad_attendance.h
+++ b/swad_attendance.h
@@ -58,19 +58,13 @@ struct AttendanceEvent
bool Selected; // I have selected this attendance event
};
-typedef enum
- {
- Att_ORDER_BY_START_DATE = 0,
- Att_ORDER_BY_END_DATE = 1,
- } Att_EventsOrderType_t;
-
typedef enum
{
Att_NEWEST_FIRST,
Att_OLDEST_FIRST,
} Att_OrderTime_t;
-#define Att_DEFAULT_ORDER_TYPE Att_ORDER_BY_START_DATE
+#define Att_DEFAULT_ORDER_TYPE Dat_START_TIME
/*****************************************************************************/
/***************************** Public prototypes *****************************/
diff --git a/swad_changelog.h b/swad_changelog.h
index 650a022d..58226112 100644
--- a/swad_changelog.h
+++ b/swad_changelog.h
@@ -187,13 +187,15 @@
/****************************** Public constants *****************************/
/*****************************************************************************/
-#define Log_PLATFORM_VERSION "SWAD 16.100.1 (2016-12-13)"
+#define Log_PLATFORM_VERSION "SWAD 16.101 (2016-12-14)"
#define CSS_FILE "swad16.97.css"
-#define JS_FILE "swad16.99.js"
+#define JS_FILE "swad16.101.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.101: Dec 14, 2016 Interval in range of times is 5 minutes when no seconds needed.
+ Code refactoring related to start and end date-time. (210806 lines)
Version 16.100.1: Dec 13, 2016 Fixed bugs checking if users share courses. (210828 lines)
Version 16.100: Dec 13, 2016 Changes in layout of list of attendance events.
Code refactoring related with roles. (210820 lines)
diff --git a/swad_date.c b/swad_date.c
index a5e0b3a8..0a5fb562 100644
--- a/swad_date.c
+++ b/swad_date.c
@@ -219,8 +219,7 @@ void Dat_ConvDateToDateStr (struct Date *Date,char *DateStr)
void Dat_PutFormStartEndClientLocalDateTimesWithYesterdayToday (void)
{
extern const char *The_ClassForm[The_NUM_THEMES];
- extern const char *Txt_Start_date;
- extern const char *Txt_End_date;
+ extern const char *Txt_START_END_TIME[Dat_NUM_START_END_TIME];
extern const char *Txt_Yesterday;
extern const char *Txt_Today;
@@ -231,7 +230,7 @@ void Dat_PutFormStartEndClientLocalDateTimesWithYesterdayToday (void)
""
" | ",
The_ClassForm[Gbl.Prefs.Theme],
- Txt_Start_date);
+ Txt_START_END_TIME[Dat_START_TIME]);
/* Date-time */
Dat_WriteFormClientLocalDateTimeFromTimeUTC ("Start",
"Start",
@@ -260,7 +259,7 @@ void Dat_PutFormStartEndClientLocalDateTimesWithYesterdayToday (void)
" | "
"",
The_ClassForm[Gbl.Prefs.Theme],
- Txt_End_date);
+ Txt_START_END_TIME[Dat_END_TIME]);
/* Date-time */
Dat_WriteFormClientLocalDateTimeFromTimeUTC ("End",
"End",
@@ -282,23 +281,17 @@ void Dat_PutFormStartEndClientLocalDateTimes (time_t TimeUTC[2],
Dat_FormSeconds FormSeconds)
{
extern const char *The_ClassForm[The_NUM_THEMES];
- extern const char *Txt_Start_date;
- extern const char *Txt_End_date;
- Asg_StartOrEndTime_t StartOrEndTime;
- const char *Id[Asg_NUM_DATES] =
+ extern const char *Txt_START_END_TIME[Dat_NUM_START_END_TIME];
+ Dat_StartEndTime_t StartEndTime;
+ const char *Id[Dat_NUM_START_END_TIME] =
{
- "Start",
- "End"
- };
- const char *Dates[Asg_NUM_DATES] =
- {
- Txt_Start_date,
- Txt_End_date
+ "Start", // Dat_START_TIME
+ "End" // Dat_END_TIME
};
- for (StartOrEndTime = 0;
- StartOrEndTime <= 1;
- StartOrEndTime++)
+ for (StartEndTime = Dat_START_TIME;
+ StartEndTime <= Dat_END_TIME;
+ StartEndTime++)
{
fprintf (Gbl.F.Out," | "
""
@@ -308,12 +301,12 @@ void Dat_PutFormStartEndClientLocalDateTimes (time_t TimeUTC[2],
""
""
"",
- The_ClassForm[Gbl.Prefs.Theme],Dates[StartOrEndTime]);
+ The_ClassForm[Gbl.Prefs.Theme],Txt_START_END_TIME[StartEndTime]);
/* Date-time */
- Dat_WriteFormClientLocalDateTimeFromTimeUTC (Id[StartOrEndTime],
- Id[StartOrEndTime],
- TimeUTC[StartOrEndTime],
+ Dat_WriteFormClientLocalDateTimeFromTimeUTC (Id[StartEndTime],
+ Id[StartEndTime],
+ TimeUTC[StartEndTime],
Gbl.Now.Date.Year - 1,
Gbl.Now.Date.Year + 1,
FormSeconds,
@@ -346,6 +339,12 @@ void Dat_WriteFormClientLocalDateTimeFromTimeUTC (const char *Id,
unsigned Hour;
unsigned Minute;
unsigned Second;
+ unsigned MinutesIInterval[Dat_NUM_FORM_SECONDS] =
+ {
+ 5, // Dat_FORM_SECONDS_OFF
+ 1, // Dat_FORM_SECONDS_ON
+ };
+
/***** Start table *****/
fprintf (Gbl.F.Out,""
@@ -432,11 +431,13 @@ void Dat_WriteFormClientLocalDateTimeFromTimeUTC (const char *Id,
fprintf (Gbl.F.Out,"document.getElementById('%s').submit();",
Gbl.Form.Id);
fprintf (Gbl.F.Out,"\">");
+
for (Minute = 0;
- Minute <= 59;
- Minute++)
+ Minute < 60;
+ Minute += MinutesIInterval[FormSeconds])
fprintf (Gbl.F.Out,"",
Minute,Minute);
+
fprintf (Gbl.F.Out,""
"");
@@ -1130,10 +1131,10 @@ continue:
181f: ba 1f 85 eb 51 mov $0x51eb851f,%edx // 1374389535
- 1824: 8d 0c 70 lea (SumAux,Month,2),Sum // Sum = Day + Year + 2 + Month*2
+ 1824: 8d 0c 70 lea (SumAux,Month,2),n // n = Day + Year + 2 + Month*2
1827: 89 f8 mov Year,%eax
1829: c1 e8 02 shr $2,%eax // Year / 4
- 182c: 01 c1 add %eax,Sum // Sum = Day + Year + 2 + Month*2 + Year/4
+ 182c: 01 c1 add %eax,n // n = Day + Year + 2 + Month*2 + Year/4
182e: 89 f8 mov Year,%eax
1830: bf 25 49 92 24 mov $0x24924925,%edi // 613566757
1835: f7 e2 mul %edx // Year * 1374389535
@@ -1141,26 +1142,28 @@ continue:
1837: 89 d0 mov %edx,%eax // (Year * 1374389535) / 2^32 = (Year * 2^32 * 2^5 / 100) / 2^32 = (Year * 2^5) / 100
1839: c1 ea 05 shr $5,%edx // (Year * 1374389535) / 2^32 / 2^5 = Year / 100
183c: c1 e8 07 shr $7,%eax // (Year * 1374389535) / 2^32 / 2^7 = Year / 400
- 183f: 01 c1 add %eax,Sum // Sum = Day + Year + 2 + Month*2 + Year/4 + Year/400
+ 183f: 01 c1 add %eax,n // n = Day + Year + 2 + Month*2 + Year/4 + Year/400
1841: 8d 44 76 03 lea 3(Month,Month,2),%eax // Month*3 + 3
- 1845: 29 d1 sub %edx,Sum // Sum = Day + Year + 2 + Month*2 + Year/4 + Year/400 - Year/100
+ 1845: 29 d1 sub %edx,n // n = Day + Year + 2 + Month*2 + Year/4 + Year/400 - Year/100
1847: ba cd cc cc cc mov $0xcccccccd,%edx
184c: f7 e2 mul %edx // (Month*3 + 3) * 3435973837
184e: c1 ea 02 shr $2,%edx // (Month*3 + 3) * 3435973837 / 2^32 / 2^2 = (Month*3 + 3) / 5
- 1851: 01 d1 add %edx,Sum // Sum = Day + Year + 2 + Month*2 + Year/4 + Year/400 - Year/100 + (Month*3 + 3) / 5
+ 1851: 01 d1 add %edx,n // n = Day + Year + 2 + Month*2 + Year/4 + Year/400 - Year/100 + (Month*3 + 3) / 5
- 1853: 89 c8 mov Sum,%eax
- 1855: 89 ce mov Sum,%esi
+ 1853: 89 c8 mov n,%eax
+ 1855: 89 ce mov n,%esi
- 1857: f7 e7 mul %edi // edx = Sum * 613566757 / 2^32
- 1859: 29 d6 sub %edx,%esi //
- 185b: d1 ee shr %esi //
- 185d: 01 f2 add %esi,%edx //
- 185f: c1 ea 02 shr $2,%edx //
- 1862: 8d 04 d5 00 00 00 00 lea 0(,%rdx,8),%eax //
- 1869: 29 d0 sub %edx,%eax //
- 186b: 29 c1 sub %eax,Sum // Sum % 7
+ // Algorithm for remainder: https://doc.lagout.org/security/Hackers%20Delight.pdf, page 209
+
+ 1857: f7 e7 mul %edi // edx = q = M*n/2**32
+ 1859: 29 d6 sub %edx,%esi // esi = t = n - q
+ 185b: d1 ee shr %esi // esi = t = (n - q)/2
+ 185d: 01 f2 add %esi,%edx // edx = t = (n - q)/2 + q = (n + q)/2
+ 185f: c1 ea 02 shr $2,%edx // edx = q = (n + q)/8 = (n+Mn/2**32)/8 = floor(n/7)
+ 1862: 8d 04 d5 00 00 00 00 lea 0(,%rdx,8),%eax // eax = q*8
+ 1869: 29 d0 sub %edx,%eax // eax = q*8-q = q*7
+ 186b: 29 c1 sub %eax,%ecx // ecx = r = n - q*7
186d: 83 c1 05 add $5,Mod // Mod += 5
1870: 89 c8 mov Mod,%eax
diff --git a/swad_date.h b/swad_date.h
index c1166cbe..1d39a46c 100644
--- a/swad_date.h
+++ b/swad_date.h
@@ -77,6 +77,14 @@ typedef enum
Dat_FUTURE = 2,
} Dat_TimeStatus_t;
+#define Dat_NUM_START_END_TIME 2
+typedef enum
+ {
+ Dat_START_TIME = 0,
+ Dat_END_TIME = 1,
+ } Dat_StartEndTime_t;
+
+#define Dat_NUM_FORM_SECONDS 2
typedef enum
{
Dat_FORM_SECONDS_OFF,
diff --git a/swad_file_browser.c b/swad_file_browser.c
index ceaf4c1c..da2c9989 100644
--- a/swad_file_browser.c
+++ b/swad_file_browser.c
@@ -6155,7 +6155,7 @@ static void Brw_WriteDatesAssignment (void)
"%ld,', ','%s',true,false,true);"
"",
UniqueId,
- (long) Gbl.FileBrowser.Asg.TimeUTC[Asg_START_TIME],Txt_Today);
+ (long) Gbl.FileBrowser.Asg.TimeUTC[Dat_START_TIME],Txt_Today);
fprintf (Gbl.F.Out,"");
/***** Arrow *****/
@@ -6176,7 +6176,7 @@ static void Brw_WriteDatesAssignment (void)
"%ld,', ','%s',false,false,true);"
"",
UniqueId,
- (long) Gbl.FileBrowser.Asg.TimeUTC[Asg_END_TIME],Txt_Today);
+ (long) Gbl.FileBrowser.Asg.TimeUTC[Dat_END_TIME],Txt_Today);
fprintf (Gbl.F.Out,"");
}
else
diff --git a/swad_global.h b/swad_global.h
index e56bb3e3..272e06d8 100644
--- a/swad_global.h
+++ b/swad_global.h
@@ -550,7 +550,7 @@ struct Globals
bool LstIsRead; // Is the list already read from database, or it needs to be read?
unsigned Num; // Number of assignments
long *LstAsgCods; // List of assigment codes
- tAsgsOrderType SelectedOrderType;
+ Dat_StartEndTime_t SelectedOrderType;
long AsgCodToEdit; // Used as parameter in contextual links
} Asgs;
struct
@@ -558,7 +558,7 @@ struct Globals
bool LstIsRead; // Is the list already read from database, or it needs to be read?
unsigned Num; // Number of attendance events
struct AttendanceEvent *Lst; // List of attendance events
- Att_EventsOrderType_t SelectedOrderType;
+ Dat_StartEndTime_t SelectedOrderType;
long AttCod;
bool ShowDetails;
char *StrAttCodsSelected;
diff --git a/swad_holiday.c b/swad_holiday.c
index f44f74d5..020b2257 100644
--- a/swad_holiday.c
+++ b/swad_holiday.c
@@ -904,8 +904,7 @@ static void Hld_PutFormToCreateHoliday (void)
extern const char *Txt_New_holiday;
extern const char *Txt_Place;
extern const char *Txt_Type;
- extern const char *Txt_Start_date;
- extern const char *Txt_End_date;
+ extern const char *Txt_START_END_TIME[Dat_NUM_START_END_TIME];
extern const char *Txt_Holiday;
extern const char *Txt_HOLIDAY_TYPES[Hld_NUM_TYPES_HOLIDAY];
extern const char *Txt_Create_holiday;
@@ -942,8 +941,8 @@ static void Hld_PutFormToCreateHoliday (void)
"",
Txt_Place,
Txt_Type,
- Txt_Start_date,
- Txt_End_date,
+ Txt_START_END_TIME[Dat_START_TIME],
+ Txt_START_END_TIME[Dat_END_TIME],
Txt_Holiday);
/***** Holiday place *****/
@@ -1023,8 +1022,7 @@ static void Hld_PutHeadHolidays (void)
extern const char *Txt_Code;
extern const char *Txt_Place;
extern const char *Txt_Type;
- extern const char *Txt_Start_date;
- extern const char *Txt_End_date;
+ extern const char *Txt_START_END_TIME[Dat_NUM_START_END_TIME];
extern const char *Txt_Holiday;
fprintf (Gbl.F.Out,""
@@ -1051,8 +1049,8 @@ static void Hld_PutHeadHolidays (void)
Txt_Code,
Txt_Place,
Txt_Type,
- Txt_Start_date,
- Txt_End_date,
+ Txt_START_END_TIME[Dat_START_TIME],
+ Txt_START_END_TIME[Dat_END_TIME],
Txt_Holiday);
}
diff --git a/swad_survey.c b/swad_survey.c
index 0dcb2032..39dd1bba 100644
--- a/swad_survey.c
+++ b/swad_survey.c
@@ -187,8 +187,8 @@ static void Svy_ListAllSurveys (struct SurveyQuestion *SvyQst)
{
extern const char *Hlp_STATS_Surveys;
extern const char *Txt_Surveys;
- extern const char *Txt_ASG_ATT_SVY_OR_AGD_HELP_ORDER[2];
- extern const char *Txt_ASG_ATT_SVY_OR_AGD_ORDER[2];
+ extern const char *Txt_START_END_TIME_HELP[Dat_NUM_START_END_TIME];
+ extern const char *Txt_START_END_TIME[Dat_NUM_START_END_TIME];
extern const char *Txt_Survey;
extern const char *Txt_Status;
extern const char *Txt_No_surveys;
@@ -237,10 +237,10 @@ static void Svy_ListAllSurveys (struct SurveyQuestion *SvyQst)
Grp_PutParamWhichGrps ();
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
Par_PutHiddenParamUnsigned ("Order",(unsigned) Order);
- Act_LinkFormSubmit (Txt_ASG_ATT_SVY_OR_AGD_HELP_ORDER[Order],"TIT_TBL",NULL);
+ Act_LinkFormSubmit (Txt_START_END_TIME_HELP[Order],"TIT_TBL",NULL);
if (Order == Gbl.Svys.SelectedOrderType)
fprintf (Gbl.F.Out,"");
- fprintf (Gbl.F.Out,"%s",Txt_ASG_ATT_SVY_OR_AGD_ORDER[Order]);
+ fprintf (Gbl.F.Out,"%s",Txt_START_END_TIME[Order]);
if (Order == Gbl.Svys.SelectedOrderType)
fprintf (Gbl.F.Out,"");
fprintf (Gbl.F.Out,"");
@@ -2163,8 +2163,8 @@ void Svy_RecFormSurvey (void)
}
/***** Get start/end date-times *****/
- NewSvy.TimeUTC[Asg_START_TIME] = Dat_GetTimeUTCFromForm ("StartTimeUTC");
- NewSvy.TimeUTC[Asg_END_TIME ] = Dat_GetTimeUTCFromForm ("EndTimeUTC" );
+ NewSvy.TimeUTC[Dat_START_TIME] = Dat_GetTimeUTCFromForm ("StartTimeUTC");
+ NewSvy.TimeUTC[Dat_END_TIME ] = Dat_GetTimeUTCFromForm ("EndTimeUTC" );
/***** Get survey title *****/
Par_GetParToText ("Title",NewSvy.Title,Svy_MAX_LENGTH_SURVEY_TITLE);
diff --git a/swad_text.c b/swad_text.c
index 44668b23..f86cdeae 100644
--- a/swad_text.c
+++ b/swad_text.c
@@ -3036,7 +3036,7 @@ const char *Txt_Assignments_and_other_works =
"Atividades e outros trabalhos";
#endif
-const char *Txt_ASG_ATT_SVY_OR_AGD_HELP_ORDER[2] =
+const char *Txt_START_END_TIME_HELP[Dat_NUM_START_END_TIME] =
{
#if L==1
"Ordenar per data de començament"
@@ -3079,7 +3079,7 @@ const char *Txt_ASG_ATT_SVY_OR_AGD_HELP_ORDER[2] =
#endif
};
-const char *Txt_ASG_ATT_SVY_OR_AGD_ORDER[2] =
+const char *Txt_START_END_TIME[Dat_NUM_START_END_TIME] =
{
#if L==1
"Inici"
@@ -37751,27 +37751,6 @@ const char *Txt_Source_of_information =
"Fonte de informação";
#endif
-const char *Txt_Start_date =
-#if L==1
- "Data inicial";
-#elif L==2
- "Startdatum";
-#elif L==3
- "Start date";
-#elif L==4
- "Fecha inicial";
-#elif L==5
- "Date initiale";
-#elif L==6
- "Fecha inicial"; // Okoteve traducción
-#elif L==7
- "Data iniziale";
-#elif L==8
- "Data rozpoczęcia";
-#elif L==9
- "Data de início";
-#endif
-
const char *Txt_STAT_CLICKS_GROUPED_BY[Sta_NUM_CLICKS_GROUPED_BY] =
{
#if L==1
| | |