Incremental work on shape templates.

This commit is contained in:
Daniel Stolt
2016-02-27 22:19:02 +01:00
parent 1553c443a4
commit 775ff6c55e
12 changed files with 114 additions and 6 deletions

View File

@@ -215,6 +215,27 @@
<ItemGroup>
<Content Include="Assets\Lib\Bootstrap\Scss\bootstrap-canopy.scss" />
</ItemGroup>
<ItemGroup>
<Content Include="Views\Elements\Column.cshtml" />
<Content Include="Views\Elements\Grid.cshtml" />
<Content Include="Views\Elements\Row.cshtml" />
<Content Include="Views\Elements\Shape.cshtml" />
</ItemGroup>
<ItemGroup>
<Content Include="Views\Zone.cshtml" />
</ItemGroup>
<ItemGroup>
<Content Include="Views\Menu.cshtml" />
</ItemGroup>
<ItemGroup>
<Content Include="Views\MenuItem.cshtml" />
</ItemGroup>
<ItemGroup>
<Content Include="Views\MenuItemLink.cshtml" />
</ItemGroup>
<ItemGroup>
<Content Include="Views\Widget.Wrapper.cshtml" />
</ItemGroup>
<PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>

View File

@@ -10,8 +10,8 @@
<head>
<title>@Html.Title(title, siteName)</title>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
@Display(Model.Head)
</head>
<body>

View File

@@ -0,0 +1,17 @@
@using Orchard.DisplayManagement.Shapes
@using Orchard.Layouts.Elements
@using Orchard.Layouts.Helpers
@{
var element = (Column)Model.Element;
var columnSpan = element.Width;
var columnOffset = element.Offset;
var columnOffsetCss = columnOffset > 0 ? "col-sm-offset-" + columnOffset : default(string);
var tagBuilder = TagBuilderExtensions.AddCommonElementAttributes(new OrchardTagBuilder("div"), Model);
tagBuilder.AddCssClass("layoutPart-column");
tagBuilder.AddCssClass(String.Concat("col-sm-", columnSpan)); // Bootstrap class.
tagBuilder.AddCssClass(columnOffsetCss); // Bootstrap class.
}
@tagBuilder.StartElement
@DisplayChildren(Model)
@tagBuilder.EndElement

View File

@@ -0,0 +1,10 @@
@using Orchard.DisplayManagement.Shapes
@using Orchard.Layouts.Helpers
@{
var tagBuilder = TagBuilderExtensions.AddCommonElementAttributes(new OrchardTagBuilder("div"), Model);
tagBuilder.AddCssClass("layoutPart-grid");
//tagBuilder.AddCssClass("container"); // Bootstrap class.
}
@tagBuilder.StartElement
@DisplayChildren(Model)
@tagBuilder.EndElement

View File

@@ -0,0 +1,10 @@
@using Orchard.DisplayManagement.Shapes
@using Orchard.Layouts.Helpers
@{
var tagBuilder = TagBuilderExtensions.AddCommonElementAttributes(new OrchardTagBuilder("div"), Model);
tagBuilder.AddCssClass("layoutPart-row");
tagBuilder.AddCssClass("row"); // Bootstrap class.
}
@tagBuilder.StartElement
@DisplayChildren(Model)
@tagBuilder.EndElement

View File

@@ -0,0 +1,4 @@
@if (Model.Shape != null)
{
@Display(Model.Shape)
}

View File

@@ -7,23 +7,25 @@
<link href="https://fonts.googleapis.com/css?family=Raleway:400,400italic|Lato:400,400italic,700,700italic" rel="stylesheet" type="text/css" />
}
<header>
<header class="container">
@Display(Model.Header)
</header>
<nav>
@Display(Model.Navigation)
<nav class="navbar navbar-fixed-top navbar-dark bg-inverse">
<div class="container">
@Display(Model.Navigation)
</div>
</nav>
@Display(Model.Messages)
<main>
<main class="container">
@Display(Model.BeforeContent)
@Display(Model.Content)
@Display(Model.AfterContent)
</main>
<footer>
<footer class="container">
@Display(Model.Footer)
</footer>

View File

@@ -0,0 +1,3 @@
<ul class="nav navbar-nav">
@DisplayChildren(Model)
</ul>

View File

@@ -0,0 +1,38 @@
@{
var items = Enumerable.Cast<dynamic>((System.Collections.IEnumerable)Model);
}
@{
if (!HasText(Model.Text)) {
@DisplayChildren(Model)
}
else {
Model.Classes.Add("nav-item");
if ((bool) Model.Selected) {
Model.Classes.Add("active");
}
//if (items.Any()) {
// Model.Classes.Add("dropdown");
//}
@* Morphing the shape to keep Model untouched. *@
Model.Metadata.Alternates.Clear();
Model.Metadata.Type = "MenuItemLink";
@* Render the menu item only if it has content of its own. *@
var renderedMenuItemLink = Display(Model);
if (HasText(renderedMenuItemLink)) {
var tag = Tag(Model, "li");
@tag.StartElement
@renderedMenuItemLink
if (items.Any()) {
<ul>
@DisplayChildren(Model)
</ul>
}
@tag.EndElement
}
}
}

View File

@@ -0,0 +1 @@
<a class="nav-link" href="@Model.Href">@Model.Text</a>

View File

@@ -0,0 +1 @@
@Display(Model.Child)

View File

@@ -0,0 +1 @@
@DisplayChildren(Model)