diff --git a/src/Orchard.Core.Tests/Feeds/Controllers/FeedControllerTests.cs b/src/Orchard.Core.Tests/Feeds/Controllers/FeedControllerTests.cs index 7f6c7141b..c85795901 100644 --- a/src/Orchard.Core.Tests/Feeds/Controllers/FeedControllerTests.cs +++ b/src/Orchard.Core.Tests/Feeds/Controllers/FeedControllerTests.cs @@ -166,7 +166,7 @@ namespace Orchard.Core.Tests.Feeds.Controllers { var mockContentManager = new Mock(); mockContentManager.Setup(x => x.GetItemMetadata(It.IsAny())) - .Returns(new ContentItemMetadata(hello) { DisplayText = "foo" }); + .Returns(new ContentItemMetadata() { DisplayText = "foo" }); var builder = new ContainerBuilder(); //builder.RegisterModule(new ImplicitCollectionSupportModule()); diff --git a/src/Orchard.Web/Core/Contents/Handlers/ContentsHandler.cs b/src/Orchard.Web/Core/Contents/Handlers/ContentsHandler.cs index d4e05b9ce..09adc6dd6 100644 --- a/src/Orchard.Web/Core/Contents/Handlers/ContentsHandler.cs +++ b/src/Orchard.Web/Core/Contents/Handlers/ContentsHandler.cs @@ -31,7 +31,8 @@ namespace Orchard.Core.Contents.Handlers { context.Metadata.RemoveRouteValues = new RouteValueDictionary { {"Area", "Contents"}, {"Controller", "Item"}, - {"Action", "Remove"} + {"Action", "Remove"}, + {"Id", context.ContentItem.Id} }; } } diff --git a/src/Orchard.Web/Modules/Orchard.Blogs/Handlers/BlogPartHandler.cs b/src/Orchard.Web/Modules/Orchard.Blogs/Handlers/BlogPartHandler.cs index 1d9fb153d..23c9b6693 100644 --- a/src/Orchard.Web/Modules/Orchard.Blogs/Handlers/BlogPartHandler.cs +++ b/src/Orchard.Web/Modules/Orchard.Blogs/Handlers/BlogPartHandler.cs @@ -1,5 +1,7 @@ +using System.Web.Routing; using JetBrains.Annotations; using Orchard.Blogs.Models; +using Orchard.ContentManagement; using Orchard.ContentManagement.Handlers; using Orchard.Data; @@ -14,5 +16,30 @@ namespace Orchard.Blogs.Handlers { context.Shape.PostCount = blog.PostCount; }); } + + protected override void GetItemMetadata(GetContentItemMetadataContext context) { + var blog = context.ContentItem.As(); + + if (blog == null) + return; + + context.Metadata.CreateRouteValues = new RouteValueDictionary { + {"Area", "Orchard.Blogs"}, + {"Controller", "BlogAdmin"}, + {"Action", "Create"} + }; + context.Metadata.EditorRouteValues = new RouteValueDictionary { + {"Area", "Orchard.Blogs"}, + {"Controller", "BlogAdmin"}, + {"Action", "Edit"}, + {"Id", context.ContentItem.Id} + }; + context.Metadata.RemoveRouteValues = new RouteValueDictionary { + {"Area", "Orchard.Blogs"}, + {"Controller", "BlogAdmin"}, + {"Action", "Remove"}, + {"Id", context.ContentItem.Id} + }; + } } } \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Blogs/Handlers/BlogPostPartHandler.cs b/src/Orchard.Web/Modules/Orchard.Blogs/Handlers/BlogPostPartHandler.cs index 073525df7..16c2be7ff 100644 --- a/src/Orchard.Web/Modules/Orchard.Blogs/Handlers/BlogPostPartHandler.cs +++ b/src/Orchard.Web/Modules/Orchard.Blogs/Handlers/BlogPostPartHandler.cs @@ -6,18 +6,15 @@ using Orchard.Blogs.Models; using Orchard.Blogs.Services; using Orchard.ContentManagement; using Orchard.ContentManagement.Handlers; -using Orchard.Localization; +using Orchard.Core.Routable.Models; namespace Orchard.Blogs.Handlers { [UsedImplicitly] public class BlogPostPartHandler : ContentHandler { private readonly IBlogPostService _blogPostService; - private readonly IOrchardServices _orchardServices; - public BlogPostPartHandler(IBlogService blogService, IBlogPostService blogPostService, IOrchardServices orchardServices, RequestContext requestContext) { + public BlogPostPartHandler(IBlogService blogService, IBlogPostService blogPostService, RequestContext requestContext) { _blogPostService = blogPostService; - _orchardServices = orchardServices; - T = NullLocalizer.Instance; Action updateBlogPostCount = (blog => { @@ -65,6 +62,32 @@ namespace Orchard.Blogs.Handlers { context.Shape.Blog = blogPost.BlogPart; } - Localizer T { get; set; } + protected override void GetItemMetadata(GetContentItemMetadataContext context) { + var blogPost = context.ContentItem.As(); + + if (blogPost == null) + return; + + context.Metadata.CreateRouteValues = new RouteValueDictionary { + {"Area", "Orchard.Blogs"}, + {"Controller", "BlogPostAdmin"}, + {"Action", "Create"}, + {"blogSlug", blogPost.BlogPart.As().Slug} + }; + context.Metadata.EditorRouteValues = new RouteValueDictionary { + {"Area", "Orchard.Blogs"}, + {"Controller", "BlogPostAdmin"}, + {"Action", "Edit"}, + {"postId", context.ContentItem.Id}, + {"blogSlug", blogPost.BlogPart.As().Slug} + }; + context.Metadata.RemoveRouteValues = new RouteValueDictionary { + {"Area", "Orchard.Blogs"}, + {"Controller", "BlogPostAdmin"}, + {"Action", "Delete"}, + {"postId", context.ContentItem.Id}, + {"blogSlug", blogPost.BlogPart.As().Slug} + }; + } } } \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Widgets/Handlers/WidgetPartHandler.cs b/src/Orchard.Web/Modules/Orchard.Widgets/Handlers/WidgetPartHandler.cs index ccfbaee8f..4bccfe343 100644 --- a/src/Orchard.Web/Modules/Orchard.Widgets/Handlers/WidgetPartHandler.cs +++ b/src/Orchard.Web/Modules/Orchard.Widgets/Handlers/WidgetPartHandler.cs @@ -1,4 +1,6 @@ -using JetBrains.Annotations; +using System.Web.Routing; +using JetBrains.Annotations; +using Orchard.ContentManagement; using Orchard.ContentManagement.Handlers; using Orchard.Data; using Orchard.Widgets.Models; @@ -9,5 +11,32 @@ namespace Orchard.Widgets.Handlers { public WidgetPartHandler(IRepository widgetsRepository) { Filters.Add(StorageFilter.For(widgetsRepository)); } + + protected override void GetItemMetadata(GetContentItemMetadataContext context) { + var widget = context.ContentItem.As(); + + if (widget == null) + return; + + // create needs to go through the add widget flow (index -> [select layer -> ] add [widget type] to layer) + context.Metadata.CreateRouteValues = new RouteValueDictionary { + {"Area", "Orchard.Widgets"}, + {"Controller", "Admin"}, + {"Action", "Index"} + }; + context.Metadata.EditorRouteValues = new RouteValueDictionary { + {"Area", "Orchard.Widgets"}, + {"Controller", "Admin"}, + {"Action", "EditWidget"}, + {"Id", context.ContentItem.Id} + }; + // remove goes through edit widget... + context.Metadata.RemoveRouteValues = new RouteValueDictionary { + {"Area", "Orchard.Widgets"}, + {"Controller", "Admin"}, + {"Action", "EditWidget"}, + {"Id", context.ContentItem.Id} + }; + } } } \ No newline at end of file diff --git a/src/Orchard/ContentManagement/ContentItemMetadata.cs b/src/Orchard/ContentManagement/ContentItemMetadata.cs index f4c6dbf78..7a942b518 100644 --- a/src/Orchard/ContentManagement/ContentItemMetadata.cs +++ b/src/Orchard/ContentManagement/ContentItemMetadata.cs @@ -1,56 +1,11 @@ -using System.Collections.Generic; using System.Web.Routing; namespace Orchard.ContentManagement { public class ContentItemMetadata { - public ContentItemMetadata(IContent item) { - DisplayRouteValues = GetDisplayRouteValues(item); - EditorRouteValues = GetEditorRouteValues(item); - CreateRouteValues = GetCreateRouteValues(item); - } - public string DisplayText { get; set; } public RouteValueDictionary DisplayRouteValues { get; set; } public RouteValueDictionary EditorRouteValues { get; set; } public RouteValueDictionary CreateRouteValues { get; set; } public RouteValueDictionary RemoveRouteValues { get; set; } - - public IEnumerable DisplayGroups { get; set; } - public IEnumerable EditorGroups { get; set; } - - private static RouteValueDictionary GetDisplayRouteValues(IContent item) { - return new RouteValueDictionary { - {"Area", "Contents"}, - {"Controller", "Item"}, - {"Action", "Display"}, - {"id", item.ContentItem.Id} - }; - } - - private static RouteValueDictionary GetEditorRouteValues(IContent item) { - return new RouteValueDictionary { - {"Area", "Contents"}, - {"Controller", "Admin"}, - {"Action", "Edit"}, - {"id", item.ContentItem.Id} - }; - } - - private static RouteValueDictionary GetCreateRouteValues(IContent item) { - return new RouteValueDictionary { - {"Area", "Contents"}, - {"Controller", "Admin"}, - {"Action", "Create"}, - {"id", item.ContentItem.ContentType} - }; - } - - private static RouteValueDictionary GetRemoveRouteValues(IContent item) { - return new RouteValueDictionary { - {"Area", "Contents"}, - {"Controller", "Admin"}, - {"Action", "Remove"} - }; - } } } \ No newline at end of file diff --git a/src/Orchard/ContentManagement/DefaultContentManager.cs b/src/Orchard/ContentManagement/DefaultContentManager.cs index 78656e358..de0ad9276 100644 --- a/src/Orchard/ContentManagement/DefaultContentManager.cs +++ b/src/Orchard/ContentManagement/DefaultContentManager.cs @@ -350,20 +350,10 @@ namespace Orchard.ContentManagement { public ContentItemMetadata GetItemMetadata(IContent content) { var context = new GetContentItemMetadataContext { ContentItem = content.ContentItem, - Metadata = new ContentItemMetadata(content) + Metadata = new ContentItemMetadata() }; Handlers.Invoke(handler => handler.GetContentItemMetadata(context), Logger); - //-- was - from ContentItemDriver -- - //void IContentItemDriver.GetContentItemMetadata(GetContentItemMetadataContext context) { - // var item = context.ContentItem.As(); - // if (item != null) { - // context.Metadata.DisplayText = GetDisplayText(item) ?? context.Metadata.DisplayText; - // context.Metadata.DisplayRouteValues = GetDisplayRouteValues(item) ?? context.Metadata.DisplayRouteValues; - // context.Metadata.EditorRouteValues = GetEditorRouteValues(item) ?? context.Metadata.EditorRouteValues; - // context.Metadata.CreateRouteValues = GetCreateRouteValues(item) ?? context.Metadata.CreateRouteValues; - // } - //} return context.Metadata; }