コード例 #1
0
        protected virtual void RegisterSiteMapInformation(ISiteMapBuilderService siteMapBuilderService)
        {
            SiteMapNodeInfo moduleNode = new SiteMapNodeInfo("Home", "~/Default.aspx", "Home", "Home");

            siteMapBuilderService.AddNode(moduleNode);
            siteMapBuilderService.AddNode(new SiteMapNodeInfo("Snow Ski Chair", "~/Merchandise/ProductMenu.aspx?pid=1", "Snow Ski Chair", "Snow Ski Chair"));
            siteMapBuilderService.AddNode(new SiteMapNodeInfo("Water Ski Chair", "~/Merchandise/ProductMenu.aspx?pid=2", "Water Ski Chair", "Water Ski Chair"));
            siteMapBuilderService.AddNode(new SiteMapNodeInfo("Hockey Stick Chair", "~/Merchandise/ProductMenu.aspx?pid=3", "Hockey Stick Chair", "Hockey Stick Chair"));
            siteMapBuilderService.AddNode(new SiteMapNodeInfo("Golf Club Chair", "~/Merchandise/ProductMenu.aspx?pid=4", "Golf Club Chair", "Golf Club Chair"));
            siteMapBuilderService.AddNode(new SiteMapNodeInfo("Wakeboard Bench", "~/Merchandise/ProductMenu.aspx?pid=5", "Wakeboard Bench", "Wakeboard Bench"));
            siteMapBuilderService.AddNode(new SiteMapNodeInfo("Snowboard Bench", "~/Merchandise/ProductMenu.aspx?pid=6", "Snowboard Bench", "Snowboard Bench"));
            siteMapBuilderService.AddNode(new SiteMapNodeInfo("Skateboard Bench", "~/Merchandise/ProductMenu.aspx?pid=7", "Skateboard Bench", "Skateboard Bench"));
            siteMapBuilderService.AddNode(new SiteMapNodeInfo("Snow Ski Bench", "~/Merchandise/ProductMenu.aspx?pid=8", "Snow Ski Bench", "Snow Ski Bench"));
            siteMapBuilderService.AddNode(new SiteMapNodeInfo("Baseball Bat Chair", "~/Merchandise/ProductMenu.aspx?pid=9", "Baseball Bat Chair", "Baseball Bat Chair"));
            siteMapBuilderService.AddNode(new SiteMapNodeInfo("Snowboard Chair", "~/Merchandise/ProductMenu.aspx?pid=10", "Snowboard Chair", "Snowboard Chair"));
            siteMapBuilderService.AddNode(new SiteMapNodeInfo("Water Ski Bench", "~/Merchandise/ProductMenu.aspx?pid=11", "Water Ski Bench", "Water Ski Bench"));
            siteMapBuilderService.AddNode(new SiteMapNodeInfo("Wakeboard Chair", "~/Merchandise/ProductMenu.aspx?pid=12", "Wakeboard Chair", "Wakeboard Chair"));
            siteMapBuilderService.AddNode(new SiteMapNodeInfo("Skateboard Chair", "~/Merchandise/ProductMenu.aspx?pid=13", "Skateboard Chair", "Skateboard Chair"));
            siteMapBuilderService.AddNode(new SiteMapNodeInfo("Log Collection", "~/Merchandise/ProductMenu.aspx?pid=14", "Log Collection", "Log Collection"));
            siteMapBuilderService.AddNode(new SiteMapNodeInfo("Coat Rack", "~/Merchandise/ProductMenu.aspx?pid=15", "Coat Rack", "Coat Rack"));
            siteMapBuilderService.AddNode(new SiteMapNodeInfo("Wine Rack", "~/Merchandise/ProductMenu.aspx?pid=16", "Wine Rack", "Wine Rack"));
            siteMapBuilderService.AddNode(new SiteMapNodeInfo("Children's Chair", "~/Merchandise/ProductMenu.aspx?pid=17", "Children's Chair", "Children's Chair"));

            //bread crumb
            siteMapBuilderService.RootNode.Url   = "~/Default.aspx";
            siteMapBuilderService.RootNode.Title = "SkiChair Home";

            // TODO: register other site map nodes for pages that belong to the website root
        }
コード例 #2
0
        /// <summary>
        /// Adds a node with an authorization rule and the specified display order.
        /// </summary>
        /// <param name="node">The node to add.</param>
        /// <param name="authorizationRule">The authorization rule required to access the node.</param>
        /// <param name="preferredDisplayOrder">The node display order.</param>
        public void AddNode(SiteMapNodeInfo node, string authorizationRule, int preferredDisplayOrder)
        {
            Guard.ArgumentNotNullOrEmptyString(authorizationRule, "authorizationRule");

            AddNode(node, preferredDisplayOrder);
            _nodeAuthorization.Add(node.Key, authorizationRule);
        }
コード例 #3
0
        protected virtual void RegisterSiteMapInformation(ISiteMapBuilderService siteMapBuilderService)
        {
            NameValueCollection attributes = new NameValueCollection(1);

            attributes["imageName"] = "funds";
            SiteMapNodeInfo moduleRoot =
                new SiteMapNodeInfo("EFT", "~/EFT/Default.aspx", "Funds",
                                    "The Electronic Funds Transfer Module", null, attributes, null, null);
            SiteMapNodeInfo createTransferNode =
                new SiteMapNodeInfo("CreateTransfer", "~/EFT/CreateTransfer.aspx", "Create Transfer",
                                    "Creates a new transfer");

            SiteMapNodeInfo confirmTransfersViewNode =
                new SiteMapNodeInfo("ConfirmTransfersView", "~/EFT/ConfirmTransfersView.aspx",
                                    "Confirm Transfers");
            SiteMapNodeInfo createAccountViewNode =
                new SiteMapNodeInfo("CreateAccountView", "~/EFT/CreateAccountView.aspx", "Create Account");
            SiteMapNodeInfo newTransferViewNode =
                new SiteMapNodeInfo("NewTransferView", "~/EFT/NewTransferView.aspx", "New Transfer");
            SiteMapNodeInfo summaryViewNode =
                new SiteMapNodeInfo("SummaryView", "~/EFT/SummaryView.aspx", "Summary");

            siteMapBuilderService.AddNode(moduleRoot, 1);
            siteMapBuilderService.AddNode(createTransferNode, moduleRoot, "AllowCreateTransfer");
            siteMapBuilderService.AddNode(confirmTransfersViewNode, createTransferNode);
            siteMapBuilderService.AddNode(createAccountViewNode, createTransferNode);
            siteMapBuilderService.AddNode(newTransferViewNode, createTransferNode);
            siteMapBuilderService.AddNode(summaryViewNode, createTransferNode);
        }
コード例 #4
0
        public void GetChildrenReturnsProperDisplayOrderWithLotsOfNodes()
        {
            ISiteMapBuilderService service = new SiteMapBuilderService();
            SiteMapNodeInfo        node1   = new SiteMapNodeInfo("node1");
            SiteMapNodeInfo        node2   = new SiteMapNodeInfo("node2");
            SiteMapNodeInfo        node3   = new SiteMapNodeInfo("node3");
            SiteMapNodeInfo        node4   = new SiteMapNodeInfo("node4");
            SiteMapNodeInfo        node5   = new SiteMapNodeInfo("node5");
            SiteMapNodeInfo        node6   = new SiteMapNodeInfo("node6");
            SiteMapNodeInfo        node7   = new SiteMapNodeInfo("node7");
            SiteMapNodeInfo        node8   = new SiteMapNodeInfo("node8");

            service.AddNode(node2, 2);
            service.AddNode(node3);
            service.AddNode(node1, 1);
            service.AddNode(node4, 4);
            service.AddNode(node5);
            service.AddNode(node6, 10);
            service.AddNode(node7);
            service.AddNode(node8, 1000);

            Assert.AreSame(node1, service.GetChildren(service.RootNode.Key)[0]);
            Assert.AreSame(node2, service.GetChildren(service.RootNode.Key)[1]);
            Assert.AreSame(node4, service.GetChildren(service.RootNode.Key)[2]);
            Assert.AreSame(node6, service.GetChildren(service.RootNode.Key)[3]);
            Assert.AreSame(node8, service.GetChildren(service.RootNode.Key)[4]);
            Assert.AreSame(node3, service.GetChildren(service.RootNode.Key)[5]);
            Assert.AreSame(node5, service.GetChildren(service.RootNode.Key)[6]);
            Assert.AreSame(node7, service.GetChildren(service.RootNode.Key)[7]);
        }
コード例 #5
0
        protected virtual void RegisterSiteMapInformation(ISiteMapBuilderService siteMapBuilderService)
        {
            SiteMapNodeInfo moduleNode = new SiteMapNodeInfo("$ModuleName$", "~/$ModuleFolderNameOnWebSite$/Default.aspx", "$ModuleName$");

            siteMapBuilderService.AddNode(moduleNode);

            // TODO: register other site map nodes that $ModuleName$ module might provide
        }
コード例 #6
0
        public void ThrowsWhenSpecifyingEmptyAuthorizationRule()
        {
            SiteMapBuilderService service = new SiteMapBuilderService();
            SiteMapNodeInfo       parent  = new SiteMapNodeInfo("parent");
            string rule = String.Empty;

            service.AddNode(parent, rule);
        }
コード例 #7
0
        protected virtual void RegisterSiteMapInformation(ISiteMapBuilderService siteMapBuilderService)
        {
            SiteMapNodeInfo moduleNode = new SiteMapNodeInfo("Contacts", "~/Contacts/Default.aspx", "Contacts");

            siteMapBuilderService.AddNode(moduleNode);

            // TODO: register other site map nodes that Contacts module might provide
        }
コード例 #8
0
        protected virtual void RegisterSiteMapInformation(ISiteMapBuilderService siteMapBuilderService)
        {
            SiteMapNodeInfo moduleNode = new SiteMapNodeInfo("Photo Gallery Menu", "~/PhotoGallery/PhotoGalleryTemp.aspx", "Photo Gallery Menu");

            siteMapBuilderService.AddNode(moduleNode);

            // TODO: register other site map nodes that PhotoGallery module might provide
        }
コード例 #9
0
        public void AssociateAuthorizationRuleWithNode()
        {
            SiteMapBuilderService service = new SiteMapBuilderService();
            SiteMapNodeInfo node = new SiteMapNodeInfo("node");

            service.AddNode(node, "rule");

            Assert.AreEqual("rule", service.GetAuthorizationRule(node.Key));
        }
コード例 #10
0
        public void CannotAddNodesWithSameKey()
        {
            SiteMapBuilderService service = new SiteMapBuilderService();
            SiteMapNodeInfo       node1   = new SiteMapNodeInfo("node");
            SiteMapNodeInfo       node2   = new SiteMapNodeInfo("node");

            service.AddNode(node1);
            service.AddNode(node2);
        }
コード例 #11
0
        public void AssociateAuthorizationRuleWithNode()
        {
            SiteMapBuilderService service = new SiteMapBuilderService();
            SiteMapNodeInfo       node    = new SiteMapNodeInfo("node");

            service.AddNode(node, "rule");

            Assert.AreEqual("rule", service.GetAuthorizationRule(node.Key));
        }
コード例 #12
0
        public void NodeThatDoesNotRequireAuthorizationReturnsNullAuthorizationRule()
        {
            SiteMapBuilderService service = new SiteMapBuilderService();
            SiteMapNodeInfo       node    = new SiteMapNodeInfo("node");

            service.AddNode(node);

            Assert.IsNull(service.GetAuthorizationRule(node.Key));
        }
コード例 #13
0
        public void CanAddNodeWithUIOrderSet()
        {
            ISiteMapBuilderService service = new SiteMapBuilderService();
            SiteMapNodeInfo node = new SiteMapNodeInfo("parent");

            service.AddNode(node, 1);

            Assert.IsTrue(service.GetChildren(service.RootNode.Key).Contains(node));
        }
コード例 #14
0
        public void CanAddNodeWithUIOrderSet()
        {
            ISiteMapBuilderService service = new SiteMapBuilderService();
            SiteMapNodeInfo        node    = new SiteMapNodeInfo("parent");

            service.AddNode(node, 1);

            Assert.IsTrue(service.GetChildren(service.RootNode.Key).Contains(node));
        }
コード例 #15
0
        protected virtual void RegisterSiteMapInformation(ISiteMapBuilderService siteMapBuilderService)
        {
            SiteMapNodeInfo moduleRootNode            = new SiteMapNodeInfo("Customers", null, "Customers");
            SiteMapNodeInfo customersSimpleViewNode   = new SiteMapNodeInfo("CustomersSimpleView", "~/Customers/CustomersSimpleView.aspx", "Customers (simple)", "Shows simple usage patterns of the ObjectContainerDataSource control, including select/update/insert/delete operations with sorting and paging provided by the control");
            SiteMapNodeInfo customersAdvancedViewNode = new SiteMapNodeInfo("CustomersAdvancedView", "~/Customers/CustomersAdvancedView.aspx", "Customers (advanced)", "Shows advanced usage patterns of the ObjectContainerDataSource control, including select/update/insert/delete operations and server-side sorting and paging");

            siteMapBuilderService.AddNode(moduleRootNode);
            siteMapBuilderService.AddNode(customersSimpleViewNode, moduleRootNode);
            siteMapBuilderService.AddNode(customersAdvancedViewNode, moduleRootNode);
        }
コード例 #16
0
        // We need to replace all calls to _childNodes.Add() to the add sorted method
        /// <summary>
        /// Initialize a new instance of <see cref="SiteMapBuilderService"/>.
        /// </summary>
        public SiteMapBuilderService()
        {
            _rootNode = new SiteMapNodeInfo(Resources.SiteMapRootNodeKey);
            _keyIndex = new Dictionary<string, SiteMapNodeInfo>();
            _childNodes = new Dictionary<string, List<SiteMapNodeInfo>>();
            _nodeAuthorization = new Dictionary<string, string>();
            _nodePreferredOrder = new Dictionary<string, int>();

            _childNodes.Add(_rootNode.Key, new List<SiteMapNodeInfo>());
        }
コード例 #17
0
        // We need to replace all calls to _childNodes.Add() to the add sorted method

        /// <summary>
        /// Initialize a new instance of <see cref="SiteMapBuilderService"/>.
        /// </summary>
        public SiteMapBuilderService()
        {
            _rootNode           = new SiteMapNodeInfo(Resources.SiteMapRootNodeKey);
            _keyIndex           = new Dictionary <string, SiteMapNodeInfo>();
            _childNodes         = new Dictionary <string, List <SiteMapNodeInfo> >();
            _nodeAuthorization  = new Dictionary <string, string>();
            _nodePreferredOrder = new Dictionary <string, int>();

            _childNodes.Add(_rootNode.Key, new List <SiteMapNodeInfo>());
        }
コード例 #18
0
        public void VerifyThatAddSingleNodeAddsANodeToTheRoot()
        {
            SiteMapBuilderService service = new SiteMapBuilderService();
            SiteMapNodeInfo       node    = new SiteMapNodeInfo("node");

            service.AddNode(node);

            Assert.AreEqual(1, service.GetChildren(service.RootNode.Key).Count);
            Assert.IsTrue(service.GetChildren(service.RootNode.Key).Contains(node));
        }
コード例 #19
0
        public void AdminModuleInitializerGetsRegisteredOnSiteMap()
        {
            TestableModule        module  = new TestableModule();
            SiteMapBuilderService service = new SiteMapBuilderService();

            module.TestRegisterSiteMapInformation(service);

            SiteMapNodeInfo node = service.GetChildren(service.RootNode.Key)[0];

            Assert.AreEqual("Admin", node.Key);
        }
コード例 #20
0
        public void OrdersGetsRegisteredOnSiteMap()
        {
            TestableModuleInitializer moduleInitializer = new TestableModuleInitializer();
            SiteMapBuilderService     siteMapBuilder    = new SiteMapBuilderService();

            moduleInitializer.TestRegisterSiteMapInformation(siteMapBuilder);

            SiteMapNodeInfo node = siteMapBuilder.GetChildren(siteMapBuilder.RootNode.Key)[0];

            Assert.AreEqual("Orders", node.Key);
        }
コード例 #21
0
        public void CustomersActionsGetsRegisteredOnSiteMap()
        {
            TestableCustomersModuleInitializer moduleInitializer = new TestableCustomersModuleInitializer();
            SiteMapBuilderService siteMapBuilder = new SiteMapBuilderService();

            moduleInitializer.TestRegisterSiteMapInformation(siteMapBuilder);

            SiteMapNodeInfo nodeSearchOrder = siteMapBuilder.GetChildren("Customers")[0];

            Assert.AreEqual("SearchCustomer", nodeSearchOrder.Key);
        }
コード例 #22
0
        protected virtual void RegisterSiteMapInformation(ISiteMapBuilderService siteMapBuilderService)
        {
            SiteMapNodeInfo moduleNode = new SiteMapNodeInfo("Customers", "~/Customers/Default.aspx", "Customers");

            siteMapBuilderService.AddNode(moduleNode, "AllowSearchCustomers");

            SiteMapNodeInfo searchCustomerNode =
                new SiteMapNodeInfo("SearchCustomer", "~/Customers/SearchCustomers.aspx", "Search Customers");

            siteMapBuilderService.AddNode(searchCustomerNode, moduleNode, "AllowSearchCustomers");
        }
コード例 #23
0
        /// <summary>
        /// Adds a node as a child of another node, and sets the order with which to display the node.
        /// </summary>
        /// <param name="node">The node to add.</param>
        /// <param name="parent">The node under which to add the new node.</param>
        /// <param name="preferredDisplayOrder">The node display order.</param>
        public void AddNode(SiteMapNodeInfo node, SiteMapNodeInfo parent, int preferredDisplayOrder)
        {
            SafeAddNode(node);

            if (!_childNodes.ContainsKey(parent.Key))
            {
                _childNodes.Add(parent.Key, new List <SiteMapNodeInfo>());
            }

            AddNodeWithOrder(parent.Key, node, preferredDisplayOrder);
        }
コード例 #24
0
        protected virtual void RegisterSiteMapInformation(ISiteMapBuilderService siteMapBuilderService)
        {
            SiteMapNodeInfo moduleNode = new SiteMapNodeInfo("Home", "~/Default.aspx", "Home", "Home");

            siteMapBuilderService.AddNode(moduleNode);

            siteMapBuilderService.RootNode.Url   = "~/Default.aspx";
            siteMapBuilderService.RootNode.Title = "ModuleQuickstart";

            // TODO: register other site map nodes for pages that belong to the website root
        }
コード例 #25
0
        private void SafeAddNode(SiteMapNodeInfo node)
        {
            Guard.ArgumentNotNull(node, "node");

            if (_keyIndex.ContainsKey(node.Key))
            {
                throw new ServiceException(Resources.DuplicateKeyExceptionMessage);
            }

            _keyIndex.Add(node.Key, node);
        }
コード例 #26
0
        public void CanSpecifyAuthorizationRuleWhenAddingNodesWithPreferredDisplayOrder()
        {
            ISiteMapBuilderService service = new SiteMapBuilderService();
            SiteMapNodeInfo        child2  = new SiteMapNodeInfo("child1");
            SiteMapNodeInfo        child1  = new SiteMapNodeInfo("child2");

            service.AddNode(child2, "rule");
            service.AddNode(child1, "rule", 1000);

            Assert.AreSame(child1, service.GetChildren(service.RootNode.Key)[0]);
            Assert.AreSame(child2, service.GetChildren(service.RootNode.Key)[1]);
        }
コード例 #27
0
 private SiteMapNode CreateSiteMapNode(SiteMapNodeInfo nodeInfo)
 {
     return(new SiteMapNode(this,
                            nodeInfo.Key,
                            nodeInfo.Url,
                            nodeInfo.Title,
                            nodeInfo.Description,
                            nodeInfo.Roles,
                            nodeInfo.Attributes,
                            nodeInfo.ExplicitResourcesKey,
                            nodeInfo.ImplicitResourceKey));
 }
コード例 #28
0
        protected void RegisterSiteMapInformation(ISiteMapBuilderService siteMapBuilderService)
        {
            // Register the nodes published by this module
            NameValueCollection attributes = new NameValueCollection(1);

            attributes["imageName"] = "admin";
            SiteMapNodeInfo adminNode      = new SiteMapNodeInfo("Admin", "~/Admin/Default.aspx", "Administration", "Admin Module", null, attributes, null, null);
            SiteMapNodeInfo permissionNode = new SiteMapNodeInfo("ViewRolePermissions", "~/Admin/ViewRolePermissionsView.aspx", "Permissions", "View Role Permissions");

            siteMapBuilderService.AddNode(adminNode, 1000);
            siteMapBuilderService.AddNode(permissionNode, adminNode, Permissions.AllowAdministerPermissions);
        }
コード例 #29
0
        protected virtual void RegisterSiteMapInformation(ISiteMapBuilderService siteMapBuilderService)
        {
            SiteMapNodeInfo moduleNode = new SiteMapNodeInfo("CustomerManager", "~/CustomerManager/Default.aspx", "Customers");

            siteMapBuilderService.AddNode(moduleNode);

            SiteMapNodeInfo searchNode = new SiteMapNodeInfo("SearchCustomer", "~/CustomerManager/SearchCustomer.aspx", "Search");

            siteMapBuilderService.AddNode(searchNode, moduleNode);

            // TODO: register other site map nodes that CustomerManager module might provide
        }
コード例 #30
0
        public void CanBuildSimpleTree()
        {
            SiteMapBuilderService service    = new SiteMapBuilderService();
            SiteMapNodeInfo       child      = new SiteMapNodeInfo("child");
            SiteMapNodeInfo       grandChild = new SiteMapNodeInfo("grandChild");

            service.AddNode(child);
            service.AddNode(grandChild, child);

            Assert.IsTrue(service.GetChildren(service.RootNode.Key).Contains(child));
            Assert.IsTrue(service.GetChildren(child.Key).Contains(grandChild));
        }
コード例 #31
0
        public void CanSpecifyAuthorizationRuleWhenAddingChildNode()
        {
            SiteMapBuilderService service = new SiteMapBuilderService();
            SiteMapNodeInfo       parent  = new SiteMapNodeInfo("parent");
            SiteMapNodeInfo       child   = new SiteMapNodeInfo("child");

            service.AddNode(parent);
            service.AddNode(child, parent, "rule");

            Assert.IsNull(service.GetAuthorizationRule(parent.Key));
            Assert.AreEqual("rule", service.GetAuthorizationRule(child.Key));
        }
コード例 #32
0
        public void AdminModuleInitializerGetsRegisterOnSiteMapAdministerPermissionsAsChildNode()
        {
            TestableModule        module  = new TestableModule();
            SiteMapBuilderService service = new SiteMapBuilderService();

            module.TestRegisterSiteMapInformation(service);

            SiteMapNodeInfo node = service.GetChildren(service.RootNode.Key)[0];

            Assert.AreEqual(1, service.GetChildren(node.Key).Count);
            Assert.AreEqual("AllowAdministerPermissions", service.GetAuthorizationRule(service.GetChildren(node.Key)[0].Key));
        }
コード例 #33
0
        public void TestCanInitializeWithKeyUrlAndTitle()
        {
            SiteMapNodeInfo node = new SiteMapNodeInfo("Key", "Url", "Title");

            Assert.AreEqual("Key", node.Key);
            Assert.AreEqual("Url", node.Url);
            Assert.AreEqual("Title", node.Title);
            Assert.IsNull(node.Description);
            Assert.IsNull(node.Roles);
            Assert.IsNull(node.Attributes);
            Assert.IsNull(node.ExplicitResourcesKey);
            Assert.IsNull(node.ImplicitResourceKey);
        }
コード例 #34
0
        public void AddTwoNodesWorks()
        {
            SiteMapBuilderService service = new SiteMapBuilderService();
            SiteMapNodeInfo node1 = new SiteMapNodeInfo("node1");
            SiteMapNodeInfo node2 = new SiteMapNodeInfo("node2");

            service.AddNode(node1);
            service.AddNode(node2);

            Assert.AreEqual(2, service.GetChildren(service.RootNode.Key).Count);
            Assert.IsTrue(service.GetChildren(service.RootNode.Key).Contains(node1));
            Assert.IsTrue(service.GetChildren(service.RootNode.Key).Contains(node2));
        }
コード例 #35
0
        public void ThrowsWhenSpecifyingNullAuthorizationRule()
        {
            SiteMapBuilderService service = new SiteMapBuilderService();
            SiteMapNodeInfo parent = new SiteMapNodeInfo("parent");
            string rule = null;

            service.AddNode(parent, rule);
        }
コード例 #36
0
        public void GetChildrenReturnsTwoTopLevelNodesInDisplayOrder()
        {
            ISiteMapBuilderService service = new SiteMapBuilderService();
            SiteMapNodeInfo node1 = new SiteMapNodeInfo("node1");
            SiteMapNodeInfo node2 = new SiteMapNodeInfo("node2");

            service.AddNode(node2, 2);
            service.AddNode(node1, 1);

            Assert.IsTrue(service.GetChildren(service.RootNode.Key).Contains(node1));
            Assert.IsTrue(service.GetChildren(service.RootNode.Key).Contains(node2));

            Assert.AreSame(node1, service.GetChildren(service.RootNode.Key)[0]);
            Assert.AreSame(node2, service.GetChildren(service.RootNode.Key)[1]);
        }
コード例 #37
0
 /// <summary>
 /// Adds a node with an authorization rule as child of another node.
 /// </summary>
 /// <param name="node">The node to add.</param>
 /// <param name="parent">The node under which to add the new node.</param>
 /// <param name="authorizationRule">The authorizarion rule required to access the node.</param>
 public void AddNode(SiteMapNodeInfo node, SiteMapNodeInfo parent, string authorizationRule)
 {
     AddNode(node, parent, authorizationRule, int.MaxValue);
 }
コード例 #38
0
        /// <summary>
        /// Adds a node as a child of another node, and sets the order with which to display the node.
        /// </summary>
        /// <param name="node">The node to add.</param>
        /// <param name="parent">The node under which to add the new node.</param>
        /// <param name="preferredDisplayOrder">The node display order.</param>
        public void AddNode(SiteMapNodeInfo node, SiteMapNodeInfo parent, int preferredDisplayOrder)
        {
            SafeAddNode(node);

            if (!_childNodes.ContainsKey(parent.Key))
            {
                _childNodes.Add(parent.Key, new List<SiteMapNodeInfo>());
            }

            AddNodeWithOrder(parent.Key, node, preferredDisplayOrder);
        }
コード例 #39
0
        public void CanSpecifyAuthorizationRuleWhenAddingNodesWithPreferredDisplayOrder()
        {
            ISiteMapBuilderService service = new SiteMapBuilderService();
            SiteMapNodeInfo child2 = new SiteMapNodeInfo("child1");
            SiteMapNodeInfo child1 = new SiteMapNodeInfo("child2");

            service.AddNode(child2, "rule");
            service.AddNode(child1, "rule", 1000);

            Assert.AreSame(child1, service.GetChildren(service.RootNode.Key)[0]);
            Assert.AreSame(child2, service.GetChildren(service.RootNode.Key)[1]);
        }
コード例 #40
0
        public void GetChildrenReturnsChildNodesInDisplayOrder()
        {
            ISiteMapBuilderService service = new SiteMapBuilderService();
            SiteMapNodeInfo parent = new SiteMapNodeInfo("parent");
            SiteMapNodeInfo toplevel = new SiteMapNodeInfo("toplevel");
            SiteMapNodeInfo child1 = new SiteMapNodeInfo("child1");
            SiteMapNodeInfo child2 = new SiteMapNodeInfo("child2");

            service.AddNode(toplevel);
            service.AddNode(parent, 1);
            service.AddNode(child2, parent);
            service.AddNode(child1, parent, 100);

            Assert.AreSame(parent, service.GetChildren(service.RootNode.Key)[0]);
            Assert.AreSame(toplevel, service.GetChildren(service.RootNode.Key)[1]);

            Assert.AreSame(child1, service.GetChildren(parent.Key)[0]);
            Assert.AreSame(child2, service.GetChildren(parent.Key)[1]);
        }
コード例 #41
0
        public void GetChildrenReturnsProperDisplayOrderWhenSeveralDoNotSpecifyPreference()
        {
            ISiteMapBuilderService service = new SiteMapBuilderService();
            SiteMapNodeInfo node1 = new SiteMapNodeInfo("node1");
            SiteMapNodeInfo node2 = new SiteMapNodeInfo("node2");
            SiteMapNodeInfo node3 = new SiteMapNodeInfo("node3");
            SiteMapNodeInfo node4 = new SiteMapNodeInfo("node4");

            service.AddNode(node2, 2);
            service.AddNode(node3);
            service.AddNode(node1, 1);
            service.AddNode(node4);

            Assert.IsTrue(service.GetChildren(service.RootNode.Key).Contains(node1));
            Assert.IsTrue(service.GetChildren(service.RootNode.Key).Contains(node2));
            Assert.IsTrue(service.GetChildren(service.RootNode.Key).Contains(node3));
            Assert.IsTrue(service.GetChildren(service.RootNode.Key).Contains(node4));

            Assert.AreSame(node1, service.GetChildren(service.RootNode.Key)[0]);
            Assert.AreSame(node2, service.GetChildren(service.RootNode.Key)[1]);
            Assert.AreSame(node3, service.GetChildren(service.RootNode.Key)[2]);
            Assert.AreSame(node4, service.GetChildren(service.RootNode.Key)[3]);
        }
コード例 #42
0
        public void GetChildrenReturnsProperDisplayOrderWithLotsOfNodes()
        {
            ISiteMapBuilderService service = new SiteMapBuilderService();
            SiteMapNodeInfo node1 = new SiteMapNodeInfo("node1");
            SiteMapNodeInfo node2 = new SiteMapNodeInfo("node2");
            SiteMapNodeInfo node3 = new SiteMapNodeInfo("node3");
            SiteMapNodeInfo node4 = new SiteMapNodeInfo("node4");
            SiteMapNodeInfo node5 = new SiteMapNodeInfo("node5");
            SiteMapNodeInfo node6 = new SiteMapNodeInfo("node6");
            SiteMapNodeInfo node7 = new SiteMapNodeInfo("node7");
            SiteMapNodeInfo node8 = new SiteMapNodeInfo("node8");

            service.AddNode(node2, 2);
            service.AddNode(node3);
            service.AddNode(node1, 1);
            service.AddNode(node4, 4);
            service.AddNode(node5);
            service.AddNode(node6, 10);
            service.AddNode(node7);
            service.AddNode(node8, 1000);

            Assert.AreSame(node1, service.GetChildren(service.RootNode.Key)[0]);
            Assert.AreSame(node2, service.GetChildren(service.RootNode.Key)[1]);
            Assert.AreSame(node4, service.GetChildren(service.RootNode.Key)[2]);
            Assert.AreSame(node6, service.GetChildren(service.RootNode.Key)[3]);
            Assert.AreSame(node8, service.GetChildren(service.RootNode.Key)[4]);
            Assert.AreSame(node3, service.GetChildren(service.RootNode.Key)[5]);
            Assert.AreSame(node5, service.GetChildren(service.RootNode.Key)[6]);
            Assert.AreSame(node7, service.GetChildren(service.RootNode.Key)[7]);
        }
コード例 #43
0
        public void GetChildrenReturnsThreeTopLevelNodesInDisplayOrderWhenOneDoesNotSpecifyPreference()
        {
            ISiteMapBuilderService service = new SiteMapBuilderService();
            SiteMapNodeInfo node1 = new SiteMapNodeInfo("node1");
            SiteMapNodeInfo node2 = new SiteMapNodeInfo("node2");
            SiteMapNodeInfo node3 = new SiteMapNodeInfo("node3");

            service.AddNode(node2, 2);
            service.AddNode(node3);
            service.AddNode(node1, 1);

            Assert.IsTrue(service.GetChildren(service.RootNode.Key).Contains(node1));
            Assert.IsTrue(service.GetChildren(service.RootNode.Key).Contains(node2));
            Assert.IsTrue(service.GetChildren(service.RootNode.Key).Contains(node3));

            Assert.AreSame(node1, service.GetChildren(service.RootNode.Key)[0]);
            Assert.AreSame(node2, service.GetChildren(service.RootNode.Key)[1]);
            Assert.AreSame(node3, service.GetChildren(service.RootNode.Key)[2]);
        }
コード例 #44
0
 /// <summary>
 /// Adds a node as a child of the root node and sets the order with which the node should be displayed.
 /// </summary>
 /// <param name="node">The node to add.</param>
 /// <param name="preferredDisplayOrder">The node display order.</param>
 public void AddNode(SiteMapNodeInfo node, int preferredDisplayOrder)
 {
     SafeAddNode(node);
     AddNodeWithOrder(RootNode.Key, node, preferredDisplayOrder);
 }
コード例 #45
0
 /// <summary>
 /// Adds a node as a child of another node.
 /// </summary>
 /// <param name="node">The node to add.</param>
 /// <param name="parent">The node under which to add the new node.</param>
 public void AddNode(SiteMapNodeInfo node, SiteMapNodeInfo parent)
 {
     AddNode(node, parent, int.MaxValue);
 }
コード例 #46
0
        public void CanSpecifyAuthorizationRuleWhenAddingChildNode()
        {
            SiteMapBuilderService service = new SiteMapBuilderService();
            SiteMapNodeInfo parent = new SiteMapNodeInfo("parent");
            SiteMapNodeInfo child = new SiteMapNodeInfo("child");

            service.AddNode(parent);
            service.AddNode(child, parent, "rule");

            Assert.IsNull(service.GetAuthorizationRule(parent.Key));
            Assert.AreEqual("rule", service.GetAuthorizationRule(child.Key));
        }
コード例 #47
0
        /// <summary>
        /// Adds a node with an authorization rule and the specified display order.
        /// </summary>
        /// <param name="node">The node to add.</param>
        /// <param name="authorizationRule">The authorization rule required to access the node.</param>
        /// <param name="preferredDisplayOrder">The node display order.</param>
        public void AddNode(SiteMapNodeInfo node, string authorizationRule, int preferredDisplayOrder)
        {
            Guard.ArgumentNotNullOrEmptyString(authorizationRule, "authorizationRule");

            AddNode(node, preferredDisplayOrder);
            _nodeAuthorization.Add(node.Key, authorizationRule);
        }
コード例 #48
0
        private void AddNodeWithOrder(string parentKey, SiteMapNodeInfo node, int preferredDisplayOrder)
        {
            _nodePreferredOrder.Add(node.Key, preferredDisplayOrder);
            for (int i = 0; i < _childNodes[parentKey].Count; i++)
            {
                string key = _childNodes[parentKey][i].Key;
                if (_nodePreferredOrder[key] > preferredDisplayOrder)
                {
                    _childNodes[parentKey].Insert(i, node);
                    return;
                }
            }

            _childNodes[parentKey].Add(node);
        }
コード例 #49
0
 /// <summary>
 /// Adds a node under the parent node, with the specified authorization rule and display order.
 /// </summary>
 /// <param name="node">The node to add.</param>
 /// <param name="parent">The node under which to add the new node.</param>
 /// <param name="authorizationRule">The authorizarion rule required to access the node.</param>
 /// <param name="preferredDisplayOrder">The node display order.</param>
 public void AddNode(SiteMapNodeInfo node, SiteMapNodeInfo parent, string authorizationRule, int preferredDisplayOrder)
 {
     AddNode(node, parent, preferredDisplayOrder);
     _nodeAuthorization.Add(node.Key, authorizationRule);
 }
コード例 #50
0
        public void NodeThatDoesNotRequireAuthorizationReturnsNullAuthorizationRule()
        {
            SiteMapBuilderService service = new SiteMapBuilderService();
            SiteMapNodeInfo node = new SiteMapNodeInfo("node");

            service.AddNode(node);

            Assert.IsNull(service.GetAuthorizationRule(node.Key));
        }
コード例 #51
0
        private void SafeAddNode(SiteMapNodeInfo node)
        {
            Guard.ArgumentNotNull(node, "node");

            if (_keyIndex.ContainsKey(node.Key))
            {
                throw new ServiceException(Resources.DuplicateKeyExceptionMessage);
            }

            _keyIndex.Add(node.Key, node);
        }
コード例 #52
0
        public void CannotAddNodesWithSameKey()
        {
            SiteMapBuilderService service = new SiteMapBuilderService();
            SiteMapNodeInfo node1 = new SiteMapNodeInfo("node");
            SiteMapNodeInfo node2 = new SiteMapNodeInfo("node");

            service.AddNode(node1);
            service.AddNode(node2);
        }
コード例 #53
0
 /// <summary>
 /// Adds a node as child of the root node.
 /// </summary>
 /// <param name="node">The node to add.</param>
 public void AddNode(SiteMapNodeInfo node)
 {
     AddNode(node, int.MaxValue);
     //_childNodes[RootNode.Key].Add(node);
 }
コード例 #54
0
        public void VerifyThatAddSingleNodeAddsANodeToTheRoot()
        {
            SiteMapBuilderService service = new SiteMapBuilderService();
            SiteMapNodeInfo node = new SiteMapNodeInfo("node");

            service.AddNode(node);

            Assert.AreEqual(1, service.GetChildren(service.RootNode.Key).Count);
            Assert.IsTrue(service.GetChildren(service.RootNode.Key).Contains(node));
        }
コード例 #55
0
        public void CanBuildSimpleTree()
        {
            SiteMapBuilderService service = new SiteMapBuilderService();
            SiteMapNodeInfo child = new SiteMapNodeInfo("child");
            SiteMapNodeInfo grandChild = new SiteMapNodeInfo("grandChild");

            service.AddNode(child);
            service.AddNode(grandChild, child);

            Assert.IsTrue(service.GetChildren(service.RootNode.Key).Contains(child));
            Assert.IsTrue(service.GetChildren(child.Key).Contains(grandChild));
        }
コード例 #56
0
 private SiteMapNode CreateSiteMapNode(SiteMapNodeInfo nodeInfo)
 {
     return new SiteMapNode(this,
                            nodeInfo.Key,
                            nodeInfo.Url,
                            nodeInfo.Title,
                            nodeInfo.Description,
                            nodeInfo.Roles,
                            nodeInfo.Attributes,
                            nodeInfo.ExplicitResourcesKey,
                            nodeInfo.ImplicitResourceKey);
 }