private NavigationMenuItemDrop CreateContentNavigationLink(
            IContentHelper contentHelper,
            AbstractPage page,
            string viewName,
            int level = 0)
        {
            string str = page.CustomUrl;

            if (str.IsBlank())
            {
                str = !(page is ILinkableContent) || DependencyLocator.Current.GetInstance <IContentModeProvider>().CurrentContentMode != ContentMode.Viewing ? DependencyLocator.Current.GetInstance <IUrlProvider>().PrepareUrl("/Content/Item/" + (object)page.ContentKey) : DependencyLocator.Current.GetInstance <IUrlProvider>().PrepareUrl((page as ILinkableContent).Url);
            }
            NavigationMenuItemDrop navigationMenuItemDrop = new NavigationMenuItemDrop();

            navigationMenuItemDrop.Level = level;
            navigationMenuItemDrop.NavigationMenuType = NavigationMenuType.Content;
            navigationMenuItemDrop.Identifier         = page.ContentKey.ToString();
            navigationMenuItemDrop.Title = page.Title;
            navigationMenuItemDrop.Url   = str;
            bool?openInNewTab = page.OpenInNewTab;

            navigationMenuItemDrop.OpenInNewTab = openInNewTab.HasValue && openInNewTab.GetValueOrDefault();
            navigationMenuItemDrop.ViewName     = viewName;
            navigationMenuItemDrop.Children     = (IList <NavigationMenuItemDrop>)contentHelper.GetChildPagesForVariantKey <AbstractPage>(page.VariantKey.Value, true).Where <AbstractPage>((Func <AbstractPage, bool>)(o => !o.ExcludeFromNavigation)).OrderBy <AbstractPage, int>((Func <AbstractPage, int>)(o => o.SortOrder)).Select((Func <AbstractPage, NavigationMenuItemDrop>)(o => this.CreateContentNavigationLink(contentHelper, o, viewName, ++level))).ToList <NavigationMenuItemDrop>();
            return(navigationMenuItemDrop);
        }