From 829bfb094adb2276a4385b6cbeedc493638fed79 Mon Sep 17 00:00:00 2001 From: Sipke Schoorstra Date: Sun, 14 Dec 2014 19:46:16 +0100 Subject: [PATCH] Fixing blueprint element caching bug. This fixes the issue where blueprint elements were still available even after deleting them. The fix is to evict the cached element descriptors when a blueprint element is deleted. --- .../Orchard.Layouts/Services/ElementBlueprintService.cs | 7 ++++++- .../Modules/Orchard.Layouts/Services/ElementManager.cs | 1 + 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/Orchard.Web/Modules/Orchard.Layouts/Services/ElementBlueprintService.cs b/src/Orchard.Web/Modules/Orchard.Layouts/Services/ElementBlueprintService.cs index c94926817..61411d3ef 100644 --- a/src/Orchard.Web/Modules/Orchard.Layouts/Services/ElementBlueprintService.cs +++ b/src/Orchard.Web/Modules/Orchard.Layouts/Services/ElementBlueprintService.cs @@ -1,5 +1,6 @@ using System.Collections.Generic; using System.Linq; +using Orchard.Caching; using Orchard.Data; using Orchard.Layouts.Framework.Elements; using Orchard.Layouts.Models; @@ -7,8 +8,11 @@ using Orchard.Layouts.Models; namespace Orchard.Layouts.Services { public class ElementBlueprintService : IElementBlueprintService { private readonly IRepository _blueprintRepository; - public ElementBlueprintService(IRepository blueprintRepository) { + private readonly ISignals _signals; + + public ElementBlueprintService(IRepository blueprintRepository, ISignals signals) { _blueprintRepository = blueprintRepository; + _signals = signals; } public ElementBlueprint GetBlueprint(int id) { @@ -21,6 +25,7 @@ namespace Orchard.Layouts.Services { public void DeleteBlueprint(ElementBlueprint blueprint) { _blueprintRepository.Delete(blueprint); + _signals.Trigger(Signals.ElementDescriptors); } public int DeleteBlueprints(IEnumerable ids) { diff --git a/src/Orchard.Web/Modules/Orchard.Layouts/Services/ElementManager.cs b/src/Orchard.Web/Modules/Orchard.Layouts/Services/ElementManager.cs index 0621e48c5..9a3882740 100644 --- a/src/Orchard.Web/Modules/Orchard.Layouts/Services/ElementManager.cs +++ b/src/Orchard.Web/Modules/Orchard.Layouts/Services/ElementManager.cs @@ -72,6 +72,7 @@ namespace Orchard.Layouts.Services { descriptor.Elements.Add(element); } + acquireContext.Monitor(_signals.When(Signals.ElementDescriptors)); return categoryDescriptorDictionary.Values.OrderBy(x => x.Position); }); }