Esempio n. 1
0
        public GridControlGraphType()
        {
            //TODO: Replace with HtmlNodeGraphType?
            Name = "GridControl";
            Field <GridValueGraphType>(
                "value",
                resolve: context =>
            {
                var userContext = (UmbracoGraphQLContext)context.UserContext;
                var routeData   = new RouteData();
                routeData.Values["controller"] = "RenderMvc";

                using (var controller = new RenderMvcController())
                {
                    var controllerContext = new ControllerContext(userContext.UmbracoContext.HttpContext,
                                                                  routeData,
                                                                  controller);
                    var result = ViewEngines.Engines.FindPartialView(controllerContext, "Grid/Editors/Base");
                    using (var writer = new StringWriter())
                    {
                        var viewData = new ViewDataDictionary(context.Source);
                        result.View.Render(
                            new ViewContext(controllerContext, result.View, viewData,
                                            controllerContext.Controller.TempData, writer), writer);

                        return(writer.ToString());
                    }
                }
            });
            Field <NonNullGraphType <GridEditorGraphType> >(
                "editor",
                resolve: context => context.Source["editor"]
                );
        }
Esempio n. 2
0
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            RenderMvcController controller = filterContext.Controller as RenderMvcController;

            if (controller == null)
            {
                return;
            }

            var currentUrl = filterContext.HttpContext.Request.Url;

            if (currentUrl == null)
            {
                return;
            }

            var rootPage = _umbracoContextAccessor.UmbracoContext
                           .Content
                           .GetAtRoot()
                           .FirstOrDefault(rp => currentUrl.AbsoluteUri.StartsWith(rp.Url(mode: UrlMode.Absolute)));

            if (rootPage == null)
            {
                return;
            }

            var page = _umbracoContextAccessor.UmbracoContext
                       .Content
                       .GetByRoute($"{rootPage.Id}{currentUrl.AbsolutePath}")
                       as IPage;

            if (string.IsNullOrWhiteSpace(page?.ExternalRedirect))
            {
                return;
            }

            filterContext.HttpContext.Response.Redirect(page.ExternalRedirect);
        }