November Happy Hour will be moved to Thursday December 5th.

Optimizely - update 450

Release summary

New features for Optimizely Content Management System (CMS) and Optimizely TinyMCE. Bug fixes for Optimizely Content Management System (CMS) and Optimizely TinyMCE.

Released items April 18, 2023

Area ID Type Description Released
CMS-26265
  External link resolved incorrectly in TinyMCE

Fixed an issue that caused an external link to resolve incorrectly in TinyMCE.

EPiServer.CMS.Core 12.14.0; (Or a related package);
Apr 18, 2023
CMS-27067
  Drag and drop a block into XhtmlString property of other language page caused an issue

Fixed an issue that caused ArgumentNullException in EPiServer.RuntimeModelExtensions.GetOriginalType(object subject) if you dragged and dropped a block into the Main Body XhtmlString property of other language page.

EPiServer.CMS.Core 12.14.0; (Or a related package);
Apr 18, 2023
CMS-27037
  Add Length validation for ContentArea property

Length validation for ContentArea property is supported.

EPiServer.CMS.Core 12.14.0; (Or a related package);
Apr 18, 2023
CMS-26801
  CD GET does not return list block value in ContentArea inlineBlock

Fixed an issue where the CD GET did not return a list block value in ContentArea inlineBlock.

Steps to reproduce:

1. Call Content Definition API to create a block type BlockWithListBlockAndInteger, properties BlockList and Interger (or any property type)

{
    "name": "BlockWithListBlockAndInteger",
    "baseType": "Block",
    "properties": [
        {
            "name": "BlockList",
            "dataType": "PropertyCollection",
            "itemType": "EditorialBlock",
            "branchSpecific": false,
            "editSettings": {
                "visibility": "default",
                "displayName": "BlockList",
                "groupName": "Information",
                "sortOrder": 0
            }
        },
        {
            "name": "PropInteger",
            "dataType": "PropertyNumber",
            "branchSpecific": false,
            "editSettings": {
                "visibility": "default",
                "displayName": "PropInteger",
                "groupName": "Information",
                "sortOrder": 0
            }
        }
    ]
}

 2. Call Content Management API to create a ProductPage content, ContentArea has inlineBlock is BlockWithListBlockAndInteger

{
    "language": {
        "name": "sv"
    },
    "name": "InlineBlock_Page",
    "contentType": [
        "Block",
        "ProductPage"
    ],
    "parentLink": {
        "id": {{testContainerPageId}}
    },
    "status": "Published",
    "UniqueSellingPoints": {
        "value": [
            "1"
        ]
    },
    "RelatedContentArea": {
        "value": [
            {
                "displayOption": "wide",
                "tag": null,
                "inlineBlock": {
                    "contentType": [
                        "Block",
                        "BlockWithListBlockAndInteger"
                    ],
                    "blockList": {
                        "value": [
                            {
                                "name": "BlockList",
                                "propertyDataType": "PropertyBlock",
                                "propertyItemType": "EditorialBlock",
                                "mainBody": {
                                    "value": "EditorialBlock mainbody",
                                    "propertyDataType": "PropertyXhtmlString"
                                }
                            }
                        ],
                        "propertyDataType": "PropertyCollection",
                        "propertyItemType": "PropertyBlock"
                    },
                    "propInteger": {
                        "value": 1,
                        "propertyDataType": "PropertyNumber"
                    }
                }
            }
        ],
        "propertyDataType": "PropertyContentArea"
    }
}

3. Call Content Management API GET to get content in step 2

  • Observed result: The inlineBlock is correct as input
"inlineBlock": {
                    "contentType": [
                        "Block",
                        "BlockWithListBlockAndInteger"
                    ],
                    "blockList": {
                        "value": [
                            {
                                "name": "BlockList",
                                "propertyDataType": "PropertyBlock",
                                "propertyItemType": "EditorialBlock",
                                "mainBody": {
                                    "value": "EditorialBlock mainbody",
                                    "propertyDataType": "PropertyXhtmlString"
                                }
                            }
                        ],
                        "propertyDataType": "PropertyCollection",
                        "propertyItemType": "PropertyBlock"
                    },
                    "propInteger": {
                        "value": 1,
                        "propertyDataType": "PropertyNumber"
                    }
                }

4. Call Content Definition API GET to get content in step 2

  • Expected result: InlineBlock is same as result in step 3
  • Actual result: InlineBlock has blockList value is []
"inlineBlock": {
                    "contentType": [
                        "Block",
                        "BlockWithListBlockAndInteger"
                    ],
                    "blockList": {
                        "value": [],
                        "propertyDataType": "PropertyCollection",
                        "propertyItemType": "PropertyBlock"
                    },
                    "propInteger": {
                        "value": 1,
                        "propertyDataType": "PropertyNumber"
                    }
                }
EPiServer.CMS.Core 12.14.0; (Or a related package);
Apr 18, 2023
CMS-26591
  ContentTypes: (CMS) Allowed types validation

You can use IPropertyValidationSettingsRepository to define allowed types validation .

EPiServer.CMS.Core 12.14.0; (Or a related package);
Apr 18, 2023
CMS-26457
  CMS: Add type to RegularExpressionValidationSettings

Added an optional type identifier RegularExpressionValidationSettings to specify if the regular expression should be interpreted as ECMA script or .NET. 

EPiServer.CMS.Core 12.14.0; (Or a related package);
Apr 18, 2023
CMS-26161
  Validate setting-based property validation

Validators (such as LengthPropertyValidator) may be activated (if configured) to validate property data after content data is sent to the back-end, and the validators validate property in line with settings provided by developers (such as  LengthValidationSettings).

Several types of settings are handled by developers only and Optimizely stores them in the database without any validation, even though data could be wrong (such as maximum < minimum). To make validation consistent and valid, Optimizely handles the validation of validator settings before saving them.

  • Maximum and Minimum may not be null at the same time.
  • Maximum should be greater than Minimum
  • For RegularExpressionValidationSettings and ItemRegularExpressionValidationSettings, the pattern used in validation process may not be null or empty.

These rules apply to the following:

  • LengthValidationSettings
  • RangeDateValidationSettings
  • RangeFloatNumberValidationSettings
  • RangeNumberValidationSettings
  • ItemLengthValidationSettings
  • ItemRangeDateValidationSettings
  • ItemRangeFloatNumberValidationSettings
  • ItemRangeNumberValidationSettings

 

EPiServer.CMS.Core 12.14.0; (Or a related package);
Apr 18, 2023
CMS-25977
  Expired home page in non-master language doesn't show a 404 when accessing it

Fixed an issue where you could see the header and footer of a startpage, but not its content; the expired home page in non-master language did not show a 404 when it was accessed.

EPiServer.CMS.Core 12.14.0; (Or a related package);
Apr 18, 2023
CMS-26387
  [Export] Error occurred while exporting content that contains non-existent BLOBvalue

Fixed an issue where errors occurred but still successfully exported a zero-length file (0 Kb file size) ExportedFile.episerverdata.

EPiServer.CMS.Core 12.14.0; (Or a related package);
Apr 18, 2023
CMS-19667
  Synchronous operations are disallowed when getting content

Prevent `Synchronous operations are disallowed` error when getting JSON from the server

Use ClientResourceOptions.JsonResponseBuffer setting for both input and output memory buffer threshold when serializing/deserializing using the Newtonsoft serializer.

The default value is now 256 kilobytes instead of 30kb

It has to be increased when using a global newtonsoft serializer and need to return big amounts of data (previous default was 30 kb).

EPiServer.CMS.Core 12.14.0; (Or a related package);
Apr 18, 2023
CMS-26990
  Delayed loading for ContentArea might return empty ContentArea

Fixed an issue where a page should be rendered with start page content in ContentArea, but nothing was rendered because a delay was loaded in a non-master language, so the ContentArea that was not LanguageSpecific was empty. 

EPiServer.CMS.Core 12.14.0; (Or a related package);
Apr 18, 2023
CMS-26933
  ContentRepository.TryGet throws NullReferenceException when passed non-registered language

Fixed an issue where passing a valid, but non registered language to ContentRepository.TryGet resulted in a NullReferenceException. The method should return false, and the out parameter should be null.

For example:

_contentRepository.TryGet(contentLink, CultureInfo.GetCultureInfo("en-NF"), out _);

 

EPiServer.CMS.Core 12.14.0; (Or a related package);
Apr 18, 2023
CMS-26893
  Could not convert page from one type to another

Fixed an issue where you could not convert a page from one page type to another.

EPiServer.CMS.Core 12.14.0; (Or a related package);
Apr 18, 2023
CMS-26799
  SQL exception occurred when deleting a block that was being used as inlineBlock of ContentArea

Fixed an issue where a SQL exception occurred when deleting a block that was being used as inlineBlock of ContentArea.

Steps to reproduce:

1. Create a block type (either typed on a .NET model or through Admin view) with a property (such as a string property called Heading).

2. Create a page instance of a type that contains a content area and assign an instance of an inline block using above block type, such as through the following code.

var page = _contentRepository.GetDefault<StandardPage>(ContentReference.StartPage);{{        }}
  page.Name = "ToBeDeleted";{{        }}
  page.MainContentArea = new ContentArea();
{{  page.MainContentArea.Items.Add(new ContentAreaItem { }}
    InlineBlock = _blockPropertyFactory.Create<InlineBlock>(b => b.Heading = "someting") });
    _contentRepository.Save(page, SaveAction.Publish, AccessLevel.NoAccess);

3. If you created the block type from .NET code, remove the block type from the .NET code.

4. Go to Admin view and try to delete the block.

EPiServer.CMS.Core 12.14.0; (Or a related package);
Apr 18, 2023
CMS-26786
  ContentModeling: (CMS) Add property ContentAreaItem

Added the ContentAreaItem property in CMS (which is like a ContentArea but with only a single item). 

EPiServer.CMS.Core 12.14.0; (Or a related package);
Apr 18, 2023
CMS-26716
  Return 500 when calling CMA to create page if page type has Url property which uses wrong namespace

Fixed an incorrect 500 error: Unable to cast object of type EPiServer.Url to type System.Security.Policy.Url that should have returned 400 to say that the System.Security.Policy.Url property is not supported.

EPiServer.CMS.Core 12.14.0; (Or a related package);
Apr 18, 2023
CMS-26713
  User interface language depends on culture of host.

Fixed a language issue had gadgets such as Sites, Versions, Assets and content tabs in the wrong language. For example. if you enabled the en, sv, and de languages for your website and configured the site as follows:

Host Culture
host:8000 no culture specific
host:8001 SV
host:8002 DE

When you set the Personal Language to Deutsch in My Settings and opened host:8001 => login and went into Edit view, the gadgets were in Swedish and not German, (even though the global menu and general information section of content were in German as expected).

EPiServer.CMS.Core 12.14.0; (Or a related package);
Apr 18, 2023
CMS-26453
  CMS: Add Saved property to PropertyValidationSettingsBase

Added a Saved property to PropertyValidationSettingsBase that informs when the setting was last modified.

EPiServer.CMS.Core 12.14.0; (Or a related package);
Apr 18, 2023
CMS-26329
  EPiNumberOfVisits cookie is deleted if there are more than one Number of Visits criteria

Fixed an issue that caused EPiNumberOfVisits cookie to be deleted if there were more than one criteria on Number of Visits.

EPiServer.CMS.Core 12.14.0; (Or a related package);
Apr 18, 2023
CMS-26226
  Text in XhtmlString overlaps the following field after auto-saved in on-page edit

Fixed an issue in the on-page edit view where text in XhtmlString overlapped the following field after it was auto-saved.

EPiServer.CMS.Core 12.14.0; (Or a related package);
Apr 18, 2023
CMS-26196
  Expired Page still show when StrictLanguageRouting = false

Fixed an issue where an expired page still showed when StrictLanguageRouting = false.

EPiServer.CMS.Core 12.14.0; (Or a related package);
Apr 18, 2023
CMS-26945
  [TinyMCE] Support new editor options API

Added support for TinyMCE EditorOptions API:
https://www.tiny.cloud/docs/tinymce/6/apis/tinymce.editoroptions/
You can now register a custom setting as TinyMCE editor option on the server.

EPiServer.CMS.TinyMce 4.2.0; (Or a related package);
Apr 18, 2023
CMS-27107
  Allow selecting content from TinyMCE

You can select Create New Block and Select Content (new) from the editor.

EPiServer.CMS.TinyMce 4.2.0; (Or a related package);
Apr 18, 2023
CMS-27173
  Set target shortcut when you drag and drop an item to TinyMCE

Fixed an issue where the created link did not set the target attribute (to "_blank" or "_top") when you dropped a shortcut page (that had the "Open in" field set) to TinyMCE.

EPiServer.CMS.TinyMce 4.2.0; (Or a related package);
Apr 18, 2023

Other product release notes

Related topics

Last updated: Apr 18, 2023