Adding Shape element.

This commit is contained in:
Sipke Schoorstra
2014-11-22 16:37:05 -08:00
parent 9f3647bb7a
commit b492a5676a
5 changed files with 91 additions and 1 deletions

View File

@@ -0,0 +1,46 @@
using System;
using System.Collections.Generic;
using Orchard.DisplayManagement;
using Orchard.Forms.Services;
using Orchard.Layouts.Elements;
using Orchard.Layouts.Framework.Display;
using Orchard.Layouts.Framework.Drivers;
namespace Orchard.Layouts.Drivers {
public class ShapeDriver : FormsElementDriver<Shape> {
private readonly IShapeFactory _shapeFactory;
public ShapeDriver(IFormManager formManager, IShapeFactory shapeFactory)
: base(formManager) {
_shapeFactory = shapeFactory;
}
protected override IEnumerable<string> FormNames {
get { yield return "ShapeElement"; }
}
protected override void OnDisplaying(Shape element, ElementDisplayContext context) {
if (String.IsNullOrWhiteSpace(element.ShapeType))
return;
var shape = _shapeFactory.Create(element.ShapeType);
context.ElementShape.Shape = shape;
}
protected override void DescribeForm(DescribeContext context) {
context.Form("ShapeElement", shapeFactory => {
var factory = (dynamic)shapeFactory;
var form = factory.Fieldset(
Id: "ShapeElement",
_ShapeType: factory.Textbox(
Id: "shapeType",
Name: "ShapeType",
Title: T("Shape Type"),
Description: T("The shape type name to dislay."),
Classes: new[] { "text", "large", "tokenized" }));
return form;
});
}
}
}

View File

@@ -0,0 +1,19 @@
using Orchard.Layouts.Framework.Elements;
using Orchard.Layouts.Helpers;
namespace Orchard.Layouts.Elements {
public class Shape : Element {
public override string Category {
get { return "Snippets"; }
}
public string ShapeType {
get { return State.Get("ShapeType"); }
set { State["ShapeType"] = value; }
}
public override bool HasEditor {
get { return true; }
}
}
}

View File

@@ -214,6 +214,8 @@
<ItemGroup>
<Compile Include="AdminMenu.cs" />
<Compile Include="Controllers\BlueprintAdminController.cs" />
<Compile Include="Drivers\ShapeDriver.cs" />
<Compile Include="Elements\Shape.cs" />
<Compile Include="Filters\TokensFilter.cs" />
<Compile Include="Framework\Drivers\ImportContentContextWrapper.cs" />
<Compile Include="Framework\Drivers\IContentImportSession.cs" />
@@ -387,7 +389,12 @@
<ItemGroup>
<Content Include="Views\Parts.Layout.Summary.cshtml" />
</ItemGroup>
<ItemGroup />
<ItemGroup>
<Content Include="Views\Element-Snippets-Shape.cshtml" />
</ItemGroup>
<ItemGroup>
<Content Include="Views\Element-Snippets-Shape.Design.cshtml" />
</ItemGroup>
<PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>

View File

@@ -0,0 +1,8 @@
@using Orchard.Layouts.Elements
@{
var element = (Shape) Model.Element;
}
<div class="element-snippet">
<strong>@T("Shape -")</strong>
@element.ShapeType
</div>

View File

@@ -0,0 +1,10 @@
@using Orchard.DisplayManagement.Shapes
@using Orchard.Layouts.Helpers
@{
var tagBuilder = (OrchardTagBuilder)TagBuilderExtensions.AddCommonElementAttributes(new OrchardTagBuilder("div"), Model);
}
@if (Model.Shape != null) {
@tagBuilder.StartElement
@Display(Model.Shape)
@tagBuilder.EndElement
}