public TermDrivenPageSettingInfo(TermSetInfo termSet, string targetUrlForChildTerms, string catalogTargetUrlForChildTerms)
 {
     this.TermSet = termSet;
     this.TargetUrlForChildTerms        = targetUrlForChildTerms;
     this.CatalogTargetUrlForChildTerms = catalogTargetUrlForChildTerms;
     this.IsTermSet = true;
     this.IsTerm    = false;
 }
Пример #2
0
        public void GetTermsAsSimpleLinkNavNodeForTermSet_WhenNoChildTerms_ShouldReturnAllFirstLevelTerms()
        {
            using (var testScope = SiteTestScope.BlankSite())
            {
                // Arrange
                var testTermSetInfo = new TermSetInfo(Guid.NewGuid(), "Test Term Set");
                var levelOneTermA   = new SimpleLinkTermInfo(Guid.NewGuid(), "Term A", testTermSetInfo, "URL-A");
                var levelOneTermB   = new SimpleLinkTermInfo(Guid.NewGuid(), "Term B", testTermSetInfo, "URL-B");
                var levelOneTermC   = new SimpleLinkTermInfo(Guid.NewGuid(), "Term C", testTermSetInfo, "URL-C");

                var expecteNumberOfTerms = 3;

                var session = new TaxonomySession(testScope.SiteCollection);
                var defaultSiteCollectionTermStore = session.DefaultSiteCollectionTermStore;
                var defaultSiteCollectionGroup     = defaultSiteCollectionTermStore.GetSiteCollectionGroup(testScope.SiteCollection);
                var newTermSet = defaultSiteCollectionGroup.CreateTermSet(testTermSetInfo.Label, testTermSetInfo.Id);

                var createdTermA = newTermSet.CreateTerm(levelOneTermA.Label, Language.English.Culture.LCID, levelOneTermA.Id);
                createdTermA.SetLocalCustomProperty(CustomPropertyKey, levelOneTermA.SimpleLinkTarget);

                var createdTermB = newTermSet.CreateTerm(levelOneTermB.Label, Language.English.Culture.LCID, levelOneTermB.Id);
                createdTermB.SetLocalCustomProperty(CustomPropertyKey, levelOneTermB.SimpleLinkTarget);

                var createdTermC = newTermSet.CreateTerm(levelOneTermC.Label, Language.English.Culture.LCID, levelOneTermC.Id);
                createdTermC.SetLocalCustomProperty(CustomPropertyKey, levelOneTermC.SimpleLinkTarget);

                defaultSiteCollectionTermStore.CommitAll();

                using (var injectionScope = IntegrationTestServiceLocator.BeginLifetimeScope())
                {
                    var taxonomyService = injectionScope.Resolve <ITaxonomyService>();

                    // Act
                    var retrievedTerms = taxonomyService.GetTermsAsSimpleLinkNavNodeForTermSet(testScope.SiteCollection, defaultSiteCollectionGroup.Name, newTermSet.Name);

                    // Assert
                    Assert.IsNotNull(retrievedTerms);
                    Assert.AreEqual(retrievedTerms.Count, expecteNumberOfTerms);

                    Assert.AreEqual(retrievedTerms[0].SimpleLinkTarget, levelOneTermA.SimpleLinkTarget);
                    Assert.AreEqual(retrievedTerms[0].Label, levelOneTermA.Label);
                    Assert.AreEqual(retrievedTerms[0].ChildTerms.Count(), 0);

                    Assert.AreEqual(retrievedTerms[1].SimpleLinkTarget, levelOneTermB.SimpleLinkTarget);
                    Assert.AreEqual(retrievedTerms[1].Label, levelOneTermB.Label);
                    Assert.AreEqual(retrievedTerms[1].ChildTerms.Count(), 0);

                    Assert.AreEqual(retrievedTerms[2].SimpleLinkTarget, levelOneTermC.SimpleLinkTarget);
                    Assert.AreEqual(retrievedTerms[2].Label, levelOneTermC.Label);
                    Assert.AreEqual(retrievedTerms[2].ChildTerms.Count(), 0);
                }

                // Cleanup term set so that we don't pollute the metadata store
                newTermSet.Delete();
                defaultSiteCollectionTermStore.CommitAll();
            }
        }
Пример #3
0
 /// <summary>
 /// Initializes a new <see cref="ManagedNavigationInfo"/> instance
 /// </summary>
 /// <param name="termSet">Metadata about the term set driving navigation</param>
 /// <param name="language">The current language being configured</param>
 /// <param name="addNewPagesToNavigation">Whether new pages should be added to navigation term set automatically</param>
 /// <param name="createFriendlyUrlsForNewsPages">Whether catalog-type pages (such as news items) should use friendly URLs</param>
 /// <param name="preserveTaggingOnTermSet">Whether tagging with the term set should still be allowed</param>
 public ManagedNavigationInfo(
     TermSetInfo termSet,
     CultureInfo language,
     bool addNewPagesToNavigation,
     bool createFriendlyUrlsForNewsPages,
     bool preserveTaggingOnTermSet)
 {
     this.PreserveTaggingOnTermSet = preserveTaggingOnTermSet;
     this.AssociatedLanguage       = language;
     this.TermSet = termSet;
     this.CreateFriendlyUrlsForNewsPages = createFriendlyUrlsForNewsPages;
     this.AddNewPagesToNavigation        = addNewPagesToNavigation;
 }
Пример #4
0
        /// <summary>
        /// 用語セットのグループリストを取得します。
        /// </summary>
        /// <param name="this">ClientContext</param>
        /// <returns>用語セットのグループリストを返します。</returns>
        public static Dictionary <string, List <TermSetInfo> > GetGroups(this ClientContext @this)
        {
            var termStore = @this.GetTaxonomySession().GetDefaultSiteCollectionTermStore();

            @this.Load(termStore
                       , store => store.Name
                       , store => store.Groups.Include(
                           group => group.Name
                           , group => group.TermSets.Include(
                               termSet => termSet.Id
                               , termSet => termSet.Name
                               , termSet => termSet.Contact
                               , termSet => termSet.Description
                               , termSet => termSet.IsOpenForTermCreation
                               , termSet => termSet.Terms.Include(
                                   term => term.Id
                                   , term => term.Name
                                   , term => term.IsAvailableForTagging
                                   , term => term.Description
                                   )
                               )
                           )
                       );
            @this.ExecuteQuery();

            var groupLs = new Dictionary <string, List <TermSetInfo> >();

            foreach (var g in termStore.Groups)
            {
                groupLs[g.Name] = new List <TermSetInfo>();
                var gInfo = groupLs[g.Name];

                foreach (var termSet in g.TermSets)
                {
                    var tInfo = new TermSetInfo(termSet.Name);
                    foreach (var term in termSet.Terms)
                    {
                        tInfo.Terms.Add(new TermInfo(term.Name)
                        {
                            IsAvailableForTagging = term.IsAvailableForTagging,
                        });
                    }

                    gInfo.Add(tInfo);
                }
            }

            return(groupLs);
        }
        private void Run()
        {
            var url       = this.textBoxUrl.Text;
            var username  = this.textBoxUser.Text;
            var password  = this.textBoxPassword.Text;
            var groupName = this.textBoxGroup.Text;

            var tm = new TermStoreManager(url, username, password, groupName)
            {
                DefaultLcID = 1041,
            };

            var tbl = this.gridCsv.ToDataTable();

            tbl.Select(r => new {
                セット名  = r[0].ToString().Trim(),
                セット説明 = r[1].ToString().Trim(),
                公開    = r[2].ToBoolean(),
                タグ    = r[3].ToBoolean(),
                用語    = r[4].ToString().Trim(),
                説明    = r[5].ToString().Trim(),
            }).GroupBy(r => new {
                r.セット名,
                r.セット説明,
                r.公開,
            }).ToList().ForEach(v => {
                var row = v.Select(x => new TermInfo(x.用語)
                {
                    IsAvailableForTagging = x.タグ,
                    Description           = x.説明,
                }).ToArray();

                var info = new TermSetInfo(v.Key.セット名, row)
                {
                    IsOpenForTermCreation = v.Key.公開,
                    Description           = v.Key.セット説明,
                };

                tm.AddTerm(info);
            });

            this.ShowMessageBox("用語セットを登録しました。");
        }
        public void EnsureProfileProperty_WhenMappedToTermSet_GivenUserProfilePropertyInfo_ThenMapsPropertyToTermSet()
        {
            using (var testScope = SiteTestScope.BlankSite())
            {
                // Arrange
                var site                    = testScope.SiteCollection;
                var termSetInfo             = new TermSetInfo(Guid.NewGuid(), TermSetName);
                var userProfilePropertyInfo = new UserProfilePropertyInfo(
                    ProfilePropertyName,
                    "Test Profile Property",
                    PropertyDataType.StringSingleValue)
                {
                    TermSetInfo = termSetInfo
                };

                // Create term set
                var session = new TaxonomySession(site);
                var defaultSiteCollectionTermStore = session.DefaultSiteCollectionTermStore;
                var defaultSiteCollectionGroup     = defaultSiteCollectionTermStore.GetSiteCollectionGroup(site);
                defaultSiteCollectionGroup.CreateTermSet(termSetInfo.Label, termSetInfo.Id);
                defaultSiteCollectionTermStore.CommitAll();

                using (var injectionScope = IntegrationTestServiceLocator.BeginLifetimeScope(site))
                {
                    try
                    {
                        // Act
                        var userProfileHelper   = injectionScope.Resolve <IUserProfilePropertyHelper>();
                        var userProfileProperty = userProfileHelper.EnsureProfileProperty(site, userProfilePropertyInfo);

                        // Assert
                        Assert.AreEqual(userProfileProperty.TermSet.Id, termSetInfo.Id);
                    }
                    finally
                    {
                        this.TestCleanup();
                    }
                }
            }
        }
Пример #7
0
        public void GetTermsAsSimpleLinkNavNodeForTermSet_WithChildTermsAndCustomSortOrder_ShouldKeepTheTermsOrder()
        {
            using (var testScope = SiteTestScope.BlankSite())
            {
                var guidTermA  = Guid.NewGuid();
                var guidTermB  = Guid.NewGuid();
                var guidTermAA = Guid.NewGuid();
                var guidTermAB = Guid.NewGuid();

                // Arrange
                var testTermSetInfo = new TermSetInfo(Guid.NewGuid(), "Test Term Set");
                var levelOneTermA   = new SimpleLinkTermInfo(guidTermA, "Term A", testTermSetInfo, "URL-A");
                var levelOneTermB   = new SimpleLinkTermInfo(guidTermB, "Term B", testTermSetInfo);
                var levelTwoTermAA  = new SimpleLinkTermInfo(guidTermAA, "Term AA", testTermSetInfo);
                var levelTwoTermAB  = new SimpleLinkTermInfo(guidTermAB, "Term AB", testTermSetInfo, "URL-AB");
                var levelTwoTermBA  = new SimpleLinkTermInfo(Guid.NewGuid(), "Term BA", testTermSetInfo, "URL-BA");

                var expecteNumberOfLevelOneTerms = 2;
                var expectedTotalNumberOfTerms   = 5;

                var session = new TaxonomySession(testScope.SiteCollection);
                var defaultSiteCollectionTermStore = session.DefaultSiteCollectionTermStore;
                var defaultSiteCollectionGroup     = defaultSiteCollectionTermStore.GetSiteCollectionGroup(testScope.SiteCollection);
                var newTermSet = defaultSiteCollectionGroup.CreateTermSet(testTermSetInfo.Label, testTermSetInfo.Id);

                var createdTermA = newTermSet.CreateTerm(levelOneTermA.Label, Language.English.Culture.LCID, levelOneTermA.Id);
                createdTermA.SetLocalCustomProperty(CustomPropertyKey, levelOneTermA.SimpleLinkTarget);

                var createdTermAA = createdTermA.CreateTerm(levelTwoTermAA.Label, Language.English.Culture.LCID, levelTwoTermAA.Id);
                var createdTermAB = createdTermA.CreateTerm(levelTwoTermAB.Label, Language.English.Culture.LCID, levelTwoTermAB.Id);
                createdTermAB.SetLocalCustomProperty(CustomPropertyKey, levelTwoTermAB.SimpleLinkTarget);

                var createdTermB  = newTermSet.CreateTerm(levelOneTermB.Label, Language.English.Culture.LCID, levelOneTermB.Id);
                var createdTermBA = createdTermB.CreateTerm(levelTwoTermBA.Label, Language.English.Culture.LCID, levelTwoTermBA.Id);
                createdTermBA.SetLocalCustomProperty(CustomPropertyKey, levelTwoTermBA.SimpleLinkTarget);

                // Create a custom sort order where term B is first, term A is second
                newTermSet.CustomSortOrder = string.Format(CultureInfo.InvariantCulture, "{0}:{1}", guidTermB, guidTermA);

                // Create a custom sort order where term AB is first, term AA is second
                createdTermA.CustomSortOrder = string.Format(CultureInfo.InvariantCulture, "{0}:{1}", guidTermAB, guidTermAA);

                defaultSiteCollectionTermStore.CommitAll();

                using (var injectionScope = IntegrationTestServiceLocator.BeginLifetimeScope())
                {
                    var taxonomyService = injectionScope.Resolve <ITaxonomyService>();

                    // Act
                    var retrievedTerms = taxonomyService.GetTermsAsSimpleLinkNavNodeForTermSet(testScope.SiteCollection, defaultSiteCollectionGroup.Name, newTermSet.Name);

                    // Assert
                    Assert.IsNotNull(retrievedTerms);
                    Assert.AreEqual(retrievedTerms.Count, expecteNumberOfLevelOneTerms);

                    var actualTotalNumberOfTermsRetrieved = retrievedTerms.Count + retrievedTerms[0].ChildTerms.Count() + retrievedTerms[1].ChildTerms.Count();
                    Assert.AreEqual(actualTotalNumberOfTermsRetrieved, expectedTotalNumberOfTerms);

                    Assert.AreEqual(retrievedTerms[0].SimpleLinkTarget, levelOneTermB.SimpleLinkTarget);
                    Assert.AreEqual(retrievedTerms[0].Label, levelOneTermB.Label);
                    Assert.AreEqual(retrievedTerms[0].ChildTerms.Count(), 1);

                    Assert.AreEqual(retrievedTerms[1].SimpleLinkTarget, levelOneTermA.SimpleLinkTarget);
                    Assert.AreEqual(retrievedTerms[1].Label, levelOneTermA.Label);
                    Assert.AreEqual(retrievedTerms[1].ChildTerms.Count(), 2);

                    var actualLevelTwoAATerm = retrievedTerms[1].ChildTerms.ElementAt(1);
                    var actualLevelTwoABTerm = retrievedTerms[1].ChildTerms.ElementAt(0);
                    var actualLevelTwoBATerm = retrievedTerms[0].ChildTerms.ElementAt(0);

                    Assert.AreEqual(actualLevelTwoAATerm.SimpleLinkTarget, levelTwoTermAA.SimpleLinkTarget);
                    Assert.AreEqual(actualLevelTwoAATerm.Label, levelTwoTermAA.Label);
                    Assert.AreEqual(actualLevelTwoAATerm.ChildTerms.Count(), 0);

                    Assert.AreEqual(actualLevelTwoABTerm.SimpleLinkTarget, levelTwoTermAB.SimpleLinkTarget);
                    Assert.AreEqual(actualLevelTwoABTerm.Label, levelTwoTermAB.Label);
                    Assert.AreEqual(actualLevelTwoABTerm.ChildTerms.Count(), 0);

                    Assert.AreEqual(actualLevelTwoBATerm.SimpleLinkTarget, levelTwoTermBA.SimpleLinkTarget);
                    Assert.AreEqual(actualLevelTwoBATerm.Label, levelTwoTermBA.Label);
                    Assert.AreEqual(actualLevelTwoBATerm.ChildTerms.Count(), 0);
                }

                // Cleanup term set so that we don't pollute the metadata store
                newTermSet.Delete();
                defaultSiteCollectionTermStore.CommitAll();
            }
        }
Пример #8
0
 /// <summary>
 /// Initializes a new <see cref="ManagedNavigationInfo"/> instance
 /// </summary>
 /// <param name="termSet">Metadata about the term set driving navigation</param>
 /// <param name="language">The current language being configured</param>
 public ManagedNavigationInfo(TermSetInfo termSet, CultureInfo language)
     : this(termSet, language, false, false, true)
 {
 }