Ejemplo n.º 1
0
 public static void RegisterMvcServices(this IWebBuilder webBuilder)
 {
     webBuilder.RegisterServices(services =>
     {
         services.AddMvc();
     });
 }
        private static async Task RegisterPages(IWebBuilder webBuilder, string rootDirectory)
        {
            var pages = await LoadPages(rootDirectory);

            var root = new MenuItem {
                Path = "/", Title = "Home"
            };

            // Register the root node so we can get it later.
            webBuilder.RegisterServices(services => services.AddSingleton(root));

            void Walk(PageTreeItem <PageNode> pageItem, MenuItem menuItem)
            {
                if (pageItem.Data == null)
                {
                    // There isn't a markdown file associated with this level.
                    // Maybe missing index.md?
                    webBuilder.RegisterMvc(pageItem.Path, new
                    {
                        controller = "Page",
                        action     = "EmptyParent",
                        menu       = menuItem
                    },
                                           new PageOptions(null, menuItem.Title));
                }
                else
                {
                    webBuilder.RegisterMvc(pageItem.Path, new
                    {
                        controller = "Page",
                        action     = "Page",
                        page       = pageItem.Data,
                        menu       = menuItem
                    },
                                           new PageOptions(pageItem.FilePath, menuItem.Title));
                }

                foreach (var child in pageItem.Children)
                {
                    var childMenuItem = new MenuItem();
                    childMenuItem.Title  = child.Data.Title;
                    childMenuItem.Path   = child.Path;
                    childMenuItem.Parent = menuItem;
                    childMenuItem.Order  = child.Data.Order;
                    childMenuItem.Level  = menuItem.Level + 1;
                    menuItem.Children.Add(childMenuItem);

                    Walk(child, childMenuItem);
                }
            }

            Walk(pages, root);
        }
        private static async Task RegisterConfig(IWebBuilder webBuilder, string rootDirectory)
        {
            var configFile = Path.Combine(rootDirectory, "config.yml");

            string configContents;

            try
            {
                configContents = await File.ReadAllTextAsync(configFile);
            }
            catch (Exception ex)
            {
                throw new Exception($"Problem loading file {configFile}", ex);
            }

            var parsed = Parser.Parse($"---\n{configContents}\n---");

            var config = new ProjectConfig
            {
                Name             = parsed.Yaml.name,
                Logo             = parsed.Yaml.logo,
                EditUrl          = parsed.Yaml.edit_url,
                Footer           = parsed.Yaml.footer,
                GoogleTrackingId = parsed.Yaml.google_tracking_id
            };

            var    moreLinks = new List <MoreLink>();
            JArray links     = parsed.Yaml.more_links;

            if (links != null)
            {
                foreach (dynamic link in links)
                {
                    moreLinks.Add(new MoreLink
                    {
                        Text = link.text,
                        Url  = link.url,
                        Icon = link.icon
                    });
                }
            }

            webBuilder.RegisterServices(services =>
            {
                services.AddSingleton(moreLinks);
                services.AddSingleton(config);
            });
        }
Ejemplo n.º 4
0
        public static void RegisterMvcServices(this IWebBuilder webBuilder, params Assembly[] additionalParts)
        {
            var callingAssembly = Assembly.GetCallingAssembly();

            webBuilder.RegisterServices(services =>
            {
                var parts = additionalParts.ToList();
                if (!parts.Contains(callingAssembly))
                {
                    parts.Add(callingAssembly);
                }

                var b = services.AddMvc();
                foreach (var part in parts)
                {
                    b.AddApplicationPart(part);
                }

                b.AddRazorRuntimeCompilation();
            });
        }