Example #1
0
        private static PageNavigation BuildPageNavigation(
            IDictionary <string, PageMetadataModel> pageList
            )
        {
            var pathList = pageList.Keys;
            var root     = new PageNavigationModel
            {
                Id             = "root",
                Title          = "root",
                IsFolder       = true,
                ChildrenAsList = new List <PageNavigationModel>(),
            };

            foreach (var path in pathList)
            {
                AddNavigationModelToNode(
                    pageList,
                    root,
                    path
                    );
            }
            root.ChildrenAsList = root.ChildrenAsList?.OrderBy(
                a => a.Title
                )?.OrderBy(
                a => a.ChildrenAsList != null
                )?.ToList() ?? new List <PageNavigationModel>();

            return(root);
        }
Example #2
0
        protected Page(PresentationNavigationModel presentationNavigation, string tag, string title)
        {
            _presentationNavigation = presentationNavigation;
            _tag   = tag;
            _title = title;

            _pageNavigation = new PageNavigationModel();
        }
Example #3
0
        protected Page(PresentationNavigationModel presentationNavigation, string tag, string title)
        {
            _presentationNavigation = presentationNavigation;
            _tag = tag;
            _title = title;

            _pageNavigation = new PageNavigationModel();
        }
Example #4
0
        private static void AddNavigationModelToNode(
            IDictionary <string, PageMetadataModel> pageList,
            PageNavigationModel root,
            string path
            )
        {
            var splitPath = path.Split(
                "/",
                StringSplitOptions.RemoveEmptyEntries
                ).ToList();
            var node       = splitPath.Last();
            var parentList = splitPath.Take(
                splitPath.Count - 1
                );
            var parent = root;

            foreach (var newParentPath in parentList)
            {
                var newParent = default(PageNavigationModel);

                if (parent.Children.Any(
                        a => a.Id == newParentPath
                        ) && parent.Children.First(
                        a => a.Id == newParentPath
                        ).IsFolder)
                {
                    // Set newParent to already existing
                    newParent = (PageNavigationModel)parent.Children.First(
                        a => a.Id == newParentPath
                        );
                }
                else if (parent.Children.Any(
                             a => a.Id == newParentPath
                             ) && !parent.Children.First(
                             a => a.Id == newParentPath
                             ).IsFolder)
                {
                    // Update Parent Node to Parent Folder
                    // And add Node to Folder
                    newParent = (PageNavigationModel)parent.Children.First(
                        a => a.Id == newParentPath
                        );
                    var newParentAsNode = new PageNavigationModel
                    {
                        Id    = newParent.Id,
                        Title = newParent.Title,
                        Route = newParent.Route,
                    };
                    // Set Parent to Folder
                    newParent.IsFolder       = true;
                    newParent.Route          = string.Empty;
                    newParent.ChildrenAsList = new List <PageNavigationModel>
                    {
                        newParentAsNode
                    };
                }
                else
                {
                    newParent = new PageNavigationModel
                    {
                        Id             = newParentPath,
                        Title          = newParentPath,
                        IsFolder       = true,
                        ChildrenAsList = new List <PageNavigationModel>(),
                    };

                    parent.ChildrenAsList.Add(newParent);
                }

                parent = newParent;
                parent.ChildrenAsList = parent.ChildrenAsList?.OrderBy(
                    a => a.Title
                    )?.OrderBy(
                    a => a.ChildrenAsList != null
                    )?.ToList() ?? new List <PageNavigationModel>();
            }

            parent.ChildrenAsList.Add(
                // Add Node
                new PageNavigationModel
            {
                Id    = node,
                Title = pageList.First(
                    page => page.Key == path
                    ).Value.Title ?? node,
                Route = path,
            }
                );
            parent.ChildrenAsList = parent.ChildrenAsList?.OrderBy(
                a => a.Title
                )?.OrderBy(
                a => a.ChildrenAsList != null
                )?.ToList() ?? new List <PageNavigationModel>();
        }