Beispiel #1
0
    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));
        }