Version 18.5.3

This commit is contained in:
Antonio Cañas Vargas 2018-10-16 15:16:32 +02:00
parent 608c9d76e1
commit 863b6e3677
25 changed files with 172 additions and 143 deletions

View File

@ -816,15 +816,16 @@ static void ID_RemoveUsrID (const struct UsrData *UsrDat,bool ItsMe)
{ {
Gbl.Alert.Type = Ale_WARNING; Gbl.Alert.Type = Ale_WARNING;
Gbl.Alert.Section = ID_ID_SECTION_ID; Gbl.Alert.Section = ID_ID_SECTION_ID;
sprintf (Gbl.Alert.Txt,"%s",Txt_You_can_not_delete_this_ID); Str_Copy (Gbl.Alert.Txt,Txt_You_can_not_delete_this_ID,
Ale_MAX_BYTES_ALERT);
} }
} }
else else
{ {
Gbl.Alert.Type = Ale_WARNING; Gbl.Alert.Type = Ale_WARNING;
Gbl.Alert.Section = ID_ID_SECTION_ID; Gbl.Alert.Section = ID_ID_SECTION_ID;
sprintf (Gbl.Alert.Txt,"%s", Str_Copy (Gbl.Alert.Txt,Txt_User_not_found_or_you_do_not_have_permission_,
Txt_User_not_found_or_you_do_not_have_permission_); Ale_MAX_BYTES_ALERT);
} }
} }
@ -994,8 +995,8 @@ static void ID_NewUsrID (const struct UsrData *UsrDat,bool ItsMe)
{ {
Gbl.Alert.Type = Ale_WARNING; Gbl.Alert.Type = Ale_WARNING;
Gbl.Alert.Section = ID_ID_SECTION_ID; Gbl.Alert.Section = ID_ID_SECTION_ID;
sprintf (Gbl.Alert.Txt,"%s", Str_Copy (Gbl.Alert.Txt,Txt_User_not_found_or_you_do_not_have_permission_,
Txt_User_not_found_or_you_do_not_have_permission_); Ale_MAX_BYTES_ALERT);
} }
} }
@ -1094,16 +1095,16 @@ void ID_ConfirmOtherUsrID (void)
{ {
Gbl.Alert.Type = Ale_WARNING; Gbl.Alert.Type = Ale_WARNING;
Gbl.Alert.Section = ID_ID_SECTION_ID; Gbl.Alert.Section = ID_ID_SECTION_ID;
sprintf (Gbl.Alert.Txt,"%s", Str_Copy (Gbl.Alert.Txt,Txt_User_not_found_or_you_do_not_have_permission_,
Txt_User_not_found_or_you_do_not_have_permission_); Ale_MAX_BYTES_ALERT);
} }
} }
else // I can not confirm else // I can not confirm
{ {
Gbl.Alert.Type = Ale_WARNING; Gbl.Alert.Type = Ale_WARNING;
Gbl.Alert.Section = ID_ID_SECTION_ID; Gbl.Alert.Section = ID_ID_SECTION_ID;
sprintf (Gbl.Alert.Txt,"%s", Str_Copy (Gbl.Alert.Txt,Txt_User_not_found_or_you_do_not_have_permission_,
Txt_User_not_found_or_you_do_not_have_permission_); Ale_MAX_BYTES_ALERT);
} }
/***** Show one or multiple records *****/ /***** Show one or multiple records *****/

View File

@ -1892,7 +1892,8 @@ void Ctr_ChangeCtrPlc (void)
/***** Write message to show the change made /***** Write message to show the change made
and put button to go to centre changed *****/ and put button to go to centre changed *****/
Gbl.Alert.Type = Ale_SUCCESS; Gbl.Alert.Type = Ale_SUCCESS;
sprintf (Gbl.Alert.Txt,"%s",Txt_The_place_of_the_centre_has_changed); Str_Copy (Gbl.Alert.Txt,Txt_The_place_of_the_centre_has_changed,
Ale_MAX_BYTES_ALERT);
Ctr_ShowAlertAndButtonToGoToCtr (); Ctr_ShowAlertAndButtonToGoToCtr ();
/***** Show the form again *****/ /***** Show the form again *****/
@ -2769,16 +2770,10 @@ static void Ctr_RecFormRequestOrCreateCtr (unsigned Status)
Ctr_CreateCentre (Status); Ctr_CreateCentre (Status);
} }
else // If there is not a web else // If there is not a web
{ Ale_ShowAlert (Ale_WARNING,Txt_You_must_specify_the_web_address_of_the_new_centre);
sprintf (Gbl.Alert.Txt,"%s",Txt_You_must_specify_the_web_address_of_the_new_centre);
Ale_ShowAlert (Ale_WARNING,Gbl.Alert.Txt);
}
} }
else // If there is not a centre name else // If there is not a centre name
{ Ale_ShowAlert (Ale_WARNING,Txt_You_must_specify_the_short_name_and_the_full_name_of_the_new_centre);
sprintf (Gbl.Alert.Txt,"%s",Txt_You_must_specify_the_short_name_and_the_full_name_of_the_new_centre);
Ale_ShowAlert (Ale_WARNING,Gbl.Alert.Txt);
}
/***** Show the form again *****/ /***** Show the form again *****/
Ctr_EditCentres (); Ctr_EditCentres ();

View File

@ -355,10 +355,11 @@ En OpenSWAD:
ps2pdf source.ps destination.pdf ps2pdf source.ps destination.pdf
*/ */
#define Log_PLATFORM_VERSION "SWAD 18.5.2 (2018-10-16)" #define Log_PLATFORM_VERSION "SWAD 18.5.3 (2018-10-16)"
#define CSS_FILE "swad18.4.css" #define CSS_FILE "swad18.4.css"
#define JS_FILE "swad17.17.1.js" #define JS_FILE "swad17.17.1.js"
/* /*
Version 18.5.3: Oct 16, 2018 sprintf changed by safe string copy in some alerts. (235198 lines)
Version 18.5.2: Oct 16, 2018 Code refactoring related to password change. (235170 lines) Version 18.5.2: Oct 16, 2018 Code refactoring related to password change. (235170 lines)
Version 18.5.1: Oct 16, 2018 Code refactoring related to edition of another user's account. (235212 lines) Version 18.5.1: Oct 16, 2018 Code refactoring related to edition of another user's account. (235212 lines)
Version 18.5: Oct 16, 2018 Changes in management of other users. (235292 lines) Version 18.5: Oct 16, 2018 Changes in management of other users. (235292 lines)

View File

@ -1880,7 +1880,8 @@ static void Crs_RecFormRequestOrCreateCrs (unsigned Status)
else // If there is not a course name else // If there is not a course name
{ {
Gbl.Alert.Type = Ale_WARNING; Gbl.Alert.Type = Ale_WARNING;
sprintf (Gbl.Alert.Txt,"%s",Txt_You_must_specify_the_short_name_and_the_full_name_of_the_new_course); Str_Copy (Gbl.Alert.Txt,Txt_You_must_specify_the_short_name_and_the_full_name_of_the_new_course,
Ale_MAX_BYTES_ALERT);
} }
} }
else // Year not valid else // Year not valid
@ -2343,7 +2344,8 @@ void Crs_ChangeInsCrsCod (void)
else else
{ {
Gbl.Alert.Type = Ale_WARNING; Gbl.Alert.Type = Ale_WARNING;
sprintf (Gbl.Alert.Txt,"%s",Txt_You_dont_have_permission_to_edit_this_course); Str_Copy (Gbl.Alert.Txt,Txt_You_dont_have_permission_to_edit_this_course,
Ale_MAX_BYTES_ALERT);
} }
} }
@ -2547,7 +2549,8 @@ void Crs_ChangeCrsYear (void)
else else
{ {
Gbl.Alert.Type = Ale_WARNING; Gbl.Alert.Type = Ale_WARNING;
sprintf (Gbl.Alert.Txt,"%s",Txt_You_dont_have_permission_to_edit_this_course); Str_Copy (Gbl.Alert.Txt,Txt_You_dont_have_permission_to_edit_this_course,
Ale_MAX_BYTES_ALERT);
} }
} }
@ -2704,7 +2707,8 @@ static void Crs_RenameCourse (struct Course *Crs,Cns_ShrtOrFullName_t ShrtOrFull
else else
{ {
Gbl.Alert.Type = Ale_WARNING; Gbl.Alert.Type = Ale_WARNING;
sprintf (Gbl.Alert.Txt,"%s",Txt_You_dont_have_permission_to_edit_this_course); Str_Copy (Gbl.Alert.Txt,Txt_You_dont_have_permission_to_edit_this_course,
Ale_MAX_BYTES_ALERT);
} }
} }

View File

@ -1574,16 +1574,10 @@ static void Deg_RecFormRequestOrCreateDeg (unsigned Status)
Deg_CreateDegree (Status); Deg_CreateDegree (Status);
} }
else // If there is not a degree logo or web else // If there is not a degree logo or web
{ Ale_ShowAlert (Ale_WARNING,Txt_You_must_specify_the_web_address_of_the_new_degree);
sprintf (Gbl.Alert.Txt,"%s",Txt_You_must_specify_the_web_address_of_the_new_degree);
Ale_ShowAlert (Ale_WARNING,Gbl.Alert.Txt);
}
} }
else // If there is not a degree name else // If there is not a degree name
{ Ale_ShowAlert (Ale_WARNING,Txt_You_must_specify_the_short_name_and_the_full_name_of_the_new_degree);
sprintf (Gbl.Alert.Txt,"%s",Txt_You_must_specify_the_short_name_and_the_full_name_of_the_new_degree);
Ale_ShowAlert (Ale_WARNING,Gbl.Alert.Txt);
}
/***** Show the form again *****/ /***** Show the form again *****/
Deg_EditDegrees (); Deg_EditDegrees ();

View File

@ -728,10 +728,7 @@ void DT_RecFormNewDegreeType (void)
DT_CreateDegreeType (DegTyp); DT_CreateDegreeType (DegTyp);
} }
else // If there is not a degree type name else // If there is not a degree type name
{ Ale_ShowAlert (Ale_WARNING,Txt_You_must_specify_the_name_of_the_new_type_of_degree);
sprintf (Gbl.Alert.Txt,"%s",Txt_You_must_specify_the_name_of_the_new_type_of_degree);
Ale_ShowAlert (Ale_WARNING,Gbl.Alert.Txt);
}
/***** Show the form again *****/ /***** Show the form again *****/
DT_EditDegreeTypes (); DT_EditDegreeTypes ();

View File

@ -837,10 +837,7 @@ void Dpt_ChangeDptWWW (void)
Ale_ShowAlert (Ale_SUCCESS,Gbl.Alert.Txt); Ale_ShowAlert (Ale_SUCCESS,Gbl.Alert.Txt);
} }
else else
{ Ale_ShowAlert (Ale_WARNING,Txt_You_can_not_leave_the_web_address_empty);
sprintf (Gbl.Alert.Txt,"%s",Txt_You_can_not_leave_the_web_address_empty);
Ale_ShowAlert (Ale_WARNING,Gbl.Alert.Txt);
}
/***** Show the form again *****/ /***** Show the form again *****/
Str_Copy (Dpt->WWW,NewWWW, Str_Copy (Dpt->WWW,NewWWW,
@ -1038,16 +1035,10 @@ void Dpt_RecFormNewDpt (void)
Dpt_CreateDepartment (Dpt); Dpt_CreateDepartment (Dpt);
} }
else // If there is not a web else // If there is not a web
{ Ale_ShowAlert (Ale_WARNING,Txt_You_must_specify_the_web_address_of_the_new_department);
sprintf (Gbl.Alert.Txt,"%s",Txt_You_must_specify_the_web_address_of_the_new_department);
Ale_ShowAlert (Ale_WARNING,Gbl.Alert.Txt);
}
} }
else // If there is not a department name else // If there is not a department name
{ Ale_ShowAlert (Ale_WARNING,Txt_You_must_specify_the_short_name_and_the_full_name_of_the_new_department);
sprintf (Gbl.Alert.Txt,"%s",Txt_You_must_specify_the_short_name_and_the_full_name_of_the_new_department);
Ale_ShowAlert (Ale_WARNING,Gbl.Alert.Txt);
}
/***** Show the form again *****/ /***** Show the form again *****/
Dpt_EditDepartments (); Dpt_EditDepartments ();

View File

@ -3486,13 +3486,15 @@ void Enr_RemUsrFromCrs1 (void)
else else
{ {
Gbl.Alert.Type = Ale_WARNING; Gbl.Alert.Type = Ale_WARNING;
sprintf (Gbl.Alert.Txt,"%s",Txt_User_not_found_or_you_do_not_have_permission_); Str_Copy (Gbl.Alert.Txt,Txt_User_not_found_or_you_do_not_have_permission_,
Ale_MAX_BYTES_ALERT);
} }
} }
else else
{ {
Gbl.Alert.Type = Ale_WARNING; Gbl.Alert.Type = Ale_WARNING;
sprintf (Gbl.Alert.Txt,"%s",Txt_User_not_found_or_you_do_not_have_permission_); Str_Copy (Gbl.Alert.Txt,Txt_User_not_found_or_you_do_not_have_permission_,
Ale_MAX_BYTES_ALERT);
} }
} }
} }
@ -4222,7 +4224,8 @@ static void Enr_EffectivelyRemUsrFromCrs (struct UsrData *UsrDat,struct Course *
if (QuietOrVerbose == Cns_VERBOSE) if (QuietOrVerbose == Cns_VERBOSE)
{ {
Gbl.Alert.Type = Ale_WARNING; Gbl.Alert.Type = Ale_WARNING;
sprintf (Gbl.Alert.Txt,"%s",Txt_User_not_found_or_you_do_not_have_permission_); Str_Copy (Gbl.Alert.Txt,Txt_User_not_found_or_you_do_not_have_permission_,
Ale_MAX_BYTES_ALERT);
} }
} }

View File

@ -9291,8 +9291,10 @@ void Brw_RcvFileInFileBrwDropzone (void)
void Brw_RcvFileInFileBrwClassic (void) void Brw_RcvFileInFileBrwClassic (void)
{ {
/***** Receive file and show feedback message *****/ /***** Receive file and show feedback message *****/
if (!Brw_RcvFileInFileBrw (Brw_CLASSIC_UPLOAD)) Brw_RcvFileInFileBrw (Brw_CLASSIC_UPLOAD);
Ale_ShowAlert (Ale_WARNING,Gbl.Alert.Txt);
/***** Show possible alert *****/
Ale_ShowPendingAlert ();
/***** Show again file browser *****/ /***** Show again file browser *****/
Brw_ShowAgainFileBrowserOrWorks (); Brw_ShowAgainFileBrowserOrWorks ();
@ -9363,6 +9365,7 @@ static bool Brw_RcvFileInFileBrw (Brw_UploadType_t UploadType)
/* Check if the destination file exists */ /* Check if the destination file exists */
if (Fil_CheckIfPathExists (Path)) if (Fil_CheckIfPathExists (Path))
{ {
Gbl.Alert.Type = Ale_WARNING;
sprintf (Gbl.Alert.Txt,Txt_UPLOAD_FILE_X_file_already_exists_NO_HTML, sprintf (Gbl.Alert.Txt,Txt_UPLOAD_FILE_X_file_already_exists_NO_HTML,
Gbl.FileBrowser.NewFilFolLnkName); Gbl.FileBrowser.NewFilFolLnkName);
} }
@ -9384,6 +9387,7 @@ static bool Brw_RcvFileInFileBrw (Brw_UploadType_t UploadType)
if (rename (PathTmp,Path)) // Fail if (rename (PathTmp,Path)) // Fail
{ {
Fil_RemoveTree (PathTmp); Fil_RemoveTree (PathTmp);
Gbl.Alert.Type = Ale_WARNING;
sprintf (Gbl.Alert.Txt,Txt_UPLOAD_FILE_could_not_create_file_NO_HTML, sprintf (Gbl.Alert.Txt,Txt_UPLOAD_FILE_could_not_create_file_NO_HTML,
Gbl.FileBrowser.NewFilFolLnkName); Gbl.FileBrowser.NewFilFolLnkName);
} }
@ -9395,6 +9399,7 @@ static bool Brw_RcvFileInFileBrw (Brw_UploadType_t UploadType)
if (Brw_CheckIfQuotaExceded ()) if (Brw_CheckIfQuotaExceded ())
{ {
Fil_RemoveTree (Path); Fil_RemoveTree (Path);
Gbl.Alert.Type = Ale_WARNING;
sprintf (Gbl.Alert.Txt,Txt_UPLOAD_FILE_X_quota_exceeded_NO_HTML, sprintf (Gbl.Alert.Txt,Txt_UPLOAD_FILE_X_quota_exceeded_NO_HTML,
Gbl.FileBrowser.NewFilFolLnkName); Gbl.FileBrowser.NewFilFolLnkName);
} }
@ -9423,10 +9428,10 @@ static bool Brw_RcvFileInFileBrw (Brw_UploadType_t UploadType)
Brw_IS_FOLDER, Brw_IS_FOLDER,
Gbl.FileBrowser.FilFolLnkName, Gbl.FileBrowser.FilFolLnkName,
FileNameToShow); FileNameToShow);
Gbl.Alert.Type = Ale_SUCCESS;
sprintf (Gbl.Alert.Txt,Txt_The_file_X_has_been_placed_inside_the_folder_Y, sprintf (Gbl.Alert.Txt,Txt_The_file_X_has_been_placed_inside_the_folder_Y,
Gbl.FileBrowser.NewFilFolLnkName, Gbl.FileBrowser.NewFilFolLnkName,
FileNameToShow); FileNameToShow);
Ale_ShowAlert (Ale_SUCCESS,Gbl.Alert.Txt);
} }
UploadSucessful = true; UploadSucessful = true;
@ -9470,10 +9475,18 @@ static bool Brw_RcvFileInFileBrw (Brw_UploadType_t UploadType)
} }
} }
else // Empty filename else // Empty filename
sprintf (Gbl.Alert.Txt,"%s",Txt_UPLOAD_FILE_You_must_specify_the_file_NO_HTML); {
Gbl.Alert.Type = Ale_WARNING;
Str_Copy (Gbl.Alert.Txt,Txt_UPLOAD_FILE_You_must_specify_the_file_NO_HTML,
Ale_MAX_BYTES_ALERT);
}
} }
else // I do not have permission to create files here else // I do not have permission to create files here
sprintf (Gbl.Alert.Txt,"%s",Txt_UPLOAD_FILE_Forbidden_NO_HTML); {
Gbl.Alert.Type = Ale_WARNING;
Str_Copy (Gbl.Alert.Txt,Txt_UPLOAD_FILE_Forbidden_NO_HTML,
Ale_MAX_BYTES_ALERT);
}
return UploadSucessful; return UploadSucessful;
} }

View File

@ -1045,7 +1045,8 @@ void Fol_FollowUsr1 (void)
else else
{ {
Gbl.Alert.Type = Ale_WARNING; Gbl.Alert.Type = Ale_WARNING;
sprintf (Gbl.Alert.Txt,"%s",Txt_User_not_found_or_you_do_not_have_permission_); Str_Copy (Gbl.Alert.Txt,Txt_User_not_found_or_you_do_not_have_permission_,
Ale_MAX_BYTES_ALERT);
} }
} }
@ -1058,7 +1059,8 @@ void Fol_FollowUsr2 (void)
if (!Prf_ShowUserProfile (&Gbl.Usrs.Other.UsrDat)) if (!Prf_ShowUserProfile (&Gbl.Usrs.Other.UsrDat))
{ {
Gbl.Alert.Type = Ale_WARNING; Gbl.Alert.Type = Ale_WARNING;
sprintf (Gbl.Alert.Txt,"%s",Txt_User_not_found_or_you_do_not_have_permission_); Str_Copy (Gbl.Alert.Txt,Txt_User_not_found_or_you_do_not_have_permission_,
Ale_MAX_BYTES_ALERT);
} }
if (Gbl.Alert.Type != Ale_SUCCESS) if (Gbl.Alert.Type != Ale_SUCCESS)
@ -1093,7 +1095,8 @@ void Fol_UnfollowUsr1 (void)
else else
{ {
Gbl.Alert.Type = Ale_WARNING; Gbl.Alert.Type = Ale_WARNING;
sprintf (Gbl.Alert.Txt,"%s",Txt_User_not_found_or_you_do_not_have_permission_); Str_Copy (Gbl.Alert.Txt,Txt_User_not_found_or_you_do_not_have_permission_,
Ale_MAX_BYTES_ALERT);
} }
} }

View File

@ -4165,8 +4165,8 @@ void For_RequestRemoveThread (void)
sprintf (Gbl.Alert.Txt,Txt_Do_you_really_want_to_remove_the_entire_thread_X, sprintf (Gbl.Alert.Txt,Txt_Do_you_really_want_to_remove_the_entire_thread_X,
Subject); Subject);
else else
sprintf (Gbl.Alert.Txt,"%s", Str_Copy (Gbl.Alert.Txt,Txt_Do_you_really_want_to_remove_the_entire_thread,
Txt_Do_you_really_want_to_remove_the_entire_thread); Ale_MAX_BYTES_ALERT);
Ale_ShowAlertAndButton (Ale_QUESTION,Gbl.Alert.Txt, Ale_ShowAlertAndButton (Ale_QUESTION,Gbl.Alert.Txt,
For_ActionsDelThrFor[Gbl.Forum.ForumSelected.Type], For_ActionsDelThrFor[Gbl.Forum.ForumSelected.Type],
For_FORUM_THREADS_SECTION_ID,NULL, For_FORUM_THREADS_SECTION_ID,NULL,

View File

@ -3327,8 +3327,7 @@ void Gam_RemoveQst (void)
DB_QueryUPDATE (Query,"can not update indexes of questions"); DB_QueryUPDATE (Query,"can not update indexes of questions");
/***** Write message *****/ /***** Write message *****/
sprintf (Gbl.Alert.Txt,"%s",Txt_Question_removed); Ale_ShowAlert (Ale_SUCCESS,Txt_Question_removed);
Ale_ShowAlert (Ale_SUCCESS,Gbl.Alert.Txt);
/***** Show current game *****/ /***** Show current game *****/
Gam_ShowOneGame (Game.GamCod, Gam_ShowOneGame (Game.GamCod,

View File

@ -671,19 +671,22 @@ void Grp_ChangeMyGrps (Cns_QuietOrVerbose_t QuietOrVerbose)
if (ChangesMade) if (ChangesMade)
{ {
Gbl.Alert.Type = Ale_SUCCESS; Gbl.Alert.Type = Ale_SUCCESS;
sprintf (Gbl.Alert.Txt,"%s",Txt_The_requested_group_changes_were_successful); Str_Copy (Gbl.Alert.Txt,Txt_The_requested_group_changes_were_successful,
Ale_MAX_BYTES_ALERT);
} }
else else
{ {
Gbl.Alert.Type = Ale_WARNING; Gbl.Alert.Type = Ale_WARNING;
sprintf (Gbl.Alert.Txt,"%s",Txt_There_has_been_no_change_in_groups); Str_Copy (Gbl.Alert.Txt,Txt_There_has_been_no_change_in_groups,
Ale_MAX_BYTES_ALERT);
} }
} }
} }
else if (QuietOrVerbose == Cns_VERBOSE) else if (QuietOrVerbose == Cns_VERBOSE)
{ {
Gbl.Alert.Type = Ale_WARNING; Gbl.Alert.Type = Ale_WARNING;
sprintf (Gbl.Alert.Txt,"%s",Txt_In_a_type_of_group_with_single_enrolment_students_can_not_be_registered_in_more_than_one_group); Str_Copy (Gbl.Alert.Txt,Txt_In_a_type_of_group_with_single_enrolment_students_can_not_be_registered_in_more_than_one_group,
Ale_MAX_BYTES_ALERT);
} }
/***** Free memory with the list of groups which I want to belong to *****/ /***** Free memory with the list of groups which I want to belong to *****/
@ -3690,7 +3693,8 @@ void Grp_RecFormNewGrpTyp (void)
else // If there is not a group type name else // If there is not a group type name
{ {
AlertType = Ale_WARNING; AlertType = Ale_WARNING;
sprintf (Gbl.Alert.Txt,"%s",Txt_You_must_specify_the_name_of_the_new_type_of_group); Str_Copy (Gbl.Alert.Txt,Txt_You_must_specify_the_name_of_the_new_type_of_group,
Ale_MAX_BYTES_ALERT);
} }
/***** Show the form again *****/ /***** Show the form again *****/
@ -3759,13 +3763,15 @@ void Grp_RecFormNewGrp (void)
else // If there is not a group name else // If there is not a group name
{ {
AlertType = Ale_ERROR; AlertType = Ale_ERROR;
sprintf (Gbl.Alert.Txt,"%s",Txt_You_must_specify_the_name_of_the_new_group); Str_Copy (Gbl.Alert.Txt,Txt_You_must_specify_the_name_of_the_new_group,
Ale_MAX_BYTES_ALERT);
} }
} }
else // Invalid group type else // Invalid group type
{ {
AlertType = Ale_ERROR; AlertType = Ale_ERROR;
sprintf (Gbl.Alert.Txt,"%s","Wrong type of group."); Str_Copy (Gbl.Alert.Txt,"Wrong type of group.",
Ale_MAX_BYTES_ALERT);
} }
/***** Show the form again *****/ /***** Show the form again *****/
@ -4430,7 +4436,7 @@ void Grp_ChangeOpenTimeGrpTyp (void)
DB_QueryUPDATE (Query,"can not update enrolment type of a type of group"); DB_QueryUPDATE (Query,"can not update enrolment type of a type of group");
/***** Write message to show the change made *****/ /***** Write message to show the change made *****/
sprintf (Gbl.Alert.Txt,"%s",Txt_The_date_time_of_opening_of_groups_has_changed); Ale_ShowAlert (Ale_SUCCESS,Txt_The_date_time_of_opening_of_groups_has_changed);
/***** Show the form again *****/ /***** Show the form again *****/
Grp_ReqEditGroupsInternal (Ale_SUCCESS,Gbl.Alert.Txt, Grp_ReqEditGroupsInternal (Ale_SUCCESS,Gbl.Alert.Txt,

View File

@ -1158,7 +1158,8 @@ void Hld_RecFormNewHoliday1 (void)
{ {
/* Error message */ /* Error message */
Gbl.Alert.Type = Ale_WARNING; Gbl.Alert.Type = Ale_WARNING;
sprintf (Gbl.Alert.Txt,"%s",Txt_You_must_specify_the_name_of_the_new_holiday); Str_Copy (Gbl.Alert.Txt,Txt_You_must_specify_the_name_of_the_new_holiday,
Ale_MAX_BYTES_ALERT);
} }
} }

View File

@ -1208,7 +1208,7 @@ static void Mai_ShowFormChangeUsrEmail (const struct UsrData *UsrDat,bool ItsMe,
{ {
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_Please_fill_in_your_email_address;
extern const char *Txt_Please_check_and_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;
extern const char *Txt_Email_X_confirmed; extern const char *Txt_Email_X_confirmed;
@ -1234,7 +1234,7 @@ static void Mai_ShowFormChangeUsrEmail (const struct UsrData *UsrDat,bool ItsMe,
if (IMustFillEmail) if (IMustFillEmail)
Ale_ShowAlert (Ale_WARNING,Txt_Please_fill_in_your_email_address); Ale_ShowAlert (Ale_WARNING,Txt_Please_fill_in_your_email_address);
else if (IShouldConfirmEmail) else if (IShouldConfirmEmail)
Ale_ShowAlert (Ale_WARNING,Txt_Please_check_and_confirm_your_email_address); Ale_ShowAlert (Ale_WARNING,Txt_Please_confirm_your_email_address);
/***** Get my emails *****/ /***** Get my emails *****/
sprintf (Query,"SELECT E_mail,Confirmed FROM usr_emails" sprintf (Query,"SELECT E_mail,Confirmed FROM usr_emails"
@ -1600,8 +1600,8 @@ static void Mai_NewUsrEmail (struct UsrData *UsrDat,bool ItsMe)
{ {
Gbl.Alert.Type = Ale_WARNING; Gbl.Alert.Type = Ale_WARNING;
Gbl.Alert.Section = Mai_EMAIL_SECTION_ID; Gbl.Alert.Section = Mai_EMAIL_SECTION_ID;
sprintf (Gbl.Alert.Txt,"%s", Str_Copy (Gbl.Alert.Txt,Txt_User_not_found_or_you_do_not_have_permission_,
Txt_User_not_found_or_you_do_not_have_permission_); Ale_MAX_BYTES_ALERT);
} }
} }
@ -1654,13 +1654,13 @@ void Mai_PutButtonToCheckEmailAddress (void)
{ {
extern const char *Hlp_PROFILE_Account_email; extern const char *Hlp_PROFILE_Account_email;
extern const char *Txt_Email_unconfirmed; extern const char *Txt_Email_unconfirmed;
extern const char *Txt_Please_check_and_confirm_your_email_address; extern const char *Txt_Please_confirm_your_email_address;
extern const char *Txt_Check; extern const char *Txt_Check;
/***** Box with button to check email address *****/ /***** Box with button to check email address *****/
Box_StartBox (NULL,Txt_Email_unconfirmed,NULL, Box_StartBox (NULL,Txt_Email_unconfirmed,NULL,
Hlp_PROFILE_Account_email,Box_CLOSABLE); Hlp_PROFILE_Account_email,Box_CLOSABLE);
Ale_ShowAlertAndButton (Ale_WARNING,Txt_Please_check_and_confirm_your_email_address, Ale_ShowAlertAndButton (Ale_WARNING,Txt_Please_confirm_your_email_address,
ActFrmMyAcc,NULL,NULL,NULL, ActFrmMyAcc,NULL,NULL,NULL,
Btn_CONFIRM_BUTTON,Txt_Check); Btn_CONFIRM_BUTTON,Txt_Check);
Box_EndBox (); Box_EndBox ();
@ -1737,8 +1737,8 @@ bool Mai_SendMailMsgToConfirmEmail (void)
case 1: case 1:
Gbl.Alert.Type = Ale_ERROR; Gbl.Alert.Type = Ale_ERROR;
Gbl.Alert.Section = Mai_EMAIL_SECTION_ID; Gbl.Alert.Section = Mai_EMAIL_SECTION_ID;
sprintf (Gbl.Alert.Txt,"%s", Str_Copy (Gbl.Alert.Txt,Txt_There_was_a_problem_sending_an_email_automatically,
Txt_There_was_a_problem_sending_an_email_automatically); Ale_MAX_BYTES_ALERT);
return false; return false;
default: default:
Gbl.Alert.Type = Ale_ERROR; Gbl.Alert.Type = Ale_ERROR;

View File

@ -325,7 +325,9 @@ bool Mrk_CheckFileOfMarks (const char *Path,struct MarksProperties *Marks)
// Only one table is allowed // Only one table is allowed
if (Str_FindStrInFile (FileAllMarks,"<table",Str_NO_SKIP_HTML_COMMENTS)) if (Str_FindStrInFile (FileAllMarks,"<table",Str_NO_SKIP_HTML_COMMENTS))
{ {
sprintf (Gbl.Alert.Txt,"%s",Txt_There_are_more_than_one_table_in_the_file_of_marks); Gbl.Alert.Type = Ale_WARNING;
Str_Copy (Gbl.Alert.Txt,Txt_There_are_more_than_one_table_in_the_file_of_marks,
Ale_MAX_BYTES_ALERT);
FileIsCorrect = false; FileIsCorrect = false;
} }
else else
@ -386,7 +388,9 @@ bool Mrk_CheckFileOfMarks (const char *Path,struct MarksProperties *Marks)
} }
else else
{ {
sprintf (Gbl.Alert.Txt,"%s",Txt_Table_not_found_in_the_file_of_marks); Gbl.Alert.Type = Ale_WARNING;
Str_Copy (Gbl.Alert.Txt,Txt_Table_not_found_in_the_file_of_marks,
Ale_MAX_BYTES_ALERT);
FileIsCorrect = false; FileIsCorrect = false;
} }
@ -458,7 +462,9 @@ static bool Mrk_GetUsrMarks (FILE *FileUsrMarks,struct UsrData *UsrDat,
/***** Open HTML file with the table of marks *****/ /***** Open HTML file with the table of marks *****/
if (!(FileAllMarks = fopen (PathFileAllMarks,"rb"))) if (!(FileAllMarks = fopen (PathFileAllMarks,"rb")))
{ // Can't open the file with the table of marks { // Can't open the file with the table of marks
sprintf (Gbl.Alert.Txt,"%s","Can not open file of marks."); // TODO: Need translation! Gbl.Alert.Type = Ale_WARNING;
Str_Copy (Gbl.Alert.Txt,"Can not open file of marks.", // TODO: Need translation!
Ale_MAX_BYTES_ALERT);
return false; return false;
} }
@ -864,7 +870,9 @@ void Mrk_GetNotifMyMarks (char SummaryStr[Ntf_MAX_BYTES_SUMMARY + 1],
} }
else else
{ {
sprintf (Gbl.Alert.Txt,"%s","Can not open file with user's marks!"); // TODO: Need translation! Gbl.Alert.Type = Ale_WARNING;
Str_Copy (Gbl.Alert.Txt,"Can not open file of marks.", // TODO: Need translation!
Ale_MAX_BYTES_ALERT);
if ((*ContentStr = (char *) malloc (9 + strlen (Gbl.Alert.Txt) + 3 + 1))) if ((*ContentStr = (char *) malloc (9 + strlen (Gbl.Alert.Txt) + 3 + 1)))
sprintf (*ContentStr,"<![CDATA[%s]]>",Gbl.Alert.Txt); sprintf (*ContentStr,"<![CDATA[%s]]>",Gbl.Alert.Txt);
} }
@ -872,7 +880,9 @@ void Mrk_GetNotifMyMarks (char SummaryStr[Ntf_MAX_BYTES_SUMMARY + 1],
} }
else else
{ {
sprintf (Gbl.Alert.Txt,"%s","User's IDs not found!"); // TODO: Need translation! Gbl.Alert.Type = Ale_WARNING;
Str_Copy (Gbl.Alert.Txt,"User's IDs not found!", // TODO: Need translation!
Ale_MAX_BYTES_ALERT);
if ((*ContentStr = (char *) malloc (9 + strlen (Gbl.Alert.Txt) + 3 + 1))) if ((*ContentStr = (char *) malloc (9 + strlen (Gbl.Alert.Txt) + 3 + 1)))
sprintf (*ContentStr,"<![CDATA[%s]]>",Gbl.Alert.Txt); sprintf (*ContentStr,"<![CDATA[%s]]>",Gbl.Alert.Txt);
} }

View File

@ -447,7 +447,8 @@ void Nck_RemoveMyNick (void)
{ {
Gbl.Alert.Type = Ale_WARNING; Gbl.Alert.Type = Ale_WARNING;
Gbl.Alert.Section = Nck_NICKNAME_SECTION_ID; Gbl.Alert.Section = Nck_NICKNAME_SECTION_ID;
sprintf (Gbl.Alert.Txt,"%s",Txt_You_can_not_delete_your_current_nickname); Str_Copy (Gbl.Alert.Txt,Txt_You_can_not_delete_your_current_nickname,
Ale_MAX_BYTES_ALERT);
} }
/***** Show my account again *****/ /***** Show my account again *****/

View File

@ -181,8 +181,8 @@ void Pwd_UpdateMyPwd (void)
{ {
Gbl.Alert.Type = Ale_WARNING; Gbl.Alert.Type = Ale_WARNING;
Gbl.Alert.Section = Pwd_PASSWORD_SECTION_ID; Gbl.Alert.Section = Pwd_PASSWORD_SECTION_ID;
sprintf (Gbl.Alert.Txt,"%s", Str_Copy (Gbl.Alert.Txt,Txt_You_have_not_entered_your_password_correctly,
Txt_You_have_not_entered_your_password_correctly); Ale_MAX_BYTES_ALERT);
} }
} }
@ -227,8 +227,8 @@ static void Pwd_CheckAndUpdateNewPwd (struct UsrData *UsrDat)
// Passwords don't match // Passwords don't match
Gbl.Alert.Type = Ale_WARNING; Gbl.Alert.Type = Ale_WARNING;
Gbl.Alert.Section = Pwd_PASSWORD_SECTION_ID; Gbl.Alert.Section = Pwd_PASSWORD_SECTION_ID;
sprintf (Gbl.Alert.Txt,"%s", Str_Copy (Gbl.Alert.Txt,Txt_You_have_not_written_twice_the_same_new_password,
Txt_You_have_not_written_twice_the_same_new_password); Ale_MAX_BYTES_ALERT);
} }
else else
{ {
@ -245,8 +245,8 @@ static void Pwd_CheckAndUpdateNewPwd (struct UsrData *UsrDat)
Gbl.Alert.Type = Ale_SUCCESS; Gbl.Alert.Type = Ale_SUCCESS;
Gbl.Alert.Section = Pwd_PASSWORD_SECTION_ID; Gbl.Alert.Section = Pwd_PASSWORD_SECTION_ID;
sprintf (Gbl.Alert.Txt,"%s", Str_Copy (Gbl.Alert.Txt,Txt_The_password_has_been_changed_successfully,
Txt_The_password_has_been_changed_successfully); Ale_MAX_BYTES_ALERT);
} }
} }
} }
@ -546,7 +546,8 @@ 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;
sprintf (Gbl.Alert.Txt,"%s",Txt_The_password_is_too_trivial_); Str_Copy (Gbl.Alert.Txt,Txt_The_password_is_too_trivial_,
Ale_MAX_BYTES_ALERT);
return false; return false;
} }
@ -556,7 +557,8 @@ 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;
sprintf (Gbl.Alert.Txt,"%s",Txt_The_password_is_too_trivial_); Str_Copy (Gbl.Alert.Txt,Txt_The_password_is_too_trivial_,
Ale_MAX_BYTES_ALERT);
return false; return false;
} }
@ -637,7 +639,8 @@ bool Pwd_FastCheckIfPasswordSeemsGood (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;
sprintf (Gbl.Alert.Txt,"%s",Txt_The_password_can_not_contain_spaces); Str_Copy (Gbl.Alert.Txt,Txt_The_password_can_not_contain_spaces,
Ale_MAX_BYTES_ALERT);
return false; return false;
} }
@ -651,7 +654,8 @@ bool Pwd_FastCheckIfPasswordSeemsGood (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;
sprintf (Gbl.Alert.Txt,"%s",Txt_The_password_can_not_consist_only_of_digits); Str_Copy (Gbl.Alert.Txt,Txt_The_password_can_not_consist_only_of_digits,
Ale_MAX_BYTES_ALERT);
return false; return false;
} }

View File

@ -737,19 +737,22 @@ static bool Pho_ReceivePhotoAndDetectFaces (bool ItsMe,const struct UsrData *Usr
if (NumFacesTotal == 0) if (NumFacesTotal == 0)
{ {
Gbl.Alert.Type = Ale_WARNING; Gbl.Alert.Type = Ale_WARNING;
sprintf (Gbl.Alert.Txt,"%s",Txt_Could_not_detect_any_face_in_front_position_); Str_Copy (Gbl.Alert.Txt,Txt_Could_not_detect_any_face_in_front_position_,
Ale_MAX_BYTES_ALERT);
} }
else if (NumFacesTotal == 1) else if (NumFacesTotal == 1)
{ {
if (NumFacesGreen == 1) if (NumFacesGreen == 1)
{ {
Gbl.Alert.Type = Ale_SUCCESS; Gbl.Alert.Type = Ale_SUCCESS;
sprintf (Gbl.Alert.Txt,"%s",Txt_A_face_marked_in_green_has_been_detected_); Str_Copy (Gbl.Alert.Txt,Txt_A_face_marked_in_green_has_been_detected_,
Ale_MAX_BYTES_ALERT);
} }
else else
{ {
Gbl.Alert.Type = Ale_WARNING; Gbl.Alert.Type = Ale_WARNING;
sprintf (Gbl.Alert.Txt,"%s",Txt_A_face_marked_in_red_has_been_detected_); Str_Copy (Gbl.Alert.Txt,Txt_A_face_marked_in_red_has_been_detected_,
Ale_MAX_BYTES_ALERT);
} }
} }
else // NumFacesTotal > 1 else // NumFacesTotal > 1
@ -899,12 +902,14 @@ static void Pho_UpdatePhoto1 (struct UsrData *UsrDat)
Pho_RemoveUsrFromTableClicksWithoutPhoto (UsrDat->UsrCod); Pho_RemoveUsrFromTableClicksWithoutPhoto (UsrDat->UsrCod);
Gbl.Alert.Type = Ale_SUCCESS; Gbl.Alert.Type = Ale_SUCCESS;
sprintf (Gbl.Alert.Txt,"%s",Txt_Photo_has_been_updated); Str_Copy (Gbl.Alert.Txt,Txt_Photo_has_been_updated,
Ale_MAX_BYTES_ALERT);
} }
else else
{ {
Gbl.Alert.Type = Ale_ERROR; Gbl.Alert.Type = Ale_ERROR;
sprintf (Gbl.Alert.Txt,"%s","Error updating photo."); Str_Copy (Gbl.Alert.Txt,"Error updating photo.",
Ale_MAX_BYTES_ALERT);
} }
} }
@ -1131,13 +1136,15 @@ bool Pho_RemovePhoto (struct UsrData *UsrDat)
if (NumErrors) if (NumErrors)
{ {
Gbl.Alert.Type = Ale_ERROR; Gbl.Alert.Type = Ale_ERROR;
sprintf (Gbl.Alert.Txt,"%s","Error removing photo."); Str_Copy (Gbl.Alert.Txt,"Error removing photo.",
Ale_MAX_BYTES_ALERT);
return false; return false;
} }
else else
{ {
Gbl.Alert.Type = Ale_SUCCESS; Gbl.Alert.Type = Ale_SUCCESS;
sprintf (Gbl.Alert.Txt,"%s",Txt_Photo_removed); Str_Copy (Gbl.Alert.Txt,Txt_Photo_removed,
Ale_MAX_BYTES_ALERT);
return true; return true;
} }
} }

View File

@ -633,10 +633,7 @@ void Plg_ChangePlgDescription (void)
Ale_ShowAlert (Ale_SUCCESS,Gbl.Alert.Txt); Ale_ShowAlert (Ale_SUCCESS,Gbl.Alert.Txt);
} }
else else
{ Ale_ShowAlert (Ale_WARNING,Txt_You_can_not_leave_the_description_empty);
sprintf (Gbl.Alert.Txt,"%s",Txt_You_can_not_leave_the_description_empty);
Ale_ShowAlert (Ale_WARNING,Gbl.Alert.Txt);
}
/***** Show the form again *****/ /***** Show the form again *****/
Str_Copy (Plg->Description,NewDescription, Str_Copy (Plg->Description,NewDescription,

View File

@ -1680,8 +1680,8 @@ void Rec_UpdateAndShowOtherCrsRecord (void)
/***** Update the record *****/ /***** Update the record *****/
Rec_UpdateCrsRecord (Gbl.Usrs.Other.UsrDat.UsrCod); Rec_UpdateCrsRecord (Gbl.Usrs.Other.UsrDat.UsrCod);
Gbl.Alert.Type = Ale_SUCCESS; Gbl.Alert.Type = Ale_SUCCESS;
sprintf (Gbl.Alert.Txt,"%s", Str_Copy (Gbl.Alert.Txt,Txt_Student_record_card_in_this_course_has_been_updated,
Txt_Student_record_card_in_this_course_has_been_updated); Ale_MAX_BYTES_ALERT);
/***** Show one or multiple records *****/ /***** Show one or multiple records *****/
switch (Gbl.Action.Original) switch (Gbl.Action.Original)

View File

@ -2793,9 +2793,10 @@ bool Str_ConvertFilFolLnkNameToValid (char *FileName)
FileName); FileName);
} }
else // FileName is empty else // FileName is empty
sprintf (Gbl.Alert.Txt,"%s", Str_Copy (Gbl.Alert.Txt,
Gbl.FileBrowser.UploadingWithDropzone ? Txt_UPLOAD_FILE_Invalid_name_NO_HTML : Gbl.FileBrowser.UploadingWithDropzone ? Txt_UPLOAD_FILE_Invalid_name_NO_HTML :
Txt_UPLOAD_FILE_Invalid_name); Txt_UPLOAD_FILE_Invalid_name,
Ale_MAX_BYTES_ALERT);
return FileNameIsOK; return FileNameIsOK;
} }

View File

@ -3640,8 +3640,7 @@ void Svy_RemoveQst (void)
DB_QueryUPDATE (Query,"can not update indexes of questions"); DB_QueryUPDATE (Query,"can not update indexes of questions");
/***** Write message *****/ /***** Write message *****/
sprintf (Gbl.Alert.Txt,"%s",Txt_Question_removed); Ale_ShowAlert (Ale_SUCCESS,Txt_Question_removed);
Ale_ShowAlert (Ale_SUCCESS,Gbl.Alert.Txt);
/***** Show current survey *****/ /***** Show current survey *****/
Svy_ShowOneSurvey (SvyCod,&SvyQst,true); Svy_ShowOneSurvey (SvyCod,&SvyQst,true);

View File

@ -6221,7 +6221,6 @@ static long Tst_GetTagCodFromTagTxt (const char *TagTxt)
MYSQL_ROW row; MYSQL_ROW row;
unsigned long NumRows; unsigned long NumRows;
long TagCod = -1L; // -1 means that the tag does not exist in database long TagCod = -1L; // -1 means that the tag does not exist in database
bool Error = false;
/***** Get tag code from database *****/ /***** Get tag code from database *****/
sprintf (Query,"SELECT TagCod FROM tst_tags" sprintf (Query,"SELECT TagCod FROM tst_tags"
@ -6229,26 +6228,29 @@ static long Tst_GetTagCodFromTagTxt (const char *TagTxt)
Gbl.CurrentCrs.Crs.CrsCod,TagTxt); Gbl.CurrentCrs.Crs.CrsCod,TagTxt);
NumRows = DB_QuerySELECT (Query,&mysql_res,"can not get tag"); NumRows = DB_QuerySELECT (Query,&mysql_res,"can not get tag");
Gbl.Alert.Type = Ale_NONE;
if (NumRows == 1) if (NumRows == 1)
{ {
/***** Get tag code *****/ /***** Get tag code *****/
row = mysql_fetch_row (mysql_res); row = mysql_fetch_row (mysql_res);
if ((TagCod = Str_ConvertStrCodToLongCod (row[0])) < 0) if ((TagCod = Str_ConvertStrCodToLongCod (row[0])) < 0)
{ {
sprintf (Gbl.Alert.Txt,"%s","Wrong code of tag."); Gbl.Alert.Type = Ale_ERROR;
Error = true; Str_Copy (Gbl.Alert.Txt,"Wrong code of tag.",
Ale_MAX_BYTES_ALERT);
} }
} }
else if (NumRows > 1) else if (NumRows > 1)
{ {
sprintf (Gbl.Alert.Txt,"%s","Duplicated tag."); Gbl.Alert.Type = Ale_ERROR;
Error = true; Str_Copy (Gbl.Alert.Txt,"Duplicated tag.",
Ale_MAX_BYTES_ALERT);
} }
/***** Free structure that stores the query result *****/ /***** Free structure that stores the query result *****/
DB_FreeMySQLResult (&mysql_res); DB_FreeMySQLResult (&mysql_res);
if (Error) if (Gbl.Alert.Type == Ale_ERROR)
Lay_ShowErrorAndExit (Gbl.Alert.Txt); Lay_ShowErrorAndExit (Gbl.Alert.Txt);
return TagCod; return TagCod;

View File

@ -2847,21 +2847,21 @@ const char *Txt_Another_department =
const char *Txt_Another_ID = const char *Txt_Another_ID =
#if L==1 #if L==1
"Un altre ID (DNI/c&egrave;dula)"; "Un altre ID";
#elif L==2 #elif L==2
"Ein anderer Ausweis-Nr."; "Ein anderer Ausweis-Nr.";
#elif L==3 #elif L==3
"Another ID"; "Another ID";
#elif L==4 #elif L==4
"Otro ID (DNI/c&eacute;dula)"; "Otro ID";
#elif L==5 #elif L==5
"Un autre num&eacute;ro d'identit&eacute;"; "Un autre num&eacute;ro d'identit&eacute;";
#elif L==6 #elif L==6
"Otro ID (DNI/c&eacute;dula)"; // Okoteve traducción "Otro ID"; // Okoteve traducción
#elif L==7 #elif L==7
"Un'altra carta d'identit&agrave;"; "Un'altra carta d'identit&agrave;";
#elif L==8 #elif L==8
"Another ID"; // Potrzebujesz tlumaczenie "Another ID"; // Potrzebujesz tlumaczenie
#elif L==9 #elif L==9
"Outro n&ordm; de identif."; "Outro n&ordm; de identif.";
#endif #endif
@ -29780,25 +29780,25 @@ const char *Txt_Play = // To play a game
"Jogar"; "Jogar";
#endif #endif
const char *Txt_Please_check_and_confirm_your_email_address = const char *Txt_Please_confirm_your_email_address =
#if L==1 #if L==1
"Si us plau, comproveu i confirmeu la seva adre&ccedil;a de correu."; "Si us plau, confirmeu la seva adre&ccedil;a de correu.";
#elif L==2 #elif L==2
"Bitte &uuml;berpr&uuml;fen Sie und Ihre E-Mail-Adresse best&auml;tigen."; "Bitte Ihre E-Mail-Adresse best&auml;tigen.";
#elif L==3 #elif L==3
"Please check and confirm your email address."; "Please confirm your email address.";
#elif L==4 #elif L==4
"Por favor, compruebe y confirme su direcci&oacute;n de correo."; "Por favor, confirme su direcci&oacute;n de correo.";
#elif L==5 #elif L==5
"S'il vous pla&iacute;t, v&eacute;rifiez et confirmez votre adresse email."; "S'il vous pla&iacute;t, confirmez votre adresse email.";
#elif L==6 #elif L==6
"Por favor, compruebe y confirme su direcci&oacute;n de correo."; // Okoteve traducción "Por favor, confirme su direcci&oacute;n de correo."; // Okoteve traducción
#elif L==7 #elif L==7
"Per favore, verifica e conferma il tuo indirizzo email."; "Per favore, conferma il tuo indirizzo email.";
#elif L==8 #elif L==8
"Prosz&eogon; sprawdzi&cacute; i potwierdzi&cacute; sw&oacute;j adres email."; "Prosz&eogon; potwierdzi&cacute; sw&oacute;j adres email.";
#elif L==9 #elif L==9
"Por favor, verificar e confirmar o seu endere&ccedil;o de email."; "Por favor, confirmar o seu endere&ccedil;o de email.";
#endif #endif
const char *Txt_Please_enter_your_ID = const char *Txt_Please_enter_your_ID =
@ -45951,63 +45951,63 @@ const char *Txt_The_ID_is_used_in_order_to_facilitate_ =
" la inscripci&oacute; en les assignatures" " la inscripci&oacute; en les assignatures"
" i la consulta de qualificacions." " i la consulta de qualificacions."
" Si hi ha diverses versions de la ID" " Si hi ha diverses versions de la ID"
" (per ex. DNI amb o sense lletra al final)," " (per ex. DNI amb o sense lletra),"
" indiqueu totes les versions."; " indiqueu totes les versions.";
#elif L==2 #elif L==2
"Die ID wird zu erleichtern," "Die ID wird zu erleichtern,"
" um die Einschreibung in Kurse" " um die Einschreibung in Kurse"
" und Beratungskompetenz eingesetzt." " und Beratungskompetenz eingesetzt."
" Wenn es mehrere Versionen der ID" " Wenn es mehrere Versionen der ID"
" (zB. mit oder ohne Buchstabe am Ende)," " (zB. mit oder ohne Buchstabe),"
" schreiben alle Versionen."; " schreiben alle Versionen.";
#elif L==3 #elif L==3
"The ID is used in order to facilitate" "The ID is used in order to facilitate"
" enrolment in courses" " enrolment in courses"
" and consulting marks." " and consulting marks."
" If there are multiple versions of the ID" " If there are multiple versions of the ID"
" (eg. with or without letter at the end)," " (eg. with or without letter),"
" write out all versions."; " write out all versions.";
#elif L==4 #elif L==4
"El ID se utiliza con el fin de facilitar" "El ID se utiliza para facilitar"
" la inscripci&oacute;n en las asignaturas" " la inscripci&oacute;n en las asignaturas"
" y la consulta de calificaciones." " y la consulta de calificaciones."
" Si existen varias versiones del ID" " Si existen varias versiones del ID"
" (por ej. DNI con o sin letra al final)," " (por ej. DNI con o sin letra),"
" indique todas las versiones."; " indique todas las versiones.";
#elif L==5 #elif L==5
"L'ID est utilis&eacute; afin de faciliter" "L'ID est utilis&eacute; afin de faciliter"
" l'inscription &agrave; des mati&egrave;res" " l'inscription &agrave; des mati&egrave;res"
" et la consulte des notes." " et la consulte des notes."
" S'il existe plusieurs versions du ID" " S'il existe plusieurs versions du ID"
" (par example avec ou sans lettre &agrave; la fin)," " (par example avec ou sans lettre),"
" &eacute;crire toutes les versions."; " &eacute;crire toutes les versions.";
#elif L==6 #elif L==6
"El ID se utiliza con el fin de facilitar" "El ID se utiliza para facilitar"
" la inscripci&oacute;n en las asignaturas" " la inscripci&oacute;n en las asignaturas"
" y la consulta de calificaciones." " y la consulta de calificaciones."
" Si existen varias versiones del ID" " Si existen varias versiones del ID"
" (por ej. DNI con o sin letra al final)," " (por ej. DNI con o sin letra),"
" indique todas las versiones."; // Okoteve traducción " indique todas las versiones."; // Okoteve traducción
#elif L==7 #elif L==7
"L'ID &egrave; utilizzato per agevolare" "L'ID &egrave; utilizzato per agevolare"
" l'iscrizione ai corsi" " l'iscrizione ai corsi"
" e consultare dei risultati." " e consultare dei risultati."
" Se ci sono pi&ugrave; versioni del ID" " Se ci sono pi&ugrave; versioni del ID"
" (ad es. con o senza lettera alla fine)," " (ad es. con o senza lettera),"
" scrivere tutte le versioni."; " scrivere tutte le versioni.";
#elif L==8 #elif L==8
"Identyfikator jest u&zdot;ywany w celu u&lstrok;atwienia" "Identyfikator jest u&zdot;ywany w celu u&lstrok;atwienia"
" rejestracji w kursach" " rejestracji w kursach"
" i skonsultuje znak&oacute;w." " i skonsultuje znak&oacute;w."
" Je&sacute;li istnieje wiele wersji identyfikatora" " Je&sacute;li istnieje wiele wersji identyfikatora"
" (np. Z lub bez litery na ko&nacute;cu)," " (np. Z lub bez litery),"
" wypisa&cacute; wszystkie wersje."; " wypisa&cacute; wszystkie wersje.";
#elif L==9 #elif L==9
"O n&ordm; de identifica&ccedil;&atilde;o &eacute; usado para facilitar" "O n&ordm; de identifica&ccedil;&atilde;o &eacute; usado para facilitar"
" a inscri&ccedil;&atilde;o em disciplinas" " a inscri&ccedil;&atilde;o em disciplinas"
" e consultas de notas." " e consultas de notas."
" Se houver v&aacute;rias vers&otilde;es do n&ordm; de identifica&ccedil;&atilde;o" " Se houver v&aacute;rias vers&otilde;es do n&ordm; de identifica&ccedil;&atilde;o"
" (eg., com ou sem letra no final)," " (eg., com ou sem letra),"
" escreva todas as vers&otilde;es."; " escreva todas as vers&otilde;es.";
#endif #endif