From d84a834925776b6599ee7e85b2433ba4dddf8592 Mon Sep 17 00:00:00 2001 From: acanas Date: Wed, 29 Mar 2023 09:30:58 +0200 Subject: [PATCH] Version 22.85: Mar 29, 2023 New action to remove the resource clipboard in program. --- swad_action_list.c | 6 +- swad_action_list.h | 243 ++++++++++++++++++++------------------- swad_changelog.h | 3 +- swad_icon.c | 8 ++ swad_icon.h | 2 + swad_program.c | 4 +- swad_program_resource.c | 34 +++++- swad_program_resource.h | 1 + swad_resource_database.c | 16 ++- swad_resource_database.h | 2 + swad_survey.c | 5 +- swad_text.c | 25 +++- swad_text_action.c | 45 ++++++-- 13 files changed, 249 insertions(+), 145 deletions(-) diff --git a/swad_action_list.c b/swad_action_list.c index 86c47570..1d3ed547 100644 --- a/swad_action_list.c +++ b/swad_action_list.c @@ -453,7 +453,8 @@ const struct Act_Actions ActLst_Actions[ActLst_NUM_ACTIONS] = [ActConSeePrgItm ] = {1945,-1,TabUnk,ActSeePrg ,0x238,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prg_ContractItem ,NULL}, [ActConEdiPrgItm ] = {1947,-1,TabUnk,ActSeePrg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Prg_ContractItem ,NULL}, - [ActSeePrgRscCli ] = {1970,-1,TabUnk,ActSeePrg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,PrgRsc_ViewResourceClipboard ,NULL}, + [ActSeeRscCli_InPrg ] = {1970,-1,TabUnk,ActSeePrg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,PrgRsc_ViewResourceClipboard ,NULL}, + [ActRemRscCli_InPrg ] = {1971,-1,TabUnk,ActSeePrg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,PrgRsc_RemoveResourceClipboard ,NULL}, [ActFrmSeePrgRsc ] = {1925,-1,TabUnk,ActSeePrg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,PrgRsc_ViewResourcesAfterEdit ,NULL}, [ActFrmEdiPrgRsc ] = {1918,-1,TabUnk,ActSeePrg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,PrgRsc_EditResources ,NULL}, [ActNewPrgRsc ] = {1929,-1,TabUnk,ActSeePrg ,0x220,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,PrgRsc_CreateResource ,NULL}, @@ -3858,5 +3859,6 @@ Act_Action_t ActLst_FromActCodToAction[1 + ActLst_MAX_ACTION_COD] = // Do not re ActChgWeiRubCri, // #1967 ActChgLnkRubCri, // #1968 ActReqLnkRub, // #1969 - ActSeePrgRscCli, // #1970 + ActSeeRscCli_InPrg, // #1970 + ActRemRscCli_InPrg, // #1971 }; diff --git a/swad_action_list.h b/swad_action_list.h index f8168c90..a6c0d363 100644 --- a/swad_action_list.h +++ b/swad_action_list.h @@ -380,138 +380,139 @@ #define ActExpEdiPrgItm (ActChgCrsSta + 33) #define ActConEdiPrgItm (ActChgCrsSta + 34) -#define ActSeePrgRscCli (ActChgCrsSta + 35) -#define ActFrmSeePrgRsc (ActChgCrsSta + 36) -#define ActFrmEdiPrgRsc (ActChgCrsSta + 37) -#define ActNewPrgRsc (ActChgCrsSta + 38) -#define ActRenPrgRsc (ActChgCrsSta + 39) -#define ActReqRemPrgRsc (ActChgCrsSta + 40) -#define ActRemPrgRsc (ActChgCrsSta + 41) -#define ActHidPrgRsc (ActChgCrsSta + 42) -#define ActUnhPrgRsc (ActChgCrsSta + 43) -#define ActUp_PrgRsc (ActChgCrsSta + 44) -#define ActDwnPrgRsc (ActChgCrsSta + 45) -#define ActFrmChgLnkPrgRsc (ActChgCrsSta + 46) -#define ActChgLnkPrgRsc (ActChgCrsSta + 47) -#define ActEdiTchGui (ActChgCrsSta + 48) -#define ActSeeSylLec (ActChgCrsSta + 49) -#define ActSeeSylPra (ActChgCrsSta + 50) -#define ActEdiSylLec (ActChgCrsSta + 51) -#define ActEdiSylPra (ActChgCrsSta + 52) -#define ActDelItmSylLec (ActChgCrsSta + 53) -#define ActDelItmSylPra (ActChgCrsSta + 54) -#define ActUp_IteSylLec (ActChgCrsSta + 55) -#define ActUp_IteSylPra (ActChgCrsSta + 56) -#define ActDwnIteSylLec (ActChgCrsSta + 57) -#define ActDwnIteSylPra (ActChgCrsSta + 58) -#define ActRgtIteSylLec (ActChgCrsSta + 59) -#define ActRgtIteSylPra (ActChgCrsSta + 60) -#define ActLftIteSylLec (ActChgCrsSta + 61) -#define ActLftIteSylPra (ActChgCrsSta + 62) -#define ActInsIteSylLec (ActChgCrsSta + 63) -#define ActInsIteSylPra (ActChgCrsSta + 64) -#define ActModIteSylLec (ActChgCrsSta + 65) -#define ActModIteSylPra (ActChgCrsSta + 66) +#define ActSeeRscCli_InPrg (ActChgCrsSta + 35) +#define ActRemRscCli_InPrg (ActChgCrsSta + 36) +#define ActFrmSeePrgRsc (ActChgCrsSta + 37) +#define ActFrmEdiPrgRsc (ActChgCrsSta + 38) +#define ActNewPrgRsc (ActChgCrsSta + 39) +#define ActRenPrgRsc (ActChgCrsSta + 40) +#define ActReqRemPrgRsc (ActChgCrsSta + 41) +#define ActRemPrgRsc (ActChgCrsSta + 42) +#define ActHidPrgRsc (ActChgCrsSta + 43) +#define ActUnhPrgRsc (ActChgCrsSta + 44) +#define ActUp_PrgRsc (ActChgCrsSta + 45) +#define ActDwnPrgRsc (ActChgCrsSta + 46) +#define ActFrmChgLnkPrgRsc (ActChgCrsSta + 47) +#define ActChgLnkPrgRsc (ActChgCrsSta + 48) +#define ActEdiTchGui (ActChgCrsSta + 49) +#define ActSeeSylLec (ActChgCrsSta + 50) +#define ActSeeSylPra (ActChgCrsSta + 51) +#define ActEdiSylLec (ActChgCrsSta + 52) +#define ActEdiSylPra (ActChgCrsSta + 53) +#define ActDelItmSylLec (ActChgCrsSta + 54) +#define ActDelItmSylPra (ActChgCrsSta + 55) +#define ActUp_IteSylLec (ActChgCrsSta + 56) +#define ActUp_IteSylPra (ActChgCrsSta + 57) +#define ActDwnIteSylLec (ActChgCrsSta + 58) +#define ActDwnIteSylPra (ActChgCrsSta + 59) +#define ActRgtIteSylLec (ActChgCrsSta + 60) +#define ActRgtIteSylPra (ActChgCrsSta + 61) +#define ActLftIteSylLec (ActChgCrsSta + 62) +#define ActLftIteSylPra (ActChgCrsSta + 63) +#define ActInsIteSylLec (ActChgCrsSta + 64) +#define ActInsIteSylPra (ActChgCrsSta + 65) +#define ActModIteSylLec (ActChgCrsSta + 66) +#define ActModIteSylPra (ActChgCrsSta + 67) -#define ActEdiBib (ActChgCrsSta + 67) -#define ActEdiFAQ (ActChgCrsSta + 68) -#define ActEdiCrsLnk (ActChgCrsSta + 69) -#define ActEdiAss (ActChgCrsSta + 70) +#define ActEdiBib (ActChgCrsSta + 68) +#define ActEdiFAQ (ActChgCrsSta + 69) +#define ActEdiCrsLnk (ActChgCrsSta + 70) +#define ActEdiAss (ActChgCrsSta + 71) -#define ActChgFrcReaCrsInf (ActChgCrsSta + 71) -#define ActChgFrcReaTchGui (ActChgCrsSta + 72) -#define ActChgFrcReaSylLec (ActChgCrsSta + 73) -#define ActChgFrcReaSylPra (ActChgCrsSta + 74) -#define ActChgFrcReaBib (ActChgCrsSta + 75) -#define ActChgFrcReaFAQ (ActChgCrsSta + 76) -#define ActChgFrcReaCrsLnk (ActChgCrsSta + 77) -#define ActChgFrcReaAss (ActChgCrsSta + 78) +#define ActChgFrcReaCrsInf (ActChgCrsSta + 72) +#define ActChgFrcReaTchGui (ActChgCrsSta + 73) +#define ActChgFrcReaSylLec (ActChgCrsSta + 74) +#define ActChgFrcReaSylPra (ActChgCrsSta + 75) +#define ActChgFrcReaBib (ActChgCrsSta + 76) +#define ActChgFrcReaFAQ (ActChgCrsSta + 77) +#define ActChgFrcReaCrsLnk (ActChgCrsSta + 78) +#define ActChgFrcReaAss (ActChgCrsSta + 79) -#define ActChgHavReaCrsInf (ActChgCrsSta + 79) -#define ActChgHavReaTchGui (ActChgCrsSta + 80) -#define ActChgHavReaSylLec (ActChgCrsSta + 81) -#define ActChgHavReaSylPra (ActChgCrsSta + 82) -#define ActChgHavReaBib (ActChgCrsSta + 83) -#define ActChgHavReaFAQ (ActChgCrsSta + 84) -#define ActChgHavReaCrsLnk (ActChgCrsSta + 85) -#define ActChgHavReaAss (ActChgCrsSta + 86) +#define ActChgHavReaCrsInf (ActChgCrsSta + 80) +#define ActChgHavReaTchGui (ActChgCrsSta + 81) +#define ActChgHavReaSylLec (ActChgCrsSta + 82) +#define ActChgHavReaSylPra (ActChgCrsSta + 83) +#define ActChgHavReaBib (ActChgCrsSta + 84) +#define ActChgHavReaFAQ (ActChgCrsSta + 85) +#define ActChgHavReaCrsLnk (ActChgCrsSta + 86) +#define ActChgHavReaAss (ActChgCrsSta + 87) -#define ActSelInfSrcCrsInf (ActChgCrsSta + 87) -#define ActSelInfSrcTchGui (ActChgCrsSta + 88) -#define ActSelInfSrcSylLec (ActChgCrsSta + 89) -#define ActSelInfSrcSylPra (ActChgCrsSta + 90) -#define ActSelInfSrcBib (ActChgCrsSta + 91) -#define ActSelInfSrcFAQ (ActChgCrsSta + 92) -#define ActSelInfSrcCrsLnk (ActChgCrsSta + 93) -#define ActSelInfSrcAss (ActChgCrsSta + 94) +#define ActSelInfSrcCrsInf (ActChgCrsSta + 88) +#define ActSelInfSrcTchGui (ActChgCrsSta + 89) +#define ActSelInfSrcSylLec (ActChgCrsSta + 90) +#define ActSelInfSrcSylPra (ActChgCrsSta + 91) +#define ActSelInfSrcBib (ActChgCrsSta + 92) +#define ActSelInfSrcFAQ (ActChgCrsSta + 93) +#define ActSelInfSrcCrsLnk (ActChgCrsSta + 94) +#define ActSelInfSrcAss (ActChgCrsSta + 95) -#define ActRcvURLCrsInf (ActChgCrsSta + 95) -#define ActRcvURLTchGui (ActChgCrsSta + 96) -#define ActRcvURLSylLec (ActChgCrsSta + 97) -#define ActRcvURLSylPra (ActChgCrsSta + 98) -#define ActRcvURLBib (ActChgCrsSta + 99) -#define ActRcvURLFAQ (ActChgCrsSta + 100) -#define ActRcvURLCrsLnk (ActChgCrsSta + 101) -#define ActRcvURLAss (ActChgCrsSta + 102) +#define ActRcvURLCrsInf (ActChgCrsSta + 96) +#define ActRcvURLTchGui (ActChgCrsSta + 97) +#define ActRcvURLSylLec (ActChgCrsSta + 98) +#define ActRcvURLSylPra (ActChgCrsSta + 99) +#define ActRcvURLBib (ActChgCrsSta + 100) +#define ActRcvURLFAQ (ActChgCrsSta + 101) +#define ActRcvURLCrsLnk (ActChgCrsSta + 102) +#define ActRcvURLAss (ActChgCrsSta + 103) -#define ActRcvPagCrsInf (ActChgCrsSta + 103) -#define ActRcvPagTchGui (ActChgCrsSta + 104) -#define ActRcvPagSylLec (ActChgCrsSta + 105) -#define ActRcvPagSylPra (ActChgCrsSta + 106) -#define ActRcvPagBib (ActChgCrsSta + 107) -#define ActRcvPagFAQ (ActChgCrsSta + 108) -#define ActRcvPagCrsLnk (ActChgCrsSta + 109) -#define ActRcvPagAss (ActChgCrsSta + 110) +#define ActRcvPagCrsInf (ActChgCrsSta + 104) +#define ActRcvPagTchGui (ActChgCrsSta + 105) +#define ActRcvPagSylLec (ActChgCrsSta + 106) +#define ActRcvPagSylPra (ActChgCrsSta + 107) +#define ActRcvPagBib (ActChgCrsSta + 108) +#define ActRcvPagFAQ (ActChgCrsSta + 109) +#define ActRcvPagCrsLnk (ActChgCrsSta + 110) +#define ActRcvPagAss (ActChgCrsSta + 111) -#define ActEditorCrsInf (ActChgCrsSta + 111) -#define ActEditorTchGui (ActChgCrsSta + 112) -#define ActEditorSylLec (ActChgCrsSta + 113) -#define ActEditorSylPra (ActChgCrsSta + 114) -#define ActEditorBib (ActChgCrsSta + 115) -#define ActEditorFAQ (ActChgCrsSta + 116) -#define ActEditorCrsLnk (ActChgCrsSta + 117) -#define ActEditorAss (ActChgCrsSta + 118) +#define ActEditorCrsInf (ActChgCrsSta + 112) +#define ActEditorTchGui (ActChgCrsSta + 113) +#define ActEditorSylLec (ActChgCrsSta + 114) +#define ActEditorSylPra (ActChgCrsSta + 115) +#define ActEditorBib (ActChgCrsSta + 116) +#define ActEditorFAQ (ActChgCrsSta + 117) +#define ActEditorCrsLnk (ActChgCrsSta + 118) +#define ActEditorAss (ActChgCrsSta + 119) -#define ActPlaTxtEdiCrsInf (ActChgCrsSta + 119) -#define ActPlaTxtEdiTchGui (ActChgCrsSta + 120) -#define ActPlaTxtEdiSylLec (ActChgCrsSta + 121) -#define ActPlaTxtEdiSylPra (ActChgCrsSta + 122) -#define ActPlaTxtEdiBib (ActChgCrsSta + 123) -#define ActPlaTxtEdiFAQ (ActChgCrsSta + 124) -#define ActPlaTxtEdiCrsLnk (ActChgCrsSta + 125) -#define ActPlaTxtEdiAss (ActChgCrsSta + 126) +#define ActPlaTxtEdiCrsInf (ActChgCrsSta + 120) +#define ActPlaTxtEdiTchGui (ActChgCrsSta + 121) +#define ActPlaTxtEdiSylLec (ActChgCrsSta + 122) +#define ActPlaTxtEdiSylPra (ActChgCrsSta + 123) +#define ActPlaTxtEdiBib (ActChgCrsSta + 124) +#define ActPlaTxtEdiFAQ (ActChgCrsSta + 125) +#define ActPlaTxtEdiCrsLnk (ActChgCrsSta + 126) +#define ActPlaTxtEdiAss (ActChgCrsSta + 127) -#define ActRchTxtEdiCrsInf (ActChgCrsSta + 127) -#define ActRchTxtEdiTchGui (ActChgCrsSta + 128) -#define ActRchTxtEdiSylLec (ActChgCrsSta + 129) -#define ActRchTxtEdiSylPra (ActChgCrsSta + 130) -#define ActRchTxtEdiBib (ActChgCrsSta + 131) -#define ActRchTxtEdiFAQ (ActChgCrsSta + 132) -#define ActRchTxtEdiCrsLnk (ActChgCrsSta + 133) -#define ActRchTxtEdiAss (ActChgCrsSta + 134) +#define ActRchTxtEdiCrsInf (ActChgCrsSta + 128) +#define ActRchTxtEdiTchGui (ActChgCrsSta + 129) +#define ActRchTxtEdiSylLec (ActChgCrsSta + 130) +#define ActRchTxtEdiSylPra (ActChgCrsSta + 131) +#define ActRchTxtEdiBib (ActChgCrsSta + 132) +#define ActRchTxtEdiFAQ (ActChgCrsSta + 133) +#define ActRchTxtEdiCrsLnk (ActChgCrsSta + 134) +#define ActRchTxtEdiAss (ActChgCrsSta + 135) -#define ActRcvPlaTxtCrsInf (ActChgCrsSta + 135) -#define ActRcvPlaTxtTchGui (ActChgCrsSta + 136) -#define ActRcvPlaTxtSylLec (ActChgCrsSta + 137) -#define ActRcvPlaTxtSylPra (ActChgCrsSta + 138) -#define ActRcvPlaTxtBib (ActChgCrsSta + 139) -#define ActRcvPlaTxtFAQ (ActChgCrsSta + 140) -#define ActRcvPlaTxtCrsLnk (ActChgCrsSta + 141) -#define ActRcvPlaTxtAss (ActChgCrsSta + 142) +#define ActRcvPlaTxtCrsInf (ActChgCrsSta + 136) +#define ActRcvPlaTxtTchGui (ActChgCrsSta + 137) +#define ActRcvPlaTxtSylLec (ActChgCrsSta + 138) +#define ActRcvPlaTxtSylPra (ActChgCrsSta + 139) +#define ActRcvPlaTxtBib (ActChgCrsSta + 140) +#define ActRcvPlaTxtFAQ (ActChgCrsSta + 141) +#define ActRcvPlaTxtCrsLnk (ActChgCrsSta + 142) +#define ActRcvPlaTxtAss (ActChgCrsSta + 143) -#define ActRcvRchTxtCrsInf (ActChgCrsSta + 143) -#define ActRcvRchTxtTchGui (ActChgCrsSta + 144) -#define ActRcvRchTxtSylLec (ActChgCrsSta + 145) -#define ActRcvRchTxtSylPra (ActChgCrsSta + 146) -#define ActRcvRchTxtBib (ActChgCrsSta + 147) -#define ActRcvRchTxtFAQ (ActChgCrsSta + 148) -#define ActRcvRchTxtCrsLnk (ActChgCrsSta + 149) -#define ActRcvRchTxtAss (ActChgCrsSta + 150) +#define ActRcvRchTxtCrsInf (ActChgCrsSta + 144) +#define ActRcvRchTxtTchGui (ActChgCrsSta + 145) +#define ActRcvRchTxtSylLec (ActChgCrsSta + 146) +#define ActRcvRchTxtSylPra (ActChgCrsSta + 147) +#define ActRcvRchTxtBib (ActChgCrsSta + 148) +#define ActRcvRchTxtFAQ (ActChgCrsSta + 149) +#define ActRcvRchTxtCrsLnk (ActChgCrsSta + 150) +#define ActRcvRchTxtAss (ActChgCrsSta + 151) -#define ActPrnCrsTT (ActChgCrsSta + 151) -#define ActEdiCrsTT (ActChgCrsSta + 152) -#define ActChgCrsTT (ActChgCrsSta + 153) -#define ActChgCrsTT1stDay (ActChgCrsSta + 154) +#define ActPrnCrsTT (ActChgCrsSta + 152) +#define ActEdiCrsTT (ActChgCrsSta + 153) +#define ActChgCrsTT (ActChgCrsSta + 154) +#define ActChgCrsTT1stDay (ActChgCrsSta + 155) /*****************************************************************************/ /***************************** Assessment tab ********************************/ @@ -1772,7 +1773,7 @@ #define ActLst_NUM_ACTIONS (ActChgMyTT1stDay + 1) -#define ActLst_MAX_ACTION_COD 1970 +#define ActLst_MAX_ACTION_COD 1971 #define ActLst_DEFAULT_ACTION_AFTER_LOGIN ActSeeGblTL diff --git a/swad_changelog.h b/swad_changelog.h index 5433e846..1624f504 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -629,10 +629,11 @@ TODO: Emilce Barrera Mesa: Podr TODO: Emilce Barrera Mesa: Mis estudiantes presentan muchas dificultades a la hora de poner la foto porque la plataforma es muy exigente respecto al fondo de la imagen. */ -#define Log_PLATFORM_VERSION "SWAD 22.84 (2023-03-29)" +#define Log_PLATFORM_VERSION "SWAD 22.85 (2023-03-29)" #define CSS_FILE "swad22.78.15.css" #define JS_FILE "swad22.49.js" /* + Version 22.85: Mar 29, 2023 New action to remove the resource clipboard in program. (338449 lines) Version 22.84: Mar 29, 2023 New action to see the resource clipboard in program. (338356 lines) Version 22.83.5: Mar 28, 2023 Fixed bugs in rubrics and exams. (338235 lines) Version 22.83.4: Mar 28, 2023 Code refactoring in rubrics and exams. (338221 lines) diff --git a/swad_icon.c b/swad_icon.c index dd2ad21d..ad1cdcd7 100644 --- a/swad_icon.c +++ b/swad_icon.c @@ -248,6 +248,14 @@ void Ico_PutContextualIconToRemove (Act_Action_t NextAction,const char *Anchor, "trash.svg",Ico_RED); } +void Ico_PutContextualIconToReset (Act_Action_t NextAction,const char *Anchor, + void (*FuncPars) (void *Args),void *Args) + { + Lay_PutContextualLinkOnlyIcon (NextAction,Anchor, + FuncPars,Args, + "recycle.svg",Ico_RED); + } + void Ico_PutContextualIconToEdit (Act_Action_t NextAction,const char *Anchor, void (*FuncPars) (void *Args),void *Args) { diff --git a/swad_icon.h b/swad_icon.h index ec896dcb..d2ed8a69 100644 --- a/swad_icon.h +++ b/swad_icon.h @@ -68,6 +68,8 @@ void Ico_PutContextualIconToAdd (Act_Action_t NextAction,const char *Anchor, void (*FuncPars) (void *Args),void *Args); void Ico_PutContextualIconToRemove (Act_Action_t NextAction,const char *Anchor, void (*FuncPars) (void *Args),void *Args); +void Ico_PutContextualIconToReset (Act_Action_t NextAction,const char *Anchor, + void (*FuncPars) (void *Args),void *Args); void Ico_PutContextualIconToEdit (Act_Action_t NextAction,const char *Anchor, void (*FuncPars) (void *Args),void *Args); void Ico_PutContextualIconToViewFiles (Act_Action_t NextAction, diff --git a/swad_program.c b/swad_program.c index 9be2269e..bd704209 100644 --- a/swad_program.c +++ b/swad_program.c @@ -462,7 +462,7 @@ static void Prg_PutIconToCreateNewItem (void) static void Prg_PutIconToViewResourceClipboard (void) { - Ico_PutContextualIconToViewClipboard (ActSeePrgRscCli,NULL, + Ico_PutContextualIconToViewClipboard (ActSeeRscCli_InPrg,NULL, NULL,NULL); } @@ -2259,7 +2259,7 @@ static void Prg_InsertItem (const struct Prg_Item *ParentItem, /********************** Show stats about schedule items **********************/ /*****************************************************************************/ -void Prg_GetAndShowCourseProgramStats (void) // TODO: Change function from assignments to course program items +void Prg_GetAndShowCourseProgramStats (void) { extern const char *Hlp_ANALYTICS_Figures_course_programs; extern const char *Txt_FIGURE_TYPES[Fig_NUM_FIGURES]; diff --git a/swad_program_resource.c b/swad_program_resource.c index f52fef1f..cbee39be 100644 --- a/swad_program_resource.c +++ b/swad_program_resource.c @@ -91,6 +91,7 @@ static bool PrgRsc_ExchangeResources (const struct Prg_ResourceHierarchy *Rsc1, const struct Prg_ResourceHierarchy *Rsc2); static void PrgRsc_ShowClipboard (void); +static void PrgRsc_PutIconsClipboard (__attribute__((unused)) void *Args); static void PrgRsc_ShowClipboardToChangeLink (struct Prg_Item *Item); /*****************************************************************************/ @@ -835,7 +836,7 @@ static bool PrgRsc_ExchangeResources (const struct Prg_ResourceHierarchy *Rsc1, } /*****************************************************************************/ -/***************** Show clipboard to change resource link ********************/ +/******************** Show clipboard on top of program ***********************/ /*****************************************************************************/ void PrgRsc_ViewResourceClipboard (void) @@ -847,6 +848,22 @@ void PrgRsc_ViewResourceClipboard (void) Prg_EditCourseProgram (); } +/*****************************************************************************/ +/******************* Remove clipboard and show program ***********************/ +/*****************************************************************************/ + +void PrgRsc_RemoveResourceClipboard (void) + { + extern const char *Txt_Resource_clipboard_removed; + + /***** Remove resource clipboard *****/ + Rsc_DB_RemoveClipboard (); + Ale_ShowAlert (Ale_SUCCESS,Txt_Resource_clipboard_removed); + + /***** Edit course program *****/ + Prg_EditCourseProgram (); + } + /*****************************************************************************/ /********** Edit program showing clipboard to change resource link ***********/ /*****************************************************************************/ @@ -886,8 +903,7 @@ static void PrgRsc_ShowClipboard (void) struct Rsc_Link Link; Box_BoxBegin (NULL,Txt_Resource_clipboard, - // PrgRsc_PutIconsClipboard,NULL, // TODO: Icon to remove!!!!!!!!!!!!! - NULL,NULL, + PrgRsc_PutIconsClipboard,NULL, Hlp_COURSE_Program,Box_CLOSABLE); /***** Begin list *****/ @@ -915,6 +931,18 @@ static void PrgRsc_ShowClipboard (void) Box_BoxEnd (); } +/*****************************************************************************/ +/****** Put contextual icons when showing resource clipboard in program ******/ +/*****************************************************************************/ + +static void PrgRsc_PutIconsClipboard (__attribute__((unused)) void *Args) + { + /***** Put icon to remove resource clipboard in program *****/ + if (Prg_CheckIfICanEditProgram ()) + Ico_PutContextualIconToRemove (ActRemRscCli_InPrg,NULL, + NULL,NULL); + } + /*****************************************************************************/ /***************** Show clipboard to change resource link ********************/ /*****************************************************************************/ diff --git a/swad_program_resource.h b/swad_program_resource.h index 8e653723..fb83f281 100644 --- a/swad_program_resource.h +++ b/swad_program_resource.h @@ -57,6 +57,7 @@ void PrgRsc_MoveUpResource (void); void PrgRsc_MoveDownResource (void); void PrgRsc_ViewResourceClipboard (void); +void PrgRsc_RemoveResourceClipboard (void); void PrgRsc_EditProgramWithClipboard (void); diff --git a/swad_resource_database.c b/swad_resource_database.c index 28af5736..d52db413 100644 --- a/swad_resource_database.c +++ b/swad_resource_database.c @@ -55,7 +55,7 @@ void Rsc_DB_CopyToClipboard (Rsc_Type_t Type,long Cod) } /*****************************************************************************/ -/**************** Get resources in the current course clipboard **************/ +/****************** Get all resources from resource clipboard ****************/ /*****************************************************************************/ unsigned Rsc_DB_GetClipboard (MYSQL_RES **mysql_res) @@ -72,6 +72,20 @@ unsigned Rsc_DB_GetClipboard (MYSQL_RES **mysql_res) Gbl.Hierarchy.Crs.CrsCod); } +/*****************************************************************************/ +/**************** Remove all resources from resource clipboard ***************/ +/*****************************************************************************/ + +void Rsc_DB_RemoveClipboard (void) + { + DB_QueryDELETE ("can not remove clipboard", + "DELETE FROM rsc_clipboards" + " WHERE UsrCod=%ld" + " AND CrsCod=%ld", + Gbl.Usrs.Me.UsrDat.UsrCod, + Gbl.Hierarchy.Crs.CrsCod); + } + /*****************************************************************************/ /*************************** Remove link from clipboard **********************/ /*****************************************************************************/ diff --git a/swad_resource_database.h b/swad_resource_database.h index faa7e8cc..9383e873 100644 --- a/swad_resource_database.h +++ b/swad_resource_database.h @@ -35,6 +35,8 @@ void Rsc_DB_CopyToClipboard (Rsc_Type_t Type,long Cod); unsigned Rsc_DB_GetClipboard (MYSQL_RES **mysql_res); + +void Rsc_DB_RemoveClipboard (void); void Rsc_DB_RemoveLinkFromClipboard (struct Rsc_Link *Link); #endif diff --git a/swad_survey.c b/swad_survey.c index eb80feeb..f103ab1b 100644 --- a/swad_survey.c +++ b/swad_survey.c @@ -904,9 +904,8 @@ static void Svy_PutFormsToRemEditOneSvy (struct Svy_Surveys *Surveys, Svy_PutPars,Surveys); /***** Icon to reset survey *****/ - Lay_PutContextualLinkOnlyIcon (ActReqRstSvy,NULL, - Svy_PutPars,Surveys, - "recycle.svg",Ico_RED); + Ico_PutContextualIconToReset (ActReqRstSvy,NULL, + Svy_PutPars,Surveys); /***** Icon to hide/unhide survey *****/ Ico_PutContextualIconToHideUnhide (ActionHideUnhide,Anchor, diff --git a/swad_text.c b/swad_text.c index 750a3720..b5476f1b 100644 --- a/swad_text.c +++ b/swad_text.c @@ -36384,7 +36384,7 @@ const char *Txt_Reset_survey = "Reset survey"; // Çeviri lazim! #endif -const char *Txt_Resource_clipboard = // Warning: it is very important to include %s in the following sentences +const char *Txt_Resource_clipboard = #if L==1 // ca "Portapapers de recursos"; #elif L==2 // de @@ -36407,6 +36407,29 @@ const char *Txt_Resource_clipboard = // Warning: it is very important to include "Kaynak panosu"; #endif +const char *Txt_Resource_clipboard_removed = +#if L==1 // ca + "Portapapers de recursos eliminat."; +#elif L==2 // de + "Ressourcen-Zwischenablage entfernt."; +#elif L==3 // en + "Resource clipboard removed."; +#elif L==4 // es + "Portapapeles de recursos eliminado."; +#elif L==5 // fr + "Presse-papiers de ressources supprimé."; +#elif L==6 // gn + "Recurso portapapeles ojeipe'a."; +#elif L==7 // it + "Appunti delle risorse rimossi."; +#elif L==8 // pl + "Usunięto schowek zasobów."; +#elif L==9 // pt + "Área de transferência de recursos removida."; +#elif L==10 // tr + "Kaynak panosu kaldırıldı."; +#endif + const char *Txt_Resource_X_removed = // Warning: it is very important to include %s in the following sentences #if L==1 // ca "Recurs %s eliminat."; diff --git a/swad_text_action.c b/swad_text_action.c index 3630450d..61e1ce94 100644 --- a/swad_text_action.c +++ b/swad_text_action.c @@ -6157,27 +6157,50 @@ const char *Txt_Actions[ActLst_NUM_ACTIONS] = "Contract program item when editing" // Çeviri lazim! #endif , - [ActSeePrgRscCli] = + [ActSeeRscCli_InPrg] = #if L==1 // ca - "Veure el porta-retalls de recursos" + "Veure portapapers de recursos en programa" #elif L==2 // de - "Ressourcen-Zwischenablage anzeigen" + "Siehe Ressourcen-Zwischenablage im Programm" #elif L==3 // en - "See resource clipboard" + "See resource clipboard in program" #elif L==4 // es - "Ver portapapeles de recursos" + "Ver portapapeles de recursos en programa" #elif L==5 // fr - "Afficher le presse-papiers des ressources" + "Voir le presse-papiers des ressources dans le programme" #elif L==6 // gn - "Ojehechakuaa recurso portapapeles rehegua" + "Ehecha portapapeles umi recurso oĩva programa-pe" #elif L==7 // it - "Visualizza gli appunti delle risorse" + "Visualizza gli appunti delle risorse nel programma" #elif L==8 // pl - "Wyświetl schowek zasobów" + "Zobacz schowek zasobów w programie" #elif L==9 // pt - "Exibir área de transferência de recursos" + "Ver área de transferência de recursos no programa" #elif L==10 // tr - "Kaynak panosunu görüntüle" + "Programdaki kaynak panosuna bakın" +#endif + , + [ActRemRscCli_InPrg] = +#if L==1 // ca + "Eliminar portapapers de recursos en programa" +#elif L==2 // de + "Entfernen Sie die Ressourcen-Zwischenablage im Programm" +#elif L==3 // en + "Remove resource clipboard in program" +#elif L==4 // es + "Eliminar portapapeles de recursos en programa" +#elif L==5 // fr + "Supprimer le presse-papiers des ressources dans le programme" +#elif L==6 // gn + "Embogue recurso portapapeles programa-pe" +#elif L==7 // it + "Elimina gli appunti delle risorse nel programma" +#elif L==8 // pl + "Usuń schowek zasobów w programie" +#elif L==9 // pt + "Remover área de transferência de recursos no programa" +#elif L==10 // tr + "Programdaki kaynak panosunu kaldır" #endif , [ActFrmSeePrgRsc] =