mirror of https://github.com/acanas/swad-core.git
Version 16.83
This commit is contained in:
parent
f01d61f578
commit
ef9d615329
|
@ -41,14 +41,14 @@ CREATE TABLE IF NOT EXISTS actions_MFU (
|
||||||
CREATE TABLE IF NOT EXISTS agendas (
|
CREATE TABLE IF NOT EXISTS agendas (
|
||||||
AgdCod INT NOT NULL AUTO_INCREMENT,
|
AgdCod INT NOT NULL AUTO_INCREMENT,
|
||||||
UsrCod INT NOT NULL,
|
UsrCod INT NOT NULL,
|
||||||
Hidden ENUM('N','Y') NOT NULL DEFAULT 'N',
|
Public ENUM('N','Y') NOT NULL DEFAULT 'N',
|
||||||
StartTime DATETIME NOT NULL,
|
StartTime DATETIME NOT NULL,
|
||||||
EndTime DATETIME NOT NULL,
|
EndTime DATETIME NOT NULL,
|
||||||
Event VARCHAR(255) NOT NULL,
|
Event VARCHAR(255) NOT NULL,
|
||||||
Location VARCHAR(255) NOT NULL,
|
Location VARCHAR(255) NOT NULL,
|
||||||
Txt TEXT NOT NULL,
|
Txt TEXT NOT NULL,
|
||||||
UNIQUE INDEX(AgdCod),
|
UNIQUE INDEX(AgdCod),
|
||||||
INDEX(UsrCod,Hidden));
|
INDEX(UsrCod,Public));
|
||||||
--
|
--
|
||||||
-- Table ann_seen: stores users who have seen global announcements
|
-- Table ann_seen: stores users who have seen global announcements
|
||||||
--
|
--
|
||||||
|
|
|
@ -2778,11 +2778,11 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
|
||||||
/* ActFrmRolSes */{ 843, 1,TabPrf,ActFrmRolSes ,0x1FE,0x1FE,0x1FE,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Usr_WriteFormLogout ,"keyuser64x64.gif" },
|
/* ActFrmRolSes */{ 843, 1,TabPrf,ActFrmRolSes ,0x1FE,0x1FE,0x1FE,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Usr_WriteFormLogout ,"keyuser64x64.gif" },
|
||||||
/* ActMyCrs */{ 987, 2,TabPrf,ActMyCrs ,0x1FE,0x1FE,0x1FE,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Crs_ReqSelectOneOfMyCourses ,"mygroups64x64.gif" },
|
/* ActMyCrs */{ 987, 2,TabPrf,ActMyCrs ,0x1FE,0x1FE,0x1FE,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Crs_ReqSelectOneOfMyCourses ,"mygroups64x64.gif" },
|
||||||
/* ActSeeMyTT */{ 408, 3,TabPrf,ActSeeMyTT ,0x1FE,0x1FE,0x1FE,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,TT_ShowClassTimeTable ,"clock64x64.gif" },
|
/* ActSeeMyTT */{ 408, 3,TabPrf,ActSeeMyTT ,0x1FE,0x1FE,0x1FE,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,TT_ShowClassTimeTable ,"clock64x64.gif" },
|
||||||
/* ActSeeMyAgd */{1602, 5,TabPrf,ActSeeMyAgd ,0x1FE,0x1FE,0x1FE,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Agd_ShowMyAgenda ,"date64x64.gif" },
|
/* ActSeeMyAgd */{1602, 4,TabPrf,ActSeeMyAgd ,0x1FE,0x1FE,0x1FE,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Agd_ShowMyAgenda ,"date64x64.gif" },
|
||||||
/* ActFrmMyAcc */{ 36, 6,TabPrf,ActFrmMyAcc ,0x1FF,0x1FF,0x1FF,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Acc_ShowFormMyAccount ,"arroba64x64.gif" },
|
/* ActFrmMyAcc */{ 36, 5,TabPrf,ActFrmMyAcc ,0x1FF,0x1FF,0x1FF,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Acc_ShowFormMyAccount ,"arroba64x64.gif" },
|
||||||
/* ActReqEdiRecCom */{ 285, 7,TabPrf,ActReqEdiRecCom ,0x1FE,0x1FE,0x1FE,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Rec_ShowFormMySharedRecord ,"card64x64.gif" },
|
/* ActReqEdiRecCom */{ 285, 6,TabPrf,ActReqEdiRecCom ,0x1FE,0x1FE,0x1FE,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Rec_ShowFormMySharedRecord ,"card64x64.gif" },
|
||||||
/* ActEdiPrf */{ 673, 8,TabPrf,ActEdiPrf ,0x1FF,0x1FF,0x1FF,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Pre_EditPrefs ,"heart64x64.gif" },
|
/* ActEdiPrf */{ 673, 7,TabPrf,ActEdiPrf ,0x1FF,0x1FF,0x1FF,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Pre_EditPrefs ,"heart64x64.gif" },
|
||||||
/* ActAdmBrf */{ 23, 9,TabPrf,ActAdmBrf ,0x1FE,0x1FE,0x1FE,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Brw_ShowFileBrowserOrWorks ,"pendrive64x64.gif" },
|
/* ActAdmBrf */{ 23, 8,TabPrf,ActAdmBrf ,0x1FE,0x1FE,0x1FE,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Brw_ShowFileBrowserOrWorks ,"pendrive64x64.gif" },
|
||||||
|
|
||||||
// Actions not in menu:
|
// Actions not in menu:
|
||||||
/* ActReqSndNewPwd */{ 665,-1,TabUnk,ActFrmLogIn ,0x000,0x001,0x001,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Pwd_ShowFormSendNewPwd ,NULL},
|
/* ActReqSndNewPwd */{ 665,-1,TabUnk,ActFrmLogIn ,0x000,0x001,0x001,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Pwd_ShowFormSendNewPwd ,NULL},
|
||||||
|
@ -2801,8 +2801,8 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
|
||||||
/* ActChgEvtMyAgd */{1606,-1,TabUnk,ActSeeMyAgd ,0x1FE,0x1FE,0x1FE,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Agd_RecFormEvent ,NULL},
|
/* ActChgEvtMyAgd */{1606,-1,TabUnk,ActSeeMyAgd ,0x1FE,0x1FE,0x1FE,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Agd_RecFormEvent ,NULL},
|
||||||
/* ActReqRemEvtMyAgd */{1607,-1,TabUnk,ActSeeMyAgd ,0x1FE,0x1FE,0x1FE,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Agd_AskRemEvent ,NULL},
|
/* ActReqRemEvtMyAgd */{1607,-1,TabUnk,ActSeeMyAgd ,0x1FE,0x1FE,0x1FE,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Agd_AskRemEvent ,NULL},
|
||||||
/* ActRemEvtMyAgd */{1608,-1,TabUnk,ActSeeMyAgd ,0x1FE,0x1FE,0x1FE,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Agd_RemoveEvent ,NULL},
|
/* ActRemEvtMyAgd */{1608,-1,TabUnk,ActSeeMyAgd ,0x1FE,0x1FE,0x1FE,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Agd_RemoveEvent ,NULL},
|
||||||
/* ActHidEvtMyAgd */{1609,-1,TabUnk,ActSeeMyAgd ,0x1FE,0x1FE,0x1FE,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Agd_HideEvent ,NULL},
|
/* ActHidEvtMyAgd */{1609,-1,TabUnk,ActSeeMyAgd ,0x1FE,0x1FE,0x1FE,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Agd_SetEventPrivate ,NULL},
|
||||||
/* ActShoEvtMyAgd */{1610,-1,TabUnk,ActSeeMyAgd ,0x1FE,0x1FE,0x1FE,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Agd_ShowEvent ,NULL},
|
/* ActShoEvtMyAgd */{1610,-1,TabUnk,ActSeeMyAgd ,0x1FE,0x1FE,0x1FE,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Agd_SetEventPublic ,NULL},
|
||||||
|
|
||||||
/* ActChkUsrAcc */{1584,-1,TabUnk,ActFrmMyAcc ,0x1FF,0x1FF,0x1FF,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Acc_CheckIfEmptyAccountExists ,NULL},
|
/* ActChkUsrAcc */{1584,-1,TabUnk,ActFrmMyAcc ,0x1FF,0x1FF,0x1FF,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Acc_CheckIfEmptyAccountExists ,NULL},
|
||||||
/* ActCreUsrAcc */{1163,-1,TabUnk,ActFrmMyAcc ,0x1FF,0x1FF,0x1FF,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Acc_AfterCreationNewAccount ,NULL},
|
/* ActCreUsrAcc */{1163,-1,TabUnk,ActFrmMyAcc ,0x1FF,0x1FF,0x1FF,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Acc_AfterCreationNewAccount ,NULL},
|
||||||
|
|
|
@ -78,7 +78,7 @@ static void Agd_ShowOneEvent (Agd_AgendaType_t AgendaType,long AgdCod);
|
||||||
static void Agd_WriteEventAuthor (struct AgendaEvent *AgdEvent);
|
static void Agd_WriteEventAuthor (struct AgendaEvent *AgdEvent);
|
||||||
static void Agd_GetParamEventOrderType (void);
|
static void Agd_GetParamEventOrderType (void);
|
||||||
|
|
||||||
static void Agd_PutFormsToRemEditOneEvent (long AgdCod,bool Hidden);
|
static void Agd_PutFormsToRemEditOneEvent (long AgdCod,bool Public);
|
||||||
static void Agd_PutParams (void);
|
static void Agd_PutParams (void);
|
||||||
static void Agd_GetListEvents (Agd_AgendaType_t AgendaType);
|
static void Agd_GetListEvents (Agd_AgendaType_t AgendaType);
|
||||||
static void Agd_GetDataOfEventByCod (struct AgendaEvent *AgdEvent);
|
static void Agd_GetDataOfEventByCod (struct AgendaEvent *AgdEvent);
|
||||||
|
@ -315,8 +315,8 @@ static void Agd_ShowOneEvent (Agd_AgendaType_t AgendaType,long AgdCod)
|
||||||
"</script>"
|
"</script>"
|
||||||
"</td>",
|
"</td>",
|
||||||
UniqueId,
|
UniqueId,
|
||||||
AgdEvent.Hidden ? Dat_TimeStatusClassHidden[AgdEvent.TimeStatus] :
|
AgdEvent.Public ? Dat_TimeStatusClassVisible[AgdEvent.TimeStatus] :
|
||||||
Dat_TimeStatusClassVisible[AgdEvent.TimeStatus],
|
Dat_TimeStatusClassHidden[AgdEvent.TimeStatus],
|
||||||
Gbl.RowEvenOdd,
|
Gbl.RowEvenOdd,
|
||||||
UniqueId,AgdEvent.TimeUTC[Agd_START_TIME],Txt_Today);
|
UniqueId,AgdEvent.TimeUTC[Agd_START_TIME],Txt_Today);
|
||||||
|
|
||||||
|
@ -328,8 +328,8 @@ static void Agd_ShowOneEvent (Agd_AgendaType_t AgendaType,long AgdCod)
|
||||||
"</script>"
|
"</script>"
|
||||||
"</td>",
|
"</td>",
|
||||||
UniqueId,
|
UniqueId,
|
||||||
AgdEvent.Hidden ? Dat_TimeStatusClassHidden[AgdEvent.TimeStatus] :
|
AgdEvent.Public ? Dat_TimeStatusClassVisible[AgdEvent.TimeStatus] :
|
||||||
Dat_TimeStatusClassVisible[AgdEvent.TimeStatus],
|
Dat_TimeStatusClassHidden[AgdEvent.TimeStatus],
|
||||||
Gbl.RowEvenOdd,
|
Gbl.RowEvenOdd,
|
||||||
UniqueId,AgdEvent.TimeUTC[Agd_END_TIME],Txt_Today);
|
UniqueId,AgdEvent.TimeUTC[Agd_END_TIME],Txt_Today);
|
||||||
|
|
||||||
|
@ -338,8 +338,8 @@ static void Agd_ShowOneEvent (Agd_AgendaType_t AgendaType,long AgdCod)
|
||||||
"<div class=\"%s\">%s</div>"
|
"<div class=\"%s\">%s</div>"
|
||||||
"</td>",
|
"</td>",
|
||||||
Gbl.RowEvenOdd,
|
Gbl.RowEvenOdd,
|
||||||
AgdEvent.Hidden ? "ASG_TITLE_LIGHT" :
|
AgdEvent.Public ? "ASG_TITLE" :
|
||||||
"ASG_TITLE",
|
"ASG_TITLE_LIGHT",
|
||||||
AgdEvent.Event);
|
AgdEvent.Event);
|
||||||
|
|
||||||
/* Event */
|
/* Event */
|
||||||
|
@ -348,8 +348,8 @@ static void Agd_ShowOneEvent (Agd_AgendaType_t AgendaType,long AgdCod)
|
||||||
"</td>"
|
"</td>"
|
||||||
"</tr>",
|
"</tr>",
|
||||||
Gbl.RowEvenOdd,
|
Gbl.RowEvenOdd,
|
||||||
AgdEvent.Hidden ? "ASG_TITLE_LIGHT" :
|
AgdEvent.Public ? "ASG_TITLE" :
|
||||||
"ASG_TITLE",
|
"ASG_TITLE_LIGHT",
|
||||||
AgdEvent.Location);
|
AgdEvent.Location);
|
||||||
|
|
||||||
/***** Write second row of data of this event *****/
|
/***** Write second row of data of this event *****/
|
||||||
|
@ -362,7 +362,7 @@ static void Agd_ShowOneEvent (Agd_AgendaType_t AgendaType,long AgdCod)
|
||||||
|
|
||||||
/* Forms to remove/edit this event */
|
/* Forms to remove/edit this event */
|
||||||
if (AgendaType == Agd_MY_AGENDA)
|
if (AgendaType == Agd_MY_AGENDA)
|
||||||
Agd_PutFormsToRemEditOneEvent (AgdEvent.AgdCod,AgdEvent.Hidden);
|
Agd_PutFormsToRemEditOneEvent (AgdEvent.AgdCod,AgdEvent.Public);
|
||||||
|
|
||||||
fprintf (Gbl.F.Out,"</td>");
|
fprintf (Gbl.F.Out,"</td>");
|
||||||
|
|
||||||
|
@ -379,8 +379,8 @@ static void Agd_ShowOneEvent (Agd_AgendaType_t AgendaType,long AgdCod)
|
||||||
"</p>"
|
"</p>"
|
||||||
"</td>"
|
"</td>"
|
||||||
"</tr>",
|
"</tr>",
|
||||||
AgdEvent.Hidden ? "DAT_LIGHT" :
|
AgdEvent.Public ? "DAT" :
|
||||||
"DAT",
|
"DAT_LIGHT",
|
||||||
Txt);
|
Txt);
|
||||||
|
|
||||||
Gbl.RowEvenOdd = 1 - Gbl.RowEvenOdd;
|
Gbl.RowEvenOdd = 1 - Gbl.RowEvenOdd;
|
||||||
|
@ -422,8 +422,8 @@ static void Agd_WriteEventAuthor (struct AgendaEvent *AgdEvent)
|
||||||
Str_LimitLengthHTMLStr (FirstName,9);
|
Str_LimitLengthHTMLStr (FirstName,9);
|
||||||
Str_LimitLengthHTMLStr (Surnames,9);
|
Str_LimitLengthHTMLStr (Surnames,9);
|
||||||
fprintf (Gbl.F.Out,"<span class=\"%s\">%s %s</span>",
|
fprintf (Gbl.F.Out,"<span class=\"%s\">%s %s</span>",
|
||||||
AgdEvent->Hidden ? "MSG_AUT_LIGHT" :
|
AgdEvent->Public ? "MSG_AUT" :
|
||||||
"MSG_AUT",
|
"MSG_AUT_LIGHT",
|
||||||
FirstName,Surnames);
|
FirstName,Surnames);
|
||||||
|
|
||||||
/***** Free memory used for user's data *****/
|
/***** Free memory used for user's data *****/
|
||||||
|
@ -459,7 +459,7 @@ void Agd_PutHiddenParamEventsOrderType (void)
|
||||||
/******************* Put a link (form) to edit one event *********************/
|
/******************* Put a link (form) to edit one event *********************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
static void Agd_PutFormsToRemEditOneEvent (long AgdCod,bool Hidden)
|
static void Agd_PutFormsToRemEditOneEvent (long AgdCod,bool Public)
|
||||||
{
|
{
|
||||||
extern const char *Txt_Remove;
|
extern const char *Txt_Remove;
|
||||||
extern const char *Txt_Event_private_click_to_make_it_visible_to_the_users_of_your_courses;
|
extern const char *Txt_Event_private_click_to_make_it_visible_to_the_users_of_your_courses;
|
||||||
|
@ -476,24 +476,27 @@ static void Agd_PutFormsToRemEditOneEvent (long AgdCod,bool Hidden)
|
||||||
Txt_Remove,NULL,
|
Txt_Remove,NULL,
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
/***** Put form to hide/show event *****/
|
|
||||||
if (Hidden)
|
|
||||||
Lay_PutContextualLink (ActShoEvtMyAgd,Agd_PutParams,
|
|
||||||
"closed_on16x16.gif",
|
|
||||||
Txt_Event_private_click_to_make_it_visible_to_the_users_of_your_courses,NULL,
|
|
||||||
NULL);
|
|
||||||
else
|
|
||||||
Lay_PutContextualLink (ActHidEvtMyAgd,Agd_PutParams,
|
|
||||||
"open_on16x16.gif",
|
|
||||||
Txt_Event_visible_to_the_users_of_your_courses_click_to_make_it_private,NULL,
|
|
||||||
NULL);
|
|
||||||
|
|
||||||
/***** Put form to edit event *****/
|
/***** Put form to edit event *****/
|
||||||
Lay_PutContextualLink (ActEdiOneEvtMyAgd,Agd_PutParams,
|
Lay_PutContextualLink (ActEdiOneEvtMyAgd,Agd_PutParams,
|
||||||
"edit64x64.png",
|
"edit64x64.png",
|
||||||
Txt_Edit,NULL,
|
Txt_Edit,NULL,
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
|
/***** Put form to hide/show event *****/
|
||||||
|
if (Gbl.Usrs.Me.AvailableRoles & (1 << Rol_TEACHER)) // I am a teacher in some courses
|
||||||
|
{
|
||||||
|
if (Public)
|
||||||
|
Lay_PutContextualLink (ActHidEvtMyAgd,Agd_PutParams,
|
||||||
|
"open_on16x16.gif",
|
||||||
|
Txt_Event_visible_to_the_users_of_your_courses_click_to_make_it_private,NULL,
|
||||||
|
NULL);
|
||||||
|
else
|
||||||
|
Lay_PutContextualLink (ActShoEvtMyAgd,Agd_PutParams,
|
||||||
|
"closed_on16x16.gif",
|
||||||
|
Txt_Event_private_click_to_make_it_visible_to_the_users_of_your_courses,NULL,
|
||||||
|
NULL);
|
||||||
|
}
|
||||||
|
|
||||||
fprintf (Gbl.F.Out,"</div>");
|
fprintf (Gbl.F.Out,"</div>");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -539,8 +542,8 @@ static void Agd_GetListEvents (Agd_AgendaType_t AgendaType)
|
||||||
case Agd_USR_AGENDA:
|
case Agd_USR_AGENDA:
|
||||||
sprintf (Query,"SELECT AgdCod"
|
sprintf (Query,"SELECT AgdCod"
|
||||||
" FROM agendas"
|
" FROM agendas"
|
||||||
" WHERE UsrCod='%ld' AND Hidden='N'"
|
" WHERE UsrCod='%ld' AND Public='Y'"
|
||||||
" AND EndTime>NOW()" // Only not obsolete events
|
" AND EndTime>NOW()" // Only present and future events
|
||||||
" ORDER BY %s",
|
" ORDER BY %s",
|
||||||
Gbl.Usrs.Other.UsrDat.UsrCod,OrderBySubQuery);
|
Gbl.Usrs.Other.UsrDat.UsrCod,OrderBySubQuery);
|
||||||
break;
|
break;
|
||||||
|
@ -591,7 +594,7 @@ static void Agd_GetDataOfEventByCod (struct AgendaEvent *AgdEvent)
|
||||||
char Query[1024];
|
char Query[1024];
|
||||||
|
|
||||||
/***** Build query *****/
|
/***** Build query *****/
|
||||||
sprintf (Query,"SELECT AgdCod,UsrCod,Hidden,"
|
sprintf (Query,"SELECT AgdCod,UsrCod,Public,"
|
||||||
"UNIX_TIMESTAMP(StartTime),"
|
"UNIX_TIMESTAMP(StartTime),"
|
||||||
"UNIX_TIMESTAMP(EndTime),"
|
"UNIX_TIMESTAMP(EndTime),"
|
||||||
"NOW()>EndTime," // Past event?
|
"NOW()>EndTime," // Past event?
|
||||||
|
@ -618,7 +621,7 @@ static void Agd_GetDataOfEvent (struct AgendaEvent *AgdEvent,const char *Query)
|
||||||
/***** Clear all event data *****/
|
/***** Clear all event data *****/
|
||||||
AgdEvent->AgdCod = -1L;
|
AgdEvent->AgdCod = -1L;
|
||||||
AgdEvent->UsrCod = -1L;
|
AgdEvent->UsrCod = -1L;
|
||||||
AgdEvent->Hidden = false;
|
AgdEvent->Public = false;
|
||||||
AgdEvent->TimeUTC[Agd_START_TIME] =
|
AgdEvent->TimeUTC[Agd_START_TIME] =
|
||||||
AgdEvent->TimeUTC[Agd_END_TIME ] = (time_t) 0;
|
AgdEvent->TimeUTC[Agd_END_TIME ] = (time_t) 0;
|
||||||
AgdEvent->TimeStatus = Dat_FUTURE;
|
AgdEvent->TimeStatus = Dat_FUTURE;
|
||||||
|
@ -633,7 +636,7 @@ static void Agd_GetDataOfEvent (struct AgendaEvent *AgdEvent,const char *Query)
|
||||||
/* Get row:
|
/* Get row:
|
||||||
row[0] AgdCod
|
row[0] AgdCod
|
||||||
row[1] UsrCod
|
row[1] UsrCod
|
||||||
row[2] Hidden
|
row[2] Public
|
||||||
row[3] UNIX_TIMESTAMP(StartTime)
|
row[3] UNIX_TIMESTAMP(StartTime)
|
||||||
row[4] UNIX_TIMESTAMP(EndTime)
|
row[4] UNIX_TIMESTAMP(EndTime)
|
||||||
row[5] NOW()>EndTime // Past event?
|
row[5] NOW()>EndTime // Past event?
|
||||||
|
@ -649,8 +652,8 @@ static void Agd_GetDataOfEvent (struct AgendaEvent *AgdEvent,const char *Query)
|
||||||
/* Get author of the event (row[1]) */
|
/* Get author of the event (row[1]) */
|
||||||
AgdEvent->UsrCod = Str_ConvertStrCodToLongCod (row[1]);
|
AgdEvent->UsrCod = Str_ConvertStrCodToLongCod (row[1]);
|
||||||
|
|
||||||
/* Get whether the event is hidden or not (row[2]) */
|
/* Get whether the event is public or not (row[2]) */
|
||||||
AgdEvent->Hidden = (row[2][0] == 'Y');
|
AgdEvent->Public = (row[2][0] == 'Y');
|
||||||
|
|
||||||
/* Get start date (row[3] holds the start UTC time) */
|
/* Get start date (row[3] holds the start UTC time) */
|
||||||
AgdEvent->TimeUTC[Agd_START_TIME] = Dat_GetUNIXTimeFromStr (row[3]);
|
AgdEvent->TimeUTC[Agd_START_TIME] = Dat_GetUNIXTimeFromStr (row[3]);
|
||||||
|
@ -818,10 +821,10 @@ void Agd_RemoveEvent (void)
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/********************* Hide an event (make it private) ***********************/
|
/****************************** Set event private ****************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
void Agd_HideEvent (void)
|
void Agd_SetEventPrivate (void)
|
||||||
{
|
{
|
||||||
extern const char *Txt_Event_X_is_now_private;
|
extern const char *Txt_Event_X_is_now_private;
|
||||||
char Query[512];
|
char Query[512];
|
||||||
|
@ -835,11 +838,11 @@ void Agd_HideEvent (void)
|
||||||
AgdEvent.UsrCod = Gbl.Usrs.Me.UsrDat.UsrCod;
|
AgdEvent.UsrCod = Gbl.Usrs.Me.UsrDat.UsrCod;
|
||||||
Agd_GetDataOfEventByCod (&AgdEvent);
|
Agd_GetDataOfEventByCod (&AgdEvent);
|
||||||
|
|
||||||
/***** Hide event *****/
|
/***** Set event private *****/
|
||||||
sprintf (Query,"UPDATE agendas SET Hidden='Y'"
|
sprintf (Query,"UPDATE agendas SET Public='N'"
|
||||||
" WHERE AgdCod='%ld' AND UsrCod='%ld'",
|
" WHERE AgdCod='%ld' AND UsrCod='%ld'",
|
||||||
AgdEvent.AgdCod,Gbl.Usrs.Me.UsrDat.UsrCod);
|
AgdEvent.AgdCod,Gbl.Usrs.Me.UsrDat.UsrCod);
|
||||||
DB_QueryUPDATE (Query,"can not hide event");
|
DB_QueryUPDATE (Query,"can not set event as private");
|
||||||
|
|
||||||
/***** Write message to show the change made *****/
|
/***** Write message to show the change made *****/
|
||||||
sprintf (Gbl.Message,Txt_Event_X_is_now_private,AgdEvent.Event);
|
sprintf (Gbl.Message,Txt_Event_X_is_now_private,AgdEvent.Event);
|
||||||
|
@ -850,10 +853,10 @@ void Agd_HideEvent (void)
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/********* Show an event (make it viewable to users of my courses) ***********/
|
/********* Set event public (make it visible to users of my courses) *********/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
void Agd_ShowEvent (void)
|
void Agd_SetEventPublic (void)
|
||||||
{
|
{
|
||||||
extern const char *Txt_Event_X_is_now_visible_to_users_of_your_courses;
|
extern const char *Txt_Event_X_is_now_visible_to_users_of_your_courses;
|
||||||
char Query[256];
|
char Query[256];
|
||||||
|
@ -867,8 +870,8 @@ void Agd_ShowEvent (void)
|
||||||
AgdEvent.UsrCod = Gbl.Usrs.Me.UsrDat.UsrCod;
|
AgdEvent.UsrCod = Gbl.Usrs.Me.UsrDat.UsrCod;
|
||||||
Agd_GetDataOfEventByCod (&AgdEvent);
|
Agd_GetDataOfEventByCod (&AgdEvent);
|
||||||
|
|
||||||
/***** Hide event *****/
|
/***** Set event public *****/
|
||||||
sprintf (Query,"UPDATE agendas SET Hidden='N'"
|
sprintf (Query,"UPDATE agendas SET Public='Y'"
|
||||||
" WHERE AgdCod='%ld' AND UsrCod='%ld'",
|
" WHERE AgdCod='%ld' AND UsrCod='%ld'",
|
||||||
AgdEvent.AgdCod,Gbl.Usrs.Me.UsrDat.UsrCod);
|
AgdEvent.AgdCod,Gbl.Usrs.Me.UsrDat.UsrCod);
|
||||||
DB_QueryUPDATE (Query,"can not show event");
|
DB_QueryUPDATE (Query,"can not show event");
|
||||||
|
|
|
@ -47,7 +47,7 @@ typedef enum
|
||||||
struct AgendaEvent
|
struct AgendaEvent
|
||||||
{
|
{
|
||||||
long AgdCod;
|
long AgdCod;
|
||||||
bool Hidden;
|
bool Public;
|
||||||
long UsrCod;
|
long UsrCod;
|
||||||
time_t TimeUTC[Agd_NUM_DATES];
|
time_t TimeUTC[Agd_NUM_DATES];
|
||||||
Dat_TimeStatus_t TimeStatus;
|
Dat_TimeStatus_t TimeStatus;
|
||||||
|
@ -77,8 +77,8 @@ void Agd_FreeListEvents (void);
|
||||||
long Agd_GetParamAgdCod (void);
|
long Agd_GetParamAgdCod (void);
|
||||||
void Agd_AskRemEvent (void);
|
void Agd_AskRemEvent (void);
|
||||||
void Agd_RemoveEvent (void);
|
void Agd_RemoveEvent (void);
|
||||||
void Agd_HideEvent (void);
|
void Agd_SetEventPrivate (void);
|
||||||
void Agd_ShowEvent (void);
|
void Agd_SetEventPublic (void);
|
||||||
void Agd_RecFormEvent (void);
|
void Agd_RecFormEvent (void);
|
||||||
void Agd_RemoveUsrEvents (long UsrCod);
|
void Agd_RemoveUsrEvents (long UsrCod);
|
||||||
unsigned Agd_GetNumEventsFromUsr (long UsrCod);
|
unsigned Agd_GetNumEventsFromUsr (long UsrCod);
|
||||||
|
|
|
@ -187,13 +187,22 @@
|
||||||
/****************************** Public constants *****************************/
|
/****************************** Public constants *****************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
#define Log_PLATFORM_VERSION "SWAD 16.82.2 (2016-12-02)"
|
#define Log_PLATFORM_VERSION "SWAD 16.83 (2016-12-03)"
|
||||||
#define CSS_FILE "swad16.82.2.css"
|
#define CSS_FILE "swad16.82.2.css"
|
||||||
#define JS_FILE "swad16.46.1.js"
|
#define JS_FILE "swad16.46.1.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.83: Dec 03, 2016 Change in layout of agenda.
|
||||||
|
Agenda events are private by default. (? lines)
|
||||||
|
5 changes necessary in database:
|
||||||
|
ALTER TABLE agendas ADD COLUMN Public ENUM('N','Y') NOT NULL DEFAULT 'N' AFTER Hidden;
|
||||||
|
UPDATE agendas SET Public='Y' WHERE Hidden='N';
|
||||||
|
DROP INDEX UsrCod ON agendas;
|
||||||
|
ALTER TABLE agendas DROP COLUMN Hidden;
|
||||||
|
ALTER TABLE agendas ADD INDEX(UsrCod,Public);
|
||||||
|
|
||||||
Version 16.82.2: Dec 02, 2016 Changes in colors of dates in agenda.
|
Version 16.82.2: Dec 02, 2016 Changes in colors of dates in agenda.
|
||||||
Default order of events in agenda now is "by end date". (209477 lines)
|
Default order of events in agenda now is "by end date". (209477 lines)
|
||||||
Version 16.82.1: Dec 02, 2016 Changes in another user's agenda. (209450 lines)
|
Version 16.82.1: Dec 02, 2016 Changes in another user's agenda. (209450 lines)
|
||||||
|
|
|
@ -222,7 +222,7 @@ mysql> DESCRIBE agendas;
|
||||||
+-----------+---------------+------+-----+---------+----------------+
|
+-----------+---------------+------+-----+---------+----------------+
|
||||||
| AgdCod | int(11) | NO | PRI | NULL | auto_increment |
|
| AgdCod | int(11) | NO | PRI | NULL | auto_increment |
|
||||||
| UsrCod | int(11) | NO | MUL | NULL | |
|
| UsrCod | int(11) | NO | MUL | NULL | |
|
||||||
| Hidden | enum('N','Y') | NO | | N | |
|
| Public | enum('N','Y') | NO | | N | |
|
||||||
| StartTime | datetime | NO | | NULL | |
|
| StartTime | datetime | NO | | NULL | |
|
||||||
| EndTime | datetime | NO | | NULL | |
|
| EndTime | datetime | NO | | NULL | |
|
||||||
| Event | varchar(255) | NO | | NULL | |
|
| Event | varchar(255) | NO | | NULL | |
|
||||||
|
@ -234,14 +234,14 @@ mysql> DESCRIBE agendas;
|
||||||
DB_CreateTable ("CREATE TABLE IF NOT EXISTS agendas ("
|
DB_CreateTable ("CREATE TABLE IF NOT EXISTS agendas ("
|
||||||
"AgdCod INT NOT NULL AUTO_INCREMENT,"
|
"AgdCod INT NOT NULL AUTO_INCREMENT,"
|
||||||
"UsrCod INT NOT NULL,"
|
"UsrCod INT NOT NULL,"
|
||||||
"Hidden ENUM('N','Y') NOT NULL DEFAULT 'N',"
|
"Public ENUM('N','Y') NOT NULL DEFAULT 'N',"
|
||||||
"StartTime DATETIME NOT NULL,"
|
"StartTime DATETIME NOT NULL,"
|
||||||
"EndTime DATETIME NOT NULL,"
|
"EndTime DATETIME NOT NULL,"
|
||||||
"Event VARCHAR(255) NOT NULL,"
|
"Event VARCHAR(255) NOT NULL,"
|
||||||
"Location VARCHAR(255) NOT NULL,"
|
"Location VARCHAR(255) NOT NULL,"
|
||||||
"Txt TEXT NOT NULL,"
|
"Txt TEXT NOT NULL,"
|
||||||
"UNIQUE INDEX(AgdCod),"
|
"UNIQUE INDEX(AgdCod),"
|
||||||
"INDEX(UsrCod,Hidden))");
|
"INDEX(UsrCod,Public))");
|
||||||
|
|
||||||
/***** Table asg_grp *****/
|
/***** Table asg_grp *****/
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Reference in New Issue