Version 22.110: May 12, 2023 Code refactoring confirming removal.

This commit is contained in:
acanas 2023-05-12 23:03:05 +02:00
parent 6a187daa6f
commit a395f2014a
23 changed files with 196 additions and 403 deletions

View File

@ -1142,7 +1142,6 @@ static void Agd_FreeListEvents (struct Agd_Agenda *Agenda)
void Agd_AskRemEvent (void)
{
extern const char *Txt_Do_you_really_want_to_remove_the_event_X;
extern const char *Txt_Remove;
struct Agd_Agenda Agenda;
struct Agd_Event AgdEvent;
@ -1161,11 +1160,10 @@ void Agd_AskRemEvent (void)
/***** Show question and button to remove event *****/
Agenda.AgdCodToEdit = AgdEvent.AgdCod;
Ale_ShowAlertAndButton (ActRemEvtMyAgd,NULL,NULL,
Agd_PutCurrentParsMyAgenda,&Agenda,
Btn_REMOVE_BUTTON,Txt_Remove,
Ale_QUESTION,Txt_Do_you_really_want_to_remove_the_event_X,
AgdEvent.Title);
Ale_ShowAlertRemove (ActRemEvtMyAgd,NULL,
Agd_PutCurrentParsMyAgenda,&Agenda,
Txt_Do_you_really_want_to_remove_the_event_X,
AgdEvent.Title);
/***** Show events again *****/
Agd_ShowMyAgenda (&Agenda);

View File

@ -318,6 +318,23 @@ void Ale_ShowLastAlertAndButton1 (void)
Ale_ResetLastAlert ();
}
/*****************************************************************************/
/************** Show an alert with a button to confirm removal ***************/
/*****************************************************************************/
void Ale_ShowAlertRemove (Act_Action_t NextAction,const char *Anchor,
void (*FuncPars) (void *Args),void *Args,
const char *Txt,const char *Title)
{
extern const char *Txt_Remove;
Ale_ShowAlertAndButton (NextAction,Anchor,NULL,
FuncPars,Args,
Btn_REMOVE_BUTTON,Txt_Remove,
Ale_QUESTION,Txt,
Title);
}
/*****************************************************************************/
/*********************** Show an alert with a button *************************/
/*****************************************************************************/

View File

@ -73,6 +73,9 @@ void Ale_ShowLastAlertAndButton (Act_Action_t NextAction,const char *Anchor,cons
void (*FuncPars) (void *Args),void *Args,
Btn_Button_t Button,const char *TxtButton);
void Ale_ShowLastAlertAndButton1 (void);
void Ale_ShowAlertRemove (Act_Action_t NextAction,const char *Anchor,
void (*FuncPars) (void *Args),void *Args,
const char *Txt,const char *Title);
void Ale_ShowAlertAndButton (Act_Action_t NextAction,const char *Anchor,const char *OnSubmit,
void (*FuncPars) (void *Args),void *Args,
Btn_Button_t Button,const char *TxtButton,

View File

@ -988,7 +988,6 @@ void Asg_GetNotifAssignment (char SummaryStr[Ntf_MAX_BYTES_SUMMARY + 1],
void Asg_ReqRemAssignment (void)
{
extern const char *Txt_Do_you_really_want_to_remove_the_assignment_X;
extern const char *Txt_Remove;
struct Asg_Assignments Assignments;
/***** Reset assignments *****/
@ -1006,11 +1005,10 @@ void Asg_ReqRemAssignment (void)
Asg_GetAssignmentDataByCod (&Assignments.Asg);
/***** Show question and button to remove the assignment *****/
Ale_ShowAlertAndButton (ActRemAsg,NULL,NULL,
Asg_PutPars,&Assignments,
Btn_REMOVE_BUTTON,Txt_Remove,
Ale_QUESTION,Txt_Do_you_really_want_to_remove_the_assignment_X,
Assignments.Asg.Title);
Ale_ShowAlertRemove (ActRemAsg,NULL,
Asg_PutPars,&Assignments,
Txt_Do_you_really_want_to_remove_the_assignment_X,
Assignments.Asg.Title);
/***** Show all assignments again *****/
Asg_ShowAllAssignments (&Assignments);

View File

@ -805,7 +805,6 @@ static void Att_FreeListEvents (struct Att_Events *Events)
void Att_AskRemEvent (void)
{
extern const char *Txt_Do_you_really_want_to_remove_the_event_X;
extern const char *Txt_Remove;
struct Att_Events Events;
/***** Reset attendance events *****/
@ -823,11 +822,10 @@ void Att_AskRemEvent (void)
Att_GetEventDataByCodAndCheckCrs (&Events.Event);
/***** Show question and button to remove event *****/
Ale_ShowAlertAndButton (ActRemAtt,NULL,NULL,
Att_PutPars,&Events,
Btn_REMOVE_BUTTON,Txt_Remove,
Ale_QUESTION,Txt_Do_you_really_want_to_remove_the_event_X,
Events.Event.Title);
Ale_ShowAlertRemove (ActRemAtt,NULL,
Att_PutPars,&Events,
Txt_Do_you_really_want_to_remove_the_event_X,
Events.Event.Title);
/***** Show attendance events again *****/
Att_SeeEvents ();

View File

@ -5115,7 +5115,6 @@ static void Brw_WriteFileOrFolderPublisher (unsigned Level,long UsrCod)
void Brw_AskRemFileFromTree (void)
{
extern const char *Txt_Do_you_really_want_to_remove_FILE_OR_LINK_X;
extern const char *Txt_Remove;
extern const char *Txt_You_can_not_remove_this_file_or_link;
char FileNameToShow[NAME_MAX + 1];
@ -5131,11 +5130,10 @@ void Brw_AskRemFileFromTree (void)
Gbl.FileBrowser.FilFolLnk.Type,
Gbl.FileBrowser.FilFolLnk.Name,
FileNameToShow);
Ale_ShowAlertAndButton (Brw_ActRemoveFile[Gbl.FileBrowser.Type],NULL,NULL,
Brw_PutImplicitParsFileBrowser,&Gbl.FileBrowser.FilFolLnk,
Btn_REMOVE_BUTTON,Txt_Remove,
Ale_QUESTION,Txt_Do_you_really_want_to_remove_FILE_OR_LINK_X,
FileNameToShow);
Ale_ShowAlertRemove (Brw_ActRemoveFile[Gbl.FileBrowser.Type],NULL,
Brw_PutImplicitParsFileBrowser,&Gbl.FileBrowser.FilFolLnk,
Txt_Do_you_really_want_to_remove_FILE_OR_LINK_X,
FileNameToShow);
}
else
Err_ShowErrorAndExit (Txt_You_can_not_remove_this_file_or_link);
@ -5258,14 +5256,12 @@ void Brw_RemFolderFromTree (void)
static void Brw_AskConfirmRemoveFolderNotEmpty (void)
{
extern const char *Txt_Do_you_really_want_to_remove_the_folder_X;
extern const char *Txt_Remove;
/***** Show question and button to remove not empty folder *****/
Ale_ShowAlertAndButton (Brw_ActRemoveFolderNotEmpty[Gbl.FileBrowser.Type],NULL,NULL,
Brw_PutImplicitParsFileBrowser,&Gbl.FileBrowser.FilFolLnk,
Btn_REMOVE_BUTTON,Txt_Remove,
Ale_QUESTION,Txt_Do_you_really_want_to_remove_the_folder_X,
Gbl.FileBrowser.FilFolLnk.Name);
Ale_ShowAlertRemove (Brw_ActRemoveFolderNotEmpty[Gbl.FileBrowser.Type],NULL,
Brw_PutImplicitParsFileBrowser,&Gbl.FileBrowser.FilFolLnk,
Txt_Do_you_really_want_to_remove_the_folder_X,
Gbl.FileBrowser.FilFolLnk.Name);
}
/*****************************************************************************/

View File

@ -629,10 +629,11 @@ TODO: Emilce Barrera Mesa: Podr
TODO: Emilce Barrera Mesa: Mis estudiantes presentan muchas dificultades a la hora de poner la foto porque la plataforma es muy exigente respecto al fondo de la imagen.
*/
#define Log_PLATFORM_VERSION "SWAD 22.109 (2023-05-11)"
#define Log_PLATFORM_VERSION "SWAD 22.110 (2023-05-12)"
#define CSS_FILE "swad22.107.36.css"
#define JS_FILE "swad22.49.js"
/*
Version 22.110: May 12, 2023 Code refactoring confirming removal. (336445 lines)
Version 22.109: May 11, 2023 Code refactoring confirming removal. (336647 lines)
Version 22.108: May 11, 2023 Code refactoring in forms. (337145 lines)
Version 22.107.40:May 10, 2023 Changes in creation of test questions and survey questions. (337447 lines)

View File

@ -973,7 +973,6 @@ void Exa_FreeListExams (struct Exa_Exams *Exams)
void Exa_AskRemExam (void)
{
extern const char *Txt_Do_you_really_want_to_remove_the_exam_X;
extern const char *Txt_Remove;
struct Exa_Exams Exams;
/***** Check if I can edit exams *****/
@ -991,11 +990,10 @@ void Exa_AskRemExam (void)
Exa_GetExamDataByCod (&Exams.Exam);
/***** Show question and button to remove exam *****/
Ale_ShowAlertAndButton (ActRemExa,NULL,NULL,
Exa_PutPars,&Exams,
Btn_REMOVE_BUTTON,Txt_Remove,
Ale_QUESTION,Txt_Do_you_really_want_to_remove_the_exam_X,
Exams.Exam.Title);
Ale_ShowAlertRemove (ActRemExa,NULL,
Exa_PutPars,&Exams,
Txt_Do_you_really_want_to_remove_the_exam_X,
Exams.Exam.Title);
/***** Show exams again *****/
Exa_ListAllExams (&Exams);

View File

@ -788,7 +788,6 @@ static void ExaSes_GetSessionDataFromRow (MYSQL_RES *mysql_res,
void ExaSes_ReqRemSession (void)
{
extern const char *Txt_Do_you_really_want_to_remove_the_session_X;
extern const char *Txt_Remove;
struct Exa_Exams Exams;
struct ExaSes_Session Session;
@ -803,11 +802,10 @@ void ExaSes_ReqRemSession (void)
/***** Show question and button to remove question *****/
Exams.Exam.ExaCod = Session.ExaCod;
Exams.SesCod = Session.SesCod;
Ale_ShowAlertAndButton (ActRemExaSes,NULL,NULL,
ExaSes_PutParsEdit,&Exams,
Btn_REMOVE_BUTTON,Txt_Remove,
Ale_QUESTION,Txt_Do_you_really_want_to_remove_the_session_X,
Session.Title);
Ale_ShowAlertRemove (ActRemExaSes,NULL,
ExaSes_PutParsEdit,&Exams,
Txt_Do_you_really_want_to_remove_the_session_X,
Session.Title);
/***** Show current exam *****/
Exa_ShowOnlyOneExam (&Exams,&Session,

View File

@ -1234,7 +1234,6 @@ static void ExaSet_CopyQstFromBankToExamSet (const struct ExaSet_Set *Set,long Q
void ExaSet_ReqRemSet (void)
{
extern const char *Txt_Do_you_really_want_to_remove_the_set_of_questions_X;
extern const char *Txt_Remove;
struct Exa_Exams Exams;
struct ExaSet_Set Set;
@ -1251,11 +1250,10 @@ void ExaSet_ReqRemSet (void)
Err_NoPermissionExit ();
/***** Show question and button to remove question *****/
Ale_ShowAlertAndButton (ActRemExaSet,NULL,NULL,
ExaSet_PutParsOneSet,&Exams,
Btn_REMOVE_BUTTON,Txt_Remove,
Ale_QUESTION,Txt_Do_you_really_want_to_remove_the_set_of_questions_X,
Set.Title);
Ale_ShowAlertRemove (ActRemExaSet,NULL,
ExaSet_PutParsOneSet,&Exams,
Txt_Do_you_really_want_to_remove_the_set_of_questions_X,
Set.Title);
/***** Show current exam and its sets *****/
Exa_PutFormsOneExam (&Exams,&Set,Exa_EXISTING_EXAM);
@ -1401,10 +1399,10 @@ void ExaSet_MoveDownSet (void)
void ExaSet_ReqRemQstFromSet (void)
{
extern const char *Txt_Do_you_really_want_to_remove_the_question_X;
extern const char *Txt_Remove;
struct Exa_Exams Exams;
struct ExaSet_Set Set;
char *Anchor;
char StrQstCod[Cns_MAX_DECIMAL_DIGITS_LONG + 1];
/***** Reset exams context *****/
Exa_ResetExams (&Exams);
@ -1417,17 +1415,13 @@ void ExaSet_ReqRemQstFromSet (void)
/***** Get question code *****/
Exams.QstCod = ParCod_GetAndCheckPar (ParCod_Qst);
/***** Build anchor string *****/
Frm_SetAnchorStr (Set.SetCod,&Anchor);
/***** Show question and button to remove question *****/
Ale_ShowAlertAndButton (ActRemExaQst,Anchor,NULL,
ExaSet_PutParsOneQst,&Exams,
Btn_REMOVE_BUTTON,Txt_Remove,
Ale_QUESTION,Txt_Do_you_really_want_to_remove_the_question_X,
Exams.QstCod);
/***** Free anchor string *****/
Frm_SetAnchorStr (Set.SetCod,&Anchor);
sprintf (StrQstCod,"%ld",Exams.QstCod);
Ale_ShowAlertRemove (ActRemExaQst,Anchor,
ExaSet_PutParsOneQst,&Exams,
Txt_Do_you_really_want_to_remove_the_question_X,
StrQstCod);
Frm_FreeAnchorStr (&Anchor);
/***** Show current exam and its sets *****/

View File

@ -3016,8 +3016,6 @@ void For_RemovePost (void)
void For_ReqRemThread (void)
{
extern const char *Txt_Do_you_really_want_to_remove_the_entire_thread_X;
extern const char *Txt_Do_you_really_want_to_remove_the_entire_thread;
extern const char *Txt_Remove;
struct For_Forums Forums;
char Subject[Cns_MAX_BYTES_SUBJECT + 1];
@ -3035,19 +3033,11 @@ void For_ReqRemThread (void)
/***** Show question and button to remove the thread *****/
HTM_SECTION_Begin (For_REMOVE_THREAD_SECTION_ID);
if (Subject[0])
Ale_ShowAlertAndButton (For_ActionsDelThrFor[Forums.Forum.Type],
For_FORUM_THREADS_SECTION_ID,NULL,
For_PutParsRemThread,&Forums,
Btn_REMOVE_BUTTON,Txt_Remove,
Ale_QUESTION,Txt_Do_you_really_want_to_remove_the_entire_thread_X,
Subject);
else
Ale_ShowAlertAndButton (For_ActionsDelThrFor[Forums.Forum.Type],
For_FORUM_THREADS_SECTION_ID,NULL,
For_PutParsRemThread,&Forums,
Btn_REMOVE_BUTTON,Txt_Remove,
Ale_QUESTION,Txt_Do_you_really_want_to_remove_the_entire_thread);
Ale_ShowAlertRemove (For_ActionsDelThrFor[Forums.Forum.Type],
For_FORUM_THREADS_SECTION_ID,
For_PutParsRemThread,&Forums,
Txt_Do_you_really_want_to_remove_the_entire_thread_X,
Subject);
HTM_SECTION_End ();
/***** Show the threads again *****/

View File

@ -1029,7 +1029,6 @@ void Gam_FreeListGames (struct Gam_Games *Games)
void Gam_AskRemGame (void)
{
extern const char *Txt_Do_you_really_want_to_remove_the_game_X;
extern const char *Txt_Remove;
struct Gam_Games Games;
/***** Reset games context *****/
@ -1048,11 +1047,10 @@ void Gam_AskRemGame (void)
Err_NoPermissionExit ();
/***** Show question and button to remove game *****/
Ale_ShowAlertAndButton (ActRemGam,NULL,NULL,
Gam_PutPars,&Games,
Btn_REMOVE_BUTTON,Txt_Remove,
Ale_QUESTION,Txt_Do_you_really_want_to_remove_the_game_X,
Games.Game.Title);
Ale_ShowAlertRemove (ActRemGam,NULL,
Gam_PutPars,&Games,
Txt_Do_you_really_want_to_remove_the_game_X,
Games.Game.Title);
/***** Show games again *****/
Gam_ListAllGames (&Games);
@ -1927,9 +1925,9 @@ static void Gam_FreeListsSelectedQuestions (struct Gam_Games *Games)
void Gam_ReqRemQstFromGame (void)
{
extern const char *Txt_Do_you_really_want_to_remove_the_question_X;
extern const char *Txt_Remove;
struct Gam_Games Games;
unsigned QstInd;
char StrQstInd[Cns_MAX_DECIMAL_DIGITS_UINT + 1];
/***** Reset games context *****/
Gam_ResetGames (&Games);
@ -1951,11 +1949,11 @@ void Gam_ReqRemQstFromGame (void)
/***** Show question and button to remove question *****/
Games.QstInd = QstInd;
Ale_ShowAlertAndButton (ActRemGamQst,NULL,NULL,
Gam_PutParsOneQst,&Games,
Btn_REMOVE_BUTTON,Txt_Remove,
Ale_QUESTION,Txt_Do_you_really_want_to_remove_the_question_X,
QstInd);
sprintf (StrQstInd,"%u",QstInd);
Ale_ShowAlertRemove (ActRemGamQst,NULL,
Gam_PutParsOneQst,&Games,
Txt_Do_you_really_want_to_remove_the_question_X,
StrQstInd);
/***** Show current game *****/
Gam_ShowOnlyOneGame (&Games,

View File

@ -135,7 +135,7 @@ static void Grp_GetLstCodGrpsUsrBelongs (long UsrCod,long GrpTypCod,
static bool Grp_CheckIfGrpIsInList (long GrpCod,struct ListCodGrps *LstGrps);
static bool Grp_CheckIfOpenTimeInTheFuture (time_t OpenTimeUTC);
static void Grp_AskConfirmRemGrpTypWithGrps (unsigned NumGrps);
static void Grp_AskConfirmRemGrpTypWithGrps (void);
static void Grp_AskConfirmRemGrp (void);
static void Grp_RemoveGroupTypeCompletely (void);
static void Grp_RemoveGroupCompletely (void);
@ -2801,7 +2801,7 @@ void Grp_GetListGrpTypesAndGrpsInThisCrs (Grp_WhichGroupTypes_t WhichGroupTypes)
Grp->Room.ShrtName[0] = '\0';
/* Get number of current users in group */
for (Role = Rol_TCH;
for (Role = Rol_TCH;
Role >= Rol_STD;
Role--)
Grp->NumUsrs[Role] = Grp_DB_CountNumUsrsInGrp (Role,Grp->GrpCod);
@ -3331,14 +3331,12 @@ void Grp_ReceiveFormNewGrp (void)
void Grp_ReqRemGroupType (void)
{
unsigned NumGrps;
/***** Get the code of the group type *****/
Gbl.Crs.Grps.GrpTyp.GrpTypCod = ParCod_GetAndCheckPar (ParCod_GrpTyp);
/***** Check if this group type has groups *****/
if ((NumGrps = Grp_DB_CountNumGrpsInThisCrsOfType (Gbl.Crs.Grps.GrpTyp.GrpTypCod))) // Group type has groups ==> Ask for confirmation
Grp_AskConfirmRemGrpTypWithGrps (NumGrps);
if (Grp_DB_CountNumGrpsInThisCrsOfType (Gbl.Crs.Grps.GrpTyp.GrpTypCod)) // Group type has groups ==> Ask for confirmation
Grp_AskConfirmRemGrpTypWithGrps ();
else // Group type has no groups ==> remove directly
Grp_RemoveGroupTypeCompletely ();
}
@ -3360,11 +3358,9 @@ void Grp_ReqRemGroup (void)
/********** Ask for confirmation to remove a group type with groups **********/
/*****************************************************************************/
static void Grp_AskConfirmRemGrpTypWithGrps (unsigned NumGrps)
static void Grp_AskConfirmRemGrpTypWithGrps (void)
{
extern const char *Txt_Do_you_really_want_to_remove_the_type_of_group_X_1_group_;
extern const char *Txt_Do_you_really_want_to_remove_the_type_of_group_X_Y_groups_;
extern const char *Txt_Remove;
extern const char *Txt_Do_you_really_want_to_remove_the_type_of_group_X;
/***** Get data of the group type from database *****/
Grp_GetGroupTypeDataByCod (&Gbl.Crs.Grps.GrpTyp);
@ -3373,18 +3369,10 @@ static void Grp_AskConfirmRemGrpTypWithGrps (unsigned NumGrps)
Grp_ReqEditGroupsInternal0 ();
/***** Show question and button to remove type of group *****/
if (NumGrps == 1)
Ale_ShowAlertAndButton (ActRemGrpTyp,Grp_GROUP_TYPES_SECTION_ID,NULL,
Grp_PutParGrpTypCod,&Gbl.Crs.Grps.GrpTyp.GrpTypCod,
Btn_REMOVE_BUTTON,Txt_Remove,
Ale_QUESTION,Txt_Do_you_really_want_to_remove_the_type_of_group_X_1_group_,
Gbl.Crs.Grps.GrpTyp.GrpTypName);
else
Ale_ShowAlertAndButton (ActRemGrpTyp,Grp_GROUP_TYPES_SECTION_ID,NULL,
Grp_PutParGrpTypCod,&Gbl.Crs.Grps.GrpTyp.GrpTypCod,
Btn_REMOVE_BUTTON,Txt_Remove,
Ale_QUESTION,Txt_Do_you_really_want_to_remove_the_type_of_group_X_Y_groups_,
Gbl.Crs.Grps.GrpTyp.GrpTypName,NumGrps);
Ale_ShowAlertRemove (ActRemGrpTyp,Grp_GROUP_TYPES_SECTION_ID,
Grp_PutParGrpTypCod,&Gbl.Crs.Grps.GrpTyp.GrpTypCod,
Txt_Do_you_really_want_to_remove_the_type_of_group_X,
Gbl.Crs.Grps.GrpTyp.GrpTypName);
/***** Show the form to edit group types and groups again *****/
Grp_ReqEditGroupsInternal1 (Ale_INFO,NULL);
@ -3398,42 +3386,21 @@ static void Grp_AskConfirmRemGrpTypWithGrps (unsigned NumGrps)
static void Grp_AskConfirmRemGrp (void)
{
extern const char *Txt_Do_you_really_want_to_remove_the_group_X;
extern const char *Txt_Do_you_really_want_to_remove_the_group_X_1_student_;
extern const char *Txt_Do_you_really_want_to_remove_the_group_X_Y_students_;
extern const char *Txt_Remove;
struct GroupData GrpDat;
unsigned NumStds;
/***** Get name of the group from database *****/
GrpDat.GrpCod = Gbl.Crs.Grps.GrpCod;
Grp_GetGroupDataByCod (&GrpDat);
/***** Count number of students in group *****/
NumStds = Grp_DB_CountNumUsrsInGrp (Rol_STD,Gbl.Crs.Grps.GrpCod);
/***** Show the form to edit group types again *****/
Grp_ReqEditGroupsInternal0 ();
Grp_ReqEditGroupsInternal1 (Ale_INFO,NULL);
/***** Show question and button to remove group *****/
if (NumStds == 0)
Ale_ShowAlertAndButton (ActRemGrp,Grp_GROUPS_SECTION_ID,NULL,
Grp_PutParGrpCod,&Gbl.Crs.Grps.GrpCod,
Btn_REMOVE_BUTTON,Txt_Remove,
Ale_QUESTION,Txt_Do_you_really_want_to_remove_the_group_X,
GrpDat.GrpName);
else if (NumStds == 1)
Ale_ShowAlertAndButton (ActRemGrp,Grp_GROUPS_SECTION_ID,NULL,
Grp_PutParGrpCod,&Gbl.Crs.Grps.GrpCod,
Btn_REMOVE_BUTTON,Txt_Remove,
Ale_QUESTION,Txt_Do_you_really_want_to_remove_the_group_X_1_student_,
GrpDat.GrpName);
else
Ale_ShowAlertAndButton (ActRemGrp,Grp_GROUPS_SECTION_ID,NULL,
Grp_PutParGrpCod,&Gbl.Crs.Grps.GrpCod,
Btn_REMOVE_BUTTON,Txt_Remove,
Ale_QUESTION,Txt_Do_you_really_want_to_remove_the_group_X_Y_students_,
GrpDat.GrpName,NumStds);
Ale_ShowAlertRemove (ActRemGrp,Grp_GROUPS_SECTION_ID,
Grp_PutParGrpCod,&Gbl.Crs.Grps.GrpCod,
Txt_Do_you_really_want_to_remove_the_group_X,
GrpDat.GrpName);
/***** Show the form to edit groups again *****/
Grp_ReqEditGroupsInternal2 (Ale_INFO,NULL);

View File

@ -962,7 +962,6 @@ static void Mch_GetMatchDataFromRow (MYSQL_RES *mysql_res,
void Mch_ReqRemMatch (void)
{
extern const char *Txt_Do_you_really_want_to_remove_the_match_X;
extern const char *Txt_Remove;
struct Gam_Games Games;
struct Mch_Match Match;
@ -975,11 +974,10 @@ void Mch_ReqRemMatch (void)
Mch_GetAndCheckPars (&Games,&Match);
/***** Show question and button to remove question *****/
Ale_ShowAlertAndButton (ActRemMch,NULL,NULL,
Mch_PutParsEdit,&Games,
Btn_REMOVE_BUTTON,Txt_Remove,
Ale_QUESTION,Txt_Do_you_really_want_to_remove_the_match_X,
Match.Title);
Ale_ShowAlertRemove (ActRemMch,NULL,
Mch_PutParsEdit,&Games,
Txt_Do_you_really_want_to_remove_the_match_X,
Match.Title);
/***** Show current game *****/
Gam_ShowOnlyOneGame (&Games,

View File

@ -1377,7 +1377,6 @@ inline unsigned Prg_GetLevelFromNumItem (unsigned NumItem)
void Prg_ReqRemItem (void)
{
extern const char *Txt_Do_you_really_want_to_remove_the_item_X;
extern const char *Txt_Remove;
struct Prg_Item Item;
/***** Get list of program items *****/
@ -1389,11 +1388,10 @@ void Prg_ReqRemItem (void)
Err_WrongItemExit ();
/***** Show question and button to remove the program item *****/
Ale_ShowAlertAndButton (ActRemPrgItm,NULL,NULL,
Prg_PutParItmCod,&Item.Hierarchy.ItmCod,
Btn_REMOVE_BUTTON,Txt_Remove,
Ale_QUESTION,Txt_Do_you_really_want_to_remove_the_item_X,
Item.Title);
Ale_ShowAlertRemove (ActRemPrgItm,NULL,
Prg_PutParItmCod,&Item.Hierarchy.ItmCod,
Txt_Do_you_really_want_to_remove_the_item_X,
Item.Title);
/***** Show program items highlighting subtree *****/
Prg_ShowAllItems (Prg_EDIT_ITEMS,Item.Hierarchy.ItmCod,-1L);

View File

@ -3470,7 +3470,6 @@ void Prj_FreeListProjects (struct Prj_Projects *Projects)
void Prj_ReqRemProject (void)
{
extern const char *Txt_Do_you_really_want_to_remove_the_project_X;
extern const char *Txt_Remove;
struct Prj_Projects Projects;
/***** Reset projects *****/
@ -3491,11 +3490,10 @@ void Prj_ReqRemProject (void)
Err_NoPermissionExit ();
/***** Show question and button to remove the project *****/
Ale_ShowAlertAndButton (ActRemPrj,NULL,NULL,
Prj_PutCurrentPars,&Projects,
Btn_REMOVE_BUTTON,Txt_Remove,
Ale_QUESTION,Txt_Do_you_really_want_to_remove_the_project_X,
Projects.Prj.Title);
Ale_ShowAlertRemove (ActRemPrj,NULL,
Prj_PutCurrentPars,&Projects,
Txt_Do_you_really_want_to_remove_the_project_X,
Projects.Prj.Title);
/***** Free memory of the project *****/
Prj_FreeMemProject (&Projects.Prj);

View File

@ -3185,7 +3185,6 @@ long Qst_GetIntAnsFromStr (char *Str)
void Qst_ReqRemSelectedQsts (void)
{
extern const char *Txt_Do_you_really_want_to_remove_the_selected_questions;
extern const char *Txt_Remove;
struct Qst_Questions Questions;
/***** Create test *****/
@ -3195,10 +3194,10 @@ void Qst_ReqRemSelectedQsts (void)
if (Tst_GetParsTst (&Questions,Tst_EDIT_QUESTIONS)) // Get parameters from the form
{
/***** Show question and button to remove question *****/
Ale_ShowAlertAndButton (ActRemSevTstQst,NULL,NULL,
Qst_PutParsEditQst,&Questions,
Btn_REMOVE_BUTTON,Txt_Remove,
Ale_QUESTION,Txt_Do_you_really_want_to_remove_the_selected_questions);
Ale_ShowAlertRemove (ActRemSevTstQst,NULL,
Qst_PutParsEditQst,&Questions,
Txt_Do_you_really_want_to_remove_the_selected_questions,
NULL);
}
else
Ale_ShowAlert (Ale_ERROR,"Wrong parameters.");
@ -3274,9 +3273,9 @@ void Qst_PutIconToRemoveOneQst (void *QstCod)
void Qst_ReqRemOneQst (void)
{
extern const char *Txt_Do_you_really_want_to_remove_the_question_X;
extern const char *Txt_Remove;
bool EditingOnlyThisQst;
struct Qst_Questions Questions;
char StrQstCod[Cns_MAX_DECIMAL_DIGITS_LONG + 1];
/***** Create test *****/
Qst_Constructor (&Questions);
@ -3295,28 +3294,14 @@ void Qst_ReqRemOneQst (void)
Err_ShowErrorAndExit ("Wrong test parameters.");
/***** Show question and button to remove question *****/
/*
if (EditingOnlyThisQst)
Ale_ShowAlertAndButton (ActRemOneTstQst,NULL,NULL,
Qst_PutParsRemoveOnlyThisQst,&Questions.Question.QstCod,
Btn_REMOVE_BUTTON,Txt_Remove,
Ale_QUESTION,Txt_Do_you_really_want_to_remove_the_question_X,
Questions.Question.QstCod);
else
Ale_ShowAlertAndButton (ActRemOneTstQst,NULL,NULL,
Qst_PutParsEditQst,&Questions,
Btn_REMOVE_BUTTON,Txt_Remove,
Ale_QUESTION,Txt_Do_you_really_want_to_remove_the_question_X,
Questions.Question.QstCod);
*/
Ale_ShowAlertAndButton (ActRemOneTstQst,NULL,NULL,
EditingOnlyThisQst ? Qst_PutParsRemoveOnlyThisQst :
Qst_PutParsEditQst,
EditingOnlyThisQst ? (void *) &Questions.Question.QstCod :
(void *) &Questions,
Btn_REMOVE_BUTTON,Txt_Remove,
Ale_QUESTION,Txt_Do_you_really_want_to_remove_the_question_X,
Questions.Question.QstCod);
sprintf (StrQstCod,"%ld",Questions.Question.QstCod);
Ale_ShowAlertRemove (ActRemOneTstQst,NULL,
EditingOnlyThisQst ? Qst_PutParsRemoveOnlyThisQst :
Qst_PutParsEditQst,
EditingOnlyThisQst ? (void *) &Questions.Question.QstCod :
(void *) &Questions,
Txt_Do_you_really_want_to_remove_the_question_X,
StrQstCod);
/***** Continue editing questions *****/
if (EditingOnlyThisQst)

View File

@ -103,6 +103,8 @@ static struct
static void Rec_ListFieldsRecordsForEdition (void);
static void Rec_WriteHeadingRecordFields (void);
static void Rec_AskConfirmRemFieldWithRecords (void);
static void Rec_PutParFldCod (void *FldCod);
static void Rec_GetFieldByCod (long FldCod,char Name[Rec_MAX_BYTES_NAME_FIELD + 1],
unsigned *NumLines,Rec_VisibilityRecordFields_t *Visibility);
@ -549,14 +551,12 @@ void Rec_CreateRecordField (void)
void Rec_ReqRemField (void)
{
unsigned NumRecords;
/***** Get the code of field *****/
Gbl.Crs.Records.Field.FieldCod = ParCod_GetAndCheckPar (ParCod_Fld);
/***** Check if exists any record with that field filled *****/
if ((NumRecords = Rec_DB_CountNumRecordsWithFieldContent (Gbl.Crs.Records.Field.FieldCod))) // There are records with that field filled
Rec_AskConfirmRemFieldWithRecords (NumRecords);
if (Rec_DB_CountNumRecordsWithFieldContent (Gbl.Crs.Records.Field.FieldCod)) // There are records with that field filled
Rec_AskConfirmRemFieldWithRecords ();
else // There are no records with that field filled
Rec_RemoveFieldFromDB ();
}
@ -565,10 +565,9 @@ void Rec_ReqRemField (void)
/******* Request confirmation for the removing of a field with records *******/
/*****************************************************************************/
void Rec_AskConfirmRemFieldWithRecords (unsigned NumRecords)
static void Rec_AskConfirmRemFieldWithRecords (void)
{
extern const char *Txt_Do_you_really_want_to_remove_the_field_X_from_the_records_of_Y_Z_;
extern const char *Txt_Remove;
extern const char *Txt_Do_you_really_want_to_remove_the_field_X;
/***** Get from the database the name of the field *****/
Rec_GetFieldByCod (Gbl.Crs.Records.Field.FieldCod,
@ -577,12 +576,10 @@ void Rec_AskConfirmRemFieldWithRecords (unsigned NumRecords)
&Gbl.Crs.Records.Field.Visibility);
/***** Show question and button to remove my photo *****/
Ale_ShowAlertAndButton (ActRemFie,NULL,NULL,
Rec_PutParFldCod,&Gbl.Crs.Records.Field.FieldCod,
Btn_REMOVE_BUTTON,Txt_Remove,
Ale_QUESTION,Txt_Do_you_really_want_to_remove_the_field_X_from_the_records_of_Y_Z_,
Gbl.Crs.Records.Field.Name,Gbl.Hierarchy.Crs.FullName,
NumRecords);
Ale_ShowAlertRemove (ActRemFie,NULL,
Rec_PutParFldCod,&Gbl.Crs.Records.Field.FieldCod,
Txt_Do_you_really_want_to_remove_the_field_X,
Gbl.Crs.Records.Field.Name);
/***** List record fields again *****/
Rec_ReqEditRecordFields ();

View File

@ -124,7 +124,6 @@ unsigned Rec_ConvertToNumLinesField (const char *StrNumLines);
bool Rec_CheckIfRecordFieldIsRepeated (const char *FldName);
void Rec_CreateRecordField (void);
void Rec_ReqRemField (void);
void Rec_AskConfirmRemFieldWithRecords (unsigned NumRecords);
void Rec_RemoveFieldFromDB (void);
void Rec_RemoveField (void);
void Rec_RenameField (void);

View File

@ -683,7 +683,6 @@ void Rub_FreeListRubrics (struct Rub_Rubrics *Rubrics)
void Rub_AskRemRubric (void)
{
extern const char *Txt_Do_you_really_want_to_remove_the_rubric_X;
extern const char *Txt_Remove;
struct Rub_Rubrics Rubrics;
/***** Reset rubrics context *****/
@ -699,11 +698,10 @@ void Rub_AskRemRubric (void)
Err_NoPermissionExit ();
/***** Show criterion and button to remove rubric *****/
Ale_ShowAlertAndButton (ActRemRub,NULL,NULL,
Rub_PutPars,&Rubrics,
Btn_REMOVE_BUTTON,Txt_Remove,
Ale_QUESTION,Txt_Do_you_really_want_to_remove_the_rubric_X,
Rubrics.Rubric.Title);
Ale_ShowAlertRemove (ActRemRub,NULL,
Rub_PutPars,&Rubrics,
Txt_Do_you_really_want_to_remove_the_rubric_X,
Rubrics.Rubric.Title);
/***** Show rubrics again *****/
Rub_ListAllRubrics (&Rubrics);

View File

@ -1061,7 +1061,6 @@ void RubCri_ResetCriterion (struct RubCri_Criterion *Criterion)
void RubCri_ReqRemCriterion (void)
{
extern const char *Txt_Do_you_really_want_to_remove_the_criterion_X;
extern const char *Txt_Remove;
struct Rub_Rubrics Rubrics;
/***** Reset rubrics context *****/
@ -1077,11 +1076,10 @@ void RubCri_ReqRemCriterion (void)
Err_NoPermissionExit ();
/***** Show question and button to remove question *****/
Ale_ShowAlertAndButton (ActRemRubCri,NULL,NULL,
RubCri_PutParsOneCriterion,&Rubrics,
Btn_REMOVE_BUTTON,Txt_Remove,
Ale_QUESTION,Txt_Do_you_really_want_to_remove_the_criterion_X,
Rubrics.Criterion.Title);
Ale_ShowAlertRemove (ActRemRubCri,NULL,
RubCri_PutParsOneCriterion,&Rubrics,
Txt_Do_you_really_want_to_remove_the_criterion_X,
Rubrics.Criterion.Title);
/***** Show current rubric and its criteria *****/
Rub_PutFormsOneRubric (&Rubrics,Rub_EXISTING_RUBRIC);

View File

@ -1391,7 +1391,6 @@ void Svy_GetNotifSurvey (char SummaryStr[Ntf_MAX_BYTES_SUMMARY + 1],
void Svy_AskRemSurvey (void)
{
extern const char *Txt_Do_you_really_want_to_remove_the_survey_X;
extern const char *Txt_Remove;
struct Svy_Surveys Surveys;
/***** Reset surveys *****/
@ -1411,11 +1410,10 @@ void Svy_AskRemSurvey (void)
Err_NoPermissionExit ();
/***** Show question and button to remove survey *****/
Ale_ShowAlertAndButton (ActRemSvy,NULL,NULL,
Svy_PutPars,&Surveys,
Btn_REMOVE_BUTTON,Txt_Remove,
Ale_QUESTION,Txt_Do_you_really_want_to_remove_the_survey_X,
Surveys.Svy.Title);
Ale_ShowAlertRemove (ActRemSvy,NULL,
Svy_PutPars,&Surveys,
Txt_Do_you_really_want_to_remove_the_survey_X,
Surveys.Svy.Title);
/***** Show surveys again *****/
Svy_ListAllSurveys (&Surveys);
@ -3060,9 +3058,9 @@ static void Svy_PutParsRemoveOneQst (void *Surveys)
void Svy_ReqRemQst (void)
{
extern const char *Txt_Do_you_really_want_to_remove_the_question_X;
extern const char *Txt_Remove;
struct Svy_Surveys Surveys;
struct Svy_Question SvyQst;
char StrQstInd[Cns_MAX_DECIMAL_DIGITS_UINT + 1];
/***** Reset surveys *****/
Svy_ResetSurveys (&Surveys);
@ -3082,11 +3080,11 @@ void Svy_ReqRemQst (void)
/***** Show question and button to remove question *****/
Surveys.QstCod = SvyQst.QstCod;
Ale_ShowAlertAndButton (ActRemSvyQst,NULL,NULL,
Svy_PutParsRemoveOneQst,&Surveys,
Btn_REMOVE_BUTTON,Txt_Remove,
Ale_QUESTION,Txt_Do_you_really_want_to_remove_the_question_X,
(long) SvyQst.QstInd + 1);
sprintf (StrQstInd,"%u",SvyQst.QstInd + 1);
Ale_ShowAlertRemove (ActRemSvyQst,NULL,
Svy_PutParsRemoveOneQst,&Surveys,
Txt_Do_you_really_want_to_remove_the_question_X,
StrQstInd);
/***** Show current survey *****/
Svy_ShowOneSurvey (&Surveys,true);

View File

@ -9561,29 +9561,6 @@ const char *Txt_Do_you_really_want_to_remove_the_criterion_X = // Warning: it is
"<strong>%s</strong> kriterini ger&ccedil;ekten kald&inodot;rmak istiyor musunuz?";
#endif
const char *Txt_Do_you_really_want_to_remove_the_entire_thread =
#if L==1 // ca
"De veres voleu eliminar tota la discusi&oacute;?";
#elif L==2 // de
"Wollen Sie die gesamten Thread wirklich entfernen?";
#elif L==3 // en
"Do you really want to remove the entire thread?";
#elif L==4 // es
"&iquest;Realmente desea eliminar toda la discusi&oacute;n?";
#elif L==5 // fr
"Voulez-vous vraiment supprimer tout le fil?";
#elif L==6 // gn
"&iquest;Realmente desea eliminar toda la discusi&oacute;n?"; // Okoteve traducción
#elif L==7 // it
"Vuoi realmente rimuovere l'intera discussione?";
#elif L==8 // pl
"Czy na pewno chcesz usun&aogon;&cacute; caly watek?";
#elif L==9 // pt
"Voc&ecirc; realmente deseja remover toda a discuss&atilde;o?";
#elif L==10 // tr
"Do you really want to remove the entire thread?"; // Çeviri lazim!
#endif
const char *Txt_Do_you_really_want_to_remove_the_entire_thread_X = // Warning: it is very important to include %s in the following sentences
#if L==1 // ca
"De veres voleu eliminar tota la discussi&oacute; <strong>%s</strong>?";
@ -9653,47 +9630,27 @@ const char *Txt_Do_you_really_want_to_remove_the_exam_X = // Warning: it is very
"Do you really want to remove the exam <strong>%s</strong>?"; // Çeviri lazim!
#endif
const char *Txt_Do_you_really_want_to_remove_the_field_X_from_the_records_of_Y_Z_ = // Warning: it is very important to include two %s and one %u in the following sentences
const char *Txt_Do_you_really_want_to_remove_the_field_X = // Warning: it is very important to include %s in the following sentences
#if L==1 // ca
"Realment voleu eliminar el camp <strong>%s</strong>"
" dels registres de <strong>%s</strong>"
" (aquest camp s'omple amb els registres de %u estudiant(s))";
"Realment voleu eliminar el camp <strong>%s</strong>?";
#elif L==2 // de
"Wollen Sie das Feld <strong>%s</strong>"
" wirklich aus den Datens&auml;tzen von <strong>%s</strong> entfernen"
" (dieses Feld ist in den Datens&auml;tzen von %u Studenten ausgef%uuml;llt)";
"Wollen Sie das Feld <strong>%s</strong>?";
#elif L==3 // en
"Do you really want to remove the field <strong>%s</strong>"
" from the records of <strong>%s</strong>"
" (this field is filled in the records of %u student(s))?";
"Do you really want to remove the field <strong>%s</strong>?";
#elif L==4 // es
"&iquest;Realmente desea eliminar el campo <strong>%s</strong>"
" de las fichas de <strong>%s</strong>"
" (dicho campo est&aacute; relleno en las fichas de %u estudiante(s))?";
"&iquest;Realmente desea eliminar el campo <strong>%s</strong>?";
#elif L==5 // fr
"Voulez-vous vraiment supprimer le champ <strong>%s</strong>"
" des fiches de <strong>%s</strong>"
" (ce champ est rempli dans les fiches de %u &eacute;tudiant(s))";
"Voulez-vous vraiment supprimer le champ <strong>%s</strong>?";
#elif L==6 // gn
"&iquest;Realmente desea eliminar el campo <strong>%s</strong>"
" de las fichas de <strong>%s</strong>"
" (dicho campo est&aacute; relleno en las fichas de %u estudiante(s))?"; // Okoteve traducción
"&iquest;Realmente desea eliminar el campo <strong>%s</strong>?"; // Okoteve traducción
#elif L==7 // it
"Vuoi realmente rimuovere il campo <strong>%s</strong>"
" dalle schede di <strong>%s</strong>"
" (questo campo &egrave; inserito nella scheda di %u studenti)?";
"Vuoi realmente rimuovere il campo <strong>%s</strong>?";
#elif L==8 // pl
"Czy na pewno chcesz usun&aogon;&cacute; pole <strong>%s</strong>"
" z rekord&oacute;w <strong>%s</strong>"
" (to pole jest wype&lstrok;niane w rekordach %u uczni&oacute;w)";
"Czy na pewno chcesz usun&aogon;&cacute; pole <strong>%s</strong>?";
#elif L==9 // pt
"Voc&ecirc; realmente quer remover o campo <strong>%s</strong>"
" dos cart&otilde;es de <strong>%s</strong>"
" (este campo &eacute; preenchido nos cart&otilde;es de %u estudante(s))?";
"Voc&ecirc; realmente quer remover o campo <strong>%s</strong>?";
#elif L==10 // tr
"Do you really want to remove the field <strong>%s</strong>"
" from the records of <strong>%s</strong>"
" (this field is filled in the records of %u student(s))?"; // Çeviri lazim!
"Do you really want to remove the field <strong>%s</strong>?"; // Çeviri lazim!
#endif
const char *Txt_Do_you_really_want_to_remove_FILE_OR_LINK_X = // Warning: it is very important to include %s in the following sentences
@ -9968,91 +9925,35 @@ const char *Txt_Do_you_really_want_to_remove_the_game_X = // Warning: it is very
const char *Txt_Do_you_really_want_to_remove_the_group_X = // Warning: it is very important to include %s in the following sentences
#if L==1 // ca
"De veres voleu eliminar el grup <strong>%s</strong>?";
"Realment voleu suprimir el grup <strong>%s</strong>?<br />"
"Si ho fa, els usuaris inscrits al grup deixaran de pert&agrave;nyer-hi.";
#elif L==2 // de
"M&ouml;chten Sie die Gruppe <strong>%s</strong> wirklich entfernen?";
"M&ouml;chten Sie Gruppe <strong>%s</strong> wirklich entfernen?<br />"
"Wenn Sie dies tun, geh&ouml;ren die in der Gruppe registrierten Benutzer nicht mehr dazu.";
#elif L==3 // en
"Do you really want to remove the group <strong>%s</strong>?";
#elif L==4 // es
"&iquest;Realmente desea eliminar el grupo <strong>%s</strong>?";
#elif L==5 // fr
"Voulez-vous vraiment supprimer le groupe <strong>%s</strong>?";
#elif L==6 // gn
"&iquest;Realmente desea eliminar el grupo <strong>%s</strong>?"; // Okoteve traducción
#elif L==7 // it
"Vuoi realmente rimuovere il gruppo <strong>%s</strong>?";
#elif L==8 // pl
"Czy na pewno chcesz usun&aogon;&cacute; grupe <strong>%s</strong>?";
#elif L==9 // pt
"Voc&ecirc; realmente quer remover o grupo <strong>%s</strong>?";
#elif L==10 // tr
"<strong>%s</strong> grubunu ger&ccedil;ekten kald&inodot;rmak istiyor musunuz?";
#endif
const char *Txt_Do_you_really_want_to_remove_the_group_X_1_student_ = // Warning: it is very important to include %s in the following sentences
#if L==1 // ca
"De veres voleu eliminar el grup <strong>%s</strong>?<br />"
"Si ho fa, un/a estudiant deixar&agrave; de pert&agrave;nyer a aquest grup.";
#elif L==2 // de
"M&ouml;chten Sie die Gruppe <strong>%s</strong> wirklich entfernen?<br />"
"Dadurch wird ein Sch&uuml;ler aus dieser Gruppe entfernt.";
#elif L==3 // en
"Do you really want to remove the group <strong>%s</strong>?<br />"
"Doing so will remove one student from that group.";
"Do you really want to remove group <strong>%s</strong>?<br />"
"If you do, users enrolled in the group will no longer belong to it.";
#elif L==4 // es
"&iquest;Realmente desea eliminar el grupo <strong>%s</strong>?<br />"
"Si lo hace, un/a estudiante dejar&aacute; de pertenecer a ese grupo.";
"Si lo hace, los usuarios inscritos en el grupo dejar&aacute;n de pertenecer a &eacute;l.";
#elif L==5 // fr
"Voulez-vous vraiment supprimer le groupe <strong>%s</strong>?<br />"
"Cela supprimera un &eacute;tudiant de ce groupe.";
"Si vous le faites, les utilisateurs inscrits au groupe n'en feront plus partie.";
#elif L==6 // gn
"&iquest;Realmente desea eliminar el grupo <strong>%s</strong>?<br />"
"Si lo hace, un/a estudiante dejar&aacute; de pertenecer a ese grupo."; // Okoteve traducción
"&iquest;¿A&ntilde;eteh&aacute;pe piko reipe'ase pe grupo <strong>%s</strong>?<br />"
"Rejap&oacute;ramo up&eacute;icha, umi puruh&aacute;ra o&ntilde;einskriv&iacute;va pe aty'&iacute;pe ndaha'emo'&atilde;v&eacute;ima ipypegua.";
#elif L==7 // it
"Vuoi realmente rimuovere il gruppo <strong>%s</strong>?<br />"
"Facendo così rimuoverai uno studente da questo gruppo.";
"Se lo fai, gli utenti iscritti al gruppo non ne faranno pi&ugrave; parte.";
#elif L==8 // pl
"Do you really want to remove the group <strong>%s</strong>?<br />"
"W ten spos&oacute;b usunie jeden uczen z tej grupy.";
"Czy na pewno chcesz usun&aogon;&cacute; grup&eogon; <strong>%s</strong>?<br />"
"Je&sacute;li to zrobisz, u&zdot;ytkownicy zarejestrowani w grupie przestan&aogon; do niej nale&zdot;e&cacute;.";
#elif L==9 // pt
"Voc&ecirc; realmente quer remover o grupo <strong>%s</strong>?<br />"
"Ao fazer isso, voc&ecirc; remover&aacute; um estudante desse grupo.";
"Voc&ecirc; realmente deseja remover o grupo <strong>%s</strong>?<br />"
"Se o fizer, os usu&aacute;rios inscritos no grupo n&atilde;o far&atilde;o mais parte dele.";
#elif L==10 // tr
"Do you really want to remove the group <strong>%s</strong>?<br />"
"Doing so will remove one student from that group."; // Çeviri lazim!
#endif
const char *Txt_Do_you_really_want_to_remove_the_group_X_Y_students_ = // Warning: it is very important to include %s and %u in the following sentences
#if L==1 // ca
"De veres voleu eliminar el grup <strong>%s</strong>?<br />"
"Si ho fa, %u estudiants deixaran de pert&agrave;nyer a aquest grup.";
#elif L==2 // de
"M&ouml;chten Sie die Gruppe <strong>%s</strong> wirklich entfernen?<br />"
"Dadurch werden %u Sch&uuml;ler aus dieser Gruppe entfernt.";
#elif L==3 // en
"Do you really want to remove the group <strong>%s</strong>?<br />"
"Doing so will remove %u students from that group.";
#elif L==4 // es
"&iquest;Realmente desea eliminar el grupo <strong>%s</strong>?<br />"
"Si lo hace, %u estudiantes dejar&aacute;n de pertenecer a ese grupo.";
#elif L==5 // fr
"Voulez-vous vraiment supprimer le groupe <strong>%s</strong>?<br />"
"Cela supprimera les %u &eacute;tudiants de ce groupe.";
#elif L==6 // gn
"&iquest;Realmente desea eliminar el grupo <strong>%s</strong>?<br />"
"Si lo hace, %u estudiantes dejar&aacute;n de pertenecer a ese grupo."; // Okoteve traducción
#elif L==7 // it
"Vuoi realmente rimuovere il gruppo <strong>%s</strong>?<br />"
"Facendo così rimuoverai %u studenti da questo gruppo.";
#elif L==8 // pl
"Do you really want to remove the group <strong>%s</strong>?<br />"
"W ten spos&oacute;b usunie %u uczni&oacute;w z tej grupy.";
#elif L==9 // pt
"Voc&ecirc; realmente quer remover o grupo <strong>%s</strong>?<br />"
"Ao fazer isso, voc&ecirc; remover&aacute; %u estudantes desse grupo.";
#elif L==10 // tr
"Do you really want to remove the group <strong>%s</strong>?<br />"
"Doing so will remove %u students from that group."; // Çeviri lazim!
"<strong>%s</strong> grubunu ger&ccedil;ekten kald&inodot;rmak istiyor musunuz?<br />"
"Bunu yaparsan&inodot;z, gruba kay&inodot;tl&inodot; kullan&inodot;c&inodot;lar art&inodot;k gruba ait olmaz.";
#endif
const char *Txt_Do_you_really_want_to_remove_the_item_X = // Warning: it is very important to include %s in the following sentences
@ -10147,27 +10048,27 @@ const char *Txt_Do_you_really_want_to_remove_the_project_X = // Warning: it is v
"<strong>%s</strong> projesini ger&ccedil;ekten kald&inodot;rmak istiyor musunuz?";
#endif
const char *Txt_Do_you_really_want_to_remove_the_question_X = // Warning: it is very important to include %ld in the following sentences
const char *Txt_Do_you_really_want_to_remove_the_question_X = // Warning: it is very important to include %s in the following sentences
#if L==1 // ca
"De veres voleu eliminar la pregunta <strong>%ld</strong>?";
"De veres voleu eliminar la pregunta <strong>%s</strong>?";
#elif L==2 // de
"Wollen Sie die Frage <strong>%ld</strong> wirklich entfernen?";
"Wollen Sie die Frage <strong>%s</strong> wirklich entfernen?";
#elif L==3 // en
"Do you really want to remove the question <strong>%ld</strong>?";
"Do you really want to remove the question <strong>%s</strong>?";
#elif L==4 // es
"&iquest;Realmente desea eliminar la pregunta <strong>%ld</strong>?";
"&iquest;Realmente desea eliminar la pregunta <strong>%s</strong>?";
#elif L==5 // fr
"Voulez-vous vraiment supprimer la question <strong>%ld</strong>?";
"Voulez-vous vraiment supprimer la question <strong>%s</strong>?";
#elif L==6 // gn
"&iquest;Realmente desea eliminar la pregunta <strong>%ld</strong>?"; // Okoteve traducción
"&iquest;Realmente desea eliminar la pregunta <strong>%s</strong>?"; // Okoteve traducción
#elif L==7 // it
"Vuoi realmente rimuovere la domanda <strong>%ld</strong>?";
"Vuoi realmente rimuovere la domanda <strong>%s</strong>?";
#elif L==8 // pl
"Czy na pewno chcesz usun&aogon;&cacute; pytanie <strong>%ld</strong>?";
"Czy na pewno chcesz usun&aogon;&cacute; pytanie <strong>%s</strong>?";
#elif L==9 // pt
"Voc&ecirc; realmente deseja remover a pergunta <strong>%ld</strong>?";
"Voc&ecirc; realmente deseja remover a pergunta <strong>%s</strong>?";
#elif L==10 // tr
"<strong>%ld</strong> sorusunu ger&ccedil;ekten kald&inodot;rmak istiyor musunuz?";
"<strong>%s</strong> sorusunu ger&ccedil;ekten kald&inodot;rmak istiyor musunuz?";
#endif
const char *Txt_Do_you_really_want_to_remove_the_resource_X = // Warning: it is very important to include %s in the following sentences
@ -10308,70 +10209,37 @@ const char *Txt_Do_you_really_want_to_remove_the_survey_X = // Warning: it is ve
"<strong>%s</strong> anketini ger&ccedil;ekten kald&inodot;rmak istiyor musunuz?";
#endif
const char *Txt_Do_you_really_want_to_remove_the_type_of_group_X_1_group_ = // Warning: it is very important to include %s in the following sentences
const char *Txt_Do_you_really_want_to_remove_the_type_of_group_X = // Warning: it is very important to include %s in the following sentences
#if L==1 // ca
"Realment voleu eliminar el tipus de grup <strong>%s</strong>?<br />"
"Si ho feu, tamb&eacute; s'eliminar&agrave; un grup d'aquest tipus.";
"En fer-ho, tamb&eacute; s'eliminaran els grups d'aquest tipus.";
#elif L==2 // de
"M&ouml;chten Sie den Typ der Gruppe <strong>%s</strong> wirklich entfernen?<br />"
"Dadurch wird auch eine Gruppe dieses Typs entfernt.";
"Dadurch werden auch die Gruppen dieses Typs entfernt.";
#elif L==3 // en
"Do you really want to remove the type of group <strong>%s</strong>?<br />"
"Doing so will also remove one group of that type.";
"Doing so will also remove the groups of that type.";
#elif L==4 // es
"&iquest;Realmente desea eliminar el tipo de grupo <strong>%s</strong>?<br />"
"Si lo hace, eliminar&aacute; tambi&eacute;n un grupo de ese tipo.";
"Si lo hace, eliminar&aacute; tambi&eacute;n los grupos de ese tipo.";
#elif L==5 // fr
"Voulez-vous vraiment supprimer le type de groupe <strong>%s</strong>?<br />"
"Cela supprimera &eacute;galement un groupe de ce type.";
"Cela supprimera &eacute;galement les groupes de ce type.";
#elif L==6 // gn
"&iquest;Realmente desea eliminar el tipo de grupo <strong>%s</strong>?<br />"
"Si lo hace, eliminar&aacute; tambi&eacute;n un grupo de ese tipo."; // Okoteve traducción
"&iquest;A&ntilde;eteh&aacute;pe piko reipe'ase pe tipo de grupo <strong>%s</strong>?<br />"
"P&eacute;icha jajap&oacute;ramo ojeipe'&aacute;ta avei umi aty upeichagua.";
#elif L==7 // it
"Vuoi realmente rimuovere il tipo di gruppo <strong>%s</strong>?<br />"
"Facendo così rimuoverai anche un gruppo di questo tipo.";
"Facendo così rimuoverai anche i gruppi di questo tipo.";
#elif L==8 // pl
"Do you really want to remove the type of group <strong>%s</strong>?<br />"
"Spowoduje to takze usuniecie jednej grupie tego typu.";
"Czy na pewno chcesz usun&aogon;&cacute; typ grupy <strong>%s</strong>?<br />"
"Spowoduje to r&oacute;wnie&zdot; usuni&eogon;cie grup tego typu.";
#elif L==9 // pt
"Voc&ecirc; realmente quer remover o tipo de grupo <strong>%s</strong>?<br />"
"Isso tamb&eacute;m remover&aacute; um grupo desse tipo.";
"Isso tamb&eacute;m remover&aacute; os grupos desse tipo.";
#elif L==10 // tr
"Do you really want to remove the type of group <strong>%s</strong>?<br />"
"Doing so will also remove one group of that type."; // Çeviri lazim!
#endif
const char *Txt_Do_you_really_want_to_remove_the_type_of_group_X_Y_groups_ = // Warning: it is very important to include %s and %u in the following sentences
#if L==1 // ca
"Realment voleu eliminar el tipus de grup <strong>%s</strong>?<br />"
"En fer-ho, tamb&eacute; s'eliminaran %u grups d'aquest tipus.";
#elif L==2 // de
"M&ouml;chten Sie den Typ der Gruppe <strong>%s</strong> wirklich entfernen?<br />"
"Dadurch werden auch %u Gruppen dieses Typs entfernt.";
#elif L==3 // en
"Do you really want to remove the type of group <strong>%s</strong>?<br />"
"Doing so will also remove %u groups of that type.";
#elif L==4 // es
"&iquest;Realmente desea eliminar el tipo de grupo <strong>%s</strong>?<br />"
"Si lo hace, eliminar&aacute; tambi&eacute;n %u grupos de ese tipo.";
#elif L==5 // fr
"Voulez-vous vraiment supprimer le type de groupe <strong>%s</strong>?<br />"
"Cela supprimera &eacute;galement %u groupes de ce type.";
#elif L==6 // gn
"&iquest;Realmente desea eliminar el tipo de grupo <strong>%s</strong>?<br />"
"Si lo hace, eliminar&aacute; tambi&eacute;n %u grupos de ese tipo."; // Okoteve traducción
#elif L==7 // it
"Vuoi realmente rimuovere il tipo di gruppo <strong>%s</strong>?<br />"
"Facendo così rimuoverai anche %u gruppi di questo tipo.";
#elif L==8 // pl
"Do you really want to remove the type of group <strong>%s</strong>?<br />"
"Spowoduje to r&oacute;wniez usuniecie grup %u tego typu.";
#elif L==9 // pt
"Voc&ecirc; realmente quer remover o tipo de grupo <strong>%s</strong>?<br />"
"Isso tamb&eacute;m remover&aacute; %u grupos desse tipo.";
#elif L==10 // tr
"Do you really want to remove the type of group <strong>%s</strong>?<br />"
"Doing so will also remove %u groups of that type."; // Çeviri lazim!
"<strong>%s</strong> grubunun t&uuml;r&uuml;n&uuml; ger&ccedil;ekten kald&inodot;rmak istiyor musunuz?<br />"
"Bunu yapmak, o t&uuml;rdeki gruplar&inodot; da kald&inodot;racakt&inodot;r.";
#endif
const char *Txt_Do_you_really_want_to_remove_your_photo =