diff --git a/swad_ID.c b/swad_ID.c index 70a27912..43ddb629 100644 --- a/swad_ID.c +++ b/swad_ID.c @@ -480,14 +480,14 @@ static void ID_PutLinkToConfirmID (struct UsrData *UsrDat,unsigned NumID, Act_GetActCod (Gbl.Action.Original)); // Original action, used to know where we came from switch (Gbl.Action.Original) { - case ActDoActOnSevGst: - Usr_PutHiddenParUsrCodAll (ActCnfID_Oth,Gbl.Usrs.Select[Rol_UNK]); + case ActSeeRecSevGst: + Usr_PutHiddenParUsrCodAll (ActCnfID_Oth,Gbl.Usrs.Selected.List[Rol_UNK]); break; - case ActDoActOnSevStd: - Usr_PutHiddenParUsrCodAll (ActCnfID_Std,Gbl.Usrs.Select[Rol_UNK]); + case ActSeeRecSevStd: + Usr_PutHiddenParUsrCodAll (ActCnfID_Std,Gbl.Usrs.Selected.List[Rol_UNK]); break; - case ActDoActOnSevTch: - Usr_PutHiddenParUsrCodAll (ActCnfID_Tch,Gbl.Usrs.Select[Rol_UNK]); + case ActSeeRecSevTch: + Usr_PutHiddenParUsrCodAll (ActCnfID_Tch,Gbl.Usrs.Selected.List[Rol_UNK]); break; } } @@ -1007,8 +1007,18 @@ void ID_ConfirmOtherUsrID (void) { ItsMe = Usr_ItsMe (Gbl.Usrs.Other.UsrDat.UsrCod); if (!ItsMe) // Not me + { + /* If user is a student in current course, + check if he/she has accepted */ + if (Gbl.CurrentCrs.Crs.CrsCod > 0) + if (Gbl.Usrs.Other.UsrDat.Roles.InCurrentCrs.Role == Rol_STD) + Gbl.Usrs.Other.UsrDat.Accepted = Usr_CheckIfUsrBelongsToCrs (Gbl.Usrs.Other.UsrDat.UsrCod, + Gbl.CurrentCrs.Crs.CrsCod, + true); + if (ID_ICanSeeOtherUsrIDs (&Gbl.Usrs.Other.UsrDat)) ICanConfirm = true; + } } if (ICanConfirm) @@ -1057,15 +1067,15 @@ void ID_ConfirmOtherUsrID (void) /***** Show one or multiple records *****/ switch (Gbl.Action.Original) { - case ActDoActOnSevGst: + case ActSeeRecSevGst: /* Show multiple records of guests again (including the updated one) */ Rec_ListRecordsGstsShow (); break; - case ActDoActOnSevStd: + case ActSeeRecSevStd: /* Show multiple records of students again (including the updated one) */ Rec_ListRecordsStdsShow (); break; - case ActDoActOnSevTch: + case ActSeeRecSevTch: /* Show multiple records of teachers again (including the updated one) */ Rec_ListRecordsTchsShow (); break; diff --git a/swad_action.c b/swad_action.c index 37174ea5..2a6dea9c 100644 --- a/swad_action.c +++ b/swad_action.c @@ -1140,9 +1140,12 @@ Users: 957. ActSeeRecOneStd Show record of one selected student 958. ActSeeRecOneTch Show record of one selected teacher - 959. ActDoActOnSevGst Do action on several selected guests - 960. ActDoActOnSevStd Do action on several selected students - 961. ActDoActOnSevTch Do action on several selected teachers + NEW. ActDoActOnSevGst Do action on several selected guests + NEW. ActDoActOnSevStd Do action on several selected students + NEW. ActDoActOnSevTch Do action on several selected teachers + 959. ActPrnRecSevGst Show records of several selected guests + 960. ActPrnRecSevStd Show records of several selected students + 961. ActPrnRecSevTch Show records of several selected teachers 962. ActPrnRecSevGst Show records of several selected guests ready to be printed 963. ActPrnRecSevStd Show records of several selected students ready to be printed 964. ActPrnRecSevTch Show records of several selected teachers ready to be printed @@ -2462,7 +2465,7 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] = /* ActChgDatShaGrp */{1002,-1,TabUnk,ActAdmShaCrsGrp ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Brw_ChgFileMetadata ,NULL}, /* ActDowShaGrp */{1116,-1,TabUnk,ActAdmShaCrsGrp ,0x3F8,0x3C7, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_DOWNLD_FILE,Brw_DownloadFile ,NULL ,NULL}, - /* ActAdmAsgWrkCrs */{ 139,-1,TabUnk,ActReqAsgWrkCrs ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Brw_ShowFileBrowserOrWorks ,NULL}, + /* ActAdmAsgWrkCrs */{ 139,-1,TabUnk,ActReqAsgWrkCrs ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Brw_GetSelectedUsrsAndShowWorks,NULL}, /* ActReqRemFilAsgUsr*/{ 834,-1,TabUnk,ActAdmAsgWrkUsr ,0x008, 0, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Brw_AskRemFileFromTree ,NULL}, /* ActRemFilAsgUsr */{ 833,-1,TabUnk,ActAdmAsgWrkUsr ,0x008, 0, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Brw_RemFileFromTree ,NULL}, @@ -2661,7 +2664,7 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] = /* ActLstGst */{ 587,-1,TabUnk,ActLstOth ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Usr_SeeGuests ,NULL}, - /* ActPrnGstPho */{1190,-1,TabUnk,ActLstStd ,0x200,0x200,0x200,0x200,0x200,0x200,0x200,Act_CONT_NORM,Act_BRW_NEW_TAB,NULL ,Usr_SeeGstClassPhotoPrn ,NULL}, + /* ActPrnGstPho */{1190,-1,TabUnk,ActLstOth ,0x200,0x200,0x200,0x200,0x200,0x200,0x200,Act_CONT_NORM,Act_BRW_NEW_TAB,NULL ,Usr_SeeGstClassPhotoPrn ,NULL}, /* ActPrnStdPho */{ 120,-1,TabUnk,ActLstStd ,0x3F8,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_BRW_NEW_TAB,NULL ,Usr_SeeStdClassPhotoPrn ,NULL}, /* ActPrnTchPho */{ 443,-1,TabUnk,ActLstTch ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_BRW_NEW_TAB,NULL ,Usr_SeeTchClassPhotoPrn ,NULL}, /* ActLstGstAll */{1189,-1,TabUnk,ActLstOth ,0x200,0x200,0x200,0x200,0x200,0x200,0x200,Act_CONT_NORM,Act_BRW_NEW_TAB,NULL ,Usr_ListAllDataGsts ,NULL}, @@ -2671,9 +2674,13 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] = /* ActSeeRecOneStd */{1174,-1,TabUnk,ActLstStd ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Rec_GetUsrAndShowRecOneStdCrs ,NULL}, /* ActSeeRecOneTch */{1175,-1,TabUnk,ActLstTch ,0x3F8,0x3C7, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Rec_GetUsrAndShowRecOneTchCrs ,NULL}, - /* ActDoActOnSevGst */{1187,-1,TabUnk,ActLstOth ,0x200,0x200,0x200,0x200,0x200,0x200,0x200,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Usr_DoActionOnSeveralStds ,NULL}, - /* ActDoActOnSevStd */{ 89,-1,TabUnk,ActLstStd ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Usr_DoActionOnSeveralStds ,NULL}, - /* ActDoActOnSevTch */{ 22,-1,TabUnk,ActLstTch ,0x3F8,0x3C7, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Usr_DoActionOnSeveralStds ,NULL}, + /* ActDoActOnSevGst */{1753,-1,TabUnk,ActLstOth ,0x200,0x200,0x200,0x200,0x200,0x200,0x200,Act_CONT_NORM,Act_BRW_1ST_TAB,Usr_DoActionOnSeveralUsrs1 ,Usr_DoActionOnSeveralUsrs2 ,NULL}, + /* ActDoActOnSevStd */{1754,-1,TabUnk,ActLstStd ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Usr_DoActionOnSeveralUsrs1 ,Usr_DoActionOnSeveralUsrs2 ,NULL}, + /* ActDoActOnSevTch */{1755,-1,TabUnk,ActLstTch ,0x3F8,0x3C7, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Usr_DoActionOnSeveralUsrs1 ,Usr_DoActionOnSeveralUsrs2 ,NULL}, + + /* ActSeeRecSevGst */{1187,-1,TabUnk,ActLstOth ,0x200,0x200,0x200,0x200,0x200,0x200,0x200,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Rec_ListRecordsGstsShow ,NULL}, + /* ActSeeRecSevStd */{ 89,-1,TabUnk,ActLstStd ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Rec_ListRecordsStdsShow ,NULL}, + /* ActSeeRecSevTch */{ 22,-1,TabUnk,ActLstTch ,0x3F8,0x3C7, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Rec_ListRecordsTchsShow ,NULL}, /* ActPrnRecSevGst */{1188,-1,TabUnk,ActLstOth ,0x200,0x200,0x200,0x200,0x200,0x200,0x200,Act_CONT_NORM,Act_BRW_NEW_TAB,NULL ,Rec_ListRecordsGstsPrint ,NULL}, /* ActPrnRecSevStd */{ 111,-1,TabUnk,ActLstStd ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_NEW_TAB,NULL ,Rec_ListRecordsStdsPrint ,NULL}, /* ActPrnRecSevTch */{ 127,-1,TabUnk,ActLstTch ,0x3F8,0x3C7, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_NEW_TAB,NULL ,Rec_ListRecordsTchsPrint ,NULL}, @@ -3218,7 +3225,7 @@ Act_Action_t Act_FromActCodToAction[1 + Act_MAX_ACTION_COD] = // Do not reuse un -1, // #86 (obsolete action) ActRemAllStdCrs, // #87 ActReqRemAllStdCrs, // #88 - ActDoActOnSevStd, // #89 + ActSeeRecSevStd, // #89 ActDelSntMsg, // #90 ActEdiExaAnn, // #91 -1, // #92 (obsolete action) @@ -4316,7 +4323,7 @@ Act_Action_t Act_FromActCodToAction[1 + Act_MAX_ACTION_COD] = // Do not reuse un -1, // #1184 (obsolete action) -1, // #1185 (obsolete action) ActLstOth, // #1186 - ActDoActOnSevGst, // #1187 + ActSeeRecSevGst, // #1187 ActPrnRecSevGst, // #1188 ActLstGstAll, // #1189 ActPrnGstPho, // #1190 @@ -4882,6 +4889,9 @@ Act_Action_t Act_FromActCodToAction[1 + Act_MAX_ACTION_COD] = // Do not reuse un ActChgClaMaxStd, // #1750 ActRenClaLoc, // #1751 ActChgGrpCla, // #1752 + ActDoActOnSevGst, // #1753 + ActDoActOnSevStd, // #1754 + ActDoActOnSevTch, // #1755 }; /*****************************************************************************/ diff --git a/swad_action.h b/swad_action.h index 21a7a37b..e6693bc4 100644 --- a/swad_action.h +++ b/swad_action.h @@ -61,9 +61,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 + 8 + 55 + 38 + 12 + 42 + 36 + 19 + 110 + 157 + 437 + 165 + 168 + 15 + 65) +#define Act_NUM_ACTIONS (1 + 8 + 55 + 38 + 12 + 42 + 36 + 19 + 110 + 157 + 437 + 168 + 168 + 15 + 65) -#define Act_MAX_ACTION_COD 1752 +#define Act_MAX_ACTION_COD 1755 #define Act_MAX_OPTIONS_IN_MENU_PER_TAB 13 @@ -1160,152 +1160,155 @@ typedef signed int Act_Action_t; // Must be a signed type, because -1 is used to #define ActSeeRecOneStd (ActRemOldBrf + 36) #define ActSeeRecOneTch (ActRemOldBrf + 37) -#define ActDoActOnSevGst (ActRemOldBrf + 38) -#define ActDoActOnSevStd (ActRemOldBrf + 39) -#define ActDoActOnSevTch (ActRemOldBrf + 40) -#define ActPrnRecSevGst (ActRemOldBrf + 41) -#define ActPrnRecSevStd (ActRemOldBrf + 42) -#define ActPrnRecSevTch (ActRemOldBrf + 43) -#define ActRcvRecOthUsr (ActRemOldBrf + 44) -#define ActEdiRecFie (ActRemOldBrf + 45) -#define ActNewFie (ActRemOldBrf + 46) -#define ActReqRemFie (ActRemOldBrf + 47) -#define ActRemFie (ActRemOldBrf + 48) -#define ActRenFie (ActRemOldBrf + 49) -#define ActChgRowFie (ActRemOldBrf + 50) -#define ActChgVisFie (ActRemOldBrf + 51) -#define ActRcvRecCrs (ActRemOldBrf + 52) +#define ActDoActOnSevGst (ActRemOldBrf + 38) +#define ActDoActOnSevStd (ActRemOldBrf + 39) +#define ActDoActOnSevTch (ActRemOldBrf + 40) +#define ActSeeRecSevGst (ActRemOldBrf + 41) +#define ActSeeRecSevStd (ActRemOldBrf + 42) +#define ActSeeRecSevTch (ActRemOldBrf + 43) +#define ActPrnRecSevGst (ActRemOldBrf + 44) +#define ActPrnRecSevStd (ActRemOldBrf + 45) +#define ActPrnRecSevTch (ActRemOldBrf + 46) +#define ActRcvRecOthUsr (ActRemOldBrf + 47) +#define ActEdiRecFie (ActRemOldBrf + 48) +#define ActNewFie (ActRemOldBrf + 49) +#define ActReqRemFie (ActRemOldBrf + 50) +#define ActRemFie (ActRemOldBrf + 51) +#define ActRenFie (ActRemOldBrf + 52) +#define ActChgRowFie (ActRemOldBrf + 53) +#define ActChgVisFie (ActRemOldBrf + 54) +#define ActRcvRecCrs (ActRemOldBrf + 55) -#define ActFrmLogInUsrAgd (ActRemOldBrf + 53) -#define ActLogInUsrAgd (ActRemOldBrf + 54) -#define ActLogInUsrAgdLan (ActRemOldBrf + 55) -#define ActSeeUsrAgd (ActRemOldBrf + 56) +#define ActFrmLogInUsrAgd (ActRemOldBrf + 56) +#define ActLogInUsrAgd (ActRemOldBrf + 57) +#define ActLogInUsrAgdLan (ActRemOldBrf + 58) +#define ActSeeUsrAgd (ActRemOldBrf + 59) -#define ActReqEnrSevStd (ActRemOldBrf + 57) -#define ActReqEnrSevNET (ActRemOldBrf + 58) -#define ActReqEnrSevTch (ActRemOldBrf + 59) +#define ActReqEnrSevStd (ActRemOldBrf + 60) +#define ActReqEnrSevNET (ActRemOldBrf + 61) +#define ActReqEnrSevTch (ActRemOldBrf + 62) -#define ActReqLstStdAtt (ActRemOldBrf + 60) -#define ActSeeLstMyAtt (ActRemOldBrf + 61) -#define ActPrnLstMyAtt (ActRemOldBrf + 62) -#define ActSeeLstStdAtt (ActRemOldBrf + 63) -#define ActPrnLstStdAtt (ActRemOldBrf + 64) -#define ActFrmNewAtt (ActRemOldBrf + 65) -#define ActEdiOneAtt (ActRemOldBrf + 66) -#define ActNewAtt (ActRemOldBrf + 67) -#define ActChgAtt (ActRemOldBrf + 68) -#define ActReqRemAtt (ActRemOldBrf + 69) -#define ActRemAtt (ActRemOldBrf + 70) -#define ActHidAtt (ActRemOldBrf + 71) -#define ActShoAtt (ActRemOldBrf + 72) -#define ActSeeOneAtt (ActRemOldBrf + 73) -#define ActRecAttStd (ActRemOldBrf + 74) -#define ActRecAttMe (ActRemOldBrf + 75) +#define ActReqLstStdAtt (ActRemOldBrf + 63) +#define ActSeeLstMyAtt (ActRemOldBrf + 64) +#define ActPrnLstMyAtt (ActRemOldBrf + 65) +#define ActSeeLstStdAtt (ActRemOldBrf + 66) +#define ActPrnLstStdAtt (ActRemOldBrf + 67) +#define ActFrmNewAtt (ActRemOldBrf + 68) +#define ActEdiOneAtt (ActRemOldBrf + 69) +#define ActNewAtt (ActRemOldBrf + 70) +#define ActChgAtt (ActRemOldBrf + 71) +#define ActReqRemAtt (ActRemOldBrf + 72) +#define ActRemAtt (ActRemOldBrf + 73) +#define ActHidAtt (ActRemOldBrf + 74) +#define ActShoAtt (ActRemOldBrf + 75) +#define ActSeeOneAtt (ActRemOldBrf + 76) +#define ActRecAttStd (ActRemOldBrf + 77) +#define ActRecAttMe (ActRemOldBrf + 78) -#define ActSignUp (ActRemOldBrf + 76) -#define ActUpdSignUpReq (ActRemOldBrf + 77) -#define ActReqRejSignUp (ActRemOldBrf + 78) -#define ActRejSignUp (ActRemOldBrf + 79) +#define ActSignUp (ActRemOldBrf + 79) +#define ActUpdSignUpReq (ActRemOldBrf + 80) +#define ActReqRejSignUp (ActRemOldBrf + 81) +#define ActRejSignUp (ActRemOldBrf + 82) -#define ActReqMdfOneOth (ActRemOldBrf + 80) -#define ActReqMdfOneStd (ActRemOldBrf + 81) -#define ActReqMdfOneTch (ActRemOldBrf + 82) +#define ActReqMdfOneOth (ActRemOldBrf + 83) +#define ActReqMdfOneStd (ActRemOldBrf + 84) +#define ActReqMdfOneTch (ActRemOldBrf + 85) -#define ActReqMdfOth (ActRemOldBrf + 83) -#define ActReqMdfStd (ActRemOldBrf + 84) -#define ActReqMdfNET (ActRemOldBrf + 85) -#define ActReqMdfTch (ActRemOldBrf + 86) +#define ActReqMdfOth (ActRemOldBrf + 86) +#define ActReqMdfStd (ActRemOldBrf + 87) +#define ActReqMdfNET (ActRemOldBrf + 88) +#define ActReqMdfTch (ActRemOldBrf + 89) -#define ActReqOthPho (ActRemOldBrf + 87) -#define ActReqStdPho (ActRemOldBrf + 88) -#define ActReqTchPho (ActRemOldBrf + 89) -#define ActDetOthPho (ActRemOldBrf + 90) -#define ActDetStdPho (ActRemOldBrf + 91) -#define ActDetTchPho (ActRemOldBrf + 92) -#define ActUpdOthPho (ActRemOldBrf + 93) -#define ActUpdStdPho (ActRemOldBrf + 94) -#define ActUpdTchPho (ActRemOldBrf + 95) -#define ActReqRemOthPho (ActRemOldBrf + 96) -#define ActReqRemStdPho (ActRemOldBrf + 97) -#define ActReqRemTchPho (ActRemOldBrf + 98) -#define ActRemOthPho (ActRemOldBrf + 99) -#define ActRemStdPho (ActRemOldBrf + 100) -#define ActRemTchPho (ActRemOldBrf + 101) -#define ActCreOth (ActRemOldBrf + 102) -#define ActCreStd (ActRemOldBrf + 103) -#define ActCreNET (ActRemOldBrf + 104) -#define ActCreTch (ActRemOldBrf + 105) -#define ActUpdOth (ActRemOldBrf + 106) -#define ActUpdStd (ActRemOldBrf + 107) -#define ActUpdNET (ActRemOldBrf + 108) -#define ActUpdTch (ActRemOldBrf + 109) +#define ActReqOthPho (ActRemOldBrf + 90) +#define ActReqStdPho (ActRemOldBrf + 91) +#define ActReqTchPho (ActRemOldBrf + 92) +#define ActDetOthPho (ActRemOldBrf + 93) +#define ActDetStdPho (ActRemOldBrf + 94) +#define ActDetTchPho (ActRemOldBrf + 95) +#define ActUpdOthPho (ActRemOldBrf + 96) +#define ActUpdStdPho (ActRemOldBrf + 97) +#define ActUpdTchPho (ActRemOldBrf + 98) +#define ActReqRemOthPho (ActRemOldBrf + 99) +#define ActReqRemStdPho (ActRemOldBrf + 100) +#define ActReqRemTchPho (ActRemOldBrf + 101) +#define ActRemOthPho (ActRemOldBrf + 102) +#define ActRemStdPho (ActRemOldBrf + 103) +#define ActRemTchPho (ActRemOldBrf + 104) +#define ActCreOth (ActRemOldBrf + 105) +#define ActCreStd (ActRemOldBrf + 106) +#define ActCreNET (ActRemOldBrf + 107) +#define ActCreTch (ActRemOldBrf + 108) +#define ActUpdOth (ActRemOldBrf + 109) +#define ActUpdStd (ActRemOldBrf + 110) +#define ActUpdNET (ActRemOldBrf + 111) +#define ActUpdTch (ActRemOldBrf + 112) -#define ActReqAccEnrStd (ActRemOldBrf + 110) -#define ActReqAccEnrNET (ActRemOldBrf + 111) -#define ActReqAccEnrTch (ActRemOldBrf + 112) -#define ActAccEnrStd (ActRemOldBrf + 113) -#define ActAccEnrNET (ActRemOldBrf + 114) -#define ActAccEnrTch (ActRemOldBrf + 115) -#define ActRemMe_Std (ActRemOldBrf + 116) -#define ActRemMe_NET (ActRemOldBrf + 117) -#define ActRemMe_Tch (ActRemOldBrf + 118) +#define ActReqAccEnrStd (ActRemOldBrf + 113) +#define ActReqAccEnrNET (ActRemOldBrf + 114) +#define ActReqAccEnrTch (ActRemOldBrf + 115) +#define ActAccEnrStd (ActRemOldBrf + 116) +#define ActAccEnrNET (ActRemOldBrf + 117) +#define ActAccEnrTch (ActRemOldBrf + 118) +#define ActRemMe_Std (ActRemOldBrf + 119) +#define ActRemMe_NET (ActRemOldBrf + 120) +#define ActRemMe_Tch (ActRemOldBrf + 121) -#define ActNewAdmIns (ActRemOldBrf + 119) -#define ActRemAdmIns (ActRemOldBrf + 120) -#define ActNewAdmCtr (ActRemOldBrf + 121) -#define ActRemAdmCtr (ActRemOldBrf + 122) -#define ActNewAdmDeg (ActRemOldBrf + 123) -#define ActRemAdmDeg (ActRemOldBrf + 124) +#define ActNewAdmIns (ActRemOldBrf + 122) +#define ActRemAdmIns (ActRemOldBrf + 123) +#define ActNewAdmCtr (ActRemOldBrf + 124) +#define ActRemAdmCtr (ActRemOldBrf + 125) +#define ActNewAdmDeg (ActRemOldBrf + 126) +#define ActRemAdmDeg (ActRemOldBrf + 127) -#define ActRcvFrmEnrSevStd (ActRemOldBrf + 125) -#define ActRcvFrmEnrSevNET (ActRemOldBrf + 126) -#define ActRcvFrmEnrSevTch (ActRemOldBrf + 127) +#define ActRcvFrmEnrSevStd (ActRemOldBrf + 128) +#define ActRcvFrmEnrSevNET (ActRemOldBrf + 129) +#define ActRcvFrmEnrSevTch (ActRemOldBrf + 130) -#define ActCnfID_Oth (ActRemOldBrf + 128) -#define ActCnfID_Std (ActRemOldBrf + 129) -#define ActCnfID_Tch (ActRemOldBrf + 130) +#define ActCnfID_Oth (ActRemOldBrf + 131) +#define ActCnfID_Std (ActRemOldBrf + 132) +#define ActCnfID_Tch (ActRemOldBrf + 133) -#define ActFrmAccOth (ActRemOldBrf + 131) -#define ActFrmAccStd (ActRemOldBrf + 132) -#define ActFrmAccTch (ActRemOldBrf + 133) +#define ActFrmAccOth (ActRemOldBrf + 134) +#define ActFrmAccStd (ActRemOldBrf + 135) +#define ActFrmAccTch (ActRemOldBrf + 136) -#define ActRemOldNicOth (ActRemOldBrf + 134) -#define ActRemOldNicStd (ActRemOldBrf + 135) -#define ActRemOldNicTch (ActRemOldBrf + 136) -#define ActChgNicOth (ActRemOldBrf + 137) -#define ActChgNicStd (ActRemOldBrf + 138) -#define ActChgNicTch (ActRemOldBrf + 139) +#define ActRemOldNicOth (ActRemOldBrf + 137) +#define ActRemOldNicStd (ActRemOldBrf + 138) +#define ActRemOldNicTch (ActRemOldBrf + 139) +#define ActChgNicOth (ActRemOldBrf + 140) +#define ActChgNicStd (ActRemOldBrf + 141) +#define ActChgNicTch (ActRemOldBrf + 142) -#define ActRemID_Oth (ActRemOldBrf + 140) -#define ActRemID_Std (ActRemOldBrf + 141) -#define ActRemID_Tch (ActRemOldBrf + 142) -#define ActNewID_Oth (ActRemOldBrf + 143) -#define ActNewID_Std (ActRemOldBrf + 144) -#define ActNewID_Tch (ActRemOldBrf + 145) -#define ActChgPwdOth (ActRemOldBrf + 146) -#define ActChgPwdStd (ActRemOldBrf + 147) -#define ActChgPwdTch (ActRemOldBrf + 148) -#define ActRemMaiOth (ActRemOldBrf + 149) -#define ActRemMaiStd (ActRemOldBrf + 150) -#define ActRemMaiTch (ActRemOldBrf + 151) -#define ActNewMaiOth (ActRemOldBrf + 152) -#define ActNewMaiStd (ActRemOldBrf + 153) -#define ActNewMaiTch (ActRemOldBrf + 154) +#define ActRemID_Oth (ActRemOldBrf + 143) +#define ActRemID_Std (ActRemOldBrf + 144) +#define ActRemID_Tch (ActRemOldBrf + 145) +#define ActNewID_Oth (ActRemOldBrf + 146) +#define ActNewID_Std (ActRemOldBrf + 147) +#define ActNewID_Tch (ActRemOldBrf + 148) +#define ActChgPwdOth (ActRemOldBrf + 149) +#define ActChgPwdStd (ActRemOldBrf + 150) +#define ActChgPwdTch (ActRemOldBrf + 151) +#define ActRemMaiOth (ActRemOldBrf + 152) +#define ActRemMaiStd (ActRemOldBrf + 153) +#define ActRemMaiTch (ActRemOldBrf + 154) +#define ActNewMaiOth (ActRemOldBrf + 155) +#define ActNewMaiStd (ActRemOldBrf + 156) +#define ActNewMaiTch (ActRemOldBrf + 157) -#define ActRemStdCrs (ActRemOldBrf + 155) -#define ActRemNETCrs (ActRemOldBrf + 156) -#define ActRemTchCrs (ActRemOldBrf + 157) -#define ActRemUsrGbl (ActRemOldBrf + 158) +#define ActRemStdCrs (ActRemOldBrf + 158) +#define ActRemNETCrs (ActRemOldBrf + 159) +#define ActRemTchCrs (ActRemOldBrf + 160) +#define ActRemUsrGbl (ActRemOldBrf + 161) -#define ActReqRemAllStdCrs (ActRemOldBrf + 159) -#define ActRemAllStdCrs (ActRemOldBrf + 160) +#define ActReqRemAllStdCrs (ActRemOldBrf + 162) +#define ActRemAllStdCrs (ActRemOldBrf + 163) -#define ActReqRemOldUsr (ActRemOldBrf + 161) -#define ActRemOldUsr (ActRemOldBrf + 162) +#define ActReqRemOldUsr (ActRemOldBrf + 164) +#define ActRemOldUsr (ActRemOldBrf + 165) -#define ActLstDupUsr (ActRemOldBrf + 163) -#define ActLstSimUsr (ActRemOldBrf + 164) -#define ActRemDupUsr (ActRemOldBrf + 165) +#define ActLstDupUsr (ActRemOldBrf + 166) +#define ActLstSimUsr (ActRemOldBrf + 167) +#define ActRemDupUsr (ActRemOldBrf + 168) /*****************************************************************************/ /******************************* Messages tab ********************************/ diff --git a/swad_attendance.c b/swad_attendance.c index 1ffd8f95..2f82326d 100644 --- a/swad_attendance.c +++ b/swad_attendance.c @@ -2302,8 +2302,8 @@ void Att_RegisterMeAsStdInAttEvent (void) /* Algorithm: 1. Get list of students in the groups selected: Gbl.Usrs.LstUsrs[Rol_STD] 2. Mark all students in the groups selected setting Remove=true - 3. Get list of students marked as present by me: Gbl.Usrs.Select[Rol_STD] - 4. Loop over the list Gbl.Usrs.Select[Rol_STD], + 3. Get list of students marked as present by me: Gbl.Usrs.Selected.List[Rol_STD] + 4. Loop over the list Gbl.Usrs.Selected.List[Rol_STD], that holds the list of the students marked as present, marking the students in Gbl.Usrs.LstUsrs[Rol_STD].Lst as Remove=false 5. Delete from att_usr all the students marked as Remove=true @@ -2344,16 +2344,16 @@ void Att_RegisterStudentsInAttEvent (void) NumStd++) Gbl.Usrs.LstUsrs[Rol_STD].Lst[NumStd].Remove = true; - /***** 3. Get list of students marked as present by me: Gbl.Usrs.Select[Rol_STD] *****/ + /***** 3. Get list of students marked as present by me: Gbl.Usrs.Selected.List[Rol_STD] *****/ Usr_GetListsSelectedUsrsCods (); /***** Initialize structure with user's data *****/ Usr_UsrDataConstructor (&UsrData); - /***** 4. Loop over the list Gbl.Usrs.Select[Rol_STD], + /***** 4. Loop over the list Gbl.Usrs.Selected.List[Rol_STD], that holds the list of the students marked as present, marking the students in Gbl.Usrs.LstUsrs[Rol_STD].Lst as Remove=false *****/ - Ptr = Gbl.Usrs.Select[Rol_STD]; + Ptr = Gbl.Usrs.Selected.List[Rol_STD]; while (*Ptr) { Par_GetNextStrUntilSeparParamMult (&Ptr,UsrData.EncryptedUsrCod, @@ -2950,8 +2950,8 @@ static void Att_GetListSelectedUsrCods (unsigned NumStdsInList,long **LstSelecte /***** Initialize structure with user's data *****/ Usr_UsrDataConstructor (&UsrDat); - /***** Loop over the list Gbl.Usrs.Select[Rol_UNK] getting users' codes *****/ - for (NumStd = 0, Ptr = Gbl.Usrs.Select[Rol_UNK]; + /***** Loop over the list Gbl.Usrs.Selected.List[Rol_UNK] getting users' codes *****/ + for (NumStd = 0, Ptr = Gbl.Usrs.Selected.List[Rol_UNK]; NumStd < NumStdsInList && *Ptr; NumStd++) { @@ -3114,7 +3114,7 @@ static void Att_PutParamsToPrintStdsList (void) if (Gbl.AttEvents.ShowDetails) Par_PutHiddenParamChar ("ShowDetails",'Y'); Grp_PutParamsCodGrps (); - Usr_PutHiddenParUsrCodAll (ActPrnLstStdAtt,Gbl.Usrs.Select[Rol_UNK]); + Usr_PutHiddenParUsrCodAll (ActPrnLstStdAtt,Gbl.Usrs.Selected.List[Rol_UNK]); if (Gbl.AttEvents.StrAttCodsSelected) if (Gbl.AttEvents.StrAttCodsSelected[0]) Par_PutHiddenParamString ("AttCods",Gbl.AttEvents.StrAttCodsSelected); @@ -3132,7 +3132,7 @@ static void Att_PutButtonToShowDetails (void) Frm_StartFormAnchor (Gbl.Action.Act,Att_ATTENDANCE_DETAILS_ID); Par_PutHiddenParamChar ("ShowDetails",'Y'); Grp_PutParamsCodGrps (); - Usr_PutHiddenParUsrCodAll (Gbl.Action.Act,Gbl.Usrs.Select[Rol_UNK]); + Usr_PutHiddenParUsrCodAll (Gbl.Action.Act,Gbl.Usrs.Selected.List[Rol_UNK]); if (Gbl.AttEvents.StrAttCodsSelected) if (Gbl.AttEvents.StrAttCodsSelected[0]) Par_PutHiddenParamString ("AttCods",Gbl.AttEvents.StrAttCodsSelected); @@ -3171,7 +3171,7 @@ static void Att_ListEventsToSelect (Att_TypeOfView_t TypeOfView) { Frm_StartFormAnchor (Gbl.Action.Act,Att_ATTENDANCE_TABLE_ID); Grp_PutParamsCodGrps (); - Usr_PutHiddenParUsrCodAll (Gbl.Action.Act,Gbl.Usrs.Select[Rol_UNK]); + Usr_PutHiddenParUsrCodAll (Gbl.Action.Act,Gbl.Usrs.Selected.List[Rol_UNK]); } /***** Start table *****/ diff --git a/swad_changelog.h b/swad_changelog.h index 248edf33..06c3c8a8 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -451,10 +451,11 @@ En OpenSWAD: ps2pdf source.ps destination.pdf */ -#define Log_PLATFORM_VERSION "SWAD 18.71 (2019-03-11)" +#define Log_PLATFORM_VERSION "SWAD 18.72 (2019-03-11)" #define CSS_FILE "swad18.68.3.css" #define JS_FILE "swad18.64.js" /* + Version 18.72: Mar 11, 2019 Show homework from list of students and teachers. (239043 lines) Version 18.71: Mar 11, 2019 Listing of users now allow to do several actions. Not finished. (238920 lines) 3 changes necessary in database: UPDATE actions SET Txt='Realizar acción con varios profesores' WHERE ActCod='22' AND Language='es'; diff --git a/swad_file_browser.c b/swad_file_browser.c index 8962286a..1188f956 100644 --- a/swad_file_browser.c +++ b/swad_file_browser.c @@ -2042,7 +2042,7 @@ void Brw_GetParAndInitFileBrowser (void) Gbl.Prjs.PrjCod = Prj_GetParamPrjCod (); else if (Brw_GetIfCrsAssigWorksFileBrowser ()) { - /* Get lists of the selected users */ + /* Get lists of the selected users if not already got */ Usr_GetListsSelectedUsrsCods (); /* Get user whose folder will be used to make any operation */ Usr_GetParamOtherUsrCodEncryptedAndGetListIDs (); @@ -2284,7 +2284,7 @@ void Brw_PutParamsFileBrowser (Act_Action_t NextAction, if (Brw_GetIfCrsAssigWorksFileBrowser ()) { /***** Users selected *****/ - Usr_PutHiddenParUsrCodAll (NextAction,Gbl.Usrs.Select[Rol_UNK]); + Usr_PutHiddenParUsrCodAll (NextAction,Gbl.Usrs.Selected.List[Rol_UNK]); Usr_PutParamOtherUsrCodEncrypted (); } } @@ -3223,66 +3223,54 @@ static void Brw_ShowFileBrowsersAsgWrkCrs (void) { extern const char *Hlp_FILES_Homework_for_teachers; extern const char *Txt_Assignments_and_other_works; - extern const char *Txt_You_must_select_one_ore_more_users; const char *Ptr; - /***** Check the number of users whose works will be shown *****/ - if (Usr_CountNumUsrsInListOfSelectedUsrs ()) // If some users are selected... + /***** Create the zip file and put a link to download it *****/ + if (Gbl.FileBrowser.ZIP.CreateZIP) + ZIP_CreateZIPAsgWrk (); + + /***** Write top before showing file browser *****/ + Brw_WriteTopBeforeShowingFileBrowser (); + + /***** Start box and table *****/ + Box_StartBoxTable ("100%",Txt_Assignments_and_other_works, + Brw_PutIconShowFigure, + Hlp_FILES_Homework_for_teachers,Box_NOT_CLOSABLE,0); + + /***** List the assignments and works of the selected users *****/ + Ptr = Gbl.Usrs.Selected.List[Rol_UNK]; + while (*Ptr) { - /***** Create the zip file and put a link to download it *****/ - if (Gbl.FileBrowser.ZIP.CreateZIP) - ZIP_CreateZIPAsgWrk (); + Par_GetNextStrUntilSeparParamMult (&Ptr,Gbl.Usrs.Other.UsrDat.EncryptedUsrCod, + Cry_BYTES_ENCRYPTED_STR_SHA256_BASE64); + Usr_GetUsrCodFromEncryptedUsrCod (&Gbl.Usrs.Other.UsrDat); + if (Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (&Gbl.Usrs.Other.UsrDat)) // Get of the database the data of the user + if (Usr_CheckIfICanViewAsgWrk (&Gbl.Usrs.Other.UsrDat)) + { + /***** Show a row with the data of the owner of the works *****/ + fprintf (Gbl.F.Out,"