/// <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(ApplyToRootUl(htmlAttributes)); ClassifyAnchors(startsFrom, current, parallelRoot, tree); return tree; }
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(ControlPanel.DragDropScriptInitialization(), ScriptOptions.DocumentReady); }
/// <summary>Gets the curent state of the control panel.</summary> /// <param name="html"></param> /// <returns></returns> public static ControlPanelState GetControlPanelState(this HtmlHelper html) { return UI.WebControls.ControlPanel.GetState(html.ContentEngine()); }
/// <summary>Begins an editable wrapper that can be used to edit a single property in a view.</summary> /// <param name="html"></param> /// <param name="item"></param> /// <param name="displayableName"></param> /// <returns>A disposable object that must be called to close the editable wrapper element.</returns> public static IDisposable BeginEditableWrapper(this HtmlHelper html, ContentItem item, string displayableName) { return WebExtensions.GetEditableWrapper(item, true, displayableName, html.ContentEngine().Definitions.GetDefinition(item).Displayables[displayableName], html.ViewContext.Writer); }
/// <summary>Begins an editable wrapper that can be used to edit a single property in a view.</summary> /// <param name="html"></param> /// <param name="item"></param> /// <param name="displayableName"></param> /// <returns>A disposable object that must be called to close the editable wrapper element.</returns> public static IDisposable BeginEditableWrapper(this HtmlHelper html, ContentItem item, string displayableName) { if (ControlPanel.GetState(html.ContentEngine()) == ControlPanelState.DragDrop) { return WebExtensions.GetEditableWrapper(item, true, displayableName, html.ContentEngine().Definitions.GetDefinition(item).Displayables[displayableName], html.ViewContext.Writer); } else { return new EmptyDisposable(); } }
/// <summary> /// determines if user is actively managing (administering) the site vs. using the site /// </summary> /// <param name="html"></param> /// <returns>true if managing</returns> public static bool IsManaging(this HtmlHelper html) { return IsManaging(html.ContentEngine()); }
/// <summary> /// determines if user is actively organizing parts / editing the page interactively via drag & drop /// </summary> /// <param name="html"></param> /// <returns>true if managing</returns> public static bool IsOrganizing(this HtmlHelper html) { var engine = html.ContentEngine(); return engine != null && ControlPanel.GetState(engine).IsFlagSet(ControlPanelState.DragDrop); }
/// <summary>Gets the curent state of the control panel.</summary> /// <param name="html"></param> /// <returns></returns> public static ControlPanelState GetControlPanelState(this HtmlHelper html) { return UI.WebControls.ControlPanel.GetState(html.ContentEngine().SecurityManager, html.ViewContext.HttpContext.User, html.ViewContext.HttpContext.Request.QueryString); }