diff --git a/swad_agenda.c b/swad_agenda.c
index f97dc76c..368c6f59 100644
--- a/swad_agenda.c
+++ b/swad_agenda.c
@@ -755,7 +755,7 @@ static void Agd_ShowOneEvent (Agd_AgendaType_t AgendaType,long AgdCod)
Dat_TimeStatusClassVisible[AgdEvent.TimeStatus],
Gbl.RowEvenOdd);
Dat_WriteLocalDateHMSFromUTC (Id,AgdEvent.TimeUTC[StartEndTime],
- Gbl.Prefs.DateFormat,"
",
+ Gbl.Prefs.DateFormat,Dat_SEPARATOR_BREAK,
true,true,true,0x6);
HTM_TD_End ();
free ((void *) Id);
diff --git a/swad_assignment.c b/swad_assignment.c
index 2abc9282..78c0ba26 100644
--- a/swad_assignment.c
+++ b/swad_assignment.c
@@ -391,7 +391,7 @@ static void Asg_ShowOneAssignment (long AsgCod,bool PrintView)
"DATE_RED"),
Gbl.RowEvenOdd);
Dat_WriteLocalDateHMSFromUTC (Id,Asg.TimeUTC[StartEndTime],
- Gbl.Prefs.DateFormat,"
",
+ Gbl.Prefs.DateFormat,Dat_SEPARATOR_BREAK,
true,true,true,0x7);
HTM_TD_End ();
free ((void *) Id);
diff --git a/swad_attendance.c b/swad_attendance.c
index b984e49b..a6119893 100644
--- a/swad_attendance.c
+++ b/swad_attendance.c
@@ -428,7 +428,7 @@ static void Att_ShowOneAttEvent (struct AttendanceEvent *Att,bool ShowOnlyThisAt
"DATE_RED"),
Gbl.RowEvenOdd);
Dat_WriteLocalDateHMSFromUTC (Id,Att->TimeUTC[StartEndTime],
- Gbl.Prefs.DateFormat,"
",
+ Gbl.Prefs.DateFormat,Dat_SEPARATOR_BREAK,
true,true,true,0x7);
HTM_TD_End ();
free ((void *) Id);
@@ -3143,7 +3143,7 @@ static void Att_ListEventsToSelect (Att_TypeOfView_t TypeOfView)
"",
NumAttEvent,Id);
Dat_WriteLocalDateHMSFromUTC (Id,Gbl.AttEvents.Lst[NumAttEvent].TimeUTC[Att_START_TIME],
- Gbl.Prefs.DateFormat,", ",
+ Gbl.Prefs.DateFormat,Dat_SEPARATOR_COMMA,
true,true,true,0x7);
HTM_TD_End ();
free ((void *) Id);
@@ -3588,7 +3588,7 @@ static void Att_ListAttEventsForAStd (unsigned NumUsr,struct UsrData *UsrDat)
Id,
Gbl.AttEvents.Lst[NumAttEvent].Title);
Dat_WriteLocalDateHMSFromUTC (Id,Gbl.AttEvents.Lst[NumAttEvent].TimeUTC[Att_START_TIME],
- Gbl.Prefs.DateFormat,", ",
+ Gbl.Prefs.DateFormat,Dat_SEPARATOR_COMMA,
true,true,true,0x7);
HTM_TD_End ();
free ((void *) Id);
diff --git a/swad_changelog.h b/swad_changelog.h
index 16f11d97..812568c5 100644
--- a/swad_changelog.h
+++ b/swad_changelog.h
@@ -487,7 +487,7 @@ enscript -2 --landscape --color --file-align=2 --highlight --line-numbers -o - *
En OpenSWAD:
ps2pdf source.ps destination.pdf
*/
-#define Log_PLATFORM_VERSION "SWAD 19.50.3 (2019-11-01)"
+#define Log_PLATFORM_VERSION "SWAD 19.50.4 (2019-11-02)"
#define CSS_FILE "swad19.47.css"
#define JS_FILE "swad19.39.js"
/*
@@ -495,6 +495,7 @@ ps2pdf source.ps destination.pdf
// TODO: Impedir la creación y edición de proyectos si no son editables.
// TODO: Importante: filtrar proyectos por usuarios (igual que en trabajos o en asistencia)
+ Version 19.50.4: Nov 02, 2019 Code refactoring related with writing of local date-time. (246072 lines)
Version 19.50.3: Nov 02, 2019 Code refactoring related with writing of local date-time. (246059 lines)
Version 19.50.2: Nov 01, 2019 Code refactoring related with writing of local date-time. (246079 lines)
Version 19.50.1: Nov 01, 2019 Code refactoring related with writing of local date-time. (246088 lines)
diff --git a/swad_connected.c b/swad_connected.c
index ab65a731..961464a8 100644
--- a/swad_connected.c
+++ b/swad_connected.c
@@ -104,7 +104,7 @@ void Con_ShowConnectedUsrs (void)
Box_BoxBegin (NULL,Gbl.Title,Con_PutIconToUpdateConnected,
Hlp_USERS_Connected,Box_NOT_CLOSABLE);
Dat_WriteLocalDateHMSFromUTC ("connected_current_time",Gbl.StartExecutionTimeUTC,
- Gbl.Prefs.DateFormat,", ",
+ Gbl.Prefs.DateFormat,Dat_SEPARATOR_COMMA,
false,false,true,0x7);
/***** Number of connected users in the whole platform *****/
diff --git a/swad_date.c b/swad_date.c
index 26691ff2..a48c18e5 100644
--- a/swad_date.c
+++ b/swad_date.c
@@ -171,7 +171,7 @@ void Dat_PutScriptDateFormat (Dat_Format_t Format)
if (asprintf (&Id,"date_format_%u",(unsigned) Format) < 0)
Lay_NotEnoughMemoryExit ();
Dat_WriteLocalDateHMSFromUTC (Id,Gbl.StartExecutionTimeUTC,
- Format,"",
+ Format,Dat_SEPARATOR_NONE,
false,true,false,0x0);
free ((void *) Id);
}
@@ -1615,15 +1615,21 @@ void Dat_WriteHoursMinutesSeconds (struct Time *Time)
/*****************************************************************************/
void Dat_WriteLocalDateHMSFromUTC (const char *Id,time_t TimeUTC,
- Dat_Format_t DateFormat,const char *Separator,
+ Dat_Format_t DateFormat,Dat_Separator_t Separator,
bool WriteToday,bool WriteDateOnSameDay,
bool WriteWeekDay,unsigned WriteHMS)
{
extern const char *Txt_Today;
+ static const char *SeparatorStr[] =
+ {
+ "", // Dat_SEPARATOR_NONE
+ ", ", // Dat_SEPARATOR_COMMA
+ "
", // Dat_SEPARATOR_BREAK
+ };
HTM_SCRIPT_Begin (NULL,NULL);
fprintf (Gbl.F.Out,"writeLocalDateHMSFromUTC('%s',%ld,%u,'%s','%s',%s,%s,0x%x);",
- Id,(long) TimeUTC,(unsigned) DateFormat,Separator,
+ Id,(long) TimeUTC,(unsigned) DateFormat,SeparatorStr[Separator],
WriteToday ? Txt_Today :
"",
WriteDateOnSameDay ? "true" :
diff --git a/swad_date.h b/swad_date.h
index 8465f772..57d56616 100644
--- a/swad_date.h
+++ b/swad_date.h
@@ -113,6 +113,13 @@ typedef enum
} Dat_Format_t; // Do not change these numbers because they are used in database
#define Dat_FORMAT_DEFAULT Dat_FORMAT_YYYY_MM_DD
+typedef enum
+ {
+ Dat_SEPARATOR_NONE, // No separator
+ Dat_SEPARATOR_COMMA, // Comma + space
+ Dat_SEPARATOR_BREAK, // Line break
+ } Dat_Separator_t;
+
/*****************************************************************************/
/***************************** Public prototypes *****************************/
/*****************************************************************************/
@@ -194,7 +201,7 @@ void Dat_WriteHoursMinutesSecondsFromSeconds (time_t Seconds);
void Dat_WriteHoursMinutesSeconds (struct Time *Time);
void Dat_WriteLocalDateHMSFromUTC (const char *Id,time_t TimeUTC,
- Dat_Format_t DateFormat,const char *Separator,
+ Dat_Format_t DateFormat,Dat_Separator_t Separator,
bool WriteToday,bool WriteDateOnSameDay,
bool WriteWeekDay,unsigned WriteHMS);
diff --git a/swad_file_browser.c b/swad_file_browser.c
index fed1697b..228835b4 100644
--- a/swad_file_browser.c
+++ b/swad_file_browser.c
@@ -6403,7 +6403,7 @@ static void Brw_WriteDatesAssignment (void)
Lay_NotEnoughMemoryExit ();
fprintf (Gbl.F.Out,"",Id);
Dat_WriteLocalDateHMSFromUTC (Id,Gbl.FileBrowser.Asg.TimeUTC[Dat_START_TIME],
- Gbl.Prefs.DateFormat,", ",
+ Gbl.Prefs.DateFormat,Dat_SEPARATOR_COMMA,
true,true,false,0x7);
fprintf (Gbl.F.Out,"");
free ((void *) Id);
@@ -6416,7 +6416,7 @@ static void Brw_WriteDatesAssignment (void)
Lay_NotEnoughMemoryExit ();
fprintf (Gbl.F.Out,"",Id);
Dat_WriteLocalDateHMSFromUTC (Id,Gbl.FileBrowser.Asg.TimeUTC[Dat_END_TIME],
- Gbl.Prefs.DateFormat,", ",
+ Gbl.Prefs.DateFormat,Dat_SEPARATOR_COMMA,
true,false,false,0x7);
fprintf (Gbl.F.Out,"");
free ((void *) Id);
@@ -6458,7 +6458,7 @@ static void Brw_WriteFileSizeAndDate (struct FileMetadata *FileMetadata)
Lay_NotEnoughMemoryExit ();
fprintf (Gbl.F.Out,"",Id);
Dat_WriteLocalDateHMSFromUTC (Id,FileMetadata->Time,
- Gbl.Prefs.DateFormat,", ",
+ Gbl.Prefs.DateFormat,Dat_SEPARATOR_COMMA,
true,true,false,0x6);
free ((void *) Id);
}
@@ -9576,7 +9576,7 @@ void Brw_ShowFileMetadata (void)
HTM_TD_Begin ("id=\"filedate\" class=\"DAT LM\"");
Dat_WriteLocalDateHMSFromUTC ("filedate",FileMetadata.Time,
- Gbl.Prefs.DateFormat,", ",
+ Gbl.Prefs.DateFormat,Dat_SEPARATOR_COMMA,
true,true,true,0x7);
HTM_TD_End ();
diff --git a/swad_forum.c b/swad_forum.c
index 3d7495c1..f801dbc1 100644
--- a/swad_forum.c
+++ b/swad_forum.c
@@ -3461,7 +3461,7 @@ static void For_ListForumThrs (long ThrCods[Pag_ITEMS_PER_PAGE],
Lay_NotEnoughMemoryExit ();
HTM_TD_Begin ("id=\"%s\" class=\"%s LT %s\"",Id,Style,BgColor);
Dat_WriteLocalDateHMSFromUTC (Id,TimeUTC,
- Gbl.Prefs.DateFormat,"
",
+ Gbl.Prefs.DateFormat,Dat_SEPARATOR_BREAK,
true,true,false,0x6);
HTM_TD_End ();
free ((void *) Id);
diff --git a/swad_game.c b/swad_game.c
index 6a1dff87..d9a0e387 100644
--- a/swad_game.c
+++ b/swad_game.c
@@ -432,7 +432,7 @@ void Gam_ShowOneGame (long GamCod,
Gbl.RowEvenOdd);
if (Game.TimeUTC[Dat_START_TIME])
Dat_WriteLocalDateHMSFromUTC (Id,Game.TimeUTC[StartEndTime],
- Gbl.Prefs.DateFormat,"
",
+ Gbl.Prefs.DateFormat,Dat_SEPARATOR_BREAK,
true,true,true,0x7);
HTM_TD_End ();
free ((void *) Id);
diff --git a/swad_group.c b/swad_group.c
index 57bdca24..7760eee9 100644
--- a/swad_group.c
+++ b/swad_group.c
@@ -2344,7 +2344,7 @@ static void Grp_WriteGrpHead (struct GroupType *GrpTyp)
Txt_Opening_of_groups,
Id);
Dat_WriteLocalDateHMSFromUTC (Id,GrpTyp->OpenTimeUTC,
- Gbl.Prefs.DateFormat,", ",
+ Gbl.Prefs.DateFormat,Dat_SEPARATOR_COMMA,
true,true,true,0x7);
free ((void *) Id);
}
diff --git a/swad_match.c b/swad_match.c
index a814d04b..d2b55ff2 100644
--- a/swad_match.c
+++ b/swad_match.c
@@ -557,7 +557,7 @@ static void Mch_ListOneOrMoreMatchesTimes (const struct Match *Match,unsigned Un
"DATE_GREEN",
Gbl.RowEvenOdd);
Dat_WriteLocalDateHMSFromUTC (Id,Match->TimeUTC[StartEndTime],
- Gbl.Prefs.DateFormat,"
",
+ Gbl.Prefs.DateFormat,Dat_SEPARATOR_BREAK,
true,true,true,0x7);
HTM_TD_End ();
free ((void *) Id);
diff --git a/swad_match_result.c b/swad_match_result.c
index 84a710c6..cf29929e 100644
--- a/swad_match_result.c
+++ b/swad_match_result.c
@@ -436,7 +436,7 @@ static void McR_ShowMchResults (Usr_MeOrOther_t MeOrOther)
HTM_TD_Begin ("id =\"%s\" class=\"DAT LT COLOR%u\"",
Id,Gbl.RowEvenOdd);
Dat_WriteLocalDateHMSFromUTC (Id,TimeUTC[StartEndTime],
- Gbl.Prefs.DateFormat,"
",
+ Gbl.Prefs.DateFormat,Dat_SEPARATOR_BREAK,
true,true,false,0x7);
HTM_TD_End ();
free ((void *) Id);
@@ -791,7 +791,7 @@ void McR_ShowOneMchResult (void)
Lay_NotEnoughMemoryExit ();
HTM_TD_Begin ("id=\"%s\" class=\"DAT LT\"",Id);
Dat_WriteLocalDateHMSFromUTC (Id,TimeUTC[StartEndTime],
- Gbl.Prefs.DateFormat,", ",
+ Gbl.Prefs.DateFormat,Dat_SEPARATOR_COMMA,
true,true,true,0x7);
HTM_TD_End ();
free ((void *) Id);
diff --git a/swad_message.c b/swad_message.c
index 5ffe3d27..315dc5b1 100644
--- a/swad_message.c
+++ b/swad_message.c
@@ -3623,7 +3623,7 @@ void Msg_WriteMsgDate (time_t TimeUTC,const char *ClassBackground)
/***** Write date and time *****/
Dat_WriteLocalDateHMSFromUTC (Id,TimeUTC,
- Gbl.Prefs.DateFormat,", ",
+ Gbl.Prefs.DateFormat,Dat_SEPARATOR_COMMA,
true,true,false,0x6);
/***** End cell *****/
diff --git a/swad_notice.c b/swad_notice.c
index 475b434c..291ad3c1 100644
--- a/swad_notice.c
+++ b/swad_notice.c
@@ -700,7 +700,7 @@ static void Not_DrawANotice (Not_Listing_t TypeNoticesListing,
Frm_EndForm ();
}
Dat_WriteLocalDateHMSFromUTC (Id,TimeUTC,
- Gbl.Prefs.DateFormat,"
",
+ Gbl.Prefs.DateFormat,Dat_SEPARATOR_BREAK,
true,true,false,0x6);
free ((void *) Id);
HTM_DIV_End ();
diff --git a/swad_profile.c b/swad_profile.c
index e49ef3b0..e7857b49 100644
--- a/swad_profile.c
+++ b/swad_profile.c
@@ -501,7 +501,7 @@ static void Prf_ShowTimeSinceFirstClick (const struct UsrData *UsrDat,
fprintf (Gbl.F.Out,")");
}
Dat_WriteLocalDateHMSFromUTC (IdFirstClickTime,UsrFigures->FirstClickTimeUTC,
- Gbl.Prefs.DateFormat,", ",
+ Gbl.Prefs.DateFormat,Dat_SEPARATOR_COMMA,
true,true,false,0x6);
}
else // First click time is unknown or user never logged
diff --git a/swad_project.c b/swad_project.c
index 55705c9e..fde197f1 100644
--- a/swad_project.c
+++ b/swad_project.c
@@ -1119,7 +1119,7 @@ static void Prj_ShowOneProject (unsigned NumIndex,struct Project *Prj,
break;
}
Dat_WriteLocalDateHMSFromUTC (Id,Prj->CreatTime,
- Gbl.Prefs.DateFormat,"
",
+ Gbl.Prefs.DateFormat,Dat_SEPARATOR_BREAK,
true,true,true,0x7);
HTM_TD_End ();
free ((void *) Id);
@@ -1140,7 +1140,7 @@ static void Prj_ShowOneProject (unsigned NumIndex,struct Project *Prj,
break;
}
Dat_WriteLocalDateHMSFromUTC (Id,Prj->ModifTime,
- Gbl.Prefs.DateFormat,"
",
+ Gbl.Prefs.DateFormat,Dat_SEPARATOR_BREAK,
true,true,true,0x7);
HTM_TD_End ();
free ((void *) Id);
@@ -1498,7 +1498,7 @@ static void Prj_ShowTableAllProjectsOneRow (struct Project *Prj)
HTM_TD_Begin ("id=\"%s\" class=\"LT %s COLOR%u\"",
Id,ClassDate,Gbl.RowEvenOdd);
Dat_WriteLocalDateHMSFromUTC (Id,Prj->CreatTime,
- Gbl.Prefs.DateFormat,"
",
+ Gbl.Prefs.DateFormat,Dat_SEPARATOR_BREAK,
true,true,true,0x7);
HTM_TD_End ();
free ((void *) Id);
@@ -1510,7 +1510,7 @@ static void Prj_ShowTableAllProjectsOneRow (struct Project *Prj)
HTM_TD_Begin ("id=\"%s\" class=\"LT %s COLOR%u\"",
Id,ClassDate,Gbl.RowEvenOdd);
Dat_WriteLocalDateHMSFromUTC (Id,Prj->ModifTime,
- Gbl.Prefs.DateFormat,"
",
+ Gbl.Prefs.DateFormat,Dat_SEPARATOR_BREAK,
true,true,true,0x7);
HTM_TD_End ();
free ((void *) Id);
diff --git a/swad_statistic.c b/swad_statistic.c
index 8edd7c94..6bceaac3 100644
--- a/swad_statistic.c
+++ b/swad_statistic.c
@@ -1719,7 +1719,7 @@ static void Sta_ShowDetailedAccessesList (unsigned long NumRows,MYSQL_RES *mysql
Lay_NotEnoughMemoryExit ();
HTM_TD_Begin ("id=\"%s\" class=\"LOG RT COLOR%u\"",Id,Gbl.RowEvenOdd);
Dat_WriteLocalDateHMSFromUTC (Id,Dat_GetUNIXTimeFromStr (row[3]),
- Gbl.Prefs.DateFormat,", ",
+ Gbl.Prefs.DateFormat,Dat_SEPARATOR_COMMA,
true,true,false,0x7);
HTM_TD_End ();
free ((void *) Id);
diff --git a/swad_survey.c b/swad_survey.c
index dea8b855..543344ad 100644
--- a/swad_survey.c
+++ b/swad_survey.c
@@ -488,7 +488,7 @@ static void Svy_ShowOneSurvey (long SvyCod,struct SurveyQuestion *SvyQst,
"DATE_RED_LIGHT"),
Gbl.RowEvenOdd);
Dat_WriteLocalDateHMSFromUTC (Id,Svy.TimeUTC[Svy_START_TIME],
- Gbl.Prefs.DateFormat,"
",
+ Gbl.Prefs.DateFormat,Dat_SEPARATOR_BREAK,
true,true,true,0x7);
HTM_TD_End ();
free ((void *) Id);
@@ -512,7 +512,7 @@ static void Svy_ShowOneSurvey (long SvyCod,struct SurveyQuestion *SvyQst,
"DATE_RED_LIGHT"),
Gbl.RowEvenOdd);
Dat_WriteLocalDateHMSFromUTC (Id,Svy.TimeUTC[Svy_END_TIME],
- Gbl.Prefs.DateFormat,"
",
+ Gbl.Prefs.DateFormat,Dat_SEPARATOR_BREAK,
true,false,true,0x7);
HTM_TD_End ();
free ((void *) Id);
diff --git a/swad_test.c b/swad_test.c
index 6f272a04..39a082e8 100644
--- a/swad_test.c
+++ b/swad_test.c
@@ -2935,7 +2935,7 @@ static void Tst_ListOneOrMoreQuestionsForEdition (unsigned long NumRows,
HTM_TD_Begin ("id=\"%s\" class=\"DAT_SMALL CT COLOR%u\"",
Id,Gbl.RowEvenOdd);
Dat_WriteLocalDateHMSFromUTC (Id,TimeUTC,
- Gbl.Prefs.DateFormat,"
",
+ Gbl.Prefs.DateFormat,Dat_SEPARATOR_BREAK,
true,true,false,0x7);
HTM_TD_End ();
free ((void *) Id);
@@ -3146,7 +3146,7 @@ static void Tst_ListOneOrMoreQuestionsForSelection (unsigned long NumRows,
HTM_TD_Begin ("id=\"%s\" class=\"DAT_SMALL CT COLOR%u\">",
Id,Gbl.RowEvenOdd);
Dat_WriteLocalDateHMSFromUTC (Id,TimeUTC,
- Gbl.Prefs.DateFormat,"
",
+ Gbl.Prefs.DateFormat,Dat_SEPARATOR_BREAK,
true,true,false,0x7);
HTM_TD_End ();
free ((void *) Id);
@@ -7782,7 +7782,7 @@ static void Tst_ShowTstResults (struct UsrData *UsrDat)
HTM_TD_Begin ("id=\"%s\" class=\"%s RT COLOR%u\"",
Id,ClassDat,Gbl.RowEvenOdd);
Dat_WriteLocalDateHMSFromUTC (Id,TimeUTC,
- Gbl.Prefs.DateFormat,", ",
+ Gbl.Prefs.DateFormat,Dat_SEPARATOR_COMMA,
true,true,false,0x7);
HTM_TD_End ();
free ((void *) Id);
@@ -8119,7 +8119,7 @@ void Tst_ShowOneTstResult (void)
HTM_TD_Begin ("id=\"test\" class=\"DAT LT\"");
Dat_WriteLocalDateHMSFromUTC ("test",TstTimeUTC,
- Gbl.Prefs.DateFormat,", ",
+ Gbl.Prefs.DateFormat,Dat_SEPARATOR_COMMA,
true,true,true,0x7);
HTM_TD_End ();
diff --git a/swad_timeline.c b/swad_timeline.c
index b88dd3d7..a7982365 100644
--- a/swad_timeline.c
+++ b/swad_timeline.c
@@ -1789,7 +1789,7 @@ static void TL_WriteDateTime (time_t TimeUTC)
// This must be out of the div where the output is written
// because it will be evaluated in a loop in JavaScript
Dat_WriteLocalDateHMSFromUTC (IdDateTime,TimeUTC,
- Gbl.Prefs.DateFormat,", ",
+ Gbl.Prefs.DateFormat,Dat_SEPARATOR_COMMA,
true,true,false,0x6);
}