Пример #1
0
 public Page_Context(ControllerContext controllerContext, PageRequestContext pageRequestContext)
 {
     this.ControllerContext = controllerContext;
     this.PageRequestContext = pageRequestContext;
     Styles = new List<IHtmlString>();
     Scripts = new List<IHtmlString>();
 }
Пример #2
0
        public virtual ActionResult Design(string pageName, string layout, bool?draft, int?version)
        {
            var page = new Page(Site, "DesignPage")
            {
                IsDummy = false, Layout = layout, EnableTheming = true, EnableScript = true
            };

            if (!string.IsNullOrEmpty(pageName))
            {
                page = PageHelper.Parse(Site, pageName);
            }

            if (draft.HasValue && draft.Value == true)
            {
                page = ServiceFactory.PageManager.PageProvider.GetDraft(page);
            }
            if (version.HasValue)
            {
                page = Kooboo.CMS.Sites.Versioning.VersionManager.GetVersion(page, version.Value);
            }

            // new context
            var requestContext = new PageRequestContext(this.ControllerContext, Site, page, CMS.Sites.Web.FrontRequestChannel.Design, string.Empty);

            // init context
            Page_Context.Current.InitContext(requestContext, ControllerContext);

            // ret
            return(ViewPage());
        }
Пример #3
0
        public ProxyRenderContext(ControllerContext controllerContext,
            PageRequestContext pageRequestContext, ProxyPosition proxyPosition, string requestPath)
        {
            this.ControllerContext = controllerContext;
            this.PageRequestContext = pageRequestContext;
            this.ProxyPosition = proxyPosition;

            if (string.IsNullOrEmpty(requestPath) && PageRequestContext != null)
            {
                requestPath = pageRequestContext.ModuleUrlContext.GetModuleUrl(proxyPosition.PagePositionId);
            }

            if (string.IsNullOrEmpty(requestPath))
            {
                requestPath = proxyPosition.RequestPath;
            }
            requestPath = requestPath.Trim('~').Trim();

            RequestUri = new Uri(proxyPosition.HostUri, requestPath);

            var httpMethod = controllerContext.HttpContext.Request.HttpMethod;
            if (httpMethod.ToUpper() == "POST" && pageRequestContext != null)
            {
                var postModule = pageRequestContext.AllQueryString[Kooboo.CMS.Sites.View.ModuleUrlContext.PostModuleParameter];
                if (postModule != proxyPosition.PagePositionId)
                {
                    httpMethod = "GET";
                }
            }
            HttpMethod = httpMethod;
        }
Пример #4
0
        public ProxyRenderContext(ControllerContext controllerContext,
                                  PageRequestContext pageRequestContext, ProxyPosition proxyPosition, string requestPath)
        {
            this.ControllerContext  = controllerContext;
            this.PageRequestContext = pageRequestContext;
            this.ProxyPosition      = proxyPosition;


            if (string.IsNullOrEmpty(requestPath) && PageRequestContext != null)
            {
                requestPath = pageRequestContext.ModuleUrlContext.GetModuleUrl(proxyPosition.PagePositionId);
            }

            if (string.IsNullOrEmpty(requestPath))
            {
                requestPath = proxyPosition.RequestPath;
            }
            requestPath = requestPath.Trim('~').Trim();

            RequestUri = new Uri(proxyPosition.HostUri, requestPath);

            var httpMethod = controllerContext.HttpContext.Request.HttpMethod;

            if (httpMethod.ToUpper() == "POST" && pageRequestContext != null)
            {
                var postModule = pageRequestContext.AllQueryString[Kooboo.CMS.Sites.View.ModuleUrlContext.PostModuleParameter];
                if (postModule != proxyPosition.PagePositionId)
                {
                    httpMethod = "GET";
                }
            }
            HttpMethod = httpMethod;
        }
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            base.OnActionExecuting(filterContext);
            var controllerContext = filterContext.Controller.ControllerContext;
            //
            var siteName = controllerContext.RequestContext.GetRequestValue("siteName");
            var site     = new Kooboo.CMS.Sites.Models.Site(siteName);

            Kooboo.CMS.Sites.Models.Site.Current = site;
            //
            var pageName = controllerContext.RequestContext.GetRequestValue("pageName");

            Kooboo.CMS.Sites.Models.Page page = null;
            if (string.IsNullOrEmpty(pageName))
            {
                page = Kooboo.CMS.Sites.Services.ServiceFactory.PageManager.All(site, string.Empty).First();
            }
            else
            {
                page = new Kooboo.CMS.Sites.Models.Page(site, pageName).LastVersion();
            }
            //
            var channel            = Kooboo.CMS.Sites.Web.FrontRequestChannel.Unknown;
            var pageRequestContext = new PageRequestContext(controllerContext, site, page, channel, "");

            Page_Context.Current.InitContext(pageRequestContext, controllerContext);
        }
        public static Page TempPage(this PageRequestContext pageRequestContext)
        {
            var tempPage = pageRequestContext.ControllerContext.Controller.ViewData["TempPage"] as Page;

            if (tempPage == null)
            {
                tempPage = pageRequestContext.Page.Copy();
                pageRequestContext.ControllerContext.Controller.ViewData["TempPage"] = tempPage;
            }

            return(tempPage);
        }
Пример #7
0
        public static void InitPageContext(ControllerContext controllerContext)
        {
            if (Page_Context.Current.PageRequestContext == null)
            {
                var site = Site.Current;
                var page = ServiceFactory.PageManager.GetDefaultPage(site);
                var pageRequestContext = new PageRequestContext(
                    controllerContext,
                    site,
                    page,
                    site.FrontRequestChannel(),
                    "/");

                Page_Context.Current.InitContext(pageRequestContext, controllerContext);
                Page_Context.Current.DisableInlineEditing = true;
            }
        }
Пример #8
0
        public virtual ActionResult ViewEntry(string viewName)
        {
            viewName = Server.UrlDecode(viewName);
            var viewPosition = new ViewPosition()
            {
                LayoutPositionId = Kooboo.UniqueIdGenerator.GetInstance().GetBase32UniqueId(5),
                ViewName         = viewName,
                PagePositionId   = Kooboo.UniqueIdGenerator.GetInstance().GetBase32UniqueId(5)
            };
            //pageUrl: product/detail/product1
            var rawPage = new Page(Site, "____VisitViewPage_____")
            {
                IsDummy = false
            };

            rawPage.PagePositions.Add(viewPosition);

            var requestUrl = "/";

            var pageRequestContext = new PageRequestContext(this.ControllerContext, FrontHttpRequest.RawSite, FrontHttpRequest.Site, rawPage, rawPage,
                                                            FrontHttpRequest.RequestChannel, requestUrl);

            Page_Context.Current.InitContext(pageRequestContext, ControllerContext);

            var actionResult = Page_Context.Current.ExecutePlugins();

            if (actionResult != null)
            {
                return(actionResult);
            }

            Page_Context.Current.ExecuteDataRules();

            var viewMock = new ViewMock()
            {
                ViewData = new ViewDataDictionary(ViewData)
            };
            ViewContext viewContext = new ViewContext(this.ControllerContext, viewMock, ViewData, this.TempData, Response.Output);

            HtmlHelper html = new HtmlHelper(viewContext, viewMock);

            return(Content(html.FrontHtml().RenderView(viewPosition).ToString()));
        }
Пример #9
0
 public Task PageRequestAsync(PageRequestContext context)
 {
     return(Task.CompletedTask);
 }
Пример #10
0
 public Page_Context CreatePageContext(System.Web.Mvc.ControllerContext controllerContext, SiteMappedContext siteMappedContext, PageMappedContext pageMappedContext)
 {
     var pageRequestContext = new PageRequestContext(controllerContext, siteMappedContext, pageMappedContext);
     return new Page_Context(controllerContext, pageRequestContext);
 }
Пример #11
0
 public RouteValueProvider(PageRequestContext pageRequestContext)
     : base(pageRequestContext.RouteValues)
 {
 }
Пример #12
0
        public Page_Context CreatePageContext(System.Web.Mvc.ControllerContext controllerContext, SiteMappedContext siteMappedContext, PageMappedContext pageMappedContext)
        {
            var pageRequestContext = new PageRequestContext(controllerContext, siteMappedContext, pageMappedContext);

            return(new Page_Context(controllerContext, pageRequestContext));
        }
Пример #13
0
        protected override async Task OnPageRequestAsync(PageRequestContext context)
        {
            PageService = HttpContext.RequestServices.GetRequiredService <IPageService>();

            if (Request.Query.TryGetValue("editId", out string editIdValue))
            {
                if (!Guid.TryParse(editIdValue, out Guid editId))
                {
                    context.Result = BadRequest();
                    return;
                }

                var pageEditingService = HttpContext.RequestServices.GetRequiredService <IPageContentService>();
                editSession = await pageEditingService.FindEditByIdAsync(editId);

                if (editSession == null)
                {
                    context.Result = NotFound();
                    return;
                }

                page = await PageService.FindPageByIdAsync(editSession.PageId);

                if (page == null)
                {
                    context.Result = NotFound();
                    return;
                }

                var accessProvider = HttpContext.RequestServices.GetRequiredService <Identity.IAccessProvider>();

                if (!await accessProvider.CheckAccessAsync() || await accessProvider.GetUserIdAsync() != editSession.UserId)
                {
                    var pageLinkGenerator = HttpContext.RequestServices.GetRequiredService <IPageLinkGenerator>();

                    context.Result = RedirectPermanent(await pageLinkGenerator.GetPathAsync(page));
                    return;
                }
            }
            else
            {
                var routeData = RouteData;

                var pagePath = string.Empty;
                if (routeData.Values.TryGetValue("url", out object urlValue) && urlValue != null)
                {
                    pagePath = (string)urlValue;
                }

                var url = await PageService.FindPageUrlAsync(pagePath);

                if (url == null)
                {
                    context.Result = NotFound();
                    return;
                }

                if (url.PageId.HasValue)
                {
                    page = await PageService.FindPageByIdAsync(url.PageId.Value);

                    if (page == null)
                    {
                        context.Result = NotFound();
                        return;
                    }

                    if (!page.IsPublished)
                    {
                        var accessProvider = HttpContext.RequestServices.GetRequiredService <Identity.IAccessProvider>();
                        if (!await accessProvider.CheckAccessAsync())
                        {
                            context.Result = NotFound();
                            return;
                        }
                    }
                }
                else
                {
                    var pageLinkGenerator = HttpContext.RequestServices.GetRequiredService <IPageLinkGenerator>();
                    var redirectUrl       = await pageLinkGenerator.GetPathAsync(url.Redirect.Path);

                    if (url.Redirect.IsPermament)
                    {
                        context.Result = RedirectPermanent(redirectUrl);
                    }
                    else
                    {
                        context.Result = Redirect(redirectUrl);
                    }
                    return;
                }
            }

            PageMetadata = await PageService.GetPageTypeAsync(page, HttpContext.RequestAborted);

            pageSeo = await PageService.GetPageSeoOptionsAsync(page, HttpContext.RequestAborted);

            if (editSession != null)
            {
                var pageEditingService = HttpContext.RequestServices.GetRequiredService <IPageContentService>();
                PageContent = await pageEditingService.GetContentAsync(editSession, HttpContext.RequestAborted);
            }
            else
            {
                PageContent = await PageService.GetPageContentAsync(page, HttpContext.RequestAborted);
            }
            if (PageContent == null)
            {
                throw new InvalidOperationException();
            }

            ContentContext = new ContentContext(page, PageContent, HttpContext.RequestServices, editSession != null);

            Status       = page.IsPublished ? Models.PageStatus.Published : Models.PageStatus.Draft;
            ParentPageId = await PageService.GetParentPageIdAsync(page, HttpContext.RequestAborted);
        }
Пример #14
0
 public virtual void OnResolvedPage(ControllerContext controllerContext, PageRequestContext pageRequestContext)
 {
 }
Пример #15
0
 internal static void OnResolvedPage(ControllerContext controllerContext, PageRequestContext pageRequestContext)
 {
     ExecuteModules((module) => module.OnResolvedPage(controllerContext, pageRequestContext));
 }
Пример #16
0
        protected override Task OnPageRequestAsync(PageRequestContext context)
        {
            SetOpenGraph(Url.ContentLink("~/images/banner.jpg"), Title, Description);

            return(base.OnPageRequestAsync(context));
        }