Beispiel #1
0
        /// <summary>
        /// Gets the cache value or null if it has not been set.
        /// </summary>
        public void Set(IPageResponseData data)
        {
            var cache = _httpContextAccessor.HttpContext?.Items;

            if (cache == null)
            {
                throw new InvalidOperationException("Cannot set the cache outside of a request.");
            }

            cache[CACHE_KEY] = data;
        }
Beispiel #2
0
        /// <summary>
        /// Gets the cache value or null if it has not been set.
        /// </summary>
        public void Set(IPageResponseData data)
        {
            var cache = HttpContext.Current?.Items;

            if (cache == null)
            {
                throw new ApplicationException("Cannot set the cache outside of a request.");
            }

            cache[CACHE_KEY] = data;
        }
Beispiel #3
0
 public VisualEditorContentStream(
     Stream outputStream,
     IPageResponseData pageResponseData,
     IResourceLocator resourceLocator,
     ControllerContext context
     )
 {
     _outputStream     = outputStream;
     _pageResponseData = pageResponseData;
     _resourceLocator  = resourceLocator;
     _context          = context;
 }
 public VisualEditorContentStream(
     Stream outputStream,
     IPageResponseData pageResponseData,
     IResourceLocator resourceLocator,
     IJsonSerializerSettingsFactory jsonSerializerSettingsFactory,
     ControllerContext context
     )
 {
     _outputStream     = outputStream;
     _pageResponseData = pageResponseData;
     _resourceLocator  = resourceLocator;
     _jsonSerializerSettingsFactory = jsonSerializerSettingsFactory;
     _context = context;
 }
        /// <summary>
        /// Here we modify the page response data to include only what we need and
        /// serialize it into a json object.
        /// </summary>
        private string CreateResponseJson(IPageResponseData pageResponseData)
        {
            string responseJson;

            // When using IPageBlockWithParentPageData and referencing the parent page we get a
            // Self referencing loop error. Rather than set this globally we ignore this specifically here
            var settings = _jsonSerializerSettingsFactory.Create();

            settings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
            settings.StringEscapeHandling  = StringEscapeHandling.EscapeHtml;

            bool isCustomEntityRoute        = pageResponseData.Version is CustomEntityVersionRoute;
            bool hasEntityUpdatePermission  = false;
            bool hasEntityPublishPermission = false;

            if (isCustomEntityRoute)
            {
                hasEntityUpdatePermission = _permissionValidationService.HasCustomEntityPermission <CustomEntityUpdatePermission>(
                    pageResponseData.CustomEntityDefinition.CustomEntityDefinitionCode,
                    pageResponseData.CofoundryAdminUserContext
                    );
                hasEntityPublishPermission = _permissionValidationService.HasCustomEntityPermission <CustomEntityPublishPermission>(
                    pageResponseData.CustomEntityDefinition.CustomEntityDefinitionCode,
                    pageResponseData.CofoundryAdminUserContext
                    );
            }
            else
            {
                hasEntityUpdatePermission  = _permissionValidationService.HasPermission <PageUpdatePermission>(pageResponseData.CofoundryAdminUserContext);
                hasEntityPublishPermission = _permissionValidationService.HasPermission <PagePublishPermission>(pageResponseData.CofoundryAdminUserContext);
            }

            var responseObject = new
            {
                Page                       = pageResponseData.Page,
                PageRoutingInfo            = pageResponseData.PageRoutingInfo,
                PageVersion                = pageResponseData.PageVersion,
                IsCustomEntityRoute        = isCustomEntityRoute,
                HasDraftVersion            = pageResponseData.HasDraftVersion,
                Version                    = pageResponseData.Version,
                VisualEditorMode           = pageResponseData.VisualEditorMode,
                CustomEntityDefinition     = pageResponseData.CustomEntityDefinition,
                HasEntityUpdatePermission  = hasEntityUpdatePermission,
                HasEntityPublishPermission = hasEntityPublishPermission
            };

            responseJson = JsonConvert.SerializeObject(responseObject, settings);
            return(responseJson);
        }