Пример #1
0
        public override void _GetContentStore(System.Web.Routing.RequestContext requestContext, HttpApplicationStateBase application)
        {
            //xml folder is in the app data folder now.
            _XmlFolderLocation = ConfigurationManager.AppSettings["PageFilesLocation"];

            _ContentStore = CMSPageFactoryHelper.GetPreviewContentStore(requestContext, _XmlFolderLocation) as ContentStore;
            _CurrentUser  = CMSPageFactoryHelper.GetPreviewCurrentUser(_ContentStore,
                                                                       requestContext, requestContext.HttpContext.Session);
        }
Пример #2
0
        protected override void Initialize(System.Web.Routing.RequestContext requestContext)
        {
            base.Initialize(requestContext);

            _SitePath = CmsRoute.GetSitePath();

            _DTSitePath = ConfigurationManager.AppSettings["DesignTimeAssetsLocation"]
                          .ToNullOrEmptyHelper()
                          .Return(_SitePath);
            _AllowTfrm = ConfigurationManager.AppSettings["EnableTFRMParameter"].ToNullHelper().Branch(
                str => str.Trim().ToLowerInvariant() == "true",
                () => true);
            _LegacyTransformation = ConfigurationManager.AppSettings["LegacyRendering"].ToNullHelper()
                                    .Branch(
                str => str.Trim().ToLowerInvariant() != "false",
                () => true);

            _UseTempStylesheetsLocation = ConfigurationManager.AppSettings["UseTempStylesheetsLocation"].ToNullHelper().Branch(str => str.Trim().ToLowerInvariant() != "false", () => true);

            _IsDesignTime = Reference.Reference.IsDesignTime(_SitePath);

            try
            {
                //page factory is a cheap object to construct, since both surl map and ssmap are cached most time
                _PageFactory = CMSPageFactoryHelper.GetPageFactory(_IsDesignTime, _SitePath, requestContext, _LegacyTransformation, out _IsDTAuthenticated) as CMSPageFactory;
            }
            catch (Ingeniux.CMS.Exceptions.LicensingException e)
            {
                if (e.Expired)
                {
                    _InvalidPageResult = new XmlResult(
                        new XElement("TrialLicenseExpired",
                                     new XAttribute("ExpirationDateUTC", e.ExpirationDate.ToIso8601DateString(true)),
                                     new XElement("IngeniuxSupport",
                                                  new XAttribute("Phone", "1.877.299.8900"),
                                                  new XAttribute("Email", "*****@*****.**"),
                                                  new XAttribute("Portal", "http://support.ingeniux.com/"))));
                }
                else
                {
                    _InvalidPageResult = new XmlResult(
                        new XElement("InvalidCMSLicense",
                                     new XElement("IngeniuxSupport",
                                                  new XAttribute("Phone", "1.877.299.8900"),
                                                  new XAttribute("Email", "*****@*****.**"),
                                                  new XAttribute("Portal", "http://support.ingeniux.com/"))));
                }
            }

            if (_InvalidPageResult == null)
            {
                if (_PageFactory.CacheSiteControls)
                {
                    // only set site control schemas when list is not empty
                    string[] siteControlSchemas = ConfigurationManager.AppSettings["SiteControlSchemas"].ToNullHelper().Branch <string[]>(
                        str => str.Split(';').Select(
                            s => s.Trim()).Where(
                            s => s != "").ToArray(),
                        () => new string[] { });

                    if (siteControlSchemas.Length > 0)
                    {
                        _PageFactory.SiteControlSchemas = siteControlSchemas;
                    }
                }

                _PageFactory.LocalExportsIncludeLinks = ConfigurationManager.AppSettings["LocalExportsIncludeLinks"].ToNullHelper().Branch <bool>(
                    str => str.Trim().ToLowerInvariant() == "true",
                    () => true);

                //move page getting to here so it can be used to OnActionExecuting
                try
                {
                    _CMSPageRoutingRequest = _PageFactory.GetPage(Request, false);
                }
                catch (DesignTimeInvalidPageIDException exp)
                {
                    //this message is exclusive to design time and need to present a special page
                    _InvalidPageResult = new XmlResult(new XElement("DynamicPreviewError", exp.Message));
                }
            }

            if (_CMSPageRoutingRequest != null && string.IsNullOrWhiteSpace(_CMSPageRoutingRequest.RemaingPath))
            {
                HttpContext.Items["PageRequest"] = _CMSPageRoutingRequest;
            }
        }
Пример #3
0
        public override RouteData GetRouteData(HttpContextBase httpContext)
        {
            if (string.IsNullOrWhiteSpace(_BaseController))
            {
                _BaseController = ConfigurationManager.AppSettings["BaseControllerName"]
                                  .ToNullOrEmptyHelper()
                                  .Return(DEFAULT_CONTROLLER_NAME);
            }

            ICMSRequest pageRequest = null;
            RouteData   data        = null;
            string      action      = defaultAction;
            string      controller  = _BaseController;

            string appPath = httpContext.Request.ApplicationPath;

            if (appPath == "/")
            {
                appPath = string.Empty;
            }

            string relativePath = httpContext.Request.Path.Substring(appPath.Length).ToLowerInvariant();

            if (relativePath.StartsWith("/igxdtpreview"))
            {
                pageRequest = _PageFactory.GetPreviewPage(httpContext.Request, true);
                // because the preview does not get a url, but rather an id and xml,
                // it is not possible to look for other actions based on the URL
                action = "Preview";
                locateController(pageRequest, ref controller);
                data = createRouteData(action, controller);
            }
            if (relativePath.StartsWith("/igxdynamicpreview") || _PageFactory == null)
            {
                action = "DynamicPreview";
                try
                {
                    CMS.IContentStore contentStore = CMSPageFactoryHelper.GetPreviewContentStore(httpContext.Request.RequestContext, _SitePath);
                    CMS.IReadonlyUser currentUser  = CMSPageFactoryHelper.GetPreviewCurrentUser(contentStore,
                                                                                                httpContext.Request.RequestContext, httpContext.Session);

                    _PageFactory = new DocumentPreviewPageFactory(contentStore, currentUser, _SitePath);
                    _PageFactory.CacheSiteControls = false;

                    pageRequest = _PageFactory.GetDynamicPreviewPage(httpContext.Request, true, true);
                    // because the preview does not get a url, but rather an id and xml,
                    // it is not possible to look for other actions based on the URL

                    locateController(pageRequest, ref controller);
                }
                catch
                {
                    controller = "CMSPageDefault";
                }
                data = createRouteData(action, controller);
            }
            else
            {
                //only need the schema data, not the whole page
                ICMSRoutingRequest routingRequest = _PageFactory.GetPage(httpContext.Request, true);
                if (routingRequest != null && routingRequest.CMSRequest != null && routingRequest.CMSRequest.Exists)
                {
                    pageRequest = routingRequest.CMSRequest;
                    if (pageRequest != null)
                    {
                        //use default controller for routing request
                        if (pageRequest is CMSPageRedirectRequest)
                        {
                            data = createRouteData(defaultAction, controller);
                        }
                        else
                        {
                            var matchingController = locateController(pageRequest, ref controller);

                            if (!string.IsNullOrEmpty(routingRequest.RemaingPath.Trim('/')))
                            {
                                //use the first section of the remaining path as action, this is arbitrary.
                                string actionInPath = routingRequest.RemaingPath.Trim('/').SubstringBefore("/");

                                //if the controller doesn't have this action, use default action
                                action = matchingController.ToNullHelper()
                                         .Propagate(
                                    c => c.ActionNames
                                    .Where(an => an.ToLowerInvariant() == actionInPath.ToLowerInvariant())
                                    .FirstOrDefault())
                                         .Return(defaultAction);

                                //get the remaining path in the controller action itself
                            }
                            else
                            {
                                action = defaultAction;
                            }

                            data = createRouteData(action, controller);
                        }
                    }
                    else
                    {
                        data = createRouteData(defaultAction, controller);
                    }
                }
                else
                {
                    data = createRouteData(defaultAction, controller);
                }
            }

            return(data);
        }