2014-08-15 12:47:50 -06:00
|
|
|
|
using System.Globalization;
|
|
|
|
|
|
using System.Linq;
|
|
|
|
|
|
using System.Web;
|
2014-06-08 17:16:28 +02:00
|
|
|
|
using System.Web.Mvc;
|
|
|
|
|
|
using System.Web.Routing;
|
|
|
|
|
|
using Umbraco.Core.Models;
|
|
|
|
|
|
using Umbraco.Web.Models;
|
|
|
|
|
|
using Umbraco.Web.Routing;
|
|
|
|
|
|
|
|
|
|
|
|
namespace Umbraco.Web.Mvc
|
|
|
|
|
|
{
|
|
|
|
|
|
public abstract class UmbracoVirtualNodeRouteHandler : IRouteHandler
|
|
|
|
|
|
{
|
|
|
|
|
|
public IHttpHandler GetHttpHandler(RequestContext requestContext)
|
|
|
|
|
|
{
|
|
|
|
|
|
var umbracoContext = UmbracoContext.Current;
|
|
|
|
|
|
|
|
|
|
|
|
var found = FindContent(requestContext, umbracoContext);
|
|
|
|
|
|
if (found == null) return new NotFoundHandler();
|
|
|
|
|
|
|
|
|
|
|
|
umbracoContext.PublishedContentRequest = new PublishedContentRequest(
|
|
|
|
|
|
umbracoContext.CleanedUmbracoUrl, umbracoContext.RoutingContext)
|
|
|
|
|
|
{
|
|
|
|
|
|
PublishedContent = found
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
//allows inheritors to change the pcr
|
|
|
|
|
|
PreparePublishedContentRequest(umbracoContext.PublishedContentRequest);
|
|
|
|
|
|
|
|
|
|
|
|
//create the render model
|
|
|
|
|
|
var renderModel = new RenderModel(umbracoContext.PublishedContentRequest.PublishedContent, umbracoContext.PublishedContentRequest.Culture);
|
|
|
|
|
|
|
|
|
|
|
|
//assigns the required tokens to the request
|
|
|
|
|
|
requestContext.RouteData.DataTokens.Add("umbraco", renderModel);
|
|
|
|
|
|
requestContext.RouteData.DataTokens.Add("umbraco-doc-request", umbracoContext.PublishedContentRequest);
|
|
|
|
|
|
requestContext.RouteData.DataTokens.Add("umbraco-context", umbracoContext);
|
|
|
|
|
|
|
|
|
|
|
|
return new MvcHandler(requestContext);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
protected abstract IPublishedContent FindContent(RequestContext requestContext, UmbracoContext umbracoContext);
|
|
|
|
|
|
|
|
|
|
|
|
protected virtual void PreparePublishedContentRequest(PublishedContentRequest publishedContentRequest)
|
|
|
|
|
|
{
|
2014-10-10 14:45:38 +11:00
|
|
|
|
publishedContentRequest.Prepare();
|
2014-06-08 17:16:28 +02:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|