From 54c3e2ca9e6a4bccd9e8257a2998ab5d380bbb03 Mon Sep 17 00:00:00 2001 From: loudej Date: Wed, 2 Dec 2009 02:24:39 +0000 Subject: [PATCH] Removing the IContentDisplayInfo interface in favor of new manager method GetItemMetadata --HG-- extra : convert_revision : svn%3A5ff7c347-ad56-4c35-b696-ccb81de16e03/trunk%4042888 --- .../Packages/Orchard.Blogs/Models/BlogPost.cs | 17 +---------- .../Orchard.Blogs/Models/BlogPostProvider.cs | 23 +++++++++++++++ .../Services/CommentService.cs | 9 ++++-- .../Models/SandboxContentProvider.cs | 25 +++++++++++++++-- .../Orchard.Sandbox/Models/SandboxPage.cs | 14 +--------- .../Orchard.Tags/Models/TagsHandler.cs | 6 ++-- .../Orchard.Tags/Views/Admin/Search.aspx | 4 +-- src/Orchard/Models/ContentItem.cs | 1 + src/Orchard/Models/ContentItemMetadata.cs | 13 +++++++++ src/Orchard/Models/DefaultContentManager.cs | 18 ++++++++++-- src/Orchard/Models/Driver/ContentProvider.cs | 13 +++++++++ .../Models/Driver/GetDisplaysContext.cs | 13 +++++++++ .../Models/Driver/GetEditorsContext.cs | 9 ------ .../Models/Driver/GetItemMetadataContext.cs | 6 ++++ src/Orchard/Models/Driver/IContentProvider.cs | 3 +- .../Models/Driver/IContentTemplateFilter.cs | 1 + .../Models/Driver/TemplateFilterBase.cs | 5 ++++ src/Orchard/Models/IContentDisplayInfo.cs | 10 +++---- src/Orchard/Models/IContentManager.cs | 1 + src/Orchard/Mvc/Html/ContentItemExtensions.cs | 28 +++++++++++++------ src/Orchard/Orchard.csproj | 3 ++ 21 files changed, 158 insertions(+), 64 deletions(-) create mode 100644 src/Orchard/Models/ContentItemMetadata.cs create mode 100644 src/Orchard/Models/Driver/GetDisplaysContext.cs create mode 100644 src/Orchard/Models/Driver/GetItemMetadataContext.cs diff --git a/src/Orchard.Web/Packages/Orchard.Blogs/Models/BlogPost.cs b/src/Orchard.Web/Packages/Orchard.Blogs/Models/BlogPost.cs index b6fa5916e..4bc88cbbe 100644 --- a/src/Orchard.Web/Packages/Orchard.Blogs/Models/BlogPost.cs +++ b/src/Orchard.Web/Packages/Orchard.Blogs/Models/BlogPost.cs @@ -5,7 +5,7 @@ using Orchard.Models; using Orchard.Security; namespace Orchard.Blogs.Models { - public class BlogPost : ContentPart, IContentDisplayInfo { + public class BlogPost : ContentPart { public readonly static ContentType ContentType = new ContentType { Name = "blogpost", DisplayName = "Blog Post" }; public Blog Blog { get; set; } @@ -16,20 +16,5 @@ namespace Orchard.Blogs.Models { public IUser Creator { get { return this.As().OwnerField.Value; } } public DateTime? Published { get { return Record.Published; } } - #region IContentDisplayInfo Members - - public string DisplayText { - get { return Title; } - } - - public RouteValueDictionary DisplayRouteValues() { - return new RouteValueDictionary(new { area = "Orchard.Blogs", controller = "BlogPost", action = "Item", blogSlug = Blog.Slug, postSlug = Slug }); - } - - public RouteValueDictionary EditRouteValues() { - return new RouteValueDictionary(new { area = "Orchard.Blogs", controller = "BlogPost", action = "Edit", blogSlug = Blog.Slug, postSlug = Slug }); - } - - #endregion } } \ No newline at end of file diff --git a/src/Orchard.Web/Packages/Orchard.Blogs/Models/BlogPostProvider.cs b/src/Orchard.Web/Packages/Orchard.Blogs/Models/BlogPostProvider.cs index 21e895ff0..dcd444170 100644 --- a/src/Orchard.Web/Packages/Orchard.Blogs/Models/BlogPostProvider.cs +++ b/src/Orchard.Web/Packages/Orchard.Blogs/Models/BlogPostProvider.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using System.Web.Routing; using Orchard.Core.Common.Models; using Orchard.Data; using Orchard.Models; @@ -17,6 +18,28 @@ namespace Orchard.Blogs.Models { Filters.Add(new ActivatingFilter("blogpost")); Filters.Add(new StorageFilter(repository)); OnLoaded((context, bp) => bp.Blog = contentManager.Get(bp.Record.Blog.Id)); + + OnGetItemMetadata((context, bp) => { + context.Metadata.DisplayText = bp.Title; + context.Metadata.DisplayRouteValues = + new RouteValueDictionary( + new { + area = "Orchard.Blogs", + controller = "BlogPost", + action = "Item", + blogSlug = bp.Blog.Slug, + postSlug = bp.Slug + }); + context.Metadata.EditorRouteValues = + new RouteValueDictionary( + new { + area = "Orchard.Blogs", + controller = "BlogPost", + action = "Edit", + blogSlug = bp.Blog.Slug, + postSlug = bp.Slug + }); + }); } } } \ No newline at end of file diff --git a/src/Orchard.Web/Packages/Orchard.Comments/Services/CommentService.cs b/src/Orchard.Web/Packages/Orchard.Comments/Services/CommentService.cs index 2345987f4..0c131b91d 100644 --- a/src/Orchard.Web/Packages/Orchard.Comments/Services/CommentService.cs +++ b/src/Orchard.Web/Packages/Orchard.Comments/Services/CommentService.cs @@ -15,7 +15,7 @@ namespace Orchard.Comments.Services { IEnumerable GetCommentsForCommentedContent(int id); IEnumerable GetCommentsForCommentedContent(int id, CommentStatus status); Comment GetComment(int id); - IContentDisplayInfo GetDisplayForCommentedContent(int id); + ContentItemMetadata GetDisplayForCommentedContent(int id); void CreateComment(Comment comment); void UpdateComment(int id, string name, string email, string siteName, string commentText, CommentStatus status); void MarkCommentAsSpam(int commentId); @@ -73,8 +73,11 @@ namespace Orchard.Comments.Services { return _commentRepository.Get(id); } - public IContentDisplayInfo GetDisplayForCommentedContent(int id) { - return _contentManager.Get(id).As(); + public ContentItemMetadata GetDisplayForCommentedContent(int id) { + var content = _contentManager.Get(id); + if (content == null) + return null; + return _contentManager.GetItemMetadata(content); } public void CreateComment(Comment comment) { diff --git a/src/Orchard.Web/Packages/Orchard.Sandbox/Models/SandboxContentProvider.cs b/src/Orchard.Web/Packages/Orchard.Sandbox/Models/SandboxContentProvider.cs index 4e7eb6265..c38c102e6 100644 --- a/src/Orchard.Web/Packages/Orchard.Sandbox/Models/SandboxContentProvider.cs +++ b/src/Orchard.Web/Packages/Orchard.Sandbox/Models/SandboxContentProvider.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using System.Web.Routing; using Orchard.Core.Common.Models; using Orchard.Data; using Orchard.Models; @@ -8,11 +9,11 @@ namespace Orchard.Sandbox.Models { public class SandboxContentProvider : ContentProvider { public override IEnumerable GetContentTypes() { - return new[] {SandboxPage.ContentType}; + return new[] { SandboxPage.ContentType }; } public SandboxContentProvider( - IRepository pageRepository, + IRepository pageRepository, IRepository settingsRepository) { // define the "sandboxpage" content type @@ -22,6 +23,26 @@ namespace Orchard.Sandbox.Models { Filters.Add(new ActivatingFilter(SandboxPage.ContentType.Name)); Filters.Add(new StorageFilter(pageRepository) { AutomaticallyCreateMissingRecord = true }); + OnGetItemMetadata((context, page) => { + context.Metadata.DisplayText = page.Record.Name; + context.Metadata.DisplayRouteValues = + new RouteValueDictionary( + new { + area = "Orchard.Sandbox", + controller = "Page", + action = "Show", + id = context.ContentItem.Id, + }); + context.Metadata.EditorRouteValues = + new RouteValueDictionary( + new { + area = "Orchard.Sandbox", + controller = "Page", + action = "Edit", + id = context.ContentItem.Id, + }); + }); + // add settings to site, and simple record-template gui Filters.Add(new ActivatingFilter>("site")); Filters.Add(new StorageFilter(settingsRepository) { AutomaticallyCreateMissingRecord = true }); diff --git a/src/Orchard.Web/Packages/Orchard.Sandbox/Models/SandboxPage.cs b/src/Orchard.Web/Packages/Orchard.Sandbox/Models/SandboxPage.cs index de7d42588..6bd6ddd58 100644 --- a/src/Orchard.Web/Packages/Orchard.Sandbox/Models/SandboxPage.cs +++ b/src/Orchard.Web/Packages/Orchard.Sandbox/Models/SandboxPage.cs @@ -2,21 +2,9 @@ using System.Web.Routing; using Orchard.Models; namespace Orchard.Sandbox.Models { - public class SandboxPage : ContentPart, IContentDisplayInfo { + public class SandboxPage : ContentPart { public readonly static ContentType ContentType = new ContentType {Name = "sandboxpage", DisplayName = "Sandbox Page"}; - string IContentDisplayInfo.DisplayText { - get { return Record.Name; } - } - - RouteValueDictionary IContentDisplayInfo.DisplayRouteValues() { - return new RouteValueDictionary(new { area = "Orchard.Sandbox", controller = "Page", action = "Show", id = ContentItem.Id }); - } - - RouteValueDictionary IContentDisplayInfo.EditRouteValues() { - return new RouteValueDictionary(new { area = "Orchard.Sandbox", controller = "Page", action = "Edit", id = ContentItem.Id }); - } - } } diff --git a/src/Orchard.Web/Packages/Orchard.Tags/Models/TagsHandler.cs b/src/Orchard.Web/Packages/Orchard.Tags/Models/TagsHandler.cs index f7c9bb6eb..5e63ba159 100644 --- a/src/Orchard.Web/Packages/Orchard.Tags/Models/TagsHandler.cs +++ b/src/Orchard.Web/Packages/Orchard.Tags/Models/TagsHandler.cs @@ -26,9 +26,9 @@ namespace Orchard.Tags.Models { Filters.Add(new ActivatingFilter("sandboxpage")); Filters.Add(new ActivatingFilter("blogpost")); - OnGetDisplays((context, part) => { - context.Displays.Add(new ModelTemplate(context.ContentItem.Get()) { Position = "2", TemplateName = "HasTagsList" }); - context.Displays.Add(new ModelTemplate(context.ContentItem.Get()) { Position = "5" }); + OnGetDisplays((context, hasTags) => { + context.Displays.Add(new ModelTemplate(hasTags) { Position = "2", TemplateName = "HasTagsList" }); + context.Displays.Add(new ModelTemplate(hasTags) { Position = "5" }); }); } diff --git a/src/Orchard.Web/Packages/Orchard.Tags/Views/Admin/Search.aspx b/src/Orchard.Web/Packages/Orchard.Tags/Views/Admin/Search.aspx index f62b6eefa..e8d94a727 100644 --- a/src/Orchard.Web/Packages/Orchard.Tags/Views/Admin/Search.aspx +++ b/src/Orchard.Web/Packages/Orchard.Tags/Views/Admin/Search.aspx @@ -21,10 +21,10 @@ <% foreach (var contentItem in Model.Contents) { %> - <%=contentItem.As().DisplayText%> + <%=Html.ItemDisplayText(contentItem)%> - <%=Html.ItemDisplayLink(contentItem)%> + <%=Html.ItemDisplayLink(contentItem)%> <% } %> diff --git a/src/Orchard/Models/ContentItem.cs b/src/Orchard/Models/ContentItem.cs index fb397950a..c59916565 100644 --- a/src/Orchard/Models/ContentItem.cs +++ b/src/Orchard/Models/ContentItem.cs @@ -19,6 +19,7 @@ namespace Orchard.Models { public IEnumerable Parts { get { return _parts; } } + public IContentManager ContentManager { get; set; } public bool Has(Type partType) { return partType==typeof(ContentItem) || _parts.Any(part => partType.IsAssignableFrom(part.GetType())); diff --git a/src/Orchard/Models/ContentItemMetadata.cs b/src/Orchard/Models/ContentItemMetadata.cs new file mode 100644 index 000000000..08a2aea47 --- /dev/null +++ b/src/Orchard/Models/ContentItemMetadata.cs @@ -0,0 +1,13 @@ +using System.Collections.Generic; +using System.Web.Routing; + +namespace Orchard.Models { + public class ContentItemMetadata { + public string DisplayText { get; set; } + public RouteValueDictionary DisplayRouteValues { get; set; } + public RouteValueDictionary EditorRouteValues { get; set; } + + public IEnumerable DisplayTabs { get; set; } + public IEnumerable EditorTabs { get; set; } + } +} \ No newline at end of file diff --git a/src/Orchard/Models/DefaultContentManager.cs b/src/Orchard/Models/DefaultContentManager.cs index 5e5801507..b289f7110 100644 --- a/src/Orchard/Models/DefaultContentManager.cs +++ b/src/Orchard/Models/DefaultContentManager.cs @@ -29,7 +29,7 @@ namespace Orchard.Models { if (_drivers == null) _drivers = _context.Resolve>(); return _drivers; - } + } } public IEnumerable GetContentTypes() { @@ -54,6 +54,10 @@ namespace Orchard.Models { ContentType = contentType, ContentItem = context.Builder.Build() }; + + // back-reference for convenience (e.g. getting metadata when in a view) + context2.ContentItem.ContentManager = this; + foreach (var driver in Drivers) { driver.Activated(context2); } @@ -121,6 +125,16 @@ namespace Orchard.Models { } } + public ContentItemMetadata GetItemMetadata(IContent content) { + var context = new GetItemMetadataContext { + ContentItem = content.ContentItem, + Metadata = new ContentItemMetadata() + }; + foreach (var driver in Drivers) { + driver.GetItemMetadata(context); + } + return context.Metadata; + } public IEnumerable GetDisplays(IContent content) { var context = new GetDisplaysContext(content); @@ -149,7 +163,7 @@ namespace Orchard.Models { private static IEnumerable OrderTemplates(IEnumerable templates) { var comparer = new PositionComparer(); return templates.OrderBy(x => x.Position ?? "6", comparer); - + } public IContentQuery Query() { diff --git a/src/Orchard/Models/Driver/ContentProvider.cs b/src/Orchard/Models/Driver/ContentProvider.cs index 84f206bc8..957d7b480 100644 --- a/src/Orchard/Models/Driver/ContentProvider.cs +++ b/src/Orchard/Models/Driver/ContentProvider.cs @@ -33,6 +33,9 @@ namespace Orchard.Models.Driver { Filters.Add(new InlineStorageFilter { OnLoaded = handler }); } + protected void OnGetItemMetadata(Action handler) where TPart : class, IContent { + Filters.Add(new InlineTemplateFilter { OnGetItemMetadata = handler }); + } protected void OnGetDisplays(Action handler) where TPart : class, IContent { Filters.Add(new InlineTemplateFilter { OnGetDisplays = handler }); } @@ -69,9 +72,13 @@ namespace Orchard.Models.Driver { } class InlineTemplateFilter : TemplateFilterBase where TPart : class, IContent { + public Action OnGetItemMetadata { get; set; } public Action OnGetDisplays { get; set; } public Action OnGetEditors { get; set; } public Action OnUpdateEditors { get; set; } + protected override void GetItemMetadata(GetItemMetadataContext context, TPart instance) { + if (OnGetItemMetadata != null) OnGetItemMetadata(context, instance); + } protected override void GetDisplays(GetDisplaysContext context, TPart instance) { if (OnGetDisplays != null) OnGetDisplays(context, instance); } @@ -124,6 +131,11 @@ namespace Orchard.Models.Driver { } + void IContentProvider.GetItemMetadata(GetItemMetadataContext context) { + foreach (var filter in Filters.OfType()) + filter.GetItemMetadata(context); + GetItemMetadata(context); + } void IContentProvider.GetDisplays(GetDisplaysContext context) { foreach (var filter in Filters.OfType()) filter.GetDisplays(context); @@ -149,6 +161,7 @@ namespace Orchard.Models.Driver { protected virtual void Creating(CreateContentContext context) { } protected virtual void Created(CreateContentContext context) { } + protected virtual void GetItemMetadata(GetItemMetadataContext context) { } protected virtual void GetDisplays(GetDisplaysContext context) { } protected virtual void GetEditors(GetEditorsContext context) { } protected virtual void UpdateEditors(UpdateContentContext context) {} diff --git a/src/Orchard/Models/Driver/GetDisplaysContext.cs b/src/Orchard/Models/Driver/GetDisplaysContext.cs new file mode 100644 index 000000000..a55b9e33c --- /dev/null +++ b/src/Orchard/Models/Driver/GetDisplaysContext.cs @@ -0,0 +1,13 @@ +using System.Collections.Generic; +using Orchard.UI.Models; + +namespace Orchard.Models.Driver { + public class GetDisplaysContext { + public GetDisplaysContext(IContent content) { + ContentItem = content.ContentItem; + Displays = new List(); + } + public ContentItem ContentItem { get; set; } + public IList Displays { get; set; } + } +} \ No newline at end of file diff --git a/src/Orchard/Models/Driver/GetEditorsContext.cs b/src/Orchard/Models/Driver/GetEditorsContext.cs index fc24b9cbd..41093b00b 100644 --- a/src/Orchard/Models/Driver/GetEditorsContext.cs +++ b/src/Orchard/Models/Driver/GetEditorsContext.cs @@ -10,13 +10,4 @@ namespace Orchard.Models.Driver { public ContentItem ContentItem { get; set; } public IList Editors { get; set; } } - - public class GetDisplaysContext { - public GetDisplaysContext(IContent content) { - ContentItem = content.ContentItem; - Displays = new List(); - } - public ContentItem ContentItem { get; set; } - public IList Displays { get; set; } - } } \ No newline at end of file diff --git a/src/Orchard/Models/Driver/GetItemMetadataContext.cs b/src/Orchard/Models/Driver/GetItemMetadataContext.cs new file mode 100644 index 000000000..e57081a89 --- /dev/null +++ b/src/Orchard/Models/Driver/GetItemMetadataContext.cs @@ -0,0 +1,6 @@ +namespace Orchard.Models.Driver { + public class GetItemMetadataContext { + public ContentItem ContentItem { get; set; } + public ContentItemMetadata Metadata { get; set; } + } +} \ No newline at end of file diff --git a/src/Orchard/Models/Driver/IContentProvider.cs b/src/Orchard/Models/Driver/IContentProvider.cs index 13e6334e9..f487a3af0 100644 --- a/src/Orchard/Models/Driver/IContentProvider.cs +++ b/src/Orchard/Models/Driver/IContentProvider.cs @@ -11,8 +11,9 @@ namespace Orchard.Models.Driver { void Loading(LoadContentContext context); void Loaded(LoadContentContext context); + void GetItemMetadata(GetItemMetadataContext context); void GetDisplays(GetDisplaysContext context); void GetEditors(GetEditorsContext context); void UpdateEditors(UpdateContentContext context); } -} \ No newline at end of file +} diff --git a/src/Orchard/Models/Driver/IContentTemplateFilter.cs b/src/Orchard/Models/Driver/IContentTemplateFilter.cs index 1a8d4e175..09cfa8a49 100644 --- a/src/Orchard/Models/Driver/IContentTemplateFilter.cs +++ b/src/Orchard/Models/Driver/IContentTemplateFilter.cs @@ -5,6 +5,7 @@ using System.Text; namespace Orchard.Models.Driver { interface IContentTemplateFilter : IContentFilter { + void GetItemMetadata(GetItemMetadataContext context); void GetDisplays(GetDisplaysContext context); void GetEditors(GetEditorsContext context); void UpdateEditors(UpdateContentContext context); diff --git a/src/Orchard/Models/Driver/TemplateFilterBase.cs b/src/Orchard/Models/Driver/TemplateFilterBase.cs index bcabf8ba5..cdb0146f5 100644 --- a/src/Orchard/Models/Driver/TemplateFilterBase.cs +++ b/src/Orchard/Models/Driver/TemplateFilterBase.cs @@ -6,10 +6,15 @@ using System.Text; namespace Orchard.Models.Driver { public abstract class TemplateFilterBase : IContentTemplateFilter where TPart : class, IContent { + protected virtual void GetItemMetadata(GetItemMetadataContext context, TPart instance) { } protected virtual void GetDisplays(GetDisplaysContext context, TPart instance) { } protected virtual void GetEditors(GetEditorsContext context, TPart instance) { } protected virtual void UpdateEditors(UpdateContentContext context, TPart instance) { } + void IContentTemplateFilter.GetItemMetadata(GetItemMetadataContext context) { + if (context.ContentItem.Is()) + GetItemMetadata(context, context.ContentItem.As()); + } void IContentTemplateFilter.GetDisplays(GetDisplaysContext context) { if (context.ContentItem.Is()) diff --git a/src/Orchard/Models/IContentDisplayInfo.cs b/src/Orchard/Models/IContentDisplayInfo.cs index 30a01dcbc..ae85f3a86 100644 --- a/src/Orchard/Models/IContentDisplayInfo.cs +++ b/src/Orchard/Models/IContentDisplayInfo.cs @@ -1,9 +1,9 @@ using System.Web.Routing; namespace Orchard.Models { - public interface IContentDisplayInfo : IContent { - string DisplayText { get; } - RouteValueDictionary DisplayRouteValues(); - RouteValueDictionary EditRouteValues(); - } + //public interface IContentDisplayInfo : IContent { + // string DisplayText { get; } + // RouteValueDictionary DisplayRouteValues(); + // RouteValueDictionary EditRouteValues(); + //} } \ No newline at end of file diff --git a/src/Orchard/Models/IContentManager.cs b/src/Orchard/Models/IContentManager.cs index b44910aab..b811e1477 100644 --- a/src/Orchard/Models/IContentManager.cs +++ b/src/Orchard/Models/IContentManager.cs @@ -14,6 +14,7 @@ namespace Orchard.Models { IContentQuery Query(); + ContentItemMetadata GetItemMetadata(IContent contentItem); IEnumerable GetDisplays(IContent contentItem); IEnumerable GetEditors(IContent contentItem); IEnumerable UpdateEditors(IContent contentItem, IUpdateModel updater); diff --git a/src/Orchard/Mvc/Html/ContentItemExtensions.cs b/src/Orchard/Mvc/Html/ContentItemExtensions.cs index f657c6e4c..4c86ea195 100644 --- a/src/Orchard/Mvc/Html/ContentItemExtensions.cs +++ b/src/Orchard/Mvc/Html/ContentItemExtensions.cs @@ -5,13 +5,23 @@ using Orchard.Models; namespace Orchard.Mvc.Html { public static class ContentItemExtensions { + public static string ItemDisplayText(this HtmlHelper html, IContent content) { + var metadata = content.ContentItem.ContentManager.GetItemMetadata(content); + if (metadata.DisplayText == null) + return null; + return html.Encode(metadata.DisplayText); + } + + public static MvcHtmlString ItemDisplayLink(this HtmlHelper html, string linkText, IContent content) { - var display = content.As(); - if (display == null) + var metadata = content.ContentItem.ContentManager.GetItemMetadata(content); + if (metadata.DisplayRouteValues == null) return null; - var values = display.DisplayRouteValues(); - return html.ActionLink(linkText ?? display.DisplayText, Convert.ToString(values["action"]), values); + return html.ActionLink( + linkText ?? metadata.DisplayText, + Convert.ToString(metadata.DisplayRouteValues["action"]), + metadata.DisplayRouteValues); } public static MvcHtmlString ItemDisplayLink(this HtmlHelper html, IContent content) { @@ -19,12 +29,14 @@ namespace Orchard.Mvc.Html { } public static MvcHtmlString ItemEditLink(this HtmlHelper html, string linkText, IContent content) { - var display = content.As(); - if (display == null) + var metadata = content.ContentItem.ContentManager.GetItemMetadata(content); + if (metadata.EditorRouteValues == null) return null; - var values = display.EditRouteValues(); - return html.ActionLink(linkText ?? display.DisplayText, Convert.ToString(values["action"]), values); + return html.ActionLink( + linkText ?? metadata.DisplayText, + Convert.ToString(metadata.EditorRouteValues["action"]), + metadata.EditorRouteValues); } public static MvcHtmlString ItemEditLink(this HtmlHelper html, IContent content) { diff --git a/src/Orchard/Orchard.csproj b/src/Orchard/Orchard.csproj index 34d613c5e..ef4fa0a4b 100644 --- a/src/Orchard/Orchard.csproj +++ b/src/Orchard/Orchard.csproj @@ -128,11 +128,14 @@ + + +