/// <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); }
/// <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)); }
/// <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; }