Version19.50.1

This commit is contained in:
Antonio Cañas Vargas 2019-11-01 22:53:39 +01:00
parent 1ff26d4984
commit af3f796fa5
18 changed files with 239 additions and 163 deletions

View File

@ -716,6 +716,7 @@ static void Agd_ShowOneEvent (Agd_AgendaType_t AgendaType,long AgdCod)
extern const char *Txt_Today;
char *Anchor = NULL;
static unsigned UniqueId = 0;
char *Id;
struct AgendaEvent AgdEvent;
Dat_StartEndTime_t StartEndTime;
char Txt[Cns_MAX_BYTES_TEXT + 1];
@ -747,17 +748,18 @@ static void Agd_ShowOneEvent (Agd_AgendaType_t AgendaType,long AgdCod)
StartEndTime <= (Dat_StartEndTime_t) (Dat_NUM_START_END_TIME - 1);
StartEndTime++)
{
HTM_TD_Begin ("id=\"agd_date_%u_%u\" class=\"%s LB COLOR%u\"",
(unsigned) StartEndTime,UniqueId,
if (asprintf (&Id,"agd_date_%u_%u",(unsigned) StartEndTime,UniqueId) < 0)
Lay_NotEnoughMemoryExit ();
HTM_TD_Begin ("id=\"%s\" class=\"%s LB COLOR%u\"",
Id,
AgdEvent.Hidden ? Dat_TimeStatusClassHidden[AgdEvent.TimeStatus] :
Dat_TimeStatusClassVisible[AgdEvent.TimeStatus],
Gbl.RowEvenOdd);
Dat_WriteLocalDateHMSFromUTC ("'agd_date_%u_%u',%ld,"
"%u,'<br />','%s',true,true,0x6",
(unsigned) StartEndTime,UniqueId,
AgdEvent.TimeUTC[StartEndTime],
Dat_WriteLocalDateHMSFromUTC ("'%s',%ld,%u,'<br />','%s',true,true,0x6",
Id,AgdEvent.TimeUTC[StartEndTime],
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
HTM_TD_End ();
free ((void *) Id);
}
/* Event */

View File

@ -25,8 +25,10 @@
/********************************* Headers ***********************************/
/*****************************************************************************/
#define _GNU_SOURCE // For asprintf
#include <linux/limits.h> // For PATH_MAX
#include <linux/stddef.h> // For NULL
#include <stdio.h> // For asprintf
#include <stdlib.h> // For calloc
#include <string.h> // For string functions
@ -340,6 +342,7 @@ static void Asg_ShowOneAssignment (long AsgCod,bool PrintView)
extern const char *Txt_Today;
char *Anchor = NULL;
static unsigned UniqueId = 0;
char *Id;
struct Assignment Asg;
Dat_StartEndTime_t StartEndTime;
char Txt[Cns_MAX_BYTES_TEXT + 1];
@ -371,26 +374,28 @@ static void Asg_ShowOneAssignment (long AsgCod,bool PrintView)
StartEndTime <= (Dat_StartEndTime_t) (Dat_NUM_START_END_TIME - 1);
StartEndTime++)
{
if (asprintf (&Id,"asg_date_%u_%u",(unsigned) StartEndTime,UniqueId) < 0)
Lay_NotEnoughMemoryExit ();
if (PrintView)
HTM_TD_Begin ("id=\"asg_date_%u_%u\" class=\"%s LB\"",
(unsigned) StartEndTime,UniqueId,
HTM_TD_Begin ("id=\"%s\" class=\"%s LB\"",
Id,
Asg.Hidden ? (Asg.Open ? "DATE_GREEN_LIGHT" :
"DATE_RED_LIGHT") :
(Asg.Open ? "DATE_GREEN" :
"DATE_RED"));
else
HTM_TD_Begin ("id=\"asg_date_%u_%u\" class=\"%s LB COLOR%u\"",
(unsigned) StartEndTime,UniqueId,
HTM_TD_Begin ("id=\"%s\" class=\"%s LB COLOR%u\"",
Id,
Asg.Hidden ? (Asg.Open ? "DATE_GREEN_LIGHT" :
"DATE_RED_LIGHT") :
(Asg.Open ? "DATE_GREEN" :
"DATE_RED"),
Gbl.RowEvenOdd);
Dat_WriteLocalDateHMSFromUTC ("'asg_date_%u_%u',%ld,"
"%u,'<br />','%s',true,true,0x7",
(unsigned) StartEndTime,UniqueId,Asg.TimeUTC[StartEndTime],
Dat_WriteLocalDateHMSFromUTC ("'%s',%ld,%u,'<br />','%s',true,true,0x7",
Id,Asg.TimeUTC[StartEndTime],
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
HTM_TD_End ();
free ((void *) Id);
}
/* Assignment title */

View File

@ -25,9 +25,11 @@
/********************************** Headers **********************************/
/*****************************************************************************/
#define _GNU_SOURCE // For asprintf
#include <linux/limits.h> // For PATH_MAX
#include <linux/stddef.h> // For NULL
#include <mysql/mysql.h> // To access MySQL databases
#include <stdio.h> // For asprintf
#include <stdlib.h> // For calloc
#include <string.h> // For string functions
@ -373,6 +375,7 @@ static void Att_ShowOneAttEvent (struct AttendanceEvent *Att,bool ShowOnlyThisAt
extern const char *Txt_View_event;
char *Anchor = NULL;
static unsigned UniqueId = 0;
char *Id;
Dat_StartEndTime_t StartEndTime;
char Description[Cns_MAX_BYTES_TEXT + 1];
@ -408,26 +411,28 @@ static void Att_ShowOneAttEvent (struct AttendanceEvent *Att,bool ShowOnlyThisAt
StartEndTime <= (Dat_StartEndTime_t) (Dat_NUM_START_END_TIME - 1);
StartEndTime++)
{
if (asprintf (&Id,"att_date_%u_%u",(unsigned) StartEndTime,UniqueId) < 0)
Lay_NotEnoughMemoryExit ();
if (ShowOnlyThisAttEventComplete)
HTM_TD_Begin ("id=\"att_date_%u_%u\" class=\"%s LB\"",
(unsigned) StartEndTime,UniqueId,
HTM_TD_Begin ("id=\"%s\" class=\"%s LB\"",
Id,
Att->Hidden ? (Att->Open ? "DATE_GREEN_LIGHT" :
"DATE_RED_LIGHT") :
(Att->Open ? "DATE_GREEN" :
"DATE_RED"));
else
HTM_TD_Begin ("id=\"att_date_%u_%u\" class=\"%s LB COLOR%u\"",
(unsigned) StartEndTime,UniqueId,
HTM_TD_Begin ("id=\"%s\" class=\"%s LB COLOR%u\"",
Id,
Att->Hidden ? (Att->Open ? "DATE_GREEN_LIGHT" :
"DATE_RED_LIGHT") :
(Att->Open ? "DATE_GREEN" :
"DATE_RED"),
Gbl.RowEvenOdd);
Dat_WriteLocalDateHMSFromUTC ("'att_date_%u_%u',%ld,"
"%u,'<br />','%s',true,true,0x7",
(unsigned) StartEndTime,UniqueId,Att->TimeUTC[StartEndTime],
Dat_WriteLocalDateHMSFromUTC ("'%s',%ld,%u,'<br />','%s',true,true,0x7",
Id,Att->TimeUTC[StartEndTime],
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
HTM_TD_End ();
free ((void *) Id);
}
/* Attendance event title */
@ -3072,6 +3077,7 @@ static void Att_ListEventsToSelect (Att_TypeOfView_t TypeOfView)
extern const char *Txt_Today;
extern const char *Txt_Update_attendance;
unsigned UniqueId;
char *Id;
unsigned NumAttEvent;
bool NormalView = (TypeOfView == Att_NORMAL_VIEW_ONLY_ME ||
TypeOfView == Att_NORMAL_VIEW_STUDENTS);
@ -3131,16 +3137,18 @@ static void Att_ListEventsToSelect (Att_TypeOfView_t TypeOfView)
NumAttEvent,NumAttEvent + 1);
HTM_TD_End ();
if (asprintf (&Id,"att_date_start_%u",UniqueId) < 0)
Lay_NotEnoughMemoryExit ();
HTM_TD_Begin ("class=\"DAT LT COLOR%u\"",Gbl.RowEvenOdd);
fprintf (Gbl.F.Out,"<label for=\"Att%u\">"
"<span id=\"att_date_start_%u\"></span>"
"<span id=\"%s\"></span>"
"</label>",
NumAttEvent,UniqueId);
Dat_WriteLocalDateHMSFromUTC ("'att_date_start_%u',%ld,"
"%u,',&nbsp;','%s',true,true,0x7",
UniqueId,Gbl.AttEvents.Lst[NumAttEvent].TimeUTC[Att_START_TIME],
NumAttEvent,Id);
Dat_WriteLocalDateHMSFromUTC ("'%s',%ld,%u,',&nbsp;','%s',true,true,0x7",
Id,Gbl.AttEvents.Lst[NumAttEvent].TimeUTC[Att_START_TIME],
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
HTM_TD_End ();
free ((void *) Id);
HTM_TD_Begin ("class=\"DAT LT COLOR%u\"",Gbl.RowEvenOdd);
fprintf (Gbl.F.Out,"%s",Gbl.AttEvents.Lst[NumAttEvent].Title);
@ -3490,6 +3498,7 @@ static void Att_ListAttEventsForAStd (unsigned NumUsr,struct UsrData *UsrDat)
bool ShowPhoto;
unsigned NumAttEvent;
unsigned UniqueId;
char *Id;
bool Present;
bool ShowCommentStd;
bool ShowCommentTch;
@ -3574,17 +3583,19 @@ static void Att_ListAttEventsForAStd (unsigned NumUsr,struct UsrData *UsrDat)
Att_PutCheckOrCross (Present);
HTM_TD_End ();
if (asprintf (&Id,"att_date_start_%u_%u",NumUsr,UniqueId) < 0)
Lay_NotEnoughMemoryExit ();
HTM_TD_Begin ("class=\"DAT LT COLOR%u\"",Gbl.RowEvenOdd);
fprintf (Gbl.F.Out,"<span id=\"att_date_start_%u_%u\"></span>"
fprintf (Gbl.F.Out,"<span id=\"%s\"></span>"
"<br />%s",
NumUsr,UniqueId,
Id,
Gbl.AttEvents.Lst[NumAttEvent].Title);
Dat_WriteLocalDateHMSFromUTC ("'att_date_start_%u_%u',%ld,"
"%u,',&nbsp;','%s',true,true,0x7",
NumUsr,UniqueId,
Dat_WriteLocalDateHMSFromUTC ("'%s',%ld,%u,',&nbsp;','%s',true,true,0x7",
Id,
Gbl.AttEvents.Lst[NumAttEvent].TimeUTC[Att_START_TIME],
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
HTM_TD_End ();
free ((void *) Id);
HTM_TR_End ();

View File

@ -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 (2019-11-01)"
#define Log_PLATFORM_VERSION "SWAD 19.50.1 (2019-11-01)"
#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.1: Nov 01, 2019 Code refactoring related with writing of local date-time. (246088 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)

View File

@ -166,10 +166,14 @@ void Dat_PutSpanDateFormat (Dat_Format_t Format)
void Dat_PutScriptDateFormat (Dat_Format_t Format)
{
Dat_WriteLocalDateHMSFromUTC ("'date_format_%u',%ld,"
"%u,'',null,true,false,0x0",
(unsigned) Format,(long) Gbl.StartExecutionTimeUTC,
char *Id;
if (asprintf (&Id,"date_format_%u",(unsigned) Format) < 0)
Lay_NotEnoughMemoryExit ();
Dat_WriteLocalDateHMSFromUTC ("'%s',%ld,%u,'',null,true,false,0x0",
Id,(long) Gbl.StartExecutionTimeUTC,
(unsigned) Format);
free ((void *) Id);
}
/*****************************************************************************/

View File

@ -6388,6 +6388,7 @@ static void Brw_WriteDatesAssignment (void)
extern const char *Txt_Today;
extern const char *Txt_unknown_assignment;
static unsigned UniqueId = 0;
char *Id;
HTM_TD_Begin ("colspan=\"2\" class=\"%s RM COLOR%u\"",
Gbl.FileBrowser.Asg.Open ? "ASG_LST_DATE_GREEN" :
@ -6398,20 +6399,28 @@ static void Brw_WriteDatesAssignment (void)
{
UniqueId++;
/***** Write start and end dates *****/
fprintf (Gbl.F.Out,"<span id=\"asg_start_date_%u\">",UniqueId);
Dat_WriteLocalDateHMSFromUTC ("'asg_start_date_%u',%ld,"
"%u,',&nbsp;','%s',true,false,0x7",
UniqueId,(long) Gbl.FileBrowser.Asg.TimeUTC[Dat_START_TIME],
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
fprintf (Gbl.F.Out,"</span>"
"&rarr;"
"<span id=\"asg_end_date_%u\">",UniqueId);
Dat_WriteLocalDateHMSFromUTC ("'asg_end_date_%u',%ld,"
"%u,',&nbsp;','%s',false,false,0x7",
UniqueId,(long) Gbl.FileBrowser.Asg.TimeUTC[Dat_END_TIME],
/***** Write start date *****/
if (asprintf (&Id,"asg_start_date_%u",UniqueId) < 0)
Lay_NotEnoughMemoryExit ();
fprintf (Gbl.F.Out,"<span id=\"%s\">",Id);
Dat_WriteLocalDateHMSFromUTC ("'%s',%ld,%u,',&nbsp;','%s',true,false,0x7",
Id,(long) Gbl.FileBrowser.Asg.TimeUTC[Dat_START_TIME],
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
fprintf (Gbl.F.Out,"</span>");
free ((void *) Id);
/***** Arrow *****/
fprintf (Gbl.F.Out,"&rarr;");
/***** Write end date *****/
if (asprintf (&Id,"asg_end_date_%u",UniqueId) < 0)
Lay_NotEnoughMemoryExit ();
fprintf (Gbl.F.Out,"<span id=\"%s\">",Id);
Dat_WriteLocalDateHMSFromUTC ("'%s',%ld,%u,',&nbsp;','%s',false,false,0x7",
Id,(long) Gbl.FileBrowser.Asg.TimeUTC[Dat_END_TIME],
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
fprintf (Gbl.F.Out,"</span>");
free ((void *) Id);
}
else
fprintf (Gbl.F.Out,"&nbsp;(%s)",Txt_unknown_assignment);
@ -6426,6 +6435,7 @@ static void Brw_WriteFileSizeAndDate (struct FileMetadata *FileMetadata)
{
extern const char *Txt_Today;
static unsigned UniqueId = 0;
char *Id;
char FileSizeStr[Fil_MAX_BYTES_FILE_SIZE_STRING + 1];
/***** Write the file size *****/
@ -6446,11 +6456,13 @@ static void Brw_WriteFileSizeAndDate (struct FileMetadata *FileMetadata)
Gbl.FileBrowser.FilFolLnk.Type == Brw_IS_LINK)
{
UniqueId++;
fprintf (Gbl.F.Out,"<span id=\"filedate%u\"></span>",UniqueId);
Dat_WriteLocalDateHMSFromUTC ("'filedate%u',%ld,"
"%u,',&nbsp;','%s',true,false,0x6",
UniqueId,(long) FileMetadata->Time,
if (asprintf (&Id,"filedate%u",UniqueId) < 0)
Lay_NotEnoughMemoryExit ();
fprintf (Gbl.F.Out,"<span id=\"%s\"></span>",Id);
Dat_WriteLocalDateHMSFromUTC ("'%s',%ld,%u,',&nbsp;','%s',true,false,0x6",
Id,(long) FileMetadata->Time,
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
free ((void *) Id);
}
HTM_TD_End ();
}
@ -9566,8 +9578,7 @@ void Brw_ShowFileMetadata (void)
HTM_TD_End ();
HTM_TD_Begin ("id=\"filedate\" class=\"DAT LM\"");
Dat_WriteLocalDateHMSFromUTC ("'filedate',%ld,"
"%u,',&nbsp;','%s',true,true,0x7",
Dat_WriteLocalDateHMSFromUTC ("'filedate',%ld,%u,',&nbsp;','%s',true,true,0x7",
(long) FileMetadata.Time,
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
HTM_TD_End ();

View File

@ -3335,6 +3335,7 @@ static void For_ListForumThrs (long ThrCods[Pag_ITEMS_PER_PAGE],
unsigned NumThr;
unsigned NumThrInScreen; // From 0 to Pag_ITEMS_PER_PAGE-1
unsigned UniqueId;
char *Id;
struct ForumThread Thr;
struct UsrData UsrDat;
For_Order_t Order;
@ -3457,13 +3458,14 @@ static void For_ListForumThrs (long ThrCods[Pag_ITEMS_PER_PAGE],
/* Write the date of first or last message (it's in YYYYMMDDHHMMSS format) */
TimeUTC = Thr.WriteTime[Order];
UniqueId++;
HTM_TD_Begin ("id=\"thr_date_%u\" class=\"%s LT %s\"",
UniqueId,Style,BgColor);
Dat_WriteLocalDateHMSFromUTC ("'thr_date_%u',%ld,"
"%u,'<br />','%s',true,false,0x6",
UniqueId,(long) TimeUTC,
if (asprintf (&Id,"thr_date_%u",UniqueId) < 0)
Lay_NotEnoughMemoryExit ();
HTM_TD_Begin ("id=\"%s\" class=\"%s LT %s\"",Id,Style,BgColor);
Dat_WriteLocalDateHMSFromUTC ("'%s',%ld,%u,'<br />','%s',true,false,0x6",
Id,(long) TimeUTC,
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
HTM_TD_End ();
free ((void *) Id);
}
else
for (Column = 1;

View File

@ -376,6 +376,7 @@ void Gam_ShowOneGame (long GamCod,
extern const char *Txt_Matches;
char *Anchor = NULL;
static unsigned UniqueId = 0;
char *Id;
struct Game Game;
Dat_StartEndTime_t StartEndTime;
char Txt[Cns_MAX_BYTES_TEXT + 1];
@ -419,24 +420,23 @@ void Gam_ShowOneGame (long GamCod,
StartEndTime <= (Dat_StartEndTime_t) (Dat_NUM_START_END_TIME - 1);
StartEndTime++)
{
if (asprintf (&Id,"gam_date_%u_%u",(unsigned) StartEndTime,UniqueId) < 0)
Lay_NotEnoughMemoryExit ();
if (ShowOnlyThisGame)
HTM_TD_Begin ("id=\"gam_date_%u_%u\" class=\"%s LT\"",
(unsigned) StartEndTime,UniqueId,
Game.Hidden ? "DATE_GREEN_LIGHT":
"DATE_GREEN");
HTM_TD_Begin ("id=\"%s\" class=\"%s LT\"",
Id,Game.Hidden ? "DATE_GREEN_LIGHT":
"DATE_GREEN");
else
HTM_TD_Begin ("id=\"gam_date_%u_%u\" class=\"%s LT COLOR%u\"",
(unsigned) StartEndTime,UniqueId,
Game.Hidden ? "DATE_GREEN_LIGHT":
"DATE_GREEN",
HTM_TD_Begin ("id=\"%s\" class=\"%s LT COLOR%u\"",
Id,Game.Hidden ? "DATE_GREEN_LIGHT":
"DATE_GREEN",
Gbl.RowEvenOdd);
if (Game.TimeUTC[Dat_START_TIME])
Dat_WriteLocalDateHMSFromUTC ("'gam_date_%u_%u',%ld,"
"%u,'<br />','%s',true,true,0x7",
(unsigned) StartEndTime,UniqueId,
Game.TimeUTC[StartEndTime],
Dat_WriteLocalDateHMSFromUTC ("'%s',%ld,%u,'<br />','%s',true,true,0x7",
Id,Game.TimeUTC[StartEndTime],
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
HTM_TD_End ();
free ((void *) Id);
}
/***** Game title and main data *****/

View File

@ -2328,6 +2328,7 @@ static void Grp_WriteGrpHead (struct GroupType *GrpTyp)
extern const char *Txt_ROLES_PLURAL_BRIEF_Abc[Rol_NUM_ROLES];
extern const char *Txt_Vacants;
static unsigned UniqueId = 0;
char *Id;
Rol_Role_t Role;
/***** Name of group type *****/
@ -2337,14 +2338,16 @@ static void Grp_WriteGrpHead (struct GroupType *GrpTyp)
if (GrpTyp->MustBeOpened)
{
UniqueId++;
if (asprintf (&Id,"open_time_%u",UniqueId) < 0)
Lay_NotEnoughMemoryExit ();
fprintf (Gbl.F.Out,"<br />%s: "
"<span id=\"open_time_%u\"></span>",
"<span id=\"%s\"></span>",
Txt_Opening_of_groups,
UniqueId);
Dat_WriteLocalDateHMSFromUTC ("'open_time_%u',%ld,"
"%u,',&nbsp;','%s',true,true,0x7",
UniqueId,(long) GrpTyp->OpenTimeUTC,
Id);
Dat_WriteLocalDateHMSFromUTC ("'%s',%ld,%u,',&nbsp;','%s',true,true,0x7",
Id,(long) GrpTyp->OpenTimeUTC,
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
free ((void *) Id);
}
HTM_TD_End ();
HTM_TR_End ();

View File

@ -544,22 +544,24 @@ static void Mch_ListOneOrMoreMatchesTimes (const struct Match *Match,unsigned Un
{
extern const char *Txt_Today;
Dat_StartEndTime_t StartEndTime;
char *Id;
for (StartEndTime = (Dat_StartEndTime_t) 0;
StartEndTime <= (Dat_StartEndTime_t) (Dat_NUM_START_END_TIME - 1);
StartEndTime++)
{
HTM_TD_Begin ("id=\"mch_time_%u_%u\" class=\"%s LT COLOR%u\"",
(unsigned) StartEndTime,UniqueId,
if (asprintf (&Id,"mch_time_%u_%u",(unsigned) StartEndTime,UniqueId) < 0)
Lay_NotEnoughMemoryExit ();
HTM_TD_Begin ("id=\"%s\" class=\"%s LT COLOR%u\"",
Id,
Match->Status.QstInd >= Mch_AFTER_LAST_QUESTION ? "DATE_RED" :
"DATE_GREEN",
Gbl.RowEvenOdd);
Dat_WriteLocalDateHMSFromUTC ("'mch_time_%u_%u',"
"%ld,%u,'<br />','%s',true,true,0x7",
(unsigned) StartEndTime,UniqueId,
Match->TimeUTC[StartEndTime],
Dat_WriteLocalDateHMSFromUTC ("'%s',%ld,%u,'<br />','%s',true,true,0x7",
Id,Match->TimeUTC[StartEndTime],
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
HTM_TD_End ();
free ((void *) Id);
}
}

View File

@ -363,6 +363,7 @@ static void McR_ShowMchResults (Usr_MeOrOther_t MeOrOther)
unsigned NumResults;
unsigned NumResult;
static unsigned UniqueId = 0;
char *Id;
struct Match Match;
Dat_StartEndTime_t StartEndTime;
unsigned NumQstsInThisResult;
@ -431,15 +432,15 @@ static void McR_ShowMchResults (Usr_MeOrOther_t MeOrOther)
{
TimeUTC[StartEndTime] = Dat_GetUNIXTimeFromStr (row[1 + StartEndTime]);
UniqueId++;
HTM_TD_Begin ("id =\"mch_time_%u_%u\" class=\"DAT LT COLOR%u\"",
(unsigned) StartEndTime,UniqueId,
Gbl.RowEvenOdd);
Dat_WriteLocalDateHMSFromUTC ("'mch_time_%u_%u',"
"%ld,%u,'<br />','%s',true,false,0x7",
(unsigned) StartEndTime,UniqueId,
(long) TimeUTC[StartEndTime],
if (asprintf (&Id,"mch_time_%u_%u",(unsigned) StartEndTime,UniqueId) < 0)
Lay_NotEnoughMemoryExit ();
HTM_TD_Begin ("id =\"%s\" class=\"DAT LT COLOR%u\"",
Id,Gbl.RowEvenOdd);
Dat_WriteLocalDateHMSFromUTC ("'%s',%ld,%u,'<br />','%s',true,false,0x7",
Id,(long) TimeUTC[StartEndTime],
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
HTM_TD_End ();
free ((void *) Id);
}
/* Write match title */
@ -633,6 +634,7 @@ void McR_ShowOneMchResult (void)
struct UsrData *UsrDat;
time_t TimeUTC[Dat_NUM_START_END_TIME]; // Match result UTC date-time
Dat_StartEndTime_t StartEndTime;
char *Id;
unsigned NumQsts;
unsigned NumQstsNotBlank;
double TotalScore;
@ -787,13 +789,14 @@ void McR_ShowOneMchResult (void)
fprintf (Gbl.F.Out,"%s:",Txt_START_END_TIME[StartEndTime]);
HTM_TD_End ();
HTM_TD_Begin ("id=\"match_%u\" class=\"DAT LT\"",(unsigned) StartEndTime);
Dat_WriteLocalDateHMSFromUTC ("'match_%u',%ld,"
"%u,',&nbsp;','%s',true,true,0x7",
(unsigned) StartEndTime,
TimeUTC[StartEndTime],
if (asprintf (&Id,"match_%u",(unsigned) StartEndTime) < 0)
Lay_NotEnoughMemoryExit ();
HTM_TD_Begin ("id=\"%s\" class=\"DAT LT\"",Id);
Dat_WriteLocalDateHMSFromUTC ("'%s',%ld,%u,',&nbsp;','%s',true,true,0x7",
Id,TimeUTC[StartEndTime],
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
HTM_TD_End ();
free ((void *) Id);
HTM_TR_End ();
}

View File

@ -3612,21 +3612,25 @@ void Msg_WriteMsgDate (time_t TimeUTC,const char *ClassBackground)
{
extern const char *Txt_Today;
static unsigned UniqueId = 0;
char *Id;
UniqueId++;
if (asprintf (&Id,"msg_date_%u",UniqueId) < 0)
Lay_NotEnoughMemoryExit ();
/***** Start cell *****/
HTM_TD_Begin ("id=\"msg_date_%u\" class=\"%s RT\" style=\"width:106px;\"",
UniqueId,ClassBackground);
HTM_TD_Begin ("id=\"%s\" class=\"%s RT\" style=\"width:106px;\"",
Id,ClassBackground);
/***** Write date and time *****/
Dat_WriteLocalDateHMSFromUTC ("'msg_date_%u',%ld,"
"%u,',&nbsp;','%s',true,false,0x6",
UniqueId,(long) TimeUTC,
Dat_WriteLocalDateHMSFromUTC ("'%s',%ld,%u,',&nbsp;','%s',true,false,0x6",
Id,(long) TimeUTC,
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
/***** End cell *****/
HTM_TD_End ();
free ((void *) Id);
}
/*****************************************************************************/

View File

@ -640,6 +640,7 @@ static void Not_DrawANotice (Not_Listing_t TypeNoticesListing,
"NOTICE_AUTHOR_OBSOLETE", // Not_OBSOLETE_NOTICE
};
static unsigned UniqueId = 0;
char *Id;
struct UsrData UsrDat;
char *Anchor = NULL;
@ -691,17 +692,18 @@ static void Not_DrawANotice (Not_Listing_t TypeNoticesListing,
Not_PutHiddenParamNotCod (NotCod);
Frm_LinkFormSubmit (Txt_See_full_notice,DateClass[Status],NULL);
}
fprintf (Gbl.F.Out,"<span id=\"not_date_%u\"></span>",
UniqueId);
if (asprintf (&Id,"not_date_%u",UniqueId) < 0)
Lay_NotEnoughMemoryExit ();
fprintf (Gbl.F.Out,"<span id=\"%s\"></span>",Id);
if (TypeNoticesListing == Not_LIST_BRIEF_NOTICES)
{
Frm_LinkFormEnd ();
Frm_EndForm ();
}
Dat_WriteLocalDateHMSFromUTC ("'not_date_%u',%ld,"
"%u,'<br />','%s',true,false,0x6",
UniqueId,(long) TimeUTC,
Dat_WriteLocalDateHMSFromUTC ("'%s',%ld,%u,'<br />','%s',true,false,0x6",
Id,(long) TimeUTC,
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
free ((void *) Id);
HTM_DIV_End ();
/***** Write the content of the notice *****/

View File

@ -501,8 +501,7 @@ static void Prf_ShowTimeSinceFirstClick (const struct UsrData *UsrDat,
}
fprintf (Gbl.F.Out,")");
}
Dat_WriteLocalDateHMSFromUTC ("'%s',%ld,"
"%u,',&nbsp;','%s',true,false,0x6",
Dat_WriteLocalDateHMSFromUTC ("'%s',%ld,%u,',&nbsp;','%s',true,false,0x6",
IdFirstClickTime,(long) UsrFigures->FirstClickTimeUTC,
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
}

View File

@ -1046,6 +1046,7 @@ static void Prj_ShowOneProject (unsigned NumIndex,struct Project *Prj,
struct Prj_Faults Faults;
bool PrjIsFaulty;
static unsigned UniqueId = 0;
char *Id;
/***** Set CSS classes *****/
ClassLabel = (Prj->Hidden == Prj_HIDDEN) ? "ASG_LABEL_LIGHT" :
@ -1105,41 +1106,45 @@ static void Prj_ShowOneProject (unsigned NumIndex,struct Project *Prj,
/* Creation date/time */
UniqueId++;
if (asprintf (&Id,"prj_creat_%u",UniqueId) < 0)
Lay_NotEnoughMemoryExit ();
switch (ProjectView)
{
case Prj_LIST_PROJECTS:
HTM_TD_Begin ("id=\"prj_creat_%u\" class=\"%s LT COLOR%u\"",
UniqueId,ClassDate,Gbl.RowEvenOdd);
HTM_TD_Begin ("id=\"%s\" class=\"%s LT COLOR%u\"",
Id,ClassDate,Gbl.RowEvenOdd);
break;
default:
HTM_TD_Begin ("id=\"prj_creat_%u\" class=\"%s LT\"",
UniqueId,ClassDate);
HTM_TD_Begin ("id=\"%s\" class=\"%s LT\"",
Id,ClassDate);
break;
}
Dat_WriteLocalDateHMSFromUTC ("'prj_creat_%u',%ld,"
"%u,'<br />','%s',true,true,0x7",
UniqueId,Prj->CreatTime,
Dat_WriteLocalDateHMSFromUTC ("'%s',%ld,%u,'<br />','%s',true,true,0x7",
Id,Prj->CreatTime,
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
HTM_TD_End ();
free ((void *) Id);
/* Modification date/time */
UniqueId++;
if (asprintf (&Id,"prj_modif_%u",UniqueId) < 0)
Lay_NotEnoughMemoryExit ();
switch (ProjectView)
{
case Prj_LIST_PROJECTS:
HTM_TD_Begin ("id=\"prj_modif_%u\" class=\"%s LT COLOR%u\"",
UniqueId,ClassDate,Gbl.RowEvenOdd);
HTM_TD_Begin ("id=\"%s\" class=\"%s LT COLOR%u\"",
Id,ClassDate,Gbl.RowEvenOdd);
break;
default:
HTM_TD_Begin ("id=\"prj_modif_%u\" class=\"%s LT\"",
UniqueId,ClassDate);
HTM_TD_Begin ("id=\"%s\" class=\"%s LT\"",
Id,ClassDate);
break;
}
Dat_WriteLocalDateHMSFromUTC ("'prj_modif_%u',%ld,"
"%u,'<br />','%s',true,true,0x7",
UniqueId,Prj->ModifTime,
Dat_WriteLocalDateHMSFromUTC ("'%s',%ld,%u,'<br />','%s',true,true,0x7",
Id,Prj->ModifTime,
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
HTM_TD_End ();
free ((void *) Id);
/* Project title */
switch (ProjectView)
@ -1474,6 +1479,7 @@ static void Prj_ShowTableAllProjectsOneRow (struct Project *Prj)
const char *ClassDate;
const char *ClassData;
static unsigned UniqueId = 0;
char *Id;
/***** Get data of this project *****/
Prj_GetDataOfProjectByCod (Prj);
@ -1489,23 +1495,27 @@ static void Prj_ShowTableAllProjectsOneRow (struct Project *Prj)
/***** Start date/time *****/
UniqueId++;
HTM_TD_Begin ("id=\"prj_creat_%u\" class=\"LT %s COLOR%u\"",
UniqueId,ClassDate,Gbl.RowEvenOdd);
Dat_WriteLocalDateHMSFromUTC ("'prj_creat_%u',%ld,"
"%u,'<br />','%s',true,true,0x7",
UniqueId,Prj->CreatTime,
if (asprintf (&Id,"prj_creat_%u",UniqueId) < 0)
Lay_NotEnoughMemoryExit ();
HTM_TD_Begin ("id=\"%s\" class=\"LT %s COLOR%u\"",
Id,ClassDate,Gbl.RowEvenOdd);
Dat_WriteLocalDateHMSFromUTC ("'%s',%ld,%u,'<br />','%s',true,true,0x7",
Id,Prj->CreatTime,
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
HTM_TD_End ();
free ((void *) Id);
/***** End date/time *****/
UniqueId++;
HTM_TD_Begin ("id=\"prj_modif_%u\" class=\"LT %s COLOR%u\"",
UniqueId,ClassDate,Gbl.RowEvenOdd);
Dat_WriteLocalDateHMSFromUTC ("'prj_modif_%u',%ld,"
"%u,'<br />','%s',true,true,0x7",
UniqueId,Prj->ModifTime,
if (asprintf (&Id,"prj_modif_%u",UniqueId) < 0)
Lay_NotEnoughMemoryExit ();
HTM_TD_Begin ("id=\"%s\" class=\"LT %s COLOR%u\"",
Id,ClassDate,Gbl.RowEvenOdd);
Dat_WriteLocalDateHMSFromUTC ("'%s',%ld,%u,'<br />','%s',true,true,0x7",
Id,Prj->ModifTime,
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
HTM_TD_End ();
free ((void *) Id);
/***** Project title *****/
HTM_TD_Begin ("class=\"LT %s COLOR%u\"",

View File

@ -1547,6 +1547,7 @@ static void Sta_ShowDetailedAccessesList (unsigned long NumRows,MYSQL_RES *mysql
long LogCod;
Rol_Role_t RoleFromLog;
unsigned UniqueId;
char *Id;
long ActCod;
char ActTxt[Act_MAX_BYTES_ACTION_TXT + 1];
@ -1715,13 +1716,14 @@ static void Sta_ShowDetailedAccessesList (unsigned long NumRows,MYSQL_RES *mysql
HTM_TD_End ();
/* Write the date-time (row[3]) */
HTM_TD_Begin ("id=\"log_date_%u\" class=\"LOG RT COLOR%u\"",
UniqueId,Gbl.RowEvenOdd);
Dat_WriteLocalDateHMSFromUTC ("'log_date_%u',%ld,"
"%u,',&nbsp;','%s',true,false,0x7",
UniqueId,(long) Dat_GetUNIXTimeFromStr (row[3]),
if (asprintf (&Id,"log_date_%u",UniqueId) < 0)
Lay_NotEnoughMemoryExit ();
HTM_TD_Begin ("id=\"%s\" class=\"LOG RT COLOR%u\"",Id,Gbl.RowEvenOdd);
Dat_WriteLocalDateHMSFromUTC ("'%s',%ld,%u,',&nbsp;','%s',true,false,0x7",
Id,(long) Dat_GetUNIXTimeFromStr (row[3]),
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
HTM_TD_End ();
free ((void *) Id);
/* Write the action */
if (sscanf (row[4],"%ld",&ActCod) != 1)

View File

@ -437,6 +437,7 @@ static void Svy_ShowOneSurvey (long SvyCod,struct SurveyQuestion *SvyQst,
extern const char *Txt_View_survey_results;
char *Anchor = NULL;
static unsigned UniqueId = 0;
char *Id;
struct Survey Svy;
char Txt[Cns_MAX_BYTES_TEXT + 1];
@ -470,48 +471,52 @@ static void Svy_ShowOneSurvey (long SvyCod,struct SurveyQuestion *SvyQst,
/* Start date/time */
UniqueId++;
if (asprintf (&Id,"svy_date_start_%u",UniqueId) < 0)
Lay_NotEnoughMemoryExit ();
if (ShowOnlyThisSvyComplete)
HTM_TD_Begin ("id=\"svy_date_start_%u\" class=\"%s LT\"",
UniqueId,
HTM_TD_Begin ("id=\"%s\" class=\"%s LT\"",
Id,
Svy.Status.Visible ? (Svy.Status.Open ? "DATE_GREEN" :
"DATE_RED") :
(Svy.Status.Open ? "DATE_GREEN_LIGHT" :
"DATE_RED_LIGHT"));
else
HTM_TD_Begin ("id=\"svy_date_start_%u\" class=\"%s LT COLOR%u\"",
UniqueId,
HTM_TD_Begin ("id=\"%s\" class=\"%s LT COLOR%u\"",
Id,
Svy.Status.Visible ? (Svy.Status.Open ? "DATE_GREEN" :
"DATE_RED") :
(Svy.Status.Open ? "DATE_GREEN_LIGHT" :
"DATE_RED_LIGHT"),
Gbl.RowEvenOdd);
Dat_WriteLocalDateHMSFromUTC ("'svy_date_start_%u',%ld,"
"%u,'<br />','%s',true,true,0x7",
UniqueId,Svy.TimeUTC[Svy_START_TIME],
Dat_WriteLocalDateHMSFromUTC ("'%s',%ld,%u,'<br />','%s',true,true,0x7",
Id,Svy.TimeUTC[Svy_START_TIME],
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
HTM_TD_End ();
free ((void *) Id);
/* End date/time */
if (asprintf (&Id,"svy_date_end_%u",UniqueId) < 0)
Lay_NotEnoughMemoryExit ();
if (ShowOnlyThisSvyComplete)
HTM_TD_Begin ("id=\"svy_date_end_%u\" class=\"%s LT\"",
UniqueId,
HTM_TD_Begin ("id=\"%s\" class=\"%s LT\"",
Id,
Svy.Status.Visible ? (Svy.Status.Open ? "DATE_GREEN" :
"DATE_RED") :
(Svy.Status.Open ? "DATE_GREEN_LIGHT" :
"DATE_RED_LIGHT"));
else
HTM_TD_Begin ("id=\"svy_date_end_%u\" class=\"%s LT COLOR%u\"",
UniqueId,
HTM_TD_Begin ("id=\"%s\" class=\"%s LT COLOR%u\"",
Id,
Svy.Status.Visible ? (Svy.Status.Open ? "DATE_GREEN" :
"DATE_RED") :
(Svy.Status.Open ? "DATE_GREEN_LIGHT" :
"DATE_RED_LIGHT"),
Gbl.RowEvenOdd);
Dat_WriteLocalDateHMSFromUTC ("'svy_date_end_%u',%ld,"
"%u,'<br />','%s',false,true,0x7",
UniqueId,Svy.TimeUTC[Svy_END_TIME],
Dat_WriteLocalDateHMSFromUTC ("'%s',%ld,%u,'<br />','%s',false,true,0x7",
Id,Svy.TimeUTC[Svy_END_TIME],
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
HTM_TD_End ();
free ((void *) Id);
/* Survey title */
if (ShowOnlyThisSvyComplete)

View File

@ -25,12 +25,13 @@
/*********************************** Headers *********************************/
/*****************************************************************************/
#define _GNU_SOURCE // For asprintf
#include <limits.h> // For UINT_MAX
#include <linux/limits.h> // For PATH_MAX
#include <linux/stddef.h> // For NULL
#include <mysql/mysql.h> // To access MySQL databases
#include <stdbool.h> // For boolean type
#include <stdio.h> // For fprintf, etc.
#include <stdio.h> // For fprintf, asprintf, etc.
#include <stdlib.h> // For exit, system, malloc, free, etc
#include <string.h> // For string functions
#include <sys/stat.h> // For mkdir
@ -2806,6 +2807,7 @@ static void Tst_ListOneOrMoreQuestionsForEdition (unsigned long NumRows,
unsigned long NumRow;
MYSQL_ROW row;
unsigned UniqueId;
char *Id;
time_t TimeUTC;
unsigned long NumHitsThisQst;
unsigned long NumHitsNotBlankThisQst;
@ -2929,13 +2931,15 @@ static void Tst_ListOneOrMoreQuestionsForEdition (unsigned long NumRows,
/* Write the date (row[1] has the UTC date-time) */
TimeUTC = Dat_GetUNIXTimeFromStr (row[1]);
HTM_TD_Begin ("id=\"tst_date_%u\" class=\"DAT_SMALL CT COLOR%u\"",
UniqueId,Gbl.RowEvenOdd);
Dat_WriteLocalDateHMSFromUTC ("'tst_date_%u',%ld,"
"%u,'<br />','%s',true,false,0x7",
UniqueId,(long) TimeUTC,
if (asprintf (&Id,"tst_date_%u",UniqueId) < 0)
Lay_NotEnoughMemoryExit ();
HTM_TD_Begin ("id=\"%s\" class=\"DAT_SMALL CT COLOR%u\"",
Id,Gbl.RowEvenOdd);
Dat_WriteLocalDateHMSFromUTC ("'%s',%ld,%u,'<br />','%s',true,false,0x7",
Id,(long) TimeUTC,
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
HTM_TD_End ();
free ((void *) Id);
/* Write the question tags */
HTM_TD_Begin ("class=\"LT COLOR%u\"",Gbl.RowEvenOdd);
@ -3063,6 +3067,7 @@ static void Tst_ListOneOrMoreQuestionsForSelection (unsigned long NumRows,
unsigned long NumRow;
MYSQL_ROW row;
unsigned UniqueId;
char *Id;
time_t TimeUTC;
/***** Begin box *****/
@ -3138,13 +3143,15 @@ static void Tst_ListOneOrMoreQuestionsForSelection (unsigned long NumRows,
/* Write the date (row[1] has the UTC date-time) */
TimeUTC = Dat_GetUNIXTimeFromStr (row[1]);
HTM_TD_Begin ("id=\"tst_date_%u\" class=\"DAT_SMALL CT COLOR%u\">",
UniqueId,Gbl.RowEvenOdd);
Dat_WriteLocalDateHMSFromUTC ("'tst_date_%u',%ld,"
"%u,'<br />','%s',true,false,0x7",
UniqueId,(long) TimeUTC,
if (asprintf (&Id,"tst_date_%u",UniqueId) < 0)
Lay_NotEnoughMemoryExit ();
HTM_TD_Begin ("id=\"%s\" class=\"DAT_SMALL CT COLOR%u\">",
Id,Gbl.RowEvenOdd);
Dat_WriteLocalDateHMSFromUTC ("'%s',%ld,%u,'<br />','%s',true,false,0x7",
Id,(long) TimeUTC,
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
HTM_TD_End ();
free ((void *) Id);
/* Write the question tags */
HTM_TD_Begin ("class=\"LT COLOR%u\"",Gbl.RowEvenOdd);
@ -7685,6 +7692,7 @@ static void Tst_ShowTstResults (struct UsrData *UsrDat)
unsigned NumExams;
unsigned NumTest;
static unsigned UniqueId = 0;
char *Id;
long TstCod;
unsigned NumQstsInThisTest;
unsigned NumQstsNotBlankInThisTest;
@ -7772,13 +7780,15 @@ static void Tst_ShowTstResults (struct UsrData *UsrDat)
/* Write date and time (row[2] holds UTC date-time) */
TimeUTC = Dat_GetUNIXTimeFromStr (row[2]);
UniqueId++;
HTM_TD_Begin ("id=\"tst_date_%u\" class=\"%s RT COLOR%u\"",
UniqueId,ClassDat,Gbl.RowEvenOdd);
Dat_WriteLocalDateHMSFromUTC ("'tst_date_%u',%ld,"
"%u,',&nbsp;','%s',true,false,0x7",
UniqueId,(long) TimeUTC,
if (asprintf (&Id,"tst_date_%u",UniqueId) < 0)
Lay_NotEnoughMemoryExit ();
HTM_TD_Begin ("id=\"%s\" class=\"%s RT COLOR%u\"",
Id,ClassDat,Gbl.RowEvenOdd);
Dat_WriteLocalDateHMSFromUTC ("'%s',%ld,%u,',&nbsp;','%s',true,false,0x7",
Id,(long) TimeUTC,
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
HTM_TD_End ();
free ((void *) Id);
/* Get number of questions (row[3]) */
if (sscanf (row[3],"%u",&NumQstsInThisTest) != 1)