Content manager ordering templates by position property

--HG--
extra : convert_revision : svn%3A5ff7c347-ad56-4c35-b696-ccb81de16e03/trunk%4042797
This commit is contained in:
loudej
2009-12-01 05:48:36 +00:00
parent 15b6b7116a
commit 2816c53342
6 changed files with 49 additions and 7 deletions

View File

@@ -172,7 +172,26 @@ namespace Orchard.Tests.Models {
return modelRecord;
}
[Test]
public void EditorsShouldBeOrderedByPositionAndDefaultPositionIsSix() {
var alpha = _manager.New("alpha");
var templates = _manager.GetDisplays(alpha);
Assert.That(templates.Count(), Is.EqualTo(3));
var t0 = templates.First();
var t1 = templates.Skip(1).First();
var t2 = templates.Skip(2).First();
Assert.That(t0.Model, Is.TypeOf<Alpha>());
Assert.That(t1.Model, Is.TypeOf<Flavored>());
Assert.That(t2.Model, Is.TypeOf<Styled>());
Assert.That(t0.Position, Is.EqualTo("3"));
Assert.That(t1.Position, Is.Null);
Assert.That(t2.Position, Is.EqualTo("10"));
}
}
}

View File

@@ -1,10 +1,15 @@
using Orchard.Models;
using System.Collections.Generic;
using Orchard.Models;
using Orchard.Models.Driver;
using Orchard.UI.Models;
namespace Orchard.Tests.Models.Stubs {
public class AlphaProvider : ContentProvider {
public override System.Collections.Generic.IEnumerable<Orchard.Models.ContentType> GetContentTypes() {
return new[] {new ContentType {Name = "alpha"}};
public AlphaProvider() {
OnGetDisplays<Alpha>((ctx, part) => ctx.Displays.Add(new ModelTemplate(part) { Position = "3" }));
}
public override IEnumerable<ContentType> GetContentTypes() {
return new[] { new ContentType { Name = "alpha" } };
}
protected override void Activating(ActivatingContentContext context) {
if (context.ContentType == "alpha") {

View File

@@ -1,7 +1,11 @@
using Orchard.Models.Driver;
using Orchard.UI.Models;
namespace Orchard.Tests.Models.Stubs {
public class FlavoredProvider : ContentProvider {
public FlavoredProvider() {
OnGetDisplays<Flavored>((ctx, part) => ctx.Displays.Add(new ModelTemplate(part)));
}
protected override void Activating(ActivatingContentContext context) {
if (context.ContentType == "beta" || context.ContentType == "alpha") {
context.Builder.Weld<Flavored>();

View File

@@ -1,7 +1,12 @@
using Orchard.Models.Driver;
using Orchard.UI.Models;
namespace Orchard.Tests.Models.Stubs {
public class StyledProvider : ContentProvider {
public StyledProvider() {
OnGetDisplays<Styled>((ctx, part) => ctx.Displays.Add(new ModelTemplate(part) { Position = "10" }));
}
protected override void Activating(ActivatingContentContext context) {
if (context.ContentType == "alpha") {
context.Builder.Weld<Styled>();

View File

@@ -1,10 +1,12 @@
using System.Collections.Generic;
using System;
using System.Collections.Generic;
using System.Linq;
using Autofac;
using Orchard.Data;
using Orchard.Models.Driver;
using Orchard.Models.Records;
using Orchard.UI.Models;
using Orchard.UI.Navigation;
namespace Orchard.Models {
public class DefaultContentManager : IContentManager {
@@ -125,7 +127,7 @@ namespace Orchard.Models {
foreach (var driver in Drivers) {
driver.GetDisplays(context);
}
return context.Displays;
return OrderTemplates(context.Displays);
}
public IEnumerable<ModelTemplate> GetEditors(IContent content) {
@@ -133,7 +135,7 @@ namespace Orchard.Models {
foreach (var driver in Drivers) {
driver.GetEditors(context);
}
return context.Editors;
return OrderTemplates(context.Editors);
}
public IEnumerable<ModelTemplate> UpdateEditors(IContent content, IUpdateModel updater) {
@@ -141,7 +143,13 @@ namespace Orchard.Models {
foreach (var driver in Drivers) {
driver.UpdateEditors(context);
}
return context.Editors;
return OrderTemplates(context.Editors);
}
private static IEnumerable<ModelTemplate> OrderTemplates(IEnumerable<ModelTemplate> templates) {
var comparer = new PositionComparer();
return templates.OrderBy(x => x.Position ?? "6", comparer);
}
public IContentQuery<ContentItem> Query() {

View File

@@ -13,5 +13,6 @@
public string Prefix { get; set; }
public string TemplateName { get; set; }
public string Position { get; set; }
}
}