Beispiel #1
0
        public void Can_Reverse_TermGroups()
        {
            var siteTermStore = new TaxonomyTermStoreDefinition
            {
                Id   = null,
                Name = string.Empty,
                UseDefaultSiteCollectionTermStore = true
            };

            var termGroup1 = new TaxonomyTermGroupDefinition
            {
                Name = Rnd.String(),
                Id   = Rnd.Guid()
            };

            var termGroup2 = new TaxonomyTermGroupDefinition
            {
                Name = Rnd.String(),
                Id   = Rnd.Guid()
            };



            var model = SPMeta2Model.NewSiteModel(site =>
            {
                site.AddTaxonomyTermStore(siteTermStore, store =>
                {
                    store.AddTaxonomyTermGroup(termGroup1);
                    store.AddTaxonomyTermGroup(termGroup2);
                });
            });

            DeployReverseAndTestModel(model);
        }
        protected Group FindGroup(TermStoreModelHost termStoreHost, TaxonomyTermGroupDefinition groupModel)
        {
            Group currentGroup = null;

            var termStore = termStoreHost.HostTermStore;

            if (groupModel.IsSiteCollectionGroup)
            {
                currentGroup = FindSiteCollectionGroup(termStoreHost, groupModel);
                return(currentGroup);
            }

            //if (groupModel.IsSystemGroup)
            //{
            //    currentGroup = FindSystemGroup(termStoreHost, groupModel);
            //    return currentGroup;
            //}

            if (groupModel.Id.HasValue)
            {
                currentGroup = termStore.GetGroup(groupModel.Id.Value);
            }
            else if (!string.IsNullOrEmpty(groupModel.Name))
            {
                currentGroup = termStore.Groups.FirstOrDefault(g => g.Name.ToUpper() == groupModel.Name.ToUpper());
            }

            return(currentGroup);
        }
        private void SharePointOnlineWait(TermStoreModelHost siteModelHost, TaxonomyTermGroupDefinition groupModel)
        {
            // wait until the group is there
            // Nested terms provisioning in Office 365 fails #995
            // TermSet not found #994
            var context = siteModelHost.HostClientContext;

            if (IsSharePointOnlineContext(context))
            {
                var currentGroup = FindGroup(siteModelHost, groupModel);

                if (currentGroup == null)
                {
                    TryRetryService.TryWithRetry(() =>
                    {
                        currentGroup = FindGroup(siteModelHost, groupModel);
                        return(currentGroup != null);
                    });
                }

                if (currentGroup == null)
                {
                    throw new SPMeta2Exception(string.Format("Cannot find a taxonomy group after provision"));
                }
            }
        }
Beispiel #4
0
        protected TermGroup FindGroup(TermStoreModelHost storeModelHost, TaxonomyTermGroupDefinition groupModel)
        {
            var termStore = storeModelHost.HostTermStore;
            var context   = termStore.Context;

            TermGroup currentGroup = null;

            if (groupModel.IsSiteCollectionGroup)
            {
                currentGroup = FindSiteCollectionGroup(storeModelHost, groupModel);
                return(currentGroup);
            }

            if (groupModel.Id.HasValue)
            {
                var scope = new ExceptionHandlingScope(context);
                using (scope.StartScope())
                {
                    using (scope.StartTry())
                    {
                        currentGroup = termStore.Groups.GetById(groupModel.Id.Value);
                        context.Load(currentGroup);
                    }

                    using (scope.StartCatch())
                    {
                    }
                }
            }
            else if (!string.IsNullOrEmpty(groupModel.Name))
            {
                var scope = new ExceptionHandlingScope(context);
                using (scope.StartScope())
                {
                    using (scope.StartTry())
                    {
                        currentGroup = termStore.Groups.GetByName(groupModel.Name);
                        context.Load(currentGroup);
                    }

                    using (scope.StartCatch())
                    {
                    }
                }
            }

            context.ExecuteQueryWithTrace();

            if (currentGroup != null && currentGroup.ServerObjectIsNull == false)
            {
                context.Load(currentGroup, g => g.Id);
                context.Load(currentGroup, g => g.Name);

                context.ExecuteQueryWithTrace();

                return(currentGroup);
            }

            return(null);
        }
Beispiel #5
0
        //[SampleMetadataTag(Name = BuiltInTagNames.SampleHidden)]
        public void CanDeploySimpleTaxonomyGroups()
        {
            var defaultSiteTermStore = new TaxonomyTermStoreDefinition
            {
                UseDefaultSiteCollectionTermStore = true
            };

            var clientsGroup = new TaxonomyTermGroupDefinition
            {
                Name = "Clients"
            };

            var parthersGroup = new TaxonomyTermGroupDefinition
            {
                Name = "Parthers"
            };

            var model = SPMeta2Model.NewSiteModel(site =>
            {
                site.AddTaxonomyTermStore(defaultSiteTermStore, termStore =>
                {
                    termStore
                    .AddTaxonomyTermGroup(clientsGroup)
                    .AddTaxonomyTermGroup(parthersGroup);
                });
            });

            DeployModel(model);
        }
        protected Group FindSiteCollectionGroup(TermStoreModelHost termStoreHost, TaxonomyTermGroupDefinition groupModel)
        {
            var termStore = termStoreHost.HostTermStore;

#if NET35
            return(termStore.GetSiteCollectionGroup(termStoreHost.HostSite));
#endif

#if !NET35
            return(termStore.GetSiteCollectionGroup(termStoreHost.HostSite, true));
#endif
        }
        public void Can_Reverse_TermSets()
        {
            var siteTermStore = new TaxonomyTermStoreDefinition
            {
                Id   = null,
                Name = string.Empty,
                UseDefaultSiteCollectionTermStore = true
            };

            var termGroup1 = new TaxonomyTermGroupDefinition
            {
                Name = Rnd.String(),
                Id   = Rnd.Guid()
            };

            var termSet1 = new TaxonomyTermSetDefinition
            {
                Name        = Rnd.String(),
                Id          = Rnd.Guid(),
                Contact     = Rnd.String(),
                Description = Rnd.String()
            };

            var termSet2 = new TaxonomyTermSetDefinition
            {
                Name        = Rnd.String(),
                Id          = Rnd.Guid(),
                Contact     = Rnd.String(),
                Description = Rnd.String()
            };

            // only witin a tes term group
            // performance boost
            var groupName = termGroup1.Name;
            var options   = ReverseOptions.Default
                            .AddFilterOption <TaxonomyTermGroupDefinition>(g => g.Name == groupName);

            var model = SPMeta2Model.NewSiteModel(site =>
            {
                site.AddTaxonomyTermStore(siteTermStore, store =>
                {
                    store.AddTaxonomyTermGroup(termGroup1, group =>
                    {
                        group.AddTaxonomyTermSet(termSet1);
                        group.AddTaxonomyTermSet(termSet2);
                    });
                });
            });

            DeployReverseAndTestModel(model, options);
        }
        protected Group FindGroup(TermStore termStore, TaxonomyTermGroupDefinition groupModel)
        {
            Group currentGroup = null;

            if (groupModel.Id.HasValue)
            {
                currentGroup = termStore.GetGroup(groupModel.Id.Value);
            }
            else if (!string.IsNullOrEmpty(groupModel.Name))
            {
                currentGroup = termStore.Groups.FirstOrDefault(g => g.Name.ToUpper() == groupModel.Name.ToUpper());
            }

            return(currentGroup);
        }
        //[SampleMetadataTag(Name = BuiltInTagNames.SampleHidden)]
        public void CanDeploySimpleTaxonomyTermSets()
        {
            var defaultSiteTermStore = new TaxonomyTermStoreDefinition
            {
                UseDefaultSiteCollectionTermStore = true
            };

            var clientsGroup = new TaxonomyTermGroupDefinition
            {
                Name = "Clients"
            };

            var smallBusiness = new TaxonomyTermSetDefinition
            {
                Name = "Small Business"
            };

            var mediumBusiness = new TaxonomyTermSetDefinition
            {
                Name = "Medium Business"
            };

            var enterpriseBusiness = new TaxonomyTermSetDefinition
            {
                Name = "Enterprise Business"
            };

            var model = SPMeta2Model.NewSiteModel(site =>
            {
                site.AddTaxonomyTermStore(defaultSiteTermStore, termStore =>
                {
                    termStore.AddTaxonomyTermGroup(clientsGroup, group =>
                    {
                        group
                        .AddTaxonomyTermSet(smallBusiness)
                        .AddTaxonomyTermSet(mediumBusiness)
                        .AddTaxonomyTermSet(enterpriseBusiness);
                    });
                });
            });

            DeployModel(model);
        }
        private void UpdateExistingTaxonomyGroup(object modelHost, TaxonomyTermGroupDefinition groupModel, TermGroup currentGroup)
        {
            TraceService.Information((int)LogEventId.ModelProvisionProcessingExistingObject, "Processing existing Term Group");

            if (!string.IsNullOrEmpty(groupModel.Description))
            {
                currentGroup.Description = groupModel.Description;
            }

            InvokeOnModelEvent(this, new ModelEventArgs
            {
                CurrentModelNode = null,
                Model            = null,
                EventType        = ModelEventType.OnProvisioned,
                Object           = currentGroup,
                ObjectType       = typeof(TermGroup),
                ObjectDefinition = groupModel,
                ModelHost        = modelHost
            });
        }
        public override ModelNode ReverseSingleHost(object reverseHost, ReverseOptions options)
        {
            var typedHost = (reverseHost as TaxonomyTermGroupReverseHost);
            var item      = typedHost.HostTermGroup;

            var def = new TaxonomyTermGroupDefinition();

            def.Id   = item.Id;
            def.Name = item.Name;

            // TODO, M2
            // https://github.com/SubPointSolutions/spmeta2/issues/827
            //def.Descrption = item.Description;

            return(new TaxonomyTermGroupModelNode
            {
                Options = { RequireSelfProcessing = true },
                Value = def
            });
        }
Beispiel #12
0
        protected TermGroup FindSiteCollectionGroup(TermStoreModelHost storeModelHost, TaxonomyTermGroupDefinition groupModel)
        {
            var termStore = storeModelHost.HostTermStore;
            var site      = storeModelHost.HostSite;

            var context = termStore.Context;

            TermGroup currentGroup = termStore.GetSiteCollectionGroup(site, true);

            context.Load(currentGroup);
            context.ExecuteQueryWithTrace();
            return(currentGroup);
        }
Beispiel #13
0
        private void DeployTaxonomyGroup(object modelHost, TermStoreModelHost siteModelHost, TaxonomyTermGroupDefinition groupModel)
        {
            var termStore    = siteModelHost.HostTermStore;
            var currentGroup = FindGroup(siteModelHost, groupModel);

            InvokeOnModelEvent(this, new ModelEventArgs
            {
                CurrentModelNode = null,
                Model            = null,
                EventType        = ModelEventType.OnProvisioning,
                Object           = currentGroup,
                ObjectType       = typeof(TermGroup),
                ObjectDefinition = groupModel,
                ModelHost        = modelHost
            });

            if (currentGroup == null)
            {
                TraceService.Information((int)LogEventId.ModelProvisionProcessingNewObject, "Processing new Term Group");

                currentGroup = groupModel.Id.HasValue
                                        ? termStore.CreateGroup(groupModel.Name, groupModel.Id.Value)
                                        : termStore.CreateGroup(groupModel.Name, Guid.NewGuid());

                InvokeOnModelEvent(this, new ModelEventArgs
                {
                    CurrentModelNode = null,
                    Model            = null,
                    EventType        = ModelEventType.OnProvisioned,
                    Object           = currentGroup,
                    ObjectType       = typeof(TermGroup),
                    ObjectDefinition = groupModel,
                    ModelHost        = modelHost
                });
            }
            else
            {
                TraceService.Information((int)LogEventId.ModelProvisionProcessingExistingObject, "Processing existing Term Group");

                InvokeOnModelEvent(this, new ModelEventArgs
                {
                    CurrentModelNode = null,
                    Model            = null,
                    EventType        = ModelEventType.OnProvisioned,
                    Object           = currentGroup,
                    ObjectType       = typeof(TermGroup),
                    ObjectDefinition = groupModel,
                    ModelHost        = modelHost
                });
            }

            termStore.CommitAll();
            termStore.Context.ExecuteQueryWithTrace();
        }
        protected Group FindSiteCollectionGroup(TermStoreModelHost termStoreHost, TaxonomyTermGroupDefinition groupModel)
        {
            var termStore = termStoreHost.HostTermStore;

            return(termStore.GetSiteCollectionGroup(termStoreHost.HostSite));
        }
 protected Group FindSystemGroup(TermStoreModelHost termStoreHost, TaxonomyTermGroupDefinition groupModel)
 {
     return(termStoreHost.HostTermStore.SystemGroup);
 }
 public static TModelNode AddHostTaxonomyTermGroup <TModelNode>(this TModelNode model, TaxonomyTermGroupDefinition definition,
                                                                Action <TaxonomyTermGroupModelNode> action)
     where TModelNode : ModelNode, ITaxonomyTermGroupHostModelNode, new()
 {
     return(model.AddTypedDefinitionNodeWithOptions(definition, action, ModelNodeOptions.New().NoSelfProcessing()));
 }
        private void DeployTaxonomyGroup(object modelHost, TermStoreModelHost siteModelHost, TaxonomyTermGroupDefinition groupModel)
        {
            var termStore    = siteModelHost.HostTermStore;
            var currentGroup = FindGroup(siteModelHost, groupModel);

            InvokeOnModelEvent(this, new ModelEventArgs
            {
                CurrentModelNode = null,
                Model            = null,
                EventType        = ModelEventType.OnProvisioning,
                Object           = currentGroup,
                ObjectType       = typeof(Group),
                ObjectDefinition = groupModel,
                ModelHost        = modelHost
            });

            if (currentGroup == null)
            {
                TraceService.Information((int)LogEventId.ModelProvisionProcessingNewObject, "Processing new Term Group");

#if !NET35
                currentGroup = groupModel.Id.HasValue
                                        ? termStore.CreateGroup(groupModel.Name, groupModel.Id.Value)
                                        : termStore.CreateGroup(groupModel.Name);
#endif

#if NET35
                // SP2010 API does not support creating groups with particular ID
                currentGroup = termStore.CreateGroup(groupModel.Name);
#endif

                InvokeOnModelEvent(this, new ModelEventArgs
                {
                    CurrentModelNode = null,
                    Model            = null,
                    EventType        = ModelEventType.OnProvisioned,
                    Object           = currentGroup,
                    ObjectType       = typeof(Group),
                    ObjectDefinition = groupModel,
                    ModelHost        = modelHost
                });
            }
            else
            {
                TraceService.Information((int)LogEventId.ModelProvisionProcessingExistingObject, "Processing existing Term Group");

                InvokeOnModelEvent(this, new ModelEventArgs
                {
                    CurrentModelNode = null,
                    Model            = null,
                    EventType        = ModelEventType.OnProvisioned,
                    Object           = currentGroup,
                    ObjectType       = typeof(Group),
                    ObjectDefinition = groupModel,
                    ModelHost        = modelHost
                });
            }

            siteModelHost.HostTermStore.CommitAll();
        }
        //[SampleMetadataTag(Name = BuiltInTagNames.SampleHidden)]
        public void CanDeploySimpleTaxonomyTerms()
        {
            // define term store
            var defaultSiteTermStore = new TaxonomyTermStoreDefinition
            {
                UseDefaultSiteCollectionTermStore = true
            };

            // define group
            var clientsGroup = new TaxonomyTermGroupDefinition
            {
                Name = "Clients"
            };

            // define term sets
            var smallBusiness = new TaxonomyTermSetDefinition
            {
                Name = "Small Business"
            };

            var mediumBusiness = new TaxonomyTermSetDefinition
            {
                Name = "Medium Business"
            };

            var enterpriseBusiness = new TaxonomyTermSetDefinition
            {
                Name = "Enterprise Business"
            };

            // define terms
            var microsoft = new TaxonomyTermDefinition
            {
                Name = "Microsoft"
            };

            var apple = new TaxonomyTermDefinition
            {
                Name = "Apple"
            };

            var oracle = new TaxonomyTermDefinition
            {
                Name = "Oracle"
            };

            var subPointSolutions = new TaxonomyTermDefinition
            {
                Name = "SubPoint Solutions"
            };

            // setup the model
            var model = SPMeta2Model.NewSiteModel(site =>
            {
                site.AddTaxonomyTermStore(defaultSiteTermStore, termStore =>
                {
                    termStore.AddTaxonomyTermGroup(clientsGroup, group =>
                    {
                        group
                        .AddTaxonomyTermSet(smallBusiness, termSet =>
                        {
                            termSet.AddTaxonomyTerm(subPointSolutions);
                        })
                        .AddTaxonomyTermSet(mediumBusiness)
                        .AddTaxonomyTermSet(enterpriseBusiness, termSet =>
                        {
                            termSet
                            .AddTaxonomyTerm(microsoft)
                            .AddTaxonomyTerm(apple)
                            .AddTaxonomyTerm(oracle);
                        });
                    });
                });
            });

            DeployModel(model);
        }
 public static TModelNode AddHostTaxonomyTermGroup <TModelNode>(this TModelNode model, TaxonomyTermGroupDefinition definition)
     where TModelNode : ModelNode, ITaxonomyTermGroupHostModelNode, new()
 {
     return(AddHostTaxonomyTermGroup(model, definition, null));
 }
        private void DeployTaxonomyGroup(object modelHost, TermStoreModelHost siteModelHost, TaxonomyTermGroupDefinition groupModel)
        {
            var termStore    = siteModelHost.HostTermStore;
            var currentGroup = FindGroup(siteModelHost, groupModel);

            InvokeOnModelEvent(this, new ModelEventArgs
            {
                CurrentModelNode = null,
                Model            = null,
                EventType        = ModelEventType.OnProvisioning,
                Object           = currentGroup,
                ObjectType       = typeof(TermGroup),
                ObjectDefinition = groupModel,
                ModelHost        = modelHost
            });

            if (currentGroup == null)
            {
                TraceService.Information((int)LogEventId.ModelProvisionProcessingNewObject, "Processing new Term Group");

                currentGroup = groupModel.Id.HasValue
                                        ? termStore.CreateGroup(groupModel.Name, groupModel.Id.Value)
                                        : termStore.CreateGroup(groupModel.Name, Guid.NewGuid());

                if (!string.IsNullOrEmpty(groupModel.Description))
                {
                    currentGroup.Description = groupModel.Description;
                }

                InvokeOnModelEvent(this, new ModelEventArgs
                {
                    CurrentModelNode = null,
                    Model            = null,
                    EventType        = ModelEventType.OnProvisioned,
                    Object           = currentGroup,
                    ObjectType       = typeof(TermGroup),
                    ObjectDefinition = groupModel,
                    ModelHost        = modelHost
                });
            }
            else
            {
                UpdateExistingTaxonomyGroup(modelHost, groupModel, currentGroup);
            }

            termStore.CommitAll();

            termStore.Groups.RefreshLoad();
            termStore.RefreshLoad();

            try
            {
                termStore.Context.ExecuteQueryWithTrace();
            }
            catch (Exception e)
            {
                var context = siteModelHost.HostClientContext;

                if (!IsSharePointOnlineContext(context))
                {
                    throw;
                }

                // SPMeta2 Provisioning Taxonomy Group with CSOM Standard #959
                // https://github.com/SubPointSolutions/spmeta2/issues/959

                // seems that newly created group might not be available for the time being
                // handling that "Group names must be unique." exception
                // trying to find the group and only update description
                var serverException = e as ServerException;

                if (serverException != null &&
                    serverException.ServerErrorCode == -2147024809)
                {
                    currentGroup = FindGroup(siteModelHost, groupModel);

                    if (currentGroup == null)
                    {
                        TryRetryService.TryWithRetry(() =>
                        {
                            currentGroup = FindGroup(siteModelHost, groupModel);
                            return(currentGroup != null);
                        });
                    }

                    UpdateExistingTaxonomyGroup(modelHost, groupModel, currentGroup);

                    termStore.CommitAll();

                    termStore.Groups.RefreshLoad();
                    termStore.RefreshLoad();

                    termStore.Context.ExecuteQueryWithTrace();
                }
            }

            siteModelHost.ShouldUpdateHost = false;
        }
        public void CanDeployTaxonomyField()
        {
            // define a taxonomy
            // term store -> group -> term set -> terms
            var taxDefaultTermStore = new TaxonomyTermStoreDefinition
            {
                UseDefaultSiteCollectionTermStore = true
            };

            var taxTermGroup = new TaxonomyTermGroupDefinition
            {
                Name = "M2 Taxonomy"
            };

            var taxTermSet = new TaxonomyTermSetDefinition
            {
                Name = "Locations"
            };

            var taxTermLondon = new TaxonomyTermDefinition
            {
                Name = "London"
            };

            var taxTermSydney = new TaxonomyTermDefinition
            {
                Name = "Sydney"
            };

            // define the field
            var location = new TaxonomyFieldDefinition
            {
                Title        = "Location",
                InternalName = "dcs_LocationTax",
                Group        = "SPMeta2.Samples",
                Id           = new Guid("FE709AC2-E3A1-4A25-8F71-3480667CD98F"),
                IsMulti      = false,
                UseDefaultSiteCollectionTermStore = true,
                TermSetName = taxTermSet.Name
            };

            var model = SPMeta2Model.NewSiteModel(site =>
            {
                site
                .AddHostTaxonomyTermStore(taxDefaultTermStore, store =>
                {
                    store.AddTaxonomyTermGroup(taxTermGroup, group =>
                    {
                        group.AddTaxonomyTermSet(taxTermSet, termSet =>
                        {
                            termSet
                            .AddTaxonomyTerm(taxTermLondon)
                            .AddTaxonomyTerm(taxTermSydney);
                        });
                    });
                })
                .AddTaxonomyField(location);
            });

            DeployModel(model);
        }
 public static ModelNode AddHostTaxonomyTermGroup(this ModelNode model, TaxonomyTermGroupDefinition definition, Action <ModelNode> action)
 {
     return(model.AddDefinitionNodeWithOptions(definition, action, ModelNodeOptions.New().NoSelfProcessing()));
 }
 public static ModelNode AddHostTaxonomyTermGroup(this ModelNode model, TaxonomyTermGroupDefinition definition)
 {
     return(AddHostTaxonomyTermGroup(model, definition, null));
 }
 public static ModelNode AddTaxonomyTermGroup(this ModelNode model, TaxonomyTermGroupDefinition definition, Action <ModelNode> action)
 {
     return(model.AddDefinitionNode(definition, action));
 }
Beispiel #25
0
        public void CanDeploy_WebNavigationSettings_As_TaxonomyProvider()
        {
            var globalTerm   = Rnd.String();
            var currentlTerm = Rnd.String();

            var currentNavigationGroup = new TaxonomyTermGroupDefinition
            {
                Name = string.Format("{0}", globalTerm)
            };

            var currentNavigationTermSet = new TaxonomyTermSetDefinition
            {
                Name = string.Format("{0}", globalTerm)
            };

            var globalNavigationGroup = new TaxonomyTermGroupDefinition
            {
                Name = string.Format("{0}", currentlTerm)
            };

            var globalNavigationTermSet = new TaxonomyTermSetDefinition
            {
                Name = string.Format("{0}", currentlTerm)
            };

            var taxWeb = ModelGeneratorService.GetRandomDefinition <WebDefinition>(def =>
            {
            });

            var siteModel = SPMeta2Model.NewSiteModel(site =>
            {
                site.AddSiteFeature(BuiltInSiteFeatures.SharePointServerPublishingInfrastructure.Inherit(def =>
                {
                    def.Enable = true;
                }));

                site.AddTaxonomyTermStore(new TaxonomyTermStoreDefinition
                {
                    UseDefaultSiteCollectionTermStore = true
                },
                                          store =>
                {
                    store.AddTaxonomyTermGroup(currentNavigationGroup, group =>
                    {
                        group.AddTaxonomyTermSet(currentNavigationTermSet, termSet =>
                        {
                            termSet.AddRandomTerm();
                            termSet.AddRandomTerm();
                            termSet.AddRandomTerm();
                        });
                    });

                    store.AddTaxonomyTermGroup(globalNavigationGroup, group =>
                    {
                        group.AddTaxonomyTermSet(globalNavigationTermSet, termSet =>
                        {
                            termSet.AddRandomTerm();
                            termSet.AddRandomTerm();
                            termSet.AddRandomTerm();
                        });
                    });
                });
            });

            var webModel = SPMeta2Model.NewWebModel(web =>
            {
                web.AddWeb(taxWeb, subWeb =>
                {
                    subWeb.AddSiteFeature(BuiltInWebFeatures.SharePointServerPublishing.Inherit(def =>
                    {
                        def.Enable = true;
                    }));

                    subWeb.AddWebNavigationSettings(new WebNavigationSettingsDefinition()
                    {
                        CurrentNavigationSource = BuiltInStandardNavigationSources.TaxonomyProvider,

                        CurrentNavigationUseDefaultSiteCollectionTermStore = true,
                        CurrentNavigationTermSetName = currentNavigationGroup.Name,

                        GlobalNavigationSource = BuiltInStandardNavigationSources.TaxonomyProvider,

                        GlobalNavigationUseDefaultSiteCollectionTermStore = true,
                        GlobalNavigationTermSetName = globalNavigationGroup.Name,

                        DisplayShowHideRibbonAction = true
                    });
                });
            });

            TestModel(siteModel, webModel);
        }
 public static TModelNode AddTaxonomyTermGroup <TModelNode>(this TModelNode model, TaxonomyTermGroupDefinition definition,
                                                            Action <TaxonomyTermGroupModelNode> action)
     where TModelNode : ModelNode, ITaxonomyTermGroupHostModelNode, new()
 {
     return(model.AddTypedDefinitionNode(definition, action));
 }