public ActionResult Rendering() { BreadcrumbWrapper breadcrumbs = new BreadcrumbWrapper(); IList <Item> items = GetBreadcrumbItems(); foreach (Item item in items) { if (!IsTemplateBlacklisted(item.TemplateName)) { BreadcrumbViewModel crumb = new BreadcrumbViewModel(item); crumb.BreadcrumbName = item["Name"]; crumb.IsActive = Sitecore.Context.Item.ID == item.ID; crumb.BreadcrumbUrl = LinkManager.GetItemUrl(item); breadcrumbs.SitecoreBreadcrumbs.Add(crumb); } } Product product = SiteContext.Current.CatalogContext.CurrentProduct; Category lastCategory = SiteContext.Current.CatalogContext.CurrentCategory; foreach (var category in SiteContext.Current.CatalogContext.CurrentCategories) { BreadcrumbViewModelUcommerce crumb = new BreadcrumbViewModelUcommerce() { BreadcrumbNameUcommerce = category.DisplayName(), BreadcrumbUrlUcommerce = CatalogLibrary.GetNiceUrlForCategory(category) }; lastCategory = category; breadcrumbs.UcommerceBreadcrumbs.Add(crumb); } if (product != null) { var breadcrumb = new BreadcrumbViewModelUcommerce() { BreadcrumbNameUcommerce = product.DisplayName(), BreadcrumbUrlUcommerce = CatalogLibrary.GetNiceUrlForProduct(product, lastCategory) }; breadcrumbs.UcommerceBreadcrumbs.Add(breadcrumb); } if (IsTemplateWhitelisted(Sitecore.Context.Item.TemplateName)) { BreadcrumbViewModelUcommerce currentCrumb = new BreadcrumbViewModelUcommerce(); currentCrumb.BreadcrumbNameUcommerce = Sitecore.Context.Item.DisplayName; currentCrumb.BreadcrumbUrlUcommerce = LinkManager.GetItemUrl(Sitecore.Context.Item); breadcrumbs.UcommerceBreadcrumbs.Add(currentCrumb); } return(View(breadcrumbs)); }
public ActionResult Index() { IList <BreadcrumbsViewModel> breadcrumbs = new List <BreadcrumbsViewModel>(); Category lastCategory = null; Product product = SiteContext.Current.CatalogContext.CurrentProduct; foreach (var category in SiteContext.Current.CatalogContext.CurrentCategories) { var breadcrumb = new BreadcrumbsViewModel { BreadcrumbName = category.DisplayName(), BreadcrumbUrl = CatalogLibrary.GetNiceUrlForCategory(category) }; lastCategory = category; breadcrumbs.Add(breadcrumb); } if (product != null) { var breadcrumb = new BreadcrumbsViewModel { BreadcrumbName = product.DisplayName(), BreadcrumbUrl = CatalogLibrary.GetNiceUrlForProduct(product, lastCategory) }; breadcrumbs.Add(breadcrumb); } if (product == null && lastCategory == null) { var currentNode = CurrentPage; foreach (var level in currentNode.Ancestors().Where(IsVisible)) { var breadcrumb = new BreadcrumbsViewModel() { BreadcrumbName = level.Name, BreadcrumbUrl = level.Url }; breadcrumbs.Add(breadcrumb); } var currentBreadcrumb = new BreadcrumbsViewModel() { BreadcrumbName = currentNode.Name, BreadcrumbUrl = currentNode.Url }; breadcrumbs.Add(currentBreadcrumb); } return(View("/Views/PartialView/Breadcrumbs.cshtml", breadcrumbs)); }
private IList <CategoryViewModel> MapCategories(ICollection <Category> categoriesToMap) { var categoriesToReturn = new List <CategoryViewModel>(); foreach (var category in categoriesToMap) { var categoryViewModel = new CategoryViewModel(); categoryViewModel.Name = category.DisplayName(); categoryViewModel.Url = CatalogLibrary.GetNiceUrlForCategory(category); categoryViewModel.Categories = MapCategories(CatalogLibrary.GetCategories(category)); categoriesToReturn.Add(categoryViewModel); } return(categoriesToReturn); }
private List <CategoryNavigationRenderingViewModel.Category> MapCategories(ICollection <UCommerce.EntitiesV2.Category> categoriesToMap) { var categoriesToReturn = new List <CategoryNavigationRenderingViewModel.Category>(); foreach (UCommerce.EntitiesV2.Category category in categoriesToMap) { var categoryToAdd = new CategoryNavigationRenderingViewModel.Category(); categoryToAdd.Name = category.DisplayName(); categoryToAdd.Url = CatalogLibrary.GetNiceUrlForCategory(category); categoryToAdd.Url = _catalogLibraryInternal.GetNiceUrlForCategory(null, category); categoriesToReturn.Add(categoryToAdd); categoryToAdd.Categories = MapCategories(_catalogLibraryInternal.GetCategories(category)); } return(categoriesToReturn); }
private void RecursiveMenu(Category currentCategory) { CategoryNavigationList.InnerHtml += "<ul class=\"nav nav-list\">"; if (_currentCategory != null && _currentCategory.Id == currentCategory.Id) { CategoryNavigationList.InnerHtml += "<li class=\"on\">"; } else { CategoryNavigationList.InnerHtml += "<li class=\"nav-item\">"; } CategoryNavigationList.InnerHtml += "<a class=\"catnav\" href=\"" + CatalogLibrary.GetNiceUrlForCategory(currentCategory) + "\">" + currentCategory.Name + "</a>"; foreach (Category category in currentCategory.Categories) { RecursiveMenu(category); } CategoryNavigationList.InnerHtml += "</li>"; CategoryNavigationList.InnerHtml += "</ul>"; }
public void btnCheckBox_Click(object sender, EventArgs e) { Dictionary <string, string> queryStrings = new Dictionary <string, string>(); var btnSender = (Button)sender; foreach (Button currentBtn in _controls) { if (currentBtn.Attributes["queryStringKey"] == btnSender.Attributes["queryStringKey"] && currentBtn.Attributes["queryStringValue"] == btnSender.Attributes["queryStringValue"]) { //if the button was checked when it was clicked, then i can just continue, since it should not be checked after if (btnSender.Attributes["class"] == "facets checkbox checked") { continue; } } else { if (currentBtn.Attributes["class"] != "facets checkbox checked") { continue; } } if (queryStrings.Count == 0) { queryStrings.Add(currentBtn.Attributes["queryStringKey"], currentBtn.Attributes["queryStringValue"] + "|"); continue; } IEnumerable <KeyValuePair <string, string> > value = queryStrings.Where(x => x.Key == currentBtn.Attributes["queryStringKey"]); //if we already have that key in the dictionary if (value.Any()) { var valueHolder = ""; if (!queryStrings.TryGetValue(currentBtn.Attributes["queryStringKey"], out valueHolder)) { continue; } queryStrings.Remove(currentBtn.Attributes["queryStringKey"]); queryStrings.Add( currentBtn.Attributes["queryStringKey"], valueHolder + currentBtn.Attributes["queryStringValue"] + "|"); } else { queryStrings.Add( currentBtn.Attributes["queryStringKey"], currentBtn.Attributes["queryStringValue"] + "|"); } } string redirectUrl = CatalogLibrary.GetNiceUrlForCategory(SiteContext.Current.CatalogContext.CurrentCategory, null); if (redirectUrl.Last() != '?') { redirectUrl += "?"; } foreach (var pair in queryStrings) { redirectUrl += "&" + pair.Key + "=" + pair.Value; } HttpContext.Current.Response.Redirect(redirectUrl); }
/// <summary> /// Initializes the control properties. /// </summary> protected void SetupControl() { if (this.StopProcessing) { // Do not process } else { if (PortalContext.ViewMode == ViewModeEnum.Edit || PortalContext.ViewMode == ViewModeEnum.Design) { return; } var delimiter = GetStringValue("Delimiter", ">"); bool includeKenticoNodes = ValidationHelper.GetBoolean(this.GetValue("IncludeKenticoNodes"), true); var breadcrumbs = new List <BreadcrumbViewModel>(); if (includeKenticoNodes) { var documentsOnPath = CurrentDocument.DocumentsOnPath; foreach (var node in documentsOnPath) { if (!node.NodeAlias.IsNullOrWhiteSpace() && PageTemplateInfoProvider.GetPageTemplateInfo(node.GetUsedPageTemplateId()).DisplayName != "Catalog" && PageTemplateInfoProvider.GetPageTemplateInfo(node.GetUsedPageTemplateId()).DisplayName != "Product") { breadcrumbs.Add( new BreadcrumbViewModel { BreadcrumbName = node.NodeAlias, BreadcrumbUrl = node.AbsoluteURL }); breadcrumbs.Add(new BreadcrumbViewModel { BreadcrumbName = delimiter }); } } } var delimiterBreadcrumb = new BreadcrumbViewModel { BreadcrumbName = delimiter }; Product product = SiteContext.Current.CatalogContext.CurrentProduct; Category lastCategory = SiteContext.Current.CatalogContext.CurrentCategory; var defaultCatalogDataProvider = ObjectFactory.Instance.Resolve <IDefaultCatalogDataProvider>(); if (lastCategory == null && CurrentDocument.NodeAlias == "Catalog") { lastCategory = defaultCatalogDataProvider.GetDefaultCategory(); SiteContext.Current.CatalogContext.CurrentCategories.Add(lastCategory); } if (lastCategory == null && product == null && CurrentDocument.NodeAlias == "Product") { product = defaultCatalogDataProvider.GetDefaultProduct(); } if (SiteContext.Current.CatalogContext.CurrentCategories.Any()) { foreach (var category in SiteContext.Current.CatalogContext.CurrentCategories) { var breadcrumb = new BreadcrumbViewModel { BreadcrumbName = category.DisplayName(), BreadcrumbUrl = CatalogLibrary.GetNiceUrlForCategory(category) }; lastCategory = category; breadcrumbs.Add(breadcrumb); if (category == SiteContext.Current.CatalogContext.CurrentCategory && product == null) { break; } breadcrumbs.Add(delimiterBreadcrumb); } } if (product != null) { var breadcrumb = new BreadcrumbViewModel { BreadcrumbName = product.DisplayName(), BreadcrumbUrl = CatalogLibrary.GetNiceUrlForProduct(product, lastCategory) }; breadcrumbs.Add(breadcrumb); } if (breadcrumbs.Any() && breadcrumbs.Last().BreadcrumbName == delimiter) { breadcrumbs.Remove(breadcrumbs.Last()); } Breadcrumbs.DataSource = breadcrumbs; Breadcrumbs.DataBind(); } }
public virtual ProductDetailViewModel CreateDetailsViewModel() { ProductDetailViewModel productDetailViewModel = null; var currentProduct = SiteContext.Current.CatalogContext.CurrentProduct; if (currentProduct != null) { var imageService = UCommerce.Infrastructure.ObjectFactory.Instance.Resolve <IImageService>(); var currentCategory = SiteContext.Current.CatalogContext.CurrentCategory; string displayName = string.Empty; if (currentProduct.ParentProduct != null) { displayName = $"{currentProduct.ParentProduct.DisplayName()} "; } displayName += currentProduct.DisplayName(); var productPrice = CatalogLibrary.CalculatePrice(new List <Product>() { currentProduct }).Items.FirstOrDefault(); decimal price = 0; decimal discount = 0; if (productPrice != null) { price = productPrice.PriceExclTax; discount = productPrice.DiscountExclTax; var currentCatalog = SiteContext.Current.CatalogContext.CurrentCatalog; if (currentCatalog != null && currentCatalog.ShowPricesIncludingVAT) { price = productPrice.PriceInclTax; discount = productPrice.DiscountInclTax; } } var imageUrl = imageService.GetImage(currentProduct.PrimaryImageMediaId).Url; var absoluteImageUrl = UrlPath.ResolveAbsoluteUrl(imageUrl); productDetailViewModel = new ProductDetailViewModel() { DisplayName = displayName, Guid = currentProduct.Guid, PrimaryImageMediaUrl = absoluteImageUrl, LongDescription = currentProduct.LongDescription(), ShortDescription = currentProduct.ShortDescription(), ProductUrl = CatalogLibrary.GetNiceUrlForProduct(currentProduct, currentCategory), Price = new Money(price, SiteContext.Current.CatalogContext.CurrentPriceGroup.Currency).ToString(), Discount = new Money(discount, SiteContext.Current.CatalogContext.CurrentPriceGroup.Currency).ToString(), Sku = currentProduct.Sku, Rating = Convert.ToInt32(Math.Round(currentProduct.Rating.GetValueOrDefault())), VariantSku = currentProduct.VariantSku, IsVariant = currentProduct.IsVariant, IsProductFamily = currentProduct.ProductDefinition.IsProductFamily(), AllowOrdering = currentProduct.AllowOrdering, }; if (currentProduct.ParentProduct != null) { productDetailViewModel.ParentProductUrl = CatalogLibrary.GetNiceUrlForProduct(currentProduct.ParentProduct, currentCategory); productDetailViewModel.ParentProductDisplayName = currentProduct.ParentProduct.DisplayName(); } if (currentCategory != null) { productDetailViewModel.CategoryDisplayName = currentCategory.DisplayName(); productDetailViewModel.CategoryUrl = CatalogLibrary.GetNiceUrlForCategory(currentCategory); productDetailViewModel.ProductUrl = CatalogLibrary.GetNiceUrlForProduct(currentProduct, currentCategory); } foreach (var pv in currentProduct.Variants) { foreach (var v in pv.ProductProperties) { if (v.ProductDefinitionField != null && v.ProductDefinitionField.IsVariantProperty) { if (productDetailViewModel.VariantTypes.Any(t => t.Id == v.ProductDefinitionField.Id)) { } } } } var uniqueVariants = from v in currentProduct.Variants.SelectMany(p => p.ProductProperties) where v.ProductDefinitionField.DisplayOnSite group v by v.ProductDefinitionField into g select g; foreach (var vt in uniqueVariants) { var typeViewModel = productDetailViewModel.VariantTypes .Where(z => z.Id == vt.Key.ProductDefinitionFieldId) .FirstOrDefault(); if (typeViewModel == null) { typeViewModel = new VariantTypeViewModel { Id = vt.Key.ProductDefinitionFieldId, Name = vt.Key.Name, DisplayName = vt.Key.GetDisplayName() }; productDetailViewModel.VariantTypes.Add(typeViewModel); } var variants = vt.ToList(); foreach (var variant in variants) { var variantViewModel = typeViewModel.Values .Where(v => v.Value == variant.Value) .FirstOrDefault(); if (variantViewModel == null) { variantViewModel = new VariantViewModel { Value = variant.Value, TypeName = typeViewModel.Name }; if (!string.IsNullOrEmpty(variant.Product.PrimaryImageMediaId)) { var variantImageUrl = imageService.GetImage(variant.Product.PrimaryImageMediaId).Url; variantViewModel.PrimaryImageMediaUrl = UrlPath.ResolveAbsoluteUrl(variantImageUrl); } typeViewModel.Values.Add(variantViewModel); } } } productDetailViewModel.Routes.Add(RouteConstants.ADD_TO_BASKET_ROUTE_NAME, RouteConstants.ADD_TO_BASKET_ROUTE_VALUE); } return(productDetailViewModel); }