From 6bd23ad1dfc67068b424439028308ba2898b2c3c Mon Sep 17 00:00:00 2001 From: acanas Date: Sat, 16 May 2020 14:01:51 +0200 Subject: [PATCH] Version19.232 --- swad_action.c | 34 ++--- swad_action.h | 217 ++++++++++++++-------------- swad_changelog.h | 6 +- swad_menu.c | 11 +- swad_text.c | 342 +++++++++++++++++++++++++-------------------- swad_text_action.c | 232 +++++++++++++++--------------- 6 files changed, 444 insertions(+), 398 deletions(-) diff --git a/swad_action.c b/swad_action.c index 2f30900ce..9caa8f562 100644 --- a/swad_action.c +++ b/swad_action.c @@ -547,11 +547,12 @@ const struct Act_Actions Act_Actions[Act_NUM_ACTIONS] = [ActSeeAss ] = { 15, 0,TabAss,ActSeeAss ,0x3F8,0x3C7, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Inf_ShowInfo ,"info" }, [ActSeeAsg ] = { 801, 1,TabAss,ActSeeAsg ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Asg_SeeAssignments ,"edit" }, [ActSeePrj ] = {1674, 2,TabAss,ActSeePrj ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prj_SeeProjects ,"file-invoice" }, - [ActReqTst ] = { 103, 3,TabAss,ActReqTst ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Tst_RequestTest ,"check" }, - [ActSeeAllExa ] = {1848, 4,TabAss,ActSeeAllExa ,0x200,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Exa_SeeAllExams ,"file-signature" }, - [ActSeeAllGam ] = {1649, 4,TabAss,ActSeeAllGam ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Gam_SeeAllGames ,"gamepad" }, - [ActSeeAllSvy ] = { 966, 5,TabAss,ActSeeAllSvy ,0x3F8,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Svy_SeeAllSurveys ,"poll" }, - [ActSeeAllExaAnn ] = { 85, 6,TabAss,ActSeeAllExaAnn ,0x3F8,0x3C7, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaAnn_ListExamAnnsSee,"bullhorn" }, + [ActSeeAllExaAnn ] = { 85, 3,TabAss,ActSeeAllExaAnn ,0x3F8,0x3C7, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,ExaAnn_ListExamAnnsSee ,"bullhorn" }, + [ActEdiTstQst ] = { 104, 4,TabAss,ActEdiTstQst ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Dat_SetIniEndDates ,Tst_RequestEditTests ,"tasks" }, + [ActReqTst ] = { 103, 5,TabAss,ActReqTst ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Tst_RequestTest ,"check" }, + [ActSeeAllExa ] = {1848, 6,TabAss,ActSeeAllExa ,0x200,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Exa_SeeAllExams ,"file-signature" }, + [ActSeeAllGam ] = {1649, 7,TabAss,ActSeeAllGam ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Gam_SeeAllGames ,"gamepad" }, + [ActSeeAllSvy ] = { 966, 8,TabAss,ActSeeAllSvy ,0x3F8,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,0x3C0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Svy_SeeAllSurveys ,"poll" }, // Actions not in menu: [ActEdiAss ] = { 69,-1,TabUnk,ActSeeAss ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Inf_FormsToSelSendInfo ,NULL}, @@ -648,22 +649,21 @@ const struct Act_Actions Act_Actions[Act_NUM_ACTIONS] = [ActChgDatAssPrj ] = {1733,-1,TabUnk,ActSeePrj ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Brw_ChgFileMetadata ,NULL}, [ActDowAssPrj ] = {1734,-1,TabUnk,ActSeePrj ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_DOWNLD_FILE,Brw_DownloadFile ,NULL ,NULL}, + [ActEdiOneTstQst ] = { 105,-1,TabUnk,ActEdiTstQst ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Tst_ShowFormEditOneQst ,NULL}, + [ActReqImpTstQst ] = {1007,-1,TabUnk,ActEdiTstQst ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,TsI_ShowFormImportQstsFromXML ,NULL}, + [ActImpTstQst ] = {1008,-1,TabUnk,ActEdiTstQst ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_DATA,Act_BRW_1ST_TAB,NULL ,TsI_ImportQstsFromXML ,NULL}, + [ActLstTstQst ] = { 132,-1,TabUnk,ActEdiTstQst ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Tst_ListQuestionsToEdit ,NULL}, + [ActRcvTstQst ] = { 126,-1,TabUnk,ActEdiTstQst ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_DATA,Act_BRW_1ST_TAB,NULL ,Tst_ReceiveQst ,NULL}, + [ActReqRemSevTstQst ] = {1835,-1,TabUnk,ActEdiTstQst ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Tst_RequestRemoveSelectedQsts ,NULL}, + [ActRemSevTstQst ] = {1836,-1,TabUnk,ActEdiTstQst ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Tst_RemoveSelectedQsts ,NULL}, + [ActReqRemOneTstQst ] = {1523,-1,TabUnk,ActEdiTstQst ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Tst_RequestRemoveOneQst ,NULL}, + [ActRemOneTstQst ] = { 133,-1,TabUnk,ActEdiTstQst ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Tst_RemoveOneQst ,NULL}, + [ActChgShfTstQst ] = { 455,-1,TabUnk,ActEdiTstQst ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Tst_ChangeShuffleQst ,NULL}, + [ActSeeTst ] = { 29,-1,TabUnk,ActReqTst ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Tst_ShowNewTest ,NULL}, [ActReqAssTst ] = {1837,-1,TabUnk,ActReqTst ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Tst_ReceiveTestDraft ,NULL}, [ActAssTst ] = { 98,-1,TabUnk,ActReqTst ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Tst_AssessTest ,NULL}, - [ActEdiTstQst ] = { 104,-1,TabUnk,ActReqTst ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,Dat_SetIniEndDates ,Tst_RequestEditTests ,NULL}, - [ActEdiOneTstQst ] = { 105,-1,TabUnk,ActReqTst ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Tst_ShowFormEditOneQst ,NULL}, - [ActReqImpTstQst ] = {1007,-1,TabUnk,ActReqTst ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,TsI_ShowFormImportQstsFromXML ,NULL}, - [ActImpTstQst ] = {1008,-1,TabUnk,ActReqTst ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_DATA,Act_BRW_1ST_TAB,NULL ,TsI_ImportQstsFromXML ,NULL}, - [ActLstTstQst ] = { 132,-1,TabUnk,ActReqTst ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Tst_ListQuestionsToEdit ,NULL}, - [ActRcvTstQst ] = { 126,-1,TabUnk,ActReqTst ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_DATA,Act_BRW_1ST_TAB,NULL ,Tst_ReceiveQst ,NULL}, - [ActReqRemSevTstQst ] = {1835,-1,TabUnk,ActReqTst ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Tst_RequestRemoveSelectedQsts ,NULL}, - [ActRemSevTstQst ] = {1836,-1,TabUnk,ActReqTst ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Tst_RemoveSelectedQsts ,NULL}, - [ActReqRemOneTstQst ] = {1523,-1,TabUnk,ActReqTst ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Tst_RequestRemoveOneQst ,NULL}, - [ActRemOneTstQst ] = { 133,-1,TabUnk,ActReqTst ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Tst_RemoveOneQst ,NULL}, - [ActChgShfTstQst ] = { 455,-1,TabUnk,ActReqTst ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Tst_ChangeShuffleQst ,NULL}, - [ActCfgTst ] = { 451,-1,TabUnk,ActReqTst ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Tst_ShowFormConfig ,NULL}, [ActEnableTag ] = { 453,-1,TabUnk,ActReqTst ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Tst_EnableTag ,NULL}, [ActDisableTag ] = { 452,-1,TabUnk,ActReqTst ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Tst_DisableTag ,NULL}, diff --git a/swad_action.h b/swad_action.h index 6d961f592..772e9aeac 100644 --- a/swad_action.h +++ b/swad_action.h @@ -515,121 +515,122 @@ typedef signed int Act_Action_t; // Must be a signed type, because -1 is used to #define ActSeeAss (ActChgCrsTT1stDay + 1) #define ActSeeAsg (ActChgCrsTT1stDay + 2) #define ActSeePrj (ActChgCrsTT1stDay + 3) -#define ActReqTst (ActChgCrsTT1stDay + 4) -#define ActSeeAllExa (ActChgCrsTT1stDay + 5) -#define ActSeeAllGam (ActChgCrsTT1stDay + 6) -#define ActSeeAllSvy (ActChgCrsTT1stDay + 7) -#define ActSeeAllExaAnn (ActChgCrsTT1stDay + 8) +#define ActSeeAllExaAnn (ActChgCrsTT1stDay + 4) +#define ActEdiTstQst (ActChgCrsTT1stDay + 5) +#define ActReqTst (ActChgCrsTT1stDay + 6) +#define ActSeeAllExa (ActChgCrsTT1stDay + 7) +#define ActSeeAllGam (ActChgCrsTT1stDay + 8) +#define ActSeeAllSvy (ActChgCrsTT1stDay + 9) // Secondary actions -#define ActEdiAss (ActChgCrsTT1stDay + 9) -#define ActChgFrcReaAss (ActChgCrsTT1stDay + 10) -#define ActChgHavReaAss (ActChgCrsTT1stDay + 11) -#define ActSelInfSrcAss (ActChgCrsTT1stDay + 12) -#define ActRcvURLAss (ActChgCrsTT1stDay + 13) -#define ActRcvPagAss (ActChgCrsTT1stDay + 14) -#define ActEditorAss (ActChgCrsTT1stDay + 15) -#define ActPlaTxtEdiAss (ActChgCrsTT1stDay + 16) -#define ActRchTxtEdiAss (ActChgCrsTT1stDay + 17) -#define ActRcvPlaTxtAss (ActChgCrsTT1stDay + 18) -#define ActRcvRchTxtAss (ActChgCrsTT1stDay + 19) +#define ActEdiAss (ActChgCrsTT1stDay + 10) +#define ActChgFrcReaAss (ActChgCrsTT1stDay + 11) +#define ActChgHavReaAss (ActChgCrsTT1stDay + 12) +#define ActSelInfSrcAss (ActChgCrsTT1stDay + 13) +#define ActRcvURLAss (ActChgCrsTT1stDay + 14) +#define ActRcvPagAss (ActChgCrsTT1stDay + 15) +#define ActEditorAss (ActChgCrsTT1stDay + 16) +#define ActPlaTxtEdiAss (ActChgCrsTT1stDay + 17) +#define ActRchTxtEdiAss (ActChgCrsTT1stDay + 18) +#define ActRcvPlaTxtAss (ActChgCrsTT1stDay + 19) +#define ActRcvRchTxtAss (ActChgCrsTT1stDay + 20) -#define ActFrmNewAsg (ActChgCrsTT1stDay + 20) -#define ActEdiOneAsg (ActChgCrsTT1stDay + 21) -#define ActPrnOneAsg (ActChgCrsTT1stDay + 22) -#define ActNewAsg (ActChgCrsTT1stDay + 23) -#define ActChgAsg (ActChgCrsTT1stDay + 24) -#define ActReqRemAsg (ActChgCrsTT1stDay + 25) -#define ActRemAsg (ActChgCrsTT1stDay + 26) -#define ActHidAsg (ActChgCrsTT1stDay + 27) -#define ActShoAsg (ActChgCrsTT1stDay + 28) +#define ActFrmNewAsg (ActChgCrsTT1stDay + 21) +#define ActEdiOneAsg (ActChgCrsTT1stDay + 22) +#define ActPrnOneAsg (ActChgCrsTT1stDay + 23) +#define ActNewAsg (ActChgCrsTT1stDay + 24) +#define ActChgAsg (ActChgCrsTT1stDay + 25) +#define ActReqRemAsg (ActChgCrsTT1stDay + 26) +#define ActRemAsg (ActChgCrsTT1stDay + 27) +#define ActHidAsg (ActChgCrsTT1stDay + 28) +#define ActShoAsg (ActChgCrsTT1stDay + 29) -#define ActReqUsrPrj (ActChgCrsTT1stDay + 29) -#define ActSeeTblAllPrj (ActChgCrsTT1stDay + 30) -#define ActCfgPrj (ActChgCrsTT1stDay + 31) -#define ActRcvCfgPrj (ActChgCrsTT1stDay + 32) -#define ActReqLckAllPrj (ActChgCrsTT1stDay + 33) -#define ActReqUnlAllPrj (ActChgCrsTT1stDay + 34) -#define ActLckAllPrj (ActChgCrsTT1stDay + 35) -#define ActUnlAllPrj (ActChgCrsTT1stDay + 36) -#define ActFrmNewPrj (ActChgCrsTT1stDay + 37) -#define ActEdiOnePrj (ActChgCrsTT1stDay + 38) -#define ActPrnOnePrj (ActChgCrsTT1stDay + 39) -#define ActNewPrj (ActChgCrsTT1stDay + 40) -#define ActChgPrj (ActChgCrsTT1stDay + 41) -#define ActReqRemPrj (ActChgCrsTT1stDay + 42) -#define ActRemPrj (ActChgCrsTT1stDay + 43) -#define ActHidPrj (ActChgCrsTT1stDay + 44) -#define ActShoPrj (ActChgCrsTT1stDay + 45) -#define ActLckPrj (ActChgCrsTT1stDay + 46) -#define ActUnlPrj (ActChgCrsTT1stDay + 47) -#define ActReqAddStdPrj (ActChgCrsTT1stDay + 48) -#define ActReqAddTutPrj (ActChgCrsTT1stDay + 49) -#define ActReqAddEvlPrj (ActChgCrsTT1stDay + 50) -#define ActAddStdPrj (ActChgCrsTT1stDay + 51) -#define ActAddTutPrj (ActChgCrsTT1stDay + 52) -#define ActAddEvlPrj (ActChgCrsTT1stDay + 53) -#define ActReqRemStdPrj (ActChgCrsTT1stDay + 54) -#define ActReqRemTutPrj (ActChgCrsTT1stDay + 55) -#define ActReqRemEvlPrj (ActChgCrsTT1stDay + 56) -#define ActRemStdPrj (ActChgCrsTT1stDay + 57) -#define ActRemTutPrj (ActChgCrsTT1stDay + 58) -#define ActRemEvlPrj (ActChgCrsTT1stDay + 59) +#define ActReqUsrPrj (ActChgCrsTT1stDay + 30) +#define ActSeeTblAllPrj (ActChgCrsTT1stDay + 31) +#define ActCfgPrj (ActChgCrsTT1stDay + 32) +#define ActRcvCfgPrj (ActChgCrsTT1stDay + 33) +#define ActReqLckAllPrj (ActChgCrsTT1stDay + 34) +#define ActReqUnlAllPrj (ActChgCrsTT1stDay + 35) +#define ActLckAllPrj (ActChgCrsTT1stDay + 36) +#define ActUnlAllPrj (ActChgCrsTT1stDay + 37) +#define ActFrmNewPrj (ActChgCrsTT1stDay + 38) +#define ActEdiOnePrj (ActChgCrsTT1stDay + 39) +#define ActPrnOnePrj (ActChgCrsTT1stDay + 40) +#define ActNewPrj (ActChgCrsTT1stDay + 41) +#define ActChgPrj (ActChgCrsTT1stDay + 42) +#define ActReqRemPrj (ActChgCrsTT1stDay + 43) +#define ActRemPrj (ActChgCrsTT1stDay + 44) +#define ActHidPrj (ActChgCrsTT1stDay + 45) +#define ActShoPrj (ActChgCrsTT1stDay + 46) +#define ActLckPrj (ActChgCrsTT1stDay + 47) +#define ActUnlPrj (ActChgCrsTT1stDay + 48) +#define ActReqAddStdPrj (ActChgCrsTT1stDay + 49) +#define ActReqAddTutPrj (ActChgCrsTT1stDay + 50) +#define ActReqAddEvlPrj (ActChgCrsTT1stDay + 51) +#define ActAddStdPrj (ActChgCrsTT1stDay + 52) +#define ActAddTutPrj (ActChgCrsTT1stDay + 53) +#define ActAddEvlPrj (ActChgCrsTT1stDay + 54) +#define ActReqRemStdPrj (ActChgCrsTT1stDay + 55) +#define ActReqRemTutPrj (ActChgCrsTT1stDay + 56) +#define ActReqRemEvlPrj (ActChgCrsTT1stDay + 57) +#define ActRemStdPrj (ActChgCrsTT1stDay + 58) +#define ActRemTutPrj (ActChgCrsTT1stDay + 59) +#define ActRemEvlPrj (ActChgCrsTT1stDay + 60) -#define ActAdmDocPrj (ActChgCrsTT1stDay + 60) -#define ActReqRemFilDocPrj (ActChgCrsTT1stDay + 61) -#define ActRemFilDocPrj (ActChgCrsTT1stDay + 62) -#define ActRemFolDocPrj (ActChgCrsTT1stDay + 63) -#define ActCopDocPrj (ActChgCrsTT1stDay + 64) -#define ActPasDocPrj (ActChgCrsTT1stDay + 65) -#define ActRemTreDocPrj (ActChgCrsTT1stDay + 66) -#define ActFrmCreDocPrj (ActChgCrsTT1stDay + 67) -#define ActCreFolDocPrj (ActChgCrsTT1stDay + 68) -#define ActCreLnkDocPrj (ActChgCrsTT1stDay + 69) -#define ActRenFolDocPrj (ActChgCrsTT1stDay + 70) -#define ActRcvFilDocPrjDZ (ActChgCrsTT1stDay + 71) -#define ActRcvFilDocPrjCla (ActChgCrsTT1stDay + 72) -#define ActExpDocPrj (ActChgCrsTT1stDay + 73) -#define ActConDocPrj (ActChgCrsTT1stDay + 74) -#define ActZIPDocPrj (ActChgCrsTT1stDay + 75) -#define ActReqDatDocPrj (ActChgCrsTT1stDay + 76) -#define ActChgDatDocPrj (ActChgCrsTT1stDay + 77) -#define ActDowDocPrj (ActChgCrsTT1stDay + 78) +#define ActAdmDocPrj (ActChgCrsTT1stDay + 61) +#define ActReqRemFilDocPrj (ActChgCrsTT1stDay + 62) +#define ActRemFilDocPrj (ActChgCrsTT1stDay + 63) +#define ActRemFolDocPrj (ActChgCrsTT1stDay + 64) +#define ActCopDocPrj (ActChgCrsTT1stDay + 65) +#define ActPasDocPrj (ActChgCrsTT1stDay + 66) +#define ActRemTreDocPrj (ActChgCrsTT1stDay + 67) +#define ActFrmCreDocPrj (ActChgCrsTT1stDay + 68) +#define ActCreFolDocPrj (ActChgCrsTT1stDay + 69) +#define ActCreLnkDocPrj (ActChgCrsTT1stDay + 70) +#define ActRenFolDocPrj (ActChgCrsTT1stDay + 71) +#define ActRcvFilDocPrjDZ (ActChgCrsTT1stDay + 72) +#define ActRcvFilDocPrjCla (ActChgCrsTT1stDay + 73) +#define ActExpDocPrj (ActChgCrsTT1stDay + 74) +#define ActConDocPrj (ActChgCrsTT1stDay + 75) +#define ActZIPDocPrj (ActChgCrsTT1stDay + 76) +#define ActReqDatDocPrj (ActChgCrsTT1stDay + 77) +#define ActChgDatDocPrj (ActChgCrsTT1stDay + 78) +#define ActDowDocPrj (ActChgCrsTT1stDay + 79) -#define ActAdmAssPrj (ActChgCrsTT1stDay + 79) -#define ActReqRemFilAssPrj (ActChgCrsTT1stDay + 80) -#define ActRemFilAssPrj (ActChgCrsTT1stDay + 81) -#define ActRemFolAssPrj (ActChgCrsTT1stDay + 82) -#define ActCopAssPrj (ActChgCrsTT1stDay + 83) -#define ActPasAssPrj (ActChgCrsTT1stDay + 84) -#define ActRemTreAssPrj (ActChgCrsTT1stDay + 85) -#define ActFrmCreAssPrj (ActChgCrsTT1stDay + 86) -#define ActCreFolAssPrj (ActChgCrsTT1stDay + 87) -#define ActCreLnkAssPrj (ActChgCrsTT1stDay + 88) -#define ActRenFolAssPrj (ActChgCrsTT1stDay + 89) -#define ActRcvFilAssPrjDZ (ActChgCrsTT1stDay + 90) -#define ActRcvFilAssPrjCla (ActChgCrsTT1stDay + 91) -#define ActExpAssPrj (ActChgCrsTT1stDay + 92) -#define ActConAssPrj (ActChgCrsTT1stDay + 93) -#define ActZIPAssPrj (ActChgCrsTT1stDay + 94) -#define ActReqDatAssPrj (ActChgCrsTT1stDay + 95) -#define ActChgDatAssPrj (ActChgCrsTT1stDay + 96) -#define ActDowAssPrj (ActChgCrsTT1stDay + 97) +#define ActAdmAssPrj (ActChgCrsTT1stDay + 80) +#define ActReqRemFilAssPrj (ActChgCrsTT1stDay + 81) +#define ActRemFilAssPrj (ActChgCrsTT1stDay + 82) +#define ActRemFolAssPrj (ActChgCrsTT1stDay + 83) +#define ActCopAssPrj (ActChgCrsTT1stDay + 84) +#define ActPasAssPrj (ActChgCrsTT1stDay + 85) +#define ActRemTreAssPrj (ActChgCrsTT1stDay + 86) +#define ActFrmCreAssPrj (ActChgCrsTT1stDay + 87) +#define ActCreFolAssPrj (ActChgCrsTT1stDay + 88) +#define ActCreLnkAssPrj (ActChgCrsTT1stDay + 89) +#define ActRenFolAssPrj (ActChgCrsTT1stDay + 90) +#define ActRcvFilAssPrjDZ (ActChgCrsTT1stDay + 91) +#define ActRcvFilAssPrjCla (ActChgCrsTT1stDay + 92) +#define ActExpAssPrj (ActChgCrsTT1stDay + 93) +#define ActConAssPrj (ActChgCrsTT1stDay + 94) +#define ActZIPAssPrj (ActChgCrsTT1stDay + 95) +#define ActReqDatAssPrj (ActChgCrsTT1stDay + 96) +#define ActChgDatAssPrj (ActChgCrsTT1stDay + 97) +#define ActDowAssPrj (ActChgCrsTT1stDay + 98) -#define ActSeeTst (ActChgCrsTT1stDay + 98) -#define ActReqAssTst (ActChgCrsTT1stDay + 99) -#define ActAssTst (ActChgCrsTT1stDay + 100) -#define ActEdiTstQst (ActChgCrsTT1stDay + 101) -#define ActEdiOneTstQst (ActChgCrsTT1stDay + 102) -#define ActReqImpTstQst (ActChgCrsTT1stDay + 103) -#define ActImpTstQst (ActChgCrsTT1stDay + 104) -#define ActLstTstQst (ActChgCrsTT1stDay + 105) -#define ActRcvTstQst (ActChgCrsTT1stDay + 106) -#define ActReqRemSevTstQst (ActChgCrsTT1stDay + 107) -#define ActRemSevTstQst (ActChgCrsTT1stDay + 108) -#define ActReqRemOneTstQst (ActChgCrsTT1stDay + 109) -#define ActRemOneTstQst (ActChgCrsTT1stDay + 110) -#define ActChgShfTstQst (ActChgCrsTT1stDay + 111) +#define ActEdiOneTstQst (ActChgCrsTT1stDay + 99) +#define ActReqImpTstQst (ActChgCrsTT1stDay + 100) +#define ActImpTstQst (ActChgCrsTT1stDay + 101) +#define ActLstTstQst (ActChgCrsTT1stDay + 102) +#define ActRcvTstQst (ActChgCrsTT1stDay + 103) +#define ActReqRemSevTstQst (ActChgCrsTT1stDay + 104) +#define ActRemSevTstQst (ActChgCrsTT1stDay + 105) +#define ActReqRemOneTstQst (ActChgCrsTT1stDay + 106) +#define ActRemOneTstQst (ActChgCrsTT1stDay + 107) +#define ActChgShfTstQst (ActChgCrsTT1stDay + 108) + +#define ActSeeTst (ActChgCrsTT1stDay + 109) +#define ActReqAssTst (ActChgCrsTT1stDay + 110) +#define ActAssTst (ActChgCrsTT1stDay + 111) #define ActCfgTst (ActChgCrsTT1stDay + 112) #define ActEnableTag (ActChgCrsTT1stDay + 113) #define ActDisableTag (ActChgCrsTT1stDay + 114) diff --git a/swad_changelog.h b/swad_changelog.h index 53baf2a6f..794d65d23 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -548,10 +548,14 @@ enscript -2 --landscape --color --file-align=2 --highlight --line-numbers -o - * En OpenSWAD: ps2pdf source.ps destination.pdf */ -#define Log_PLATFORM_VERSION "SWAD 19.231 (2020-05-16)" +#define Log_PLATFORM_VERSION "SWAD 19.232 (2020-05-16)" #define CSS_FILE "swad19.230.1.css" #define JS_FILE "swad19.230.3.js" /* +TODO: Comprobar si el directorio público que devuelve Ses_GetPublicDirFromCache sigue existiendo. +// Si no existe, hay que crear un nuevo directorio y meterlo en cache + + Version 19.232: May 16, 2020 New option to edit questions separated from tests. (301000 lines) Version 19.231: May 16, 2020 Fixed bugs and code refactoring in exam results. (300956 lines) Version 19.230.3: May 15, 2020 Update maths in exam prints when user answers. (301037 lines) Version 19.230.2: May 15, 2020 Changes in layout of exam prints. diff --git a/swad_menu.c b/swad_menu.c index c9a3c76c4..f21721a92 100644 --- a/swad_menu.c +++ b/swad_menu.c @@ -115,11 +115,12 @@ static const Act_Action_t Mnu_MenuActions[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_ [ 0] = ActSeeAss, [ 1] = ActSeeAsg, [ 2] = ActSeePrj, - [ 3] = ActReqTst, - [ 4] = ActSeeAllExa, - [ 5] = ActSeeAllGam, - [ 6] = ActSeeAllSvy, - [ 7] = ActSeeAllExaAnn, + [ 3] = ActSeeAllExaAnn, + [ 4] = ActEdiTstQst, + [ 5] = ActReqTst, + [ 6] = ActSeeAllExa, + [ 7] = ActSeeAllGam, + [ 8] = ActSeeAllSvy, }, [TabFil] = { [ 0] = ActSeeAdmDocIns, diff --git a/swad_text.c b/swad_text.c index 033822d8e..7fdac07bd 100644 --- a/swad_text.c +++ b/swad_text.c @@ -20056,91 +20056,7 @@ const char *Txt_MENU_TITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] = "Projetos" #endif , - // 3: ActReqTst -#if L==1 // ca - "Tests" -#elif L==2 // de - "Tests" -#elif L==3 // en - "Tests" -#elif L==4 // es - "Test" -#elif L==5 // fr - "Tests" -#elif L==6 // gn - "Test" // Okoteve traducción -#elif L==7 // it - "Test" -#elif L==8 // pl - "Testów" -#elif L==9 // pt - "Testes" -#endif - , - // 4: ActSeeAllExa -#if L==1 // ca - "Exàmens" -#elif L==2 // de - "Prüfungen" -#elif L==3 // en - "Exams" -#elif L==4 // es - "Exámenes" -#elif L==5 // fr - "Examens" -#elif L==6 // gn - "Exámenes" // Okoteve traducción -#elif L==7 // it - "Esami" -#elif L==8 // pl - "Egzaminy" -#elif L==9 // pt - "Exames" -#endif - , - // 5: ActSeeAllGam -#if L==1 // ca - "Jocs" -#elif L==2 // de - "Spiele" -#elif L==3 // en - "Games" -#elif L==4 // es - "Juegos" -#elif L==5 // fr - "Jeux" -#elif L==6 // gn - "Juegos" // Okoteve traducción -#elif L==7 // it - "Giochi" -#elif L==8 // pl - "Gry" -#elif L==9 // pt - "Jogos" -#endif - , - // 6: ActSeeAllSvy -#if L==1 // ca - "Enquestes" -#elif L==2 // de - "Umfragen" -#elif L==3 // en - "Surveys" -#elif L==4 // es - "Encuestas" -#elif L==5 // fr - "Sondages" -#elif L==6 // gn - "Encuestas" // Okoteve traducción -#elif L==7 // it - "Sondaggi" -#elif L==8 // pl - "Ankiety" -#elif L==9 // pt - "Inquéritos" -#endif - , - // 7: ActSeeAllExaAnn + // 3: ActSeeAllExaAnn #if L==1 // ca "Convocatòries" #elif L==2 // de @@ -20161,7 +20077,111 @@ const char *Txt_MENU_TITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] = "Chamadas" #endif , - NULL, // 8 + // 4: ActEdiTstQst +#if L==1 // ca + "Preguntes" +#elif L==2 // de + "Fragen" +#elif L==3 // en + "Questions" +#elif L==4 // es + "Preguntas" +#elif L==5 // fr + "Questions" +#elif L==6 // gn + "Preguntas" // Okoteve traducción +#elif L==7 // it + "Domande" +#elif L==8 // pl + "Pytań" +#elif L==9 // pt + "Perguntas" +#endif + , + // 5: ActReqTst +#if L==1 // ca + "Tests" +#elif L==2 // de + "Tests" +#elif L==3 // en + "Tests" +#elif L==4 // es + "Test" +#elif L==5 // fr + "Tests" +#elif L==6 // gn + "Test" // Okoteve traducción +#elif L==7 // it + "Test" +#elif L==8 // pl + "Testów" +#elif L==9 // pt + "Testes" +#endif + , + // 6: ActSeeAllExa +#if L==1 // ca + "Exàmens" +#elif L==2 // de + "Prüfungen" +#elif L==3 // en + "Exams" +#elif L==4 // es + "Exámenes" +#elif L==5 // fr + "Examens" +#elif L==6 // gn + "Exámenes" // Okoteve traducción +#elif L==7 // it + "Esami" +#elif L==8 // pl + "Egzaminy" +#elif L==9 // pt + "Exames" +#endif + , + // 7: ActSeeAllGam +#if L==1 // ca + "Jocs" +#elif L==2 // de + "Spiele" +#elif L==3 // en + "Games" +#elif L==4 // es + "Juegos" +#elif L==5 // fr + "Jeux" +#elif L==6 // gn + "Juegos" // Okoteve traducción +#elif L==7 // it + "Giochi" +#elif L==8 // pl + "Gry" +#elif L==9 // pt + "Jogos" +#endif + , + // 8: ActSeeAllSvy +#if L==1 // ca + "Enquestes" +#elif L==2 // de + "Umfragen" +#elif L==3 // en + "Surveys" +#elif L==4 // es + "Encuestas" +#elif L==5 // fr + "Sondages" +#elif L==6 // gn + "Encuestas" // Okoteve traducción +#elif L==7 // it + "Sondaggi" +#elif L==8 // pl + "Ankiety" +#elif L==9 // pt + "Inquéritos" +#endif + , NULL, // 9 NULL, // 10 NULL, // 11 @@ -21955,70 +21975,7 @@ const char *Txt_MENU_SUBTITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] = "Projetos (projetos de fim de grau, tese…)" #endif , - // 3: ActReqTst -#if L==1 // ca - "Tests sobre els continguts d'aquesta assignatura" -#elif L==2 // de - "Tests" -#elif L==3 // en - "Tests on the contents of this course" -#elif L==4 // es - "Test sobre los contenidos de esta asignatura" -#elif L==5 // fr - "Tests sur le contenu de cette matière" -#elif L==6 // gn - "Test sobre los contenidos de esta asignatura"// Okoteve traducción -#elif L==7 // it - "Test sui contenuti del corso" -#elif L==8 // pl - "Testów" -#elif L==9 // pt - "Testes" -#endif - , - // 4: ActSeeAllGam -#if L==1 // ca - "Jocs (comandament a distància)" -#elif L==2 // de - "Spiele (Fernbedienung)" -#elif L==3 // en - "Games (remote control)" -#elif L==4 // es - "Juegos (mando a distancia)" -#elif L==5 // fr - "Jeux (télécommande)" -#elif L==6 // gn - "Juegos (mando a distancia)" // Okoteve traducción -#elif L==7 // it - "Giochi (telecomando)" -#elif L==8 // pl - "Gry (pilot zdalnego sterowania)" -#elif L==9 // pt - "Jogos (controlo remoto)" -#endif - , - // 5: ActSeeAllSvy -#if L==1 // ca - "Enquestes anònimes" -#elif L==2 // de - "Umfragen" -#elif L==3 // en - "Surveys" -#elif L==4 // es - "Encuestas anónimas" -#elif L==5 // fr - "Sondages" -#elif L==6 // gn - "Encuestas anónimas" // Okoteve traducción -#elif L==7 // it - "Sondaggi" -#elif L==8 // pl - "Ankiety" -#elif L==9 // pt - "Inquéritos" -#endif - , - // 6: ActSeeAllExaAnn + // 3: ActSeeAllExaAnn #if L==1 // ca "Llistat de convocatòries d'exàmens d'aquesta assignatura" #elif L==2 // de @@ -22039,7 +21996,90 @@ const char *Txt_MENU_SUBTITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] = "Chamadas para exames" #endif , - NULL, // 7 + // 4: ActEdiTstQst +#if L==1 // ca + "Banc de preguntes per test, exàmens i jocs" +#elif L==2 // de + "Fragenbank für Tests, Prüfungen und Spiele" +#elif L==3 // en + "Bank of questions for tests, exams and games" +#elif L==4 // es + "Banco de preguntas para test, exámenes y juegos" +#elif L==5 // fr + "Banque de questions pour tests, examens et jeux" +#elif L==6 // gn + "Banco de preguntas para test, exámenes y juegos" // Okoteve traducción +#elif L==7 // it + "Banca di domande per test, esami e giochi" +#elif L==8 // pl + "Zbiór pytań do testów, egzaminów i gier" +#elif L==9 // pt + "Banco de perguntas para testes, exames e jogos" +#endif + , + // 5: ActReqTst +#if L==1 // ca + "Tests sobre els continguts d'aquesta assignatura" +#elif L==2 // de + "Tests" +#elif L==3 // en + "Tests on the contents of this course" +#elif L==4 // es + "Test sobre los contenidos de esta asignatura" +#elif L==5 // fr + "Tests sur le contenu de cette matière" +#elif L==6 // gn + "Test sobre los contenidos de esta asignatura"// Okoteve traducción +#elif L==7 // it + "Test sui contenuti del corso" +#elif L==8 // pl + "Testów" +#elif L==9 // pt + "Testes" +#endif + , + // 6: ActSeeAllGam +#if L==1 // ca + "Jocs (comandament a distància)" +#elif L==2 // de + "Spiele (Fernbedienung)" +#elif L==3 // en + "Games (remote control)" +#elif L==4 // es + "Juegos (mando a distancia)" +#elif L==5 // fr + "Jeux (télécommande)" +#elif L==6 // gn + "Juegos (mando a distancia)" // Okoteve traducción +#elif L==7 // it + "Giochi (telecomando)" +#elif L==8 // pl + "Gry (pilot zdalnego sterowania)" +#elif L==9 // pt + "Jogos (controlo remoto)" +#endif + , + // 7: ActSeeAllSvy +#if L==1 // ca + "Enquestes anònimes" +#elif L==2 // de + "Umfragen" +#elif L==3 // en + "Surveys" +#elif L==4 // es + "Encuestas anónimas" +#elif L==5 // fr + "Sondages" +#elif L==6 // gn + "Encuestas anónimas" // Okoteve traducción +#elif L==7 // it + "Sondaggi" +#elif L==8 // pl + "Ankiety" +#elif L==9 // pt + "Inquéritos" +#endif + , NULL, // 8 NULL, // 9 NULL, // 10 diff --git a/swad_text_action.c b/swad_text_action.c index 532fa8817..12f8057ba 100644 --- a/swad_text_action.c +++ b/swad_text_action.c @@ -7502,9 +7502,9 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "Show the assessment system" + "See assessment system" #elif L==4 // es - "" + "Ver sistema de evaluación" #elif L==5 // fr "" // Besoin de traduction #elif L==6 // gn @@ -7523,9 +7523,9 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "Show assignments" + "See assignments" #elif L==4 // es - "" + "Ver actividades" #elif L==5 // fr "" // Besoin de traduction #elif L==6 // gn @@ -7544,9 +7544,51 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "Show projects" + "See projects" #elif L==4 // es - "" + "Ver proyectos" +#elif L==5 // fr + "" // Besoin de traduction +#elif L==6 // gn + "" // Okoteve traducción +#elif L==7 // it + "" // Bisogno di traduzione +#elif L==8 // pl + "" // Potrzebujesz tlumaczenie +#elif L==9 // pt + "" // Precisa de tradução +#endif + , + [ActSeeAllExaAnn] = +#if L==1 // ca + "" // Necessita traducció +#elif L==2 // de + "" // Need Übersetzung +#elif L==3 // en + "See exam announcements" +#elif L==4 // es + "Ver convocatorias de examen" +#elif L==5 // fr + "" // Besoin de traduction +#elif L==6 // gn + "" // Okoteve traducción +#elif L==7 // it + "" // Bisogno di traduzione +#elif L==8 // pl + "" // Potrzebujesz tlumaczenie +#elif L==9 // pt + "" // Precisa de tradução +#endif + , + [ActEdiTstQst] = +#if L==1 // ca + "" // Necessita traducció +#elif L==2 // de + "" // Need Übersetzung +#elif L==3 // en + "Request the edition of test questions" +#elif L==4 // es + "Solicitar la edición de preguntas de test" #elif L==5 // fr "" // Besoin de traduction #elif L==6 // gn @@ -7565,9 +7607,9 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "Request a test of self-assesment" + "Request a test" #elif L==4 // es - "" + "Solicitar un test" #elif L==5 // fr "" // Besoin de traduction #elif L==6 // gn @@ -7628,30 +7670,9 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==2 // de "" // Need Übersetzung #elif L==3 // en - "List all surveys in pages" + "See surveys" #elif L==4 // es - "" -#elif L==5 // fr - "" // Besoin de traduction -#elif L==6 // gn - "" // Okoteve traducción -#elif L==7 // it - "" // Bisogno di traduzione -#elif L==8 // pl - "" // Potrzebujesz tlumaczenie -#elif L==9 // pt - "" // Precisa de tradução -#endif - , - [ActSeeAllExaAnn] = -#if L==1 // ca - "" // Necessita traducció -#elif L==2 // de - "" // Need Übersetzung -#elif L==3 // en - "Show the exam announcements" -#elif L==4 // es - "" + "Ver encuestas" #elif L==5 // fr "" // Besoin de traduction #elif L==6 // gn @@ -7672,7 +7693,7 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = #elif L==3 // en "Edit the assessment system" #elif L==4 // es - "" + "Editar el sistema de evaluación" #elif L==5 // fr "" // Besoin de traduction #elif L==6 // gn @@ -9531,90 +9552,6 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = "" // Potrzebujesz tlumaczenie #elif L==9 // pt "" // Precisa de tradução -#endif - , - [ActSeeTst] = -#if L==1 // ca - "" // Necessita traducció -#elif L==2 // de - "" // Need Übersetzung -#elif L==3 // en - "See a test" -#elif L==4 // es - "Ver un test" -#elif L==5 // fr - "" // Besoin de traduction -#elif L==6 // gn - "" // Okoteve traducción -#elif L==7 // it - "" // Bisogno di traduzione -#elif L==8 // pl - "" // Potrzebujesz tlumaczenie -#elif L==9 // pt - "" // Precisa de tradução -#endif - , - [ActReqAssTst] = -#if L==1 // ca - "" // Necessita traducció -#elif L==2 // de - "" // Need Übersetzung -#elif L==3 // en - "Request assessment of a test" -#elif L==4 // es - "Solicitar evaluación de un test" -#elif L==5 // fr - "" // Besoin de traduction -#elif L==6 // gn - "" // Okoteve traducción -#elif L==7 // it - "" // Bisogno di traduzione -#elif L==8 // pl - "" // Potrzebujesz tlumaczenie -#elif L==9 // pt - "" // Precisa de tradução -#endif - , - [ActAssTst] = -#if L==1 // ca - "" // Necessita traducció -#elif L==2 // de - "" // Need Übersetzung -#elif L==3 // en - "Assess a test" -#elif L==4 // es - "Evaluar un test" -#elif L==5 // fr - "" // Besoin de traduction -#elif L==6 // gn - "" // Okoteve traducción -#elif L==7 // it - "" // Bisogno di traduzione -#elif L==8 // pl - "" // Potrzebujesz tlumaczenie -#elif L==9 // pt - "" // Precisa de tradução -#endif - , - [ActEdiTstQst] = -#if L==1 // ca - "" // Necessita traducció -#elif L==2 // de - "" // Need Übersetzung -#elif L==3 // en - "Request the edition of test questions" -#elif L==4 // es - "Solicitar la edición de preguntas de test" -#elif L==5 // fr - "" // Besoin de traduction -#elif L==6 // gn - "" // Okoteve traducción -#elif L==7 // it - "" // Bisogno di traduzione -#elif L==8 // pl - "" // Potrzebujesz tlumaczenie -#elif L==9 // pt - "" // Precisa de tradução #endif , [ActEdiOneTstQst] = @@ -9825,6 +9762,69 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = "" // Potrzebujesz tlumaczenie #elif L==9 // pt "" // Precisa de tradução +#endif + , + [ActSeeTst] = +#if L==1 // ca + "" // Necessita traducció +#elif L==2 // de + "" // Need Übersetzung +#elif L==3 // en + "See a test" +#elif L==4 // es + "Ver un test" +#elif L==5 // fr + "" // Besoin de traduction +#elif L==6 // gn + "" // Okoteve traducción +#elif L==7 // it + "" // Bisogno di traduzione +#elif L==8 // pl + "" // Potrzebujesz tlumaczenie +#elif L==9 // pt + "" // Precisa de tradução +#endif + , + [ActReqAssTst] = +#if L==1 // ca + "" // Necessita traducció +#elif L==2 // de + "" // Need Übersetzung +#elif L==3 // en + "Request assessment of a test" +#elif L==4 // es + "Solicitar evaluación de un test" +#elif L==5 // fr + "" // Besoin de traduction +#elif L==6 // gn + "" // Okoteve traducción +#elif L==7 // it + "" // Bisogno di traduzione +#elif L==8 // pl + "" // Potrzebujesz tlumaczenie +#elif L==9 // pt + "" // Precisa de tradução +#endif + , + [ActAssTst] = +#if L==1 // ca + "" // Necessita traducció +#elif L==2 // de + "" // Need Übersetzung +#elif L==3 // en + "Assess a test" +#elif L==4 // es + "Evaluar un test" +#elif L==5 // fr + "" // Besoin de traduction +#elif L==6 // gn + "" // Okoteve traducción +#elif L==7 // it + "" // Bisogno di traduzione +#elif L==8 // pl + "" // Potrzebujesz tlumaczenie +#elif L==9 // pt + "" // Precisa de tradução #endif , [ActCfgTst] =