private void InvalidateCachesAfteMenuItemChanges(ContentContextBase context) { if (_recipeIsExecuting) { return; } var stereotype = context.ContentItem.GetStereotype(); if (string.Equals(stereotype, "MenuItem", StringComparison.InvariantCultureIgnoreCase)) { var menuItemId = context.ContentItem.Id; //get all menu ids var allMenuIds = _contentManager.Query("Menu").List().Select(ci => ci.Id); var relevantMenuIds = new List <int>(); //foreach menu id, check to see if the menu contains this menu part foreach (var menuId in allMenuIds) { if (_menuService.GetMenuParts(menuId).Select(p => p.Id).Contains(menuItemId)) { relevantMenuIds.Add(menuId); } } //if so, get all menu widgets that use this menu and invalidate cache foreach (var menuId in relevantMenuIds) { var scopedMenuId = menuId; var menuWidgets = _contentManager .Query <MenuWidgetPart>(GetMenuWidgetContentTypes()) .List() .Where(p => p.MenuContentItemId == scopedMenuId); _outputCachedPartsService.InvalidateCachedOutput(menuWidgets); } } }
protected override void Updated(UpdateContentContext context) { base.Updated(context); _outputCachedPartsService.InvalidateCachedOutput(context.ContentItem.Id); }