public void NoSku_Returns_HttpNotFoundResult() { page.NodeSKUID.Returns(0); var data = Substitute.For <IPageDataContext <SKUTreeNode> >(); data.Page.Returns(page); retiever.Retrieve <SKUTreeNode>().Returns(data); var detail = controller.Detail(); Assert.IsInstanceOf <HttpNotFoundResult>(detail); }
public void SetUp() { Fake().DocumentType <Article>(Article.CLASS_NAME); page = new Article { DocumentName = "Name" }; var dataContext = Substitute.For <IPageDataContext <TreeNode> >(); dataContext.Page.Returns(page); pageDataContextRetriever.Retrieve <TreeNode>().Returns(dataContext); Fake <SiteInfo, SiteInfoProvider>().WithData( new SiteInfo { SiteID = SITE_ID, SiteName = "Site", SitePresentationURL = "https://presentation.com" }); Fake <AttachmentInfo, AttachmentInfoProvider>().WithData( new AttachmentInfo { AttachmentGUID = attachmentGuid, AttachmentDocumentID = page.DocumentID, AttachmentSiteID = SITE_ID }); attachmentUrlRetriever = Service.Resolve <IPageAttachmentUrlRetriever>(); controller = new ImageWidgetController(pageDataContextRetriever, outputCacheDependencies, propertiesRetriever, attachmentUrlRetriever); controller.ControllerContext = ControllerContextMock.GetControllerContext(controller); }
public ActionResult CustomGoodbye() { var goodbye = dataRetriever.Retrieve <Goodbye>().Page; var model = GetGoodbyeViewModel(goodbye.GoodbyeFarewell); return(View(model)); }
private string GetDataUrl(ImageTypeEnum imageType) { if (imageType == ImageTypeEnum.Attachment) { var url = Url.Action(new UrlActionContext { Action = "Upload", Controller = "AttachmentImageUploader", Values = new { pageId = pageDataContextRetriever.Retrieve <TreeNode>().Page.DocumentID } }); return(Url.Kentico().AuthenticateUrlRaw(url, false)); } if (imageType == ImageTypeEnum.MediaFile) { var url = Url.Action(new UrlActionContext { Action = "Upload", Controller = "MediaFileImageUploader", Values = new { libraryName = MEDIA_LIBRARY_NAME }, }); return(Url.Kentico().AuthenticateUrlRaw(url, false)); } return(null); }
public ActionResult Index() { var home = pageDataContextRetriever.Retrieve <Home>().Page; var viewModel = HomeIndexViewModel.GetViewModel(home, pageUrlRetriever, attachmentUrlRetriever); return(View(viewModel)); }
public void SetUp() { var siteService = Substitute.For <ISiteService>(); var site = Substitute.For <ISiteInfo>(); site.SiteName = "site"; siteService.CurrentSite.Returns(site); Service.Use <ISiteService>(siteService); EnsureServiceContainer(); Fake().DocumentType <Article>(Article.CLASS_NAME); article = TreeNode.New <Article>() .With(a => a.Fields.Title = ARTICLE_TITLE) .With(a => a.SetValue("DocumentID", DOCUMENT_ID)); dependencies = Substitute.For <IOutputCacheDependencies>(); dataContextRetriever = Substitute.For <IPageDataContextRetriever>(); var section = Substitute.For <TreeNode>(); section.NodeAliasPath.Returns("/section"); var dataContext = Substitute.For <IPageDataContext <TreeNode> >(); dataContext.Page.Returns(section); dataContextRetriever.Retrieve <TreeNode>().Returns(dataContext); articleRepository = Substitute.For <IArticleRepository>(); pageUrlRetriever = Substitute.For <IPageUrlRetriever>(); attachmentUrlRetriever = Substitute.For <IPageAttachmentUrlRetriever>(); }
public IActionResult Index() { var page = dataRetriever.Retrieve <TreeNode>().Page; // Do some cool stuff here return(new TemplateResult()); }
public ActionResult Detail() { var manufacturer = dataRetriever.Retrieve <Manufacturer>().Page; var manufactutersProducts = productRepository.GetProducts(manufacturer.NodeAliasPath); var model = GetProductsViewModel(manufactutersProducts, manufacturer.NodeAlias); return(View(new ManufacturerDetailViewModel(manufacturer, model))); }
public ActionResult Register(RegistrationModel model) { if (!ValidationHelper.IsEmail(model.Email)) { ModelState.AddModelError("Email", "Invalid email."); return(PartialView("~/Components/Widgets/EventRegistrationFormWidget/_EventRegistrationForm.cshtml", model)); } string result = ""; var page = pageDataContext.Retrieve <Event>().Page; var contact = contactProvider.GetContactForSubscribing(model.Email); if (contact != null) { // Update contact info contact.ContactFirstName = model.FirstName; contact.ContactLastName = model.LastName; contact.Update(); // Check if contact is already registered var existingAttendee = EventAttendeeInfoProvider.ProviderObject.Get() .WhereEquals("ContactID", contact.ContactID) .WhereEquals("NodeID", page.NodeID) .TopN(1) .FirstOrDefault(); if (existingAttendee != null) { result = "You are already registered for this event!"; } else { // Successful registration EventAttendeeInfoProvider.ProviderObject.Set(new EventAttendeeInfo() { ContactID = contact.ContactID, NodeID = page.NodeID, EventAttendeeRegisteredOn = DateTime.Now }); if (model.SubmitAction.Equals("text")) { result = model.ActionRelatedData; } else { return(Redirect(model.ActionRelatedData)); } } } else { result = "Unable to register for event: contact not found."; } return(Content(result)); }
public ActionResult Index() { var section = dataContextRetriever.Retrieve <TreeNode>().Page; var articles = articleRepository.GetArticles(section.NodeAliasPath); outputCacheDependencies.AddDependencyOnPages(articles); return(View(articles.Select(article => ArticleViewModel.GetViewModel(article, pageUrlRetriever, attachmentUrlRetriever)))); }
public IActionResult Index([FromServices] IPageDataContextRetriever dataContextRetriever, [FromServices] IPageUrlRetriever pageUrlRetriever, [FromServices] IPageAttachmentUrlRetriever attachmentUrlRetriever) { var section = dataContextRetriever.Retrieve <TreeNode>().Page; var articles = articleRepository.GetArticles(section.NodeAliasPath); return(View(articles.Select(article => ArticleViewModel.GetViewModel(article, pageUrlRetriever, attachmentUrlRetriever)))); }
public IActionResult Index() { TreeNode page = pageDataContextRetriever.Retrieve <TreeNode>().Page; var model = new PageBuilderModel() { HeadingText = page.DocumentName }; return(View("PageBuilder", model)); }
public PreservedPageBuilderContext GetCurrentContext() { IPageBuilderDataContext PageBuilderContext = pageBuilderDataContextRetriever.Retrieve(); TreeNode Page = pageDataContextRetriever.Retrieve <TreeNode>().Page; return(new PreservedPageBuilderContext() { PageBuilderContext = PageBuilderContext, Page = Page, }); }
public async Task <ActionResult> Index() { var Retriever = PageDataContextRetriever.Retrieve <Home>(); if (Retriever.Page == null) { return(StatusCode(404)); } // Use template if it has one. return(View(Retriever.Page)); }
public ActionResult Index() { var article = pageDataContextRetriver.Retrieve <Article>().Page; if (article == null) { return(HttpNotFound()); } return(View("PageTemplates/_Article", ArticleViewModel.GetViewModel(article, pageUrlRetriever, attachmentUrlRetriever))); }
/// <summary> /// Returns current article. /// </summary> public virtual Article GetCurrent() { var page = pageDataContextRetriever.Retrieve <Article>().Page; return(pageRetriever.Retrieve <Article>( query => query .WhereEquals("NodeID", page.NodeID), cache => cache .Key($"{nameof(ArticleRepository)}|{nameof(GetCurrent)}|{page.NodeID}") .Dependencies((articles, deps) => deps.Pages(articles.First().Fields.RelatedArticles))) .First()); }
private IEnumerable <ProductListItemViewModel> GetHotTipProducts() { var hotTips = hotTipsRepository.GetHotTipProducts(dataRetriever.Retrieve <TreeNode>().Page.NodeAliasPath); return(hotTips.Select( product => new ProductListItemViewModel( product, calculationService.CalculatePrice(product.SKU), publicStatusRepository.GetById(product.SKU.SKUPublicStatusID)?.PublicStatusDisplayName, pageUrlRetriever ) )); }
public ActionResult Index() { var article = pageDataContextRetriver.Retrieve <Article>().Page; if (article == null) { return(HttpNotFound()); } var templateProperties = pageTemplatePropertiesRetriever.Retrieve <ArticleWithSideBarProperties>(); return(View("PageTemplates/_ArticleWithSidebar", ArticleWithSideBarViewModel.GetViewModel(article, templateProperties, pageUrlRetriever, attachmentUrlRetriever))); }
public ActionResult Index() { var section = dataContextRetriever.Retrieve <TreeNode>().Page; var companyCafes = cafeRepository.GetCompanyCafes(section.NodeAliasPath, 4); var partnerCafes = cafeRepository.GetPartnerCafes(section.NodeAliasPath); var model = new CafesIndexViewModel { CompanyCafes = GetCompanyCafesModel(companyCafes), PartnerCafes = GetPartnerCafesModel(partnerCafes) }; return(View(model)); }
public async Task <ActionResult> Index(CancellationToken cancellationToken) { var home = pageDataContextRetriever.Retrieve <Home>().Page; var homeSections = await homeSectionRepository.GetHomeSectionsAsync(home.NodeAliasPath, cancellationToken); var reference = (await referenceRepository.GetReferencesAsync(home.NodeAliasPath, cancellationToken, 1)).FirstOrDefault(); var viewModel = new HomeIndexViewModel { HomeSections = homeSections.Select(section => HomeSectionViewModel.GetViewModel(section, pageUrlRetriever, attachmentUrlRetriever)), Reference = ReferenceViewModel.GetViewModel(reference, attachmentUrlRetriever) }; return(View(viewModel)); }
public async Task <ActionResult> Index(CancellationToken cancellationToken) { var aboutUs = dataRetriever.Retrieve <AboutUs>().Page; var sideStories = await aboutUsRepository.GetSideStoriesAsync(aboutUs.NodeAliasPath, cancellationToken); var reference = (await referenceRepository.GetReferencesAsync($"{aboutUs.NodeAliasPath}/References", cancellationToken, 1)).FirstOrDefault(); AboutUsViewModel mode = new AboutUsViewModel() { Sections = sideStories.Select(s => AboutUsSectionViewModel.GetViewModel(s, pageAttachmentUrlRetriever)).ToList(), Reference = ReferenceViewModel.GetViewModel(reference, pageAttachmentUrlRetriever) }; return(View(mode)); }
/// <summary> /// Retrieves the coupled product from the data context of the current page. /// </summary> private SKUTreeNode GetProduct() { // Gets the page from the data context using IPageDataContextRetriever TreeNode node = pageRetriever.Retrieve <TreeNode>().Page; // If the found page is not a product, returns null if (node == null || !node.IsProduct()) { return(null); } // Loads specific fields of the product's product page type from the database node.MakeComplete(true); // Returns the found page as a product page return(node as SKUTreeNode); }
private IHtmlContent GetBreadcrumbContent(BreadcrumbsWidgetProperties props) { if (props is null) { throw new ArgumentNullException(nameof(props)); } var current = pageDataContextRetriever.Retrieve <TreeNode>().Page; var hierarchy = CacheHelper.Cache((cs) => { ICollection <string> cacheDependencies = new List <string>(); var list = GetHierarchy(current, props.ShowSiteLink, props.ShowContainers, ref cacheDependencies); cs.CacheDependency = CacheHelper.GetCacheDependency(cacheDependencies); return(list); }, new CacheSettings(120, GetCacheKey(current.DocumentID, props.ShowSiteLink, props.ShowContainers))); var header = breadcrumbsRenderer.RenderOpeningTag(props.ContainerClass); var footer = breadcrumbsRenderer.RenderClosingTag(); var sb = new StringBuilder(); foreach (BreadcrumbItem bci in hierarchy) { sb.Append(breadcrumbsRenderer.RenderSeparator(props.Separator)); if (bci.IsCurrentPage) { sb.Append(breadcrumbsRenderer.RenderCurrentPage(bci, props.BreadcrumbItemClass, props.CurrentPageClass)); } else if (bci.IsSiteLink) { sb.Append(breadcrumbsRenderer.RenderSiteLink(bci, props.BreadcrumbItemClass)); } else if (string.IsNullOrEmpty(bci.Url)) { sb.Append(breadcrumbsRenderer.RenderItemWithoutLink(bci, props.BreadcrumbItemClass)); } else { sb.Append(breadcrumbsRenderer.RenderItem(bci, props.BreadcrumbItemClass)); } } // Remove first separator var body = TrimSeparator(sb.ToString().Trim(), props.Separator); return(new HtmlString($"{header}{body}{footer}")); }
public ActionResult Index() { var page = dataRetriever.Retrieve <TreeNode>().Page; var msg = pageTemplatePropertiesRetriever.Retrieve <AdvancedTemplateProperties>().Message; if (string.IsNullOrEmpty(msg)) { // Get some data from an external API msg = $"The letter of the day is {Guid.NewGuid()}"; } var model = new AdvancedTemplateViewModel { Message = msg, Page = page }; return(View("~/AdvancedTemplate/_Template.cshtml", model)); }
public ActionResult Index() { var section = dataContextRetriever.Retrieve <TreeNode>().Page; var companyCafes = cafeRespository.GetCompanyCafes(section.NodeAliasPath, 4); var partnerCafes = cafeRespository.GetPartnerCafes(section.NodeAliasPath); var model = new Models.Cafes.IndexViewModel { CompanyCafes = GetCompanyCafesModel(companyCafes), PartnerCafes = GetPartnerCafesModel(partnerCafes) }; outputCacheDependencies.AddDependencyOnPages(companyCafes); outputCacheDependencies.AddDependencyOnPages(partnerCafes); outputCacheDependencies.AddDependencyOnInfoObjects <CountryInfo>(); outputCacheDependencies.AddDependencyOnInfoObjects <StateInfo>(); return(View(model)); }
public ActionResult Detail() { var product = dataRetriever.Retrieve <SKUTreeNode>().Page; var sku = product.SKU; // If a product is not found or not allowed for sale, redirect to 404 if (!sku?.SKUEnabled ?? true) { return(NotFound()); } // all variants are disabled, redirect to 404 var variants = variantRepository.GetByProductId(product.NodeSKUID); var variantCount = variants.Count(); if (variantCount > 0 && variantCount == variants.Count(i => !i.Variant.SKUEnabled)) { return(NotFound()); } var viewModel = PrepareProductDetailViewModel(product); return(View(viewModel)); }
public ArticleViewModel GetTemplateModel() { var article = pageDataContextRetriver.Retrieve <Article>().Page; return(ArticleViewModel.GetViewModel(article, pageUrlRetriever, attachmentUrlRetriever)); }
public ArticleWithSideBarViewModel GetTemplateModel(ArticleWithSideBarProperties templateProperties) { var article = pageDataContextRetriver.Retrieve <Article>().Page; return(ArticleWithSideBarViewModel.GetViewModel(article, templateProperties, pageUrlRetriever, attachmentUrlRetriever)); }
private DocumentAttachment GetImage(ImageWidgetProperties properties) { var page = pageDataContextRetriever.Retrieve <TreeNode>().Page; return(page?.AllAttachments.FirstOrDefault(x => x.AttachmentGUID == properties.ImageGuid)); }
/// <summary> /// Can override this if you need to implement custom logic, such as a custom route. httpContext.Request.RequestContext.RouteData.Values is often used to grab route data. /// </summary> /// <param name="httpContext">The HttpContext of the request</param> /// <returns>The Tree Node for this request, null acceptable.</returns> private TreeNode GetTreeNode(HttpContextBase httpContext) { TreeNode FoundNode = null; string SiteName = SiteContextSafe().SiteName; string DefaultCulture = SiteContextSafe().DefaultVisitorCulture; // Create GetPage Event Arguments GetPageEventArgs PageArgs = new GetPageEventArgs() { RelativeUrl = GetUrl(httpContext.Request.Url.AbsolutePath, httpContext.Request.ApplicationPath, SiteName), HttpContext = httpContext, SiteName = SiteName, Culture = GetCulture(), DefaultCulture = DefaultCulture }; // Start event, allow user to overwrite FoundPage using (var KenticoAuthorizeGetPageTaskHandler = AuthorizeEvents.GetPage.StartEvent(PageArgs)) { if (PageArgs.FoundPage == null) { IPageDataContextRetriever PageContextRetriever = DependencyResolver.Current.GetService <IPageDataContextRetriever>(); var PageContext = PageContextRetriever.Retrieve <TreeNode>(); // Try using Kentico's Page Builder Data Context if (PageContext != null && PageContext.Page != null) { PageArgs.FoundPage = PageContext.Page; } else { try { // Try to find the page from node alias path, default lookup type PageArgs.FoundPage = CacheHelper.Cache(cs => { TreeNode Page = DocumentHelper.GetDocuments() .Path(PageArgs.RelativeUrl, PathTypeEnum.Single) .Culture(!string.IsNullOrWhiteSpace(PageArgs.Culture) ? PageArgs.Culture : PageArgs.DefaultCulture) .CombineWithAnyCulture() .CombineWithDefaultCulture() .OnSite(PageArgs.SiteName) .Columns("NodeACLID", "NodeID", "DocumentID", "DocumentCulture") // The Fields required for authorization .FirstOrDefault(); if (cs.Cached && Page != null) { cs.CacheDependency = CacheHelper.GetCacheDependency(new string[] { $"nodeid|{Page.NodeID}", $"documentid|{Page.DocumentID}" }); } return(Page); }, new CacheSettings(1440, "KenticoAuthorizeGetTreeNode", PageArgs.RelativeUrl, PageArgs.SiteName)); } catch (Exception ex) { PageArgs.ExceptionOnLookup = ex; } } } else if (PageArgs.FoundPage.NodeACLID <= 0) { PageArgs.ExceptionOnLookup = new NullReferenceException("The TreeNode does not contain the NodeACLID property, which is required for Permission lookup."); } // Finish the event KenticoAuthorizeGetPageTaskHandler.FinishEvent(); // Pass the Found Node back from the args FoundNode = PageArgs.FoundPage; } return(PageArgs.FoundPage); }