//[SampleMetadataTag(Name = BuiltInTagNames.SampleHidden)]

        public void CaDeployFlatQuickLaunchNavigation()
        {
            var aboutUs = new QuickLaunchNavigationNodeDefinition
            {
                Title      = "About us",
                Url        = "about-us.aspx",
                IsExternal = true
            };

            var services = new QuickLaunchNavigationNodeDefinition
            {
                Title      = "Services",
                Url        = "services.aspx",
                IsExternal = true
            };

            var contacts = new QuickLaunchNavigationNodeDefinition
            {
                Title      = "Contacts",
                Url        = "contacts.aspx",
                IsExternal = true
            };

            var model = SPMeta2Model.NewWebModel(web =>
            {
                web
                .AddQuickLaunchNavigationNode(aboutUs)
                .AddQuickLaunchNavigationNode(services)
                .AddQuickLaunchNavigationNode(contacts);
            });

            DeployModel(model);
        }
        public void Deploy_QuickNavigation()
        {
            // Step 1, define top navigation nodes
            var home = new QuickLaunchNavigationNodeDefinition
            {
                Title      = "Home link",
                Url        = "/",
                IsExternal = false
            };

            var google = new QuickLaunchNavigationNodeDefinition
            {
                Title      = "Google link",
                Url        = "http://google.com",
                IsExternal = true
            };

            // Step 2, define web model and artifact relationships - add feature to the web
            var model = SPMeta2Model
                        .NewWebModel(web =>
            {
                web
                .AddQuickLaunchNavigationNode(home)
                .AddQuickLaunchNavigationNode(google);
            });

            // Step 3, deploy model
            DeployWebModel(model);
        }
        private NavigationNode EnsureQuickLaunchNavigationNode(NavigationNodeModelHost navigationNodeModelHost,
                                                               QuickLaunchNavigationNodeDefinition quickLaunchNode)
        {
            var navigationNode = navigationNodeModelHost.HostNavigationNode;
            var quickLaunch    = navigationNode.Children;

            var context = navigationNodeModelHost.HostWeb.Context;

            context.Load(quickLaunch);
            context.ExecuteQuery();

            var existingNode = GetNavigationNode(navigationNodeModelHost, quickLaunchNode);

            InvokeOnModelEvent(this, new ModelEventArgs
            {
                CurrentModelNode = null,
                Model            = null,
                EventType        = ModelEventType.OnProvisioning,
                Object           = existingNode,
                ObjectType       = typeof(NavigationNode),
                ObjectDefinition = quickLaunchNode,
                ModelHost        = navigationNodeModelHost
            });

            if (existingNode == null)
            {
                existingNode = quickLaunch.Add(new NavigationNodeCreationInformation
                {
                    Title      = quickLaunchNode.Title,
                    IsExternal = quickLaunchNode.IsExternal,
                    Url        = quickLaunchNode.Url
                });

                context.ExecuteQuery();
            }

            existingNode.Title     = quickLaunchNode.Title;
            existingNode.Url       = quickLaunchNode.Url;
            existingNode.IsVisible = quickLaunchNode.IsVisible;

            InvokeOnModelEvent(this, new ModelEventArgs
            {
                CurrentModelNode = null,
                Model            = null,
                EventType        = ModelEventType.OnProvisioned,
                Object           = existingNode,
                ObjectType       = typeof(NavigationNode),
                ObjectDefinition = quickLaunchNode,
                ModelHost        = navigationNodeModelHost
            });

            existingNode.Update();

            context.ExecuteQuery();

            return(existingNode);
        }
        protected NavigationNode GetRootNavigationNode(
            WebModelHost webModelHost,
            QuickLaunchNavigationNodeDefinition quickLaunchModel)
        {
            NavigationNodeCollection quickLaunch = null;
            var result = GetRootNavigationNode(webModelHost, quickLaunchModel, out quickLaunch);

            return(result);
        }
        private NavigationNode EnsureRootQuickLaunchNavigationNode(
            WebModelHost webModelHost,
            QuickLaunchNavigationNodeDefinition quickLaunchModel)
        {
            NavigationNodeCollection quickLaunch = null;

            var context = webModelHost.HostWeb.Context;

            var existingNode = GetRootNavigationNode(webModelHost, quickLaunchModel, out quickLaunch);
            var previousNode = quickLaunch.Count > 0 ? quickLaunch.Last() : null;

            InvokeOnModelEvent(this, new ModelEventArgs
            {
                CurrentModelNode = null,
                Model            = null,
                EventType        = ModelEventType.OnProvisioning,
                Object           = existingNode,
                ObjectType       = typeof(NavigationNode),
                ObjectDefinition = quickLaunchModel,
                ModelHost        = webModelHost
            });

            if (existingNode == null)
            {
                existingNode = quickLaunch.Add(new NavigationNodeCreationInformation
                {
                    Title        = quickLaunchModel.Title,
                    IsExternal   = quickLaunchModel.IsExternal,
                    Url          = quickLaunchModel.Url,
                    PreviousNode = previousNode
                });

                context.ExecuteQuery();
            }

            existingNode.Title     = quickLaunchModel.Title;
            existingNode.Url       = quickLaunchModel.Url;
            existingNode.IsVisible = quickLaunchModel.IsVisible;

            InvokeOnModelEvent(this, new ModelEventArgs
            {
                CurrentModelNode = null,
                Model            = null,
                EventType        = ModelEventType.OnProvisioned,
                Object           = existingNode,
                ObjectType       = typeof(NavigationNode),
                ObjectDefinition = quickLaunchModel,
                ModelHost        = webModelHost
            });

            existingNode.Update();

            context.ExecuteQuery();

            return(existingNode);
        }
        private void ValidateNode(NavigationNode qlNode, QuickLaunchNavigationNodeDefinition quickLaunchModel)
        {
            TraceUtils.WithScope(traceScope =>
            {
                var pair = new ComparePair <QuickLaunchNavigationNodeDefinition, NavigationNode>(quickLaunchModel, qlNode);

                traceScope.WriteLine(string.Format("Validating model:[{0}] node:[{1}]", quickLaunchModel, qlNode));

                traceScope.WithTraceIndent(trace => pair
                                           .ShouldBeEqual(trace, m => m.Title, o => o.Title)
                                           .ShouldBeEqual(trace, m => m.Url, o => o.Url)
                                           .ShouldBeEqual(trace, m => m.IsVisible, o => o.IsVisible)
                                           .ShouldBeEqual(trace, m => m.IsExternal, o => o.IsExternal));
            });
        }
        private SPNavigationNode EnsureRootQuickLaunchNavigationNode(
            WebModelHost webModelHost,
            QuickLaunchNavigationNodeDefinition quickLaunchNode)
        {
            var web = webModelHost.HostWeb;

            var quickLaunch = web.Navigation.QuickLaunch;

            var existingNode = quickLaunch.OfType <SPNavigationNode>()
                               .FirstOrDefault(n => n.Url == quickLaunchNode.Url);

            InvokeOnModelEvent(this, new ModelEventArgs
            {
                CurrentModelNode = null,
                Model            = null,
                EventType        = ModelEventType.OnProvisioning,
                Object           = existingNode,
                ObjectType       = typeof(SPNavigationNode),
                ObjectDefinition = quickLaunchNode,
                ModelHost        = existingNode
            });

            if (existingNode == null)
            {
                existingNode = new SPNavigationNode(quickLaunchNode.Title, quickLaunchNode.Url, quickLaunchNode.IsExternal);
                quickLaunch.AddAsLast(existingNode);
            }

            existingNode.Title     = quickLaunchNode.Title;
            existingNode.Url       = quickLaunchNode.Url;
            existingNode.IsVisible = quickLaunchNode.IsVisible;

            InvokeOnModelEvent(this, new ModelEventArgs
            {
                CurrentModelNode = null,
                Model            = null,
                EventType        = ModelEventType.OnProvisioned,
                Object           = existingNode,
                ObjectType       = typeof(SPNavigationNode),
                ObjectDefinition = quickLaunchNode,
                ModelHost        = existingNode
            });

            existingNode.Update();

            return(existingNode);
        }
        protected NavigationNode GetNavigationNode(
            NavigationNodeModelHost navigationNodeModelHost,
            QuickLaunchNavigationNodeDefinition quickLaunchNode)
        {
            var navigationNode = navigationNodeModelHost.HostNavigationNode;
            var quickLaunch    = navigationNode.Children;

            var context = navigationNodeModelHost.HostWeb.Context;

            context.Load(quickLaunch);
            context.ExecuteQuery();

            var existingNode = quickLaunch.OfType <NavigationNode>()
                               .FirstOrDefault(n => n.Url == quickLaunchNode.Url);

            return(existingNode);
        }
        protected NavigationNode GetRootNavigationNode(
            WebModelHost webModelHost,
            QuickLaunchNavigationNodeDefinition quickLaunchModel, out NavigationNodeCollection quickLaunch)
        {
            var web     = webModelHost.HostWeb;
            var context = webModelHost.HostWeb.Context;

            quickLaunch = web.Navigation.QuickLaunch;

            context.Load(quickLaunch);
            context.ExecuteQuery();



            var existingNode = quickLaunch.OfType <NavigationNode>()
                               .FirstOrDefault(n => n.Url == quickLaunchModel.Url);

            return(existingNode);
        }
 public static ModelNode AddQuickLaunchNavigationNode(this ModelNode model, QuickLaunchNavigationNodeDefinition definition, Action <ModelNode> action)
 {
     return(model.AddDefinitionNode(definition, action));
 }
 public static ModelNode AddQuickLaunchNavigationNode(this ModelNode model, QuickLaunchNavigationNodeDefinition definition)
 {
     return(AddQuickLaunchNavigationNode(model, definition, null));
 }
Exemple #12
0
 public static TModelNode AddQuickLaunchNavigationNode <TModelNode>(this TModelNode model, QuickLaunchNavigationNodeDefinition definition,
                                                                    Action <QuickLaunchNavigationNodeModelNode> action)
     where TModelNode : ModelNode, IQuickLaunchNavigationNodeHostModelNode, new()
 {
     return(model.AddTypedDefinitionNode(definition, action));
 }
Exemple #13
0
 public static TModelNode AddQuickLaunchNavigationNode <TModelNode>(this TModelNode model, QuickLaunchNavigationNodeDefinition definition)
     where TModelNode : ModelNode, IQuickLaunchNavigationNodeHostModelNode, new()
 {
     return(AddQuickLaunchNavigationNode(model, definition, null));
 }
        //[SampleMetadataTag(Name = BuiltInTagNames.SampleHidden)]
        public void CaDeployHierarchicalQuickLaunchNavigation()
        {
            // top level departments node
            var departments = new QuickLaunchNavigationNodeDefinition
            {
                Title      = "Departments",
                Url        = "departments.aspx",
                IsExternal = true
            };

            var hr = new QuickLaunchNavigationNodeDefinition
            {
                Title      = "HR",
                Url        = "hr.aspx",
                IsExternal = true
            };

            var it = new QuickLaunchNavigationNodeDefinition
            {
                Title      = "IT",
                Url        = "it.aspx",
                IsExternal = true
            };

            // top level clients node
            var clients = new QuickLaunchNavigationNodeDefinition
            {
                Title      = "Clients",
                Url        = "clients.aspx",
                IsExternal = true
            };

            var microsoft = new QuickLaunchNavigationNodeDefinition
            {
                Title      = "Microsoft",
                Url        = "microsfot.aspx",
                IsExternal = true
            };

            var apple = new QuickLaunchNavigationNodeDefinition
            {
                Title      = "Apple",
                Url        = "apple.aspx",
                IsExternal = true
            };

            var model = SPMeta2Model.NewWebModel(web =>
            {
                web
                .AddQuickLaunchNavigationNode(departments, node =>
                {
                    node
                    .AddQuickLaunchNavigationNode(hr)
                    .AddQuickLaunchNavigationNode(it);
                })
                .AddQuickLaunchNavigationNode(clients, node =>
                {
                    node
                    .AddQuickLaunchNavigationNode(microsoft)
                    .AddQuickLaunchNavigationNode(apple);
                });
            });

            DeployModel(model);
        }
        private void ValidateRootQuickLaunchNavigationNode(WebModelHost webModelHost, QuickLaunchNavigationNodeDefinition quickLaunchModel)
        {
            var qlNode = GetRootNavigationNode(webModelHost, quickLaunchModel);

            ValidateNode(qlNode, quickLaunchModel);
        }
        private void ValidateQuickLaunchNavigationNode(NavigationNodeModelHost navigationNodeModelHost, QuickLaunchNavigationNodeDefinition quickLaunchModel)
        {
            var qlNode = GetNavigationNode(navigationNodeModelHost, quickLaunchModel);

            ValidateNode(qlNode, quickLaunchModel);
        }