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 =