Example #1
0
		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);
		}
Example #2
0
        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);
            }
        }
Example #3
0
        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);
        }
Example #4
0
 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;
 }
Example #5
0
 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;
        }
Example #7
0
 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)
     }));
 }
Example #8
0
        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
            };
        }
Example #9
0
        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);
        }
Example #10
0
        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);
        }
Example #11
0
        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
            });
        }
Example #12
0
        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();
        }
Example #13
0
        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);
        }
Example #14
0
        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);
                }
            }
        }
Example #15
0
        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);
        }
Example #16
0
        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) + "]}");
        }
Example #17
0
        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;
            }
        }
Example #18
0
        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);
        }
Example #19
0
        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);
        }
Example #20
0
File: Tree.cs Project: Jobu/n2cms
 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);
         }
     }
 }
Example #21
0
        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);
		}