Version 15.140

This commit is contained in:
Antonio Cañas Vargas 2016-03-01 03:16:29 +01:00
parent c06fef3674
commit 169039f21c
9 changed files with 261 additions and 163 deletions

View File

@ -92,6 +92,19 @@ static void Acc_AskIfRemoveOtherUsrAccount (void);
static void Acc_RemoveUsrBriefcase (struct UsrData *UsrDat); static void Acc_RemoveUsrBriefcase (struct UsrData *UsrDat);
static void Acc_RemoveUsr (struct UsrData *UsrDat); static void Acc_RemoveUsr (struct UsrData *UsrDat);
/*****************************************************************************/
/******************** Put link to create a new account ***********************/
/*****************************************************************************/
void Acc_PutLinkToCreateAccount (void)
{
extern const char *Txt_Create_account;
Lay_PutContextualLink (ActFrmUsrAcc,NULL,
"arroba64x64.gif",
Txt_Create_account,Txt_Create_account);
}
/*****************************************************************************/ /*****************************************************************************/
/******** Show form to change my account or to create a new account **********/ /******** Show form to change my account or to create a new account **********/
/*****************************************************************************/ /*****************************************************************************/

View File

@ -44,6 +44,7 @@
/****************************** Public prototypes ****************************/ /****************************** Public prototypes ****************************/
/*****************************************************************************/ /*****************************************************************************/
void Acc_PutLinkToCreateAccount (void);
void Acc_ShowFormAccount (void); void Acc_ShowFormAccount (void);
void Acc_ShowFormRequestNewAccount (void); void Acc_ShowFormRequestNewAccount (void);
void Acc_ShowFormChangeMyAccount (void); void Acc_ShowFormChangeMyAccount (void);

View File

@ -1243,7 +1243,8 @@ Statistics:
1069. ActSeeAccCrs Query clicks to current course 1069. ActSeeAccCrs Query clicks to current course
1070. ActSeeAllStaCrs Show statistics of courses 1070. ActSeeAllStaCrs Show statistics of courses
Profile: Profile:
1071. ActFrmLogIn Show form to log in NEW 1071. ActFrmLogIn Show landing page (forms to log in and to create a new account)
1071. ActFrmRolSes Show form to log out and to change current role in this session
1072. ActMyCrs Select one of my courses 1072. ActMyCrs Select one of my courses
1073. ActSeeMyTT Show the timetable of all courses of the logged user 1073. ActSeeMyTT Show the timetable of all courses of the logged user
1074. ActFrmUsrAcc Show form to the creation or change of user's account 1074. ActFrmUsrAcc Show form to the creation or change of user's account
@ -1252,14 +1253,14 @@ Profile:
1077. ActAdmBrf Show the briefcase of private archives 1077. ActAdmBrf Show the briefcase of private archives
1078. ActMFUAct Show most frequently used actions 1078. ActMFUAct Show most frequently used actions
1084. ActReqSndNewPwd Show form to send a new password via e-mail
1085. ActSndNewPwd Send a new password via e-mail
1082. ActLogOut Close session
1079. ActAutUsrInt Authentify user internally (directly from the platform) 1079. ActAutUsrInt Authentify user internally (directly from the platform)
1080. ActAutUsrExt Authentify user externally (remotely from an external site) 1080. ActAutUsrExt Authentify user externally (remotely from an external site)
1081. ActAutUsrChgLan Change language to my language just after authentication 1081. ActAutUsrChgLan Change language to my language just after authentication
1082. ActLogOut Close session
1083. ActAnnSee Mark announcement as seen 1083. ActAnnSee Mark announcement as seen
1084. ActReqSndNewPwd Show form to send a new password via e-mail
1085. ActSndNewPwd Send a new password via e-mail
1086. ActChgMyRol Change type of logged user 1086. ActChgMyRol Change type of logged user
1087. ActCreUsrAcc Create new user account 1087. ActCreUsrAcc Create new user account
@ -2605,25 +2606,26 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
// TabPrf ****************************************************************** // TabPrf ******************************************************************
// Actions in menu: // Actions in menu:
/* ActFrmLogIn */{ 843, 0,TabPrf,ActFrmLogIn ,0x1FF,0x1FF,0x1FF,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Usr_WriteFormLoginLogout ,"keyuser64x64.gif" }, /* ActFrmLogIn */{1521, 0,TabPrf,ActFrmLogIn ,0x001,0x001,0x001,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Usr_WriteLandingPage ,"keyuser64x64.gif" },
/* ActMyCrs */{ 987, 1,TabPrf,ActMyCrs ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Crs_ReqSelectOneOfMyCourses ,"mygroups64x64.gif" }, /* ActFrmRolSes */{ 843, 1,TabPrf,ActFrmRolSes ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Usr_WriteFormLogout ,"keyuser64x64.gif" },
/* ActSeeMyTT */{ 408, 2,TabPrf,ActSeeMyTT ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,TT_ShowClassTimeTable ,"clock64x64.gif" }, /* ActMyCrs */{ 987, 2,TabPrf,ActMyCrs ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Crs_ReqSelectOneOfMyCourses ,"mygroups64x64.gif" },
/* ActFrmUsrAcc */{ 36, 3,TabPrf,ActFrmUsrAcc ,0x1FF,0x1FF,0x1FF,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Acc_ShowFormAccount ,"arroba64x64.gif" }, /* ActSeeMyTT */{ 408, 3,TabPrf,ActSeeMyTT ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,TT_ShowClassTimeTable ,"clock64x64.gif" },
/* ActReqEdiRecCom */{ 285, 4,TabPrf,ActReqEdiRecCom ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Rec_ShowFormMyCommRecord ,"card64x64.gif" }, /* ActFrmUsrAcc */{ 36, 4,TabPrf,ActFrmUsrAcc ,0x1FF,0x1FF,0x1FF,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Acc_ShowFormAccount ,"arroba64x64.gif" },
/* ActEdiPrf */{ 673, 5,TabPrf,ActEdiPrf ,0x1FF,0x1FF,0x1FF,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Pre_EditPrefs ,"heart64x64.gif" }, /* ActReqEdiRecCom */{ 285, 5,TabPrf,ActReqEdiRecCom ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Rec_ShowFormMyCommRecord ,"card64x64.gif" },
/* ActAdmBrf */{ 23, 6,TabPrf,ActAdmBrf ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Brw_ShowFileBrowserOrWorks ,"pendrive64x64.gif" }, /* ActEdiPrf */{ 673, 6,TabPrf,ActEdiPrf ,0x1FF,0x1FF,0x1FF,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Pre_EditPrefs ,"heart64x64.gif" },
/* ActMFUAct */{ 993, 7,TabPrf,ActMFUAct ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Act_ShowMyMFUActions ,"star64x64.gif" }, /* ActAdmBrf */{ 23, 7,TabPrf,ActAdmBrf ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Brw_ShowFileBrowserOrWorks ,"pendrive64x64.gif" },
/* ActMFUAct */{ 993, 8,TabPrf,ActMFUAct ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Act_ShowMyMFUActions ,"star64x64.gif" },
// Actions not in menu: // Actions not in menu:
/* ActAutUsrInt */{ 6,-1,TabPrf,ActFrmLogIn ,0x1FF,0x1FF,0x1FF,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Usr_WelcomeUsr ,NULL},
/* ActAutUsrExt */{ 794,-1,TabPrf,ActFrmLogIn ,0x1FF,0x1FF,0x1FF,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Usr_WelcomeUsr ,NULL},
/* ActAutUsrChgLan */{1077,-1,TabPrf,ActFrmLogIn ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Usr_WelcomeUsr ,NULL},
/* ActLogOut */{ 10,-1,TabPrf,ActFrmLogIn ,0x1FF,0x1FF,0x1FF,Act_CONTENT_NORM,Act_MAIN_WINDOW,Ses_CloseSession ,Usr_Logout ,NULL},
/* ActAnnSee */{1234,-1,TabPrf,ActFrmLogIn ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Ann_MarkAnnouncementAsSeen ,NULL},
/* ActReqSndNewPwd */{ 665,-1,TabPrf,ActFrmLogIn ,0x000,0x001,0x001,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Pwd_ShowFormSendNewPwd ,NULL}, /* ActReqSndNewPwd */{ 665,-1,TabPrf,ActFrmLogIn ,0x000,0x001,0x001,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Pwd_ShowFormSendNewPwd ,NULL},
/* ActSndNewPwd */{ 633,-1,TabPrf,ActFrmLogIn ,0x000,0x001,0x001,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Pwd_ChkIdLoginAndSendNewPwd ,NULL}, /* ActSndNewPwd */{ 633,-1,TabPrf,ActFrmLogIn ,0x000,0x001,0x001,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Pwd_ChkIdLoginAndSendNewPwd ,NULL},
/* ActChgMyRol */{ 589,-1,TabPrf,ActFrmLogIn ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,Rol_ChangeMyRole ,Usr_ShowFormsLogoutAndRole ,NULL}, /* ActLogOut */{ 10,-1,TabPrf,ActFrmLogIn ,0x1FF,0x1FF,0x1FF,Act_CONTENT_NORM,Act_MAIN_WINDOW,Ses_CloseSession ,Usr_Logout ,NULL},
/* ActAutUsrInt */{ 6,-1,TabPrf,ActFrmRolSes ,0x1FF,0x1FF,0x1FF,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Usr_WelcomeUsr ,NULL},
/* ActAutUsrExt */{ 794,-1,TabPrf,ActFrmRolSes ,0x1FF,0x1FF,0x1FF,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Usr_WelcomeUsr ,NULL},
/* ActAutUsrChgLan */{1077,-1,TabPrf,ActFrmRolSes ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Usr_WelcomeUsr ,NULL},
/* ActAnnSee */{1234,-1,TabPrf,ActFrmRolSes ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Ann_MarkAnnouncementAsSeen ,NULL},
/* ActChgMyRol */{ 589,-1,TabPrf,ActFrmRolSes ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,Rol_ChangeMyRole ,Usr_ShowFormsLogoutAndRole ,NULL},
/* ActCreUsrAcc */{1163,-1,TabPrf,ActFrmUsrAcc ,0x1FF,0x1FF,0x1FF,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Acc_AfterCreationNewAccount ,NULL}, /* ActCreUsrAcc */{1163,-1,TabPrf,ActFrmUsrAcc ,0x1FF,0x1FF,0x1FF,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Acc_AfterCreationNewAccount ,NULL},
@ -3552,7 +3554,7 @@ Act_Action_t Act_FromActCodToAction[1+Act_MAX_ACTION_COD] = // Do not reuse uniq
ActSetUp, // #840 ActSetUp, // #840
ActChgThe, // #841 ActChgThe, // #841
-1, // #842 (obsolete action) -1, // #842 (obsolete action)
ActFrmLogIn, // #843 ActFrmRolSes, // #843
ActHom, // #844 ActHom, // #844
ActRefCon, // #845 ActRefCon, // #845
ActRcvFilAsgCrsCla, // #846 ActRcvFilAsgCrsCla, // #846
@ -4233,6 +4235,7 @@ Act_Action_t Act_FromActCodToAction[1+Act_MAX_ACTION_COD] = // Do not reuse uniq
ActFavSocComUsr, // #1518 ActFavSocComUsr, // #1518
ActUnfSocComUsr, // #1519 ActUnfSocComUsr, // #1519
ActSeeSocPrf, // #1520 ActSeeSocPrf, // #1520
ActFrmLogIn, // #1521
}; };
/*****************************************************************************/ /*****************************************************************************/

View File

@ -71,9 +71,9 @@ typedef enum
typedef int Act_Action_t; // Must be a signed type, because -1 is used to indicate obsolete action typedef int Act_Action_t; // Must be a signed type, because -1 is used to indicate obsolete action
#define Act_NUM_ACTIONS (1+9+52+15+90+70+67+205+183+143+172+36+27+82) #define Act_NUM_ACTIONS (1+9+52+15+90+70+67+205+183+143+172+36+27+83)
#define Act_MAX_ACTION_COD 1520 #define Act_MAX_ACTION_COD 1521
#define Act_MAX_OPTIONS_IN_MENU_PER_TAB 20 #define Act_MAX_OPTIONS_IN_MENU_PER_TAB 20
@ -1301,98 +1301,99 @@ typedef int Act_Action_t; // Must be a signed type, because -1 is used to indica
/*****************************************************************************/ /*****************************************************************************/
// Actions in menu // Actions in menu
#define ActFrmLogIn (ActSeeAllStaCrs+ 1) #define ActFrmLogIn (ActSeeAllStaCrs+ 1)
#define ActMyCrs (ActSeeAllStaCrs+ 2) #define ActFrmRolSes (ActSeeAllStaCrs+ 2)
#define ActSeeMyTT (ActSeeAllStaCrs+ 3) #define ActMyCrs (ActSeeAllStaCrs+ 3)
#define ActFrmUsrAcc (ActSeeAllStaCrs+ 4) #define ActSeeMyTT (ActSeeAllStaCrs+ 4)
#define ActReqEdiRecCom (ActSeeAllStaCrs+ 5) #define ActFrmUsrAcc (ActSeeAllStaCrs+ 5)
#define ActEdiPrf (ActSeeAllStaCrs+ 6) #define ActReqEdiRecCom (ActSeeAllStaCrs+ 6)
#define ActAdmBrf (ActSeeAllStaCrs+ 7) #define ActEdiPrf (ActSeeAllStaCrs+ 7)
#define ActMFUAct (ActSeeAllStaCrs+ 8) #define ActAdmBrf (ActSeeAllStaCrs+ 8)
#define ActMFUAct (ActSeeAllStaCrs+ 9)
// Secondary actions // Secondary actions
#define ActAutUsrInt (ActSeeAllStaCrs+ 9) #define ActReqSndNewPwd (ActSeeAllStaCrs+10)
#define ActAutUsrExt (ActSeeAllStaCrs+10) #define ActSndNewPwd (ActSeeAllStaCrs+11)
#define ActAutUsrChgLan (ActSeeAllStaCrs+11)
#define ActLogOut (ActSeeAllStaCrs+12) #define ActLogOut (ActSeeAllStaCrs+12)
#define ActAnnSee (ActSeeAllStaCrs+13) #define ActAutUsrInt (ActSeeAllStaCrs+13)
#define ActReqSndNewPwd (ActSeeAllStaCrs+14) #define ActAutUsrExt (ActSeeAllStaCrs+14)
#define ActSndNewPwd (ActSeeAllStaCrs+15) #define ActAutUsrChgLan (ActSeeAllStaCrs+15)
#define ActChgMyRol (ActSeeAllStaCrs+16) #define ActAnnSee (ActSeeAllStaCrs+16)
#define ActCreUsrAcc (ActSeeAllStaCrs+17) #define ActChgMyRol (ActSeeAllStaCrs+17)
#define ActRemID_Me (ActSeeAllStaCrs+18) #define ActCreUsrAcc (ActSeeAllStaCrs+18)
#define ActNewIDMe (ActSeeAllStaCrs+19) #define ActRemID_Me (ActSeeAllStaCrs+19)
#define ActRemOldNic (ActSeeAllStaCrs+20) #define ActNewIDMe (ActSeeAllStaCrs+20)
#define ActChgNic (ActSeeAllStaCrs+21) #define ActRemOldNic (ActSeeAllStaCrs+21)
#define ActRemMaiMe (ActSeeAllStaCrs+22) #define ActChgNic (ActSeeAllStaCrs+22)
#define ActNewMaiMe (ActSeeAllStaCrs+23) #define ActRemMaiMe (ActSeeAllStaCrs+23)
#define ActCnfMai (ActSeeAllStaCrs+24) #define ActNewMaiMe (ActSeeAllStaCrs+24)
#define ActFrmChgMyPwd (ActSeeAllStaCrs+25) #define ActCnfMai (ActSeeAllStaCrs+25)
#define ActChgPwd (ActSeeAllStaCrs+26) #define ActFrmChgMyPwd (ActSeeAllStaCrs+26)
#define ActReqRemMyAcc (ActSeeAllStaCrs+27) #define ActChgPwd (ActSeeAllStaCrs+27)
#define ActRemMyAcc (ActSeeAllStaCrs+28) #define ActReqRemMyAcc (ActSeeAllStaCrs+28)
#define ActRemMyAcc (ActSeeAllStaCrs+29)
#define ActChgMyData (ActSeeAllStaCrs+29) #define ActChgMyData (ActSeeAllStaCrs+30)
#define ActReqMyPho (ActSeeAllStaCrs+30) #define ActReqMyPho (ActSeeAllStaCrs+31)
#define ActDetMyPho (ActSeeAllStaCrs+31) #define ActDetMyPho (ActSeeAllStaCrs+32)
#define ActUpdMyPho (ActSeeAllStaCrs+32) #define ActUpdMyPho (ActSeeAllStaCrs+33)
#define ActRemMyPho (ActSeeAllStaCrs+33) #define ActRemMyPho (ActSeeAllStaCrs+34)
#define ActEdiPri (ActSeeAllStaCrs+34) #define ActEdiPri (ActSeeAllStaCrs+35)
#define ActChgPriPho (ActSeeAllStaCrs+35) #define ActChgPriPho (ActSeeAllStaCrs+36)
#define ActChgPriPrf (ActSeeAllStaCrs+36) #define ActChgPriPrf (ActSeeAllStaCrs+37)
#define ActReqEdiMyIns (ActSeeAllStaCrs+37) #define ActReqEdiMyIns (ActSeeAllStaCrs+38)
#define ActChgCtyMyIns (ActSeeAllStaCrs+38) #define ActChgCtyMyIns (ActSeeAllStaCrs+39)
#define ActChgMyIns (ActSeeAllStaCrs+39) #define ActChgMyIns (ActSeeAllStaCrs+40)
#define ActChgMyCtr (ActSeeAllStaCrs+40) #define ActChgMyCtr (ActSeeAllStaCrs+41)
#define ActChgMyDpt (ActSeeAllStaCrs+41) #define ActChgMyDpt (ActSeeAllStaCrs+42)
#define ActChgMyOff (ActSeeAllStaCrs+42) #define ActChgMyOff (ActSeeAllStaCrs+43)
#define ActChgMyOffPho (ActSeeAllStaCrs+43) #define ActChgMyOffPho (ActSeeAllStaCrs+44)
#define ActReqEdiMyNet (ActSeeAllStaCrs+44) #define ActReqEdiMyNet (ActSeeAllStaCrs+45)
#define ActChgMyNet (ActSeeAllStaCrs+45) #define ActChgMyNet (ActSeeAllStaCrs+46)
#define ActChgThe (ActSeeAllStaCrs+46) #define ActChgThe (ActSeeAllStaCrs+47)
#define ActReqChgLan (ActSeeAllStaCrs+47) #define ActReqChgLan (ActSeeAllStaCrs+48)
#define ActChgLan (ActSeeAllStaCrs+48) #define ActChgLan (ActSeeAllStaCrs+49)
#define ActChg1stDay (ActSeeAllStaCrs+49) #define ActChg1stDay (ActSeeAllStaCrs+50)
#define ActChgCol (ActSeeAllStaCrs+50) #define ActChgCol (ActSeeAllStaCrs+51)
#define ActHidLftCol (ActSeeAllStaCrs+51) #define ActHidLftCol (ActSeeAllStaCrs+52)
#define ActHidRgtCol (ActSeeAllStaCrs+52) #define ActHidRgtCol (ActSeeAllStaCrs+53)
#define ActShoLftCol (ActSeeAllStaCrs+53) #define ActShoLftCol (ActSeeAllStaCrs+54)
#define ActShoRgtCol (ActSeeAllStaCrs+54) #define ActShoRgtCol (ActSeeAllStaCrs+55)
#define ActChgIco (ActSeeAllStaCrs+55) #define ActChgIco (ActSeeAllStaCrs+56)
#define ActChgMnu (ActSeeAllStaCrs+56) #define ActChgMnu (ActSeeAllStaCrs+57)
#define ActChgNtfPrf (ActSeeAllStaCrs+57) #define ActChgNtfPrf (ActSeeAllStaCrs+58)
#define ActPrnUsrQR (ActSeeAllStaCrs+58) #define ActPrnUsrQR (ActSeeAllStaCrs+59)
#define ActPrnMyTT (ActSeeAllStaCrs+59) #define ActPrnMyTT (ActSeeAllStaCrs+60)
#define ActEdiTut (ActSeeAllStaCrs+60) #define ActEdiTut (ActSeeAllStaCrs+61)
#define ActChgTut (ActSeeAllStaCrs+61) #define ActChgTut (ActSeeAllStaCrs+62)
#define ActChgMyTT1stDay (ActSeeAllStaCrs+62) #define ActChgMyTT1stDay (ActSeeAllStaCrs+63)
#define ActReqRemFilBrf (ActSeeAllStaCrs+63) #define ActReqRemFilBrf (ActSeeAllStaCrs+64)
#define ActRemFilBrf (ActSeeAllStaCrs+64) #define ActRemFilBrf (ActSeeAllStaCrs+65)
#define ActRemFolBrf (ActSeeAllStaCrs+65) #define ActRemFolBrf (ActSeeAllStaCrs+66)
#define ActCopBrf (ActSeeAllStaCrs+66) #define ActCopBrf (ActSeeAllStaCrs+67)
#define ActPasBrf (ActSeeAllStaCrs+67) #define ActPasBrf (ActSeeAllStaCrs+68)
#define ActRemTreBrf (ActSeeAllStaCrs+68) #define ActRemTreBrf (ActSeeAllStaCrs+69)
#define ActFrmCreBrf (ActSeeAllStaCrs+69) #define ActFrmCreBrf (ActSeeAllStaCrs+70)
#define ActCreFolBrf (ActSeeAllStaCrs+70) #define ActCreFolBrf (ActSeeAllStaCrs+71)
#define ActCreLnkBrf (ActSeeAllStaCrs+71) #define ActCreLnkBrf (ActSeeAllStaCrs+72)
#define ActRenFolBrf (ActSeeAllStaCrs+72) #define ActRenFolBrf (ActSeeAllStaCrs+73)
#define ActRcvFilBrfDZ (ActSeeAllStaCrs+73) #define ActRcvFilBrfDZ (ActSeeAllStaCrs+74)
#define ActRcvFilBrfCla (ActSeeAllStaCrs+74) #define ActRcvFilBrfCla (ActSeeAllStaCrs+75)
#define ActExpBrf (ActSeeAllStaCrs+75) #define ActExpBrf (ActSeeAllStaCrs+76)
#define ActConBrf (ActSeeAllStaCrs+76) #define ActConBrf (ActSeeAllStaCrs+77)
#define ActZIPBrf (ActSeeAllStaCrs+77) #define ActZIPBrf (ActSeeAllStaCrs+78)
#define ActReqDatBrf (ActSeeAllStaCrs+78) #define ActReqDatBrf (ActSeeAllStaCrs+79)
#define ActChgDatBrf (ActSeeAllStaCrs+79) #define ActChgDatBrf (ActSeeAllStaCrs+80)
#define ActDowBrf (ActSeeAllStaCrs+80) #define ActDowBrf (ActSeeAllStaCrs+81)
#define ActAskRemOldBrf (ActSeeAllStaCrs+81) #define ActAskRemOldBrf (ActSeeAllStaCrs+82)
#define ActRemOldBrf (ActSeeAllStaCrs+82) #define ActRemOldBrf (ActSeeAllStaCrs+83)
/*****************************************************************************/ /*****************************************************************************/
/******************************** Public types *******************************/ /******************************** Public types *******************************/

View File

@ -125,13 +125,18 @@
/****************************** Public constants *****************************/ /****************************** Public constants *****************************/
/*****************************************************************************/ /*****************************************************************************/
#define Log_PLATFORM_VERSION "SWAD 15.139.2 (2016-02-29)" #define Log_PLATFORM_VERSION "SWAD 15.140 (2016-03-01)"
#define CSS_FILE "swad15.137.2.css" #define CSS_FILE "swad15.137.2.css"
#define JS_FILE "swad15.131.3.js" #define JS_FILE "swad15.131.3.js"
// Number of lines (includes comments but not blank lines) has been got with the following command: // 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 // nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*.h sql/swad*.sql | tail -1
/* /*
Version 15.140: Mar 01, 2016 New option "landing page". (195817 lines)
2 changes necessary in database:
UPDATE actions SET Txt='Formularios cambiar rol y cerrar sesión' WHERE ActCod='843' AND Language='es';
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1521','es','N','Página de inicio');
Version 15.139.2: Feb 29, 2016 Changed message related to year/semester. (195731 lines) Version 15.139.2: Feb 29, 2016 Changed message related to year/semester. (195731 lines)
Version 15.139.1: Feb 29, 2016 Remove fields FirstYear and LastYear from database table degrees. (195732 lines) Version 15.139.1: Feb 29, 2016 Remove fields FirstYear and LastYear from database table degrees. (195732 lines)
1 change necessary in database: 1 change necessary in database:

View File

@ -181,6 +181,7 @@ const Act_Action_t Mnu_MenuActions[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB
// TabPrf ********** // TabPrf **********
{ {
ActFrmLogIn, ActFrmLogIn,
ActFrmRolSes,
ActMyCrs, ActMyCrs,
ActSeeMyTT, ActSeeMyTT,
ActFrmUsrAcc, ActFrmUsrAcc,

View File

@ -18449,6 +18449,27 @@ const char *Txt_MENU_TITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] =
{ {
// TabPrf ***************************************************** // TabPrf *****************************************************
// ActFrmLogIn // ActFrmLogIn
#if L==1
"Entrar"
#elif L==2
"Einloggen"
#elif L==3
"Log in"
#elif L==4
"Entrar"
#elif L==5
"S'identifier"
#elif L==6
"Entrar" // Okoteve traducción
#elif L==7
"Accesso"
#elif L==8
"Zaloguj Się"
#elif L==9
"Entrar"
#endif
,
// ActFrmRolSes
#if L==1 #if L==1
"Sessió" "Sessió"
#elif L==2 #elif L==2
@ -18622,7 +18643,6 @@ const char *Txt_MENU_TITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] =
NULL, NULL,
NULL, NULL,
NULL, NULL,
NULL,
} }
}; };
@ -20441,6 +20461,27 @@ const char *Txt_MENU_SUBTITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] =
"Rola w tej sesji" "Rola w tej sesji"
#elif L==9 #elif L==9
"Role nesta sessão" "Role nesta sessão"
#endif
,
// ActFrmRolSes
#if L==1
"Rol en aquesta sessió"
#elif L==2
"Rolle in dieser Sitzung"
#elif L==3
"Role in this session"
#elif L==4
"Rol en esta sesión"
#elif L==5
"Rôle dans cette session"
#elif L==6
"Rol en esta sesión" // Okoteve traducción
#elif L==7
"Ruolo in questa sessione"
#elif L==8
"Rola w tej sesji"
#elif L==9
"Role nesta sessão"
#endif #endif
, ,
// ActMyCrs // ActMyCrs
@ -20596,7 +20637,6 @@ const char *Txt_MENU_SUBTITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] =
NULL, NULL,
NULL, NULL,
NULL, NULL,
NULL,
} }
}; };

View File

@ -120,6 +120,9 @@ static void Usr_GetParamOtherUsrIDNickOrEMail (void);
static bool Usr_ChkUsrAndGetUsrDataFromDirectLogin (void); static bool Usr_ChkUsrAndGetUsrDataFromDirectLogin (void);
static bool Usr_ChkUsrAndGetUsrDataFromExternalLogin (void); static bool Usr_ChkUsrAndGetUsrDataFromExternalLogin (void);
static bool Usr_ChkUsrAndGetUsrDataFromSession (void); static bool Usr_ChkUsrAndGetUsrDataFromSession (void);
static void Usr_ShowAlertUsrDoesNotExistsOrWrongPassword (void);
static void Usr_ShowAlertThereAreMoreThanOneUsr (void);
static void Usr_ShowAlertNoUsrWithThisID (void);
static void Usr_SetUsrRoleAndPrefs (void); static void Usr_SetUsrRoleAndPrefs (void);
@ -1407,22 +1410,29 @@ bool Usr_ChkIfEncryptedUsrCodExists (const char *EncryptedUsrCod)
} }
/*****************************************************************************/ /*****************************************************************************/
/****************** Write form for user log in or log out ********************/ /***************************** Write landing page ****************************/
/*****************************************************************************/ /*****************************************************************************/
void Usr_WriteFormLoginLogout (void) void Usr_WriteLandingPage (void)
{ {
if (Gbl.Session.IsOpen) /***** Form to log in *****/
{ Usr_WriteFormLogin ();
/***** Form to change my role *****/
Usr_ShowFormsLogoutAndRole ();
/***** Show help to enroll me *****/ /***** Form to create a new account *****/
Hlp_ShowHelpWhatWouldYouLikeToDo (); Acc_ShowFormRequestNewAccount ();
} }
else
/***** Form to log in *****/ /*****************************************************************************/
Usr_WriteFormLogin (); /************************ Write form for user log out ************************/
/*****************************************************************************/
void Usr_WriteFormLogout (void)
{
/***** Form to change my role *****/
Usr_ShowFormsLogoutAndRole ();
/***** Show help to enroll me *****/
Hlp_ShowHelpWhatWouldYouLikeToDo ();
} }
/*****************************************************************************/ /*****************************************************************************/
@ -1473,6 +1483,9 @@ void Usr_WriteFormLogin (void)
/***** Links to other actions *****/ /***** Links to other actions *****/
fprintf (Gbl.F.Out,"<div class=\"CONTEXT_MENU\">"); fprintf (Gbl.F.Out,"<div class=\"CONTEXT_MENU\">");
/* Links to create a new account */
Acc_PutLinkToCreateAccount ();
/* Link to enter from external site */ /* Link to enter from external site */
if (Cfg_EXTERNAL_LOGIN_URL[0] && if (Cfg_EXTERNAL_LOGIN_URL[0] &&
Cfg_EXTERNAL_LOGIN_SERVICE_SHORT_NAME[0]) Cfg_EXTERNAL_LOGIN_SERVICE_SHORT_NAME[0])
@ -1547,9 +1560,6 @@ void Usr_WriteFormLogin (void)
Lay_EndRoundFrameTable (); Lay_EndRoundFrameTable ();
Act_FormEnd (); Act_FormEnd ();
/***** Form to create a new account *****/
Acc_ShowFormRequestNewAccount ();
fprintf (Gbl.F.Out,"</div>"); fprintf (Gbl.F.Out,"</div>");
} }
@ -2058,20 +2068,18 @@ void Usr_ChkUsrAndGetUsrData (void)
static bool Usr_ChkUsrAndGetUsrDataFromDirectLogin (void) static bool Usr_ChkUsrAndGetUsrDataFromDirectLogin (void)
{ {
extern const char *Txt_The_user_does_not_exist_or_password_is_incorrect;
extern const char *Txt_There_are_more_than_one_user_with_the_ID_X_Please_type_a_nick_or_email;
struct ListUsrCods ListUsrCods; struct ListUsrCods ListUsrCods;
bool PasswordCorrect = false; bool PasswordCorrect = false;
/***** Check if user typed anything *****/ /***** Check if user typed anything *****/
if (!Gbl.Usrs.Me.UsrIdLogin) if (!Gbl.Usrs.Me.UsrIdLogin)
{ {
Lay_ShowAlert (Lay_WARNING,Txt_The_user_does_not_exist_or_password_is_incorrect); Usr_ShowAlertUsrDoesNotExistsOrWrongPassword ();
return false; return false;
} }
if (!Gbl.Usrs.Me.UsrIdLogin[0]) if (!Gbl.Usrs.Me.UsrIdLogin[0])
{ {
Lay_ShowAlert (Lay_WARNING,Txt_The_user_does_not_exist_or_password_is_incorrect); Usr_ShowAlertUsrDoesNotExistsOrWrongPassword ();
return false; return false;
} }
@ -2081,7 +2089,7 @@ static bool Usr_ChkUsrAndGetUsrDataFromDirectLogin (void)
// User is trying to log using his/her nickname // User is trying to log using his/her nickname
if ((Gbl.Usrs.Me.UsrDat.UsrCod = Nck_GetUsrCodFromNickname (Gbl.Usrs.Me.UsrIdLogin)) <= 0) if ((Gbl.Usrs.Me.UsrDat.UsrCod = Nck_GetUsrCodFromNickname (Gbl.Usrs.Me.UsrIdLogin)) <= 0)
{ {
Lay_ShowAlert (Lay_WARNING,Txt_The_user_does_not_exist_or_password_is_incorrect); Usr_ShowAlertUsrDoesNotExistsOrWrongPassword ();
return false; return false;
} }
} }
@ -2090,7 +2098,7 @@ static bool Usr_ChkUsrAndGetUsrDataFromDirectLogin (void)
// User is trying to log using his/her e-mail // User is trying to log using his/her e-mail
if ((Gbl.Usrs.Me.UsrDat.UsrCod = Mai_GetUsrCodFromEmail (Gbl.Usrs.Me.UsrIdLogin)) <= 0) if ((Gbl.Usrs.Me.UsrDat.UsrCod = Mai_GetUsrCodFromEmail (Gbl.Usrs.Me.UsrIdLogin)) <= 0)
{ {
Lay_ShowAlert (Lay_WARNING,Txt_The_user_does_not_exist_or_password_is_incorrect); Usr_ShowAlertUsrDoesNotExistsOrWrongPassword ();
return false; return false;
} }
} }
@ -2104,7 +2112,7 @@ static bool Usr_ChkUsrAndGetUsrDataFromDirectLogin (void)
// User is trying to log using his/her ID // User is trying to log using his/her ID
if (strlen (Gbl.Usrs.Me.UsrIdLogin) > ID_MAX_LENGTH_USR_ID) // User's ID too long if (strlen (Gbl.Usrs.Me.UsrIdLogin) > ID_MAX_LENGTH_USR_ID) // User's ID too long
{ {
Lay_ShowAlert (Lay_WARNING,Txt_The_user_does_not_exist_or_password_is_incorrect); Usr_ShowAlertUsrDoesNotExistsOrWrongPassword ();
return false; return false;
} }
@ -2132,10 +2140,7 @@ static bool Usr_ChkUsrAndGetUsrDataFromDirectLogin (void)
/* Free memory used for list of users' codes found for this ID */ /* Free memory used for list of users' codes found for this ID */
Usr_FreeListUsrCods (&ListUsrCods); Usr_FreeListUsrCods (&ListUsrCods);
sprintf (Gbl.Message,Txt_There_are_more_than_one_user_with_the_ID_X_Please_type_a_nick_or_email, Usr_ShowAlertThereAreMoreThanOneUsr ();
Gbl.Usrs.Me.UsrIdLogin);
Lay_ShowAlert (Lay_WARNING,Gbl.Message);
return false; return false;
} }
} }
@ -2155,7 +2160,7 @@ static bool Usr_ChkUsrAndGetUsrDataFromDirectLogin (void)
} }
else else
{ {
Lay_ShowAlert (Lay_WARNING,Txt_The_user_does_not_exist_or_password_is_incorrect); Usr_ShowAlertUsrDoesNotExistsOrWrongPassword ();
return false; return false;
} }
} }
@ -2164,21 +2169,19 @@ static bool Usr_ChkUsrAndGetUsrDataFromDirectLogin (void)
/* Free memory used for list of users' codes found for this ID */ /* Free memory used for list of users' codes found for this ID */
Usr_FreeListUsrCods (&ListUsrCods); Usr_FreeListUsrCods (&ListUsrCods);
sprintf (Gbl.Message,Txt_There_are_more_than_one_user_with_the_ID_X_Please_type_a_nick_or_email, Usr_ShowAlertThereAreMoreThanOneUsr ();
Gbl.Usrs.Me.UsrIdLogin);
Lay_ShowAlert (Lay_WARNING,Gbl.Message);
return false; return false;
} }
} }
else // No users found for this ID else // No users found for this ID
{ {
Lay_ShowAlert (Lay_WARNING,Txt_The_user_does_not_exist_or_password_is_incorrect); Usr_ShowAlertUsrDoesNotExistsOrWrongPassword ();
return false; return false;
} }
} }
else // String is not a valid user's nickname, e-mail or ID else // String is not a valid user's nickname, e-mail or ID
{ {
Lay_ShowAlert (Lay_WARNING,Txt_The_user_does_not_exist_or_password_is_incorrect); Usr_ShowAlertUsrDoesNotExistsOrWrongPassword ();
return false; return false;
} }
} }
@ -2199,7 +2202,7 @@ static bool Usr_ChkUsrAndGetUsrDataFromDirectLogin (void)
Pwd_AssignMyPendingPasswordToMyCurrentPassword (); Pwd_AssignMyPendingPasswordToMyCurrentPassword ();
else else
{ {
Lay_ShowAlert (Lay_WARNING,Txt_The_user_does_not_exist_or_password_is_incorrect); Usr_ShowAlertUsrDoesNotExistsOrWrongPassword ();
return false; return false;
} }
} }
@ -2215,9 +2218,6 @@ static bool Usr_ChkUsrAndGetUsrDataFromDirectLogin (void)
static bool Usr_ChkUsrAndGetUsrDataFromExternalLogin (void) static bool Usr_ChkUsrAndGetUsrDataFromExternalLogin (void)
{ {
extern const char *Txt_The_user_does_not_exist_or_password_is_incorrect;
extern const char *Txt_There_are_more_than_one_user_with_the_ID_X_Please_type_a_nick_or_email;
extern const char *Txt_There_is_no_user_in_X_with_ID_Y_If_you_already_have_an_account_on_Z_;
struct ListUsrCods ListUsrCods; struct ListUsrCods ListUsrCods;
bool ItSeemsANewUsrIsEnteringFromExternalSite = false; bool ItSeemsANewUsrIsEnteringFromExternalSite = false;
char PathRelParamsToCommandsPriv[PATH_MAX+1]; char PathRelParamsToCommandsPriv[PATH_MAX+1];
@ -2247,7 +2247,7 @@ static bool Usr_ChkUsrAndGetUsrDataFromExternalLogin (void)
// User is trying to log using his/her ID // User is trying to log using his/her ID
if (strlen (Gbl.Usrs.Me.UsrIdLogin) > ID_MAX_LENGTH_USR_ID) // User's ID too long if (strlen (Gbl.Usrs.Me.UsrIdLogin) > ID_MAX_LENGTH_USR_ID) // User's ID too long
{ {
Lay_ShowAlert (Lay_WARNING,Txt_The_user_does_not_exist_or_password_is_incorrect); Usr_ShowAlertUsrDoesNotExistsOrWrongPassword ();
return false; return false;
} }
@ -2273,10 +2273,7 @@ static bool Usr_ChkUsrAndGetUsrDataFromExternalLogin (void)
/* Free memory used for list of users' codes found for this ID */ /* Free memory used for list of users' codes found for this ID */
Usr_FreeListUsrCods (&ListUsrCods); Usr_FreeListUsrCods (&ListUsrCods);
sprintf (Gbl.Message,Txt_There_are_more_than_one_user_with_the_ID_X_Please_type_a_nick_or_email, Usr_ShowAlertThereAreMoreThanOneUsr ();
Gbl.Usrs.Me.UsrIdLogin);
Lay_ShowAlert (Lay_WARNING,Gbl.Message);
return false; return false;
} }
} }
@ -2298,10 +2295,7 @@ static bool Usr_ChkUsrAndGetUsrDataFromExternalLogin (void)
/* Free memory used for list of users' codes found for this ID */ /* Free memory used for list of users' codes found for this ID */
Usr_FreeListUsrCods (&ListUsrCods); Usr_FreeListUsrCods (&ListUsrCods);
sprintf (Gbl.Message,Txt_There_are_more_than_one_user_with_the_ID_X_Please_type_a_nick_or_email, Usr_ShowAlertThereAreMoreThanOneUsr ();
Gbl.Usrs.Me.UsrIdLogin);
Lay_ShowAlert (Lay_WARNING,Gbl.Message);
return false; return false;
} }
} }
@ -2310,7 +2304,7 @@ static bool Usr_ChkUsrAndGetUsrDataFromExternalLogin (void)
} }
else // String is not a valid user's nickname, e-mail or ID else // String is not a valid user's nickname, e-mail or ID
{ {
Lay_ShowAlert (Lay_WARNING,Txt_The_user_does_not_exist_or_password_is_incorrect); Usr_ShowAlertUsrDoesNotExistsOrWrongPassword ();
return false; return false;
} }
@ -2362,17 +2356,13 @@ static bool Usr_ChkUsrAndGetUsrDataFromExternalLogin (void)
if (ItSeemsANewUsrIsEnteringFromExternalSite) if (ItSeemsANewUsrIsEnteringFromExternalSite)
{ {
/***** User does not exist in the platform *****/ /***** User does not exist in the platform *****/
sprintf (Gbl.Message,Txt_There_is_no_user_in_X_with_ID_Y_If_you_already_have_an_account_on_Z_, Usr_ShowAlertNoUsrWithThisID ();
Cfg_PLATFORM_SHORT_NAME,
Gbl.Usrs.Me.UsrIdLogin,
Cfg_PLATFORM_SHORT_NAME);
Lay_ShowAlert (Lay_WARNING,Gbl.Message);
return false; return false;
} }
} }
else // External user's ID or session are not valid else // External user's ID or session are not valid
{ {
Lay_ShowAlert (Lay_WARNING,Txt_The_user_does_not_exist_or_password_is_incorrect); Usr_ShowAlertUsrDoesNotExistsOrWrongPassword ();
return false; return false;
} }
@ -2385,15 +2375,13 @@ static bool Usr_ChkUsrAndGetUsrDataFromExternalLogin (void)
static bool Usr_ChkUsrAndGetUsrDataFromSession (void) static bool Usr_ChkUsrAndGetUsrDataFromSession (void)
{ {
extern const char *Txt_The_user_does_not_exist_or_password_is_incorrect;
/***** Session is open and user's code is get from session *****/ /***** Session is open and user's code is get from session *****/
Gbl.Usrs.Me.UsrDat.UsrCod = Gbl.Session.UsrCod; Gbl.Usrs.Me.UsrDat.UsrCod = Gbl.Session.UsrCod;
/* Check if user exists in database, and get his/her data */ /* Check if user exists in database, and get his/her data */
if (!Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (&Gbl.Usrs.Me.UsrDat)) if (!Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (&Gbl.Usrs.Me.UsrDat))
{ {
Lay_ShowAlert (Lay_WARNING,Txt_The_user_does_not_exist_or_password_is_incorrect); Usr_ShowAlertUsrDoesNotExistsOrWrongPassword ();
return false; return false;
} }
@ -2402,13 +2390,58 @@ static bool Usr_ChkUsrAndGetUsrDataFromSession (void)
is the same as the stored in database? */ is the same as the stored in database? */
if (!Pwd_CheckCurrentPassword ()) // If my password is not correct... if (!Pwd_CheckCurrentPassword ()) // If my password is not correct...
{ {
Lay_ShowAlert (Lay_WARNING,Txt_The_user_does_not_exist_or_password_is_incorrect); Usr_ShowAlertUsrDoesNotExistsOrWrongPassword ();
return false; return false;
} }
return true; return true;
} }
/*****************************************************************************/
/** Show alert indicating that user does not exists or password is incorrect */
/*****************************************************************************/
static void Usr_ShowAlertUsrDoesNotExistsOrWrongPassword (void)
{
extern const char *Txt_The_user_does_not_exist_or_password_is_incorrect;
Gbl.Action.Act = ActFrmLogIn;
Tab_SetCurrentTab ();
Lay_ShowAlert (Lay_WARNING,Txt_The_user_does_not_exist_or_password_is_incorrect);
}
/*****************************************************************************/
/****** Show alert indicating that more than one user share the same ID ******/
/*****************************************************************************/
static void Usr_ShowAlertThereAreMoreThanOneUsr (void)
{
extern const char *Txt_There_are_more_than_one_user_with_the_ID_X_Please_type_a_nick_or_email;
Gbl.Action.Act = ActFrmLogIn;
Tab_SetCurrentTab ();
sprintf (Gbl.Message,Txt_There_are_more_than_one_user_with_the_ID_X_Please_type_a_nick_or_email,
Gbl.Usrs.Me.UsrIdLogin);
Lay_ShowAlert (Lay_WARNING,Gbl.Message);
}
/*****************************************************************************/
/********** Show alert indicating that this ID does not exist ****************/
/*****************************************************************************/
static void Usr_ShowAlertNoUsrWithThisID (void)
{
extern const char *Txt_There_is_no_user_in_X_with_ID_Y_If_you_already_have_an_account_on_Z_;
Gbl.Action.Act = ActFrmLogIn;
Tab_SetCurrentTab ();
sprintf (Gbl.Message,Txt_There_is_no_user_in_X_with_ID_Y_If_you_already_have_an_account_on_Z_,
Cfg_PLATFORM_SHORT_NAME,
Gbl.Usrs.Me.UsrIdLogin,
Cfg_PLATFORM_SHORT_NAME);
Lay_ShowAlert (Lay_WARNING,Gbl.Message);
}
/*****************************************************************************/ /*****************************************************************************/
/**** Check if users exists, if his password is correct, get his data... *****/ /**** Check if users exists, if his password is correct, get his data... *****/
/*****************************************************************************/ /*****************************************************************************/

View File

@ -245,7 +245,8 @@ unsigned long Usr_GetCrssFromUsr (long UsrCod,long DegCod,MYSQL_RES **mysql_res)
bool Usr_ChkIfEncryptedUsrCodExists (const char *EncryptedUsrCod); bool Usr_ChkIfEncryptedUsrCodExists (const char *EncryptedUsrCod);
void Usr_WriteFormLoginLogout (void); void Usr_WriteLandingPage (void);
void Usr_WriteFormLogout (void);
void Usr_Logout (void); void Usr_Logout (void);
void Usr_PutLinkToLogin (void); void Usr_PutLinkToLogin (void);
void Usr_WriteFormLogin (void); void Usr_WriteFormLogin (void);