diff --git a/swad_action.c b/swad_action.c index 5dd421e92..34b9ce7ed 100644 --- a/swad_action.c +++ b/swad_action.c @@ -464,10 +464,16 @@ Assessment: NEW. ActShoPrj Show project NEW. ActReqAddStdPrj Request adding a student to a project NEW. ActReqAddTutPrj Request adding a tutor to a project - NEW. ActReqAddEvaPrj Request adding a reviewer to a project + NEW. ActReqAddEvaPrj Request adding an evaluator to a project NEW. ActAddStdPrj Add a student to a project NEW. ActAddTutPrj Add a tutor to a project - NEW. ActAddEvaPrj Add a reviewer to a project + NEW. ActAddEvaPrj Add an evaluator to a project + NEW. ActReqRemStdPrj Request removing a student from a project + NEW. ActReqRemTutPrj Request removing a tutor from a project + NEW. ActReqRemEvaPrj Request removing an evaluator from a project + NEW. ActRemStdPrj Remove a student from a project + NEW. ActRemTutPrj Remove a tutor from a project + NEW. ActRemEvaPrj Remove an emulator from a project 313. ActSeeTst Show the seft-assessment test 314. ActAssTst Assess a self-assessment test @@ -1965,6 +1971,12 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] = /* ActAddStdPrj */{1687,-1,TabUnk,ActSeePrj ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_AddStd ,NULL}, /* ActAddTutPrj */{1688,-1,TabUnk,ActSeePrj ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_AddTut ,NULL}, /* ActAddEvaPrj */{1689,-1,TabUnk,ActSeePrj ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_AddEva ,NULL}, + /* ActReqRemStdPrj */{1690,-1,TabUnk,ActSeePrj ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_ReqRemStd ,NULL}, + /* ActReqRemTutPrj */{1691,-1,TabUnk,ActSeePrj ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_ReqRemTut ,NULL}, + /* ActReqRemEvaPrj */{1692,-1,TabUnk,ActSeePrj ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_ReqRemEva ,NULL}, + /* ActRemStdPrj */{1693,-1,TabUnk,ActSeePrj ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_RemStd ,NULL}, + /* ActRemTutPrj */{1694,-1,TabUnk,ActSeePrj ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_RemTut ,NULL}, + /* ActRemEvaPrj */{1695,-1,TabUnk,ActSeePrj ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_RemEva ,NULL}, /* ActSeeTst */{ 29,-1,TabUnk,ActReqTst ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Tst_ShowNewTest ,NULL}, /* ActAssTst */{ 98,-1,TabUnk,ActReqTst ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Tst_AssessTest ,NULL}, @@ -4781,6 +4793,12 @@ Act_Action_t Act_FromActCodToAction[1 + Act_MAX_ACTION_COD] = // Do not reuse un ActAddStdPrj, // #1687 ActAddTutPrj, // #1688 ActAddEvaPrj, // #1689 + ActReqRemStdPrj, // #1690 + ActReqRemTutPrj, // #1691 + ActReqRemEvaPrj, // #1692 + ActRemStdPrj, // #1693 + ActRemTutPrj, // #1694 + ActRemEvaPrj, // #1695 }; /*****************************************************************************/ diff --git a/swad_action.h b/swad_action.h index f17e61d8c..252fc2164 100644 --- a/swad_action.h +++ b/swad_action.h @@ -58,9 +58,9 @@ typedef enum typedef signed int Act_Action_t; // Must be a signed type, because -1 is used to indicate obsolete action -#define Act_NUM_ACTIONS (1 + 9 + 43 + 17 + 47 + 33 + 24 + 115 + 112 + 416 + 165 + 172 + 42 + 14 + 97) +#define Act_NUM_ACTIONS (1 + 9 + 43 + 17 + 47 + 33 + 24 + 115 + 118 + 416 + 165 + 172 + 42 + 14 + 97) -#define Act_MAX_ACTION_COD 1689 +#define Act_MAX_ACTION_COD 1695 #define Act_MAX_OPTIONS_IN_MENU_PER_TAB 12 @@ -478,81 +478,87 @@ typedef signed int Act_Action_t; // Must be a signed type, because -1 is used to #define ActAddStdPrj (ActChgCalCrs1stDay + 40) #define ActAddTutPrj (ActChgCalCrs1stDay + 41) #define ActAddEvaPrj (ActChgCalCrs1stDay + 42) +#define ActReqRemStdPrj (ActChgCalCrs1stDay + 43) +#define ActReqRemTutPrj (ActChgCalCrs1stDay + 44) +#define ActReqRemEvaPrj (ActChgCalCrs1stDay + 45) +#define ActRemStdPrj (ActChgCalCrs1stDay + 46) +#define ActRemTutPrj (ActChgCalCrs1stDay + 47) +#define ActRemEvaPrj (ActChgCalCrs1stDay + 48) -#define ActSeeTst (ActChgCalCrs1stDay + 43) -#define ActAssTst (ActChgCalCrs1stDay + 44) -#define ActEdiTstQst (ActChgCalCrs1stDay + 45) -#define ActEdiOneTstQst (ActChgCalCrs1stDay + 46) -#define ActReqImpTstQst (ActChgCalCrs1stDay + 47) -#define ActImpTstQst (ActChgCalCrs1stDay + 48) -#define ActLstTstQst (ActChgCalCrs1stDay + 49) -#define ActRcvTstQst (ActChgCalCrs1stDay + 50) -#define ActReqRemTstQst (ActChgCalCrs1stDay + 51) -#define ActRemTstQst (ActChgCalCrs1stDay + 52) -#define ActShfTstQst (ActChgCalCrs1stDay + 53) -#define ActCfgTst (ActChgCalCrs1stDay + 54) -#define ActEnableTag (ActChgCalCrs1stDay + 55) -#define ActDisableTag (ActChgCalCrs1stDay + 56) -#define ActRenTag (ActChgCalCrs1stDay + 57) -#define ActRcvCfgTst (ActChgCalCrs1stDay + 58) +#define ActSeeTst (ActChgCalCrs1stDay + 49) +#define ActAssTst (ActChgCalCrs1stDay + 50) +#define ActEdiTstQst (ActChgCalCrs1stDay + 51) +#define ActEdiOneTstQst (ActChgCalCrs1stDay + 52) +#define ActReqImpTstQst (ActChgCalCrs1stDay + 53) +#define ActImpTstQst (ActChgCalCrs1stDay + 54) +#define ActLstTstQst (ActChgCalCrs1stDay + 55) +#define ActRcvTstQst (ActChgCalCrs1stDay + 56) +#define ActReqRemTstQst (ActChgCalCrs1stDay + 57) +#define ActRemTstQst (ActChgCalCrs1stDay + 58) +#define ActShfTstQst (ActChgCalCrs1stDay + 59) +#define ActCfgTst (ActChgCalCrs1stDay + 60) +#define ActEnableTag (ActChgCalCrs1stDay + 61) +#define ActDisableTag (ActChgCalCrs1stDay + 62) +#define ActRenTag (ActChgCalCrs1stDay + 63) +#define ActRcvCfgTst (ActChgCalCrs1stDay + 64) -#define ActReqSeeMyTstRes (ActChgCalCrs1stDay + 59) -#define ActSeeMyTstRes (ActChgCalCrs1stDay + 60) -#define ActSeeOneTstResMe (ActChgCalCrs1stDay + 61) -#define ActReqSeeUsrTstRes (ActChgCalCrs1stDay + 62) -#define ActSeeUsrTstRes (ActChgCalCrs1stDay + 63) -#define ActSeeOneTstResOth (ActChgCalCrs1stDay + 64) +#define ActReqSeeMyTstRes (ActChgCalCrs1stDay + 65) +#define ActSeeMyTstRes (ActChgCalCrs1stDay + 66) +#define ActSeeOneTstResMe (ActChgCalCrs1stDay + 67) +#define ActReqSeeUsrTstRes (ActChgCalCrs1stDay + 68) +#define ActSeeUsrTstRes (ActChgCalCrs1stDay + 69) +#define ActSeeOneTstResOth (ActChgCalCrs1stDay + 70) -#define ActSeeOneGam (ActChgCalCrs1stDay + 65) -#define ActPlyGam (ActChgCalCrs1stDay + 66) -#define ActPlyGam1stQst (ActChgCalCrs1stDay + 67) -#define ActPlyGamNxtQst (ActChgCalCrs1stDay + 68) -#define ActPlyGamAns (ActChgCalCrs1stDay + 69) -#define ActAnsGam (ActChgCalCrs1stDay + 70) -#define ActFrmNewGam (ActChgCalCrs1stDay + 71) -#define ActEdiOneGam (ActChgCalCrs1stDay + 72) -#define ActNewGam (ActChgCalCrs1stDay + 73) -#define ActChgGam (ActChgCalCrs1stDay + 74) -#define ActReqRemGam (ActChgCalCrs1stDay + 75) -#define ActRemGam (ActChgCalCrs1stDay + 76) -#define ActReqRstGam (ActChgCalCrs1stDay + 77) -#define ActRstGam (ActChgCalCrs1stDay + 78) -#define ActHidGam (ActChgCalCrs1stDay + 79) -#define ActShoGam (ActChgCalCrs1stDay + 80) -#define ActAddOneGamQst (ActChgCalCrs1stDay + 81) -#define ActGamLstTstQst (ActChgCalCrs1stDay + 82) -#define ActAddTstQstToGam (ActChgCalCrs1stDay + 83) -#define ActReqRemGamQst (ActChgCalCrs1stDay + 84) -#define ActRemGamQst (ActChgCalCrs1stDay + 85) -#define ActUp_GamQst (ActChgCalCrs1stDay + 86) -#define ActDwnGamQst (ActChgCalCrs1stDay + 87) +#define ActSeeOneGam (ActChgCalCrs1stDay + 71) +#define ActPlyGam (ActChgCalCrs1stDay + 72) +#define ActPlyGam1stQst (ActChgCalCrs1stDay + 73) +#define ActPlyGamNxtQst (ActChgCalCrs1stDay + 74) +#define ActPlyGamAns (ActChgCalCrs1stDay + 75) +#define ActAnsGam (ActChgCalCrs1stDay + 76) +#define ActFrmNewGam (ActChgCalCrs1stDay + 77) +#define ActEdiOneGam (ActChgCalCrs1stDay + 78) +#define ActNewGam (ActChgCalCrs1stDay + 79) +#define ActChgGam (ActChgCalCrs1stDay + 80) +#define ActReqRemGam (ActChgCalCrs1stDay + 81) +#define ActRemGam (ActChgCalCrs1stDay + 82) +#define ActReqRstGam (ActChgCalCrs1stDay + 83) +#define ActRstGam (ActChgCalCrs1stDay + 84) +#define ActHidGam (ActChgCalCrs1stDay + 85) +#define ActShoGam (ActChgCalCrs1stDay + 86) +#define ActAddOneGamQst (ActChgCalCrs1stDay + 87) +#define ActGamLstTstQst (ActChgCalCrs1stDay + 88) +#define ActAddTstQstToGam (ActChgCalCrs1stDay + 89) +#define ActReqRemGamQst (ActChgCalCrs1stDay + 90) +#define ActRemGamQst (ActChgCalCrs1stDay + 91) +#define ActUp_GamQst (ActChgCalCrs1stDay + 92) +#define ActDwnGamQst (ActChgCalCrs1stDay + 93) -#define ActSeeOneSvy (ActChgCalCrs1stDay + 88) -#define ActAnsSvy (ActChgCalCrs1stDay + 89) -#define ActFrmNewSvy (ActChgCalCrs1stDay + 90) -#define ActEdiOneSvy (ActChgCalCrs1stDay + 91) -#define ActNewSvy (ActChgCalCrs1stDay + 92) -#define ActChgSvy (ActChgCalCrs1stDay + 93) -#define ActReqRemSvy (ActChgCalCrs1stDay + 94) -#define ActRemSvy (ActChgCalCrs1stDay + 95) -#define ActReqRstSvy (ActChgCalCrs1stDay + 96) -#define ActRstSvy (ActChgCalCrs1stDay + 97) -#define ActHidSvy (ActChgCalCrs1stDay + 98) -#define ActShoSvy (ActChgCalCrs1stDay + 99) -#define ActEdiOneSvyQst (ActChgCalCrs1stDay + 100) -#define ActRcvSvyQst (ActChgCalCrs1stDay + 101) -#define ActReqRemSvyQst (ActChgCalCrs1stDay + 102) -#define ActRemSvyQst (ActChgCalCrs1stDay + 103) +#define ActSeeOneSvy (ActChgCalCrs1stDay + 94) +#define ActAnsSvy (ActChgCalCrs1stDay + 95) +#define ActFrmNewSvy (ActChgCalCrs1stDay + 96) +#define ActEdiOneSvy (ActChgCalCrs1stDay + 97) +#define ActNewSvy (ActChgCalCrs1stDay + 98) +#define ActChgSvy (ActChgCalCrs1stDay + 99) +#define ActReqRemSvy (ActChgCalCrs1stDay + 100) +#define ActRemSvy (ActChgCalCrs1stDay + 101) +#define ActReqRstSvy (ActChgCalCrs1stDay + 102) +#define ActRstSvy (ActChgCalCrs1stDay + 103) +#define ActHidSvy (ActChgCalCrs1stDay + 104) +#define ActShoSvy (ActChgCalCrs1stDay + 105) +#define ActEdiOneSvyQst (ActChgCalCrs1stDay + 106) +#define ActRcvSvyQst (ActChgCalCrs1stDay + 107) +#define ActReqRemSvyQst (ActChgCalCrs1stDay + 108) +#define ActRemSvyQst (ActChgCalCrs1stDay + 109) -#define ActSeeOneExaAnn (ActChgCalCrs1stDay + 104) -#define ActSeeDatExaAnn (ActChgCalCrs1stDay + 105) -#define ActEdiExaAnn (ActChgCalCrs1stDay + 106) -#define ActRcvExaAnn (ActChgCalCrs1stDay + 107) -#define ActPrnExaAnn (ActChgCalCrs1stDay + 108) -#define ActReqRemExaAnn (ActChgCalCrs1stDay + 109) -#define ActRemExaAnn (ActChgCalCrs1stDay + 110) -#define ActHidExaAnn (ActChgCalCrs1stDay + 111) -#define ActShoExaAnn (ActChgCalCrs1stDay + 112) +#define ActSeeOneExaAnn (ActChgCalCrs1stDay + 110) +#define ActSeeDatExaAnn (ActChgCalCrs1stDay + 111) +#define ActEdiExaAnn (ActChgCalCrs1stDay + 112) +#define ActRcvExaAnn (ActChgCalCrs1stDay + 113) +#define ActPrnExaAnn (ActChgCalCrs1stDay + 114) +#define ActReqRemExaAnn (ActChgCalCrs1stDay + 115) +#define ActRemExaAnn (ActChgCalCrs1stDay + 116) +#define ActHidExaAnn (ActChgCalCrs1stDay + 117) +#define ActShoExaAnn (ActChgCalCrs1stDay + 118) /*****************************************************************************/ /******************************** Files tab **********************************/ diff --git a/swad_changelog.h b/swad_changelog.h index 2d36e5fac..caa1415d9 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -252,13 +252,14 @@ /****************************** Public constants *****************************/ /*****************************************************************************/ -#define Log_PLATFORM_VERSION "SWAD 17.5.9 (2017-09-22)" +#define Log_PLATFORM_VERSION "SWAD 17.5.10 (2017-09-22)" #define CSS_FILE "swad17.0.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 17.5.10: Sep 22, 2017 Actions to remove user from project. Not finished. (? lines) Version 17.5.9: Sep 22, 2017 Icon to remove user from project. (230350 lines) Version 17.5.8: Sep 22, 2017 Name of department in listing of projects. (230336 lines) Version 17.5.7: Sep 21, 2017 Selector for department in edition of a project. (230363 lines) diff --git a/swad_project.c b/swad_project.c index eb6b631d4..282377995 100644 --- a/swad_project.c +++ b/swad_project.c @@ -98,6 +98,7 @@ static void Prj_WriteUsrs (long PrjCod,Prj_ProjectView_t ProjectView, Prj_RoleInProject_t RoleInProject); static void Prj_ReqAnotherUsrID (Prj_RoleInProject_t RoleInProject); static void Prj_AddUsrToProject (Prj_RoleInProject_t RoleInProject); +static void Prj_ReqRemUsrFromPrj (Prj_RoleInProject_t RoleInProject); static void Prj_GetParamPrjOrder (void); @@ -620,6 +621,13 @@ static void Prj_WriteUsrs (long PrjCod,Prj_ProjectView_t ProjectView, bool UsrValid; bool ShowPhoto; char PhotoURL[PATH_MAX + 1]; + static Act_Action_t ActionReqRemUsr[Prj_NUM_ROLES_IN_PROJECT] = + { + ActUnk, // Prj_ROLE_UNK, Unknown + ActReqRemStdPrj, // Prj_ROLE_STD, Student + ActReqRemTutPrj, // Prj_ROLE_TUT, Tutor + ActReqRemEvaPrj, // Prj_ROLE_EVA, Evaluator + }; static Act_Action_t ActionReqAddUsr[Prj_NUM_ROLES_IN_PROJECT] = { ActUnk, // Prj_ROLE_UNK, Unknown @@ -678,7 +686,7 @@ static void Prj_WriteUsrs (long PrjCod,Prj_ProjectView_t ProjectView, if (ProjectView == Prj_EDIT_ONE_PROJECT) { fprintf (Gbl.F.Out,""); - Lay_PutContextualLink (ActUnk,NULL,NULL, + Lay_PutContextualLink (ActionReqRemUsr[RoleInProject],NULL,Prj_PutParams, "remove-on64x64.png", Txt_Remove,NULL, NULL); @@ -872,6 +880,55 @@ static void Prj_AddUsrToProject (Prj_RoleInProject_t RoleInProject) Prj_RequestCreatOrEditPrj (PrjCod); } +/*****************************************************************************/ +/************ Request confirmation to remove user from project ***************/ +/*****************************************************************************/ + +void Prj_ReqRemStd (void) + { + Prj_ReqAnotherUsrID (Prj_ROLE_STD); + } + +void Prj_ReqRemTut (void) + { + Prj_ReqAnotherUsrID (Prj_ROLE_TUT); + } + +void Prj_ReqRemEva (void) + { + Prj_ReqAnotherUsrID (Prj_ROLE_EVA); + } + +static void Prj_ReqRemUsrFromPrj (Prj_RoleInProject_t RoleInProject) + { + static Act_Action_t ActionRemUsr[Prj_NUM_ROLES_IN_PROJECT] = + { + ActUnk, // Prj_ROLE_UNK, Unknown + ActRemStdPrj, // Prj_ROLE_STD, Student + ActRemTutPrj, // Prj_ROLE_TUT, Tutor + ActRemEvaPrj, // Prj_ROLE_EVA, Evaluator + }; + } + +/*****************************************************************************/ +/************************ Remove user from project ***************************/ +/*****************************************************************************/ + +void Prj_RemStd (void) + { + Prj_AddUsrToProject (Prj_ROLE_STD); + } + +void Prj_RemTut (void) + { + Prj_AddUsrToProject (Prj_ROLE_TUT); + } + +void Prj_RemEva (void) + { + Prj_AddUsrToProject (Prj_ROLE_EVA); + } + /*****************************************************************************/ /********* Get parameter with the type or order in list of projects **********/ /*****************************************************************************/ diff --git a/swad_project.h b/swad_project.h index fa282118d..fc06b41cc 100644 --- a/swad_project.h +++ b/swad_project.h @@ -78,6 +78,14 @@ void Prj_AddStd (void); void Prj_AddTut (void); void Prj_AddEva (void); +void Prj_ReqRemStd (void); +void Prj_ReqRemTut (void); +void Prj_ReqRemEva (void); + +void Prj_RemStd (void); +void Prj_RemTut (void); +void Prj_RemEva (void); + void Prj_PutHiddenParamPrjOrder (void); void Prj_RequestCreatePrj (void);