diff --git a/swad_agenda.c b/swad_agenda.c
index 034affbe..d0cf1a2f 100644
--- a/swad_agenda.c
+++ b/swad_agenda.c
@@ -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);
diff --git a/swad_alert.c b/swad_alert.c
index e40dc4a1..31ad83a8 100644
--- a/swad_alert.c
+++ b/swad_alert.c
@@ -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 *************************/
/*****************************************************************************/
diff --git a/swad_alert.h b/swad_alert.h
index 1c238773..d081b6d0 100644
--- a/swad_alert.h
+++ b/swad_alert.h
@@ -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,
diff --git a/swad_assignment.c b/swad_assignment.c
index eff294a0..df7d5ae8 100644
--- a/swad_assignment.c
+++ b/swad_assignment.c
@@ -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);
diff --git a/swad_attendance.c b/swad_attendance.c
index eb7587e8..f7011068 100644
--- a/swad_attendance.c
+++ b/swad_attendance.c
@@ -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 ();
diff --git a/swad_browser.c b/swad_browser.c
index 7688fdba..1f05a0ac 100644
--- a/swad_browser.c
+++ b/swad_browser.c
@@ -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);
}
/*****************************************************************************/
diff --git a/swad_changelog.h b/swad_changelog.h
index 588e1c66..7a21ab05 100644
--- a/swad_changelog.h
+++ b/swad_changelog.h
@@ -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)
diff --git a/swad_exam.c b/swad_exam.c
index 2ca32d09..66bd22fa 100644
--- a/swad_exam.c
+++ b/swad_exam.c
@@ -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);
diff --git a/swad_exam_session.c b/swad_exam_session.c
index e2727302..dc244fc1 100644
--- a/swad_exam_session.c
+++ b/swad_exam_session.c
@@ -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,
diff --git a/swad_exam_set.c b/swad_exam_set.c
index 1c38bdaf..25d5c9dc 100644
--- a/swad_exam_set.c
+++ b/swad_exam_set.c
@@ -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 *****/
diff --git a/swad_forum.c b/swad_forum.c
index b0a37356..d563ac62 100644
--- a/swad_forum.c
+++ b/swad_forum.c
@@ -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 *****/
diff --git a/swad_game.c b/swad_game.c
index 32ff6992..fec59781 100644
--- a/swad_game.c
+++ b/swad_game.c
@@ -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,
diff --git a/swad_group.c b/swad_group.c
index f96dabbe..4597453b 100644
--- a/swad_group.c
+++ b/swad_group.c
@@ -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);
diff --git a/swad_match.c b/swad_match.c
index 66696685..53cc0866 100644
--- a/swad_match.c
+++ b/swad_match.c
@@ -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,
diff --git a/swad_program.c b/swad_program.c
index 37e263f8..3227d549 100644
--- a/swad_program.c
+++ b/swad_program.c
@@ -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);
diff --git a/swad_project.c b/swad_project.c
index 41b145f9..c07d8e58 100644
--- a/swad_project.c
+++ b/swad_project.c
@@ -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);
diff --git a/swad_question.c b/swad_question.c
index f3a437e6..56c51c6e 100644
--- a/swad_question.c
+++ b/swad_question.c
@@ -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)
diff --git a/swad_record.c b/swad_record.c
index dd505502..cc8ba432 100644
--- a/swad_record.c
+++ b/swad_record.c
@@ -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 ();
diff --git a/swad_record.h b/swad_record.h
index 54657b08..5ff935d0 100644
--- a/swad_record.h
+++ b/swad_record.h
@@ -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);
diff --git a/swad_rubric.c b/swad_rubric.c
index 6e7b2b80..8f673dd0 100644
--- a/swad_rubric.c
+++ b/swad_rubric.c
@@ -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);
diff --git a/swad_rubric_criteria.c b/swad_rubric_criteria.c
index f55d705b..15ed572f 100644
--- a/swad_rubric_criteria.c
+++ b/swad_rubric_criteria.c
@@ -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);
diff --git a/swad_survey.c b/swad_survey.c
index cb9dd7b5..2d46800d 100644
--- a/swad_survey.c
+++ b/swad_survey.c
@@ -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);
diff --git a/swad_text.c b/swad_text.c
index d373b8ad..3494bc43 100644
--- a/swad_text.c
+++ b/swad_text.c
@@ -9561,29 +9561,6 @@ const char *Txt_Do_you_really_want_to_remove_the_criterion_X = // Warning: it is
"%s kriterini gerçekten kaldı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ó?";
-#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
- "¿Realmente desea eliminar toda la discusión?";
-#elif L==5 // fr
- "Voulez-vous vraiment supprimer tout le fil?";
-#elif L==6 // gn
- "¿Realmente desea eliminar toda la discusión?"; // Okoteve traducción
-#elif L==7 // it
- "Vuoi realmente rimuovere l'intera discussione?";
-#elif L==8 // pl
- "Czy na pewno chcesz usunąć caly watek?";
-#elif L==9 // pt
- "Você realmente deseja remover toda a discussã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ó %s?";
@@ -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 %s?"; // Ç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 %s"
- " dels registres de %s"
- " (aquest camp s'omple amb els registres de %u estudiant(s))";
+ "Realment voleu eliminar el camp %s?";
#elif L==2 // de
- "Wollen Sie das Feld %s"
- " wirklich aus den Datensätzen von %s entfernen"
- " (dieses Feld ist in den Datensätzen von %u Studenten ausgef%uuml;llt)";
+ "Wollen Sie das Feld %s?";
#elif L==3 // en
- "Do you really want to remove the field %s"
- " from the records of %s"
- " (this field is filled in the records of %u student(s))?";
+ "Do you really want to remove the field %s?";
#elif L==4 // es
- "¿Realmente desea eliminar el campo %s"
- " de las fichas de %s"
- " (dicho campo está relleno en las fichas de %u estudiante(s))?";
+ "¿Realmente desea eliminar el campo %s?";
#elif L==5 // fr
- "Voulez-vous vraiment supprimer le champ %s"
- " des fiches de %s"
- " (ce champ est rempli dans les fiches de %u étudiant(s))";
+ "Voulez-vous vraiment supprimer le champ %s?";
#elif L==6 // gn
- "¿Realmente desea eliminar el campo %s"
- " de las fichas de %s"
- " (dicho campo está relleno en las fichas de %u estudiante(s))?"; // Okoteve traducción
+ "¿Realmente desea eliminar el campo %s?"; // Okoteve traducción
#elif L==7 // it
- "Vuoi realmente rimuovere il campo %s"
- " dalle schede di %s"
- " (questo campo è inserito nella scheda di %u studenti)?";
+ "Vuoi realmente rimuovere il campo %s?";
#elif L==8 // pl
- "Czy na pewno chcesz usunąć pole %s"
- " z rekordów %s"
- " (to pole jest wypełniane w rekordach %u uczniów)";
+ "Czy na pewno chcesz usunąć pole %s?";
#elif L==9 // pt
- "Você realmente quer remover o campo %s"
- " dos cartões de %s"
- " (este campo é preenchido nos cartões de %u estudante(s))?";
+ "Você realmente quer remover o campo %s?";
#elif L==10 // tr
- "Do you really want to remove the field %s"
- " from the records of %s"
- " (this field is filled in the records of %u student(s))?"; // Çeviri lazim!
+ "Do you really want to remove the field %s?"; // Ç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 %s?";
+ "Realment voleu suprimir el grup %s?
"
+ "Si ho fa, els usuaris inscrits al grup deixaran de pertànyer-hi.";
#elif L==2 // de
- "Möchten Sie die Gruppe %s wirklich entfernen?";
+ "Möchten Sie Gruppe %s wirklich entfernen?
"
+ "Wenn Sie dies tun, gehören die in der Gruppe registrierten Benutzer nicht mehr dazu.";
#elif L==3 // en
- "Do you really want to remove the group %s?";
-#elif L==4 // es
- "¿Realmente desea eliminar el grupo %s?";
-#elif L==5 // fr
- "Voulez-vous vraiment supprimer le groupe %s?";
-#elif L==6 // gn
- "¿Realmente desea eliminar el grupo %s?"; // Okoteve traducción
-#elif L==7 // it
- "Vuoi realmente rimuovere il gruppo %s?";
-#elif L==8 // pl
- "Czy na pewno chcesz usunąć grupe %s?";
-#elif L==9 // pt
- "Você realmente quer remover o grupo %s?";
-#elif L==10 // tr
- "%s grubunu gerçekten kaldı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 %s?
"
- "Si ho fa, un/a estudiant deixarà de pertànyer a aquest grup.";
-#elif L==2 // de
- "Möchten Sie die Gruppe %s wirklich entfernen?
"
- "Dadurch wird ein Schüler aus dieser Gruppe entfernt.";
-#elif L==3 // en
- "Do you really want to remove the group %s?
"
- "Doing so will remove one student from that group.";
+ "Do you really want to remove group %s?
"
+ "If you do, users enrolled in the group will no longer belong to it.";
#elif L==4 // es
"¿Realmente desea eliminar el grupo %s?
"
- "Si lo hace, un/a estudiante dejará de pertenecer a ese grupo.";
+ "Si lo hace, los usuarios inscritos en el grupo dejarán de pertenecer a él.";
#elif L==5 // fr
"Voulez-vous vraiment supprimer le groupe %s?
"
- "Cela supprimera un étudiant de ce groupe.";
+ "Si vous le faites, les utilisateurs inscrits au groupe n'en feront plus partie.";
#elif L==6 // gn
- "¿Realmente desea eliminar el grupo %s?
"
- "Si lo hace, un/a estudiante dejará de pertenecer a ese grupo."; // Okoteve traducción
+ "¿¿Añetehápe piko reipe'ase pe grupo %s?
"
+ "Rejapóramo upéicha, umi puruhára oñeinskrivíva pe aty'ípe ndaha'emo'ãvéima ipypegua.";
#elif L==7 // it
"Vuoi realmente rimuovere il gruppo %s?
"
- "Facendo così rimuoverai uno studente da questo gruppo.";
+ "Se lo fai, gli utenti iscritti al gruppo non ne faranno più parte.";
#elif L==8 // pl
- "Do you really want to remove the group %s?
"
- "W ten sposób usunie jeden uczen z tej grupy.";
+ "Czy na pewno chcesz usunąć grupę %s?
"
+ "Jeśli to zrobisz, użytkownicy zarejestrowani w grupie przestaną do niej należeć.";
#elif L==9 // pt
- "Você realmente quer remover o grupo %s?
"
- "Ao fazer isso, você removerá um estudante desse grupo.";
+ "Você realmente deseja remover o grupo %s?
"
+ "Se o fizer, os usuários inscritos no grupo não farão mais parte dele.";
#elif L==10 // tr
- "Do you really want to remove the group %s?
"
- "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 %s?
"
- "Si ho fa, %u estudiants deixaran de pertànyer a aquest grup.";
-#elif L==2 // de
- "Möchten Sie die Gruppe %s wirklich entfernen?
"
- "Dadurch werden %u Schüler aus dieser Gruppe entfernt.";
-#elif L==3 // en
- "Do you really want to remove the group %s?
"
- "Doing so will remove %u students from that group.";
-#elif L==4 // es
- "¿Realmente desea eliminar el grupo %s?
"
- "Si lo hace, %u estudiantes dejarán de pertenecer a ese grupo.";
-#elif L==5 // fr
- "Voulez-vous vraiment supprimer le groupe %s?
"
- "Cela supprimera les %u étudiants de ce groupe.";
-#elif L==6 // gn
- "¿Realmente desea eliminar el grupo %s?
"
- "Si lo hace, %u estudiantes dejarán de pertenecer a ese grupo."; // Okoteve traducción
-#elif L==7 // it
- "Vuoi realmente rimuovere il gruppo %s?
"
- "Facendo così rimuoverai %u studenti da questo gruppo.";
-#elif L==8 // pl
- "Do you really want to remove the group %s?
"
- "W ten sposób usunie %u uczniów z tej grupy.";
-#elif L==9 // pt
- "Você realmente quer remover o grupo %s?
"
- "Ao fazer isso, você removerá %u estudantes desse grupo.";
-#elif L==10 // tr
- "Do you really want to remove the group %s?
"
- "Doing so will remove %u students from that group."; // Çeviri lazim!
+ "%s grubunu gerçekten kaldırmak istiyor musunuz?
"
+ "Bunu yaparsanız, gruba kayıtlı kullanıcılar artı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
"%s projesini gerçekten kaldı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 %ld?";
+ "De veres voleu eliminar la pregunta %s?";
#elif L==2 // de
- "Wollen Sie die Frage %ld wirklich entfernen?";
+ "Wollen Sie die Frage %s wirklich entfernen?";
#elif L==3 // en
- "Do you really want to remove the question %ld?";
+ "Do you really want to remove the question %s?";
#elif L==4 // es
- "¿Realmente desea eliminar la pregunta %ld?";
+ "¿Realmente desea eliminar la pregunta %s?";
#elif L==5 // fr
- "Voulez-vous vraiment supprimer la question %ld?";
+ "Voulez-vous vraiment supprimer la question %s?";
#elif L==6 // gn
- "¿Realmente desea eliminar la pregunta %ld?"; // Okoteve traducción
+ "¿Realmente desea eliminar la pregunta %s?"; // Okoteve traducción
#elif L==7 // it
- "Vuoi realmente rimuovere la domanda %ld?";
+ "Vuoi realmente rimuovere la domanda %s?";
#elif L==8 // pl
- "Czy na pewno chcesz usunąć pytanie %ld?";
+ "Czy na pewno chcesz usunąć pytanie %s?";
#elif L==9 // pt
- "Você realmente deseja remover a pergunta %ld?";
+ "Você realmente deseja remover a pergunta %s?";
#elif L==10 // tr
- "%ld sorusunu gerçekten kaldırmak istiyor musunuz?";
+ "%s sorusunu gerçekten kaldı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
"%s anketini gerçekten kaldı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 %s?
"
- "Si ho feu, també s'eliminarà un grup d'aquest tipus.";
+ "En fer-ho, també s'eliminaran els grups d'aquest tipus.";
#elif L==2 // de
"Möchten Sie den Typ der Gruppe %s wirklich entfernen?
"
- "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 %s?
"
- "Doing so will also remove one group of that type.";
+ "Doing so will also remove the groups of that type.";
#elif L==4 // es
"¿Realmente desea eliminar el tipo de grupo %s?
"
- "Si lo hace, eliminará también un grupo de ese tipo.";
+ "Si lo hace, eliminará también los grupos de ese tipo.";
#elif L==5 // fr
"Voulez-vous vraiment supprimer le type de groupe %s?
"
- "Cela supprimera également un groupe de ce type.";
+ "Cela supprimera également les groupes de ce type.";
#elif L==6 // gn
- "¿Realmente desea eliminar el tipo de grupo %s?
"
- "Si lo hace, eliminará también un grupo de ese tipo."; // Okoteve traducción
+ "¿Añetehápe piko reipe'ase pe tipo de grupo %s?
"
+ "Péicha jajapóramo ojeipe'áta avei umi aty upeichagua.";
#elif L==7 // it
"Vuoi realmente rimuovere il tipo di gruppo %s?
"
- "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 %s?
"
- "Spowoduje to takze usuniecie jednej grupie tego typu.";
+ "Czy na pewno chcesz usunąć typ grupy %s?
"
+ "Spowoduje to również usunięcie grup tego typu.";
#elif L==9 // pt
"Você realmente quer remover o tipo de grupo %s?
"
- "Isso também removerá um grupo desse tipo.";
+ "Isso também removerá os grupos desse tipo.";
#elif L==10 // tr
- "Do you really want to remove the type of group %s?
"
- "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 %s?
"
- "En fer-ho, també s'eliminaran %u grups d'aquest tipus.";
-#elif L==2 // de
- "Möchten Sie den Typ der Gruppe %s wirklich entfernen?
"
- "Dadurch werden auch %u Gruppen dieses Typs entfernt.";
-#elif L==3 // en
- "Do you really want to remove the type of group %s?
"
- "Doing so will also remove %u groups of that type.";
-#elif L==4 // es
- "¿Realmente desea eliminar el tipo de grupo %s?
"
- "Si lo hace, eliminará también %u grupos de ese tipo.";
-#elif L==5 // fr
- "Voulez-vous vraiment supprimer le type de groupe %s?
"
- "Cela supprimera également %u groupes de ce type.";
-#elif L==6 // gn
- "¿Realmente desea eliminar el tipo de grupo %s?
"
- "Si lo hace, eliminará también %u grupos de ese tipo."; // Okoteve traducción
-#elif L==7 // it
- "Vuoi realmente rimuovere il tipo di gruppo %s?
"
- "Facendo così rimuoverai anche %u gruppi di questo tipo.";
-#elif L==8 // pl
- "Do you really want to remove the type of group %s?
"
- "Spowoduje to równiez usuniecie grup %u tego typu.";
-#elif L==9 // pt
- "Você realmente quer remover o tipo de grupo %s?
"
- "Isso também removerá %u grupos desse tipo.";
-#elif L==10 // tr
- "Do you really want to remove the type of group %s?
"
- "Doing so will also remove %u groups of that type."; // Çeviri lazim!
+ "%s grubunun türünü gerçekten kaldırmak istiyor musunuz?
"
+ "Bunu yapmak, o türdeki grupları da kaldıracaktır.";
#endif
const char *Txt_Do_you_really_want_to_remove_your_photo =