コード例 #1
0
        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;
        }
コード例 #2
0
        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
        }
コード例 #3
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(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();
        }
コード例 #4
0
 protected Group FindSystemGroup(TermStoreModelHost termStoreHost, TaxonomyTermGroupDefinition groupModel)
 {
     return termStoreHost.HostTermStore.SystemGroup;
 }
コード例 #5
0
 protected Group FindSiteCollectionGroup(TermStoreModelHost termStoreHost, TaxonomyTermGroupDefinition groupModel)
 {
     var termStore = termStoreHost.HostTermStore;
     return termStore.GetSiteCollectionGroup(termStoreHost.HostSite);
 }