Example #1
0
        /// <summary>
        /// Handles the OnClick event of the btnLogOut control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
        protected void btnLogOut_OnClick(object sender, EventArgs e)
        {
            ICustomerManager <CustomerInfo> customerManager = Sitecore.Ecommerce.Context.Entity.Resolve <ICustomerManager <CustomerInfo> >();

            AnalyticsUtil.AuthentificationUserLoggedOut(customerManager.CurrentUser.NickName);

            AuthenticationManager.Logout();

            customerManager.ResetCurrentUser();

            var url = string.Empty;

            if (Sitecore.Context.Item.Security.CanRead(User.Current))
            {
                var qs = WebUtil.GetQueryString();

                var itemUrl = Sitecore.Context.ClientData.GetValue("itempath") as string;
                if (string.IsNullOrEmpty(itemUrl))
                {
                    url = LinkManager.GetItemUrl(Sitecore.Context.Item);
                }
                else
                {
                    VirtualProductResolver virtualProductResolver = Sitecore.Ecommerce.Context.Entity.Resolve <VirtualProductResolver>();
                    var folderItem = virtualProductResolver.ProductCatalogItem;
                    if (folderItem != null)
                    {
                        url = virtualProductResolver.GetVirtualProductUrl(folderItem, Sitecore.Context.Item);
                    }
                }

                qs  = qs.TrimStart('?');
                qs  = (qs != string.Empty) ? "?" + qs : string.Empty;
                url = string.Concat(url, qs);
            }
            else
            {
                url = "/";
            }

            Response.Redirect(url);
        }
Example #2
0
        /// <summary>
        /// Gets the virtual product URL with analitics query string.
        /// </summary>
        /// <param name="productItem">The product item.</param>
        /// <returns>The virtual product URL with analitics query string.</returns>
        public virtual string GetVirtualProductUrlWithAnaliticsQueryString(Item productItem)
        {
            Assert.ArgumentNotNull(productItem, "productItem");

            VirtualProductResolver virtualProductResolver = Context.Entity.Resolve <VirtualProductResolver>();
            Item catalogItem = virtualProductResolver.ProductCatalogItem;

            if (catalogItem == null)
            {
                Log.Warn("Product catalog item is null", this);
                return(string.Empty);
            }

            string virtualProductUrl = virtualProductResolver.GetVirtualProductUrl(catalogItem, productItem);

            if (string.IsNullOrEmpty(virtualProductUrl))
            {
                Log.Warn("Fail to get virtual product URL", this);
                return(string.Empty);
            }

            return(this.navigationEvents.AddFollowListToQueryString(virtualProductUrl, catalogItem.Name));
        }
Example #3
0
        /// <summary>
        /// Processes the specified args.
        /// </summary>
        /// <param name="args">The arguments.</param>
        public override void Process(HttpRequestArgs args)
        {
            Assert.ArgumentNotNull(args, "args");

            if (Sitecore.Context.Item != null || Sitecore.Context.Database == null || Sitecore.Context.Database.Name == Constants.CoreDatabaseName || string.IsNullOrEmpty(args.Url.ItemPath) || args.Context.Request == null)
            {
                return;
            }

            VirtualProductResolver virtualProductResolver = Context.Entity.Resolve <VirtualProductResolver>();

            virtualProductResolver.ProductPresentationItem = default(Item);
            virtualProductResolver.ProductCatalogItem      = default(Item);

            UrlString url = new UrlString
            {
                HostName = args.Context.Request.Url.Host,
                Path     = args.Context.Request.RawUrl.Split(new[] { '?' })[0]
            };

            Item productItem;
            Item presentationItem;
            Item productCatalogItem = null;

            using (new SecurityDisabler())
            {
                productItem      = virtualProductResolver.GetProductItem(url.ToString());
                presentationItem = virtualProductResolver.ProductPresentationItem;

                if (productItem == null || presentationItem == null)
                {
                    productCatalogItem = this.GetParentItemFromItemPath(args.Url.ItemPath);

                    if (productCatalogItem == null)
                    {
                        return;
                    }

                    virtualProductResolver.ProductCatalogItem = productCatalogItem;

                    // Get layout from the product presentation item.
                    presentationItem = virtualProductResolver.GetProductPresentationItem(productCatalogItem);
                    if (presentationItem == null)
                    {
                        return;
                    }

                    virtualProductResolver.ProductPresentationItem = presentationItem;

                    // Resolve product item
                    string key = virtualProductResolver.GetDisplayProductsModeKey(productCatalogItem);

                    var message = string.Format("ProductUrlProcessor is not defined with the name: {0}. Check Unity.config file.", key);
                    Assert.IsTrue(Context.Entity.HasRegistration(typeof(ProductUrlProcessor), key), message);

                    ProductUrlProcessor productUrlProcessor = Context.Entity.Resolve <ProductUrlProcessor>(key);

                    string nameValue = args.Url.ItemPath.Substring(args.Url.ItemPath.LastIndexOf("/") + 1);
                    productItem = productUrlProcessor.ResolveProductItem(nameValue);

                    if (productItem == null)
                    {
                        return;
                    }
                }
            }

            if (productCatalogItem == null)
            {
                using (new SecurityDisabler())
                {
                    productCatalogItem = virtualProductResolver.ProductCatalogItem;
                }
            }

            productCatalogItem = args.ApplySecurity(productCatalogItem);
            productItem        = args.ApplySecurity(productItem);

            if (productCatalogItem == null || productItem == null)
            {
                return;
            }

            Sitecore.Context.Page.FilePath = presentationItem.Visualization.Layout.FilePath;
            Sitecore.Context.Item          = productItem;
        }