Version19.68.2

This commit is contained in:
Antonio Cañas Vargas 2019-11-14 17:53:50 +01:00
parent 56b52e34be
commit e91801139f
6 changed files with 189 additions and 187 deletions

View File

@ -2789,11 +2789,11 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
/* ActReqEnrSevNET */{1642,-1,TabUnk,ActLstTch ,0x3C0,0x3C0, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Enr_ReqAdminNonEditingTchs ,NULL},
/* ActReqEnrSevTch */{1427,-1,TabUnk,ActLstTch ,0x3C0,0x3C0, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Enr_ReqAdminTchs ,NULL},
/* ActReqLstUsrAtt */{1073,-1,TabUnk,ActSeeAtt ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Usr_ReqListStdsAttendanceCrs ,NULL},
/* ActSeeLstMyAtt */{1473,-1,TabUnk,ActSeeAtt ,0x008, 0, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Usr_ListMyAttendanceCrs ,NULL},
/* ActPrnLstMyAtt */{1474,-1,TabUnk,ActSeeAtt ,0x008, 0, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_NEW_TAB,NULL ,Usr_PrintMyAttendanceCrs ,NULL},
/* ActSeeLstUsrAtt */{1074,-1,TabUnk,ActSeeAtt ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Usr_ListUsrsAttendanceCrs ,NULL},
/* ActPrnLstUsrAtt */{1075,-1,TabUnk,ActSeeAtt ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_NEW_TAB,NULL ,Usr_PrintUsrsAttendanceCrs ,NULL},
/* ActReqLstUsrAtt */{1073,-1,TabUnk,ActSeeAtt ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Att_ReqListUsrsAttendanceCrs ,NULL},
/* ActSeeLstMyAtt */{1473,-1,TabUnk,ActSeeAtt ,0x008, 0, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Att_ListMyAttendanceCrs ,NULL},
/* ActPrnLstMyAtt */{1474,-1,TabUnk,ActSeeAtt ,0x008, 0, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_NEW_TAB,NULL ,Att_PrintMyAttendanceCrs ,NULL},
/* ActSeeLstUsrAtt */{1074,-1,TabUnk,ActSeeAtt ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Att_ListUsrsAttendanceCrs ,NULL},
/* ActPrnLstUsrAtt */{1075,-1,TabUnk,ActSeeAtt ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_NEW_TAB,NULL ,Att_PrintUsrsAttendanceCrs ,NULL},
/* ActFrmNewAtt */{1063,-1,TabUnk,ActSeeAtt ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Att_RequestCreatOrEditAttEvent ,NULL},
/* ActEdiOneAtt */{1064,-1,TabUnk,ActSeeAtt ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Att_RequestCreatOrEditAttEvent ,NULL},
/* ActNewAtt */{1065,-1,TabUnk,ActSeeAtt ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Att_RecFormAttEvent ,NULL},

View File

@ -66,15 +66,18 @@ extern struct Globals Gbl;
typedef enum
{
Att_NORMAL_VIEW_ONLY_ME,
Att_NORMAL_VIEW_STUDENTS,
Att_PRINT_VIEW,
Att_VIEW_ONLY_ME, // View only me
Att_VIEW_SEL_USR, // View selected users
Att_PRNT_ONLY_ME, // Print only me
Att_PRNT_SEL_USR, // Print selected users
} Att_TypeOfView_t;
/*****************************************************************************/
/****************************** Private variables ****************************/
/*****************************************************************************/
Att_TypeOfView_t Att_TypeOfView;
/*****************************************************************************/
/****************************** Private prototypes ***************************/
/*****************************************************************************/
@ -131,8 +134,9 @@ static void Att_RegUsrInAttEventChangingComments (long AttCod,long UsrCod,bool P
const char *CommentStd,const char *CommentTch);
static void Att_RemoveUsrFromAttEvent (long AttCod,long UsrCod);
static void Usr_ListOrPrintMyAttendanceCrs (Att_TypeOfView_t TypeOfView);
static void Usr_ListOrPrintUsrsAttendanceCrs (Att_TypeOfView_t TypeOfView);
static void Att_ListOrPrintMyAttendanceCrs (void);
static void Att_GetUsrsAndListOrPrintAttendanceCrs (void);
static void Att_ListOrPrintUsrsAttendanceCrs (void);
static void Att_GetListSelectedAttCods (char **StrAttCodsSelected);
@ -142,11 +146,10 @@ static void Att_PutIconsStdsAttList (void);
static void Att_PutParamsToPrintStdsList (void);
static void Att_PutButtonToShowDetails (void);
static void Att_ListEventsToSelect (Att_TypeOfView_t TypeOfView);
static void Att_ListEventsToSelect (void);
static void Att_PutIconToEditAttEvents (void);
static void Att_PutIconToViewAttEvents (void);
static void Att_ListUsrsAttendanceTable (Att_TypeOfView_t TypeOfView,
unsigned NumUsrsInList,
static void Att_ListUsrsAttendanceTable (unsigned NumUsrsInList,
long *LstSelectedUsrCods);
static void Att_WriteTableHeadSeveralAttEvents (void);
static void Att_WriteRowUsrSeveralAttEvents (unsigned NumUsr,struct UsrData *UsrDat);
@ -2644,7 +2647,7 @@ void Att_RemoveUsrsAbsentWithoutCommentsFromAttEvent (long AttCod)
/********** Request listing attendance of users to several events ************/
/*****************************************************************************/
void Usr_ReqListStdsAttendanceCrs (void)
void Att_ReqListUsrsAttendanceCrs (void)
{
extern const char *Hlp_USERS_Attendance_attendance_list;
extern const char *Txt_Attendance_list;
@ -2667,17 +2670,19 @@ void Usr_ReqListStdsAttendanceCrs (void)
/********** List my attendance (I am a student) to several events ************/
/*****************************************************************************/
void Usr_ListMyAttendanceCrs (void)
void Att_ListMyAttendanceCrs (void)
{
Usr_ListOrPrintMyAttendanceCrs (Att_NORMAL_VIEW_ONLY_ME);
Att_TypeOfView = Att_VIEW_ONLY_ME;
Att_ListOrPrintMyAttendanceCrs ();
}
void Usr_PrintMyAttendanceCrs (void)
void Att_PrintMyAttendanceCrs (void)
{
Usr_ListOrPrintMyAttendanceCrs (Att_PRINT_VIEW);
Att_TypeOfView = Att_PRNT_ONLY_ME;
Att_ListOrPrintMyAttendanceCrs ();
}
static void Usr_ListOrPrintMyAttendanceCrs (Att_TypeOfView_t TypeOfView)
static void Att_ListOrPrintMyAttendanceCrs (void)
{
extern const char *Hlp_USERS_Attendance_attendance_list;
extern const char *Txt_Attendance;
@ -2706,20 +2711,20 @@ static void Usr_ListOrPrintMyAttendanceCrs (Att_TypeOfView_t TypeOfView)
/***** Begin box *****/
Box_BoxBegin (NULL,Txt_Attendance,
TypeOfView == Att_NORMAL_VIEW_ONLY_ME ? Att_PutIconsMyAttList :
NULL,
TypeOfView == Att_NORMAL_VIEW_ONLY_ME ? Hlp_USERS_Attendance_attendance_list :
NULL,
Att_TypeOfView == Att_VIEW_ONLY_ME ? Att_PutIconsMyAttList :
NULL,
Att_TypeOfView == Att_VIEW_ONLY_ME ? Hlp_USERS_Attendance_attendance_list :
NULL,
Box_NOT_CLOSABLE);
/***** List events to select *****/
Att_ListEventsToSelect (TypeOfView);
Att_ListEventsToSelect ();
/***** Get my preference about photos in users' list for current course *****/
Usr_GetMyPrefAboutListWithPhotosFromDB ();
/***** Show table with attendances for every student in list *****/
Att_ListUsrsAttendanceTable (TypeOfView,1,&Gbl.Usrs.Me.UsrDat.UsrCod);
Att_ListUsrsAttendanceTable (1,&Gbl.Usrs.Me.UsrDat.UsrCod);
/***** Show details or put button to show details *****/
if (Gbl.AttEvents.ShowDetails)
@ -2742,44 +2747,50 @@ static void Usr_ListOrPrintMyAttendanceCrs (Att_TypeOfView_t TypeOfView)
/*************** List attendance of users to several events ******************/
/*****************************************************************************/
void Usr_ListUsrsAttendanceCrs (void)
void Att_ListUsrsAttendanceCrs (void)
{
Usr_ListOrPrintUsrsAttendanceCrs (Att_NORMAL_VIEW_STUDENTS);
Att_TypeOfView = Att_VIEW_SEL_USR;
Att_GetUsrsAndListOrPrintAttendanceCrs ();
}
void Usr_PrintUsrsAttendanceCrs (void)
void Att_PrintUsrsAttendanceCrs (void)
{
Usr_ListOrPrintUsrsAttendanceCrs (Att_PRINT_VIEW);
Att_TypeOfView = Att_PRNT_SEL_USR;
Att_GetUsrsAndListOrPrintAttendanceCrs ();
}
static void Usr_ListOrPrintUsrsAttendanceCrs (Att_TypeOfView_t TypeOfView)
static void Att_GetUsrsAndListOrPrintAttendanceCrs (void)
{
Usr_GetSelectedUsrsAndGoToAct (Att_ListOrPrintUsrsAttendanceCrs,
Att_ReqListUsrsAttendanceCrs);
}
static void Att_ListOrPrintUsrsAttendanceCrs (void)
{
extern const char *Hlp_USERS_Attendance_attendance_list;
extern const char *Txt_Attendance_list;
extern const char *Txt_You_must_select_one_ore_more_users;
unsigned NumUsrsInList;
long *LstSelectedUsrCods;
unsigned NumAttEvent;
/***** Get list of attendance events *****/
Att_GetListAttEvents (Att_OLDEST_FIRST);
/***** Get parameters *****/
/* Get boolean parameter that indicates if details must be shown */
Gbl.AttEvents.ShowDetails = Par_GetParToBool ("ShowDetails");
/***** Get list of selected students if not already got *****/
Usr_GetListsSelectedUsrsCods ();
/* Get list of groups selected */
Grp_GetParCodsSeveralGrpsToShowUsrs ();
/***** Count number of valid users in list of encrypted user codes *****/
NumUsrsInList = Usr_CountNumUsrsInListOfSelectedEncryptedUsrCods ();
/***** Get list of users selected to show their attendance *****/
if (NumUsrsInList)
{
/***** Get boolean parameter that indicates if details must be shown *****/
Gbl.AttEvents.ShowDetails = Par_GetParToBool ("ShowDetails");
/***** Get list of groups selected ******/
Grp_GetParCodsSeveralGrpsToShowUsrs ();
/***** Get list of students selected to show their attendances *****/
Usr_GetListSelectedUsrCods (NumUsrsInList,&LstSelectedUsrCods);
/***** Get list of attendance events *****/
Att_GetListAttEvents (Att_OLDEST_FIRST);
/***** Get number of students in each event *****/
for (NumAttEvent = 0;
NumAttEvent < Gbl.AttEvents.Num;
@ -2794,20 +2805,20 @@ static void Usr_ListOrPrintUsrsAttendanceCrs (Att_TypeOfView_t TypeOfView)
/***** Begin box *****/
Box_BoxBegin (NULL,Txt_Attendance_list,
TypeOfView == Att_NORMAL_VIEW_STUDENTS ? Att_PutIconsStdsAttList :
NULL,
TypeOfView == Att_NORMAL_VIEW_STUDENTS ? Hlp_USERS_Attendance_attendance_list :
NULL,
Att_TypeOfView == Att_VIEW_SEL_USR ? Att_PutIconsStdsAttList :
NULL,
Att_TypeOfView == Att_VIEW_SEL_USR ? Hlp_USERS_Attendance_attendance_list :
NULL,
Box_NOT_CLOSABLE);
/***** List events to select *****/
Att_ListEventsToSelect (TypeOfView);
Att_ListEventsToSelect ();
/***** Get my preference about photos in users' list for current course *****/
Usr_GetMyPrefAboutListWithPhotosFromDB ();
/***** Show table with attendances for every student in list *****/
Att_ListUsrsAttendanceTable (TypeOfView,NumUsrsInList,LstSelectedUsrCods);
Att_ListUsrsAttendanceTable (NumUsrsInList,LstSelectedUsrCods);
/***** Show details or put button to show details *****/
if (Gbl.AttEvents.ShowDetails)
@ -2819,23 +2830,15 @@ static void Usr_ListOrPrintUsrsAttendanceCrs (Att_TypeOfView_t TypeOfView)
/***** Free memory for list of attendance events selected *****/
free (Gbl.AttEvents.StrAttCodsSelected);
/***** Free list of attendance events *****/
Att_FreeListAttEvents ();
/***** Free list of user codes *****/
Usr_FreeListSelectedUsrCods (LstSelectedUsrCods);
/***** Free list of groups selected *****/
Grp_FreeListCodSelectedGrps ();
}
else // No students selected
{
Ale_ShowAlert (Ale_WARNING,Txt_You_must_select_one_ore_more_users);
Usr_ReqListStdsAttendanceCrs (); // ...show again the form
}
/***** Free memory used by list of selected users' codes *****/
Usr_FreeListsSelectedEncryptedUsrsCods ();
/***** Free list of attendance events *****/
Att_FreeListAttEvents ();
/***** Free list of groups selected *****/
Grp_FreeListCodSelectedGrps ();
}
/*****************************************************************************/
@ -3017,7 +3020,7 @@ static void Att_PutButtonToShowDetails (void)
/********** Write list of those attendance events that have students *********/
/*****************************************************************************/
static void Att_ListEventsToSelect (Att_TypeOfView_t TypeOfView)
static void Att_ListEventsToSelect (void)
{
extern const char *The_ClassFormInBoxBold[The_NUM_THEMES];
extern const char *Txt_Events;
@ -3027,14 +3030,14 @@ static void Att_ListEventsToSelect (Att_TypeOfView_t TypeOfView)
unsigned UniqueId;
char *Id;
unsigned NumAttEvent;
bool NormalView = (TypeOfView == Att_NORMAL_VIEW_ONLY_ME ||
TypeOfView == Att_NORMAL_VIEW_STUDENTS);
bool NormalView = (Att_TypeOfView == Att_VIEW_ONLY_ME ||
Att_TypeOfView == Att_VIEW_SEL_USR);
/***** Begin box *****/
Box_BoxBegin (NULL,Txt_Events,
TypeOfView == Att_NORMAL_VIEW_ONLY_ME ? Att_PutIconToViewAttEvents :
(TypeOfView == Att_NORMAL_VIEW_STUDENTS ? Att_PutIconToEditAttEvents :
NULL),
Att_TypeOfView == Att_VIEW_ONLY_ME ? Att_PutIconToViewAttEvents :
(Att_TypeOfView == Att_VIEW_SEL_USR ? Att_PutIconToEditAttEvents :
NULL),
NULL,
Box_NOT_CLOSABLE);
@ -3156,8 +3159,7 @@ static void Att_PutIconToViewAttEvents (void)
/************ Show table with attendances for every user in list *************/
/*****************************************************************************/
static void Att_ListUsrsAttendanceTable (Att_TypeOfView_t TypeOfView,
unsigned NumUsrsInList,
static void Att_ListUsrsAttendanceTable (unsigned NumUsrsInList,
long *LstSelectedUsrCods)
{
extern const char *Txt_Number_of_users;
@ -3165,8 +3167,9 @@ static void Att_ListUsrsAttendanceTable (Att_TypeOfView_t TypeOfView,
unsigned NumUsr;
unsigned NumAttEvent;
unsigned Total;
bool PutButtonShowDetails = (TypeOfView != Att_PRINT_VIEW &&
!Gbl.AttEvents.ShowDetails);
bool PutButtonShowDetails = (Att_TypeOfView == Att_VIEW_ONLY_ME ||
Att_TypeOfView == Att_VIEW_SEL_USR) &&
!Gbl.AttEvents.ShowDetails;
/***** Initialize structure with user's data *****/
Usr_UsrDataConstructor (&UsrDat);

View File

@ -117,10 +117,10 @@ void Att_RegisterStudentsInAttEvent (void);
void Att_RegUsrInAttEventNotChangingComments (long AttCod,long UsrCod);
void Att_RemoveUsrsAbsentWithoutCommentsFromAttEvent (long AttCod);
void Usr_ReqListStdsAttendanceCrs (void);
void Usr_ListMyAttendanceCrs (void);
void Usr_PrintMyAttendanceCrs (void);
void Usr_ListUsrsAttendanceCrs (void);
void Usr_PrintUsrsAttendanceCrs (void);
void Att_ReqListUsrsAttendanceCrs (void);
void Att_ListMyAttendanceCrs (void);
void Att_PrintMyAttendanceCrs (void);
void Att_ListUsrsAttendanceCrs (void);
void Att_PrintUsrsAttendanceCrs (void);
#endif

View File

@ -487,7 +487,7 @@ enscript -2 --landscape --color --file-align=2 --highlight --line-numbers -o - *
En OpenSWAD:
ps2pdf source.ps destination.pdf
*/
#define Log_PLATFORM_VERSION "SWAD 19.68.1 (2019-11-14)"
#define Log_PLATFORM_VERSION "SWAD 19.68.2 (2019-11-14)"
#define CSS_FILE "swad19.47.css"
#define JS_FILE "swad19.65.js"
/*
@ -495,6 +495,7 @@ ps2pdf source.ps destination.pdf
// TODO: Impedir la creación y edición de proyectos si no son editables.
// TODO: Code refactoring in HTML h1, title, meta, video, p, iframe, input hidden, area
Version 19.68.2: Nov 14, 2019 Code refactoring in users and attendance. (246625 lines)
Version 19.68.1: Nov 14, 2019 Code refactoring in match results.
Code refactoring in test results. (246623 lines)
Version 19.68: Nov 14, 2019 Code refactoring in projects. (246642 lines)

View File

@ -2774,8 +2774,7 @@ static void Prj_GetListProjects (void)
}
break;
case Usr_WHO_SELECTED:
/* Get list of selected users' codes if not already got */
// Usr_GetListsSelectedUsrsCods ();
/* Count number of valid users in list of encrypted user codes */
NumUsrsInList = Usr_CountNumUsrsInListOfSelectedEncryptedUsrCods ();
if (NumUsrsInList)
@ -2833,9 +2832,6 @@ static void Prj_GetListProjects (void)
}
else
NumRows = 0;
/* Free memory used by list of selected users' codes */
// Usr_FreeListsSelectedEncryptedUsrsCods ();
break;
case Usr_WHO_ALL:
/* Get list of projects */

View File

@ -8473,113 +8473,112 @@ void Usr_DoActionOnSeveralUsrs1 (void)
Usr_GetListsSelectedUsrsCods ();
/* Check if there are selected users */
if (!Usr_CheckIfThereAreUsrsInListOfSelectedEncryptedUsrCods ())// If no users selected...
{ // ...write warning notice
Ale_CreateAlert (Ale_WARNING,NULL,
Txt_You_must_select_one_ore_more_users);
return;
}
/* Get the action to do */
Gbl.Usrs.Selected.Option = Usr_GetListUsrsOption (Usr_OPTION_UNKNOWN);
/***** Change action depending on my selection *****/
Gbl.Action.Original = Gbl.Action.Act; // To check if action changes
switch (Gbl.Usrs.Selected.Option)
if (Usr_CheckIfThereAreUsrsInListOfSelectedEncryptedUsrCods ())
{
case Usr_OPTION_RECORDS:
switch (Gbl.Action.Act)
{
case ActDoActOnSevGst:
Gbl.Action.Act = ActSeeRecSevGst;
break;
case ActDoActOnSevStd:
Gbl.Action.Act = ActSeeRecSevStd;
break;
case ActDoActOnSevTch:
Gbl.Action.Act = ActSeeRecSevTch;
break;
default:
break;
}
break;
case Usr_OPTION_HOMEWORK:
switch (Gbl.Action.Act)
{
case ActDoActOnSevStd:
case ActDoActOnSevTch:
Gbl.Action.Act = ActAdmAsgWrkCrs;
break;
default:
break;
}
break;
case Usr_OPTION_ATTENDANCE:
switch (Gbl.Action.Act)
{
case ActDoActOnSevStd:
Gbl.Action.Act = ActSeeLstUsrAtt;
break;
default:
break;
}
break;
case Usr_OPTION_MESSAGE:
switch (Gbl.Action.Act)
{
case ActDoActOnSevStd:
case ActDoActOnSevTch:
Gbl.Action.Act = ActReqMsgUsr;
break;
default:
break;
}
break;
case Usr_OPTION_EMAIL:
switch (Gbl.Action.Act)
{
case ActDoActOnSevStd:
Gbl.Action.Act = ActMaiUsr;
break;
default:
break;
}
break;
case Usr_OPTION_FOLLOW:
switch (Gbl.Action.Act)
{
case ActDoActOnSevStd:
Gbl.Action.Act = ActReqFolSevStd;
break;
case ActDoActOnSevTch:
Gbl.Action.Act = ActReqFolSevTch;
break;
default:
break;
}
break;
case Usr_OPTION_UNFOLLOW:
switch (Gbl.Action.Act)
{
case ActDoActOnSevStd:
Gbl.Action.Act = ActReqUnfSevStd;
break;
case ActDoActOnSevTch:
Gbl.Action.Act = ActReqUnfSevTch;
break;
default:
break;
}
break;
default:
break;
}
/* Get the action to do */
Gbl.Usrs.Selected.Option = Usr_GetListUsrsOption (Usr_OPTION_UNKNOWN);
if (Gbl.Action.Act == Gbl.Action.Original) // Fail, no change in action
Ale_CreateAlert (Ale_ERROR,NULL,"Wrong action.");
else // Success, action has changed
Tab_SetCurrentTab ();
/***** Change action depending on my selection *****/
Gbl.Action.Original = Gbl.Action.Act; // To check if action changes
switch (Gbl.Usrs.Selected.Option)
{
case Usr_OPTION_RECORDS:
switch (Gbl.Action.Act)
{
case ActDoActOnSevGst:
Gbl.Action.Act = ActSeeRecSevGst;
break;
case ActDoActOnSevStd:
Gbl.Action.Act = ActSeeRecSevStd;
break;
case ActDoActOnSevTch:
Gbl.Action.Act = ActSeeRecSevTch;
break;
default:
break;
}
break;
case Usr_OPTION_HOMEWORK:
switch (Gbl.Action.Act)
{
case ActDoActOnSevStd:
case ActDoActOnSevTch:
Gbl.Action.Act = ActAdmAsgWrkCrs;
break;
default:
break;
}
break;
case Usr_OPTION_ATTENDANCE:
switch (Gbl.Action.Act)
{
case ActDoActOnSevStd:
Gbl.Action.Act = ActSeeLstUsrAtt;
break;
default:
break;
}
break;
case Usr_OPTION_MESSAGE:
switch (Gbl.Action.Act)
{
case ActDoActOnSevStd:
case ActDoActOnSevTch:
Gbl.Action.Act = ActReqMsgUsr;
break;
default:
break;
}
break;
case Usr_OPTION_EMAIL:
switch (Gbl.Action.Act)
{
case ActDoActOnSevStd:
Gbl.Action.Act = ActMaiUsr;
break;
default:
break;
}
break;
case Usr_OPTION_FOLLOW:
switch (Gbl.Action.Act)
{
case ActDoActOnSevStd:
Gbl.Action.Act = ActReqFolSevStd;
break;
case ActDoActOnSevTch:
Gbl.Action.Act = ActReqFolSevTch;
break;
default:
break;
}
break;
case Usr_OPTION_UNFOLLOW:
switch (Gbl.Action.Act)
{
case ActDoActOnSevStd:
Gbl.Action.Act = ActReqUnfSevStd;
break;
case ActDoActOnSevTch:
Gbl.Action.Act = ActReqUnfSevTch;
break;
default:
break;
}
break;
default:
break;
}
if (Gbl.Action.Act == Gbl.Action.Original) // Fail, no change in action
Ale_CreateAlert (Ale_ERROR,NULL,"Wrong action.");
else // Success, action has changed
Tab_SetCurrentTab ();
}
else // If no users selected...
Ale_CreateAlert (Ale_WARNING,NULL, // ...write warning notice
Txt_You_must_select_one_ore_more_users);
}
void Usr_DoActionOnSeveralUsrs2 (void)
@ -8604,6 +8603,9 @@ void Usr_DoActionOnSeveralUsrs2 (void)
default:
break;
}
/***** Free memory used by list of selected users' codes *****/
Usr_FreeListsSelectedEncryptedUsrsCods ();
}
/*****************************************************************************/