mirror of https://github.com/acanas/swad-core.git
Version 16.101
This commit is contained in:
parent
4de0ee76b1
commit
d42ab47768
|
@ -163,6 +163,7 @@ function setLocalDateTimeFormFromUTC (id,TimeUTC) {
|
||||||
var d;
|
var d;
|
||||||
var Year;
|
var Year;
|
||||||
var YearIsValid = false;
|
var YearIsValid = false;
|
||||||
|
var Min;
|
||||||
|
|
||||||
if (TimeUTC) {
|
if (TimeUTC) {
|
||||||
d = new Date();
|
d = new Date();
|
||||||
|
@ -174,11 +175,18 @@ function setLocalDateTimeFormFromUTC (id,TimeUTC) {
|
||||||
YearIsValid = true;
|
YearIsValid = true;
|
||||||
}
|
}
|
||||||
if (YearIsValid) {
|
if (YearIsValid) {
|
||||||
FormMon.options[d.getMonth() ].selected = true;
|
FormMon.options[d.getMonth() ].selected = true;
|
||||||
FormDay.options[d.getDate()-1 ].selected = true;
|
FormDay.options[d.getDate()-1].selected = true;
|
||||||
FormHou.options[d.getHours() ].selected = true;
|
FormHou.options[d.getHours() ].selected = true;
|
||||||
FormMin.options[d.getMinutes()].selected = true;
|
|
||||||
FormSec.options[d.getSeconds()].selected = true;
|
Min = d.getMinutes();
|
||||||
|
for (var i=FormMin.options.length-1; i>=0; i--)
|
||||||
|
if (FormMin.options[i].value <= Min) {
|
||||||
|
FormMin.options[i].selected = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (FormSec)
|
||||||
|
FormSec.options[d.getSeconds()].selected = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -391,8 +391,8 @@ static void Agd_ShowEventsToday (Agd_AgendaType_t AgendaType)
|
||||||
|
|
||||||
static void Agd_WriteHeaderListEvents (Agd_AgendaType_t AgendaType)
|
static void Agd_WriteHeaderListEvents (Agd_AgendaType_t AgendaType)
|
||||||
{
|
{
|
||||||
extern const char *Txt_ASG_ATT_SVY_OR_AGD_HELP_ORDER[2];
|
extern const char *Txt_START_END_TIME_HELP[2];
|
||||||
extern const char *Txt_ASG_ATT_SVY_OR_AGD_ORDER[2];
|
extern const char *Txt_START_END_TIME[Dat_NUM_START_END_TIME];
|
||||||
extern const char *Txt_Event;
|
extern const char *Txt_Event;
|
||||||
extern const char *Txt_Location;
|
extern const char *Txt_Location;
|
||||||
Agd_Order_t Order;
|
Agd_Order_t Order;
|
||||||
|
@ -422,10 +422,10 @@ static void Agd_WriteHeaderListEvents (Agd_AgendaType_t AgendaType)
|
||||||
}
|
}
|
||||||
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
|
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
|
||||||
Par_PutHiddenParamUnsigned ("Order",(unsigned) Order);
|
Par_PutHiddenParamUnsigned ("Order",(unsigned) Order);
|
||||||
Act_LinkFormSubmit (Txt_ASG_ATT_SVY_OR_AGD_HELP_ORDER[Order],"TIT_TBL",NULL);
|
Act_LinkFormSubmit (Txt_START_END_TIME_HELP[Order],"TIT_TBL",NULL);
|
||||||
if (Order == Gbl.Agenda.SelectedOrderType)
|
if (Order == Gbl.Agenda.SelectedOrderType)
|
||||||
fprintf (Gbl.F.Out,"<u>");
|
fprintf (Gbl.F.Out,"<u>");
|
||||||
fprintf (Gbl.F.Out,"%s",Txt_ASG_ATT_SVY_OR_AGD_ORDER[Order]);
|
fprintf (Gbl.F.Out,"%s",Txt_START_END_TIME[Order]);
|
||||||
if (Order == Gbl.Agenda.SelectedOrderType)
|
if (Order == Gbl.Agenda.SelectedOrderType)
|
||||||
fprintf (Gbl.F.Out,"</u>");
|
fprintf (Gbl.F.Out,"</u>");
|
||||||
fprintf (Gbl.F.Out,"</a>");
|
fprintf (Gbl.F.Out,"</a>");
|
||||||
|
|
|
@ -114,13 +114,13 @@ static void Asg_ShowAllAssignments (void)
|
||||||
{
|
{
|
||||||
extern const char *Hlp_ASSESSMENT_Assignments;
|
extern const char *Hlp_ASSESSMENT_Assignments;
|
||||||
extern const char *Txt_Assignments;
|
extern const char *Txt_Assignments;
|
||||||
extern const char *Txt_ASG_ATT_SVY_OR_AGD_HELP_ORDER[2];
|
extern const char *Txt_START_END_TIME_HELP[Dat_NUM_START_END_TIME];
|
||||||
extern const char *Txt_ASG_ATT_SVY_OR_AGD_ORDER[2];
|
extern const char *Txt_START_END_TIME[Dat_NUM_START_END_TIME];
|
||||||
extern const char *Txt_Assignment;
|
extern const char *Txt_Assignment;
|
||||||
extern const char *Txt_Upload_files_QUESTION;
|
extern const char *Txt_Upload_files_QUESTION;
|
||||||
extern const char *Txt_Folder;
|
extern const char *Txt_Folder;
|
||||||
extern const char *Txt_No_assignments;
|
extern const char *Txt_No_assignments;
|
||||||
tAsgsOrderType Order;
|
Dat_StartEndTime_t Order;
|
||||||
struct Pagination Pagination;
|
struct Pagination Pagination;
|
||||||
unsigned NumAsg;
|
unsigned NumAsg;
|
||||||
|
|
||||||
|
@ -150,8 +150,8 @@ static void Asg_ShowAllAssignments (void)
|
||||||
/***** Table head *****/
|
/***** Table head *****/
|
||||||
fprintf (Gbl.F.Out,"<table class=\"FRAME_TBL_MARGIN CELLS_PAD_2\">"
|
fprintf (Gbl.F.Out,"<table class=\"FRAME_TBL_MARGIN CELLS_PAD_2\">"
|
||||||
"<tr>");
|
"<tr>");
|
||||||
for (Order = Asg_ORDER_BY_START_DATE;
|
for (Order = Dat_START_TIME;
|
||||||
Order <= Asg_ORDER_BY_END_DATE;
|
Order <= Dat_END_TIME;
|
||||||
Order++)
|
Order++)
|
||||||
{
|
{
|
||||||
fprintf (Gbl.F.Out,"<th class=\"LEFT_MIDDLE\">");
|
fprintf (Gbl.F.Out,"<th class=\"LEFT_MIDDLE\">");
|
||||||
|
@ -159,10 +159,10 @@ static void Asg_ShowAllAssignments (void)
|
||||||
Grp_PutParamWhichGrps ();
|
Grp_PutParamWhichGrps ();
|
||||||
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
|
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
|
||||||
Par_PutHiddenParamUnsigned ("Order",(unsigned) Order);
|
Par_PutHiddenParamUnsigned ("Order",(unsigned) Order);
|
||||||
Act_LinkFormSubmit (Txt_ASG_ATT_SVY_OR_AGD_HELP_ORDER[Order],"TIT_TBL",NULL);
|
Act_LinkFormSubmit (Txt_START_END_TIME_HELP[Order],"TIT_TBL",NULL);
|
||||||
if (Order == Gbl.Asgs.SelectedOrderType)
|
if (Order == Gbl.Asgs.SelectedOrderType)
|
||||||
fprintf (Gbl.F.Out,"<u>");
|
fprintf (Gbl.F.Out,"<u>");
|
||||||
fprintf (Gbl.F.Out,"%s",Txt_ASG_ATT_SVY_OR_AGD_ORDER[Order]);
|
fprintf (Gbl.F.Out,"%s",Txt_START_END_TIME[Order]);
|
||||||
if (Order == Gbl.Asgs.SelectedOrderType)
|
if (Order == Gbl.Asgs.SelectedOrderType)
|
||||||
fprintf (Gbl.F.Out,"</u>");
|
fprintf (Gbl.F.Out,"</u>");
|
||||||
fprintf (Gbl.F.Out,"</a>");
|
fprintf (Gbl.F.Out,"</a>");
|
||||||
|
@ -326,7 +326,7 @@ static void Asg_ShowOneAssignment (long AsgCod)
|
||||||
(Asg.Open ? "DATE_GREEN" :
|
(Asg.Open ? "DATE_GREEN" :
|
||||||
"DATE_RED"),
|
"DATE_RED"),
|
||||||
Gbl.RowEvenOdd,
|
Gbl.RowEvenOdd,
|
||||||
UniqueId,Asg.TimeUTC[Asg_START_TIME],Txt_Today);
|
UniqueId,Asg.TimeUTC[Dat_START_TIME],Txt_Today);
|
||||||
|
|
||||||
/* End date/time */
|
/* End date/time */
|
||||||
UniqueId++;
|
UniqueId++;
|
||||||
|
@ -342,7 +342,7 @@ static void Asg_ShowOneAssignment (long AsgCod)
|
||||||
(Asg.Open ? "DATE_GREEN" :
|
(Asg.Open ? "DATE_GREEN" :
|
||||||
"DATE_RED"),
|
"DATE_RED"),
|
||||||
Gbl.RowEvenOdd,
|
Gbl.RowEvenOdd,
|
||||||
UniqueId,Asg.TimeUTC[Asg_END_TIME],Txt_Today);
|
UniqueId,Asg.TimeUTC[Dat_END_TIME],Txt_Today);
|
||||||
|
|
||||||
/* Assignment title */
|
/* Assignment title */
|
||||||
fprintf (Gbl.F.Out,"<td class=\"LEFT_TOP COLOR%u\">"
|
fprintf (Gbl.F.Out,"<td class=\"LEFT_TOP COLOR%u\">"
|
||||||
|
@ -520,7 +520,7 @@ static void Asg_GetParamAsgOrderType (void)
|
||||||
|
|
||||||
Par_GetParToText ("Order",UnsignedStr,10);
|
Par_GetParToText ("Order",UnsignedStr,10);
|
||||||
if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1)
|
if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1)
|
||||||
Gbl.Asgs.SelectedOrderType = (tAsgsOrderType) UnsignedNum;
|
Gbl.Asgs.SelectedOrderType = (Dat_StartEndTime_t) UnsignedNum;
|
||||||
else
|
else
|
||||||
Gbl.Asgs.SelectedOrderType = Asg_DEFAULT_ORDER_TYPE;
|
Gbl.Asgs.SelectedOrderType = Asg_DEFAULT_ORDER_TYPE;
|
||||||
}
|
}
|
||||||
|
@ -618,10 +618,10 @@ void Asg_GetListAssignments (void)
|
||||||
}
|
}
|
||||||
switch (Gbl.Asgs.SelectedOrderType)
|
switch (Gbl.Asgs.SelectedOrderType)
|
||||||
{
|
{
|
||||||
case Asg_ORDER_BY_START_DATE:
|
case Dat_START_TIME:
|
||||||
sprintf (OrderBySubQuery,"StartTime DESC,EndTime DESC,Title DESC");
|
sprintf (OrderBySubQuery,"StartTime DESC,EndTime DESC,Title DESC");
|
||||||
break;
|
break;
|
||||||
case Asg_ORDER_BY_END_DATE:
|
case Dat_END_TIME:
|
||||||
sprintf (OrderBySubQuery,"EndTime DESC,StartTime DESC,Title DESC");
|
sprintf (OrderBySubQuery,"EndTime DESC,StartTime DESC,Title DESC");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -731,8 +731,8 @@ static void Asg_GetDataOfAssignment (struct Assignment *Asg,const char *Query)
|
||||||
Asg->AsgCod = -1L;
|
Asg->AsgCod = -1L;
|
||||||
Asg->Hidden = false;
|
Asg->Hidden = false;
|
||||||
Asg->UsrCod = -1L;
|
Asg->UsrCod = -1L;
|
||||||
Asg->TimeUTC[Asg_START_TIME] =
|
Asg->TimeUTC[Dat_START_TIME] =
|
||||||
Asg->TimeUTC[Asg_END_TIME ] = (time_t) 0;
|
Asg->TimeUTC[Dat_END_TIME ] = (time_t) 0;
|
||||||
Asg->Open = false;
|
Asg->Open = false;
|
||||||
Asg->Title[0] = '\0';
|
Asg->Title[0] = '\0';
|
||||||
Asg->SendWork = false;
|
Asg->SendWork = false;
|
||||||
|
@ -757,10 +757,10 @@ static void Asg_GetDataOfAssignment (struct Assignment *Asg,const char *Query)
|
||||||
Asg->UsrCod = Str_ConvertStrCodToLongCod (row[2]);
|
Asg->UsrCod = Str_ConvertStrCodToLongCod (row[2]);
|
||||||
|
|
||||||
/* Get start date (row[3] holds the start UTC time) */
|
/* Get start date (row[3] holds the start UTC time) */
|
||||||
Asg->TimeUTC[Asg_START_TIME] = Dat_GetUNIXTimeFromStr (row[3]);
|
Asg->TimeUTC[Dat_START_TIME] = Dat_GetUNIXTimeFromStr (row[3]);
|
||||||
|
|
||||||
/* Get end date (row[4] holds the end UTC time) */
|
/* Get end date (row[4] holds the end UTC time) */
|
||||||
Asg->TimeUTC[Asg_END_TIME ] = Dat_GetUNIXTimeFromStr (row[4]);
|
Asg->TimeUTC[Dat_END_TIME ] = Dat_GetUNIXTimeFromStr (row[4]);
|
||||||
|
|
||||||
/* Get whether the assignment is open or closed (row(5)) */
|
/* Get whether the assignment is open or closed (row(5)) */
|
||||||
Asg->Open = (row[5][0] == '1');
|
Asg->Open = (row[5][0] == '1');
|
||||||
|
@ -1090,8 +1090,8 @@ void Asg_RequestCreatOrEditAsg (void)
|
||||||
{
|
{
|
||||||
/* Initialize to empty assignment */
|
/* Initialize to empty assignment */
|
||||||
Asg.AsgCod = -1L;
|
Asg.AsgCod = -1L;
|
||||||
Asg.TimeUTC[Asg_START_TIME] = Gbl.StartExecutionTimeUTC;
|
Asg.TimeUTC[Dat_START_TIME] = Gbl.StartExecutionTimeUTC;
|
||||||
Asg.TimeUTC[Asg_END_TIME ] = Gbl.StartExecutionTimeUTC + (2 * 60 * 60); // +2 hours
|
Asg.TimeUTC[Dat_END_TIME ] = Gbl.StartExecutionTimeUTC + (2 * 60 * 60); // +2 hours
|
||||||
Asg.Open = true;
|
Asg.Open = true;
|
||||||
Asg.Title[0] = '\0';
|
Asg.Title[0] = '\0';
|
||||||
Asg.SendWork = false;
|
Asg.SendWork = false;
|
||||||
|
@ -1275,8 +1275,8 @@ void Asg_RecFormAssignment (void)
|
||||||
}
|
}
|
||||||
|
|
||||||
/***** Get start/end date-times *****/
|
/***** Get start/end date-times *****/
|
||||||
NewAsg.TimeUTC[Asg_START_TIME] = Dat_GetTimeUTCFromForm ("StartTimeUTC");
|
NewAsg.TimeUTC[Dat_START_TIME] = Dat_GetTimeUTCFromForm ("StartTimeUTC");
|
||||||
NewAsg.TimeUTC[Asg_END_TIME ] = Dat_GetTimeUTCFromForm ("EndTimeUTC" );
|
NewAsg.TimeUTC[Dat_END_TIME ] = Dat_GetTimeUTCFromForm ("EndTimeUTC" );
|
||||||
|
|
||||||
/***** Get assignment title *****/
|
/***** Get assignment title *****/
|
||||||
Par_GetParToText ("Title",NewAsg.Title,Asg_MAX_LENGTH_ASSIGNMENT_TITLE);
|
Par_GetParToText ("Title",NewAsg.Title,Asg_MAX_LENGTH_ASSIGNMENT_TITLE);
|
||||||
|
@ -1290,10 +1290,10 @@ void Asg_RecFormAssignment (void)
|
||||||
Par_GetParToHTML ("Txt",Txt,Cns_MAX_BYTES_TEXT); // Store in HTML format (not rigorous)
|
Par_GetParToHTML ("Txt",Txt,Cns_MAX_BYTES_TEXT); // Store in HTML format (not rigorous)
|
||||||
|
|
||||||
/***** Adjust dates *****/
|
/***** Adjust dates *****/
|
||||||
if (NewAsg.TimeUTC[Asg_START_TIME] == 0)
|
if (NewAsg.TimeUTC[Dat_START_TIME] == 0)
|
||||||
NewAsg.TimeUTC[Asg_START_TIME] = Gbl.StartExecutionTimeUTC;
|
NewAsg.TimeUTC[Dat_START_TIME] = Gbl.StartExecutionTimeUTC;
|
||||||
if (NewAsg.TimeUTC[Asg_END_TIME] == 0)
|
if (NewAsg.TimeUTC[Dat_END_TIME] == 0)
|
||||||
NewAsg.TimeUTC[Asg_END_TIME] = NewAsg.TimeUTC[Asg_START_TIME] + 2*60*60; // +2 hours
|
NewAsg.TimeUTC[Dat_END_TIME] = NewAsg.TimeUTC[Dat_START_TIME] + 2*60*60; // +2 hours
|
||||||
|
|
||||||
/***** Check if title is correct *****/
|
/***** Check if title is correct *****/
|
||||||
if (NewAsg.Title[0]) // If there's an assignment title
|
if (NewAsg.Title[0]) // If there's an assignment title
|
||||||
|
@ -1420,8 +1420,8 @@ static void Asg_CreateAssignment (struct Assignment *Asg,const char *Txt)
|
||||||
"'%s','%s','%s')",
|
"'%s','%s','%s')",
|
||||||
Gbl.CurrentCrs.Crs.CrsCod,
|
Gbl.CurrentCrs.Crs.CrsCod,
|
||||||
Gbl.Usrs.Me.UsrDat.UsrCod,
|
Gbl.Usrs.Me.UsrDat.UsrCod,
|
||||||
Asg->TimeUTC[Asg_START_TIME],
|
Asg->TimeUTC[Dat_START_TIME],
|
||||||
Asg->TimeUTC[Asg_END_TIME ],
|
Asg->TimeUTC[Dat_END_TIME ],
|
||||||
Asg->Title,
|
Asg->Title,
|
||||||
Asg->Folder,
|
Asg->Folder,
|
||||||
Txt);
|
Txt);
|
||||||
|
@ -1446,8 +1446,8 @@ static void Asg_UpdateAssignment (struct Assignment *Asg,const char *Txt)
|
||||||
"EndTime=FROM_UNIXTIME('%ld'),"
|
"EndTime=FROM_UNIXTIME('%ld'),"
|
||||||
"Title='%s',Folder='%s',Txt='%s'"
|
"Title='%s',Folder='%s',Txt='%s'"
|
||||||
" WHERE AsgCod='%ld' AND CrsCod='%ld'",
|
" WHERE AsgCod='%ld' AND CrsCod='%ld'",
|
||||||
Asg->TimeUTC[Asg_START_TIME],
|
Asg->TimeUTC[Dat_START_TIME],
|
||||||
Asg->TimeUTC[Asg_END_TIME ],
|
Asg->TimeUTC[Dat_END_TIME ],
|
||||||
Asg->Title,
|
Asg->Title,
|
||||||
Asg->Folder,
|
Asg->Folder,
|
||||||
Txt,
|
Txt,
|
||||||
|
|
|
@ -45,19 +45,12 @@ typedef enum
|
||||||
Asg_SEND_WORK = 1,
|
Asg_SEND_WORK = 1,
|
||||||
} Asg_SendWork_t;
|
} Asg_SendWork_t;
|
||||||
|
|
||||||
#define Asg_NUM_DATES 2
|
|
||||||
typedef enum
|
|
||||||
{
|
|
||||||
Asg_START_TIME = 0,
|
|
||||||
Asg_END_TIME = 1,
|
|
||||||
} Asg_StartOrEndTime_t;
|
|
||||||
|
|
||||||
struct Assignment
|
struct Assignment
|
||||||
{
|
{
|
||||||
long AsgCod;
|
long AsgCod;
|
||||||
bool Hidden;
|
bool Hidden;
|
||||||
long UsrCod;
|
long UsrCod;
|
||||||
time_t TimeUTC[Asg_NUM_DATES];
|
time_t TimeUTC[Dat_NUM_START_END_TIME];
|
||||||
bool Open;
|
bool Open;
|
||||||
char Title[Asg_MAX_LENGTH_ASSIGNMENT_TITLE+1];
|
char Title[Asg_MAX_LENGTH_ASSIGNMENT_TITLE+1];
|
||||||
Asg_SendWork_t SendWork;
|
Asg_SendWork_t SendWork;
|
||||||
|
@ -68,13 +61,7 @@ struct Assignment
|
||||||
// I belong to any of the groups)
|
// I belong to any of the groups)
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef enum
|
#define Asg_DEFAULT_ORDER_TYPE Dat_START_TIME
|
||||||
{
|
|
||||||
Asg_ORDER_BY_START_DATE = 0,
|
|
||||||
Asg_ORDER_BY_END_DATE = 1,
|
|
||||||
} tAsgsOrderType;
|
|
||||||
|
|
||||||
#define Asg_DEFAULT_ORDER_TYPE Asg_ORDER_BY_START_DATE
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/***************************** Public prototypes *****************************/
|
/***************************** Public prototypes *****************************/
|
||||||
|
|
|
@ -194,12 +194,12 @@ static void Att_ShowAllAttEvents (void)
|
||||||
{
|
{
|
||||||
extern const char *Hlp_USERS_Attendance;
|
extern const char *Hlp_USERS_Attendance;
|
||||||
extern const char *Txt_Events;
|
extern const char *Txt_Events;
|
||||||
extern const char *Txt_ASG_ATT_SVY_OR_AGD_HELP_ORDER[2];
|
extern const char *Txt_START_END_TIME_HELP[Dat_NUM_START_END_TIME];
|
||||||
extern const char *Txt_ASG_ATT_SVY_OR_AGD_ORDER[2];
|
extern const char *Txt_START_END_TIME[Dat_NUM_START_END_TIME];
|
||||||
extern const char *Txt_Event;
|
extern const char *Txt_Event;
|
||||||
extern const char *Txt_ROLES_PLURAL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
extern const char *Txt_ROLES_PLURAL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||||
extern const char *Txt_No_events;
|
extern const char *Txt_No_events;
|
||||||
Att_EventsOrderType_t Order;
|
Dat_StartEndTime_t Order;
|
||||||
struct Pagination Pagination;
|
struct Pagination Pagination;
|
||||||
unsigned NumAttEvent;
|
unsigned NumAttEvent;
|
||||||
bool ICanEdit = (Gbl.Usrs.Me.LoggedRole == Rol_TEACHER ||
|
bool ICanEdit = (Gbl.Usrs.Me.LoggedRole == Rol_TEACHER ||
|
||||||
|
@ -230,8 +230,8 @@ static void Att_ShowAllAttEvents (void)
|
||||||
/***** Table head *****/
|
/***** Table head *****/
|
||||||
fprintf (Gbl.F.Out,"<table class=\"FRAME_TBL_MARGIN CELLS_PAD_2\">"
|
fprintf (Gbl.F.Out,"<table class=\"FRAME_TBL_MARGIN CELLS_PAD_2\">"
|
||||||
"<tr>");
|
"<tr>");
|
||||||
for (Order = Att_ORDER_BY_START_DATE;
|
for (Order = Dat_START_TIME;
|
||||||
Order <= Att_ORDER_BY_END_DATE;
|
Order <= Dat_END_TIME;
|
||||||
Order++)
|
Order++)
|
||||||
{
|
{
|
||||||
fprintf (Gbl.F.Out,"<th class=\"LEFT_MIDDLE\">");
|
fprintf (Gbl.F.Out,"<th class=\"LEFT_MIDDLE\">");
|
||||||
|
@ -239,10 +239,10 @@ static void Att_ShowAllAttEvents (void)
|
||||||
Grp_PutParamWhichGrps ();
|
Grp_PutParamWhichGrps ();
|
||||||
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
|
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
|
||||||
Par_PutHiddenParamUnsigned ("Order",(unsigned) Order);
|
Par_PutHiddenParamUnsigned ("Order",(unsigned) Order);
|
||||||
Act_LinkFormSubmit (Txt_ASG_ATT_SVY_OR_AGD_HELP_ORDER[Order],"TIT_TBL",NULL);
|
Act_LinkFormSubmit (Txt_START_END_TIME_HELP[Order],"TIT_TBL",NULL);
|
||||||
if (Order == Gbl.AttEvents.SelectedOrderType)
|
if (Order == Gbl.AttEvents.SelectedOrderType)
|
||||||
fprintf (Gbl.F.Out,"<u>");
|
fprintf (Gbl.F.Out,"<u>");
|
||||||
fprintf (Gbl.F.Out,"%s",Txt_ASG_ATT_SVY_OR_AGD_ORDER[Order]);
|
fprintf (Gbl.F.Out,"%s",Txt_START_END_TIME[Order]);
|
||||||
if (Order == Gbl.AttEvents.SelectedOrderType)
|
if (Order == Gbl.AttEvents.SelectedOrderType)
|
||||||
fprintf (Gbl.F.Out,"</u>");
|
fprintf (Gbl.F.Out,"</u>");
|
||||||
fprintf (Gbl.F.Out,"</a>");
|
fprintf (Gbl.F.Out,"</a>");
|
||||||
|
@ -520,7 +520,7 @@ static void Att_GetParamAttOrderType (void)
|
||||||
|
|
||||||
Par_GetParToText ("Order",UnsignedStr,10);
|
Par_GetParToText ("Order",UnsignedStr,10);
|
||||||
if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1)
|
if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1)
|
||||||
Gbl.AttEvents.SelectedOrderType = (Att_EventsOrderType_t) UnsignedNum;
|
Gbl.AttEvents.SelectedOrderType = (Dat_StartEndTime_t) UnsignedNum;
|
||||||
else
|
else
|
||||||
Gbl.AttEvents.SelectedOrderType = Att_DEFAULT_ORDER_TYPE;
|
Gbl.AttEvents.SelectedOrderType = Att_DEFAULT_ORDER_TYPE;
|
||||||
}
|
}
|
||||||
|
@ -652,13 +652,13 @@ static void Att_GetListAttEvents (Att_OrderTime_t Order)
|
||||||
}
|
}
|
||||||
switch (Gbl.AttEvents.SelectedOrderType)
|
switch (Gbl.AttEvents.SelectedOrderType)
|
||||||
{
|
{
|
||||||
case Att_ORDER_BY_START_DATE:
|
case Dat_START_TIME:
|
||||||
if (Order == Att_NEWEST_FIRST)
|
if (Order == Att_NEWEST_FIRST)
|
||||||
sprintf (OrderBySubQuery,"StartTime DESC,EndTime DESC,Title DESC");
|
sprintf (OrderBySubQuery,"StartTime DESC,EndTime DESC,Title DESC");
|
||||||
else
|
else
|
||||||
sprintf (OrderBySubQuery,"StartTime,EndTime,Title");
|
sprintf (OrderBySubQuery,"StartTime,EndTime,Title");
|
||||||
break;
|
break;
|
||||||
case Att_ORDER_BY_END_DATE:
|
case Dat_END_TIME:
|
||||||
if (Order == Att_NEWEST_FIRST)
|
if (Order == Att_NEWEST_FIRST)
|
||||||
sprintf (OrderBySubQuery,"EndTime DESC,StartTime DESC,Title DESC");
|
sprintf (OrderBySubQuery,"EndTime DESC,StartTime DESC,Title DESC");
|
||||||
else
|
else
|
||||||
|
|
|
@ -58,19 +58,13 @@ struct AttendanceEvent
|
||||||
bool Selected; // I have selected this attendance event
|
bool Selected; // I have selected this attendance event
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef enum
|
|
||||||
{
|
|
||||||
Att_ORDER_BY_START_DATE = 0,
|
|
||||||
Att_ORDER_BY_END_DATE = 1,
|
|
||||||
} Att_EventsOrderType_t;
|
|
||||||
|
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
Att_NEWEST_FIRST,
|
Att_NEWEST_FIRST,
|
||||||
Att_OLDEST_FIRST,
|
Att_OLDEST_FIRST,
|
||||||
} Att_OrderTime_t;
|
} Att_OrderTime_t;
|
||||||
|
|
||||||
#define Att_DEFAULT_ORDER_TYPE Att_ORDER_BY_START_DATE
|
#define Att_DEFAULT_ORDER_TYPE Dat_START_TIME
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/***************************** Public prototypes *****************************/
|
/***************************** Public prototypes *****************************/
|
||||||
|
|
|
@ -187,13 +187,15 @@
|
||||||
/****************************** Public constants *****************************/
|
/****************************** Public constants *****************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
#define Log_PLATFORM_VERSION "SWAD 16.100.1 (2016-12-13)"
|
#define Log_PLATFORM_VERSION "SWAD 16.101 (2016-12-14)"
|
||||||
#define CSS_FILE "swad16.97.css"
|
#define CSS_FILE "swad16.97.css"
|
||||||
#define JS_FILE "swad16.99.js"
|
#define JS_FILE "swad16.101.js"
|
||||||
|
|
||||||
// Number of lines (includes comments but not blank lines) has been got with the following command:
|
// 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
|
// nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*?.h sql/swad*.sql | tail -1
|
||||||
/*
|
/*
|
||||||
|
Version 16.101: Dec 14, 2016 Interval in range of times is 5 minutes when no seconds needed.
|
||||||
|
Code refactoring related to start and end date-time. (210806 lines)
|
||||||
Version 16.100.1: Dec 13, 2016 Fixed bugs checking if users share courses. (210828 lines)
|
Version 16.100.1: Dec 13, 2016 Fixed bugs checking if users share courses. (210828 lines)
|
||||||
Version 16.100: Dec 13, 2016 Changes in layout of list of attendance events.
|
Version 16.100: Dec 13, 2016 Changes in layout of list of attendance events.
|
||||||
Code refactoring related with roles. (210820 lines)
|
Code refactoring related with roles. (210820 lines)
|
||||||
|
|
81
swad_date.c
81
swad_date.c
|
@ -219,8 +219,7 @@ void Dat_ConvDateToDateStr (struct Date *Date,char *DateStr)
|
||||||
void Dat_PutFormStartEndClientLocalDateTimesWithYesterdayToday (void)
|
void Dat_PutFormStartEndClientLocalDateTimesWithYesterdayToday (void)
|
||||||
{
|
{
|
||||||
extern const char *The_ClassForm[The_NUM_THEMES];
|
extern const char *The_ClassForm[The_NUM_THEMES];
|
||||||
extern const char *Txt_Start_date;
|
extern const char *Txt_START_END_TIME[Dat_NUM_START_END_TIME];
|
||||||
extern const char *Txt_End_date;
|
|
||||||
extern const char *Txt_Yesterday;
|
extern const char *Txt_Yesterday;
|
||||||
extern const char *Txt_Today;
|
extern const char *Txt_Today;
|
||||||
|
|
||||||
|
@ -231,7 +230,7 @@ void Dat_PutFormStartEndClientLocalDateTimesWithYesterdayToday (void)
|
||||||
"</td>"
|
"</td>"
|
||||||
"<td class=\"LEFT_MIDDLE\">",
|
"<td class=\"LEFT_MIDDLE\">",
|
||||||
The_ClassForm[Gbl.Prefs.Theme],
|
The_ClassForm[Gbl.Prefs.Theme],
|
||||||
Txt_Start_date);
|
Txt_START_END_TIME[Dat_START_TIME]);
|
||||||
/* Date-time */
|
/* Date-time */
|
||||||
Dat_WriteFormClientLocalDateTimeFromTimeUTC ("Start",
|
Dat_WriteFormClientLocalDateTimeFromTimeUTC ("Start",
|
||||||
"Start",
|
"Start",
|
||||||
|
@ -260,7 +259,7 @@ void Dat_PutFormStartEndClientLocalDateTimesWithYesterdayToday (void)
|
||||||
"</td>"
|
"</td>"
|
||||||
"<td class=\"LEFT_MIDDLE\">",
|
"<td class=\"LEFT_MIDDLE\">",
|
||||||
The_ClassForm[Gbl.Prefs.Theme],
|
The_ClassForm[Gbl.Prefs.Theme],
|
||||||
Txt_End_date);
|
Txt_START_END_TIME[Dat_END_TIME]);
|
||||||
/* Date-time */
|
/* Date-time */
|
||||||
Dat_WriteFormClientLocalDateTimeFromTimeUTC ("End",
|
Dat_WriteFormClientLocalDateTimeFromTimeUTC ("End",
|
||||||
"End",
|
"End",
|
||||||
|
@ -282,23 +281,17 @@ void Dat_PutFormStartEndClientLocalDateTimes (time_t TimeUTC[2],
|
||||||
Dat_FormSeconds FormSeconds)
|
Dat_FormSeconds FormSeconds)
|
||||||
{
|
{
|
||||||
extern const char *The_ClassForm[The_NUM_THEMES];
|
extern const char *The_ClassForm[The_NUM_THEMES];
|
||||||
extern const char *Txt_Start_date;
|
extern const char *Txt_START_END_TIME[Dat_NUM_START_END_TIME];
|
||||||
extern const char *Txt_End_date;
|
Dat_StartEndTime_t StartEndTime;
|
||||||
Asg_StartOrEndTime_t StartOrEndTime;
|
const char *Id[Dat_NUM_START_END_TIME] =
|
||||||
const char *Id[Asg_NUM_DATES] =
|
|
||||||
{
|
{
|
||||||
"Start",
|
"Start", // Dat_START_TIME
|
||||||
"End"
|
"End" // Dat_END_TIME
|
||||||
};
|
|
||||||
const char *Dates[Asg_NUM_DATES] =
|
|
||||||
{
|
|
||||||
Txt_Start_date,
|
|
||||||
Txt_End_date
|
|
||||||
};
|
};
|
||||||
|
|
||||||
for (StartOrEndTime = 0;
|
for (StartEndTime = Dat_START_TIME;
|
||||||
StartOrEndTime <= 1;
|
StartEndTime <= Dat_END_TIME;
|
||||||
StartOrEndTime++)
|
StartEndTime++)
|
||||||
{
|
{
|
||||||
fprintf (Gbl.F.Out,"<tr>"
|
fprintf (Gbl.F.Out,"<tr>"
|
||||||
"<td class=\"RIGHT_MIDDLE\">"
|
"<td class=\"RIGHT_MIDDLE\">"
|
||||||
|
@ -308,12 +301,12 @@ void Dat_PutFormStartEndClientLocalDateTimes (time_t TimeUTC[2],
|
||||||
"<table class=\"CELLS_PAD_2\">"
|
"<table class=\"CELLS_PAD_2\">"
|
||||||
"<tr>"
|
"<tr>"
|
||||||
"<td class=\"LEFT_TOP\">",
|
"<td class=\"LEFT_TOP\">",
|
||||||
The_ClassForm[Gbl.Prefs.Theme],Dates[StartOrEndTime]);
|
The_ClassForm[Gbl.Prefs.Theme],Txt_START_END_TIME[StartEndTime]);
|
||||||
|
|
||||||
/* Date-time */
|
/* Date-time */
|
||||||
Dat_WriteFormClientLocalDateTimeFromTimeUTC (Id[StartOrEndTime],
|
Dat_WriteFormClientLocalDateTimeFromTimeUTC (Id[StartEndTime],
|
||||||
Id[StartOrEndTime],
|
Id[StartEndTime],
|
||||||
TimeUTC[StartOrEndTime],
|
TimeUTC[StartEndTime],
|
||||||
Gbl.Now.Date.Year - 1,
|
Gbl.Now.Date.Year - 1,
|
||||||
Gbl.Now.Date.Year + 1,
|
Gbl.Now.Date.Year + 1,
|
||||||
FormSeconds,
|
FormSeconds,
|
||||||
|
@ -346,6 +339,12 @@ void Dat_WriteFormClientLocalDateTimeFromTimeUTC (const char *Id,
|
||||||
unsigned Hour;
|
unsigned Hour;
|
||||||
unsigned Minute;
|
unsigned Minute;
|
||||||
unsigned Second;
|
unsigned Second;
|
||||||
|
unsigned MinutesIInterval[Dat_NUM_FORM_SECONDS] =
|
||||||
|
{
|
||||||
|
5, // Dat_FORM_SECONDS_OFF
|
||||||
|
1, // Dat_FORM_SECONDS_ON
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
/***** Start table *****/
|
/***** Start table *****/
|
||||||
fprintf (Gbl.F.Out,"<table>"
|
fprintf (Gbl.F.Out,"<table>"
|
||||||
|
@ -432,11 +431,13 @@ void Dat_WriteFormClientLocalDateTimeFromTimeUTC (const char *Id,
|
||||||
fprintf (Gbl.F.Out,"document.getElementById('%s').submit();",
|
fprintf (Gbl.F.Out,"document.getElementById('%s').submit();",
|
||||||
Gbl.Form.Id);
|
Gbl.Form.Id);
|
||||||
fprintf (Gbl.F.Out,"\">");
|
fprintf (Gbl.F.Out,"\">");
|
||||||
|
|
||||||
for (Minute = 0;
|
for (Minute = 0;
|
||||||
Minute <= 59;
|
Minute < 60;
|
||||||
Minute++)
|
Minute += MinutesIInterval[FormSeconds])
|
||||||
fprintf (Gbl.F.Out,"<option value=\"%u\">%02u '</option>",
|
fprintf (Gbl.F.Out,"<option value=\"%u\">%02u '</option>",
|
||||||
Minute,Minute);
|
Minute,Minute);
|
||||||
|
|
||||||
fprintf (Gbl.F.Out,"</select>"
|
fprintf (Gbl.F.Out,"</select>"
|
||||||
"</td>");
|
"</td>");
|
||||||
|
|
||||||
|
@ -1130,10 +1131,10 @@ continue:
|
||||||
|
|
||||||
181f: ba 1f 85 eb 51 mov $0x51eb851f,%edx // 1374389535
|
181f: ba 1f 85 eb 51 mov $0x51eb851f,%edx // 1374389535
|
||||||
|
|
||||||
1824: 8d 0c 70 lea (SumAux,Month,2),Sum // Sum = Day + Year + 2 + Month*2
|
1824: 8d 0c 70 lea (SumAux,Month,2),n // n = Day + Year + 2 + Month*2
|
||||||
1827: 89 f8 mov Year,%eax
|
1827: 89 f8 mov Year,%eax
|
||||||
1829: c1 e8 02 shr $2,%eax // Year / 4
|
1829: c1 e8 02 shr $2,%eax // Year / 4
|
||||||
182c: 01 c1 add %eax,Sum // Sum = Day + Year + 2 + Month*2 + Year/4
|
182c: 01 c1 add %eax,n // n = Day + Year + 2 + Month*2 + Year/4
|
||||||
182e: 89 f8 mov Year,%eax
|
182e: 89 f8 mov Year,%eax
|
||||||
1830: bf 25 49 92 24 mov $0x24924925,%edi // 613566757
|
1830: bf 25 49 92 24 mov $0x24924925,%edi // 613566757
|
||||||
1835: f7 e2 mul %edx // Year * 1374389535
|
1835: f7 e2 mul %edx // Year * 1374389535
|
||||||
|
@ -1141,26 +1142,28 @@ continue:
|
||||||
1837: 89 d0 mov %edx,%eax // (Year * 1374389535) / 2^32 = (Year * 2^32 * 2^5 / 100) / 2^32 = (Year * 2^5) / 100
|
1837: 89 d0 mov %edx,%eax // (Year * 1374389535) / 2^32 = (Year * 2^32 * 2^5 / 100) / 2^32 = (Year * 2^5) / 100
|
||||||
1839: c1 ea 05 shr $5,%edx // (Year * 1374389535) / 2^32 / 2^5 = Year / 100
|
1839: c1 ea 05 shr $5,%edx // (Year * 1374389535) / 2^32 / 2^5 = Year / 100
|
||||||
183c: c1 e8 07 shr $7,%eax // (Year * 1374389535) / 2^32 / 2^7 = Year / 400
|
183c: c1 e8 07 shr $7,%eax // (Year * 1374389535) / 2^32 / 2^7 = Year / 400
|
||||||
183f: 01 c1 add %eax,Sum // Sum = Day + Year + 2 + Month*2 + Year/4 + Year/400
|
183f: 01 c1 add %eax,n // n = Day + Year + 2 + Month*2 + Year/4 + Year/400
|
||||||
1841: 8d 44 76 03 lea 3(Month,Month,2),%eax // Month*3 + 3
|
1841: 8d 44 76 03 lea 3(Month,Month,2),%eax // Month*3 + 3
|
||||||
1845: 29 d1 sub %edx,Sum // Sum = Day + Year + 2 + Month*2 + Year/4 + Year/400 - Year/100
|
1845: 29 d1 sub %edx,n // n = Day + Year + 2 + Month*2 + Year/4 + Year/400 - Year/100
|
||||||
|
|
||||||
1847: ba cd cc cc cc mov $0xcccccccd,%edx
|
1847: ba cd cc cc cc mov $0xcccccccd,%edx
|
||||||
184c: f7 e2 mul %edx // (Month*3 + 3) * 3435973837
|
184c: f7 e2 mul %edx // (Month*3 + 3) * 3435973837
|
||||||
184e: c1 ea 02 shr $2,%edx // (Month*3 + 3) * 3435973837 / 2^32 / 2^2 = (Month*3 + 3) / 5
|
184e: c1 ea 02 shr $2,%edx // (Month*3 + 3) * 3435973837 / 2^32 / 2^2 = (Month*3 + 3) / 5
|
||||||
1851: 01 d1 add %edx,Sum // Sum = Day + Year + 2 + Month*2 + Year/4 + Year/400 - Year/100 + (Month*3 + 3) / 5
|
1851: 01 d1 add %edx,n // n = Day + Year + 2 + Month*2 + Year/4 + Year/400 - Year/100 + (Month*3 + 3) / 5
|
||||||
|
|
||||||
1853: 89 c8 mov Sum,%eax
|
1853: 89 c8 mov n,%eax
|
||||||
1855: 89 ce mov Sum,%esi
|
1855: 89 ce mov n,%esi
|
||||||
|
|
||||||
1857: f7 e7 mul %edi // edx = Sum * 613566757 / 2^32
|
// Algorithm for remainder: https://doc.lagout.org/security/Hackers%20Delight.pdf, page 209
|
||||||
1859: 29 d6 sub %edx,%esi //
|
|
||||||
185b: d1 ee shr %esi //
|
1857: f7 e7 mul %edi // edx = q = M*n/2**32
|
||||||
185d: 01 f2 add %esi,%edx //
|
1859: 29 d6 sub %edx,%esi // esi = t = n - q
|
||||||
185f: c1 ea 02 shr $2,%edx //
|
185b: d1 ee shr %esi // esi = t = (n - q)/2
|
||||||
1862: 8d 04 d5 00 00 00 00 lea 0(,%rdx,8),%eax //
|
185d: 01 f2 add %esi,%edx // edx = t = (n - q)/2 + q = (n + q)/2
|
||||||
1869: 29 d0 sub %edx,%eax //
|
185f: c1 ea 02 shr $2,%edx // edx = q = (n + q)/8 = (n+Mn/2**32)/8 = floor(n/7)
|
||||||
186b: 29 c1 sub %eax,Sum // Sum % 7
|
1862: 8d 04 d5 00 00 00 00 lea 0(,%rdx,8),%eax // eax = q*8
|
||||||
|
1869: 29 d0 sub %edx,%eax // eax = q*8-q = q*7
|
||||||
|
186b: 29 c1 sub %eax,%ecx // ecx = r = n - q*7
|
||||||
|
|
||||||
186d: 83 c1 05 add $5,Mod // Mod += 5
|
186d: 83 c1 05 add $5,Mod // Mod += 5
|
||||||
1870: 89 c8 mov Mod,%eax
|
1870: 89 c8 mov Mod,%eax
|
||||||
|
|
|
@ -77,6 +77,14 @@ typedef enum
|
||||||
Dat_FUTURE = 2,
|
Dat_FUTURE = 2,
|
||||||
} Dat_TimeStatus_t;
|
} Dat_TimeStatus_t;
|
||||||
|
|
||||||
|
#define Dat_NUM_START_END_TIME 2
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
Dat_START_TIME = 0,
|
||||||
|
Dat_END_TIME = 1,
|
||||||
|
} Dat_StartEndTime_t;
|
||||||
|
|
||||||
|
#define Dat_NUM_FORM_SECONDS 2
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
Dat_FORM_SECONDS_OFF,
|
Dat_FORM_SECONDS_OFF,
|
||||||
|
|
|
@ -6155,7 +6155,7 @@ static void Brw_WriteDatesAssignment (void)
|
||||||
"%ld,', ','%s',true,false,true);"
|
"%ld,', ','%s',true,false,true);"
|
||||||
"</script>",
|
"</script>",
|
||||||
UniqueId,
|
UniqueId,
|
||||||
(long) Gbl.FileBrowser.Asg.TimeUTC[Asg_START_TIME],Txt_Today);
|
(long) Gbl.FileBrowser.Asg.TimeUTC[Dat_START_TIME],Txt_Today);
|
||||||
fprintf (Gbl.F.Out,"</span>");
|
fprintf (Gbl.F.Out,"</span>");
|
||||||
|
|
||||||
/***** Arrow *****/
|
/***** Arrow *****/
|
||||||
|
@ -6176,7 +6176,7 @@ static void Brw_WriteDatesAssignment (void)
|
||||||
"%ld,', ','%s',false,false,true);"
|
"%ld,', ','%s',false,false,true);"
|
||||||
"</script>",
|
"</script>",
|
||||||
UniqueId,
|
UniqueId,
|
||||||
(long) Gbl.FileBrowser.Asg.TimeUTC[Asg_END_TIME],Txt_Today);
|
(long) Gbl.FileBrowser.Asg.TimeUTC[Dat_END_TIME],Txt_Today);
|
||||||
fprintf (Gbl.F.Out,"</span>");
|
fprintf (Gbl.F.Out,"</span>");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
@ -550,7 +550,7 @@ struct Globals
|
||||||
bool LstIsRead; // Is the list already read from database, or it needs to be read?
|
bool LstIsRead; // Is the list already read from database, or it needs to be read?
|
||||||
unsigned Num; // Number of assignments
|
unsigned Num; // Number of assignments
|
||||||
long *LstAsgCods; // List of assigment codes
|
long *LstAsgCods; // List of assigment codes
|
||||||
tAsgsOrderType SelectedOrderType;
|
Dat_StartEndTime_t SelectedOrderType;
|
||||||
long AsgCodToEdit; // Used as parameter in contextual links
|
long AsgCodToEdit; // Used as parameter in contextual links
|
||||||
} Asgs;
|
} Asgs;
|
||||||
struct
|
struct
|
||||||
|
@ -558,7 +558,7 @@ struct Globals
|
||||||
bool LstIsRead; // Is the list already read from database, or it needs to be read?
|
bool LstIsRead; // Is the list already read from database, or it needs to be read?
|
||||||
unsigned Num; // Number of attendance events
|
unsigned Num; // Number of attendance events
|
||||||
struct AttendanceEvent *Lst; // List of attendance events
|
struct AttendanceEvent *Lst; // List of attendance events
|
||||||
Att_EventsOrderType_t SelectedOrderType;
|
Dat_StartEndTime_t SelectedOrderType;
|
||||||
long AttCod;
|
long AttCod;
|
||||||
bool ShowDetails;
|
bool ShowDetails;
|
||||||
char *StrAttCodsSelected;
|
char *StrAttCodsSelected;
|
||||||
|
|
|
@ -904,8 +904,7 @@ static void Hld_PutFormToCreateHoliday (void)
|
||||||
extern const char *Txt_New_holiday;
|
extern const char *Txt_New_holiday;
|
||||||
extern const char *Txt_Place;
|
extern const char *Txt_Place;
|
||||||
extern const char *Txt_Type;
|
extern const char *Txt_Type;
|
||||||
extern const char *Txt_Start_date;
|
extern const char *Txt_START_END_TIME[Dat_NUM_START_END_TIME];
|
||||||
extern const char *Txt_End_date;
|
|
||||||
extern const char *Txt_Holiday;
|
extern const char *Txt_Holiday;
|
||||||
extern const char *Txt_HOLIDAY_TYPES[Hld_NUM_TYPES_HOLIDAY];
|
extern const char *Txt_HOLIDAY_TYPES[Hld_NUM_TYPES_HOLIDAY];
|
||||||
extern const char *Txt_Create_holiday;
|
extern const char *Txt_Create_holiday;
|
||||||
|
@ -942,8 +941,8 @@ static void Hld_PutFormToCreateHoliday (void)
|
||||||
"</tr>",
|
"</tr>",
|
||||||
Txt_Place,
|
Txt_Place,
|
||||||
Txt_Type,
|
Txt_Type,
|
||||||
Txt_Start_date,
|
Txt_START_END_TIME[Dat_START_TIME],
|
||||||
Txt_End_date,
|
Txt_START_END_TIME[Dat_END_TIME],
|
||||||
Txt_Holiday);
|
Txt_Holiday);
|
||||||
|
|
||||||
/***** Holiday place *****/
|
/***** Holiday place *****/
|
||||||
|
@ -1023,8 +1022,7 @@ static void Hld_PutHeadHolidays (void)
|
||||||
extern const char *Txt_Code;
|
extern const char *Txt_Code;
|
||||||
extern const char *Txt_Place;
|
extern const char *Txt_Place;
|
||||||
extern const char *Txt_Type;
|
extern const char *Txt_Type;
|
||||||
extern const char *Txt_Start_date;
|
extern const char *Txt_START_END_TIME[Dat_NUM_START_END_TIME];
|
||||||
extern const char *Txt_End_date;
|
|
||||||
extern const char *Txt_Holiday;
|
extern const char *Txt_Holiday;
|
||||||
|
|
||||||
fprintf (Gbl.F.Out,"<tr>"
|
fprintf (Gbl.F.Out,"<tr>"
|
||||||
|
@ -1051,8 +1049,8 @@ static void Hld_PutHeadHolidays (void)
|
||||||
Txt_Code,
|
Txt_Code,
|
||||||
Txt_Place,
|
Txt_Place,
|
||||||
Txt_Type,
|
Txt_Type,
|
||||||
Txt_Start_date,
|
Txt_START_END_TIME[Dat_START_TIME],
|
||||||
Txt_End_date,
|
Txt_START_END_TIME[Dat_END_TIME],
|
||||||
Txt_Holiday);
|
Txt_Holiday);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -187,8 +187,8 @@ static void Svy_ListAllSurveys (struct SurveyQuestion *SvyQst)
|
||||||
{
|
{
|
||||||
extern const char *Hlp_STATS_Surveys;
|
extern const char *Hlp_STATS_Surveys;
|
||||||
extern const char *Txt_Surveys;
|
extern const char *Txt_Surveys;
|
||||||
extern const char *Txt_ASG_ATT_SVY_OR_AGD_HELP_ORDER[2];
|
extern const char *Txt_START_END_TIME_HELP[Dat_NUM_START_END_TIME];
|
||||||
extern const char *Txt_ASG_ATT_SVY_OR_AGD_ORDER[2];
|
extern const char *Txt_START_END_TIME[Dat_NUM_START_END_TIME];
|
||||||
extern const char *Txt_Survey;
|
extern const char *Txt_Survey;
|
||||||
extern const char *Txt_Status;
|
extern const char *Txt_Status;
|
||||||
extern const char *Txt_No_surveys;
|
extern const char *Txt_No_surveys;
|
||||||
|
@ -237,10 +237,10 @@ static void Svy_ListAllSurveys (struct SurveyQuestion *SvyQst)
|
||||||
Grp_PutParamWhichGrps ();
|
Grp_PutParamWhichGrps ();
|
||||||
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
|
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
|
||||||
Par_PutHiddenParamUnsigned ("Order",(unsigned) Order);
|
Par_PutHiddenParamUnsigned ("Order",(unsigned) Order);
|
||||||
Act_LinkFormSubmit (Txt_ASG_ATT_SVY_OR_AGD_HELP_ORDER[Order],"TIT_TBL",NULL);
|
Act_LinkFormSubmit (Txt_START_END_TIME_HELP[Order],"TIT_TBL",NULL);
|
||||||
if (Order == Gbl.Svys.SelectedOrderType)
|
if (Order == Gbl.Svys.SelectedOrderType)
|
||||||
fprintf (Gbl.F.Out,"<u>");
|
fprintf (Gbl.F.Out,"<u>");
|
||||||
fprintf (Gbl.F.Out,"%s",Txt_ASG_ATT_SVY_OR_AGD_ORDER[Order]);
|
fprintf (Gbl.F.Out,"%s",Txt_START_END_TIME[Order]);
|
||||||
if (Order == Gbl.Svys.SelectedOrderType)
|
if (Order == Gbl.Svys.SelectedOrderType)
|
||||||
fprintf (Gbl.F.Out,"</u>");
|
fprintf (Gbl.F.Out,"</u>");
|
||||||
fprintf (Gbl.F.Out,"</a>");
|
fprintf (Gbl.F.Out,"</a>");
|
||||||
|
@ -2163,8 +2163,8 @@ void Svy_RecFormSurvey (void)
|
||||||
}
|
}
|
||||||
|
|
||||||
/***** Get start/end date-times *****/
|
/***** Get start/end date-times *****/
|
||||||
NewSvy.TimeUTC[Asg_START_TIME] = Dat_GetTimeUTCFromForm ("StartTimeUTC");
|
NewSvy.TimeUTC[Dat_START_TIME] = Dat_GetTimeUTCFromForm ("StartTimeUTC");
|
||||||
NewSvy.TimeUTC[Asg_END_TIME ] = Dat_GetTimeUTCFromForm ("EndTimeUTC" );
|
NewSvy.TimeUTC[Dat_END_TIME ] = Dat_GetTimeUTCFromForm ("EndTimeUTC" );
|
||||||
|
|
||||||
/***** Get survey title *****/
|
/***** Get survey title *****/
|
||||||
Par_GetParToText ("Title",NewSvy.Title,Svy_MAX_LENGTH_SURVEY_TITLE);
|
Par_GetParToText ("Title",NewSvy.Title,Svy_MAX_LENGTH_SURVEY_TITLE);
|
||||||
|
|
25
swad_text.c
25
swad_text.c
|
@ -3036,7 +3036,7 @@ const char *Txt_Assignments_and_other_works =
|
||||||
"Atividades e outros trabalhos";
|
"Atividades e outros trabalhos";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *Txt_ASG_ATT_SVY_OR_AGD_HELP_ORDER[2] =
|
const char *Txt_START_END_TIME_HELP[Dat_NUM_START_END_TIME] =
|
||||||
{
|
{
|
||||||
#if L==1
|
#if L==1
|
||||||
"Ordenar per data de començament"
|
"Ordenar per data de començament"
|
||||||
|
@ -3079,7 +3079,7 @@ const char *Txt_ASG_ATT_SVY_OR_AGD_HELP_ORDER[2] =
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
const char *Txt_ASG_ATT_SVY_OR_AGD_ORDER[2] =
|
const char *Txt_START_END_TIME[Dat_NUM_START_END_TIME] =
|
||||||
{
|
{
|
||||||
#if L==1
|
#if L==1
|
||||||
"Inici"
|
"Inici"
|
||||||
|
@ -37751,27 +37751,6 @@ const char *Txt_Source_of_information =
|
||||||
"Fonte de informação";
|
"Fonte de informação";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *Txt_Start_date =
|
|
||||||
#if L==1
|
|
||||||
"Data inicial";
|
|
||||||
#elif L==2
|
|
||||||
"Startdatum";
|
|
||||||
#elif L==3
|
|
||||||
"Start date";
|
|
||||||
#elif L==4
|
|
||||||
"Fecha inicial";
|
|
||||||
#elif L==5
|
|
||||||
"Date initiale";
|
|
||||||
#elif L==6
|
|
||||||
"Fecha inicial"; // Okoteve traducción
|
|
||||||
#elif L==7
|
|
||||||
"Data iniziale";
|
|
||||||
#elif L==8
|
|
||||||
"Data rozpoczęcia";
|
|
||||||
#elif L==9
|
|
||||||
"Data de início";
|
|
||||||
#endif
|
|
||||||
|
|
||||||
const char *Txt_STAT_CLICKS_GROUPED_BY[Sta_NUM_CLICKS_GROUPED_BY] =
|
const char *Txt_STAT_CLICKS_GROUPED_BY[Sta_NUM_CLICKS_GROUPED_BY] =
|
||||||
{
|
{
|
||||||
#if L==1
|
#if L==1
|
||||||
|
|
Loading…
Reference in New Issue