mirror of
https://github.com/acanas/swad-core.git
synced 2024-06-14 12:44:09 +02:00
Version 16.71
This commit is contained in:
parent
bff6e25886
commit
2ea00a37be
|
@ -1925,12 +1925,18 @@ static void Att_ListAttStudents (struct AttendanceEvent *Att)
|
||||||
unsigned NumStd;
|
unsigned NumStd;
|
||||||
struct UsrData UsrDat;
|
struct UsrData UsrDat;
|
||||||
|
|
||||||
/***** Form to select groups *****/
|
/***** Get groups to show ******/
|
||||||
Grp_ShowFormToSelectSeveralGroups (ActSeeOneAtt);
|
Grp_GetParCodsSeveralGrpsToShowUsrs ();
|
||||||
|
|
||||||
/***** Get and order list of students in this course *****/
|
/***** Get and order list of students in this course *****/
|
||||||
Usr_GetListUsrs (Rol_STUDENT,Sco_SCOPE_CRS);
|
Usr_GetListUsrs (Rol_STUDENT,Sco_SCOPE_CRS);
|
||||||
|
|
||||||
|
/***** Start frame *****/
|
||||||
|
Lay_StartRoundFrame (NULL,Txt_Attendance,NULL,Hlp_USERS_Attendance);
|
||||||
|
|
||||||
|
/***** Form to select groups *****/
|
||||||
|
Grp_ShowFormToSelectSeveralGroups (ActSeeOneAtt);
|
||||||
|
|
||||||
if (Gbl.Usrs.LstUsrs[Rol_STUDENT].NumUsrs)
|
if (Gbl.Usrs.LstUsrs[Rol_STUDENT].NumUsrs)
|
||||||
{
|
{
|
||||||
/***** Get my preference about photos in users' list for current course *****/
|
/***** Get my preference about photos in users' list for current course *****/
|
||||||
|
@ -1945,10 +1951,8 @@ static void Att_ListAttStudents (struct AttendanceEvent *Att)
|
||||||
Grp_PutParamsCodGrps ();
|
Grp_PutParamsCodGrps ();
|
||||||
|
|
||||||
/***** List students' data *****/
|
/***** List students' data *****/
|
||||||
/* Header */
|
fprintf (Gbl.F.Out,"<table class=\"FRAME_TBL CELLS_PAD_2\">"
|
||||||
Lay_StartRoundFrameTable (NULL,Txt_Attendance,
|
"<tr>"
|
||||||
NULL,Hlp_USERS_Attendance,2);
|
|
||||||
fprintf (Gbl.F.Out,"<tr>"
|
|
||||||
"<th></th>"
|
"<th></th>"
|
||||||
"<th></th>"
|
"<th></th>"
|
||||||
"<th></th>");
|
"<th></th>");
|
||||||
|
@ -1982,8 +1986,10 @@ static void Att_ListAttStudents (struct AttendanceEvent *Att)
|
||||||
Att_WriteRowStdToCallTheRoll (NumStd + 1,&UsrDat,Att);
|
Att_WriteRowStdToCallTheRoll (NumStd + 1,&UsrDat,Att);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Send button and end frame */
|
fprintf (Gbl.F.Out,"</table>");
|
||||||
Lay_EndRoundFrameTableWithButton (Lay_CONFIRM_BUTTON,Txt_Save);
|
|
||||||
|
/* Send button */
|
||||||
|
Lay_PutConfirmButton (Txt_Save);
|
||||||
|
|
||||||
/***** End form *****/
|
/***** End form *****/
|
||||||
Act_FormEnd ();
|
Act_FormEnd ();
|
||||||
|
@ -1994,6 +2000,9 @@ static void Att_ListAttStudents (struct AttendanceEvent *Att)
|
||||||
else
|
else
|
||||||
Usr_ShowWarningNoUsersFound (Rol_STUDENT);
|
Usr_ShowWarningNoUsersFound (Rol_STUDENT);
|
||||||
|
|
||||||
|
/***** End frame *****/
|
||||||
|
Lay_EndRoundFrame ();
|
||||||
|
|
||||||
/***** Free memory for students list *****/
|
/***** Free memory for students list *****/
|
||||||
Usr_FreeUsrsList (Rol_STUDENT);
|
Usr_FreeUsrsList (Rol_STUDENT);
|
||||||
|
|
||||||
|
@ -2592,6 +2601,12 @@ void Usr_ReqListStdsAttendanceCrs (void)
|
||||||
and preference about view photos *****/
|
and preference about view photos *****/
|
||||||
Usr_GetAndUpdatePrefsAboutUsrList ();
|
Usr_GetAndUpdatePrefsAboutUsrList ();
|
||||||
|
|
||||||
|
/***** Get groups to show ******/
|
||||||
|
Grp_GetParCodsSeveralGrpsToShowUsrs ();
|
||||||
|
|
||||||
|
/***** Get and order lists of users from current course *****/
|
||||||
|
Usr_GetListUsrs (Rol_STUDENT,Sco_SCOPE_CRS);
|
||||||
|
|
||||||
/***** Start frame *****/
|
/***** Start frame *****/
|
||||||
Lay_StartRoundFrame (NULL,Txt_ROLES_PLURAL_Abc[Rol_STUDENT][Usr_SEX_UNKNOWN],
|
Lay_StartRoundFrame (NULL,Txt_ROLES_PLURAL_Abc[Rol_STUDENT][Usr_SEX_UNKNOWN],
|
||||||
NULL,NULL);
|
NULL,NULL);
|
||||||
|
@ -2599,9 +2614,6 @@ void Usr_ReqListStdsAttendanceCrs (void)
|
||||||
/***** Form to select groups *****/
|
/***** Form to select groups *****/
|
||||||
Grp_ShowFormToSelectSeveralGroups (ActReqLstStdAtt);
|
Grp_ShowFormToSelectSeveralGroups (ActReqLstStdAtt);
|
||||||
|
|
||||||
/***** Get and order lists of users from current course *****/
|
|
||||||
Usr_GetListUsrs (Rol_STUDENT,Sco_SCOPE_CRS);
|
|
||||||
|
|
||||||
if (Gbl.Usrs.LstUsrs[Rol_STUDENT].NumUsrs)
|
if (Gbl.Usrs.LstUsrs[Rol_STUDENT].NumUsrs)
|
||||||
{
|
{
|
||||||
if (Usr_GetIfShowBigList (Gbl.Usrs.LstUsrs[Rol_STUDENT].NumUsrs,NULL))
|
if (Usr_GetIfShowBigList (Gbl.Usrs.LstUsrs[Rol_STUDENT].NumUsrs,NULL))
|
||||||
|
|
|
@ -168,17 +168,22 @@
|
||||||
|
|
||||||
// TODO: Change forms to change my webs / social networks to one unique form with a "Save changes" button
|
// TODO: Change forms to change my webs / social networks to one unique form with a "Save changes" button
|
||||||
|
|
||||||
|
// TODO: In USERS > Attendance > Select event, if the list of users is big, the user should be requested to see big list in the same way that it is made in other options
|
||||||
|
|
||||||
|
// TODO: Check help on ASSESSMENT > Tests > Test results
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/****************************** Public constants *****************************/
|
/****************************** Public constants *****************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
#define Log_PLATFORM_VERSION "SWAD 16.70.5 (2016-11-24)"
|
#define Log_PLATFORM_VERSION "SWAD 16.71 (2016-11-25)"
|
||||||
#define CSS_FILE "swad16.69.css"
|
#define CSS_FILE "swad16.69.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.71: Nov 25, 2016 Fixed bugs and changes in layout related with selection of groups. (207560 lines)
|
||||||
Version 16.70.5: Nov 24, 2016 Changes in layout of attendance list. (207549 lines)
|
Version 16.70.5: Nov 24, 2016 Changes in layout of attendance list. (207549 lines)
|
||||||
Version 16.70.4: Nov 24, 2016 Changes in layout of students' list. (207547 lines)
|
Version 16.70.4: Nov 24, 2016 Changes in layout of students' list. (207547 lines)
|
||||||
Version 16.70.3: Nov 24, 2016 Changes in layout of selection of students to view homework. (207547 lines)
|
Version 16.70.3: Nov 24, 2016 Changes in layout of selection of students to view homework. (207547 lines)
|
||||||
|
|
|
@ -3040,6 +3040,7 @@ void Brw_AskEditWorksCrs (void)
|
||||||
{
|
{
|
||||||
extern const char *Txt_Users;
|
extern const char *Txt_Users;
|
||||||
extern const char *Txt_View_homework;
|
extern const char *Txt_View_homework;
|
||||||
|
unsigned NumTotalUsrs;
|
||||||
|
|
||||||
/***** Get parameters related to file browser *****/
|
/***** Get parameters related to file browser *****/
|
||||||
Brw_GetParAndInitFileBrowser ();
|
Brw_GetParAndInitFileBrowser ();
|
||||||
|
@ -3049,21 +3050,24 @@ void Brw_AskEditWorksCrs (void)
|
||||||
and preference about view photos *****/
|
and preference about view photos *****/
|
||||||
Usr_GetAndUpdatePrefsAboutUsrList ();
|
Usr_GetAndUpdatePrefsAboutUsrList ();
|
||||||
|
|
||||||
|
/***** Get groups to show ******/
|
||||||
|
Grp_GetParCodsSeveralGrpsToShowUsrs ();
|
||||||
|
|
||||||
|
/***** Get and order lists of users from this course *****/
|
||||||
|
Usr_GetListUsrs (Rol_TEACHER,Sco_SCOPE_CRS);
|
||||||
|
Usr_GetListUsrs (Rol_STUDENT,Sco_SCOPE_CRS);
|
||||||
|
NumTotalUsrs = Gbl.Usrs.LstUsrs[Rol_TEACHER].NumUsrs +
|
||||||
|
Gbl.Usrs.LstUsrs[Rol_STUDENT].NumUsrs;
|
||||||
|
|
||||||
/***** Draw class photos to select users *****/
|
/***** Draw class photos to select users *****/
|
||||||
Lay_StartRoundFrame (NULL,Txt_Users,NULL,NULL);
|
Lay_StartRoundFrame (NULL,Txt_Users,NULL,NULL);
|
||||||
|
|
||||||
/***** Show form to select the groups *****/
|
/***** Show form to select the groups *****/
|
||||||
Grp_ShowFormToSelectSeveralGroups (ActReqAsgWrkCrs);
|
Grp_ShowFormToSelectSeveralGroups (ActReqAsgWrkCrs);
|
||||||
|
|
||||||
/***** Get and order lists of users from this course *****/
|
if (NumTotalUsrs)
|
||||||
Usr_GetListUsrs (Rol_TEACHER,Sco_SCOPE_CRS);
|
|
||||||
Usr_GetListUsrs (Rol_STUDENT,Sco_SCOPE_CRS);
|
|
||||||
|
|
||||||
if (Gbl.Usrs.LstUsrs[Rol_TEACHER].NumUsrs ||
|
|
||||||
Gbl.Usrs.LstUsrs[Rol_STUDENT].NumUsrs)
|
|
||||||
{
|
{
|
||||||
if (Usr_GetIfShowBigList (Gbl.Usrs.LstUsrs[Rol_TEACHER].NumUsrs +
|
if (Usr_GetIfShowBigList (NumTotalUsrs,NULL))
|
||||||
Gbl.Usrs.LstUsrs[Rol_STUDENT].NumUsrs,NULL))
|
|
||||||
{
|
{
|
||||||
/* Form to select type of list used for select several users */
|
/* Form to select type of list used for select several users */
|
||||||
Usr_ShowFormsToSelectUsrListType (ActReqAsgWrkCrs);
|
Usr_ShowFormsToSelectUsrListType (ActReqAsgWrkCrs);
|
||||||
|
|
130
swad_group.c
130
swad_group.c
|
@ -61,7 +61,6 @@ extern struct Globals Gbl;
|
||||||
|
|
||||||
static void Grp_EditGroupTypes (void);
|
static void Grp_EditGroupTypes (void);
|
||||||
static void Grp_EditGroups (void);
|
static void Grp_EditGroups (void);
|
||||||
static void Grp_ShowFormSeveralGrps (Act_Action_t NextAction);
|
|
||||||
static void Grp_ConstructorListGrpAlreadySelec (struct ListGrpsAlreadySelec **AlreadyExistsGroupOfType);
|
static void Grp_ConstructorListGrpAlreadySelec (struct ListGrpsAlreadySelec **AlreadyExistsGroupOfType);
|
||||||
static void Grp_DestructorListGrpAlreadySelec (struct ListGrpsAlreadySelec **AlreadyExistsGroupOfType);
|
static void Grp_DestructorListGrpAlreadySelec (struct ListGrpsAlreadySelec **AlreadyExistsGroupOfType);
|
||||||
static void Grp_RemoveUsrFromGroup (long UsrCod,long GrpCod);
|
static void Grp_RemoveUsrFromGroup (long UsrCod,long GrpCod);
|
||||||
|
@ -225,7 +224,7 @@ static void Grp_EditGroups (void)
|
||||||
/*************** Show form to select one or several groups *******************/
|
/*************** Show form to select one or several groups *******************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
static void Grp_ShowFormSeveralGrps (Act_Action_t NextAction)
|
void Grp_ShowFormToSelectSeveralGroups (Act_Action_t NextAction)
|
||||||
{
|
{
|
||||||
extern const char *Hlp_USERS_Groups;
|
extern const char *Hlp_USERS_Groups;
|
||||||
extern const char *The_ClassForm[The_NUM_THEMES];
|
extern const char *The_ClassForm[The_NUM_THEMES];
|
||||||
|
@ -235,70 +234,75 @@ static void Grp_ShowFormSeveralGrps (Act_Action_t NextAction)
|
||||||
extern const char *Txt_Update_students;
|
extern const char *Txt_Update_students;
|
||||||
extern const char *Txt_Update_students_according_to_selected_groups;
|
extern const char *Txt_Update_students_according_to_selected_groups;
|
||||||
unsigned NumGrpTyp;
|
unsigned NumGrpTyp;
|
||||||
bool ICanEdit = !Gbl.Form.Inside &&
|
bool ICanEdit;
|
||||||
(Gbl.Usrs.Me.LoggedRole == Rol_TEACHER ||
|
|
||||||
Gbl.Usrs.Me.LoggedRole == Rol_SYS_ADM);
|
|
||||||
|
|
||||||
fprintf (Gbl.F.Out,"<div class=\"CENTER_MIDDLE\">");
|
if (Gbl.CurrentCrs.Grps.NumGrps)
|
||||||
|
{
|
||||||
|
ICanEdit = !Gbl.Form.Inside &&
|
||||||
|
(Gbl.Usrs.Me.LoggedRole == Rol_TEACHER ||
|
||||||
|
Gbl.Usrs.Me.LoggedRole == Rol_SYS_ADM);
|
||||||
|
|
||||||
/***** Start frame *****/
|
fprintf (Gbl.F.Out,"<div class=\"CENTER_MIDDLE\">");
|
||||||
Lay_StartRoundFrame (NULL,Txt_Groups,
|
|
||||||
ICanEdit ? Grp_PutIconToEditGroups :
|
|
||||||
NULL,
|
|
||||||
Hlp_USERS_Groups);
|
|
||||||
|
|
||||||
/***** Start form to update the students listed
|
/***** Start frame *****/
|
||||||
depending on the groups selected *****/
|
Lay_StartRoundFrame (NULL,Txt_Groups,
|
||||||
Act_FormStart (NextAction);
|
ICanEdit ? Grp_PutIconToEditGroups :
|
||||||
Usr_PutParamUsrListType (Gbl.Usrs.Me.ListType);
|
NULL,
|
||||||
Usr_PutParamColsClassPhoto ();
|
Hlp_USERS_Groups);
|
||||||
Usr_PutParamListWithPhotos ();
|
|
||||||
|
|
||||||
/***** Put parameters needed depending on the action *****/
|
/***** Start form to update the students listed
|
||||||
Usr_PutExtraParamsUsrList (NextAction);
|
depending on the groups selected *****/
|
||||||
|
Act_FormStart (NextAction);
|
||||||
|
Usr_PutParamUsrListType (Gbl.Usrs.Me.ListType);
|
||||||
|
Usr_PutParamColsClassPhoto ();
|
||||||
|
Usr_PutParamListWithPhotos ();
|
||||||
|
|
||||||
/***** Select all groups *****/
|
/***** Put parameters needed depending on the action *****/
|
||||||
fprintf (Gbl.F.Out,"<div class=\"%s CENTER_MIDDLE\">"
|
Usr_PutExtraParamsUsrList (NextAction);
|
||||||
"<input type=\"checkbox\" id=\"AllGroups\" name=\"AllGroups\" value=\"Y\"",
|
|
||||||
The_ClassForm[Gbl.Prefs.Theme]);
|
|
||||||
if (Gbl.Usrs.ClassPhoto.AllGroups)
|
|
||||||
fprintf (Gbl.F.Out," checked=\"checked\"");
|
|
||||||
fprintf (Gbl.F.Out," onclick=\"togglecheckChildren(this,'GrpCods')\" />"
|
|
||||||
" %s"
|
|
||||||
"</div>",
|
|
||||||
Txt_All_groups);
|
|
||||||
|
|
||||||
/***** Get list of groups types and groups in this course *****/
|
/***** Select all groups *****/
|
||||||
Grp_GetListGrpTypesAndGrpsInThisCrs (Grp_ONLY_GROUP_TYPES_WITH_GROUPS);
|
fprintf (Gbl.F.Out,"<div class=\"%s CENTER_MIDDLE\">"
|
||||||
|
"<input type=\"checkbox\" id=\"AllGroups\" name=\"AllGroups\" value=\"Y\"",
|
||||||
|
The_ClassForm[Gbl.Prefs.Theme]);
|
||||||
|
if (Gbl.Usrs.ClassPhoto.AllGroups)
|
||||||
|
fprintf (Gbl.F.Out," checked=\"checked\"");
|
||||||
|
fprintf (Gbl.F.Out," onclick=\"togglecheckChildren(this,'GrpCods')\" />"
|
||||||
|
" %s"
|
||||||
|
"</div>",
|
||||||
|
Txt_All_groups);
|
||||||
|
|
||||||
/***** List the groups for each group type *****/
|
/***** Get list of groups types and groups in this course *****/
|
||||||
fprintf (Gbl.F.Out,"<table class=\"FRAME_TBL CELLS_PAD_2\">");
|
Grp_GetListGrpTypesAndGrpsInThisCrs (Grp_ONLY_GROUP_TYPES_WITH_GROUPS);
|
||||||
for (NumGrpTyp = 0;
|
|
||||||
NumGrpTyp < Gbl.CurrentCrs.Grps.GrpTypes.Num;
|
|
||||||
NumGrpTyp++)
|
|
||||||
if (Gbl.CurrentCrs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].NumGrps)
|
|
||||||
Grp_ListGrpsForMultipleSelection (&Gbl.CurrentCrs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp]);
|
|
||||||
fprintf (Gbl.F.Out,"</table>");
|
|
||||||
|
|
||||||
/***** Free list of groups types and groups in this course *****/
|
/***** List the groups for each group type *****/
|
||||||
Grp_FreeListGrpTypesAndGrps ();
|
fprintf (Gbl.F.Out,"<table class=\"FRAME_TBL CELLS_PAD_2\">");
|
||||||
|
for (NumGrpTyp = 0;
|
||||||
|
NumGrpTyp < Gbl.CurrentCrs.Grps.GrpTypes.Num;
|
||||||
|
NumGrpTyp++)
|
||||||
|
if (Gbl.CurrentCrs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].NumGrps)
|
||||||
|
Grp_ListGrpsForMultipleSelection (&Gbl.CurrentCrs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp]);
|
||||||
|
fprintf (Gbl.F.Out,"</table>");
|
||||||
|
|
||||||
/***** Submit button *****/
|
/***** Free list of groups types and groups in this course *****/
|
||||||
fprintf (Gbl.F.Out,"<div class=\"CENTER_MIDDLE\""
|
Grp_FreeListGrpTypesAndGrps ();
|
||||||
" style=\"padding-top:12px;\">");
|
|
||||||
Act_LinkFormSubmitAnimated (Txt_Update_students_according_to_selected_groups,
|
|
||||||
The_ClassFormBold[Gbl.Prefs.Theme],
|
|
||||||
"CopyMessageToHiddenFields()");
|
|
||||||
Lay_PutCalculateIconWithText (Txt_Update_students_according_to_selected_groups,
|
|
||||||
Txt_Update_students);
|
|
||||||
fprintf (Gbl.F.Out,"</div>");
|
|
||||||
|
|
||||||
/***** End form *****/
|
/***** Submit button *****/
|
||||||
Act_FormEnd ();
|
fprintf (Gbl.F.Out,"<div class=\"CENTER_MIDDLE\""
|
||||||
|
" style=\"padding-top:12px;\">");
|
||||||
|
Act_LinkFormSubmitAnimated (Txt_Update_students_according_to_selected_groups,
|
||||||
|
The_ClassFormBold[Gbl.Prefs.Theme],
|
||||||
|
"CopyMessageToHiddenFields()");
|
||||||
|
Lay_PutCalculateIconWithText (Txt_Update_students_according_to_selected_groups,
|
||||||
|
Txt_Update_students);
|
||||||
|
fprintf (Gbl.F.Out,"</div>");
|
||||||
|
|
||||||
/***** End frame *****/
|
/***** End form *****/
|
||||||
Lay_EndRoundFrame ();
|
Act_FormEnd ();
|
||||||
fprintf (Gbl.F.Out,"</div>");
|
|
||||||
|
/***** End frame *****/
|
||||||
|
Lay_EndRoundFrame ();
|
||||||
|
fprintf (Gbl.F.Out,"</div>");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -331,20 +335,6 @@ void Grp_PutParamsCodGrps (void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
|
||||||
/**************** Show a form to select one or several groups ****************/
|
|
||||||
/*****************************************************************************/
|
|
||||||
|
|
||||||
void Grp_ShowFormToSelectSeveralGroups (Act_Action_t NextAction)
|
|
||||||
{
|
|
||||||
/***** Get groups to show ******/
|
|
||||||
Grp_GetParCodsSeveralGrpsToShowUsrs ();
|
|
||||||
|
|
||||||
/***** Show form *****/
|
|
||||||
if (Gbl.CurrentCrs.Grps.NumGrps)
|
|
||||||
Grp_ShowFormSeveralGrps (NextAction);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/**************** Get parameters related to groups selected ******************/
|
/**************** Get parameters related to groups selected ******************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -371,7 +361,6 @@ void Grp_GetParCodsSeveralGrpsToShowUsrs (void)
|
||||||
Par_GetParToText ("AllGroups",YN,1);
|
Par_GetParToText ("AllGroups",YN,1);
|
||||||
Gbl.Usrs.ClassPhoto.AllGroups = (Str_ConvertToUpperLetter (YN[0]) == 'Y');
|
Gbl.Usrs.ClassPhoto.AllGroups = (Str_ConvertToUpperLetter (YN[0]) == 'Y');
|
||||||
|
|
||||||
/***** Count number of groups in current course *****/
|
|
||||||
if (Gbl.CurrentCrs.Grps.NumGrps)
|
if (Gbl.CurrentCrs.Grps.NumGrps)
|
||||||
{
|
{
|
||||||
/***** Allocate memory for the list of group codes *****/
|
/***** Allocate memory for the list of group codes *****/
|
||||||
|
@ -451,7 +440,6 @@ void Grp_GetParCodsSeveralGrpsToEditAsgAttOrSvy (void)
|
||||||
/***** Set default for number of groups selected by me *****/
|
/***** Set default for number of groups selected by me *****/
|
||||||
Gbl.CurrentCrs.Grps.LstGrpsSel.NumGrps = 0;
|
Gbl.CurrentCrs.Grps.LstGrpsSel.NumGrps = 0;
|
||||||
|
|
||||||
/***** Count number of groups in current course *****/
|
|
||||||
if (Gbl.CurrentCrs.Grps.NumGrps)
|
if (Gbl.CurrentCrs.Grps.NumGrps)
|
||||||
{
|
{
|
||||||
/***** Allocate memory for the list of group codes *****/
|
/***** Allocate memory for the list of group codes *****/
|
||||||
|
|
|
@ -120,8 +120,9 @@ typedef enum
|
||||||
|
|
||||||
void Grp_WriteNamesOfSelectedGrps (void);
|
void Grp_WriteNamesOfSelectedGrps (void);
|
||||||
void Grp_ReqEditGroups (void);
|
void Grp_ReqEditGroups (void);
|
||||||
void Grp_PutParamsCodGrps (void);
|
|
||||||
void Grp_ShowFormToSelectSeveralGroups (Act_Action_t NextAction);
|
void Grp_ShowFormToSelectSeveralGroups (Act_Action_t NextAction);
|
||||||
|
void Grp_PutParamsCodGrps (void);
|
||||||
void Grp_GetParCodsSeveralGrpsToShowUsrs (void);
|
void Grp_GetParCodsSeveralGrpsToShowUsrs (void);
|
||||||
void Grp_GetParCodsSeveralGrpsToEditAsgAttOrSvy (void);
|
void Grp_GetParCodsSeveralGrpsToEditAsgAttOrSvy (void);
|
||||||
void Grp_FreeListCodSelectedGrps (void);
|
void Grp_FreeListCodSelectedGrps (void);
|
||||||
|
|
41
swad_mail.c
41
swad_mail.c
|
@ -837,27 +837,29 @@ void Mai_ListEmails (void)
|
||||||
unsigned int LengthStrAddr = 0;
|
unsigned int LengthStrAddr = 0;
|
||||||
struct UsrData UsrDat;
|
struct UsrData UsrDat;
|
||||||
|
|
||||||
/***** Form to select groups *****/
|
/***** Get groups to show ******/
|
||||||
Grp_ShowFormToSelectSeveralGroups (ActMaiStd);
|
Grp_GetParCodsSeveralGrpsToShowUsrs ();
|
||||||
|
|
||||||
/***** Get and order list of students in this course *****/
|
/***** Get and order list of students in this course *****/
|
||||||
Usr_GetListUsrs (Rol_STUDENT,Sco_SCOPE_CRS);
|
Usr_GetListUsrs (Rol_STUDENT,Sco_SCOPE_CRS);
|
||||||
|
|
||||||
|
/***** Start of the frame used to list the emails *****/
|
||||||
|
Lay_StartRoundFrame (NULL,
|
||||||
|
Txt_Students_who_have_accepted_and_who_have_email,
|
||||||
|
NULL,NULL);
|
||||||
|
|
||||||
|
/***** Form to select groups *****/
|
||||||
|
Grp_ShowFormToSelectSeveralGroups (ActMaiStd);
|
||||||
|
|
||||||
if (Gbl.Usrs.LstUsrs[Rol_STUDENT].NumUsrs)
|
if (Gbl.Usrs.LstUsrs[Rol_STUDENT].NumUsrs)
|
||||||
{
|
{
|
||||||
if (Usr_GetIfShowBigList (Gbl.Usrs.LstUsrs[Rol_STUDENT].NumUsrs,NULL))
|
if (Usr_GetIfShowBigList (Gbl.Usrs.LstUsrs[Rol_STUDENT].NumUsrs,NULL))
|
||||||
{
|
{
|
||||||
/***** Start of the frame used to list the emails *****/
|
|
||||||
Lay_StartRoundFrameTable (NULL,
|
|
||||||
Txt_Students_who_have_accepted_and_who_have_email,
|
|
||||||
NULL,NULL,0);
|
|
||||||
fprintf (Gbl.F.Out,"<tr>"
|
|
||||||
"<td class=\"DAT_SMALL LEFT_MIDDLE\">");
|
|
||||||
|
|
||||||
/***** Initialize structure with user's data *****/
|
/***** Initialize structure with user's data *****/
|
||||||
Usr_UsrDataConstructor (&UsrDat);
|
Usr_UsrDataConstructor (&UsrDat);
|
||||||
|
|
||||||
/***** List the students' email addresses *****/
|
/***** List the students' email addresses *****/
|
||||||
|
fprintf (Gbl.F.Out,"<div class=\"DAT_SMALL LEFT_MIDDLE\">");
|
||||||
for (NumUsr = 0;
|
for (NumUsr = 0;
|
||||||
NumUsr < Gbl.Usrs.LstUsrs[Rol_STUDENT].NumUsrs;
|
NumUsr < Gbl.Usrs.LstUsrs[Rol_STUDENT].NumUsrs;
|
||||||
NumUsr++)
|
NumUsr++)
|
||||||
|
@ -895,36 +897,28 @@ void Mai_ListEmails (void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
fprintf (Gbl.F.Out,"</td>"
|
fprintf (Gbl.F.Out,"</div>");
|
||||||
"</tr>");
|
|
||||||
|
|
||||||
/***** Free memory used for user's data *****/
|
/***** Free memory used for user's data *****/
|
||||||
Usr_UsrDataDestructor (&UsrDat);
|
Usr_UsrDataDestructor (&UsrDat);
|
||||||
|
|
||||||
/***** Show a message with the number of students with email ****/
|
/***** Show a message with the number of students with email ****/
|
||||||
fprintf (Gbl.F.Out,"<tr>"
|
fprintf (Gbl.F.Out,"<div class=\"DAT CENTER_MIDDLE\">");
|
||||||
"<td class=\"DAT CENTER_MIDDLE\">");
|
|
||||||
fprintf (Gbl.F.Out,Txt_X_students_who_have_email,
|
fprintf (Gbl.F.Out,Txt_X_students_who_have_email,
|
||||||
NumStdsWithEmail,
|
NumStdsWithEmail,
|
||||||
((float) NumStdsWithEmail /
|
((float) NumStdsWithEmail /
|
||||||
(float) Gbl.Usrs.LstUsrs[Rol_STUDENT].NumUsrs) * 100.0,
|
(float) Gbl.Usrs.LstUsrs[Rol_STUDENT].NumUsrs) * 100.0,
|
||||||
Gbl.Usrs.LstUsrs[Rol_STUDENT].NumUsrs);
|
Gbl.Usrs.LstUsrs[Rol_STUDENT].NumUsrs);
|
||||||
fprintf (Gbl.F.Out,"</td>"
|
fprintf (Gbl.F.Out,"</div>");
|
||||||
"</tr>");
|
|
||||||
|
|
||||||
/***** Show a message with the number of students who have accepted and have email ****/
|
/***** Show a message with the number of students who have accepted and have email ****/
|
||||||
fprintf (Gbl.F.Out,"<tr>"
|
fprintf (Gbl.F.Out,"<div class=\"DAT CENTER_MIDDLE\">");
|
||||||
"<td class=\"DAT CENTER_MIDDLE\">");
|
|
||||||
fprintf (Gbl.F.Out,Txt_X_students_who_have_accepted_and_who_have_email,
|
fprintf (Gbl.F.Out,Txt_X_students_who_have_accepted_and_who_have_email,
|
||||||
NumAcceptedStdsWithEmail,
|
NumAcceptedStdsWithEmail,
|
||||||
((float) NumAcceptedStdsWithEmail /
|
((float) NumAcceptedStdsWithEmail /
|
||||||
(float) Gbl.Usrs.LstUsrs[Rol_STUDENT].NumUsrs) * 100.0,
|
(float) Gbl.Usrs.LstUsrs[Rol_STUDENT].NumUsrs) * 100.0,
|
||||||
Gbl.Usrs.LstUsrs[Rol_STUDENT].NumUsrs);
|
Gbl.Usrs.LstUsrs[Rol_STUDENT].NumUsrs);
|
||||||
fprintf (Gbl.F.Out,"</td>"
|
fprintf (Gbl.F.Out,"</div>");
|
||||||
"</tr>");
|
|
||||||
|
|
||||||
/***** End of the frame used to list the emails *****/
|
|
||||||
Lay_EndRoundFrameTable ();
|
|
||||||
|
|
||||||
/***** Icon to open the client email program *****/
|
/***** Icon to open the client email program *****/
|
||||||
fprintf (Gbl.F.Out,"<div class=\"CONTEXT_MENU\">"
|
fprintf (Gbl.F.Out,"<div class=\"CONTEXT_MENU\">"
|
||||||
|
@ -946,6 +940,9 @@ void Mai_ListEmails (void)
|
||||||
else
|
else
|
||||||
Usr_ShowWarningNoUsersFound (Rol_STUDENT);
|
Usr_ShowWarningNoUsersFound (Rol_STUDENT);
|
||||||
|
|
||||||
|
/***** End of the frame used to list the emails *****/
|
||||||
|
Lay_EndRoundFrame ();
|
||||||
|
|
||||||
/***** Free memory for students list *****/
|
/***** Free memory for students list *****/
|
||||||
Usr_FreeUsrsList (Rol_STUDENT);
|
Usr_FreeUsrsList (Rol_STUDENT);
|
||||||
|
|
||||||
|
|
|
@ -173,9 +173,7 @@ static void Msg_PutFormMsgUsrs (char *Content)
|
||||||
char YN[1+1];
|
char YN[1+1];
|
||||||
unsigned NumUsrsInCrs;
|
unsigned NumUsrsInCrs;
|
||||||
bool ShowUsrsInCrs = false;
|
bool ShowUsrsInCrs = false;
|
||||||
bool GetUsrsInCrs = !Gbl.Msg.ShowOnlyOneRecipient && // Show list of potential recipients
|
bool GetUsrsInCrs;
|
||||||
(Gbl.Usrs.Me.IBelongToCurrentCrs || // If there is a course selected and I belong to it
|
|
||||||
Gbl.Usrs.Me.LoggedRole == Rol_SYS_ADM);
|
|
||||||
|
|
||||||
Gbl.Usrs.LstUsrs[Rol_TEACHER].NumUsrs =
|
Gbl.Usrs.LstUsrs[Rol_TEACHER].NumUsrs =
|
||||||
Gbl.Usrs.LstUsrs[Rol_STUDENT].NumUsrs = 0;
|
Gbl.Usrs.LstUsrs[Rol_STUDENT].NumUsrs = 0;
|
||||||
|
@ -199,6 +197,27 @@ static void Msg_PutFormMsgUsrs (char *Content)
|
||||||
else
|
else
|
||||||
Gbl.Msg.ShowOnlyOneRecipient = false;
|
Gbl.Msg.ShowOnlyOneRecipient = false;
|
||||||
|
|
||||||
|
GetUsrsInCrs = !Gbl.Msg.ShowOnlyOneRecipient && // Show list of potential recipients
|
||||||
|
(Gbl.Usrs.Me.IBelongToCurrentCrs || // If there is a course selected and I belong to it
|
||||||
|
Gbl.Usrs.Me.LoggedRole == Rol_SYS_ADM);
|
||||||
|
|
||||||
|
if (GetUsrsInCrs)
|
||||||
|
{
|
||||||
|
/***** Get and update type of list,
|
||||||
|
number of columns in class photo
|
||||||
|
and preference about view photos *****/
|
||||||
|
Usr_GetAndUpdatePrefsAboutUsrList ();
|
||||||
|
|
||||||
|
/***** Get groups to show ******/
|
||||||
|
Grp_GetParCodsSeveralGrpsToShowUsrs ();
|
||||||
|
|
||||||
|
/***** Get and order lists of users from this course *****/
|
||||||
|
Usr_GetListUsrs (Rol_TEACHER,Sco_SCOPE_CRS);
|
||||||
|
Usr_GetListUsrs (Rol_STUDENT,Sco_SCOPE_CRS);
|
||||||
|
NumUsrsInCrs = Gbl.Usrs.LstUsrs[Rol_TEACHER].NumUsrs +
|
||||||
|
Gbl.Usrs.LstUsrs[Rol_STUDENT].NumUsrs;
|
||||||
|
}
|
||||||
|
|
||||||
/***** Start frame *****/
|
/***** Start frame *****/
|
||||||
Lay_StartRoundFrame (NULL,
|
Lay_StartRoundFrame (NULL,
|
||||||
Gbl.Msg.Reply.IsReply ? Txt_Reply_message :
|
Gbl.Msg.Reply.IsReply ? Txt_Reply_message :
|
||||||
|
@ -213,19 +232,9 @@ static void Msg_PutFormMsgUsrs (char *Content)
|
||||||
/***** Get list of users belonging to the current course *****/
|
/***** Get list of users belonging to the current course *****/
|
||||||
if (GetUsrsInCrs)
|
if (GetUsrsInCrs)
|
||||||
{
|
{
|
||||||
/***** Get and update type of list,
|
|
||||||
number of columns in class photo
|
|
||||||
and preference about view photos *****/
|
|
||||||
Usr_GetAndUpdatePrefsAboutUsrList ();
|
|
||||||
|
|
||||||
/***** Form to select groups *****/
|
/***** Form to select groups *****/
|
||||||
Grp_ShowFormToSelectSeveralGroups (ActReqMsgUsr);
|
Grp_ShowFormToSelectSeveralGroups (ActReqMsgUsr);
|
||||||
|
|
||||||
/***** Get and order lists of users from this course *****/
|
|
||||||
Usr_GetListUsrs (Rol_TEACHER,Sco_SCOPE_CRS);
|
|
||||||
Usr_GetListUsrs (Rol_STUDENT,Sco_SCOPE_CRS);
|
|
||||||
NumUsrsInCrs = Gbl.Usrs.LstUsrs[Rol_TEACHER].NumUsrs +
|
|
||||||
Gbl.Usrs.LstUsrs[Rol_STUDENT].NumUsrs;
|
|
||||||
if (NumUsrsInCrs)
|
if (NumUsrsInCrs)
|
||||||
{
|
{
|
||||||
/***** Form to select type of list used for select several users *****/
|
/***** Form to select type of list used for select several users *****/
|
||||||
|
|
|
@ -419,13 +419,8 @@ void Sta_AskShowCrsHits (void)
|
||||||
and preference about view photos *****/
|
and preference about view photos *****/
|
||||||
Usr_GetAndUpdatePrefsAboutUsrList ();
|
Usr_GetAndUpdatePrefsAboutUsrList ();
|
||||||
|
|
||||||
/***** Start frame *****/
|
/***** Get groups to show ******/
|
||||||
sprintf (Gbl.Title,Txt_Statistics_of_visits_to_the_course_X,
|
Grp_GetParCodsSeveralGrpsToShowUsrs ();
|
||||||
Gbl.CurrentCrs.Crs.ShrtName);
|
|
||||||
Lay_StartRoundFrame (NULL,Gbl.Title,NULL,NULL);
|
|
||||||
|
|
||||||
/***** Show form to select the grupos *****/
|
|
||||||
Grp_ShowFormToSelectSeveralGroups (ActReqAccCrs);
|
|
||||||
|
|
||||||
/***** Get and order the lists of users of this course *****/
|
/***** Get and order the lists of users of this course *****/
|
||||||
Usr_GetListUsrs (Rol_TEACHER,Sco_SCOPE_CRS);
|
Usr_GetListUsrs (Rol_TEACHER,Sco_SCOPE_CRS);
|
||||||
|
@ -433,6 +428,14 @@ void Sta_AskShowCrsHits (void)
|
||||||
NumTotalUsrs = Gbl.Usrs.LstUsrs[Rol_TEACHER].NumUsrs +
|
NumTotalUsrs = Gbl.Usrs.LstUsrs[Rol_TEACHER].NumUsrs +
|
||||||
Gbl.Usrs.LstUsrs[Rol_STUDENT].NumUsrs;
|
Gbl.Usrs.LstUsrs[Rol_STUDENT].NumUsrs;
|
||||||
|
|
||||||
|
/***** Start frame *****/
|
||||||
|
sprintf (Gbl.Title,Txt_Statistics_of_visits_to_the_course_X,
|
||||||
|
Gbl.CurrentCrs.Crs.ShrtName);
|
||||||
|
Lay_StartRoundFrame (NULL,Gbl.Title,NULL,NULL);
|
||||||
|
|
||||||
|
/***** Show form to select the groups *****/
|
||||||
|
Grp_ShowFormToSelectSeveralGroups (ActReqAccCrs);
|
||||||
|
|
||||||
if (NumTotalUsrs)
|
if (NumTotalUsrs)
|
||||||
{
|
{
|
||||||
if (Usr_GetIfShowBigList (NumTotalUsrs,NULL))
|
if (Usr_GetIfShowBigList (NumTotalUsrs,NULL))
|
||||||
|
|
19
swad_test.c
19
swad_test.c
|
@ -6879,8 +6879,8 @@ void Tst_SelUsrsToSeeUsrsTestResults (void)
|
||||||
and preference about view photos *****/
|
and preference about view photos *****/
|
||||||
Usr_GetAndUpdatePrefsAboutUsrList ();
|
Usr_GetAndUpdatePrefsAboutUsrList ();
|
||||||
|
|
||||||
/***** Show form to select the groups *****/
|
/***** Get groups to show ******/
|
||||||
Grp_ShowFormToSelectSeveralGroups (ActReqSeeUsrTstRes);
|
Grp_GetParCodsSeveralGrpsToShowUsrs ();
|
||||||
|
|
||||||
/***** Get and order lists of users from this course *****/
|
/***** Get and order lists of users from this course *****/
|
||||||
Usr_GetListUsrs (Rol_TEACHER,Sco_SCOPE_CRS);
|
Usr_GetListUsrs (Rol_TEACHER,Sco_SCOPE_CRS);
|
||||||
|
@ -6888,13 +6888,16 @@ void Tst_SelUsrsToSeeUsrsTestResults (void)
|
||||||
NumTotalUsrs = Gbl.Usrs.LstUsrs[Rol_TEACHER].NumUsrs +
|
NumTotalUsrs = Gbl.Usrs.LstUsrs[Rol_TEACHER].NumUsrs +
|
||||||
Gbl.Usrs.LstUsrs[Rol_STUDENT].NumUsrs;
|
Gbl.Usrs.LstUsrs[Rol_STUDENT].NumUsrs;
|
||||||
|
|
||||||
|
/***** Start frame *****/
|
||||||
|
Lay_StartRoundFrame (NULL,Txt_Test_results,NULL,NULL);
|
||||||
|
|
||||||
|
/***** Show form to select the groups *****/
|
||||||
|
Grp_ShowFormToSelectSeveralGroups (ActReqSeeUsrTstRes);
|
||||||
|
|
||||||
if (NumTotalUsrs)
|
if (NumTotalUsrs)
|
||||||
{
|
{
|
||||||
if (Usr_GetIfShowBigList (NumTotalUsrs,NULL))
|
if (Usr_GetIfShowBigList (NumTotalUsrs,NULL))
|
||||||
{
|
{
|
||||||
/***** Start frame *****/
|
|
||||||
Lay_StartRoundFrame (NULL,Txt_Test_results,NULL,NULL);
|
|
||||||
|
|
||||||
/***** Form to select type of list used for select several users *****/
|
/***** Form to select type of list used for select several users *****/
|
||||||
Usr_ShowFormsToSelectUsrListType (ActReqSeeUsrTstRes);
|
Usr_ShowFormsToSelectUsrListType (ActReqSeeUsrTstRes);
|
||||||
|
|
||||||
|
@ -6929,14 +6932,14 @@ void Tst_SelUsrsToSeeUsrsTestResults (void)
|
||||||
|
|
||||||
/***** End form *****/
|
/***** End form *****/
|
||||||
Act_FormEnd ();
|
Act_FormEnd ();
|
||||||
|
|
||||||
/***** End frame *****/
|
|
||||||
Lay_EndRoundFrame ();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
Usr_ShowWarningNoUsersFound (Rol_UNKNOWN);
|
Usr_ShowWarningNoUsersFound (Rol_UNKNOWN);
|
||||||
|
|
||||||
|
/***** End frame *****/
|
||||||
|
Lay_EndRoundFrame ();
|
||||||
|
|
||||||
/***** Free memory for users' list *****/
|
/***** Free memory for users' list *****/
|
||||||
Usr_FreeUsrsList (Rol_TEACHER);
|
Usr_FreeUsrsList (Rol_TEACHER);
|
||||||
Usr_FreeUsrsList (Rol_STUDENT);
|
Usr_FreeUsrsList (Rol_STUDENT);
|
||||||
|
|
20
swad_user.c
20
swad_user.c
|
@ -5810,16 +5810,14 @@ void Usr_ListAllDataStds (void)
|
||||||
and preference about view photos *****/
|
and preference about view photos *****/
|
||||||
Usr_GetAndUpdatePrefsAboutUsrList ();
|
Usr_GetAndUpdatePrefsAboutUsrList ();
|
||||||
|
|
||||||
/***** Get list of groups types and groups in current course *****/
|
|
||||||
Grp_GetListGrpTypesInThisCrs (Grp_ONLY_GROUP_TYPES_WITH_GROUPS);
|
|
||||||
|
|
||||||
/***** Get groups to show *****/
|
|
||||||
Grp_GetParCodsSeveralGrpsToShowUsrs ();
|
|
||||||
|
|
||||||
/***** Get scope *****/
|
/***** Get scope *****/
|
||||||
Sco_SetScopesForListingStudents ();
|
Sco_SetScopesForListingStudents ();
|
||||||
Sco_GetScope ("ScopeUsr");
|
Sco_GetScope ("ScopeUsr");
|
||||||
|
|
||||||
|
/***** Get groups to show *****/
|
||||||
|
if (Gbl.Scope.Current == Sco_SCOPE_CRS)
|
||||||
|
Grp_GetParCodsSeveralGrpsToShowUsrs ();
|
||||||
|
|
||||||
/****** Get and order list of students in current course ******/
|
/****** Get and order list of students in current course ******/
|
||||||
Usr_GetListUsrs (Rol_STUDENT,Gbl.Scope.Current);
|
Usr_GetListUsrs (Rol_STUDENT,Gbl.Scope.Current);
|
||||||
|
|
||||||
|
@ -6889,6 +6887,13 @@ void Usr_SeeStudents (void)
|
||||||
Gbl.Usrs.Me.LoggedRole == Rol_DEG_ADM ||
|
Gbl.Usrs.Me.LoggedRole == Rol_DEG_ADM ||
|
||||||
Gbl.Usrs.Me.LoggedRole == Rol_SYS_ADM));
|
Gbl.Usrs.Me.LoggedRole == Rol_SYS_ADM));
|
||||||
|
|
||||||
|
/***** Get groups to show ******/
|
||||||
|
if (Gbl.Scope.Current == Sco_SCOPE_CRS)
|
||||||
|
Grp_GetParCodsSeveralGrpsToShowUsrs ();
|
||||||
|
|
||||||
|
/***** Get and order list of students *****/
|
||||||
|
Usr_GetListUsrs (Rol_STUDENT,Gbl.Scope.Current);
|
||||||
|
|
||||||
/***** Start frame *****/
|
/***** Start frame *****/
|
||||||
Lay_StartRoundFrame (NULL,Txt_ROLES_PLURAL_Abc[Rol_STUDENT][Usr_SEX_UNKNOWN],
|
Lay_StartRoundFrame (NULL,Txt_ROLES_PLURAL_Abc[Rol_STUDENT][Usr_SEX_UNKNOWN],
|
||||||
Usr_PutIconsListStds,Hlp_USERS_Students);
|
Usr_PutIconsListStds,Hlp_USERS_Students);
|
||||||
|
@ -6897,9 +6902,6 @@ void Usr_SeeStudents (void)
|
||||||
if (Gbl.Scope.Current == Sco_SCOPE_CRS)
|
if (Gbl.Scope.Current == Sco_SCOPE_CRS)
|
||||||
Grp_ShowFormToSelectSeveralGroups (ActLstStd);
|
Grp_ShowFormToSelectSeveralGroups (ActLstStd);
|
||||||
|
|
||||||
/***** Get and order list of students *****/
|
|
||||||
Usr_GetListUsrs (Rol_STUDENT,Gbl.Scope.Current);
|
|
||||||
|
|
||||||
if (Usr_GetIfShowBigList (Gbl.Usrs.LstUsrs[Rol_STUDENT].NumUsrs,NULL))
|
if (Usr_GetIfShowBigList (Gbl.Usrs.LstUsrs[Rol_STUDENT].NumUsrs,NULL))
|
||||||
{
|
{
|
||||||
/***** Get list of selected users *****/
|
/***** Get list of selected users *****/
|
||||||
|
|
Loading…
Reference in New Issue
Block a user