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);
            }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        public ActionResult CustomGoodbye()
        {
            var goodbye = dataRetriever.Retrieve <Goodbye>().Page;
            var model   = GetGoodbyeViewModel(goodbye.GoodbyeFarewell);

            return(View(model));
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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>();
        }
Ejemplo n.º 7
0
        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)));
        }
Ejemplo n.º 9
0
        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));
        }
Ejemplo n.º 10
0
        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))));
        }
Ejemplo n.º 11
0
        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))));
        }
Ejemplo n.º 12
0
        public IActionResult Index()
        {
            TreeNode page  = pageDataContextRetriever.Retrieve <TreeNode>().Page;
            var      model = new PageBuilderModel()
            {
                HeadingText = page.DocumentName
            };

            return(View("PageBuilder", model));
        }
Ejemplo n.º 13
0
        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)));
        }
Ejemplo n.º 16
0
        /// <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());
        }
Ejemplo n.º 17
0
        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
                           )
                       ));
        }
Ejemplo n.º 18
0
        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)));
        }
Ejemplo n.º 19
0
        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));
        }
Ejemplo n.º 20
0
        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));
        }
Ejemplo n.º 21
0
        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));
        }
Ejemplo n.º 22
0
        /// <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);
        }
Ejemplo n.º 23
0
        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));
        }
Ejemplo n.º 26
0
        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));
        }
Ejemplo n.º 27
0
        public ArticleViewModel GetTemplateModel()
        {
            var article = pageDataContextRetriver.Retrieve <Article>().Page;

            return(ArticleViewModel.GetViewModel(article, pageUrlRetriever, attachmentUrlRetriever));
        }
Ejemplo n.º 28
0
        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);
        }