/// <summary> /// Получить url страницы с подставленными значениями таргетирования /// </summary> /// <returns></returns> public string GetUrl(ITargetingUrlTransformator urlTransformator = null) { var resultUrl = GetTrail(); if (urlTransformator != null) { resultUrl = urlTransformator.AddCurrentTargetingValuesToUrl(resultUrl); } return(resultUrl); }
public static HtmlString Tree(this IHtmlHelper html, ITargetingUrlTransformator urlTransformator) { var root = html.ViewContext.HttpContext.GetStartPage(); var filter = ((ITargetingFilterAccessor)html.ViewContext.HttpContext.RequestServices.GetService(typeof(ITargetingFilterAccessor)))?.Get(); var sb = new StringBuilder(); var node = root; sb.Append("<ul>"); foreach (var item in root.GetChildren(filter)) { VisitNodes(sb, item, filter, urlTransformator); } sb.Append("</ul>"); return(new HtmlString(sb.ToString())); }
private static void VisitNodes(StringBuilder sb, IAbstractItem node, ITargetingFilter filter, ITargetingUrlTransformator urlTransformator) { if (node.IsPage) { sb.Append($"<li> <a href = {node.GetUrl(urlTransformator)}> {node.Title} </a></li>"); } else { sb.Append($"<li> {node.Title} </li>"); } var children = node.GetChildren(filter); if (children.Any()) { sb.Append("<ul>"); foreach (var item in children) { VisitNodes(sb, item, filter, urlTransformator); } sb.Append("</ul>"); } }
public MenuViewModelBuilder(ITargetingUrlTransformator urlTransformator) { UrlTransformator = urlTransformator; }