diff --git a/swad_action.c b/swad_action.c index dff01fe3..4ecdf526 100644 --- a/swad_action.c +++ b/swad_action.c @@ -956,7 +956,8 @@ Users: 795. ActChgVisFie Request change in visibility of a record field 796. ActRcvRecCrs Receive and update fields of my record in this course - NEW. ActSeeUsrAgd Show user's agenda + NEW. ActLogInSeeUsrAgd Log in to show another user's public agenda + NEW. ActSeeUsrAgd Show another user's public agenda 797. ActReqEnrSevStd Request the enrollment/removing of several users to / from current course 798. ActReqEnrSevTch Request the enrollment/removing of several users to / from current course @@ -2366,6 +2367,7 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] = /* ActChgVisFie */{ 297,-1,TabUnk,ActLstStd ,0x110,0x100,0x000,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Rec_ChangeVisibilityField ,NULL}, /* ActRcvRecCrs */{ 301,-1,TabUnk,ActLstStd ,0x108,0x100,0x000,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Rec_UpdateAndShowMyCrsRecord ,NULL}, + /* ActLogInSeeUsrAgd */{1614,-1,TabUnk,ActLstTch ,0x001,0x001,0x001,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Agd_LogInToShowUsrAgenda ,NULL}, /* ActSeeUsrAgd */{1611,-1,TabUnk,ActLstTch ,0x1FC,0x1FC,0x1FC,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Agd_ShowUsrAgenda ,NULL}, /* ActReqEnrSevStd */{1426,-1,TabUnk,ActLstStd ,0x1FE,0x1FE,0x1FE,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Enr_ReqAdminStds ,NULL}, @@ -4511,6 +4513,7 @@ Act_Action_t Act_FromActCodToAction[1+Act_MAX_ACTION_COD] = // Do not reuse uniq ActSeeUsrAgd, // #1611 ActHidEvtMyAgd, // #1612 ActShoEvtMyAgd, // #1613 + ActLogInSeeUsrAgd, // #1614 }; /*****************************************************************************/ diff --git a/swad_action.h b/swad_action.h index 61a45092..1c09f63c 100644 --- a/swad_action.h +++ b/swad_action.h @@ -55,9 +55,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 (1+9+51+14+93+73+70+249+186+156+172+36+31+95) +#define Act_NUM_ACTIONS (1+9+51+14+93+73+70+249+186+157+172+36+31+95) -#define Act_MAX_ACTION_COD 1613 +#define Act_MAX_ACTION_COD 1614 #define Act_MAX_OPTIONS_IN_MENU_PER_TAB 11 @@ -972,127 +972,128 @@ typedef int Act_Action_t; // Must be a signed type, because -1 is used to indica #define ActChgVisFie (ActChgNumRowFooGrp+ 50) #define ActRcvRecCrs (ActChgNumRowFooGrp+ 51) -#define ActSeeUsrAgd (ActChgNumRowFooGrp+ 52) +#define ActLogInSeeUsrAgd (ActChgNumRowFooGrp+ 52) +#define ActSeeUsrAgd (ActChgNumRowFooGrp+ 53) -#define ActReqEnrSevStd (ActChgNumRowFooGrp+ 53) -#define ActReqEnrSevTch (ActChgNumRowFooGrp+ 54) +#define ActReqEnrSevStd (ActChgNumRowFooGrp+ 54) +#define ActReqEnrSevTch (ActChgNumRowFooGrp+ 55) -#define ActReqLstStdAtt (ActChgNumRowFooGrp+ 55) -#define ActSeeLstMyAtt (ActChgNumRowFooGrp+ 56) -#define ActPrnLstMyAtt (ActChgNumRowFooGrp+ 57) -#define ActSeeLstStdAtt (ActChgNumRowFooGrp+ 58) -#define ActPrnLstStdAtt (ActChgNumRowFooGrp+ 59) -#define ActFrmNewAtt (ActChgNumRowFooGrp+ 60) -#define ActEdiOneAtt (ActChgNumRowFooGrp+ 61) -#define ActNewAtt (ActChgNumRowFooGrp+ 62) -#define ActChgAtt (ActChgNumRowFooGrp+ 63) -#define ActReqRemAtt (ActChgNumRowFooGrp+ 64) -#define ActRemAtt (ActChgNumRowFooGrp+ 65) -#define ActHidAtt (ActChgNumRowFooGrp+ 66) -#define ActShoAtt (ActChgNumRowFooGrp+ 67) -#define ActSeeOneAtt (ActChgNumRowFooGrp+ 68) -#define ActRecAttStd (ActChgNumRowFooGrp+ 69) -#define ActRecAttMe (ActChgNumRowFooGrp+ 70) +#define ActReqLstStdAtt (ActChgNumRowFooGrp+ 56) +#define ActSeeLstMyAtt (ActChgNumRowFooGrp+ 57) +#define ActPrnLstMyAtt (ActChgNumRowFooGrp+ 58) +#define ActSeeLstStdAtt (ActChgNumRowFooGrp+ 59) +#define ActPrnLstStdAtt (ActChgNumRowFooGrp+ 60) +#define ActFrmNewAtt (ActChgNumRowFooGrp+ 61) +#define ActEdiOneAtt (ActChgNumRowFooGrp+ 62) +#define ActNewAtt (ActChgNumRowFooGrp+ 63) +#define ActChgAtt (ActChgNumRowFooGrp+ 64) +#define ActReqRemAtt (ActChgNumRowFooGrp+ 65) +#define ActRemAtt (ActChgNumRowFooGrp+ 66) +#define ActHidAtt (ActChgNumRowFooGrp+ 67) +#define ActShoAtt (ActChgNumRowFooGrp+ 68) +#define ActSeeOneAtt (ActChgNumRowFooGrp+ 69) +#define ActRecAttStd (ActChgNumRowFooGrp+ 70) +#define ActRecAttMe (ActChgNumRowFooGrp+ 71) -#define ActSignUp (ActChgNumRowFooGrp+ 71) -#define ActUpdSignUpReq (ActChgNumRowFooGrp+ 72) -#define ActReqRejSignUp (ActChgNumRowFooGrp+ 73) -#define ActRejSignUp (ActChgNumRowFooGrp+ 74) +#define ActSignUp (ActChgNumRowFooGrp+ 72) +#define ActUpdSignUpReq (ActChgNumRowFooGrp+ 73) +#define ActReqRejSignUp (ActChgNumRowFooGrp+ 74) +#define ActRejSignUp (ActChgNumRowFooGrp+ 75) -#define ActReqMdfOneOth (ActChgNumRowFooGrp+ 75) -#define ActReqMdfOneStd (ActChgNumRowFooGrp+ 76) -#define ActReqMdfOneTch (ActChgNumRowFooGrp+ 77) +#define ActReqMdfOneOth (ActChgNumRowFooGrp+ 76) +#define ActReqMdfOneStd (ActChgNumRowFooGrp+ 77) +#define ActReqMdfOneTch (ActChgNumRowFooGrp+ 78) -#define ActReqMdfOth (ActChgNumRowFooGrp+ 78) -#define ActReqMdfStd (ActChgNumRowFooGrp+ 79) -#define ActReqMdfTch (ActChgNumRowFooGrp+ 80) +#define ActReqMdfOth (ActChgNumRowFooGrp+ 79) +#define ActReqMdfStd (ActChgNumRowFooGrp+ 80) +#define ActReqMdfTch (ActChgNumRowFooGrp+ 81) -#define ActReqOthPho (ActChgNumRowFooGrp+ 81) -#define ActReqStdPho (ActChgNumRowFooGrp+ 82) -#define ActReqTchPho (ActChgNumRowFooGrp+ 83) -#define ActDetOthPho (ActChgNumRowFooGrp+ 84) -#define ActDetStdPho (ActChgNumRowFooGrp+ 85) -#define ActDetTchPho (ActChgNumRowFooGrp+ 86) -#define ActUpdOthPho (ActChgNumRowFooGrp+ 87) -#define ActUpdStdPho (ActChgNumRowFooGrp+ 88) -#define ActUpdTchPho (ActChgNumRowFooGrp+ 89) -#define ActReqRemOthPho (ActChgNumRowFooGrp+ 90) -#define ActReqRemStdPho (ActChgNumRowFooGrp+ 91) -#define ActReqRemTchPho (ActChgNumRowFooGrp+ 92) -#define ActRemOthPho (ActChgNumRowFooGrp+ 93) -#define ActRemStdPho (ActChgNumRowFooGrp+ 94) -#define ActRemTchPho (ActChgNumRowFooGrp+ 95) -#define ActCreOth (ActChgNumRowFooGrp+ 96) -#define ActCreStd (ActChgNumRowFooGrp+ 97) -#define ActCreTch (ActChgNumRowFooGrp+ 98) -#define ActUpdOth (ActChgNumRowFooGrp+ 99) -#define ActUpdStd (ActChgNumRowFooGrp+100) -#define ActUpdTch (ActChgNumRowFooGrp+101) +#define ActReqOthPho (ActChgNumRowFooGrp+ 82) +#define ActReqStdPho (ActChgNumRowFooGrp+ 83) +#define ActReqTchPho (ActChgNumRowFooGrp+ 84) +#define ActDetOthPho (ActChgNumRowFooGrp+ 85) +#define ActDetStdPho (ActChgNumRowFooGrp+ 86) +#define ActDetTchPho (ActChgNumRowFooGrp+ 87) +#define ActUpdOthPho (ActChgNumRowFooGrp+ 88) +#define ActUpdStdPho (ActChgNumRowFooGrp+ 89) +#define ActUpdTchPho (ActChgNumRowFooGrp+ 90) +#define ActReqRemOthPho (ActChgNumRowFooGrp+ 91) +#define ActReqRemStdPho (ActChgNumRowFooGrp+ 92) +#define ActReqRemTchPho (ActChgNumRowFooGrp+ 93) +#define ActRemOthPho (ActChgNumRowFooGrp+ 94) +#define ActRemStdPho (ActChgNumRowFooGrp+ 95) +#define ActRemTchPho (ActChgNumRowFooGrp+ 96) +#define ActCreOth (ActChgNumRowFooGrp+ 97) +#define ActCreStd (ActChgNumRowFooGrp+ 98) +#define ActCreTch (ActChgNumRowFooGrp+ 99) +#define ActUpdOth (ActChgNumRowFooGrp+100) +#define ActUpdStd (ActChgNumRowFooGrp+101) +#define ActUpdTch (ActChgNumRowFooGrp+102) -#define ActReqAccEnrStd (ActChgNumRowFooGrp+102) -#define ActReqAccEnrTch (ActChgNumRowFooGrp+103) -#define ActAccEnrStd (ActChgNumRowFooGrp+104) -#define ActAccEnrTch (ActChgNumRowFooGrp+105) -#define ActRemMe_Std (ActChgNumRowFooGrp+106) -#define ActRemMe_Tch (ActChgNumRowFooGrp+107) +#define ActReqAccEnrStd (ActChgNumRowFooGrp+103) +#define ActReqAccEnrTch (ActChgNumRowFooGrp+104) +#define ActAccEnrStd (ActChgNumRowFooGrp+105) +#define ActAccEnrTch (ActChgNumRowFooGrp+106) +#define ActRemMe_Std (ActChgNumRowFooGrp+107) +#define ActRemMe_Tch (ActChgNumRowFooGrp+108) -#define ActNewAdmIns (ActChgNumRowFooGrp+108) -#define ActRemAdmIns (ActChgNumRowFooGrp+109) -#define ActNewAdmCtr (ActChgNumRowFooGrp+110) -#define ActRemAdmCtr (ActChgNumRowFooGrp+111) -#define ActNewAdmDeg (ActChgNumRowFooGrp+112) -#define ActRemAdmDeg (ActChgNumRowFooGrp+113) +#define ActNewAdmIns (ActChgNumRowFooGrp+109) +#define ActRemAdmIns (ActChgNumRowFooGrp+110) +#define ActNewAdmCtr (ActChgNumRowFooGrp+111) +#define ActRemAdmCtr (ActChgNumRowFooGrp+112) +#define ActNewAdmDeg (ActChgNumRowFooGrp+113) +#define ActRemAdmDeg (ActChgNumRowFooGrp+114) -#define ActRcvFrmEnrSevStd (ActChgNumRowFooGrp+114) -#define ActRcvFrmEnrSevTch (ActChgNumRowFooGrp+115) +#define ActRcvFrmEnrSevStd (ActChgNumRowFooGrp+115) +#define ActRcvFrmEnrSevTch (ActChgNumRowFooGrp+116) -#define ActReqCnfID_Oth (ActChgNumRowFooGrp+116) -#define ActReqCnfID_Std (ActChgNumRowFooGrp+117) -#define ActReqCnfID_Tch (ActChgNumRowFooGrp+118) -#define ActCnfID_Oth (ActChgNumRowFooGrp+119) -#define ActCnfID_Std (ActChgNumRowFooGrp+120) -#define ActCnfID_Tch (ActChgNumRowFooGrp+121) +#define ActReqCnfID_Oth (ActChgNumRowFooGrp+117) +#define ActReqCnfID_Std (ActChgNumRowFooGrp+118) +#define ActReqCnfID_Tch (ActChgNumRowFooGrp+119) +#define ActCnfID_Oth (ActChgNumRowFooGrp+120) +#define ActCnfID_Std (ActChgNumRowFooGrp+121) +#define ActCnfID_Tch (ActChgNumRowFooGrp+122) -#define ActFrmIDsOth (ActChgNumRowFooGrp+122) -#define ActFrmIDsStd (ActChgNumRowFooGrp+123) -#define ActFrmIDsTch (ActChgNumRowFooGrp+124) -#define ActRemID_Oth (ActChgNumRowFooGrp+125) -#define ActRemID_Std (ActChgNumRowFooGrp+126) -#define ActRemID_Tch (ActChgNumRowFooGrp+127) -#define ActNewID_Oth (ActChgNumRowFooGrp+128) -#define ActNewID_Std (ActChgNumRowFooGrp+129) -#define ActNewID_Tch (ActChgNumRowFooGrp+130) -#define ActFrmPwdOth (ActChgNumRowFooGrp+131) -#define ActFrmPwdStd (ActChgNumRowFooGrp+132) -#define ActFrmPwdTch (ActChgNumRowFooGrp+133) -#define ActChgPwdOth (ActChgNumRowFooGrp+134) -#define ActChgPwdStd (ActChgNumRowFooGrp+135) -#define ActChgPwdTch (ActChgNumRowFooGrp+136) -#define ActFrmMaiOth (ActChgNumRowFooGrp+137) -#define ActFrmMaiStd (ActChgNumRowFooGrp+138) -#define ActFrmMaiTch (ActChgNumRowFooGrp+139) -#define ActRemMaiOth (ActChgNumRowFooGrp+140) -#define ActRemMaiStd (ActChgNumRowFooGrp+141) -#define ActRemMaiTch (ActChgNumRowFooGrp+142) -#define ActNewMaiOth (ActChgNumRowFooGrp+143) -#define ActNewMaiStd (ActChgNumRowFooGrp+144) -#define ActNewMaiTch (ActChgNumRowFooGrp+145) +#define ActFrmIDsOth (ActChgNumRowFooGrp+123) +#define ActFrmIDsStd (ActChgNumRowFooGrp+124) +#define ActFrmIDsTch (ActChgNumRowFooGrp+125) +#define ActRemID_Oth (ActChgNumRowFooGrp+126) +#define ActRemID_Std (ActChgNumRowFooGrp+127) +#define ActRemID_Tch (ActChgNumRowFooGrp+128) +#define ActNewID_Oth (ActChgNumRowFooGrp+129) +#define ActNewID_Std (ActChgNumRowFooGrp+130) +#define ActNewID_Tch (ActChgNumRowFooGrp+131) +#define ActFrmPwdOth (ActChgNumRowFooGrp+132) +#define ActFrmPwdStd (ActChgNumRowFooGrp+133) +#define ActFrmPwdTch (ActChgNumRowFooGrp+134) +#define ActChgPwdOth (ActChgNumRowFooGrp+135) +#define ActChgPwdStd (ActChgNumRowFooGrp+136) +#define ActChgPwdTch (ActChgNumRowFooGrp+137) +#define ActFrmMaiOth (ActChgNumRowFooGrp+138) +#define ActFrmMaiStd (ActChgNumRowFooGrp+139) +#define ActFrmMaiTch (ActChgNumRowFooGrp+140) +#define ActRemMaiOth (ActChgNumRowFooGrp+141) +#define ActRemMaiStd (ActChgNumRowFooGrp+142) +#define ActRemMaiTch (ActChgNumRowFooGrp+143) +#define ActNewMaiOth (ActChgNumRowFooGrp+144) +#define ActNewMaiStd (ActChgNumRowFooGrp+145) +#define ActNewMaiTch (ActChgNumRowFooGrp+146) -#define ActRemStdCrs (ActChgNumRowFooGrp+146) -#define ActRemTchCrs (ActChgNumRowFooGrp+147) -#define ActRemUsrGbl (ActChgNumRowFooGrp+148) +#define ActRemStdCrs (ActChgNumRowFooGrp+147) +#define ActRemTchCrs (ActChgNumRowFooGrp+148) +#define ActRemUsrGbl (ActChgNumRowFooGrp+149) -#define ActReqRemAllStdCrs (ActChgNumRowFooGrp+149) -#define ActRemAllStdCrs (ActChgNumRowFooGrp+150) +#define ActReqRemAllStdCrs (ActChgNumRowFooGrp+150) +#define ActRemAllStdCrs (ActChgNumRowFooGrp+151) -#define ActReqRemOldUsr (ActChgNumRowFooGrp+151) -#define ActRemOldUsr (ActChgNumRowFooGrp+152) +#define ActReqRemOldUsr (ActChgNumRowFooGrp+152) +#define ActRemOldUsr (ActChgNumRowFooGrp+153) -#define ActLstDupUsr (ActChgNumRowFooGrp+153) -#define ActLstSimUsr (ActChgNumRowFooGrp+154) -#define ActRemDupUsr (ActChgNumRowFooGrp+155) +#define ActLstDupUsr (ActChgNumRowFooGrp+154) +#define ActLstSimUsr (ActChgNumRowFooGrp+155) +#define ActRemDupUsr (ActChgNumRowFooGrp+156) -#define ActLstClk (ActChgNumRowFooGrp+156) +#define ActLstClk (ActChgNumRowFooGrp+157) /*****************************************************************************/ /******************************** Social tab *********************************/ diff --git a/swad_agenda.c b/swad_agenda.c index b24b6a63..2072d1c0 100644 --- a/swad_agenda.c +++ b/swad_agenda.c @@ -95,6 +95,21 @@ static void Agd_UpdateEvent (struct AgendaEvent *AgdEvent,const char *Txt); /************************ Show another user's agenda *************************/ /*****************************************************************************/ +void Agd_LogInToShowUsrAgenda (void) + { + /***** Check if user exists and get her/his data *****/ + Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (&Gbl.Usrs.Other.UsrDat); + + /***** Form to log in *****/ + /* Put the form to log in always, even if user does not exist, + to not give clues about whether a user exists or not */ + Usr_WriteFormLogin (ActSeeUsrAgd,Usr_PutParamOtherUsrCodEncrypted); + } + +/*****************************************************************************/ +/************************ Show another user's agenda *************************/ +/*****************************************************************************/ + void Agd_ShowUsrAgenda (void) { extern const char *Txt_User_not_found_or_you_do_not_have_permission_; diff --git a/swad_agenda.h b/swad_agenda.h index 736ca039..189405a7 100644 --- a/swad_agenda.h +++ b/swad_agenda.h @@ -74,6 +74,7 @@ typedef enum /***************************** Public prototypes *****************************/ /*****************************************************************************/ +void Agd_LogInToShowUsrAgenda (void); void Agd_ShowUsrAgenda (void); void Agd_ShowMyAgenda (void); diff --git a/swad_changelog.h b/swad_changelog.h index 4f91ed92..c6e136c1 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -183,13 +183,14 @@ /****************************** Public constants *****************************/ /*****************************************************************************/ -#define Log_PLATFORM_VERSION "SWAD 16.85.1 (2016-12-03)" +#define Log_PLATFORM_VERSION "SWAD 16.86 (2016-12-04)" #define CSS_FILE "swad16.82.2.css" #define JS_FILE "swad16.84.2.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 16.86: Dec 04, 2016 New action to log in and show another user's agenda when not logged. (209781 lines) Version 16.85.1: Dec 03, 2016 Changed title of public agenda. (209722 lines) Version 16.85: Dec 03, 2016 Form to choice between all events / only public events in agenda. (209721 lines) Version 16.84.2: Dec 03, 2016 Only hours and minutes (seconds = 0) in agenda events. (209606 lines) diff --git a/swad_mail.c b/swad_mail.c index 2dd71ebc..0aeb15f3 100644 --- a/swad_mail.c +++ b/swad_mail.c @@ -1732,7 +1732,7 @@ void Mai_ConfirmEmail (void) Lay_ShowAlert (Lay_WARNING,Txt_Failed_email_confirmation_key); /***** Form to log in *****/ - Usr_WriteFormLogin (); + Usr_WriteFormLogin (ActAutUsrInt,NULL); } /*****************************************************************************/ diff --git a/swad_parameter.c b/swad_parameter.c index 7df9f5cd..4e630340 100644 --- a/swad_parameter.c +++ b/swad_parameter.c @@ -619,6 +619,7 @@ static bool Par_CheckIsParamCanBeUsedInGETMethod (const char *ParamName) "deg", // To enter directly to a degree "crs", // To enter directly to a course "usr", // To enter directly to a user's profile + "agd", // To view user's public agenda "act", // To execute directly an action (allowed only for fully public actions) "ses", // To use an open session when redirecting from one language to another "key", // To verify an email address @@ -673,6 +674,7 @@ void Par_GetMainParameters (void) (this nickname is used to go to another user's profile, not to get the logged user) *****/ if (Par_GetParToText ("usr",Nickname,Nck_MAX_BYTES_NICKNAME_WITH_ARROBA)) + { if (Nickname[0]) { // This user's code is used to go to public profile @@ -681,6 +683,17 @@ void Par_GetMainParameters (void) Gbl.Usrs.Other.UsrDat.UsrCod = Nck_GetUsrCodFromNickname (Nickname); Gbl.Action.Act = ActSeePubPrf; // Set default action if no other is specified } + } + else if (Par_GetParToText ("agd",Nickname,Nck_MAX_BYTES_NICKNAME_WITH_ARROBA)) + { + if (Nickname[0]) + { + // This user's code is used to go to public agenda + // If user does not exist ==> UsrCod = -1 + Gbl.Usrs.Other.UsrDat.UsrCod = Nck_GetUsrCodFromNickname (Nickname); + Gbl.Action.Act = ActLogInSeeUsrAgd; // Set default action if no other is specified + } + } /***** Get action to perform *****/ Par_GetParToText ("act",UnsignedStr,10); @@ -699,12 +712,17 @@ void Par_GetMainParameters (void) if (UnsignedNum <= Act_MAX_ACTION_COD) Gbl.Action.Act = Act_FromActCodToAction[UnsignedNum]; } + + /***** Some preliminary adjusts depending on action *****/ if (Gbl.Action.Act == ActRefCon || Gbl.Action.Act == ActRefLstClk || Gbl.Action.Act == ActRefNewSocPubGbl || Gbl.Action.Act == ActRefOldSocPubGbl || Gbl.Action.Act == ActRefOldSocPubUsr) Gbl.Action.UsesAJAX = true; + else if (Gbl.Action.Act == ActSeeUsrAgd) + // It's necessary to do this here when log in to view user's agenda fails + Usr_GetParamOtherUsrCodEncrypted (&Gbl.Usrs.Other.UsrDat); /***** Get session identifier, if exists *****/ Par_GetParToText ("ses",Gbl.Session.Id,Ses_LENGTH_SESSION_ID); @@ -740,6 +758,8 @@ void Par_GetMainParameters (void) switch (Gbl.Action.Act) { case ActAutUsrInt: + case ActLogInSeeUsrAgd: + case ActSeeUsrAgd: Pwd_GetParamUsrPwdLogin (); // no break; case ActReqSndNewPwd: diff --git a/swad_user.c b/swad_user.c index d5a9aee9..c43654bd 100644 --- a/swad_user.c +++ b/swad_user.c @@ -406,7 +406,7 @@ void Usr_GetUsrCodFromEncryptedUsrCod (struct UsrData *UsrDat) /*****************************************************************************/ // Input: UsrDat->UsrCod must hold user's code -void Usr_GetEncryptedUsrCodFromUsrCod (struct UsrData *UsrDat) +void Usr_GetEncryptedUsrCodFromUsrCod (struct UsrData *UsrDat) // TODO: Remove this funcion, it's not used { char Query[512]; MYSQL_RES *mysql_res; @@ -1683,7 +1683,7 @@ bool Usr_ChkIfEncryptedUsrCodExists (const char *EncryptedUsrCod) void Usr_WriteLandingPage (void) { /***** Form to log in *****/ - Usr_WriteFormLogin (); + Usr_WriteFormLogin (ActAutUsrInt,NULL); /***** Form to go to request the creation of a new account *****/ Acc_ShowFormGoToRequestNewAccount (); @@ -1714,7 +1714,7 @@ void Usr_Logout (void) Lay_ShowAlert (Lay_INFO,Txt_The_session_has_been_closed); /***** Form to log in *****/ - Usr_WriteFormLogin (); + Usr_WriteFormLogin (ActAutUsrInt,NULL); /***** Advertisement about mobile app *****/ Lay_AdvertisementMobile (); @@ -1738,7 +1738,7 @@ void Usr_PutLinkToLogin (void) /************************ Write form for user log in *************************/ /*****************************************************************************/ -void Usr_WriteFormLogin (void) +void Usr_WriteFormLogin (Act_Action_t NextAction,void (*FuncParams) ()) { extern const char *Hlp_PROFILE_Log_in; extern const char *Txt_Log_in; @@ -1756,9 +1756,14 @@ void Usr_WriteFormLogin (void) fprintf (Gbl.F.Out,""); - /***** Start form *****/ fprintf (Gbl.F.Out,"
"); - Act_FormStart (ActAutUsrInt); + + /***** Start form *****/ + Act_FormStart (NextAction); + if (FuncParams) + FuncParams (); + + /***** Start frame and table *****/ Lay_StartRoundFrameTable (NULL,Txt_Log_in,NULL,Hlp_PROFILE_Log_in,2); /***** User's ID/nickname and password *****/ @@ -1798,8 +1803,10 @@ void Usr_WriteFormLogin (void) Pwd_MAX_LENGTH_PLAIN_PASSWORD, Txt_password); - /***** Send button and form end *****/ + /***** Send button and end table and frame *****/ Lay_EndRoundFrameTableWithButton (Lay_CONFIRM_BUTTON,Txt_Log_in); + + /***** End form *****/ Act_FormEnd (); fprintf (Gbl.F.Out,"
"); @@ -2195,7 +2202,17 @@ bool Usr_GetParamOtherUsrCodEncryptedAndGetUsrData (void) void Usr_ChkUsrAndGetUsrData (void) { extern const char *Txt_The_session_has_expired_due_to_inactivity; - bool PutFormLogin = false; + struct + { + bool PutForm; + Act_Action_t Action; + void (*FuncParams) (); + } FormLogin = + { + false, + ActAutUsrInt, + NULL + }; Act_Action_t Action; if (Gbl.Session.HasBeenDisconnected) @@ -2205,7 +2222,7 @@ void Usr_ChkUsrAndGetUsrData (void) Gbl.Action.Act = ActLogOut; Tab_SetCurrentTab (); Lay_ShowAlert (Lay_WARNING,Txt_The_session_has_expired_due_to_inactivity); - PutFormLogin = true; + FormLogin.PutForm = true; } } else // !Gbl.Session.HasBeenDisconnected @@ -2249,9 +2266,10 @@ void Usr_ChkUsrAndGetUsrData (void) } } else - PutFormLogin = true; + FormLogin.PutForm = true; } - else if (Gbl.Action.Act == ActAutUsrInt) // Login using @nickname, email or ID from form + else if (Gbl.Action.Act == ActAutUsrInt || + Gbl.Action.Act == ActSeeUsrAgd) // Login using @nickname, email or ID from form { if (Usr_ChkUsrAndGetUsrDataFromDirectLogin ()) // User logged in { @@ -2264,7 +2282,14 @@ void Usr_ChkUsrAndGetUsrData (void) Pre_SetPrefsFromIP (); // Set preferences from current IP } else - PutFormLogin = true; + { + FormLogin.PutForm = true; + if (Gbl.Action.Act == ActSeeUsrAgd) + { + FormLogin.Action = ActSeeUsrAgd; + FormLogin.FuncParams = Usr_PutParamOtherUsrCodEncrypted; + } + } } else if (Gbl.Action.Act == ActAutUsrNew) // Empty account without password, login using encrypted user's code { @@ -2282,15 +2307,15 @@ void Usr_ChkUsrAndGetUsrData (void) Pre_SetPrefsFromIP (); // Set preferences from current IP } else - PutFormLogin = true; + FormLogin.PutForm = true; } } } /***** If session disconnected or error in login, show form to login *****/ - if (PutFormLogin) + if (FormLogin.PutForm) { - Usr_WriteFormLogin (); + Usr_WriteFormLogin (FormLogin.Action,FormLogin.FuncParams); Lay_ShowErrorAndExit (NULL); } @@ -2508,8 +2533,8 @@ static void Usr_ShowAlertUsrDoesNotExistsOrWrongPassword (void) { extern const char *Txt_The_user_does_not_exist_or_password_is_incorrect; - Gbl.Action.Act = ActFrmLogIn; - Tab_SetCurrentTab (); + // Gbl.Action.Act = ActFrmLogIn; + // Tab_SetCurrentTab (); Lay_ShowAlert (Lay_WARNING,Txt_The_user_does_not_exist_or_password_is_incorrect); } diff --git a/swad_user.h b/swad_user.h index dd5a9a5f..a9f924e2 100644 --- a/swad_user.h +++ b/swad_user.h @@ -215,7 +215,7 @@ void Usr_GetAllUsrDataFromUsrCod (struct UsrData *UsrDat); void Usr_AllocateListUsrCods (struct ListUsrCods *ListUsrCods); void Usr_FreeListUsrCods (struct ListUsrCods *ListUsrCods); void Usr_GetUsrCodFromEncryptedUsrCod (struct UsrData *UsrDat); -void Usr_GetEncryptedUsrCodFromUsrCod (struct UsrData *UsrDat); +void Usr_GetEncryptedUsrCodFromUsrCod (struct UsrData *UsrDat); // TODO: Remove this funcion, it's not used void Usr_GetUsrDataFromUsrCod (struct UsrData *UsrDat); void Usr_BuildFullName (struct UsrData *UsrDat); @@ -278,7 +278,7 @@ void Usr_WriteLandingPage (void); void Usr_WriteFormLogout (void); void Usr_Logout (void); void Usr_PutLinkToLogin (void); -void Usr_WriteFormLogin (void); +void Usr_WriteFormLogin (Act_Action_t NextAction,void (*FuncParams) ()); void Usr_WelcomeUsr (void); void Usr_CreateBirthdayStrDB (const struct UsrData *UsrDat,