private static string CreateCacheKey(HtmlHelper html, Func <string, HelperResult> template, string cacheKey, bool?perPage, int?perAncestorAtLevel) { int perPageComponent = 0; if (perPage ?? !perAncestorAtLevel.HasValue) { var page = html.CurrentPage(); if (page != null) { perPageComponent = page.ID; } } int perAncestorComponent = 0; if (perAncestorAtLevel.HasValue) { var ancestor = html.Content().Traverse.AncestorAtLevel(perAncestorAtLevel.Value, fallbackToClosest: true); if (ancestor != null) { perAncestorComponent = ancestor.ID; } } string composedKey = "Html.OutputCache" + cacheKey + template.Method.ToString() + perPageComponent + perAncestorComponent; return(composedKey); }
public override void RenderTemplate(HtmlHelper html, ContentItem item) { ContentPage page = new ContentPage(); page.CurrentPage = html.CurrentPage(); Engine.ResolveAdapter<PartsAdapter>(page.CurrentPage).AddChildPart(item, page); page.RenderControl(new HtmlTextWriter(html.ViewContext.Writer)); }
public override void RenderPart(HtmlHelper html, ContentItem part, System.IO.TextWriter writer = null) { ContentPage page = new ContentPage(); page.CurrentPage = html.CurrentPage(); Engine.ResolveAdapter<PartsAdapter>(page.CurrentPage).AddChildPart(part, page); page.RenderControl(new HtmlTextWriter(html.ViewContext.Writer)); }
public override void RenderTemplate(HtmlHelper html, ContentItem item) { ContentPage page = new ContentPage(); page.CurrentPage = html.CurrentPage(); N2.Web.UI.ItemUtility.AddUserControl(page, item); page.RenderControl(new HtmlTextWriter(html.ViewContext.Writer)); }
public override void RenderPart(HtmlHelper html, ContentItem part, System.IO.TextWriter writer = null) { ContentPage page = new ContentPage(); page.CurrentPage = html.CurrentPage(); Engine.ResolveAdapter <PartsAdapter>(page.CurrentPage).AddChildPart(part, page); page.RenderControl(new HtmlTextWriter(html.ViewContext.Writer)); }
/// <summary>Creates a navigation using unordered list elements.</summary> public static N2.Web.Tree Tree(this HtmlHelper html, ContentItem startsFrom = null, ContentItem current = null, int takeLevels = 2, bool parallelRoot = true, bool appendCreatorNode = false, ItemFilter filter = null, object htmlAttributes = null) { if (startsFrom == null) { startsFrom = html.StartPage(); } if (current == null) { current = html.CurrentPage(); } if (filter == null) { filter = new NavigationFilter(html.ViewContext.HttpContext.User, html.ContentEngine().SecurityManager); } var builder = parallelRoot ? (HierarchyBuilder) new ParallelRootHierarchyBuilder(startsFrom, takeLevels) : (HierarchyBuilder) new TreeHierarchyBuilder(startsFrom, takeLevels); if (builder == null) { throw new ArgumentException("builder == null"); } if (appendCreatorNode && ControlPanelExtensions.GetControlPanelState(html).IsFlagSet(ControlPanelState.DragDrop)) { builder.GetChildren = (i) => i == null ? null : i.Children.FindNavigatablePages().Where(filter).AppendCreatorNode(html.ContentEngine(), i); } else { builder.GetChildren = (i) => i == null ? null : i.Children.FindNavigatablePages().Where(filter); } var tree = N2.Web.Tree.Using(builder); if (htmlAttributes != null) { tree.Tag(BootstrapTagAlterations(startsFrom, current, htmlAttributes)); } ClassifyAnchors(startsFrom, current, parallelRoot, tree); return(tree); }
/// <summary> /// Build a tree that is bootstrap friendly /// </summary> /// <typeparam name="TModel"></typeparam> /// <param name="helper"></param> /// <param name="startFrom"></param> /// <param name="currentItem"></param> /// <param name="takeLevel"></param> /// <param name="filter"></param> /// <param name="appendCreatorNode"></param> /// <param name="includeRoot"></param> /// <param name="onHoverDropdowns"></param> /// <returns></returns> public static N2.Web.Tree BootstrapTree <TModel>(this HtmlHelper <TModel> helper, ContentItem startFrom = null, ContentItem currentItem = null, int takeLevel = 2, ItemFilter filter = null, bool appendCreatorNode = false, bool includeRoot = true, bool onHoverDropdowns = false) { // prep if (startFrom == null) { startFrom = helper.StartPage(); } if (currentItem == null) { currentItem = helper.CurrentPage(); } if (filter == null) { filter = new NavigationFilter(helper.ViewContext.RequestContext.HttpContext.User, helper.ContentEngine().SecurityManager); } HierarchyBuilder builder = new ParallelRootHierarchyBuilder(startFrom, takeLevel); builder.GetChildren = (builder.GetChildren = (item) => { var items = item.Children.Where(filter); if (appendCreatorNode && item.IsPage && helper.GetControlPanelState().IsFlagSet(ControlPanelState.DragDrop)) { items = items.AppendCreatorNode(helper.ContentEngine(), item); } return(items.ToList()); }); var node = builder.Build(); if (!includeRoot) { node.Children.RemoveAt(0); } var tree = N2.Web.Tree.Using(node); tree.HtmlAttibutes(new { @class = "nav" }); ClassifyAnchors(startFrom, currentItem, tree); return(tree); }
public static ContentItem CurrentPage(this HtmlHelper helper) { return(helper.CurrentPage <ContentItem>()); }
public static PathData CurrentPath(this HtmlHelper helper) { return(new PathData { CurrentItem = helper.CurrentItem <ContentItem>(), CurrentPage = helper.CurrentPage <ContentItem>() }); }