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); }
/// <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); }
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()); } }
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(); } }