private static string Plugins(HtmlHelper html, ContentItem item, ControlPanelState state)
            {
                ContentItem start = html.StartPage();
                ContentItem root  = html.RootPage();

                Page p = new Page();

                foreach (IControlPanelPlugin plugin in html.ContentEngine().Resolve <IPluginFinder>().GetPlugins <IControlPanelPlugin>())
                {
                    var span = new System.Web.UI.HtmlControls.HtmlGenericControl("span");
                    span.Attributes["class"] = "control";
                    var pluginControl = plugin.AddTo(span, new PluginContext(new SelectionUtility(item, null), start, root, state, html.ContentEngine(), html.ViewContext.HttpContext));

                    if (pluginControl != null)
                    {
                        p.Controls.Add(span);
                    }
                }

                using (var sw = new StringWriter())
                    using (var htw = new HtmlTextWriter(sw))
                    {
                        p.RenderControl(htw);
                        return(sw.ToString());
                    }
            }
        /// <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 #3
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 #4
0
            private static string Plugins(HtmlHelper html, ContentItem item, ControlPanelState state)
            {
                ContentItem start = html.StartPage();
                ContentItem root  = html.RootPage();

                Page p = new Page();

                foreach (IControlPanelPlugin plugin in html.ContentEngine().Resolve <IPluginFinder>().GetPlugins <IControlPanelPlugin>())
                {
                    plugin.AddTo(p, new PluginContext(new SelectionUtility(item, null), start, root, state, html.ContentEngine(), html.ViewContext.HttpContext));
                }

                using (var sw = new StringWriter())
                    using (var htw = new HtmlTextWriter(sw))
                    {
                        p.RenderControl(htw);
                        return(sw.ToString());
                    }
            }
Example #5
0
        public static void RenderControlPanel(this HtmlHelper html)
        {
            var engine = html.ContentEngine();
            var item   = html.CurrentItem() ?? html.StartPage();

            if (!engine.SecurityManager.IsEditor(html.ViewContext.HttpContext.User))
            {
                return;
            }
            if (RegistrationExtensions.GetRegistrationExpression(html) != null)
            {
                return;
            }

            var state    = ControlPanel.GetState(html.ViewContext.HttpContext.User, html.ViewContext.HttpContext.Request.QueryString);
            var settings = new
            {
                NavigationUrl = engine.ManagementPaths.GetNavigationUrl(item),
                ManagementUrl = engine.ManagementPaths.GetManagementInterfaceUrl(),
                Path          = item.Path,
                Plugins       = Plugins(html, item, state),
                Definitions   = Definitions(html, engine, item, state),
                Version       = typeof(ContentItem).Assembly.GetName().Version.ToString(),
                Permission    = engine.GetContentAdapter <NodeAdapter>(item).GetMaximumPermission(item)
            };

            html.Resources().JQuery()
            .JQueryPlugins()
            .JQueryUi()
            .JavaScript("{ManagementUrl}/Resources/Js/parts.js").StyleSheet("{ManagementUrl}/Resources/Css/parts.css");

            string controlPanelHtml = format.Replace(settings);

            html.ViewContext.Writer.Write(controlPanelHtml);

            if (state == ControlPanelState.DragDrop)
            {
                html.Resources().JavaScript(@"window.n2ddcp = new n2DragDrop();", ScriptOptions.DocumentReady);
            }
        }
            private static string Plugins(HtmlHelper html, ContentItem item, ControlPanelState state)
            {
                ContentItem start = html.StartPage();
                ContentItem root = html.RootPage();

                Page p = new Page();
                foreach (IControlPanelPlugin plugin in html.ContentEngine().Resolve<IPluginFinder>().GetPlugins<IControlPanelPlugin>())
                {
                    var span = new System.Web.UI.HtmlControls.HtmlGenericControl("span");
                    span.Attributes["class"] = "control";
                    var pluginControl = plugin.AddTo(span, new PluginContext(new SelectionUtility(item, null), start, root, state, html.ContentEngine(), html.ViewContext.HttpContext));

                    if (pluginControl != null)
                        p.Controls.Add(span);
                }

                using (var sw = new StringWriter())
                using (var htw = new HtmlTextWriter(sw))
                {
                    p.RenderControl(htw);
                    return sw.ToString();
                }
            }
			private static string Plugins(HtmlHelper html, ContentItem item, ControlPanelState state)
			{
				ContentItem start = html.StartPage();
				ContentItem root = html.RootPage();

				Page p = new Page();
				foreach (IControlPanelPlugin plugin in html.ContentEngine().Resolve<IPluginFinder>().GetPlugins<IControlPanelPlugin>())
				{
					plugin.AddTo(p, new PluginContext(new SelectionUtility(item, null), start, root, state, html.ContentEngine(), html.ViewContext.HttpContext));
				}

				using (var sw = new StringWriter())
				using (var htw = new HtmlTextWriter(sw))
				{
					p.RenderControl(htw);
					return sw.ToString();
				}
			}