public ActionResult Fruit(RenderModel model, string slug) { if (string.IsNullOrEmpty(slug)) { return null; } else { foreach (var node in model.Content.Children) { var potentialUrls = new List<string>(); var v = new VortoApiController(); var langs = (List<Our.Umbraco.Vorto.Models.Language>)v.GetInstalledLanguages(); foreach (var lang in langs) { var vortoValue = node.GetVortoValue<string>("fruitName", lang.IsoCode); if (!string.IsNullOrEmpty(vortoValue)) { potentialUrls.Add(vortoValue.ToUrlSegment()); } } if (potentialUrls.Contains(slug)) { // match return this.View("~/Views/Fruit.cshtml", this.CreateRenderModel(node)); } } return this.HttpNotFound(); } }
public override IEnumerable<string> GetOtherUrls(UmbracoContext umbracoContext, int id, Uri current) { var node = umbracoContext.ContentCache.GetById(id); if (node != null && node.ContentType.Alias.Equals("Fruit")) { if (node.HasVortoValue("fruitName")) { var v = new VortoApiController(); var langs = (List<Our.Umbraco.Vorto.Models.Language>)v.GetInstalledLanguages(); var primaryLang = string.Empty; var enUs = langs.FirstOrDefault(x => x.IsoCode == "en-US"); if (enUs != null) { langs.Remove(enUs); } else { var firstLang = langs.FirstOrDefault(); langs.Remove(firstLang); } var otherUrls = new List<string>(); var allBoxes = umbracoContext.ContentCache.GetAtRoot().DescendantsOrSelf("Box"); foreach (var lang in langs) { var vortoValue = node.GetVortoValue<string>("fruitName", lang.IsoCode); var culture = CultureInfo.GetCultureInfo(lang.IsoCode); var langBox = allBoxes.FirstOrDefault(x => Equals(x.GetCulture(), culture)); if (langBox != null) { otherUrls.Add(string.Format("{0}{1}/", langBox.Url, vortoValue.ToUrlSegment())); } } return otherUrls; } } return base.GetOtherUrls(umbracoContext, id, current); }
public override string GetUrl(UmbracoContext umbracoContext, int id, Uri current, UrlProviderMode mode) { var node = umbracoContext.ContentCache.GetById(id); if (node != null && node.ContentType.Alias.Equals("Fruit")) { if (node.HasVortoValue("fruitName")) { var v = new VortoApiController(); var lang = (List<Our.Umbraco.Vorto.Models.Language>)v.GetInstalledLanguages(); var primaryLang = string.Empty; if (lang.Select(x => x.IsoCode).Contains("en-US")) { primaryLang = "en-US"; } else { var firstOrDefault = lang.FirstOrDefault(); if (firstOrDefault != null) { primaryLang = firstOrDefault.IsoCode; } } var vortoValue = node.GetVortoValue<string>("fruitName", primaryLang); var culture = CultureInfo.GetCultureInfo(primaryLang); var primaryBox = umbracoContext.ContentCache.GetAtRoot().DescendantsOrSelf("Box").FirstOrDefault(x => Equals(x.GetCulture(), culture)); if (primaryBox != null) { return string.Format("{0}{1}/", primaryBox.Url, vortoValue.ToUrlSegment()); } } } return base.GetUrl(umbracoContext, id, current, mode); }