//
        // GET: /CustomPage/
        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();
            MTApp.CurrentRequestContext.CurrentCategory = cat;

            ViewBag.Title = cat.MetaTitle;
            if (String.IsNullOrEmpty(ViewBag.Title)) { ViewBag.Title = cat.Name; }
            ViewBag.MetaKeywords = cat.MetaKeywords;
            ViewBag.MetaDescription = cat.MetaDescription;

            // Record View for Analytics
            RecordCategoryView(cat.Bvin);
            
            // Get page.html Template
            ThemeManager tm = MTApp.ThemeManager();
            if (cat.TemplateName == string.Empty) { cat.TemplateName = "default.html"; }
            string template = tm.GetTemplateFromCurrentTheme(true, cat.TemplateName, "default.html"); // Try default in theme before system

            // Fill with data from category, making sure legacy description is used if no area data
            CategoryPageVersion version = cat.GetCurrentVersion();
            if (version.Id == 0)
            {
                // Create Initial Version
                version.PublishedStatus = PublishStatus.Draft;
                version.PageId = cat.Bvin;
                cat.Versions.Add(version);
                MTApp.CatalogServices.Categories.Update(cat);
                version = cat.GetCurrentVersion();
            }
            if (!version.Areas.HasArea("main"))
            {
                version.Areas.SetAreaContent("main", cat.PreTransformDescription);
            }

            ITagProvider tagProvider = new TagProvider();
            Processor proc = new Processor(this.MTApp, this.ViewBag, template, tagProvider);

            // Render Bread Crumbs
            var breadRender = new code.TemplateEngine.TagHandlers.BreadCrumbs();
            ViewBag.BreadCrumbsFinal = breadRender.RenderCategory(MTApp, new List<BreadCrumbItem>(), cat);

            var columnRenderer = new code.TemplateEngine.TagHandlers.ContentColumn();
            ViewBag.SideColumn = columnRenderer.RenderColumnToString("4", MTApp, ViewBag);

            StringBuilder output = new StringBuilder();
            proc.RenderForDisplay(output);
            return Content(output.ToString());            
        }
Пример #2
0
        private void BreadCrumbs(Category cat)
        {
            var renderer = new code.TemplateEngine.TagHandlers.BreadCrumbs();

            ViewBag.BreadCrumbsFinal = renderer.RenderCategory(this.MTApp, new List <Models.BreadCrumbItem>(), cat);
        }
 private void BreadCrumbs(Category cat)
 {
     var renderer = new code.TemplateEngine.TagHandlers.BreadCrumbs();
     ViewBag.BreadCrumbsFinal = renderer.RenderCategory(this.MTApp, new List<Models.BreadCrumbItem>(), cat);
 }
        //
        // GET: /CustomPage/
        public ActionResult Index(string slug)
        {
            Category cat = MTApp.CatalogServices.Categories.FindBySlugForStore(slug,
                                                                               MTApp.CurrentRequestContext.CurrentStore.Id);

            if (cat == null)
            {
                cat = new Category();
            }
            MTApp.CurrentRequestContext.CurrentCategory = cat;

            ViewBag.Title = cat.MetaTitle;
            if (String.IsNullOrEmpty(ViewBag.Title))
            {
                ViewBag.Title = cat.Name;
            }
            ViewBag.MetaKeywords    = cat.MetaKeywords;
            ViewBag.MetaDescription = cat.MetaDescription;

            // Record View for Analytics
            RecordCategoryView(cat.Bvin);

            // Get page.html Template
            ThemeManager tm = MTApp.ThemeManager();

            if (cat.TemplateName == string.Empty)
            {
                cat.TemplateName = "default.html";
            }
            string template = tm.GetTemplateFromCurrentTheme(cat.TemplateName, "default.html"); // Try default in theme before system

            // Fill with data from category, making sure legacy description is used if no area data
            CategoryPageVersion version = cat.GetCurrentVersion();

            if (version.Id == 0)
            {
                // Create Initial Version
                version.PublishedStatus = PublishStatus.Draft;
                version.PageId          = cat.Bvin;
                cat.Versions.Add(version);
                MTApp.CatalogServices.Categories.Update(cat);
                version = cat.GetCurrentVersion();
            }
            if (!version.Areas.HasArea("main"))
            {
                version.Areas.SetAreaContent("main", cat.PreTransformDescription);
            }

            ITagProvider tagProvider = new TagProvider();
            Processor    proc        = new Processor(this.MTApp, this.ViewBag, template, tagProvider);

            // Render Bread Crumbs
            var breadRender = new code.TemplateEngine.TagHandlers.BreadCrumbs();

            ViewBag.BreadCrumbsFinal = breadRender.RenderCategory(MTApp, new List <BreadCrumbItem>(), cat);

            var columnRenderer = new code.TemplateEngine.TagHandlers.ContentColumn();

            ViewBag.SideColumn = columnRenderer.RenderColumnToString("4", MTApp, ViewBag);

            StringBuilder output = new StringBuilder();

            proc.RenderForDisplay(output);
            return(Content(output.ToString()));
        }
Пример #5
0
        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 = cat.Description; // 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);
                        }
                    }
                }
            }

            // Render Bread Crumbs
            var breadRender = new code.TemplateEngine.TagHandlers.BreadCrumbs();
            ViewBag.BreadCrumbsFinal = breadRender.RenderCategory(MTApp, extraCrumbs, cat);

            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);
        }
Пример #6
0
        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     = cat.Description; // 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);
                        }
                    }
                }
            }

            // Render Bread Crumbs
            var breadRender = new code.TemplateEngine.TagHandlers.BreadCrumbs();

            ViewBag.BreadCrumbsFinal = breadRender.RenderCategory(MTApp, extraCrumbs, cat);

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