Fixing some issues that showed up in testing

Built-in zones need to be created with names
Binding and shape dictionary is now compare-ordinal-case-insensive
ZoneName is quirky - because it is an actual property some of the inline assignment mechanisms don't work as expected.
Main content area is salmon

--HG--
branch : dev
This commit is contained in:
Louis DeJardin
2010-10-11 11:52:38 -07:00
parent 7021670529
commit 117a613715
7 changed files with 48 additions and 23 deletions

View File

@@ -18,8 +18,8 @@ namespace Orchard.Tests.DisplayManagement {
protected override void Register(Autofac.ContainerBuilder builder) { protected override void Register(Autofac.ContainerBuilder builder) {
_defaultShapeTable = new ShapeTable { _defaultShapeTable = new ShapeTable {
Descriptors = new Dictionary<string, ShapeDescriptor>(), Descriptors = new Dictionary<string, ShapeDescriptor>(StringComparer.OrdinalIgnoreCase),
Bindings = new Dictionary<string, ShapeBinding>() Bindings = new Dictionary<string, ShapeBinding>(StringComparer.OrdinalIgnoreCase)
}; };
_workContext = new TestWorkContext { _workContext = new TestWorkContext {
CurrentTheme = new Theme { ThemeName = "Hello" } CurrentTheme = new Theme { ThemeName = "Hello" }
@@ -322,5 +322,26 @@ namespace Orchard.Tests.DisplayManagement {
Assert.That(resultNormally.ToString(), Is.EqualTo("alpha")); Assert.That(resultNormally.ToString(), Is.EqualTo("alpha"));
Assert.That(resultWithOverride.ToString(), Is.EqualTo("beta")); Assert.That(resultWithOverride.ToString(), Is.EqualTo("beta"));
} }
[Test]
public void ShapeTypeAndBindingNamesAreNotCaseSensitive() {
var displayManager = _container.Resolve<IDisplayManager>();
var shapeFoo = new Shape {
Metadata = new ShapeMetadata {
Type = "foo"
}
};
var descriptorFoo = new ShapeDescriptor {
ShapeType = "Foo",
};
AddBinding(descriptorFoo, "Foo", ctx => new HtmlString("alpha"));
AddShapeDescriptor(descriptorFoo);
var result = displayManager.Execute(CreateDisplayContext(shapeFoo));
Assert.That(result.ToString(), Is.EqualTo("alpha"));
}
} }
} }

View File

@@ -36,12 +36,14 @@ namespace Orchard.Core.Shapes {
.OnCreating(creating => creating.Behaviors.Add(new ZoneHoldingBehavior(name => CreateZone(creating, name)))) .OnCreating(creating => creating.Behaviors.Add(new ZoneHoldingBehavior(name => CreateZone(creating, name))))
.OnCreated(created => { .OnCreated(created => {
var layout = created.Shape; var layout = created.Shape;
layout.Head = created.New.DocumentZone(); layout.Head = created.New.DocumentZone(ZoneName: "Head");
layout.Body = created.New.DocumentZone(); layout.Body = created.New.DocumentZone(ZoneName: "Body");
layout.Tail = created.New.DocumentZone(); layout.Tail = created.New.DocumentZone(ZoneName: "Tail");
layout.Content = created.New.Zone();
layout.Body.Add(created.New.PlaceChildContent(Source: layout)); layout.Body.Add(created.New.PlaceChildContent(Source: layout));
layout.Content = created.New.Zone();
layout.Content.ZoneName = "Content";
layout.Content.Add(created.New.PlaceChildContent(Source: layout)); layout.Content.Add(created.New.PlaceChildContent(Source: layout));
}); });
@@ -51,7 +53,7 @@ namespace Orchard.Core.Shapes {
builder.Describe("Zone") builder.Describe("Zone")
.OnCreating(creating => creating.BaseType = typeof(Zone)) .OnCreating(creating => creating.BaseType = typeof(Zone))
.OnDisplaying(displaying => { .OnDisplaying(displaying => {
var zone = displaying.Shape; var zone = displaying.Shape;
zone.Classes.Add("zone-" + zone.ZoneName.ToLower()); zone.Classes.Add("zone-" + zone.ZoneName.ToLower());
zone.Classes.Add("zone"); zone.Classes.Add("zone");
zone.Metadata.Alternates.Add("Zone__" + zone.ZoneName); zone.Metadata.Alternates.Add("Zone__" + zone.ZoneName);
@@ -67,8 +69,9 @@ namespace Orchard.Core.Shapes {
builder.Describe("MenuItem") builder.Describe("MenuItem")
.OnDisplaying(displaying => { .OnDisplaying(displaying => {
var menu = displaying.Shape.Menu; var menuItem = displaying.Shape;
menu.Metadata.Alternates.Add("MenuItem__" + menu.MenuName); var menu = menuItem.Menu;
menuItem.Metadata.Alternates.Add("MenuItem__" + menu.MenuName);
}); });
// 'List' shapes start with several empty collections // 'List' shapes start with several empty collections

View File

@@ -142,7 +142,7 @@
<None Include="Themes\Classic\Views\Menu-Main.cshtml"> <None Include="Themes\Classic\Views\Menu-Main.cshtml">
<SubType>Designer</SubType> <SubType>Designer</SubType>
</None> </None>
<None Include="Themes\Classic\Views\Zone-Navigation.cshtml" /> <None Include="Themes\Classic\Views\Zone-Content.cshtml" />
<None Include="Themes\TheThemeMachine\Views\TempFeatured.cshtml"> <None Include="Themes\TheThemeMachine\Views\TempFeatured.cshtml">
<SubType>Designer</SubType> <SubType>Designer</SubType>
</None> </None>

View File

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

View File

@@ -0,0 +1,7 @@
@{
Model.Attributes.Add("style", "background:salmon;");
var tag = Tag(Model, "div");
}
@tag.StartElement
@DisplayChildren(Model)
@tag.EndElement

View File

@@ -1,6 +0,0 @@
@{
var tag = Tag(Model, "div");
}
@tag.StartElement
@DisplayChildren(Model)
@tag.EndElement

View File

@@ -32,7 +32,7 @@ namespace Orchard.DisplayManagement.Descriptors {
var alterations = builderFactory.BuildAlterations() var alterations = builderFactory.BuildAlterations()
.Where(alteration => IsModuleOrRequestedTheme(alteration, themeName)); .Where(alteration => IsModuleOrRequestedTheme(alteration, themeName));
var descriptors = alterations.GroupBy(alteration => alteration.ShapeType) var descriptors = alterations.GroupBy(alteration => alteration.ShapeType, StringComparer.OrdinalIgnoreCase)
.Select(group => group.Aggregate( .Select(group => group.Aggregate(
new ShapeDescriptor { ShapeType = group.Key }, new ShapeDescriptor { ShapeType = group.Key },
(descriptor, alteration) => { (descriptor, alteration) => {
@@ -41,8 +41,8 @@ namespace Orchard.DisplayManagement.Descriptors {
})); }));
return new ShapeTable { return new ShapeTable {
Descriptors = descriptors.ToDictionary(sd => sd.ShapeType), Descriptors = descriptors.ToDictionary(sd => sd.ShapeType, StringComparer.OrdinalIgnoreCase),
Bindings = descriptors.SelectMany(sd => sd.Bindings).ToDictionary(kv => kv.Key, kv => kv.Value), Bindings = descriptors.SelectMany(sd => sd.Bindings).ToDictionary(kv => kv.Key, kv => kv.Value, StringComparer.OrdinalIgnoreCase),
}; };
}); });
} }