diff --git a/swad_action.c b/swad_action.c index ec362aae2..24d2188c5 100644 --- a/swad_action.c +++ b/swad_action.c @@ -462,6 +462,12 @@ Assessment: NEW. ActRemPrj Remove project NEW. ActHidPrj Hide project NEW. ActShoPrj Show project + NEW. ActReqAddStdPrj Request adding a student to a project + NEW. ActReqAddTutPrj Request adding a tutor to a project + NEW. ActReqAddRevPrj Request adding a reviewer to a project + NEW. ActAddStdPrj Add a student to a project + NEW. ActAddTutPrj Add a tutor to a project + NEW. ActAddRevPrj Add a reviewer to a project 313. ActSeeTst Show the seft-assessment test 314. ActAssTst Assess a self-assessment test @@ -1953,6 +1959,12 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] = /* ActRemPrj */{1681,-1,TabUnk,ActSeePrj ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_RemoveProject ,NULL}, /* ActHidPrj */{1682,-1,TabUnk,ActSeePrj ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_HideProject ,NULL}, /* ActShoPrj */{1683,-1,TabUnk,ActSeePrj ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_ShowProject ,NULL}, + /* ActReqAddStdPrj */{1684,-1,TabUnk,ActSeePrj ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_ReqAddStd ,NULL}, + /* ActReqAddTutPrj */{1685,-1,TabUnk,ActSeePrj ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_ReqAddTut ,NULL}, + /* ActReqAddRevPrj */{1686,-1,TabUnk,ActSeePrj ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_ReqAddRev ,NULL}, + /* 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}, + /* ActAddRevPrj */{1689,-1,TabUnk,ActSeePrj ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_AddRev ,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}, @@ -4763,6 +4775,12 @@ Act_Action_t Act_FromActCodToAction[1 + Act_MAX_ACTION_COD] = // Do not reuse un ActRemPrj, // #1681 ActHidPrj, // #1682 ActShoPrj, // #1683 + ActReqAddStdPrj, // #1684 + ActReqAddTutPrj, // #1685 + ActReqAddRevPrj, // #1686 + ActAddStdPrj, // #1687 + ActAddTutPrj, // #1688 + ActAddRevPrj, // #1689 }; /*****************************************************************************/ diff --git a/swad_action.h b/swad_action.h index 4dd2d46c2..1bea1ad3e 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 + 106 + 416 + 165 + 172 + 42 + 14 + 97) +#define Act_NUM_ACTIONS (1 + 9 + 43 + 17 + 47 + 33 + 24 + 115 + 112 + 416 + 165 + 172 + 42 + 14 + 97) -#define Act_MAX_ACTION_COD 1683 +#define Act_MAX_ACTION_COD 1689 #define Act_MAX_OPTIONS_IN_MENU_PER_TAB 12 @@ -472,81 +472,87 @@ typedef signed int Act_Action_t; // Must be a signed type, because -1 is used to #define ActRemPrj (ActChgCalCrs1stDay + 34) #define ActHidPrj (ActChgCalCrs1stDay + 35) #define ActShoPrj (ActChgCalCrs1stDay + 36) +#define ActReqAddStdPrj (ActChgCalCrs1stDay + 37) +#define ActReqAddTutPrj (ActChgCalCrs1stDay + 38) +#define ActReqAddRevPrj (ActChgCalCrs1stDay + 39) +#define ActAddStdPrj (ActChgCalCrs1stDay + 40) +#define ActAddTutPrj (ActChgCalCrs1stDay + 41) +#define ActAddRevPrj (ActChgCalCrs1stDay + 42) -#define ActSeeTst (ActChgCalCrs1stDay + 37) -#define ActAssTst (ActChgCalCrs1stDay + 38) -#define ActEdiTstQst (ActChgCalCrs1stDay + 39) -#define ActEdiOneTstQst (ActChgCalCrs1stDay + 40) -#define ActReqImpTstQst (ActChgCalCrs1stDay + 41) -#define ActImpTstQst (ActChgCalCrs1stDay + 42) -#define ActLstTstQst (ActChgCalCrs1stDay + 43) -#define ActRcvTstQst (ActChgCalCrs1stDay + 44) -#define ActReqRemTstQst (ActChgCalCrs1stDay + 45) -#define ActRemTstQst (ActChgCalCrs1stDay + 46) -#define ActShfTstQst (ActChgCalCrs1stDay + 47) -#define ActCfgTst (ActChgCalCrs1stDay + 48) -#define ActEnableTag (ActChgCalCrs1stDay + 49) -#define ActDisableTag (ActChgCalCrs1stDay + 50) -#define ActRenTag (ActChgCalCrs1stDay + 51) -#define ActRcvCfgTst (ActChgCalCrs1stDay + 52) +#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 ActReqSeeMyTstRes (ActChgCalCrs1stDay + 53) -#define ActSeeMyTstRes (ActChgCalCrs1stDay + 54) -#define ActSeeOneTstResMe (ActChgCalCrs1stDay + 55) -#define ActReqSeeUsrTstRes (ActChgCalCrs1stDay + 56) -#define ActSeeUsrTstRes (ActChgCalCrs1stDay + 57) -#define ActSeeOneTstResOth (ActChgCalCrs1stDay + 58) +#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 ActSeeOneGam (ActChgCalCrs1stDay + 59) -#define ActPlyGam (ActChgCalCrs1stDay + 60) -#define ActPlyGam1stQst (ActChgCalCrs1stDay + 61) -#define ActPlyGamNxtQst (ActChgCalCrs1stDay + 62) -#define ActPlyGamAns (ActChgCalCrs1stDay + 63) -#define ActAnsGam (ActChgCalCrs1stDay + 64) -#define ActFrmNewGam (ActChgCalCrs1stDay + 65) -#define ActEdiOneGam (ActChgCalCrs1stDay + 66) -#define ActNewGam (ActChgCalCrs1stDay + 67) -#define ActChgGam (ActChgCalCrs1stDay + 68) -#define ActReqRemGam (ActChgCalCrs1stDay + 69) -#define ActRemGam (ActChgCalCrs1stDay + 70) -#define ActReqRstGam (ActChgCalCrs1stDay + 71) -#define ActRstGam (ActChgCalCrs1stDay + 72) -#define ActHidGam (ActChgCalCrs1stDay + 73) -#define ActShoGam (ActChgCalCrs1stDay + 74) -#define ActAddOneGamQst (ActChgCalCrs1stDay + 75) -#define ActGamLstTstQst (ActChgCalCrs1stDay + 76) -#define ActAddTstQstToGam (ActChgCalCrs1stDay + 77) -#define ActReqRemGamQst (ActChgCalCrs1stDay + 78) -#define ActRemGamQst (ActChgCalCrs1stDay + 79) -#define ActUp_GamQst (ActChgCalCrs1stDay + 80) -#define ActDwnGamQst (ActChgCalCrs1stDay + 81) +#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 ActSeeOneSvy (ActChgCalCrs1stDay + 82) -#define ActAnsSvy (ActChgCalCrs1stDay + 83) -#define ActFrmNewSvy (ActChgCalCrs1stDay + 84) -#define ActEdiOneSvy (ActChgCalCrs1stDay + 85) -#define ActNewSvy (ActChgCalCrs1stDay + 86) -#define ActChgSvy (ActChgCalCrs1stDay + 87) -#define ActReqRemSvy (ActChgCalCrs1stDay + 88) -#define ActRemSvy (ActChgCalCrs1stDay + 89) -#define ActReqRstSvy (ActChgCalCrs1stDay + 90) -#define ActRstSvy (ActChgCalCrs1stDay + 91) -#define ActHidSvy (ActChgCalCrs1stDay + 92) -#define ActShoSvy (ActChgCalCrs1stDay + 93) -#define ActEdiOneSvyQst (ActChgCalCrs1stDay + 94) -#define ActRcvSvyQst (ActChgCalCrs1stDay + 95) -#define ActReqRemSvyQst (ActChgCalCrs1stDay + 96) -#define ActRemSvyQst (ActChgCalCrs1stDay + 97) +#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 ActSeeOneExaAnn (ActChgCalCrs1stDay + 98) -#define ActSeeDatExaAnn (ActChgCalCrs1stDay + 99) -#define ActEdiExaAnn (ActChgCalCrs1stDay + 100) -#define ActRcvExaAnn (ActChgCalCrs1stDay + 101) -#define ActPrnExaAnn (ActChgCalCrs1stDay + 102) -#define ActReqRemExaAnn (ActChgCalCrs1stDay + 103) -#define ActRemExaAnn (ActChgCalCrs1stDay + 104) -#define ActHidExaAnn (ActChgCalCrs1stDay + 105) -#define ActShoExaAnn (ActChgCalCrs1stDay + 106) +#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) /*****************************************************************************/ /******************************** Files tab **********************************/ diff --git a/swad_changelog.h b/swad_changelog.h index 7fec2ed1e..f1aed5112 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -252,13 +252,29 @@ /****************************** Public constants *****************************/ /*****************************************************************************/ -#define Log_PLATFORM_VERSION "SWAD 17.3.13 (2017-09-20)" +#define Log_PLATFORM_VERSION "SWAD 17.4 (2017-09-20)" #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.4: Sep 20, 2017 Actions to add users to a project. (230137 lines) + 6 changes necessary in database: +INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1684','es','N','Solicitar ID añadir estudiante a proyecto'); +INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1685','es','N','Solicitar ID añadir tutor a proyecto'); +INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1686','es','N','Solicitar ID añadir revisor a proyecto'); +INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1687','es','N','Añadir estudiante a proyecto'); +INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1688','es','N','Añadir tutor a proyecto'); +INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1689','es','N','Añadir revisor a proyecto'); + + NEW. ActReqAddStdPrj Request adding a student to a project + NEW. ActReqAddTutPrj Request adding a tutor to a project + NEW. ActReqAddRevPrj Request adding a reviewer to a project + NEW. ActAddStdPrj Add a student to a project + NEW. ActAddTutPrj Add a tutor to a project + NEW. ActAddRevPrj Add a reviewer to a project + Version 17.3.13: Sep 20, 2017 Links to add users to a project. Not finished. (230058 lines) Version 17.3.12: Sep 20, 2017 Code refactoring in listing of projects. (229977 lines) Version 17.3.11: Sep 20, 2017 Code refactoring in listing of projects. (229981 lines) diff --git a/swad_project.c b/swad_project.c index 1417f2981..c4bf8d232 100644 --- a/swad_project.c +++ b/swad_project.c @@ -85,6 +85,7 @@ static void Prj_ShowOneProjectUsrsRow (const struct Project *Prj,bool PrintView, const char *Label,Prj_RoleInProject_t RoleInProject); static void Prj_WriteUsrs (long PrjCod,Prj_RoleInProject_t RoleInProject); static void Prj_ReqAnotherUsrID (Prj_RoleInProject_t RoleInProject); +static void Prj_AddUsrToProject (Prj_RoleInProject_t RoleInProject) static void Prj_GetParamPrjOrder (void); @@ -551,9 +552,9 @@ static void Prj_WriteUsrs (long PrjCod,Prj_RoleInProject_t RoleInProject) Act_Action_t ActionReqAddUsr[Prj_NUM_ROLES_IN_PROJECT] = { ActUnk, // Prj_ROLE_UNK, Unknown - ActReqMdfOneStd, // Prj_ROLE_STD, Student - ActReqMdfOneTch, // Prj_ROLE_TUT, Tutor - ActReqMdfOneOth, // Prj_ROLE_REV, Reviewer + ActReqAddStdPrj, // Prj_ROLE_STD, Student + ActReqAddTutPrj, // Prj_ROLE_TUT, Tutor + ActReqAddRevPrj, // Prj_ROLE_REV, Reviewer }; /***** Get number of users in project from database *****/ @@ -653,6 +654,25 @@ static void Prj_WriteUsrs (long PrjCod,Prj_RoleInProject_t RoleInProject) DB_FreeMySQLResult (&mysql_res); } +/*****************************************************************************/ +/*** Request another user's ID, @nickname or email to add user to project ****/ +/*****************************************************************************/ + +void Prj_ReqAddStd (void) + { + Prj_ReqAnotherUsrID (Prj_ROLE_STD); + } + +void Prj_ReqAddTut (void) + { + Prj_ReqAnotherUsrID (Prj_ROLE_TUT); + } + +void Prj_ReqAddRev (void) + { + Prj_ReqAnotherUsrID (Prj_ROLE_REV); + } + /*****************************************************************************/ /****** Write a form to request another user's ID, @nickname or email ********/ /*****************************************************************************/ @@ -664,9 +684,9 @@ static void Prj_ReqAnotherUsrID (Prj_RoleInProject_t RoleInProject) Act_Action_t ActionAddUsr[Prj_NUM_ROLES_IN_PROJECT] = { ActUnk, // Prj_ROLE_UNK, Unknown - ActReqMdfOneStd, // Prj_ROLE_STD, Student - ActReqMdfOneTch, // Prj_ROLE_TUT, Tutor - ActReqMdfOneOth, // Prj_ROLE_REV, Reviewer + ActAddStdPrj, // Prj_ROLE_STD, Student + ActAddTutPrj, // Prj_ROLE_TUT, Tutor + ActAddRevPrj, // Prj_ROLE_REV, Reviewer }; /***** Start box *****/ @@ -680,6 +700,30 @@ static void Prj_ReqAnotherUsrID (Prj_RoleInProject_t RoleInProject) Box_EndBox (); } +/*****************************************************************************/ +/**************************** Add user to project ****************************/ +/*****************************************************************************/ + +void Prj_AddStd (void) + { + Prj_AddUsrToProject (Prj_ROLE_STD); + } + +void Prj_AddTut (void) + { + Prj_AddUsrToProject (Prj_ROLE_TUT); + } + +void Prj_AddRev (void) + { + Prj_AddUsrToProject (Prj_ROLE_REV); + } + +static void Prj_AddUsrToProject (Prj_RoleInProject_t RoleInProject) + { + Ale_ShowAlert (Ale_WARNING,"Not yet implemented."); + } + /*****************************************************************************/ /********* Get parameter with the type or order in list of projects **********/ /*****************************************************************************/ diff --git a/swad_project.h b/swad_project.h index be5215f48..f555d000e 100644 --- a/swad_project.h +++ b/swad_project.h @@ -69,6 +69,14 @@ struct Project void Prj_SeeProjects (void); void Prj_PrintOneProject (void); +void Prj_ReqAddStd (void); +void Prj_ReqAddTut (void); +void Prj_ReqAddRev (void); + +void Prj_AddStd (void); +void Prj_AddTut (void); +void Prj_AddRev (void); + void Prj_PutHiddenParamPrjOrder (void); void Prj_RequestCreatOrEditPrj (void); void Prj_GetListProjects (void);