Getting routable to work for the ItemDisplayLink HtmlHelper ext.

--HG--
branch : dev
This commit is contained in:
Nathan Heskew
2010-07-13 17:17:05 -07:00
parent f76623e117
commit 5bf2be1e19
5 changed files with 27 additions and 7 deletions

View File

@@ -77,6 +77,7 @@
<Compile Include="Contents\Controllers\ItemController.cs" />
<Compile Include="Contents\Drivers\ContentsDriver.cs" />
<Compile Include="Contents\Handlers\ContentsHandler.cs" />
<Compile Include="Routable\Services\RoutableHomePageProvider.cs" />
<Compile Include="Contents\ViewModels\EditItemViewModel.cs" />
<Compile Include="Contents\ViewModels\ListContentsViewModel.cs" />
<Compile Include="Contents\ViewModels\ListContentTypesViewModel.cs" />
@@ -276,7 +277,7 @@
<Content Include="Routable\Module.txt" />
<Content Include="Routable\Scripts\jquery.slugify.js" />
<Content Include="Routable\Views\EditorTemplates\Parts\Routable.IsRoutable.ascx" />
<Content Include="Routable\Views\Item\Display.aspx" />
<Content Include="Routable\Views\Item\Display.ascx" />
<Content Include="Settings\Module.txt" />
<Content Include="Settings\Styles\admin.css" />
<Content Include="Settings\Views\Admin\Index.ascx" />

View File

@@ -18,7 +18,6 @@ namespace Orchard.Core.Routable.Drivers {
T = NullLocalizer.Instance;
}
private const string TemplateName = "Parts/Routable.IsRoutable";
public Localizer T { get; set; }

View File

@@ -1,11 +1,31 @@
using Orchard.ContentManagement.Handlers;
using System.Web.Routing;
using Orchard.ContentManagement;
using Orchard.ContentManagement.Handlers;
using Orchard.Core.Routable.Models;
using Orchard.Data;
namespace Orchard.Core.Routable.Handlers {
public class RoutableHandler : ContentHandler {
public RoutableHandler(IRepository<RoutableRecord> repository) {
private readonly IRoutablePathConstraint _routablePathConstraint;
public RoutableHandler(IRepository<RoutableRecord> repository, IRoutablePathConstraint routablePathConstraint) {
_routablePathConstraint = routablePathConstraint;
Filters.Add(StorageFilter.For(repository));
OnPublished<IsRoutable>((context, routable) => _routablePathConstraint.AddPath(routable.Record.Path));
}
}
public class IsRoutableHandler : ContentHandlerBase {
public override void GetContentItemMetadata(GetContentItemMetadataContext context) {
var routable = context.ContentItem.As<IsRoutable>();
if (routable != null) {
context.Metadata.DisplayRouteValues = new RouteValueDictionary {
{"Area", "Routable"},
{"Controller", "Item"},
{"Action", "Display"},
{"path", routable.Record.Path}
};
}
}
}
}

View File

@@ -0,0 +1,3 @@
<%@ Control Language="C#" Inherits="Orchard.Mvc.ViewUserControl<Orchard.Core.Routable.ViewModels.RoutableDisplayViewModel>" %>
<% Html.AddTitleParts(Model.Routable.Item.Title); %>
<%: Html.DisplayForItem(m=>m.Routable) %>

View File

@@ -1,3 +0,0 @@
<%@ Page Language="C#" Inherits="Orchard.Mvc.ViewPage<Orchard.Core.Routable.ViewModels.RoutableDisplayViewModel>" %>
<% Html.AddTitleParts(Model.Routable.Item.Title); %>
<%: Html.DisplayForItem(m=>m.Routable) %>