diff --git a/swad_agenda.c b/swad_agenda.c
index 1ec64b62..966d5286 100644
--- a/swad_agenda.c
+++ b/swad_agenda.c
@@ -74,6 +74,8 @@ static void Agd_ShowEvents (Agd_AgendaType_t AgendaType);
static void Agd_PutIconToCreateNewEvent (void);
static void Agd_PutButtonToCreateNewEvent (void);
static void Agd_PutParamsToCreateNewEvent (void);
+static void Agd_ShowSelectorWhichEvents (void);
+static void Agd_GetParamWhichEvents (void);
static void Agd_ShowOneEvent (Agd_AgendaType_t AgendaType,long AgdCod);
static void Agd_WriteEventAuthor (struct AgendaEvent *AgdEvent);
static void Agd_GetParamEventOrderType (void);
@@ -111,6 +113,10 @@ void Agd_ShowUsrAgenda (void)
void Agd_ShowMyAgenda (void)
{
+ /***** Get whether to show all events or only my events ******/
+ if (Gbl.Usrs.Me.AvailableRoles & (1 << Rol_TEACHER)) // I am a teacher in some courses
+ Agd_GetParamWhichEvents ();
+
/***** Show all my events *****/
Agd_ShowEvents (Agd_MY_AGENDA);
}
@@ -155,19 +161,26 @@ static void Agd_ShowEvents (Agd_AgendaType_t AgendaType)
if (Pagination.MoreThanOnePage)
Pag_WriteLinksToPagesCentered (WhatPaginate[AgendaType],0,&Pagination);
- /***** Start frame *****/
switch (AgendaType)
{
case Agd_USR_AGENDA:
+ /***** Start frame *****/
sprintf (Gbl.Title,Txt_Agenda_USER,Gbl.Usrs.Other.UsrDat.FullName); // TODO: Need translation!!!!!
Lay_StartRoundFrame ("100%",Gbl.Title,
NULL,
Hlp_PROFILE_Agenda); // TODO: Change
break;
case Agd_MY_AGENDA:
+ /***** Start frame *****/
Lay_StartRoundFrame ("100%",Txt_My_agenda,
Agd_PutIconToCreateNewEvent,
Hlp_PROFILE_Agenda);
+
+ /***** Put form to choice whether to show
+ all events or only public events *****/
+ Act_FormStart (ActSeeMyAgd);
+ Agd_ShowSelectorWhichEvents ();
+ Act_FormEnd ();
break;
}
@@ -279,6 +292,57 @@ static void Agd_PutParamsToCreateNewEvent (void)
Pag_PutHiddenParamPagNum (Gbl.Pag.CurrentPage);
}
+/*****************************************************************************/
+/** Show selector to choice whether to show all events or only public events */
+/*****************************************************************************/
+
+static void Agd_ShowSelectorWhichEvents (void)
+ {
+ extern const char *Txt_Show_WHICH_events[2];
+ Agd_WhichEvents_t WhichEvents;
+
+ fprintf (Gbl.F.Out,"
");
+ }
+
+/*****************************************************************************/
+/************* Get whether to show all events or only my events **************/
+/*****************************************************************************/
+
+static void Agd_GetParamWhichEvents (void)
+ {
+ char UnsignedStr[10+1];
+ unsigned UnsignedNum;
+
+ /***** Get which events (all events or my events) *****/
+ Par_GetParToText ("WhichEvents",UnsignedStr,1);
+ if (UnsignedStr[0])
+ {
+ if (sscanf (UnsignedStr,"%u",&UnsignedNum) != 1)
+ Lay_ShowErrorAndExit ("Which events to show is missing.");
+ if (UnsignedNum >= 2)
+ Lay_ShowErrorAndExit ("Wrong parameter with which events to show.");
+ Gbl.Agenda.WhichEvents = (Agd_WhichEvents_t) UnsignedNum;
+ }
+ }
+
/*****************************************************************************/
/******************************* Show one event ******************************/
/*****************************************************************************/
@@ -560,19 +624,28 @@ static void Agd_GetListEvents (Agd_AgendaType_t AgendaType)
switch (AgendaType)
{
case Agd_USR_AGENDA:
- sprintf (Query,"SELECT AgdCod"
- " FROM agendas"
+ sprintf (Query,"SELECT AgdCod FROM agendas"
" WHERE UsrCod='%ld' AND Public='Y' AND Hidden='N'"
" AND EndTime>NOW()" // Only present and future events
" ORDER BY %s",
Gbl.Usrs.Other.UsrDat.UsrCod,OrderBySubQuery);
break;
case Agd_MY_AGENDA:
- sprintf (Query,"SELECT AgdCod"
- " FROM agendas"
- " WHERE UsrCod='%ld'"
- " ORDER BY %s",
- Gbl.Usrs.Me.UsrDat.UsrCod,OrderBySubQuery);
+ switch (Gbl.Agenda.WhichEvents)
+ {
+ case Agd_ALL_EVENTS:
+ sprintf (Query,"SELECT AgdCod FROM agendas"
+ " WHERE UsrCod='%ld'"
+ " ORDER BY %s",
+ Gbl.Usrs.Me.UsrDat.UsrCod,OrderBySubQuery);
+ break;
+ case Agd_ONLY_PUBLIC_EVENTS:
+ sprintf (Query,"SELECT AgdCod FROM agendas"
+ " WHERE UsrCod='%ld' AND Public='Y'"
+ " ORDER BY %s",
+ Gbl.Usrs.Me.UsrDat.UsrCod,OrderBySubQuery);
+ break;
+ }
break;
}
NumRows = DB_QuerySELECT (Query,&mysql_res,"can not get agenda events");
diff --git a/swad_agenda.h b/swad_agenda.h
index 8c6e0e48..736ca039 100644
--- a/swad_agenda.h
+++ b/swad_agenda.h
@@ -56,6 +56,12 @@ struct AgendaEvent
char Location[Agd_MAX_LENGTH_LOCATION+1];
};
+typedef enum
+ {
+ Agd_ALL_EVENTS,
+ Agd_ONLY_PUBLIC_EVENTS,
+ } Agd_WhichEvents_t;
+
typedef enum
{
Agd_ORDER_BY_START_DATE = 0,
diff --git a/swad_changelog.h b/swad_changelog.h
index ae9f6d6e..de8274b4 100644
--- a/swad_changelog.h
+++ b/swad_changelog.h
@@ -179,19 +179,18 @@
// TODO: When teacher sees "No hay estudiantes", put a button to add students
// TODO: When admin sees "No hay profesores", put a button to add teachers
-// TODO: Sólo horas y minutos en la agenda
-
/*****************************************************************************/
/****************************** Public constants *****************************/
/*****************************************************************************/
-#define Log_PLATFORM_VERSION "SWAD 16.84.2 (2016-12-03)"
+#define Log_PLATFORM_VERSION "SWAD 16.85 (2016-12-03)"
#define CSS_FILE "swad16.82.2.css"
#define JS_FILE "swad16.84.2.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.85: Dec 03, 2016 Form to choice between all events / only public events in agenda. (209721 lines)
Version 16.84.2: Dec 03, 2016 Only hours and minutes (seconds = 0) in agenda events. (209606 lines)
Version 16.84.1: Dec 03, 2016 Remove user's agenda when removing user's account. (? lines)
Version 16.84: Dec 03, 2016 Agenda events can be hidden. (209580 lines)
diff --git a/swad_global.c b/swad_global.c
index d8784fd5..fcbc79e1 100644
--- a/swad_global.c
+++ b/swad_global.c
@@ -418,6 +418,9 @@ void Gbl_InitializeGlobals (void)
Gbl.FileBrowser.FileType = Brw_IS_UNKNOWN;
Gbl.FileBrowser.UploadingWithDropzone = false;
+ /* Agenda */
+ Gbl.Agenda.WhichEvents = Agd_ALL_EVENTS;
+
/* To alternate colors where listing rows */
Gbl.RowEvenOdd = 0;
Gbl.ColorRows[0] = "COLOR0"; // Darker
diff --git a/swad_global.h b/swad_global.h
index de6093df..e875143c 100644
--- a/swad_global.h
+++ b/swad_global.h
@@ -412,6 +412,7 @@ struct Globals
long *LstAgdCods; // List of agenda codes
Agd_Order_t SelectedOrderType;
long AgdCodToEdit; // Used as parameter in contextual links
+ Agd_WhichEvents_t WhichEvents; // All events / only public events
} Agenda;
struct
{
diff --git a/swad_group.c b/swad_group.c
index 85e07553..58bca87b 100644
--- a/swad_group.c
+++ b/swad_group.c
@@ -4222,7 +4222,7 @@ void Grp_ShowSelectorWhichGrps (void)
}
/*****************************************************************************/
-/***** Get whether to show only my groups or all groups or in timetable ******/
+/************* Get whether to show only my groups or all groups **************/
/*****************************************************************************/
void Grp_GetParamWhichGrps (void)
@@ -4235,14 +4235,14 @@ void Grp_GetParamWhichGrps (void)
{
FirstTime = false;
- /***** Get groups type (my groups or all groups) *****/
+ /***** Get which grous (my groups or all groups) *****/
Par_GetParToText ("WhichGrps",UnsignedStr,1);
if (UnsignedStr[0])
{
if (sscanf (UnsignedStr,"%u",&UnsignedNum) != 1)
- Lay_ShowErrorAndExit ("Types of groups to show is missing.");
+ Lay_ShowErrorAndExit ("Which groups to show is missing.");
if (UnsignedNum >= 2)
- Lay_ShowErrorAndExit ("Wrong types of groups to show.");
+ Lay_ShowErrorAndExit ("Wrong parameter with which groups to show.");
Gbl.CurrentCrs.Grps.WhichGrps = (Grp_WhichGroups_t) UnsignedNum;
}
else // This parameter does not exist ==> set default value
diff --git a/swad_text.c b/swad_text.c
index 23665eda..0d9a0c18 100644
--- a/swad_text.c
+++ b/swad_text.c
@@ -36851,6 +36851,49 @@ const char *Txt_Show_list =
"Mostrar lista";
#endif
+const char *Txt_Show_WHICH_events[2] =
+ {
+#if L==1
+ "Tots els esdeveniments"
+#elif L==2
+ "Alle Ereignisse"
+#elif L==3
+ "All events"
+#elif L==4
+ "Todos los eventos"
+#elif L==5
+ "Tous les événements"
+#elif L==6
+ "Todos los eventos" // Okoteve traducción
+#elif L==7
+ "Tutti i eventi"
+#elif L==8
+ "Wszystkie imprezy"
+#elif L==9
+ "Todos os eventos"
+#endif
+ ,
+#if L==1
+ "Només els esdeveniments públics"
+#elif L==2
+ "Nur öffentliche Ereignisse"
+#elif L==3
+ "Only public events"
+#elif L==4
+ "Solo eventos públicos"
+#elif L==5
+ "Uniquement les événements publics"
+#elif L==6
+ "Solo eventos públicos" // Okoteve traducción
+#elif L==7
+ "Solo eventi pubblici"
+#elif L==8
+ "Tylko wydarzenia publiczne"
+#elif L==9
+ "Apenas eventos públicos"
+#endif
+ };
+
const char *Txt_Show_WHICH_groups[2] =
{
#if L==1