diff --git a/src/Orchard.Web/Core/Orchard.Core.csproj b/src/Orchard.Web/Core/Orchard.Core.csproj index 9d66a5dde..a928654da 100644 --- a/src/Orchard.Web/Core/Orchard.Core.csproj +++ b/src/Orchard.Web/Core/Orchard.Core.csproj @@ -214,6 +214,7 @@ + diff --git a/src/Orchard.Web/Core/Settings/Drivers/SiteSettings2PartDriver.cs b/src/Orchard.Web/Core/Settings/Drivers/SiteSettings2PartDriver.cs new file mode 100644 index 000000000..93456225d --- /dev/null +++ b/src/Orchard.Web/Core/Settings/Drivers/SiteSettings2PartDriver.cs @@ -0,0 +1,27 @@ +using Orchard.ContentManagement.Drivers; +using Orchard.ContentManagement.Handlers; +using Orchard.Core.Settings.Models; +using Orchard.Localization; +using Orchard.Logging; +using Orchard.Settings; + +namespace Orchard.Core.Settings.Drivers +{ + public class SiteSettings2PartDriver : ContentPartDriver { + public SiteSettings2PartDriver() { + T = NullLocalizer.Instance; + Logger = NullLogger.Instance; + } + + public Localizer T { get; set; } + public ILogger Logger { get; set; } + + protected override void Exporting(SiteSettings2Part part, ExportContentContext context) { + DefaultSettingsPartImportExport.ExportSettingsPart(part, context); + } + + protected override void Importing(SiteSettings2Part part, ImportContentContext context) { + DefaultSettingsPartImportExport.ImportSettingPart(part, context.Data.Element(part.PartDefinition.Name)); + } + } +} \ No newline at end of file diff --git a/src/Orchard.Web/Core/Settings/Drivers/SiteSettingsPartDriver.cs b/src/Orchard.Web/Core/Settings/Drivers/SiteSettingsPartDriver.cs index 81cd50525..064c77e90 100644 --- a/src/Orchard.Web/Core/Settings/Drivers/SiteSettingsPartDriver.cs +++ b/src/Orchard.Web/Core/Settings/Drivers/SiteSettingsPartDriver.cs @@ -3,6 +3,7 @@ using System.Net; using JetBrains.Annotations; using Orchard.ContentManagement; using Orchard.ContentManagement.Drivers; +using Orchard.ContentManagement.Handlers; using Orchard.Core.Settings.Models; using Orchard.Core.Settings.ViewModels; using Orchard.Localization.Services; @@ -101,5 +102,13 @@ namespace Orchard.Core.Settings.Drivers { return ContentShape("Parts_Settings_SiteSettingsPart", () => shapeHelper.EditorTemplate(TemplateName: "Parts.Settings.SiteSettingsPart", Model: model, Prefix: Prefix)); } + + protected override void Exporting(SiteSettingsPart part, ExportContentContext context) { + DefaultSettingsPartImportExport.ExportSettingsPart(part, context); + } + + protected override void Importing(SiteSettingsPart part, ImportContentContext context) { + DefaultSettingsPartImportExport.ImportSettingPart(part, context.Data.Element(part.PartDefinition.Name)); + } } } \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Comments/Drivers/CommentSettingsPartDriver.cs b/src/Orchard.Web/Modules/Orchard.Comments/Drivers/CommentSettingsPartDriver.cs index 4e06b09d5..c74593b49 100644 --- a/src/Orchard.Web/Modules/Orchard.Comments/Drivers/CommentSettingsPartDriver.cs +++ b/src/Orchard.Web/Modules/Orchard.Comments/Drivers/CommentSettingsPartDriver.cs @@ -2,7 +2,9 @@ using Orchard.Comments.Models; using Orchard.ContentManagement; using Orchard.ContentManagement.Drivers; +using Orchard.ContentManagement.Handlers; using Orchard.Localization; +using Orchard.Settings; namespace Orchard.Comments.Drivers { public class CommentSettingsPartDriver : ContentPartDriver { @@ -28,5 +30,13 @@ namespace Orchard.Comments.Drivers { }) .OnGroup("comments"); } + + protected override void Exporting(CommentSettingsPart part, ExportContentContext context) { + DefaultSettingsPartImportExport.ExportSettingsPart(part, context); + } + + protected override void Importing(CommentSettingsPart part, ImportContentContext context) { + DefaultSettingsPartImportExport.ImportSettingPart(part, context.Data.Element(part.PartDefinition.Name)); + } } } \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Email/Drivers/SmtpSettingsPartDriver.cs b/src/Orchard.Web/Modules/Orchard.Email/Drivers/SmtpSettingsPartDriver.cs index c009122db..c0430dc1b 100644 --- a/src/Orchard.Web/Modules/Orchard.Email/Drivers/SmtpSettingsPartDriver.cs +++ b/src/Orchard.Web/Modules/Orchard.Email/Drivers/SmtpSettingsPartDriver.cs @@ -1,8 +1,10 @@ using System; using Orchard.ContentManagement; using Orchard.ContentManagement.Drivers; +using Orchard.ContentManagement.Handlers; using Orchard.Email.Models; using Orchard.Localization; +using Orchard.Settings; namespace Orchard.Email.Drivers { @@ -39,5 +41,13 @@ namespace Orchard.Email.Drivers { }) .OnGroup("email"); } + + protected override void Exporting(SmtpSettingsPart part, ExportContentContext context) { + DefaultSettingsPartImportExport.ExportSettingsPart(part, context); + } + + protected override void Importing(SmtpSettingsPart part, ImportContentContext context) { + DefaultSettingsPartImportExport.ImportSettingPart(part, context.Data.Element(part.PartDefinition.Name)); + } } } \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Email/Orchard.Email.csproj b/src/Orchard.Web/Modules/Orchard.Email/Orchard.Email.csproj index 09f71bdd8..680a6872e 100644 --- a/src/Orchard.Web/Modules/Orchard.Email/Orchard.Email.csproj +++ b/src/Orchard.Web/Modules/Orchard.Email/Orchard.Email.csproj @@ -53,6 +53,8 @@ ..\..\..\..\lib\aspnetmvc\System.Web.Mvc.dll + + diff --git a/src/Orchard.Web/Modules/Orchard.ImportExport/Services/ImportExportService.cs b/src/Orchard.Web/Modules/Orchard.ImportExport/Services/ImportExportService.cs index 9d1672bd9..4709da212 100644 --- a/src/Orchard.Web/Modules/Orchard.ImportExport/Services/ImportExportService.cs +++ b/src/Orchard.Web/Modules/Orchard.ImportExport/Services/ImportExportService.cs @@ -139,31 +139,8 @@ namespace Orchard.ImportExport.Services { } private XElement ExportSiteSettings() { - var settings = new XElement("Settings"); - var hasSetting = false; - - foreach (var sitePart in _orchardServices.WorkContext.CurrentSite.ContentItem.Parts) { - var setting = new XElement(sitePart.PartDefinition.Name); - - foreach (var property in sitePart.GetType().GetProperties()) { - var propertyType = property.PropertyType; - // Supported types (we also know they are not indexed properties). - if (propertyType == typeof(string) || propertyType == typeof(bool) || propertyType == typeof(int)) { - // Exclude read-only properties. - if (property.GetSetMethod() != null) { - setting.SetAttributeValue(property.Name, property.GetValue(sitePart, null)); - hasSetting = true; - } - } - } - - if (hasSetting) { - settings.Add(setting); - hasSetting = false; - } - } - - return settings; + var exportContentItem = ExportContentItem(_orchardServices.WorkContext.CurrentSite.ContentItem); + return new XElement("Settings", exportContentItem.Elements()); } private XElement ExportData(IEnumerable contentTypes, IEnumerable contentItems, int? batchSize) { diff --git a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Drivers/WebSearchSettingsPartDriver.cs b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Drivers/WebSearchSettingsPartDriver.cs new file mode 100644 index 000000000..aa64bd654 --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Drivers/WebSearchSettingsPartDriver.cs @@ -0,0 +1,28 @@ +using Orchard.ContentManagement.Drivers; +using Orchard.ContentManagement.Handlers; +using Orchard.Localization; +using Orchard.Logging; +using Orchard.MediaLibrary.Models; +using Orchard.Settings; + +namespace Orchard.MediaLibrary.Drivers +{ + public class WebSearchSettingsPartDriver : ContentPartDriver { + public WebSearchSettingsPartDriver() + { + T = NullLocalizer.Instance; + Logger = NullLogger.Instance; + } + + public Localizer T { get; set; } + public ILogger Logger { get; set; } + + protected override void Exporting(WebSearchSettingsPart part, ExportContentContext context) { + DefaultSettingsPartImportExport.ExportSettingsPart(part, context); + } + + protected override void Importing(WebSearchSettingsPart part, ImportContentContext context) { + DefaultSettingsPartImportExport.ImportSettingPart(part, context.Data.Element(part.PartDefinition.Name)); + } + } +} \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Orchard.MediaLibrary.csproj b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Orchard.MediaLibrary.csproj index 83ace0c1d..efe7356a1 100644 --- a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Orchard.MediaLibrary.csproj +++ b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Orchard.MediaLibrary.csproj @@ -98,6 +98,7 @@ + diff --git a/src/Orchard.Web/Modules/Orchard.Messaging/Drivers/MessageSettingsPartDriver.cs b/src/Orchard.Web/Modules/Orchard.Messaging/Drivers/MessageSettingsPartDriver.cs index cbc319c69..1554256fd 100644 --- a/src/Orchard.Web/Modules/Orchard.Messaging/Drivers/MessageSettingsPartDriver.cs +++ b/src/Orchard.Web/Modules/Orchard.Messaging/Drivers/MessageSettingsPartDriver.cs @@ -1,10 +1,12 @@ using JetBrains.Annotations; using Orchard.ContentManagement; using Orchard.ContentManagement.Drivers; +using Orchard.ContentManagement.Handlers; using Orchard.Localization; using Orchard.Messaging.Models; using Orchard.Messaging.Services; using Orchard.Messaging.ViewModels; +using Orchard.Settings; namespace Orchard.Messaging.Drivers { [UsedImplicitly] @@ -43,5 +45,13 @@ namespace Orchard.Messaging.Drivers { return ContentShape("Parts_MessageSettings_Edit", () => shapeHelper.EditorTemplate(TemplateName: TemplateName, Model: model, Prefix: Prefix)); } + + protected override void Exporting(MessageSettingsPart part, ExportContentContext context) { + DefaultSettingsPartImportExport.ExportSettingsPart(part, context); + } + + protected override void Importing(MessageSettingsPart part, ImportContentContext context) { + DefaultSettingsPartImportExport.ImportSettingPart(part, context.Data.Element(part.PartDefinition.Name)); + } } } \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.OutputCache/Drivers/CacheSettingsPartDriver.cs b/src/Orchard.Web/Modules/Orchard.OutputCache/Drivers/CacheSettingsPartDriver.cs new file mode 100644 index 000000000..9dd3b3378 --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.OutputCache/Drivers/CacheSettingsPartDriver.cs @@ -0,0 +1,28 @@ +using Orchard.ContentManagement.Drivers; +using Orchard.ContentManagement.Handlers; +using Orchard.Localization; +using Orchard.Logging; +using Orchard.OutputCache.Models; +using Orchard.Settings; + +namespace Orchard.OutputCache.Drivers +{ + public class CacheSettingsPartDriver : ContentPartDriver { + public CacheSettingsPartDriver() + { + T = NullLocalizer.Instance; + Logger = NullLogger.Instance; + } + + public Localizer T { get; set; } + public ILogger Logger { get; set; } + + protected override void Exporting(CacheSettingsPart part, ExportContentContext context) { + DefaultSettingsPartImportExport.ExportSettingsPart(part, context); + } + + protected override void Importing(CacheSettingsPart part, ImportContentContext context) { + DefaultSettingsPartImportExport.ImportSettingPart(part, context.Data.Element(part.PartDefinition.Name)); + } + } +} \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.OutputCache/Orchard.OutputCache.csproj b/src/Orchard.Web/Modules/Orchard.OutputCache/Orchard.OutputCache.csproj index c9a23d76e..7b804868a 100644 --- a/src/Orchard.Web/Modules/Orchard.OutputCache/Orchard.OutputCache.csproj +++ b/src/Orchard.Web/Modules/Orchard.OutputCache/Orchard.OutputCache.csproj @@ -90,6 +90,7 @@ + diff --git a/src/Orchard.Web/Modules/Orchard.Recipes/RecipeHandlers/SettingsRecipeHandler.cs b/src/Orchard.Web/Modules/Orchard.Recipes/RecipeHandlers/SettingsRecipeHandler.cs index e0e0366b3..cbf8993df 100644 --- a/src/Orchard.Web/Modules/Orchard.Recipes/RecipeHandlers/SettingsRecipeHandler.cs +++ b/src/Orchard.Web/Modules/Orchard.Recipes/RecipeHandlers/SettingsRecipeHandler.cs @@ -1,7 +1,9 @@ using System; +using System.Collections.Generic; using System.Xml; using System.Xml.Linq; using Orchard.ContentManagement; +using Orchard.ContentManagement.Handlers; using Orchard.Localization; using Orchard.Logging; using Orchard.Recipes.Models; @@ -11,15 +13,20 @@ using Orchard.Settings; namespace Orchard.Recipes.RecipeHandlers { public class SettingsRecipeHandler : IRecipeHandler { private readonly ISiteService _siteService; + private readonly IContentManager _contentManager; + private readonly Lazy> _handlers; - public SettingsRecipeHandler(ISiteService siteService) { + public SettingsRecipeHandler(ISiteService siteService, IContentManager contentManager, Lazy> handlers) { _siteService = siteService; + _contentManager = contentManager; + _handlers = handlers; Logger = NullLogger.Instance; T = NullLocalizer.Instance; } public Localizer T { get; set; } public ILogger Logger { get; set; } + private IEnumerable Handlers { get { return _handlers.Value; } } /* @@ -34,41 +41,19 @@ namespace Orchard.Recipes.RecipeHandlers { } var site = _siteService.GetSiteSettings(); - foreach (var element in recipeContext.RecipeStep.Step.Elements()) { - var partName = XmlConvert.DecodeName(element.Name.LocalName); - foreach (var contentPart in site.ContentItem.Parts) { - if (!String.Equals(contentPart.PartDefinition.Name, partName, StringComparison.OrdinalIgnoreCase)) { - continue; - } - foreach (var attribute in element.Attributes()) { - SetSetting(attribute, contentPart); - } - } + + var importContentSession = new ImportContentSession(_contentManager); + + var context = new ImportContentContext(site.ContentItem, recipeContext.RecipeStep.Step, importContentSession); + foreach (var contentHandler in Handlers) { + contentHandler.Importing(context); + } + + foreach (var contentHandler in Handlers) { + contentHandler.Imported(context); } recipeContext.Executed = true; } - - private static void SetSetting(XAttribute attribute, ContentPart contentPart) { - var attributeName = attribute.Name.LocalName; - var attributeValue = attribute.Value; - var property = contentPart.GetType().GetProperty(attributeName); - if (property == null) { - throw new InvalidOperationException(string.Format("Could set setting {0} for part {1} because it was not found.", attributeName, contentPart.PartDefinition.Name)); - } - var propertyType = property.PropertyType; - if (propertyType == typeof(string)) { - property.SetValue(contentPart, attributeValue, null); - } - else if (propertyType == typeof(bool)) { - property.SetValue(contentPart, Boolean.Parse(attributeValue), null); - } - else if (propertyType == typeof(int)) { - property.SetValue(contentPart, Int32.Parse(attributeValue), null); - } - else { - throw new InvalidOperationException(string.Format("Could set setting {0} for part {1} because its type is not supported. Settings should be integer,boolean or string.", attributeName, contentPart.PartDefinition.Name)); - } - } } } diff --git a/src/Orchard.Web/Modules/Orchard.Search/Drivers/SearchSettingsPartDriver.cs b/src/Orchard.Web/Modules/Orchard.Search/Drivers/SearchSettingsPartDriver.cs index 20e2512c7..2adf8eaa1 100644 --- a/src/Orchard.Web/Modules/Orchard.Search/Drivers/SearchSettingsPartDriver.cs +++ b/src/Orchard.Web/Modules/Orchard.Search/Drivers/SearchSettingsPartDriver.cs @@ -1,8 +1,10 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Xml.Linq; using Orchard.ContentManagement; using Orchard.ContentManagement.Drivers; +using Orchard.ContentManagement.Handlers; using Orchard.Indexing; using Orchard.Localization; using Orchard.Search.Models; @@ -61,5 +63,20 @@ namespace Orchard.Search.Drivers { return shapeHelper.EditorTemplate(TemplateName: "Parts/Search.SiteSettings", Model: model, Prefix: Prefix); }).OnGroup("search"); } + + protected override void Exporting(SearchSettingsPart part, ExportContentContext context) { + DefaultSettingsPartImportExport.ExportSettingsPart(part, context); + context.Element(part.PartDefinition.Name).Add(new XAttribute("SearchedFields", string.Join(",", part.SearchedFields))); + } + + protected override void Importing(SearchSettingsPart part, ImportContentContext context) { + var xElement = context.Data.Element(part.PartDefinition.Name); + if (xElement == null) return; + + DefaultSettingsPartImportExport.ImportSettingPart(part, xElement); + + var searchedFields = xElement.Attribute("SearchedFields"); + part.SearchedFields = searchedFields.Value.Split(new[] {","}, StringSplitOptions.RemoveEmptyEntries); + } } } \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Search/Orchard.Search.csproj b/src/Orchard.Web/Modules/Orchard.Search/Orchard.Search.csproj index 0f31f0b6f..e313da440 100644 --- a/src/Orchard.Web/Modules/Orchard.Search/Orchard.Search.csproj +++ b/src/Orchard.Web/Modules/Orchard.Search/Orchard.Search.csproj @@ -55,6 +55,8 @@ ..\..\..\..\lib\aspnetmvc\System.Web.Mvc.dll + + diff --git a/src/Orchard.Web/Modules/Orchard.Themes/Drivers/ThemeSiteSettingsPartDriver.cs b/src/Orchard.Web/Modules/Orchard.Themes/Drivers/ThemeSiteSettingsPartDriver.cs new file mode 100644 index 000000000..34c8f3918 --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.Themes/Drivers/ThemeSiteSettingsPartDriver.cs @@ -0,0 +1,28 @@ +using Orchard.ContentManagement.Drivers; +using Orchard.ContentManagement.Handlers; +using Orchard.Localization; +using Orchard.Logging; +using Orchard.Settings; +using Orchard.Themes.Models; + +namespace Orchard.Themes.Drivers +{ + public class ThemeSiteSettingsPartDriver : ContentPartDriver { + public ThemeSiteSettingsPartDriver() + { + T = NullLocalizer.Instance; + Logger = NullLogger.Instance; + } + + public Localizer T { get; set; } + public ILogger Logger { get; set; } + + protected override void Exporting(ThemeSiteSettingsPart part, ExportContentContext context) { + DefaultSettingsPartImportExport.ExportSettingsPart(part, context); + } + + protected override void Importing(ThemeSiteSettingsPart part, ImportContentContext context) { + DefaultSettingsPartImportExport.ImportSettingPart(part, context.Data.Element(part.PartDefinition.Name)); + } + } +} \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Themes/Orchard.Themes.csproj b/src/Orchard.Web/Modules/Orchard.Themes/Orchard.Themes.csproj index 7db1f19c6..eab80c367 100644 --- a/src/Orchard.Web/Modules/Orchard.Themes/Orchard.Themes.csproj +++ b/src/Orchard.Web/Modules/Orchard.Themes/Orchard.Themes.csproj @@ -20,6 +20,11 @@ + false + + + + true @@ -48,10 +53,13 @@ False ..\..\..\..\lib\aspnetmvc\System.Web.Mvc.dll + + + diff --git a/src/Orchard.Web/Modules/Orchard.Users/Drivers/RegistrationSettingsPartDriver.cs b/src/Orchard.Web/Modules/Orchard.Users/Drivers/RegistrationSettingsPartDriver.cs new file mode 100644 index 000000000..23e5bc53c --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.Users/Drivers/RegistrationSettingsPartDriver.cs @@ -0,0 +1,24 @@ +using Orchard.ContentManagement.Drivers; +using Orchard.ContentManagement.Handlers; +using Orchard.Localization; +using Orchard.Logging; +using Orchard.Settings; +using Orchard.Users.Models; + +namespace Orchard.Users.Drivers +{ + public class RegistrationSettingsPartDriver : ContentPartDriver { + public RegistrationSettingsPartDriver() + { + T = NullLocalizer.Instance; + Logger = NullLogger.Instance; + } + + public Localizer T { get; set; } + public ILogger Logger { get; set; } + + protected override void Exporting(RegistrationSettingsPart part, ExportContentContext context) { + DefaultSettingsPartImportExport.ExportSettingsPart(part, context); + } + } +} \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Users/Orchard.Users.csproj b/src/Orchard.Web/Modules/Orchard.Users/Orchard.Users.csproj index 7878803b5..bda180931 100644 --- a/src/Orchard.Web/Modules/Orchard.Users/Orchard.Users.csproj +++ b/src/Orchard.Web/Modules/Orchard.Users/Orchard.Users.csproj @@ -64,6 +64,7 @@ + diff --git a/src/Orchard/ContentManagement/Drivers/DefaultSettingsPartImportExport.cs b/src/Orchard/ContentManagement/Drivers/DefaultSettingsPartImportExport.cs new file mode 100644 index 000000000..f784ce2e5 --- /dev/null +++ b/src/Orchard/ContentManagement/Drivers/DefaultSettingsPartImportExport.cs @@ -0,0 +1,65 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Xml; +using System.Xml.Linq; +using Orchard.ContentManagement.Handlers; +using Orchard.Recipes.Models; +using Orchard.Settings; + +namespace Orchard.ContentManagement.Drivers +{ + public class DefaultSettingsPartImportExport + { + public static void ExportSettingsPart(ContentPart sitePart, ExportContentContext context) { + var xAttributes = new List(); + foreach (var property in sitePart.GetType().GetProperties()) { + var propertyType = property.PropertyType; + + // Supported types (we also know they are not indexed properties). + if (propertyType == typeof (string) || propertyType == typeof (bool) || propertyType == typeof (int)) { + + // Exclude read-only properties. + if (property.GetSetMethod() != null) { + var value = property.GetValue(sitePart, null); + if (value == null) + continue; + + xAttributes.Add(new XAttribute(property.Name, value)); + } + } + } + + if(xAttributes.Any()) { + context.Element(sitePart.PartDefinition.Name).Add(xAttributes.ToArray()); + } + } + + public static void ImportSettingPart(ContentPart sitePart, XElement element) { + if(element == null) + return; + + foreach (var attribute in element.Attributes()) { + var attributeName = attribute.Name.LocalName; + var attributeValue = attribute.Value; + + var property = sitePart.GetType().GetProperty(attributeName); + if (property == null) { + throw new InvalidOperationException(string.Format("Could set setting {0} for part {1} because it was not found.", attributeName, sitePart.PartDefinition.Name)); + } + + var propertyType = property.PropertyType; + if (propertyType == typeof(string)) { + property.SetValue(sitePart, attributeValue, null); + } + else if (propertyType == typeof(bool)) { + property.SetValue(sitePart, Boolean.Parse(attributeValue), null); + } + else if (propertyType == typeof(int)) { + property.SetValue(sitePart, Int32.Parse(attributeValue), null); + } + } + } + } +} + diff --git a/src/Orchard/Orchard.Framework.csproj b/src/Orchard/Orchard.Framework.csproj index fa0446aa1..8c90d4a10 100644 --- a/src/Orchard/Orchard.Framework.csproj +++ b/src/Orchard/Orchard.Framework.csproj @@ -302,6 +302,7 @@ +