From 39ab96e05fb53cbff362b2b8abb5a3a343682d82 Mon Sep 17 00:00:00 2001 From: Renaud Paquay Date: Sun, 25 Jul 2010 12:16:16 -0700 Subject: [PATCH] Fix LiveWriter blog post creation We weren't setting the new "Path" property --HG-- branch : dev --- .../Core/Routable/Drivers/RoutePartDriver.cs | 21 ++------------- .../Core/Routable/Models/RoutePart.cs | 20 ++++++++++++++ .../Orchard.Blogs/Services/XmlRpcHandler.cs | 26 +++++++++++++++---- 3 files changed, 43 insertions(+), 24 deletions(-) diff --git a/src/Orchard.Web/Core/Routable/Drivers/RoutePartDriver.cs b/src/Orchard.Web/Core/Routable/Drivers/RoutePartDriver.cs index 506a6f439..3f938a911 100644 --- a/src/Orchard.Web/Core/Routable/Drivers/RoutePartDriver.cs +++ b/src/Orchard.Web/Core/Routable/Drivers/RoutePartDriver.cs @@ -43,17 +43,6 @@ namespace Orchard.Core.Routable.Drivers { return null; } - string GetContainerSlug(IContent item) { - var commonAspect = item.As(); - if (commonAspect != null && commonAspect.Container != null) { - var routable = commonAspect.Container.As(); - if (routable != null) { - return routable.Slug; - } - } - return null; - } - protected override DriverResult Editor(RoutePart part) { var model = new RoutableEditorViewModel { ContentType = part.ContentItem.ContentType, @@ -69,7 +58,7 @@ namespace Orchard.Core.Routable.Drivers { model.DisplayLeadingPath = path.Substring(0, path.Length - part.Slug.Length); } else { - var containerSlug = GetContainerSlug(part); + var containerSlug = part.GetContainerSlug(); model.DisplayLeadingPath = !string.IsNullOrWhiteSpace(containerSlug) ? string.Format("{0}/", containerSlug) : ""; @@ -88,13 +77,7 @@ namespace Orchard.Core.Routable.Drivers { part.Slug = model.Slug; // TEMP: path format patterns replaces this logic - var containerSlug = GetContainerSlug(part); - if (string.IsNullOrEmpty(containerSlug)) { - part.Path = model.Slug; - } - else { - part.Path = containerSlug + "/" + model.Slug; - } + part.Path = part.GetPathFromSlug(model.Slug); if (!_routableService.IsSlugValid(part.Slug)) { updater.AddModelError("Routable.Slug", T("Please do not use any of the following characters in your slugs: \"/\", \":\", \"?\", \"#\", \"[\", \"]\", \"@\", \"!\", \"$\", \"&\", \"'\", \"(\", \")\", \"*\", \"+\", \",\", \";\", \"=\". No spaces are allowed (please use dashes or underscores instead).")); diff --git a/src/Orchard.Web/Core/Routable/Models/RoutePart.cs b/src/Orchard.Web/Core/Routable/Models/RoutePart.cs index 8896ff02b..dfda3e744 100644 --- a/src/Orchard.Web/Core/Routable/Models/RoutePart.cs +++ b/src/Orchard.Web/Core/Routable/Models/RoutePart.cs @@ -17,5 +17,25 @@ namespace Orchard.Core.Routable.Models { get { return Record.Path; } set { Record.Path = value; } } + + public string GetContainerSlug() { + var commonAspect = this.As(); + if (commonAspect != null && commonAspect.Container != null) { + var routable = commonAspect.Container.As(); + if (routable != null) { + return routable.Slug; + } + } + return null; + } + + public string GetPathFromSlug(string slug) { + // TEMP: path format patterns replaces this logic + var containerSlug = GetContainerSlug(); + if (string.IsNullOrEmpty(containerSlug)) { + return slug; + } + return containerSlug + "/" + slug; + } } } \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Blogs/Services/XmlRpcHandler.cs b/src/Orchard.Web/Modules/Orchard.Blogs/Services/XmlRpcHandler.cs index 8f68a81e1..00c9b3e68 100644 --- a/src/Orchard.Web/Modules/Orchard.Blogs/Services/XmlRpcHandler.cs +++ b/src/Orchard.Web/Modules/Orchard.Blogs/Services/XmlRpcHandler.cs @@ -6,6 +6,9 @@ using JetBrains.Annotations; using Orchard.Blogs.Drivers; using Orchard.Blogs.Models; using Orchard.ContentManagement; +using Orchard.ContentManagement.Aspects; +using Orchard.Core.Common.Models; +using Orchard.Core.Routable.Models; using Orchard.Core.XmlRpc; using Orchard.Core.XmlRpc.Models; using Orchard.Environment.Extensions; @@ -160,11 +163,24 @@ namespace Orchard.Blogs.Services { var slug = content.Optional("wp_slug"); var blogPost = _contentManager.New(BlogPostPartDriver.ContentType.Name); - blogPost.BlogPart = blog; - blogPost.Title = title; - blogPost.Slug = slug; - blogPost.Text = description; - blogPost.Creator = user; + + // BodyPart + if (blogPost.Is()) { + blogPost.As().Text = description; + } + + //RoutePart + if (blogPost.Is()) { + blogPost.As().Title = title; + blogPost.As().Slug = slug; + blogPost.As().Path = blogPost.As().GetPathFromSlug(slug); + } + + //CommonPart + if (blogPost.Is()) { + blogPost.As().Owner = user; + blogPost.As().Container = blog; + } _contentManager.Create(blogPost.ContentItem, VersionOptions.Draft);