diff --git a/sql/swad.sql b/sql/swad.sql
index 14f429a7e..eadf81098 100644
--- a/sql/swad.sql
+++ b/sql/swad.sql
@@ -41,14 +41,14 @@ CREATE TABLE IF NOT EXISTS actions_MFU (
CREATE TABLE IF NOT EXISTS agendas (
AgdCod INT NOT NULL AUTO_INCREMENT,
UsrCod INT NOT NULL,
- Hidden ENUM('N','Y') NOT NULL DEFAULT 'N',
+ Public ENUM('N','Y') NOT NULL DEFAULT 'N',
StartTime DATETIME NOT NULL,
EndTime DATETIME NOT NULL,
Event VARCHAR(255) NOT NULL,
Location VARCHAR(255) NOT NULL,
Txt TEXT NOT NULL,
UNIQUE INDEX(AgdCod),
- INDEX(UsrCod,Hidden));
+ INDEX(UsrCod,Public));
--
-- Table ann_seen: stores users who have seen global announcements
--
diff --git a/swad_action.c b/swad_action.c
index 3dc931d7c..e37da6c8e 100644
--- a/swad_action.c
+++ b/swad_action.c
@@ -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" },
/* 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" },
- /* ActSeeMyAgd */{1602, 5,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" },
- /* ActReqEdiRecCom */{ 285, 7,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" },
- /* ActAdmBrf */{ 23, 9,TabPrf,ActAdmBrf ,0x1FE,0x1FE,0x1FE,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Brw_ShowFileBrowserOrWorks ,"pendrive64x64.gif" },
+ /* ActSeeMyAgd */{1602, 4,TabPrf,ActSeeMyAgd ,0x1FE,0x1FE,0x1FE,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Agd_ShowMyAgenda ,"date64x64.gif" },
+ /* ActFrmMyAcc */{ 36, 5,TabPrf,ActFrmMyAcc ,0x1FF,0x1FF,0x1FF,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Acc_ShowFormMyAccount ,"arroba64x64.gif" },
+ /* ActReqEdiRecCom */{ 285, 6,TabPrf,ActReqEdiRecCom ,0x1FE,0x1FE,0x1FE,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Rec_ShowFormMySharedRecord ,"card64x64.gif" },
+ /* ActEdiPrf */{ 673, 7,TabPrf,ActEdiPrf ,0x1FF,0x1FF,0x1FF,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Pre_EditPrefs ,"heart64x64.gif" },
+ /* ActAdmBrf */{ 23, 8,TabPrf,ActAdmBrf ,0x1FE,0x1FE,0x1FE,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Brw_ShowFileBrowserOrWorks ,"pendrive64x64.gif" },
// Actions not in menu:
/* 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},
/* 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},
- /* ActHidEvtMyAgd */{1609,-1,TabUnk,ActSeeMyAgd ,0x1FE,0x1FE,0x1FE,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Agd_HideEvent ,NULL},
- /* ActShoEvtMyAgd */{1610,-1,TabUnk,ActSeeMyAgd ,0x1FE,0x1FE,0x1FE,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Agd_ShowEvent ,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_SetEventPublic ,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},
diff --git a/swad_agenda.c b/swad_agenda.c
index 046e77aa1..fa3a4ad0a 100644
--- a/swad_agenda.c
+++ b/swad_agenda.c
@@ -78,7 +78,7 @@ static void Agd_ShowOneEvent (Agd_AgendaType_t AgendaType,long AgdCod);
static void Agd_WriteEventAuthor (struct AgendaEvent *AgdEvent);
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_GetListEvents (Agd_AgendaType_t AgendaType);
static void Agd_GetDataOfEventByCod (struct AgendaEvent *AgdEvent);
@@ -315,8 +315,8 @@ static void Agd_ShowOneEvent (Agd_AgendaType_t AgendaType,long AgdCod)
""
"",
UniqueId,
- AgdEvent.Hidden ? Dat_TimeStatusClassHidden[AgdEvent.TimeStatus] :
- Dat_TimeStatusClassVisible[AgdEvent.TimeStatus],
+ AgdEvent.Public ? Dat_TimeStatusClassVisible[AgdEvent.TimeStatus] :
+ Dat_TimeStatusClassHidden[AgdEvent.TimeStatus],
Gbl.RowEvenOdd,
UniqueId,AgdEvent.TimeUTC[Agd_START_TIME],Txt_Today);
@@ -328,8 +328,8 @@ static void Agd_ShowOneEvent (Agd_AgendaType_t AgendaType,long AgdCod)
""
"",
UniqueId,
- AgdEvent.Hidden ? Dat_TimeStatusClassHidden[AgdEvent.TimeStatus] :
- Dat_TimeStatusClassVisible[AgdEvent.TimeStatus],
+ AgdEvent.Public ? Dat_TimeStatusClassVisible[AgdEvent.TimeStatus] :
+ Dat_TimeStatusClassHidden[AgdEvent.TimeStatus],
Gbl.RowEvenOdd,
UniqueId,AgdEvent.TimeUTC[Agd_END_TIME],Txt_Today);
@@ -338,8 +338,8 @@ static void Agd_ShowOneEvent (Agd_AgendaType_t AgendaType,long AgdCod)
"
%s
"
"",
Gbl.RowEvenOdd,
- AgdEvent.Hidden ? "ASG_TITLE_LIGHT" :
- "ASG_TITLE",
+ AgdEvent.Public ? "ASG_TITLE" :
+ "ASG_TITLE_LIGHT",
AgdEvent.Event);
/* Event */
@@ -348,8 +348,8 @@ static void Agd_ShowOneEvent (Agd_AgendaType_t AgendaType,long AgdCod)
""
"",
Gbl.RowEvenOdd,
- AgdEvent.Hidden ? "ASG_TITLE_LIGHT" :
- "ASG_TITLE",
+ AgdEvent.Public ? "ASG_TITLE" :
+ "ASG_TITLE_LIGHT",
AgdEvent.Location);
/***** 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 */
if (AgendaType == Agd_MY_AGENDA)
- Agd_PutFormsToRemEditOneEvent (AgdEvent.AgdCod,AgdEvent.Hidden);
+ Agd_PutFormsToRemEditOneEvent (AgdEvent.AgdCod,AgdEvent.Public);
fprintf (Gbl.F.Out,"");
@@ -379,8 +379,8 @@ static void Agd_ShowOneEvent (Agd_AgendaType_t AgendaType,long AgdCod)
""
""
"",
- AgdEvent.Hidden ? "DAT_LIGHT" :
- "DAT",
+ AgdEvent.Public ? "DAT" :
+ "DAT_LIGHT",
Txt);
Gbl.RowEvenOdd = 1 - Gbl.RowEvenOdd;
@@ -422,8 +422,8 @@ static void Agd_WriteEventAuthor (struct AgendaEvent *AgdEvent)
Str_LimitLengthHTMLStr (FirstName,9);
Str_LimitLengthHTMLStr (Surnames,9);
fprintf (Gbl.F.Out,"%s %s",
- AgdEvent->Hidden ? "MSG_AUT_LIGHT" :
- "MSG_AUT",
+ AgdEvent->Public ? "MSG_AUT" :
+ "MSG_AUT_LIGHT",
FirstName,Surnames);
/***** Free memory used for user's data *****/
@@ -459,7 +459,7 @@ void Agd_PutHiddenParamEventsOrderType (void)
/******************* 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_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,
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 *****/
Lay_PutContextualLink (ActEdiOneEvtMyAgd,Agd_PutParams,
"edit64x64.png",
Txt_Edit,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,"");
}
@@ -539,8 +542,8 @@ static void Agd_GetListEvents (Agd_AgendaType_t AgendaType)
case Agd_USR_AGENDA:
sprintf (Query,"SELECT AgdCod"
" FROM agendas"
- " WHERE UsrCod='%ld' AND Hidden='N'"
- " AND EndTime>NOW()" // Only not obsolete events
+ " WHERE UsrCod='%ld' AND Public='Y'"
+ " AND EndTime>NOW()" // Only present and future events
" ORDER BY %s",
Gbl.Usrs.Other.UsrDat.UsrCod,OrderBySubQuery);
break;
@@ -591,7 +594,7 @@ static void Agd_GetDataOfEventByCod (struct AgendaEvent *AgdEvent)
char Query[1024];
/***** Build query *****/
- sprintf (Query,"SELECT AgdCod,UsrCod,Hidden,"
+ sprintf (Query,"SELECT AgdCod,UsrCod,Public,"
"UNIX_TIMESTAMP(StartTime),"
"UNIX_TIMESTAMP(EndTime),"
"NOW()>EndTime," // Past event?
@@ -618,7 +621,7 @@ static void Agd_GetDataOfEvent (struct AgendaEvent *AgdEvent,const char *Query)
/***** Clear all event data *****/
AgdEvent->AgdCod = -1L;
AgdEvent->UsrCod = -1L;
- AgdEvent->Hidden = false;
+ AgdEvent->Public = false;
AgdEvent->TimeUTC[Agd_START_TIME] =
AgdEvent->TimeUTC[Agd_END_TIME ] = (time_t) 0;
AgdEvent->TimeStatus = Dat_FUTURE;
@@ -633,7 +636,7 @@ static void Agd_GetDataOfEvent (struct AgendaEvent *AgdEvent,const char *Query)
/* Get row:
row[0] AgdCod
row[1] UsrCod
- row[2] Hidden
+ row[2] Public
row[3] UNIX_TIMESTAMP(StartTime)
row[4] UNIX_TIMESTAMP(EndTime)
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]) */
AgdEvent->UsrCod = Str_ConvertStrCodToLongCod (row[1]);
- /* Get whether the event is hidden or not (row[2]) */
- AgdEvent->Hidden = (row[2][0] == 'Y');
+ /* Get whether the event is public or not (row[2]) */
+ AgdEvent->Public = (row[2][0] == 'Y');
/* Get start date (row[3] holds the start UTC time) */
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;
char Query[512];
@@ -835,11 +838,11 @@ void Agd_HideEvent (void)
AgdEvent.UsrCod = Gbl.Usrs.Me.UsrDat.UsrCod;
Agd_GetDataOfEventByCod (&AgdEvent);
- /***** Hide event *****/
- sprintf (Query,"UPDATE agendas SET Hidden='Y'"
+ /***** Set event private *****/
+ sprintf (Query,"UPDATE agendas SET Public='N'"
" WHERE AgdCod='%ld' AND UsrCod='%ld'",
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 *****/
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;
char Query[256];
@@ -867,8 +870,8 @@ void Agd_ShowEvent (void)
AgdEvent.UsrCod = Gbl.Usrs.Me.UsrDat.UsrCod;
Agd_GetDataOfEventByCod (&AgdEvent);
- /***** Hide event *****/
- sprintf (Query,"UPDATE agendas SET Hidden='N'"
+ /***** Set event public *****/
+ sprintf (Query,"UPDATE agendas SET Public='Y'"
" WHERE AgdCod='%ld' AND UsrCod='%ld'",
AgdEvent.AgdCod,Gbl.Usrs.Me.UsrDat.UsrCod);
DB_QueryUPDATE (Query,"can not show event");
diff --git a/swad_agenda.h b/swad_agenda.h
index 5e99e94a2..d1151a72e 100644
--- a/swad_agenda.h
+++ b/swad_agenda.h
@@ -47,7 +47,7 @@ typedef enum
struct AgendaEvent
{
long AgdCod;
- bool Hidden;
+ bool Public;
long UsrCod;
time_t TimeUTC[Agd_NUM_DATES];
Dat_TimeStatus_t TimeStatus;
@@ -77,8 +77,8 @@ void Agd_FreeListEvents (void);
long Agd_GetParamAgdCod (void);
void Agd_AskRemEvent (void);
void Agd_RemoveEvent (void);
-void Agd_HideEvent (void);
-void Agd_ShowEvent (void);
+void Agd_SetEventPrivate (void);
+void Agd_SetEventPublic (void);
void Agd_RecFormEvent (void);
void Agd_RemoveUsrEvents (long UsrCod);
unsigned Agd_GetNumEventsFromUsr (long UsrCod);
diff --git a/swad_changelog.h b/swad_changelog.h
index 950ff3767..954b9b3b7 100644
--- a/swad_changelog.h
+++ b/swad_changelog.h
@@ -187,13 +187,22 @@
/****************************** 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 JS_FILE "swad16.46.1.js"
// 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 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.
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)
diff --git a/swad_database.c b/swad_database.c
index 0aa5b55d2..7fc4dbdb1 100644
--- a/swad_database.c
+++ b/swad_database.c
@@ -222,7 +222,7 @@ mysql> DESCRIBE agendas;
+-----------+---------------+------+-----+---------+----------------+
| AgdCod | int(11) | NO | PRI | NULL | auto_increment |
| UsrCod | int(11) | NO | MUL | NULL | |
-| Hidden | enum('N','Y') | NO | | N | |
+| Public | enum('N','Y') | NO | | N | |
| StartTime | datetime | NO | | NULL | |
| EndTime | datetime | NO | | NULL | |
| Event | varchar(255) | NO | | NULL | |
@@ -234,14 +234,14 @@ mysql> DESCRIBE agendas;
DB_CreateTable ("CREATE TABLE IF NOT EXISTS agendas ("
"AgdCod INT NOT NULL AUTO_INCREMENT,"
"UsrCod INT NOT NULL,"
- "Hidden ENUM('N','Y') NOT NULL DEFAULT 'N',"
+ "Public ENUM('N','Y') NOT NULL DEFAULT 'N',"
"StartTime DATETIME NOT NULL,"
"EndTime DATETIME NOT NULL,"
"Event VARCHAR(255) NOT NULL,"
"Location VARCHAR(255) NOT NULL,"
"Txt TEXT NOT NULL,"
"UNIQUE INDEX(AgdCod),"
- "INDEX(UsrCod,Hidden))");
+ "INDEX(UsrCod,Public))");
/***** Table asg_grp *****/
/*