This release brings a major update to the Personalization module which now supports component personalization in the Enterprise Pro edition of Magnolia. This release also contains some usability enhancements such as pages preview in a new tab, a new API to build a subapp of the type Tools, as well as a number of bugfixes and other improvements.

This release brings a major upgrade on the personalization module. Please note that personalization on the 5.4.9 release is available in two variants:

  • With component personalization
  • Without component personalization

We provide preconfigured EE bundles for both cases. Component personalization bundles have "cp13n" in the file name. Starting with Magnolia 5.5, all bundles will include component personalization. If you are an existing customer and prefer to build your own bundle on top of ours, the pom file of your current bundle must depend on magnolia-enterprise-pro-cp13n-webapp if you want it with the component personalization.

See also below a section on Upgrading EE Pro to version 5.4.9 with component personalization.


What has changed?

Component personalization

This release brings a major improvement for Magnolia EE Pro users: personalization of components. You can personalize any component and target it to a specific audience. Define the audience by individual traits or segment your visitors into meaningful groups.

The main advantage of component personalization is that you can make small changes and increase the relevance of content in a scalable way. There is often a need to personalize items that are smaller than a page. Combine personalization with Magnolia apps to create modular reusable pieces of content that you can reassemble to meet personalization needs, solving the content scalability problem at its source.

An added value is the possibility to hide the original component if the audience doesn't match, allowing you to offer exclusive content to visitors. Functionally, page and component personalization are the same. Editors need no additional skills to use component personalization. 

Use cases:

  • Exclusive content for loyal customers.
  • Rewards for repeat customers.
  • Upsell of related products.
  • Geomarketing of stock.
  • Personalized career pages for job seekers:

Unpersonalized careers landing page.The same page, but with a personalized component at the bottom.

MGNLPN-259

Legacy Permissions app moved to the Security app

The legacy app named Permissions has been replaced by a new subapp named Tools in the Security app. The Tools subapp lets you query groups and permissions associated to a given user. The new subapp has been implemented using the new API for ToolsSubApp.

old

new

oldnew

MGNLUI-3731

New API for Tools subapp

This release introduces a new API for a new type of subapp. Subapps are typically rendered as a tab inside an app. 

The new interfaces are:

  • ToolsSubApp
  • ToolsSubAppDescriptor

The tools subapp is a special type of subapp that enables you to add a list of "tools" to a subapp. A tool is a small functional block which is defined by a  ToolDefinition

You can define a tools subapp with just a few lines of YAML. Depending on the type of the tool definition, you may have to provide custom Java classes which implement your custom logic, typically a presenter or an action classes or both.

In the previous section you see an example of the new tools subapp API being used: the functionality from the legacy Permissions app has been moved to a new Tools subapp in the Security app.

See ToolsSubApp descriptor to learn how to use the tools subapp API.

MGNLUI-3999

UX improvements

Preview page in new tab from the Pages app

In the Pages app, you can now preview a page without the page editor displayed around the preview. When you click the  icon on the page bar, the page opens in preview mode in a new browser tab.

 => 

PAGES-73

Drag and drop can be disabled

You can disable drag and drop operations in workbenches. 

To control drag and drop operations in an app, the dragAndDrop property has been added to the class  info.magnolia.ui.workbench.definition.ConfiguredWorkbenchDefinition . The default value is true, set it to false to disable drag and drop.

MGNLUI-3835

Upload zip archive action improved in the Assets app

When you upload a zip file, Magnolia creates a folder and names it after the zip file. The contents of the zip are extracted under the folder. 

For example, if you upload my-folder compressed as my-folder.zip, the following JCR structure is created:

MGNLUI-3973

Maven dependency management for third-party libraries improved

Maven dependency management for some third-party libraries such as commons-lang libraries has been cleaned up and improved. The third-party module version has not changed. However, since we had to change the POM files on Magnolia modules, some modules got a new version and are part of this release.

Enhancements for Field factories supporting BeanItems with enum members

The following enhancements have been implemented:

  • Support of Vaadin BeanItem in configured forms (skip transformers) has been improved.
    • (warning) Clarification update 2016.11.28: Forms using both BeanItems and custom transformers effectively no longer work. Adjust your bean model, field-factory or save action instead.
      Also bear in mind transformers are a JCR mapping facility.
  • Setting a converterClass now also applies to default values. In addition, a converter is only set if the field does not support the model type.
  • Field factories may now customize the retrieval of default values from config, using #getConfiguredDefaultValue.
  • The field definition type may now be set as a fully-qualified enum name.
  • (warning)  SelectFieldFactory 's #getSelectFieldOptionDefinition has been deprecated and renamed as #getOptions.
    • Custom SelectField factory classes should be adjusted.

MGNLUI-3772

Security issues

Potential FCKeditor vulnerability

Anonymous access to legacy FCKeditor resources  /.resources/ fckeditor  is no longer allowed.

Magnolia CAS module dependency updated 

Magnolia CAS module now comes with org.jasig.cas.client:cas-client-core:3.4.1 . This update provides the correction for a critical security vulnerability in several Jasig  CAS clients that allows URL parameter injection due to improper URL encoding at the back-channel ticket validation step of the CAS protocol. 

Changelog

An aggregated changelog for 5.4.9 contains all the changes. 

This release is a recommended update for all users of Magnolia 5.

Updated modules

This release includes the following new module versions:  

  • Admininterface Legacy 5.3.3

  • Advanced cache 1.8

  • Cache 5.4.6

  • CAS 1.3.1

  • Commenting 2.3.2

  • Community Edition 5.4.9

  • DAM 2.1.7

  • Demo 0.14

  • Diff 1.7.4

  • Enterprise Edition 5.4.9

  • Form 2.3.6

  • Google Analytics 1.3.2

  • Google Sitemap 2.3.4

  • Groovy 2.4.6

  • Imaging 3.2.7

  • JCR Tools 1.0.2

  • LDAP 1.7

  • Log Tools 1.0.3

  • Magnolia 5.4.9

  • Magnolia Templating Essentials 0.13

  • Multisite 1.2.4

  • Newsletter 2.1.1

  • Observation 2.0.5

  • Pages 5.4.8

  • Personalization 1.3

  • Resources 2.4.7

  • REST 1.1.2

  • REST Client 1.0.9

  • Site 1.0.9

  • Soft Locking 2.5.1

  • Tags Manager 1.2.2

  • Templating Samples 5.3.1

  • Tools 1.7.1

  • UI 5.4.9

  • Workflow 5.5.3

Upgrading EE Pro to version 5.4.9 with component personalization

The following procedures are applicable only if you have installed an EE Pro bundle without component personalization.

If using Maven dependency management, update the pom.xml of your web app:

  1. Extend magnolia-enterprise-pro-cp13n-webapp instead of magnolia-enterprise-pro-webapp .
  2. In magnolia.properties set magnolia.ui.vaadin.widgetset=info.magnolia.widgetset.MagnoliaProWidgetSet .

Updating an instance manually:

  1. Replace magnolia-pages-app-5.4.x.jar with magnolia-pages-app-5.4.8.jar .
  2. Replace magnolia-pages-editor-widgetset-5.4.x.jar with magnolia-editor-widgetset-5.4.8.jar .
  3. Replace each personalization-x-1.2.x.jar with personalization-*-1.3.jar  .
  4. Add personalization-components-1.3.jar .
  5. Add personalization-widgetset-1.3.jar .
  6. Replace magnolia-vaadin-widgetset-5.4.x.jar with magnolia-vaadin-widgetset-pro-5.4.9.jar .
  7. In magnolia.properties set magnolia.ui.vaadin.widgetset=info.magnolia.widgetset.MagnoliaProWidgetSet .

How to update from earlier versions 

Changes for 5.4.x

The following changes apply only to users running Magnolia 5.4 (major release) and maintenance releases 5.4.1 to 5.4.3.

magnolia.properties file

Add the following lines:

magnolia.resources.dir = ${magnolia.home}
magnolia.resources.classpath.observation.pattern=.*\\.(ftl|yaml)$

MAGNOLIA-6248

In Magnolia 5.5 it was discovered that the above settings can cause issues with publication. As reported in  MAGNOLIA-6248 - Getting issue details... STATUS  the correct way to set the resources directory is to use a dedicated folder, such as, modules.

magnolia.resources.dir = ${magnolia.home}/modules
magnolia.resources.classpath.observation.pattern=.*\\.(ftl|yaml)$

The name "modules" is just a convention but whatever folder its configured for must also be created or already exist. 

Important changes for Magnolia 5.2 and 5.3 users

If you had STK installed

If you continue to work with STK, use the new magnolia-enterprise-pro-stk-bundle as a basis for your project. It includes Enterprise Pro, STK and the old demo project. You get all STK functionality out of the box. Exclude the demo-project if it's in your way.

Jackrabbit configuration

In order to enable getting an HTML excerpt in a query result, you should update the configuration files of your Jackrabbit instances. Add the two <param/> directives within your <SearchIndex> block.

<SearchIndex>
  <!-- more params here -->

  <!-- needed to highlight the searched term -->
  <param name="supportHighlighting" value="true"/>
  <!-- custom provider for getting an HTML excerpt in a query result with rep:excerpt() -->
  <param name="excerptProviderClass" value="info.magnolia.jackrabbit.lucene.SearchHTMLExcerpt"/>
</SearchIndex>

log4j.xml addition

Add the log configuration for org.reflections

...
 <category name="org.apache.jackrabbit">
    <priority value="WARN" />
  </category>
 <!-- Reflections library spoils logs with hundreds of harmless warnings; tries to look into native libs but none of its DefaultUrlTypes can handle them. -->
  <category name="org.reflections">
    <priority value="ERROR" />
  </category>
  <category name="com">
    <priority value="WARN" />
  </category>
...

How to update from Magnolia 5.2 and earlier

To update your project, follow the standard update procedure, then make the following changes:
  1. Update your content apps with the content app upgrade task. It automatically takes care of the following:
    • Using the content connector.

    • Updating configuration of availability rules and default rule classes

    • Updating selected action definitions with node-type based availability

  2. If you used the DAM: 
    • Replace DamManager with AssetProviderRegistry.
    • See DAM and the STK and DAM templating on how to use assets in your templates.
    • The DAM changes have no impact on the STK. There is no need to modify Freemarker scripts because the new DAM API is abstracted from STK.
  3. If you have a custom jBPM workflow:
    • In the info.magnolia.module.workflow.jbpm.JbpmWorkflowManager#completeWorkItem method, checking for present parameters is obsolete and refers to publication related workitems. The method is no longer used for completing a workitem in the new human task context. It is still valid in the context of completing service tasks, however.
    • Stop using the info.magnolia.module.workflow.jbpm.JbpmWorkflowManager#getWorkItem method. It was used to complete a work item for human tasks. Furthermore, the wrapper we initialize only holds the mgnlData map.

    • The previously hardcoded mgnlData parameter is now configurable in /modules/workflow/commands/workflow/activate/activate/parameterMapName.

  4. If you have custom widgets or Vaadin add-ons:
    • Magnolia's default widgetset was relocated to info.magnolia.widgetset.MagnoliaWidgetSet.
    • Update your webapps's magnolia.properties file.
    • Otherwise Magnolia will automatically fall back to the new widgetset but will issue warnings during upgrade, and whenever a user logs in to Magnolia.

How to update from Magnolia 4.5 and earlier

Are you running on Magnolia 4.5 or earlier? It’s time to move to 5. Contact us for migration support and look at the migration process.

Known issues

Allocate more JVM memory

Magnolia 5.4.9 ee-bundle may require you to allocate more memory the Java Virtual Machine (JVM). If you see a java.lang.OutOfMemoryError in the startup log or the system stops responding during installation, increase the Java heap size. The default maximum heap size is 512M. Try a higher amount such as 1024M. We are working on uncovering the root cause for the increased memory need.

See: Java out of memory

Processed Resources app conflict

If you upgrade to Magnolia 5.4.9 from 5.4.2 or earlier then you will experience UUID conflict if you try to also install the new Processed Resources app during the upgrade.

java.lang.RuntimeException: Error importing config.modules.processed-resources-app.dialogs: a node with uuid a53f308a-0d6a-4bb9-a5f8-6f11ff68504d already exists!

To workaround this issue complete the upgrade before installing the Processed Resources app.

Acknowledgments

The Magnolia team would also like to thank everyone who reported issues, contributed patches, or simply commented on issues for this release. Your continued interest helps us make Magnolia better. Special thanks go to: Thim Anneessens, Nils Breunese, Thomas Comiotto, Teresa Miyar, Diana Racho, Frank Sommer, Vivian Steller, Richard Unger and Tom Wespi.



#trackbackRdf ($trackbackUtils.getContentIdentifier($page) $page.title $trackbackUtils.getPingUrl($page))
  • No labels