diff --git a/swad_HTML.c b/swad_HTML.c
index 87b6951a..5f84df2f 100644
--- a/swad_HTML.c
+++ b/swad_HTML.c
@@ -63,6 +63,7 @@ static unsigned HTM_DIV_NestingLevel = 0;
static unsigned HTM_UL_NestingLevel = 0;
static unsigned HTM_LI_NestingLevel = 0;
static unsigned HTM_A_NestingLevel = 0;
+static unsigned HTM_SCRIPT_NestingLevel = 0;
static unsigned HTM_TEXTAREA_NestingLevel = 0;
/*****************************************************************************/
@@ -707,6 +708,34 @@ void HTM_A_End (void)
HTM_A_NestingLevel--;
}
+/*****************************************************************************/
+/*********************************** Scripts *********************************/
+/*****************************************************************************/
+
+void HTM_SCRIPT_Begin (const char *URL,const char *CharSet)
+ {
+ fprintf (Gbl.F.Out,"");
+
+ HTM_SCRIPT_NestingLevel--;
+ }
+
/*****************************************************************************/
/********************************* Text areas ********************************/
/*****************************************************************************/
diff --git a/swad_HTML.h b/swad_HTML.h
index 5c9f3d41..211f576d 100644
--- a/swad_HTML.h
+++ b/swad_HTML.h
@@ -83,6 +83,9 @@ void HTM_LI_End (void);
void HTM_A_Begin (const char *fmt,...);
void HTM_A_End (void);
+void HTM_SCRIPT_Begin (const char *URL,const char *CharSet);
+void HTM_SCRIPT_End (void);
+
void HTM_TEXTAREA_Begin (const char *fmt,...);
void HTM_TEXTAREA_End (void);
diff --git a/swad_agenda.c b/swad_agenda.c
index 591b93a6..56424e43 100644
--- a/swad_agenda.c
+++ b/swad_agenda.c
@@ -752,13 +752,11 @@ static void Agd_ShowOneEvent (Agd_AgendaType_t AgendaType,long AgdCod)
AgdEvent.Hidden ? Dat_TimeStatusClassHidden[AgdEvent.TimeStatus] :
Dat_TimeStatusClassVisible[AgdEvent.TimeStatus],
Gbl.RowEvenOdd);
- fprintf (Gbl.F.Out,"",
- (unsigned) StartEndTime,UniqueId,
- AgdEvent.TimeUTC[StartEndTime],
- (unsigned) Gbl.Prefs.DateFormat,Txt_Today);
+ Dat_WriteLocalDateHMSFromUTC ("'agd_date_%u_%u',%ld,"
+ "%u,'
','%s',true,true,0x6",
+ (unsigned) StartEndTime,UniqueId,
+ AgdEvent.TimeUTC[StartEndTime],
+ (unsigned) Gbl.Prefs.DateFormat,Txt_Today);
HTM_TD_End ();
}
diff --git a/swad_assignment.c b/swad_assignment.c
index b6442adc..f119857c 100644
--- a/swad_assignment.c
+++ b/swad_assignment.c
@@ -386,12 +386,10 @@ static void Asg_ShowOneAssignment (long AsgCod,bool PrintView)
(Asg.Open ? "DATE_GREEN" :
"DATE_RED"),
Gbl.RowEvenOdd);
- fprintf (Gbl.F.Out,"",
- (unsigned) StartEndTime,UniqueId,Asg.TimeUTC[StartEndTime],
- (unsigned) Gbl.Prefs.DateFormat,Txt_Today);
+ Dat_WriteLocalDateHMSFromUTC ("'asg_date_%u_%u',%ld,"
+ "%u,'
','%s',true,true,0x7",
+ (unsigned) StartEndTime,UniqueId,Asg.TimeUTC[StartEndTime],
+ (unsigned) Gbl.Prefs.DateFormat,Txt_Today);
HTM_TD_End ();
}
diff --git a/swad_attendance.c b/swad_attendance.c
index 594ff8c5..a5cf3080 100644
--- a/swad_attendance.c
+++ b/swad_attendance.c
@@ -423,12 +423,10 @@ static void Att_ShowOneAttEvent (struct AttendanceEvent *Att,bool ShowOnlyThisAt
(Att->Open ? "DATE_GREEN" :
"DATE_RED"),
Gbl.RowEvenOdd);
- fprintf (Gbl.F.Out,"",
- (unsigned) StartEndTime,UniqueId,Att->TimeUTC[StartEndTime],
- (unsigned) Gbl.Prefs.DateFormat,Txt_Today);
+ Dat_WriteLocalDateHMSFromUTC ("'att_date_%u_%u',%ld,"
+ "%u,'
','%s',true,true,0x7",
+ (unsigned) StartEndTime,UniqueId,Att->TimeUTC[StartEndTime],
+ (unsigned) Gbl.Prefs.DateFormat,Txt_Today);
HTM_TD_End ();
}
@@ -3136,14 +3134,12 @@ static void Att_ListEventsToSelect (Att_TypeOfView_t TypeOfView)
HTM_TD_Begin ("class=\"DAT LT COLOR%u\"",Gbl.RowEvenOdd);
fprintf (Gbl.F.Out,""
- "",
- NumAttEvent,UniqueId,
- UniqueId,Gbl.AttEvents.Lst[NumAttEvent].TimeUTC[Att_START_TIME],
- (unsigned) Gbl.Prefs.DateFormat,Txt_Today);
+ "",
+ NumAttEvent,UniqueId);
+ Dat_WriteLocalDateHMSFromUTC ("'att_date_start_%u',%ld,"
+ "%u,', ','%s',true,true,0x7",
+ UniqueId,Gbl.AttEvents.Lst[NumAttEvent].TimeUTC[Att_START_TIME],
+ (unsigned) Gbl.Prefs.DateFormat,Txt_Today);
HTM_TD_End ();
HTM_TD_Begin ("class=\"DAT LT COLOR%u\"",Gbl.RowEvenOdd);
@@ -3580,16 +3576,14 @@ static void Att_ListAttEventsForAStd (unsigned NumUsr,struct UsrData *UsrDat)
HTM_TD_Begin ("class=\"DAT LT COLOR%u\"",Gbl.RowEvenOdd);
fprintf (Gbl.F.Out,""
- "
%s"
- "",
+ "
%s",
NumUsr,UniqueId,
- Gbl.AttEvents.Lst[NumAttEvent].Title,
- NumUsr,UniqueId,
- Gbl.AttEvents.Lst[NumAttEvent].TimeUTC[Att_START_TIME],
- (unsigned) Gbl.Prefs.DateFormat,Txt_Today);
+ Gbl.AttEvents.Lst[NumAttEvent].Title);
+ Dat_WriteLocalDateHMSFromUTC ("'att_date_start_%u_%u',%ld,"
+ "%u,', ','%s',true,true,0x7",
+ NumUsr,UniqueId,
+ Gbl.AttEvents.Lst[NumAttEvent].TimeUTC[Att_START_TIME],
+ (unsigned) Gbl.Prefs.DateFormat,Txt_Today);
HTM_TD_End ();
HTM_TR_End ();
diff --git a/swad_calendar.c b/swad_calendar.c
index 8c04c108..0dc4070b 100644
--- a/swad_calendar.c
+++ b/swad_calendar.c
@@ -214,8 +214,8 @@ void Cal_DrawCurrentMonth (void)
HTM_DIV_End ();
/* Write script to draw the month */
- fprintf (Gbl.F.Out,"",ParamsStr);
+ fprintf (Gbl.F.Out,"'%s');",ParamsStr);
+ HTM_SCRIPT_End ();
}
/*****************************************************************************/
@@ -282,8 +282,8 @@ static void Cal_DrawCalendar (Act_Action_t ActionSeeCalendar,
HTM_DIV_End ();
/* Write script to draw the month */
- fprintf (Gbl.F.Out,"",
- ParamsStr);
+ fprintf (Gbl.F.Out,"'%s');",ParamsStr);
+ HTM_SCRIPT_End ();
/***** End box *****/
Box_BoxEnd ();
diff --git a/swad_changelog.h b/swad_changelog.h
index cd0f5929..612116eb 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.48 (2019-10-31)"
+#define Log_PLATFORM_VERSION "SWAD 19.50 (2019-11-01)"
#define CSS_FILE "swad19.47.css"
#define JS_FILE "swad19.39.js"
/*
@@ -495,7 +495,9 @@ 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.48: Oct 31, 2019 Code refactoring in HTML textarea. (246038 lines)
+ Version 19.50: Nov 01, 2019 Code refactoring related with writing of local date-time. (246016 lines)
+ Version 19.49: Nov 01, 2019 Code refactoring in HTML scripts. (246052 lines)
+ Version 19.48: Oct 31, 2019 Code refactoring in HTML textareas. (246038 lines)
Version 19.47.2: Oct 31, 2019 Removed obsolete function to activate results in match questions. (246009 lines)
Version 19.47.1: Oct 31, 2019 Removed obsolete messages. (246033 lines)
Version 19.47: Oct 31, 2019 Return to old way to activate results in match questions. (246230 lines)
diff --git a/swad_connected.c b/swad_connected.c
index 580407c7..730a1b73 100644
--- a/swad_connected.c
+++ b/swad_connected.c
@@ -103,12 +103,10 @@ void Con_ShowConnectedUsrs (void)
Txt_Connected_users);
Box_BoxBegin (NULL,Gbl.Title,Con_PutIconToUpdateConnected,
Hlp_USERS_Connected,Box_NOT_CLOSABLE);
- fprintf (Gbl.F.Out,"",
- (long) Gbl.StartExecutionTimeUTC,
- (unsigned) Gbl.Prefs.DateFormat);
+ Dat_WriteLocalDateHMSFromUTC ("'connected_current_time',%ld,"
+ "%u,', ',null,false,true,0x7",
+ (long) Gbl.StartExecutionTimeUTC,
+ (unsigned) Gbl.Prefs.DateFormat);
/***** Number of connected users in the whole platform *****/
Con_ShowGlobalConnectedUsrs ();
diff --git a/swad_country.c b/swad_country.c
index e40efee4..68a0049e 100644
--- a/swad_country.c
+++ b/swad_country.c
@@ -897,9 +897,11 @@ void Cty_WriteScriptGoogleGeochart (void)
unsigned NumCtysWithUsrs = 0;
/***** Write start of the script *****/
- fprintf (Gbl.F.Out,"\n"
- "\n",
+ " };\n",
NumCtysWithUsrs ? MaxUsrsInCountry :
0);
+ HTM_SCRIPT_End ();
}
/*****************************************************************************/
diff --git a/swad_date.c b/swad_date.c
index 06646563..23721939 100644
--- a/swad_date.c
+++ b/swad_date.c
@@ -25,6 +25,8 @@
/********************************* Headers ***********************************/
/*****************************************************************************/
+#define _GNU_SOURCE // For vasprintf
+#include // For vasprintf
#include // For string functions
#include // For time functions (mktime...)
@@ -164,12 +166,10 @@ void Dat_PutSpanDateFormat (Dat_Format_t Format)
void Dat_PutScriptDateFormat (Dat_Format_t Format)
{
- fprintf (Gbl.F.Out,"",
- (unsigned) Format,(long) Gbl.StartExecutionTimeUTC,
- (unsigned) Format);
+ Dat_WriteLocalDateHMSFromUTC ("'date_format_%u',%ld,"
+ "%u,'',null,true,false,0x0",
+ (unsigned) Format,(long) Gbl.StartExecutionTimeUTC,
+ (unsigned) Format);
}
/*****************************************************************************/
@@ -345,11 +345,11 @@ void Dat_ShowClientLocalTime (void)
HTM_DIV_End ();
/* Write script to draw the month */
- fprintf (Gbl.F.Out,"",
+ HTM_SCRIPT_Begin (NULL,NULL);
+ fprintf (Gbl.F.Out,"secondsSince1970UTC = %ld;\n"
+ "writeLocalClock();\n",
(long) Gbl.StartExecutionTimeUTC);
+ HTM_SCRIPT_End ();
}
/*****************************************************************************/
@@ -680,8 +680,8 @@ void Dat_WriteFormClientLocalDateTimeFromTimeUTC (const char *Id,
Id,ParamName,(long) TimeUTC);
/***** Script to set selectors to local date and time from UTC time *****/
- fprintf (Gbl.F.Out,"");
+ HTM_SCRIPT_End ();
}
/*****************************************************************************/
@@ -723,11 +723,11 @@ void Dat_PutHiddenParBrowserTZDiff (void)
" value=\"\" />"
""
- "");
+ " value=\"0\" />");
+ HTM_SCRIPT_Begin (NULL,NULL);
+ fprintf (Gbl.F.Out,"setTZname('BrowserTZName');"
+ "setTZ('BrowserTZDiff');");
+ HTM_SCRIPT_End ();
}
/*****************************************************************************/
@@ -1605,3 +1605,34 @@ void Dat_WriteHoursMinutesSeconds (struct Time *Time)
fprintf (Gbl.F.Out,"%u"",
Time->Second);
}
+
+/*****************************************************************************/
+/**** Write call to JavaScript function to write local date from UTC time ****/
+/*****************************************************************************/
+
+void Dat_WriteLocalDateHMSFromUTC (const char *fmt,...)
+ {
+ va_list ap;
+ int NumBytesPrinted;
+ char *Params;
+
+ if (fmt)
+ if (fmt[0])
+ {
+ va_start (ap,fmt);
+ NumBytesPrinted = vasprintf (&Params,fmt,ap);
+ va_end (ap);
+
+ if (NumBytesPrinted < 0) // If memory allocation wasn't possible,
+ // or some other error occurs,
+ // vasprintf will return -1
+ Lay_NotEnoughMemoryExit ();
+
+ /***** Print HTML *****/
+ // HTM_SCRIPT_Begin (NULL,NULL);
+ // fprintf (Gbl.F.Out,"writeLocalDateHMSFromUTC(%s);",Params);
+ // HTM_SCRIPT_End ();
+
+ free ((void *) Params);
+ }
+ }
diff --git a/swad_date.h b/swad_date.h
index 6ee957c7..14e7487b 100644
--- a/swad_date.h
+++ b/swad_date.h
@@ -193,4 +193,6 @@ void Dat_WriteScriptMonths (void);
void Dat_WriteHoursMinutesSecondsFromSeconds (time_t Seconds);
void Dat_WriteHoursMinutesSeconds (struct Time *Time);
+void Dat_WriteLocalDateHMSFromUTC (const char *fmt,...);
+
#endif
diff --git a/swad_file_browser.c b/swad_file_browser.c
index 891c9515..00bca723 100644
--- a/swad_file_browser.c
+++ b/swad_file_browser.c
@@ -6399,29 +6399,22 @@ static void Brw_WriteDatesAssignment (void)
UniqueId++;
/***** Write start and end dates *****/
- fprintf (Gbl.F.Out,""
- ""
- ""
+ fprintf (Gbl.F.Out,"",UniqueId);
+ Dat_WriteLocalDateHMSFromUTC ("'asg_start_date_%u',%ld,"
+ "%u,', ','%s',true,false,0x7",
+ UniqueId,(long) Gbl.FileBrowser.Asg.TimeUTC[Dat_START_TIME],
+ (unsigned) Gbl.Prefs.DateFormat,Txt_Today);
+ fprintf (Gbl.F.Out,""
"→"
- ""
- ""
- "",
- UniqueId,
- UniqueId,(long) Gbl.FileBrowser.Asg.TimeUTC[Dat_START_TIME],
- (unsigned) Gbl.Prefs.DateFormat,Txt_Today,
- UniqueId,
- UniqueId,(long) Gbl.FileBrowser.Asg.TimeUTC[Dat_END_TIME],
- (unsigned) Gbl.Prefs.DateFormat,Txt_Today);
+ "",UniqueId);
+ Dat_WriteLocalDateHMSFromUTC ("'asg_end_date_%u',%ld,"
+ "%u,', ','%s',false,false,0x7",
+ UniqueId,(long) Gbl.FileBrowser.Asg.TimeUTC[Dat_END_TIME],
+ (unsigned) Gbl.Prefs.DateFormat,Txt_Today);
+ fprintf (Gbl.F.Out,"");
}
else
- fprintf (Gbl.F.Out," (%s)",
- Txt_unknown_assignment);
+ fprintf (Gbl.F.Out," (%s)",Txt_unknown_assignment);
HTM_TD_End ();
}
@@ -6453,14 +6446,11 @@ static void Brw_WriteFileSizeAndDate (struct FileMetadata *FileMetadata)
Gbl.FileBrowser.FilFolLnk.Type == Brw_IS_LINK)
{
UniqueId++;
- fprintf (Gbl.F.Out,""
- "",
- UniqueId,
- UniqueId,(long) FileMetadata->Time,
- (unsigned) Gbl.Prefs.DateFormat,Txt_Today);
+ fprintf (Gbl.F.Out,"",UniqueId);
+ Dat_WriteLocalDateHMSFromUTC ("'filedate%u',%ld,"
+ "%u,', ','%s',true,false,0x6",
+ UniqueId,(long) FileMetadata->Time,
+ (unsigned) Gbl.Prefs.DateFormat,Txt_Today);
}
HTM_TD_End ();
}
@@ -9576,12 +9566,10 @@ void Brw_ShowFileMetadata (void)
HTM_TD_End ();
HTM_TD_Begin ("id=\"filedate\" class=\"DAT LM\"");
- fprintf (Gbl.F.Out,"",
- (long) FileMetadata.Time,
- (unsigned) Gbl.Prefs.DateFormat,Txt_Today);
+ Dat_WriteLocalDateHMSFromUTC ("'filedate',%ld,"
+ "%u,', ','%s',true,true,0x7",
+ (long) FileMetadata.Time,
+ (unsigned) Gbl.Prefs.DateFormat,Txt_Today);
HTM_TD_End ();
HTM_TR_End ();
diff --git a/swad_forum.c b/swad_forum.c
index c6af5d93..6b3d4e7c 100644
--- a/swad_forum.c
+++ b/swad_forum.c
@@ -3459,12 +3459,10 @@ static void For_ListForumThrs (long ThrCods[Pag_ITEMS_PER_PAGE],
UniqueId++;
HTM_TD_Begin ("id=\"thr_date_%u\" class=\"%s LT %s\"",
UniqueId,Style,BgColor);
- fprintf (Gbl.F.Out,"",
- UniqueId,(long) TimeUTC,
- (unsigned) Gbl.Prefs.DateFormat,Txt_Today);
+ Dat_WriteLocalDateHMSFromUTC ("'thr_date_%u',%ld,"
+ "%u,'
','%s',true,false,0x6",
+ UniqueId,(long) TimeUTC,
+ (unsigned) Gbl.Prefs.DateFormat,Txt_Today);
HTM_TD_End ();
}
else
diff --git a/swad_game.c b/swad_game.c
index 36b1adfc..e0fd1044 100644
--- a/swad_game.c
+++ b/swad_game.c
@@ -431,13 +431,11 @@ void Gam_ShowOneGame (long GamCod,
"DATE_GREEN",
Gbl.RowEvenOdd);
if (Game.TimeUTC[Dat_START_TIME])
- fprintf (Gbl.F.Out,"",
- (unsigned) StartEndTime,UniqueId,
- Game.TimeUTC[StartEndTime],
- (unsigned) Gbl.Prefs.DateFormat,Txt_Today);
+ Dat_WriteLocalDateHMSFromUTC ("'gam_date_%u_%u',%ld,"
+ "%u,'
','%s',true,true,0x7",
+ (unsigned) StartEndTime,UniqueId,
+ Game.TimeUTC[StartEndTime],
+ (unsigned) Gbl.Prefs.DateFormat,Txt_Today);
HTM_TD_End ();
}
diff --git a/swad_group.c b/swad_group.c
index 5b93a4d3..d02228dd 100644
--- a/swad_group.c
+++ b/swad_group.c
@@ -2338,15 +2338,13 @@ static void Grp_WriteGrpHead (struct GroupType *GrpTyp)
{
UniqueId++;
fprintf (Gbl.F.Out,"
%s: "
- ""
- "",
+ "",
Txt_Opening_of_groups,
- UniqueId,
- UniqueId,(long) GrpTyp->OpenTimeUTC,
- (unsigned) Gbl.Prefs.DateFormat,Txt_Today);
+ UniqueId);
+ Dat_WriteLocalDateHMSFromUTC ("'open_time_%u',%ld,"
+ "%u,', ','%s',true,true,0x7",
+ UniqueId,(long) GrpTyp->OpenTimeUTC,
+ (unsigned) Gbl.Prefs.DateFormat,Txt_Today);
}
HTM_TD_End ();
HTM_TR_End ();
diff --git a/swad_layout.c b/swad_layout.c
index 87b16f40..16960d34 100644
--- a/swad_layout.c
+++ b/swad_layout.c
@@ -484,9 +484,8 @@ static void Lay_WriteScripts (void)
unsigned NumExamAnnouncement; // Number of exam announcement
/***** General scripts for swad *****/
- fprintf (Gbl.F.Out,"\n",
- Cfg_URL_SWAD_PUBLIC,JS_FILE);
+ HTM_SCRIPT_Begin (Cfg_URL_SWAD_PUBLIC "/" JS_FILE,NULL);
+ HTM_SCRIPT_End ();
/***** Script for MathJax *****/
Lay_WriteScriptMathJax ();
@@ -515,8 +514,9 @@ static void Lay_WriteScripts (void)
Exa_CreateListDatesOfExamAnnouncements ();
/***** Write script to initialize variables used to draw months *****/
- fprintf (Gbl.F.Out,"\n");
+ HTM_SCRIPT_End ();
/***** Free list of dates of exam announcements *****/
Exa_FreeListExamAnnouncements ();
@@ -604,11 +604,8 @@ static void Lay_WriteScripts (void)
case ActFrmCreMrkGrp: // Brw_ADMI_MRK_GRP
case ActFrmCreBrf: // Brw_ADMI_BRF_USR
// Use charset="windows-1252" to force error messages in windows-1252 (default is UTF-8)
- fprintf (Gbl.F.Out,"\n",
- Cfg_URL_SWAD_PUBLIC);
+ HTM_SCRIPT_Begin (Cfg_URL_SWAD_PUBLIC "/dropzone/dropzone.js","windows-1252");
+ HTM_SCRIPT_End ();
Lay_WriteScriptCustomDropzone ();
break;
case ActReqAccGbl:
@@ -616,10 +613,8 @@ static void Lay_WriteScripts (void)
case ActReqAccCrs:
case ActSeeAccCrs:
case ActSeeAllStaCrs:
- fprintf (Gbl.F.Out,"\n",
- Cfg_URL_SWAD_PUBLIC);
+ HTM_SCRIPT_Begin (Cfg_URL_SWAD_PUBLIC "/jstz/jstz.js",NULL);
+ HTM_SCRIPT_End ();
break;
default:
break;
@@ -642,27 +637,23 @@ static void Lay_WriteScriptMathJax (void)
{
// MathJax configuration
/*
- fprintf (Gbl.F.Out,"");
+ " };");
+ HTM_SCRIPT_End ();
*/
#ifdef Cfg_MATHJAX_LOCAL
// Use the local copy of MathJax
- fprintf (Gbl.F.Out,"\n",
- Cfg_URL_SWAD_PUBLIC);
+ HTM_SCRIPT_Begin (Cfg_URL_SWAD_PUBLIC "/MathJax/MathJax.js?config=TeX-AMS-MML_HTMLorMML",NULL);
#else
// Use the MathJax Content Delivery Network (CDN)
- fprintf (Gbl.F.Out,"\n");
+ HTM_SCRIPT_Begin ("//cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML",NULL);
#endif
+ HTM_SCRIPT_End ();
}
/*****************************************************************************/
@@ -674,8 +665,8 @@ static void Lay_WriteScriptInit (void)
extern const char *Lan_STR_LANG_ID[1 + Lan_NUM_LANGUAGES];
bool RefreshConnected;
bool RefreshNewTimeline = false;
- bool RefreshMatchStd = false;
- bool RefreshMatchTch = false;
+ bool RefreshMatchStd = false;
+ bool RefreshMatchTch = false;
bool RefreshLastClicks = false;
RefreshConnected = Act_GetBrowserTab (Gbl.Action.Act) == Act_BRW_1ST_TAB &&
@@ -712,7 +703,7 @@ static void Lay_WriteScriptInit (void)
break;
}
- fprintf (Gbl.F.Out,"\n");
+ fprintf (Gbl.F.Out,"}\n");
+
+ HTM_SCRIPT_End ();
}
/*****************************************************************************/
@@ -756,7 +749,7 @@ static void Lay_WriteScriptInit (void)
static void Lay_WriteScriptParamsAJAX (void)
{
/***** Start script *****/
- fprintf (Gbl.F.Out,"\n");
+ HTM_SCRIPT_End ();
}
/*****************************************************************************/
@@ -871,8 +864,8 @@ static void Lay_WriteScriptCustomDropzone (void)
{
// "myAwesomeDropzone" is the camelized version of the HTML element's ID
// Add a line "forceFallback: true,\n" to test classic upload
- fprintf (Gbl.F.Out,"\n",
+ "};\n",
(unsigned long) (Fil_MAX_FILE_SIZE / (1024ULL * 1024ULL) - 1));
+ HTM_SCRIPT_End ();
}
/*****************************************************************************/
@@ -935,6 +928,7 @@ static void Lay_WritePageTopHeading (void)
Cfg_PLATFORM_LOGO_SMALL_WIDTH,Cfg_PLATFORM_LOGO_SMALL_HEIGHT);
Frm_LinkFormEnd ();
HTM_DIV_End (); // head_row_1_logo_small
+
HTM_DIV_Begin ("id=\"head_row_1_logo_big\"");
Frm_LinkFormSubmit (Txt_System,NULL,NULL);
HTM_IMG (Cfg_URL_ICON_PUBLIC,Cfg_PLATFORM_LOGO_BIG_FILENAME,Cfg_PLATFORM_SHORT_NAME,
@@ -942,6 +936,7 @@ static void Lay_WritePageTopHeading (void)
Cfg_PLATFORM_LOGO_BIG_WIDTH,Cfg_PLATFORM_LOGO_BIG_HEIGHT);
Frm_LinkFormEnd ();
HTM_DIV_End (); // head_row_1_logo_big
+
HTM_DIV_Begin ("id=\"head_row_1_tagline\"");
Frm_LinkFormSubmit (Txt_TAGLINE,The_ClassTagline[Gbl.Prefs.Theme],NULL);
fprintf (Gbl.F.Out,"%s",Txt_TAGLINE_BR);
@@ -969,6 +964,7 @@ static void Lay_WritePageTopHeading (void)
else
Usr_PutFormLogIn ();
HTM_DIV_End (); // login_box
+
HTM_DIV_End (); // head_row_1_right
/* End 1st. row */
diff --git a/swad_match.c b/swad_match.c
index a2c9ef64..03bebf5d 100644
--- a/swad_match.c
+++ b/swad_match.c
@@ -554,13 +554,11 @@ static void Mch_ListOneOrMoreMatchesTimes (const struct Match *Match,unsigned Un
Match->Status.QstInd >= Mch_AFTER_LAST_QUESTION ? "DATE_RED" :
"DATE_GREEN",
Gbl.RowEvenOdd);
- fprintf (Gbl.F.Out,"",
- (unsigned) StartEndTime,UniqueId,
- Match->TimeUTC[StartEndTime],
- (unsigned) Gbl.Prefs.DateFormat,Txt_Today);
+ Dat_WriteLocalDateHMSFromUTC ("'mch_time_%u_%u',"
+ "%ld,%u,'
','%s',true,true,0x7",
+ (unsigned) StartEndTime,UniqueId,
+ Match->TimeUTC[StartEndTime],
+ (unsigned) Gbl.Prefs.DateFormat,Txt_Today);
HTM_TD_End ();
}
}
diff --git a/swad_match_result.c b/swad_match_result.c
index 02f1a0cd..d9d37f63 100644
--- a/swad_match_result.c
+++ b/swad_match_result.c
@@ -434,13 +434,11 @@ static void McR_ShowMchResults (Usr_MeOrOther_t MeOrOther)
HTM_TD_Begin ("id =\"mch_time_%u_%u\" class=\"DAT LT COLOR%u\"",
(unsigned) StartEndTime,UniqueId,
Gbl.RowEvenOdd);
- fprintf (Gbl.F.Out,"",
- (unsigned) StartEndTime,UniqueId,
- (long) TimeUTC[StartEndTime],
- (unsigned) Gbl.Prefs.DateFormat,Txt_Today);
+ Dat_WriteLocalDateHMSFromUTC ("'mch_time_%u_%u',"
+ "%ld,%u,'
','%s',true,false,0x7",
+ (unsigned) StartEndTime,UniqueId,
+ (long) TimeUTC[StartEndTime],
+ (unsigned) Gbl.Prefs.DateFormat,Txt_Today);
HTM_TD_End ();
}
@@ -790,13 +788,11 @@ void McR_ShowOneMchResult (void)
HTM_TD_End ();
HTM_TD_Begin ("id=\"match_%u\" class=\"DAT LT\"",(unsigned) StartEndTime);
- fprintf (Gbl.F.Out,"",
- (unsigned) StartEndTime,
- TimeUTC[StartEndTime],
- (unsigned) Gbl.Prefs.DateFormat,Txt_Today);
+ Dat_WriteLocalDateHMSFromUTC ("'match_%u',%ld,"
+ "%u,', ','%s',true,true,0x7",
+ (unsigned) StartEndTime,
+ TimeUTC[StartEndTime],
+ (unsigned) Gbl.Prefs.DateFormat,Txt_Today);
HTM_TD_End ();
HTM_TR_End ();
diff --git a/swad_message.c b/swad_message.c
index bdbf07e5..aff7fda2 100644
--- a/swad_message.c
+++ b/swad_message.c
@@ -3620,12 +3620,10 @@ void Msg_WriteMsgDate (time_t TimeUTC,const char *ClassBackground)
UniqueId,ClassBackground);
/***** Write date and time *****/
- fprintf (Gbl.F.Out,"",
- UniqueId,(long) TimeUTC,
- (unsigned) Gbl.Prefs.DateFormat,Txt_Today);
+ Dat_WriteLocalDateHMSFromUTC ("'msg_date_%u',%ld,"
+ "%u,', ','%s',true,false,0x6",
+ UniqueId,(long) TimeUTC,
+ (unsigned) Gbl.Prefs.DateFormat,Txt_Today);
/***** End cell *****/
HTM_TD_End ();
diff --git a/swad_notice.c b/swad_notice.c
index 821d2b71..e874229a 100644
--- a/swad_notice.c
+++ b/swad_notice.c
@@ -698,12 +698,10 @@ static void Not_DrawANotice (Not_Listing_t TypeNoticesListing,
Frm_LinkFormEnd ();
Frm_EndForm ();
}
- fprintf (Gbl.F.Out,"",
- UniqueId,(long) TimeUTC,
- (unsigned) Gbl.Prefs.DateFormat,Txt_Today);
+ Dat_WriteLocalDateHMSFromUTC ("'not_date_%u',%ld,"
+ "%u,'
','%s',true,false,0x6",
+ UniqueId,(long) TimeUTC,
+ (unsigned) Gbl.Prefs.DateFormat,Txt_Today);
HTM_DIV_End ();
/***** Write the content of the notice *****/
diff --git a/swad_profile.c b/swad_profile.c
index d0a08ad3..2faf9009 100644
--- a/swad_profile.c
+++ b/swad_profile.c
@@ -501,12 +501,10 @@ static void Prf_ShowTimeSinceFirstClick (const struct UsrData *UsrDat,
}
fprintf (Gbl.F.Out,")");
}
- fprintf (Gbl.F.Out,"",
- IdFirstClickTime,(long) UsrFigures->FirstClickTimeUTC,
- (unsigned) Gbl.Prefs.DateFormat,Txt_Today);
+ Dat_WriteLocalDateHMSFromUTC ("'%s',%ld,"
+ "%u,', ','%s',true,false,0x6",
+ IdFirstClickTime,(long) UsrFigures->FirstClickTimeUTC,
+ (unsigned) Gbl.Prefs.DateFormat,Txt_Today);
}
else // First click time is unknown or user never logged
/***** Button to fetch and store user's figures *****/
diff --git a/swad_project.c b/swad_project.c
index 583120ca..4dff0cbf 100644
--- a/swad_project.c
+++ b/swad_project.c
@@ -1116,12 +1116,10 @@ static void Prj_ShowOneProject (unsigned NumIndex,struct Project *Prj,
UniqueId,ClassDate);
break;
}
- fprintf (Gbl.F.Out,"",
- UniqueId,Prj->CreatTime,
- (unsigned) Gbl.Prefs.DateFormat,Txt_Today);
+ Dat_WriteLocalDateHMSFromUTC ("'prj_creat_%u',%ld,"
+ "%u,'
','%s',true,true,0x7",
+ UniqueId,Prj->CreatTime,
+ (unsigned) Gbl.Prefs.DateFormat,Txt_Today);
HTM_TD_End ();
/* Modification date/time */
@@ -1137,12 +1135,10 @@ static void Prj_ShowOneProject (unsigned NumIndex,struct Project *Prj,
UniqueId,ClassDate);
break;
}
- fprintf (Gbl.F.Out,"",
- UniqueId,Prj->ModifTime,
- (unsigned) Gbl.Prefs.DateFormat,Txt_Today);
+ Dat_WriteLocalDateHMSFromUTC ("'prj_modif_%u',%ld,"
+ "%u,'
','%s',true,true,0x7",
+ UniqueId,Prj->ModifTime,
+ (unsigned) Gbl.Prefs.DateFormat,Txt_Today);
HTM_TD_End ();
/* Project title */
@@ -1495,24 +1491,20 @@ static void Prj_ShowTableAllProjectsOneRow (struct Project *Prj)
UniqueId++;
HTM_TD_Begin ("id=\"prj_creat_%u\" class=\"LT %s COLOR%u\"",
UniqueId,ClassDate,Gbl.RowEvenOdd);
- fprintf (Gbl.F.Out,"",
- UniqueId,Prj->CreatTime,
- (unsigned) Gbl.Prefs.DateFormat,Txt_Today);
+ Dat_WriteLocalDateHMSFromUTC ("'prj_creat_%u',%ld,"
+ "%u,'
','%s',true,true,0x7",
+ UniqueId,Prj->CreatTime,
+ (unsigned) Gbl.Prefs.DateFormat,Txt_Today);
HTM_TD_End ();
/***** End date/time *****/
UniqueId++;
HTM_TD_Begin ("id=\"prj_modif_%u\" class=\"LT %s COLOR%u\"",
UniqueId,ClassDate,Gbl.RowEvenOdd);
- fprintf (Gbl.F.Out,"",
- UniqueId,Prj->ModifTime,
- (unsigned) Gbl.Prefs.DateFormat,Txt_Today);
+ Dat_WriteLocalDateHMSFromUTC ("'prj_modif_%u',%ld,"
+ "%u,'
','%s',true,true,0x7",
+ UniqueId,Prj->ModifTime,
+ (unsigned) Gbl.Prefs.DateFormat,Txt_Today);
HTM_TD_End ();
/***** Project title *****/
diff --git a/swad_statistic.c b/swad_statistic.c
index de6bc336..2cb01149 100644
--- a/swad_statistic.c
+++ b/swad_statistic.c
@@ -1716,13 +1716,11 @@ static void Sta_ShowDetailedAccessesList (unsigned long NumRows,MYSQL_RES *mysql
/* Write the date-time (row[3]) */
HTM_TD_Begin ("id=\"log_date_%u\" class=\"LOG RT COLOR%u\"",
- UniqueId,Gbl.RowEvenOdd);
- fprintf (Gbl.F.Out,"",
- UniqueId,(long) Dat_GetUNIXTimeFromStr (row[3]),
- (unsigned) Gbl.Prefs.DateFormat,Txt_Today);
+ UniqueId,Gbl.RowEvenOdd);
+ Dat_WriteLocalDateHMSFromUTC ("'log_date_%u',%ld,"
+ "%u,', ','%s',true,false,0x7",
+ UniqueId,(long) Dat_GetUNIXTimeFromStr (row[3]),
+ (unsigned) Gbl.Prefs.DateFormat,Txt_Today);
HTM_TD_End ();
/* Write the action */
diff --git a/swad_survey.c b/swad_survey.c
index 5d1bad98..97175f3e 100644
--- a/swad_survey.c
+++ b/swad_survey.c
@@ -485,12 +485,10 @@ static void Svy_ShowOneSurvey (long SvyCod,struct SurveyQuestion *SvyQst,
(Svy.Status.Open ? "DATE_GREEN_LIGHT" :
"DATE_RED_LIGHT"),
Gbl.RowEvenOdd);
- fprintf (Gbl.F.Out,"",
- UniqueId,Svy.TimeUTC[Svy_START_TIME],
- (unsigned) Gbl.Prefs.DateFormat,Txt_Today);
+ Dat_WriteLocalDateHMSFromUTC ("'svy_date_start_%u',%ld,"
+ "%u,'
','%s',true,true,0x7",
+ UniqueId,Svy.TimeUTC[Svy_START_TIME],
+ (unsigned) Gbl.Prefs.DateFormat,Txt_Today);
HTM_TD_End ();
/* End date/time */
@@ -509,12 +507,10 @@ static void Svy_ShowOneSurvey (long SvyCod,struct SurveyQuestion *SvyQst,
(Svy.Status.Open ? "DATE_GREEN_LIGHT" :
"DATE_RED_LIGHT"),
Gbl.RowEvenOdd);
- fprintf (Gbl.F.Out,"",
- UniqueId,Svy.TimeUTC[Svy_END_TIME],
- (unsigned) Gbl.Prefs.DateFormat,Txt_Today);
+ Dat_WriteLocalDateHMSFromUTC ("'svy_date_end_%u',%ld,"
+ "%u,'
','%s',false,true,0x7",
+ UniqueId,Svy.TimeUTC[Svy_END_TIME],
+ (unsigned) Gbl.Prefs.DateFormat,Txt_Today);
HTM_TD_End ();
/* Survey title */
diff --git a/swad_test.c b/swad_test.c
index 4ac7153b..07f99a1e 100644
--- a/swad_test.c
+++ b/swad_test.c
@@ -2931,12 +2931,10 @@ static void Tst_ListOneOrMoreQuestionsForEdition (unsigned long NumRows,
TimeUTC = Dat_GetUNIXTimeFromStr (row[1]);
HTM_TD_Begin ("id=\"tst_date_%u\" class=\"DAT_SMALL CT COLOR%u\"",
UniqueId,Gbl.RowEvenOdd);
- fprintf (Gbl.F.Out,"",
- UniqueId,(long) TimeUTC,
- (unsigned) Gbl.Prefs.DateFormat,Txt_Today);
+ Dat_WriteLocalDateHMSFromUTC ("'tst_date_%u',%ld,"
+ "%u,'
','%s',true,false,0x7",
+ UniqueId,(long) TimeUTC,
+ (unsigned) Gbl.Prefs.DateFormat,Txt_Today);
HTM_TD_End ();
/* Write the question tags */
@@ -3142,12 +3140,10 @@ static void Tst_ListOneOrMoreQuestionsForSelection (unsigned long NumRows,
TimeUTC = Dat_GetUNIXTimeFromStr (row[1]);
HTM_TD_Begin ("id=\"tst_date_%u\" class=\"DAT_SMALL CT COLOR%u\">",
UniqueId,Gbl.RowEvenOdd);
- fprintf (Gbl.F.Out,"",
- UniqueId,(long) TimeUTC,
- (unsigned) Gbl.Prefs.DateFormat,Txt_Today);
+ Dat_WriteLocalDateHMSFromUTC ("'tst_date_%u',%ld,"
+ "%u,'
','%s',true,false,0x7",
+ UniqueId,(long) TimeUTC,
+ (unsigned) Gbl.Prefs.DateFormat,Txt_Today);
HTM_TD_End ();
/* Write the question tags */
@@ -7778,12 +7774,10 @@ static void Tst_ShowTstResults (struct UsrData *UsrDat)
UniqueId++;
HTM_TD_Begin ("id=\"tst_date_%u\" class=\"%s RT COLOR%u\"",
UniqueId,ClassDat,Gbl.RowEvenOdd);
- fprintf (Gbl.F.Out,"",
- UniqueId,(long) TimeUTC,
- (unsigned) Gbl.Prefs.DateFormat,Txt_Today);
+ Dat_WriteLocalDateHMSFromUTC ("'tst_date_%u',%ld,"
+ "%u,', ','%s',true,false,0x7",
+ UniqueId,(long) TimeUTC,
+ (unsigned) Gbl.Prefs.DateFormat,Txt_Today);
HTM_TD_End ();
/* Get number of questions (row[3]) */
@@ -8118,12 +8112,10 @@ void Tst_ShowOneTstResult (void)
HTM_TD_End ();
HTM_TD_Begin ("id=\"test\" class=\"DAT LT\"");
- fprintf (Gbl.F.Out,"",
- TstTimeUTC,
- (unsigned) Gbl.Prefs.DateFormat,Txt_Today);
+ Dat_WriteLocalDateHMSFromUTC ("'test',%ld,"
+ "%u,', ','%s',true,true,0x7",
+ TstTimeUTC,
+ (unsigned) Gbl.Prefs.DateFormat,Txt_Today);
HTM_TD_End ();
HTM_TR_End ();
diff --git a/swad_timeline.c b/swad_timeline.c
index 38a23b1f..10b637bf 100644
--- a/swad_timeline.c
+++ b/swad_timeline.c
@@ -1789,12 +1789,10 @@ static void TL_WriteDateTime (time_t TimeUTC)
/***** Script to write date and time in browser local time *****/
// This must be out of the div where the output is written
// because it will be evaluated in a loop in JavaScript
- fprintf (Gbl.F.Out,"",
- IdDateTime,(long) TimeUTC,
- (unsigned) Gbl.Prefs.DateFormat,Txt_Today);
+ Dat_WriteLocalDateHMSFromUTC ("'%s',%ld,"
+ "%u,', ','%s',true,false,0x6",
+ IdDateTime,(long) TimeUTC,
+ (unsigned) Gbl.Prefs.DateFormat,Txt_Today);
}
/*****************************************************************************/