diff --git a/src/Orchard.Azure/Environment/Configuration/AzureShellSettingsManager.cs b/src/Orchard.Azure/Environment/Configuration/AzureShellSettingsManager.cs index 65a7a7240..5c5e33d98 100644 --- a/src/Orchard.Azure/Environment/Configuration/AzureShellSettingsManager.cs +++ b/src/Orchard.Azure/Environment/Configuration/AzureShellSettingsManager.cs @@ -2,7 +2,6 @@ using System.Collections.Generic; using System.IO; using System.Linq; -using System.Yaml.Serialization; using JetBrains.Annotations; using Microsoft.WindowsAzure; using Microsoft.WindowsAzure.ServiceRuntime; @@ -95,33 +94,60 @@ namespace Orchard.Azure.Environment.Configuration { } static ShellSettings ParseSettings(string text) { - var ser = new YamlSerializer(); - var content = ser.Deserialize(text, typeof(Content)).Cast().Single(); - return new ShellSettings { - Name = content.Name, - DataProvider = content.DataProvider, - DataConnectionString = content.DataConnectionString, - DataTablePrefix = content.DataPrefix, - RequestUrlHost = content.RequestUrlHost, - RequestUrlPrefix = content.RequestUrlPrefix, - State = new TenantState(content.State) - }; + var shellSettings = new ShellSettings(); + if ( String.IsNullOrEmpty(text) ) + return shellSettings; + + string[] settings = text.Split(new[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries); + foreach ( var setting in settings ) { + string[] settingFields = setting.Split(new[] { ":" }, StringSplitOptions.RemoveEmptyEntries); + int fieldsLength = settingFields.Length; + if ( fieldsLength != 2 ) + continue; + for ( int i = 0; i < fieldsLength; i++ ) { + settingFields[i] = settingFields[i].Trim(); + } + if ( settingFields[1] != "null" ) { + switch ( settingFields[0] ) { + case "Name": + shellSettings.Name = settingFields[1]; + break; + case "DataProvider": + shellSettings.DataProvider = settingFields[1]; + break; + case "State": + shellSettings.State = new TenantState(settingFields[1]); + break; + case "DataConnectionString": + shellSettings.DataConnectionString = settingFields[1]; + break; + case "DataPrefix": + shellSettings.DataTablePrefix = settingFields[1]; + break; + case "RequestUrlHost": + shellSettings.RequestUrlHost = settingFields[1]; + break; + case "RequestUrlPrefix": + shellSettings.RequestUrlPrefix = settingFields[1]; + break; + } + } + } + return shellSettings; } static string ComposeSettings(ShellSettings settings) { if ( settings == null ) return ""; - var ser = new YamlSerializer(); - return ser.Serialize(new Content { - Name = settings.Name, - DataProvider = settings.DataProvider, - DataConnectionString = settings.DataConnectionString, - DataPrefix = settings.DataTablePrefix, - RequestUrlHost = settings.RequestUrlHost, - RequestUrlPrefix = settings.RequestUrlPrefix, - State = settings.State != null ? settings.State.ToString() : String.Empty - }); + return string.Format("Name: {0}\r\nDataProvider: {1}\r\nDataConnectionString: {2}\r\nDataPrefix: {3}\r\nRequestUrlHost: {4}\r\nRequestUrlPrefix: {5}\r\nState: {6}\r\n", + settings.Name, + settings.DataProvider, + settings.DataConnectionString ?? "null", + settings.DataTablePrefix ?? "null", + settings.RequestUrlHost ?? "null", + settings.RequestUrlPrefix ?? "null", + settings.State != null ? settings.State.ToString() : String.Empty); } } } diff --git a/src/Orchard.Azure/Orchard.Azure.csproj b/src/Orchard.Azure/Orchard.Azure.csproj index 00771440f..b70945429 100644 --- a/src/Orchard.Azure/Orchard.Azure.csproj +++ b/src/Orchard.Azure/Orchard.Azure.csproj @@ -68,10 +68,6 @@ - - False - ..\..\lib\yaml\YamlSerializer.dll - diff --git a/src/Orchard.Core.Tests/Common/Providers/CommonPartProviderTests.cs b/src/Orchard.Core.Tests/Common/Providers/CommonPartProviderTests.cs index fcc636ac3..8f1222e2b 100644 --- a/src/Orchard.Core.Tests/Common/Providers/CommonPartProviderTests.cs +++ b/src/Orchard.Core.Tests/Common/Providers/CommonPartProviderTests.cs @@ -1,13 +1,17 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Web.Routing; using Autofac; using JetBrains.Annotations; using Moq; using NUnit.Framework; using Orchard.ContentManagement.Aspects; +using Orchard.ContentManagement.Drivers; +using Orchard.ContentManagement.Drivers.Coordinators; using Orchard.ContentManagement.MetaData; using Orchard.Core.Common; +using Orchard.Core.Common.Drivers; using Orchard.Core.Common.Handlers; using Orchard.Core.Common.Models; using Orchard.ContentManagement; @@ -27,6 +31,7 @@ using Orchard.Tests.Modules; using Orchard.Core.Common.ViewModels; using System.Web.Mvc; using Orchard.Tests.Stubs; +using Orchard.Themes; namespace Orchard.Core.Tests.Common.Providers { [TestFixture] @@ -41,12 +46,19 @@ namespace Orchard.Core.Tests.Common.Providers { builder.RegisterType().As(); builder.RegisterType().As(); builder.RegisterType().As(); + builder.RegisterType().As(); + builder.RegisterType().As(); builder.RegisterType().As(); builder.RegisterType().As(); builder.RegisterType().As(); builder.RegisterType().As(); builder.RegisterType().As(); - builder.RegisterInstance(new Mock().Object); + builder.RegisterInstance(new Mock().Object); + builder.RegisterInstance(new Mock().Object); + builder.RegisterInstance(new Mock().Object); + builder.RegisterType().As(); + builder.RegisterType().As(); + builder.RegisterType().As(); _authn = new Mock(); _authz = new Mock(); @@ -152,7 +164,7 @@ namespace Orchard.Core.Tests.Common.Providers { contentManager.UpdateEditor(item.ContentItem, updater); } - [Test, Ignore("Fix pending")] + [Test] public void PublishingShouldFailIfOwnerIsEmpty() { var contentManager = _container.Resolve(); @@ -222,9 +234,9 @@ namespace Orchard.Core.Tests.Common.Providers { Assert.That(item1.CreatedUtc, Is.EqualTo(createUtc)); Assert.That(item2.CreatedUtc, Is.EqualTo(createUtc)); - // both instances non-versioned dates show the most recent publish - Assert.That(item1.PublishedUtc, Is.EqualTo(publish2Utc)); - Assert.That(item2.PublishedUtc, Is.EqualTo(publish2Utc)); + // both instances non-versioned dates show the earliest publish date + Assert.That(item1.PublishedUtc, Is.EqualTo(publish1Utc)); + Assert.That(item2.PublishedUtc, Is.EqualTo(publish1Utc)); // version1 versioned dates show create was upfront and publish was oldest Assert.That(item1.VersionCreatedUtc, Is.EqualTo(createUtc)); 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.Tests.Modules/Widgets/RuleEngine/UrlRuleProviderTest.cs b/src/Orchard.Tests.Modules/Widgets/RuleEngine/UrlRuleProviderTest.cs index 7f0b05e46..e41b15821 100644 --- a/src/Orchard.Tests.Modules/Widgets/RuleEngine/UrlRuleProviderTest.cs +++ b/src/Orchard.Tests.Modules/Widgets/RuleEngine/UrlRuleProviderTest.cs @@ -61,5 +61,13 @@ namespace Orchard.Tests.Modules.Widgets.RuleEngine { _urlRuleProvider.Process(context); Assert.That(context.Result, Is.True); } + + [Test] + public void UrlForAboutPageWithEndingSlashMatchesAboutPagePath() { + _stubContextAccessor.StubContext = new StubHttpContext("~/About/"); + var context = new RuleContext { FunctionName = "url", Arguments = new[] { "~/about" } }; + _urlRuleProvider.Process(context); + Assert.That(context.Result, Is.True); + } } } \ No newline at end of file diff --git a/src/Orchard.Web/Core/Common/Drivers/CommonPartDriver.cs b/src/Orchard.Web/Core/Common/Drivers/CommonPartDriver.cs index cf735b2bd..49d41bd5a 100644 --- a/src/Orchard.Web/Core/Common/Drivers/CommonPartDriver.cs +++ b/src/Orchard.Web/Core/Common/Drivers/CommonPartDriver.cs @@ -51,14 +51,10 @@ namespace Orchard.Core.Common.Drivers { ContainerEditor(part, null, shapeHelper)); } - protected override DriverResult Editor(CommonPart instance, IUpdateModel updater, dynamic shapeHelper) { - // this event is hooked so the modified timestamp is changed when an edit-post occurs. - instance.ModifiedUtc = _clock.UtcNow; - instance.VersionModifiedUtc = _clock.UtcNow; - + protected override DriverResult Editor(CommonPart part, IUpdateModel updater, dynamic shapeHelper) { return Combined( - OwnerEditor(instance, updater, shapeHelper), - ContainerEditor(instance, updater, shapeHelper)); + OwnerEditor(part, updater, shapeHelper), + ContainerEditor(part, updater, shapeHelper)); } DriverResult OwnerEditor(CommonPart part, IUpdateModel updater, dynamic shapeHelper) { diff --git a/src/Orchard.Web/Core/Common/Handlers/CommonPartHandler.cs b/src/Orchard.Web/Core/Common/Handlers/CommonPartHandler.cs index 71dd57e6d..8e8fd8316 100644 --- a/src/Orchard.Web/Core/Common/Handlers/CommonPartHandler.cs +++ b/src/Orchard.Web/Core/Common/Handlers/CommonPartHandler.cs @@ -1,4 +1,6 @@ +using System.Linq; using JetBrains.Annotations; +using Orchard.ContentManagement.MetaData; using Orchard.Core.Common.Models; using Orchard.Data; using Orchard.Localization; @@ -13,40 +15,40 @@ namespace Orchard.Core.Common.Handlers { private readonly IClock _clock; private readonly IAuthenticationService _authenticationService; private readonly IContentManager _contentManager; + private readonly IContentDefinitionManager _contentDefinitionManager; public CommonPartHandler( IRepository commonRepository, IRepository commonVersionRepository, IClock clock, IAuthenticationService authenticationService, - IContentManager contentManager) { + IContentManager contentManager, + IContentDefinitionManager contentDefinitionManager) { _clock = clock; _authenticationService = authenticationService; _contentManager = contentManager; + _contentDefinitionManager = contentDefinitionManager; T = NullLocalizer.Instance; Filters.Add(StorageFilter.For(commonRepository)); Filters.Add(StorageFilter.For(commonVersionRepository)); + Filters.Add(new ActivatingFilter>(ContentTypeWithACommonPart)); + OnInitializing(PropertySetHandlers); OnInitializing(AssignCreatingOwner); - OnInitializing>(AssignCreatingDates); + OnInitializing(AssignCreatingDates); OnInitializing>(AssignCreatingDates); OnLoaded(LazyLoadHandlers); - OnVersioning(CopyOwnerAndContainer); - + OnVersioned(AssignVersioningDates); OnVersioned>(AssignVersioningDates); - OnPublishing>(AssignPublishingDates); + OnPublishing(AssignPublishingDates); OnPublishing>(AssignPublishingDates); - //OnGetDisplayViewModel(); - //OnGetEditorViewModel(GetEditor); - //OnUpdateEditorViewModel(UpdateEditor); - OnIndexing((context, commonPart) => context.DocumentIndex .Add("type", commonPart.ContentItem.ContentType).Store() .Add("author", commonPart.Owner.UserName).Store() @@ -58,6 +60,9 @@ namespace Orchard.Core.Common.Handlers { public Localizer T { get; set; } + bool ContentTypeWithACommonPart(string typeName) { + return _contentDefinitionManager.GetTypeDefinition(typeName).Parts.Any(part => part.PartDefinition.Name == "CommonPart"); + } void AssignCreatingOwner(InitializingContentContext context, CommonPart part) { // and use the current user as Owner @@ -66,10 +71,10 @@ namespace Orchard.Core.Common.Handlers { } } - void AssignCreatingDates(InitializingContentContext context, ContentPart part) { + void AssignCreatingDates(InitializingContentContext context, CommonPart part) { // assign default create/modified dates - part.Record.CreatedUtc = _clock.UtcNow; - part.Record.ModifiedUtc = _clock.UtcNow; + part.CreatedUtc = _clock.UtcNow; + part.ModifiedUtc = _clock.UtcNow; } void AssignCreatingDates(InitializingContentContext context, ContentPart part) { @@ -78,22 +83,31 @@ namespace Orchard.Core.Common.Handlers { part.Record.ModifiedUtc = _clock.UtcNow; } - void AssignVersioningDates(VersionContentContext context, ContentPart existing, ContentPart building) { - // assign create/modified dates for the new version - building.Record.CreatedUtc = _clock.UtcNow; - building.Record.ModifiedUtc = _clock.UtcNow; + void AssignVersioningDates(VersionContentContext context, CommonPart existing, CommonPart building) { + // assign the created + building.CreatedUtc = existing.CreatedUtc ?? _clock.UtcNow; + // persist and published dates + building.PublishedUtc = existing.PublishedUtc; + // assign modified date for the new version + building.ModifiedUtc = _clock.UtcNow; + } + void AssignVersioningDates(VersionContentContext context, ContentPart existing, ContentPart building) { + // assign the created date + building.Record.CreatedUtc = _clock.UtcNow; + // assign modified date for the new version + building.Record.ModifiedUtc = _clock.UtcNow; // publish date should be null until publish method called building.Record.PublishedUtc = null; } - void AssignPublishingDates(PublishContentContext context, ContentPart part) { + void AssignPublishingDates(PublishContentContext context, CommonPart part) { // don't assign dates when unpublishing if (context.PublishingItemVersionRecord == null) return; - - // assign version-agnostic publish date - part.Record.PublishedUtc = _clock.UtcNow; + + // set the initial published date + part.PublishedUtc = part.PublishedUtc ?? _clock.UtcNow; } void AssignPublishingDates(PublishContentContext context, ContentPart part) { @@ -101,13 +115,8 @@ namespace Orchard.Core.Common.Handlers { if (context.PublishingItemVersionRecord == null) return; - // assign version-specific publish date - part.Record.PublishedUtc = _clock.UtcNow; - } - - private static void CopyOwnerAndContainer(VersionContentContext c, CommonPart c1, CommonPart c2) { - c2.Owner = c1.Owner; - c2.Container = c1.Container; + // assign the version's published date + part.Record.PublishedUtc = part.Record.PublishedUtc ?? _clock.UtcNow; } void LazyLoadHandlers(LoadContentContext context, CommonPart part) { @@ -120,28 +129,22 @@ namespace Orchard.Core.Common.Handlers { // add handlers that will update records when part properties are set part.OwnerField.Setter(user => { - if (user == null) { - part.Record.OwnerId = 0; - } - else { - part.Record.OwnerId = user.ContentItem.Id; - } - return user; - }); + part.Record.OwnerId = user == null + ? 0 + : user.ContentItem.Id; + return user; + }); // Force call to setter if we had already set a value if (part.OwnerField.Value != null) part.OwnerField.Value = part.OwnerField.Value; part.ContainerField.Setter(container => { - if (container == null) { - part.Record.Container = null; - } - else { - part.Record.Container = container.ContentItem.Record; - } - return container; - }); + part.Record.Container = container == null + ? null + : container.ContentItem.Record; + return container; + }); // Force call to setter if we had already set a value if (part.ContainerField.Value != null) diff --git a/src/Orchard.Web/Core/Common/Handlers/ItemReferenceContentFieldHandler.cs b/src/Orchard.Web/Core/Common/Handlers/ItemReferenceContentFieldHandler.cs deleted file mode 100644 index 0e2afb3bd..000000000 --- a/src/Orchard.Web/Core/Common/Handlers/ItemReferenceContentFieldHandler.cs +++ /dev/null @@ -1,9 +0,0 @@ -using System.Collections.Generic; -using Orchard.ContentManagement.Drivers; -using Orchard.ContentManagement.Handlers; - -namespace Orchard.Core.Common.Handlers { - public class ItemReferenceContentFieldHandler : ContentFieldHandler { - public ItemReferenceContentFieldHandler(IEnumerable contentFieldDrivers) : base(contentFieldDrivers) { } - } -} \ No newline at end of file diff --git a/src/Orchard.Web/Core/Common/Models/CommonPart.cs b/src/Orchard.Web/Core/Common/Models/CommonPart.cs index c452fa3f3..bccf97127 100644 --- a/src/Orchard.Web/Core/Common/Models/CommonPart.cs +++ b/src/Orchard.Web/Core/Common/Models/CommonPart.cs @@ -50,9 +50,8 @@ namespace Orchard.Core.Common.Models { return PartVersionRecord == null ? CreatedUtc : PartVersionRecord.CreatedUtc; } set { - if (PartVersionRecord != null) { + if (PartVersionRecord != null) PartVersionRecord.CreatedUtc = value; - } } } @@ -61,9 +60,8 @@ namespace Orchard.Core.Common.Models { return PartVersionRecord == null ? PublishedUtc : PartVersionRecord.PublishedUtc; } set { - if (PartVersionRecord != null) { + if (PartVersionRecord != null) PartVersionRecord.PublishedUtc = value; - } } } @@ -72,9 +70,8 @@ namespace Orchard.Core.Common.Models { return PartVersionRecord == null ? ModifiedUtc : PartVersionRecord.ModifiedUtc; } set { - if (PartVersionRecord != null) { + if (PartVersionRecord != null) PartVersionRecord.ModifiedUtc = value; - } } } } diff --git a/src/Orchard.Web/Core/Common/Views/Parts/Common.Metadata.Summary.cshtml b/src/Orchard.Web/Core/Common/Views/Parts/Common.Metadata.Summary.cshtml index 3465b069f..5fa305f6b 100644 --- a/src/Orchard.Web/Core/Common/Views/Parts/Common.Metadata.Summary.cshtml +++ b/src/Orchard.Web/Core/Common/Views/Parts/Common.Metadata.Summary.cshtml @@ -1 +1 @@ -
@Display.PublishedState(dateTimeUtc: Model.ContentPart.VersionPublishedUtc)
\ No newline at end of file +
@Display.PublishedState(dateTimeUtc: Model.ContentPart.PublishedUtc)
\ No newline at end of file diff --git a/src/Orchard.Web/Core/Common/Views/Parts/Common.Metadata.cshtml b/src/Orchard.Web/Core/Common/Views/Parts/Common.Metadata.cshtml index 3465b069f..5fa305f6b 100644 --- a/src/Orchard.Web/Core/Common/Views/Parts/Common.Metadata.cshtml +++ b/src/Orchard.Web/Core/Common/Views/Parts/Common.Metadata.cshtml @@ -1 +1 @@ -
@Display.PublishedState(dateTimeUtc: Model.ContentPart.VersionPublishedUtc)
\ No newline at end of file +
@Display.PublishedState(dateTimeUtc: Model.ContentPart.PublishedUtc)
\ No newline at end of file diff --git a/src/Orchard.Web/Core/Contents/Handlers/ContentsHandler.cs b/src/Orchard.Web/Core/Contents/Handlers/ContentsHandler.cs index d4e05b9ce..d6d056ba8 100644 --- a/src/Orchard.Web/Core/Contents/Handlers/ContentsHandler.cs +++ b/src/Orchard.Web/Core/Contents/Handlers/ContentsHandler.cs @@ -7,8 +7,9 @@ namespace Orchard.Core.Contents.Handlers { if (context.Metadata.CreateRouteValues == null) { context.Metadata.CreateRouteValues = new RouteValueDictionary { {"Area", "Contents"}, - {"Controller", "Item"}, - {"Action", "Create"} + {"Controller", "Admin"}, + {"Action", "Create"}, + {"Id", context.ContentItem.ContentType} }; } if (context.Metadata.EditorRouteValues == null) { @@ -30,8 +31,9 @@ namespace Orchard.Core.Contents.Handlers { if (context.Metadata.RemoveRouteValues == null) { context.Metadata.RemoveRouteValues = new RouteValueDictionary { {"Area", "Contents"}, - {"Controller", "Item"}, - {"Action", "Remove"} + {"Controller", "Admin"}, + {"Action", "Remove"}, + {"Id", context.ContentItem.Id} }; } } diff --git a/src/Orchard.Web/Core/Orchard.Core.csproj b/src/Orchard.Web/Core/Orchard.Core.csproj index 2c393afed..4efebae2b 100644 --- a/src/Orchard.Web/Core/Orchard.Core.csproj +++ b/src/Orchard.Web/Core/Orchard.Core.csproj @@ -61,6 +61,7 @@
+ @@ -122,7 +123,6 @@ - diff --git a/src/Orchard.Web/Core/Shapes/DateTimeShapes.cs b/src/Orchard.Web/Core/Shapes/DateTimeShapes.cs index fec71b1a7..7270d01fa 100644 --- a/src/Orchard.Web/Core/Shapes/DateTimeShapes.cs +++ b/src/Orchard.Web/Core/Shapes/DateTimeShapes.cs @@ -22,7 +22,7 @@ namespace Orchard.Core.Shapes { var time = _clock.UtcNow - dateTimeUtc; if (time.TotalDays > 7) - return Html.DateTime(dateTimeUtc, T("'on' MMM d yyyy 'at' h:mm tt")); + return Html.DateTime(dateTimeUtc.ToLocalTime(), T("'on' MMM d yyyy 'at' h:mm tt")); if (time.TotalHours > 24) return T.Plural("1 day ago", "{0} days ago", time.Days); if (time.TotalMinutes > 60) diff --git a/src/Orchard.Web/Modules/Orchard.ArchiveLater/Orchard.ArchiveLater.csproj b/src/Orchard.Web/Modules/Orchard.ArchiveLater/Orchard.ArchiveLater.csproj index 9456c9336..e14226ad4 100644 --- a/src/Orchard.Web/Modules/Orchard.ArchiveLater/Orchard.ArchiveLater.csproj +++ b/src/Orchard.Web/Modules/Orchard.ArchiveLater/Orchard.ArchiveLater.csproj @@ -60,7 +60,7 @@ - + diff --git a/src/Orchard.Web/Modules/Orchard.ArchiveLater/ResourceManifest.cs b/src/Orchard.Web/Modules/Orchard.ArchiveLater/ResourceManifest.cs index 301d84005..7e77ea2be 100644 --- a/src/Orchard.Web/Modules/Orchard.ArchiveLater/ResourceManifest.cs +++ b/src/Orchard.Web/Modules/Orchard.ArchiveLater/ResourceManifest.cs @@ -7,7 +7,7 @@ using Orchard.UI.Resources; namespace Orchard.ArchiveLater { public class ResourceManifest : IResourceManifestProvider { public void BuildManifests(ResourceManifestBuilder builder) { - builder.Add().DefineStyle("ArchiveLater_DatePicker").SetUrl("datetime.css"); + builder.Add().DefineStyle("ArchiveLater_DatePicker").SetUrl("orchard-archivelater-datetime.css"); } } } diff --git a/src/Orchard.Web/Modules/Orchard.ArchiveLater/Styles/datetime.css b/src/Orchard.Web/Modules/Orchard.ArchiveLater/Styles/orchard-archivelater-datetime.css similarity index 100% rename from src/Orchard.Web/Modules/Orchard.ArchiveLater/Styles/datetime.css rename to src/Orchard.Web/Modules/Orchard.ArchiveLater/Styles/orchard-archivelater-datetime.css 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.Blogs/Orchard.Blogs.csproj b/src/Orchard.Web/Modules/Orchard.Blogs/Orchard.Blogs.csproj index 4dc5a27ad..8f68e0986 100644 --- a/src/Orchard.Web/Modules/Orchard.Blogs/Orchard.Blogs.csproj +++ b/src/Orchard.Web/Modules/Orchard.Blogs/Orchard.Blogs.csproj @@ -103,9 +103,9 @@ - - - + + + diff --git a/src/Orchard.Web/Modules/Orchard.Blogs/ResourceManifest.cs b/src/Orchard.Web/Modules/Orchard.Blogs/ResourceManifest.cs index 7706fc4b5..45e350ac7 100644 --- a/src/Orchard.Web/Modules/Orchard.Blogs/ResourceManifest.cs +++ b/src/Orchard.Web/Modules/Orchard.Blogs/ResourceManifest.cs @@ -4,10 +4,10 @@ namespace Orchard.Blogs { public class ResourceManifest : IResourceManifestProvider { public void BuildManifests(ResourceManifestBuilder builder) { var manifest = builder.Add(); - manifest.DefineStyle("BlogsAdmin").SetUrl("admin.css"); - manifest.DefineStyle("BlogsArchives").SetUrl("archives.css"); + manifest.DefineStyle("BlogsAdmin").SetUrl("orchard-blogs-admin.css"); + manifest.DefineStyle("BlogsArchives").SetUrl("orchard-blogs-archives.css"); - manifest.DefineScript("BlogsArchives").SetUrl("archives.js").SetDependencies("jQuery"); + manifest.DefineScript("BlogsArchives").SetUrl("orchard-blogs-archives.js").SetDependencies("jQuery"); } } } diff --git a/src/Orchard.Web/Modules/Orchard.Blogs/Scripts/archives.js b/src/Orchard.Web/Modules/Orchard.Blogs/Scripts/orchard-blogs-archives.js similarity index 100% rename from src/Orchard.Web/Modules/Orchard.Blogs/Scripts/archives.js rename to src/Orchard.Web/Modules/Orchard.Blogs/Scripts/orchard-blogs-archives.js diff --git a/src/Orchard.Web/Modules/Orchard.Blogs/Styles/admin.css b/src/Orchard.Web/Modules/Orchard.Blogs/Styles/orchard-blogs-admin.css similarity index 100% rename from src/Orchard.Web/Modules/Orchard.Blogs/Styles/admin.css rename to src/Orchard.Web/Modules/Orchard.Blogs/Styles/orchard-blogs-admin.css diff --git a/src/Orchard.Web/Modules/Orchard.Blogs/Styles/archives.css b/src/Orchard.Web/Modules/Orchard.Blogs/Styles/orchard-blogs-archives.css similarity index 100% rename from src/Orchard.Web/Modules/Orchard.Blogs/Styles/archives.css rename to src/Orchard.Web/Modules/Orchard.Blogs/Styles/orchard-blogs-archives.css diff --git a/src/Orchard.Web/Modules/Orchard.CodeGeneration/CodeGenerationTemplates/ViewsWebConfig.txt b/src/Orchard.Web/Modules/Orchard.CodeGeneration/CodeGenerationTemplates/ViewsWebConfig.txt index 260e8318d..dd900f1a0 100644 --- a/src/Orchard.Web/Modules/Orchard.CodeGeneration/CodeGenerationTemplates/ViewsWebConfig.txt +++ b/src/Orchard.Web/Modules/Orchard.CodeGeneration/CodeGenerationTemplates/ViewsWebConfig.txt @@ -13,11 +13,11 @@ --> + pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" + pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" + userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> - + @@ -27,4 +27,12 @@ + + + + + + + + diff --git a/src/Orchard.Web/Modules/Orchard.Comments/Controllers/CommentController.cs b/src/Orchard.Web/Modules/Orchard.Comments/Controllers/CommentController.cs index a51b6994e..bf4e5e3ac 100644 --- a/src/Orchard.Web/Modules/Orchard.Comments/Controllers/CommentController.cs +++ b/src/Orchard.Web/Modules/Orchard.Comments/Controllers/CommentController.cs @@ -7,8 +7,6 @@ using Orchard.Comments.ViewModels; using Orchard.ContentManagement; using Orchard.Localization; using Orchard.UI.Notify; -using Orchard.Utility.Extensions; -using System.Text.RegularExpressions; namespace Orchard.Comments.Controllers { public class CommentController : Controller { @@ -33,16 +31,19 @@ namespace Orchard.Comments.Controllers { : Redirect("~/"); var viewModel = new CommentsCreateViewModel(); - - if (TryUpdateModel(viewModel)) { - var context = new CreateCommentContext { - Author = viewModel.Name, - CommentText = viewModel.CommentText, - Email = viewModel.Email, - SiteName = viewModel.SiteName, - CommentedOn = viewModel.CommentedOn - }; + TryUpdateModel(viewModel); + + var context = new CreateCommentContext { + Author = viewModel.Name, + CommentText = viewModel.CommentText, + Email = viewModel.Email, + SiteName = viewModel.SiteName, + CommentedOn = viewModel.CommentedOn + }; + + + if (ModelState.IsValid) { if (!String.IsNullOrEmpty(context.SiteName) && !context.SiteName.StartsWith("http://") && !context.SiteName.StartsWith("https://")) { context.SiteName = "http://" + context.SiteName; } @@ -58,6 +59,13 @@ namespace Orchard.Comments.Controllers { } } + if(!ModelState.IsValid) { + TempData["CreateCommentContext.Name"] = context.Author; + TempData["CreateCommentContext.CommentText"] = context.CommentText; + TempData["CreateCommentContext.Email"] = context.Email; + TempData["CreateCommentContext.SiteName"] = context.SiteName; + } + return !String.IsNullOrEmpty(returnUrl) ? Redirect(returnUrl) : Redirect("~/"); diff --git a/src/Orchard.Web/Modules/Orchard.Comments/Orchard.Comments.csproj b/src/Orchard.Web/Modules/Orchard.Comments/Orchard.Comments.csproj index 3c9a5da73..5e580fe26 100644 --- a/src/Orchard.Web/Modules/Orchard.Comments/Orchard.Comments.csproj +++ b/src/Orchard.Web/Modules/Orchard.Comments/Orchard.Comments.csproj @@ -65,6 +65,7 @@ + @@ -97,7 +98,7 @@ - + diff --git a/src/Orchard.Web/Modules/Orchard.Comments/ResourceManifest.cs b/src/Orchard.Web/Modules/Orchard.Comments/ResourceManifest.cs new file mode 100644 index 000000000..9424c9d3d --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.Comments/ResourceManifest.cs @@ -0,0 +1,10 @@ +using Orchard.UI.Resources; + +namespace Orchard.Comments { + public class ResourceManifest : IResourceManifestProvider { + public void BuildManifests(ResourceManifestBuilder builder) { + var manifest = builder.Add(); + manifest.DefineStyle("Admin").SetUrl("orchard-comments-admin.css"); + } + } +} diff --git a/src/Orchard.Web/Modules/Orchard.Comments/Styles/admin.css b/src/Orchard.Web/Modules/Orchard.Comments/Styles/orchard-comments-admin.css similarity index 100% rename from src/Orchard.Web/Modules/Orchard.Comments/Styles/admin.css rename to src/Orchard.Web/Modules/Orchard.Comments/Styles/orchard-comments-admin.css diff --git a/src/Orchard.Web/Modules/Orchard.Comments/Views/Admin/Edit.cshtml b/src/Orchard.Web/Modules/Orchard.Comments/Views/Admin/Edit.cshtml index d7cbc72b6..a0f5fb09c 100644 --- a/src/Orchard.Web/Modules/Orchard.Comments/Views/Admin/Edit.cshtml +++ b/src/Orchard.Web/Modules/Orchard.Comments/Views/Admin/Edit.cshtml @@ -11,7 +11,7 @@
- +
diff --git a/src/Orchard.Web/Modules/Orchard.Comments/Views/Admin/Index.cshtml b/src/Orchard.Web/Modules/Orchard.Comments/Views/Admin/Index.cshtml index fc9f235fb..aecc00f7c 100644 --- a/src/Orchard.Web/Modules/Orchard.Comments/Views/Admin/Index.cshtml +++ b/src/Orchard.Web/Modules/Orchard.Comments/Views/Admin/Index.cshtml @@ -4,7 +4,7 @@ @using Orchard.Mvc.Html; @using Orchard.Utility.Extensions; @{ - Style.Include("admin.css"); + Style.Require("Admin"); Script.Require("ShapesBase"); }

@Html.TitleForPage(T("Manage Comments").ToString())

diff --git a/src/Orchard.Web/Modules/Orchard.Comments/Views/Parts/Comments.cshtml b/src/Orchard.Web/Modules/Orchard.Comments/Views/Parts/Comments.cshtml index 01f280828..450b49d57 100644 --- a/src/Orchard.Web/Modules/Orchard.Comments/Views/Parts/Comments.cshtml +++ b/src/Orchard.Web/Modules/Orchard.Comments/Views/Parts/Comments.cshtml @@ -3,6 +3,14 @@ @using Orchard.Security; @using Orchard.Utility.Extensions; +@{ + var contextExists = TempData["CreateCommentContext.Name"] != null; + var name = Convert.ToString(TempData["CreateCommentContext.Name"]); + var commentText = Convert.ToString(TempData["CreateCommentContext.CommentText"]); + var email = Convert.ToString(TempData["CreateCommentContext.Email"]); + var siteName = Convert.ToString(TempData["CreateCommentContext.SiteName"]); +} + @if (Model.ContentPart.Comments.Count > 0) {

@T.Plural("1 Comment", "{0} Comments", (int)Model.ContentPart.Comments.Count)

@@ -30,15 +38,15 @@ using (Html.BeginForm("Create", "Comment", new { area = "Orchard.Comments" }, Fo
  1. - +
  2. - +
  3. - +
@@ -52,7 +60,7 @@ using (Html.BeginForm("Create", "Comment", new { area = "Orchard.Comments" }, Fo
  1. - +
  2. diff --git a/src/Orchard.Web/Modules/Orchard.ContentTypes/Orchard.ContentTypes.csproj b/src/Orchard.Web/Modules/Orchard.ContentTypes/Orchard.ContentTypes.csproj index bafffc9bc..b64a34b4e 100644 --- a/src/Orchard.Web/Modules/Orchard.ContentTypes/Orchard.ContentTypes.csproj +++ b/src/Orchard.Web/Modules/Orchard.ContentTypes/Orchard.ContentTypes.csproj @@ -71,7 +71,7 @@ - + diff --git a/src/Orchard.Web/Modules/Orchard.ContentTypes/ResourceManifest.cs b/src/Orchard.Web/Modules/Orchard.ContentTypes/ResourceManifest.cs index 5333fa530..e8e4ee9df 100644 --- a/src/Orchard.Web/Modules/Orchard.ContentTypes/ResourceManifest.cs +++ b/src/Orchard.Web/Modules/Orchard.ContentTypes/ResourceManifest.cs @@ -7,7 +7,7 @@ using Orchard.UI.Resources; namespace Orchard.ContentTypes { public class ResourceManifest : IResourceManifestProvider { public void BuildManifests(ResourceManifestBuilder builder) { - builder.Add().DefineStyle("ContentTypesAdmin").SetUrl("admin.css"); + builder.Add().DefineStyle("ContentTypesAdmin").SetUrl("orchard-contenttypes-admin.css"); } } } diff --git a/src/Orchard.Web/Modules/Orchard.ContentTypes/Styles/admin.css b/src/Orchard.Web/Modules/Orchard.ContentTypes/Styles/orchard-contenttypes-admin.css similarity index 100% rename from src/Orchard.Web/Modules/Orchard.ContentTypes/Styles/admin.css rename to src/Orchard.Web/Modules/Orchard.ContentTypes/Styles/orchard-contenttypes-admin.css diff --git a/src/Orchard.Web/Modules/Orchard.Localization/Orchard.Localization.csproj b/src/Orchard.Web/Modules/Orchard.Localization/Orchard.Localization.csproj index 9dab01502..cb841e072 100644 --- a/src/Orchard.Web/Modules/Orchard.Localization/Orchard.Localization.csproj +++ b/src/Orchard.Web/Modules/Orchard.Localization/Orchard.Localization.csproj @@ -61,8 +61,8 @@ - - + + diff --git a/src/Orchard.Web/Modules/Orchard.Localization/ResourceManifest.cs b/src/Orchard.Web/Modules/Orchard.Localization/ResourceManifest.cs index 3077f4e42..9782bf2d2 100644 --- a/src/Orchard.Web/Modules/Orchard.Localization/ResourceManifest.cs +++ b/src/Orchard.Web/Modules/Orchard.Localization/ResourceManifest.cs @@ -4,8 +4,8 @@ namespace Orchard.Localization { public class ResourceManifest : IResourceManifestProvider { public void BuildManifests(ResourceManifestBuilder builder) { var manifest = builder.Add(); - manifest.DefineStyle("Localization").SetUrl("base.css"); - manifest.DefineStyle("LocalizationAdmin").SetUrl("admin.css"); + manifest.DefineStyle("Localization").SetUrl("orchard-localization-base.css"); + manifest.DefineStyle("LocalizationAdmin").SetUrl("orchard-localization-admin.css"); } } } diff --git a/src/Orchard.Web/Modules/Orchard.Localization/Styles/admin.css b/src/Orchard.Web/Modules/Orchard.Localization/Styles/orchard-localization-admin.css similarity index 100% rename from src/Orchard.Web/Modules/Orchard.Localization/Styles/admin.css rename to src/Orchard.Web/Modules/Orchard.Localization/Styles/orchard-localization-admin.css diff --git a/src/Orchard.Web/Modules/Orchard.Localization/Styles/base.css b/src/Orchard.Web/Modules/Orchard.Localization/Styles/orchard-localization-base.css similarity index 100% rename from src/Orchard.Web/Modules/Orchard.Localization/Styles/base.css rename to src/Orchard.Web/Modules/Orchard.Localization/Styles/orchard-localization-base.css diff --git a/src/Orchard.Web/Modules/Orchard.Media/Orchard.Media.csproj b/src/Orchard.Web/Modules/Orchard.Media/Orchard.Media.csproj index 22c75db3e..10ef3e857 100644 --- a/src/Orchard.Web/Modules/Orchard.Media/Orchard.Media.csproj +++ b/src/Orchard.Web/Modules/Orchard.Media/Orchard.Media.csproj @@ -81,7 +81,7 @@ - + diff --git a/src/Orchard.Web/Modules/Orchard.Media/ResourceManifest.cs b/src/Orchard.Web/Modules/Orchard.Media/ResourceManifest.cs index dfd6a6009..ed339f5cd 100644 --- a/src/Orchard.Web/Modules/Orchard.Media/ResourceManifest.cs +++ b/src/Orchard.Web/Modules/Orchard.Media/ResourceManifest.cs @@ -1,11 +1,9 @@ -using Orchard.Localization; -using Orchard.UI.Navigation; -using Orchard.UI.Resources; +using Orchard.UI.Resources; namespace Orchard.Media { public class ResourceManifest : IResourceManifestProvider { public void BuildManifests(ResourceManifestBuilder builder) { - builder.Add().DefineStyle("MediaAdmin").SetUrl("admin.css"); + builder.Add().DefineStyle("MediaAdmin").SetUrl("orchard-media-admin.css"); } } } diff --git a/src/Orchard.Web/Modules/Orchard.Media/Styles/admin.css b/src/Orchard.Web/Modules/Orchard.Media/Styles/orchard-media-admin.css similarity index 100% rename from src/Orchard.Web/Modules/Orchard.Media/Styles/admin.css rename to src/Orchard.Web/Modules/Orchard.Media/Styles/orchard-media-admin.css diff --git a/src/Orchard.Web/Modules/Orchard.Modules/Orchard.Modules.csproj b/src/Orchard.Web/Modules/Orchard.Modules/Orchard.Modules.csproj index 0528748b2..300a2c7c4 100644 --- a/src/Orchard.Web/Modules/Orchard.Modules/Orchard.Modules.csproj +++ b/src/Orchard.Web/Modules/Orchard.Modules/Orchard.Modules.csproj @@ -83,7 +83,7 @@ - + diff --git a/src/Orchard.Web/Modules/Orchard.Modules/ResourceManifest.cs b/src/Orchard.Web/Modules/Orchard.Modules/ResourceManifest.cs index ef7366a20..ab12cf440 100644 --- a/src/Orchard.Web/Modules/Orchard.Modules/ResourceManifest.cs +++ b/src/Orchard.Web/Modules/Orchard.Modules/ResourceManifest.cs @@ -7,7 +7,7 @@ using Orchard.UI.Resources; namespace Orchard.Modules { public class ResourceManifest : IResourceManifestProvider { public void BuildManifests(ResourceManifestBuilder builder) { - builder.Add().DefineStyle("ModulesAdmin").SetUrl("admin.css"); + builder.Add().DefineStyle("ModulesAdmin").SetUrl("orchard-modules-admin.css"); } } } diff --git a/src/Orchard.Web/Modules/Orchard.Modules/styles/admin.css b/src/Orchard.Web/Modules/Orchard.Modules/styles/orchard-modules-admin.css similarity index 100% rename from src/Orchard.Web/Modules/Orchard.Modules/styles/admin.css rename to src/Orchard.Web/Modules/Orchard.Modules/styles/orchard-modules-admin.css diff --git a/src/Orchard.Web/Modules/Orchard.MultiTenancy/Orchard.MultiTenancy.csproj b/src/Orchard.Web/Modules/Orchard.MultiTenancy/Orchard.MultiTenancy.csproj index 0233f402b..350a06865 100644 --- a/src/Orchard.Web/Modules/Orchard.MultiTenancy/Orchard.MultiTenancy.csproj +++ b/src/Orchard.Web/Modules/Orchard.MultiTenancy/Orchard.MultiTenancy.csproj @@ -70,7 +70,7 @@ - + diff --git a/src/Orchard.Web/Modules/Orchard.MultiTenancy/ResourceManifest.cs b/src/Orchard.Web/Modules/Orchard.MultiTenancy/ResourceManifest.cs index 201577eef..110849e87 100644 --- a/src/Orchard.Web/Modules/Orchard.MultiTenancy/ResourceManifest.cs +++ b/src/Orchard.Web/Modules/Orchard.MultiTenancy/ResourceManifest.cs @@ -1,13 +1,9 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; using Orchard.UI.Resources; namespace Orchard.MultiTenancy { public class ResourceManifest : IResourceManifestProvider { public void BuildManifests(ResourceManifestBuilder builder) { - builder.Add().DefineStyle("MultiTenancyAdmin").SetUrl("admin.css"); + builder.Add().DefineStyle("MultiTenancyAdmin").SetUrl("orchard-multitenancy-admin.css"); } } } diff --git a/src/Orchard.Web/Modules/Orchard.MultiTenancy/Styles/admin.css b/src/Orchard.Web/Modules/Orchard.MultiTenancy/Styles/orchard-multitenancy-admin.css similarity index 100% rename from src/Orchard.Web/Modules/Orchard.MultiTenancy/Styles/admin.css rename to src/Orchard.Web/Modules/Orchard.MultiTenancy/Styles/orchard-multitenancy-admin.css diff --git a/src/Orchard.Web/Modules/Orchard.Packaging/Orchard.Packaging.csproj b/src/Orchard.Web/Modules/Orchard.Packaging/Orchard.Packaging.csproj index 0b508d971..0a74fabfd 100644 --- a/src/Orchard.Web/Modules/Orchard.Packaging/Orchard.Packaging.csproj +++ b/src/Orchard.Web/Modules/Orchard.Packaging/Orchard.Packaging.csproj @@ -87,7 +87,7 @@ - + diff --git a/src/Orchard.Web/Modules/Orchard.Packaging/ResourceManifest.cs b/src/Orchard.Web/Modules/Orchard.Packaging/ResourceManifest.cs index ba08efacc..f5d87113a 100644 --- a/src/Orchard.Web/Modules/Orchard.Packaging/ResourceManifest.cs +++ b/src/Orchard.Web/Modules/Orchard.Packaging/ResourceManifest.cs @@ -5,7 +5,7 @@ namespace Orchard.Packaging { [OrchardFeature("Gallery")] public class ResourceManifest : IResourceManifestProvider { public void BuildManifests(ResourceManifestBuilder builder) { - builder.Add().DefineStyle("PackagingAdmin").SetUrl("admin.css"); + builder.Add().DefineStyle("PackagingAdmin").SetUrl("orchard-packaging-admin.css"); } } } diff --git a/src/Orchard.Web/Modules/Orchard.Packaging/Styles/admin.css b/src/Orchard.Web/Modules/Orchard.Packaging/Styles/orchard-packaging-admin.css similarity index 100% rename from src/Orchard.Web/Modules/Orchard.Packaging/Styles/admin.css rename to src/Orchard.Web/Modules/Orchard.Packaging/Styles/orchard-packaging-admin.css diff --git a/src/Orchard.Web/Modules/Orchard.PublishLater/Orchard.PublishLater.csproj b/src/Orchard.Web/Modules/Orchard.PublishLater/Orchard.PublishLater.csproj index 4d655de45..c0bdc79e1 100644 --- a/src/Orchard.Web/Modules/Orchard.PublishLater/Orchard.PublishLater.csproj +++ b/src/Orchard.Web/Modules/Orchard.PublishLater/Orchard.PublishLater.csproj @@ -83,7 +83,7 @@ - + diff --git a/src/Orchard.Web/Modules/Orchard.PublishLater/ResourceManifest.cs b/src/Orchard.Web/Modules/Orchard.PublishLater/ResourceManifest.cs index 242fc9ae0..cc06556c5 100644 --- a/src/Orchard.Web/Modules/Orchard.PublishLater/ResourceManifest.cs +++ b/src/Orchard.Web/Modules/Orchard.PublishLater/ResourceManifest.cs @@ -7,7 +7,7 @@ using Orchard.UI.Resources; namespace Orchard.PublishLater { public class ResourceManifest : IResourceManifestProvider { public void BuildManifests(ResourceManifestBuilder builder) { - builder.Add().DefineStyle("PublishLater_DatePicker").SetUrl("datetime.css"); + builder.Add().DefineStyle("PublishLater_DatePicker").SetUrl("orchard-publishlater-datetime.css"); } } } diff --git a/src/Orchard.Web/Modules/Orchard.PublishLater/Styles/datetime.css b/src/Orchard.Web/Modules/Orchard.PublishLater/Styles/orchard-publishlater-datetime.css similarity index 100% rename from src/Orchard.Web/Modules/Orchard.PublishLater/Styles/datetime.css rename to src/Orchard.Web/Modules/Orchard.PublishLater/Styles/orchard-publishlater-datetime.css diff --git a/src/Orchard.Web/Modules/Orchard.PublishLater/ViewModels/PublishLaterViewModel.cs b/src/Orchard.Web/Modules/Orchard.PublishLater/ViewModels/PublishLaterViewModel.cs index 4c5392c16..8f1dccebe 100644 --- a/src/Orchard.Web/Modules/Orchard.PublishLater/ViewModels/PublishLaterViewModel.cs +++ b/src/Orchard.Web/Modules/Orchard.PublishLater/ViewModels/PublishLaterViewModel.cs @@ -1,6 +1,5 @@ using System; using Orchard.ContentManagement; -using Orchard.Core.Common.Models; using Orchard.PublishLater.Models; namespace Orchard.PublishLater.ViewModels { @@ -30,8 +29,6 @@ namespace Orchard.PublishLater.ViewModels { get { return IsPublished || ContentItem.ContentManager.Get(ContentItem.Id, VersionOptions.Published) != null; } } - public DateTime? VersionPublishedUtc { get { return ContentItem.As() == null ? null : ContentItem.As().VersionPublishedUtc; } } - public DateTime? ScheduledPublishUtc { get; set; } public string ScheduledPublishDate { get; set; } diff --git a/src/Orchard.Web/Modules/Orchard.PublishLater/Views/Parts/PublishLater.Metadata.Summary.cshtml b/src/Orchard.Web/Modules/Orchard.PublishLater/Views/Parts/PublishLater.Metadata.Summary.cshtml index 70ca3bf1c..fdd236839 100644 --- a/src/Orchard.Web/Modules/Orchard.PublishLater/Views/Parts/PublishLater.Metadata.Summary.cshtml +++ b/src/Orchard.Web/Modules/Orchard.PublishLater/Views/Parts/PublishLater.Metadata.Summary.cshtml @@ -3,8 +3,8 @@ @using Orchard.PublishLater.Models; @{ PublishLaterPart publishLaterPart = Model.ContentPart; - DateTime? versionPublishedUtc = publishLaterPart.As() == null ? null : publishLaterPart.As().VersionPublishedUtc; + DateTime? publishedUtc = publishLaterPart.As() == null ? null : publishLaterPart.As().PublishedUtc; } -@if (publishLaterPart.IsPublished() && versionPublishedUtc.HasValue) { - @T("Published: {0}", Display.DateTimeRelative(dateTimeUtc: versionPublishedUtc.Value)) @T(" | ") +@if (publishLaterPart.IsPublished() && publishedUtc.HasValue) { + @T("Published: {0}", Display.DateTimeRelative(dateTimeUtc: publishedUtc.Value)) @T(" | ") } \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.PublishLater/Views/Parts/PublishLater.Metadata.cshtml b/src/Orchard.Web/Modules/Orchard.PublishLater/Views/Parts/PublishLater.Metadata.cshtml index f6bf8ed1f..cc73c8d70 100644 --- a/src/Orchard.Web/Modules/Orchard.PublishLater/Views/Parts/PublishLater.Metadata.cshtml +++ b/src/Orchard.Web/Modules/Orchard.PublishLater/Views/Parts/PublishLater.Metadata.cshtml @@ -3,8 +3,8 @@ @using Orchard.PublishLater.Models; @{ PublishLaterPart publishLaterPart = Model.ContentPart; - DateTime? versionPublishedUtc = publishLaterPart.As() == null ? null : publishLaterPart.As().VersionPublishedUtc; + DateTime? publishedUtc = publishLaterPart.As() == null ? null : publishLaterPart.As().PublishedUtc; } -@if (publishLaterPart.IsPublished() && versionPublishedUtc.HasValue) { - @T("Published: {0}", Display.DateTimeRelative(dateTimeUtc: versionPublishedUtc.Value)) +@if (publishLaterPart.IsPublished() && publishedUtc.HasValue) { + @T("Published: {0}", Display.DateTimeRelative(dateTimeUtc: publishedUtc.Value)) } \ 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 de001d392..6974be751 100644 --- a/src/Orchard.Web/Modules/Orchard.Search/Orchard.Search.csproj +++ b/src/Orchard.Web/Modules/Orchard.Search/Orchard.Search.csproj @@ -70,8 +70,8 @@ - - + + diff --git a/src/Orchard.Web/Modules/Orchard.Search/ResourceManifest.cs b/src/Orchard.Web/Modules/Orchard.Search/ResourceManifest.cs index e3e081244..924c94164 100644 --- a/src/Orchard.Web/Modules/Orchard.Search/ResourceManifest.cs +++ b/src/Orchard.Web/Modules/Orchard.Search/ResourceManifest.cs @@ -7,8 +7,8 @@ using Orchard.UI.Resources; namespace Orchard.Search { public class ResourceManifest : IResourceManifestProvider { public void BuildManifests(ResourceManifestBuilder builder) { - builder.Add().DefineStyle("SearchAdmin").SetUrl("admin.css"); // todo: this does not appear to be used anywhere - builder.Add().DefineStyle("Search").SetUrl("search.css"); + builder.Add().DefineStyle("SearchAdmin").SetUrl("orchard-search-admin.css"); // todo: this does not appear to be used anywhere + builder.Add().DefineStyle("Search").SetUrl("orchard-search-search.css"); } } } diff --git a/src/Orchard.Web/Modules/Orchard.Search/Styles/admin.css b/src/Orchard.Web/Modules/Orchard.Search/Styles/orchard-search-admin.css similarity index 100% rename from src/Orchard.Web/Modules/Orchard.Search/Styles/admin.css rename to src/Orchard.Web/Modules/Orchard.Search/Styles/orchard-search-admin.css diff --git a/src/Orchard.Web/Modules/Orchard.Search/Styles/search.css b/src/Orchard.Web/Modules/Orchard.Search/Styles/orchard-search-search.css similarity index 100% rename from src/Orchard.Web/Modules/Orchard.Search/Styles/search.css rename to src/Orchard.Web/Modules/Orchard.Search/Styles/orchard-search-search.css diff --git a/src/Orchard.Web/Modules/Orchard.Tags/Orchard.Tags.csproj b/src/Orchard.Web/Modules/Orchard.Tags/Orchard.Tags.csproj index 2ac3ab8f5..e019d6461 100644 --- a/src/Orchard.Web/Modules/Orchard.Tags/Orchard.Tags.csproj +++ b/src/Orchard.Web/Modules/Orchard.Tags/Orchard.Tags.csproj @@ -77,7 +77,7 @@ - + diff --git a/src/Orchard.Web/Modules/Orchard.Tags/ResourceManifest.cs b/src/Orchard.Web/Modules/Orchard.Tags/ResourceManifest.cs index e09968be9..6c8a5907e 100644 --- a/src/Orchard.Web/Modules/Orchard.Tags/ResourceManifest.cs +++ b/src/Orchard.Web/Modules/Orchard.Tags/ResourceManifest.cs @@ -3,7 +3,7 @@ using Orchard.UI.Resources; namespace Orchard.Tags { public class ResourceManifest : IResourceManifestProvider { public void BuildManifests(ResourceManifestBuilder builder) { - builder.Add().DefineStyle("TagsAdmin").SetUrl("admin.css"); + builder.Add().DefineStyle("TagsAdmin").SetUrl("orchard-tags-admin.css"); } } } \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Tags/Styles/admin.css b/src/Orchard.Web/Modules/Orchard.Tags/Styles/orchard-tags-admin.css similarity index 100% rename from src/Orchard.Web/Modules/Orchard.Tags/Styles/admin.css rename to src/Orchard.Web/Modules/Orchard.Tags/Styles/orchard-tags-admin.css diff --git a/src/Orchard.Web/Modules/Orchard.Themes/Orchard.Themes.csproj b/src/Orchard.Web/Modules/Orchard.Themes/Orchard.Themes.csproj index 61fffbea7..7e66d29d1 100644 --- a/src/Orchard.Web/Modules/Orchard.Themes/Orchard.Themes.csproj +++ b/src/Orchard.Web/Modules/Orchard.Themes/Orchard.Themes.csproj @@ -69,7 +69,7 @@ - + diff --git a/src/Orchard.Web/Modules/Orchard.Themes/ResourceManifest.cs b/src/Orchard.Web/Modules/Orchard.Themes/ResourceManifest.cs index 884143c24..ca9e46c13 100644 --- a/src/Orchard.Web/Modules/Orchard.Themes/ResourceManifest.cs +++ b/src/Orchard.Web/Modules/Orchard.Themes/ResourceManifest.cs @@ -5,7 +5,7 @@ namespace Orchard.Themes { public class ResourceManifest : IResourceManifestProvider { public void BuildManifests(ResourceManifestBuilder builder) { var manifest = builder.Add(); - manifest.DefineStyle("ThemesAdmin").SetUrl("admin.css"); + manifest.DefineStyle("ThemesAdmin").SetUrl("orchard-themes-admin.css"); // todo: include and define the min.js version too // todo: move EasySlider to common location, although it does not appear to be used anywhere right now diff --git a/src/Orchard.Web/Modules/Orchard.Themes/Styles/admin.css b/src/Orchard.Web/Modules/Orchard.Themes/Styles/orchard-themes-admin.css similarity index 100% rename from src/Orchard.Web/Modules/Orchard.Themes/Styles/admin.css rename to src/Orchard.Web/Modules/Orchard.Themes/Styles/orchard-themes-admin.css 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.Web/Modules/Orchard.Widgets/Orchard.Widgets.csproj b/src/Orchard.Web/Modules/Orchard.Widgets/Orchard.Widgets.csproj index 19f798c0a..d01a15371 100644 --- a/src/Orchard.Web/Modules/Orchard.Widgets/Orchard.Widgets.csproj +++ b/src/Orchard.Web/Modules/Orchard.Widgets/Orchard.Widgets.csproj @@ -82,7 +82,7 @@ - + diff --git a/src/Orchard.Web/Modules/Orchard.Widgets/ResourceManifest.cs b/src/Orchard.Web/Modules/Orchard.Widgets/ResourceManifest.cs index 818280685..51724e692 100644 --- a/src/Orchard.Web/Modules/Orchard.Widgets/ResourceManifest.cs +++ b/src/Orchard.Web/Modules/Orchard.Widgets/ResourceManifest.cs @@ -3,7 +3,7 @@ namespace Orchard.Widgets { public class ResourceManifest : IResourceManifestProvider { public void BuildManifests(ResourceManifestBuilder builder) { - builder.Add().DefineStyle("WidgetsAdmin").SetUrl("admin.css"); + builder.Add().DefineStyle("WidgetsAdmin").SetUrl("orchard-widgets-admin.css"); } } } diff --git a/src/Orchard.Web/Modules/Orchard.Widgets/RuleEngine/UrlRuleProvider.cs b/src/Orchard.Web/Modules/Orchard.Widgets/RuleEngine/UrlRuleProvider.cs index 9f11ba7e9..b6fa22679 100644 --- a/src/Orchard.Web/Modules/Orchard.Widgets/RuleEngine/UrlRuleProvider.cs +++ b/src/Orchard.Web/Modules/Orchard.Widgets/RuleEngine/UrlRuleProvider.cs @@ -23,11 +23,17 @@ namespace Orchard.Widgets.RuleEngine { appPath = ""; url = string.Format("{0}/{1}", appPath, url); } - if (url != "/" && !url.Contains("?") && url.EndsWith("/")) + + if (!url.Contains("?")) url = url.TrimEnd('/'); + + var requestPath = context.Request.Path; + if (!requestPath.Contains("?")) + requestPath = requestPath.TrimEnd('/'); + ruleContext.Result = url.EndsWith("*") - ? context.Request.Path.ToUpperInvariant().StartsWith(url.TrimEnd('*').ToUpperInvariant()) - : context.Request.Path.ToUpperInvariant() == url.ToUpperInvariant(); + ? requestPath.StartsWith(url.TrimEnd('*'), StringComparison.OrdinalIgnoreCase) + : string.Equals(requestPath, url, StringComparison.OrdinalIgnoreCase); } } } \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Widgets/Styles/admin.css b/src/Orchard.Web/Modules/Orchard.Widgets/Styles/orchard-widgets-admin.css similarity index 100% rename from src/Orchard.Web/Modules/Orchard.Widgets/Styles/admin.css rename to src/Orchard.Web/Modules/Orchard.Widgets/Styles/orchard-widgets-admin.css diff --git a/src/Orchard/Commands/CommandHostEnvironment.cs b/src/Orchard/Commands/CommandHostEnvironment.cs index a37339ca9..0fc4c4ae8 100644 --- a/src/Orchard/Commands/CommandHostEnvironment.cs +++ b/src/Orchard/Commands/CommandHostEnvironment.cs @@ -1,35 +1,15 @@ -using System; -using System.Linq; -using System.Reflection; -using System.Web.Hosting; using Orchard.Environment; using Orchard.Localization; namespace Orchard.Commands { - internal class CommandHostEnvironment : IHostEnvironment { + internal class CommandHostEnvironment : HostEnvironment { public CommandHostEnvironment() { T = NullLocalizer.Instance; } public Localizer T { get; set; } - public bool IsFullTrust { - get { return AppDomain.CurrentDomain.IsFullyTrusted; } - } - - public string MapPath(string virtualPath) { - return HostingEnvironment.MapPath(virtualPath); - } - - public bool IsAssemblyLoaded(string name) { - return AppDomain.CurrentDomain.GetAssemblies().Any(assembly => new AssemblyName(assembly.FullName).Name == name); - } - - public void RestartAppDomain() { - ResetSiteCompilation(); - } - - public void ResetSiteCompilation() { + public override void ResetSiteCompilation() { throw new OrchardCommandHostRetryException(T("A change of configuration requires the session to be restarted.")); } } 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; } diff --git a/src/Orchard/Data/SessionFactoryHolder.cs b/src/Orchard/Data/SessionFactoryHolder.cs index 4f5c64bad..56f4038fa 100644 --- a/src/Orchard/Data/SessionFactoryHolder.cs +++ b/src/Orchard/Data/SessionFactoryHolder.cs @@ -5,6 +5,7 @@ using NHibernate; using NHibernate.Cfg; using Orchard.Data; using Orchard.Data.Providers; +using Orchard.Environment; using Orchard.Environment.Configuration; using Orchard.Environment.ShellBuilders.Models; using Orchard.FileSystems.AppData; @@ -21,6 +22,7 @@ namespace Orchard.Data { public class SessionFactoryHolder : ISessionFactoryHolder { private readonly ShellSettings _shellSettings; private readonly ShellBlueprint _shellBlueprint; + private readonly IHostEnvironment _hostEnvironment; private readonly IDataServicesProviderFactory _dataServicesProviderFactory; private readonly IAppDataFolder _appDataFolder; private readonly ISessionConfigurationCache _sessionConfigurationCache; @@ -33,12 +35,14 @@ namespace Orchard.Data { ShellBlueprint shellBlueprint, IDataServicesProviderFactory dataServicesProviderFactory, IAppDataFolder appDataFolder, - ISessionConfigurationCache sessionConfigurationCache) { + ISessionConfigurationCache sessionConfigurationCache, + IHostEnvironment hostEnvironment) { _shellSettings = shellSettings; _shellBlueprint = shellBlueprint; _dataServicesProviderFactory = dataServicesProviderFactory; _appDataFolder = appDataFolder; _sessionConfigurationCache = sessionConfigurationCache; + _hostEnvironment = hostEnvironment; T = NullLocalizer.Instance; Logger = NullLogger.Instance; @@ -68,7 +72,7 @@ namespace Orchard.Data { private ISessionFactory BuildSessionFactory() { Logger.Debug("Building session factory"); - if (!(AppDomain.CurrentDomain.IsHomogenous && AppDomain.CurrentDomain.IsFullyTrusted)) + if (!_hostEnvironment.IsFullTrust) NHibernate.Cfg.Environment.UseReflectionOptimizer = false; Configuration config = GetConfiguration(); diff --git a/src/Orchard/Environment/DefaultHostEnvironment.cs b/src/Orchard/Environment/DefaultHostEnvironment.cs index adb6421ee..2412341a9 100644 --- a/src/Orchard/Environment/DefaultHostEnvironment.cs +++ b/src/Orchard/Environment/DefaultHostEnvironment.cs @@ -1,16 +1,12 @@ -using System; -using System.IO; -using System.Linq; -using System.Reflection; +using System.IO; using System.Web; -using System.Web.Hosting; using Orchard.Mvc; using Orchard.Services; using Orchard.Utility.Extensions; namespace Orchard.Environment { - public class DefaultHostEnvironment : IHostEnvironment + public class DefaultHostEnvironment : HostEnvironment { private readonly IClock _clock; private readonly IHttpContextAccessor _httpContextAccessor; @@ -20,27 +16,7 @@ namespace Orchard.Environment _httpContextAccessor = httpContextAccessor; } - public bool IsFullTrust - { - get { return AppDomain.CurrentDomain.IsFullyTrusted; } - } - - public string MapPath(string virtualPath) - { - return HostingEnvironment.MapPath(virtualPath); - } - - public bool IsAssemblyLoaded(string name) - { - return AppDomain.CurrentDomain.GetAssemblies().Any(assembly => new AssemblyName(assembly.FullName).Name == name); - } - - public void RestartAppDomain() - { - ResetSiteCompilation(); - } - - public void ResetSiteCompilation() + public override void ResetSiteCompilation() { // Touch web.config File.SetLastWriteTimeUtc(MapPath("~/web.config"), _clock.UtcNow); diff --git a/src/Orchard/Environment/HostEnvironment.cs b/src/Orchard/Environment/HostEnvironment.cs new file mode 100644 index 000000000..7cc96ecc9 --- /dev/null +++ b/src/Orchard/Environment/HostEnvironment.cs @@ -0,0 +1,26 @@ +using System; +using System.Linq; +using System.Reflection; +using System.Web.Hosting; + +namespace Orchard.Environment { + public abstract class HostEnvironment : IHostEnvironment { + public bool IsFullTrust { + get { return AppDomain.CurrentDomain.IsHomogenous && AppDomain.CurrentDomain.IsFullyTrusted; } + } + + public string MapPath(string virtualPath) { + return HostingEnvironment.MapPath(virtualPath); + } + + public bool IsAssemblyLoaded(string name) { + return AppDomain.CurrentDomain.GetAssemblies().Any(assembly => new AssemblyName(assembly.FullName).Name == name); + } + + public void RestartAppDomain() { + ResetSiteCompilation(); + } + + public abstract void ResetSiteCompilation(); + } +} \ No newline at end of file diff --git a/src/Orchard/Logging/LoggingModule.cs b/src/Orchard/Logging/LoggingModule.cs index 93e70e1d8..9474c5671 100644 --- a/src/Orchard/Logging/LoggingModule.cs +++ b/src/Orchard/Logging/LoggingModule.cs @@ -2,11 +2,10 @@ using System.Collections.Generic; using System.Linq; using System.Reflection; -using System.Security; -using System.Security.Permissions; using Autofac; using Autofac.Core; using Castle.Core.Logging; +using Orchard.Environment; using Module = Autofac.Module; namespace Orchard.Logging { @@ -16,13 +15,15 @@ namespace Orchard.Logging { // by default, use Orchard's logger that delegates to Castle's logger factory moduleBuilder.RegisterType().As().InstancePerLifetimeScope(); - // Register logger type - if (AppDomain.CurrentDomain.IsHomogenous && AppDomain.CurrentDomain.IsFullyTrusted) { - moduleBuilder.RegisterType().As().InstancePerLifetimeScope(); - } else { - // if security model does not allow it, fall back to null logger factory - moduleBuilder.RegisterType().As().InstancePerLifetimeScope(); - } + moduleBuilder.Register(componentContext => { + IHostEnvironment host = componentContext.Resolve(); + if (host.IsFullTrust) + return new TraceLoggerFactory(); + return new NullLogFactory(); + }) + .As() + .InstancePerLifetimeScope(); + // call CreateLogger in response to the request for an ILogger implementation moduleBuilder.Register(CreateLogger).As().InstancePerDependency(); diff --git a/src/Orchard/Mvc/Html/HtmlHelperExtensions.cs b/src/Orchard/Mvc/Html/HtmlHelperExtensions.cs index 1e4c33459..55576b657 100644 --- a/src/Orchard/Mvc/Html/HtmlHelperExtensions.cs +++ b/src/Orchard/Mvc/Html/HtmlHelperExtensions.cs @@ -226,7 +226,7 @@ namespace Orchard.Mvc.Html { public static LocalizedString DateTime(this HtmlHelper htmlHelper, DateTime value) { //TODO: (erikpo) This default format should come from a site setting - return htmlHelper.DateTime(value, new LocalizedString("MMM d yyyy h:mm tt")); //todo: above comment and get rid of just wrapping this as a localized string + return htmlHelper.DateTime(value.ToLocalTime(), new LocalizedString("MMM d yyyy h:mm tt")); //todo: above comment and get rid of just wrapping this as a localized string } public static LocalizedString DateTime(this HtmlHelper htmlHelper, DateTime value, LocalizedString customFormat) { diff --git a/src/Orchard/Orchard.Framework.csproj b/src/Orchard/Orchard.Framework.csproj index f5635612a..a264d31e6 100644 --- a/src/Orchard/Orchard.Framework.csproj +++ b/src/Orchard/Orchard.Framework.csproj @@ -153,6 +153,7 @@ +