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); }
public override void Render(DotLiquid.Context context, TextWriter result) { NavigationMenuItemDrop navigationMenuItemDrop = (NavigationMenuItemDrop)null; if (!this.contextProperty.IsBlank()) { object obj = context[this.contextProperty]; if (obj is int) { this.variantKeyFromMarkup = (int)obj; } else if (obj is NavigationMenuItemDrop) { navigationMenuItemDrop = obj as NavigationMenuItemDrop; } } if (navigationMenuItemDrop == null) { AbstractPage page = DependencyLocator.Current.GetInstance <IContentHelper>().GetPageByVariantKey(this.variantKeyFromMarkup, false).Page; navigationMenuItemDrop = !(page is ICatalogNavigationPage) ? this.CreateContentNavigationLink(DependencyLocator.Current.GetInstance <IContentHelper>(), page, this.viewNameFromMarkup, 0) : this.CreateCatalogNavigationLink(((ICatalogNavigationPage)page).CategoryNavRoot, this.viewNameFromMarkup, 0); } string str = DependencyLocator.Current.GetInstance <IContentItemTemplateRenderer>().RenderNavigationMenu(navigationMenuItemDrop); result.Write(str); }
private NavigationMenuItemDrop CreateCatalogNavigationLink( NavLinkDto navLinkDto, string viewName, int level = 0) { NavigationMenuItemDrop navigationMenuItemDrop = new NavigationMenuItemDrop(); navigationMenuItemDrop.Level = level; navigationMenuItemDrop.Identifier = navLinkDto.CategoryId.ToString(); navigationMenuItemDrop.Title = navLinkDto.LinkText; navigationMenuItemDrop.Url = navLinkDto.Url; IList <NavLinkDto> navLinks = navLinkDto.NavLinks; navigationMenuItemDrop.Children = (navLinks != null ? navLinks.Select <NavLinkDto, NavigationMenuItemDrop>(o => CreateCatalogNavigationLink(o, viewName, ++level)).ToList <NavigationMenuItemDrop>() : null) ?? new List <NavigationMenuItemDrop>(); navigationMenuItemDrop.ViewName = viewName; navigationMenuItemDrop.NavigationMenuType = NavigationMenuType.Catalog; return(navigationMenuItemDrop); }