public static void Start() { SiteAdmin.Register("~/Rabbit/", "Rabbit Framework Admin", "Administrative Tools to manage modules, to generate code and to run unit tests."); var appPart = new ApplicationPart(typeof(PreApplicationStartCode).Assembly, SiteAdmin.GetVirtualPath("~/Rabbit/")); ApplicationPart.Register(appPart); SiteEngine.Start(); }
private static void InitModules() { hooks.Clear(); var assemblies = Directory.EnumerateFiles(AppDomain.CurrentDomain.DynamicDirectory, "*.dll"); foreach (var file in assemblies) { try { var assembly = Assembly.LoadFrom(file); Trace.WriteLine(string.Format("SiteEngine: Start Loading Assembly {0}", file)); var types = assembly.GetTypes(); foreach (Type moduleType in types) { //Use Hook attribute var methods = moduleType.GetMethods(BindingFlags.Public | BindingFlags.Static) .Where(m => m.GetCustomAttributes(typeof(HookAttribute), true).Count() > 0).ToList(); foreach (var method in methods) { foreach (var attr in method.GetCustomAttributes(typeof(HookAttribute), true)) { var hookName = ((HookAttribute)attr).Name ?? method.Name; try { var func = Delegate.CreateDelegate(typeof(Func <object, object>), method) as Func <object, object>; SiteEngine.AddHook(hookName, func); } catch (Exception ex) { Trace.WriteLine(string.Format("SiteEngine: Failed Binding Hook: {0}: Error: {1}\r\n", hookName, ex.Message)); } } } Trace.WriteLine(string.Format("SiteEngine: Done Loading Assembly {0}\r\n", file)); } } catch (Exception ex) { Trace.WriteLine(string.Format("SiteEngine: Failed Loading Assembly: {0}: Error: {1}\r\n", file, ex.Message)); } } }
public override void Execute() { WriteLiteral("\r\n"); #line 3 "E:\Users\Public\My Projects\Rabbit\Src\Rabbit\Default.cshtml" ((IList <Tuple <string, string> >)PageData["BreadCrumbs"]) .Add(Tuple.Create <string, string>("Rabbit Admin", "/_Admin/Rabbit")); var adminmenu = SiteEngine.RunHook("get_admin_menu", new List <string>()) as List <string>; #line default #line hidden WriteLiteral(@" <style type=""text/css""> h2{margin-top:30px; margin-bottom:20px;} ul.adminmenu, ul.adminmenu li{margin-left:10px;margin-bottom:10px;} </style> <h1>Rabbit Framework Administration</h1> <p>Rabbit Framework supports modules, plug-ins and templates. For more information, please visit <a href=""http://rabbit.codeplex.com"">Rabbit Framework</a>.</p> <div style=""float:left;padding-left:10px;""> <h2>Admin Links</h2> <ul class=""adminmenu""> <li><a href=""/_Admin/Rabbit/Test"">Unit Test</a></li> <li><a href=""/_Admin/Rabbit/CodeGen"">Generate Code</a></li> "); #line 24 "E:\Users\Public\My Projects\Rabbit\Src\Rabbit\Default.cshtml" if (adminmenu.Count() > 0) { foreach (var menu in adminmenu) { if (menu.Contains('|')) { var ss = menu.Split('|'); #line default #line hidden WriteLiteral(" <li class=\"admin-menu\"><a href=\""); #line 31 "E:\Users\Public\My Projects\Rabbit\Src\Rabbit\Default.cshtml" Write(Href(ss[1])); #line default #line hidden WriteLiteral("\">"); #line 31 "E:\Users\Public\My Projects\Rabbit\Src\Rabbit\Default.cshtml" Write(ss[0]); #line default #line hidden WriteLiteral("</a></li>\r\n"); #line 32 "E:\Users\Public\My Projects\Rabbit\Src\Rabbit\Default.cshtml" } } } #line default #line hidden WriteLiteral(" </ul> \r\n</div> \r\n\r\n"); }