diff --git a/swad_assignment.c b/swad_assignment.c
index 5a5f5de9..da1da041 100644
--- a/swad_assignment.c
+++ b/swad_assignment.c
@@ -229,6 +229,7 @@ static void Asg_ShowOneAssignment (long AsgCod)
extern const char *Txt_ASSIGNMENT_TYPES[Asg_NUM_TYPES_SEND_WORK];
extern const char *Txt_Yes;
extern const char *Txt_No;
+ static unsigned UniqueId = 0;
struct Assignment Asg;
char Txt[Cns_MAX_BYTES_TEXT+1];
@@ -238,37 +239,35 @@ static void Asg_ShowOneAssignment (long AsgCod)
/***** Write first row of data of this assignment *****/
/* Start date/time */
+ UniqueId++;
fprintf (Gbl.F.Out,"
"
- ""
- "%02u/%02u/%02u "
- "%02u:%02u h"
+ " | "
+ ""
" | ",
+ UniqueId,
Asg.Hidden ? (Asg.Open ? "DATE_GREEN_LIGHT" :
"DATE_RED_LIGHT") :
(Asg.Open ? "DATE_GREEN" :
"DATE_RED"),
Gbl.RowEvenOdd,
- Asg.DateTimes[Asg_START_TIME].Date.Day,
- Asg.DateTimes[Asg_START_TIME].Date.Month,
- Asg.DateTimes[Asg_START_TIME].Date.Year % 100,
- Asg.DateTimes[Asg_START_TIME].Time.Hour,
- Asg.DateTimes[Asg_START_TIME].Time.Minute);
+ UniqueId,Asg.DateTimes[Asg_START_TIME]);
/* End date/time */
- fprintf (Gbl.F.Out,""
- "%02u/%02u/%02u "
- "%02u:%02u h"
+ UniqueId++;
+ fprintf (Gbl.F.Out," | "
+ ""
" | ",
+ UniqueId,
Asg.Hidden ? (Asg.Open ? "DATE_GREEN_LIGHT" :
"DATE_RED_LIGHT") :
(Asg.Open ? "DATE_GREEN" :
"DATE_RED"),
Gbl.RowEvenOdd,
- Asg.DateTimes[Asg_END_TIME].Date.Day,
- Asg.DateTimes[Asg_END_TIME].Date.Month,
- Asg.DateTimes[Asg_END_TIME].Date.Year % 100,
- Asg.DateTimes[Asg_END_TIME].Time.Hour,
- Asg.DateTimes[Asg_END_TIME].Time.Minute);
+ UniqueId,Asg.DateTimes[Asg_END_TIME]);
/* Assignment title */
fprintf (Gbl.F.Out,""
@@ -619,6 +618,7 @@ void Asg_GetDataOfAssignmentByCod (struct Assignment *Asg)
char Query[1024];
/***** Build query *****/
+ /*
sprintf (Query,"SELECT AsgCod,Hidden,UsrCod,"
"DATE_FORMAT(StartTime,'%%Y%%m%%d%%H%%i%%S'),"
"DATE_FORMAT(EndTime,'%%Y%%m%%d%%H%%i%%S'),"
@@ -627,6 +627,15 @@ void Asg_GetDataOfAssignmentByCod (struct Assignment *Asg)
" FROM assignments"
" WHERE AsgCod='%ld' AND CrsCod='%ld'",
Asg->AsgCod,Gbl.CurrentCrs.Crs.CrsCod);
+ */
+ sprintf (Query,"SELECT AsgCod,Hidden,UsrCod,"
+ "UNIX_TIMESTAMP(StartTime),"
+ "UNIX_TIMESTAMP(EndTime),"
+ "NOW() BETWEEN StartTime AND EndTime,"
+ "Title,Folder"
+ " FROM assignments"
+ " WHERE AsgCod='%ld' AND CrsCod='%ld'",
+ Asg->AsgCod,Gbl.CurrentCrs.Crs.CrsCod);
/***** Get data of assignment *****/
Asg_GetDataOfAssignment (Asg,Query);
@@ -641,6 +650,7 @@ void Asg_GetDataOfAssignmentByFolder (struct Assignment *Asg)
char Query[1024];
/***** Query database *****/
+ /*
sprintf (Query,"SELECT AsgCod,Hidden,UsrCod,"
"DATE_FORMAT(StartTime,'%%Y%%m%%d%%H%%i%%S'),"
"DATE_FORMAT(EndTime,'%%Y%%m%%d%%H%%i%%S'),"
@@ -649,6 +659,15 @@ void Asg_GetDataOfAssignmentByFolder (struct Assignment *Asg)
" FROM assignments"
" WHERE CrsCod='%ld' AND Folder='%s'",
Gbl.CurrentCrs.Crs.CrsCod,Asg->Folder);
+ */
+ sprintf (Query,"SELECT AsgCod,Hidden,UsrCod,"
+ "UNIX_TIMESTAMP(StartTime),"
+ "UNIX_TIMESTAMP(EndTime),"
+ "NOW() BETWEEN StartTime AND EndTime,"
+ "Title,Folder"
+ " FROM assignments"
+ " WHERE CrsCod='%ld' AND Folder='%s'",
+ Gbl.CurrentCrs.Crs.CrsCod,Asg->Folder);
/***** Get data of assignment *****/
Asg_GetDataOfAssignment (Asg,Query);
@@ -665,9 +684,8 @@ static void Asg_GetDataOfAssignment (struct Assignment *Asg,const char *Query)
unsigned long NumRows;
/***** Clear data *****/
- Asg->DateTimes[Asg_START_TIME].Date.Day =
- Asg->DateTimes[Asg_START_TIME].Date.Month =
- Asg->DateTimes[Asg_START_TIME].Date.Year = 0;
+ Asg->DateTimes[Asg_START_TIME] =
+ Asg->DateTimes[Asg_END_TIME ] = (time_t) 0;
Asg->Title[0] = '\0';
/***** Get data of assignment from database *****/
@@ -688,12 +706,18 @@ static void Asg_GetDataOfAssignment (struct Assignment *Asg,const char *Query)
Asg->UsrCod = Str_ConvertStrCodToLongCod (row[2]);
/* Get start date (row[3] holds the start date in YYYYMMDDHHMMSS format) */
+ /*
if (!(Dat_GetDateTimeFromYYYYMMDDHHMMSS (&(Asg->DateTimes[Asg_START_TIME]),row[3])))
Lay_ShowErrorAndExit ("Error when reading start date of assignment.");
+ */
+ Asg->DateTimes[Asg_START_TIME] = Dat_GetUNIXTimeFromStr (row[3]);
/* Get end date (row[4] holds the end date in YYYYMMDDHHMMSS format) */
+ /*
if (!(Dat_GetDateTimeFromYYYYMMDDHHMMSS (&(Asg->DateTimes[Asg_END_TIME]),row[4])))
Lay_ShowErrorAndExit ("Error when reading end date of assignment.");
+ */
+ Asg->DateTimes[Asg_END_TIME] = Dat_GetUNIXTimeFromStr (row[4]);
/* Get whether the assignment is open or closed (row(5)) */
Asg->Open = (row[5][0] == '1');
@@ -752,7 +776,8 @@ static void Asg_GetAssignmentTxtFromDB (long AsgCod,char *Txt)
unsigned long NumRows;
/***** Get text of assignment from database *****/
- sprintf (Query,"SELECT Txt FROM assignments WHERE AsgCod='%ld' AND CrsCod='%ld'",
+ sprintf (Query,"SELECT Txt FROM assignments"
+ " WHERE AsgCod='%ld' AND CrsCod='%ld'",
AsgCod,Gbl.CurrentCrs.Crs.CrsCod);
NumRows = DB_QuerySELECT (Query,&mysql_res,"can not get assignment text");
@@ -776,27 +801,22 @@ static void Asg_GetAssignmentTxtFromDB (long AsgCod,char *Txt)
/*****************************************************************************/
/***************** Get summary and content of an assignment *****************/
/*****************************************************************************/
-// This function may be called inside a web service, so don't report error
+// This function may be called inside a web service
void Asg_GetNotifAssignment (char *SummaryStr,char **ContentStr,
long AsgCod,unsigned MaxChars,bool GetContent)
{
- extern const char *Txt_Start_date;
- extern const char *Txt_End_date;
+ // extern const char *Txt_Start_date;
+ // extern const char *Txt_End_date;
char Query[512];
MYSQL_RES *mysql_res;
MYSQL_ROW row;
- struct DateTime DateTimes[Asg_NUM_DATES];
+ // struct DateTime DateTimes[Asg_NUM_DATES];
SummaryStr[0] = '\0'; // Return nothing on error
/***** Build query *****/
- sprintf (Query,"SELECT Title,"
- "DATE_FORMAT(StartTime,'%%Y%%m%%d%%H%%i%%S'),"
- "DATE_FORMAT(EndTime,'%%Y%%m%%d%%H%%i%%S'),"
- "Txt"
- " FROM assignments"
- " WHERE AsgCod='%ld'",
+ sprintf (Query,"SELECT Title,Txt FROM assignments WHERE AsgCod='%ld'",
AsgCod);
if (!mysql_query (&Gbl.mysql,Query))
if ((mysql_res = mysql_store_result (&Gbl.mysql)) != NULL)
@@ -817,30 +837,7 @@ void Asg_GetNotifAssignment (char *SummaryStr,char **ContentStr,
{
if ((*ContentStr = (char *) malloc (512+Cns_MAX_BYTES_TEXT)) == NULL)
Lay_ShowErrorAndExit ("Error allocating memory for notification content.");
- (*ContentStr)[0] = '\0'; // Return nothing on error
-
- /* Get start date (row[1] holds the start date in YYYYMMDDHHMMSS format) */
- if (!(Dat_GetDateTimeFromYYYYMMDDHHMMSS (&DateTimes[Asg_START_TIME],row[1])))
- Lay_ShowErrorAndExit ("Error when reading start date of assignment.");
-
- /* Get end date (row[2] holds the end date in YYYYMMDDHHMMSS format) */
- if (!(Dat_GetDateTimeFromYYYYMMDDHHMMSS (&DateTimes[Asg_END_TIME ],row[2])))
- Lay_ShowErrorAndExit ("Error when reading end date of assignment.");
-
- sprintf (*ContentStr,"%s: %02u/%02u/%04u %02u:%02u %s: %02u/%02u/%04u %02u:%02u %s",
- Txt_Start_date,
- DateTimes[Asg_START_TIME].Date.Day,
- DateTimes[Asg_START_TIME].Date.Month,
- DateTimes[Asg_START_TIME].Date.Year,
- DateTimes[Asg_START_TIME].Time.Hour,
- DateTimes[Asg_START_TIME].Time.Minute,
- Txt_End_date,
- DateTimes[Asg_END_TIME].Date.Day,
- DateTimes[Asg_END_TIME].Date.Month,
- DateTimes[Asg_END_TIME].Date.Year,
- DateTimes[Asg_END_TIME].Time.Hour,
- DateTimes[Asg_END_TIME].Time.Minute,
- row[3]);
+ strcpy (*ContentStr,row[1]);
}
}
mysql_free_result (mysql_res);
@@ -1071,18 +1068,23 @@ void Asg_RequestCreatOrEditAsg (void)
{
/* Initialize to empty assignment */
Asg.AsgCod = -1L;
+ /*
Asg.DateTimes[Asg_START_TIME].Date.Day = Gbl.Now.Date.Day;
Asg.DateTimes[Asg_START_TIME].Date.Month = Gbl.Now.Date.Month;
Asg.DateTimes[Asg_START_TIME].Date.Year = Gbl.Now.Date.Year;
Asg.DateTimes[Asg_START_TIME].Time.Hour = Gbl.Now.Time.Hour;
Asg.DateTimes[Asg_START_TIME].Time.Minute = Gbl.Now.Time.Minute;
Asg.DateTimes[Asg_START_TIME].Time.Second = Gbl.Now.Time.Second;
-
+ */
+ Asg.DateTimes[Asg_START_TIME] = Gbl.TimeStartExecution;
+ /*
Asg.DateTimes[Asg_END_TIME ].Date.Day = Gbl.Now.Date.Day;
Asg.DateTimes[Asg_END_TIME ].Date.Month = Gbl.Now.Date.Month;
Asg.DateTimes[Asg_END_TIME ].Date.Year = Gbl.Now.Date.Year;
Asg.DateTimes[Asg_END_TIME ].Time.Hour = 23;
Asg.DateTimes[Asg_END_TIME ].Time.Minute = 59;
+ */
+ Asg.DateTimes[Asg_END_TIME ] = Gbl.TimeStartExecution + (2 * 60 * 60); // +2 hours
Asg.Open = true;
Asg.Title[0] = '\0';
Asg.SendWork = false;
@@ -1144,21 +1146,29 @@ void Asg_RequestCreatOrEditAsg (void)
Dates[StartOrEndTime]);
/* Date */
+ /*
Dat_WriteFormDate (Gbl.Now.Date.Year-1,Gbl.Now.Date.Year+1,
NameSelectDay [StartOrEndTime],
NameSelectMonth[StartOrEndTime],
NameSelectYear [StartOrEndTime],
&(Asg.DateTimes[StartOrEndTime].Date),
false,false);
-
- fprintf (Gbl.F.Out," | "
- "");
+ */
+ Dat_WriteFormClientLocalDateTime (Gbl.Now.Date.Year-1,Gbl.Now.Date.Year+1,
+ NameSelectDay [StartOrEndTime],
+ NameSelectMonth [StartOrEndTime],
+ NameSelectYear [StartOrEndTime],
+ NameSelectHour [StartOrEndTime],
+ NameSelectMinute[StartOrEndTime],
+ false,false);
/* Time */
+ /*
Dat_WriteFormHourMinute (NameSelectHour [StartOrEndTime],
NameSelectMinute[StartOrEndTime],
&(Asg.DateTimes[StartOrEndTime].Time),
false,false);
+ */
fprintf (Gbl.F.Out," | "
"
"
@@ -1291,6 +1301,7 @@ void Asg_RecFormAssignment (void)
}
/***** Get start date *****/
+ /*
Dat_GetDateFromForm ("StartDay","StartMonth","StartYear",
&(NewAsg.DateTimes[Asg_START_TIME].Date.Day),
&(NewAsg.DateTimes[Asg_START_TIME].Date.Month),
@@ -1299,8 +1310,11 @@ void Asg_RecFormAssignment (void)
&(NewAsg.DateTimes[Asg_START_TIME].Time.Hour),
&(NewAsg.DateTimes[Asg_START_TIME].Time.Minute));
NewAsg.DateTimes[Asg_START_TIME].Time.Second = 0;
+ */
+ NewAsg.DateTimes[Asg_START_TIME] = Dat_GetDateTimeFromForm ("StartDateTime");
/***** Get end date *****/
+ /*
Dat_GetDateFromForm ("EndDay","EndMonth","EndYear",
&(NewAsg.DateTimes[Asg_END_TIME].Date.Day),
&(NewAsg.DateTimes[Asg_END_TIME].Date.Month),
@@ -1309,6 +1323,8 @@ void Asg_RecFormAssignment (void)
&(NewAsg.DateTimes[Asg_END_TIME].Time.Hour),
&(NewAsg.DateTimes[Asg_END_TIME].Time.Minute));
NewAsg.DateTimes[Asg_END_TIME].Time.Second = 59;
+ */
+ NewAsg.DateTimes[Asg_END_TIME] = Dat_GetDateTimeFromForm ("EndDateTime");
/***** Get assignment title *****/
Par_GetParToText ("Title",NewAsg.Title,Asg_MAX_LENGTH_ASSIGNMENT_TITLE);
@@ -1322,6 +1338,7 @@ void Asg_RecFormAssignment (void)
Par_GetParToHTML ("Txt",Txt,Cns_MAX_BYTES_TEXT); // Store in HTML format (not rigorous)
/***** Adjust dates *****/
+ /*
if (NewAsg.DateTimes[Asg_START_TIME].Date.Day == 0 ||
NewAsg.DateTimes[Asg_START_TIME].Date.Month == 0 ||
NewAsg.DateTimes[Asg_START_TIME].Date.Year == 0)
@@ -1342,6 +1359,11 @@ void Asg_RecFormAssignment (void)
NewAsg.DateTimes[Asg_END_TIME].Time.Hour = 23;
NewAsg.DateTimes[Asg_END_TIME].Time.Minute = 59;
}
+ */
+ if (NewAsg.DateTimes[Asg_START_TIME] == 0)
+ NewAsg.DateTimes[Asg_START_TIME] = Gbl.TimeStartExecution;
+ if (NewAsg.DateTimes[Asg_END_TIME] == 0)
+ NewAsg.DateTimes[Asg_END_TIME] = NewAsg.DateTimes[Asg_START_TIME] + 2*60*60; // +2 hours
/***** Check if title is correct *****/
if (NewAsg.Title[0]) // If there's an assignment title
@@ -1450,6 +1472,7 @@ static void Asg_CreateAssignment (struct Assignment *Asg,const char *Txt)
char Query[1024+Cns_MAX_BYTES_TEXT];
/***** Create a new assignment *****/
+ /*
sprintf (Query,"INSERT INTO assignments (CrsCod,UsrCod,StartTime,EndTime,Title,Folder,Txt)"
" VALUES ('%ld','%ld','%04u%02u%02u%02u%02u%02u','%04u%02u%02u%02u%02u%02u','%s','%s','%s')",
Gbl.CurrentCrs.Crs.CrsCod,
@@ -1469,6 +1492,19 @@ static void Asg_CreateAssignment (struct Assignment *Asg,const char *Txt)
Asg->Title,
Asg->Folder,
Txt);
+ */
+ sprintf (Query,"INSERT INTO assignments"
+ " (CrsCod,UsrCod,StartTime,EndTime,Title,Folder,Txt)"
+ " VALUES"
+ " ('%ld','%ld',FROM_UNIXTIME('%ld'),FROM_UNIXTIME('%ld'),"
+ "'%s','%s','%s')",
+ Gbl.CurrentCrs.Crs.CrsCod,
+ Gbl.Usrs.Me.UsrDat.UsrCod,
+ Asg->DateTimes[Asg_START_TIME],
+ Asg->DateTimes[Asg_END_TIME ],
+ Asg->Title,
+ Asg->Folder,
+ Txt);
Asg->AsgCod = DB_QueryINSERTandReturnCode (Query,"can not create new assignment");
/***** Create groups *****/
@@ -1491,7 +1527,9 @@ static void Asg_UpdateAssignment (struct Assignment *Asg,const char *Txt)
char Query[1024+Cns_MAX_BYTES_TEXT];
/***** Update the data of the assignment *****/
- sprintf (Query,"UPDATE assignments SET StartTime='%04u%02u%02u%02u%02u%02u',EndTime='%04u%02u%02u%02u%02u%02u',"
+ /*
+ sprintf (Query,"UPDATE assignments"
+ " SET StartTime='%04u%02u%02u%02u%02u%02u',EndTime='%04u%02u%02u%02u%02u%02u',"
"Title='%s',Folder='%s',Txt='%s'"
" WHERE AsgCod='%ld' AND CrsCod='%ld'",
Asg->DateTimes[Asg_START_TIME].Date.Year,
@@ -1510,6 +1548,18 @@ static void Asg_UpdateAssignment (struct Assignment *Asg,const char *Txt)
Asg->Folder,
Txt,
Asg->AsgCod,Gbl.CurrentCrs.Crs.CrsCod);
+ */
+ sprintf (Query,"UPDATE assignments SET "
+ "StartTime=FROM_UNIXTIME('%ld'),"
+ "EndTime=FROM_UNIXTIME('%ld'),"
+ "Title='%s',Folder='%s',Txt='%s'"
+ " WHERE AsgCod='%ld' AND CrsCod='%ld'",
+ Asg->DateTimes[Asg_START_TIME],
+ Asg->DateTimes[Asg_END_TIME ],
+ Asg->Title,
+ Asg->Folder,
+ Txt,
+ Asg->AsgCod,Gbl.CurrentCrs.Crs.CrsCod);
DB_QueryUPDATE (Query,"can not update assignment");
/***** Update groups *****/
diff --git a/swad_assignment.h b/swad_assignment.h
index 40aa07cd..987227b9 100644
--- a/swad_assignment.h
+++ b/swad_assignment.h
@@ -57,7 +57,8 @@ struct Assignment
long AsgCod;
bool Hidden;
long UsrCod;
- struct DateTime DateTimes[Asg_NUM_DATES];
+ // struct DateTime DateTimes[Asg_NUM_DATES];
+ time_t DateTimes[Asg_NUM_DATES];
bool Open;
char Title[Asg_MAX_LENGTH_ASSIGNMENT_TITLE+1];
Asg_SendWork_t SendWork;
diff --git a/swad_changelog.h b/swad_changelog.h
index d7781112..368e399a 100644
--- a/swad_changelog.h
+++ b/swad_changelog.h
@@ -107,11 +107,12 @@
/****************************** Public constants *****************************/
/*****************************************************************************/
-#define Log_PLATFORM_VERSION "SWAD 15.15.3 (2015/10/21)"
+#define Log_PLATFORM_VERSION "SWAD 15.16 (2015/10/22)"
// Number of lines (includes comments but not blank lines) has been got with the following command:
// nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*.h sql/swad*.sql | tail -1
/*
+ Version 15.16: Oct 22, 2015 Assignment date-times are displayed in client local date-time. Not finished. (186436 lines)
Version 15.15.3: Oct 21, 2015 File date-time is displayed in client local date-time. (186264 lines)
Version 15.15.2: Oct 21, 2015 Fixed bug in client local date-time. (186254 lines)
Version 15.15.1: Oct 21, 2015 Top-left date-time is now displayed in local time. (186249 lines)
diff --git a/swad_date.c b/swad_date.c
index 987bb79a..649a9adf 100644
--- a/swad_date.c
+++ b/swad_date.c
@@ -101,6 +101,20 @@ void Dat_GetAndConvertCurrentDateTime (void)
Dat_GetDateBefore (&Gbl.Now.Date,&Gbl.Yesterday);
}
+/*****************************************************************************/
+/************ Get UNIX time (seconds since 1970 UTC) from string *************/
+/*****************************************************************************/
+
+time_t Dat_GetUNIXTimeFromStr (const char *Str)
+ {
+ time_t Time;
+
+ if (sscanf (Str,"%ld",&Time) != 1)
+ Time = (time_t) 0;
+
+ return Time;
+ }
+
/*****************************************************************************/
/*********** Get a struct Date from a string in YYYYMMDD format **************/
/*****************************************************************************/
@@ -152,40 +166,13 @@ bool Dat_GetDateTimeFromYYYYMMDDHHMMSS (struct DateTime *DateTime,const char *YY
}
/*****************************************************************************/
-/***************************** Show date ant time ****************************/
-/*****************************************************************************/
-/*
-void Dat_ShowCurrentDateTime (void)
- {
- extern const char *The_ClassCurrentTime[The_NUM_THEMES];
- extern const char *Txt_MONTHS_SMALL_SHORT[12];
-
- fprintf (Gbl.F.Out,""
diff --git a/swad_date.h b/swad_date.h
index b5e7d36e..595d35d3 100644
--- a/swad_date.h
+++ b/swad_date.h
@@ -68,15 +68,26 @@ struct DateTime
void Dat_GetTimeStartExecution (void);
void Dat_GetAndConvertCurrentDateTime (void);
+time_t Dat_GetUNIXTimeFromStr (const char *Str);
bool Dat_GetDateFromYYYYMMDD (struct Date *Date,const char *YYYYMMDDString);
bool Dat_GetDateTimeFromYYYYMMDDHHMMSS (struct DateTime *DateTime,const char *YYYYMMDDHHMMSS);
-void Dat_ShowCurrentDateTime (void);
+void Dat_ShowClientLocalTime (void);
void Dat_GetLocalTimeFromClock (const time_t *clock);
void Dat_ConvDateToDateStr (struct Date *Date,char *DateStr);
void Dat_WriteFormIniEndDates (void);
+
+void Dat_WriteFormClientLocalDateTime (unsigned FirstYear,unsigned LastYear,
+ const char *NameSelectDay,
+ const char *NameSelectMonth,
+ const char *NameSelectYear,
+ const char *NameSelectHour,
+ const char *NameSelectMinute,
+ bool SubmitFormOnChange,bool Disabled);
+time_t Dat_GetDateTimeFromForm (const char *NameParam);
+
void Dat_WriteFormDate (unsigned FirstYear,unsigned LastYear,
const char *NameSelectDay,
const char *NameSelectMonth,
diff --git a/swad_file_browser.c b/swad_file_browser.c
index 46e753ae..0a5a22d2 100644
--- a/swad_file_browser.c
+++ b/swad_file_browser.c
@@ -5765,6 +5765,7 @@ void Brw_ParamListFiles (Brw_FileType_t FileType,const char *PathInTree,const ch
static void Brw_WriteDatesAssignment (void)
{
extern const char *Txt_unknown_assignment;
+ static unsigned UniqueId;
fprintf (Gbl.F.Out,"",
@@ -5772,20 +5773,21 @@ static void Brw_WriteDatesAssignment (void)
if (Gbl.FileBrowser.Asg.AsgCod > 0)
{
- fprintf (Gbl.F.Out,""
- "");
+ UniqueId++;
/***** Write start date *****/
- fprintf (Gbl.F.Out,""
- " %02u/%02u/%02u %02u:%02u"
- " | ",
+ fprintf (Gbl.F.Out,""
+ ""
+ "",
+ UniqueId,
Gbl.FileBrowser.Asg.Open ? "ASG_LST_DATE_GREEN" :
- "ASG_LST_DATE_RED",
- Gbl.FileBrowser.Asg.DateTimes[Asg_START_TIME].Date.Day,
- Gbl.FileBrowser.Asg.DateTimes[Asg_START_TIME].Date.Month,
- Gbl.FileBrowser.Asg.DateTimes[Asg_START_TIME].Date.Year % 100,
- Gbl.FileBrowser.Asg.DateTimes[Asg_START_TIME].Time.Hour,
- Gbl.FileBrowser.Asg.DateTimes[Asg_START_TIME].Time.Minute);
+ "ASG_LST_DATE_RED");
+ fprintf (Gbl.F.Out,"",
+ UniqueId,
+ (long) Gbl.FileBrowser.Asg.DateTimes[Asg_START_TIME]);
+ fprintf (Gbl.F.Out," | ");
/***** Arrow *****/
fprintf (Gbl.F.Out,""
@@ -5797,19 +5799,18 @@ static void Brw_WriteDatesAssignment (void)
Gbl.FileBrowser.Asg.Open ? "green" :
"red");
- /***** Write start date *****/
- fprintf (Gbl.F.Out," | "
- "%02u/%02u/%02u %02u:%02u"
- " | ",
+ /***** Write end date *****/
+ fprintf (Gbl.F.Out,"",
+ UniqueId,
Gbl.FileBrowser.Asg.Open ? "ASG_LST_DATE_GREEN" :
- "ASG_LST_DATE_RED",
- Gbl.FileBrowser.Asg.DateTimes[Asg_END_TIME].Date.Day,
- Gbl.FileBrowser.Asg.DateTimes[Asg_END_TIME].Date.Month,
- Gbl.FileBrowser.Asg.DateTimes[Asg_END_TIME].Date.Year % 100,
- Gbl.FileBrowser.Asg.DateTimes[Asg_END_TIME].Time.Hour,
- Gbl.FileBrowser.Asg.DateTimes[Asg_END_TIME].Time.Minute);
-
- fprintf (Gbl.F.Out," | "
+ "ASG_LST_DATE_RED");
+ fprintf (Gbl.F.Out,"",
+ UniqueId,
+ (long) Gbl.FileBrowser.Asg.DateTimes[Asg_END_TIME]);
+ fprintf (Gbl.F.Out,""
+ ""
" ");
}
else
diff --git a/swad_layout.c b/swad_layout.c
index 1bdf69c7..411ea291 100644
--- a/swad_layout.c
+++ b/swad_layout.c
@@ -705,7 +705,7 @@ static void Lay_WritePageTopHeading (void)
/* Clock with hour:minute (server hour is shown) */
fprintf (Gbl.F.Out,"");
- Dat_ShowCurrentDateTime ();
+ Dat_ShowClientLocalTime ();
fprintf (Gbl.F.Out," | "); // End of first column
/***** 2nd. row, 2nd. column: degree and course *****/
|