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