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
This commit is contained in:
Louis DeJardin
2010-10-11 11:24:55 -07:00
parent 7515f955fa
commit 7021670529
4 changed files with 34 additions and 13 deletions

View File

@@ -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")

View File

@@ -139,6 +139,9 @@
<Content Include="Themes\TheThemeMachine\Styles\site.css" />
<Content Include="Themes\TheThemeMachine\Theme.png" />
<Content Include="Themes\TheThemeMachine\Theme.txt" />
<None Include="Themes\Classic\Views\Menu-Main.cshtml">
<SubType>Designer</SubType>
</None>
<None Include="Themes\Classic\Views\Zone-Navigation.cshtml" />
<None Include="Themes\TheThemeMachine\Views\TempFeatured.cshtml">
<SubType>Designer</SubType>

View File

@@ -0,0 +1,10 @@
@{
// Model is Model.Menu from the layout (Layout.Menu)
var tag = Tag(Model, "ul");
}
<nav>2
[@tag.StartElement
@* see MenuItem shape template *@
@DisplayChildren(Model)
@tag.EndElement]
</nav>

View File

@@ -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);