public void buildItem(HtmlTextWriter writer, Term term) { var navTerm = NavigationTerm.GetAsResolvedByWeb(term, Site.OpenWeb(), StandardNavigationProviderNames.GlobalNavigationTaxonomyProvider); buildItem(writer, navTerm); }
/// <summary> /// Resolved a <see cref="NavigationTerm"/> object with the specified URL against the current site. /// If the specified URL resolves to a navigation term with catalog enabled, and there are remaining segments, /// <paramref name="matchedUrl"/> will be set to a friendly URL resolved from the navigation term without the excess segments. /// </summary> /// <param name="inputUrl">Input URL.</param> /// <param name="navigationTerm">Resolved <see cref="NavigationTerm"/> object if any; otherwise *null*.</param> /// <param name="matchedUrl">Resolved URL for the <see cref="NavigationTerm"/> object if any; otherwise *null*.</param> /// <returns>*true* if the specified URL resolves to a <see cref="NavigationTerm"/> object.</returns> public static bool TryGetNavigationTerm(string inputUrl, out NavigationTerm navigationTerm, out string matchedUrl) { CommonHelper.ConfirmNotNull(inputUrl, "inputUrl"); if (SPContext.Current != null && !String.IsNullOrEmpty(inputUrl) && inputUrl[0] == '/') { int pathEndPos = inputUrl.IndexOfAny(new[] { '?', '#' }); if (pathEndPos > 0) { inputUrl = inputUrl.Substring(0, pathEndPos); } SPSite currentSite = SPContext.Current.Site; while (inputUrl.Length > 0) { string[] segments; if (TaxonomyNavigation.TryParseFriendlyUrl(currentSite, inputUrl, out navigationTerm, out segments)) { matchedUrl = inputUrl; return(true); } inputUrl = inputUrl.Substring(0, inputUrl.LastIndexOf('/')); } } navigationTerm = null; matchedUrl = null; return(false); }
public HtmlTextWriter buildItems(HtmlTextWriter writer, TermCollection terms) { //TermSet termSet = navTerms.GetTaxonomyTermSet(); //if (navTerms.IsNavigationTermSet) if (terms.Count > 0) { Level++; foreach (var term in terms) { try { var navTerm = NavigationTerm.GetAsResolvedByWeb(term, Site.OpenWeb(), StandardNavigationProviderNames.GlobalNavigationTaxonomyProvider); if (navTerm.ExcludeFromGlobalNavigation) { continue; } buildItem(writer, navTerm); } catch (Exception) { } } Level--; } return(writer); }
/// <summary> /// Initializes a new instance of the <see cref="NavigationNode"/> class using a navigation term. /// </summary> /// <param name="term">The navigation term.</param> public NavigationNode(NavigationTerm term) : this() { this.Id = term.Id; this.ParentNodeId = (term.Parent != null) ? term.Parent.Id : Guid.Empty; this.Title = term.Title.Value; this.Url = new Uri(term.GetResolvedDisplayUrl(string.Empty), UriKind.RelativeOrAbsolute); }
/// <summary> /// Initializes a new instance of the <see cref="NavigationNode"/> class using a navigation term. /// </summary> /// <param name="term">The navigation term.</param> public NavigationNode(NavigationTerm term) : this() { this.Id = term.Id; this.ParentNodeId = (term.Parent != null) ? term.Parent.Id : Guid.Empty; this.Title = term.Title.Value; this.Url = new Uri(term.GetResolvedDisplayUrl(string.Empty), UriKind.RelativeOrAbsolute); }
public static NavigationTermSet CriarItemNaTermStore(string url, string urlweb, Guid NavTermSetId, Guid TaggingTermSetId) { SPSite site = new SPSite(url); SPWeb web = site.AllWebs[urlweb]; TaxonomySession taxonomySession = new TaxonomySession(site); if (taxonomySession.TermStores.Count == 0) { throw new InvalidOperationException("O Serviço de taxonomia não existe"); } TermStore termStore = taxonomySession.TermStores[0]; TermSet existingTermSet = termStore.GetTermSet(NavTermSetId); if (existingTermSet != null) { existingTermSet.Delete(); termStore.CommitAll(); } Group siteCollectionGroup = termStore.GetSiteCollectionGroup(web.Site); TermSet termSet = siteCollectionGroup.CreateTermSet("Teste01", NavTermSetId); termStore.CommitAll(); NavigationTermSet navTermSet = NavigationTermSet.GetAsResolvedByWeb(termSet, web, StandardNavigationProviderNames.GlobalNavigationTaxonomyProvider); termStore.CommitAll(); navTermSet.IsNavigationTermSet = true; navTermSet.TargetUrlForChildTerms.Value = "/en/Pages/default.aspx"; NavigationTerm term1 = navTermSet.CreateTerm("Term 1", NavigationLinkType.SimpleLink); term1.SimpleLinkUrl = "http://h9j/pt/Paginas/default.aspx"; termStore.CommitAll(); /* * NavigationTerm term2 = navTermSet.CreateTerm("Term 2", NavigationLinkType.FriendlyUrl, Guid.NewGuid()); * * term2.FriendlyUrlSegment.Value = "PAgInicial"; * * term2.TargetUrl.Value = "/en/Pages/default.aspx"; */ termStore.CommitAll(); return(navTermSet); }
private static string InsertUrlRecursive(NavigationTerm navTerm, string pageUrl) { pageUrl = pageUrl.Insert(0, $"/{navTerm.TaxonomyName}"); if (navTerm.Parent.ServerObjectIsNull == false) { pageUrl = InsertUrlRecursive(navTerm.Parent, pageUrl); } return(pageUrl); }
private void RenderLink(HtmlTextWriter writer, Term term, NavigationTerm navTerm) { _checkParam(writer, "writer"); _checkParam(term, "term"); /* * try * { * html += "<li><a href=\"" + term.LocalCustomProperties["_Sys_Nav_SimpleLinkUrl"] + "\">" + term.Name + "</a>"; * writeTermsHTML(term.Terms); * html += "</li>\n"; * } * catch (Exception) * { * html += "<li><a href=\"#\">" + term.Name + "</a>"; * writeTermsHTML(term.Terms); * html += "</li>\n"; * } */ writer.AddAttribute(HtmlTextWriterAttribute.Href, GetLinkUrl(navTerm)); var temp = ""; if (term.CustomProperties.TryGetValue("header", out temp)) { writer.RenderBeginTag(HtmlTextWriterTag.Li); writer.Write(temp); writer.RenderEndTag(); return; } // Add ToolTip // @todo Make toolTip a parameter //string toolTip = !string.IsNullOrEmpty(item.ToolTip) ? item.ToolTip : item.Text; var toolTip = !string.IsNullOrEmpty(navTerm.HoverText) ? navTerm.HoverText : term.Name; term.CustomProperties.TryGetValue("toolTip", out toolTip); writer.AddAttribute(HtmlTextWriterAttribute.Title, toolTip); if (!term.CustomProperties.ContainsKey("iconOnly") || !term.CustomProperties.ContainsKey("imageOnly")) { writer.RenderBeginTag(HtmlTextWriterTag.A); } writer.Write(GetValue(term)); if (!term.CustomProperties.ContainsKey("iconOnly") || !term.CustomProperties.ContainsKey("imageOnly")) { writer.RenderEndTag(); // </a> } }
public static NavigationTermSet RecreateSampleNavTermSet(TestContext testContext, TaxonomySession taxonomySession, SPWeb web) { Console.WriteLine(testContext, "RecreateSampleNavTermSet(): START"); // Use the first TermStore object in the list. if (taxonomySession.TermStores.Count == 0) { throw new InvalidOperationException("The Taxonomy Service is offline or missing."); } TermStore termStore = taxonomySession.TermStores[0]; // Does the TermSet object already exist? TermSet existingTermSet = termStore.GetTermSet(TestConfig.NavTermSetId); if (existingTermSet != null) { Console.WriteLine(testContext, "RecreateSampleNavTermSet(): Deleting old TermSet"); existingTermSet.Delete(); termStore.CommitAll(); } Console.WriteLine(testContext, "RecreateSampleNavTermSet(): Creating new TermSet"); // Create a new TermSet object. Group siteCollectionGroup = termStore.GetSiteCollectionGroup(web.Site); TermSet termSet = siteCollectionGroup.CreateTermSet("Navigation Demo", TestConfig.NavTermSetId); NavigationTermSet navTermSet = NavigationTermSet.GetAsResolvedByWeb(termSet, web, StandardNavigationProviderNames.GlobalNavigationTaxonomyProvider); navTermSet.IsNavigationTermSet = true; navTermSet.TargetUrlForChildTerms.Value = "~site/Pages/Topics/Topic.aspx"; NavigationTerm term1 = navTermSet.CreateTerm("Term 1", NavigationLinkType.SimpleLink); term1.SimpleLinkUrl = "http://www.bing.com/"; NavigationTerm term2 = navTermSet.CreateTerm("Term 2", NavigationLinkType.FriendlyUrl); NavigationTerm term2a = term2.CreateTerm("Term 2 A", NavigationLinkType.FriendlyUrl); NavigationTerm term2b = term2.CreateTerm("Term 2 B", NavigationLinkType.FriendlyUrl); NavigationTerm term3 = navTermSet.CreateTerm("Term 3", NavigationLinkType.FriendlyUrl); termStore.CommitAll(); Console.WriteLine(testContext, "RecreateSampleNavTermSet(): FINISH"); return(navTermSet); }
public static NavigationTermSet CriarItemNaTermStore(string url, string urlweb, Guid NavTermSetId, Guid TaggingTermSetId) { SPSite site = new SPSite(url); SPWeb web = site.AllWebs[url]; TaxonomySession taxonomySession = new TaxonomySession(site); if (taxonomySession.TermStores.Count == 0) { throw new InvalidOperationException("O Serviço de taxonomia não existe"); } TermStore termStore = taxonomySession.TermStores[0]; TermSet existingTermSet = termStore.GetTermSet(NavTermSetId); if (existingTermSet != null) { existingTermSet.Delete(); termStore.CommitAll(); } Group siteCollectionGroup = termStore.GetSiteCollectionGroup(web.Site); TermSet termSet = siteCollectionGroup.CreateTermSet("Teste01", NavTermSetId); NavigationTermSet navTermSet = NavigationTermSet.GetAsResolvedByWeb(termSet, web, StandardNavigationProviderNames.GlobalNavigationTaxonomyProvider); navTermSet.IsNavigationTermSet = true; navTermSet.TargetUrlForChildTerms.Value = "~site/Pages/Topics/Topic.aspx"; NavigationTerm term1 = navTermSet.CreateTerm("Term 1", NavigationLinkType.SimpleLink); term1.SimpleLinkUrl = "https://ekisiot.sharepoint.com/"; NavigationTerm term2 = navTermSet.CreateTerm("Term 2", NavigationLinkType.FriendlyUrl); NavigationTerm term2a = term2.CreateTerm("Term 2 A", NavigationLinkType.FriendlyUrl); NavigationTerm term2b = term2.CreateTerm("Term 2 B", NavigationLinkType.FriendlyUrl); NavigationTerm term3 = navTermSet.CreateTerm("Term 3", NavigationLinkType.FriendlyUrl); termStore.CommitAll(); return(navTermSet); }
private string GetLinkUrl(NavigationTerm navTerm) { var href = "#"; var linkType = navTerm.LinkType; if (NavigationLinkType.FriendlyUrl == linkType) { //href = navTerm.GetResolvedDisplayUrl(); href = navTerm.FriendlyUrlSegment.ToString(); } else { href = navTerm.SimpleLinkUrl; } return(href); }
public IEnumerable <NavigationTerm> GetNavigationParentTerms(NavigationTerm navigationTerm) { if (navigationTerm != null) { var currentTerm = navigationTerm; var navigationTerms = new List <NavigationTerm> { currentTerm }; while (currentTerm.Parent != null) { currentTerm = currentTerm.Parent; navigationTerms.Add(currentTerm); } return(navigationTerms); } return(new List <NavigationTerm>()); }
public static List <ITANavigationItem> getChildTerms(NavigationTerm parent, ClientContext clientContext) { clientContext.Load(parent, p => p.Terms.Include(t => t.Title, t => t.SimpleLinkUrl)); clientContext.ExecuteQuery(); List <ITANavigationItem> children = new List <ITANavigationItem>(); foreach (var navTerm in parent.Terms) { children.Add(new ITANavigationItem() { title = navTerm.Title.Value, link = navTerm.SimpleLinkUrl, //visible = true, //target = "_blank", children = getChildTerms(navTerm, clientContext) }); } return(children); }
public override void ItemAdded(SPItemEventProperties properties) { base.ItemAdded(properties); try { SPSecurity.RunWithElevatedPrivileges(delegate() { SPWeb myWeb = properties.Web; if (properties.ListTitle == "SectionDetails") { #region "Create Termstore Set For Friendly URL" TaxonomySession taxonomySession = new TaxonomySession(myWeb.Site); taxonomySession.UpdateCache(); TermStore termStore = taxonomySession.DefaultSiteCollectionTermStore; Group siteCollectionGroup = termStore.GetSiteCollectionGroup(myWeb.Site, createIfMissing: true); TermSet ts = siteCollectionGroup.TermSets.Where(p => p.Name.ToLower() == "lappia education").FirstOrDefault(); if (ts != null)//check term set is exist or not { NavigationTermSet navigationTermSet = NavigationTermSet.GetAsResolvedByWeb(ts, myWeb, StandardNavigationProviderNames.GlobalNavigationTaxonomyProvider); navigationTermSet.IsNavigationTermSet = true; NavigationTerm subterm = navigationTermSet.CreateTerm(Convert.ToString(properties.ListItem["Title"].ToString()) + ".aspx", NavigationLinkType.FriendlyUrl, Guid.NewGuid()); if ((uint)System.Globalization.CultureInfo.CurrentUICulture.LCID == 1033) { subterm.TargetUrl.Value = SPContext.Current.Web.Url + "/Pages/" + Convert.ToString(properties.ListItem["Title"].ToString()) + ".aspx"; } else if ((uint)System.Globalization.CultureInfo.CurrentUICulture.LCID == 1035) { subterm.TargetUrl.Value = SPContext.Current.Web.Url + "/Pages/" + Convert.ToString(properties.ListItem["Title"].ToString()) + ".aspx"; } } termStore.CommitAll(); #endregion } }); } catch (Exception ex) { } }
/// <summary> /// Gets a <see cref="NavigationTerm"/> object by the specified unique ID. /// </summary> /// <param name="termId">Term unique identifier.</param> /// <returns>A <see cref="NavigationTerm"/> object.</returns> public static NavigationTerm GetNavigationTerm(Guid termId) { if (SPContext.Current != null && termId != Guid.Empty) { SPWeb currentWeb = SPContext.Current.Web; NavigationTermSet navigationTermSet = TaxonomyNavigation.GetTermSetForWeb(currentWeb, StandardNavigationProviderNames.GlobalNavigationTaxonomyProvider, true); if (navigationTermSet != null) { TaxonomySession session = new TaxonomySession(currentWeb, false); Term term = navigationTermSet.GetTaxonomyTermSet(session).GetTerm(termId); if (term != null) { using (SPWeb navigationRootWeb = currentWeb.Site.OpenWeb(navigationTermSet.GetResolvedDisplayUrl(null))) { return(NavigationTerm.GetAsResolvedByWeb(term, navigationRootWeb, StandardNavigationProviderNames.GlobalNavigationTaxonomyProvider)); } } } } return(null); }
public IEnumerable<NavigationTerm> GetNavigationParentTerms(NavigationTerm navigationTerm) { if (navigationTerm != null) { var currentTerm = navigationTerm; var navigationTerms = new List<NavigationTerm> { currentTerm }; while (currentTerm.Parent != null) { currentTerm = currentTerm.Parent; navigationTerms.Add(currentTerm); } return navigationTerms; } return new List<NavigationTerm>(); }
/// <summary> /// Initializes a new instance of the <see cref="NavigationNode"/> class. /// </summary> /// <param name="term">The term.</param> /// <param name="currentTerm">The current term.</param> /// <param name="currentBranchTerms">The terms in the current branch.</param> public NavigationNode(NavigationTerm term, NavigationTerm currentTerm, IEnumerable <NavigationTerm> currentBranchTerms) : this(term) { this.SetCurrentBranchProperties(currentTerm, currentBranchTerms); }
public void SetCurrentBranchProperties(NavigationTerm currentTerm, IEnumerable <NavigationTerm> currentBranchTerms) { this.IsCurrentNode = currentTerm != null && currentTerm.Id.Equals(this.Id); this.IsNodeInCurrentBranch = currentBranchTerms.Any(y => y.Id.Equals(this.Id)); }
// Primary BuildItem // Outputs a single menu item or menu item + sub-tree //public void buildItem(HtmlTextWriter writer, Term term) public void buildItem(HtmlTextWriter writer, NavigationTerm navTerm) { var temp = ""; var term = navTerm.GetTaxonomyTerm(); // Check permissions?? //if (!term.DoesUserHavePermissions()) //{ //return; //} // Instantiate current item CurrentItem = new MenuItem(); CurrentItem.Term = new CurrentTerm(term, navTerm); CurrentItem.TermSet = CTermSet; //temp = htmlBeforeLi if (term.CustomProperties.TryGetValue("htmlBeforeLi", out temp)) { writer.Write(temp); } // MegaMenu classes: dropdown-wide, dropdown-short, dropdown-full, dropdown-onhover, dropdown-menu, dropdown-carousel, dropdwn-grid if (term.CustomProperties.TryGetValue("itemClasses", out temp)) { CurrentItem.AddClass(temp); } if (term.CustomProperties.TryGetValue("columns", out temp)) { CurrentItem.AddClass("columns"); CurrentItem.AddClass("columns-" + temp); } if (term.CustomProperties.TryGetValue("iconOnly", out temp)) { CurrentItem.AddClass(temp); CurrentItem.AddClass("icon-only"); CurrentItem.AddClass("image-icon-only"); } else if (term.CustomProperties.TryGetValue("imageOnly", out temp)) { CurrentItem.AddClass(temp); CurrentItem.AddClass("image-only"); CurrentItem.AddClass("image-icon-only"); } // Add level class CurrentItem.Level = Level; if (HasChildren(term)) { CurrentItem.AddClass("dropdown"); if (term.CustomProperties.ContainsKey("megamenu")) { CurrentItem.AddClass("imegamenu"); CurrentItem.AddClass("dropdown-short"); } ShowChildren = false; if (!term.CustomProperties.ContainsKey("showChildren")) { if (1 < Level) { CurrentItem.AddClass("dropdown-right-onhover"); CurrentItem.AddClass("no-fix"); } else { CurrentItem.AddClass("dropdown-onhover"); } } else { ShowChildren = true; CurrentItem.AddClass("dropdown-onhover"); CurrentItem.AddClass("dropdown-show"); } // If dropdown, add attributes //writer.AddAttribute("data-toggle", "dropdown"); // @todo Add style attribute if (term.CustomProperties.TryGetValue("style", out temp)) { writer.AddAttribute(HtmlTextWriterAttribute.Style, temp); } // @todo Add data tags, entered name: data-name value: * // Can I get all properties that begin with a string?? //if (term.CustomProperties.TryGetValue("data", out temp)) { //writer.AddAttribute("", currentItem.GetStyles()); //} } writer.AddAttribute(HtmlTextWriterAttribute.Class, CurrentItem.GetClasses()); writer.RenderBeginTag(HtmlTextWriterTag.Li); if (term.CustomProperties.TryGetValue("htmlBefore", out temp)) { writer.Write(temp); } //if (this.hasChildren(term) && term.CustomProperties.ContainsKey("showChildren")) if (HasChildren(term)) { RenderDropDown(writer, term, navTerm); } else { RenderLink(writer, term, navTerm); } //writer.Write(this.getValue(term)); //writer.Write(this.getDescription(term)); if (term.CustomProperties.TryGetValue("htmlAfter", out temp)) { writer.Write(temp); } // Now writer.RenderEndTag(); // </li> if (term.CustomProperties.TryGetValue("htmlAfterLi", out temp)) { writer.Write(temp); } }
/// <summary> /// Initializes a new instance of the <see cref="NavigationNode"/> class. /// </summary> /// <param name="term">The term.</param> /// <param name="currentTerm">The current term.</param> /// <param name="currentBranchTerms">The terms in the current branch.</param> public NavigationNode(NavigationTerm term, NavigationTerm currentTerm, IEnumerable<NavigationTerm> currentBranchTerms) : this(term) { this.SetCurrentBranchProperties(currentTerm, currentBranchTerms); }
public CurrentTerm(Term term, NavigationTerm navigationTerm) { }
public void SetCurrentBranchProperties(NavigationTerm currentTerm, IEnumerable<NavigationTerm> currentBranchTerms) { this.IsCurrentNode = currentTerm != null && currentTerm.Id.Equals(this.Id); this.IsNodeInCurrentBranch = currentBranchTerms.Any(y => y.Id.Equals(this.Id)); }
private void RenderDropDown(HtmlTextWriter writer, Term term, NavigationTerm navTerm) { _checkParam(writer, "writer"); writer.AddAttribute(HtmlTextWriterAttribute.Href, GetLinkUrl(navTerm)); writer.AddAttribute(HtmlTextWriterAttribute.Class, "dropdown-toggle"); writer.AddAttribute("data-toggle", "dropdown"); writer.AddAttribute("data-dropdown", "hover"); if (!term.CustomProperties.ContainsKey("iconOnly") || !term.CustomProperties.ContainsKey("imageOnly")) { writer.RenderBeginTag(HtmlTextWriterTag.A); //<a> } //writer.RenderBeginTag(HtmlTextWriterTag.A); // <a> var anchorValue = GetValue(term); if (1 == Level) { anchorValue += " "; } writer.Write(anchorValue); if (1 == Level) { writer.AddAttribute(HtmlTextWriterAttribute.Class, "caret"); writer.RenderBeginTag(HtmlTextWriterTag.B); // <b> writer.RenderEndTag(); // </b> } if (!term.CustomProperties.ContainsKey("iconOnly") || !term.CustomProperties.ContainsKey("imageOnly")) { writer.RenderEndTag(); // </a> } //writer.RenderEndTag(); // </a> writer.AddAttribute(HtmlTextWriterAttribute.Class, "dropdown-menu pull-center"); writer.RenderBeginTag(HtmlTextWriterTag.Ul); // <ul> // Maybe add Custom Properties if (ShowChildren) { var counter = 0; /* * foreach (Term t in term.Terms) * { * counter++; * if (!t.CustomProperties.ContainsKey("itemClasses")) * { * term.Terms[counter - 1].SetCustomProperty("itemClasses", "imegamenu-content"); * } * else * { * var temp = ""; * t.CustomProperties.TryGetValue("itemClasses", out temp); * term.Terms[counter - 1].SetCustomProperty("itemClasses", temp); * } * if (1 == counter && !t.CustomProperties.ContainsKey("htmlBeforeLi")) * { * //term.Terms[counter - 1].SetCustomProperty("htmlBeforeLi", "<li><div class=\"imegamenu-content\"><div class=\"row\">"); * } * else if (term.Terms.Count == counter && !t.CustomProperties.ContainsKey("htmlAfterLi")) * { * //term.Terms[counter - 1].SetCustomProperty("htmlAfterLi", "</div></div></li>"); * } * } * */ } //this.buildItems(writer, term.Terms); //this.buildItems(writer, navTerm); //this.buildItems(writer, navTerm.b); buildItems(writer, term.Terms); //TermSet childTermSet = (TermSet) cTermSet.termSet.GetTerms(); //this.buildItems(writer,); writer.RenderEndTag(); // </ul> }
private NavigationTerm CreateSubTerm(NavigationTerm navTerm, string termTitle, string termURL) { NavigationTerm subTerm = navTerm.CreateTerm(termTitle, NavigationLinkType.SimpleLink); subTerm.SimpleLinkUrl = termURL; return navTerm; }
/// <summary> /// Creates an instance of the <see cref="SeoMetaListItem"/> with the specified managed navigation node. /// </summary> /// <param name="contextWeb"></param> /// <param name="term"></param> public SeoMetaNavigationTerm(SPWeb contextWeb, NavigationTerm term) { TaxonomySession session = new TaxonomySession(contextWeb, false); this.term = term.GetTaxonomyTerm(session); }
/// Creates a TermSet object for demonstration purposes. If it already exists, it will be deleted /// and then recreated. public static NavigationTermSet RecreateSampleNavTermSet( ClientContext clientContext, TaxonomySession taxonomySession, Web web) { clientContext.Load(taxonomySession, ts => ts.TermStores); clientContext.ExecuteQuery(); // Use the first TermStore object in the list. if (taxonomySession.TermStores.Count == 0) { throw new InvalidOperationException("The Taxonomy Service is offline or missing."); } TermStore termStore = taxonomySession.TermStores[0]; clientContext.Load(termStore, ts => ts.Name, ts => ts.WorkingLanguage); // Does the TermSet object already exist? TermSet existingTermSet; clientContext.ExecuteQuery(); if (!existingTermSet.ServerObjectIsNull.Value) { existingTermSet.DeleteObject(); termStore.CommitAll(); clientContext.ExecuteQuery(); } // Create a new TermSet object. TermGroup siteCollectionGroup = termStore.GetSiteCollectionGroup(clientContext.Site, createIfMissing: true); TermSet termSet = siteCollectionGroup.CreateTermSet("Navigation Demo", TestConfig.NavTermSetId, termStore.WorkingLanguage); termStore.CommitAll(); clientContext.ExecuteQuery(); NavigationTermSet navTermSet = NavigationTermSet.GetAsResolvedByWeb(clientContext, termSet, clientContext.Web, "GlobalNavigationTaxonomyProvider"); navTermSet.IsNavigationTermSet = true; navTermSet.TargetUrlForChildTerms.Value = "~site/Pages/Topics/Topic.aspx"; termStore.CommitAll(); clientContext.ExecuteQuery(); NavigationTerm term1 = navTermSet.CreateTerm("Term 1", NavigationLinkType.SimpleLink, Guid.NewGuid()); term1.SimpleLinkUrl = "http://www.bing.com/"; NavigationTerm term2 = navTermSet.CreateTerm("Term 2", NavigationLinkType.FriendlyUrl, Guid.NewGuid()); NavigationTerm term2a = term2.CreateTerm("Term 2 A", NavigationLinkType.FriendlyUrl, Guid.NewGuid()); NavigationTerm term2b = term2.CreateTerm("Term 2 B", NavigationLinkType.FriendlyUrl, Guid.NewGuid()); NavigationTerm term3 = navTermSet.CreateTerm("Term 3", NavigationLinkType.FriendlyUrl, Guid.NewGuid()); termStore.CommitAll(); clientContext.ExecuteQuery(); return(navTermSet); }
public TaxonomyNavigationRequestContext() { this.context = TaxonomyNavigationContext.Current; this.variation = VariationContext.Current; if (context.HasNavigationContext) { this.navigationTerm = context.NavigationTerm; } else { using (new SPSecurity.GrantAdditionalPermissionsInScope(SPBasePermissions.FullMask)) { SPWeb currentWeb = SPContext.Current.Web; string url = TaxonomyNavigationHelper.ResolveFriendlyUrl(currentWeb, SPUrlUtility.CombineUrl(currentWeb.ServerRelativeUrl, currentWeb.RootFolder.WelcomePage)); TaxonomyNavigationHelper.TryGetNavigationTerm(url, out this.navigationTerm, out url); } } if (this.navigationTerm == null) { NavigationTermSet termSet; TaxonomyNavigationHelper.IsRequestingNavigationTermSet(out termSet); this.navigationTermSetItem = termSet; } else { this.navigationTermSetItem = navigationTerm; } if (context.HasFriendlyUrl || context.HasCatalogUrl) { this.serverRelativeRequestUrl = context.ResolvedDisplayUrl; } else if (navigationTermSetItem != null) { this.serverRelativeRequestUrl = navigationTermSetItem.GetResolvedDisplayUrl(null); } else { this.serverRelativeRequestUrl = SPUtility.OriginalServerRelativeRequestPath; } this.variationRelativeRequestUrl = PublishingWebHelper.TrimVariationFromPath(serverRelativeRequestUrl); this.query = HttpUtility.ParseQueryString(HttpContext.Current.Request.Url.Query); query.Remove(null); query.Remove("TermStoreId"); query.Remove("TermSetId"); query.Remove("TermId"); this.queryString = query.AllKeys.Length > 0 ? "?" + query : String.Empty; SPListItem listItem = SPContext.Current.ListItem; if (listItem != null) { this.currentItem = SPModel.TryCreate(listItem); } if (currentItem is ICatalogPage) { ICatalogPageFilter filter = CommonHelper.AccessNotNull(((ICatalogPage)currentItem).Filter, "Filter"); SetCatalogPageFilter(filter); } if (currentItem is ISeoMetaProvider) { seoMeta.Add((ISeoMetaProvider)currentItem); } seoMeta.Add(new SeoMetaListItem(listItem)); for (NavigationTerm t = navigationTerm; t != null; t = t.Parent) { seoMeta.Add(new SeoMetaNavigationTerm(listItem.Web, t)); } }