public static SiteCollectionModel GetSiteCollectionModel(string url) { SiteCollectionModel model = new SiteCollectionModel(); var aspnetHttpContext = System.Web.HttpContext.Current; var spContext = SharePointContextProvider.Current.GetSharePointContext(aspnetHttpContext); using (var clientContext = spContext.CreateUserClientContextForSPHost()) { if (clientContext != null) { Site siteCollection = clientContext.Site; clientContext.Load(siteCollection, sc => sc.Url); clientContext.ExecuteQuery(); model.Url = siteCollection.Url; TaxonomySession taxonomySession = TaxonomySession.GetTaxonomySession(clientContext); taxonomySession.UpdateCache(); clientContext.Load(taxonomySession, ts => ts.TermStores); clientContext.ExecuteQuery(); TermStore termStore = taxonomySession.TermStores.FirstOrDefault <TermStore>(); Guid localTermStoreID = termStore.Id; TermGroup group = termStore.GetSiteCollectionGroup(siteCollection, false); clientContext.ExecuteQuery(); bool siteCollectionHasPrivateGroup = CSOMObjectExists(group); model.hasPrivateGroup = siteCollectionHasPrivateGroup; model.Termsets = new Dictionary <Guid, TermsetModel>(); if (siteCollectionHasPrivateGroup) { clientContext.Load(group, g => g.Id, g => g.Name, g => g.TermSets); clientContext.ExecuteQuery(); model.GroupId = group.Id; model.GroupName = group.Name; foreach (var ts in group.TermSets) { TermsetModel termset = new TermsetModel { TermsetId = ts.Id, DisplayName = ts.Name }; clientContext.Load(ts.Terms); clientContext.ExecuteQuery(); List <TermModel> terms = new List <TermModel>(); foreach (Term term in ts.Terms) { TermModel newTerm = new TermModel { TermName = term.Name, TermId = term.Id }; LoadChildTerms(term, newTerm, clientContext); terms.Add(newTerm); } termset.TopLevelTerms = terms; model.Termsets.Add(ts.Id, termset); } } } return(model); } }
public static SiteCollectionModel GetSiteCollectionModel(string url) { SiteCollectionModel model = new SiteCollectionModel(); var aspnetHttpContext = System.Web.HttpContext.Current; var spContext = SharePointContextProvider.Current.GetSharePointContext(aspnetHttpContext); using (var clientContext = spContext.CreateUserClientContextForSPHost()) { if (clientContext != null) { Site siteCollection = clientContext.Site; clientContext.Load(siteCollection, sc => sc.Url); clientContext.ExecuteQuery(); model.Url = siteCollection.Url; TaxonomySession taxonomySession = TaxonomySession.GetTaxonomySession(clientContext); taxonomySession.UpdateCache(); clientContext.Load(taxonomySession, ts => ts.TermStores); clientContext.ExecuteQuery(); TermStore termStore = taxonomySession.TermStores.FirstOrDefault<TermStore>(); Guid localTermStoreID = termStore.Id; TermGroup group = termStore.GetSiteCollectionGroup(siteCollection, false); clientContext.ExecuteQuery(); bool siteCollectionHasPrivateGroup = CSOMObjectExists(group); model.hasPrivateGroup = siteCollectionHasPrivateGroup; model.Termsets = new Dictionary<Guid, TermsetModel>(); if (siteCollectionHasPrivateGroup) { clientContext.Load(group, g => g.Id, g => g.Name, g => g.TermSets); clientContext.ExecuteQuery(); model.GroupId = group.Id; model.GroupName = group.Name; foreach (var ts in group.TermSets) { TermsetModel termset = new TermsetModel { TermsetId = ts.Id, DisplayName = ts.Name }; clientContext.Load(ts.Terms); clientContext.ExecuteQuery(); List<TermModel> terms = new List<TermModel>(); foreach (Term term in ts.Terms) { TermModel newTerm = new TermModel { TermName = term.Name, TermId = term.Id }; LoadChildTerms(term, newTerm, clientContext); terms.Add(newTerm); } termset.TopLevelTerms = terms; model.Termsets.Add(ts.Id, termset); } } } return model; } }
public ActionResult Index(string SPHostWeb) { SiteCollectionModel model = TaxonomyManager.GetSiteCollectionModel(SPHostWeb); return(View(model)); }