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>");
        }
 public CategoryPage()
 {
     InitializeComponent();
     resources   = ResourceLoader.GetForCurrentView();
     viewModel   = new CategoryPageViewModel(new CategoryService(), new WalletCategoryService(), new RuleService());
     DataContext = viewModel;
 }
 public CategoryPage()
 {
     this.InitializeComponent();
     SizeChanged += CategoryPage_SizeChanged;
     _viewModel   = ServiceLocator.Current.GetInstance <CategoryPageViewModel>();
     DataContext  = _viewModel;
 }
        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>");
        }
示例#5
0
        public async Task <IActionResult> Category(int id, int page = 1)
        {
            var category = (await CategoryService.All()).SingleOrDefault(t => t.ID == id);

            if (category == null)
            {
                return(this.NotFound());
            }

            ViewBag.Title = $"分类:{category.Name}";

            int pageSize  = SettingModel.TopicsPerPage;
            var topicList = await TopicService.QueryByCategory(page, pageSize, category.ID);

            var vm = new CategoryPageViewModel
            {
                Category  = category,
                TopicList = new TopicListModel
                {
                    Data      = topicList.Data,
                    PageIndex = page,
                    PageSize  = pageSize,
                    Total     = topicList.Total
                }
            };

            return(View(vm));
        }
        private async Task <IActionResult> GetCatalogActionResultAsync(HttpContext httpContext)
        {
            Category category = (await httpContext.GetStorage().GetRepository <int, Category, CategoryFilter>().GetAllAsync(
                                     new CategoryFilter(url: httpContext.Request.GetUrl()),
                                     inclusions: new Inclusion <Category>[]
            {
                new Inclusion <Category>(c => c.Name.Localizations),
                new Inclusion <Category>(c => c.Description.Localizations),
                new Inclusion <Category>(c => c.Title.Localizations),
                new Inclusion <Category>(c => c.MetaDescription.Localizations),
                new Inclusion <Category>(c => c.MetaKeywords.Localizations)
            }
                                     )).FirstOrDefault();

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

            CategoryPageViewModel catalogPageViewModel = await new CategoryPageViewModelFactory().CreateAsync(httpContext, category);

            return(new ViewResult()
            {
                ViewName = "CategoryPage",
                ViewData = new ViewDataDictionary(new EmptyModelMetadataProvider(), new ModelStateDictionary())
                {
                    Model = catalogPageViewModel
                }
            });
        }
 private string GetViewName(CategoryPageViewModel model)
 {
     string[] viewNames = { ModuleViewName, model.LocalCategory.TemplateName };
     if (IsConcreteItemModule)
     {
         return(viewNames.FirstOrDefault(view => !string.IsNullOrWhiteSpace(view)));
     }
     return(viewNames.LastOrDefault(view => !string.IsNullOrWhiteSpace(view)));
 }
示例#8
0
        /// <summary>
        /// Initializes a new instance of the <see cref="CategoryTilePage" /> class.
        /// </summary>
        public CategoryTilePage(string selectedCategory)
        {
            InitializeComponent();
            var categoryDataService = App.MockDataService
                ? TypeLocator.Resolve <ICategoryDataService>()
                : DataService.TypeLocator.Resolve <ICategoryDataService>();

            BindingContext = new CategoryPageViewModel(categoryDataService, selectedCategory);
        }
        public CategoryPageViewModel BuildCategoryPageViewModel(int id)
        {
            var categoryPageViewModel = new CategoryPageViewModel();

            categoryPageViewModel.CategoryId = id;
            categoryPageViewModel.TopMenu    = GetCategoryMenu(id);
            categoryPageViewModel.ItemsConverting(_itemSummaryService.GetItemsByCategoryId(id).ToList());

            return(categoryPageViewModel);
        }
示例#10
0
        public async Task <IActionResult> Category(string pageName)
        {
            if (await this.service.PageAlreadyExistsAsync(pageName))
            {
                var page = await this.service.GetPageAsync(pageName);

                var model = new CategoryPageViewModel();

                model.PageName     = page.PageName;
                model.PageCategory = new PageCategoryViewModel();
                var pc = page.Categories.FirstOrDefault();
                model.PageCategory.AllHref         = pc.AllHref;
                model.PageCategory.AllName         = pc.AllName;
                model.PageCategory.CategoryName    = pc.CategoryName;
                model.PageCategory.Picture         = pc.Pictures.FirstOrDefault().Url;
                model.PageCategory.ItemsCategories = new List <CategoryPageItemsCategoryViewModel>();
                model.Boxes = new List <BoxViewModel>();
                foreach (var itemsCategory in pc.ItemsCategories)
                {
                    var itemCategory = new CategoryPageItemsCategoryViewModel
                    {
                        Category = itemsCategory.Category,
                        Items    = new List <PageCategoryItemsViewModel>()
                    };

                    foreach (var item in itemsCategory.Items)
                    {
                        itemCategory.Items.Add(new PageCategoryItemsViewModel {
                            Text = item.Text, Href = item.Href
                        });
                    }


                    model.PageCategory.ItemsCategories.Add(itemCategory);
                }

                foreach (var item in page.ColorfulBoxes)
                {
                    model.Boxes.Add(new BoxViewModel
                    {
                        Text  = item.Text,
                        Color = item.Color,
                        Href  = item.Href
                    });
                }

                return(this.View(model));
            }


            return(this.RedirectToAction("Error", "Home"));
        }
        private void RegisterSocialFunctionality(CategoryPageViewModel model)
        {
            ViewBag.UseFaceBook = HccApp.CurrentStore.Settings.FaceBook.UseFaceBook;

            if (!string.IsNullOrWhiteSpace(model.LocalCategory.Bvin))
            {
                var socialService = HccApp.SocialService;

                model.SocialItem = socialService.GetCategorySocialItem(model.LocalCategory);

                RenderFacebookMetaTags(model);
            }
        }
示例#12
0
        public async Task <IActionResult> Category([FromRoute] string id, int page = 1)
        {
            var genre = await this.genreRepository.GetByIdAsync(id);

            var genreViewModel = this.objectMapper.Map <Genre, GenreViewModel>(genre);
            var books          = await this.GetBooksByCategoryPage(id, page);

            var categoryViewModel = new CategoryPageViewModel {
                Genre = genreViewModel, Books = books
            };

            return(View(categoryViewModel));
        }
示例#13
0
        public async Task <IActionResult> BooksByCategoryList([FromRoute] string id, [FromQuery] int page)
        {
            var genre = await this.genreRepository.GetByIdAsync(id);

            var genreViewModel = this.objectMapper.Map <Genre, GenreViewModel>(genre);
            var books          = await this.GetBooksByCategoryPage(id, page);

            var categoryViewModel = new CategoryPageViewModel {
                Genre = genreViewModel, Books = books
            };

            return(PartialView("Book/_BookByCategoryPagePartial", categoryViewModel));
        }
示例#14
0
        public async Task <IActionResult> Index(string id, int?page)
        {
            var currentUser = await this.userManager.GetUserAsync(this.User);

            var pageNumber = page ?? 1;
            var posts      = await this.categoryService.ExtractPostsByCategoryId(id, currentUser);

            CategoryPageViewModel model = new CategoryPageViewModel
            {
                Category = await this.categoryService.ExtractCategoryById(id),
                Posts    = posts.ToPagedList(pageNumber, GlobalConstants.BlogPostsOnPage),
            };

            return(this.View(model));
        }
        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            // The name of the group is passed in via the event args, which we can use to construct a view model.
            var category = (CategoryKind)Enum.Parse(typeof(CategoryKind), (string)e.Parameter);

            ViewModel = CategoryPageViewModel.CreateFromCategoryKind(
                category,
                App.Current.Logger,
                App.Current.NavigationService,
                App.Current.ThreadDispatcher,
                App.Current.RegistryReadService,
                App.Current.RegistryWriteService);

            SettingsGroupNavigationView.ViewModel = ViewModel.Navigation;
        }
        public IActionResult Index(int category_id)
        {
            CategoryPageViewModel model = new CategoryPageViewModel()
            {
                Categories = _categoryLogic.GetAll().Select(c => new CategoryViewModel {
                    Id = c.CategoryId, Name = c.Name
                }).ToList(),
                Posts = _postLogic.GetAllPostsByCategory(category_id).Select(c => new PostViewModel {
                    Title = c.Title, Content = c.Content, PostId = c.PostId, AuraAmount = c.Aura.Amount, PostDate = c.PostDate, UserName = c.User.Name, CategoryName = c.Category.Name
                }).ToList(),
                CategoryName = _categoryLogic.GetCategoryById(category_id).Name,
            };

            return(View(model));
        }
        private void RegisterSocialFunctionality(CategoryPageViewModel model)
        {
            ViewBag.UseFaceBook = HccApp.CurrentStore.Settings.FaceBook.UseFaceBook;

            if (!string.IsNullOrWhiteSpace(model.LocalCategory.Bvin))
            {
                var socialService = HccApp.SocialService;
                socialService.SaveCategoryToJournal(model.LocalCategory);

                // Obsolete in 3.0 - may need to consider adding back in a future release, if integrating with Evoq Social again
                //model.SocialItem = socialService.GetCategorySocialItem(model.LocalCategory);

                RenderFacebookMetaTags(model);
            }
        }
 public MainWindowViewModel(
     ExercisesPageViewModel exercisesPage,
     MusclesPageViewModel musclesPage,
     TrainingLogPageViewModel trainingLogPage,
     ProgressPageViewModel progressPage,
     UserPreferencesPageViewModel userPreferencesPage,
     CategoryPageViewModel categoryPage
     )
 {
     ExercisesPage       = exercisesPage;
     MusclesPage         = musclesPage;
     TrainingLogPage     = trainingLogPage;
     ProgressPage        = progressPage;
     UserPreferencesPage = userPreferencesPage;
     CategoryPage        = categoryPage;
 }
示例#19
0
        public async Task FetchOnce()
        {
            // When not in cache, make sure it is fetched and updated in the cache.
            var ds = new dummyScreen();
            var ms = new myMeetingListRef();
            var dc = new dummyCache();
            var t  = new CategoryPageViewModel(ds, ms, dc);

            await TestUtils.SpinWait(() => dc.NumberTimesInsertCalled >= 1, 1000);

            var item = await dc.GetObject <IMeetingRefExtended[]>(ms.UniqueString);

            Assert.IsNotNull(item);
            Assert.AreEqual(2, item.Length);
            Assert.AreEqual("meeting1", item[0].Title);
            Assert.AreEqual("meeting2", item[1].Title);
        }
示例#20
0
        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));
        }
示例#21
0
        public ViewResult Category(string category)
        {
            int pageIndex = PageIndex.HasValue ? PageIndex.Value : 1;
            int pageSize  = 24;

            if (WebContext.Current.RecipeCategories.ContainsKey(category))
            {
                CategoryDto categoryDto             = WebContext.Current.RecipeCategories[category];
                IEnumerable <SubjectInfoDto> result = Service.GetSubjectsByCategory(categoryDto.Id, CmsRegister.RECIPE_TEMPLATE_ID, pageIndex, pageSize, CurrentLanguage.Id);
                CategoryPageViewModel        model  = new CategoryPageViewModel(categoryDto.CategoryText, result, HttpContext.Request.Url, pageIndex, pageSize, CurrentLanguage);
                model.Populate();

                return(View(model));
            }
            else
            {
                return(null);
            }
        }
        private void LoadSubCategories(CategoryPageViewModel model)
        {
            model.SubCategories = new List <SingleCategoryViewModel>();
            var children = HccApp.CatalogServices.Categories.FindVisibleChildren(model.LocalCategory.Bvin);

            foreach (var snap in children)
            {
                var cat = new SingleCategoryViewModel
                {
                    LinkUrl       = UrlRewriter.BuildUrlForCategory(snap),
                    IconUrl       = DiskStorage.CategoryIconUrl(HccApp, snap.Bvin, snap.ImageUrl, Request.IsSecureConnection),
                    AltText       = snap.Name,
                    Name          = snap.Name,
                    LocalCategory = snap
                };

                model.SubCategories.Add(cat);
            }
        }
示例#23
0
        public ActionResult Index(Domain.Category currentContent)
        {
            var breadcrumb = _breadcrumbService.GenerateBreadCrumb(currentContent);
            var categories = _contentLoader.GetChildren <Domain.Category>(currentContent.ContentLink)
                             .ToList();

            if (categories.Any())
            {
                var categoryItems = categories
                                    .Select(x => new CategoryItemViewModel(x))
                                    .ToList();

                var categoryViewModel = new CategoryPageViewModel(currentContent)
                {
                    Categories = categoryItems
                };

                categoryViewModel.Breadcrumb = breadcrumb;
                //TODO: Add view path
                return(View("~/Features/Catalog/Category/Presentation/Views/Index.cshtml",
                            categoryViewModel));
            }

            var products = _contentLoader.GetChildren <GenericProduct>(currentContent.ContentLink)
                           .Select(_categoryFactory.BuildProductItem)
                           .Where(x => x.MinPrice != 0)
                           .ToList();



            var viewModel = new CategoryPageViewModel(currentContent)
            {
                Products = products
            };

            viewModel.Breadcrumb = breadcrumb;


            return(View("~/Features/Catalog/Category/Presentation/Views/Index.cshtml",
                        viewModel));
        }
        private void RenderFacebookMetaTags(CategoryPageViewModel model)
        {
            if (ViewBag.UseFaceBook)
            {
                var faceBookAdmins = HccApp.CurrentStore.Settings.FaceBook.Admins;
                var faceBookAppId  = HccApp.CurrentStore.Settings.FaceBook.AppId;

                var sb = new StringBuilder();

                sb.Append("<!-- FaceBook OpenGraph Tags -->");
                sb.AppendFormat("<meta property=\"og:title\" content=\"{0}\"/>", PageTitle);
                sb.Append("<meta property=\"og:type\" content=\"product\"/>");
                sb.AppendFormat("<meta property=\"og:url\" content=\"{0}\"/>", ViewBag.CurrentUrl);
                sb.AppendFormat("<meta property=\"og:image\" content=\"{0}\"/>", model.LocalCategory.ImageUrl);
                sb.AppendFormat("<meta property=\"og:site_name\" content=\"{0}\" />", ViewBag.StoreName);
                sb.AppendFormat("<meta property=\"fb:admins\" content=\"{0}\" />", faceBookAdmins);
                sb.AppendFormat("<meta property=\"fb:app_id\" content=\"{0}\" />", faceBookAppId);

                RenderToHead("FaceBookMetaTags", sb.ToString());
            }
        }
        private void LoadProducts(CategoryPageViewModel model, int productPageSize)
        {
            var cat        = model.LocalCategory;
            var pageNumber = GetPageNumber();
            var pageSize   = productPageSize <= 0 ? 9 : productPageSize;
            var totalItems = 0;

            var sortOrder = GetSort(cat);
            var products  = HccApp.CatalogServices.
                            FindProductForCategoryWithSort(cat.Bvin, sortOrder, false, pageNumber, pageSize, ref totalItems);

            model.Products = products.Select(p => new SingleProductViewModel(p, HccApp)).ToList();

            model.PagerData.PageSize       = pageSize;
            model.PagerData.TotalItems     = totalItems;
            model.PagerData.CurrentPage    = pageNumber;
            model.PagerData.PagerUrlFormat = BuildUrlForCategory(cat, HttpUtility.HtmlEncode("{0}"),
                                                                 new { sort = (int)sortOrder });
            model.PagerData.PagerUrlFormatFirst = BuildUrlForCategory(cat, null, new { sort = (int)sortOrder });

            model.SortSelectList = LoadSortSelectList(cat, sortOrder);
        }
        private void RenderFacebookMetaTags(CategoryPageViewModel model)
        {
            if (ViewBag.UseFaceBook)
            {
                var faceBookAdmins = HccApp.CurrentStore.Settings.FaceBook.Admins;
                var faceBookAppId  = HccApp.CurrentStore.Settings.FaceBook.AppId;
                var canonicalUrl   = HccUrlBuilder.RouteHccUrl(HccRoute.Category, new { slug = model.LocalCategory.RewriteUrl.ToLower() });

                var sb = new StringBuilder();

                sb.AppendFormat(Constants.TAG_CANONICAL, canonicalUrl);
                sb.AppendFormat(Constants.TAG_OGTITLE, PageTitle);
                sb.Append(Constants.TAG_OGTYPE);
                sb.AppendFormat(Constants.TAG_OGURL, canonicalUrl);
                sb.AppendFormat(Constants.TAG_OGIMAGE, model.LocalCategory.ImageUrl);
                sb.AppendFormat(Constants.TAG_OGSITENAME, ViewBag.StoreName);
                sb.AppendFormat(Constants.TAG_OGFBADMIN, faceBookAdmins);
                sb.AppendFormat(Constants.TAG_OGFBAPPID, faceBookAppId);

                RenderToHead("FaceBookMetaTags", sb.ToString());
            }
        }
示例#27
0
 public CategoryPage(CategoryPageViewModel categoryPageViewModel)
 {
     InitializeComponent();
     _categoryPageViewModel = categoryPageViewModel;
     this.DataContext       = categoryPageViewModel;
 }
 private void IndexSetup(CategoryPageViewModel model)
 {
     SetViewBugs(model.LocalCategory);
     SetPageMetaData(model.LocalCategory);
     RegisterSocialFunctionality(model);
 }
示例#29
0
 public CreateCategoryPage(CategoryPageViewModel vM)
 {
     InitializeComponent();
     BindingContext = _vM = vM;
 }
示例#30
0
 public void CTor()
 {
     var ds = new dummyScreen();
     var ms = new myMeetingListRef();
     var t  = new CategoryPageViewModel(ds, ms);
 }