From 7954f4bd8006933b8eea0bbb07de41f3eb7db851 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antonio=20Ca=C3=B1as=20Vargas?= Date: Sun, 11 Dec 2016 21:02:22 +0100 Subject: [PATCH] Version 16.96 --- swad_action.c | 10 ++-- swad_action.h | 119 +++++++++++++++++++++++---------------------- swad_assignment.c | 4 +- swad_assignment.h | 2 +- swad_changelog.h | 6 +-- swad_exam.c | 32 +++++++++++- swad_exam.h | 1 + swad_test_import.c | 2 +- swad_text.c | 21 ++++++++ 9 files changed, 125 insertions(+), 72 deletions(-) diff --git a/swad_action.c b/swad_action.c index 4cbd30df..3bee7193 100644 --- a/swad_action.c +++ b/swad_action.c @@ -837,6 +837,7 @@ Assessment: 686. ActEdiExaAnn Edit an exam announcement 687. ActRcvExaAnn Receive an exam announcement 688. ActPrnExaAnn Show an exam announcement ready to be printed + NEW. ActReqRemExaAnn Request the removal of an exam announcement 689. ActRemExaAnn Remove an exam announcement 690. ActChgToSeeMrk Change to see marks in course/group @@ -2127,7 +2128,7 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] = /* ActEdiOneAsg */{ 814,-1,TabUnk,ActSeeAsg ,0x110,0x100,0x000,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Asg_RequestCreatOrEditAsg ,NULL}, /* ActNewAsg */{ 803,-1,TabUnk,ActSeeAsg ,0x110,0x100,0x000,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Asg_RecFormAssignment ,NULL}, /* ActChgAsg */{ 815,-1,TabUnk,ActSeeAsg ,0x110,0x100,0x000,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Asg_RecFormAssignment ,NULL}, - /* ActReqRemAsg */{ 813,-1,TabUnk,ActSeeAsg ,0x110,0x100,0x000,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Asg_AskRemAssignment ,NULL}, + /* ActReqRemAsg */{ 813,-1,TabUnk,ActSeeAsg ,0x110,0x100,0x000,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Asg_ReqRemAssignment ,NULL}, /* ActRemAsg */{ 806,-1,TabUnk,ActSeeAsg ,0x110,0x100,0x000,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Asg_RemoveAssignment ,NULL}, /* ActHidAsg */{ 964,-1,TabUnk,ActSeeAsg ,0x110,0x100,0x000,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Asg_HideAssignment ,NULL}, /* ActShoAsg */{ 965,-1,TabUnk,ActSeeAsg ,0x110,0x100,0x000,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Asg_ShowAssignment ,NULL}, @@ -2244,6 +2245,7 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] = /* ActEdiExaAnn */{ 91,-1,TabUnk,ActSeeAllExaAnn ,0x110,0x100,0x000,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Exa_PutFrmEditAExamAnnouncement,NULL}, /* ActRcvExaAnn */{ 110,-1,TabUnk,ActSeeAllExaAnn ,0x110,0x100,0x000,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Exa_ReceiveExamAnnouncement ,NULL}, /* ActPrnExaAnn */{ 179,-1,TabUnk,ActSeeAllExaAnn ,0x1FF,0x1FF,0x000,Act_CONT_NORM,Act_BLNK_WINDOW,NULL ,Exa_PrintExamAnnouncement ,NULL}, + /* ActReqRemExaAnn */{1619,-1,TabUnk,ActSeeAllExaAnn ,0x110,0x100,0x000,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Exa_ReqRemoveExamAnnouncement ,NULL}, /* ActRemExaAnn */{ 187,-1,TabUnk,ActSeeAllExaAnn ,0x110,0x100,0x000,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Exa_RemoveExamAnnouncement ,NULL}, /* ActChgToSeeMrk */{1198,-1,TabUnk,ActSeeAdmMrk ,0x118,0x100,0x000,Act_CONT_NORM,Act_THIS_WINDOW,NULL ,Brw_ShowFileBrowserOrWorks ,NULL}, @@ -3982,7 +3984,7 @@ Act_Action_t Act_FromActCodToAction[1+Act_MAX_ACTION_COD] = // Do not reuse uniq ActSeeLstStdAtt, // #1074 ActPrnLstStdAtt, // #1075 ActRecAttMe, // #1076 - ActLogInLan, // #1077 + ActLogInLan, // #1077 ActSeeDocCrs, // #1078 ActSeeMrkCrs, // #1079 ActReqSeeUsrTstRes, // #1080 @@ -4155,7 +4157,6 @@ Act_Action_t Act_FromActCodToAction[1+Act_MAX_ACTION_COD] = // Do not reuse uniq ActSeeAdmDocDeg, // #1247 ActSeeAdmDocCtr, // #1248 ActSeeAdmDocIns, // #1249 - ActChgToSeeDocDeg, // #1250 ActSeeDocDeg, // #1251 ActExpSeeDocDeg, // #1252 @@ -4185,7 +4186,6 @@ Act_Action_t Act_FromActCodToAction[1+Act_MAX_ACTION_COD] = // Do not reuse uniq ActReqDatAdmDocDeg, // #1276 ActChgDatAdmDocDeg, // #1277 ActDowAdmDocDeg, // #1278 - ActChgToSeeDocCtr, // #1279 ActSeeDocCtr, // #1280 ActExpSeeDocCtr, // #1281 @@ -4215,7 +4215,6 @@ Act_Action_t Act_FromActCodToAction[1+Act_MAX_ACTION_COD] = // Do not reuse uniq ActReqDatAdmDocCtr, // #1305 ActChgDatAdmDocCtr, // #1306 ActDowAdmDocCtr, // #1307 - ActChgToSeeDocIns, // #1308 ActSeeDocIns, // #1309 ActExpSeeDocIns, // #1310 @@ -4527,6 +4526,7 @@ Act_Action_t Act_FromActCodToAction[1+Act_MAX_ACTION_COD] = // Do not reuse uniq ActLogInUsrAgdLan, // #1616 ActSeeMyPubAgd, // #1617 ActPrnAgdQR, // #1618 + ActReqRemExaAnn, // #1619 }; /*****************************************************************************/ diff --git a/swad_action.h b/swad_action.h index 906a52ec..597a3250 100644 --- a/swad_action.h +++ b/swad_action.h @@ -55,9 +55,9 @@ typedef enum typedef int Act_Action_t; // Must be a signed type, because -1 is used to indicate obsolete action -#define Act_NUM_ACTIONS (1+9+51+14+93+73+70+249+186+159+172+36+31+97) +#define Act_NUM_ACTIONS (1+9+51+14+93+73+70+249+187+159+172+36+31+97) -#define Act_MAX_ACTION_COD 1618 +#define Act_MAX_ACTION_COD 1619 #define Act_MAX_OPTIONS_IN_MENU_PER_TAB 11 @@ -847,69 +847,70 @@ typedef int Act_Action_t; // Must be a signed type, because -1 is used to indica #define ActEdiExaAnn (ActRcvRchTxtCrsLnk+127) #define ActRcvExaAnn (ActRcvRchTxtCrsLnk+128) #define ActPrnExaAnn (ActRcvRchTxtCrsLnk+129) -#define ActRemExaAnn (ActRcvRchTxtCrsLnk+130) +#define ActReqRemExaAnn (ActRcvRchTxtCrsLnk+130) +#define ActRemExaAnn (ActRcvRchTxtCrsLnk+131) -#define ActChgToSeeMrk (ActRcvRchTxtCrsLnk+131) +#define ActChgToSeeMrk (ActRcvRchTxtCrsLnk+132) -#define ActSeeMrkCrs (ActRcvRchTxtCrsLnk+132) -#define ActExpSeeMrkCrs (ActRcvRchTxtCrsLnk+133) -#define ActConSeeMrkCrs (ActRcvRchTxtCrsLnk+134) -#define ActReqDatSeeMrkCrs (ActRcvRchTxtCrsLnk+135) -#define ActSeeMyMrkCrs (ActRcvRchTxtCrsLnk+136) +#define ActSeeMrkCrs (ActRcvRchTxtCrsLnk+133) +#define ActExpSeeMrkCrs (ActRcvRchTxtCrsLnk+134) +#define ActConSeeMrkCrs (ActRcvRchTxtCrsLnk+135) +#define ActReqDatSeeMrkCrs (ActRcvRchTxtCrsLnk+136) +#define ActSeeMyMrkCrs (ActRcvRchTxtCrsLnk+137) -#define ActSeeMrkGrp (ActRcvRchTxtCrsLnk+137) -#define ActExpSeeMrkGrp (ActRcvRchTxtCrsLnk+138) -#define ActConSeeMrkGrp (ActRcvRchTxtCrsLnk+139) -#define ActReqDatSeeMrkGrp (ActRcvRchTxtCrsLnk+140) -#define ActSeeMyMrkGrp (ActRcvRchTxtCrsLnk+141) +#define ActSeeMrkGrp (ActRcvRchTxtCrsLnk+138) +#define ActExpSeeMrkGrp (ActRcvRchTxtCrsLnk+139) +#define ActConSeeMrkGrp (ActRcvRchTxtCrsLnk+140) +#define ActReqDatSeeMrkGrp (ActRcvRchTxtCrsLnk+141) +#define ActSeeMyMrkGrp (ActRcvRchTxtCrsLnk+142) -#define ActChgToAdmMrk (ActRcvRchTxtCrsLnk+142) +#define ActChgToAdmMrk (ActRcvRchTxtCrsLnk+143) -#define ActAdmMrkCrs (ActRcvRchTxtCrsLnk+143) -#define ActReqRemFilMrkCrs (ActRcvRchTxtCrsLnk+144) -#define ActRemFilMrkCrs (ActRcvRchTxtCrsLnk+145) -#define ActRemFolMrkCrs (ActRcvRchTxtCrsLnk+146) -#define ActCopMrkCrs (ActRcvRchTxtCrsLnk+147) -#define ActPasMrkCrs (ActRcvRchTxtCrsLnk+148) -#define ActRemTreMrkCrs (ActRcvRchTxtCrsLnk+149) -#define ActFrmCreMrkCrs (ActRcvRchTxtCrsLnk+150) -#define ActCreFolMrkCrs (ActRcvRchTxtCrsLnk+151) -#define ActRenFolMrkCrs (ActRcvRchTxtCrsLnk+152) -#define ActRcvFilMrkCrsDZ (ActRcvRchTxtCrsLnk+153) -#define ActRcvFilMrkCrsCla (ActRcvRchTxtCrsLnk+154) -#define ActExpAdmMrkCrs (ActRcvRchTxtCrsLnk+155) -#define ActConAdmMrkCrs (ActRcvRchTxtCrsLnk+156) -#define ActZIPAdmMrkCrs (ActRcvRchTxtCrsLnk+157) -#define ActShoMrkCrs (ActRcvRchTxtCrsLnk+158) -#define ActHidMrkCrs (ActRcvRchTxtCrsLnk+159) -#define ActReqDatAdmMrkCrs (ActRcvRchTxtCrsLnk+160) -#define ActChgDatAdmMrkCrs (ActRcvRchTxtCrsLnk+161) -#define ActDowAdmMrkCrs (ActRcvRchTxtCrsLnk+162) -#define ActChgNumRowHeaCrs (ActRcvRchTxtCrsLnk+163) -#define ActChgNumRowFooCrs (ActRcvRchTxtCrsLnk+164) +#define ActAdmMrkCrs (ActRcvRchTxtCrsLnk+144) +#define ActReqRemFilMrkCrs (ActRcvRchTxtCrsLnk+145) +#define ActRemFilMrkCrs (ActRcvRchTxtCrsLnk+146) +#define ActRemFolMrkCrs (ActRcvRchTxtCrsLnk+147) +#define ActCopMrkCrs (ActRcvRchTxtCrsLnk+148) +#define ActPasMrkCrs (ActRcvRchTxtCrsLnk+149) +#define ActRemTreMrkCrs (ActRcvRchTxtCrsLnk+150) +#define ActFrmCreMrkCrs (ActRcvRchTxtCrsLnk+151) +#define ActCreFolMrkCrs (ActRcvRchTxtCrsLnk+152) +#define ActRenFolMrkCrs (ActRcvRchTxtCrsLnk+153) +#define ActRcvFilMrkCrsDZ (ActRcvRchTxtCrsLnk+154) +#define ActRcvFilMrkCrsCla (ActRcvRchTxtCrsLnk+155) +#define ActExpAdmMrkCrs (ActRcvRchTxtCrsLnk+156) +#define ActConAdmMrkCrs (ActRcvRchTxtCrsLnk+157) +#define ActZIPAdmMrkCrs (ActRcvRchTxtCrsLnk+158) +#define ActShoMrkCrs (ActRcvRchTxtCrsLnk+159) +#define ActHidMrkCrs (ActRcvRchTxtCrsLnk+160) +#define ActReqDatAdmMrkCrs (ActRcvRchTxtCrsLnk+161) +#define ActChgDatAdmMrkCrs (ActRcvRchTxtCrsLnk+162) +#define ActDowAdmMrkCrs (ActRcvRchTxtCrsLnk+163) +#define ActChgNumRowHeaCrs (ActRcvRchTxtCrsLnk+164) +#define ActChgNumRowFooCrs (ActRcvRchTxtCrsLnk+165) -#define ActAdmMrkGrp (ActRcvRchTxtCrsLnk+165) -#define ActReqRemFilMrkGrp (ActRcvRchTxtCrsLnk+166) -#define ActRemFilMrkGrp (ActRcvRchTxtCrsLnk+167) -#define ActRemFolMrkGrp (ActRcvRchTxtCrsLnk+168) -#define ActCopMrkGrp (ActRcvRchTxtCrsLnk+169) -#define ActPasMrkGrp (ActRcvRchTxtCrsLnk+170) -#define ActRemTreMrkGrp (ActRcvRchTxtCrsLnk+171) -#define ActFrmCreMrkGrp (ActRcvRchTxtCrsLnk+172) -#define ActCreFolMrkGrp (ActRcvRchTxtCrsLnk+173) -#define ActRenFolMrkGrp (ActRcvRchTxtCrsLnk+174) -#define ActRcvFilMrkGrpDZ (ActRcvRchTxtCrsLnk+175) -#define ActRcvFilMrkGrpCla (ActRcvRchTxtCrsLnk+176) -#define ActExpAdmMrkGrp (ActRcvRchTxtCrsLnk+177) -#define ActConAdmMrkGrp (ActRcvRchTxtCrsLnk+178) -#define ActZIPAdmMrkGrp (ActRcvRchTxtCrsLnk+179) -#define ActShoMrkGrp (ActRcvRchTxtCrsLnk+180) -#define ActHidMrkGrp (ActRcvRchTxtCrsLnk+181) -#define ActReqDatAdmMrkGrp (ActRcvRchTxtCrsLnk+182) -#define ActChgDatAdmMrkGrp (ActRcvRchTxtCrsLnk+183) -#define ActDowAdmMrkGrp (ActRcvRchTxtCrsLnk+184) -#define ActChgNumRowHeaGrp (ActRcvRchTxtCrsLnk+185) -#define ActChgNumRowFooGrp (ActRcvRchTxtCrsLnk+186) +#define ActAdmMrkGrp (ActRcvRchTxtCrsLnk+166) +#define ActReqRemFilMrkGrp (ActRcvRchTxtCrsLnk+167) +#define ActRemFilMrkGrp (ActRcvRchTxtCrsLnk+168) +#define ActRemFolMrkGrp (ActRcvRchTxtCrsLnk+169) +#define ActCopMrkGrp (ActRcvRchTxtCrsLnk+170) +#define ActPasMrkGrp (ActRcvRchTxtCrsLnk+171) +#define ActRemTreMrkGrp (ActRcvRchTxtCrsLnk+172) +#define ActFrmCreMrkGrp (ActRcvRchTxtCrsLnk+173) +#define ActCreFolMrkGrp (ActRcvRchTxtCrsLnk+174) +#define ActRenFolMrkGrp (ActRcvRchTxtCrsLnk+175) +#define ActRcvFilMrkGrpDZ (ActRcvRchTxtCrsLnk+176) +#define ActRcvFilMrkGrpCla (ActRcvRchTxtCrsLnk+177) +#define ActExpAdmMrkGrp (ActRcvRchTxtCrsLnk+178) +#define ActConAdmMrkGrp (ActRcvRchTxtCrsLnk+179) +#define ActZIPAdmMrkGrp (ActRcvRchTxtCrsLnk+180) +#define ActShoMrkGrp (ActRcvRchTxtCrsLnk+181) +#define ActHidMrkGrp (ActRcvRchTxtCrsLnk+182) +#define ActReqDatAdmMrkGrp (ActRcvRchTxtCrsLnk+183) +#define ActChgDatAdmMrkGrp (ActRcvRchTxtCrsLnk+184) +#define ActDowAdmMrkGrp (ActRcvRchTxtCrsLnk+185) +#define ActChgNumRowHeaGrp (ActRcvRchTxtCrsLnk+186) +#define ActChgNumRowFooGrp (ActRcvRchTxtCrsLnk+187) /*****************************************************************************/ /******************************* Users tab ***********************************/ diff --git a/swad_assignment.c b/swad_assignment.c index 58fbbac4..ef4a6672 100644 --- a/swad_assignment.c +++ b/swad_assignment.c @@ -894,10 +894,10 @@ long Asg_GetParamAsgCod (void) } /*****************************************************************************/ -/************ Ask for confirmation of removing of an assignment **************/ +/************* Ask for confirmation of removing an assignment ****************/ /*****************************************************************************/ -void Asg_AskRemAssignment (void) +void Asg_ReqRemAssignment (void) { extern const char *Txt_Do_you_really_want_to_remove_the_assignment_X; extern const char *Txt_Remove_assignment; diff --git a/swad_assignment.h b/swad_assignment.h index c945fe49..8c1fc918 100644 --- a/swad_assignment.h +++ b/swad_assignment.h @@ -91,7 +91,7 @@ void Asg_FreeListAssignments (void); void Asg_GetNotifAssignment (char *SummaryStr,char **ContentStr,long AsgCod,unsigned MaxChars,bool GetContent); long Asg_GetParamAsgCod (void); -void Asg_AskRemAssignment (void); +void Asg_ReqRemAssignment (void); void Asg_RemoveAssignment (void); void Asg_HideAssignment (void); void Asg_ShowAssignment (void); diff --git a/swad_changelog.h b/swad_changelog.h index 925b0d8b..5a4da3e3 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -185,16 +185,16 @@ /****************************** Public constants *****************************/ /*****************************************************************************/ -#define Log_PLATFORM_VERSION "SWAD 16.95.2 (2016-12-11)" +#define Log_PLATFORM_VERSION "SWAD 16.96 (2016-12-11)" #define CSS_FILE "swad16.94.1.css" #define JS_FILE "swad16.90.2.js" // Number of lines (includes comments but not blank lines) has been got with the following command: // nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*?.h sql/swad*.sql | tail -1 /* - Version 16.96: Dec 11, 2016 Now removing an announcement of exam requires confirmation. (? lines) + Version 16.96: Dec 11, 2016 Now removing an announcement of exam requires confirmation. (210563 lines) 1 change necessary in database: -INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1619','es','N',''); +INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1619','es','N','Solicitar eliminación de convocatoria'); Version 16.95.2: Dec 11, 2016 Code refactoring related with notices. (210514 lines) Version 16.95.1: Dec 11, 2016 Code refactoring related with global announcements. (210534 lines) diff --git a/swad_exam.c b/swad_exam.c index 091d4ed4..5bcaad58 100644 --- a/swad_exam.c +++ b/swad_exam.c @@ -365,6 +365,36 @@ void Exa_PrintExamAnnouncement (void) /************************ Remove an exam announcement ************************/ /*****************************************************************************/ +void Exa_ReqRemoveExamAnnouncement (void) + { + extern const char *Txt_Do_you_really_want_to_remove_the_following_announcement_of_exam; + extern const char *Txt_Remove; + long ExaCod; + + /***** Get the code of the exam announcement *****/ + if ((ExaCod = Exa_GetParamExaCod ()) <= 0) + Lay_ShowErrorAndExit ("Code of exam announcement is missing."); + + /***** Message *****/ + Lay_ShowAlert (Lay_WARNING,Txt_Do_you_really_want_to_remove_the_following_announcement_of_exam); + + /***** View announcement *****/ + Exa_AllocMemExamAnnouncement (); + Exa_GetDataExamAnnouncementFromDB (ExaCod); + Exa_ShowExamAnnouncement (ExaCod,Exa_NORMAL_VIEW); + Exa_FreeMemExamAnnouncement (); + + /***** Button of confirmation of removing *****/ + Act_FormStart (ActRemExaAnn); + Exa_PutHiddenParamExaCod (ExaCod); + Lay_PutRemoveButton (Txt_Remove); + Act_FormEnd (); + } + +/*****************************************************************************/ +/************************ Remove an exam announcement ************************/ +/*****************************************************************************/ + void Exa_RemoveExamAnnouncement (void) { extern const char *Txt_Announcement_of_exam_removed; @@ -1371,7 +1401,7 @@ static void Exa_PutIconsExamAnnouncement (void) Gbl.Usrs.Me.LoggedRole == Rol_SYS_ADM) { /***** Link to remove this exam announcement *****/ - Lay_PutContextualLink (ActRemExaAnn,Exa_PutParamExaCodToEdit, + Lay_PutContextualLink (ActReqRemExaAnn,Exa_PutParamExaCodToEdit, "remove-on64x64.png", Txt_Remove,NULL, NULL); diff --git a/swad_exam.h b/swad_exam.h index 7cdedcdf..b9661a92 100644 --- a/swad_exam.h +++ b/swad_exam.h @@ -54,6 +54,7 @@ typedef enum void Exa_PutFrmEditAExamAnnouncement (void); void Exa_ReceiveExamAnnouncement (void); void Exa_PrintExamAnnouncement (void); +void Exa_ReqRemoveExamAnnouncement (void); void Exa_RemoveExamAnnouncement (void); void Exa_FreeMemExamAnnouncement (void); void Exa_FreeListExamAnnouncements (void); diff --git a/swad_test_import.c b/swad_test_import.c index 69e2267e..925ea555 100644 --- a/swad_test_import.c +++ b/swad_test_import.c @@ -255,7 +255,7 @@ void TsI_CreateXML (unsigned long NumRows,MYSQL_RES *mysql_res) fclose (Gbl.Test.XML.FileXML); /***** Return to start of query result *****/ - mysql_data_seek (mysql_res, 0); + mysql_data_seek (mysql_res,0); /***** Write the link to XML file *****/ fprintf (Gbl.F.Out,"", diff --git a/swad_text.c b/swad_text.c index 1ad83915..d70c29eb 100644 --- a/swad_text.c +++ b/swad_text.c @@ -8845,6 +8845,27 @@ const char *Txt_Do_you_really_want_to_remove_the_folder_X = // Warning: it is ve " o diretório %s e todo o seu conteúdo?"; #endif +const char *Txt_Do_you_really_want_to_remove_the_following_announcement_of_exam = +#if L==1 + "De veres voleu eliminar la següent convocatòria d'examen?"; +#elif L==2 + "Wollen Sie wirklich, um die folgende Aufruf für Prüfung?"; +#elif L==3 + "Do you really want to remove the following announcement of exam?"; +#elif L==4 + "¿Realmente desea eliminar la siguiente convocatoria de examen?"; +#elif L==5 + "Voulez-vous vraiment supprimer la convocation à un examen suivante?"; +#elif L==6 + "¿Realmente desea eliminar la siguiente convocatoria de examen?"; // Okoteve traducción +#elif L==7 + "Vuoi realmente rimuovere il seguente appello d'esame?"; +#elif L==8 + "Czy na pewno chcesz usunąć następującą zapowiedź egzaminu?"; +#elif L==9 + "Você realmente deseja remover a seguinte chamada para exame?"; +#endif + const char *Txt_Do_you_really_want_to_remove_the_following_notice = #if L==1 "De veres voleu eliminar el següent avís?";