diff --git a/swad_action.c b/swad_action.c index 486b039f0..b4d8fd636 100644 --- a/swad_action.c +++ b/swad_action.c @@ -429,6 +429,7 @@ const struct Act_Actions Act_Actions[Act_NUM_ACTIONS] = [ActChgCrsYeaCfg ] = {1573,-1,TabUnk,ActSeeCrsInf ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,CrsCfg_ChangeCrsYear ,CrsCfg_ContEditAfterChgCrs ,NULL}, [ActEdiCrsInf ] = { 848,-1,TabUnk,ActSeeCrsInf ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Inf_FormsToSelSendInfo ,NULL}, + [ActEdiPrg ] = {1926, 1,TabCrs,ActSeePrg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prg_EditCourseProgram ,NULL}, [ActFrmNewPrgItm ] = {1822,-1,TabUnk,ActSeePrg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prg_RequestCreateItem ,NULL}, [ActFrmChgPrgItm ] = {1823,-1,TabUnk,ActSeePrg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prg_RequestChangeItem ,NULL}, [ActNewPrgItm ] = {1825,-1,TabUnk,ActSeePrg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prg_ReceiveFormNewItem ,NULL}, @@ -3761,6 +3762,7 @@ Act_Action_t Act_FromActCodToAction[1 + Act_MAX_ACTION_COD] = // Do not reuse un ActUp_PrgRsc, // #1923 ActDwnPrgRsc, // #1924 ActFrmSeePrgRsc, // #1925 + ActEdiPrg, // #1926 }; /*****************************************************************************/ diff --git a/swad_action.h b/swad_action.h index ba0a0f180..478f8ef99 100644 --- a/swad_action.h +++ b/swad_action.h @@ -65,7 +65,7 @@ typedef enum typedef signed int Act_Action_t; // Must be a signed type, because -1 is used to indicate obsolete action -#define Act_MAX_ACTION_COD 1925 +#define Act_MAX_ACTION_COD 1926 #define Act_MAX_OPTIONS_IN_MENU_PER_TAB 13 @@ -396,127 +396,128 @@ typedef signed int Act_Action_t; // Must be a signed type, because -1 is used to #define ActChgInsCrsCodCfg (ActChgCrsSta + 13) #define ActChgCrsYeaCfg (ActChgCrsSta + 14) #define ActEdiCrsInf (ActChgCrsSta + 15) -#define ActFrmNewPrgItm (ActChgCrsSta + 16) -#define ActFrmChgPrgItm (ActChgCrsSta + 17) -#define ActNewPrgItm (ActChgCrsSta + 18) -#define ActChgPrgItm (ActChgCrsSta + 19) -#define ActReqRemPrgItm (ActChgCrsSta + 20) -#define ActRemPrgItm (ActChgCrsSta + 21) -#define ActHidPrgItm (ActChgCrsSta + 22) -#define ActUnhPrgItm (ActChgCrsSta + 23) -#define ActUp_PrgItm (ActChgCrsSta + 24) -#define ActDwnPrgItm (ActChgCrsSta + 25) -#define ActLftPrgItm (ActChgCrsSta + 26) -#define ActRgtPrgItm (ActChgCrsSta + 27) -#define ActFrmSeePrgRsc (ActChgCrsSta + 28) -#define ActFrmEdiPrgRsc (ActChgCrsSta + 29) -#define ActReqRemPrgRsc (ActChgCrsSta + 30) -#define ActRemPrgRsc (ActChgCrsSta + 31) -#define ActHidPrgRsc (ActChgCrsSta + 32) -#define ActUnhPrgRsc (ActChgCrsSta + 33) -#define ActUp_PrgRsc (ActChgCrsSta + 34) -#define ActDwnPrgRsc (ActChgCrsSta + 35) -#define ActEdiTchGui (ActChgCrsSta + 36) -#define ActSeeSylLec (ActChgCrsSta + 37) -#define ActSeeSylPra (ActChgCrsSta + 38) -#define ActEdiSylLec (ActChgCrsSta + 39) -#define ActEdiSylPra (ActChgCrsSta + 40) -#define ActDelItmSylLec (ActChgCrsSta + 41) -#define ActDelItmSylPra (ActChgCrsSta + 42) -#define ActUp_IteSylLec (ActChgCrsSta + 43) -#define ActUp_IteSylPra (ActChgCrsSta + 44) -#define ActDwnIteSylLec (ActChgCrsSta + 45) -#define ActDwnIteSylPra (ActChgCrsSta + 46) -#define ActRgtIteSylLec (ActChgCrsSta + 47) -#define ActRgtIteSylPra (ActChgCrsSta + 48) -#define ActLftIteSylLec (ActChgCrsSta + 49) -#define ActLftIteSylPra (ActChgCrsSta + 50) -#define ActInsIteSylLec (ActChgCrsSta + 51) -#define ActInsIteSylPra (ActChgCrsSta + 52) -#define ActModIteSylLec (ActChgCrsSta + 53) -#define ActModIteSylPra (ActChgCrsSta + 54) +#define ActEdiPrg (ActChgCrsSta + 16) +#define ActFrmNewPrgItm (ActChgCrsSta + 17) +#define ActFrmChgPrgItm (ActChgCrsSta + 18) +#define ActNewPrgItm (ActChgCrsSta + 19) +#define ActChgPrgItm (ActChgCrsSta + 20) +#define ActReqRemPrgItm (ActChgCrsSta + 21) +#define ActRemPrgItm (ActChgCrsSta + 22) +#define ActHidPrgItm (ActChgCrsSta + 23) +#define ActUnhPrgItm (ActChgCrsSta + 24) +#define ActUp_PrgItm (ActChgCrsSta + 25) +#define ActDwnPrgItm (ActChgCrsSta + 26) +#define ActLftPrgItm (ActChgCrsSta + 27) +#define ActRgtPrgItm (ActChgCrsSta + 28) +#define ActFrmSeePrgRsc (ActChgCrsSta + 29) +#define ActFrmEdiPrgRsc (ActChgCrsSta + 30) +#define ActReqRemPrgRsc (ActChgCrsSta + 31) +#define ActRemPrgRsc (ActChgCrsSta + 32) +#define ActHidPrgRsc (ActChgCrsSta + 33) +#define ActUnhPrgRsc (ActChgCrsSta + 34) +#define ActUp_PrgRsc (ActChgCrsSta + 35) +#define ActDwnPrgRsc (ActChgCrsSta + 36) +#define ActEdiTchGui (ActChgCrsSta + 37) +#define ActSeeSylLec (ActChgCrsSta + 38) +#define ActSeeSylPra (ActChgCrsSta + 39) +#define ActEdiSylLec (ActChgCrsSta + 40) +#define ActEdiSylPra (ActChgCrsSta + 41) +#define ActDelItmSylLec (ActChgCrsSta + 42) +#define ActDelItmSylPra (ActChgCrsSta + 43) +#define ActUp_IteSylLec (ActChgCrsSta + 44) +#define ActUp_IteSylPra (ActChgCrsSta + 45) +#define ActDwnIteSylLec (ActChgCrsSta + 46) +#define ActDwnIteSylPra (ActChgCrsSta + 47) +#define ActRgtIteSylLec (ActChgCrsSta + 48) +#define ActRgtIteSylPra (ActChgCrsSta + 49) +#define ActLftIteSylLec (ActChgCrsSta + 50) +#define ActLftIteSylPra (ActChgCrsSta + 51) +#define ActInsIteSylLec (ActChgCrsSta + 52) +#define ActInsIteSylPra (ActChgCrsSta + 53) +#define ActModIteSylLec (ActChgCrsSta + 54) +#define ActModIteSylPra (ActChgCrsSta + 55) -#define ActEdiBib (ActChgCrsSta + 55) -#define ActEdiFAQ (ActChgCrsSta + 56) -#define ActEdiCrsLnk (ActChgCrsSta + 57) +#define ActEdiBib (ActChgCrsSta + 56) +#define ActEdiFAQ (ActChgCrsSta + 57) +#define ActEdiCrsLnk (ActChgCrsSta + 58) -#define ActChgFrcReaCrsInf (ActChgCrsSta + 58) -#define ActChgFrcReaTchGui (ActChgCrsSta + 59) -#define ActChgFrcReaSylLec (ActChgCrsSta + 60) -#define ActChgFrcReaSylPra (ActChgCrsSta + 61) -#define ActChgFrcReaBib (ActChgCrsSta + 62) -#define ActChgFrcReaFAQ (ActChgCrsSta + 63) -#define ActChgFrcReaCrsLnk (ActChgCrsSta + 64) +#define ActChgFrcReaCrsInf (ActChgCrsSta + 59) +#define ActChgFrcReaTchGui (ActChgCrsSta + 60) +#define ActChgFrcReaSylLec (ActChgCrsSta + 61) +#define ActChgFrcReaSylPra (ActChgCrsSta + 62) +#define ActChgFrcReaBib (ActChgCrsSta + 63) +#define ActChgFrcReaFAQ (ActChgCrsSta + 64) +#define ActChgFrcReaCrsLnk (ActChgCrsSta + 65) -#define ActChgHavReaCrsInf (ActChgCrsSta + 65) -#define ActChgHavReaTchGui (ActChgCrsSta + 66) -#define ActChgHavReaSylLec (ActChgCrsSta + 67) -#define ActChgHavReaSylPra (ActChgCrsSta + 68) -#define ActChgHavReaBib (ActChgCrsSta + 69) -#define ActChgHavReaFAQ (ActChgCrsSta + 70) -#define ActChgHavReaCrsLnk (ActChgCrsSta + 71) +#define ActChgHavReaCrsInf (ActChgCrsSta + 66) +#define ActChgHavReaTchGui (ActChgCrsSta + 67) +#define ActChgHavReaSylLec (ActChgCrsSta + 68) +#define ActChgHavReaSylPra (ActChgCrsSta + 69) +#define ActChgHavReaBib (ActChgCrsSta + 70) +#define ActChgHavReaFAQ (ActChgCrsSta + 71) +#define ActChgHavReaCrsLnk (ActChgCrsSta + 72) -#define ActSelInfSrcCrsInf (ActChgCrsSta + 72) -#define ActSelInfSrcTchGui (ActChgCrsSta + 73) -#define ActSelInfSrcSylLec (ActChgCrsSta + 74) -#define ActSelInfSrcSylPra (ActChgCrsSta + 75) -#define ActSelInfSrcBib (ActChgCrsSta + 76) -#define ActSelInfSrcFAQ (ActChgCrsSta + 77) -#define ActSelInfSrcCrsLnk (ActChgCrsSta + 78) -#define ActRcvURLCrsInf (ActChgCrsSta + 79) -#define ActRcvURLTchGui (ActChgCrsSta + 80) -#define ActRcvURLSylLec (ActChgCrsSta + 81) -#define ActRcvURLSylPra (ActChgCrsSta + 82) -#define ActRcvURLBib (ActChgCrsSta + 83) -#define ActRcvURLFAQ (ActChgCrsSta + 84) -#define ActRcvURLCrsLnk (ActChgCrsSta + 85) -#define ActRcvPagCrsInf (ActChgCrsSta + 86) -#define ActRcvPagTchGui (ActChgCrsSta + 87) -#define ActRcvPagSylLec (ActChgCrsSta + 88) -#define ActRcvPagSylPra (ActChgCrsSta + 89) -#define ActRcvPagBib (ActChgCrsSta + 90) -#define ActRcvPagFAQ (ActChgCrsSta + 91) -#define ActRcvPagCrsLnk (ActChgCrsSta + 92) -#define ActEditorCrsInf (ActChgCrsSta + 93) -#define ActEditorTchGui (ActChgCrsSta + 94) -#define ActEditorSylLec (ActChgCrsSta + 95) -#define ActEditorSylPra (ActChgCrsSta + 96) -#define ActEditorBib (ActChgCrsSta + 97) -#define ActEditorFAQ (ActChgCrsSta + 98) -#define ActEditorCrsLnk (ActChgCrsSta + 99) -#define ActPlaTxtEdiCrsInf (ActChgCrsSta + 100) -#define ActPlaTxtEdiTchGui (ActChgCrsSta + 101) -#define ActPlaTxtEdiSylLec (ActChgCrsSta + 102) -#define ActPlaTxtEdiSylPra (ActChgCrsSta + 103) -#define ActPlaTxtEdiBib (ActChgCrsSta + 104) -#define ActPlaTxtEdiFAQ (ActChgCrsSta + 105) -#define ActPlaTxtEdiCrsLnk (ActChgCrsSta + 106) -#define ActRchTxtEdiCrsInf (ActChgCrsSta + 107) -#define ActRchTxtEdiTchGui (ActChgCrsSta + 108) -#define ActRchTxtEdiSylLec (ActChgCrsSta + 109) -#define ActRchTxtEdiSylPra (ActChgCrsSta + 110) -#define ActRchTxtEdiBib (ActChgCrsSta + 111) -#define ActRchTxtEdiFAQ (ActChgCrsSta + 112) -#define ActRchTxtEdiCrsLnk (ActChgCrsSta + 113) -#define ActRcvPlaTxtCrsInf (ActChgCrsSta + 114) -#define ActRcvPlaTxtTchGui (ActChgCrsSta + 115) -#define ActRcvPlaTxtSylLec (ActChgCrsSta + 116) -#define ActRcvPlaTxtSylPra (ActChgCrsSta + 117) -#define ActRcvPlaTxtBib (ActChgCrsSta + 118) -#define ActRcvPlaTxtFAQ (ActChgCrsSta + 119) -#define ActRcvPlaTxtCrsLnk (ActChgCrsSta + 120) -#define ActRcvRchTxtCrsInf (ActChgCrsSta + 121) -#define ActRcvRchTxtTchGui (ActChgCrsSta + 122) -#define ActRcvRchTxtSylLec (ActChgCrsSta + 123) -#define ActRcvRchTxtSylPra (ActChgCrsSta + 124) -#define ActRcvRchTxtBib (ActChgCrsSta + 125) -#define ActRcvRchTxtFAQ (ActChgCrsSta + 126) -#define ActRcvRchTxtCrsLnk (ActChgCrsSta + 127) +#define ActSelInfSrcCrsInf (ActChgCrsSta + 73) +#define ActSelInfSrcTchGui (ActChgCrsSta + 74) +#define ActSelInfSrcSylLec (ActChgCrsSta + 75) +#define ActSelInfSrcSylPra (ActChgCrsSta + 76) +#define ActSelInfSrcBib (ActChgCrsSta + 77) +#define ActSelInfSrcFAQ (ActChgCrsSta + 78) +#define ActSelInfSrcCrsLnk (ActChgCrsSta + 79) +#define ActRcvURLCrsInf (ActChgCrsSta + 80) +#define ActRcvURLTchGui (ActChgCrsSta + 81) +#define ActRcvURLSylLec (ActChgCrsSta + 82) +#define ActRcvURLSylPra (ActChgCrsSta + 83) +#define ActRcvURLBib (ActChgCrsSta + 84) +#define ActRcvURLFAQ (ActChgCrsSta + 85) +#define ActRcvURLCrsLnk (ActChgCrsSta + 86) +#define ActRcvPagCrsInf (ActChgCrsSta + 87) +#define ActRcvPagTchGui (ActChgCrsSta + 88) +#define ActRcvPagSylLec (ActChgCrsSta + 89) +#define ActRcvPagSylPra (ActChgCrsSta + 90) +#define ActRcvPagBib (ActChgCrsSta + 91) +#define ActRcvPagFAQ (ActChgCrsSta + 92) +#define ActRcvPagCrsLnk (ActChgCrsSta + 93) +#define ActEditorCrsInf (ActChgCrsSta + 94) +#define ActEditorTchGui (ActChgCrsSta + 95) +#define ActEditorSylLec (ActChgCrsSta + 96) +#define ActEditorSylPra (ActChgCrsSta + 97) +#define ActEditorBib (ActChgCrsSta + 98) +#define ActEditorFAQ (ActChgCrsSta + 99) +#define ActEditorCrsLnk (ActChgCrsSta + 100) +#define ActPlaTxtEdiCrsInf (ActChgCrsSta + 101) +#define ActPlaTxtEdiTchGui (ActChgCrsSta + 102) +#define ActPlaTxtEdiSylLec (ActChgCrsSta + 103) +#define ActPlaTxtEdiSylPra (ActChgCrsSta + 104) +#define ActPlaTxtEdiBib (ActChgCrsSta + 105) +#define ActPlaTxtEdiFAQ (ActChgCrsSta + 106) +#define ActPlaTxtEdiCrsLnk (ActChgCrsSta + 107) +#define ActRchTxtEdiCrsInf (ActChgCrsSta + 108) +#define ActRchTxtEdiTchGui (ActChgCrsSta + 109) +#define ActRchTxtEdiSylLec (ActChgCrsSta + 110) +#define ActRchTxtEdiSylPra (ActChgCrsSta + 111) +#define ActRchTxtEdiBib (ActChgCrsSta + 112) +#define ActRchTxtEdiFAQ (ActChgCrsSta + 113) +#define ActRchTxtEdiCrsLnk (ActChgCrsSta + 114) +#define ActRcvPlaTxtCrsInf (ActChgCrsSta + 115) +#define ActRcvPlaTxtTchGui (ActChgCrsSta + 116) +#define ActRcvPlaTxtSylLec (ActChgCrsSta + 117) +#define ActRcvPlaTxtSylPra (ActChgCrsSta + 118) +#define ActRcvPlaTxtBib (ActChgCrsSta + 119) +#define ActRcvPlaTxtFAQ (ActChgCrsSta + 120) +#define ActRcvPlaTxtCrsLnk (ActChgCrsSta + 121) +#define ActRcvRchTxtCrsInf (ActChgCrsSta + 122) +#define ActRcvRchTxtTchGui (ActChgCrsSta + 123) +#define ActRcvRchTxtSylLec (ActChgCrsSta + 124) +#define ActRcvRchTxtSylPra (ActChgCrsSta + 125) +#define ActRcvRchTxtBib (ActChgCrsSta + 126) +#define ActRcvRchTxtFAQ (ActChgCrsSta + 127) +#define ActRcvRchTxtCrsLnk (ActChgCrsSta + 128) -#define ActPrnCrsTT (ActChgCrsSta + 128) -#define ActEdiCrsTT (ActChgCrsSta + 129) -#define ActChgCrsTT (ActChgCrsSta + 130) -#define ActChgCrsTT1stDay (ActChgCrsSta + 131) +#define ActPrnCrsTT (ActChgCrsSta + 129) +#define ActEdiCrsTT (ActChgCrsSta + 130) +#define ActChgCrsTT (ActChgCrsSta + 131) +#define ActChgCrsTT1stDay (ActChgCrsSta + 132) /*****************************************************************************/ /***************************** Assessment tab ********************************/ diff --git a/swad_changelog.h b/swad_changelog.h index 8e1671b20..4e9cc35eb 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -606,10 +606,11 @@ TODO: Fix bug: error al enviar un mensaje a dos recipientes, error on duplicate TODO: Attach pdf files in multimedia. */ -#define Log_PLATFORM_VERSION "SWAD 21.109 (2022-07-19)" +#define Log_PLATFORM_VERSION "SWAD 21.110 (2022-07-19)" #define CSS_FILE "swad21.107.1.css" #define JS_FILE "swad21.100.js" /* + Version 21.110: Jul 19, 2022 Changes in edition of program items. (329031 lines) Version 21.109: Jul 19, 2022 Changes in edition of program items. (328975 lines) Version 21.108: Jul 18, 2022 Changes in edition of program items. (328908 lines) Version 21.107.1: Jul 17, 2022 Changes in layout of resources of program item. (? lines) diff --git a/swad_program.c b/swad_program.c index 7f6f410a6..2f9da4da3 100644 --- a/swad_program.c +++ b/swad_program.c @@ -106,10 +106,13 @@ static struct /*****************************************************************************/ static void Prg_PutIconsListItems (__attribute__((unused)) void *Args); +static void Prg_PutIconsEditItems (__attribute__((unused)) void *Args); +static void Prg_PutIconToEditProgram (void); +static void Prg_PutIconToViewProgram (void); static void Prg_PutIconToCreateNewItem (void); static void Prg_PutButtonToCreateNewItem (void); -static void Prg_WriteRowItem (Prg_ListingItem_t ListingItem, +static void Prg_WriteRowItem (Prg_ListingType_t ListingType, unsigned NumItem,struct Prg_Item *Item); static void Prg_WriteRowToCreateItem (long ItmCod,unsigned FormLevel); static void Prg_SetTitleClass (char **TitleClass,unsigned Level,bool LightStyle); @@ -171,20 +174,29 @@ static void Prg_InsertItem (const struct Prg_Item *ParentItem, void Prg_ShowCourseProgram (void) { - struct Prg_ItemRange ToHighlight; - /***** Get list of program items *****/ Prg_GetListItems (); /***** Show course program without highlighting any item *****/ - Prg_SetItemRangeEmpty (&ToHighlight); - Prg_ShowCourseProgramHighlightingItem (&ToHighlight); + Prg_ShowAllItems (Prg_VIEW,NULL,-1L,-1L,0); /***** Free list of program items *****/ Prg_FreeListItems (); } -void Prg_ShowCourseProgramHighlightingItem (const struct Prg_ItemRange *ToHighlight) +void Prg_EditCourseProgram (void) + { + /***** Get list of program items *****/ + Prg_GetListItems (); + + /***** Show course program without highlighting any item *****/ + Prg_EditCourseProgramHighlightingItem (NULL); + + /***** Free list of program items *****/ + Prg_FreeListItems (); + } + +void Prg_EditCourseProgramHighlightingItem (const struct Prg_ItemRange *ToHighlight) { /***** Show all program items *****/ Prg_ShowAllItems (Prg_EDIT_LIST,ToHighlight,-1L,-1L,0); @@ -194,7 +206,7 @@ void Prg_ShowCourseProgramHighlightingItem (const struct Prg_ItemRange *ToHighli /************************* Show all program items ****************************/ /*****************************************************************************/ -void Prg_ShowAllItems (Prg_ListingItem_t ListingItem, +void Prg_ShowAllItems (Prg_ListingType_t ListingType, const struct Prg_ItemRange *ToHighlight, long ParentItmCod,long ItmCod,unsigned FormLevel) { @@ -203,6 +215,16 @@ void Prg_ShowAllItems (Prg_ListingItem_t ListingItem, unsigned NumItem; struct Prg_Item Item; static bool FirstTBodyOpen = false; + static void (*FunctionToDrawContextualIcons[Prg_NUM_LISTING_TYPES]) (void *Args) = + { + [Prg_PRINT ] = NULL, + [Prg_VIEW ] = Prg_PutIconsListItems, + [Prg_EDIT_LIST ] = Prg_PutIconsEditItems, + [Prg_NEW_ITEM ] = Prg_PutIconsEditItems, + [Prg_EDIT_ITEM ] = Prg_PutIconsEditItems, + [Prg_EDIT_RESOURCES] = Prg_PutIconsEditItems, + [Prg_END_EDIT_RES ] = Prg_PutIconsEditItems, + }; /***** Create numbers and hidden levels *****/ Prg_SetMaxItemLevel (Prg_CalculateMaxItemLevel ()); @@ -210,7 +232,7 @@ void Prg_ShowAllItems (Prg_ListingItem_t ListingItem, /***** Begin box *****/ Box_BoxBegin ("100%",Txt_Course_program, - Prg_PutIconsListItems,NULL, + FunctionToDrawContextualIcons[ListingType],NULL, Hlp_COURSE_Program,Box_NOT_CLOSABLE); /***** Table *****/ @@ -233,23 +255,24 @@ void Prg_ShowAllItems (Prg_ListingItem_t ListingItem, Prg_GetDataOfItemByCod (&Item); /* Begin range to highlight? */ - if (Item.Hierarchy.Index == ToHighlight->Begin) // Begin of the highlighted range - { - if (FirstTBodyOpen) + if (ToHighlight) + if (Item.Hierarchy.Index == ToHighlight->Begin) // Begin of the highlighted range { - HTM_TBODY_End (); // 1st tbody end - FirstTBodyOpen = false; + if (FirstTBodyOpen) + { + HTM_TBODY_End (); // 1st tbody end + FirstTBodyOpen = false; + } + HTM_TBODY_Begin ("id=\"prg_highlighted\""); // Highlighted tbody start } - HTM_TBODY_Begin ("id=\"prg_highlighted\""); // Highlighted tbody start - } /* Show form to create item */ - switch (ListingItem) + switch (ListingType) { case Prg_PRINT: case Prg_VIEW: case Prg_EDIT_LIST: - Prg_WriteRowItem (ListingItem,NumItem,&Item); + Prg_WriteRowItem (ListingType,NumItem,&Item); break; case Prg_NEW_ITEM: Prg_WriteRowItem (Prg_EDIT_LIST,NumItem,&Item); @@ -259,25 +282,26 @@ void Prg_ShowAllItems (Prg_ListingItem_t ListingItem, case Prg_EDIT_ITEM: case Prg_EDIT_RESOURCES: case Prg_END_EDIT_RES: - Prg_WriteRowItem (Item.Hierarchy.ItmCod == ItmCod ? ListingItem : + Prg_WriteRowItem (Item.Hierarchy.ItmCod == ItmCod ? ListingType : Prg_EDIT_LIST, NumItem,&Item); break; } /* End range to highlight? */ - if (Item.Hierarchy.Index == ToHighlight->End) // End of the highlighted range - { - HTM_TBODY_End (); // Highlighted tbody end - if (NumItem < Prg_Gbl.List.NumItems - 1) // Not the last item - HTM_TBODY_Begin (NULL); // 3rd tbody begin - } + if (ToHighlight) + if (Item.Hierarchy.Index == ToHighlight->End) // End of the highlighted range + { + HTM_TBODY_End (); // Highlighted tbody end + if (NumItem < Prg_Gbl.List.NumItems - 1) // Not the last item + HTM_TBODY_Begin (NULL); // 3rd tbody begin + } The_ChangeRowColor (); } /***** Create item at the end? *****/ - if (ItmCod <= 0 && ListingItem == Prg_NEW_ITEM) + if (ItmCod <= 0 && ListingType == Prg_NEW_ITEM) Prg_WriteRowToCreateItem (-1L,1); /***** End table *****/ @@ -285,7 +309,7 @@ void Prg_ShowAllItems (Prg_ListingItem_t ListingItem, HTM_TABLE_End (); /***** Button to create a new program item *****/ - if (Prg_CheckIfICanCreateItems ()) + if (Prg_CheckIfICanEditProgram ()) Prg_PutButtonToCreateNewItem (); /***** End box *****/ @@ -299,7 +323,7 @@ void Prg_ShowAllItems (Prg_ListingItem_t ListingItem, /******************* Check if I can create program items *********************/ /*****************************************************************************/ -bool Prg_CheckIfICanCreateItems (void) +bool Prg_CheckIfICanEditProgram (void) { return Gbl.Usrs.Me.Role.Logged == Rol_TCH || Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM; @@ -311,14 +335,51 @@ bool Prg_CheckIfICanCreateItems (void) static void Prg_PutIconsListItems (__attribute__((unused)) void *Args) { + /***** Put icon to edit program *****/ + if (Prg_CheckIfICanEditProgram ()) + Prg_PutIconToEditProgram (); + + /***** Put icon to show a figure *****/ + Fig_PutIconToShowFigure (Fig_COURSE_PROGRAMS); + } + +/*****************************************************************************/ +/************** Put contextual icons in list of program items ****************/ +/*****************************************************************************/ + +static void Prg_PutIconsEditItems (__attribute__((unused)) void *Args) + { + /***** Put icon to view program *****/ + Prg_PutIconToViewProgram (); + /***** Put icon to create a new program item *****/ - if (Prg_CheckIfICanCreateItems ()) + if (Prg_CheckIfICanEditProgram ()) Prg_PutIconToCreateNewItem (); /***** Put icon to show a figure *****/ Fig_PutIconToShowFigure (Fig_COURSE_PROGRAMS); } +/*****************************************************************************/ +/************************* Put icon to edit program **************************/ +/*****************************************************************************/ + +static void Prg_PutIconToEditProgram (void) + { + Ico_PutContextualIconToEdit (ActEdiPrg,NULL, + NULL,NULL); + } + +/*****************************************************************************/ +/************************* Put icon to view program **************************/ +/*****************************************************************************/ + +static void Prg_PutIconToViewProgram (void) + { + Ico_PutContextualIconToView (ActSeePrg,NULL, + NULL,NULL); + } + /*****************************************************************************/ /****************** Put icon to create a new program item ********************/ /*****************************************************************************/ @@ -350,7 +411,7 @@ static void Prg_PutButtonToCreateNewItem (void) /************************** Show one program item ****************************/ /*****************************************************************************/ -static void Prg_WriteRowItem (Prg_ListingItem_t ListingItem, +static void Prg_WriteRowItem (Prg_ListingType_t ListingType, unsigned NumItem,struct Prg_Item *Item) { static unsigned UniqueId = 0; @@ -379,7 +440,7 @@ static void Prg_WriteRowItem (Prg_ListingItem_t ListingItem, HTM_TR_Begin (NULL); /***** Forms to remove/edit this program item *****/ - switch (ListingItem) + switch (ListingType) { case Prg_EDIT_LIST: case Prg_EDIT_ITEM: @@ -411,7 +472,7 @@ static void Prg_WriteRowItem (Prg_ListingItem_t ListingItem, /***** Title *****/ ColSpan = (Prg_GetMaxItemLevel () + 2) - Item->Hierarchy.Level; - switch (ListingItem) + switch (ListingType) { case Prg_PRINT: HTM_TD_Begin ("colspan=\"%u\" class=\"PRG_MAIN %s\"", @@ -434,7 +495,7 @@ static void Prg_WriteRowItem (Prg_ListingItem_t ListingItem, { if (asprintf (&Id,"scd_date_%u_%u",(unsigned) StartEndTime,UniqueId) < 0) Err_NotEnoughMemoryExit (); - switch (ListingItem) + switch (ListingType) { case Prg_PRINT: HTM_TD_Begin ("id=\"%s\" class=\"PRG_DATE LT %s_%s\"", @@ -471,7 +532,7 @@ static void Prg_WriteRowItem (Prg_ListingItem_t ListingItem, /* Begin text and resources */ ColSpan += 2; - switch (ListingItem) + switch (ListingType) { case Prg_PRINT: HTM_TD_Begin ("colspan=\"%u\" class=\"PRG_MAIN\"",ColSpan); @@ -483,7 +544,7 @@ static void Prg_WriteRowItem (Prg_ListingItem_t ListingItem, } /* Item text / form */ - switch (ListingItem) + switch (ListingType) { case Prg_EDIT_ITEM: /* Form to change item title, dates and text */ @@ -507,7 +568,7 @@ static void Prg_WriteRowItem (Prg_ListingItem_t ListingItem, } /* List of resources */ - PrgRsc_ListItemResources (ListingItem,Item->Hierarchy.ItmCod); + PrgRsc_ListItemResources (ListingType,Item->Hierarchy.ItmCod); /* End text and resources */ HTM_TD_End (); @@ -1151,7 +1212,7 @@ void Prg_ReqRemItem (void) /***** Show program items highlighting subtree *****/ Prg_SetItemRangeWithAllChildren (Prg_GetNumItemFromItmCod (Item.Hierarchy.ItmCod), &ToHighlight); - Prg_ShowCourseProgramHighlightingItem (&ToHighlight); + Prg_EditCourseProgramHighlightingItem (&ToHighlight); /***** Free list of program items *****/ Prg_FreeListItems (); @@ -1166,7 +1227,6 @@ void Prg_RemoveItem (void) extern const char *Txt_Item_X_removed; struct Prg_Item Item; struct Prg_ItemRange ToRemove; - struct Prg_ItemRange ToHighlight; /***** Get list of program items *****/ Prg_GetListItems (); @@ -1192,8 +1252,7 @@ void Prg_RemoveItem (void) Prg_GetListItems (); /***** Show course program without highlighting any item *****/ - Prg_SetItemRangeEmpty (&ToHighlight); - Prg_ShowCourseProgramHighlightingItem (&ToHighlight); + Prg_EditCourseProgramHighlightingItem (NULL); /***** Free list of program items *****/ Prg_FreeListItems (); @@ -1233,7 +1292,7 @@ static void Prg_HideOrUnhideItem (bool Hide) /***** Show program items highlighting subtree *****/ Prg_SetItemRangeWithAllChildren (Prg_GetNumItemFromItmCod (Item.Hierarchy.ItmCod), &ToHighlight); - Prg_ShowCourseProgramHighlightingItem (&ToHighlight); + Prg_EditCourseProgramHighlightingItem (&ToHighlight); /***** Free list of program items *****/ Prg_FreeListItems (); @@ -1295,18 +1354,19 @@ static void Prg_MoveUpDownItem (Prg_MoveUpDown_t UpDown) /* Update list of program items */ Prg_FreeListItems (); Prg_GetListItems (); + + /* Show program items highlighting subtree */ Prg_SetItemRangeWithAllChildren (Prg_GetNumItemFromItmCod (Item.Hierarchy.ItmCod), &ToHighlight); + Prg_EditCourseProgramHighlightingItem (&ToHighlight); } else { + /* Show course program without highlighting any item */ Ale_ShowAlert (Ale_WARNING,Txt_Movement_not_allowed); - Prg_SetItemRangeEmpty (&ToHighlight); + Prg_EditCourseProgramHighlightingItem (NULL); } - /***** Show program items highlighting subtree *****/ - Prg_ShowCourseProgramHighlightingItem (&ToHighlight); - /***** Free list of program items *****/ Prg_FreeListItems (); } @@ -1492,18 +1552,19 @@ static void Prg_MoveLeftRightItem (Prg_MoveLeftRight_t LeftRight) /* Update list of program items */ Prg_FreeListItems (); Prg_GetListItems (); + + /* Show program items highlighting subtree */ Prg_SetItemRangeWithAllChildren (Prg_GetNumItemFromItmCod (Item.Hierarchy.ItmCod), &ToHighlight); + Prg_EditCourseProgramHighlightingItem (&ToHighlight); } else { + /* Show course program without highlighting any item */ Ale_ShowAlert (Ale_WARNING,Txt_Movement_not_allowed); - Prg_SetItemRangeEmpty (&ToHighlight); + Prg_EditCourseProgramHighlightingItem (NULL); } - /***** Show program items highlighting subtree *****/ - Prg_ShowCourseProgramHighlightingItem (&ToHighlight); - /***** Free list of program items *****/ Prg_FreeListItems (); } @@ -1512,21 +1573,6 @@ static void Prg_MoveLeftRightItem (Prg_MoveLeftRight_t LeftRight) /****** Set subtree begin and end from number of item in course program ******/ /*****************************************************************************/ -void Prg_SetItemRangeEmpty (struct Prg_ItemRange *ItemRange) - { - /***** List of items must be filled *****/ - if (!Prg_Gbl.List.IsRead) - Err_WrongItemsListExit (); - - /***** Range is empty *****/ - if (Prg_Gbl.List.NumItems) - ItemRange->Begin = - ItemRange->End = Prg_Gbl.List.Items[Prg_Gbl.List.NumItems - 1].Index + 1; - else - ItemRange->Begin = - ItemRange->End = 1; - } - static void Prg_SetItemRangeOnlyItem (unsigned Index,struct Prg_ItemRange *ItemRange) { /***** List of items must be filled *****/ @@ -1590,7 +1636,6 @@ void Prg_RequestCreateItem (void) unsigned NumItem; long ItmCodBeforeForm; unsigned FormLevel; - struct Prg_ItemRange ToHighlight; /***** Get list of program items *****/ Prg_GetListItems (); @@ -1614,9 +1659,7 @@ void Prg_RequestCreateItem (void) } /***** Show current program items, if any *****/ - Prg_SetItemRangeEmpty (&ToHighlight); - Prg_ShowAllItems (Prg_NEW_ITEM, - &ToHighlight,ParentItmCod,ItmCodBeforeForm,FormLevel); + Prg_ShowAllItems (Prg_NEW_ITEM,NULL,ParentItmCod,ItmCodBeforeForm,FormLevel); /***** Free list of program items *****/ Prg_FreeListItems (); @@ -1626,7 +1669,6 @@ void Prg_RequestChangeItem (void) { long ItmCod; unsigned FormLevel; - struct Prg_ItemRange ToHighlight; /***** Get list of program items *****/ Prg_GetListItems (); @@ -1638,9 +1680,7 @@ void Prg_RequestChangeItem (void) FormLevel = 0; /***** Show current program items, if any *****/ - Prg_SetItemRangeEmpty (&ToHighlight); - Prg_ShowAllItems (Prg_EDIT_ITEM, - &ToHighlight,-1L,ItmCod,FormLevel); + Prg_ShowAllItems (Prg_EDIT_ITEM,NULL,-1L,ItmCod,FormLevel); /***** Free list of program items *****/ Prg_FreeListItems (); @@ -1843,7 +1883,7 @@ void Prg_ReceiveFormNewItem (void) /***** Show program items highlighting subtree *****/ Prg_SetItemRangeOnlyItem (NewItem.Hierarchy.Index,&ToHighlight); - Prg_ShowCourseProgramHighlightingItem (&ToHighlight); + Prg_EditCourseProgramHighlightingItem (&ToHighlight); /***** Free list of program items *****/ Prg_FreeListItems (); @@ -1894,7 +1934,7 @@ void Prg_ReceiveFormChgItem (void) /***** Show program items highlighting subtree *****/ Prg_SetItemRangeOnlyItem (NewItem.Hierarchy.Index,&ToHighlight); - Prg_ShowCourseProgramHighlightingItem (&ToHighlight); + Prg_EditCourseProgramHighlightingItem (&ToHighlight); /***** Free list of program items *****/ Prg_FreeListItems (); diff --git a/swad_program.h b/swad_program.h index 9358726c4..85c89eb86 100644 --- a/swad_program.h +++ b/swad_program.h @@ -71,7 +71,7 @@ typedef enum Prg_MOVE_RIGHT, } Prg_MoveLeftRight_t; -#define Prg_NUM_LISTING_ITEM_TYPES 7 +#define Prg_NUM_LISTING_TYPES 7 typedef enum { Prg_PRINT, // List items ready to be printed @@ -81,20 +81,21 @@ typedef enum Prg_EDIT_ITEM, // Form to edit a selected item Prg_EDIT_RESOURCES, // List resources of a selected item for edition Prg_END_EDIT_RES, // List resources of a selected item after edition - } Prg_ListingItem_t; + } Prg_ListingType_t; /*****************************************************************************/ /***************************** Public prototypes *****************************/ /*****************************************************************************/ void Prg_ShowCourseProgram (void); -void Prg_ShowCourseProgramHighlightingItem (const struct Prg_ItemRange *ToHighlight); +void Prg_EditCourseProgram (void); +void Prg_EditCourseProgramHighlightingItem (const struct Prg_ItemRange *ToHighlight); -void Prg_ShowAllItems (Prg_ListingItem_t ListingItem, +void Prg_ShowAllItems (Prg_ListingType_t ListingType, const struct Prg_ItemRange *ToHighlight, long ParentItmCod,long ItmCod,unsigned FormLevel); -bool Prg_CheckIfICanCreateItems (void); +bool Prg_CheckIfICanEditProgram (void); void Prg_PutParams (void *ItmCod); void Prg_GetListItems (void); @@ -118,8 +119,6 @@ void Prg_MoveDownItem (void); void Prg_MoveLeftItem (void); void Prg_MoveRightItem (void); -void Prg_SetItemRangeEmpty (struct Prg_ItemRange *ItemRange); - //-------------------------------- Figures ------------------------------------ void Prg_GetAndShowCourseProgramStats (void); // TODO: Change function from assignments to schedule diff --git a/swad_program_resource.c b/swad_program_resource.c index 5e4e25932..75aac99d1 100644 --- a/swad_program_resource.c +++ b/swad_program_resource.c @@ -95,7 +95,6 @@ void PrgRsc_ViewResources (void) { long ItmCod; unsigned FormLevel; - struct Prg_ItemRange ToHighlight; /***** Get list of program items *****/ Prg_GetListItems (); @@ -107,9 +106,7 @@ void PrgRsc_ViewResources (void) FormLevel = 0; /***** Show current program items, if any *****/ - Prg_SetItemRangeEmpty (&ToHighlight); - Prg_ShowAllItems (Prg_END_EDIT_RES, - &ToHighlight,-1L,ItmCod,FormLevel); + Prg_ShowAllItems (Prg_END_EDIT_RES,NULL,-1L,ItmCod,FormLevel); /***** Free list of program items *****/ Prg_FreeListItems (); @@ -123,7 +120,6 @@ void PrgRsc_EditResources (void) { long ItmCod; unsigned FormLevel; - struct Prg_ItemRange ToHighlight; /***** Get list of program items *****/ Prg_GetListItems (); @@ -135,9 +131,7 @@ void PrgRsc_EditResources (void) FormLevel = 0; /***** Show current program items, if any *****/ - Prg_SetItemRangeEmpty (&ToHighlight); - Prg_ShowAllItems (Prg_EDIT_RESOURCES, - &ToHighlight,-1L,ItmCod,FormLevel); + Prg_ShowAllItems (Prg_EDIT_RESOURCES,NULL,-1L,ItmCod,FormLevel); /***** Free list of program items *****/ Prg_FreeListItems (); @@ -147,7 +141,7 @@ void PrgRsc_EditResources (void) /****************************** List resources *******************************/ /*****************************************************************************/ -void PrgRsc_ListItemResources (Prg_ListingItem_t ListingItem,long ItmCod) +void PrgRsc_ListItemResources (Prg_ListingType_t ListingType,long ItmCod) { extern const char *Hlp_COURSE_Program; extern const char *Txt_Remove_resource; @@ -156,7 +150,7 @@ void PrgRsc_ListItemResources (Prg_ListingItem_t ListingItem,long ItmCod) unsigned NumRsc; unsigned NumResources; struct PrgRsc_Resource Resource; - static bool GetHiddenResources[Prg_NUM_LISTING_ITEM_TYPES] = + static bool GetHiddenResources[Prg_NUM_LISTING_TYPES] = { [Prg_PRINT ] = false, [Prg_VIEW ] = false, @@ -166,7 +160,17 @@ void PrgRsc_ListItemResources (Prg_ListingItem_t ListingItem,long ItmCod) [Prg_EDIT_RESOURCES] = true, [Prg_END_EDIT_RES ] = false, }; - static bool FeaturedList[Prg_NUM_LISTING_ITEM_TYPES] = + static bool ShowEmptyList[Prg_NUM_LISTING_TYPES] = + { + [Prg_PRINT ] = false, + [Prg_VIEW ] = false, + [Prg_EDIT_LIST ] = true, + [Prg_NEW_ITEM ] = true, + [Prg_EDIT_ITEM ] = true, + [Prg_EDIT_RESOURCES] = true, + [Prg_END_EDIT_RES ] = true, + }; + static bool FeaturedList[Prg_NUM_LISTING_TYPES] = { [Prg_PRINT ] = false, [Prg_VIEW ] = false, @@ -183,86 +187,92 @@ void PrgRsc_ListItemResources (Prg_ListingItem_t ListingItem,long ItmCod) /***** Get list of item resources from database *****/ NumResources = Prg_DB_GetListResources (&mysql_res,ItmCod, - GetHiddenResources[ListingItem]); + GetHiddenResources[ListingType]); - /***** Begin section *****/ - if (FeaturedList[ListingItem]) - HTM_SECTION_Begin (PrgRsc_RESOURCE_SECTION_ID); + if (NumResources || ShowEmptyList[ListingType]) + { + /***** Begin section *****/ + if (FeaturedList[ListingType]) + HTM_SECTION_Begin (PrgRsc_RESOURCE_SECTION_ID); - /***** Show possible alerts *****/ - if (FeaturedList[ListingItem]) - switch (Gbl.Action.Act) + /***** Show possible alerts *****/ + if (FeaturedList[ListingType]) + switch (Gbl.Action.Act) + { + case ActReqRemPrgRsc: + /* Alert with button to remove resource */ + Ale_ShowLastAlertAndButton (ActRemPrgRsc,PrgRsc_RESOURCE_SECTION_ID,NULL, + PrgRsc_PutParams,&PrgSrc_RscCodToBeRemoved, + Btn_REMOVE_BUTTON,Txt_Remove_resource); + break; + default: + Ale_ShowAlerts (PrgRsc_RESOURCE_SECTION_ID); + break; + } + + /***** Begin box *****/ + switch (ListingType) { - case ActReqRemPrgRsc: - /* Alert with button to remove resource */ - Ale_ShowLastAlertAndButton (ActRemPrgRsc,PrgRsc_RESOURCE_SECTION_ID,NULL, - PrgRsc_PutParams,&PrgSrc_RscCodToBeRemoved, - Btn_REMOVE_BUTTON,Txt_Remove_resource); + case Prg_EDIT_LIST: + case Prg_NEW_ITEM: + case Prg_EDIT_ITEM: + case Prg_END_EDIT_RES: + Box_BoxBegin ("100%",Txt_Resources, + PrgRsc_PutIconsEditResources,&ItmCod, + Hlp_COURSE_Program,Box_NOT_CLOSABLE); + break; + case Prg_EDIT_RESOURCES: + Box_BoxBegin ("100%",Txt_Resources, + PrgRsc_PutIconsViewResources,&ItmCod, + Hlp_COURSE_Program,Box_NOT_CLOSABLE); break; default: - Ale_ShowAlerts (PrgRsc_RESOURCE_SECTION_ID); + Box_BoxBegin ("100%",Txt_Resources, + NULL,NULL, + Hlp_COURSE_Program,Box_NOT_CLOSABLE); break; } - /***** Begin box *****/ - switch (ListingItem) - { - case Prg_EDIT_LIST: - case Prg_NEW_ITEM: - case Prg_EDIT_ITEM: - case Prg_END_EDIT_RES: - Box_BoxBegin ("100%",Txt_Resources, - PrgRsc_PutIconsEditResources,&ItmCod, - Hlp_COURSE_Program,Box_NOT_CLOSABLE); - break; - case Prg_EDIT_RESOURCES: - Box_BoxBegin ("100%",Txt_Resources, - PrgRsc_PutIconsViewResources,&ItmCod, - Hlp_COURSE_Program,Box_NOT_CLOSABLE); - break; - default: - Box_BoxBegin ("100%",Txt_Resources, - NULL,NULL, - Hlp_COURSE_Program,Box_NOT_CLOSABLE); - break; + /***** Table *****/ + HTM_TABLE_BeginWideMarginPadding (2); + HTM_TBODY_Begin (NULL); + + /***** Write all item resources *****/ + for (NumRsc = 0; + NumRsc < NumResources; + NumRsc++) + { + /* Get data of this item resource */ + PrgRsc_GetDataOfResource (&Resource,&mysql_res); + + /* Show item */ + switch (ListingType) + { + case Prg_EDIT_RESOURCES: + PrgRsc_WriteRowEditResource (NumRsc,NumResources,&Resource); + break; + default: + PrgRsc_WriteRowViewResource (NumRsc,&Resource); + break; + } + + The_ChangeRowColor (); + } + + /***** End table *****/ + HTM_TBODY_End (); + HTM_TABLE_End (); + + /***** End box *****/ + Box_BoxEnd (); + + /***** End section *****/ + if (FeaturedList[ListingType]) + HTM_SECTION_End (); } - /***** Table *****/ - HTM_TABLE_BeginWideMarginPadding (2); - HTM_TBODY_Begin (NULL); - - /***** Write all item resources *****/ - for (NumRsc = 0; - NumRsc < NumResources; - NumRsc++) - { - /* Get data of this item resource */ - PrgRsc_GetDataOfResource (&Resource,&mysql_res); - - /* Show item */ - switch (ListingItem) - { - case Prg_EDIT_RESOURCES: - PrgRsc_WriteRowEditResource (NumRsc,NumResources,&Resource); - break; - default: - PrgRsc_WriteRowViewResource (NumRsc,&Resource); - break; - } - - The_ChangeRowColor (); - } - - /***** End table *****/ - HTM_TBODY_End (); - HTM_TABLE_End (); - - /***** End box *****/ - Box_BoxEnd (); - - /***** End section *****/ - if (FeaturedList[ListingItem]) - HTM_SECTION_End (); + /***** Free structure that stores the query result *****/ + DB_FreeMySQLResult (&mysql_res); } /*****************************************************************************/ @@ -274,7 +284,7 @@ static void PrgRsc_PutIconsViewResources (void *ItmCod) /***** Put icon to create a new item resource *****/ if (ItmCod) if (*((long *) ItmCod) > 0) - if (Prg_CheckIfICanCreateItems ()) + if (Prg_CheckIfICanEditProgram ()) PrgSrc_PutIconToViewResources (*((long *) ItmCod)); } @@ -283,7 +293,7 @@ static void PrgRsc_PutIconsEditResources (void *ItmCod) /***** Put icon to create a new item resource *****/ if (ItmCod) if (*((long *) ItmCod) > 0) - if (Prg_CheckIfICanCreateItems ()) + if (Prg_CheckIfICanEditProgram ()) PrgSrc_PutIconToEditResources (*((long *) ItmCod)); } @@ -527,7 +537,6 @@ void PrgRsc_ReqRemResource (void) struct PrgRsc_Resource Resource; long ItmCod; unsigned FormLevel; - struct Prg_ItemRange ToHighlight; /***** Get list of program items *****/ Prg_GetListItems (); @@ -549,9 +558,7 @@ void PrgRsc_ReqRemResource (void) FormLevel = Prg_GetLevelFromNumItem (Prg_GetNumItemFromItmCod (Resource.ItmCod)); /***** Show current program items, if any *****/ - Prg_SetItemRangeEmpty (&ToHighlight); - Prg_ShowAllItems (Prg_EDIT_RESOURCES, - &ToHighlight,-1L,ItmCod,FormLevel); + Prg_ShowAllItems (Prg_EDIT_RESOURCES,NULL,-1L,ItmCod,FormLevel); /***** Free list of program items *****/ Prg_FreeListItems (); @@ -567,7 +574,6 @@ void PrgRsc_RemoveResource (void) struct PrgRsc_Resource Resource; long ItmCod; unsigned FormLevel; - struct Prg_ItemRange ToHighlight; /***** Get list of program items *****/ Prg_GetListItems (); @@ -590,9 +596,7 @@ void PrgRsc_RemoveResource (void) FormLevel = Prg_GetLevelFromNumItem (Prg_GetNumItemFromItmCod (Resource.ItmCod)); /***** Show current program items, if any *****/ - Prg_SetItemRangeEmpty (&ToHighlight); - Prg_ShowAllItems (Prg_EDIT_RESOURCES, - &ToHighlight,-1L,ItmCod,FormLevel); + Prg_ShowAllItems (Prg_EDIT_RESOURCES,NULL,-1L,ItmCod,FormLevel); /***** Free list of program items *****/ Prg_FreeListItems (); @@ -617,7 +621,6 @@ static void PrgRsc_HideOrUnhideResource (bool Hide) struct PrgRsc_Resource Resource; long ItmCod; unsigned FormLevel; - struct Prg_ItemRange ToHighlight; /***** Get list of program items *****/ Prg_GetListItems (); @@ -636,9 +639,7 @@ static void PrgRsc_HideOrUnhideResource (bool Hide) FormLevel = Prg_GetLevelFromNumItem (Prg_GetNumItemFromItmCod (Resource.ItmCod)); /***** Show current program items, if any *****/ - Prg_SetItemRangeEmpty (&ToHighlight); - Prg_ShowAllItems (Prg_EDIT_RESOURCES, - &ToHighlight,-1L,ItmCod,FormLevel); + Prg_ShowAllItems (Prg_EDIT_RESOURCES,NULL,-1L,ItmCod,FormLevel); /***** Free list of program items *****/ Prg_FreeListItems (); @@ -665,7 +666,6 @@ static void PrgRsc_MoveUpDownResource (PrgRsc_MoveUpDown_t UpDown) struct PrgRsc_Rsc Rsc2; long ItmCod; unsigned FormLevel; - struct Prg_ItemRange ToHighlight; bool Success = false; static unsigned (*GetOtherRscInd[PrgRsc_NUM_MOVEMENTS_UP_DOWN])(long ItmCod,unsigned RscInd) = { @@ -699,9 +699,7 @@ static void PrgRsc_MoveUpDownResource (PrgRsc_MoveUpDown_t UpDown) FormLevel = Prg_GetLevelFromNumItem (Prg_GetNumItemFromItmCod (Resource.ItmCod)); /***** Show current program items, if any *****/ - Prg_SetItemRangeEmpty (&ToHighlight); - Prg_ShowAllItems (Prg_EDIT_RESOURCES, - &ToHighlight,-1L,ItmCod,FormLevel); + Prg_ShowAllItems (Prg_EDIT_RESOURCES,NULL,-1L,ItmCod,FormLevel); /***** Free list of program items *****/ Prg_FreeListItems (); diff --git a/swad_program_resource.h b/swad_program_resource.h index 52de0b531..c33b7cc94 100644 --- a/swad_program_resource.h +++ b/swad_program_resource.h @@ -55,7 +55,7 @@ struct PrgRsc_Resource void PrgRsc_ViewResources (void); void PrgRsc_EditResources (void); -void PrgRsc_ListItemResources (Prg_ListingItem_t ListingItem,long ItmCod); +void PrgRsc_ListItemResources (Prg_ListingType_t ListingType,long ItmCod); void PrgRsc_RequestCreateResource (void); diff --git a/swad_text_action.c b/swad_text_action.c index 477e738d4..8a1362bb2 100644 --- a/swad_text_action.c +++ b/swad_text_action.c @@ -5419,6 +5419,328 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = "See educational schedule of course" // Precisa de tradução #elif L==10 // tr "See educational schedule of course" // Çeviri lazim! +#endif + , + [ActSeeTchGui] = +#if L==1 // ca + "See the teaching guide of course" // Necessita traducció +#elif L==2 // de + "See the teaching guide of course" // Need Übersetzung +#elif L==3 // en + "See the teaching guide of course" +#elif L==4 // es + "Ver la guía docente de la asignatura" +#elif L==5 // fr + "See the teaching guide of course" // Besoin de traduction +#elif L==6 // gn + "Ver la guía docente de la asignatura" // Okoteve traducción +#elif L==7 // it + "See the teaching guide of course" // Bisogno di traduzione +#elif L==8 // pl + "See the teaching guide of course" // Potrzebujesz tlumaczenie +#elif L==9 // pt + "See the teaching guide of course" // Precisa de tradução +#elif L==10 // tr + "See the teaching guide of course" // Çeviri lazim! +#endif + , + [ActSeeSyl] = +#if L==1 // ca + "See the syllabus (lectures or practicals)" // Necessita traducció +#elif L==2 // de + "See the syllabus (lectures or practicals)" // Need Übersetzung +#elif L==3 // en + "See the syllabus (lectures or practicals)" +#elif L==4 // es + "Ver el temario (teoría o prácticas)" +#elif L==5 // fr + "See the syllabus (lectures or practicals)" // Besoin de traduction +#elif L==6 // gn + "Ver el temario (teoría o prácticas)" // Okoteve traducción +#elif L==7 // it + "See the syllabus (lectures or practicals)" // Bisogno di traduzione +#elif L==8 // pl + "See the syllabus (lectures or practicals)" // Potrzebujesz tlumaczenie +#elif L==9 // pt + "See the syllabus (lectures or practicals)" // Precisa de tradução +#elif L==10 // tr + "See the syllabus (lectures or practicals)" // Çeviri lazim! +#endif + , + [ActSeeBib] = +#if L==1 // ca + "See the bibliography" // Necessita traducció +#elif L==2 // de + "See the bibliography" // Need Übersetzung +#elif L==3 // en + "See the bibliography" +#elif L==4 // es + "Ver la bibliografía" +#elif L==5 // fr + "See the bibliography" // Besoin de traduction +#elif L==6 // gn + "Ver la bibliografía" // Okoteve traducción +#elif L==7 // it + "See the bibliography" // Bisogno di traduzione +#elif L==8 // pl + "See the bibliography" // Potrzebujesz tlumaczenie +#elif L==9 // pt + "See the bibliography" // Precisa de tradução +#elif L==10 // tr + "See the bibliography" // Çeviri lazim! +#endif + , + [ActSeeFAQ] = +#if L==1 // ca + "See the FAQ" // Necessita traducció +#elif L==2 // de + "See the FAQ" // Need Übersetzung +#elif L==3 // en + "See the FAQ" +#elif L==4 // es + "Ver la FAQ" +#elif L==5 // fr + "See the FAQ" // Besoin de traduction +#elif L==6 // gn + "Ver la FAQ" // Okoteve traducción +#elif L==7 // it + "See the FAQ" // Bisogno di traduzione +#elif L==8 // pl + "See the FAQ" // Potrzebujesz tlumaczenie +#elif L==9 // pt + "See the FAQ" // Precisa de tradução +#elif L==10 // tr + "See the FAQ" // Çeviri lazim! +#endif + , + [ActSeeCrsLnk] = +#if L==1 // ca + "See the links related to the course" // Necessita traducció +#elif L==2 // de + "See the links related to the course" // Need Übersetzung +#elif L==3 // en + "See the links related to the course" +#elif L==4 // es + "Ver los enlaces relacionados con la asignatura" +#elif L==5 // fr + "See the links related to the course" // Besoin de traduction +#elif L==6 // gn + "Ver los enlaces relacionados con la asignatura" // Okoteve traducción +#elif L==7 // it + "See the links related to the course" // Bisogno di traduzione +#elif L==8 // pl + "See the links related to the course" // Potrzebujesz tlumaczenie +#elif L==9 // pt + "See the links related to the course" // Precisa de tradução +#elif L==10 // tr + "See the links related to the course" // Çeviri lazim! +#endif + , + [ActSeeCrsTT] = +#if L==1 // ca + "See the course timetable" // Necessita traducció +#elif L==2 // de + "See the course timetable" // Need Übersetzung +#elif L==3 // en + "See the course timetable" +#elif L==4 // es + "Ver el horario de la asignatura" +#elif L==5 // fr + "See the course timetable" // Besoin de traduction +#elif L==6 // gn + "Ver el horario de la asignatura" // Okoteve traducción +#elif L==7 // it + "See the course timetable" // Bisogno di traduzione +#elif L==8 // pl + "See the course timetable" // Potrzebujesz tlumaczenie +#elif L==9 // pt + "See the course timetable" // Precisa de tradução +#elif L==10 // tr + "See the course timetable" // Çeviri lazim! +#endif + , + [ActPrnCrsInf] = +#if L==1 // ca + "Print information on the course" // Necessita traducció +#elif L==2 // de + "Print information on the course" // Need Übersetzung +#elif L==3 // en + "Print information on the course" +#elif L==4 // es + "Imprimir información sobre la asignatura" +#elif L==5 // fr + "Print information on the course" // Besoin de traduction +#elif L==6 // gn + "Imprimir información sobre la asignatura" // Okoteve traducción +#elif L==7 // it + "Print information on the course" // Bisogno di traduzione +#elif L==8 // pl + "Print information on the course" // Potrzebujesz tlumaczenie +#elif L==9 // pt + "Print information on the course" // Precisa de tradução +#elif L==10 // tr + "Print information on the course" // Çeviri lazim! +#endif + , + [ActChgCrsDegCfg] = +#if L==1 // ca + "Change degree of course in its configuration" // Necessita traducció +#elif L==2 // de + "Change degree of course in its configuration" // Need Übersetzung +#elif L==3 // en + "Change degree of course in its configuration" +#elif L==4 // es + "Cambiar titulación de asignatura en su configuración" +#elif L==5 // fr + "Change degree of course in its configuration" // Besoin de traduction +#elif L==6 // gn + "Cambiar titulación de asignatura en su configuración" // Okoteve traducción +#elif L==7 // it + "Change degree of course in its configuration" // Bisogno di traduzione +#elif L==8 // pl + "Change degree of course in its configuration" // Potrzebujesz tlumaczenie +#elif L==9 // pt + "Change degree of course in its configuration" // Precisa de tradução +#elif L==10 // tr + "Change degree of course in its configuration" // Çeviri lazim! +#endif + , + [ActRenCrsShoCfg] = +#if L==1 // ca + "Change short name of course in its configuration" // Necessita traducció +#elif L==2 // de + "Change short name of course in its configuration" // Need Übersetzung +#elif L==3 // en + "Change short name of course in its configuration" +#elif L==4 // es + "Cambiar nombre breve de asignatura en su configuración" +#elif L==5 // fr + "Change short name of course in its configuration" // Besoin de traduction +#elif L==6 // gn + "Cambiar nombre breve de asignatura en su configuración" // Okoteve traducción +#elif L==7 // it + "Change short name of course in its configuration" // Bisogno di traduzione +#elif L==8 // pl + "Change short name of course in its configuration" // Potrzebujesz tlumaczenie +#elif L==9 // pt + "Change short name of course in its configuration" // Precisa de tradução +#elif L==10 // tr + "Change short name of course in its configuration" // Çeviri lazim! +#endif + , + [ActRenCrsFulCfg] = +#if L==1 // ca + "Change full name of course in its configuration" // Necessita traducció +#elif L==2 // de + "Change full name of course in its configuration" // Need Übersetzung +#elif L==3 // en + "Change full name of course in its configuration" +#elif L==4 // es + "Cambiar nombre completo de asignatura en su configuración" +#elif L==5 // fr + "Change full name of course in its configuration" // Besoin de traduction +#elif L==6 // gn + "Cambiar nombre completo de asignatura en su configuración" // Okoteve traducción +#elif L==7 // it + "Change full name of course in its configuration" // Bisogno di traduzione +#elif L==8 // pl + "Change full name of course in its configuration" // Potrzebujesz tlumaczenie +#elif L==9 // pt + "Change full name of course in its configuration" // Precisa de tradução +#elif L==10 // tr + "Change full name of course in its configuration" // Çeviri lazim! +#endif + , + [ActChgInsCrsCodCfg] = +#if L==1 // ca + "Change institutional code of course in its configuration" // Necessita traducció +#elif L==2 // de + "Change institutional code of course in its configuration" // Need Übersetzung +#elif L==3 // en + "Change institutional code of course in its configuration" +#elif L==4 // es + "Cambiar código institucional de asignatura en su configuración" +#elif L==5 // fr + "Change institutional code of course in its configuration" // Besoin de traduction +#elif L==6 // gn + "Cambiar código institucional de asignatura en su configuración" // Okoteve traducción +#elif L==7 // it + "Change institutional code of course in its configuration" // Bisogno di traduzione +#elif L==8 // pl + "Change institutional code of course in its configuration" // Potrzebujesz tlumaczenie +#elif L==9 // pt + "Change institutional code of course in its configuration" // Precisa de tradução +#elif L==10 // tr + "Change institutional code of course in its configuration" // Çeviri lazim! +#endif + , + [ActChgCrsYeaCfg] = +#if L==1 // ca + "Change year/semester of course in its configuration" // Necessita traducció +#elif L==2 // de + "Change year/semester of course in its configuration" // Need Übersetzung +#elif L==3 // en + "Change year/semester of course in its configuration" +#elif L==4 // es + "Cambiar año/semestre de asignatura en su configuración" +#elif L==5 // fr + "Change year/semester of course in its configuration" // Besoin de traduction +#elif L==6 // gn + "Cambiar año/semestre de asignatura en su configuración" // Okoteve traducción +#elif L==7 // it + "Change year/semester of course in its configuration" // Bisogno di traduzione +#elif L==8 // pl + "Change year/semester of course in its configuration" // Potrzebujesz tlumaczenie +#elif L==9 // pt + "Change year/semester of course in its configuration" // Precisa de tradução +#elif L==10 // tr + "Change year/semester of course in its configuration" // Çeviri lazim! +#endif + , + [ActEdiCrsInf] = +#if L==1 // ca + "Edit information about the course" // Necessita traducció +#elif L==2 // de + "Edit information about the course" // Need Übersetzung +#elif L==3 // en + "Edit information about the course" +#elif L==4 // es + "Editar la información de la asignatura" +#elif L==5 // fr + "Edit information about the course" // Besoin de traduction +#elif L==6 // gn + "Editar la información de la asignatura" // Okoteve traducción +#elif L==7 // it + "Edit information about the course" // Bisogno di traduzione +#elif L==8 // pl + "Edit information about the course" // Potrzebujesz tlumaczenie +#elif L==9 // pt + "Edit information about the course" // Precisa de tradução +#elif L==10 // tr + "Edit information about the course" // Çeviri lazim! +#endif + , + [ActEdiPrg] = +#if L==1 // ca + "Edit educational schedule of course" // Necessita traducció +#elif L==2 // de + "Edit educational schedule of course" // Need Übersetzung +#elif L==3 // en + "Edit educational schedule of course" +#elif L==4 // es + "Editar programación didáctica de la asignatura" +#elif L==5 // fr + "Edit educational schedule of course" // Besoin de traduction +#elif L==6 // gn + "Editar programación didáctica de la asignatura" // Okoteve traducción +#elif L==7 // it + "Edit educational schedule of course" // Bisogno di traduzione +#elif L==8 // pl + "Edit educational schedule of course" // Potrzebujesz tlumaczenie +#elif L==9 // pt + "Edit educational schedule of course" // Precisa de tradução +#elif L==10 // tr + "Edit educational schedule of course" // Çeviri lazim! #endif , [ActFrmNewPrgItm] = @@ -5879,305 +6201,6 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = "Move down resource" // Precisa de tradução #elif L==10 // tr "Move down resource" // Çeviri lazim! -#endif - , - [ActSeeTchGui] = -#if L==1 // ca - "See the teaching guide of course" // Necessita traducció -#elif L==2 // de - "See the teaching guide of course" // Need Übersetzung -#elif L==3 // en - "See the teaching guide of course" -#elif L==4 // es - "Ver la guía docente de la asignatura" -#elif L==5 // fr - "See the teaching guide of course" // Besoin de traduction -#elif L==6 // gn - "Ver la guía docente de la asignatura" // Okoteve traducción -#elif L==7 // it - "See the teaching guide of course" // Bisogno di traduzione -#elif L==8 // pl - "See the teaching guide of course" // Potrzebujesz tlumaczenie -#elif L==9 // pt - "See the teaching guide of course" // Precisa de tradução -#elif L==10 // tr - "See the teaching guide of course" // Çeviri lazim! -#endif - , - [ActSeeSyl] = -#if L==1 // ca - "See the syllabus (lectures or practicals)" // Necessita traducció -#elif L==2 // de - "See the syllabus (lectures or practicals)" // Need Übersetzung -#elif L==3 // en - "See the syllabus (lectures or practicals)" -#elif L==4 // es - "Ver el temario (teoría o prácticas)" -#elif L==5 // fr - "See the syllabus (lectures or practicals)" // Besoin de traduction -#elif L==6 // gn - "Ver el temario (teoría o prácticas)" // Okoteve traducción -#elif L==7 // it - "See the syllabus (lectures or practicals)" // Bisogno di traduzione -#elif L==8 // pl - "See the syllabus (lectures or practicals)" // Potrzebujesz tlumaczenie -#elif L==9 // pt - "See the syllabus (lectures or practicals)" // Precisa de tradução -#elif L==10 // tr - "See the syllabus (lectures or practicals)" // Çeviri lazim! -#endif - , - [ActSeeBib] = -#if L==1 // ca - "See the bibliography" // Necessita traducció -#elif L==2 // de - "See the bibliography" // Need Übersetzung -#elif L==3 // en - "See the bibliography" -#elif L==4 // es - "Ver la bibliografía" -#elif L==5 // fr - "See the bibliography" // Besoin de traduction -#elif L==6 // gn - "Ver la bibliografía" // Okoteve traducción -#elif L==7 // it - "See the bibliography" // Bisogno di traduzione -#elif L==8 // pl - "See the bibliography" // Potrzebujesz tlumaczenie -#elif L==9 // pt - "See the bibliography" // Precisa de tradução -#elif L==10 // tr - "See the bibliography" // Çeviri lazim! -#endif - , - [ActSeeFAQ] = -#if L==1 // ca - "See the FAQ" // Necessita traducció -#elif L==2 // de - "See the FAQ" // Need Übersetzung -#elif L==3 // en - "See the FAQ" -#elif L==4 // es - "Ver la FAQ" -#elif L==5 // fr - "See the FAQ" // Besoin de traduction -#elif L==6 // gn - "Ver la FAQ" // Okoteve traducción -#elif L==7 // it - "See the FAQ" // Bisogno di traduzione -#elif L==8 // pl - "See the FAQ" // Potrzebujesz tlumaczenie -#elif L==9 // pt - "See the FAQ" // Precisa de tradução -#elif L==10 // tr - "See the FAQ" // Çeviri lazim! -#endif - , - [ActSeeCrsLnk] = -#if L==1 // ca - "See the links related to the course" // Necessita traducció -#elif L==2 // de - "See the links related to the course" // Need Übersetzung -#elif L==3 // en - "See the links related to the course" -#elif L==4 // es - "Ver los enlaces relacionados con la asignatura" -#elif L==5 // fr - "See the links related to the course" // Besoin de traduction -#elif L==6 // gn - "Ver los enlaces relacionados con la asignatura" // Okoteve traducción -#elif L==7 // it - "See the links related to the course" // Bisogno di traduzione -#elif L==8 // pl - "See the links related to the course" // Potrzebujesz tlumaczenie -#elif L==9 // pt - "See the links related to the course" // Precisa de tradução -#elif L==10 // tr - "See the links related to the course" // Çeviri lazim! -#endif - , - [ActSeeCrsTT] = -#if L==1 // ca - "See the course timetable" // Necessita traducció -#elif L==2 // de - "See the course timetable" // Need Übersetzung -#elif L==3 // en - "See the course timetable" -#elif L==4 // es - "Ver el horario de la asignatura" -#elif L==5 // fr - "See the course timetable" // Besoin de traduction -#elif L==6 // gn - "Ver el horario de la asignatura" // Okoteve traducción -#elif L==7 // it - "See the course timetable" // Bisogno di traduzione -#elif L==8 // pl - "See the course timetable" // Potrzebujesz tlumaczenie -#elif L==9 // pt - "See the course timetable" // Precisa de tradução -#elif L==10 // tr - "See the course timetable" // Çeviri lazim! -#endif - , - [ActPrnCrsInf] = -#if L==1 // ca - "Print information on the course" // Necessita traducció -#elif L==2 // de - "Print information on the course" // Need Übersetzung -#elif L==3 // en - "Print information on the course" -#elif L==4 // es - "Imprimir información sobre la asignatura" -#elif L==5 // fr - "Print information on the course" // Besoin de traduction -#elif L==6 // gn - "Imprimir información sobre la asignatura" // Okoteve traducción -#elif L==7 // it - "Print information on the course" // Bisogno di traduzione -#elif L==8 // pl - "Print information on the course" // Potrzebujesz tlumaczenie -#elif L==9 // pt - "Print information on the course" // Precisa de tradução -#elif L==10 // tr - "Print information on the course" // Çeviri lazim! -#endif - , - [ActChgCrsDegCfg] = -#if L==1 // ca - "Change degree of course in its configuration" // Necessita traducció -#elif L==2 // de - "Change degree of course in its configuration" // Need Übersetzung -#elif L==3 // en - "Change degree of course in its configuration" -#elif L==4 // es - "Cambiar titulación de asignatura en su configuración" -#elif L==5 // fr - "Change degree of course in its configuration" // Besoin de traduction -#elif L==6 // gn - "Cambiar titulación de asignatura en su configuración" // Okoteve traducción -#elif L==7 // it - "Change degree of course in its configuration" // Bisogno di traduzione -#elif L==8 // pl - "Change degree of course in its configuration" // Potrzebujesz tlumaczenie -#elif L==9 // pt - "Change degree of course in its configuration" // Precisa de tradução -#elif L==10 // tr - "Change degree of course in its configuration" // Çeviri lazim! -#endif - , - [ActRenCrsShoCfg] = -#if L==1 // ca - "Change short name of course in its configuration" // Necessita traducció -#elif L==2 // de - "Change short name of course in its configuration" // Need Übersetzung -#elif L==3 // en - "Change short name of course in its configuration" -#elif L==4 // es - "Cambiar nombre breve de asignatura en su configuración" -#elif L==5 // fr - "Change short name of course in its configuration" // Besoin de traduction -#elif L==6 // gn - "Cambiar nombre breve de asignatura en su configuración" // Okoteve traducción -#elif L==7 // it - "Change short name of course in its configuration" // Bisogno di traduzione -#elif L==8 // pl - "Change short name of course in its configuration" // Potrzebujesz tlumaczenie -#elif L==9 // pt - "Change short name of course in its configuration" // Precisa de tradução -#elif L==10 // tr - "Change short name of course in its configuration" // Çeviri lazim! -#endif - , - [ActRenCrsFulCfg] = -#if L==1 // ca - "Change full name of course in its configuration" // Necessita traducció -#elif L==2 // de - "Change full name of course in its configuration" // Need Übersetzung -#elif L==3 // en - "Change full name of course in its configuration" -#elif L==4 // es - "Cambiar nombre completo de asignatura en su configuración" -#elif L==5 // fr - "Change full name of course in its configuration" // Besoin de traduction -#elif L==6 // gn - "Cambiar nombre completo de asignatura en su configuración" // Okoteve traducción -#elif L==7 // it - "Change full name of course in its configuration" // Bisogno di traduzione -#elif L==8 // pl - "Change full name of course in its configuration" // Potrzebujesz tlumaczenie -#elif L==9 // pt - "Change full name of course in its configuration" // Precisa de tradução -#elif L==10 // tr - "Change full name of course in its configuration" // Çeviri lazim! -#endif - , - [ActChgInsCrsCodCfg] = -#if L==1 // ca - "Change institutional code of course in its configuration" // Necessita traducció -#elif L==2 // de - "Change institutional code of course in its configuration" // Need Übersetzung -#elif L==3 // en - "Change institutional code of course in its configuration" -#elif L==4 // es - "Cambiar código institucional de asignatura en su configuración" -#elif L==5 // fr - "Change institutional code of course in its configuration" // Besoin de traduction -#elif L==6 // gn - "Cambiar código institucional de asignatura en su configuración" // Okoteve traducción -#elif L==7 // it - "Change institutional code of course in its configuration" // Bisogno di traduzione -#elif L==8 // pl - "Change institutional code of course in its configuration" // Potrzebujesz tlumaczenie -#elif L==9 // pt - "Change institutional code of course in its configuration" // Precisa de tradução -#elif L==10 // tr - "Change institutional code of course in its configuration" // Çeviri lazim! -#endif - , - [ActChgCrsYeaCfg] = -#if L==1 // ca - "Change year/semester of course in its configuration" // Necessita traducció -#elif L==2 // de - "Change year/semester of course in its configuration" // Need Übersetzung -#elif L==3 // en - "Change year/semester of course in its configuration" -#elif L==4 // es - "Cambiar año/semestre de asignatura en su configuración" -#elif L==5 // fr - "Change year/semester of course in its configuration" // Besoin de traduction -#elif L==6 // gn - "Cambiar año/semestre de asignatura en su configuración" // Okoteve traducción -#elif L==7 // it - "Change year/semester of course in its configuration" // Bisogno di traduzione -#elif L==8 // pl - "Change year/semester of course in its configuration" // Potrzebujesz tlumaczenie -#elif L==9 // pt - "Change year/semester of course in its configuration" // Precisa de tradução -#elif L==10 // tr - "Change year/semester of course in its configuration" // Çeviri lazim! -#endif - , - [ActEdiCrsInf] = -#if L==1 // ca - "Edit information about the course" // Necessita traducció -#elif L==2 // de - "Edit information about the course" // Need Übersetzung -#elif L==3 // en - "Edit information about the course" -#elif L==4 // es - "Editar la información de la asignatura" -#elif L==5 // fr - "Edit information about the course" // Besoin de traduction -#elif L==6 // gn - "Editar la información de la asignatura" // Okoteve traducción -#elif L==7 // it - "Edit information about the course" // Bisogno di traduzione -#elif L==8 // pl - "Edit information about the course" // Potrzebujesz tlumaczenie -#elif L==9 // pt - "Edit information about the course" // Precisa de tradução -#elif L==10 // tr - "Edit information about the course" // Çeviri lazim! #endif , [ActEdiTchGui] =