diff --git a/swad_action.c b/swad_action.c index a68870758..f49f99704 100644 --- a/swad_action.c +++ b/swad_action.c @@ -944,7 +944,10 @@ Users: 776. ActRemAdmCtr Remove an administrador of this centre 777. ActNewAdmDeg Register an administrador in this degree 778. ActRemAdmDeg Remove an administrador of this degree - 779. ActRcvFrmMdfUsrCrs Receive a form with IDs of users to be registeres/removed to/from current course + + 779b. ActRcvFrmEnrSevStd Receive a form with IDs of users to be registeres/removed to/from current course + 779c. ActRcvFrmEnrSevTch Receive a form with IDs of users to be registeres/removed to/from current course + 780. ActFrmIDOthUsr Show form to the change of the IDs of another user 781. ActRemIDOth Remove one of the IDs of another user 782. ActNewIDOth Create a new user's ID for another user @@ -2285,8 +2288,8 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] = /* ActChgVisFie */{ 297,-1,TabUsr,ActLstStd ,0x110,0x100,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Rec_ChangeVisibilityField ,NULL}, /* ActRcvRecCrs */{ 301,-1,TabUsr,ActLstStd ,0x108,0x100,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Rec_UpdateAndShowMyCrsRecord ,NULL}, - /* ActReqMdfSevStd */{1426,-1,TabUsr,ActLstStd ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Enr_ReqAdminUsrs ,NULL}, - /* ActReqMdfSevTch */{1427,-1,TabUsr,ActLstTch ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Enr_ReqAdminUsrs ,NULL}, + /* ActReqMdfSevStd */{1426,-1,TabUsr,ActLstStd ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Enr_ReqAdminStds ,NULL}, + /* ActReqMdfSevTch */{1427,-1,TabUsr,ActLstTch ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Enr_ReqAdminTchs ,NULL}, /* ActReqLstAttStd */{1073,-1,TabUsr,ActSeeAtt ,0x110,0x100,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Usr_ReqListAttendanceStdsCrs ,NULL}, /* ActSeeLstAttStd */{1074,-1,TabUsr,ActSeeAtt ,0x110,0x100,0x000,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Usr_ListAttendanceStdsCrs ,NULL}, @@ -2341,7 +2344,8 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] = /* ActNewAdmDeg */{ 586,-1,TabUsr,ActLstAdm ,0x1C0,0x1C0,0x1C0,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Enr_AddAdmToDeg ,NULL}, /* ActRemAdmDeg */{ 584,-1,TabUsr,ActLstAdm ,0x1E0,0x1E0,0x1E0,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Enr_RemAdmDeg ,NULL}, - /* ActRcvFrmMdfUsrCrs*/{ 799,-1,TabUsr,ActLstStd ,0x1F0,0x1E0,0x100,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Enr_ReceiveFormUsrsCrs ,NULL}, + /* ActRcvFrmEnrSevStd*/{1427,-1,TabUsr,ActLstStd ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Enr_ReceiveFormAdminStds ,NULL}, + /* ActRcvFrmEnrSevTch*/{1428,-1,TabUsr,ActLstTch ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Enr_ReceiveFormAdminTchs ,NULL}, /* ActFrmIDsOthUsr */{1239,-1,TabUsr,ActLstStd ,0x1E0,0x1E0,0x1E0,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,ID_ShowFormOthIDs ,NULL}, /* ActRemIDOth */{1240,-1,TabUsr,ActLstStd ,0x1E0,0x1E0,0x1E0,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,ID_RemoveOtherUsrID ,NULL}, @@ -3494,7 +3498,7 @@ Act_Action_t Act_FromActCodToAction[1+Act_MAX_ACTION_COD] = // Do not reuse uniq ActGetExtLstStd, // #796 -1, // #797 (obsolete action) -1, // #798 (obsolete action) - ActRcvFrmMdfUsrCrs, // #799 + -1, // #799 (obsolete action) -1, // #800 (obsolete action) ActSeeAsg, // #801 -1, // #802 (obsolete action) @@ -4126,6 +4130,8 @@ Act_Action_t Act_FromActCodToAction[1+Act_MAX_ACTION_COD] = // Do not reuse uniq ActUpdOthAdm, // #1425 ActReqMdfSevStd, // #1426 ActReqMdfSevTch, // #1427 + ActRcvFrmEnrSevStd, // #1428 + ActRcvFrmEnrSevTch, // #1429 }; /*****************************************************************************/ diff --git a/swad_action.h b/swad_action.h index 4e80ec013..545ea0f39 100644 --- a/swad_action.h +++ b/swad_action.h @@ -69,9 +69,9 @@ typedef enum typedef int Act_Action_t; // Must be a signed type, because -1 is used to indicate obsolete action -#define Act_NUM_ACTIONS (7+52+15+90+73+68+204+182+120+168+28+77) +#define Act_NUM_ACTIONS (7+52+15+90+73+68+204+182+121+168+28+77) -#define Act_MAX_ACTION_COD 1427 +#define Act_MAX_ACTION_COD 1429 #define Act_MAX_OPTIONS_IN_MENU_PER_TAB 20 @@ -975,32 +975,34 @@ typedef int Act_Action_t; // Must be a signed type, because -1 is used to indica #define ActNewAdmDeg (ActChgNumRowFooGrp+ 97) #define ActRemAdmDeg (ActChgNumRowFooGrp+ 98) -#define ActRcvFrmMdfUsrCrs (ActChgNumRowFooGrp+ 99) -#define ActFrmIDsOthUsr (ActChgNumRowFooGrp+100) -#define ActRemIDOth (ActChgNumRowFooGrp+101) -#define ActNewIDOth (ActChgNumRowFooGrp+102) -#define ActFrmPwdOthUsr (ActChgNumRowFooGrp+103) -#define ActChgPwdOthUsr (ActChgNumRowFooGrp+104) -#define ActRemUsrCrs (ActChgNumRowFooGrp+105) -#define ActRemUsrGbl (ActChgNumRowFooGrp+106) +#define ActRcvFrmEnrSevStd (ActChgNumRowFooGrp+ 99) +#define ActRcvFrmEnrSevTch (ActChgNumRowFooGrp+100) -#define ActReqRemAllStdCrs (ActChgNumRowFooGrp+107) -#define ActRemAllStdCrs (ActChgNumRowFooGrp+108) +#define ActFrmIDsOthUsr (ActChgNumRowFooGrp+101) +#define ActRemIDOth (ActChgNumRowFooGrp+102) +#define ActNewIDOth (ActChgNumRowFooGrp+103) +#define ActFrmPwdOthUsr (ActChgNumRowFooGrp+104) +#define ActChgPwdOthUsr (ActChgNumRowFooGrp+105) +#define ActRemUsrCrs (ActChgNumRowFooGrp+106) +#define ActRemUsrGbl (ActChgNumRowFooGrp+107) -#define ActReqRemOldUsr (ActChgNumRowFooGrp+109) -#define ActRemOldUsr (ActChgNumRowFooGrp+110) +#define ActReqRemAllStdCrs (ActChgNumRowFooGrp+108) +#define ActRemAllStdCrs (ActChgNumRowFooGrp+109) -#define ActSeePubPrf (ActChgNumRowFooGrp+111) -#define ActCal1stClkTim (ActChgNumRowFooGrp+112) -#define ActCalNumClk (ActChgNumRowFooGrp+113) -#define ActCalNumFilVie (ActChgNumRowFooGrp+114) -#define ActCalNumForPst (ActChgNumRowFooGrp+115) -#define ActCalNumMsgSnt (ActChgNumRowFooGrp+116) +#define ActReqRemOldUsr (ActChgNumRowFooGrp+110) +#define ActRemOldUsr (ActChgNumRowFooGrp+111) -#define ActFolUsr (ActChgNumRowFooGrp+117) -#define ActUnfUsr (ActChgNumRowFooGrp+118) -#define ActSeeFlg (ActChgNumRowFooGrp+119) -#define ActSeeFlr (ActChgNumRowFooGrp+120) +#define ActSeePubPrf (ActChgNumRowFooGrp+112) +#define ActCal1stClkTim (ActChgNumRowFooGrp+113) +#define ActCalNumClk (ActChgNumRowFooGrp+114) +#define ActCalNumFilVie (ActChgNumRowFooGrp+115) +#define ActCalNumForPst (ActChgNumRowFooGrp+116) +#define ActCalNumMsgSnt (ActChgNumRowFooGrp+117) + +#define ActFolUsr (ActChgNumRowFooGrp+118) +#define ActUnfUsr (ActChgNumRowFooGrp+119) +#define ActSeeFlg (ActChgNumRowFooGrp+120) +#define ActSeeFlr (ActChgNumRowFooGrp+121) /*****************************************************************************/ /******************************* Messages tab ********************************/ diff --git a/swad_changelog.h b/swad_changelog.h index dbadb222a..11187a02c 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -98,13 +98,19 @@ /****************************** Public constants *****************************/ /*****************************************************************************/ -#define Log_PLATFORM_VERSION "SWAD 14.130 (2015/09/13)" +#define Log_PLATFORM_VERSION "SWAD 14.130.1 (2015/09/14)" // 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 14.130.1: Sep 14, 2015 Changes and bug fixing in user enrollment. (184416 lines) + 3 changes necessary in database: +UPDATE actions SET Obsolete='Y' WHERE ActCod='799'; +INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1428','es','N','Inscribir/eliminar varios estudiantes'); +INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1429','es','N','Inscribir/eliminar varios profesores'); + Version 14.130: Sep 13, 2015 Changes in user enrollment. (184379 lines) - 15 changes necessary in database: + 3 changes necessary in database: UPDATE actions SET Obsolete='Y' WHERE ActCod='797'; INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1426','es','N','Administrar varios estudiantes'); INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1427','es','N','Administrar varios profesores'); diff --git a/swad_enrollment.c b/swad_enrollment.c index 4771da8b2..81f436517 100644 --- a/swad_enrollment.c +++ b/swad_enrollment.c @@ -86,11 +86,14 @@ extern struct Globals Gbl; /***************************** Private prototypes ****************************/ /*****************************************************************************/ +static void Enr_ReqAdminUsrs (Rol_Role_t Role); static void Enr_ShowFormRegRemSeveralUsrs (Rol_Role_t Role); static void Enr_PutAreaToEnterUsrsIDs (void); static void Enr_PutActionsRegRemSeveralUsrs (void); +static void Enr_ReceiveFormUsrsCrs (Rol_Role_t Role); + static void Enr_RegisterUsr (struct UsrData *UsrDat,Rol_Role_t RegRemRole, struct ListCodGrps *LstGrps,unsigned *NumUsrsRegistered); static void Enr_MarkOfficialStdsAsRemovable (long ImpGrpCod,bool RemoveSpecifiedUsrs); @@ -438,7 +441,17 @@ void Enr_UpdateInstitutionCentreDepartment (void) /************** Form to request the user's ID of another user ****************/ /*****************************************************************************/ -void Enr_ReqAdminUsrs (void) +void Enr_ReqAdminStds (void) + { + Enr_ReqAdminUsrs (Rol_STUDENT); + } + +void Enr_ReqAdminTchs (void) + { + Enr_ReqAdminUsrs (Rol_TEACHER); + } + +static void Enr_ReqAdminUsrs (Rol_Role_t Role) { extern const char *Txt_You_dont_have_permission_to_perform_this_action; @@ -465,8 +478,7 @@ void Enr_ReqAdminUsrs (void) if (Gbl.CurrentCrs.Crs.CrsCod > 0) Enr_ShowFormRegRemSeveralUsrs (Role); else - Enr_ReqAnotherUsrIDToRegisterRemove (Rol_TEACHER); // TODO: Change this line to the following - // Enr_ReqAnotherUsrIDToRegisterRemove (Role); + Enr_ReqAnotherUsrIDToRegisterRemove (Role); break; default: Lay_ShowAlert (Lay_ERROR,Txt_You_dont_have_permission_to_perform_this_action); @@ -494,23 +506,31 @@ static void Enr_ShowFormRegRemSeveralUsrs (Rol_Role_t Role) extern const char *Txt_No_groups_have_been_created_in_the_course_X_Therefore_; extern const char *Txt_Step_5_Confirm_the_enrollment_removing; extern const char *Txt_Confirm; + bool PutFormRemAllStdsThisCrs = (Role == Rol_STUDENT && + Gbl.CurrentCrs.Crs.CrsCod > 0); // Course selected + bool PutFormRemOldUsrs = (Gbl.Usrs.Me.LoggedRole == Rol_SYS_ADM); bool ExternalUsrsServiceAvailable = (Cfg_EXTERNAL_LOGIN_CLIENT_COMMAND[0] != '\0'); /***** Put contextual links *****/ - fprintf (Gbl.F.Out,"
"); + if (PutFormRemAllStdsThisCrs || + PutFormRemOldUsrs) + { + fprintf (Gbl.F.Out,"
"); - /* Put link to remove all the students in the current course */ - if (Gbl.CurrentCrs.Crs.CrsCod > 0) // Course selected - Enr_PutLinkToRemAllStdsThisCrs (); + /* Put link to remove all the students in the current course */ + if (PutFormRemAllStdsThisCrs) + Enr_PutLinkToRemAllStdsThisCrs (); - /* Put link to remove old users */ - if (Gbl.Usrs.Me.LoggedRole == Rol_SYS_ADM) - Enr_PutLinkToRemOldUsrs (); + /* Put link to remove old users */ + if (PutFormRemOldUsrs) + Enr_PutLinkToRemOldUsrs (); - fprintf (Gbl.F.Out,"
"); + fprintf (Gbl.F.Out,"
"); + } /***** Form to send students to be enrolled / removed *****/ - Act_FormStart (ActRcvFrmMdfUsrCrs); + Act_FormStart (Role == Rol_STUDENT ? ActRcvFrmEnrSevStd : + ActRcvFrmEnrSevTch); /***** Start frame *****/ Lay_StartRoundFrame (NULL,Txt_Admin_several_users); @@ -1081,7 +1101,17 @@ static void Enr_PutActionsRegRemSeveralUsrs (void) /******* Receive the list of users of the course to register/remove **********/ /*****************************************************************************/ -void Enr_ReceiveFormUsrsCrs (Rol_Role_t Role) +void Enr_ReceiveFormAdminStds (void) + { + Enr_ReceiveFormUsrsCrs (Rol_STUDENT); + } + +void Enr_ReceiveFormAdminTchs (void) + { + Enr_ReceiveFormUsrsCrs (Rol_TEACHER); + } + +static void Enr_ReceiveFormUsrsCrs (Rol_Role_t Role) { extern const char *Txt_You_must_specify_in_step_3_the_action_to_perform; extern const char *Txt_In_a_type_of_group_with_single_enrollment_students_can_not_be_registered_in_more_than_one_group; diff --git a/swad_enrollment.h b/swad_enrollment.h index 5d0f7eceb..08bbf6b99 100644 --- a/swad_enrollment.h +++ b/swad_enrollment.h @@ -86,14 +86,17 @@ void Enr_UpdateUsrData (struct UsrData *UsrDat); void Enr_FilterUsrDat (struct UsrData *UsrDat); void Enr_UpdateInstitutionCentreDepartment (void); -void Enr_ReqAdminUsrs (void); +void Enr_ReqAdminStds (void); +void Enr_ReqAdminTchs (void); void Enr_AskRemoveOldUsrs (void); void Enr_RemoveOldUsrs (void); bool Enr_PutActionsRegRemOneUsr (bool ItsMe); -void Enr_ReceiveFormUsrsCrs (void); +void Enr_ReceiveFormAdminStds (void); +void Enr_ReceiveFormAdminTchs (void); + void Enr_PutLinkToRemAllStdsThisCrs (void); void Enr_PutLinkToRemOldUsrs (void); void Enr_PutLinkToAdminSeveralUsrs (Rol_Role_t Role);