From b05d71f76c9b58b77fe927b2c1df1a695de45b16 Mon Sep 17 00:00:00 2001 From: Kenn Jacobsen Date: Tue, 23 Feb 2021 16:09:36 +0100 Subject: [PATCH] Replaced static events in TreeControllerBase with IEventAggregator notifications --- .../Trees/ApplicationTreeController.cs | 4 +- .../Trees/ContentBlueprintTreeController.cs | 6 +- .../Trees/ContentTreeController.cs | 6 +- .../Trees/ContentTreeControllerBase.cs | 6 +- .../Trees/ContentTypeTreeController.cs | 3 +- .../Trees/DataTypeTreeController.cs | 3 +- .../Trees/DictionaryTreeController.cs | 3 +- .../Trees/FileSystemTreeController.cs | 6 +- .../Trees/FilesTreeController.cs | 8 ++- .../Trees/LanguageTreeController.cs | 6 +- .../Trees/LogViewerTreeController.cs | 6 +- .../Trees/MacrosTreeController.cs | 3 +- .../Trees/MediaTreeController.cs | 6 +- .../Trees/MediaTypeTreeController.cs | 3 +- .../Trees/MemberGroupTreeController.cs | 8 ++- .../Trees/MemberTreeController.cs | 6 +- .../MemberTypeAndGroupTreeControllerBase.cs | 6 +- .../Trees/MemberTypeTreeController.cs | 8 ++- .../Trees/MenuRendering.cs | 36 ++++++++++++ .../Trees/MenuRenderingEventArgs.cs | 25 -------- .../Trees/PackagesTreeController.cs | 6 +- .../Trees/PartialViewMacrosTreeController.cs | 8 ++- .../Trees/PartialViewsTreeController.cs | 6 +- .../Trees/RelationTypeTreeController.cs | 6 +- .../Trees/RootNodeRendering.cs | 22 +++++++ .../Trees/ScriptsTreeController.cs | 8 ++- .../Trees/StylesheetsTreeController.cs | 8 ++- .../Trees/TemplatesTreeController.cs | 6 +- .../Trees/TreeController.cs | 7 ++- .../Trees/TreeControllerBase.cs | 57 ++++--------------- .../Trees/TreeNodeRenderingEventArgs.cs | 16 ------ .../Trees/TreeNodesRendering.cs | 25 ++++++++ .../Trees/TreeNodesRenderingEventArgs.cs | 16 ------ .../Trees/TreeRenderingEventArgs.cs | 15 ----- .../Trees/UserTreeController.cs | 6 +- 35 files changed, 195 insertions(+), 175 deletions(-) create mode 100644 src/Umbraco.Web.BackOffice/Trees/MenuRendering.cs delete mode 100644 src/Umbraco.Web.BackOffice/Trees/MenuRenderingEventArgs.cs create mode 100644 src/Umbraco.Web.BackOffice/Trees/RootNodeRendering.cs delete mode 100644 src/Umbraco.Web.BackOffice/Trees/TreeNodeRenderingEventArgs.cs create mode 100644 src/Umbraco.Web.BackOffice/Trees/TreeNodesRendering.cs delete mode 100644 src/Umbraco.Web.BackOffice/Trees/TreeNodesRenderingEventArgs.cs delete mode 100644 src/Umbraco.Web.BackOffice/Trees/TreeRenderingEventArgs.cs diff --git a/src/Umbraco.Web.BackOffice/Trees/ApplicationTreeController.cs b/src/Umbraco.Web.BackOffice/Trees/ApplicationTreeController.cs index 84f2b5f574..8b1fb747a7 100644 --- a/src/Umbraco.Web.BackOffice/Trees/ApplicationTreeController.cs +++ b/src/Umbraco.Web.BackOffice/Trees/ApplicationTreeController.cs @@ -265,7 +265,7 @@ namespace Umbraco.Cms.Web.BackOffice.Trees } var controller = (TreeControllerBase)result.Value; - var rootNodeResult = controller.GetRootNode(querystring); + var rootNodeResult = await controller.GetRootNode(querystring); if (!(rootNodeResult.Result is null)) { return rootNodeResult.Result; @@ -305,7 +305,7 @@ namespace Umbraco.Cms.Web.BackOffice.Trees } var controller = (TreeControllerBase)controllerResult.Value; - return controller.GetNodes(id.ToInvariantString(), querystring); + return await controller.GetNodes(id.ToInvariantString(), querystring); } /// diff --git a/src/Umbraco.Web.BackOffice/Trees/ContentBlueprintTreeController.cs b/src/Umbraco.Web.BackOffice/Trees/ContentBlueprintTreeController.cs index 4b48902e17..9b6ccf91f6 100644 --- a/src/Umbraco.Web.BackOffice/Trees/ContentBlueprintTreeController.cs +++ b/src/Umbraco.Web.BackOffice/Trees/ContentBlueprintTreeController.cs @@ -5,6 +5,7 @@ using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Umbraco.Cms.Core; using Umbraco.Cms.Core.Actions; +using Umbraco.Cms.Core.Events; using Umbraco.Cms.Core.Models; using Umbraco.Cms.Core.Models.Entities; using Umbraco.Cms.Core.Models.Trees; @@ -40,8 +41,9 @@ namespace Umbraco.Cms.Web.BackOffice.Trees IMenuItemCollectionFactory menuItemCollectionFactory, IContentService contentService, IContentTypeService contentTypeService, - IEntityService entityService) - : base(localizedTextService, umbracoApiControllerTypeCollection) + IEntityService entityService, + IEventAggregator eventAggregator) + : base(localizedTextService, umbracoApiControllerTypeCollection, eventAggregator) { _menuItemCollectionFactory = menuItemCollectionFactory ?? throw new ArgumentNullException(nameof(menuItemCollectionFactory)); _contentService = contentService ?? throw new ArgumentNullException(nameof(contentService)); diff --git a/src/Umbraco.Web.BackOffice/Trees/ContentTreeController.cs b/src/Umbraco.Web.BackOffice/Trees/ContentTreeController.cs index 63326a8c7a..6295897d52 100644 --- a/src/Umbraco.Web.BackOffice/Trees/ContentTreeController.cs +++ b/src/Umbraco.Web.BackOffice/Trees/ContentTreeController.cs @@ -9,6 +9,7 @@ using Microsoft.Extensions.Options; using Umbraco.Cms.Core; using Umbraco.Cms.Core.Actions; using Umbraco.Cms.Core.Configuration.Models; +using Umbraco.Cms.Core.Events; using Umbraco.Cms.Core.Models; using Umbraco.Cms.Core.Models.ContentEditing; using Umbraco.Cms.Core.Models.Entities; @@ -58,8 +59,9 @@ namespace Umbraco.Cms.Web.BackOffice.Trees IOptions globalSettings, IContentService contentService, IPublicAccessService publicAccessService, - ILocalizationService localizationService) - : base(localizedTextService, umbracoApiControllerTypeCollection, menuItemCollectionFactory, entityService, backofficeSecurityAccessor, logger, actionCollection, userService, dataTypeService) + ILocalizationService localizationService, + IEventAggregator eventAggregator) + : base(localizedTextService, umbracoApiControllerTypeCollection, menuItemCollectionFactory, entityService, backofficeSecurityAccessor, logger, actionCollection, userService, dataTypeService, eventAggregator) { _treeSearcher = treeSearcher; _actions = actions; diff --git a/src/Umbraco.Web.BackOffice/Trees/ContentTreeControllerBase.cs b/src/Umbraco.Web.BackOffice/Trees/ContentTreeControllerBase.cs index 7bb9782c5e..447c896b8a 100644 --- a/src/Umbraco.Web.BackOffice/Trees/ContentTreeControllerBase.cs +++ b/src/Umbraco.Web.BackOffice/Trees/ContentTreeControllerBase.cs @@ -7,6 +7,7 @@ using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Logging; using Umbraco.Cms.Core; using Umbraco.Cms.Core.Actions; +using Umbraco.Cms.Core.Events; using Umbraco.Cms.Core.Models; using Umbraco.Cms.Core.Models.Entities; using Umbraco.Cms.Core.Models.Trees; @@ -39,9 +40,10 @@ namespace Umbraco.Cms.Web.BackOffice.Trees ILogger logger, ActionCollection actionCollection, IUserService userService, - IDataTypeService dataTypeService + IDataTypeService dataTypeService, + IEventAggregator eventAggregator ) - : base(localizedTextService, umbracoApiControllerTypeCollection) + : base(localizedTextService, umbracoApiControllerTypeCollection, eventAggregator) { _entityService = entityService; _backofficeSecurityAccessor = backofficeSecurityAccessor; diff --git a/src/Umbraco.Web.BackOffice/Trees/ContentTypeTreeController.cs b/src/Umbraco.Web.BackOffice/Trees/ContentTypeTreeController.cs index 2151141406..cc81af330a 100644 --- a/src/Umbraco.Web.BackOffice/Trees/ContentTypeTreeController.cs +++ b/src/Umbraco.Web.BackOffice/Trees/ContentTypeTreeController.cs @@ -6,6 +6,7 @@ using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Umbraco.Cms.Core; using Umbraco.Cms.Core.Actions; +using Umbraco.Cms.Core.Events; using Umbraco.Cms.Core.Models; using Umbraco.Cms.Core.Models.ContentEditing; using Umbraco.Cms.Core.Models.Trees; @@ -30,7 +31,7 @@ namespace Umbraco.Cms.Web.BackOffice.Trees private readonly IContentTypeService _contentTypeService; private readonly IEntityService _entityService; - public ContentTypeTreeController(ILocalizedTextService localizedTextService, UmbracoApiControllerTypeCollection umbracoApiControllerTypeCollection, UmbracoTreeSearcher treeSearcher, IMenuItemCollectionFactory menuItemCollectionFactory, IContentTypeService contentTypeService, IEntityService entityService) : base(localizedTextService, umbracoApiControllerTypeCollection) + public ContentTypeTreeController(ILocalizedTextService localizedTextService, UmbracoApiControllerTypeCollection umbracoApiControllerTypeCollection, UmbracoTreeSearcher treeSearcher, IMenuItemCollectionFactory menuItemCollectionFactory, IContentTypeService contentTypeService, IEntityService entityService, IEventAggregator eventAggregator) : base(localizedTextService, umbracoApiControllerTypeCollection, eventAggregator) { _treeSearcher = treeSearcher; _menuItemCollectionFactory = menuItemCollectionFactory; diff --git a/src/Umbraco.Web.BackOffice/Trees/DataTypeTreeController.cs b/src/Umbraco.Web.BackOffice/Trees/DataTypeTreeController.cs index 714fb6954c..35876f983a 100644 --- a/src/Umbraco.Web.BackOffice/Trees/DataTypeTreeController.cs +++ b/src/Umbraco.Web.BackOffice/Trees/DataTypeTreeController.cs @@ -6,6 +6,7 @@ using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Umbraco.Cms.Core; using Umbraco.Cms.Core.Actions; +using Umbraco.Cms.Core.Events; using Umbraco.Cms.Core.Models; using Umbraco.Cms.Core.Models.ContentEditing; using Umbraco.Cms.Core.Models.Trees; @@ -31,7 +32,7 @@ namespace Umbraco.Cms.Web.BackOffice.Trees private readonly IDataTypeService _dataTypeService; - public DataTypeTreeController(ILocalizedTextService localizedTextService, UmbracoApiControllerTypeCollection umbracoApiControllerTypeCollection, UmbracoTreeSearcher treeSearcher, IMenuItemCollectionFactory menuItemCollectionFactory, IEntityService entityService, IDataTypeService dataTypeService) : base(localizedTextService, umbracoApiControllerTypeCollection) + public DataTypeTreeController(ILocalizedTextService localizedTextService, UmbracoApiControllerTypeCollection umbracoApiControllerTypeCollection, UmbracoTreeSearcher treeSearcher, IMenuItemCollectionFactory menuItemCollectionFactory, IEntityService entityService, IDataTypeService dataTypeService, IEventAggregator eventAggregator) : base(localizedTextService, umbracoApiControllerTypeCollection, eventAggregator) { _treeSearcher = treeSearcher; _menuItemCollectionFactory = menuItemCollectionFactory; diff --git a/src/Umbraco.Web.BackOffice/Trees/DictionaryTreeController.cs b/src/Umbraco.Web.BackOffice/Trees/DictionaryTreeController.cs index 3355cc5312..7dc1f386fe 100644 --- a/src/Umbraco.Web.BackOffice/Trees/DictionaryTreeController.cs +++ b/src/Umbraco.Web.BackOffice/Trees/DictionaryTreeController.cs @@ -5,6 +5,7 @@ using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Umbraco.Cms.Core; using Umbraco.Cms.Core.Actions; +using Umbraco.Cms.Core.Events; using Umbraco.Cms.Core.Models; using Umbraco.Cms.Core.Models.Trees; using Umbraco.Cms.Core.Services; @@ -28,7 +29,7 @@ namespace Umbraco.Cms.Web.BackOffice.Trees private readonly IMenuItemCollectionFactory _menuItemCollectionFactory; private readonly ILocalizationService _localizationService; - public DictionaryTreeController(ILocalizedTextService localizedTextService, UmbracoApiControllerTypeCollection umbracoApiControllerTypeCollection, IMenuItemCollectionFactory menuItemCollectionFactory, ILocalizationService localizationService) : base(localizedTextService, umbracoApiControllerTypeCollection) + public DictionaryTreeController(ILocalizedTextService localizedTextService, UmbracoApiControllerTypeCollection umbracoApiControllerTypeCollection, IMenuItemCollectionFactory menuItemCollectionFactory, ILocalizationService localizationService, IEventAggregator eventAggregator) : base(localizedTextService, umbracoApiControllerTypeCollection, eventAggregator) { _menuItemCollectionFactory = menuItemCollectionFactory; _localizationService = localizationService; diff --git a/src/Umbraco.Web.BackOffice/Trees/FileSystemTreeController.cs b/src/Umbraco.Web.BackOffice/Trees/FileSystemTreeController.cs index fffa767ad0..9ee334013a 100644 --- a/src/Umbraco.Web.BackOffice/Trees/FileSystemTreeController.cs +++ b/src/Umbraco.Web.BackOffice/Trees/FileSystemTreeController.cs @@ -6,6 +6,7 @@ using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Umbraco.Cms.Core; using Umbraco.Cms.Core.Actions; +using Umbraco.Cms.Core.Events; using Umbraco.Cms.Core.IO; using Umbraco.Cms.Core.Models.Trees; using Umbraco.Cms.Core.Services; @@ -20,9 +21,10 @@ namespace Umbraco.Cms.Web.BackOffice.Trees protected FileSystemTreeController( ILocalizedTextService localizedTextService, UmbracoApiControllerTypeCollection umbracoApiControllerTypeCollection, - IMenuItemCollectionFactory menuItemCollectionFactory + IMenuItemCollectionFactory menuItemCollectionFactory, + IEventAggregator eventAggregator ) - : base(localizedTextService, umbracoApiControllerTypeCollection) + : base(localizedTextService, umbracoApiControllerTypeCollection, eventAggregator) { MenuItemCollectionFactory = menuItemCollectionFactory; } diff --git a/src/Umbraco.Web.BackOffice/Trees/FilesTreeController.cs b/src/Umbraco.Web.BackOffice/Trees/FilesTreeController.cs index e324cddfbc..7caf6256d9 100644 --- a/src/Umbraco.Web.BackOffice/Trees/FilesTreeController.cs +++ b/src/Umbraco.Web.BackOffice/Trees/FilesTreeController.cs @@ -1,4 +1,5 @@ -using Umbraco.Cms.Core; +using Umbraco.Cms.Core; +using Umbraco.Cms.Core.Events; using Umbraco.Cms.Core.IO; using Umbraco.Cms.Core.Services; using Umbraco.Cms.Core.Trees; @@ -18,8 +19,9 @@ namespace Umbraco.Cms.Web.BackOffice.Trees ILocalizedTextService localizedTextService, UmbracoApiControllerTypeCollection umbracoApiControllerTypeCollection, IMenuItemCollectionFactory menuItemCollectionFactory, - IPhysicalFileSystem fileSystem) - : base(localizedTextService, umbracoApiControllerTypeCollection, menuItemCollectionFactory) + IPhysicalFileSystem fileSystem, + IEventAggregator eventAggregator) + : base(localizedTextService, umbracoApiControllerTypeCollection, menuItemCollectionFactory, eventAggregator) { FileSystem = fileSystem; } diff --git a/src/Umbraco.Web.BackOffice/Trees/LanguageTreeController.cs b/src/Umbraco.Web.BackOffice/Trees/LanguageTreeController.cs index a3e55a68dc..a0a80a8206 100644 --- a/src/Umbraco.Web.BackOffice/Trees/LanguageTreeController.cs +++ b/src/Umbraco.Web.BackOffice/Trees/LanguageTreeController.cs @@ -2,6 +2,7 @@ using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Umbraco.Cms.Core; +using Umbraco.Cms.Core.Events; using Umbraco.Cms.Core.Services; using Umbraco.Cms.Core.Trees; using Umbraco.Cms.Web.Common.Attributes; @@ -19,8 +20,9 @@ namespace Umbraco.Cms.Web.BackOffice.Trees public LanguageTreeController( ILocalizedTextService textService, - UmbracoApiControllerTypeCollection umbracoApiControllerTypeCollection) - : base(textService, umbracoApiControllerTypeCollection) + UmbracoApiControllerTypeCollection umbracoApiControllerTypeCollection, + IEventAggregator eventAggregator) + : base(textService, umbracoApiControllerTypeCollection, eventAggregator) { } protected override ActionResult GetTreeNodes(string id, FormCollection queryStrings) diff --git a/src/Umbraco.Web.BackOffice/Trees/LogViewerTreeController.cs b/src/Umbraco.Web.BackOffice/Trees/LogViewerTreeController.cs index 7a9eec99fe..e24fcfb09e 100644 --- a/src/Umbraco.Web.BackOffice/Trees/LogViewerTreeController.cs +++ b/src/Umbraco.Web.BackOffice/Trees/LogViewerTreeController.cs @@ -2,6 +2,7 @@ using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Umbraco.Cms.Core; +using Umbraco.Cms.Core.Events; using Umbraco.Cms.Core.Services; using Umbraco.Cms.Core.Trees; using Umbraco.Cms.Web.Common.Attributes; @@ -18,8 +19,9 @@ namespace Umbraco.Cms.Web.BackOffice.Trees { public LogViewerTreeController( ILocalizedTextService localizedTextService, - UmbracoApiControllerTypeCollection umbracoApiControllerTypeCollection) - : base(localizedTextService, umbracoApiControllerTypeCollection) + UmbracoApiControllerTypeCollection umbracoApiControllerTypeCollection, + IEventAggregator eventAggregator) + : base(localizedTextService, umbracoApiControllerTypeCollection, eventAggregator) { } diff --git a/src/Umbraco.Web.BackOffice/Trees/MacrosTreeController.cs b/src/Umbraco.Web.BackOffice/Trees/MacrosTreeController.cs index 8f587bd9a4..c29518473d 100644 --- a/src/Umbraco.Web.BackOffice/Trees/MacrosTreeController.cs +++ b/src/Umbraco.Web.BackOffice/Trees/MacrosTreeController.cs @@ -4,6 +4,7 @@ using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Umbraco.Cms.Core; using Umbraco.Cms.Core.Actions; +using Umbraco.Cms.Core.Events; using Umbraco.Cms.Core.Models.Trees; using Umbraco.Cms.Core.Services; using Umbraco.Cms.Core.Trees; @@ -22,7 +23,7 @@ namespace Umbraco.Cms.Web.BackOffice.Trees private readonly IMenuItemCollectionFactory _menuItemCollectionFactory; private readonly IMacroService _macroService; - public MacrosTreeController(ILocalizedTextService localizedTextService, UmbracoApiControllerTypeCollection umbracoApiControllerTypeCollection, IMenuItemCollectionFactory menuItemCollectionFactory, IMacroService macroService) : base(localizedTextService, umbracoApiControllerTypeCollection) + public MacrosTreeController(ILocalizedTextService localizedTextService, UmbracoApiControllerTypeCollection umbracoApiControllerTypeCollection, IMenuItemCollectionFactory menuItemCollectionFactory, IMacroService macroService, IEventAggregator eventAggregator) : base(localizedTextService, umbracoApiControllerTypeCollection, eventAggregator) { _menuItemCollectionFactory = menuItemCollectionFactory; _macroService = macroService; diff --git a/src/Umbraco.Web.BackOffice/Trees/MediaTreeController.cs b/src/Umbraco.Web.BackOffice/Trees/MediaTreeController.cs index 74c6ef39d2..2ceeb5b30a 100644 --- a/src/Umbraco.Web.BackOffice/Trees/MediaTreeController.cs +++ b/src/Umbraco.Web.BackOffice/Trees/MediaTreeController.cs @@ -7,6 +7,7 @@ using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Logging; using Umbraco.Cms.Core; using Umbraco.Cms.Core.Actions; +using Umbraco.Cms.Core.Events; using Umbraco.Cms.Core.Models; using Umbraco.Cms.Core.Models.ContentEditing; using Umbraco.Cms.Core.Models.Entities; @@ -45,8 +46,9 @@ namespace Umbraco.Cms.Web.BackOffice.Trees IUserService userService, IDataTypeService dataTypeService, UmbracoTreeSearcher treeSearcher, - IMediaService mediaService) - : base(localizedTextService, umbracoApiControllerTypeCollection, menuItemCollectionFactory, entityService, backofficeSecurityAccessor, logger, actionCollection, userService, dataTypeService) + IMediaService mediaService, + IEventAggregator eventAggregator) + : base(localizedTextService, umbracoApiControllerTypeCollection, menuItemCollectionFactory, entityService, backofficeSecurityAccessor, logger, actionCollection, userService, dataTypeService, eventAggregator) { _treeSearcher = treeSearcher; _mediaService = mediaService; diff --git a/src/Umbraco.Web.BackOffice/Trees/MediaTypeTreeController.cs b/src/Umbraco.Web.BackOffice/Trees/MediaTypeTreeController.cs index 8b1a6c70a1..14681d8735 100644 --- a/src/Umbraco.Web.BackOffice/Trees/MediaTypeTreeController.cs +++ b/src/Umbraco.Web.BackOffice/Trees/MediaTypeTreeController.cs @@ -6,6 +6,7 @@ using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Umbraco.Cms.Core; using Umbraco.Cms.Core.Actions; +using Umbraco.Cms.Core.Events; using Umbraco.Cms.Core.Models; using Umbraco.Cms.Core.Models.ContentEditing; using Umbraco.Cms.Core.Models.Trees; @@ -30,7 +31,7 @@ namespace Umbraco.Cms.Web.BackOffice.Trees private readonly IMediaTypeService _mediaTypeService; private readonly IEntityService _entityService; - public MediaTypeTreeController(ILocalizedTextService localizedTextService, UmbracoApiControllerTypeCollection umbracoApiControllerTypeCollection, UmbracoTreeSearcher treeSearcher, IMenuItemCollectionFactory menuItemCollectionFactory, IMediaTypeService mediaTypeService, IEntityService entityService) : base(localizedTextService, umbracoApiControllerTypeCollection) + public MediaTypeTreeController(ILocalizedTextService localizedTextService, UmbracoApiControllerTypeCollection umbracoApiControllerTypeCollection, UmbracoTreeSearcher treeSearcher, IMenuItemCollectionFactory menuItemCollectionFactory, IMediaTypeService mediaTypeService, IEntityService entityService, IEventAggregator eventAggregator) : base(localizedTextService, umbracoApiControllerTypeCollection, eventAggregator) { _treeSearcher = treeSearcher; _menuItemCollectionFactory = menuItemCollectionFactory; diff --git a/src/Umbraco.Web.BackOffice/Trees/MemberGroupTreeController.cs b/src/Umbraco.Web.BackOffice/Trees/MemberGroupTreeController.cs index 10379c7991..7445f35f29 100644 --- a/src/Umbraco.Web.BackOffice/Trees/MemberGroupTreeController.cs +++ b/src/Umbraco.Web.BackOffice/Trees/MemberGroupTreeController.cs @@ -1,9 +1,10 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.Linq; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Umbraco.Cms.Core; +using Umbraco.Cms.Core.Events; using Umbraco.Cms.Core.Services; using Umbraco.Cms.Core.Trees; using Umbraco.Cms.Web.Common.Attributes; @@ -24,8 +25,9 @@ namespace Umbraco.Cms.Web.BackOffice.Trees ILocalizedTextService localizedTextService, UmbracoApiControllerTypeCollection umbracoApiControllerTypeCollection, IMenuItemCollectionFactory menuItemCollectionFactory, - IMemberGroupService memberGroupService) - : base(localizedTextService, umbracoApiControllerTypeCollection, menuItemCollectionFactory) + IMemberGroupService memberGroupService, + IEventAggregator eventAggregator) + : base(localizedTextService, umbracoApiControllerTypeCollection, menuItemCollectionFactory, eventAggregator) { _memberGroupService = memberGroupService; } diff --git a/src/Umbraco.Web.BackOffice/Trees/MemberTreeController.cs b/src/Umbraco.Web.BackOffice/Trees/MemberTreeController.cs index ad5f21b48e..a0b08b00ea 100644 --- a/src/Umbraco.Web.BackOffice/Trees/MemberTreeController.cs +++ b/src/Umbraco.Web.BackOffice/Trees/MemberTreeController.cs @@ -6,6 +6,7 @@ using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Umbraco.Cms.Core; using Umbraco.Cms.Core.Actions; +using Umbraco.Cms.Core.Events; using Umbraco.Cms.Core.Models; using Umbraco.Cms.Core.Models.ContentEditing; using Umbraco.Cms.Core.Models.Trees; @@ -41,8 +42,9 @@ namespace Umbraco.Cms.Web.BackOffice.Trees IMenuItemCollectionFactory menuItemCollectionFactory, IMemberService memberService, IMemberTypeService memberTypeService, - IBackOfficeSecurityAccessor backofficeSecurityAccessor) - : base(localizedTextService, umbracoApiControllerTypeCollection) + IBackOfficeSecurityAccessor backofficeSecurityAccessor, + IEventAggregator eventAggregator) + : base(localizedTextService, umbracoApiControllerTypeCollection, eventAggregator) { _treeSearcher = treeSearcher; _menuItemCollectionFactory = menuItemCollectionFactory; diff --git a/src/Umbraco.Web.BackOffice/Trees/MemberTypeAndGroupTreeControllerBase.cs b/src/Umbraco.Web.BackOffice/Trees/MemberTypeAndGroupTreeControllerBase.cs index 35c4d04d9f..94c84accab 100644 --- a/src/Umbraco.Web.BackOffice/Trees/MemberTypeAndGroupTreeControllerBase.cs +++ b/src/Umbraco.Web.BackOffice/Trees/MemberTypeAndGroupTreeControllerBase.cs @@ -3,6 +3,7 @@ using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Umbraco.Cms.Core; using Umbraco.Cms.Core.Actions; +using Umbraco.Cms.Core.Events; using Umbraco.Cms.Core.Models.Trees; using Umbraco.Cms.Core.Services; using Umbraco.Cms.Core.Trees; @@ -20,8 +21,9 @@ namespace Umbraco.Cms.Web.BackOffice.Trees protected MemberTypeAndGroupTreeControllerBase( ILocalizedTextService localizedTextService, UmbracoApiControllerTypeCollection umbracoApiControllerTypeCollection, - IMenuItemCollectionFactory menuItemCollectionFactory) - : base(localizedTextService, umbracoApiControllerTypeCollection) + IMenuItemCollectionFactory menuItemCollectionFactory, + IEventAggregator eventAggregator) + : base(localizedTextService, umbracoApiControllerTypeCollection, eventAggregator) { MenuItemCollectionFactory = menuItemCollectionFactory; } diff --git a/src/Umbraco.Web.BackOffice/Trees/MemberTypeTreeController.cs b/src/Umbraco.Web.BackOffice/Trees/MemberTypeTreeController.cs index 731543a96c..8204658f17 100644 --- a/src/Umbraco.Web.BackOffice/Trees/MemberTypeTreeController.cs +++ b/src/Umbraco.Web.BackOffice/Trees/MemberTypeTreeController.cs @@ -1,9 +1,10 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.Linq; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Umbraco.Cms.Core; +using Umbraco.Cms.Core.Events; using Umbraco.Cms.Core.Models; using Umbraco.Cms.Core.Models.ContentEditing; using Umbraco.Cms.Core.Services; @@ -29,8 +30,9 @@ namespace Umbraco.Cms.Web.BackOffice.Trees UmbracoApiControllerTypeCollection umbracoApiControllerTypeCollection, IMenuItemCollectionFactory menuItemCollectionFactory, UmbracoTreeSearcher treeSearcher, - IMemberTypeService memberTypeService) - : base(localizedTextService, umbracoApiControllerTypeCollection, menuItemCollectionFactory) + IMemberTypeService memberTypeService, + IEventAggregator eventAggregator) + : base(localizedTextService, umbracoApiControllerTypeCollection, menuItemCollectionFactory, eventAggregator) { _treeSearcher = treeSearcher; _memberTypeService = memberTypeService; diff --git a/src/Umbraco.Web.BackOffice/Trees/MenuRendering.cs b/src/Umbraco.Web.BackOffice/Trees/MenuRendering.cs new file mode 100644 index 0000000000..202d1464cb --- /dev/null +++ b/src/Umbraco.Web.BackOffice/Trees/MenuRendering.cs @@ -0,0 +1,36 @@ +using Microsoft.AspNetCore.Http; +using Umbraco.Cms.Core.Events; +using Umbraco.Cms.Core.Trees; + +namespace Umbraco.Cms.Web.BackOffice.Trees +{ + /// + /// A notification that allows developers to modify the menu that is being rendered + /// + /// + /// Developers can add/remove/replace/insert/update/etc... any of the tree items in the collection. + /// + public class MenuRendering : INotification + { + public MenuRendering(string nodeId, MenuItemCollection menu, FormCollection queryStrings) + { + NodeId = nodeId; + Menu = menu; + QueryStrings = queryStrings; + } + + /// + /// The tree node id that the menu is rendering for + /// + public string NodeId { get; } + + /// + /// The menu being rendered + /// + public MenuItemCollection Menu { get; } + + public FormCollection QueryStrings { get; } + + + } +} diff --git a/src/Umbraco.Web.BackOffice/Trees/MenuRenderingEventArgs.cs b/src/Umbraco.Web.BackOffice/Trees/MenuRenderingEventArgs.cs deleted file mode 100644 index 5ec827eb4a..0000000000 --- a/src/Umbraco.Web.BackOffice/Trees/MenuRenderingEventArgs.cs +++ /dev/null @@ -1,25 +0,0 @@ -using Microsoft.AspNetCore.Http; -using Umbraco.Cms.Core.Trees; - -namespace Umbraco.Cms.Web.BackOffice.Trees -{ - public class MenuRenderingEventArgs : TreeRenderingEventArgs - { - /// - /// The tree node id that the menu is rendering for - /// - public string NodeId { get; private set; } - - /// - /// The menu being rendered - /// - public MenuItemCollection Menu { get; private set; } - - public MenuRenderingEventArgs(string nodeId, MenuItemCollection menu, FormCollection queryStrings) - : base(queryStrings) - { - NodeId = nodeId; - Menu = menu; - } - } -} diff --git a/src/Umbraco.Web.BackOffice/Trees/PackagesTreeController.cs b/src/Umbraco.Web.BackOffice/Trees/PackagesTreeController.cs index 4d53671388..e54e33bcb6 100644 --- a/src/Umbraco.Web.BackOffice/Trees/PackagesTreeController.cs +++ b/src/Umbraco.Web.BackOffice/Trees/PackagesTreeController.cs @@ -2,6 +2,7 @@ using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Umbraco.Cms.Core; +using Umbraco.Cms.Core.Events; using Umbraco.Cms.Core.Services; using Umbraco.Cms.Core.Trees; using Umbraco.Cms.Web.Common.Attributes; @@ -21,8 +22,9 @@ namespace Umbraco.Cms.Web.BackOffice.Trees public PackagesTreeController( ILocalizedTextService localizedTextService, UmbracoApiControllerTypeCollection umbracoApiControllerTypeCollection, - IMenuItemCollectionFactory menuItemCollectionFactory) - : base(localizedTextService, umbracoApiControllerTypeCollection) + IMenuItemCollectionFactory menuItemCollectionFactory, + IEventAggregator eventAggregator) + : base(localizedTextService, umbracoApiControllerTypeCollection, eventAggregator) { _menuItemCollectionFactory = menuItemCollectionFactory; } diff --git a/src/Umbraco.Web.BackOffice/Trees/PartialViewMacrosTreeController.cs b/src/Umbraco.Web.BackOffice/Trees/PartialViewMacrosTreeController.cs index 9a31a286e7..6403ec009d 100644 --- a/src/Umbraco.Web.BackOffice/Trees/PartialViewMacrosTreeController.cs +++ b/src/Umbraco.Web.BackOffice/Trees/PartialViewMacrosTreeController.cs @@ -1,5 +1,6 @@ -using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Authorization; using Umbraco.Cms.Core; +using Umbraco.Cms.Core.Events; using Umbraco.Cms.Core.IO; using Umbraco.Cms.Core.Services; using Umbraco.Cms.Core.Trees; @@ -30,8 +31,9 @@ namespace Umbraco.Cms.Web.BackOffice.Trees ILocalizedTextService localizedTextService, UmbracoApiControllerTypeCollection umbracoApiControllerTypeCollection, IMenuItemCollectionFactory menuItemCollectionFactory, - IFileSystems fileSystems) - : base(localizedTextService, umbracoApiControllerTypeCollection, menuItemCollectionFactory, fileSystems) + IFileSystems fileSystems, + IEventAggregator eventAggregator) + : base(localizedTextService, umbracoApiControllerTypeCollection, menuItemCollectionFactory, fileSystems, eventAggregator) { FileSystem = fileSystems.MacroPartialsFileSystem; } diff --git a/src/Umbraco.Web.BackOffice/Trees/PartialViewsTreeController.cs b/src/Umbraco.Web.BackOffice/Trees/PartialViewsTreeController.cs index b9a592ca31..ad8b9f16b4 100644 --- a/src/Umbraco.Web.BackOffice/Trees/PartialViewsTreeController.cs +++ b/src/Umbraco.Web.BackOffice/Trees/PartialViewsTreeController.cs @@ -1,5 +1,6 @@ using Microsoft.AspNetCore.Authorization; using Umbraco.Cms.Core; +using Umbraco.Cms.Core.Events; using Umbraco.Cms.Core.IO; using Umbraco.Cms.Core.Services; using Umbraco.Cms.Core.Trees; @@ -30,8 +31,9 @@ namespace Umbraco.Cms.Web.BackOffice.Trees ILocalizedTextService localizedTextService, UmbracoApiControllerTypeCollection umbracoApiControllerTypeCollection, IMenuItemCollectionFactory menuItemCollectionFactory, - IFileSystems fileSystems) - : base(localizedTextService, umbracoApiControllerTypeCollection, menuItemCollectionFactory) + IFileSystems fileSystems, + IEventAggregator eventAggregator) + : base(localizedTextService, umbracoApiControllerTypeCollection, menuItemCollectionFactory, eventAggregator) { FileSystem = fileSystems.PartialViewsFileSystem; } diff --git a/src/Umbraco.Web.BackOffice/Trees/RelationTypeTreeController.cs b/src/Umbraco.Web.BackOffice/Trees/RelationTypeTreeController.cs index f786e68ae0..6da2298e03 100644 --- a/src/Umbraco.Web.BackOffice/Trees/RelationTypeTreeController.cs +++ b/src/Umbraco.Web.BackOffice/Trees/RelationTypeTreeController.cs @@ -4,6 +4,7 @@ using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Umbraco.Cms.Core; using Umbraco.Cms.Core.Actions; +using Umbraco.Cms.Core.Events; using Umbraco.Cms.Core.Models.Trees; using Umbraco.Cms.Core.Services; using Umbraco.Cms.Core.Trees; @@ -27,8 +28,9 @@ namespace Umbraco.Cms.Web.BackOffice.Trees ILocalizedTextService localizedTextService, UmbracoApiControllerTypeCollection umbracoApiControllerTypeCollection, IMenuItemCollectionFactory menuItemCollectionFactory, - IRelationService relationService) - : base(localizedTextService, umbracoApiControllerTypeCollection) + IRelationService relationService, + IEventAggregator eventAggregator) + : base(localizedTextService, umbracoApiControllerTypeCollection, eventAggregator) { _menuItemCollectionFactory = menuItemCollectionFactory; _relationService = relationService; diff --git a/src/Umbraco.Web.BackOffice/Trees/RootNodeRendering.cs b/src/Umbraco.Web.BackOffice/Trees/RootNodeRendering.cs new file mode 100644 index 0000000000..79269150a0 --- /dev/null +++ b/src/Umbraco.Web.BackOffice/Trees/RootNodeRendering.cs @@ -0,0 +1,22 @@ +using Microsoft.AspNetCore.Http; +using Umbraco.Cms.Core.Events; +using Umbraco.Cms.Core.Trees; + +namespace Umbraco.Cms.Web.BackOffice.Trees +{ + /// + /// A notification that allows developer to modify the root tree node that is being rendered + /// + public class RootNodeRendering : INotification + { + public TreeNode Node { get; } + + public FormCollection QueryStrings { get; } + + public RootNodeRendering(TreeNode node, FormCollection queryStrings) + { + Node = node; + QueryStrings = queryStrings; + } + } +} diff --git a/src/Umbraco.Web.BackOffice/Trees/ScriptsTreeController.cs b/src/Umbraco.Web.BackOffice/Trees/ScriptsTreeController.cs index 7b0f8a7574..56f1b0ac1d 100644 --- a/src/Umbraco.Web.BackOffice/Trees/ScriptsTreeController.cs +++ b/src/Umbraco.Web.BackOffice/Trees/ScriptsTreeController.cs @@ -1,4 +1,5 @@ -using Umbraco.Cms.Core; +using Umbraco.Cms.Core; +using Umbraco.Cms.Core.Events; using Umbraco.Cms.Core.IO; using Umbraco.Cms.Core.Services; using Umbraco.Cms.Core.Trees; @@ -22,8 +23,9 @@ namespace Umbraco.Cms.Web.BackOffice.Trees ILocalizedTextService localizedTextService, UmbracoApiControllerTypeCollection umbracoApiControllerTypeCollection, IMenuItemCollectionFactory menuItemCollectionFactory, - IFileSystems fileSystems) - : base(localizedTextService, umbracoApiControllerTypeCollection, menuItemCollectionFactory) + IFileSystems fileSystems, + IEventAggregator eventAggregator) + : base(localizedTextService, umbracoApiControllerTypeCollection, menuItemCollectionFactory, eventAggregator) { FileSystem = fileSystems.ScriptsFileSystem; } diff --git a/src/Umbraco.Web.BackOffice/Trees/StylesheetsTreeController.cs b/src/Umbraco.Web.BackOffice/Trees/StylesheetsTreeController.cs index 36d61a6f42..18d1be6a67 100644 --- a/src/Umbraco.Web.BackOffice/Trees/StylesheetsTreeController.cs +++ b/src/Umbraco.Web.BackOffice/Trees/StylesheetsTreeController.cs @@ -1,4 +1,5 @@ -using Umbraco.Cms.Core; +using Umbraco.Cms.Core; +using Umbraco.Cms.Core.Events; using Umbraco.Cms.Core.IO; using Umbraco.Cms.Core.Services; using Umbraco.Cms.Core.Trees; @@ -22,8 +23,9 @@ namespace Umbraco.Cms.Web.BackOffice.Trees ILocalizedTextService localizedTextService, UmbracoApiControllerTypeCollection umbracoApiControllerTypeCollection, IMenuItemCollectionFactory menuItemCollectionFactory, - IFileSystems fileSystems) - : base(localizedTextService, umbracoApiControllerTypeCollection, menuItemCollectionFactory) + IFileSystems fileSystems, + IEventAggregator eventAggregator) + : base(localizedTextService, umbracoApiControllerTypeCollection, menuItemCollectionFactory, eventAggregator) { FileSystem = fileSystems.StylesheetsFileSystem; } diff --git a/src/Umbraco.Web.BackOffice/Trees/TemplatesTreeController.cs b/src/Umbraco.Web.BackOffice/Trees/TemplatesTreeController.cs index 3b0b586e7d..66e57f7234 100644 --- a/src/Umbraco.Web.BackOffice/Trees/TemplatesTreeController.cs +++ b/src/Umbraco.Web.BackOffice/Trees/TemplatesTreeController.cs @@ -6,6 +6,7 @@ using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Umbraco.Cms.Core; using Umbraco.Cms.Core.Actions; +using Umbraco.Cms.Core.Events; using Umbraco.Cms.Core.Models; using Umbraco.Cms.Core.Models.ContentEditing; using Umbraco.Cms.Core.Models.Entities; @@ -35,8 +36,9 @@ namespace Umbraco.Cms.Web.BackOffice.Trees IMenuItemCollectionFactory menuItemCollectionFactory, ILocalizedTextService localizedTextService, UmbracoApiControllerTypeCollection umbracoApiControllerTypeCollection, - IFileService fileService - ) : base(localizedTextService, umbracoApiControllerTypeCollection) + IFileService fileService, + IEventAggregator eventAggregator + ) : base(localizedTextService, umbracoApiControllerTypeCollection, eventAggregator) { _treeSearcher = treeSearcher; _menuItemCollectionFactory = menuItemCollectionFactory; diff --git a/src/Umbraco.Web.BackOffice/Trees/TreeController.cs b/src/Umbraco.Web.BackOffice/Trees/TreeController.cs index fd5ee6f8d3..b68ff38a7c 100644 --- a/src/Umbraco.Web.BackOffice/Trees/TreeController.cs +++ b/src/Umbraco.Web.BackOffice/Trees/TreeController.cs @@ -1,6 +1,7 @@ -using System; +using System; using System.Collections.Concurrent; using Umbraco.Cms.Core; +using Umbraco.Cms.Core.Events; using Umbraco.Cms.Core.Services; using Umbraco.Cms.Core.Trees; using Umbraco.Extensions; @@ -18,8 +19,8 @@ namespace Umbraco.Cms.Web.BackOffice.Trees protected ILocalizedTextService LocalizedTextService { get; } - protected TreeController(ILocalizedTextService localizedTextService, UmbracoApiControllerTypeCollection umbracoApiControllerTypeCollection) - : base(umbracoApiControllerTypeCollection) + protected TreeController(ILocalizedTextService localizedTextService, UmbracoApiControllerTypeCollection umbracoApiControllerTypeCollection, IEventAggregator eventAggregator) + : base(umbracoApiControllerTypeCollection, eventAggregator) { LocalizedTextService = localizedTextService ?? throw new ArgumentNullException(nameof(localizedTextService)); _treeAttribute = GetTreeAttribute(); diff --git a/src/Umbraco.Web.BackOffice/Trees/TreeControllerBase.cs b/src/Umbraco.Web.BackOffice/Trees/TreeControllerBase.cs index 2e0d2b57b0..082bfb6ef5 100644 --- a/src/Umbraco.Web.BackOffice/Trees/TreeControllerBase.cs +++ b/src/Umbraco.Web.BackOffice/Trees/TreeControllerBase.cs @@ -1,5 +1,6 @@ using System; using System.Linq; +using System.Threading.Tasks; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Umbraco.Cms.Core; @@ -27,10 +28,12 @@ namespace Umbraco.Cms.Web.BackOffice.Trees // TODO: Need to set this, but from where? // Presumably not injecting as this will be a base controller for package/solution developers. private readonly UmbracoApiControllerTypeCollection _apiControllers; + private readonly IEventAggregator _eventAggregator; - protected TreeControllerBase(UmbracoApiControllerTypeCollection apiControllers) + protected TreeControllerBase(UmbracoApiControllerTypeCollection apiControllers, IEventAggregator eventAggregator) { _apiControllers = apiControllers; + _eventAggregator = eventAggregator; } /// @@ -85,7 +88,7 @@ namespace Umbraco.Cms.Web.BackOffice.Trees /// /// /// - public ActionResult GetRootNode([ModelBinder(typeof(HttpQueryStringModelBinder))]FormCollection queryStrings) + public async Task> GetRootNode([ModelBinder(typeof(HttpQueryStringModelBinder))]FormCollection queryStrings) { if (queryStrings == null) queryStrings = FormCollection.Empty; var nodeResult = CreateRootNode(queryStrings); @@ -109,7 +112,7 @@ namespace Umbraco.Cms.Web.BackOffice.Trees if (IsDialog(queryStrings)) node.RoutePath = "#"; - OnRootNodeRendering(this, new TreeNodeRenderingEventArgs(node, queryStrings)); + await _eventAggregator.PublishAsync(new RootNodeRendering(node, queryStrings)); return node; } @@ -126,7 +129,7 @@ namespace Umbraco.Cms.Web.BackOffice.Trees /// We are allowing an arbitrary number of query strings to be passed in so that developers are able to persist custom data from the front-end /// to the back end to be used in the query for model data. /// - public ActionResult GetNodes(string id, [ModelBinder(typeof(HttpQueryStringModelBinder))]FormCollection queryStrings) + public async Task> GetNodes(string id, [ModelBinder(typeof(HttpQueryStringModelBinder))]FormCollection queryStrings) { if (queryStrings == null) queryStrings = FormCollection.Empty; var nodesResult = GetTreeNodes(id, queryStrings); @@ -147,7 +150,7 @@ namespace Umbraco.Cms.Web.BackOffice.Trees node.RoutePath = "#"; //raise the event - OnTreeNodesRendering(this, new TreeNodesRenderingEventArgs(nodes, queryStrings)); + await _eventAggregator.PublishAsync(new TreeNodesRendering(nodes, queryStrings)); return nodes; } @@ -158,7 +161,7 @@ namespace Umbraco.Cms.Web.BackOffice.Trees /// /// /// - public ActionResult GetMenu(string id, [ModelBinder(typeof(HttpQueryStringModelBinder))]FormCollection queryStrings) + public async Task> GetMenu(string id, [ModelBinder(typeof(HttpQueryStringModelBinder))]FormCollection queryStrings) { if (queryStrings == null) queryStrings = FormCollection.Empty; var menuResult = GetMenuForNode(id, queryStrings); @@ -169,7 +172,7 @@ namespace Umbraco.Cms.Web.BackOffice.Trees var menu = menuResult.Value; //raise the event - OnMenuRendering(this, new MenuRenderingEventArgs(id, menu, queryStrings)); + await _eventAggregator.PublishAsync(new MenuRendering(id, menu, queryStrings)); return menu; } @@ -374,45 +377,5 @@ namespace Umbraco.Cms.Web.BackOffice.Trees queryStrings.TryGetValue(TreeQueryStringParameters.Use, out var use); return use == "dialog"; } - - /// - /// An event that allows developers to modify the tree node collection that is being rendered - /// - /// - /// Developers can add/remove/replace/insert/update/etc... any of the tree items in the collection. - /// - public static event TypedEventHandler TreeNodesRendering; - - private static void OnTreeNodesRendering(TreeControllerBase instance, TreeNodesRenderingEventArgs e) - { - var handler = TreeNodesRendering; - handler?.Invoke(instance, e); - } - - /// - /// An event that allows developer to modify the root tree node that is being rendered - /// - public static event TypedEventHandler RootNodeRendering; - - // internal for temp class below - kill eventually! - internal static void OnRootNodeRendering(TreeControllerBase instance, TreeNodeRenderingEventArgs e) - { - var handler = RootNodeRendering; - handler?.Invoke(instance, e); - } - - /// - /// An event that allows developers to modify the menu that is being rendered - /// - /// - /// Developers can add/remove/replace/insert/update/etc... any of the tree items in the collection. - /// - public static event TypedEventHandler MenuRendering; - - private static void OnMenuRendering(TreeControllerBase instance, MenuRenderingEventArgs e) - { - var handler = MenuRendering; - handler?.Invoke(instance, e); - } } } diff --git a/src/Umbraco.Web.BackOffice/Trees/TreeNodeRenderingEventArgs.cs b/src/Umbraco.Web.BackOffice/Trees/TreeNodeRenderingEventArgs.cs deleted file mode 100644 index afd065ffa4..0000000000 --- a/src/Umbraco.Web.BackOffice/Trees/TreeNodeRenderingEventArgs.cs +++ /dev/null @@ -1,16 +0,0 @@ -using Microsoft.AspNetCore.Http; -using Umbraco.Cms.Core.Trees; - -namespace Umbraco.Cms.Web.BackOffice.Trees -{ - public class TreeNodeRenderingEventArgs : TreeRenderingEventArgs - { - public TreeNode Node { get; private set; } - - public TreeNodeRenderingEventArgs(TreeNode node, FormCollection queryStrings) - : base(queryStrings) - { - Node = node; - } - } -} diff --git a/src/Umbraco.Web.BackOffice/Trees/TreeNodesRendering.cs b/src/Umbraco.Web.BackOffice/Trees/TreeNodesRendering.cs new file mode 100644 index 0000000000..5d4c1ade0b --- /dev/null +++ b/src/Umbraco.Web.BackOffice/Trees/TreeNodesRendering.cs @@ -0,0 +1,25 @@ +using Microsoft.AspNetCore.Http; +using Umbraco.Cms.Core.Events; +using Umbraco.Cms.Core.Trees; + +namespace Umbraco.Cms.Web.BackOffice.Trees +{ + /// + /// A notification that allows developers to modify the tree node collection that is being rendered + /// + /// + /// Developers can add/remove/replace/insert/update/etc... any of the tree items in the collection. + /// + public class TreeNodesRendering : INotification + { + public TreeNodeCollection Nodes { get; } + + public FormCollection QueryStrings { get; } + + public TreeNodesRendering(TreeNodeCollection nodes, FormCollection queryStrings) + { + Nodes = nodes; + QueryStrings = queryStrings; + } + } +} diff --git a/src/Umbraco.Web.BackOffice/Trees/TreeNodesRenderingEventArgs.cs b/src/Umbraco.Web.BackOffice/Trees/TreeNodesRenderingEventArgs.cs deleted file mode 100644 index f0d29a7901..0000000000 --- a/src/Umbraco.Web.BackOffice/Trees/TreeNodesRenderingEventArgs.cs +++ /dev/null @@ -1,16 +0,0 @@ -using Microsoft.AspNetCore.Http; -using Umbraco.Cms.Core.Trees; - -namespace Umbraco.Cms.Web.BackOffice.Trees -{ - public class TreeNodesRenderingEventArgs : TreeRenderingEventArgs - { - public TreeNodeCollection Nodes { get; private set; } - - public TreeNodesRenderingEventArgs(TreeNodeCollection nodes, FormCollection queryStrings) - : base(queryStrings) - { - Nodes = nodes; - } - } -} diff --git a/src/Umbraco.Web.BackOffice/Trees/TreeRenderingEventArgs.cs b/src/Umbraco.Web.BackOffice/Trees/TreeRenderingEventArgs.cs deleted file mode 100644 index 9d8795938f..0000000000 --- a/src/Umbraco.Web.BackOffice/Trees/TreeRenderingEventArgs.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System; -using Microsoft.AspNetCore.Http; - -namespace Umbraco.Cms.Web.BackOffice.Trees -{ - public class TreeRenderingEventArgs : EventArgs - { - public FormCollection QueryStrings { get; private set; } - - public TreeRenderingEventArgs(FormCollection queryStrings) - { - QueryStrings = queryStrings; - } - } -} diff --git a/src/Umbraco.Web.BackOffice/Trees/UserTreeController.cs b/src/Umbraco.Web.BackOffice/Trees/UserTreeController.cs index 6e06f7636d..3afdecf36e 100644 --- a/src/Umbraco.Web.BackOffice/Trees/UserTreeController.cs +++ b/src/Umbraco.Web.BackOffice/Trees/UserTreeController.cs @@ -2,6 +2,7 @@ using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Umbraco.Cms.Core; +using Umbraco.Cms.Core.Events; using Umbraco.Cms.Core.Services; using Umbraco.Cms.Core.Trees; using Umbraco.Cms.Web.Common.Attributes; @@ -21,8 +22,9 @@ namespace Umbraco.Cms.Web.BackOffice.Trees public UserTreeController( IMenuItemCollectionFactory menuItemCollectionFactory, ILocalizedTextService localizedTextService, - UmbracoApiControllerTypeCollection umbracoApiControllerTypeCollection - ) : base(localizedTextService, umbracoApiControllerTypeCollection) + UmbracoApiControllerTypeCollection umbracoApiControllerTypeCollection, + IEventAggregator eventAggregator + ) : base(localizedTextService, umbracoApiControllerTypeCollection, eventAggregator) { _menuItemCollectionFactory = menuItemCollectionFactory; }