diff --git a/swad_changelog.h b/swad_changelog.h
index 3f25299b0..5a07dcc19 100644
--- a/swad_changelog.h
+++ b/swad_changelog.h
@@ -231,13 +231,14 @@
/****************************** Public constants *****************************/
/*****************************************************************************/
-#define Log_PLATFORM_VERSION "SWAD 16.228.2 (2017-05-30)"
+#define Log_PLATFORM_VERSION "SWAD 16.229 (2017-05-30)"
#define CSS_FILE "swad16.226.css"
#define JS_FILE "swad16.206.3.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.229: May 30, 2017 Selection of groups also for listing of teachers. (220748 lines)
Version 16.228.2: May 30, 2017 Fixed bug in selection of users. (220726 lines)
Version 16.228.1: May 30, 2017 By default, photos are displayed in listing of users. (220722 lines)
Version 16.228: May 30, 2017 Non-editing teachers can not change their selection of groups.
diff --git a/swad_group.c b/swad_group.c
index 387a3e419..4c92c3efe 100644
--- a/swad_group.c
+++ b/swad_group.c
@@ -336,8 +336,8 @@ void Grp_ShowFormToSelectSeveralGroups (Act_Action_t NextAction)
extern const char *The_ClassFormBold[The_NUM_THEMES];
extern const char *Txt_Groups;
extern const char *Txt_All_groups;
- extern const char *Txt_Update_students_according_to_selected_groups;
- extern const char *Txt_Update_students;
+ extern const char *Txt_Update_users_according_to_selected_groups;
+ extern const char *Txt_Update_users;
unsigned NumGrpTyp;
bool ICanEdit;
@@ -393,11 +393,11 @@ void Grp_ShowFormToSelectSeveralGroups (Act_Action_t NextAction)
/***** Submit button *****/
fprintf (Gbl.F.Out,"
");
- Act_LinkFormSubmitAnimated (Txt_Update_students_according_to_selected_groups,
+ Act_LinkFormSubmitAnimated (Txt_Update_users_according_to_selected_groups,
The_ClassFormBold[Gbl.Prefs.Theme],
"CopyMessageToHiddenFields()");
- Lay_PutCalculateIconWithText (Txt_Update_students_according_to_selected_groups,
- Txt_Update_students);
+ Lay_PutCalculateIconWithText (Txt_Update_users_according_to_selected_groups,
+ Txt_Update_users);
fprintf (Gbl.F.Out,"
");
/***** End form *****/
diff --git a/swad_text.c b/swad_text.c
index 8eef69d89..0910bb394 100644
--- a/swad_text.c
+++ b/swad_text.c
@@ -49517,46 +49517,46 @@ const char *Txt_Update_messages =
"Atualizar mensagens";
#endif
-const char *Txt_Update_students =
+const char *Txt_Update_users =
#if L==1
- "Actualitzar estudiants";
+ "Actualitzar usuaris";
#elif L==2
- "Update Studenten";
+ "Update Benutzer";
#elif L==3
- "Update students";
+ "Update users";
#elif L==4
- "Actualizar estudiantes";
+ "Actualizar usuarios";
#elif L==5
"Mise à jour des étudiants";
#elif L==6
- "Actualizar estudiantes"; // Okoteve traducción
+ "Actualizar usuarios"; // Okoteve traducción
#elif L==7
- "Aggiornamento studenti";
+ "Aggiornamento utenti";
#elif L==8
- "Aktualizacja studentów";
+ "Zaktualizuj użytkowników";
#elif L==9
- "Atualizar os estudantes";
+ "Atualizar os utilizadores";
#endif
-const char *Txt_Update_students_according_to_selected_groups =
+const char *Txt_Update_users_according_to_selected_groups =
#if L==1
- "Actualitzar estudiants segons els grups seleccionats";
+ "Actualitzar usuaris segons els grups seleccionats";
#elif L==2
- "Update Studenten nach ausgewählten Gruppen";
+ "Update Benutzer nach ausgewählten Gruppen";
#elif L==3
- "Update students according to selected groups";
+ "Update users according to selected groups";
#elif L==4
- "Actualizar estudiantes según los grupos seleccionados";
+ "Actualizar usuarios según los grupos seleccionados";
#elif L==5
"Mise à jour des étudiants en fonction de groupes sélectionnes";
#elif L==6
- "Actualizar estudiantes según los grupos seleccionados"; // Okoteve traducción
+ "Actualizar usuarios según los grupos seleccionados"; // Okoteve traducción
#elif L==7
- "Aggiornamento studenti in base a gruppi selezionati";
+ "Aggiornamento utenti in base a gruppi selezionati";
#elif L==8
- "Update students according to selected groups"; // Potrzebujesz tlumaczenie
+ "Zaktualizuj użytkowników według wybranych grup";
#elif L==9
- "Atualizar os estudantes de acordo com grupos selecionados";
+ "Atualizar os utilizadores de acordo com grupos selecionados";
#endif
const char *Txt_UPLOAD_FILE_Invalid_link =
diff --git a/swad_user.c b/swad_user.c
index c5669ecc7..3d592b2ab 100644
--- a/swad_user.c
+++ b/swad_user.c
@@ -4044,9 +4044,8 @@ static void Usr_BuildQueryToGetUsrsLstCrs (Rol_Role_t Role,
*/
/***** If there are no groups selected, don't do anything *****/
- if (Role == Rol_STD &&
- (!Gbl.Usrs.ClassPhoto.AllGroups &&
- !Gbl.CurrentCrs.Grps.LstGrpsSel.NumGrps))
+ if (!Gbl.Usrs.ClassPhoto.AllGroups &&
+ !Gbl.CurrentCrs.Grps.LstGrpsSel.NumGrps)
{
Query[0] = '\0';
return;
@@ -4071,8 +4070,8 @@ static void Usr_BuildQueryToGetUsrsLstCrs (Rol_Role_t Role,
QueryFields,
Gbl.CurrentCrs.Crs.CrsCod,(unsigned) Role);
- /***** Select users in selected groups (only for students) *****/
- if (Role == Rol_STD && !Gbl.Usrs.ClassPhoto.AllGroups)
+ /***** Select users in selected groups *****/
+ if (!Gbl.Usrs.ClassPhoto.AllGroups)
{
/***** Get list of groups types in current course *****/
Grp_GetListGrpTypesInThisCrs (Grp_ONLY_GROUP_TYPES_WITH_GROUPS);
@@ -6508,9 +6507,13 @@ void Usr_ListAllDataTchs (void)
/***** Get list of teachers *****/
Usr_GetListUsrs (Gbl.Scope.Current,Rol_NET); // Non-editing teachers
Usr_GetListUsrs (Gbl.Scope.Current,Rol_TCH); // Teachers
- NumUsrs = Usr_GetTotalNumberOfUsersInCourses (Gbl.Scope.Current,
- 1 << Rol_NET |
- 1 << Rol_TCH);
+ if (Gbl.Scope.Current == Sco_SCOPE_CRS)
+ NumUsrs = Gbl.Usrs.LstUsrs[Rol_NET].NumUsrs +
+ Gbl.Usrs.LstUsrs[Rol_TCH].NumUsrs;
+ else
+ NumUsrs = Usr_GetTotalNumberOfUsersInCourses (Gbl.Scope.Current,
+ 1 << Rol_NET |
+ 1 << Rol_TCH);
if (NumUsrs)
{
@@ -7560,12 +7563,20 @@ void Usr_SeeTeachers (void)
Sco_GetScope ("ScopeUsr");
ICanViewRecords = (Gbl.Scope.Current == Sco_SCOPE_CRS);
+ /***** Get groups to show ******/
+ if (Gbl.Scope.Current == Sco_SCOPE_CRS)
+ Grp_GetParCodsSeveralGrpsToShowUsrs ();
+
/***** Get lists of teachers *****/
Usr_GetListUsrs (Gbl.Scope.Current,Rol_NET); // Non-editing teachers
Usr_GetListUsrs (Gbl.Scope.Current,Rol_TCH); // Teachers
- NumUsrs = Usr_GetTotalNumberOfUsersInCourses (Gbl.Scope.Current,
- 1 << Rol_NET |
- 1 << Rol_TCH);
+ if (Gbl.Scope.Current == Sco_SCOPE_CRS)
+ NumUsrs = Gbl.Usrs.LstUsrs[Rol_NET].NumUsrs +
+ Gbl.Usrs.LstUsrs[Rol_TCH].NumUsrs;
+ else
+ NumUsrs = Usr_GetTotalNumberOfUsersInCourses (Gbl.Scope.Current,
+ 1 << Rol_NET |
+ 1 << Rol_TCH);
/***** Start frame *****/
Lay_StartRoundFrame (NULL,Txt_ROLES_PLURAL_Abc[Rol_TCH][Usr_SEX_UNKNOWN],
@@ -7582,6 +7593,10 @@ void Usr_SeeTeachers (void)
Act_FormEnd ();
fprintf (Gbl.F.Out,"");
+ /***** Form to select groups *****/
+ if (Gbl.Scope.Current == Sco_SCOPE_CRS)
+ Grp_ShowFormToSelectSeveralGroups (ActLstTch);
+
/***** Start section with user list *****/
Lay_StartSection (Usr_USER_LIST_SECTION_ID);
@@ -7663,6 +7678,9 @@ void Usr_SeeTeachers (void)
/***** Free memory for teachers lists *****/
Usr_FreeUsrsList (Rol_TCH); // Teachers
Usr_FreeUsrsList (Rol_NET); // Non-editing teachers
+
+ /***** Free memory for list of selected groups *****/
+ Grp_FreeListCodSelectedGrps ();
}
/*****************************************************************************/
@@ -7932,9 +7950,13 @@ void Usr_SeeTchClassPhotoPrn (void)
/***** Get list of teachers *****/
Usr_GetListUsrs (Gbl.Scope.Current,Rol_NET); // Non-editing teachers
Usr_GetListUsrs (Gbl.Scope.Current,Rol_TCH); // Teachers
- NumUsrs = Usr_GetTotalNumberOfUsersInCourses (Gbl.Scope.Current,
- 1 << Rol_NET |
- 1 << Rol_TCH);
+ if (Gbl.Scope.Current == Sco_SCOPE_CRS)
+ NumUsrs = Gbl.Usrs.LstUsrs[Rol_NET].NumUsrs +
+ Gbl.Usrs.LstUsrs[Rol_TCH].NumUsrs;
+ else
+ NumUsrs = Usr_GetTotalNumberOfUsersInCourses (Gbl.Scope.Current,
+ 1 << Rol_NET |
+ 1 << Rol_TCH);
if (NumUsrs)
{
@@ -8166,14 +8188,16 @@ void Usr_ShowWarningNoUsersFound (Rol_Role_t Role)
extern const char *Txt_Register_students;
extern const char *Txt_Register_teacher;
- if (Role == Rol_STD && // No students found
+ if (Gbl.Usrs.ClassPhoto.AllGroups && // All groups selected
+ Role == Rol_STD && // No students found
Gbl.Usrs.Me.LoggedRole == Rol_TCH) // Course selected and I am logged as teacher
/***** Show alert and button to enrol students *****/
Ale_ShowAlertAndButton (Ale_WARNING,Txt_No_users_found[Rol_STD],
ActReqEnrSevStd,NULL,NULL,NULL,
Lay_CREATE_BUTTON,Txt_Register_students);
- else if (Role == Rol_TCH && // No teachers found
+ else if (Gbl.Usrs.ClassPhoto.AllGroups && // All groups selected
+ Role == Rol_TCH && // No teachers found
Gbl.CurrentCrs.Crs.CrsCod > 0 && // Course selected
Gbl.Usrs.Me.LoggedRole >= Rol_DEG_ADM) // I am an administrator
/***** Show alert and button to enrol students *****/