From 702167052900ed08e43015027f000f72bd804661 Mon Sep 17 00:00:00 2001 From: Louis DeJardin Date: Mon, 11 Oct 2010 11:24:55 -0700 Subject: [PATCH] Adding specializations for additional core shapes MenuItem now has Parent and Menu back-pointer properties Menu-{name} and MenuItem-{name} templates are added as specializations --HG-- branch : dev --- src/Orchard.Web/Core/Shapes/CoreShapes.cs | 30 +++++++++++-------- src/Orchard.Web/Orchard.Web.csproj | 3 ++ .../Themes/Classic/Views/Menu-Main.cshtml | 10 +++++++ src/Orchard/UI/Navigation/MenuFilter.cs | 4 ++- 4 files changed, 34 insertions(+), 13 deletions(-) create mode 100644 src/Orchard.Web/Themes/Classic/Views/Menu-Main.cshtml diff --git a/src/Orchard.Web/Core/Shapes/CoreShapes.cs b/src/Orchard.Web/Core/Shapes/CoreShapes.cs index 48fb77dea..842e8a0d3 100644 --- a/src/Orchard.Web/Core/Shapes/CoreShapes.cs +++ b/src/Orchard.Web/Core/Shapes/CoreShapes.cs @@ -46,24 +46,30 @@ namespace Orchard.Core.Shapes { }); // 'Zone' shapes are built on the Zone base class + // They have class="zone zone-{name}" + // and the template can be specialized with "Zone-{Name}" base file name builder.Describe("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()); + var zone = displaying.Shape; + zone.Classes.Add("zone-" + zone.ZoneName.ToLower()); zone.Classes.Add("zone"); - zoneMetadata.Alternates.Add("Zone__" + name); + zone.Metadata.Alternates.Add("Zone__" + zone.ZoneName); }); - //builder.Describe("menu") - // .OnDisplaying(displaying => { - // var name = displaying.Shape.MenuName.ToLower(); - // var menu = displaying.Shape; - // menu.Classes.Add("menu-" + name); - // menu.Classes.Add("menu"); - // }); + builder.Describe("Menu") + .OnDisplaying(displaying => { + var menu = displaying.Shape; + menu.Classes.Add("menu-" + menu.MenuName.ToLower()); + menu.Classes.Add("menu"); + menu.Metadata.Alternates.Add("Menu__" + menu.MenuName); + }); + + builder.Describe("MenuItem") + .OnDisplaying(displaying => { + var menu = displaying.Shape.Menu; + menu.Metadata.Alternates.Add("MenuItem__" + menu.MenuName); + }); // 'List' shapes start with several empty collections builder.Describe("List") diff --git a/src/Orchard.Web/Orchard.Web.csproj b/src/Orchard.Web/Orchard.Web.csproj index a3cecea6f..ae8254a61 100644 --- a/src/Orchard.Web/Orchard.Web.csproj +++ b/src/Orchard.Web/Orchard.Web.csproj @@ -139,6 +139,9 @@ + + Designer + Designer diff --git a/src/Orchard.Web/Themes/Classic/Views/Menu-Main.cshtml b/src/Orchard.Web/Themes/Classic/Views/Menu-Main.cshtml new file mode 100644 index 000000000..852c255cd --- /dev/null +++ b/src/Orchard.Web/Themes/Classic/Views/Menu-Main.cshtml @@ -0,0 +1,10 @@ +@{ + // Model is Model.Menu from the layout (Layout.Menu) + var tag = Tag(Model, "ul"); +} + \ No newline at end of file diff --git a/src/Orchard/UI/Navigation/MenuFilter.cs b/src/Orchard/UI/Navigation/MenuFilter.cs index d6fba640d..9c2887910 100644 --- a/src/Orchard/UI/Navigation/MenuFilter.cs +++ b/src/Orchard/UI/Navigation/MenuFilter.cs @@ -39,7 +39,9 @@ namespace Orchard.UI.Navigation { .Text(menuItem.Text) .Href(menuItem.Href) .RouteValues(menuItem.RouteValues) - .Item(menuItem); + .Item(menuItem) + .Menu(shape) + .Parent(parentShape); if (menuItem.Items != null && menuItem.Items.Any()) { PopulateMenu(shape, menuItemShape, menuItem.Items);