/
GlobalMvcStarter.cs
73 lines (61 loc) · 2.42 KB
/
GlobalMvcStarter.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
using System.Web.Mvc;
using System.Web.Routing;
using N2.Definitions.Runtime;
using N2.Engine;
using N2.Plugin;
using N2.Web.Mvc;
namespace Dinamico
{
/// <summary>
/// This initialization code is placed in a separate file not to overwrite existing global config when adding dinamico as library package (nuget)
/// </summary>
[AutoInitialize]
public class GlobalMvcStarter : IPluginInitializer
{
#region IPluginInitializer Members
public void Initialize(N2.Engine.IEngine engine)
{
//log4net.Config.XmlConfigurator.ConfigureAndWatch(new System.IO.FileInfo(Server.MapPath("~/N2/Installation/log4net.config")));
RegisterControllerFactory(ControllerBuilder.Current, engine);
RegisterRoutes(RouteTable.Routes, engine);
RegisterViewEngines(ViewEngines.Engines);
RegisterViewTemplates(engine);
}
#endregion
private void RegisterViewTemplates(IEngine engine)
{
var reg = engine.RegisterViewTemplates<Controllers.ContentPagesController>();
TryRegisterViewTemplate<Controllers.ContentPartsController>(reg);
TryRegisterViewTemplate<Controllers.SlideshowController>(reg);
}
private void TryRegisterViewTemplate<T>(ViewTemplateRegistrator registrator) where T : IController
{
try
{
registrator.Add<T>();
}
catch (System.Exception ex)
{
Logger.Error(ex);
}
}
public static void RegisterControllerFactory(ControllerBuilder controllerBuilder, IEngine engine)
{
// Registers controllers in the solution for dependency injection using the IoC container provided by N2
engine.RegisterAllControllers();
var controllerFactory = engine.Resolve<ControllerFactoryConfigurator>()
.NotFound<Controllers.StartPageController>(sc => sc.NotFound())
.ControllerFactory;
controllerBuilder.SetControllerFactory(controllerFactory);
}
public static void RegisterRoutes(RouteCollection routes, IEngine engine)
{
routes.MapContentRoute("Content", engine);
}
public static void RegisterViewEngines(ViewEngineCollection viewEngines)
{
viewEngines.RegisterThemeViewEngine<RazorViewEngine>("~/Dinamico/Themes/");
viewEngines.DecorateViewTemplateRegistration();
}
}
}