2.2.17. Release 7.5.29

This chapter contains all changes made in Release 7.5.29 of CoreMedia Digital Experience Platform 8.

Follow the CoreMedia DXP 8 Help Center section to receive release and product announcements automatically.

Modules and Tooling

Release 7.5.29 contains the following CoreMedia modules:

  • CoreMedia Blueprint

  • CoreMedia CMS

  • CoreMedia Studio

  • CoreMedia Elastic Social

In addition, CoreMedia DXP 8 uses the following tooling:

ProductKeyVersion
CoreMedia Application Maven Plug-inAPPPLUGIN2.7.9
CoreMedia Project Maven ExtensionPROJEXT1.0.5

Table 2.17. Tooling of CoreMedia DXP 8


CoreMedia CMS Changes and Improvements

  • The Corporate Website Blueprint re-introduces a feature of the previous Media Blueprint and extends it, namely setting a viewType on a placement of a Page Grid. This can be used to facilitate editorial tasks - any item added to a preconfigured placement automatically gets the desired rendering viewType applied.

    Examples on the Homepage:

    • The "Hero" placement is set to "Superhero", which automatically renders any added content item as a full-size Superhero teaser.

    • The "Placement 1" is set to "Claim", which automatically renders any added content item as Claim teasers.

    • The "Placement 3" is set to "Default", so that contained Collections can set their own viewTypes specifically.

    The Page Grid can and should be customized as necessary for each respective project.

    Any setting on the Placement in a page takes precedence over a setting on a Collection that is inside the placement.

    E.g. Placement: viewType="Square", contains Collection viewType="Claim" -> "Square" wins, collection items are rendered as "Square"

    Placement: viewType="Default", contains Collection viewType="Claim" -> "Claim" wins, collection items are rendered as "Claim".

    Note: In addtion, through the Container facade, the same rendering templates also apply to Collections that are often used to define layout-specific rendering of teasers.

    Note: In the current Corporate Website Blueprint release it is not possible to set viewTypes directly on Teasers or other single content items. This can be achieved by creating additional viewType templates. Technically, the "Container" Facade only applies to lists of items, not to single items.

    (CMS-3704)
  • The Corporate Website Blueprint adds Long-Scrolling-Pages.

    Such pages usually have visual dividers to highlight different content sections - also called "Gaps" - that can have a parallax scrolling effect, i.e. the picture inside the gap scrolls slower than the remainder of the page around it.

    To configure gaps in the content, technical editors can add local settings.

    Page: For a page, the localStruct String List "placementsWithFirstItemAsHeader" is used. For each configured placement, the first item is rendered as the gap.

    E.g. on the Corporate Homepage, "placement2" containing the "For Professionals" section is configured and the first item "Professionals Page" is not rendered as a regular teaser, but as a gap.

    Collection: For collections, the localStruct Boolean "firstItemAsHeader" is used.

    E.g. in Placement 2 on the Homepage, the first item is "For Consumers Collection" (Square). This collection has a settings document linked that sets the "firstItemAsHeader" to true.

    (CMS-3703)
  • Some specific CSS settings may only apply to the internal Studio preview and it is not desirable to expose them on the public website.

    A separate internal-use only Preview.css is added

    (CMS-3690)
  • In order to avoid duplication of layout templates for both Page Placements and Collections, a joint View Type Lookup is implemented via interface com.coremedia.blueprint.common.layout.Container. Just create a CMViewtype in Options/Viewtypes/CMChannel/ for your Layout Variant and it will be available for both Placements and Collections.

    (CMS-3689)
  • Each content item can now have a specific text editorially configured for the HTML Meta Tag Description via Studio.

    Note: For articles that are embedded directly on a page in Detail view, the HTML Description of the CMChannel is used, not the one of the CMArticle. For articles that are rendered in Detail view as "leaf" content in the context of another page, the HTML Description of the CMArticle is used.

    (CMS-3687)
  • For each teasable content item, the editorial user can set a specific "Call-To-Action" (CTA) text that is displayed as a linked button. The default text for the CTA is pre-configured per document type in the language Bundle document (e.g. Learn More for Articles). Users can override the default text or suppress the CTA button completely for each teaser.

    The Studio forms for CMTeasable are extended for the Corporate Website Blueprint to handle the CTA text. The CTA configuration is stored in the "localSettings" struct property with the following settings:

    • callToActionCustomText (String)

    • callToActionDisabled (Boolean)

    (CMS-3686)
  • The Breadcrumb display can be configured to omit first and last elements. E.g. a site may want to suppress "Home" as a first breadcrumb element. Or the title display of "leaf content", i.e. articles or other content items rendered in detail view, is not desired due to length and design.

    /Settings/Options/Bundles/Corporate_en

    • breadcrumbHideRootElement (boolean)

    • breadcrumbHideLastElement (boolean)

    (CMS-3685)
  • A site-specific Footer text for the company name can be set by a technical editor via a Struct Setting. E.g. "Chef Corp."

    /Settings/Options/Bundles/Corporate_en

    • footer_text (String)

    (CMS-3684)
  • Automatic shortening of too long Teaser Texts can be set by a technical editor for each new teaser type with a site-specific Struct Setting.

    Options/Settings/CAEConfig

    • teaser.max.length (Integer) - as in CM8

    • text.max.length (Integer)

    • claim.max.length (Integer)

    • hero.max.length (Integer)

    • superhero.max.length (Integer)

    • square.max.length (Integer)

    If the settings are not present, default values defined in templates will be used.

    (CMS-3683)
  • A site-specific HTML Title Suffix can be set by a technical editor via a Struct Setting.

    E.g. all page titles get appended " | Chef Corp.", and pages inside the Press Release page structure get appended " | News | Chef Corp."

    /Settings/Options/Bundles/Corporate_en

    • customTitleSuffixText (String)

    (CMS-3682)
  • The Corporate Website Blueprint provides a modern, appealing, highly visual website template that can be copied to start a customization project. In CoreMedia 8 and LiveContext it demonstrates the capability to build localizable, multi-national, non-commerce web sites.

    Built on a fully responsive, mobile-first design paradigm, the Corporate Website Blueprint leverages the Twitter Bootstrap Grid and Design framework for easy customization and adaptation by frontend developers.

    It scales from Mobile via Tablet to Desktop viewport sizes and uses the CoreMedia Adaptive and Responsive Image Framework to dynamically deliver the right image sizes in the right aspect ratios and crops.

    The responsive navigation visualizes 3 levels, even though the navigation structure can be arbitrary deeply nested. The floating header and the footer can be configured and re-ordered in content settings. Navigation nodes with URLs to external sites can be added via content.

    Four new site-specific page types with placements are introduced:

    • Corporate Homepage: A long-scroller page with a "Super Hero" full screen teaser module at the top and visual "gap" headings that span the screen width. Several default placements explain how layout settings can be done either directly on a placement or on a collection.

    • Corporate Hero Page:

    A secondary navigation page with a large, emotional header image that spans the content width and several placements.

    • Corporate Detail Page:

    A simple, standard page with header, footer, main as well as above-main and below-main placements.

    • Corporate Detail Page with Sidebar:

    A variant of the Detail Page that displays a sidebar in a second column (desktop) or below the main placement (tablet, mobile). Useful for sections of a website with contact person teasers that can be inherited to detail article pages.

    To facilitate editorial use-cases for Corporate casual users, a simplified page-centric editing model is supported via configuration:

    • All centralized assets are stored in the "Assets" folder.

    • Both Navigation (Pages) and Content are stored in the same repository folder structure that resembles the actual navigation structure of the site.

    • The "Create page from Template" feature enables users to quickly create pages of the above layout variants. The new page is added to the navigation parent and add a new default article and image is cloned that can be replaced right-clicking in the preview and by directly uploading a new image and pasting text from Word.

    • Pages are now directly "teasable" and can be added as teasers to placement without the creation of a Teaser placeholder document.

    • Any teaser can have a freely editable "Call-to-Action" button.

    Articles support:

    • Richtext with embedded images

    • In-page carousel for multiple images with full-screen lightbox view

    • Related content teasers

    • Sidebar (when defined in embedding page)

    • Configurable "Externally Visible Date" that remains unmodified upon re-publication

    New teaser types are added:

    • Superhero: A large full-screen image, text and call-to-action button

    • Hero: A content-width spanning image, with text and call-to-action button

    • Default: Alternating left/right teaser module

    • Carousel: touch-enabled carousel of teasers

    • Square: Square image teaser module

    • Claim / Claim (Circle): A row with of three thumbnails and teaser texts, with optional round image CSS effect

    • Media List: cf. Twitter Bootstrap style

    • Text: a text only teaser, e.g. for press releases

    • Detail: showing the actual content of an item, e.g. to place a full article into a page

    Note: CMTeasable.ftl is the teaser template that will always be used as a fallback for any document type that has no specific override.

    Multi-Language/Multi-Site features:

    • Demo Content in both English and German

    • Language chooser in frontend that allows direct switching between language variations of the same content item

    • all Studio translation, workflow and multi-site functionality is supported

    SEO and conversion optimization:

    • Call-To-Action Buttons

    • Editable HTML Description Text

    • Editable HTML Title Suffix (e.g. " | Chef Corp.")

    • Sitemap in both HTML and XML

    Dynamic Content features:

    • News and news list based on search-based lists

    • Events and events list based on search-based lists

    3rd Party Integrations:

    • Google Universal Analytics integration with optimization feedback loop

    • Optimizely Integration for A/B-Testing

    • full support for embedding dynamic 3rd party HTML/Javascript modules with examples

      • SurveyMonkey, Google Calendar, Google Forms, Pinterest, Twitter

    Other (developer) features:

    • General: Twitter Bootstrap is used as the layout foundation

    • General: All frontend code is based on Freemarker templates

    • General: CSS is built using the Sass and Grunt frameworks

    • General: A simple Print.css is supplied

    • General: Design and HTML were tested and optimized for Accessibilty

    • Studio: Configurable repository folder structure for Create dialogs

    • Studio: Site-specific property dialogs to enable/disable certain form elements

    • CAE: Shared template sets for teaser layout on both Placements and Collections via "Container" facade

    • CAE: Specific Preview.css for Studio preview only

    (CMS-3676)
  • Apache Solr has been updated to version 4.10.4.

    (CMS-3628)
  • Deprecated method com.coremedia.cap.feeder.MutableFeedable#setPartialUpdate.

    (CMS-3388)
  • The Content Feeder can use partial updates now when feeding changed document metadata into Solr. It does not need to send the whole document data to Solr anymore but only a small set of changed metadata, if only document metadata has changed. Partial updates improve the feeding performance, especially if lots of documents are affected and expensive operations such as parsing text from PDF binaries can be avoided.

    Partial updates require that all index fields are defined as stored="true" in the Solr schema.xml, except for fields that are copyField destinations, which must be defined as stored="false". The default schema.xml for the Content Feeder in solr-home/configsets/content/conf is already prepared for partial updates since the first release of CoreMedia 8. If you've added custom fields, you should make sure that they are stored as well to be able to use partial updates. The Content Feeder will log a warning and not use partial updates, if you've customized the schema.xml in a way that is incompatible with partial updates. In such a case, the Content Feeder will use the old behaviour and send updates with the full document data to Solr. You can also turn off partial updates in general with the Content Feeder's Spring property solr.partialUpdates=false, however this is not recommended.

    By default, the Content Feeder uses partial updates only for document metadata that wasn't indexed in earlier releases, for example a document's translation state. While it makes sense to use partial updates for other aspects as well (for example to update a document's path after a parent folder has been moved), we did not activate this by default to avoid possible incompatibilities with your Content Feeder customizations. You can activate partial updates for all metadata aspects without further changes, if you don't have any custom FeedablePopulator implementations added to your Content Feeder and if you haven't customized the <updateRequestProcessorChain> definition in file solr-home/configsets/content/conf/solrconfig.xml. To activate partial updates for all metadata aspects, set the Content Feeder's Spring property feeder.partialUpdate.aspects=*.

    If you have custom FeedablePopulator implementations for the Content Feeder, you should check whether these FeedablePopulators should be invoked for full document updates, for partial updates with metadata changes or both. FeedablePopulator instances registered at property feedablePopulators of Spring bean index are called when a document gets added or updated and the whole document data is sent to the search engine. If the custom FeedablePopulator needs to be invoked for partial updates, then it must be registered at property partialUpdateFeedablePopulators. A FeedablePopulator can check whether it is processing a partial update by invoking Feedable#isPartialUpdate() and get the updated aspects with Feedable2#getUpdatedAspects().

    If you have customized the <updateRequestProcessorChain> definition in solrconfig.xml, then you might need to adapt it for partial updates as well, before activating partial updates for all metadata aspects. An additional update request processor chain with name="partialUpdateChain" has been added in the file solrconfig.xml, which is invoked in case of partial updates instead of the default chain. If you've added custom steps to the existing chain, you need to decide whether these steps should also be invoked in case of partial updates and possibly add them to the partialUpdateChain.

    (CMS-462)

CoreMedia Studio Changes and Improvements

  • A RemoteBean returns true from the isLoaded() method if its properties have been from the server at least once. Contrary to the earlier implementation, it continues to return true after it has been invalidated and before it has been reloaded.

    (CMS-3736)
  • The external link dialog in the studio's richtext editor has been modified to allow arbitrary URL schemes. Only if no URL scheme at all is given (and the link is not just a fragment part for linking within one page), an http:// or mailto: scheme is prepended automatically.

    (CMS-3731)
  • For compatibility reasons, the Studio used to expose struct properties as Blobs, in addition to the typed Struct format. This feature has now been disabled for performance reasons. If you are still using the blueprint's struct-editor-studio-plugin (superseded by the StructPropertyField), or for some other reason still need to access the XML source of some structs as a Blob, it can be selectively reactivated by listing the required property names in the application property studio.structAsBlobPropertyNames as a comma-separated list.

    (CMS-3708)
  • Not all Sites uses the "Editorial" and "Navigation" Path to separate their contents. These Folders can now be configured for each site independently. For example in the Corporate Blueprint, both paths are set to "Content".

    Name of the CMSettings Document is:

    SITE_ROOT_FOLDER/Options/Settings/Content Creation

    This settings document containts a StructProperty named "paths". Within this struct, there are two LinkProperty called "editorial" and "navigation", where you can link folders. The same folder can be used for both properties.

    If no folders are configured, the fallback is the already known behaviour of using the folders "Editorial" and "Navigation".

    The configurable editorial path is also used for the "Upload Content" feature in addition to the default.

    (CMS-3681)
  • With the SiteAwareVisibilityPlugin, you can show or hide document form elements (e.g. property field editors) depending of the activation of a "feature" for a specific site.

    The SiteAwareVisibilityPlugin takes a parameter called "feature", which is the name of the feature. You can group two or more plugins by giving them the same feature name.

    If you bound this plugin to an ExtJS Component, this component is only visible, if this feature is configured for the site of the content to edit.

    By default, the configuration for features of a site is done in a CMSettings document, which should be named

    SITE_ROOT_FOLDER/Options/Settings/Studio Features

    This settings consists of a StringList named "features" and contains the string values, you give your SiteAwareVisibilityPlugin

    Example Usage: This Plugin is used in the demo content for the new Corporate Website Blueprint to hide the property editors for the "Call-To-Action-Button" and "Externally Displayed Date" in the Perfect Chef site, as these properties are not used in these templates, but are only used in the new Corporate Website Blueprint for now.

    (CMS-3680)
  • The newly introduced StudioConfigurationUtil handles studio configurations made via CMSettings.

    StudioConfigurationUtil looks for bundles at SITE_ROOT_FOLDER/Options/Settings and as fallback at /Settings/Options/Settings if no site specific configuration is found. Bundles can be any path to a CMSettings Content below the base paths.

    You can provide a context to determine the site to search in. This can either be a Content or a Site. If a Content is provided, the site where the content is part of, is taken. If no context is provided, the users preferred site is used.

    This util is function value expression aware and is dependency tracked.

    The StudioConfigurationUtil is part of Blueprint, so it can be customized for custom paths and doctypes.

    (CMS-3678)
  • No issue will be generated anymore for a derived document when its master document has been updated.

    com.coremedia.rest.cap.validators.MasterVersionUpdatedValidator The following methods have been removed:

    • setExcludedProperties(List<String> excludedProperties)

    • setExtractor(OutdatedPropertiesExtractor extractor)

    com.coremedia.translate The package com.coremedia.translate has been removed from the Public API including the following classes:

    • com.coremedia.translate.OutdatedPropertiesExtractor

    • com.coremedia.translate.TranslatablePredicate

    (CMS-3633)
  • Local site managers such as Piet or Pierre are now able to initiate a translation to their preferred site, so they can retrieve updates from the master site to the local site they are administrating.

    You will notice a new icon in the library which is active once you have selected contents of the master site. Clicking on it will start a new translation task and directly assign it to yourself. The translation task will directly open in the Control Room so that you are able to start the translation process right away.

    As alternative to initiate the translation process via button you can as usual start the translation process by dragging the master contents from the library into the translation panel of the control room.

    Changes to Groups:

    translation-manager-role: both global-site-manager and local-site-manager are now members of the translation-manager-role and as a consequence are able to trigger translation workflows.

    Changes to Workflows:

    To enable the new behavior you have to upload the workflow translation.xml again. Existing translation workflows will behave just as before the upgrade.

    • Translation workflow has been extended with a new variable autoSelfAssigned which defaults to false. If set the translation task will be automatically and exclusively assigned to the initiator of the workflow.

    • Translation workflow contains a new task TranslateSelf as a copy of the original Translate task with the difference, that autoAccepted is set to true.

    Changes in Studio:

    ControlRoomStudioPlugin.exml has been extended with configuration for the auto accepted workflow task (compare to task Translate):

        
    <collab:workflowStateTransition
        task="TranslateSelf"
        nextSteps="{['sendToTranslationService', 'rollbackTranslation', 'finishTranslation']}"/>
    
    
      

    BlueprintProcessDefinitions resource bundle has been extended by an additional entry:

    • en: Translation_task_TranslateSelf_text=Translate

    • de: Translation_task_TranslateSelf_text=Übersetzen

    (CMS-3601)
  • Allow selection of library columns The library lists in browse- and search-mode do now offer header menus for most of the displayed columns. The menus provide functionality to manage the visibility of individual library columns.

    Changes

    • All columns in the library lists are now hideable by default. Set the hideable configuration parameter if you want to override this setting.

    • All columns in the library do now show a header menu by default. Set the menuDisabled configuration parameter if you want to override this setting.

    • The library list in browse mode does now include an optional 'Last modified' column. The column is hidden by default but it can be activated via the header menu.

    (CMS-3579)
  • You can now add content to My Edited Content panel by drag and drop.

    (CMS-3523)

CoreMedia Blueprint Changes and Improvements

  • When the maven profile websphere is activated, it now creates a second war file for each webapp using the websphere plugin adjustments. The second war file is using websphere as the maven classifier. The filename of the war will be {{${project.build.finalName}-websphere.war}}.

    (CMS-3849)
  • To build the new Corporate Blueprint themes, Maven 3.1 is required and is set to prerequisites in root POM. Add -DskipThemes to skip building of the Corporate Theme.

    (CMS-3814)
  • The following transitive cookbook dependencies were updated as a result of changing the version locking from strict to pessimistic. Many of them are unused but listed here for completeness:

        
    apt (2.6.0) -> apt (2.7.0) (unused)
    packagecloud (0.0.19) (unused)
    runit (1.5.10) -> runit (1.7.2) (unused)
    windows (1.34.8) ->  windows (1.37.0) (transitive dependency)
    yum (3.3.2) - yum (3.6.1)
    yum-centos (0.3.0) -> yum-centos(0.4.5)
    yum-epel (0.5.3) -> yum-epel(0.6.2)
    yum-mysql-community(0.1.16) -> yum-mysql-community(0.1.17)
    
    
      
    (CMS-3745)
  • CMChannel becomes a CMTeasable with teaser title, teaser text and teaser image as well as optional Call-To-Action text.

    CMLinkable gets a new date property called extDisplayedDate which means externally displayed date.

    The editor can set this date manually as editorial date.

    CMLinkable#getExternallyDisplayedDate() will return this date if set, or returns the last modification date of the content, if externally displayed date is not set. On the live site, the default will be the publication date, which is the last modification date.

    (CMS-3677)
  • Up to now the demo content of each site was packaged in a separate zip-archive. From now on all sites will be packaged in one zip-archive.

    (CMS-3666)
  • Changed the default value for the SITE_MANAGER_CLEAR_TEXT_PORTS configuration token to 41683,43683 to match the default Content Management Server and Workflow Server CORBA ports.

    (CMS-3596)
  • The SettingsService has been enhanced with a new method "nestedSetting", which allows the lookup of hierarchical struct properties with a single call.

    (CMS-3550)
  • The coremedia-enforcer-rules have been updated to 1.1.1. The update allows to configure the groupId that identifies sibling projects. By default a sibling project has the same groupId as the current project. If however you have sibling projects with a different groupId, you now can define a regular expression to identify those modules.

    If for example you want to add com.coremedia.blueprint.myproject and sub groupIds as sibling projects, you need to configure the enforcer rule as follows:

                
    <execution>
      <id>enforce-onerepo-rules</id>
      <goals>
        <goal>enforce</goal>
      </goals>
      <phase>validate</phase>
      <configuration>
        <rules>
          <myCustomRule implementation="com.coremedia.maven.enforcer.OneRepoEnforcerRule">
            <siblingGroupIds>com\.coremedia\.blueprint.myproject.*</siblingGroupIds>
          </myCustomRule>
        </rules>
      </configuration>
    </execution>
    
    
              
    (CMS-3428)
  • The FragmentParameters can now be accessed within Freemarker Templates (FTL) via

    ${CM_FRAGMENT_CONTEXT.parameters.<XXX>}

    for example: ${CM_FRAGMENT_CONTEXT.parameters.view}

    (CMS-3324)

CoreMedia Elastic Social Changes and Improvements

  • You can use the Spring Order annotation or the Spring Ordered interface to prioritize search index customizers. Customizers with a higher priority can now change the results of customizers with a lower priority.

    (CMS-3538)

Miscellaneous Changes and Improvements

  • This LiveContext release is a beta release. It is not recommended for production use. It is based on 7.5.28 and adds some additional features which are not yet final.

    (CMS-3946)
  • Dynamic price rendering (e.g. personalized prices by cart/shopping value or shopping behavior) is now also disabled on CMS side by default. If this feature is not used on IBM WebSphere Commerce side then it is not necessary to turn it on on CMS side. It saves an additional call to IBM WebSphere Commerce that is not needed in such a scenario. See Live Context documentation for details.

    (CMS-3695)
  • The config.id parameter for Live Context store configuration in the root channel's settings is not mandatory anymore.

    (CMS-3694)
  • HTML Meta Keywords are not rendered in the HTML <head> anymore, as popular Search engines stopped using them a while ago.

    In Studio, the HTML Meta Keywords field is removed inside "Metadata > Search Engine Optimization" and gets moved to a separate panel in Studio as "Metadata > Keywords", default is collapsed.

    The Keywords field can still be used for CoreMedia Adaptive Personalization or to add keywords for internal search purposes that are not display on the external website.

    (CMS-3688)
  • The modules lc-ecommerce-api and lc-ecommerce-base have been removed from Blueprint Livecontext extension and are no longer available as source code. The Maven coordinates are: For the lc-ecommerce-api module: com.coremedia.livecontext:lc-ecommerce-api:7.5.x For the lc-ecommerce-base module which has been renamed to bpbase-lc-common: com.coremedia.blueprint.base:bpbase-lc-common:7.5.x

    The classes in the old module lc-ecommerce-base have been moved to another base package com.coremedia.blueprint.base.livecontext. This change affects several classes in Blueprint.

    (CMS-3636)
  • If capListRepository, worklistService or workflowRepository are not configured in CapConnection, you might get NPEs later on, for example, in CoreMedia Studio. To prevent this, repository.asserNonNullBeans was introduced. If this property is set to “true” (default) in the applications application.properties file, the application will not start and you will get an exception.

    (CMS-3518)

Fixed Issues

  • CMS-3727: Avoid some unnecessary blob downloads

    The blueprint's TransformationMapBuilder has been optimized to only parse image dimensions from binary blobs when actually required, to avoid unnecessary blob downloads to the CAE if the CMPicture document already contains all required crop information. This is beneficial for clustered CAE setups with external web caches.

  • CMS-3706: Studio Server Synchronization

    Performance of the "synchronize with server" operation in the studio has been improved, by not checking and reloading content that is no longer in use by the studio. This is especially noticeable during longer editing sessions.

  • CMS-3592: Added modue lc-ecommerce-webapp-component

    The module lc-ecommerce-webapp-component contains webapp configuration shared by all Livecontext webapps.

  • CMS-3575: NPE in XmpImageMetadataExtractor

    Possible NPE in XmpImageMetadataExtractor

  • CMS-3503: Supplementary Characters in XML

    A workaround for the Java bug JDK-8058175 was added. The bug would corrupt XML files during parsing if they contain supplementary characters (Unicode code points 0x10000 and up). For the workaround, the class com.coremedia.xml.FullUnicodeInputSource has been provided as a drop-in replacement of the standard SAX InputSource. You can use this class if you parse XML in your own code. The MarkupFactory uses the workaround implicitly.

  • CMS-3451: P13N SearchValidator now searches for a certain data-attribute instead of a global js variable

    Instead of searching for a global JavaScript variable named "com_coremedia_personalization_editorplugin_searchstatus" the SearchValidator now expects a data attribute named "data-personalization-editorplugin-searchstatus" attached to a DOM element when rendering the studio preview for CMP13NSearch.

  • CMS-3419: Character set utf8mb4 for MySQL

    For correct operation in the presence of 4-byte unicode characters (e.g. emoji), any MySQL database used by the CoreMedia CMS must use the utf8mb4 character set instead of utf8. A Content Server will update its MySQL database schema automatically when started in a new version for the first time. This might take a significant amount of time as the database tables are migrated. Please plan the migration procedures accordingly.

    Besides updating the tables, the database default encoding is also set to utf8mb4 automatically during the schema update and during the schema creation in an empty database. Any system default is ignored. No manual intervention is required, but the database user for the Content Servers must be granted the necessary rights to perform the encoding changes.

    Besides setting the character set to utf8mb4, the collation is set to utf8mb4_bin, making sure that the Content Server distinguishes upper case and lower case for names. If the database had been configured with a case-insensitive collation, the Content Server might have erroneously retrieved the wrong users and groups when searching by name.

    At least version 5.1.35 of the MySQL Connector/J is recommended now.

  • CMS-3413: XSS vulnerability

    Validation messages are properly escaped when shown in a tooltip of a property field with validation issues now, avoiding possible XSS attacks through validation message parameters.

  • CMS-3410: Combo Boxes

    In various places in Studio, combo box values were escaped in order to prevent XSS attacks. However, this caused the value to be displayed incorrectly when shown as the selected value in the text field of the combo box. This has been fixed for built-in combo boxes.

    For custom combo boxes, you should not encode the value field of the combo box store, but use a custom template for the drop-down menu that properly escapes the values. For this purpose, the localComboBox component provides the encodeItems option, which replaces the standard template by a safe template.

  • CMS-3364: Asset Management Product Linklist does not show dropzone when having entries

    The Asset Management Product Linklist should also show a dropzone when there are already entries in the list, not only when empty.

  • CMS-3307: LiveContext: Validity time constraint on pages is inconsistent

    Blueprint Validation Service constraints on pages now also filters fragment calls in LiveContext e-Commerce-led scenario if not valid (e.g. if only valid from tomorrow on)

  • CMS-2848: LC2, augmentation scenario: When resolving a placement, adapt the cmpage to reflect the placement's context

    In augmentation scenario the cmpage reflects the placement's context when resolving a placement

  • CMS-981: Web Resources Importer

    The Web Resources Importer imports all files in the inbox directories now, esp. images which are not referenced from css files. This makes the resources available for usage in templates. As a drawback, you have to keep your inbox clean now, or the content repository will be cluttered with useless resources. If you do not like this change, you can simply preserve your existing css-import.properties, and the importer will behave as before.