From 9b67b6e165f4b58796fc763c06ba23b5e5c634b5 Mon Sep 17 00:00:00 2001 From: Louis DeJardin Date: Fri, 8 Oct 2010 18:29:11 -0700 Subject: [PATCH] Implementing a some fundamental alternate binding names for core shapes --HG-- branch : dev --- src/Orchard.Web/Core/Shapes/CoreShapes.cs | 41 ++++++++++--------- src/Orchard.Web/Orchard.Web.csproj | 1 + .../Descriptors/ShapeAlterationBuilder.cs | 2 +- .../Shapes/ITagBuilderFactory.cs | 10 ++--- src/Orchard/Mvc/IOrchardViewPage.cs | 4 ++ .../Mvc/ViewEngines/Razor/WebViewPage.cs | 2 +- src/Orchard/Mvc/ViewPage.cs | 2 +- src/Orchard/Mvc/ViewUserControl.cs | 2 +- 8 files changed, 35 insertions(+), 29 deletions(-) diff --git a/src/Orchard.Web/Core/Shapes/CoreShapes.cs b/src/Orchard.Web/Core/Shapes/CoreShapes.cs index 20b83ac46..48fb77dea 100644 --- a/src/Orchard.Web/Core/Shapes/CoreShapes.cs +++ b/src/Orchard.Web/Core/Shapes/CoreShapes.cs @@ -1,5 +1,4 @@ using System; -using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.Globalization; @@ -11,7 +10,7 @@ using System.Web.Mvc.Html; using Orchard.DisplayManagement; using Orchard.DisplayManagement.Descriptors; using Orchard.DisplayManagement.Implementation; -using Orchard.Mvc.ViewEngines; +using Orchard.DisplayManagement.Shapes; using Orchard.Settings; using Orchard.UI; using Orchard.UI.Resources; @@ -48,13 +47,15 @@ namespace Orchard.Core.Shapes { // 'Zone' shapes are built on the Zone base class builder.Describe("Zone") - .OnCreating(creating => creating.BaseType = typeof (Zone)); - //.OnDisplaying(displaying => { - // var name = displaying.Shape.ZoneName.ToLower(); - // var zone = displaying.Shape; - // zone.Classes.Add("zone-" + name); - // zone.Classes.Add("zone"); - // }); + .OnCreating(creating => creating.BaseType = typeof(Zone)) + .OnDisplaying(displaying => { + var zone = displaying.Shape; + ShapeMetadata zoneMetadata = zone.Metadata; + String name = zone.ZoneName; + zone.Classes.Add("zone-" + name.ToLower()); + zone.Classes.Add("zone"); + zoneMetadata.Alternates.Add("Zone__" + name); + }); //builder.Describe("menu") // .OnDisplaying(displaying => { @@ -126,15 +127,15 @@ namespace Orchard.Core.Shapes { var progress = 1; var flatPositionComparer = new FlatPositionComparer(); var ordering = unordered.Select(item => { - var position = (item == null || item.GetType().GetProperty("Metadata") == null || item.Metadata.GetType().GetProperty("Position") == null) - ? null - : item.Metadata.Position; - return new {item, position}; - }).ToList(); + var position = (item == null || item.GetType().GetProperty("Metadata") == null || item.Metadata.GetType().GetProperty("Position") == null) + ? null + : item.Metadata.Position; + return new { item, position }; + }).ToList(); // since this isn't sticking around (hence, the "hack" in the name), throwing (in) a gnome while (i < ordering.Count()) { - if (flatPositionComparer.Compare(ordering[i].position, ordering[i-1].position) > -1) { + if (flatPositionComparer.Compare(ordering[i].position, ordering[i - 1].position) > -1) { if (i == progress) progress = ++i; else @@ -142,8 +143,8 @@ namespace Orchard.Core.Shapes { } else { var higherThanItShouldBe = ordering[i]; - ordering[i] = ordering[i-1]; - ordering[i-1] = higherThanItShouldBe; + ordering[i] = ordering[i - 1]; + ordering[i - 1] = higherThanItShouldBe; if (i > 1) --i; } @@ -161,8 +162,8 @@ namespace Orchard.Core.Shapes { x = string.IsNullOrWhiteSpace(x) ? "5" : x.TrimStart(':'); // ':' is _sometimes_ used as a partition identifier y = string.IsNullOrWhiteSpace(y) ? "5" : y.TrimStart(':'); - var xParts = x.Split(new[] {'.'}, StringSplitOptions.RemoveEmptyEntries); - var yParts = y.Split(new[] {'.'}, StringSplitOptions.RemoveEmptyEntries); + var xParts = x.Split(new[] { '.' }, StringSplitOptions.RemoveEmptyEntries); + var yParts = y.Split(new[] { '.' }, StringSplitOptions.RemoveEmptyEntries); for (var i = 0; i < xParts.Count(); i++) { if (yParts.Length < i - 1) // x is further defined meaning it comes after y (e.g. x == 1.2.3 and y == 1.2) return 1; @@ -251,7 +252,7 @@ namespace Orchard.Core.Shapes { private static void WriteResources(HtmlHelper html, ISite site, IResourceManager rm, string resourceType, ResourceLocation? includeLocation, ResourceLocation? excludeLocation) { bool debugMode; - switch(site.ResourceDebugMode) { + switch (site.ResourceDebugMode) { case ResourceDebugMode.Enabled: debugMode = true; break; diff --git a/src/Orchard.Web/Orchard.Web.csproj b/src/Orchard.Web/Orchard.Web.csproj index 3aa0d79b6..a3cecea6f 100644 --- a/src/Orchard.Web/Orchard.Web.csproj +++ b/src/Orchard.Web/Orchard.Web.csproj @@ -139,6 +139,7 @@ + Designer diff --git a/src/Orchard/DisplayManagement/Descriptors/ShapeAlterationBuilder.cs b/src/Orchard/DisplayManagement/Descriptors/ShapeAlterationBuilder.cs index e62d79409..312d469d0 100644 --- a/src/Orchard/DisplayManagement/Descriptors/ShapeAlterationBuilder.cs +++ b/src/Orchard/DisplayManagement/Descriptors/ShapeAlterationBuilder.cs @@ -55,7 +55,7 @@ namespace Orchard.DisplayManagement.Descriptors { return target(displayContext); } }; - descriptor.Bindings[_shapeType] = binding; + descriptor.Bindings[_bindingName] = binding; }); } diff --git a/src/Orchard/DisplayManagement/Shapes/ITagBuilderFactory.cs b/src/Orchard/DisplayManagement/Shapes/ITagBuilderFactory.cs index f7aa79039..aa8e246db 100644 --- a/src/Orchard/DisplayManagement/Shapes/ITagBuilderFactory.cs +++ b/src/Orchard/DisplayManagement/Shapes/ITagBuilderFactory.cs @@ -7,19 +7,19 @@ using System.Web.Mvc; namespace Orchard.DisplayManagement.Shapes { public interface ITagBuilderFactory : IDependency { - TagBuilder Create(dynamic shape, string tagName); + OrchardTagBuilder Create(dynamic shape, string tagName); } - public class TagBuilder : System.Web.Mvc.TagBuilder { - public TagBuilder(string tagName) : base(tagName) { } + public class OrchardTagBuilder : TagBuilder { + public OrchardTagBuilder(string tagName) : base(tagName) { } public IHtmlString StartElement { get { return new HtmlString(ToString(TagRenderMode.StartTag)); } } public IHtmlString EndElement { get { return new HtmlString(ToString(TagRenderMode.EndTag)); } } } public class TagBuilderFactory : ITagBuilderFactory { - public TagBuilder Create(dynamic shape, string tagName) { - var tagBuilder = new TagBuilder(tagName); + public OrchardTagBuilder Create(dynamic shape, string tagName) { + var tagBuilder = new OrchardTagBuilder(tagName); tagBuilder.MergeAttributes(shape.Attributes, false); foreach (var cssClass in shape.Classes ?? Enumerable.Empty()) tagBuilder.AddCssClass(cssClass); diff --git a/src/Orchard/Mvc/IOrchardViewPage.cs b/src/Orchard/Mvc/IOrchardViewPage.cs index 21ba416d6..e9f0db1c4 100644 --- a/src/Orchard/Mvc/IOrchardViewPage.cs +++ b/src/Orchard/Mvc/IOrchardViewPage.cs @@ -1,5 +1,6 @@ using System; using System.Web; +using Orchard.DisplayManagement.Shapes; using Orchard.Localization; using Orchard.UI.Resources; @@ -22,5 +23,8 @@ namespace Orchard.Mvc { void SetMeta(MetaEntry meta); void AppendMeta(string name, string content, string contentSeparator); void AppendMeta(MetaEntry meta, string contentSeparator); + + bool HasText(object thing); + OrchardTagBuilder Tag(dynamic shape, string tagName); } } diff --git a/src/Orchard/Mvc/ViewEngines/Razor/WebViewPage.cs b/src/Orchard/Mvc/ViewEngines/Razor/WebViewPage.cs index 2224225c2..beef92c55 100644 --- a/src/Orchard/Mvc/ViewEngines/Razor/WebViewPage.cs +++ b/src/Orchard/Mvc/ViewEngines/Razor/WebViewPage.cs @@ -90,7 +90,7 @@ namespace Orchard.Mvc.ViewEngines.Razor { return !string.IsNullOrWhiteSpace(thing as string); } - public TagBuilder Tag(dynamic shape, string tagName) { + public OrchardTagBuilder Tag(dynamic shape, string tagName) { return Html.Resolve().Create(shape, tagName); } diff --git a/src/Orchard/Mvc/ViewPage.cs b/src/Orchard/Mvc/ViewPage.cs index 1c29ffdea..89cf799d2 100644 --- a/src/Orchard/Mvc/ViewPage.cs +++ b/src/Orchard/Mvc/ViewPage.cs @@ -91,7 +91,7 @@ namespace Orchard.Mvc { return !string.IsNullOrWhiteSpace(thing as string); } - public TagBuilder Tag(dynamic shape, string tagName) { + public OrchardTagBuilder Tag(dynamic shape, string tagName) { return Html.Resolve().Create(shape, tagName); } diff --git a/src/Orchard/Mvc/ViewUserControl.cs b/src/Orchard/Mvc/ViewUserControl.cs index 1d7f475dd..57cc8aee4 100644 --- a/src/Orchard/Mvc/ViewUserControl.cs +++ b/src/Orchard/Mvc/ViewUserControl.cs @@ -92,7 +92,7 @@ namespace Orchard.Mvc { return !string.IsNullOrWhiteSpace(thing as string); } - public TagBuilder Tag(dynamic shape, string tagName) { + public OrchardTagBuilder Tag(dynamic shape, string tagName) { return Html.Resolve().Create(shape, tagName); }