public ActionResult Index(string q) { // Initial Setup ViewBag.Title = SiteTerms.GetTerm(SiteTermIds.Search); ViewBag.MetaTitle = ViewBag.Title + " | " + q; ViewBag.MetaDescription = ViewBag.MetaTitle; ViewBag.BodyClass = "store-search-page"; ViewBag.GoButtonUrl = MTApp.ThemeManager().ButtonUrl("Go", Request.IsSecureConnection); ViewBag.q = q; // Pager Vars int pageNumber = GetPageNumber(); int pageSize = 9; int totalItems = 0; // Do Search CategoryPageViewModel model = new CategoryPageViewModel(); SearchManager manager = new SearchManager(); List<SearchObject> objects = manager.DoSearch(MTApp.CurrentStore.Id, q, pageNumber, pageSize, ref totalItems); List<string> ids = new List<string>(); foreach (SearchObject o in objects) { switch (o.ObjectType) { case (int)SearchManagerObjectType.Product: ids.Add(o.ObjectId); break; } } List<Product> products = MTApp.CatalogServices.Products.FindMany(ids); // Save to Model model.Products = PrepProducts(products); model.PagerData.PageSize = pageSize; model.PagerData.TotalItems = totalItems; model.PagerData.CurrentPage = pageNumber; model.PagerData.PagerUrlFormat = Url.Content("~/search?q=" + HttpUtility.UrlEncode(q) + "&p={0}"); model.PagerData.PagerUrlFormatFirst = Url.Content("~/search?q=" + HttpUtility.UrlEncode(q)); return View(model); }
private void RenderSelection(StringBuilder sb, int index, long selectedValue, string key, CategoryFacet facet, ProductProperty property, List<CategoryFacet> allFacets, CategoryPageViewModel model, List<BreadCrumbItem> extraCrumbs) { string selectedName = string.Empty; var sn = (from c in property.Choices where c.Id == selectedValue select c.ChoiceName).SingleOrDefault(); if (sn != null) { selectedName = sn; extraCrumbs.Add(new BreadCrumbItem() { Name = sn }); ViewBag.MetaDescription += " | " + sn; ViewBag.Title += " | " + sn; } sb.Append("<h6 class=\"filter\">" + property.DisplayName + "</h6> "); string baseUrl = model.LocalCategory.RewriteUrl + "?node=" + CategoryFacetKeyHelper.ClearSelfAndChildrenFromKey(key, allFacets, facet.Id); sb.Append("<ul class=\"filterselected\"><li>"); sb.Append(" <a href=\"" + baseUrl + "\">"); sb.Append(selectedName); sb.Append(" [clear]</a></li></ul>"); }
private void RenderNonSelection(StringBuilder sb, int index, long selectedValue, string key, CategoryFacet facet, ProductProperty property, List<ProductFacetCount> counts, CategoryPageViewModel model) { sb.Append("<h6 class=\"filter\">" + property.DisplayName + "</h6>"); sb.Append("<ul class=\"filterselections\">"); foreach (ProductPropertyChoice c in property.Choices) { string newKey = CategoryFacetKeyHelper.ReplaceKeyValue(key, index, c.Id); string baseUrl = model.LocalCategory.RewriteUrl + "?node=" + newKey; string sqlKey = CategoryFacetKeyHelper.ParseKeyToSqlList(newKey); ProductFacetCount fc = new ProductFacetCount(); foreach (ProductFacetCount f in counts) { if (f.Key == sqlKey) { fc = f; break; } } if (fc.ProductCount > 0) { sb.Append("<li><a href=\"" + baseUrl + "\">"); sb.Append(c.ChoiceName); sb.Append(" (" + fc.ProductCount.ToString() + ")"); sb.Append("</a></li>"); } } sb.Append("</ul>"); }
public ActionResult DrillDownIndex(string slug) { ViewBag.BodyClass = "store-categorydrilldown-page"; Category cat = MTApp.CatalogServices.Categories.FindBySlugForStore(slug, MTApp.CurrentRequestContext.CurrentStore.Id); if (cat == null) cat = new Category(); ViewBag.Title = cat.MetaTitle; if (String.IsNullOrEmpty(ViewBag.Title)) { ViewBag.Title = cat.Name; } ViewBag.MetaKeywords = cat.MetaKeywords; ViewBag.MetaDescription = cat.MetaDescription; ViewBag.DisplayHtml = TagReplacer.ReplaceContentTags(cat.Description, this.MTApp, "", Request.IsSecureConnection); string key = Request.QueryString["node"] ?? string.Empty; if (key == "-") key = string.Empty; ViewBag.Key = key; int pageNumber = GetPageNumber(); int pageSize = 9; int totalItems = 0; CategoryPageViewModel model = new CategoryPageViewModel(); CategoryFacetManager manager = CategoryFacetManager.InstantiateForDatabase(MTApp.CurrentRequestContext); List<CategoryFacet> facets = manager.FindByCategory(cat.Bvin); List<ProductProperty> properties = LoadProperties(facets); if (key == string.Empty) { key = CategoryFacetKeyHelper.BuildEmptyKey(facets.Count); } List<long> parsedKey = CategoryFacetKeyHelper.ParseKeyToList(key); List<Product> products = MTApp.CatalogServices.FindProductsMatchingKey(key, pageNumber, pageSize, ref totalItems); List<ProductFacetCount> productCounts = manager.FindCountsOfVisibleFacets(key, facets, properties); List<long> visibleIds = manager.FindVisibleFacetsIdsForKey(key, facets); model.Products = PrepProducts(products); model.LocalCategory = cat; model.PagerData.PageSize = pageSize; model.PagerData.TotalItems = totalItems; model.PagerData.CurrentPage = pageNumber; model.PagerData.PagerUrlFormat = UrlRewriter.BuildUrlForCategory(new CategorySnapshot(cat), MTApp.CurrentRequestContext.RoutingContext, "{0}"); model.PagerData.PagerUrlFormatFirst = UrlRewriter.BuildUrlForCategory(new CategorySnapshot(cat), MTApp.CurrentRequestContext.RoutingContext); model.SubCategories = PrepSubCategories(MTApp.CatalogServices.Categories.FindVisibleChildren(cat.Bvin)); StringBuilder sbNotSelected = new StringBuilder(); List<BreadCrumbItem> extraCrumbs = new List<BreadCrumbItem>(); for (int i = 0; i < facets.Count; i++) { if (visibleIds.Contains(facets[i].Id)) { // Find the property that matches the facet var p = (from pr in properties where pr.Id == facets[i].PropertyId select pr).SingleOrDefault(); if (p != null) { if (parsedKey[i] < 1) { // not selected this.RenderNonSelection(sbNotSelected, i, parsedKey[i], key, facets[i], p, productCounts, model); } else { // selected this.RenderSelection(sbNotSelected, i, parsedKey[i], key, facets[i], p, facets, model, extraCrumbs); } } } } ViewBag.ExtraCrumbs = extraCrumbs; ViewBag.Filters = sbNotSelected.ToString(); // Banner if (cat.BannerImageUrl.Trim().Length > 0) { ViewBag.ShowBanner = true; ViewBag.BannerUrl = MerchantTribe.Commerce.Storage.DiskStorage.CategoryBannerUrl( MTApp, cat.Bvin, cat.BannerImageUrl, Request.IsSecureConnection); } else { ViewBag.ShowBanner = false; } // Record Category View MerchantTribe.Commerce.SessionManager.CategoryLastId = cat.Bvin; return View("DrillDown", model); }
public ActionResult Index(string slug) { ViewBag.BodyClass = "store-category-page"; Category cat = MTApp.CatalogServices.Categories.FindBySlugForStore(slug, MTApp.CurrentRequestContext.CurrentStore.Id); if (cat == null) cat = new Category(); ViewBag.Title = cat.MetaTitle; if (String.IsNullOrEmpty(ViewBag.Title)) { ViewBag.Title = cat.Name; } ViewBag.MetaKeywords = cat.MetaKeywords; ViewBag.MetaDescription = cat.MetaDescription; ViewBag.DisplayHtml = TagReplacer.ReplaceContentTags(cat.Description, this.MTApp, "", Request.IsSecureConnection); ViewBag.AddToCartButton = this.MTApp.ThemeManager().ButtonUrl("AddToCart", Request.IsSecureConnection); ViewBag.DetailsButton = this.MTApp.ThemeManager().ButtonUrl("View", Request.IsSecureConnection); int pageNumber = GetPageNumber(); int pageSize = 9; int totalItems = 0; CategoryPageViewModel model = new CategoryPageViewModel(); List<Product> products = MTApp.CatalogServices.FindProductForCategoryWithSort( cat.Bvin, CategorySortOrder.ManualOrder, false, pageNumber, pageSize, ref totalItems); model.Products = PrepProducts(products); model.LocalCategory = cat; model.PagerData.PageSize = pageSize; model.PagerData.TotalItems = totalItems; model.PagerData.CurrentPage = pageNumber; model.PagerData.PagerUrlFormat = UrlRewriter.BuildUrlForCategory(new CategorySnapshot(cat), MTApp.CurrentRequestContext.RoutingContext, "{0}"); model.PagerData.PagerUrlFormatFirst = UrlRewriter.BuildUrlForCategory(new CategorySnapshot(cat), MTApp.CurrentRequestContext.RoutingContext); model.SubCategories = PrepSubCategories(MTApp.CatalogServices.Categories.FindVisibleChildren(cat.Bvin)); // Banner if (cat.BannerImageUrl.Trim().Length > 0) { ViewBag.ShowBanner = true; ViewBag.BannerUrl = MerchantTribe.Commerce.Storage.DiskStorage.CategoryBannerUrl( MTApp, cat.Bvin, cat.BannerImageUrl, Request.IsSecureConnection); } else { ViewBag.ShowBanner = false; } // Record Category View MerchantTribe.Commerce.SessionManager.CategoryLastId = cat.Bvin; MTApp.CurrentRequestContext.CurrentCategory = cat; if (cat.TemplateName == "BV Grid") cat.TemplateName = "Grid"; // Safety Check from older versions string viewName = cat.TemplateName.Trim(); return View(viewName, model); }
public ActionResult Index(string slug) { ViewBag.BodyClass = "store-category-page"; Category cat = MTApp.CatalogServices.Categories.FindBySlugForStore(slug, MTApp.CurrentRequestContext.CurrentStore.Id); if (cat == null) cat = new Category(); ViewBag.Title = cat.MetaTitle; if (String.IsNullOrEmpty(ViewBag.Title)) { ViewBag.Title = cat.Name; } ViewBag.MetaKeywords = cat.MetaKeywords; ViewBag.MetaDescription = cat.MetaDescription; //ViewBag.DisplayHtml = TagReplacer.ReplaceContentTags(cat.Description, // this.MTApp, // "", // Request.IsSecureConnection); //ViewBag.AddToCartButton = this.MTApp.ThemeManager().ButtonUrl("AddToCart", Request.IsSecureConnection); //ViewBag.DetailsButton = this.MTApp.ThemeManager().ButtonUrl("View", Request.IsSecureConnection); //int pageNumber = GetPageNumber(); //int pageSize = 9; //int totalItems = 0; CategoryPageViewModel model = new CategoryPageViewModel(); //List<Product> products = MTApp.CatalogServices.FindProductForCategoryWithSort( // cat.Bvin, // CategorySortOrder.ManualOrder, // false, // pageNumber, pageSize, ref totalItems); //model.Products = PrepProducts(products); //model.LocalCategory = cat; //model.PagerData.PageSize = pageSize; //model.PagerData.TotalItems = totalItems; //model.PagerData.CurrentPage = pageNumber; //model.PagerData.PagerUrlFormat = UrlRewriter.BuildUrlForCategory(new CategorySnapshot(cat), // MTApp.CurrentRequestContext.RoutingContext, // "{0}"); //model.PagerData.PagerUrlFormatFirst = UrlRewriter.BuildUrlForCategory(new CategorySnapshot(cat), // MTApp.CurrentRequestContext.RoutingContext); model.SubCategories = PrepSubCategories(MTApp.CatalogServices.Categories.FindVisibleChildren(cat.Bvin)); // Banner //if (cat.BannerImageUrl.Trim().Length > 0) //{ // ViewBag.ShowBanner = true; // ViewBag.BannerUrl = MerchantTribe.Commerce.Storage.DiskStorage.CategoryBannerUrl( // MTApp, // cat.Bvin, // cat.BannerImageUrl, // Request.IsSecureConnection); //} //else //{ // ViewBag.ShowBanner = false; //} // Record Category View MerchantTribe.Commerce.SessionManager.CategoryLastId = cat.Bvin; MTApp.CurrentRequestContext.CurrentCategory = cat; // Render Bread Crumbs //var breadRender = new code.TemplateEngine.TagHandlers.BreadCrumbs(); //ViewBag.BreadCrumbsFinal = breadRender.RenderCategory(MTApp, new List<BreadCrumbItem>(), cat); // Render Columns //var columnRender = new code.TemplateEngine.TagHandlers.ContentColumn(); //model.LeftColumn = columnRender.RenderColumnToString("4", MTApp, ViewBag); //model.PreColumn = columnRender.RenderColumnToString(cat.PreContentColumnId, MTApp, ViewBag); //model.PostColumn = columnRender.RenderColumnToString(cat.PostContentColumnId, MTApp, ViewBag); if (cat.TemplateName == "BV Grid") cat.TemplateName = "Grid"; // Safety Check from older versions string viewName = cat.TemplateName.Trim(); if (viewName.Trim().ToLowerInvariant() == "grid") { ThemeManager tm = MTApp.ThemeManager(); string template = tm.GetTemplateFromCurrentTheme("category-grid.html"); ITagProvider tagProvider = new TagProvider(); Processor proc = new Processor(this.MTApp, this.ViewBag, template, tagProvider); StringBuilder output = new StringBuilder(); proc.RenderForDisplay(output); return Content(output.ToString()); } else { return View(viewName, model); } }