mirror of
https://github.com/acanas/swad-core.git
synced 2024-06-15 21:24:07 +02:00
Version 18.46
This commit is contained in:
parent
64268e724f
commit
3d83ba9d8e
16
swad_ID.c
16
swad_ID.c
|
@ -75,7 +75,7 @@ static void ID_PutLinkToConfirmID (struct UsrData *UsrDat,unsigned NumID,
|
||||||
const char *Anchor);
|
const char *Anchor);
|
||||||
|
|
||||||
static void ID_ShowFormChangeUsrID (const struct UsrData *UsrDat,
|
static void ID_ShowFormChangeUsrID (const struct UsrData *UsrDat,
|
||||||
bool ItsMe,bool IShouldFillID);
|
bool ItsMe,bool IShouldFillInID);
|
||||||
|
|
||||||
static void ID_RemoveUsrID (const struct UsrData *UsrDat,bool ItsMe);
|
static void ID_RemoveUsrID (const struct UsrData *UsrDat,bool ItsMe);
|
||||||
static bool ID_CheckIfConfirmed (long UsrCod,const char *UsrID);
|
static bool ID_CheckIfConfirmed (long UsrCod,const char *UsrID);
|
||||||
|
@ -511,7 +511,7 @@ static void ID_PutLinkToConfirmID (struct UsrData *UsrDat,unsigned NumID,
|
||||||
/*********************** Show form to change my user's ID ********************/
|
/*********************** Show form to change my user's ID ********************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
void ID_ShowFormChangeMyID (bool IShouldFillID)
|
void ID_ShowFormChangeMyID (bool IShouldFillInID)
|
||||||
{
|
{
|
||||||
extern const char *Hlp_PROFILE_Account;
|
extern const char *Hlp_PROFILE_Account;
|
||||||
extern const char *Txt_ID;
|
extern const char *Txt_ID;
|
||||||
|
@ -530,7 +530,7 @@ void ID_ShowFormChangeMyID (bool IShouldFillID)
|
||||||
/***** Show form to change ID *****/
|
/***** Show form to change ID *****/
|
||||||
ID_ShowFormChangeUsrID (&Gbl.Usrs.Me.UsrDat,
|
ID_ShowFormChangeUsrID (&Gbl.Usrs.Me.UsrDat,
|
||||||
true, // ItsMe
|
true, // ItsMe
|
||||||
IShouldFillID);
|
IShouldFillInID);
|
||||||
|
|
||||||
/***** End box *****/
|
/***** End box *****/
|
||||||
Box_EndBox ();
|
Box_EndBox ();
|
||||||
|
@ -562,7 +562,7 @@ void ID_ShowFormChangeOtherUsrID (void)
|
||||||
/***** Show form to change ID *****/
|
/***** Show form to change ID *****/
|
||||||
ID_ShowFormChangeUsrID (&Gbl.Usrs.Other.UsrDat,
|
ID_ShowFormChangeUsrID (&Gbl.Usrs.Other.UsrDat,
|
||||||
false, // ItsMe
|
false, // ItsMe
|
||||||
false); // IShouldFillID
|
false); // IShouldFillInID
|
||||||
|
|
||||||
/***** End box *****/
|
/***** End box *****/
|
||||||
Box_EndBox ();
|
Box_EndBox ();
|
||||||
|
@ -576,7 +576,7 @@ void ID_ShowFormChangeOtherUsrID (void)
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
static void ID_ShowFormChangeUsrID (const struct UsrData *UsrDat,
|
static void ID_ShowFormChangeUsrID (const struct UsrData *UsrDat,
|
||||||
bool ItsMe,bool IShouldFillID)
|
bool ItsMe,bool IShouldFillInID)
|
||||||
{
|
{
|
||||||
extern const char *Hlp_PROFILE_Account;
|
extern const char *Hlp_PROFILE_Account;
|
||||||
extern const char *The_ClassForm[The_NUM_THEMES];
|
extern const char *The_ClassForm[The_NUM_THEMES];
|
||||||
|
@ -595,7 +595,7 @@ static void ID_ShowFormChangeUsrID (const struct UsrData *UsrDat,
|
||||||
Ale_ShowAlert (Gbl.Alert.Type,Gbl.Alert.Txt);
|
Ale_ShowAlert (Gbl.Alert.Type,Gbl.Alert.Txt);
|
||||||
|
|
||||||
/***** Help message *****/
|
/***** Help message *****/
|
||||||
if (IShouldFillID)
|
if (IShouldFillInID)
|
||||||
Ale_ShowAlert (Ale_WARNING,Txt_Please_fill_in_your_ID);
|
Ale_ShowAlert (Ale_WARNING,Txt_Please_fill_in_your_ID);
|
||||||
|
|
||||||
/***** Start table *****/
|
/***** Start table *****/
|
||||||
|
@ -627,7 +627,7 @@ static void ID_ShowFormChangeUsrID (const struct UsrData *UsrDat,
|
||||||
{
|
{
|
||||||
/* Form to remove user's ID */
|
/* Form to remove user's ID */
|
||||||
if (ItsMe)
|
if (ItsMe)
|
||||||
Frm_StartFormAnchor (ActRemID_Me,ID_ID_SECTION_ID);
|
Frm_StartFormAnchor (ActRemMyID,ID_ID_SECTION_ID);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
switch (UsrDat->Roles.InCurrentCrs.Role)
|
switch (UsrDat->Roles.InCurrentCrs.Role)
|
||||||
|
@ -690,7 +690,7 @@ static void ID_ShowFormChangeUsrID (const struct UsrData *UsrDat,
|
||||||
UsrDat->IDs.Num ? Txt_Another_ID : // A new user's ID
|
UsrDat->IDs.Num ? Txt_Another_ID : // A new user's ID
|
||||||
Txt_ID); // The first user's ID
|
Txt_ID); // The first user's ID
|
||||||
if (ItsMe)
|
if (ItsMe)
|
||||||
Frm_StartFormAnchor (ActNewIDMe,ID_ID_SECTION_ID);
|
Frm_StartFormAnchor (ActChgMyID,ID_ID_SECTION_ID);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
switch (UsrDat->Roles.InCurrentCrs.Role)
|
switch (UsrDat->Roles.InCurrentCrs.Role)
|
||||||
|
|
|
@ -72,7 +72,7 @@ bool ID_CheckIfUsrIDSeemsAValidID (const char *UsrID);
|
||||||
void ID_WriteUsrIDs (struct UsrData *UsrDat,const char *Anchor);
|
void ID_WriteUsrIDs (struct UsrData *UsrDat,const char *Anchor);
|
||||||
bool ID_ICanSeeOtherUsrIDs (const struct UsrData *UsrDat);
|
bool ID_ICanSeeOtherUsrIDs (const struct UsrData *UsrDat);
|
||||||
|
|
||||||
void ID_ShowFormChangeMyID (bool IShouldFillID);
|
void ID_ShowFormChangeMyID (bool IShouldFillInID);
|
||||||
void ID_ShowFormChangeOtherUsrID (void);
|
void ID_ShowFormChangeOtherUsrID (void);
|
||||||
|
|
||||||
void ID_RemoveMyUsrID (void);
|
void ID_RemoveMyUsrID (void);
|
||||||
|
|
176
swad_account.c
176
swad_account.c
|
@ -25,6 +25,8 @@
|
||||||
/*********************************** Headers *********************************/
|
/*********************************** Headers *********************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
#define _GNU_SOURCE // For asprintf
|
||||||
|
#include <stdio.h> // For asprintf
|
||||||
#include <string.h> // For string functions
|
#include <string.h> // For string functions
|
||||||
|
|
||||||
#include "swad_account.h"
|
#include "swad_account.h"
|
||||||
|
@ -182,6 +184,7 @@ void Acc_CheckIfEmptyAccountExists (void)
|
||||||
struct UsrData UsrDat;
|
struct UsrData UsrDat;
|
||||||
MYSQL_RES *mysql_res;
|
MYSQL_RES *mysql_res;
|
||||||
MYSQL_ROW row;
|
MYSQL_ROW row;
|
||||||
|
char *Txt;
|
||||||
|
|
||||||
/***** Links to other actions *****/
|
/***** Links to other actions *****/
|
||||||
fprintf (Gbl.F.Out,"<div class=\"CONTEXT_MENU\">");
|
fprintf (Gbl.F.Out,"<div class=\"CONTEXT_MENU\">");
|
||||||
|
@ -244,10 +247,11 @@ void Acc_CheckIfEmptyAccountExists (void)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
snprintf (Gbl.Alert.Txt,sizeof (Gbl.Alert.Txt),
|
if (asprintf (&Txt,Txt_There_is_no_empty_account_associated_with_your_ID_X,
|
||||||
Txt_There_is_no_empty_account_associated_with_your_ID_X,
|
ID) < 0)
|
||||||
ID);
|
Lay_NotEnoughMemoryExit ();
|
||||||
Ale_ShowAlert (Ale_INFO,Gbl.Alert.Txt);
|
Ale_ShowAlert (Ale_INFO,Txt);
|
||||||
|
free ((void *) Txt);
|
||||||
}
|
}
|
||||||
|
|
||||||
/***** Free structure that stores the query result *****/
|
/***** Free structure that stores the query result *****/
|
||||||
|
@ -431,13 +435,12 @@ void Acc_ShowFormChgMyAccount (void)
|
||||||
{
|
{
|
||||||
extern const char *Txt_Before_going_to_any_other_option_you_must_create_your_password;
|
extern const char *Txt_Before_going_to_any_other_option_you_must_create_your_password;
|
||||||
extern const char *Txt_Before_going_to_any_other_option_you_must_fill_your_nickname;
|
extern const char *Txt_Before_going_to_any_other_option_you_must_fill_your_nickname;
|
||||||
extern const char *Txt_Please_fill_in_your_email_address;
|
extern const char *Txt_Before_going_to_any_other_option_you_must_fill_in_your_email_address;
|
||||||
bool IMustFillPassword = (Gbl.Usrs.Me.UsrDat.Password[0] == '\0');
|
bool IMustCreateMyPasswordNow = false;
|
||||||
bool IMustFillNickname = (Gbl.Usrs.Me.UsrDat.Nickname[0] == '\0');
|
bool IMustCreateMyNicknameNow = false;
|
||||||
bool IMustFillEmail = (Gbl.Usrs.Me.UsrDat.Email[0] == '\0');
|
bool IMustFillInMyEmailNow = false;
|
||||||
bool IShouldConfirmEmail = (!Gbl.Usrs.Me.UsrDat.EmailConfirmed && // Email not yet confirmed
|
bool IShouldConfirmMyEmailNow = false;
|
||||||
!Gbl.Usrs.Me.ConfirmEmailJustSent); // Do not ask for email confirmation when confirmation email is just sent
|
bool IShouldFillInMyIDNow = false;
|
||||||
bool IShouldFillID = (Gbl.Usrs.Me.UsrDat.IDs.Num == 0);
|
|
||||||
|
|
||||||
/***** Get current user's nickname and email address
|
/***** Get current user's nickname and email address
|
||||||
It's necessary because current nickname or email could be just updated *****/
|
It's necessary because current nickname or email could be just updated *****/
|
||||||
|
@ -445,29 +448,44 @@ void Acc_ShowFormChgMyAccount (void)
|
||||||
Mai_GetEmailFromUsrCod (&Gbl.Usrs.Me.UsrDat);
|
Mai_GetEmailFromUsrCod (&Gbl.Usrs.Me.UsrDat);
|
||||||
|
|
||||||
/***** Check nickname, email and ID *****/
|
/***** Check nickname, email and ID *****/
|
||||||
if (IMustFillPassword)
|
IMustCreateMyPasswordNow = (Gbl.Usrs.Me.UsrDat.Password[0] == '\0');
|
||||||
|
if (IMustCreateMyPasswordNow)
|
||||||
Ale_ShowAlert (Ale_WARNING,
|
Ale_ShowAlert (Ale_WARNING,
|
||||||
Txt_Before_going_to_any_other_option_you_must_create_your_password);
|
Txt_Before_going_to_any_other_option_you_must_create_your_password);
|
||||||
if (IMustFillNickname)
|
else
|
||||||
Ale_ShowAlert (Ale_WARNING,
|
{
|
||||||
Txt_Before_going_to_any_other_option_you_must_fill_your_nickname);
|
IMustCreateMyNicknameNow = (Gbl.Usrs.Me.UsrDat.Nickname[0] == '\0');
|
||||||
if (IMustFillEmail)
|
if (IMustCreateMyNicknameNow)
|
||||||
Ale_ShowAlert (Ale_WARNING,
|
Ale_ShowAlert (Ale_WARNING,
|
||||||
Txt_Please_fill_in_your_email_address);
|
Txt_Before_going_to_any_other_option_you_must_fill_your_nickname);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
IMustFillInMyEmailNow = (Gbl.Usrs.Me.UsrDat.Email[0] == '\0');
|
||||||
|
if (IMustFillInMyEmailNow)
|
||||||
|
Ale_ShowAlert (Ale_WARNING,
|
||||||
|
Txt_Before_going_to_any_other_option_you_must_fill_in_your_email_address);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
IShouldConfirmMyEmailNow = (!Gbl.Usrs.Me.UsrDat.EmailConfirmed && // Email not yet confirmed
|
||||||
|
!Gbl.Usrs.Me.ConfirmEmailJustSent); // Do not ask for email confirmation when confirmation email is just sent
|
||||||
|
IShouldFillInMyIDNow = (Gbl.Usrs.Me.UsrDat.IDs.Num == 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/***** Start container for this user *****/
|
/***** Start container for this user *****/
|
||||||
fprintf (Gbl.F.Out,"<div class=\"REC_USR\">");
|
fprintf (Gbl.F.Out,"<div class=\"REC_USR\">");
|
||||||
|
|
||||||
/***** Show form to change my nickname and my email *****/
|
/***** Show form to change my password *****/
|
||||||
fprintf (Gbl.F.Out,"<div class=\"REC_LEFT\">");
|
fprintf (Gbl.F.Out,"<div class=\"REC_LEFT\">");
|
||||||
Nck_ShowFormChangeMyNickname (IMustFillNickname);
|
Pwd_ShowFormChgMyPwd ();
|
||||||
Mai_ShowFormChangeMyEmail (IMustFillEmail,IShouldConfirmEmail);
|
|
||||||
fprintf (Gbl.F.Out,"</div>");
|
fprintf (Gbl.F.Out,"</div>");
|
||||||
|
|
||||||
/***** Show form to change my ID and my password *****/
|
/***** Show form to change my nickname, my email and my ID *****/
|
||||||
fprintf (Gbl.F.Out,"<div class=\"REC_RIGHT\">");
|
fprintf (Gbl.F.Out,"<div class=\"REC_RIGHT\">");
|
||||||
ID_ShowFormChangeMyID (IShouldFillID);
|
Nck_ShowFormChangeMyNickname (IMustCreateMyNicknameNow);
|
||||||
Pwd_ShowFormChgMyPwd ();
|
Mai_ShowFormChangeMyEmail (IMustFillInMyEmailNow,IShouldConfirmMyEmailNow);
|
||||||
|
ID_ShowFormChangeMyID (IShouldFillInMyIDNow);
|
||||||
fprintf (Gbl.F.Out,"</div>");
|
fprintf (Gbl.F.Out,"</div>");
|
||||||
|
|
||||||
/***** Start container for this user *****/
|
/***** Start container for this user *****/
|
||||||
|
@ -609,6 +627,7 @@ static bool Acc_GetParamsNewAccount (char NewNicknameWithoutArroba[Nck_MAX_BYTES
|
||||||
extern const char *Txt_The_email_address_entered_X_is_not_valid;
|
extern const char *Txt_The_email_address_entered_X_is_not_valid;
|
||||||
char NewNicknameWithArroba[Nck_MAX_BYTES_NICKNAME_FROM_FORM + 1];
|
char NewNicknameWithArroba[Nck_MAX_BYTES_NICKNAME_FROM_FORM + 1];
|
||||||
char NewPlainPassword[Pwd_MAX_BYTES_PLAIN_PASSWORD + 1];
|
char NewPlainPassword[Pwd_MAX_BYTES_PLAIN_PASSWORD + 1];
|
||||||
|
char *Txt;
|
||||||
bool Error = false;
|
bool Error = false;
|
||||||
|
|
||||||
/***** Step 1/3: Get new nickname from form *****/
|
/***** Step 1/3: Get new nickname from form *****/
|
||||||
|
@ -636,21 +655,23 @@ static bool Acc_GetParamsNewAccount (char NewNicknameWithoutArroba[Nck_MAX_BYTES
|
||||||
Gbl.Usrs.Me.UsrDat.UsrCod)) // A nickname of another user is the same that this nickname
|
Gbl.Usrs.Me.UsrDat.UsrCod)) // A nickname of another user is the same that this nickname
|
||||||
{
|
{
|
||||||
Error = true;
|
Error = true;
|
||||||
snprintf (Gbl.Alert.Txt,sizeof (Gbl.Alert.Txt),
|
if (asprintf (&Txt,Txt_The_nickname_X_had_been_registered_by_another_user,
|
||||||
Txt_The_nickname_X_had_been_registered_by_another_user,
|
NewNicknameWithoutArroba) < 0)
|
||||||
NewNicknameWithoutArroba);
|
Lay_NotEnoughMemoryExit ();
|
||||||
Ale_ShowAlert (Ale_WARNING,Gbl.Alert.Txt);
|
Ale_ShowAlert (Ale_WARNING,Txt);
|
||||||
|
free ((void *) Txt);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else // New nickname is not valid
|
else // New nickname is not valid
|
||||||
{
|
{
|
||||||
Error = true;
|
Error = true;
|
||||||
snprintf (Gbl.Alert.Txt,sizeof (Gbl.Alert.Txt),
|
if (asprintf (&Txt,Txt_The_nickname_entered_X_is_not_valid_,
|
||||||
Txt_The_nickname_entered_X_is_not_valid_,
|
NewNicknameWithArroba,
|
||||||
NewNicknameWithArroba,
|
Nck_MIN_CHARS_NICKNAME_WITHOUT_ARROBA,
|
||||||
Nck_MIN_CHARS_NICKNAME_WITHOUT_ARROBA,
|
Nck_MAX_CHARS_NICKNAME_WITHOUT_ARROBA) < 0)
|
||||||
Nck_MAX_CHARS_NICKNAME_WITHOUT_ARROBA);
|
Lay_NotEnoughMemoryExit ();
|
||||||
Ale_ShowAlert (Ale_WARNING,Gbl.Alert.Txt);
|
Ale_ShowAlert (Ale_WARNING,Txt);
|
||||||
|
free ((void *) Txt);
|
||||||
}
|
}
|
||||||
|
|
||||||
/***** Step 2/3: Get new email from form *****/
|
/***** Step 2/3: Get new email from form *****/
|
||||||
|
@ -666,19 +687,21 @@ static bool Acc_GetParamsNewAccount (char NewNicknameWithoutArroba[Nck_MAX_BYTES
|
||||||
NewEmail)) // An email of another user is the same that my email
|
NewEmail)) // An email of another user is the same that my email
|
||||||
{
|
{
|
||||||
Error = true;
|
Error = true;
|
||||||
snprintf (Gbl.Alert.Txt,sizeof (Gbl.Alert.Txt),
|
if (asprintf (&Txt,Txt_The_email_address_X_had_been_registered_by_another_user,
|
||||||
Txt_The_email_address_X_had_been_registered_by_another_user,
|
NewEmail) < 0)
|
||||||
NewEmail);
|
Lay_NotEnoughMemoryExit ();
|
||||||
Ale_ShowAlert (Ale_WARNING,Gbl.Alert.Txt);
|
Ale_ShowAlert (Ale_WARNING,Txt);
|
||||||
|
free ((void *) Txt);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else // New email is not valid
|
else // New email is not valid
|
||||||
{
|
{
|
||||||
Error = true;
|
Error = true;
|
||||||
snprintf (Gbl.Alert.Txt,sizeof (Gbl.Alert.Txt),
|
if (asprintf (&Txt,Txt_The_email_address_entered_X_is_not_valid,
|
||||||
Txt_The_email_address_entered_X_is_not_valid,
|
NewEmail) < 0)
|
||||||
NewEmail);
|
Lay_NotEnoughMemoryExit ();
|
||||||
Ale_ShowAlert (Ale_WARNING,Gbl.Alert.Txt);
|
Ale_ShowAlert (Ale_WARNING,Txt);
|
||||||
|
free ((void *) Txt);
|
||||||
}
|
}
|
||||||
|
|
||||||
/***** Step 3/3: Get new password from form *****/
|
/***** Step 3/3: Get new password from form *****/
|
||||||
|
@ -687,7 +710,7 @@ static bool Acc_GetParamsNewAccount (char NewNicknameWithoutArroba[Nck_MAX_BYTES
|
||||||
if (!Pwd_SlowCheckIfPasswordIsGood (NewPlainPassword,NewEncryptedPassword,-1L)) // New password is good?
|
if (!Pwd_SlowCheckIfPasswordIsGood (NewPlainPassword,NewEncryptedPassword,-1L)) // New password is good?
|
||||||
{
|
{
|
||||||
Error = true;
|
Error = true;
|
||||||
Ale_ShowAlert (Ale_WARNING,Gbl.Alert.Txt); // Error message is set in Usr_SlowCheckIfPasswordIsGood
|
Ale_ShowAlert (Ale_WARNING,Gbl.AlertToShowLater.Txt); // Error message is set in Pwd_SlowCheckIfPasswordIsGood
|
||||||
}
|
}
|
||||||
|
|
||||||
return !Error;
|
return !Error;
|
||||||
|
@ -828,15 +851,17 @@ static void Acc_CreateNewEncryptedUsrCod (struct UsrData *UsrDat)
|
||||||
void Acc_AfterCreationNewAccount (void)
|
void Acc_AfterCreationNewAccount (void)
|
||||||
{
|
{
|
||||||
extern const char *Txt_Congratulations_You_have_created_your_account_X_Now_Y_will_request_you_;
|
extern const char *Txt_Congratulations_You_have_created_your_account_X_Now_Y_will_request_you_;
|
||||||
|
char *Txt;
|
||||||
|
|
||||||
if (Gbl.Usrs.Me.Logged) // If account has been created without problem, I am logged
|
if (Gbl.Usrs.Me.Logged) // If account has been created without problem, I am logged
|
||||||
{
|
{
|
||||||
/***** Show message of success *****/
|
/***** Show message of success *****/
|
||||||
snprintf (Gbl.Alert.Txt,sizeof (Gbl.Alert.Txt),
|
if (asprintf (&Txt,Txt_Congratulations_You_have_created_your_account_X_Now_Y_will_request_you_,
|
||||||
Txt_Congratulations_You_have_created_your_account_X_Now_Y_will_request_you_,
|
Gbl.Usrs.Me.UsrDat.Nickname,
|
||||||
Gbl.Usrs.Me.UsrDat.Nickname,
|
Cfg_PLATFORM_SHORT_NAME) < 0)
|
||||||
Cfg_PLATFORM_SHORT_NAME);
|
Lay_NotEnoughMemoryExit ();
|
||||||
Ale_ShowAlert (Ale_SUCCESS,Gbl.Alert.Txt);
|
Ale_ShowAlert (Ale_SUCCESS,Txt);
|
||||||
|
free ((void *) Txt);
|
||||||
|
|
||||||
/***** Show form with account data *****/
|
/***** Show form with account data *****/
|
||||||
Acc_ShowFormChgMyAccount ();
|
Acc_ShowFormChgMyAccount ();
|
||||||
|
@ -1002,6 +1027,7 @@ void Acc_CompletelyEliminateAccount (struct UsrData *UsrDat,
|
||||||
extern const char *Txt_Briefcase_of_THE_USER_X_has_been_removed;
|
extern const char *Txt_Briefcase_of_THE_USER_X_has_been_removed;
|
||||||
extern const char *Txt_Photo_of_THE_USER_X_has_been_removed;
|
extern const char *Txt_Photo_of_THE_USER_X_has_been_removed;
|
||||||
extern const char *Txt_Record_card_of_THE_USER_X_has_been_removed;
|
extern const char *Txt_Record_card_of_THE_USER_X_has_been_removed;
|
||||||
|
char *Txt;
|
||||||
bool PhotoRemoved = false;
|
bool PhotoRemoved = false;
|
||||||
|
|
||||||
/***** Remove the works zones of the user in all courses *****/
|
/***** Remove the works zones of the user in all courses *****/
|
||||||
|
@ -1034,10 +1060,11 @@ void Acc_CompletelyEliminateAccount (struct UsrData *UsrDat,
|
||||||
|
|
||||||
if (QuietOrVerbose == Cns_VERBOSE)
|
if (QuietOrVerbose == Cns_VERBOSE)
|
||||||
{
|
{
|
||||||
snprintf (Gbl.Alert.Txt,sizeof (Gbl.Alert.Txt),
|
if (asprintf (&Txt,Txt_THE_USER_X_has_been_removed_from_all_his_her_courses,
|
||||||
Txt_THE_USER_X_has_been_removed_from_all_his_her_courses,
|
UsrDat->FullName) < 0)
|
||||||
UsrDat->FullName);
|
Lay_NotEnoughMemoryExit ();
|
||||||
Ale_ShowAlert (Ale_SUCCESS,Gbl.Alert.Txt);
|
Ale_ShowAlert (Ale_SUCCESS,Txt);
|
||||||
|
free ((void *) Txt);
|
||||||
}
|
}
|
||||||
|
|
||||||
/***** Remove user as administrator of any degree *****/
|
/***** Remove user as administrator of any degree *****/
|
||||||
|
@ -1047,10 +1074,11 @@ void Acc_CompletelyEliminateAccount (struct UsrData *UsrDat,
|
||||||
|
|
||||||
if (QuietOrVerbose == Cns_VERBOSE)
|
if (QuietOrVerbose == Cns_VERBOSE)
|
||||||
{
|
{
|
||||||
snprintf (Gbl.Alert.Txt,sizeof (Gbl.Alert.Txt),
|
if (asprintf (&Txt,Txt_THE_USER_X_has_been_removed_as_administrator,
|
||||||
Txt_THE_USER_X_has_been_removed_as_administrator,
|
UsrDat->FullName) < 0)
|
||||||
UsrDat->FullName);
|
Lay_NotEnoughMemoryExit ();
|
||||||
Ale_ShowAlert (Ale_SUCCESS,Gbl.Alert.Txt);
|
Ale_ShowAlert (Ale_SUCCESS,Txt);
|
||||||
|
free ((void *) Txt);
|
||||||
}
|
}
|
||||||
|
|
||||||
/***** Remove user's clipboard in forums *****/
|
/***** Remove user's clipboard in forums *****/
|
||||||
|
@ -1063,10 +1091,11 @@ void Acc_CompletelyEliminateAccount (struct UsrData *UsrDat,
|
||||||
Acc_RemoveUsrBriefcase (UsrDat);
|
Acc_RemoveUsrBriefcase (UsrDat);
|
||||||
if (QuietOrVerbose == Cns_VERBOSE)
|
if (QuietOrVerbose == Cns_VERBOSE)
|
||||||
{
|
{
|
||||||
snprintf (Gbl.Alert.Txt,sizeof (Gbl.Alert.Txt),
|
if (asprintf (&Txt,Txt_Briefcase_of_THE_USER_X_has_been_removed,
|
||||||
Txt_Briefcase_of_THE_USER_X_has_been_removed,
|
UsrDat->FullName) < 0)
|
||||||
UsrDat->FullName);
|
Lay_NotEnoughMemoryExit ();
|
||||||
Ale_ShowAlert (Ale_SUCCESS,Gbl.Alert.Txt);
|
Ale_ShowAlert (Ale_SUCCESS,Txt);
|
||||||
|
free ((void *) Txt);
|
||||||
}
|
}
|
||||||
|
|
||||||
/***** Remove test results made by user in all courses *****/
|
/***** Remove test results made by user in all courses *****/
|
||||||
|
@ -1080,10 +1109,11 @@ void Acc_CompletelyEliminateAccount (struct UsrData *UsrDat,
|
||||||
Msg_DelAllRecAndSntMsgsUsr (UsrDat->UsrCod);
|
Msg_DelAllRecAndSntMsgsUsr (UsrDat->UsrCod);
|
||||||
if (QuietOrVerbose == Cns_VERBOSE)
|
if (QuietOrVerbose == Cns_VERBOSE)
|
||||||
{
|
{
|
||||||
snprintf (Gbl.Alert.Txt,sizeof (Gbl.Alert.Txt),
|
if (asprintf (&Txt,Txt_Messages_of_THE_USER_X_have_been_deleted,
|
||||||
Txt_Messages_of_THE_USER_X_have_been_deleted,
|
UsrDat->FullName) < 0)
|
||||||
UsrDat->FullName);
|
Lay_NotEnoughMemoryExit ();
|
||||||
Ale_ShowAlert (Ale_SUCCESS,Gbl.Alert.Txt);
|
Ale_ShowAlert (Ale_SUCCESS,Txt);
|
||||||
|
free ((void *) Txt);
|
||||||
}
|
}
|
||||||
|
|
||||||
/***** Remove user from tables of banned users *****/
|
/***** Remove user from tables of banned users *****/
|
||||||
|
@ -1128,20 +1158,22 @@ void Acc_CompletelyEliminateAccount (struct UsrData *UsrDat,
|
||||||
PhotoRemoved = Pho_RemovePhoto (UsrDat);
|
PhotoRemoved = Pho_RemovePhoto (UsrDat);
|
||||||
if (PhotoRemoved && QuietOrVerbose == Cns_VERBOSE)
|
if (PhotoRemoved && QuietOrVerbose == Cns_VERBOSE)
|
||||||
{
|
{
|
||||||
snprintf (Gbl.Alert.Txt,sizeof (Gbl.Alert.Txt),
|
if (asprintf (&Txt,Txt_Photo_of_THE_USER_X_has_been_removed,
|
||||||
Txt_Photo_of_THE_USER_X_has_been_removed,
|
UsrDat->FullName) < 0)
|
||||||
UsrDat->FullName);
|
Lay_NotEnoughMemoryExit ();
|
||||||
Ale_ShowAlert (Ale_SUCCESS,Gbl.Alert.Txt);
|
Ale_ShowAlert (Ale_SUCCESS,Txt);
|
||||||
|
free ((void *) Txt);
|
||||||
}
|
}
|
||||||
|
|
||||||
/***** Remove user *****/
|
/***** Remove user *****/
|
||||||
Acc_RemoveUsr (UsrDat);
|
Acc_RemoveUsr (UsrDat);
|
||||||
if (QuietOrVerbose == Cns_VERBOSE)
|
if (QuietOrVerbose == Cns_VERBOSE)
|
||||||
{
|
{
|
||||||
snprintf (Gbl.Alert.Txt,sizeof (Gbl.Alert.Txt),
|
if (asprintf (&Txt,Txt_Record_card_of_THE_USER_X_has_been_removed,
|
||||||
Txt_Record_card_of_THE_USER_X_has_been_removed,
|
UsrDat->FullName) < 0)
|
||||||
UsrDat->FullName);
|
Lay_NotEnoughMemoryExit ();
|
||||||
Ale_ShowAlert (Ale_SUCCESS,Gbl.Alert.Txt);
|
Ale_ShowAlert (Ale_SUCCESS,Txt);
|
||||||
|
free ((void *) Txt);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
109
swad_action.c
109
swad_action.c
|
@ -90,7 +90,6 @@ extern struct Globals Gbl;
|
||||||
1360 actions in one CGI:
|
1360 actions in one CGI:
|
||||||
0. ActAll Any action (used for statistics)
|
0. ActAll Any action (used for statistics)
|
||||||
1. ActUnk Unknown action
|
1. ActUnk Unknown action
|
||||||
2. ActHom Show home menu
|
|
||||||
3. ActMnu Show menu of a tab
|
3. ActMnu Show menu of a tab
|
||||||
4. ActRefCon Refresh number of notifications and connected users via AJAX
|
4. ActRefCon Refresh number of notifications and connected users via AJAX
|
||||||
5. ActRefLstClk Refresh last clicks in log via AJAX
|
5. ActRefLstClk Refresh last clicks in log via AJAX
|
||||||
|
@ -107,6 +106,10 @@ Start:
|
||||||
16. ActSeeCal Show the academic calendar
|
16. ActSeeCal Show the academic calendar
|
||||||
1228. ActSeeNtf Show my recent notifications
|
1228. ActSeeNtf Show my recent notifications
|
||||||
|
|
||||||
|
1296. ActLogIn Authentify user internally (directly from the platform)
|
||||||
|
1297. ActLogInNew Authentify user internally (directly from the platform, only if user has not password)
|
||||||
|
1298. ActLogInLan Change language to my language just after authentication
|
||||||
|
1299. ActAnnSee Mark announcement as seen
|
||||||
1293. ActReqSndNewPwd Show form to send a new password via email
|
1293. ActReqSndNewPwd Show form to send a new password via email
|
||||||
1294. ActSndNewPwd Send a new password via email
|
1294. ActSndNewPwd Send a new password via email
|
||||||
1295. ActLogOut Close session
|
1295. ActLogOut Close session
|
||||||
|
@ -1487,10 +1490,6 @@ Profile:
|
||||||
1291. ActReqEdiRecSha Request the edition of the record with the personal data of the user
|
1291. ActReqEdiRecSha Request the edition of the record with the personal data of the user
|
||||||
1292. ActEdiPrf Show forms to edit preferences
|
1292. ActEdiPrf Show forms to edit preferences
|
||||||
|
|
||||||
1296. ActLogIn Authentify user internally (directly from the platform)
|
|
||||||
1297. ActLogInNew Authentify user internally (directly from the platform, only if user has not password)
|
|
||||||
1298. ActLogInLan Change language to my language just after authentication
|
|
||||||
1299. ActAnnSee Mark announcement as seen
|
|
||||||
1300. ActChgMyRol Change type of logged user
|
1300. ActChgMyRol Change type of logged user
|
||||||
|
|
||||||
1301. ActFrmNewEvtMyAgd Form to create a new event in my agenda
|
1301. ActFrmNewEvtMyAgd Form to create a new event in my agenda
|
||||||
|
@ -1507,15 +1506,14 @@ Profile:
|
||||||
|
|
||||||
1312. ActChkUsrAcc Check if already exists a new account without password associated to a ID
|
1312. ActChkUsrAcc Check if already exists a new account without password associated to a ID
|
||||||
1313. ActCreUsrAcc Create new user account
|
1313. ActCreUsrAcc Create new user account
|
||||||
1314. ActRemID_Me Remove one of my user's IDs
|
1314. ActRemMyID Remove one of my user's IDs
|
||||||
1315. ActNewIDMe Create a new user's ID for me
|
1315. ActChgMyID Create a new user's ID for me
|
||||||
1316. ActRemOldNicMe Remove one of my old nicknames
|
1316. ActRemMyNck Remove one of my old nicknames
|
||||||
1317. ActChgNicMe Change my nickname
|
1317. ActChgMyNck Change my nickname
|
||||||
1318. ActRemMaiMe Remove one of my old emails
|
1318. ActRemMyMai Remove one of my old emails
|
||||||
1319. ActNewMaiMe Change my email address
|
1319. ActChgMyMai Change my email address
|
||||||
1320. ActCnfMai Confirm email address
|
1320. ActCnfMai Confirm email address
|
||||||
1321. ActFrmChgMyPwd Show form to the change of the password
|
1322. ActChgMyPwd Change my password
|
||||||
1322. ActChgPwd Change the password
|
|
||||||
1323. ActReqRemMyAcc Request the removal of my account
|
1323. ActReqRemMyAcc Request the removal of my account
|
||||||
1324. ActRemMyAcc Remove my account
|
1324. ActRemMyAcc Remove my account
|
||||||
|
|
||||||
|
@ -1590,7 +1588,6 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
|
||||||
// Actions not in menu:
|
// Actions not in menu:
|
||||||
/* ActAll */{ 645,-1,TabUnk,ActAll ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,NULL ,NULL}, // Used for statistics
|
/* ActAll */{ 645,-1,TabUnk,ActAll ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,NULL ,NULL}, // Used for statistics
|
||||||
/* ActUnk */{ 194,-1,TabUnk,ActUnk ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,NULL ,NULL},
|
/* ActUnk */{ 194,-1,TabUnk,ActUnk ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,NULL ,NULL},
|
||||||
/* ActHom */{ 844,-1,TabUnk,ActHom ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,NULL ,NULL},
|
|
||||||
/* ActMnu */{ 2,-1,TabUnk,ActMnu ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,NULL ,NULL},
|
/* ActMnu */{ 2,-1,TabUnk,ActMnu ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,NULL ,NULL},
|
||||||
/* ActRefCon */{ 845,-1,TabUnk,ActRefCon ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Lay_RefreshNotifsAndConnected ,NULL},
|
/* ActRefCon */{ 845,-1,TabUnk,ActRefCon ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Lay_RefreshNotifsAndConnected ,NULL},
|
||||||
/* ActRefLstClk */{ 994,-1,TabUnk,ActRefLstClk ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Lay_RefreshLastClicks ,NULL},
|
/* ActRefLstClk */{ 994,-1,TabUnk,ActRefLstClk ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Lay_RefreshLastClicks ,NULL},
|
||||||
|
@ -1607,6 +1604,10 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
|
||||||
/* ActSeeCal */{1622, 4,TabSta,ActSeeCal ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Cal_ShowCalendar ,"calendar" },
|
/* ActSeeCal */{1622, 4,TabSta,ActSeeCal ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Cal_ShowCalendar ,"calendar" },
|
||||||
/* ActSeeNtf */{ 990, 5,TabSta,ActSeeNtf ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Ntf_ShowMyNotifications ,"bell" },
|
/* ActSeeNtf */{ 990, 5,TabSta,ActSeeNtf ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Ntf_ShowMyNotifications ,"bell" },
|
||||||
|
|
||||||
|
/* ActLogIn */{ 6,-1,TabUnk,ActFrmLogIn ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Usr_WelcomeUsr ,NULL},
|
||||||
|
/* ActLogInNew */{1585,-1,TabUnk,ActFrmLogIn ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Usr_WelcomeUsr ,NULL},
|
||||||
|
/* ActLogInLan */{1077,-1,TabUnk,ActFrmLogIn ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Usr_WelcomeUsr ,NULL},
|
||||||
|
/* ActAnnSee */{1234,-1,TabUnk,ActFrmLogIn ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Ann_MarkAnnouncementAsSeen ,NULL},
|
||||||
/* ActReqSndNewPwd */{ 665,-1,TabUnk,ActFrmLogIn , 0,0x001,0x001,0x001,0x001,0x001,0x001,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Pwd_ShowFormSendNewPwd ,NULL},
|
/* ActReqSndNewPwd */{ 665,-1,TabUnk,ActFrmLogIn , 0,0x001,0x001,0x001,0x001,0x001,0x001,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Pwd_ShowFormSendNewPwd ,NULL},
|
||||||
/* ActSndNewPwd */{ 633,-1,TabUnk,ActFrmLogIn , 0,0x001,0x001,0x001,0x001,0x001,0x001,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Pwd_ChkIdLoginAndSendNewPwd ,NULL},
|
/* ActSndNewPwd */{ 633,-1,TabUnk,ActFrmLogIn , 0,0x001,0x001,0x001,0x001,0x001,0x001,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Pwd_ChkIdLoginAndSendNewPwd ,NULL},
|
||||||
/* ActLogOut */{ 10,-1,TabUnk,ActFrmLogIn ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_BRW_1ST_TAB,Ses_CloseSession ,Usr_Logout ,NULL},
|
/* ActLogOut */{ 10,-1,TabUnk,ActFrmLogIn ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_BRW_1ST_TAB,Ses_CloseSession ,Usr_Logout ,NULL},
|
||||||
|
@ -3063,10 +3064,6 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
|
||||||
/* ActEdiPrf */{ 673, 6,TabPrf,ActEdiPrf ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Pre_EditPrefs ,"cog" },
|
/* ActEdiPrf */{ 673, 6,TabPrf,ActEdiPrf ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Pre_EditPrefs ,"cog" },
|
||||||
|
|
||||||
// Actions not in menu:
|
// Actions not in menu:
|
||||||
/* ActLogIn */{ 6,-1,TabUnk,ActFrmRolSes ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Usr_WelcomeUsr ,NULL},
|
|
||||||
/* ActLogInNew */{1585,-1,TabUnk,ActFrmRolSes ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Usr_WelcomeUsr ,NULL},
|
|
||||||
/* ActLogInLan */{1077,-1,TabUnk,ActFrmRolSes ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Usr_WelcomeUsr ,NULL},
|
|
||||||
/* ActAnnSee */{1234,-1,TabUnk,ActFrmRolSes ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Ann_MarkAnnouncementAsSeen ,NULL},
|
|
||||||
/* ActChgMyRol */{ 589,-1,TabUnk,ActFrmRolSes ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,Rol_ChangeMyRole ,Usr_ShowFormsLogoutAndRole ,NULL},
|
/* ActChgMyRol */{ 589,-1,TabUnk,ActFrmRolSes ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,Rol_ChangeMyRole ,Usr_ShowFormsLogoutAndRole ,NULL},
|
||||||
|
|
||||||
/* ActFrmNewEvtMyAgd */{1603,-1,TabUnk,ActSeeMyAgd ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Agd_RequestCreatOrEditEvent ,NULL},
|
/* ActFrmNewEvtMyAgd */{1603,-1,TabUnk,ActSeeMyAgd ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Agd_RequestCreatOrEditEvent ,NULL},
|
||||||
|
@ -3084,18 +3081,17 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
|
||||||
/* ActChkUsrAcc */{1584,-1,TabUnk,ActFrmMyAcc ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Acc_CheckIfEmptyAccountExists ,NULL},
|
/* ActChkUsrAcc */{1584,-1,TabUnk,ActFrmMyAcc ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Acc_CheckIfEmptyAccountExists ,NULL},
|
||||||
/* ActCreUsrAcc */{1163,-1,TabUnk,ActFrmMyAcc ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Acc_AfterCreationNewAccount ,NULL},
|
/* ActCreUsrAcc */{1163,-1,TabUnk,ActFrmMyAcc ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Acc_AfterCreationNewAccount ,NULL},
|
||||||
|
|
||||||
/* ActRemID_Me */{1147,-1,TabUnk,ActFrmMyAcc ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ID_RemoveMyUsrID ,NULL},
|
/* ActRemMyID */{1147,-1,TabUnk,ActFrmMyAcc ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ID_RemoveMyUsrID ,NULL},
|
||||||
/* ActNewIDMe */{1148,-1,TabUnk,ActFrmMyAcc ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ID_NewMyUsrID ,NULL},
|
/* ActChgMyID */{1148,-1,TabUnk,ActFrmMyAcc ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ID_NewMyUsrID ,NULL},
|
||||||
|
|
||||||
/* ActRemOldNicMe */{1089,-1,TabUnk,ActFrmMyAcc ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Nck_RemoveMyNick ,NULL},
|
/* ActRemMyNck */{1089,-1,TabUnk,ActFrmMyAcc ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Nck_RemoveMyNick ,NULL},
|
||||||
/* ActChgNicMe */{ 37,-1,TabUnk,ActFrmMyAcc ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Nck_UpdateMyNick ,NULL},
|
/* ActChgMyNck */{ 37,-1,TabUnk,ActFrmMyAcc ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Nck_UpdateMyNick ,NULL},
|
||||||
|
|
||||||
/* ActRemMaiMe */{1090,-1,TabUnk,ActFrmMyAcc ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Mai_RemoveMyUsrEmail ,NULL},
|
/* ActRemMyMai */{1090,-1,TabUnk,ActFrmMyAcc ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Mai_RemoveMyUsrEmail ,NULL},
|
||||||
/* ActNewMaiMe */{1088,-1,TabUnk,ActFrmMyAcc ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,May_NewMyUsrEmail ,NULL},
|
/* ActChgMyMai */{1088,-1,TabUnk,ActFrmMyAcc ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,May_NewMyUsrEmail ,NULL},
|
||||||
/* ActCnfMai */{1091,-1,TabUnk,ActFrmMyAcc ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Mai_ConfirmEmail ,NULL},
|
/* ActCnfMai */{1091,-1,TabUnk,ActFrmMyAcc ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Mai_ConfirmEmail ,NULL},
|
||||||
|
|
||||||
/* ActFrmChgMyPwd */{ 34,-1,TabUnk,ActFrmMyAcc ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Acc_ShowFormChgMyAccount ,NULL},
|
/* ActChgMyPwd */{ 35,-1,TabUnk,ActFrmMyAcc ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,Pwd_UpdateMyPwd ,Acc_ShowFormChgMyAccount ,NULL},
|
||||||
/* ActChgPwd */{ 35,-1,TabUnk,ActFrmMyAcc ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,Pwd_UpdateMyPwd ,Acc_ShowFormChgMyAccount ,NULL},
|
|
||||||
|
|
||||||
/* ActReqRemMyAcc */{1430,-1,TabUnk,ActFrmMyAcc ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Acc_AskIfRemoveMyAccount ,NULL},
|
/* ActReqRemMyAcc */{1430,-1,TabUnk,ActFrmMyAcc ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Acc_AskIfRemoveMyAccount ,NULL},
|
||||||
/* ActRemMyAcc */{1431,-1,TabUnk,ActFrmMyAcc ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Acc_RemoveMyAccount ,NULL},
|
/* ActRemMyAcc */{1431,-1,TabUnk,ActFrmMyAcc ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Acc_RemoveMyAccount ,NULL},
|
||||||
|
@ -3181,10 +3177,10 @@ Act_Action_t Act_FromActCodToAction[1 + Act_MAX_ACTION_COD] = // Do not reuse un
|
||||||
-1, // #31 (obsolete action)
|
-1, // #31 (obsolete action)
|
||||||
ActSeeBib, // #32
|
ActSeeBib, // #32
|
||||||
-1, // #33 (obsolete action)
|
-1, // #33 (obsolete action)
|
||||||
ActFrmChgMyPwd, // #34
|
-1, // #34 (obsolete action)
|
||||||
ActChgPwd, // #35
|
ActChgMyPwd, // #35
|
||||||
ActFrmMyAcc, // #36
|
ActFrmMyAcc, // #36
|
||||||
ActChgNicMe, // #37
|
ActChgMyNck, // #37
|
||||||
-1, // #38 (obsolete action)
|
-1, // #38 (obsolete action)
|
||||||
-1, // #39 (obsolete action)
|
-1, // #39 (obsolete action)
|
||||||
-1, // #40 (obsolete action)
|
-1, // #40 (obsolete action)
|
||||||
|
@ -3991,7 +3987,7 @@ Act_Action_t Act_FromActCodToAction[1 + Act_MAX_ACTION_COD] = // Do not reuse un
|
||||||
ActChgThe, // #841
|
ActChgThe, // #841
|
||||||
-1, // #842 (obsolete action)
|
-1, // #842 (obsolete action)
|
||||||
ActFrmRolSes, // #843
|
ActFrmRolSes, // #843
|
||||||
ActHom, // #844
|
-1, // #844 (obsolete action)
|
||||||
ActRefCon, // #845
|
ActRefCon, // #845
|
||||||
ActRcvFilAsgCrsCla, // #846
|
ActRcvFilAsgCrsCla, // #846
|
||||||
ActSeeCrsInf, // #847
|
ActSeeCrsInf, // #847
|
||||||
|
@ -4235,9 +4231,9 @@ Act_Action_t Act_FromActCodToAction[1 + Act_MAX_ACTION_COD] = // Do not reuse un
|
||||||
ActSeeOneTstResMe, // #1085
|
ActSeeOneTstResMe, // #1085
|
||||||
ActReqDatSeeMrkCrs, // #1086
|
ActReqDatSeeMrkCrs, // #1086
|
||||||
ActReqDatSeeMrkGrp, // #1087
|
ActReqDatSeeMrkGrp, // #1087
|
||||||
ActNewMaiMe, // #1088
|
ActChgMyMai, // #1088
|
||||||
ActRemOldNicMe, // #1089
|
ActRemMyNck, // #1089
|
||||||
ActRemMaiMe, // #1090
|
ActRemMyMai, // #1090
|
||||||
ActCnfMai, // #1091
|
ActCnfMai, // #1091
|
||||||
ActChgIco, // #1092
|
ActChgIco, // #1092
|
||||||
ActRchTxtEdiCrsInf, // #1093
|
ActRchTxtEdiCrsInf, // #1093
|
||||||
|
@ -4294,8 +4290,8 @@ Act_Action_t Act_FromActCodToAction[1 + Act_MAX_ACTION_COD] = // Do not reuse un
|
||||||
ActChgBanImg, // #1144
|
ActChgBanImg, // #1144
|
||||||
ActClkBan, // #1145
|
ActClkBan, // #1145
|
||||||
ActMrkNtfSee, // #1146
|
ActMrkNtfSee, // #1146
|
||||||
ActRemID_Me, // #1147
|
ActRemMyID, // #1147
|
||||||
ActNewIDMe, // #1148
|
ActChgMyID, // #1148
|
||||||
ActSeeDegInf, // #1149
|
ActSeeDegInf, // #1149
|
||||||
ActPrnDegInf, // #1150
|
ActPrnDegInf, // #1150
|
||||||
ActSeeCtrInf, // #1151
|
ActSeeCtrInf, // #1151
|
||||||
|
@ -5146,15 +5142,17 @@ void Act_AdjustCurrentAction (void)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/***** If I have no password in database,
|
/***** If I have no password in database,
|
||||||
the only action possible is show a form to change my password *****/
|
the only action possible is show a form to change my account *****/
|
||||||
if (!Gbl.Usrs.Me.UsrDat.Password[0])
|
if (!Gbl.Usrs.Me.UsrDat.Password[0])
|
||||||
{
|
{
|
||||||
switch (Gbl.Action.Act)
|
switch (Gbl.Action.Act)
|
||||||
{
|
{
|
||||||
case ActHom: case ActLogOut:
|
case ActLogOut:
|
||||||
|
case ActFrmMyAcc:
|
||||||
|
case ActChgMyPwd:
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
Gbl.Action.Act = ActFrmChgMyPwd;
|
Gbl.Action.Act = ActFrmMyAcc;
|
||||||
Tab_SetCurrentTab ();
|
Tab_SetCurrentTab ();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -5164,9 +5162,9 @@ void Act_AdjustCurrentAction (void)
|
||||||
if (Gbl.Action.Act == ActLogIn)
|
if (Gbl.Action.Act == ActLogIn)
|
||||||
if (!Pwd_FastCheckIfPasswordSeemsGood (Gbl.Usrs.Me.LoginPlainPassword))
|
if (!Pwd_FastCheckIfPasswordSeemsGood (Gbl.Usrs.Me.LoginPlainPassword))
|
||||||
/* If my login password is not enough secure,
|
/* If my login password is not enough secure,
|
||||||
the only action possible is show a form to change my password */
|
the only action possible is show a form to change my account */
|
||||||
{
|
{
|
||||||
Gbl.Action.Act = ActFrmChgMyPwd;
|
Gbl.Action.Act = ActFrmMyAcc;
|
||||||
Tab_SetCurrentTab ();
|
Tab_SetCurrentTab ();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -5178,8 +5176,10 @@ void Act_AdjustCurrentAction (void)
|
||||||
{
|
{
|
||||||
switch (Gbl.Action.Act)
|
switch (Gbl.Action.Act)
|
||||||
{
|
{
|
||||||
case ActHom: case ActLogOut:
|
case ActLogOut:
|
||||||
case ActFrmChgMyPwd:
|
case ActFrmMyAcc:
|
||||||
|
case ActChgMyPwd:
|
||||||
|
case ActChgMyNck:
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
Gbl.Action.Act = ActFrmMyAcc;
|
Gbl.Action.Act = ActFrmMyAcc;
|
||||||
|
@ -5196,8 +5196,10 @@ void Act_AdjustCurrentAction (void)
|
||||||
Gbl.Usrs.Me.UsrDat.CtyCod <= 0)
|
Gbl.Usrs.Me.UsrDat.CtyCod <= 0)
|
||||||
switch (Gbl.Action.Act)
|
switch (Gbl.Action.Act)
|
||||||
{
|
{
|
||||||
case ActHom: case ActLogOut:
|
case ActLogOut:
|
||||||
case ActFrmMyAcc: case ActFrmChgMyPwd:
|
case ActFrmMyAcc:
|
||||||
|
case ActChgMyPwd:
|
||||||
|
case ActChgMyNck:
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
Gbl.Action.Act = ActReqEdiRecSha;
|
Gbl.Action.Act = ActReqEdiRecSha;
|
||||||
|
@ -5218,8 +5220,10 @@ void Act_AdjustCurrentAction (void)
|
||||||
Gbl.Usrs.Me.UsrDat.Tch.DptCod < 0)))
|
Gbl.Usrs.Me.UsrDat.Tch.DptCod < 0)))
|
||||||
switch (Gbl.Action.Act)
|
switch (Gbl.Action.Act)
|
||||||
{
|
{
|
||||||
case ActHom: case ActLogOut:
|
case ActLogOut:
|
||||||
case ActFrmMyAcc: case ActFrmChgMyPwd:
|
case ActFrmMyAcc:
|
||||||
|
case ActChgMyPwd:
|
||||||
|
case ActChgMyNck:
|
||||||
case ActReqEdiRecSha:
|
case ActReqEdiRecSha:
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -5233,9 +5237,12 @@ void Act_AdjustCurrentAction (void)
|
||||||
Gbl.Usrs.Me.UsrDat.ProfileVisibility == Pri_VISIBILITY_UNKNOWN)
|
Gbl.Usrs.Me.UsrDat.ProfileVisibility == Pri_VISIBILITY_UNKNOWN)
|
||||||
switch (Gbl.Action.Act)
|
switch (Gbl.Action.Act)
|
||||||
{
|
{
|
||||||
case ActHom: case ActLogOut:
|
case ActLogOut:
|
||||||
case ActFrmMyAcc: case ActFrmChgMyPwd:
|
case ActFrmMyAcc:
|
||||||
case ActReqEdiRecSha: case ActReqEdiMyIns:
|
case ActChgMyPwd:
|
||||||
|
case ActChgMyNck:
|
||||||
|
case ActReqEdiRecSha:
|
||||||
|
case ActReqEdiMyIns:
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
Gbl.Action.Act = ActEdiPri;
|
Gbl.Action.Act = ActEdiPri;
|
||||||
|
@ -5276,11 +5283,11 @@ void Act_AdjustCurrentAction (void)
|
||||||
{
|
{
|
||||||
case ActLogIn:
|
case ActLogIn:
|
||||||
case ActLogInNew:
|
case ActLogInNew:
|
||||||
case ActHom:
|
|
||||||
case ActMnu:
|
case ActMnu:
|
||||||
case ActLogOut:
|
case ActLogOut:
|
||||||
case ActFrmMyAcc:
|
case ActFrmMyAcc:
|
||||||
case ActFrmChgMyPwd:
|
case ActChgMyPwd:
|
||||||
|
case ActChgMyNck:
|
||||||
case ActReqEdiRecSha:
|
case ActReqEdiRecSha:
|
||||||
case ActReqEdiMyIns:
|
case ActReqEdiMyIns:
|
||||||
case ActEdiPri:
|
case ActEdiPri:
|
||||||
|
|
244
swad_action.h
244
swad_action.h
|
@ -61,7 +61,7 @@ typedef enum
|
||||||
|
|
||||||
typedef signed int Act_Action_t; // Must be a signed type, because -1 is used to indicate obsolete action
|
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 + 55 + 38 + 12 + 42 + 36 + 19 + 110 + 157 + 437 + 165 + 168 + 15 + 72)
|
#define Act_NUM_ACTIONS (1 + 8 + 59 + 38 + 12 + 42 + 36 + 19 + 110 + 157 + 437 + 165 + 168 + 15 + 67)
|
||||||
|
|
||||||
#define Act_MAX_ACTION_COD 1752
|
#define Act_MAX_ACTION_COD 1752
|
||||||
|
|
||||||
|
@ -73,17 +73,16 @@ typedef signed int Act_Action_t; // Must be a signed type, because -1 is used to
|
||||||
#define ActAll 0
|
#define ActAll 0
|
||||||
|
|
||||||
#define ActUnk 1
|
#define ActUnk 1
|
||||||
#define ActHom 2
|
#define ActMnu 2
|
||||||
#define ActMnu 3
|
|
||||||
|
|
||||||
// The following 5 actions use AJAX to refresh only a part of the page
|
// The following 5 actions use AJAX to refresh only a part of the page
|
||||||
#define ActRefCon 4
|
#define ActRefCon 3
|
||||||
#define ActRefLstClk 5
|
#define ActRefLstClk 4
|
||||||
#define ActRefNewSocPubGbl 6
|
#define ActRefNewSocPubGbl 5
|
||||||
#define ActRefOldSocPubGbl 7
|
#define ActRefOldSocPubGbl 6
|
||||||
#define ActRefOldSocPubUsr 8
|
#define ActRefOldSocPubUsr 7
|
||||||
|
|
||||||
#define ActWebSvc 9
|
#define ActWebSvc 8
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/********************************* Start tab *********************************/
|
/********************************* Start tab *********************************/
|
||||||
|
@ -97,63 +96,67 @@ typedef signed int Act_Action_t; // Must be a signed type, because -1 is used to
|
||||||
#define ActSeeNtf (ActWebSvc + 6)
|
#define ActSeeNtf (ActWebSvc + 6)
|
||||||
|
|
||||||
// Secondary actions
|
// Secondary actions
|
||||||
#define ActReqSndNewPwd (ActWebSvc + 7)
|
#define ActLogIn (ActWebSvc + 7)
|
||||||
#define ActSndNewPwd (ActWebSvc + 8)
|
#define ActLogInNew (ActWebSvc + 8)
|
||||||
#define ActLogOut (ActWebSvc + 9)
|
#define ActLogInLan (ActWebSvc + 9)
|
||||||
|
#define ActAnnSee (ActWebSvc + 10)
|
||||||
|
#define ActReqSndNewPwd (ActWebSvc + 11)
|
||||||
|
#define ActSndNewPwd (ActWebSvc + 12)
|
||||||
|
#define ActLogOut (ActWebSvc + 13)
|
||||||
|
|
||||||
#define ActSch (ActWebSvc + 10)
|
#define ActSch (ActWebSvc + 14)
|
||||||
|
|
||||||
#define ActRcvSocPstGbl (ActWebSvc + 11)
|
#define ActRcvSocPstGbl (ActWebSvc + 15)
|
||||||
#define ActRcvSocComGbl (ActWebSvc + 12)
|
#define ActRcvSocComGbl (ActWebSvc + 16)
|
||||||
#define ActShaSocNotGbl (ActWebSvc + 13)
|
#define ActShaSocNotGbl (ActWebSvc + 17)
|
||||||
#define ActUnsSocNotGbl (ActWebSvc + 14)
|
#define ActUnsSocNotGbl (ActWebSvc + 18)
|
||||||
#define ActFavSocNotGbl (ActWebSvc + 15)
|
#define ActFavSocNotGbl (ActWebSvc + 19)
|
||||||
#define ActUnfSocNotGbl (ActWebSvc + 16)
|
#define ActUnfSocNotGbl (ActWebSvc + 20)
|
||||||
#define ActFavSocComGbl (ActWebSvc + 17)
|
#define ActFavSocComGbl (ActWebSvc + 21)
|
||||||
#define ActUnfSocComGbl (ActWebSvc + 18)
|
#define ActUnfSocComGbl (ActWebSvc + 22)
|
||||||
#define ActReqRemSocPubGbl (ActWebSvc + 19)
|
#define ActReqRemSocPubGbl (ActWebSvc + 23)
|
||||||
#define ActRemSocPubGbl (ActWebSvc + 20)
|
#define ActRemSocPubGbl (ActWebSvc + 24)
|
||||||
#define ActReqRemSocComGbl (ActWebSvc + 21)
|
#define ActReqRemSocComGbl (ActWebSvc + 25)
|
||||||
#define ActRemSocComGbl (ActWebSvc + 22)
|
#define ActRemSocComGbl (ActWebSvc + 26)
|
||||||
|
|
||||||
#define ActReqOthPubPrf (ActWebSvc + 23)
|
#define ActReqOthPubPrf (ActWebSvc + 27)
|
||||||
|
|
||||||
#define ActRcvSocPstUsr (ActWebSvc + 24)
|
#define ActRcvSocPstUsr (ActWebSvc + 28)
|
||||||
#define ActRcvSocComUsr (ActWebSvc + 25)
|
#define ActRcvSocComUsr (ActWebSvc + 29)
|
||||||
#define ActShaSocNotUsr (ActWebSvc + 26)
|
#define ActShaSocNotUsr (ActWebSvc + 30)
|
||||||
#define ActUnsSocNotUsr (ActWebSvc + 27)
|
#define ActUnsSocNotUsr (ActWebSvc + 31)
|
||||||
#define ActFavSocNotUsr (ActWebSvc + 28)
|
#define ActFavSocNotUsr (ActWebSvc + 32)
|
||||||
#define ActUnfSocNotUsr (ActWebSvc + 29)
|
#define ActUnfSocNotUsr (ActWebSvc + 33)
|
||||||
#define ActFavSocComUsr (ActWebSvc + 30)
|
#define ActFavSocComUsr (ActWebSvc + 34)
|
||||||
#define ActUnfSocComUsr (ActWebSvc + 31)
|
#define ActUnfSocComUsr (ActWebSvc + 35)
|
||||||
#define ActReqRemSocPubUsr (ActWebSvc + 32)
|
#define ActReqRemSocPubUsr (ActWebSvc + 36)
|
||||||
#define ActRemSocPubUsr (ActWebSvc + 33)
|
#define ActRemSocPubUsr (ActWebSvc + 37)
|
||||||
#define ActReqRemSocComUsr (ActWebSvc + 34)
|
#define ActReqRemSocComUsr (ActWebSvc + 38)
|
||||||
#define ActRemSocComUsr (ActWebSvc + 35)
|
#define ActRemSocComUsr (ActWebSvc + 39)
|
||||||
|
|
||||||
#define ActSeeOthPubPrf (ActWebSvc + 36)
|
#define ActSeeOthPubPrf (ActWebSvc + 40)
|
||||||
#define ActCal1stClkTim (ActWebSvc + 37)
|
#define ActCal1stClkTim (ActWebSvc + 41)
|
||||||
#define ActCalNumClk (ActWebSvc + 38)
|
#define ActCalNumClk (ActWebSvc + 42)
|
||||||
#define ActCalNumFilVie (ActWebSvc + 39)
|
#define ActCalNumFilVie (ActWebSvc + 43)
|
||||||
#define ActCalNumForPst (ActWebSvc + 40)
|
#define ActCalNumForPst (ActWebSvc + 44)
|
||||||
#define ActCalNumMsgSnt (ActWebSvc + 41)
|
#define ActCalNumMsgSnt (ActWebSvc + 45)
|
||||||
|
|
||||||
#define ActFolUsr (ActWebSvc + 42)
|
#define ActFolUsr (ActWebSvc + 46)
|
||||||
#define ActUnfUsr (ActWebSvc + 43)
|
#define ActUnfUsr (ActWebSvc + 47)
|
||||||
#define ActSeeFlg (ActWebSvc + 44)
|
#define ActSeeFlg (ActWebSvc + 48)
|
||||||
#define ActSeeFlr (ActWebSvc + 45)
|
#define ActSeeFlr (ActWebSvc + 49)
|
||||||
|
|
||||||
#define ActPrnCal (ActWebSvc + 46)
|
#define ActPrnCal (ActWebSvc + 50)
|
||||||
#define ActChgCal1stDay (ActWebSvc + 47)
|
#define ActChgCal1stDay (ActWebSvc + 51)
|
||||||
|
|
||||||
#define ActSeeNewNtf (ActWebSvc + 48)
|
#define ActSeeNewNtf (ActWebSvc + 52)
|
||||||
#define ActMrkNtfSee (ActWebSvc + 49)
|
#define ActMrkNtfSee (ActWebSvc + 53)
|
||||||
#define ActSeeMai (ActWebSvc + 50)
|
#define ActSeeMai (ActWebSvc + 54)
|
||||||
#define ActEdiMai (ActWebSvc + 51)
|
#define ActEdiMai (ActWebSvc + 55)
|
||||||
#define ActNewMai (ActWebSvc + 52)
|
#define ActNewMai (ActWebSvc + 56)
|
||||||
#define ActRemMai (ActWebSvc + 53)
|
#define ActRemMai (ActWebSvc + 57)
|
||||||
#define ActRenMaiSho (ActWebSvc + 54)
|
#define ActRenMaiSho (ActWebSvc + 58)
|
||||||
#define ActRenMaiFul (ActWebSvc + 55)
|
#define ActRenMaiFul (ActWebSvc + 59)
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/******************************** System tab *********************************/
|
/******************************** System tab *********************************/
|
||||||
|
@ -1521,80 +1524,75 @@ typedef signed int Act_Action_t; // Must be a signed type, because -1 is used to
|
||||||
#define ActReqEdiRecSha (ActSeeMyUsgRep + 6)
|
#define ActReqEdiRecSha (ActSeeMyUsgRep + 6)
|
||||||
#define ActEdiPrf (ActSeeMyUsgRep + 7)
|
#define ActEdiPrf (ActSeeMyUsgRep + 7)
|
||||||
// Secondary actions
|
// Secondary actions
|
||||||
#define ActLogIn (ActSeeMyUsgRep + 8)
|
#define ActChgMyRol (ActSeeMyUsgRep + 8)
|
||||||
#define ActLogInNew (ActSeeMyUsgRep + 9)
|
#define ActFrmNewEvtMyAgd (ActSeeMyUsgRep + 9)
|
||||||
#define ActLogInLan (ActSeeMyUsgRep + 10)
|
#define ActEdiOneEvtMyAgd (ActSeeMyUsgRep + 10)
|
||||||
#define ActAnnSee (ActSeeMyUsgRep + 11)
|
#define ActNewEvtMyAgd (ActSeeMyUsgRep + 11)
|
||||||
#define ActChgMyRol (ActSeeMyUsgRep + 12)
|
#define ActChgEvtMyAgd (ActSeeMyUsgRep + 12)
|
||||||
#define ActFrmNewEvtMyAgd (ActSeeMyUsgRep + 13)
|
#define ActReqRemEvtMyAgd (ActSeeMyUsgRep + 13)
|
||||||
#define ActEdiOneEvtMyAgd (ActSeeMyUsgRep + 14)
|
#define ActRemEvtMyAgd (ActSeeMyUsgRep + 14)
|
||||||
#define ActNewEvtMyAgd (ActSeeMyUsgRep + 15)
|
#define ActHidEvtMyAgd (ActSeeMyUsgRep + 15)
|
||||||
#define ActChgEvtMyAgd (ActSeeMyUsgRep + 16)
|
#define ActShoEvtMyAgd (ActSeeMyUsgRep + 16)
|
||||||
#define ActReqRemEvtMyAgd (ActSeeMyUsgRep + 17)
|
#define ActPrvEvtMyAgd (ActSeeMyUsgRep + 17)
|
||||||
#define ActRemEvtMyAgd (ActSeeMyUsgRep + 18)
|
#define ActPubEvtMyAgd (ActSeeMyUsgRep + 18)
|
||||||
#define ActHidEvtMyAgd (ActSeeMyUsgRep + 19)
|
#define ActPrnAgdQR (ActSeeMyUsgRep + 19)
|
||||||
#define ActShoEvtMyAgd (ActSeeMyUsgRep + 20)
|
|
||||||
#define ActPrvEvtMyAgd (ActSeeMyUsgRep + 21)
|
|
||||||
#define ActPubEvtMyAgd (ActSeeMyUsgRep + 22)
|
|
||||||
#define ActPrnAgdQR (ActSeeMyUsgRep + 23)
|
|
||||||
|
|
||||||
#define ActChkUsrAcc (ActSeeMyUsgRep + 24)
|
#define ActChkUsrAcc (ActSeeMyUsgRep + 20)
|
||||||
#define ActCreUsrAcc (ActSeeMyUsgRep + 25)
|
#define ActCreUsrAcc (ActSeeMyUsgRep + 21)
|
||||||
#define ActRemID_Me (ActSeeMyUsgRep + 26)
|
#define ActRemMyID (ActSeeMyUsgRep + 22)
|
||||||
#define ActNewIDMe (ActSeeMyUsgRep + 27)
|
#define ActChgMyID (ActSeeMyUsgRep + 23)
|
||||||
#define ActRemOldNicMe (ActSeeMyUsgRep + 28)
|
#define ActRemMyNck (ActSeeMyUsgRep + 24)
|
||||||
#define ActChgNicMe (ActSeeMyUsgRep + 29)
|
#define ActChgMyNck (ActSeeMyUsgRep + 25)
|
||||||
#define ActRemMaiMe (ActSeeMyUsgRep + 30)
|
#define ActRemMyMai (ActSeeMyUsgRep + 26)
|
||||||
#define ActNewMaiMe (ActSeeMyUsgRep + 31)
|
#define ActChgMyMai (ActSeeMyUsgRep + 27)
|
||||||
#define ActCnfMai (ActSeeMyUsgRep + 32)
|
#define ActCnfMai (ActSeeMyUsgRep + 28)
|
||||||
#define ActFrmChgMyPwd (ActSeeMyUsgRep + 33)
|
#define ActChgMyPwd (ActSeeMyUsgRep + 29)
|
||||||
#define ActChgPwd (ActSeeMyUsgRep + 34)
|
#define ActReqRemMyAcc (ActSeeMyUsgRep + 30)
|
||||||
#define ActReqRemMyAcc (ActSeeMyUsgRep + 35)
|
#define ActRemMyAcc (ActSeeMyUsgRep + 31)
|
||||||
#define ActRemMyAcc (ActSeeMyUsgRep + 36)
|
|
||||||
|
|
||||||
#define ActChgMyData (ActSeeMyUsgRep + 37)
|
#define ActChgMyData (ActSeeMyUsgRep + 32)
|
||||||
|
|
||||||
#define ActReqMyPho (ActSeeMyUsgRep + 38)
|
#define ActReqMyPho (ActSeeMyUsgRep + 33)
|
||||||
#define ActDetMyPho (ActSeeMyUsgRep + 39)
|
#define ActDetMyPho (ActSeeMyUsgRep + 34)
|
||||||
#define ActUpdMyPho (ActSeeMyUsgRep + 40)
|
#define ActUpdMyPho (ActSeeMyUsgRep + 35)
|
||||||
#define ActReqRemMyPho (ActSeeMyUsgRep + 41)
|
#define ActReqRemMyPho (ActSeeMyUsgRep + 36)
|
||||||
#define ActRemMyPho (ActSeeMyUsgRep + 42)
|
#define ActRemMyPho (ActSeeMyUsgRep + 37)
|
||||||
|
|
||||||
#define ActEdiPri (ActSeeMyUsgRep + 43)
|
#define ActEdiPri (ActSeeMyUsgRep + 38)
|
||||||
#define ActChgPriPho (ActSeeMyUsgRep + 44)
|
#define ActChgPriPho (ActSeeMyUsgRep + 39)
|
||||||
#define ActChgPriPrf (ActSeeMyUsgRep + 45)
|
#define ActChgPriPrf (ActSeeMyUsgRep + 40)
|
||||||
|
|
||||||
#define ActReqEdiMyIns (ActSeeMyUsgRep + 46)
|
#define ActReqEdiMyIns (ActSeeMyUsgRep + 41)
|
||||||
#define ActChgCtyMyIns (ActSeeMyUsgRep + 47)
|
#define ActChgCtyMyIns (ActSeeMyUsgRep + 42)
|
||||||
#define ActChgMyIns (ActSeeMyUsgRep + 48)
|
#define ActChgMyIns (ActSeeMyUsgRep + 43)
|
||||||
#define ActChgMyCtr (ActSeeMyUsgRep + 49)
|
#define ActChgMyCtr (ActSeeMyUsgRep + 44)
|
||||||
#define ActChgMyDpt (ActSeeMyUsgRep + 50)
|
#define ActChgMyDpt (ActSeeMyUsgRep + 45)
|
||||||
#define ActChgMyOff (ActSeeMyUsgRep + 51)
|
#define ActChgMyOff (ActSeeMyUsgRep + 46)
|
||||||
#define ActChgMyOffPho (ActSeeMyUsgRep + 52)
|
#define ActChgMyOffPho (ActSeeMyUsgRep + 47)
|
||||||
|
|
||||||
#define ActReqEdiMyNet (ActSeeMyUsgRep + 53)
|
#define ActReqEdiMyNet (ActSeeMyUsgRep + 48)
|
||||||
#define ActChgMyNet (ActSeeMyUsgRep + 54)
|
#define ActChgMyNet (ActSeeMyUsgRep + 49)
|
||||||
|
|
||||||
#define ActChgThe (ActSeeMyUsgRep + 55)
|
#define ActChgThe (ActSeeMyUsgRep + 50)
|
||||||
#define ActReqChgLan (ActSeeMyUsgRep + 56)
|
#define ActReqChgLan (ActSeeMyUsgRep + 51)
|
||||||
#define ActChgLan (ActSeeMyUsgRep + 57)
|
#define ActChgLan (ActSeeMyUsgRep + 52)
|
||||||
#define ActChg1stDay (ActSeeMyUsgRep + 58)
|
#define ActChg1stDay (ActSeeMyUsgRep + 53)
|
||||||
#define ActChgDatFmt (ActSeeMyUsgRep + 59)
|
#define ActChgDatFmt (ActSeeMyUsgRep + 54)
|
||||||
#define ActChgCol (ActSeeMyUsgRep + 60)
|
#define ActChgCol (ActSeeMyUsgRep + 55)
|
||||||
#define ActHidLftCol (ActSeeMyUsgRep + 61)
|
#define ActHidLftCol (ActSeeMyUsgRep + 56)
|
||||||
#define ActHidRgtCol (ActSeeMyUsgRep + 62)
|
#define ActHidRgtCol (ActSeeMyUsgRep + 57)
|
||||||
#define ActShoLftCol (ActSeeMyUsgRep + 63)
|
#define ActShoLftCol (ActSeeMyUsgRep + 58)
|
||||||
#define ActShoRgtCol (ActSeeMyUsgRep + 64)
|
#define ActShoRgtCol (ActSeeMyUsgRep + 59)
|
||||||
#define ActChgIco (ActSeeMyUsgRep + 65)
|
#define ActChgIco (ActSeeMyUsgRep + 60)
|
||||||
#define ActChgMnu (ActSeeMyUsgRep + 66)
|
#define ActChgMnu (ActSeeMyUsgRep + 61)
|
||||||
#define ActChgNtfPrf (ActSeeMyUsgRep + 67)
|
#define ActChgNtfPrf (ActSeeMyUsgRep + 62)
|
||||||
|
|
||||||
#define ActPrnUsrQR (ActSeeMyUsgRep + 68)
|
#define ActPrnUsrQR (ActSeeMyUsgRep + 63)
|
||||||
|
|
||||||
#define ActPrnMyTT (ActSeeMyUsgRep + 69)
|
#define ActPrnMyTT (ActSeeMyUsgRep + 64)
|
||||||
#define ActEdiTut (ActSeeMyUsgRep + 70)
|
#define ActEdiTut (ActSeeMyUsgRep + 65)
|
||||||
#define ActChgTut (ActSeeMyUsgRep + 71)
|
#define ActChgTut (ActSeeMyUsgRep + 66)
|
||||||
#define ActChgMyTT1stDay (ActSeeMyUsgRep + 72)
|
#define ActChgMyTT1stDay (ActSeeMyUsgRep + 67)
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/******************************** Public types *******************************/
|
/******************************** Public types *******************************/
|
||||||
|
|
|
@ -1260,6 +1260,7 @@ void Agd_AskRemEvent (void)
|
||||||
extern const char *Txt_Do_you_really_want_to_remove_the_event_X;
|
extern const char *Txt_Do_you_really_want_to_remove_the_event_X;
|
||||||
extern const char *Txt_Remove_event;
|
extern const char *Txt_Remove_event;
|
||||||
struct AgendaEvent AgdEvent;
|
struct AgendaEvent AgdEvent;
|
||||||
|
char *Txt;
|
||||||
|
|
||||||
/***** Get parameters *****/
|
/***** Get parameters *****/
|
||||||
Agd_GetParams (Agd_MY_AGENDA);
|
Agd_GetParams (Agd_MY_AGENDA);
|
||||||
|
@ -1274,13 +1275,14 @@ void Agd_AskRemEvent (void)
|
||||||
|
|
||||||
/***** Show question and button to remove event *****/
|
/***** Show question and button to remove event *****/
|
||||||
Gbl.Agenda.AgdCodToEdit = AgdEvent.AgdCod;
|
Gbl.Agenda.AgdCodToEdit = AgdEvent.AgdCod;
|
||||||
snprintf (Gbl.Alert.Txt,sizeof (Gbl.Alert.Txt),
|
if (asprintf (&Txt,Txt_Do_you_really_want_to_remove_the_event_X,
|
||||||
Txt_Do_you_really_want_to_remove_the_event_X,
|
AgdEvent.Event) < 0)
|
||||||
AgdEvent.Event);
|
Lay_NotEnoughMemoryExit ();
|
||||||
Ale_ShowAlertAndButton (Ale_QUESTION,Gbl.Alert.Txt,
|
Ale_ShowAlertAndButton (Ale_QUESTION,Txt,
|
||||||
ActRemEvtMyAgd,NULL,NULL,
|
ActRemEvtMyAgd,NULL,NULL,
|
||||||
Agd_PutCurrentParamsMyAgenda,
|
Agd_PutCurrentParamsMyAgenda,
|
||||||
Btn_REMOVE_BUTTON,Txt_Remove_event);
|
Btn_REMOVE_BUTTON,Txt_Remove_event);
|
||||||
|
free ((void *) Txt);
|
||||||
|
|
||||||
/***** Show events again *****/
|
/***** Show events again *****/
|
||||||
Agd_ShowMyAgenda ();
|
Agd_ShowMyAgenda ();
|
||||||
|
@ -1294,6 +1296,7 @@ void Agd_RemoveEvent (void)
|
||||||
{
|
{
|
||||||
extern const char *Txt_Event_X_removed;
|
extern const char *Txt_Event_X_removed;
|
||||||
struct AgendaEvent AgdEvent;
|
struct AgendaEvent AgdEvent;
|
||||||
|
char *Txt;
|
||||||
|
|
||||||
/***** Get event code *****/
|
/***** Get event code *****/
|
||||||
if ((AgdEvent.AgdCod = Agd_GetParamAgdCod ()) == -1L)
|
if ((AgdEvent.AgdCod = Agd_GetParamAgdCod ()) == -1L)
|
||||||
|
@ -1309,10 +1312,11 @@ void Agd_RemoveEvent (void)
|
||||||
AgdEvent.AgdCod,AgdEvent.UsrCod);
|
AgdEvent.AgdCod,AgdEvent.UsrCod);
|
||||||
|
|
||||||
/***** Write message to show the change made *****/
|
/***** Write message to show the change made *****/
|
||||||
snprintf (Gbl.Alert.Txt,sizeof (Gbl.Alert.Txt),
|
if (asprintf (&Txt,Txt_Event_X_removed,
|
||||||
Txt_Event_X_removed,
|
AgdEvent.Event) < 0)
|
||||||
AgdEvent.Event);
|
Lay_NotEnoughMemoryExit ();
|
||||||
Ale_ShowAlert (Ale_SUCCESS,Gbl.Alert.Txt);
|
Ale_ShowAlert (Ale_SUCCESS,Txt);
|
||||||
|
free ((void *) Txt);
|
||||||
|
|
||||||
/***** Show events again *****/
|
/***** Show events again *****/
|
||||||
Agd_ShowMyAgenda ();
|
Agd_ShowMyAgenda ();
|
||||||
|
@ -1326,6 +1330,7 @@ void Agd_HideEvent (void)
|
||||||
{
|
{
|
||||||
extern const char *Txt_Event_X_is_now_hidden;
|
extern const char *Txt_Event_X_is_now_hidden;
|
||||||
struct AgendaEvent AgdEvent;
|
struct AgendaEvent AgdEvent;
|
||||||
|
char *Txt;
|
||||||
|
|
||||||
/***** Get event code *****/
|
/***** Get event code *****/
|
||||||
if ((AgdEvent.AgdCod = Agd_GetParamAgdCod ()) == -1L)
|
if ((AgdEvent.AgdCod = Agd_GetParamAgdCod ()) == -1L)
|
||||||
|
@ -1342,10 +1347,11 @@ void Agd_HideEvent (void)
|
||||||
AgdEvent.AgdCod,AgdEvent.UsrCod);
|
AgdEvent.AgdCod,AgdEvent.UsrCod);
|
||||||
|
|
||||||
/***** Write message to show the change made *****/
|
/***** Write message to show the change made *****/
|
||||||
snprintf (Gbl.Alert.Txt,sizeof (Gbl.Alert.Txt),
|
if (asprintf (&Txt,Txt_Event_X_is_now_hidden,
|
||||||
Txt_Event_X_is_now_hidden,
|
AgdEvent.Event) < 0)
|
||||||
AgdEvent.Event);
|
Lay_NotEnoughMemoryExit ();
|
||||||
Ale_ShowAlert (Ale_SUCCESS,Gbl.Alert.Txt);
|
Ale_ShowAlert (Ale_SUCCESS,Txt);
|
||||||
|
free ((void *) Txt);
|
||||||
|
|
||||||
/***** Show events again *****/
|
/***** Show events again *****/
|
||||||
Agd_ShowMyAgenda ();
|
Agd_ShowMyAgenda ();
|
||||||
|
@ -1359,6 +1365,7 @@ void Agd_UnhideEvent (void)
|
||||||
{
|
{
|
||||||
extern const char *Txt_Event_X_is_now_visible;
|
extern const char *Txt_Event_X_is_now_visible;
|
||||||
struct AgendaEvent AgdEvent;
|
struct AgendaEvent AgdEvent;
|
||||||
|
char *Txt;
|
||||||
|
|
||||||
/***** Get event code *****/
|
/***** Get event code *****/
|
||||||
if ((AgdEvent.AgdCod = Agd_GetParamAgdCod ()) == -1L)
|
if ((AgdEvent.AgdCod = Agd_GetParamAgdCod ()) == -1L)
|
||||||
|
@ -1375,10 +1382,11 @@ void Agd_UnhideEvent (void)
|
||||||
AgdEvent.AgdCod,AgdEvent.UsrCod);
|
AgdEvent.AgdCod,AgdEvent.UsrCod);
|
||||||
|
|
||||||
/***** Write message to show the change made *****/
|
/***** Write message to show the change made *****/
|
||||||
snprintf (Gbl.Alert.Txt,sizeof (Gbl.Alert.Txt),
|
if (asprintf (&Txt,Txt_Event_X_is_now_visible,
|
||||||
Txt_Event_X_is_now_visible,
|
AgdEvent.Event) < 0)
|
||||||
AgdEvent.Event);
|
Lay_NotEnoughMemoryExit ();
|
||||||
Ale_ShowAlert (Ale_SUCCESS,Gbl.Alert.Txt);
|
Ale_ShowAlert (Ale_SUCCESS,Txt);
|
||||||
|
free ((void *) Txt);
|
||||||
|
|
||||||
/***** Show events again *****/
|
/***** Show events again *****/
|
||||||
Agd_ShowMyAgenda ();
|
Agd_ShowMyAgenda ();
|
||||||
|
@ -1392,6 +1400,7 @@ void Agd_MakeEventPrivate (void)
|
||||||
{
|
{
|
||||||
extern const char *Txt_Event_X_is_now_private;
|
extern const char *Txt_Event_X_is_now_private;
|
||||||
struct AgendaEvent AgdEvent;
|
struct AgendaEvent AgdEvent;
|
||||||
|
char *Txt;
|
||||||
|
|
||||||
/***** Get event code *****/
|
/***** Get event code *****/
|
||||||
if ((AgdEvent.AgdCod = Agd_GetParamAgdCod ()) == -1L)
|
if ((AgdEvent.AgdCod = Agd_GetParamAgdCod ()) == -1L)
|
||||||
|
@ -1408,10 +1417,11 @@ void Agd_MakeEventPrivate (void)
|
||||||
AgdEvent.AgdCod,AgdEvent.UsrCod);
|
AgdEvent.AgdCod,AgdEvent.UsrCod);
|
||||||
|
|
||||||
/***** Write message to show the change made *****/
|
/***** Write message to show the change made *****/
|
||||||
snprintf (Gbl.Alert.Txt,sizeof (Gbl.Alert.Txt),
|
if (asprintf (&Txt,Txt_Event_X_is_now_private,
|
||||||
Txt_Event_X_is_now_private,
|
AgdEvent.Event) < 0)
|
||||||
AgdEvent.Event);
|
Lay_NotEnoughMemoryExit ();
|
||||||
Ale_ShowAlert (Ale_SUCCESS,Gbl.Alert.Txt);
|
Ale_ShowAlert (Ale_SUCCESS,Txt);
|
||||||
|
free ((void *) Txt);
|
||||||
|
|
||||||
/***** Show events again *****/
|
/***** Show events again *****/
|
||||||
Agd_ShowMyAgenda ();
|
Agd_ShowMyAgenda ();
|
||||||
|
@ -1425,6 +1435,7 @@ void Agd_MakeEventPublic (void)
|
||||||
{
|
{
|
||||||
extern const char *Txt_Event_X_is_now_visible_to_users_of_your_courses;
|
extern const char *Txt_Event_X_is_now_visible_to_users_of_your_courses;
|
||||||
struct AgendaEvent AgdEvent;
|
struct AgendaEvent AgdEvent;
|
||||||
|
char *Txt;
|
||||||
|
|
||||||
/***** Get event code *****/
|
/***** Get event code *****/
|
||||||
if ((AgdEvent.AgdCod = Agd_GetParamAgdCod ()) == -1L)
|
if ((AgdEvent.AgdCod = Agd_GetParamAgdCod ()) == -1L)
|
||||||
|
@ -1441,10 +1452,11 @@ void Agd_MakeEventPublic (void)
|
||||||
AgdEvent.AgdCod,AgdEvent.UsrCod);
|
AgdEvent.AgdCod,AgdEvent.UsrCod);
|
||||||
|
|
||||||
/***** Write message to show the change made *****/
|
/***** Write message to show the change made *****/
|
||||||
snprintf (Gbl.Alert.Txt,sizeof (Gbl.Alert.Txt),
|
if (asprintf (&Txt,Txt_Event_X_is_now_visible_to_users_of_your_courses,
|
||||||
Txt_Event_X_is_now_visible_to_users_of_your_courses,
|
AgdEvent.Event) < 0)
|
||||||
AgdEvent.Event);
|
Lay_NotEnoughMemoryExit ();
|
||||||
Ale_ShowAlert (Ale_SUCCESS,Gbl.Alert.Txt);
|
Ale_ShowAlert (Ale_SUCCESS,Txt);
|
||||||
|
free ((void *) Txt);
|
||||||
|
|
||||||
/***** Show events again *****/
|
/***** Show events again *****/
|
||||||
Agd_ShowMyAgenda ();
|
Agd_ShowMyAgenda ();
|
||||||
|
@ -1593,7 +1605,8 @@ void Agd_RecFormEvent (void)
|
||||||
struct AgendaEvent AgdEvent;
|
struct AgendaEvent AgdEvent;
|
||||||
bool ItsANewEvent;
|
bool ItsANewEvent;
|
||||||
bool NewEventIsCorrect = true;
|
bool NewEventIsCorrect = true;
|
||||||
char Txt[Cns_MAX_BYTES_TEXT + 1];
|
char EventTxt[Cns_MAX_BYTES_TEXT + 1];
|
||||||
|
char *Txt;
|
||||||
|
|
||||||
/***** Set author of the event *****/
|
/***** Set author of the event *****/
|
||||||
AgdEvent.UsrCod = Gbl.Usrs.Me.UsrDat.UsrCod;
|
AgdEvent.UsrCod = Gbl.Usrs.Me.UsrDat.UsrCod;
|
||||||
|
@ -1612,7 +1625,7 @@ void Agd_RecFormEvent (void)
|
||||||
Par_GetParToText ("Event",AgdEvent.Event,Agd_MAX_BYTES_EVENT);
|
Par_GetParToText ("Event",AgdEvent.Event,Agd_MAX_BYTES_EVENT);
|
||||||
|
|
||||||
/***** Get text *****/
|
/***** Get text *****/
|
||||||
Par_GetParToHTML ("Txt",Txt,Cns_MAX_BYTES_TEXT); // Store in HTML format (not rigorous)
|
Par_GetParToHTML ("Txt",EventTxt,Cns_MAX_BYTES_TEXT); // Store in HTML format (not rigorous)
|
||||||
|
|
||||||
/***** Adjust dates *****/
|
/***** Adjust dates *****/
|
||||||
if (AgdEvent.TimeUTC[Agd_START_TIME] == 0)
|
if (AgdEvent.TimeUTC[Agd_START_TIME] == 0)
|
||||||
|
@ -1639,17 +1652,18 @@ void Agd_RecFormEvent (void)
|
||||||
{
|
{
|
||||||
if (ItsANewEvent)
|
if (ItsANewEvent)
|
||||||
{
|
{
|
||||||
Agd_CreateEvent (&AgdEvent,Txt); // Add new event to database
|
Agd_CreateEvent (&AgdEvent,EventTxt); // Add new event to database
|
||||||
|
|
||||||
/***** Write success message *****/
|
/***** Write success message *****/
|
||||||
snprintf (Gbl.Alert.Txt,sizeof (Gbl.Alert.Txt),
|
if (asprintf (&Txt,Txt_Created_new_event_X,
|
||||||
Txt_Created_new_event_X,
|
AgdEvent.Event) < 0)
|
||||||
AgdEvent.Event);
|
Lay_NotEnoughMemoryExit ();
|
||||||
Ale_ShowAlert (Ale_SUCCESS,Gbl.Alert.Txt);
|
Ale_ShowAlert (Ale_SUCCESS,Txt);
|
||||||
|
free ((void *) Txt);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Agd_UpdateEvent (&AgdEvent,Txt);
|
Agd_UpdateEvent (&AgdEvent,EventTxt);
|
||||||
|
|
||||||
/***** Write success message *****/
|
/***** Write success message *****/
|
||||||
Ale_ShowAlert (Ale_SUCCESS,Txt_The_event_has_been_modified);
|
Ale_ShowAlert (Ale_SUCCESS,Txt_The_event_has_been_modified);
|
||||||
|
|
|
@ -100,7 +100,6 @@ void Ale_ShowAlert (Ale_AlertType_t AlertType,const char *Txt)
|
||||||
if (AlertType != Ale_NONE)
|
if (AlertType != Ale_NONE)
|
||||||
Ale_ShowAlertAndButton (AlertType,Txt,
|
Ale_ShowAlertAndButton (AlertType,Txt,
|
||||||
ActUnk,NULL,NULL,NULL,Btn_NO_BUTTON,NULL);
|
ActUnk,NULL,NULL,NULL,Btn_NO_BUTTON,NULL);
|
||||||
// Ale_ResetAlert ();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Ale_ShowAlertAndButton (Ale_AlertType_t AlertType,const char *Txt,
|
void Ale_ShowAlertAndButton (Ale_AlertType_t AlertType,const char *Txt,
|
||||||
|
|
|
@ -25,8 +25,10 @@
|
||||||
/********************************* Headers ***********************************/
|
/********************************* Headers ***********************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
#define _GNU_SOURCE // For asprintf
|
||||||
#include <linux/limits.h> // For PATH_MAX
|
#include <linux/limits.h> // For PATH_MAX
|
||||||
#include <linux/stddef.h> // For NULL
|
#include <linux/stddef.h> // For NULL
|
||||||
|
#include <stdio.h> // For asprintf
|
||||||
#include <stdlib.h> // For calloc
|
#include <stdlib.h> // For calloc
|
||||||
#include <string.h> // For string functions
|
#include <string.h> // For string functions
|
||||||
|
|
||||||
|
@ -927,6 +929,7 @@ void Asg_ReqRemAssignment (void)
|
||||||
extern const char *Txt_Do_you_really_want_to_remove_the_assignment_X;
|
extern const char *Txt_Do_you_really_want_to_remove_the_assignment_X;
|
||||||
extern const char *Txt_Remove_assignment;
|
extern const char *Txt_Remove_assignment;
|
||||||
struct Assignment Asg;
|
struct Assignment Asg;
|
||||||
|
char *Txt;
|
||||||
|
|
||||||
/***** Get parameters *****/
|
/***** Get parameters *****/
|
||||||
Asg_GetParamAsgOrder ();
|
Asg_GetParamAsgOrder ();
|
||||||
|
@ -942,12 +945,13 @@ void Asg_ReqRemAssignment (void)
|
||||||
|
|
||||||
/***** Show question and button to remove the assignment *****/
|
/***** Show question and button to remove the assignment *****/
|
||||||
Gbl.Asgs.AsgCodToEdit = Asg.AsgCod;
|
Gbl.Asgs.AsgCodToEdit = Asg.AsgCod;
|
||||||
snprintf (Gbl.Alert.Txt,sizeof (Gbl.Alert.Txt),
|
if (asprintf (&Txt,Txt_Do_you_really_want_to_remove_the_assignment_X,
|
||||||
Txt_Do_you_really_want_to_remove_the_assignment_X,
|
Asg.Title) < 0)
|
||||||
Asg.Title);
|
Lay_NotEnoughMemoryExit ();
|
||||||
Ale_ShowAlertAndButton (Ale_QUESTION,Gbl.Alert.Txt,
|
Ale_ShowAlertAndButton (Ale_QUESTION,Txt,
|
||||||
ActRemAsg,NULL,NULL,Asg_PutParams,
|
ActRemAsg,NULL,NULL,Asg_PutParams,
|
||||||
Btn_REMOVE_BUTTON,Txt_Remove_assignment);
|
Btn_REMOVE_BUTTON,Txt_Remove_assignment);
|
||||||
|
free ((void *) Txt);
|
||||||
|
|
||||||
/***** Show assignments again *****/
|
/***** Show assignments again *****/
|
||||||
Asg_SeeAssignments ();
|
Asg_SeeAssignments ();
|
||||||
|
@ -961,6 +965,7 @@ void Asg_RemoveAssignment (void)
|
||||||
{
|
{
|
||||||
extern const char *Txt_Assignment_X_removed;
|
extern const char *Txt_Assignment_X_removed;
|
||||||
struct Assignment Asg;
|
struct Assignment Asg;
|
||||||
|
char *Txt;
|
||||||
|
|
||||||
/***** Get assignment code *****/
|
/***** Get assignment code *****/
|
||||||
if ((Asg.AsgCod = Asg_GetParamAsgCod ()) == -1L)
|
if ((Asg.AsgCod = Asg_GetParamAsgCod ()) == -1L)
|
||||||
|
@ -985,10 +990,11 @@ void Asg_RemoveAssignment (void)
|
||||||
Ntf_MarkNotifAsRemoved (Ntf_EVENT_ASSIGNMENT,Asg.AsgCod);
|
Ntf_MarkNotifAsRemoved (Ntf_EVENT_ASSIGNMENT,Asg.AsgCod);
|
||||||
|
|
||||||
/***** Write message to show the change made *****/
|
/***** Write message to show the change made *****/
|
||||||
snprintf (Gbl.Alert.Txt,sizeof (Gbl.Alert.Txt),
|
if (asprintf (&Txt,Txt_Assignment_X_removed,
|
||||||
Txt_Assignment_X_removed,
|
Asg.Title) < 0)
|
||||||
Asg.Title);
|
Lay_NotEnoughMemoryExit ();
|
||||||
Ale_ShowAlert (Ale_SUCCESS,Gbl.Alert.Txt);
|
Ale_ShowAlert (Ale_SUCCESS,Txt);
|
||||||
|
free ((void *) Txt);
|
||||||
|
|
||||||
/***** Show assignments again *****/
|
/***** Show assignments again *****/
|
||||||
Asg_SeeAssignments ();
|
Asg_SeeAssignments ();
|
||||||
|
@ -1002,6 +1008,7 @@ void Asg_HideAssignment (void)
|
||||||
{
|
{
|
||||||
extern const char *Txt_Assignment_X_is_now_hidden;
|
extern const char *Txt_Assignment_X_is_now_hidden;
|
||||||
struct Assignment Asg;
|
struct Assignment Asg;
|
||||||
|
char *Txt;
|
||||||
|
|
||||||
/***** Get assignment code *****/
|
/***** Get assignment code *****/
|
||||||
if ((Asg.AsgCod = Asg_GetParamAsgCod ()) == -1L)
|
if ((Asg.AsgCod = Asg_GetParamAsgCod ()) == -1L)
|
||||||
|
@ -1017,10 +1024,11 @@ void Asg_HideAssignment (void)
|
||||||
Asg.AsgCod,Gbl.CurrentCrs.Crs.CrsCod);
|
Asg.AsgCod,Gbl.CurrentCrs.Crs.CrsCod);
|
||||||
|
|
||||||
/***** Write message to show the change made *****/
|
/***** Write message to show the change made *****/
|
||||||
snprintf (Gbl.Alert.Txt,sizeof (Gbl.Alert.Txt),
|
if (asprintf (&Txt,Txt_Assignment_X_is_now_hidden,
|
||||||
Txt_Assignment_X_is_now_hidden,
|
Asg.Title) < 0)
|
||||||
Asg.Title);
|
Lay_NotEnoughMemoryExit ();
|
||||||
Ale_ShowAlert (Ale_SUCCESS,Gbl.Alert.Txt);
|
Ale_ShowAlert (Ale_SUCCESS,Txt);
|
||||||
|
free ((void *) Txt);
|
||||||
|
|
||||||
/***** Show assignments again *****/
|
/***** Show assignments again *****/
|
||||||
Asg_SeeAssignments ();
|
Asg_SeeAssignments ();
|
||||||
|
@ -1034,6 +1042,7 @@ void Asg_ShowAssignment (void)
|
||||||
{
|
{
|
||||||
extern const char *Txt_Assignment_X_is_now_visible;
|
extern const char *Txt_Assignment_X_is_now_visible;
|
||||||
struct Assignment Asg;
|
struct Assignment Asg;
|
||||||
|
char *Txt;
|
||||||
|
|
||||||
/***** Get assignment code *****/
|
/***** Get assignment code *****/
|
||||||
if ((Asg.AsgCod = Asg_GetParamAsgCod ()) == -1L)
|
if ((Asg.AsgCod = Asg_GetParamAsgCod ()) == -1L)
|
||||||
|
@ -1049,10 +1058,11 @@ void Asg_ShowAssignment (void)
|
||||||
Asg.AsgCod,Gbl.CurrentCrs.Crs.CrsCod);
|
Asg.AsgCod,Gbl.CurrentCrs.Crs.CrsCod);
|
||||||
|
|
||||||
/***** Write message to show the change made *****/
|
/***** Write message to show the change made *****/
|
||||||
snprintf (Gbl.Alert.Txt,sizeof (Gbl.Alert.Txt),
|
if (asprintf (&Txt,Txt_Assignment_X_is_now_visible,
|
||||||
Txt_Assignment_X_is_now_visible,
|
Asg.Title) < 0)
|
||||||
Asg.Title);
|
Lay_NotEnoughMemoryExit ();
|
||||||
Ale_ShowAlert (Ale_SUCCESS,Gbl.Alert.Txt);
|
Ale_ShowAlert (Ale_SUCCESS,Txt);
|
||||||
|
free ((void *) Txt);
|
||||||
|
|
||||||
/***** Show assignments again *****/
|
/***** Show assignments again *****/
|
||||||
Asg_SeeAssignments ();
|
Asg_SeeAssignments ();
|
||||||
|
@ -1291,7 +1301,8 @@ void Asg_RecFormAssignment (void)
|
||||||
bool ItsANewAssignment;
|
bool ItsANewAssignment;
|
||||||
bool NewAssignmentIsCorrect = true;
|
bool NewAssignmentIsCorrect = true;
|
||||||
unsigned NumUsrsToBeNotifiedByEMail;
|
unsigned NumUsrsToBeNotifiedByEMail;
|
||||||
char Txt[Cns_MAX_BYTES_TEXT + 1];
|
char Description[Cns_MAX_BYTES_TEXT + 1];
|
||||||
|
char *Txt;
|
||||||
|
|
||||||
/***** Get the code of the assignment *****/
|
/***** Get the code of the assignment *****/
|
||||||
NewAsg.AsgCod = Asg_GetParamAsgCod ();
|
NewAsg.AsgCod = Asg_GetParamAsgCod ();
|
||||||
|
@ -1323,7 +1334,7 @@ void Asg_RecFormAssignment (void)
|
||||||
Asg_DO_NOT_SEND_WORK;
|
Asg_DO_NOT_SEND_WORK;
|
||||||
|
|
||||||
/***** Get assignment text *****/
|
/***** Get assignment text *****/
|
||||||
Par_GetParToHTML ("Txt",Txt,Cns_MAX_BYTES_TEXT); // Store in HTML format (not rigorous)
|
Par_GetParToHTML ("Txt",Description,Cns_MAX_BYTES_TEXT); // Store in HTML format (not rigorous)
|
||||||
|
|
||||||
/***** Adjust dates *****/
|
/***** Adjust dates *****/
|
||||||
if (NewAsg.TimeUTC[Dat_START_TIME] == 0)
|
if (NewAsg.TimeUTC[Dat_START_TIME] == 0)
|
||||||
|
@ -1338,10 +1349,12 @@ void Asg_RecFormAssignment (void)
|
||||||
if (Asg_CheckIfSimilarAssignmentExists ("Title",NewAsg.Title,NewAsg.AsgCod))
|
if (Asg_CheckIfSimilarAssignmentExists ("Title",NewAsg.Title,NewAsg.AsgCod))
|
||||||
{
|
{
|
||||||
NewAssignmentIsCorrect = false;
|
NewAssignmentIsCorrect = false;
|
||||||
snprintf (Gbl.Alert.Txt,sizeof (Gbl.Alert.Txt),
|
|
||||||
Txt_Already_existed_an_assignment_with_the_title_X,
|
if (asprintf (&Txt,Txt_Already_existed_an_assignment_with_the_title_X,
|
||||||
NewAsg.Title);
|
NewAsg.Title) < 0)
|
||||||
Ale_ShowAlert (Ale_WARNING,Gbl.Alert.Txt);
|
Lay_NotEnoughMemoryExit ();
|
||||||
|
Ale_ShowAlert (Ale_WARNING,Txt);
|
||||||
|
free ((void *) Txt);
|
||||||
}
|
}
|
||||||
else // Title is correct
|
else // Title is correct
|
||||||
{
|
{
|
||||||
|
@ -1391,7 +1404,7 @@ void Asg_RecFormAssignment (void)
|
||||||
|
|
||||||
if (ItsANewAssignment)
|
if (ItsANewAssignment)
|
||||||
{
|
{
|
||||||
Asg_CreateAssignment (&NewAsg,Txt); // Add new assignment to database
|
Asg_CreateAssignment (&NewAsg,Description); // Add new assignment to database
|
||||||
|
|
||||||
/***** Write success message *****/
|
/***** Write success message *****/
|
||||||
snprintf (Gbl.Alert.Txt,sizeof (Gbl.Alert.Txt),
|
snprintf (Gbl.Alert.Txt,sizeof (Gbl.Alert.Txt),
|
||||||
|
@ -1406,7 +1419,7 @@ void Asg_RecFormAssignment (void)
|
||||||
NewAssignmentIsCorrect = Brw_UpdateFoldersAssigmentsIfExistForAllUsrs (OldAsg.Folder,NewAsg.Folder);
|
NewAssignmentIsCorrect = Brw_UpdateFoldersAssigmentsIfExistForAllUsrs (OldAsg.Folder,NewAsg.Folder);
|
||||||
if (NewAssignmentIsCorrect)
|
if (NewAssignmentIsCorrect)
|
||||||
{
|
{
|
||||||
Asg_UpdateAssignment (&NewAsg,Txt);
|
Asg_UpdateAssignment (&NewAsg,Description);
|
||||||
|
|
||||||
/***** Write success message *****/
|
/***** Write success message *****/
|
||||||
Ale_ShowAlert (Ale_SUCCESS,Txt_The_assignment_has_been_modified);
|
Ale_ShowAlert (Ale_SUCCESS,Txt_The_assignment_has_been_modified);
|
||||||
|
|
|
@ -98,7 +98,7 @@ static void Att_PutParams (void);
|
||||||
static void Att_GetListAttEvents (Att_OrderNewestOldest_t OrderNewestOldest);
|
static void Att_GetListAttEvents (Att_OrderNewestOldest_t OrderNewestOldest);
|
||||||
static void Att_GetDataOfAttEventByCodAndCheckCrs (struct AttendanceEvent *Att);
|
static void Att_GetDataOfAttEventByCodAndCheckCrs (struct AttendanceEvent *Att);
|
||||||
static void Att_ResetAttendanceEvent (struct AttendanceEvent *Att);
|
static void Att_ResetAttendanceEvent (struct AttendanceEvent *Att);
|
||||||
static void Att_GetAttEventTxtFromDB (long AttCod,char Txt[Cns_MAX_BYTES_TEXT + 1]);
|
static void Att_GetAttEventDescriptionFromDB (long AttCod,char Description[Cns_MAX_BYTES_TEXT + 1]);
|
||||||
static bool Att_CheckIfSimilarAttEventExists (const char *Field,const char *Value,long AttCod);
|
static bool Att_CheckIfSimilarAttEventExists (const char *Field,const char *Value,long AttCod);
|
||||||
static void Att_ShowLstGrpsToEditAttEvent (long AttCod);
|
static void Att_ShowLstGrpsToEditAttEvent (long AttCod);
|
||||||
static void Att_RemoveAllTheGrpsAssociatedToAnAttEvent (long AttCod);
|
static void Att_RemoveAllTheGrpsAssociatedToAnAttEvent (long AttCod);
|
||||||
|
@ -378,7 +378,7 @@ static void Att_ShowOneAttEvent (struct AttendanceEvent *Att,bool ShowOnlyThisAt
|
||||||
extern const char *Txt_Today;
|
extern const char *Txt_Today;
|
||||||
extern const char *Txt_View_event;
|
extern const char *Txt_View_event;
|
||||||
static unsigned UniqueId = 0;
|
static unsigned UniqueId = 0;
|
||||||
char Txt[Cns_MAX_BYTES_TEXT + 1];
|
char Description[Cns_MAX_BYTES_TEXT + 1];
|
||||||
|
|
||||||
/***** Get data of this attendance event *****/
|
/***** Get data of this attendance event *****/
|
||||||
Att_GetDataOfAttEventByCodAndCheckCrs (Att);
|
Att_GetDataOfAttEventByCodAndCheckCrs (Att);
|
||||||
|
@ -474,10 +474,10 @@ static void Att_ShowOneAttEvent (struct AttendanceEvent *Att,bool ShowOnlyThisAt
|
||||||
fprintf (Gbl.F.Out,"</td>");
|
fprintf (Gbl.F.Out,"</td>");
|
||||||
|
|
||||||
/* Text of the attendance event */
|
/* Text of the attendance event */
|
||||||
Att_GetAttEventTxtFromDB (Att->AttCod,Txt);
|
Att_GetAttEventDescriptionFromDB (Att->AttCod,Description);
|
||||||
Str_ChangeFormat (Str_FROM_HTML,Str_TO_RIGOROUS_HTML,
|
Str_ChangeFormat (Str_FROM_HTML,Str_TO_RIGOROUS_HTML,
|
||||||
Txt,Cns_MAX_BYTES_TEXT,false); // Convert from HTML to recpectful HTML
|
Description,Cns_MAX_BYTES_TEXT,false); // Convert from HTML to recpectful HTML
|
||||||
Str_InsertLinks (Txt,Cns_MAX_BYTES_TEXT,60); // Insert links
|
Str_InsertLinks (Description,Cns_MAX_BYTES_TEXT,60); // Insert links
|
||||||
fprintf (Gbl.F.Out,"<td colspan=\"2\" class=\"LEFT_TOP");
|
fprintf (Gbl.F.Out,"<td colspan=\"2\" class=\"LEFT_TOP");
|
||||||
if (!ShowOnlyThisAttEventComplete)
|
if (!ShowOnlyThisAttEventComplete)
|
||||||
fprintf (Gbl.F.Out," COLOR%u",Gbl.RowEvenOdd);
|
fprintf (Gbl.F.Out," COLOR%u",Gbl.RowEvenOdd);
|
||||||
|
@ -489,7 +489,7 @@ static void Att_ShowOneAttEvent (struct AttendanceEvent *Att,bool ShowOnlyThisAt
|
||||||
fprintf (Gbl.F.Out,"<div class=\"%s\">%s</div>",
|
fprintf (Gbl.F.Out,"<div class=\"%s\">%s</div>",
|
||||||
Att->Hidden ? "DAT_LIGHT" :
|
Att->Hidden ? "DAT_LIGHT" :
|
||||||
"DAT",
|
"DAT",
|
||||||
Txt);
|
Description);
|
||||||
|
|
||||||
fprintf (Gbl.F.Out,"</td>"
|
fprintf (Gbl.F.Out,"</td>"
|
||||||
"</tr>");
|
"</tr>");
|
||||||
|
@ -816,7 +816,7 @@ void Att_FreeListAttEvents (void)
|
||||||
/***************** Get attendance event text from database *******************/
|
/***************** Get attendance event text from database *******************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
static void Att_GetAttEventTxtFromDB (long AttCod,char Txt[Cns_MAX_BYTES_TEXT + 1])
|
static void Att_GetAttEventDescriptionFromDB (long AttCod,char Description[Cns_MAX_BYTES_TEXT + 1])
|
||||||
{
|
{
|
||||||
MYSQL_RES *mysql_res;
|
MYSQL_RES *mysql_res;
|
||||||
MYSQL_ROW row;
|
MYSQL_ROW row;
|
||||||
|
@ -835,11 +835,11 @@ static void Att_GetAttEventTxtFromDB (long AttCod,char Txt[Cns_MAX_BYTES_TEXT +
|
||||||
row = mysql_fetch_row (mysql_res);
|
row = mysql_fetch_row (mysql_res);
|
||||||
|
|
||||||
/* Get info text */
|
/* Get info text */
|
||||||
Str_Copy (Txt,row[0],
|
Str_Copy (Description,row[0],
|
||||||
Cns_MAX_BYTES_TEXT);
|
Cns_MAX_BYTES_TEXT);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
Txt[0] = '\0';
|
Description[0] = '\0';
|
||||||
|
|
||||||
/***** Free structure that stores the query result *****/
|
/***** Free structure that stores the query result *****/
|
||||||
DB_FreeMySQLResult (&mysql_res);
|
DB_FreeMySQLResult (&mysql_res);
|
||||||
|
@ -1054,7 +1054,7 @@ void Att_RequestCreatOrEditAttEvent (void)
|
||||||
extern const char *Txt_Save;
|
extern const char *Txt_Save;
|
||||||
struct AttendanceEvent Att;
|
struct AttendanceEvent Att;
|
||||||
bool ItsANewAttEvent;
|
bool ItsANewAttEvent;
|
||||||
char Txt[Cns_MAX_BYTES_TEXT + 1];
|
char Description[Cns_MAX_BYTES_TEXT + 1];
|
||||||
|
|
||||||
/***** Get parameters *****/
|
/***** Get parameters *****/
|
||||||
Att_GetParamAttOrder ();
|
Att_GetParamAttOrder ();
|
||||||
|
@ -1085,7 +1085,7 @@ void Att_RequestCreatOrEditAttEvent (void)
|
||||||
Att_GetDataOfAttEventByCodAndCheckCrs (&Att);
|
Att_GetDataOfAttEventByCodAndCheckCrs (&Att);
|
||||||
|
|
||||||
/* Get text of the attendance event from database */
|
/* Get text of the attendance event from database */
|
||||||
Att_GetAttEventTxtFromDB (Att.AttCod,Txt);
|
Att_GetAttEventDescriptionFromDB (Att.AttCod,Description);
|
||||||
}
|
}
|
||||||
|
|
||||||
/***** Start form *****/
|
/***** Start form *****/
|
||||||
|
@ -1163,7 +1163,7 @@ void Att_RequestCreatOrEditAttEvent (void)
|
||||||
" cols=\"60\" rows=\"5\">",
|
" cols=\"60\" rows=\"5\">",
|
||||||
The_ClassForm[Gbl.Prefs.Theme],Txt_Description);
|
The_ClassForm[Gbl.Prefs.Theme],Txt_Description);
|
||||||
if (!ItsANewAttEvent)
|
if (!ItsANewAttEvent)
|
||||||
fprintf (Gbl.F.Out,"%s",Txt);
|
fprintf (Gbl.F.Out,"%s",Description);
|
||||||
fprintf (Gbl.F.Out,"</textarea>"
|
fprintf (Gbl.F.Out,"</textarea>"
|
||||||
"</td>"
|
"</td>"
|
||||||
"</tr>");
|
"</tr>");
|
||||||
|
@ -1257,7 +1257,7 @@ void Att_RecFormAttEvent (void)
|
||||||
struct AttendanceEvent ReceivedAtt;
|
struct AttendanceEvent ReceivedAtt;
|
||||||
bool ItsANewAttEvent;
|
bool ItsANewAttEvent;
|
||||||
bool ReceivedAttEventIsCorrect = true;
|
bool ReceivedAttEventIsCorrect = true;
|
||||||
char Txt[Cns_MAX_BYTES_TEXT + 1];
|
char Description[Cns_MAX_BYTES_TEXT + 1];
|
||||||
|
|
||||||
/***** Get the code of the attendance event *****/
|
/***** Get the code of the attendance event *****/
|
||||||
ItsANewAttEvent = ((ReceivedAtt.AttCod = Att_GetParamAttCod ()) == -1L);
|
ItsANewAttEvent = ((ReceivedAtt.AttCod = Att_GetParamAttCod ()) == -1L);
|
||||||
|
@ -1280,8 +1280,8 @@ void Att_RecFormAttEvent (void)
|
||||||
/***** Get attendance event title *****/
|
/***** Get attendance event title *****/
|
||||||
Par_GetParToText ("Title",ReceivedAtt.Title,Att_MAX_BYTES_ATTENDANCE_EVENT_TITLE);
|
Par_GetParToText ("Title",ReceivedAtt.Title,Att_MAX_BYTES_ATTENDANCE_EVENT_TITLE);
|
||||||
|
|
||||||
/***** Get attendance event text *****/
|
/***** Get attendance event description *****/
|
||||||
Par_GetParToHTML ("Txt",Txt,Cns_MAX_BYTES_TEXT); // Store in HTML format (not rigorous)
|
Par_GetParToHTML ("Txt",Description,Cns_MAX_BYTES_TEXT); // Store in HTML format (not rigorous)
|
||||||
|
|
||||||
/***** Adjust dates *****/
|
/***** Adjust dates *****/
|
||||||
if (ReceivedAtt.TimeUTC[Att_START_TIME] == 0)
|
if (ReceivedAtt.TimeUTC[Att_START_TIME] == 0)
|
||||||
|
@ -1317,7 +1317,7 @@ void Att_RecFormAttEvent (void)
|
||||||
if (ItsANewAttEvent)
|
if (ItsANewAttEvent)
|
||||||
{
|
{
|
||||||
ReceivedAtt.Hidden = false; // New attendance events are visible by default
|
ReceivedAtt.Hidden = false; // New attendance events are visible by default
|
||||||
Att_CreateAttEvent (&ReceivedAtt,Txt); // Add new attendance event to database
|
Att_CreateAttEvent (&ReceivedAtt,Description); // Add new attendance event to database
|
||||||
|
|
||||||
/***** Write success message *****/
|
/***** Write success message *****/
|
||||||
snprintf (Gbl.Alert.Txt,sizeof (Gbl.Alert.Txt),
|
snprintf (Gbl.Alert.Txt,sizeof (Gbl.Alert.Txt),
|
||||||
|
@ -1327,7 +1327,7 @@ void Att_RecFormAttEvent (void)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Att_UpdateAttEvent (&ReceivedAtt,Txt);
|
Att_UpdateAttEvent (&ReceivedAtt,Description);
|
||||||
|
|
||||||
/***** Write success message *****/
|
/***** Write success message *****/
|
||||||
Ale_ShowAlert (Ale_SUCCESS,Txt_The_event_has_been_modified);
|
Ale_ShowAlert (Ale_SUCCESS,Txt_The_event_has_been_modified);
|
||||||
|
@ -1347,7 +1347,7 @@ void Att_RecFormAttEvent (void)
|
||||||
/********************* Create a new attendance event *************************/
|
/********************* Create a new attendance event *************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
void Att_CreateAttEvent (struct AttendanceEvent *Att,const char *Txt)
|
void Att_CreateAttEvent (struct AttendanceEvent *Att,const char *Description)
|
||||||
{
|
{
|
||||||
/***** Create a new attendance event *****/
|
/***** Create a new attendance event *****/
|
||||||
Att->AttCod =
|
Att->AttCod =
|
||||||
|
@ -1367,7 +1367,7 @@ void Att_CreateAttEvent (struct AttendanceEvent *Att,const char *Txt)
|
||||||
Att->CommentTchVisible ? 'Y' :
|
Att->CommentTchVisible ? 'Y' :
|
||||||
'N',
|
'N',
|
||||||
Att->Title,
|
Att->Title,
|
||||||
Txt);
|
Description);
|
||||||
|
|
||||||
/***** Create groups *****/
|
/***** Create groups *****/
|
||||||
if (Gbl.CurrentCrs.Grps.LstGrpsSel.NumGrps)
|
if (Gbl.CurrentCrs.Grps.LstGrpsSel.NumGrps)
|
||||||
|
@ -1378,7 +1378,7 @@ void Att_CreateAttEvent (struct AttendanceEvent *Att,const char *Txt)
|
||||||
/****************** Update an existing attendance event **********************/
|
/****************** Update an existing attendance event **********************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
void Att_UpdateAttEvent (struct AttendanceEvent *Att,const char *Txt)
|
void Att_UpdateAttEvent (struct AttendanceEvent *Att,const char *Description)
|
||||||
{
|
{
|
||||||
/***** Update the data of the attendance event *****/
|
/***** Update the data of the attendance event *****/
|
||||||
DB_QueryUPDATE ("can not update attendance event",
|
DB_QueryUPDATE ("can not update attendance event",
|
||||||
|
@ -1395,7 +1395,7 @@ void Att_UpdateAttEvent (struct AttendanceEvent *Att,const char *Txt)
|
||||||
Att->CommentTchVisible ? 'Y' :
|
Att->CommentTchVisible ? 'Y' :
|
||||||
'N',
|
'N',
|
||||||
Att->Title,
|
Att->Title,
|
||||||
Txt,
|
Description,
|
||||||
Att->AttCod,Gbl.CurrentCrs.Crs.CrsCod);
|
Att->AttCod,Gbl.CurrentCrs.Crs.CrsCod);
|
||||||
|
|
||||||
/***** Update groups *****/
|
/***** Update groups *****/
|
||||||
|
|
|
@ -91,8 +91,8 @@ void Att_RemoveAttEventFromDB (long AttCod);
|
||||||
void Att_HideAttEvent (void);
|
void Att_HideAttEvent (void);
|
||||||
void Att_ShowAttEvent (void);
|
void Att_ShowAttEvent (void);
|
||||||
void Att_RecFormAttEvent (void);
|
void Att_RecFormAttEvent (void);
|
||||||
void Att_CreateAttEvent (struct AttendanceEvent *Att,const char *Txt);
|
void Att_CreateAttEvent (struct AttendanceEvent *Att,const char *Description);
|
||||||
void Att_UpdateAttEvent (struct AttendanceEvent *Att,const char *Txt);
|
void Att_UpdateAttEvent (struct AttendanceEvent *Att,const char *Description);
|
||||||
bool Att_CheckIfAttEventIsAssociatedToGrps (long AttCod);
|
bool Att_CheckIfAttEventIsAssociatedToGrps (long AttCod);
|
||||||
bool Att_CheckIfAttEventIsAssociatedToGrp (long AsgCod,long GrpCod);
|
bool Att_CheckIfAttEventIsAssociatedToGrp (long AsgCod,long GrpCod);
|
||||||
void Att_RemoveGroupsOfType (long GrpTypCod);
|
void Att_RemoveGroupsOfType (long GrpTypCod);
|
||||||
|
|
|
@ -34,6 +34,17 @@
|
||||||
Sabia que você pode usar SWAD em portugués? https://swad.ugr.es/pt
|
Sabia que você pode usar SWAD em portugués? https://swad.ugr.es/pt
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/****************************** Debug example ********************************/
|
||||||
|
/*****************************************************************************/
|
||||||
|
/*
|
||||||
|
DB_QueryINSERT ("can not debug",
|
||||||
|
"INSERT INTO debug"
|
||||||
|
" (DebugTime,Txt)"
|
||||||
|
" VALUES"
|
||||||
|
" (NOW(),'ActCod = %ld')",
|
||||||
|
Act_GetActCod (Gbl.Action.Act));
|
||||||
|
*/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/*********************************** TODO ************************************/
|
/*********************************** TODO ************************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -364,7 +375,11 @@ Buenos d
|
||||||
// Que haya una opción general que los bloquee todos y que los desbloquee todos
|
// Que haya una opción general que los bloquee todos y que los desbloquee todos
|
||||||
// Para bloquear/desbloquear se usará un icono candado
|
// Para bloquear/desbloquear se usará un icono candado
|
||||||
// Para preasignado/no preasignado usar otro icono (usuario/usuario tachado, por ej.)
|
// Para preasignado/no preasignado usar otro icono (usuario/usuario tachado, por ej.)
|
||||||
|
/*
|
||||||
|
SHOW TABLE STATUS WHERE Name = 'debug';
|
||||||
|
ALTER TABLE debug ENGINE=MyISAM;
|
||||||
|
OPTIMIZE TABLE debug;
|
||||||
|
*/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/****************************** Public constants *****************************/
|
/****************************** Public constants *****************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -384,10 +399,17 @@ En OpenSWAD:
|
||||||
ps2pdf source.ps destination.pdf
|
ps2pdf source.ps destination.pdf
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define Log_PLATFORM_VERSION "SWAD 18.45.4 (2019-02-15)"
|
#define Log_PLATFORM_VERSION "SWAD 18.46 (2019-02-15)"
|
||||||
#define CSS_FILE "swad18.41.1.css"
|
#define CSS_FILE "swad18.41.1.css"
|
||||||
#define JS_FILE "swad18.32.1.js"
|
#define JS_FILE "swad18.32.1.js"
|
||||||
/*
|
/*
|
||||||
|
Version 18.46: Feb 15, 2019 Removed unused code related to tabs.
|
||||||
|
Fixed bug in actions related to login.
|
||||||
|
Refactoring code related to alerts. (238468 lines)
|
||||||
|
2 changes necessary in database:
|
||||||
|
UPDATE actions SET Obsolete='Y' WHERE ActCod='34';
|
||||||
|
UPDATE actions SET Obsolete='Y' WHERE ActCod='844';
|
||||||
|
|
||||||
Version 18.45.4: Feb 15, 2019 Changes in new year greeting. (238431 lines)
|
Version 18.45.4: Feb 15, 2019 Changes in new year greeting. (238431 lines)
|
||||||
Version 18.45.3: Feb 15, 2019 Contextual icon to see calendar from holidays. (238434 lines)
|
Version 18.45.3: Feb 15, 2019 Contextual icon to see calendar from holidays. (238434 lines)
|
||||||
Version 18.45.2: Feb 15, 2019 Changed holidays icon. (238411 lines)
|
Version 18.45.2: Feb 15, 2019 Changed holidays icon. (238411 lines)
|
||||||
|
|
|
@ -110,7 +110,13 @@ struct Globals
|
||||||
Ale_AlertType_t Type;
|
Ale_AlertType_t Type;
|
||||||
char Txt[Ale_MAX_BYTES_ALERT + 1];
|
char Txt[Ale_MAX_BYTES_ALERT + 1];
|
||||||
const char *Section; // Where to display the alert
|
const char *Section; // Where to display the alert
|
||||||
} Alert; // Used in a posteriori function to write success / warning message
|
} Alert; // TODO: Obsolete -> change progressively
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
Ale_AlertType_t Type;
|
||||||
|
char Txt[Ale_MAX_BYTES_ALERT + 1];
|
||||||
|
const char *Section; // Where to display the alert
|
||||||
|
} AlertToShowLater; // Used in a posteriori function to write success / warning message
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
size_t ContentLength;
|
size_t ContentLength;
|
||||||
|
|
22
swad_mail.c
22
swad_mail.c
|
@ -89,7 +89,7 @@ static void Mai_PutHeadMailDomains (void);
|
||||||
static void Mai_CreateMailDomain (struct Mail *Mai);
|
static void Mai_CreateMailDomain (struct Mail *Mai);
|
||||||
|
|
||||||
static void Mai_ShowFormChangeUsrEmail (const struct UsrData *UsrDat,bool ItsMe,
|
static void Mai_ShowFormChangeUsrEmail (const struct UsrData *UsrDat,bool ItsMe,
|
||||||
bool IMustFillEmail,bool IShouldConfirmEmail);
|
bool IMustFillInEmail,bool IShouldConfirmEmail);
|
||||||
|
|
||||||
static void Mai_RemoveEmail (struct UsrData *UsrDat);
|
static void Mai_RemoveEmail (struct UsrData *UsrDat);
|
||||||
static void Mai_RemoveEmailFromDB (long UsrCod,const char Email[Cns_MAX_BYTES_EMAIL_ADDRESS + 1]);
|
static void Mai_RemoveEmailFromDB (long UsrCod,const char Email[Cns_MAX_BYTES_EMAIL_ADDRESS + 1]);
|
||||||
|
@ -1144,7 +1144,7 @@ long Mai_GetUsrCodFromEmail (const char Email[Cns_MAX_BYTES_EMAIL_ADDRESS + 1])
|
||||||
/*********************** Show form to change my email ************************/
|
/*********************** Show form to change my email ************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
void Mai_ShowFormChangeMyEmail (bool IMustFillEmail,bool IShouldConfirmEmail)
|
void Mai_ShowFormChangeMyEmail (bool IMustFillInEmail,bool IShouldConfirmEmail)
|
||||||
{
|
{
|
||||||
extern const char *Hlp_PROFILE_Account;
|
extern const char *Hlp_PROFILE_Account;
|
||||||
extern const char *Txt_Email;
|
extern const char *Txt_Email;
|
||||||
|
@ -1163,7 +1163,7 @@ void Mai_ShowFormChangeMyEmail (bool IMustFillEmail,bool IShouldConfirmEmail)
|
||||||
/***** Show form to change email *****/
|
/***** Show form to change email *****/
|
||||||
Mai_ShowFormChangeUsrEmail (&Gbl.Usrs.Me.UsrDat,
|
Mai_ShowFormChangeUsrEmail (&Gbl.Usrs.Me.UsrDat,
|
||||||
true, // ItsMe
|
true, // ItsMe
|
||||||
IMustFillEmail,IShouldConfirmEmail);
|
IMustFillInEmail,IShouldConfirmEmail);
|
||||||
|
|
||||||
/***** End box *****/
|
/***** End box *****/
|
||||||
Box_EndBox ();
|
Box_EndBox ();
|
||||||
|
@ -1195,7 +1195,7 @@ void Mai_ShowFormChangeOtherUsrEmail (void)
|
||||||
/***** Show form to change email *****/
|
/***** Show form to change email *****/
|
||||||
Mai_ShowFormChangeUsrEmail (&Gbl.Usrs.Other.UsrDat,
|
Mai_ShowFormChangeUsrEmail (&Gbl.Usrs.Other.UsrDat,
|
||||||
false, // ItsMe
|
false, // ItsMe
|
||||||
false, // IMustFillEmail
|
false, // IMustFillInEmail
|
||||||
false); // IShouldConfirmEmail
|
false); // IShouldConfirmEmail
|
||||||
|
|
||||||
/***** End box *****/
|
/***** End box *****/
|
||||||
|
@ -1210,10 +1210,10 @@ void Mai_ShowFormChangeOtherUsrEmail (void)
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
static void Mai_ShowFormChangeUsrEmail (const struct UsrData *UsrDat,bool ItsMe,
|
static void Mai_ShowFormChangeUsrEmail (const struct UsrData *UsrDat,bool ItsMe,
|
||||||
bool IMustFillEmail,bool IShouldConfirmEmail)
|
bool IMustFillInEmail,bool IShouldConfirmEmail)
|
||||||
{
|
{
|
||||||
extern const char *The_ClassForm[The_NUM_THEMES];
|
extern const char *The_ClassForm[The_NUM_THEMES];
|
||||||
extern const char *Txt_Please_fill_in_your_email_address;
|
extern const char *Txt_Before_going_to_any_other_option_you_must_fill_in_your_email_address;
|
||||||
extern const char *Txt_Please_confirm_your_email_address;
|
extern const char *Txt_Please_confirm_your_email_address;
|
||||||
extern const char *Txt_Current_email;
|
extern const char *Txt_Current_email;
|
||||||
extern const char *Txt_Other_emails;
|
extern const char *Txt_Other_emails;
|
||||||
|
@ -1236,8 +1236,8 @@ static void Mai_ShowFormChangeUsrEmail (const struct UsrData *UsrDat,bool ItsMe,
|
||||||
Ale_ShowAlert (Gbl.Alert.Type,Gbl.Alert.Txt);
|
Ale_ShowAlert (Gbl.Alert.Type,Gbl.Alert.Txt);
|
||||||
|
|
||||||
/***** Help message *****/
|
/***** Help message *****/
|
||||||
if (IMustFillEmail)
|
if (IMustFillInEmail)
|
||||||
Ale_ShowAlert (Ale_WARNING,Txt_Please_fill_in_your_email_address);
|
Ale_ShowAlert (Ale_WARNING,Txt_Before_going_to_any_other_option_you_must_fill_in_your_email_address);
|
||||||
else if (IShouldConfirmEmail)
|
else if (IShouldConfirmEmail)
|
||||||
Ale_ShowAlert (Ale_WARNING,Txt_Please_confirm_your_email_address);
|
Ale_ShowAlert (Ale_WARNING,Txt_Please_confirm_your_email_address);
|
||||||
|
|
||||||
|
@ -1291,7 +1291,7 @@ static void Mai_ShowFormChangeUsrEmail (const struct UsrData *UsrDat,bool ItsMe,
|
||||||
|
|
||||||
/* Form to remove email */
|
/* Form to remove email */
|
||||||
if (ItsMe)
|
if (ItsMe)
|
||||||
Frm_StartFormAnchor (ActRemMaiMe,Mai_EMAIL_SECTION_ID);
|
Frm_StartFormAnchor (ActRemMyMai,Mai_EMAIL_SECTION_ID);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
switch (UsrDat->Roles.InCurrentCrs.Role)
|
switch (UsrDat->Roles.InCurrentCrs.Role)
|
||||||
|
@ -1337,7 +1337,7 @@ static void Mai_ShowFormChangeUsrEmail (const struct UsrData *UsrDat,bool ItsMe,
|
||||||
{
|
{
|
||||||
fprintf (Gbl.F.Out,"<br />");
|
fprintf (Gbl.F.Out,"<br />");
|
||||||
if (ItsMe)
|
if (ItsMe)
|
||||||
Frm_StartFormAnchor (ActNewMaiMe,Mai_EMAIL_SECTION_ID);
|
Frm_StartFormAnchor (ActChgMyMai,Mai_EMAIL_SECTION_ID);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
switch (UsrDat->Roles.InCurrentCrs.Role)
|
switch (UsrDat->Roles.InCurrentCrs.Role)
|
||||||
|
@ -1378,7 +1378,7 @@ static void Mai_ShowFormChangeUsrEmail (const struct UsrData *UsrDat,bool ItsMe,
|
||||||
NumEmails ? Txt_New_email : // A new email
|
NumEmails ? Txt_New_email : // A new email
|
||||||
Txt_Email); // The first email
|
Txt_Email); // The first email
|
||||||
if (ItsMe)
|
if (ItsMe)
|
||||||
Frm_StartFormAnchor (ActNewMaiMe,Mai_EMAIL_SECTION_ID);
|
Frm_StartFormAnchor (ActChgMyMai,Mai_EMAIL_SECTION_ID);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
switch (UsrDat->Roles.InCurrentCrs.Role)
|
switch (UsrDat->Roles.InCurrentCrs.Role)
|
||||||
|
|
|
@ -77,7 +77,7 @@ bool Mai_CheckIfEmailIsValid (const char *Email);
|
||||||
bool Mai_GetEmailFromUsrCod (struct UsrData *UsrDat);
|
bool Mai_GetEmailFromUsrCod (struct UsrData *UsrDat);
|
||||||
long Mai_GetUsrCodFromEmail (const char Email[Cns_MAX_BYTES_EMAIL_ADDRESS + 1]);
|
long Mai_GetUsrCodFromEmail (const char Email[Cns_MAX_BYTES_EMAIL_ADDRESS + 1]);
|
||||||
|
|
||||||
void Mai_ShowFormChangeMyEmail (bool IMustFillEmail,bool IShouldConfirmEmail);
|
void Mai_ShowFormChangeMyEmail (bool IMustFillInEmail,bool IShouldConfirmEmail);
|
||||||
void Mai_ShowFormChangeOtherUsrEmail (void);
|
void Mai_ShowFormChangeOtherUsrEmail (void);
|
||||||
|
|
||||||
void Mai_RemoveMyUsrEmail (void);
|
void Mai_RemoveMyUsrEmail (void);
|
||||||
|
|
|
@ -108,6 +108,7 @@ int main (void)
|
||||||
/***** Read parameters *****/
|
/***** Read parameters *****/
|
||||||
if (Par_GetQueryString ())
|
if (Par_GetQueryString ())
|
||||||
{
|
{
|
||||||
|
/***** Get parameters *****/
|
||||||
Par_CreateListOfParams ();
|
Par_CreateListOfParams ();
|
||||||
Par_GetMainParameters ();
|
Par_GetMainParameters ();
|
||||||
|
|
||||||
|
|
|
@ -300,7 +300,7 @@ static void Nck_ShowFormChangeUsrNickname (const struct UsrData *UsrDat,bool Its
|
||||||
|
|
||||||
/* Form to remove old nickname */
|
/* Form to remove old nickname */
|
||||||
if (ItsMe)
|
if (ItsMe)
|
||||||
Frm_StartFormAnchor (ActRemOldNicMe,Nck_NICKNAME_SECTION_ID);
|
Frm_StartFormAnchor (ActRemMyNck,Nck_NICKNAME_SECTION_ID);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
switch (UsrDat->Roles.InCurrentCrs.Role)
|
switch (UsrDat->Roles.InCurrentCrs.Role)
|
||||||
|
@ -338,7 +338,7 @@ static void Nck_ShowFormChangeUsrNickname (const struct UsrData *UsrDat,bool Its
|
||||||
{
|
{
|
||||||
fprintf (Gbl.F.Out,"<br />");
|
fprintf (Gbl.F.Out,"<br />");
|
||||||
if (ItsMe)
|
if (ItsMe)
|
||||||
Frm_StartFormAnchor (ActChgNicMe,Nck_NICKNAME_SECTION_ID);
|
Frm_StartFormAnchor (ActChgMyNck,Nck_NICKNAME_SECTION_ID);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
switch (UsrDat->Roles.InCurrentCrs.Role)
|
switch (UsrDat->Roles.InCurrentCrs.Role)
|
||||||
|
@ -380,7 +380,7 @@ static void Nck_ShowFormChangeUsrNickname (const struct UsrData *UsrDat,bool Its
|
||||||
NumNicks ? Txt_New_nickname : // A new nickname
|
NumNicks ? Txt_New_nickname : // A new nickname
|
||||||
Txt_Nickname); // The first nickname
|
Txt_Nickname); // The first nickname
|
||||||
if (ItsMe)
|
if (ItsMe)
|
||||||
Frm_StartFormAnchor (ActChgNicMe,Nck_NICKNAME_SECTION_ID);
|
Frm_StartFormAnchor (ActChgMyNck,Nck_NICKNAME_SECTION_ID);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
switch (UsrDat->Roles.InCurrentCrs.Role)
|
switch (UsrDat->Roles.InCurrentCrs.Role)
|
||||||
|
|
|
@ -237,7 +237,7 @@ static void Pwd_CheckAndUpdateNewPwd (struct UsrData *UsrDat)
|
||||||
NewEncryptedPassword,
|
NewEncryptedPassword,
|
||||||
UsrDat->UsrCod)) // New password is good?
|
UsrDat->UsrCod)) // New password is good?
|
||||||
{
|
{
|
||||||
/* Update user's data */
|
/* Update user's data */
|
||||||
Str_Copy (UsrDat->Password,NewEncryptedPassword,
|
Str_Copy (UsrDat->Password,NewEncryptedPassword,
|
||||||
Pwd_BYTES_ENCRYPTED_PASSWORD);
|
Pwd_BYTES_ENCRYPTED_PASSWORD);
|
||||||
Ses_UpdateSessionDataInDB ();
|
Ses_UpdateSessionDataInDB ();
|
||||||
|
@ -529,7 +529,7 @@ bool Pwd_SlowCheckIfPasswordIsGood (const char *PlainPassword,
|
||||||
{
|
{
|
||||||
Gbl.Alert.Type = Ale_WARNING;
|
Gbl.Alert.Type = Ale_WARNING;
|
||||||
Gbl.Alert.Section = Pwd_PASSWORD_SECTION_ID;
|
Gbl.Alert.Section = Pwd_PASSWORD_SECTION_ID;
|
||||||
Str_Copy (Gbl.Alert.Txt,Txt_The_password_is_too_trivial_,
|
Str_Copy (Gbl.AlertToShowLater.Txt,Txt_The_password_is_too_trivial_,
|
||||||
Ale_MAX_BYTES_ALERT);
|
Ale_MAX_BYTES_ALERT);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -540,7 +540,7 @@ bool Pwd_SlowCheckIfPasswordIsGood (const char *PlainPassword,
|
||||||
{
|
{
|
||||||
Gbl.Alert.Type = Ale_WARNING;
|
Gbl.Alert.Type = Ale_WARNING;
|
||||||
Gbl.Alert.Section = Pwd_PASSWORD_SECTION_ID;
|
Gbl.Alert.Section = Pwd_PASSWORD_SECTION_ID;
|
||||||
Str_Copy (Gbl.Alert.Txt,Txt_The_password_is_too_trivial_,
|
Str_Copy (Gbl.AlertToShowLater.Txt,Txt_The_password_is_too_trivial_,
|
||||||
Ale_MAX_BYTES_ALERT);
|
Ale_MAX_BYTES_ALERT);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -674,13 +674,14 @@ void Pwd_ShowFormChgMyPwd (void)
|
||||||
extern const char *Txt_Change_password;
|
extern const char *Txt_Change_password;
|
||||||
extern const char *Txt_Set_password;
|
extern const char *Txt_Set_password;
|
||||||
char StrRecordWidth[10 + 1];
|
char StrRecordWidth[10 + 1];
|
||||||
|
char *Txt;
|
||||||
bool IHaveAPasswordInDB = (bool) Gbl.Usrs.Me.UsrDat.Password[0];
|
bool IHaveAPasswordInDB = (bool) Gbl.Usrs.Me.UsrDat.Password[0];
|
||||||
|
|
||||||
/***** Start section *****/
|
/***** Start section *****/
|
||||||
Lay_StartSection (Pwd_PASSWORD_SECTION_ID);
|
Lay_StartSection (Pwd_PASSWORD_SECTION_ID);
|
||||||
|
|
||||||
/***** Start form *****/
|
/***** Start form *****/
|
||||||
Frm_StartFormAnchor (ActChgPwd,Pwd_PASSWORD_SECTION_ID);
|
Frm_StartFormAnchor (ActChgMyPwd,Pwd_PASSWORD_SECTION_ID);
|
||||||
|
|
||||||
/***** Start box *****/
|
/***** Start box *****/
|
||||||
snprintf (StrRecordWidth,sizeof (StrRecordWidth),
|
snprintf (StrRecordWidth,sizeof (StrRecordWidth),
|
||||||
|
@ -690,7 +691,7 @@ void Pwd_ShowFormChgMyPwd (void)
|
||||||
Hlp_PROFILE_Password,Box_NOT_CLOSABLE);
|
Hlp_PROFILE_Password,Box_NOT_CLOSABLE);
|
||||||
|
|
||||||
/***** Show possible alert *****/
|
/***** Show possible alert *****/
|
||||||
if (Gbl.Alert.Section == (const char *) Pwd_PASSWORD_SECTION_ID)
|
if (Gbl.Alert.Section == Pwd_PASSWORD_SECTION_ID)
|
||||||
Ale_ShowAlert (Gbl.Alert.Type,Gbl.Alert.Txt);
|
Ale_ShowAlert (Gbl.Alert.Type,Gbl.Alert.Txt);
|
||||||
|
|
||||||
/***** Help message *****/
|
/***** Help message *****/
|
||||||
|
@ -727,10 +728,11 @@ void Pwd_ShowFormChgMyPwd (void)
|
||||||
/***** Help message *****/
|
/***** Help message *****/
|
||||||
fprintf (Gbl.F.Out,"<tr>"
|
fprintf (Gbl.F.Out,"<tr>"
|
||||||
"<td colspan=\"2\">");
|
"<td colspan=\"2\">");
|
||||||
snprintf (Gbl.Alert.Txt,sizeof (Gbl.Alert.Txt),
|
if (asprintf (&Txt,Txt_Your_password_must_be_at_least_X_characters_and_can_not_contain_spaces_,
|
||||||
Txt_Your_password_must_be_at_least_X_characters_and_can_not_contain_spaces_,
|
Pwd_MIN_CHARS_PLAIN_PASSWORD) < 0)
|
||||||
Pwd_MIN_CHARS_PLAIN_PASSWORD);
|
Lay_NotEnoughMemoryExit ();
|
||||||
Ale_ShowAlert (Ale_INFO,Gbl.Alert.Txt);
|
Ale_ShowAlert (Ale_INFO,Txt);
|
||||||
|
free ((void *) Txt);
|
||||||
fprintf (Gbl.F.Out,"</td>"
|
fprintf (Gbl.F.Out,"</td>"
|
||||||
"</tr>");
|
"</tr>");
|
||||||
|
|
||||||
|
@ -759,23 +761,27 @@ void Pwd_PutFormToGetNewPasswordOnce (void)
|
||||||
extern const char *Txt_Password;
|
extern const char *Txt_Password;
|
||||||
extern const char *Txt_HELP_password;
|
extern const char *Txt_HELP_password;
|
||||||
|
|
||||||
snprintf (Gbl.Alert.Txt,sizeof (Gbl.Alert.Txt),
|
/***** Start form element ****/
|
||||||
Txt_HELP_password,
|
|
||||||
Pwd_MIN_CHARS_PLAIN_PASSWORD);
|
|
||||||
fprintf (Gbl.F.Out,"<tr>"
|
fprintf (Gbl.F.Out,"<tr>"
|
||||||
"<td class=\"RIGHT_MIDDLE\">"
|
"<td class=\"RIGHT_MIDDLE\">"
|
||||||
"<label for=\"Passwd\" class=\"%s\">%s:</label>"
|
"<label for=\"Passwd\" class=\"%s\">%s:</label>"
|
||||||
"</td>"
|
"</td>"
|
||||||
"<td class=\"LEFT_MIDDLE\">"
|
"<td class=\"LEFT_MIDDLE\">"
|
||||||
"<input type=\"password\" id=\"Passwd\" name=\"Paswd\""
|
"<input type=\"password\" id=\"Passwd\" name=\"Paswd\""
|
||||||
" size=\"18\" maxlength=\"%u\" placeholder=\"%s\""
|
" size=\"18\" maxlength=\"%u\" placeholder=\"",
|
||||||
" required=\"required\" />"
|
|
||||||
"</td>"
|
|
||||||
"</tr>",
|
|
||||||
The_ClassForm[Gbl.Prefs.Theme],
|
The_ClassForm[Gbl.Prefs.Theme],
|
||||||
Txt_Password,
|
Txt_Password,
|
||||||
Pwd_MAX_CHARS_PLAIN_PASSWORD,
|
Pwd_MAX_CHARS_PLAIN_PASSWORD);
|
||||||
Gbl.Alert.Txt);
|
|
||||||
|
/***** Placeholder *****/
|
||||||
|
fprintf (Gbl.F.Out,Txt_HELP_password,
|
||||||
|
Pwd_MIN_CHARS_PLAIN_PASSWORD);
|
||||||
|
|
||||||
|
/***** End form element ****/
|
||||||
|
fprintf (Gbl.F.Out,"\""
|
||||||
|
" required=\"required\" />"
|
||||||
|
"</td>"
|
||||||
|
"</tr>");
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -789,9 +795,8 @@ void Pwd_PutFormToGetNewPasswordTwice (void)
|
||||||
extern const char *Txt_HELP_password;
|
extern const char *Txt_HELP_password;
|
||||||
extern const char *Txt_Retype_new_password;
|
extern const char *Txt_Retype_new_password;
|
||||||
|
|
||||||
snprintf (Gbl.Alert.Txt,sizeof (Gbl.Alert.Txt),
|
/***** 1st password *****/
|
||||||
Txt_HELP_password,
|
/* Start form element */
|
||||||
Pwd_MIN_CHARS_PLAIN_PASSWORD);
|
|
||||||
fprintf (Gbl.F.Out,"<tr>"
|
fprintf (Gbl.F.Out,"<tr>"
|
||||||
"<td class=\"REC_C1_BOT RIGHT_MIDDLE\">"
|
"<td class=\"REC_C1_BOT RIGHT_MIDDLE\">"
|
||||||
"<label for=\"Paswd1\" class=\"%s\">%s:</label>"
|
"<label for=\"Paswd1\" class=\"%s\">%s:</label>"
|
||||||
|
@ -799,27 +804,42 @@ void Pwd_PutFormToGetNewPasswordTwice (void)
|
||||||
"<td class=\"REC_C2_BOT LEFT_MIDDLE\">"
|
"<td class=\"REC_C2_BOT LEFT_MIDDLE\">"
|
||||||
"<input type=\"password\" id=\"Paswd1\" name=\"Paswd1\""
|
"<input type=\"password\" id=\"Paswd1\" name=\"Paswd1\""
|
||||||
" size=\"18\" maxlength=\"%u\""
|
" size=\"18\" maxlength=\"%u\""
|
||||||
" placeholder=\"%s\" required=\"required\" />"
|
" placeholder=\"",
|
||||||
|
The_ClassForm[Gbl.Prefs.Theme],
|
||||||
|
Txt_New_password,
|
||||||
|
Pwd_MAX_CHARS_PLAIN_PASSWORD);
|
||||||
|
|
||||||
|
/* Placeholder */
|
||||||
|
fprintf (Gbl.F.Out,Txt_HELP_password,
|
||||||
|
Pwd_MIN_CHARS_PLAIN_PASSWORD);
|
||||||
|
|
||||||
|
/* End form element */
|
||||||
|
fprintf (Gbl.F.Out,"\" required=\"required\" />"
|
||||||
"</td>"
|
"</td>"
|
||||||
"</tr>"
|
"</tr>");
|
||||||
"<tr>"
|
|
||||||
|
/***** 2nd password *****/
|
||||||
|
/* Start form element */
|
||||||
|
fprintf (Gbl.F.Out,"<tr>"
|
||||||
"<td class=\"REC_C1_BOT RIGHT_MIDDLE\">"
|
"<td class=\"REC_C1_BOT RIGHT_MIDDLE\">"
|
||||||
"<label for=\"Paswd2\" class=\"%s\">%s:</label>"
|
"<label for=\"Paswd2\" class=\"%s\">%s:</label>"
|
||||||
"</td>"
|
"</td>"
|
||||||
"<td class=\"REC_C2_BOT LEFT_MIDDLE\">"
|
"<td class=\"REC_C2_BOT LEFT_MIDDLE\">"
|
||||||
"<input type=\"password\" id=\"Paswd2\" name=\"Paswd2\""
|
"<input type=\"password\" id=\"Paswd2\" name=\"Paswd2\""
|
||||||
" size=\"18\" maxlength=\"%u\""
|
" size=\"18\" maxlength=\"%u\""
|
||||||
" placeholder=\"%s\" required=\"required\" />"
|
" placeholder=\"",
|
||||||
"</td>"
|
|
||||||
"</tr>",
|
|
||||||
The_ClassForm[Gbl.Prefs.Theme],
|
|
||||||
Txt_New_password,
|
|
||||||
Pwd_MAX_CHARS_PLAIN_PASSWORD,
|
|
||||||
Gbl.Alert.Txt,
|
|
||||||
The_ClassForm[Gbl.Prefs.Theme],
|
The_ClassForm[Gbl.Prefs.Theme],
|
||||||
Txt_Retype_new_password,
|
Txt_Retype_new_password,
|
||||||
Pwd_MAX_CHARS_PLAIN_PASSWORD,
|
Pwd_MAX_CHARS_PLAIN_PASSWORD);
|
||||||
Gbl.Alert.Txt);
|
|
||||||
|
/* Placeholder */
|
||||||
|
fprintf (Gbl.F.Out,Txt_HELP_password,
|
||||||
|
Pwd_MIN_CHARS_PLAIN_PASSWORD);
|
||||||
|
|
||||||
|
/* End form element */
|
||||||
|
fprintf (Gbl.F.Out,"\" required=\"required\" />"
|
||||||
|
"</td>"
|
||||||
|
"</tr>");
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
94
swad_tab.c
94
swad_tab.c
|
@ -73,10 +73,6 @@ const char *Tab_TabIcons[Tab_NUM_TABS] =
|
||||||
static bool Tab_CheckIfICanViewTab (Tab_Tab_t Tab);
|
static bool Tab_CheckIfICanViewTab (Tab_Tab_t Tab);
|
||||||
static const char *Tab_GetIcon (Tab_Tab_t Tab);
|
static const char *Tab_GetIcon (Tab_Tab_t Tab);
|
||||||
|
|
||||||
static void Tab_WriteBreadcrumbHome (void);
|
|
||||||
static void Tab_WriteBreadcrumbTab (void);
|
|
||||||
static void Tab_WriteBreadcrumbAction (void);
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/**************** Draw tabs with the current tab highlighted *****************/
|
/**************** Draw tabs with the current tab highlighted *****************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -211,96 +207,6 @@ static const char *Tab_GetIcon (Tab_Tab_t NumTab)
|
||||||
return Ico_GetIcon (Tab_TabIcons[NumTab]);
|
return Ico_GetIcon (Tab_TabIcons[NumTab]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
|
||||||
/********************* Draw breadcrumb with tab and action *******************/
|
|
||||||
/*****************************************************************************/
|
|
||||||
|
|
||||||
void Tab_DrawBreadcrumb (void)
|
|
||||||
{
|
|
||||||
extern const char *The_TabOnBgColors[The_NUM_THEMES];
|
|
||||||
extern const char *The_ClassTxtTabOn[The_NUM_THEMES];
|
|
||||||
signed int IndexInMenu;
|
|
||||||
|
|
||||||
fprintf (Gbl.F.Out,"<div id=\"breadcrumb_container\" class=\"%s\">",
|
|
||||||
The_TabOnBgColors[Gbl.Prefs.Theme]);
|
|
||||||
|
|
||||||
/***** Home *****/
|
|
||||||
Tab_WriteBreadcrumbHome ();
|
|
||||||
|
|
||||||
IndexInMenu = Act_GetIndexInMenu (Gbl.Action.Act);
|
|
||||||
if (Gbl.Action.Act == ActMnu || IndexInMenu >= 0)
|
|
||||||
{
|
|
||||||
/***** Tab *****/
|
|
||||||
fprintf (Gbl.F.Out,"<span class=\"%s\"> > </span>",
|
|
||||||
The_ClassTxtTabOn[Gbl.Prefs.Theme]);
|
|
||||||
Tab_WriteBreadcrumbTab ();
|
|
||||||
|
|
||||||
if (IndexInMenu >= 0)
|
|
||||||
{
|
|
||||||
/***** Menu *****/
|
|
||||||
fprintf (Gbl.F.Out,"<span class=\"%s\"> > </span>",
|
|
||||||
The_ClassTxtTabOn[Gbl.Prefs.Theme]);
|
|
||||||
Tab_WriteBreadcrumbAction ();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fprintf (Gbl.F.Out,"</div>");
|
|
||||||
}
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
|
||||||
/************************ Write home in breadcrumb ***************************/
|
|
||||||
/*****************************************************************************/
|
|
||||||
|
|
||||||
static void Tab_WriteBreadcrumbHome (void)
|
|
||||||
{
|
|
||||||
extern const char *The_ClassTxtTabOn[The_NUM_THEMES];
|
|
||||||
extern const char *Txt_Home_PAGE;
|
|
||||||
|
|
||||||
Frm_StartForm (ActHom);
|
|
||||||
Frm_LinkFormSubmit (Txt_Home_PAGE,The_ClassTxtTabOn[Gbl.Prefs.Theme],NULL);
|
|
||||||
fprintf (Gbl.F.Out,"%s</a>",
|
|
||||||
Txt_Home_PAGE);
|
|
||||||
Frm_EndForm ();
|
|
||||||
}
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
|
||||||
/************ Write icon and title associated to the current tab *************/
|
|
||||||
/*****************************************************************************/
|
|
||||||
|
|
||||||
static void Tab_WriteBreadcrumbTab (void)
|
|
||||||
{
|
|
||||||
extern const char *The_ClassTxtTabOn[The_NUM_THEMES];
|
|
||||||
extern const char *Txt_TABS_TXT[Tab_NUM_TABS];
|
|
||||||
|
|
||||||
/***** Start form *****/
|
|
||||||
Frm_StartForm (ActMnu);
|
|
||||||
Par_PutHiddenParamUnsigned ("NxtTab",(unsigned) Gbl.Action.Tab);
|
|
||||||
Frm_LinkFormSubmit (Txt_TABS_TXT[Gbl.Action.Tab],The_ClassTxtTabOn[Gbl.Prefs.Theme],NULL);
|
|
||||||
|
|
||||||
/***** Title and end form *****/
|
|
||||||
fprintf (Gbl.F.Out,"%s</a>",Txt_TABS_TXT[Gbl.Action.Tab]);
|
|
||||||
Frm_EndForm ();
|
|
||||||
}
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
|
||||||
/***************** Write title associated to the current action **************/
|
|
||||||
/*****************************************************************************/
|
|
||||||
|
|
||||||
static void Tab_WriteBreadcrumbAction (void)
|
|
||||||
{
|
|
||||||
extern const char *The_ClassTxtTabOn[The_NUM_THEMES];
|
|
||||||
const char *Title = Act_GetTitleAction (Gbl.Action.Act);
|
|
||||||
|
|
||||||
/***** Start form *****/
|
|
||||||
Frm_StartForm (Act_GetSuperAction (Gbl.Action.Act));
|
|
||||||
Frm_LinkFormSubmit (Title,The_ClassTxtTabOn[Gbl.Prefs.Theme],NULL);
|
|
||||||
|
|
||||||
/***** Title and end form *****/
|
|
||||||
fprintf (Gbl.F.Out,"%s</a>",
|
|
||||||
Title);
|
|
||||||
Frm_EndForm ();
|
|
||||||
}
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/*************** Set current tab depending on current action *****************/
|
/*************** Set current tab depending on current action *****************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
|
@ -60,7 +60,6 @@ typedef enum
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
void Tab_DrawTabs (void);
|
void Tab_DrawTabs (void);
|
||||||
void Tab_DrawBreadcrumb (void);
|
|
||||||
|
|
||||||
void Tab_SetCurrentTab (void);
|
void Tab_SetCurrentTab (void);
|
||||||
void Tab_DisableIncompatibleTabs (void);
|
void Tab_DisableIncompatibleTabs (void);
|
||||||
|
|
57
swad_text.c
57
swad_text.c
|
@ -2841,7 +2841,7 @@ const char *Txt_Before_going_to_any_other_option_you_must_fill_your_nickname =
|
||||||
" müssen Sie Ihr Benutzernamen erstellen.";
|
" müssen Sie Ihr Benutzernamen erstellen.";
|
||||||
#elif L==3 // en
|
#elif L==3 // en
|
||||||
"Before going to any other option"
|
"Before going to any other option"
|
||||||
" you must fill your nickname.";
|
" you must create your nickname.";
|
||||||
#elif L==4 // es
|
#elif L==4 // es
|
||||||
"Antes de acceder a cualquier otra opción"
|
"Antes de acceder a cualquier otra opción"
|
||||||
" debe crear su apodo.";
|
" debe crear su apodo.";
|
||||||
|
@ -2885,13 +2885,43 @@ const char *Txt_Before_going_to_any_other_option_you_must_create_your_password =
|
||||||
"Prima di scegliere qualsiasi altra opzione"
|
"Prima di scegliere qualsiasi altra opzione"
|
||||||
" devi creare una password.";
|
" devi creare una password.";
|
||||||
#elif L==8 // pl
|
#elif L==8 // pl
|
||||||
"Przed pójsciem do jakiejkolwiek"
|
"Przed pójsciem do jakiejkolwiek innej opcji"
|
||||||
" innej opcji nalezy utworzyć hasło.";
|
" nalezy utworzyć hasło.";
|
||||||
#elif L==9 // pt
|
#elif L==9 // pt
|
||||||
"Antes de ir para qualquer outra opção"
|
"Antes de ir para qualquer outra opção"
|
||||||
"você deve criar sua senha.";
|
"você deve criar sua senha.";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
const char *Txt_Before_going_to_any_other_option_you_must_fill_in_your_email_address =
|
||||||
|
#if L==1 // ca
|
||||||
|
"Abans d'accedir a qualsevol altra opció"
|
||||||
|
" ha de omplir la seva adreça de correu.";
|
||||||
|
#elif L==2 // de
|
||||||
|
"Bevor ich auf jede andere Option"
|
||||||
|
" müssen Sie Ihr E-Mail-Adresse ausfüllen.";
|
||||||
|
#elif L==3 // en
|
||||||
|
"Before going to any other option"
|
||||||
|
" you must fill in your email address.";
|
||||||
|
#elif L==4 // es
|
||||||
|
"Antes de acceder a cualquier otra opción"
|
||||||
|
" debe rellenar su dirección de correo.";
|
||||||
|
#elif L==5 // fr
|
||||||
|
"Avant d'aller à une autre option"
|
||||||
|
" vous devez indiquer votre adresse email.";
|
||||||
|
#elif L==6 // gn
|
||||||
|
"Antes de acceder a cualquier otra opción"
|
||||||
|
" debe rellenar su dirección de correo."; // Okoteve traducción
|
||||||
|
#elif L==7 // it
|
||||||
|
"Prima di scegliere qualsiasi altra opzione"
|
||||||
|
" devi inserire il tuo indirizzo email.";
|
||||||
|
#elif L==8 // pl
|
||||||
|
"Przed pójsciem do jakiejkolwiek innej opcji"
|
||||||
|
" wypełnić swój adres e-mail.";
|
||||||
|
#elif L==9 // pt
|
||||||
|
"Antes de ir para qualquer outra opção"
|
||||||
|
"você deve preencher seu endereço de email.";
|
||||||
|
#endif
|
||||||
|
|
||||||
const char *Txt_Briefcase_of_THE_USER_X_has_been_removed = // Warning: it is very important to include %s in the following sentences
|
const char *Txt_Briefcase_of_THE_USER_X_has_been_removed = // Warning: it is very important to include %s in the following sentences
|
||||||
#if L==1 // ca
|
#if L==1 // ca
|
||||||
"Se ha eliminado el maletín de <strong>%s</strong>."; // Necessita traduccio
|
"Se ha eliminado el maletín de <strong>%s</strong>."; // Necessita traduccio
|
||||||
|
@ -28675,27 +28705,6 @@ const char *Txt_Please_fill_in_your_department =
|
||||||
"Por favor, preencha o seu departamento.";
|
"Por favor, preencha o seu departamento.";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *Txt_Please_fill_in_your_email_address =
|
|
||||||
#if L==1 // ca
|
|
||||||
"Si us plau, ompli la seva adreça de correu.";
|
|
||||||
#elif L==2 // de
|
|
||||||
"Bitte geben Sie Ihre E-Mail-Adresse ein.";
|
|
||||||
#elif L==3 // en
|
|
||||||
"Please fill in your email address.";
|
|
||||||
#elif L==4 // es
|
|
||||||
"Por favor, rellene su dirección de correo.";
|
|
||||||
#elif L==5 // fr
|
|
||||||
"S'il vous plaít, indiquez votre adresse email.";
|
|
||||||
#elif L==6 // gn
|
|
||||||
"Por favor, rellene su dirección de correo."; // Okoteve traducción
|
|
||||||
#elif L==7 // it
|
|
||||||
"Per favore, inserisci il tuo indirizzo email.";
|
|
||||||
#elif L==8 // pl
|
|
||||||
"Proszę, wpisz swoje w tym adresu email.";
|
|
||||||
#elif L==9 // pt
|
|
||||||
"Por favor, preencha o seu endereço de email.";
|
|
||||||
#endif
|
|
||||||
|
|
||||||
const char *Txt_Please_fill_in_your_ID =
|
const char *Txt_Please_fill_in_your_ID =
|
||||||
#if L==1 // ca
|
#if L==1 // ca
|
||||||
"Si us plau, ompli el seu ID (DNI/cèdula)."
|
"Si us plau, ompli el seu ID (DNI/cèdula)."
|
||||||
|
|
Loading…
Reference in New Issue
Block a user