Version 15.16.2

This commit is contained in:
Antonio Cañas Vargas 2015-10-22 10:55:59 +02:00
parent cd46d90d04
commit b0be0d092a
7 changed files with 98 additions and 82 deletions

View File

@ -52,7 +52,7 @@ function writeLocalDateTimeFromUTC(id,secsSince1970UTC) {
document.getElementById(id).innerHTML = d.toLocaleDateString() + " " + d.getHours() + ":" + StrMinutes;
}
// Write a date-time in client local time
// Set local date-time form fields from UTC time
function setLocalDateTimeFormFromUTC(id,secsSince1970UTC) {
var d = new Date;
var Day;
@ -62,18 +62,34 @@ function setLocalDateTimeFormFromUTC(id,secsSince1970UTC) {
var Minute;
d.setTime(secsSince1970UTC * 1000);
Day = d.getDate();
Month = d.getMonth() + 1;
Year = d.getFullYear();
Hour = d.getHours();
Year = d.getFullYear();
Month = d.getMonth() + 1;
Day = d.getDate();
Hour = d.getHours();
Minute = d.getMinutes();
document.getElementById(id+'_day_' +Day ).selected = true;
document.getElementById(id+'_month_' +Month ).selected = true;
document.getElementById(id+'_year_' +Year ).selected = true;
document.getElementById(id+'_month_' +Month ).selected = true;
document.getElementById(id+'_day_' +Day ).selected = true;
document.getElementById(id+'_hour_' +Hour ).selected = true;
document.getElementById(id+'_minute_'+Minute).selected = true;
}
// Set UTC time from local date-time form fields
function setUTCFromLocalDateTimeForm(id) {
var d = new Date;
// Important: set year first in order to work properly with leap years
d.setFullYear(document.getElementById(id+'Year' ).value);
d.setMonth (document.getElementById(id+'Month' ).value - 1);
d.setDate (document.getElementById(id+'Day' ).value);
d.setHours (document.getElementById(id+'Hour' ).value);
d.setMinutes (document.getElementById(id+'Minute').value);
d.setSeconds(0);
d.setMilliseconds(0);
document.getElementById(id+'TimeUTC').value = d.getTime() / 1000;
}
// Write clock in client local time updated every minute
function writeLocalClock() {
var d = new Date;

View File

@ -252,7 +252,7 @@ static void Asg_ShowOneAssignment (long AsgCod)
(Asg.Open ? "DATE_GREEN" :
"DATE_RED"),
Gbl.RowEvenOdd,
UniqueId,Asg.DateTimes[Asg_START_TIME]);
UniqueId,Asg.TimeUTC[Asg_START_TIME]);
/* End date/time */
UniqueId++;
@ -267,7 +267,7 @@ static void Asg_ShowOneAssignment (long AsgCod)
(Asg.Open ? "DATE_GREEN" :
"DATE_RED"),
Gbl.RowEvenOdd,
UniqueId,Asg.DateTimes[Asg_END_TIME]);
UniqueId,Asg.TimeUTC[Asg_END_TIME]);
/* Assignment title */
fprintf (Gbl.F.Out,"<td class=\"LEFT_TOP COLOR%u\">"
@ -684,8 +684,8 @@ static void Asg_GetDataOfAssignment (struct Assignment *Asg,const char *Query)
unsigned long NumRows;
/***** Clear data *****/
Asg->DateTimes[Asg_START_TIME] =
Asg->DateTimes[Asg_END_TIME ] = (time_t) 0;
Asg->TimeUTC[Asg_START_TIME] =
Asg->TimeUTC[Asg_END_TIME ] = (time_t) 0;
Asg->Title[0] = '\0';
/***** Get data of assignment from database *****/
@ -710,14 +710,14 @@ static void Asg_GetDataOfAssignment (struct Assignment *Asg,const char *Query)
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]);
Asg->TimeUTC[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]);
Asg->TimeUTC[Asg_END_TIME] = Dat_GetUNIXTimeFromStr (row[4]);
/* Get whether the assignment is open or closed (row(5)) */
Asg->Open = (row[5][0] == '1');
@ -1047,12 +1047,7 @@ void Asg_RequestCreatOrEditAsg (void)
struct Assignment Asg;
bool ItsANewAssignment;
Asg_StartOrEndTime_t StartOrEndTime;
const char *Id[Asg_NUM_DATES] = {"StartDateTime","EndDateTime"};
const char *NameSelectYear [Asg_NUM_DATES] = {"StartYear" ,"EndYear" };
const char *NameSelectMonth [Asg_NUM_DATES] = {"StartMonth" ,"EndMonth" };
const char *NameSelectDay [Asg_NUM_DATES] = {"StartDay" ,"EndDay" };
const char *NameSelectHour [Asg_NUM_DATES] = {"StartHour" ,"EndHour" };
const char *NameSelectMinute[Asg_NUM_DATES] = {"StartMinute","EndMinute"};
const char *Id[Asg_NUM_DATES] = {"Start","End"};
const char *Dates[Asg_NUM_DATES] = {Txt_Start_date,Txt_End_date};
char Txt[Cns_MAX_BYTES_TEXT+1];
@ -1077,7 +1072,7 @@ void Asg_RequestCreatOrEditAsg (void)
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.TimeUTC[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;
@ -1085,7 +1080,7 @@ void Asg_RequestCreatOrEditAsg (void)
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.TimeUTC[Asg_END_TIME ] = Gbl.TimeStartExecution + (2 * 60 * 60); // +2 hours
Asg.Open = true;
Asg.Title[0] = '\0';
Asg.SendWork = false;
@ -1156,13 +1151,8 @@ void Asg_RequestCreatOrEditAsg (void)
false,false);
*/
Dat_WriteFormClientLocalDateTime (Id[StartOrEndTime],
Asg.DateTimes[StartOrEndTime],
Asg.TimeUTC[StartOrEndTime],
Gbl.Now.Date.Year-1,Gbl.Now.Date.Year+1,
NameSelectDay [StartOrEndTime],
NameSelectMonth [StartOrEndTime],
NameSelectYear [StartOrEndTime],
NameSelectHour [StartOrEndTime],
NameSelectMinute[StartOrEndTime],
false,false);
/* Time */
@ -1314,7 +1304,7 @@ void Asg_RecFormAssignment (void)
&(NewAsg.DateTimes[Asg_START_TIME].Time.Minute));
NewAsg.DateTimes[Asg_START_TIME].Time.Second = 0;
*/
NewAsg.DateTimes[Asg_START_TIME] = Dat_GetDateTimeFromForm ("StartDateTime");
NewAsg.TimeUTC[Asg_START_TIME] = Dat_GetTimeUTCFromForm ("StartTimeUTC");
/***** Get end date *****/
/*
@ -1327,7 +1317,7 @@ void Asg_RecFormAssignment (void)
&(NewAsg.DateTimes[Asg_END_TIME].Time.Minute));
NewAsg.DateTimes[Asg_END_TIME].Time.Second = 59;
*/
NewAsg.DateTimes[Asg_END_TIME] = Dat_GetDateTimeFromForm ("EndDateTime");
NewAsg.TimeUTC[Asg_END_TIME] = Dat_GetTimeUTCFromForm ("EndTimeUTC");
/***** Get assignment title *****/
Par_GetParToText ("Title",NewAsg.Title,Asg_MAX_LENGTH_ASSIGNMENT_TITLE);
@ -1363,10 +1353,10 @@ void Asg_RecFormAssignment (void)
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
if (NewAsg.TimeUTC[Asg_START_TIME] == 0)
NewAsg.TimeUTC[Asg_START_TIME] = Gbl.TimeStartExecution;
if (NewAsg.TimeUTC[Asg_END_TIME] == 0)
NewAsg.TimeUTC[Asg_END_TIME] = NewAsg.TimeUTC[Asg_START_TIME] + 2*60*60; // +2 hours
/***** Check if title is correct *****/
if (NewAsg.Title[0]) // If there's an assignment title
@ -1503,8 +1493,8 @@ static void Asg_CreateAssignment (struct Assignment *Asg,const char *Txt)
"'%s','%s','%s')",
Gbl.CurrentCrs.Crs.CrsCod,
Gbl.Usrs.Me.UsrDat.UsrCod,
Asg->DateTimes[Asg_START_TIME],
Asg->DateTimes[Asg_END_TIME ],
Asg->TimeUTC[Asg_START_TIME],
Asg->TimeUTC[Asg_END_TIME ],
Asg->Title,
Asg->Folder,
Txt);
@ -1557,8 +1547,8 @@ static void Asg_UpdateAssignment (struct Assignment *Asg,const char *Txt)
"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->TimeUTC[Asg_START_TIME],
Asg->TimeUTC[Asg_END_TIME ],
Asg->Title,
Asg->Folder,
Txt,

View File

@ -58,7 +58,7 @@ struct Assignment
bool Hidden;
long UsrCod;
// struct DateTime DateTimes[Asg_NUM_DATES];
time_t DateTimes[Asg_NUM_DATES];
time_t TimeUTC[Asg_NUM_DATES];
bool Open;
char Title[Asg_MAX_LENGTH_ASSIGNMENT_TITLE+1];
Asg_SendWork_t SendWork;

View File

@ -107,11 +107,12 @@
/****************************** Public constants *****************************/
/*****************************************************************************/
#define Log_PLATFORM_VERSION "SWAD 15.16.1 (2015/10/22)"
#define Log_PLATFORM_VERSION "SWAD 15.16.2 (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.2: Oct 22, 2015 Assignment date-times are displayed in client local date-time. Not finished. (186479 lines)
Version 15.16.1: Oct 22, 2015 Assignment date-times are displayed in client local date-time. Not finished. (186468 lines)
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)

View File

@ -272,13 +272,8 @@ void Dat_WriteFormIniEndDates (void)
/*****************************************************************************/
void Dat_WriteFormClientLocalDateTime (const char *Id,
time_t DateTime,
time_t TimeUTC,
unsigned FirstYear,unsigned LastYear,
const char *NameSelectDay,
const char *NameSelectMonth,
const char *NameSelectYear,
const char *NameSelectHour,
const char *NameSelectMinute,
bool SubmitFormOnChange,bool Disabled)
{
extern const char *Txt_MONTHS_SMALL[12];
@ -292,11 +287,14 @@ void Dat_WriteFormClientLocalDateTime (const char *Id,
fprintf (Gbl.F.Out,"<table>"
"<tr>"
"<td class=\"CENTER_MIDDLE\">"
"<select id=\"%s\" name=\"%s\"",
NameSelectDay,NameSelectDay);
"<select id=\"%sDay\" name=\"%sDay\"",
Id,Id);
fprintf (Gbl.F.Out," onchange=\"javascript:setUTCFromLocalDateTimeForm('%s');",
Id);
if (SubmitFormOnChange)
fprintf (Gbl.F.Out," onchange=\"javascript:document.getElementById('%s').submit();\"",
fprintf (Gbl.F.Out,"document.getElementById('%s').submit();",
Gbl.FormId);
fprintf (Gbl.F.Out,"\"");
if (Disabled)
fprintf (Gbl.F.Out," disabled=\"disabled\"");
fprintf (Gbl.F.Out,"><option value=\"0\">-</option>");
@ -310,11 +308,13 @@ void Dat_WriteFormClientLocalDateTime (const char *Id,
fprintf (Gbl.F.Out,"</select>"
"</td>"
"<td class=\"CENTER_MIDDLE\">"
"<select id=\"%s\" name=\"%s\""
" onchange=\"adjustDateForm(this.form.%s,this.form.%s,this.form.%s)",
NameSelectMonth,NameSelectMonth,NameSelectDay,NameSelectMonth,NameSelectYear);
"<select id=\"%sMonth\" name=\"%sMonth\""
" onchange=\"javascript:adjustDateForm(this.form.%sDay,this.form.%sMonth,this.form.%sYear);",
Id,Id,Id,Id,Id);
fprintf (Gbl.F.Out,"setUTCFromLocalDateTimeForm('%s');",
Id);
if (SubmitFormOnChange)
fprintf (Gbl.F.Out,";javascript:document.getElementById('%s').submit();",
fprintf (Gbl.F.Out,"document.getElementById('%s').submit();",
Gbl.FormId);
fprintf (Gbl.F.Out,"\"");
if (Disabled)
@ -330,10 +330,13 @@ void Dat_WriteFormClientLocalDateTime (const char *Id,
fprintf (Gbl.F.Out,"</select>"
"</td>"
"<td class=\"CENTER_MIDDLE\">"
"<select id=\"%s\" name=\"%s\" onchange=\"adjustDateForm(this.form.%s,this.form.%s,this.form.%s)",
NameSelectYear,NameSelectYear,NameSelectDay,NameSelectMonth,NameSelectYear);
"<select id=\"%sYear\" name=\"%sYear\""
" onchange=\"javascript:adjustDateForm(this.form.%sDay,this.form.%sMonth,this.form.%sYear);",
Id,Id,Id,Id,Id);
fprintf (Gbl.F.Out,"setUTCFromLocalDateTimeForm('%s');",
Id);
if (SubmitFormOnChange)
fprintf (Gbl.F.Out,";javascript:document.getElementById('%s').submit();",
fprintf (Gbl.F.Out,"document.getElementById('%s').submit();",
Gbl.FormId);
fprintf (Gbl.F.Out,"\"");
if (Disabled)
@ -349,11 +352,14 @@ void Dat_WriteFormClientLocalDateTime (const char *Id,
/***** Hour *****/
fprintf (Gbl.F.Out,"<td class=\"LEFT_MIDDLE\">"
"<select name=\"%s\"",
NameSelectHour);
"<select id=\"%sHour\" name=\"%sHour\"",
Id,Id);
fprintf (Gbl.F.Out," onchange=\"javascript:setUTCFromLocalDateTimeForm('%s');",
Id);
if (SubmitFormOnChange)
fprintf (Gbl.F.Out," onchange=\"javascript:document.getElementById('%s').submit();\"",
fprintf (Gbl.F.Out,"document.getElementById('%s').submit();",
Gbl.FormId);
fprintf (Gbl.F.Out,"\"");
if (Disabled)
fprintf (Gbl.F.Out," disabled=\"disabled\"");
fprintf (Gbl.F.Out,">");
@ -367,11 +373,16 @@ void Dat_WriteFormClientLocalDateTime (const char *Id,
fprintf (Gbl.F.Out,"</select>"
"</td>"
"<td class=\"LEFT_MIDDLE\">"
"<select name=\"%s\"",
NameSelectMinute);
"<select id=\"%sMinute\" name=\"%sMinute\"",
Id,Id);
fprintf (Gbl.F.Out," onchange=\"javascript:setUTCFromLocalDateTimeForm('%s');",
Id);
if (SubmitFormOnChange)
fprintf (Gbl.F.Out," onchange=\"javascript:document.getElementById('%s').submit();\"",
fprintf (Gbl.F.Out,"document.getElementById('%s').submit();",
Gbl.FormId);
fprintf (Gbl.F.Out,"\"");
if (Disabled)
fprintf (Gbl.F.Out," disabled=\"disabled\"");
fprintf (Gbl.F.Out,">");
@ -385,22 +396,25 @@ void Dat_WriteFormClientLocalDateTime (const char *Id,
"</tr>"
"</table>");
fprintf (Gbl.F.Out,"<input type=\"hidden\" id=\"%sTimeUTC\" name=\"%sTimeUTC\" value=\"%ld\" />",
Id,Id,(long) TimeUTC);
fprintf (Gbl.F.Out,"<script type=\"text/javascript\">"
"setLocalDateTimeFormFromUTC('%s',%ld);"
"</script>",
Id,(long) DateTime);
Id,(long) TimeUTC);
}
/*****************************************************************************/
/***************** Get an hour-minute time from a form ***********************/
/*****************************************************************************/
time_t Dat_GetDateTimeFromForm (const char *NameParam)
time_t Dat_GetTimeUTCFromForm (const char *ParamName)
{
char LongStr[1+10+1];
/**** Get time ****/
Par_GetParToText (NameParam,LongStr,1+10);
Par_GetParToText (ParamName,LongStr,1+10);
return Dat_GetUNIXTimeFromStr (LongStr);
}
@ -572,23 +586,23 @@ void Dat_WriteFormHourMinute (const char *NameSelectHour,const char *NameSelectM
/*************************** Get a date from a form **************************/
/*****************************************************************************/
void Dat_GetDateFromForm (const char *NameParamDay,const char *NameParamMonth,const char *NameParamYear,
void Dat_GetDateFromForm (const char *ParamNameDay,const char *ParamNameMonth,const char *ParamNameYear,
unsigned *Day,unsigned *Month,unsigned *Year)
{
char UnsignedStr[10+1];
/**** Get day ****/
Par_GetParToText (NameParamDay,UnsignedStr,10);
Par_GetParToText (ParamNameDay,UnsignedStr,10);
if (sscanf (UnsignedStr,"%u",Day) != 1)
*Day = 0;
/**** Get month ****/
Par_GetParToText (NameParamMonth,UnsignedStr,10);
Par_GetParToText (ParamNameMonth,UnsignedStr,10);
if (sscanf (UnsignedStr,"%u",Month) != 1)
*Month = 0;
/**** Get year ****/
Par_GetParToText (NameParamYear,UnsignedStr,10);
Par_GetParToText (ParamNameYear,UnsignedStr,10);
if (sscanf (UnsignedStr,"%u",Year) != 1)
*Year = 0;
}
@ -597,18 +611,18 @@ void Dat_GetDateFromForm (const char *NameParamDay,const char *NameParamMonth,co
/***************** Get an hour-minute time from a form ***********************/
/*****************************************************************************/
void Dat_GetHourMinuteFromForm (const char *NameParamHour,const char *NameParamMinute,
void Dat_GetHourMinuteFromForm (const char *ParamNameHour,const char *ParamNameMinute,
unsigned *Hour,unsigned *Minute)
{
char UnsignedStr[10+1];
/**** Get hour ****/
Par_GetParToText (NameParamHour,UnsignedStr,10);
Par_GetParToText (ParamNameHour,UnsignedStr,10);
if (sscanf (UnsignedStr,"%u",Hour) != 1)
*Hour = 0;
/**** Get minute ****/
Par_GetParToText (NameParamMinute,UnsignedStr,10);
Par_GetParToText (ParamNameMinute,UnsignedStr,10);
if (sscanf (UnsignedStr,"%u",Minute) != 1)
*Minute = 0;
}

View File

@ -80,15 +80,10 @@ void Dat_ConvDateToDateStr (struct Date *Date,char *DateStr);
void Dat_WriteFormIniEndDates (void);
void Dat_WriteFormClientLocalDateTime (const char *Id,
time_t DateTime,
time_t TimeUTC,
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);
time_t Dat_GetTimeUTCFromForm (const char *ParamName);
void Dat_WriteFormDate (unsigned FirstYear,unsigned LastYear,
const char *NameSelectDay,
@ -99,9 +94,9 @@ void Dat_WriteFormDate (unsigned FirstYear,unsigned LastYear,
void Dat_WriteFormHourMinute (const char *NameSelectHour,const char *NameSelectMinute,
struct Time *TimeSelected,
bool SubmitFormOnChange,bool Disabled);
void Dat_GetDateFromForm (const char *NameParamDay,const char *NameParamMonth,const char *NameParamYear,
void Dat_GetDateFromForm (const char *ParamNameDay,const char *ParamNameMonth,const char *ParamNameYear,
unsigned *Day,unsigned *Month,unsigned *Year);
void Dat_GetHourMinuteFromForm (const char *NameParamHour,const char *NameParamMinute,
void Dat_GetHourMinuteFromForm (const char *ParamNameHour,const char *ParamNameMinute,
unsigned *Hour,unsigned *Minute);
void Dat_GetIniEndDatesFromForm (void);

View File

@ -5786,7 +5786,7 @@ static void Brw_WriteDatesAssignment (void)
"writeLocalDateTimeFromUTC('asg_start_date%u',%ld);"
"</script>",
UniqueId,
(long) Gbl.FileBrowser.Asg.DateTimes[Asg_START_TIME]);
(long) Gbl.FileBrowser.Asg.TimeUTC[Asg_START_TIME]);
fprintf (Gbl.F.Out,"</td>");
/***** Arrow *****/
@ -5808,7 +5808,7 @@ static void Brw_WriteDatesAssignment (void)
"writeLocalDateTimeFromUTC('asg_end_date%u',%ld);"
"</script>",
UniqueId,
(long) Gbl.FileBrowser.Asg.DateTimes[Asg_END_TIME]);
(long) Gbl.FileBrowser.Asg.TimeUTC[Asg_END_TIME]);
fprintf (Gbl.F.Out,"</td>"
"</tr>"
"</table>");