From 8bd17316e2866945d48e9b11437d33a0ca8e012b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antonio=20Ca=C3=B1as=20Vargas?= Date: Fri, 1 Nov 2019 17:35:26 +0100 Subject: [PATCH] Version19.50 --- swad_HTML.c | 29 +++++++++++++++++++ swad_HTML.h | 3 ++ swad_agenda.c | 12 ++++---- swad_assignment.c | 10 +++---- swad_attendance.c | 40 +++++++++++--------------- swad_calendar.c | 17 ++++++----- swad_changelog.h | 6 ++-- swad_connected.c | 10 +++---- swad_country.c | 12 ++++---- swad_date.c | 67 +++++++++++++++++++++++++++++++------------ swad_date.h | 2 ++ swad_file_browser.c | 56 ++++++++++++++---------------------- swad_forum.c | 10 +++---- swad_game.c | 12 ++++---- swad_group.c | 14 ++++----- swad_layout.c | 70 +++++++++++++++++++++------------------------ swad_match.c | 12 ++++---- swad_match_result.c | 24 +++++++--------- swad_message.c | 10 +++---- swad_notice.c | 10 +++---- swad_profile.c | 10 +++---- swad_project.c | 40 +++++++++++--------------- swad_statistic.c | 12 ++++---- swad_survey.c | 20 ++++++------- swad_test.c | 40 +++++++++++--------------- swad_timeline.c | 10 +++---- 26 files changed, 278 insertions(+), 280 deletions(-) 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); } /*****************************************************************************/