Example #1
0
        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();
        }
    }
Example #8
0
        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);
        }