/// <summary>Maps a content route to the route collection.</summary> /// <param name="routes">The route collection to extend.</param> /// <param name="name">The name of this route.</param> /// <param name="engine">The N2 Engine instance used by the content route.</param> /// <returns>The added content route instance.</returns> public static ContentRoute MapContentRoute <T>(this AreaRegistrationContext arc) where T : ContentItem { var state = arc.State as AreaRegistrationState; if (state == null) { throw new ArgumentException("The area registration context didn't contain an AreaRegistrationState.", "arc"); } if (state.Engine == null) { throw new ArgumentException("The area registration state an IEngine.", "arc"); } var routeHandler = new MvcRouteHandler(); var controllerMapper = state.Engine.Resolve <IControllerMapper>(); var innerRoute = new Route("{area}/{controller}/{action}", new RouteValueDictionary(new { action = "Index" }), new RouteValueDictionary(), new RouteValueDictionary(new { engine = state.Engine, area = arc.AreaName }), routeHandler); var cr = new ContentRoute <T>(state.Engine, routeHandler, controllerMapper, innerRoute); arc.Routes.Add(arc.AreaName + "_" + typeof(T).FullName, cr); return(cr); }
/// <summary>Maps a content route to the route collection.</summary> /// <param name="routes">The route collection to extend.</param> /// <param name="name">The name of this route.</param> /// <param name="engine">The N2 Engine instance used by the content route.</param> /// <returns>The added content route instance.</returns> public static ContentRoute MapContentRoute(this RouteCollection routes, string name, IEngine engine) { var cr = new ContentRoute(engine); routes.Add(name, cr); return(cr); }
/// <summary>Maps a content route to the route collection.</summary> /// <param name="routes">The route collection to extend.</param> /// <param name="name">The name of this route.</param> /// <param name="engine">The N2 Engine instance used by the content route.</param> /// <typeparam name="T">The type of content items to route.</typeparam> /// <returns>The added content route instance.</returns> public static ContentRoute MapContentRoute <T>(this RouteCollection routes, string name, IEngine engine) where T : ContentItem { var cr = new ContentRoute <T>(engine); routes.Add(name, cr); return(cr); }
public virtual void RegisterArea(RouteCollection routes, ViewEngineCollection viewEngines, IEngine engine) { var route = new ContentRoute<IManagementHomePart>(engine); routes.Insert(0, route); var viewLocationFormats = new[] { Url.ResolveTokens("{ManagementUrl}/Myself/Analytics/Views/{1}/{0}.ascx"), Url.ResolveTokens("{ManagementUrl}/Myself/Analytics/Views/Shared/{0}.ascx") }; viewEngines.Insert(0, new PrivateViewEngineDecorator(new WebFormViewEngine { AreaViewLocationFormats = viewLocationFormats, PartialViewLocationFormats = viewLocationFormats }, route)); }
/// <summary>Maps a content route to the route collection.</summary> /// <param name="routes">The route collection to extend.</param> /// <param name="name">The name of this route.</param> /// <param name="engine">The N2 Engine instance used by the content route.</param> /// <typeparam name="T">The type of content items to route.</typeparam> /// <returns>The added content route instance.</returns> public static ContentRoute MapContentRoute <T>(this RouteCollection routes, string name, IEngine engine) { var nonContentRoutesNorGenericRoutes = SelectRoutesWithIndices(routes) .Where(x => !(x.Value is ContentRoute) || !x.Value.GetType().ContainsGenericParameters); int indexOfFirstNonContentRoute = nonContentRoutesNorGenericRoutes.Any() ? nonContentRoutesNorGenericRoutes.Select(i => i.Key).FirstOrDefault() : routes.Count; var cr = new ContentRoute <T>(engine); routes.Insert(indexOfFirstNonContentRoute, cr); return(cr); }
/// <summary>Maps a content route to the route collection.</summary> /// <param name="routes">The route collection to extend.</param> /// <param name="name">The name of this route.</param> /// <param name="engine">The N2 Engine instance used by the content route.</param> /// <returns>The added content route instance.</returns> public static ContentRoute MapContentRoute(this RouteCollection routes, string name, IEngine engine) { var nonContentRoutes = SelectRoutesWithIndices(routes) .Where(x => !(x.Value is ContentRoute)); int indexOfFirstNonContentRoute = nonContentRoutes.Any() ? nonContentRoutes.Select(i => i.Key).FirstOrDefault() : routes.Count; var cr = new ContentRoute(engine); routes.Insert(indexOfFirstNonContentRoute, cr); return(cr); }
private static ContentRoute MapContentRoute(this RouteCollection routes, string name, IEngine engine, string url, object defaults, object constraints, string[] namespaces) { var rh = new MvcRouteHandler(); Route innerRoute = new Route(url, rh); innerRoute.Defaults = new RouteValueDictionary(defaults); innerRoute.Constraints = new RouteValueDictionary(constraints); innerRoute.DataTokens = new RouteValueDictionary(); if ((namespaces != null) && (namespaces.Length > 0)) { innerRoute.DataTokens["Namespaces"] = namespaces; } var cr = new ContentRoute(engine, rh, null, innerRoute); routes.Add(name, cr); return(cr); }
public override void SetUp() { base.SetUp(); root = CreateOneItem<RegularPage>(1, "root", null); about = CreateOneItem<AboutUsSectionPage>(2, "about", root); executives = CreateOneItem<ExecutiveTeamPage>(3, "executives", about); search = CreateOneItem<SearchPage>(4, "search", root); var typeFinder = new FakeTypeFinder2(); typeFinder.typeMap[typeof(ContentItem)] = this.NearbyTypes() .BelowNamespace("N2.Extensions.Tests.Mvc.Models").AssignableTo<ContentItem>().Union(typeof(ContentItem)).ToArray(); typeFinder.typeMap[typeof(IController)] = this.NearbyTypes() .BelowNamespace("N2.Extensions.Tests.Mvc.Controllers").AssignableTo<IController>().Except(typeof(AnotherRegularController)) .ToArray(); var changer = new StateChanger(); var definitions = new DefinitionManager(new[] { new DefinitionProvider(new DefinitionBuilder(new DefinitionMap(), typeFinder, new TransformerBase<IUniquelyNamed>[0], TestSupport.SetupEngineSection())) }, new ITemplateProvider[0], new ContentActivator(changer, null, new EmptyProxyFactory()), changer); httpContext = new FakeHttpContext(); var webContext = new FakeWebContextWrapper(httpContext); var host = new Host(webContext, root.ID, root.ID); var parser = TestSupport.Setup(persister, webContext, host); controllerMapper = new ControllerMapper(typeFinder, definitions); Url.DefaultExtension = ""; N2.Web.Url.ApplicationPath = "/"; engine = mocks.DynamicMock<IEngine>(); SetupResult.For(engine.Resolve<ITypeFinder>()).Return(typeFinder); SetupResult.For(engine.Definitions).Return(definitions); SetupResult.For(engine.UrlParser).Return(parser); SetupResult.For(engine.Persister).Return(persister); SetupResult.For(engine.Resolve<RequestPathProvider>()).Return(new RequestPathProvider(webContext, parser, new ErrorNotifier(), new HostSection())); var editUrlManager = new FakeEditUrlManager(); SetupResult.For(engine.ManagementPaths).Return(editUrlManager); engine.Replay(); route = new ContentRoute(engine, new MvcRouteHandler(), controllerMapper, null); routes = new RouteCollection { route }; }
/// <summary>Maps a content route to the route collection.</summary> /// <param name="routes">The route collection to extend.</param> /// <param name="name">The name of this route.</param> /// <param name="engine">The N2 Engine instance used by the content route.</param> /// <param name="append">Append is useful in scenarios where you want to override the routing of specific urls also considered by N2.</param> /// <param name="append">Append is useful in scenarios where you want to override the routing of specific urls also considered by N2.</param> /// <param name="stopRewritableItems">Make the route table stop at items that match an item that can be rewritten to (probably webforms).</param> /// <param name="namespaces">The namespaces the routing engine will look for the controller in</param> /// <returns>The added content route instance.</returns> public static ContentRoute MapContentRoute(this RouteCollection routes, string name, IEngine engine, bool append = false, bool stopRewritableItems = true, string[] namespaces = null) { var cr = new ContentRoute(engine, null, null, null, namespaces) { StopRewritableItems = stopRewritableItems }; if (append) { routes.Add(cr); return(cr); } var nonContentRoutes = SelectRoutesWithIndices(routes) .Where(x => !(x.Value is ContentRoute)); int indexOfFirstNonContentRoute = nonContentRoutes.Any() ? nonContentRoutes.Select(i => i.Key).FirstOrDefault() : routes.Count; routes.Insert(indexOfFirstNonContentRoute, cr); return(cr); }
public override void SetUp() { base.SetUp(); root = CreateOneItem<RegularPage>(1, "root", null); about = CreateOneItem<AboutUsSectionPage>(2, "about", root); executives = CreateOneItem<ExecutiveTeamPage>(3, "executives", about); search = CreateOneItem<SearchPage>(4, "search", root); var typeFinder = new FakeTypeFinder2(); typeFinder.typeMap[typeof(ContentItem)] = this.NearbyTypes() .BelowNamespace("N2.Extensions.Tests.Mvc.Models").AssignableTo<ContentItem>().Union(typeof(ContentItem)).ToArray(); typeFinder.typeMap[typeof(IController)] = this.NearbyTypes() .BelowNamespace("N2.Extensions.Tests.Mvc.Controllers").AssignableTo<IController>().Except(typeof(AnotherRegularController)) .ToArray(); var editUrlManager = new FakeEditUrlManager(); var definitions = new DefinitionManager(new DefinitionBuilder(typeFinder, new EngineSection(), editUrlManager), new N2.Edit.Workflow.StateChanger(), null, new EmptyProxyFactory()); var webContext = new ThreadContext(); var host = new Host(webContext, root.ID, root.ID); var parser = new UrlParser(persister, webContext, host, new HostSection()); controllerMapper = new ControllerMapper(typeFinder, definitions); Url.DefaultExtension = ""; engine = mocks.DynamicMock<IEngine>(); SetupResult.For(engine.Resolve<ITypeFinder>()).Return(typeFinder); SetupResult.For(engine.Definitions).Return(definitions); SetupResult.For(engine.UrlParser).Return(parser); SetupResult.For(engine.Persister).Return(persister); SetupResult.For(engine.ManagementPaths).Return(editUrlManager); engine.Replay(); route = new ContentRoute(engine, new MvcRouteHandler(), controllerMapper, null); httpContext = new FakeHttpContext(); routes = new RouteCollection { route }; }