Overloading ContentPart to optionally have new shape passed in

If lambda takes an argument, it is dynamic, and is an uninitialized shape of the named type
ShapeHelper and IShapeHelperFactory are obsolete - IShapeFactory itself is now dynamic

--HG--
branch : dev
This commit is contained in:
Louis DeJardin
2010-10-15 17:24:30 -07:00
parent cd6e1fb7c9
commit 70426a89b9
60 changed files with 203 additions and 321 deletions

View File

@@ -38,7 +38,6 @@ namespace Orchard.Core.Tests.Body {
builder.RegisterType<OrchardServices>().As<IOrchardServices>();
builder.RegisterType<DefaultShapeTableManager>().As<IShapeTableManager>();
builder.RegisterType<DefaultShapeFactory>().As<IShapeFactory>();
builder.RegisterType<ShapeHelperFactory>().As<IShapeHelperFactory>();
builder.RegisterType<ThingHandler>().As<IContentHandler>();

View File

@@ -47,7 +47,6 @@ namespace Orchard.Core.Tests.Common.Providers {
builder.RegisterType<ScheduledTaskManager>().As<IScheduledTaskManager>();
builder.RegisterType<DefaultShapeTableManager>().As<IShapeTableManager>();
builder.RegisterType<DefaultShapeFactory>().As<IShapeFactory>();
builder.RegisterType<ShapeHelperFactory>().As<IShapeHelperFactory>();
builder.RegisterType<StubExtensionManager>().As<IExtensionManager>();
builder.RegisterInstance(new Mock<IContentDisplay>().Object);

View File

@@ -59,6 +59,7 @@
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\lib\autofac\Autofac.dll</HintPath>
</Reference>
<Reference Include="ClaySharp, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL" />
<Reference Include="Moq, Version=4.0.812.4, Culture=neutral, PublicKeyToken=69f491c39445e920, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\lib\moq\Moq.dll</HintPath>

View File

@@ -53,7 +53,6 @@ namespace Orchard.Core.Tests.Routable.Services {
builder.RegisterType<RoutablePathConstraint>().As<IRoutablePathConstraint>();
builder.RegisterType<DefaultShapeTableManager>().As<IShapeTableManager>();
builder.RegisterType<DefaultShapeFactory>().As<IShapeFactory>();
builder.RegisterType<ShapeHelperFactory>().As<IShapeHelperFactory>();
builder.RegisterType<DefaultContentQuery>().As<IContentQuery>();
builder.RegisterInstance(new UrlHelper(new RequestContext(new StubHttpContext("~/"), new RouteData()))).As<UrlHelper>();

View File

@@ -37,7 +37,6 @@ namespace Orchard.Core.Tests.Scheduling {
builder.RegisterType<DefaultContentManagerSession>().As<IContentManagerSession>();
builder.RegisterType<DefaultShapeTableManager>().As<IShapeTableManager>();
builder.RegisterType<DefaultShapeFactory>().As<IShapeFactory>();
builder.RegisterType<ShapeHelperFactory>().As<IShapeHelperFactory>();
builder.RegisterInstance(new Mock<IContentDefinitionManager>().Object);
builder.RegisterInstance(new Mock<IContentDisplay>().Object);

View File

@@ -41,7 +41,6 @@ namespace Orchard.Core.Tests.Scheduling {
builder.RegisterType<DefaultContentManagerSession>().As<IContentManagerSession>();
builder.RegisterType<DefaultShapeTableManager>().As<IShapeTableManager>();
builder.RegisterType<DefaultShapeFactory>().As<IShapeFactory>();
builder.RegisterType<ShapeHelperFactory>().As<IShapeHelperFactory>();
builder.RegisterInstance(new Mock<IContentDefinitionManager>().Object);
builder.RegisterInstance(new Mock<IContentDisplay>().Object);

View File

@@ -60,6 +60,7 @@
<HintPath>..\..\lib\autofac\Autofac.dll</HintPath>
</Reference>
<Reference Include="Castle.Core, Version=1.1.0.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc, processorArchitecture=MSIL" />
<Reference Include="ClaySharp, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL" />
<Reference Include="FluentNHibernate, Version=1.0.0.593, Culture=neutral, PublicKeyToken=8aa435e3cb308880, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\lib\fluentnhibernate\FluentNHibernate.dll</HintPath>

View File

@@ -77,7 +77,6 @@ namespace Orchard.Tests.Modules.Themes.Services {
builder.RegisterType<StubCacheManager>().As<ICacheManager>();
builder.RegisterType<ContentDefinitionManager>().As<IContentDefinitionManager>();
builder.RegisterType<DefaultContentManagerSession>().As<IContentManagerSession>();
builder.RegisterType<ShapeHelperFactory>().As<IShapeHelperFactory>();
builder.RegisterType<DefaultShapeFactory>().As<IShapeFactory>();
builder.RegisterType<DefaultShapeTableManager>().As<IShapeTableManager>();
builder.RegisterType<StubExtensionManager>().As<IExtensionManager>();

View File

@@ -58,7 +58,6 @@ namespace Orchard.Tests.Modules.Users.Controllers {
builder.RegisterType<TransactionManager>().As<ITransactionManager>();
builder.RegisterType<DefaultShapeTableManager>().As<IShapeTableManager>();
builder.RegisterType<DefaultShapeFactory>().As<IShapeFactory>();
builder.RegisterType<ShapeHelperFactory>().As<IShapeHelperFactory>();
builder.RegisterType<StubExtensionManager>().As<IExtensionManager>();
builder.RegisterInstance(new Mock<INotifier>().Object);
builder.RegisterInstance(new Mock<IContentDisplay>().Object);

View File

@@ -81,7 +81,6 @@ namespace Orchard.Tests.Modules.Users.Services {
builder.RegisterType<DefaultMessageManager>().As<IMessageManager>();
builder.RegisterType<DefaultShapeTableManager>().As<IShapeTableManager>();
builder.RegisterType<DefaultShapeFactory>().As<IShapeFactory>();
builder.RegisterType<ShapeHelperFactory>().As<IShapeHelperFactory>();
builder.RegisterType<StubExtensionManager>().As<IExtensionManager>();
builder.RegisterType<DefaultContentDisplay>().As<IContentDisplay>();

View File

@@ -85,7 +85,6 @@ namespace Orchard.Tests.Modules.Widgets.Services {
builder.RegisterType<OrchardServices>().As<IOrchardServices>();
builder.RegisterType<DefaultShapeTableManager>().As<IShapeTableManager>();
builder.RegisterType<DefaultShapeFactory>().As<IShapeFactory>();
builder.RegisterType<ShapeHelperFactory>().As<IShapeHelperFactory>();
builder.RegisterType<WidgetsService>().As<IWidgetsService>();
builder.RegisterType<StubExtensionManager>().As<IExtensionManager>();
Theme theme1 = new Theme { Zones = ThemeZoneName1 };
@@ -242,8 +241,24 @@ namespace Orchard.Tests.Modules.Widgets.Services {
Assert.That(widgetPart3.Position, Is.EqualTo(Position3), "Widget remained in the same position");
}
[Test, Ignore("Fix when possible")]
public void GetLayerWidgetsTest() {
[Test, Ignore("Fix when possible")]
public void GetLayerWidgetsTest() {
LayerPart layerPart = _widgetService.CreateLayer(LayerName1, LayerDescription1, "");
_contentManager.Flush();
// same zone widgets
WidgetPart widgetPart1 = _widgetService.CreateWidget(layerPart.Id, "HtmlWidget", WidgetTitle1, Position1, Zone1);
WidgetPart widgetPart2 = _widgetService.CreateWidget(layerPart.Id, "HtmlWidget", WidgetTitle2, Position2, Zone1);
// different zone widget
_widgetService.CreateWidget(layerPart.Id, "HtmlWidget", WidgetTitle3, Position3, Zone2);
// test 1 - moving first widget up will have no effect
IEnumerable<WidgetPart> layerWidgets = _widgetService.GetWidgets(layerPart.Id);
Assert.That(layerWidgets.Count(), Is.EqualTo(2));
Assert.That(layerWidgets.Contains(widgetPart1));
Assert.That(layerWidgets.Contains(widgetPart2));
}
public class StubLayerPartHandler : ContentHandler {
public StubLayerPartHandler(IRepository<LayerPartRecord> layersRepository) {

View File

@@ -63,7 +63,6 @@ namespace Orchard.Tests.ContentManagement {
builder.RegisterType<StyledHandler>().As<IContentHandler>();
builder.RegisterType<DefaultShapeTableManager>().As<IShapeTableManager>();
builder.RegisterType<DefaultShapeFactory>().As<IShapeFactory>();
builder.RegisterType<ShapeHelperFactory>().As<IShapeHelperFactory>();
builder.RegisterGeneric(typeof(Repository<>)).As(typeof(IRepository<>));

View File

@@ -73,7 +73,6 @@ namespace Orchard.Tests.ContentManagement {
builder.RegisterType<StyledHandler>().As<IContentHandler>();
builder.RegisterType<DefaultShapeTableManager>().As<IShapeTableManager>();
builder.RegisterType<DefaultShapeFactory>().As<IShapeFactory>();
builder.RegisterType<ShapeHelperFactory>().As<IShapeHelperFactory>();
builder.RegisterType<DefaultContentDisplay>().As<IContentDisplay>();
builder.RegisterType<StubExtensionManager>().As<IExtensionManager>();

View File

@@ -22,7 +22,6 @@ namespace Orchard.Tests.ContentManagement.Handlers.Coordinators {
var builder = new ContainerBuilder();
//builder.RegisterModule(new ImplicitCollectionSupportModule());
builder.RegisterType<ContentPartDriverCoordinator>().As<IContentHandler>();
builder.RegisterType<ShapeHelperFactory>().As<IShapeHelperFactory>();
builder.RegisterType<DefaultShapeFactory>().As<IShapeFactory>();
builder.RegisterInstance(new Mock<IContentDefinitionManager>().Object);
_container = builder.Build();
@@ -45,7 +44,7 @@ namespace Orchard.Tests.ContentManagement.Handlers.Coordinators {
var contentHandler = _container.Resolve<IContentHandler>();
var contentItem = new ContentItem();
var context = new BuildDisplayContext(null, contentItem, "", new ShapeHelperFactory(null));
var context = new BuildDisplayContext(null, contentItem, "", new Mock<IShapeFactory>().Object);
driver1.Verify(x => x.BuildDisplay(context), Times.Never());
driver2.Verify(x => x.BuildDisplay(context), Times.Never());
@@ -61,13 +60,13 @@ namespace Orchard.Tests.ContentManagement.Handlers.Coordinators {
builder.RegisterInstance(driver).As<IContentPartDriver>();
builder.Update(_container);
var contentHandler = _container.Resolve<IContentHandler>();
var shapeHelperFactory = _container.Resolve<IShapeHelperFactory>();
dynamic shapeFactory = _container.Resolve<IShapeFactory>();
var contentItem = new ContentItem();
contentItem.Weld(new StubPart { Foo = new[] { "a", "b", "c" } });
var ctx = new BuildDisplayContext(null, null, "", null);
var context = shapeHelperFactory.CreateHelper().Context(ctx);
var context = shapeFactory.Context(ctx);
Assert.That(context.TopMeta, Is.Null);
contentHandler.BuildDisplay(ctx);
Assert.That(context.TopMeta, Is.Not.Null);

View File

@@ -21,7 +21,6 @@ namespace Orchard.Tests.DisplayManagement {
var builder = new ContainerBuilder();
builder.RegisterType<DefaultShapeFactory>().As<IShapeFactory>();
builder.RegisterType<DefaultShapeTableManager>().As<IShapeTableManager>();
builder.RegisterType<ShapeHelperFactory>().As<IShapeHelperFactory>();
builder.RegisterType<StubExtensionManager>().As<IExtensionManager>();
_container = builder.Build();
}

View File

@@ -19,7 +19,6 @@ namespace Orchard.Tests.DisplayManagement {
[SetUp]
public void Init() {
var builder = new ContainerBuilder();
builder.RegisterType<ShapeHelperFactory>().As<IShapeHelperFactory>();
builder.RegisterType<DefaultShapeFactory>().As<IShapeFactory>();
builder.RegisterType<DefaultShapeTableManager>().As<IShapeTableManager>();
builder.RegisterType<StubExtensionManager>().As<IExtensionManager>();
@@ -29,7 +28,7 @@ namespace Orchard.Tests.DisplayManagement {
[Test]
public void CreatingNewShapeTypeByName() {
dynamic shape = _container.Resolve<IShapeHelperFactory>().CreateHelper();
dynamic shape = _container.Resolve<IShapeFactory>();
var alpha = shape.Alpha();
@@ -38,7 +37,7 @@ namespace Orchard.Tests.DisplayManagement {
[Test]
public void CreatingShapeWithAdditionalNamedParameters() {
dynamic shape = _container.Resolve<IShapeHelperFactory>().CreateHelper();
dynamic shape = _container.Resolve<IShapeFactory>();
var alpha = shape.Alpha(one: 1, two: "dos");
@@ -49,7 +48,7 @@ namespace Orchard.Tests.DisplayManagement {
[Test]
public void WithPropertyBearingObjectInsteadOfNamedParameters() {
dynamic shape = _container.Resolve<IShapeHelperFactory>().CreateHelper();
dynamic shape = _container.Resolve<IShapeFactory>();
var alpha = shape.Alpha(new { one = 1, two = "dos" });

View File

@@ -44,7 +44,6 @@ namespace Orchard.Tests.DisplayManagement {
builder.RegisterType<DefaultDisplayManager>().As<IDisplayManager>();
builder.RegisterType<DefaultShapeFactory>().As<IShapeFactory>();
builder.RegisterType<DisplayHelperFactory>().As<IDisplayHelperFactory>();
builder.RegisterType<ShapeHelperFactory>().As<IShapeHelperFactory>();
builder.RegisterType<DefaultShapeTableManager>().As<IShapeTableManager>();
builder.RegisterInstance(new DefaultDisplayManagerTests.TestWorkContextAccessor(workContext)).As<IWorkContextAccessor>();
builder.RegisterInstance(new SimpleShapes()).WithMetadata("Feature", testFeature);
@@ -72,7 +71,7 @@ namespace Orchard.Tests.DisplayManagement {
[Test]
public void RenderingSomething() {
dynamic displayHelperFactory = _container.Resolve<IDisplayHelperFactory>().CreateHelper(new ViewContext(), null);
dynamic shapeHelperFactory = _container.Resolve<IShapeHelperFactory>().CreateHelper();
dynamic shapeHelperFactory = _container.Resolve<IShapeFactory>();
var result1 = displayHelperFactory.Something();
var result2 = ((DisplayHelper)displayHelperFactory).ShapeExecute((Shape)shapeHelperFactory.Pager());

View File

@@ -29,14 +29,14 @@ namespace Orchard.Core.Contents.Controllers {
IContentManager contentManager,
IContentDefinitionManager contentDefinitionManager,
ITransactionManager transactionManager,
IShapeHelperFactory shapeHelperFactory) {
IShapeFactory shapeFactory) {
Services = orchardServices;
_contentManager = contentManager;
_contentDefinitionManager = contentDefinitionManager;
_transactionManager = transactionManager;
T = NullLocalizer.Instance;
Logger = NullLogger.Instance;
Shape = shapeHelperFactory.CreateHelper();
Shape = shapeFactory;
}
dynamic Shape { get; set; }

View File

@@ -8,9 +8,9 @@ namespace Orchard.Core.Contents.Controllers {
public class ItemController : Controller {
private readonly IContentManager _contentManager;
public ItemController(IContentManager contentManager, IShapeHelperFactory shapeHelperFactory) {
public ItemController(IContentManager contentManager, IShapeFactory shapeFactory) {
_contentManager = contentManager;
Shape = shapeHelperFactory.CreateHelper();
Shape = shapeFactory;
}
dynamic Shape { get; set; }

View File

@@ -9,10 +9,13 @@ namespace Orchard.Core.Feeds.Services {
private readonly IFeedManager _feedManager;
private readonly IWorkContextAccessor _workContextAccessor;
public FeedFilter(IFeedManager feedManager, IWorkContextAccessor workContextAccessor, IShapeHelperFactory shapeHelperFactory) {
public FeedFilter(
IFeedManager feedManager,
IWorkContextAccessor workContextAccessor,
IShapeFactory shapeFactory) {
_feedManager = feedManager;
_workContextAccessor = workContextAccessor;
Shape = shapeHelperFactory.CreateHelper();
Shape = shapeFactory;
}
dynamic Shape { get; set; }

View File

@@ -24,13 +24,13 @@ namespace Orchard.Core.Localization.Controllers {
IContentManager contentManager,
ICultureManager cultureManager,
ILocalizationService localizationService,
IShapeHelperFactory shapeHelperFactory) {
IShapeFactory shapeFactory) {
_contentManager = contentManager;
_cultureManager = cultureManager;
_localizationService = localizationService;
T = NullLocalizer.Instance;
Services = orchardServices;
Shape = shapeHelperFactory.CreateHelper();
Shape = shapeFactory;
}
dynamic Shape { get; set; }

View File

@@ -22,12 +22,12 @@ namespace Orchard.Core.Navigation.Controllers {
IMenuService menuService,
IOrchardServices services,
INavigationManager navigationManager,
IShapeHelperFactory shapeHelperFactory) {
IShapeFactory shapeFactory) {
_menuService = menuService;
_services = services;
_navigationManager = navigationManager;
T = NullLocalizer.Instance;
Shape = shapeHelperFactory.CreateHelper();
Shape = shapeFactory;
}
dynamic Shape { get; set; }

View File

@@ -8,11 +8,10 @@ namespace Orchard.Core.Reports.Controllers {
public class AdminController : Controller {
private readonly IReportsManager _reportsManager;
public AdminController(IReportsManager reportsManager, IShapeHelperFactory shapeHelperFactory) {
public AdminController(IReportsManager reportsManager) {
_reportsManager = reportsManager;
}
dynamic Shape { get; set; }
public ActionResult Index() {
var model = new ReportsAdminIndexViewModel { Reports = _reportsManager.GetReports().ToList() };

View File

@@ -16,11 +16,15 @@ namespace Orchard.Core.Routable.Controllers {
private readonly ITransactionManager _transactionManager;
private readonly IRoutablePathConstraint _routablePathConstraint;
public ItemController(IContentManager contentManager, ITransactionManager transactionManager, IRoutablePathConstraint routablePathConstraint, IShapeHelperFactory shapeHelperFactory) {
public ItemController(
IContentManager contentManager,
ITransactionManager transactionManager,
IRoutablePathConstraint routablePathConstraint,
IShapeFactory shapeFactory) {
_contentManager = contentManager;
_transactionManager = transactionManager;
_routablePathConstraint = routablePathConstraint;
Shape = shapeHelperFactory.CreateHelper();
Shape = shapeFactory;
}
dynamic Shape { get; set; }

View File

@@ -12,11 +12,14 @@ namespace Orchard.Core.Routable.Services {
private readonly IContentManager _contentManager;
public const string Name = "RoutableHomePageProvider";
public RoutableHomePageProvider(IOrchardServices services, IContentManager contentManager, IShapeHelperFactory shapeHelperFactory) {
public RoutableHomePageProvider(
IOrchardServices services,
IContentManager contentManager,
IShapeFactory shapeFactory) {
_contentManager = contentManager;
Services = services;
T = NullLocalizer.Instance;
Shape = shapeHelperFactory.CreateHelper();
Shape = shapeFactory;
}
dynamic Shape { get; set; }

View File

@@ -21,15 +21,13 @@ namespace Orchard.Core.Settings.Controllers {
public AdminController(
ISiteService siteService,
IOrchardServices services,
ICultureManager cultureManager,
IShapeHelperFactory shapeHelperFactory) {
ICultureManager cultureManager) {
_siteService = siteService;
_cultureManager = cultureManager;
Services = services;
T = NullLocalizer.Instance;
}
dynamic Shape { get; set; }
public Localizer T { get; set; }
public ActionResult Index(string tabName) {

View File

@@ -21,13 +21,13 @@ namespace Orchard.Blogs.Controllers {
private readonly ITransactionManager _transactionManager;
private readonly IBlogSlugConstraint _blogSlugConstraint;
public BlogAdminController(IOrchardServices services,
public BlogAdminController(
IOrchardServices services,
IBlogService blogService,
IBlogPostService blogPostService,
IContentManager contentManager,
ITransactionManager transactionManager,
IBlogSlugConstraint blogSlugConstraint,
IShapeHelperFactory shapeHelperFactory) {
IBlogSlugConstraint blogSlugConstraint) {
Services = services;
_blogService = blogService;
_blogPostService = blogPostService;
@@ -35,10 +35,8 @@ namespace Orchard.Blogs.Controllers {
_transactionManager = transactionManager;
_blogSlugConstraint = blogSlugConstraint;
T = NullLocalizer.Instance;
Shape = shapeHelperFactory.CreateHelper();
}
dynamic Shape { get; set; }
public Localizer T { get; set; }
public IOrchardServices Services { get; set; }
@@ -123,7 +121,7 @@ namespace Orchard.Blogs.Controllers {
}
public ActionResult List() {
var list = Shape.List();
var list = Services.New.List();
list.AddRange(_blogService.Get()
.Select(b => {
var blog = Services.ContentManager.BuildDisplay(b, "SummaryAdmin");
@@ -131,7 +129,7 @@ namespace Orchard.Blogs.Controllers {
return blog;
}));
var viewModel = Shape.ViewModel()
var viewModel = Services.New.ViewModel()
.ContentItems(list);
return View(viewModel);

View File

@@ -20,14 +20,20 @@ namespace Orchard.Blogs.Controllers {
private readonly IBlogSlugConstraint _blogSlugConstraint;
private readonly RouteCollection _routeCollection;
public BlogController(IOrchardServices services, IBlogService blogService, IBlogPostService blogPostService, IBlogSlugConstraint blogSlugConstraint, RouteCollection routeCollection, IShapeHelperFactory shapeHelperFactory) {
public BlogController(
IOrchardServices services,
IBlogService blogService,
IBlogPostService blogPostService,
IBlogSlugConstraint blogSlugConstraint,
RouteCollection routeCollection,
IShapeFactory shapeFactory) {
_services = services;
_blogService = blogService;
_blogPostService = blogPostService;
_blogSlugConstraint = blogSlugConstraint;
_routeCollection = routeCollection;
Logger = NullLogger.Instance;
Shape = shapeHelperFactory.CreateHelper();
Shape = shapeFactory;
}
dynamic Shape { get; set; }

View File

@@ -23,13 +23,13 @@ namespace Orchard.Blogs.Controllers {
IBlogService blogService,
IBlogPostService blogPostService,
IFeedManager feedManager,
IShapeHelperFactory shapeHelperFactory) {
IShapeFactory shapeFactory) {
_services = services;
_blogService = blogService;
_blogPostService = blogPostService;
_feedManager = feedManager;
T = NullLocalizer.Instance;
Shape = shapeHelperFactory.CreateHelper();
Shape = shapeFactory;
}
dynamic Shape { get; set; }

View File

@@ -18,16 +18,19 @@ namespace Orchard.Blogs.Drivers {
private readonly IBlogPostService _blogPostService;
private readonly IFeedManager _feedManager;
public BlogPartDriver(IOrchardServices services, IContentManager contentManager, IBlogPostService blogPostService, IFeedManager feedManager, IShapeHelperFactory shapeHelperFactory) {
public BlogPartDriver(
IOrchardServices services,
IContentManager contentManager,
IBlogPostService blogPostService,
IFeedManager feedManager) {
Services = services;
_contentManager = contentManager;
_blogPostService = blogPostService;
_feedManager = feedManager;
T = NullLocalizer.Instance;
Shape = shapeHelperFactory.CreateHelper();
}
dynamic Shape { get; set; }
public Localizer T { get; set; }
protected override string Prefix { get { return ""; } }

View File

@@ -16,9 +16,10 @@ namespace Orchard.Experimental.Controllers {
public ContentController(
IRepository<ContentTypeRecord> contentTypeRepository,
IContentManager contentManager,
IShapeHelperFactory shapeHelperFactory) {
IShapeFactory shapeFactory) {
_contentTypeRepository = contentTypeRepository;
_contentManager = contentManager;
Shape = shapeFactory;
}
dynamic Shape { get; set; }

View File

@@ -14,10 +14,10 @@ namespace Orchard.Experimental.Controllers {
public class HomeController : Controller {
private readonly INotifier _notifier;
public HomeController(INotifier notifier, IShapeHelperFactory shapeHelperFactory) {
public HomeController(INotifier notifier, IShapeFactory shapeFactory) {
_notifier = notifier;
T = NullLocalizer.Instance;
Shape = shapeHelperFactory.CreateHelper();
Shape = shapeFactory;
}
dynamic Shape { get; set; }

View File

@@ -43,6 +43,7 @@
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\..\lib\autofac\Autofac.dll</HintPath>
</Reference>
<Reference Include="ClaySharp, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL" />
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.ComponentModel.DataAnnotations">

View File

@@ -76,7 +76,6 @@ namespace Orchard.Setup {
builder.RegisterType<DisplayHelperFactory>().As<IDisplayHelperFactory>();
builder.RegisterType<DefaultDisplayManager>().As<IDisplayManager>();
builder.RegisterType<DefaultShapeFactory>().As<IShapeFactory>();
builder.RegisterType<ShapeHelperFactory>().As<IShapeHelperFactory>();
builder.RegisterType<DefaultShapeTableManager>().As<IShapeTableManager>();
builder.RegisterType<ThemeAwareViewEngine>().As<IThemeAwareViewEngine>();

View File

@@ -17,12 +17,15 @@ namespace Orchard.Tags.Controllers {
public class HomeController : Controller {
private readonly ITagService _tagService;
private readonly IContentManager _contentManager;
private readonly IShapeHelperFactory _shapeHelperFactory;
private readonly dynamic _shapeFactory;
public HomeController(ITagService tagService, IContentManager contentManager, IShapeHelperFactory shapeHelperFactory) {
public HomeController(
ITagService tagService,
IContentManager contentManager,
IShapeFactory shapeFactory) {
_tagService = tagService;
_contentManager = contentManager;
_shapeHelperFactory = shapeHelperFactory;
_shapeFactory = shapeFactory;
T = NullLocalizer.Instance;
}
@@ -44,8 +47,7 @@ namespace Orchard.Tags.Controllers {
return RedirectToAction("Index");
}
var shape = _shapeHelperFactory.CreateHelper();
var list = shape.List();
var list = _shapeFactory.List();
foreach (var taggedContentItem in _tagService.GetTaggedContentItems(tag.Id)) {
list.Add(_contentManager.BuildDisplay(taggedContentItem, "Summary"));
}

View File

@@ -26,8 +26,7 @@ namespace Orchard.Themes.Controllers {
IThemeService themeService,
IPreviewTheme previewTheme,
IAuthorizer authorizer,
INotifier notifier,
IShapeHelperFactory shapeHelperFactory) {
INotifier notifier) {
Services = services;
_dataMigrationManager = dataMigraitonManager;
_reportsCoordinator = reportsCoordinator;
@@ -36,7 +35,6 @@ namespace Orchard.Themes.Controllers {
T = NullLocalizer.Instance;
}
dynamic Shape { get; set; }
public IOrchardServices Services{ get; set; }
public Localizer T { get; set; }

View File

@@ -9,13 +9,17 @@ namespace Orchard.Themes.Preview {
private readonly IThemeService _themeService;
private readonly IPreviewTheme _previewTheme;
private readonly IWorkContextAccessor _workContextAccessor;
private readonly IShapeHelperFactory _shapeHelperFactory;
private readonly dynamic _shapeFactory;
public PreviewThemeFilter(IThemeService themeService, IPreviewTheme previewTheme, IWorkContextAccessor workContextAccessor, IShapeHelperFactory shapeHelperFactory) {
public PreviewThemeFilter(
IThemeService themeService,
IPreviewTheme previewTheme,
IWorkContextAccessor workContextAccessor,
IShapeFactory shapeFactory) {
_themeService = themeService;
_previewTheme = previewTheme;
_workContextAccessor = workContextAccessor;
_shapeHelperFactory = shapeHelperFactory;
_shapeFactory = shapeFactory;
}
public void OnResultExecuting(ResultExecutingContext filterContext) {
@@ -33,8 +37,8 @@ namespace Orchard.Themes.Preview {
.ToList();
var shape = _shapeHelperFactory.CreateHelper();
_workContextAccessor.GetContext(filterContext).Layout.Zones["Body"].Add(shape.ThemePreview(Themes: themeListItems), ":before");
_workContextAccessor.GetContext(filterContext).Layout.Zones["Body"].Add(_shapeFactory.ThemePreview(Themes: themeListItems), ":before");
}
public void OnResultExecuted(ResultExecutedContext filterContext) { }

View File

@@ -22,12 +22,12 @@ namespace Orchard.Users.Controllers {
IOrchardServices services,
IMembershipService membershipService,
IUserService userService,
IShapeHelperFactory shapeHelperFactory) {
IShapeFactory shapeFactory) {
Services = services;
_membershipService = membershipService;
_userService = userService;
T = NullLocalizer.Instance;
Shape = shapeHelperFactory.CreateHelper();
Shape = shapeFactory;
}
dynamic Shape { get; set; }

View File

@@ -128,10 +128,6 @@
<None Include="Themes\Classic\Placement.info">
<SubType>Designer</SubType>
</None>
<Content Include="Themes\Contoso\Styles\search.css" />
<Content Include="Themes\Contoso\Zones\Footer.html" />
<Content Include="Themes\Corporate\Views\DisplayTemplates\Parts\Blogs.BlogPost.Metadata.ascx" />
<Content Include="Themes\Green\Views\Orchard.Search\Search\Index.ascx" />
<Content Include="Themes\TheAdmin\Scripts\admin.js" />
<Content Include="Themes\TheAdmin\Styles\ie.css" />
<Content Include="Themes\TheAdmin\Styles\images\menuClosed.gif" />
@@ -176,16 +172,7 @@
</ItemGroup>
<ItemGroup>
<Content Include="Config\Sample.Host.config" />
<Content Include="Themes\ClassicDark\Views\Footer.cshtml" />
<Content Include="Themes\ClassicDark\Views\Layout.cshtml" />
<None Include="Themes\TheAdmin\Styles\images\icons.psd" />
<Content Include="Themes\ClassicDark\Content\Images\bodyBackgroundgrey.gif" />
<Content Include="Themes\ClassicDark\Content\Images\sidebarBackground.gif" />
<Content Include="Themes\ClassicDark\Styles\blog.css" />
<Content Include="Themes\ClassicDark\Styles\site.css" />
<Content Include="Themes\ClassicDark\Theme.png" />
<Content Include="Themes\ClassicDark\Theme.txt" />
<Content Include="Themes\ClassicDark\Zones\Sidebar.html" />
<Content Include="Themes\Classic\Content\Images\sidebarBackground.gif" />
<Content Include="Themes\Classic\Zones\Sidebar.html" />
<Content Include="Themes\Classic\Styles\blog.css" />
@@ -194,111 +181,6 @@
<Content Include="Themes\Classic\Theme.txt" />
<Content Include="Themes\Classic\Views\Footer.cshtml" />
<Content Include="Themes\Classic\Views\Layout.cshtml" />
<Content Include="Themes\Contoso\Content\Images\bkg.jpg" />
<Content Include="Themes\Contoso\Content\Images\comment-arrow.png" />
<Content Include="Themes\Contoso\Content\Images\content-bkg.png" />
<Content Include="Themes\Contoso\Content\Images\content-bottom.png" />
<Content Include="Themes\Contoso\Content\Images\content-top.png" />
<Content Include="Themes\Contoso\Content\Images\feature-bkg-bottom.png" />
<Content Include="Themes\Contoso\Content\Images\feature-bkg-top.png" />
<Content Include="Themes\Contoso\Content\Images\Gallery\feature01.jpg" />
<Content Include="Themes\Contoso\Content\Images\Gallery\feature02.jpg" />
<Content Include="Themes\Contoso\Content\Images\Gallery\feature03.jpg" />
<Content Include="Themes\Contoso\Content\Images\icon-location.png" />
<Content Include="Themes\Contoso\Content\Images\menu-divider.png" />
<Content Include="Themes\Contoso\Content\Images\menu-hover-left.png" />
<Content Include="Themes\Contoso\Content\Images\menu-hover.png" />
<Content Include="Themes\Contoso\Content\Images\menu-left.png" />
<Content Include="Themes\Contoso\Content\Images\menu-right.png" />
<Content Include="Themes\Contoso\Content\Images\nav-arrow-left.png" />
<Content Include="Themes\Contoso\Content\Images\nav-arrow-right.png" />
<Content Include="Themes\Contoso\Content\Images\sub-header.png" />
<Content Include="Themes\Contoso\Zones\Sidebar-w2.html" />
<Content Include="Themes\Contoso\Zones\Sidebar-w3.html" />
<Content Include="Themes\Contoso\Zones\Highlights.html" />
<Content Include="Themes\Contoso\Zones\Home-Headline.html" />
<Content Include="Themes\Contoso\Zones\Home-Hero-Gallery.html" />
<Content Include="Themes\Contoso\Zones\Home-Hero.html" />
<Content Include="Themes\Contoso\Zones\Sidebar-w1.html" />
<Content Include="Themes\Contoso\Scripts\easySlider.js" />
<Content Include="Themes\Contoso\Styles\site.css" />
<Content Include="Themes\Contoso\Theme.png" />
<Content Include="Themes\Contoso\Theme.txt" />
<Content Include="Themes\Corporate\Content\Images\bkg.jpg" />
<Content Include="Themes\Corporate\Content\Images\consult-bkg.png" />
<Content Include="Themes\Corporate\Content\Images\content-bkg.png" />
<Content Include="Themes\Corporate\Content\Images\content-bottom.png" />
<Content Include="Themes\Corporate\Content\Images\content-top.png" />
<Content Include="Themes\Corporate\Content\Images\footer-bkg.jpg" />
<Content Include="Themes\Corporate\Content\Images\footer-bkg.png" />
<Content Include="Themes\Corporate\Content\Images\hm-divider.png" />
<Content Include="Themes\Corporate\Content\Images\hm-header.png" />
<Content Include="Themes\Corporate\Content\Images\icons\icon-5.png" />
<Content Include="Themes\Corporate\Content\Images\icons\icon-4.png" />
<Content Include="Themes\Corporate\Content\Images\icons\icon-3.png" />
<Content Include="Themes\Corporate\Content\Images\icons\icon-2.png" />
<Content Include="Themes\Corporate\Content\Images\icons\icon-1.png" />
<Content Include="Themes\Corporate\Content\Images\jumping-people.jpg" />
<Content Include="Themes\Corporate\Content\Images\logo.png" />
<Content Include="Themes\Corporate\Content\Images\menu-left-over.png" />
<Content Include="Themes\Corporate\Content\Images\menu-left.png" />
<Content Include="Themes\Corporate\Content\Images\menu-right-over.png" />
<Content Include="Themes\Corporate\Content\Images\menu-right.png" />
<Content Include="Themes\Corporate\Content\Images\menu_bkg.jpg" />
<Content Include="Themes\Corporate\Content\Images\notepad.png" />
<Content Include="Themes\Corporate\Scripts\easySlider.js" />
<Content Include="Themes\Corporate\Styles\site.css" />
<Content Include="Themes\Corporate\Theme.png" />
<Content Include="Themes\Corporate\Theme.txt" />
<Content Include="Themes\Corporate\Views\DisplayTemplates\Items\Blogs.Blog.ascx" />
<Content Include="Themes\Corporate\Views\DisplayTemplates\Items\Blogs.BlogPost.ascx" />
<Content Include="Themes\Corporate\Views\DisplayTemplates\Items\Blogs.BlogPost.ListByArchive.ascx" />
<Content Include="Themes\Corporate\Views\DisplayTemplates\Items\Contents.Item.ascx" />
<Content Include="Themes\Corporate\Views\DisplayTemplates\Parts\Comments.Comments.ascx" />
<Content Include="Themes\Corporate\Views\DisplayTemplates\Parts\Common.Metadata.ascx" />
<Content Include="Themes\Corporate\Views\DisplayTemplates\Parts\Tags.ShowTags.ascx" />
<Content Include="Themes\Corporate\Views\Footer.ascx" />
<Content Include="Themes\Corporate\Views\Header.ascx" />
<Content Include="Themes\Corporate\Views\Layout.ascx" />
<Content Include="Themes\Corporate\Views\Layout.HomePage.ascx" />
<Content Include="Themes\Corporate\Views\ListOfComments.ascx" />
<Content Include="Themes\Corporate\Views\LogOn.ascx" />
<Content Include="Themes\Corporate\Views\User.ascx" />
<Content Include="Themes\Corporate\Zones\Home-Headline.html" />
<Content Include="Themes\Corporate\Zones\Home-Hero.html" />
<Content Include="Themes\Corporate\Zones\Sidebar-w1.html" />
<Content Include="Themes\Corporate\Zones\Sidebar-w2.html" />
<Content Include="Themes\Corporate\Zones\Sidebar-w3.html" />
<Content Include="Themes\Green\Content\Images\bodyBackground.gif" />
<Content Include="Themes\Green\Content\Images\bodyBackground.png" />
<Content Include="Themes\Green\Content\Images\commentpointer.gif" />
<Content Include="Themes\Green\Content\Images\logo.gif" />
<Content Include="Themes\Green\Content\Images\logo.png" />
<Content Include="Themes\Green\Content\Images\tabLeftOff.gif" />
<Content Include="Themes\Green\Content\Images\tabLeftOn.gif" />
<Content Include="Themes\Green\Content\Images\tabRightOff.gif" />
<Content Include="Themes\Green\Content\Images\tabRightOn.gif" />
<Content Include="Themes\Green\Views\Archives.ascx" />
<Content Include="Themes\Green\Views\DisplayTemplates\Items\Blogs.BlogPost.ascx" />
<Content Include="Themes\Green\Views\DisplayTemplates\Parts\Blogs.BlogPost.Metadata.ascx" />
<Content Include="Themes\Green\Zones\sideBarZone1.html" />
<Content Include="Themes\Green\Zones\sideBarZone2.html" />
<Content Include="Themes\Green\Zones\User2.html" />
<Content Include="Themes\Green\Zones\User3.html" />
<Content Include="Themes\Green\Zones\User1.html" />
<Content Include="Themes\Green\Styles\blog.css" />
<Content Include="Themes\Green\Styles\site.css" />
<Content Include="Themes\Green\Styles\yui.css" />
<Content Include="Themes\Green\Theme.png" />
<Content Include="Themes\Green\Theme.txt" />
<Content Include="Themes\Green\Views\DisplayTemplates\Parts\Common.Metadata.ascx" />
<Content Include="Themes\Green\Views\Layout.HomePage.ascx" />
<Content Include="Themes\Green\Views\DisplayTemplates\Items\Blogs.Blog.ascx" />
<Content Include="Themes\Green\Views\DisplayTemplates\Items\Blogs.Blog.Summary.ascx" />
<Content Include="Themes\Green\Views\DisplayTemplates\Items\Blogs.BlogPost.Summary.ascx" />
<Content Include="Themes\Green\Views\Footer.ascx" />
<Content Include="Themes\Green\Views\Layout.ascx" />
<Content Include="Themes\Green\Views\ListOfComments.ascx" />
<Content Include="Themes\SafeMode\Content\orchard.ico" />
<Content Include="Themes\SafeMode\Styles\ie6.css" />
<Content Include="Themes\SafeMode\Styles\images\backgroundHeader.gif" />
@@ -322,7 +204,6 @@
</ItemGroup>
<ItemGroup>
<Folder Include="App_Data\" />
<Folder Include="Themes\ClassicDark\DesignerNotes\" />
<Folder Include="Themes\SafeMode\Content\Images\" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />

View File

@@ -17,7 +17,6 @@ using Orchard.UI.Zones;
namespace Orchard.ContentManagement {
public class DefaultContentDisplay : IContentDisplay {
private readonly Lazy<IEnumerable<IContentHandler>> _handlers;
private readonly IShapeHelperFactory _shapeHelperFactory;
private readonly IShapeFactory _shapeFactory;
private readonly IShapeTableManager _shapeTableManager;
private readonly IWorkContextAccessor _workContextAccessor;
@@ -27,7 +26,6 @@ namespace Orchard.ContentManagement {
public DefaultContentDisplay(
Lazy<IEnumerable<IContentHandler>> handlers,
IShapeHelperFactory shapeHelperFactory,
IShapeFactory shapeFactory,
IShapeTableManager shapeTableManager,
IWorkContextAccessor workContextAccessor,
@@ -35,7 +33,6 @@ namespace Orchard.ContentManagement {
Lazy<IThemeService> themeService,
RequestContext requestContext) {
_handlers = handlers;
_shapeHelperFactory = shapeHelperFactory;
_shapeFactory = shapeFactory;
_shapeTableManager = shapeTableManager;
_workContextAccessor = workContextAccessor;
@@ -68,7 +65,7 @@ namespace Orchard.ContentManagement {
itemShape.ContentItem = content.ContentItem;
itemShape.Metadata.DisplayType = actualDisplayType;
var context = new BuildDisplayContext(itemShape, content, actualDisplayType, _shapeHelperFactory);
var context = new BuildDisplayContext(itemShape, content, actualDisplayType, _shapeFactory);
BindPlacement(context, actualDisplayType);
_handlers.Value.Invoke(handler => handler.BuildDisplay(context), Logger);
@@ -86,7 +83,7 @@ namespace Orchard.ContentManagement {
dynamic itemShape = CreateItemShape(actualShapeType);
itemShape.ContentItem = content.ContentItem;
var context = new BuildEditorContext(itemShape, content, _shapeHelperFactory);
var context = new BuildEditorContext(itemShape, content, _shapeFactory);
BindPlacement(context, null);
_handlers.Value.Invoke(handler => handler.BuildEditor(context), Logger);
@@ -104,7 +101,7 @@ namespace Orchard.ContentManagement {
dynamic itemShape = CreateItemShape(actualShapeType);
itemShape.ContentItem = content.ContentItem;
var context = new UpdateEditorContext(itemShape, content, updater, _shapeHelperFactory);
var context = new UpdateEditorContext(itemShape, content, updater, _shapeFactory);
BindPlacement(context, null);
_handlers.Value.Invoke(handler => handler.UpdateEditor(context), Logger);

View File

@@ -30,19 +30,33 @@ namespace Orchard.ContentManagement.Drivers {
[Obsolete("Provided while transitioning to factory variations")]
public ContentShapeResult ContentShape(IShape shape) {
return ContentShapeImplementation(shape.Metadata.Type, Zone, () => shape);
return ContentShapeImplementation(shape.Metadata.Type, Zone, ctx => shape);
}
public ContentShapeResult ContentShape(string shapeType, Func<dynamic> factory) {
return ContentShapeImplementation(shapeType, null, factory);
return ContentShapeImplementation(shapeType, null, ctx => factory());
}
public ContentShapeResult ContentShape(string shapeType, string defaultLocation, Func<dynamic> factory) {
return ContentShapeImplementation(shapeType, defaultLocation, ctx => factory());
}
public ContentShapeResult ContentShape(string shapeType, Func<dynamic, dynamic> factory) {
return ContentShapeImplementation(shapeType, null, ctx=>factory(CreateShape(ctx, shapeType)));
}
public ContentShapeResult ContentShape(string shapeType, string defaultLocation, Func<dynamic, dynamic> factory) {
return ContentShapeImplementation(shapeType, defaultLocation, factory);
}
private ContentShapeResult ContentShapeImplementation(string shapeType, string defaultLocation, Func<object> factory) {
return new ContentShapeResult(shapeType, Prefix, factory).Location(defaultLocation);
private ContentShapeResult ContentShapeImplementation(string shapeType, string defaultLocation, Func<BuildShapeContext, object> shapeBuilder) {
return new ContentShapeResult(shapeType, Prefix, shapeBuilder).Location(defaultLocation);
}
private object CreateShape(BuildShapeContext context, string shapeType) {
IShapeFactory shapeFactory = context.New;
return shapeFactory.Create(shapeType);
}
[Obsolete]

View File

@@ -8,9 +8,9 @@ namespace Orchard.ContentManagement.Drivers {
private string _defaultLocation;
private readonly string _shapeType;
private readonly string _prefix;
private readonly Func<dynamic> _shapeBuilder;
private readonly Func<BuildShapeContext, dynamic> _shapeBuilder;
public ContentShapeResult(string shapeType, string prefix, Func<dynamic> shapeBuilder) {
public ContentShapeResult(string shapeType, string prefix, Func<BuildShapeContext, dynamic> shapeBuilder) {
_shapeType = shapeType;
_prefix = prefix;
_shapeBuilder = shapeBuilder;
@@ -30,18 +30,19 @@ namespace Orchard.ContentManagement.Drivers {
return;
dynamic parentShape = context.Shape;
IShape contentShape = _shapeBuilder();
contentShape.Metadata.Prefix = _prefix;
contentShape.Metadata.DisplayType = displayType;
var newShape = _shapeBuilder(context);
ShapeMetadata newShapeMetadata = newShape.Metadata;
newShapeMetadata.Prefix = _prefix;
newShapeMetadata.DisplayType = displayType;
var delimiterIndex = location.IndexOf(':');
if (delimiterIndex < 0) {
parentShape.Zones[location].Add(contentShape);
parentShape.Zones[location].Add(newShape);
}
else {
var zoneName = location.Substring(0, delimiterIndex);
var position = location.Substring(delimiterIndex + 1);
parentShape.Zones[zoneName].Add(contentShape, position);
parentShape.Zones[zoneName].Add(newShape, position);
}
}

View File

@@ -5,8 +5,8 @@ using Orchard.DisplayManagement;
namespace Orchard.ContentManagement.Handlers {
public class BuildDisplayContext : BuildShapeContext {
public BuildDisplayContext(IShape model, IContent content, string displayType, IShapeHelperFactory shapeHelperFactory)
: base(model, content, shapeHelperFactory) {
public BuildDisplayContext(IShape model, IContent content, string displayType, IShapeFactory shapeFactory)
: base(model, content, shapeFactory) {
DisplayType = displayType;
}

View File

@@ -2,8 +2,8 @@ using Orchard.DisplayManagement;
namespace Orchard.ContentManagement.Handlers {
public class BuildEditorContext : BuildShapeContext {
public BuildEditorContext(IShape model, IContent content, IShapeHelperFactory shapeHelperFactory)
: base(model, content, shapeHelperFactory) {
public BuildEditorContext(IShape model, IContent content, IShapeFactory shapeFactory)
: base(model, content, shapeFactory) {
}
}
}

View File

@@ -3,10 +3,10 @@ using Orchard.DisplayManagement;
namespace Orchard.ContentManagement.Handlers {
public class BuildShapeContext {
protected BuildShapeContext(IShape shape, IContent content, IShapeHelperFactory shapeHelperFactory) {
protected BuildShapeContext(IShape shape, IContent content, IShapeFactory shapeFactory) {
Shape = shape;
ContentItem = content.ContentItem;
New = shapeHelperFactory.CreateHelper();
New = shapeFactory;
FindPlacement = (partType, defaultLocation) => defaultLocation;
}

View File

@@ -2,8 +2,8 @@ using Orchard.DisplayManagement;
namespace Orchard.ContentManagement.Handlers {
public class UpdateEditorContext : BuildEditorContext {
public UpdateEditorContext(IShape model, IContent content, IUpdateModel updater, IShapeHelperFactory shapeHelperFactory)
: base(model, content, shapeHelperFactory) {
public UpdateEditorContext(IShape model, IContent content, IUpdateModel updater, IShapeFactory shapeFactory)
: base(model, content, shapeFactory) {
Updater = updater;
}

View File

@@ -1,5 +0,0 @@
namespace Orchard.DisplayManagement {
public interface IShapeHelperFactory : IDependency {
dynamic CreateHelper();
}
}

View File

@@ -7,21 +7,21 @@ using Orchard.DisplayManagement.Shapes;
namespace Orchard.DisplayManagement.Implementation {
public class DefaultShapeFactory : IShapeFactory {
public class DefaultShapeFactory : Clay, IShapeFactory {
private readonly IEnumerable<Lazy<IShapeFactoryEvents>> _events;
private readonly IShapeTableManager _shapeTableManager;
private readonly Lazy<IShapeHelperFactory> _shapeHelperFactory;
public DefaultShapeFactory(
IEnumerable<Lazy<IShapeFactoryEvents>> events,
IShapeTableManager shapeTableManager,
Lazy<IShapeHelperFactory> shapeHelperFactory) {
IShapeTableManager shapeTableManager) : base(new ShapeFactoryBehavior()) {
_events = events;
_shapeTableManager = shapeTableManager;
_shapeHelperFactory = shapeHelperFactory;
}
class ShapeFactoryBehavior : ClayBehavior {
public override object InvokeMember(Func<object> proceed, object target, string name, INamedEnumerable<object> args) {
return ((DefaultShapeFactory)target).Create(name, args);
}
}
public IShape Create(string shapeType, INamedEnumerable<object> parameters) {
@@ -34,7 +34,7 @@ namespace Orchard.DisplayManagement.Implementation {
defaultShapeTable.Descriptors.TryGetValue(shapeType, out shapeDescriptor);
var creatingContext = new ShapeCreatingContext {
New = _shapeHelperFactory.Value.CreateHelper(),
New = this,
ShapeFactory = this,
ShapeType = shapeType,
OnCreated = new List<Action<ShapeCreatedContext>>()

View File

@@ -1,15 +0,0 @@
using ClaySharp;
namespace Orchard.DisplayManagement.Implementation {
public class ShapeHelper {
private readonly IShapeFactory _shapeFactory;
public ShapeHelper(IShapeFactory shapeFactory) {
_shapeFactory = shapeFactory;
}
public IShape CreateShapeType(string shapeType, INamedEnumerable<object> parameters) {
return _shapeFactory.Create(shapeType, parameters);
}
}
}

View File

@@ -1,26 +0,0 @@
using System;
using ClaySharp;
namespace Orchard.DisplayManagement.Implementation {
public class ShapeHelperFactory : IShapeHelperFactory {
static private readonly ShapeHelperBehavior[] _behaviors = new[] { new ShapeHelperBehavior() };
private readonly IShapeFactory _shapeFactory;
public ShapeHelperFactory(IShapeFactory shapeFactory) {
_shapeFactory = shapeFactory;
}
public dynamic CreateHelper() {
return ClayActivator.CreateInstance<ShapeHelper>(
_behaviors,
_shapeFactory);
}
class ShapeHelperBehavior : ClayBehavior {
public override object InvokeMember(Func<object> proceed, object target, string name, INamedEnumerable<object> args) {
return ((ShapeHelper)target).CreateShapeType(name, args);
}
}
}
}

View File

@@ -1,25 +1,33 @@
using JetBrains.Annotations;
using System;
using JetBrains.Annotations;
using Orchard.Data;
using Orchard.ContentManagement;
using Orchard.DisplayManagement;
using Orchard.Security;
using Orchard.UI.Notify;
namespace Orchard.Environment {
[UsedImplicitly]
public class OrchardServices : IOrchardServices {
private readonly Lazy<IShapeFactory> _shapeFactory;
public OrchardServices(
IContentManager contentManager,
ITransactionManager transactionManager,
IAuthorizer authorizer,
INotifier notifier) {
INotifier notifier,
Lazy<IShapeFactory> shapeFactory) {
_shapeFactory = shapeFactory;
ContentManager = contentManager;
TransactionManager = transactionManager;
Authorizer = authorizer;
Notifier = notifier;
}
public IContentManager ContentManager { get; set; }
public ITransactionManager TransactionManager {get;set;}
public IAuthorizer Authorizer { get; set; }
public INotifier Notifier { get; set; }
public IContentManager ContentManager { get; private set; }
public ITransactionManager TransactionManager { get; private set; }
public IAuthorizer Authorizer { get; private set; }
public INotifier Notifier { get; private set; }
public dynamic New { get { return _shapeFactory.Value; } }
}
}

View File

@@ -7,7 +7,8 @@ namespace Orchard {
public interface IOrchardServices : IDependency {
IContentManager ContentManager { get; }
ITransactionManager TransactionManager { get; }
IAuthorizer Authorizer { get; set; }
IAuthorizer Authorizer { get; }
INotifier Notifier { get; }
dynamic New { get; }
}
}

View File

@@ -10,8 +10,8 @@ using Orchard.DisplayManagement;
namespace Orchard.Mvc.Html {
public class Shapes : IDependency {
public Shapes(IShapeHelperFactory shapeHelperFactory) {
New = shapeHelperFactory.CreateHelper();
public Shapes(IShapeFactory shapeFactory) {
New = shapeFactory;
}
dynamic New { get; set; }

View File

@@ -29,9 +29,9 @@ namespace Orchard.Mvc.ViewEngines.Razor {
public new dynamic Layout { get { return _layout; } }
public WorkContext WorkContext { get { return _workContext; } }
public dynamic New { get { return _new; } }
public dynamic New { get { return ShapeFactory; } }
public IDisplayHelperFactory DisplayHelperFactory { get; set; }
public IShapeHelperFactory ShapeHelperFactory { get; set; }
public IShapeFactory ShapeFactory { get; set; }
public IAuthorizer Authorizer { get; set; }
@@ -78,7 +78,6 @@ namespace Orchard.Mvc.ViewEngines.Razor {
_localizer = LocalizationUtilities.Resolve(ViewContext, VirtualPath);
_display = DisplayHelperFactory.CreateHelper(ViewContext, this);
_layout = _workContext.Layout;
_new = ShapeHelperFactory.CreateHelper();
}
public bool AuthorizedFor(Permission permission) {

View File

@@ -25,12 +25,12 @@ namespace Orchard.Mvc {
public Localizer T { get { return _localizer; } }
public dynamic Display { get { return _display; } }
public dynamic New { get { return _new; } }
public dynamic New { get { return ShapeFactory; } }
public dynamic Layout { get { return _layout; } }
public WorkContext WorkContext { get { return _workContext; } }
public IDisplayHelperFactory DisplayHelperFactory { get; set; }
public IShapeHelperFactory ShapeHelperFactory { get; set; }
public IShapeFactory ShapeFactory { get; set; }
public IAuthorizer Authorizer { get; set; }
@@ -75,7 +75,6 @@ namespace Orchard.Mvc {
_localizer = LocalizationUtilities.Resolve(viewContext, AppRelativeVirtualPath);
_display = DisplayHelperFactory.CreateHelper(viewContext, this);
_layout = _workContext.Layout;
_new = ShapeHelperFactory.CreateHelper();
base.RenderView(viewContext);
}

View File

@@ -429,7 +429,6 @@
<Compile Include="DisplayManagement\Descriptors\ShapeAttributeStrategy\ShapeAttributeBindingStrategy.cs" />
<Compile Include="DisplayManagement\Implementation\DefaultDisplayManager.cs" />
<Compile Include="DisplayManagement\Implementation\DefaultShapeFactory.cs" />
<Compile Include="DisplayManagement\IShapeHelperFactory.cs" />
<Compile Include="DisplayManagement\IDisplayHelperFactory.cs" />
<Compile Include="DisplayManagement\IShape.cs" />
<Compile Include="DisplayManagement\Shapes\Shape.cs" />
@@ -441,8 +440,6 @@
<Compile Include="DisplayManagement\Implementation\IDisplayManager.cs" />
<Compile Include="DisplayManagement\IShapeFactory.cs" />
<Compile Include="DisplayManagement\Descriptors\Interfaces.cs" />
<Compile Include="DisplayManagement\Implementation\ShapeHelper.cs" />
<Compile Include="DisplayManagement\Implementation\ShapeHelperFactory.cs" />
<Compile Include="Environment\DefaultWorkContextAccessor.cs" />
<Compile Include="Environment\IHostLocalRestart.cs" />
<Compile Include="Environment\IShellContainerRegistrations.cs" />

View File

@@ -7,12 +7,15 @@ namespace Orchard.UI.Admin.Notification {
public class AdminNotificationFilter : FilterProvider, IResultFilter {
private readonly INotificationManager _notificationManager;
private readonly IWorkContextAccessor _workContextAccessor;
private readonly IShapeHelperFactory _shapeHelperFactory;
private readonly dynamic _shapeFactory;
public AdminNotificationFilter(INotificationManager notificationManager, IWorkContextAccessor workContextAccessor, IShapeHelperFactory shapeHelperFactory) {
public AdminNotificationFilter(
INotificationManager notificationManager,
IWorkContextAccessor workContextAccessor,
IShapeFactory shapeFactory) {
_notificationManager = notificationManager;
_workContextAccessor = workContextAccessor;
_shapeHelperFactory = shapeHelperFactory;
_shapeFactory = shapeFactory;
}
public void OnResultExecuting(ResultExecutingContext filterContext) {
@@ -27,10 +30,9 @@ namespace Orchard.UI.Admin.Notification {
if (!messageEntries.Any())
return;
var shape = _shapeHelperFactory.CreateHelper();
var messagesZone = _workContextAccessor.GetContext(filterContext).Layout.Zones["Messages"];
foreach(var messageEntry in messageEntries)
messagesZone = messagesZone.Add(shape.Message(messageEntry));
messagesZone = messagesZone.Add(_shapeFactory.Message(messageEntry));
}
public void OnResultExecuted(ResultExecutedContext filterContext) {}

View File

@@ -9,17 +9,19 @@ namespace Orchard.UI.Navigation {
public class MenuFilter : FilterProvider, IResultFilter {
private readonly INavigationManager _navigationManager;
private readonly IWorkContextAccessor _workContextAccessor;
private readonly IShapeHelperFactory _shapeHelperFactory;
private readonly dynamic _shapeFactory;
public MenuFilter(INavigationManager navigationManager, IWorkContextAccessor workContextAccessor, IShapeHelperFactory shapeHelperFactory) {
public MenuFilter(
INavigationManager navigationManager,
IWorkContextAccessor workContextAccessor,
IShapeFactory shapeFactory) {
_navigationManager = navigationManager;
_workContextAccessor = workContextAccessor;
_shapeHelperFactory = shapeHelperFactory;
_shapeFactory = shapeFactory;
}
public void OnResultExecuting(ResultExecutingContext filterContext) {
var workContext = _workContextAccessor.GetContext(filterContext);
var shape = _shapeHelperFactory.CreateHelper();
var menuName = "main";
if (AdminFilter.IsApplied(filterContext.RequestContext))
@@ -27,24 +29,24 @@ namespace Orchard.UI.Navigation {
var menuItems = _navigationManager.BuildMenu(menuName);
var menuShape = shape.Menu().MenuName(menuName);
PopulateMenu(shape, menuShape, menuItems);
var menuShape = _shapeFactory.Menu().MenuName(menuName);
PopulateMenu(_shapeFactory, menuShape, menuItems);
workContext.Layout.Navigation.Add(menuShape);
}
private void PopulateMenu(dynamic shape, dynamic parentShape, IEnumerable<MenuItem> menuItems) {
private void PopulateMenu(dynamic shapeFactory, dynamic parentShape, IEnumerable<MenuItem> menuItems) {
foreach (var menuItem in menuItems) {
var menuItemShape = shape.MenuItem()
var menuItemShape = shapeFactory.MenuItem()
.Text(menuItem.Text)
.Href(menuItem.Href)
.RouteValues(menuItem.RouteValues)
.Item(menuItem)
.Menu(shape)
.Menu(shapeFactory)
.Parent(parentShape);
if (menuItem.Items != null && menuItem.Items.Any()) {
PopulateMenu(shape, menuItemShape, menuItem.Items);
PopulateMenu(shapeFactory, menuItemShape, menuItem.Items);
}
parentShape.Add(menuItemShape, menuItem.Position);

View File

@@ -12,12 +12,15 @@ namespace Orchard.UI.Notify {
private const string TempDataMessages = "messages";
private readonly INotifier _notifier;
private readonly IWorkContextAccessor _workContextAccessor;
private readonly IShapeHelperFactory _shapeHelperFactory;
private readonly dynamic _shapeFactory;
public NotifyFilter(INotifier notifier, IWorkContextAccessor workContextAccessor, IShapeHelperFactory shapeHelperFactory) {
public NotifyFilter(
INotifier notifier,
IWorkContextAccessor workContextAccessor,
IShapeFactory shapeFactory) {
_notifier = notifier;
_workContextAccessor = workContextAccessor;
_shapeHelperFactory = shapeHelperFactory;
_shapeFactory = shapeFactory;
}
public void OnActionExecuting(ActionExecutingContext filterContext) {
@@ -82,10 +85,9 @@ namespace Orchard.UI.Notify {
if (!messageEntries.Any())
return;
var shape = _shapeHelperFactory.CreateHelper();
var messagesZone = _workContextAccessor.GetContext(filterContext).Layout.Zones["Messages"];
foreach(var messageEntry in messageEntries)
messagesZone = messagesZone.Add(shape.Message(messageEntry));
messagesZone = messagesZone.Add(_shapeFactory.Message(messageEntry));
//todo: (heskew) probably need to keep duplicate messages from being pushed into the zone like the previous behavior
//baseViewModel.Messages = baseViewModel.Messages == null ? messageEntries .Messages.Union(messageEntries).ToList();

View File

@@ -7,24 +7,27 @@ namespace Orchard.UI.Resources {
public class ResourceFilter : FilterProvider, IResultFilter {
private readonly IResourceManager _resourceManager;
private readonly IWorkContextAccessor _workContextAccessor;
private readonly dynamic _shapeFactory;
public ResourceFilter(IResourceManager resourceManager, IWorkContextAccessor workContextAccessor, IShapeHelperFactory shapeHelperFactory) {
public ResourceFilter(
IResourceManager resourceManager,
IWorkContextAccessor workContextAccessor,
IShapeFactory shapeFactory) {
_resourceManager = resourceManager;
_workContextAccessor = workContextAccessor;
Shape = shapeHelperFactory.CreateHelper();
_shapeFactory = shapeFactory;
}
private dynamic Shape { get; set; }
public void OnResultExecuting(ResultExecutingContext filterContext) {
var ctx = _workContextAccessor.GetContext();
var head = ctx.Layout.Head;
var tail = ctx.Layout.Tail;
head.Add(Shape.Metas().ResourceManager(_resourceManager));
head.Add(Shape.HeadLinks().ResourceManager(_resourceManager));
head.Add(Shape.StylesheetLinks().ResourceManager(_resourceManager));
head.Add(Shape.HeadScripts().ResourceManager(_resourceManager));
tail.Add(Shape.FootScripts().ResourceManager(_resourceManager));
head.Add(_shapeFactory.Metas().ResourceManager(_resourceManager));
head.Add(_shapeFactory.HeadLinks().ResourceManager(_resourceManager));
head.Add(_shapeFactory.StylesheetLinks().ResourceManager(_resourceManager));
head.Add(_shapeFactory.HeadScripts().ResourceManager(_resourceManager));
tail.Add(_shapeFactory.FootScripts().ResourceManager(_resourceManager));
}
public void OnResultExecuted(ResultExecutedContext filterContext) {