internal static void Write(HierarchyNode<ContentItem> hierarchy, ContentItem selectedItem, IContentAdapterProvider adapters, ItemFilter filter, string selectableTypes, string selectableExtensions, bool excludeRoot, string target, TextWriter writer) { N2.Web.Tree.Using(hierarchy) .OpenTo(selectedItem) .Filters(filter) .IdProvider(n => "u" + n.Current.ID, n => "l" + n.Current.ID) .LinkWriter((n, w) => { BuildLink(adapters.ResolveAdapter<NodeAdapter>(n.Current), n.Current, n.Current.Path == selectedItem.Path, target, IsSelectable(n.Current, selectableTypes, selectableExtensions)).WriteTo(w); if (n.Children.Count == 0 && adapters.ResolveAdapter<NodeAdapter>(n.Current).HasChildren(n.Current, filter)) { var ul = new TagBuilder("ul"); ul.AddCssClass("ajax"); w.Write(ul.ToString(TagRenderMode.StartTag)); var li = new TagBuilder("li"); li.InnerHtml = "{url:" + Url.ParseTokenized("{ManagementUrl}/Content/Navigation/LoadTree.ashx") .AppendQuery("target", target) .AppendQuery(SelectionUtility.SelectedQueryKey, HttpUtility.UrlEncode(n.Current.Path)) .AppendQuery("selectableTypes", selectableTypes) .AppendQuery("selectableExtensions", selectableExtensions) + "}"; w.Write(li.ToString()); w.Write(ul.ToString(TagRenderMode.EndTag)); } }) .ExcludeRoot(excludeRoot) .WriteTo(writer); }
protected virtual void Application_BeginRequest(object sender, EventArgs e) { if (!initialized) { // we need to have reached begin request before we can do certain // things in IIS7. concurrency isn't crucial here. initialized = true; if (webContext.IsWeb) { string dummy = Url.ServerUrl; // wayne: DOT NOT REMOVE, initialize the server url Url.SetToken(Url.ManagementUrlToken, Url.ToAbsolute(managementUrl).TrimEnd('/')); Url.SetToken("{IconsUrl}", Url.ResolveTokens(Url.ManagementUrlToken + "/Resources/icons")); Url.SetToken(Url.SelectedQueryKeyToken, selectedQueryKey); } } PathData data = dispatcher.GetCurrentPath(); webContext.CurrentPath = data; if (rewriteMethod == RewriteMethod.BeginRequest && data != null && !data.IsEmpty()) { var adapter = adapters.ResolveAdapter <RequestAdapter>(data.CurrentPage); adapter.RewriteRequest(data, rewriteMethod); } }
internal static void Write(HierarchyNode <ContentItem> hierarchy, ContentItem selectedItem, IContentAdapterProvider adapters, ItemFilter filter, string selectableTypes, string selectableExtensions, bool excludeRoot, string target, TextWriter writer) { N2.Web.Tree.Using(hierarchy) .OpenTo(selectedItem) .Filters(filter) .IdProvider(n => "u" + n.Current.ID, n => "l" + n.Current.ID) .LinkWriter((n, w) => { BuildLink(adapters.ResolveAdapter <NodeAdapter>(n.Current), n.Current, n.Current.Path == selectedItem.Path, target, IsSelectable(n.Current, selectableTypes, selectableExtensions)).WriteTo(w); if (n.Children.Count == 0 && adapters.ResolveAdapter <NodeAdapter>(n.Current).HasChildren(n.Current, filter)) { var ul = new TagBuilder("ul"); ul.AddCssClass("ajax"); w.Write(ul.ToString(TagRenderMode.StartTag)); var li = new TagBuilder("li"); li.InnerHtml = "{url:" + Url.ParseTokenized("{ManagementUrl}/Content/Navigation/LoadTree.ashx") .AppendQuery("target", target) .AppendQuery(SelectionUtility.SelectedQueryKey, HttpUtility.UrlEncode(n.Current.Path)) .AppendQuery("selectableTypes", selectableTypes) .AppendQuery("selectableExtensions", selectableExtensions) + "}"; w.Write(li.ToString()); w.Write(ul.ToString(TagRenderMode.EndTag)); } }) .ExcludeRoot(excludeRoot) .WriteTo(writer); }
internal static HierarchyNode<ContentItem> BuildTreeStructure(ItemFilter filter, IContentAdapterProvider adapters, ContentItem selectedItem, int maxDepth) { var structure = new TreeHierarchyBuilder(selectedItem, maxDepth) .Children((item) => { var q = new N2.Persistence.Sources.Query { Parent = item, OnlyPages = true, Interface = Interfaces.Managing, Filter = filter }; return adapters.ResolveAdapter<NodeAdapter>(item).GetChildren(q); }) .Build(); return structure; }
internal static HierarchyNode<ContentItem> BuildBranchStructure(ItemFilter filter, IContentAdapterProvider adapters, ContentItem selectedItem, ContentItem root) { var structure = new BranchHierarchyBuilder(selectedItem, root, true) { UseMasterVersion = false } .Children((item) => { var q = new N2.Persistence.Sources.Query { Parent = item, OnlyPages = true, Interface = Interfaces.Managing, Filter = filter }; return adapters.ResolveAdapter<NodeAdapter>(item).GetChildren(q); }) .Build(); return structure; }
public override void Process(CommandContext state) { string redirectTo = adapters.ResolveAdapter <NodeAdapter>(state.Content).GetPreviewUrl(state.Content); if (state.Content.VersionOf != null) { redirectTo = Url.Parse(redirectTo) .AppendQuery("preview", state.Content.ID) .AppendQuery("original", state.Content.VersionOf.ID); } state["RedirectTo"] = redirectTo; }
public IEnumerable <ToolbarOption> GetAll() { return(languages.GetAvailableLanguages() .Where(l => l is ContentItem) .Select((l, i) => new ToolbarOption { Title = GetHostPrefix((ContentItem)l) + l.LanguageTitle, Target = Targets.Preview, SortOrder = i, Name = l.LanguageCode, Url = adapters.ResolveAdapter <NodeAdapter>((ContentItem)l).GetPreviewUrl((ContentItem)l) })); }
internal static Node<TreeNode> CreateNode(this HierarchyNode<ContentItem> structure, IContentAdapterProvider adapters, Collections.ItemFilter filter) { var adapter = adapters.ResolveAdapter<NodeAdapter>(structure.Current); var children = structure.Children.Select(c => CreateNode(c, adapters, filter)).ToList(); return new Node<TreeNode> { Current = adapter.GetTreeNode(structure.Current), HasChildren = adapter.HasChildren(structure.Current, filter), Expanded = children.Any(), Children = children }; }
protected override void Render(HtmlTextWriter writer) { IContentAdapterProvider adapters = Engine.Resolve <IContentAdapterProvider>(); if (Nodes == null) { Nodes = new BranchHierarchyBuilder(SelectedItem, RootNode, true) .Children((item) => adapters.ResolveAdapter <NodeAdapter>(item).GetChildren(item, Interfaces.Managing)) .Build(); } TreeUtility.Write(Nodes, SelectedItem, adapters, Filter, SelectableTypes, SelectableExtensions, excludeRoot: false, target: Target, writer: writer); }
internal static HierarchyNode <ContentItem> BuildTreeStructure(ItemFilter filter, IContentAdapterProvider adapters, ContentItem selectedItem, int maxDepth) { var structure = new TreeHierarchyBuilder(selectedItem, maxDepth) .Children((item) => { var q = new N2.Persistence.Sources.Query { Parent = item, OnlyPages = true, Interface = Interfaces.Managing, Filter = filter }; return(adapters.ResolveAdapter <NodeAdapter>(item).GetChildren(q)); }) .Build(); return(structure); }
internal static Node <TreeNode> CreateNode(this HierarchyNode <ContentItem> structure, IContentAdapterProvider adapters, Collections.ItemFilter filter) { var adapter = adapters.ResolveAdapter <NodeAdapter>(structure.Current); var children = structure.Children.Select(c => CreateNode(c, adapters, filter)).ToList(); return(new Node <TreeNode> { Current = adapter.GetTreeNode(structure.Current), HasChildren = adapter.HasChildren(structure.Current, filter), Expanded = children.Any(), Children = children }); }
protected override void CreateChildControls() { IContentAdapterProvider adapters = Engine.Resolve <IContentAdapterProvider>(); if (Nodes == null) { Nodes = new BranchHierarchyBuilder(SelectedItem, RootNode, true) .Children((item) => adapters.ResolveAdapter <NodeAdapter>(item).GetChildren(item, Interfaces.Managing)) .Build(); } var tree = new N2.Web.Tree(Nodes) .OpenTo(SelectedItem) .Filters(Filter) .LinkProvider(item => BuildLink(adapters.ResolveAdapter <NodeAdapter>(item), item, item.Path == SelectedItem.Path, Target)) .ToControl(); AppendExpanderNodeRecursive(tree, Filter, Target, adapters); Controls.Add(tree); base.CreateChildControls(); }
public override void ProcessRequest(HttpContext context) { string target = context.Request["target"] ?? Targets.Preview; var selection = new SelectionUtility(context.Request, N2.Context.Current); ContentItem selectedNode = selection.SelectedItem; context.Response.ContentType = "text/plain"; ItemFilter filter = Engine.EditManager.GetEditorFilter(context.User); IContentAdapterProvider adapters = Engine.Resolve <IContentAdapterProvider>(); var root = new TreeHierarchyBuilder(selectedNode, 2) .Children((item) => adapters.ResolveAdapter <NodeAdapter>(item).GetChildren(item, Interfaces.Managing)) .Build(); TreeNode tn = (TreeNode) new N2.Web.Tree(root) .LinkProvider(node => Web.UI.Controls.Tree.BuildLink(adapters.ResolveAdapter <NodeAdapter>(node), node, node.Path == selectedNode.Path, target)) .Filters(filter) .ToControl(); Web.UI.Controls.Tree.AppendExpanderNodeRecursive(tn, filter, target, adapters); RenderControls(tn.Controls, context.Response.Output); }
public static void AppendExpanderNodeRecursive(Control tree, ItemFilter filter, string target, IContentAdapterProvider adapters) { TreeNode tn = tree as TreeNode; if (tn != null) { foreach (Control child in tn.Controls) { AppendExpanderNodeRecursive(child, filter, target, adapters); } if (tn.Controls.Count == 0 && adapters.ResolveAdapter <NodeAdapter>(tn.Node).HasChildren(tn.Node, filter)) { AppendExpanderNode(tn, target); } } }
internal static HierarchyNode <ContentItem> BuildBranchStructure(ItemFilter filter, IContentAdapterProvider adapters, ContentItem selectedItem, ContentItem root) { var structure = new BranchHierarchyBuilder(selectedItem, root, true) { UseMasterVersion = false } .Children((item) => { var q = new N2.Persistence.Sources.Query { Parent = item, OnlyPages = true, Interface = Interfaces.Managing, Filter = filter }; return(adapters.ResolveAdapter <NodeAdapter>(item).GetChildren(q)); }) .Build(); return(structure); }
public void Handle(HttpContextBase context) { string path = context.Request["path"]; var filter = CreateFilter(context.Request["filter"], context.Request["selectableTypes"], context.Request["selectableExtensions"]); var parent = navigator.Navigate(urls.StartPage, path); var childItems = parent != null ? adapters.ResolveAdapter <NodeAdapter>(parent).GetChildren(parent, Interfaces.Managing).Where(filter) : Enumerable.Empty <ContentItem>(); childItems = childItems.Union(virtualNodes.GetChildren(path)).ToList(); var children = childItems.Select(c => ToJson(c)).ToArray(); context.Response.ContentType = "application/json"; context.Response.Write("{\"path\":\"" + Encode(parent.Path) + "\", \"children\":[" + string.Join(", ", children) + "]}"); }
public override void Render(RenderingContext context, EditableItemAttribute displayable, TextWriter writer) { var backup = context.Html.ViewContext.Writer; try { context.Html.ViewContext.Writer = writer; var referencedItem = context.Content[context.PropertyName] as ContentItem; if (referencedItem != null) { adapters.ResolveAdapter <PartsAdapter>(context.Content).RenderPart(context.Html, referencedItem, writer); } } finally { context.Html.ViewContext.Writer = backup; } }
public override void ProcessRequest(HttpContext context) { string target = context.Request["target"] ?? Targets.Preview; var selection = new SelectionUtility(context.Request, N2.Context.Current); ContentItem selectedItem = selection.SelectedItem; context.Response.ContentType = "text/plain"; ItemFilter filter = Engine.EditManager.GetEditorFilter(context.User); IContentAdapterProvider adapters = Engine.Resolve <IContentAdapterProvider>(); var node = new TreeHierarchyBuilder(selectedItem, 2) .Children((item) => adapters.ResolveAdapter <NodeAdapter>(item).GetChildren(item, Interfaces.Managing)) .Build(); string selectableTypes = context.Request["selectableTypes"]; string selectableExtensions = context.Request["selectableExtensions"]; TreeUtility.Write(node, selectedItem, adapters, filter, selectableTypes, selectableExtensions, excludeRoot: true, target: target, writer: context.Response.Output); }
public static void WriteTitleBar(TextWriter writer, IEditUrlManager editUrlManager, IContentAdapterProvider adapters, ItemDefinition definition, ContentItem item) { Url returnUrl = Url.Parse(adapters.ResolveAdapter <NodeAdapter>(item).GetPreviewUrl(item)).AppendQuery("edit", "drag"); N2.Context.Current.Resolve <PartUtilities>().WriteTitleBar(writer, item, returnUrl); }
public static void AppendExpanderNodeRecursive(Control tree, ItemFilter filter, string target, IContentAdapterProvider adapters) { TreeNode tn = tree as TreeNode; if (tn != null) { foreach (Control child in tn.Controls) { AppendExpanderNodeRecursive(child, filter, target, adapters); } if (tn.Controls.Count == 0 && adapters.ResolveAdapter<NodeAdapter>(tn.Node).HasChildren(tn.Node, filter)) { AppendExpanderNode(tn, target); } } }
public void CanResolve_ZoneAdapter() { PartsAdapter controller = dispatcher.ResolveAdapter <PartsAdapter>(pageItem); Assert.That(controller, Is.TypeOf(typeof(PageZoneAdapter))); }
public static void WriteTitleBar(TextWriter writer, IEditUrlManager editUrlManager, IContentAdapterProvider adapters, ItemDefinition definition, ContentItem item) { Url returnUrl = Url.Parse(adapters.ResolveAdapter<NodeAdapter>(item).GetPreviewUrl(item)).AppendQuery("edit", "drag"); N2.Context.Current.Resolve<PartUtilities>().WriteTitleBar(writer, item, returnUrl); }