示例#1
0
        public override THeaderViewModel CreateHeaderViewModel <THeaderViewModel>(IContent currentContent, CmsHomePage homePage)
        {
            var demoHomePage = homePage as DemoHomePage;

            if (demoHomePage == null)
            {
                return(null);
            }
            var contact      = _customerService.GetCurrentContact();
            var isBookmarked = IsBookmarked(currentContent);
            var viewModel    = CreateViewModel <DemoHeaderViewModel>(currentContent, demoHomePage, contact, isBookmarked);

            AddCommerceComponents(contact, viewModel);
            AddAnonymousComponents(demoHomePage, viewModel);
            AddMarketViewModel(currentContent, viewModel);
            AddMyAccountMenu(demoHomePage, viewModel);
            viewModel.ShowCommerceControls = demoHomePage.ShowCommerceHeaderComponents;
            viewModel.DemoUsers            = GetDemoUsers(demoHomePage.ShowCommerceHeaderComponents);
            return(viewModel as THeaderViewModel);
        }
        public ActionResult GetHeader(CmsHomePage homePage)
        {
            var content = _contentRouteHelper.Content;

            return(PartialView("_Header", _headerViewModelFactory.CreateHeaderViewModel <HeaderViewModel>(content, homePage)));
        }
        public THeaderViewModel CreateHeaderViewModel <THeaderViewModel>(IContent currentContent, CmsHomePage homePage)
            where THeaderViewModel : HeaderViewModel, new()
        {
            var menuItems    = new List <MenuItemViewModel>();
            var homeLanguage = homePage.Language.DisplayName;

            menuItems = homePage.MainMenu?.FilteredItems.Select(x =>
            {
                var itemCached = CacheManager.Get(x.ContentLink.ID + homeLanguage + ":" + MenuCacheKey) as MenuItemViewModel;
                if (itemCached != null && !PageEditing.PageIsInEditMode)
                {
                    return(itemCached);
                }
                else
                {
                    var content = _contentLoader.Get <IContent>(x.ContentLink);
                    MenuItemBlock _;
                    MenuItemViewModel menuItem;
                    if (content is MenuItemBlock)
                    {
                        _        = content as MenuItemBlock;
                        menuItem = new MenuItemViewModel
                        {
                            Name       = _.Name,
                            ButtonText = _.ButtonText,
                            TeaserText = _.TeaserText,
                            Uri        = _.Link == null ? string.Empty : _urlResolver.GetUrl(new UrlBuilder(_.Link.ToString()), new UrlResolverArguments()
                            {
                                ContextMode = ContextMode.Default
                            }),
                            ImageUrl   = !ContentReference.IsNullOrEmpty(_.MenuImage) ? _urlResolver.GetUrl(_.MenuImage) : "",
                            ButtonLink = _.ButtonLink?.Host + _.ButtonLink?.PathAndQuery,
                            ChildLinks = _.ChildItems?.ToList() ?? new List <GroupLinkCollection>()
                        };
                    }
                    else
                    {
                        menuItem = new MenuItemViewModel
                        {
                            Name       = content.Name,
                            Uri        = _urlResolver.GetUrl(content.ContentLink),
                            ChildLinks = new List <GroupLinkCollection>()
                        };
                    }

                    if (!PageEditing.PageIsInEditMode)
                    {
                        var keyDependency = new List <string>
                        {
                            _contentCacheKeyCreator.CreateCommonCacheKey(homePage.ContentLink), // If The HomePage updates menu (remove MenuItems)
                            _contentCacheKeyCreator.CreateCommonCacheKey(x.ContentLink)
                        };

                        var eviction = new CacheEvictionPolicy(TimeSpan.FromDays(1), CacheTimeoutType.Sliding, keyDependency);
                        CacheManager.Insert(x.ContentLink.ID + homeLanguage + ":" + MenuCacheKey, menuItem, eviction);
                    }
                    return(menuItem);
                }
            }).ToList();

            return(new THeaderViewModel
            {
                HomePage = homePage,
                CurrentContentLink = currentContent?.ContentLink,
                CurrentContentGuid = currentContent?.ContentGuid ?? Guid.Empty,
                UserLinks = new LinkItemCollection(),
                Name = PrincipalInfo.Current.Name,
                MenuItems = menuItems,
                IsReadonlyMode = _databaseMode.DatabaseMode == DatabaseMode.ReadOnly
            });
        }
示例#4
0
        public virtual THeaderViewModel CreateHeaderViewModel <THeaderViewModel>(IContent currentContent, CmsHomePage homePage)
            where THeaderViewModel : HeaderViewModel, new()
        {
            var commerceHomePage = homePage as CommerceHomePage;

            if (commerceHomePage == null)
            {
                return(null);
            }
            var contact      = _customerService.GetCurrentContact();
            var isBookmarked = IsBookmarked(currentContent);
            var viewModel    = CreateViewModel <CommerceHeaderViewModel>(currentContent, commerceHomePage, contact, isBookmarked);

            AddCommerceComponents(contact, viewModel);
            AddAnonymousComponents(commerceHomePage, viewModel);
            AddMarketViewModel(currentContent, viewModel);
            AddMyAccountMenu(commerceHomePage, viewModel);
            return(viewModel as THeaderViewModel);
        }
        public THeaderViewModel CreateHeaderViewModel <THeaderViewModel>(IContent currentContent, CmsHomePage homePage)
            where THeaderViewModel : HeaderViewModel, new()
        {
            var menuItems  = new List <MenuItemViewModel>();
            var menuCached = CacheManager.Get(homePage.ContentLink.ID + MenuCacheKey) as List <MenuItemViewModel>;

            if (menuCached != null)
            {
                menuItems = menuCached;
            }
            else
            {
                var menuItemBlocks = homePage.MainMenu?.FilteredItems.GetContentItems <MenuItemBlock>();
                menuItems = menuItemBlocks?
                            .Select(_ => new MenuItemViewModel
                {
                    Name       = _.Name,
                    ButtonText = _.ButtonText,
                    TeaserText = _.TeaserText,
                    Uri        = _.Link == null ? string.Empty : _urlResolver.GetUrl(new UrlBuilder(_.Link.ToString()), new UrlResolverArguments()
                    {
                        ContextMode = ContextMode.Default
                    }),
                    ImageUrl   = !ContentReference.IsNullOrEmpty(_.MenuImage) ? _urlResolver.GetUrl(_.MenuImage) : "",
                    ButtonLink = _.ButtonLink?.Host + _.ButtonLink?.PathAndQuery,
                    ChildLinks = _.ChildItems?.ToList() ?? new List <GroupLinkCollection>()
                }).ToList() ?? new List <MenuItemViewModel>();

                var keyDependency = new List <string>();
                keyDependency.Add(_contentCacheKeyCreator.CreateCommonCacheKey(homePage.ContentLink)); // If The HomePage updates menu (remove MenuItems)

                foreach (var m in menuItemBlocks)
                {
                    keyDependency.Add(_contentCacheKeyCreator.CreateCommonCacheKey((m as IContent).ContentLink));
                }

                var eviction = new CacheEvictionPolicy(TimeSpan.FromDays(1), CacheTimeoutType.Sliding, keyDependency);
                CacheManager.Insert(homePage.ContentLink.ID + MenuCacheKey, menuItems, eviction);
            }

            return(new THeaderViewModel
            {
                HomePage = homePage,
                CurrentContentLink = currentContent?.ContentLink,
                CurrentContentGuid = currentContent?.ContentGuid ?? Guid.Empty,
                UserLinks = new LinkItemCollection(),
                Name = PrincipalInfo.Current.Name,
                MenuItems = menuItems,
                MobileNavigation = homePage.MobileNavigationPages,
            });
        }