Files
Orchard/src/Orchard.Web/Modules/Orchard.Widgets/Shapes.cs
Nathan Heskew 6df8a35fb1 Adding some widget wrapper auto-classification
--HG--
branch : dev
2010-10-19 15:33:51 -07:00

35 lines
1.5 KiB
C#

using Orchard.ContentManagement;
using Orchard.DisplayManagement.Descriptors;
using Orchard.Utility.Extensions;
using Orchard.Widgets.Models;
namespace Orchard.Widgets {
public class Shapes : IShapeTableProvider {
public void Discover(ShapeTableBuilder builder) {
builder.Describe("Widget")
.Configure(descriptor => {
// todo: have "alternates" for chrome
descriptor.Wrappers.Add("Widget_Wrapper");
descriptor.Wrappers.Add("Widget_ControlWrapper");
})
.OnCreated(created => {
var widget = created.Shape;
widget.Child.Add(created.New.PlaceChildContent(Source: widget));
})
.OnDisplaying(displaying => {
var widget = displaying.Shape;
widget.Classes.Add("widget");
ContentItem contentItem = displaying.Shape.ContentItem;
if (contentItem != null) {
widget.Classes.Add("widget-" + contentItem.ContentType.HtmlClassify());
var zoneName = contentItem.As<WidgetPart>().Zone;
displaying.ShapeMetadata.Alternates.Add("Widget__" + contentItem.ContentType);
displaying.ShapeMetadata.Alternates.Add("Widget__" + zoneName);
}
});
}
}
}