Example #1
0
        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));
		}
Example #3
0
        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));
		}
Example #5
0
        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));
        }
Example #6
0
        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);
        }
Example #8
0
        /// <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);
        }
Example #9
0
 public static ContentItem CurrentPage(this HtmlHelper helper)
 {
     return(helper.CurrentPage <ContentItem>());
 }
Example #10
0
 public static PathData CurrentPath(this HtmlHelper helper)
 {
     return(new PathData {
         CurrentItem = helper.CurrentItem <ContentItem>(), CurrentPage = helper.CurrentPage <ContentItem>()
     });
 }