We apologize for untranslated text, you can use the Google Translation button to get an automatic translation of the web page in the language of your choice.

JCMS 5.6 : New Features

1. New functionalities

1.1 Hierarchical groups

With JCMS 5.6 groups become hierarchical.

A group may be composed of sub-groups, each composed of sub-sub-groups, and so on. A given sub-group can be attached to several parent groups (JCMS prevents the creation of circular dependences).

Exemple de groupes

Fig. 1. Example of a group hierarchy

A member belonging to a group automatically belongs to all its parent groups too. In the example above, a member of group G5 is automatically a member of groups G2 and G3, and of group G1 as well.

The introduction of hierarchical groups requires a distinction to be made between groups for which a member is explicitly declared (G5 in the example) from those deduced from the hierarchy (G1, G2, G3). All the JCMS APIs works on the deduced groups. In the example, if we allow group G1 to access a publication, then members declared explicitly in groups G2, G3, G4 and G5 will also have access to this publication.

The interfaces used to manage members and groups have been revised. A column has been added on the left to navigate in the groups tree structure.

Liste des membres

Fig. 2. List of members with hierarchical groups

To ensure compatibility with earlier JCMS versions, the Member.getGroups() method returns all the deduced groups to which a member belongs. Explicitly declared groups are obtained using the Member.getDeclaredGroups() method.

Hierarchical groups necessitate a migration of the store.xml file (see section 3).

1.2 iCalendar export

Calendar events can now be exported in iCalendar format which is recognized by Microsoft Outlook. This means that by clicking the iCal export icon a user can import into his agenda an event or a whole series of events.

Export iCal

Fig. 3. iCalendar export from the Calendar portlet

1.3 Cloud Portlet

The Cloud Portlet presents a set of categories in the form of a cloud in which the size of each category is proportional to its interest, in other words a "visually weighted list". This portlet is inspired by the tag clouds we find in popular tagging systems such as flickr, technocati and del.icio.us. It gives visitors a rapid impression of what they can find on a site.

Portlet Nuage - Alphabetique

Fig. 4. Example of a portlet cloud (sorted alphabetically)

In JCMS 5.6, the interest of a category can be calculated according to three criteria:

  1. the number of consultable content items in the category,
  2. the number of consulted content items in the category (known from the number of "Reader Notes"),
  3. a custom criterion.

The categories can be listed in alphabetic order or by size.

Portlet Nuage - Taille

Fig. 5. Example of a portlet cloud (sorted be size)

The many options found on this portlet include:

  • Categories: the category branches to be presented
  • Unit count: criterion for calculating the interest of categories
  • Category links: type of link (browsing or searching) to be placed on each category
  • Sorting: presentation in alphabetic order or size order (or both)
  • Distribution scale: logarithmic or linear
  • Levels: number of distribution levels
  • Maximum number of categories to display: used to limit the number of categories displayed to the first "n" (a zero value means no limit)
  • Threshold: categories smaller than the threshold are not shown
  • Refinements: the cloud can be constituted dynamically from descendants of the current category.

The Cloud Portlet is based on the <jalios:cloud> tag that provides all the portlet options and also enables use of a specific algorithm to calculate the interest of each category (by implementing the Category.CloudQuantifier interface).

1.4 Security Filter

The SecurityFilter has been added to counter phishing and cross-site scripting (XSS) attacks

When activated the SecurityFilter checks that links lead only to authorized addresses. This prevents rerouting to external sites designed to mislead users, for example clones of reputable sites that incite them to reveal confidential information ("phishing").

It also checks the content of certain http request parameters in order to prevent the insertion of malicious code ("cross-site scripting").

When either one of these attempts is detected, the user is either directed to the same URL, but with the fraudulent parameters removed, or to a configurable alert page.

By default the SecurityFilter is deactivated. To activate it, it must be added to the web.xml file. Details of this implementation are given in the JavaDoc: docs/javadoc/com/jalios/jcms/servlet/SecurityFilter.html

1.5 i-mode

JCMS 5.5 introduced a PDA detection feature. JCMS 5.6 further enhances the support for mobile terminals by adding detection of i-mode browsers. The default behavior is to redirect the access to a page specifically for mobile devices, but it is quite possible to redirect it to a specific portal for this type of device (by modifying the behavior of index.jsp).

1.6 Permalinks

Content permalinks have been added on search results and in the header of detailed display templates.

2. Enhancements of existing functionalities

2.1 Rich-text field history

JCMS enables users to consult the history of any content, for example to compare the differences between two versions field by field. JCMS 5.6 improves the comparisons of rich-text fields by making it possible to consult either just the text (without tags) or the HTML view (with the tags).

Comparaison Wysiwyg

Fig. 6. Comparison of versions of a rich-text field.

2.2 Improved rendering of Workflows

JCMS 5.6 brings better rendering of complex workflows. Whatever number of states and transitions, the entire workflow appears in the page and the user can zoom in on individual states.


Fig. 7. Example of a workflow with many different states.

2.3 Profiling of portlet weights

JCMS 5.5 introduced a portal pages profiler enabling the memory consumption and processor needs of each portlet to be known. JCMS 5.6 completes the analysis by indicating for each portlet the size of the HTML fragment it has produced.


Fig. 8. New column indicating the HTML size of portlets in the analysis of a page.

2.4 Running the Garbage Collector

In the JCMS 5.6 memory consumption monitoring interface it is possible to see the instantaneous memory consumption and to run the Garbage Collector (GC). This is generally necessary only if the site suffers memory problems and it becomes useful to analyze how memory is being freed.

Consommation mémoire

Fig. 9.Monitoring of memory consumption

2.5 Friendly URLs

With JCMS 5.6 it is no longer necessary to input a slash "/" at the end of a friendly URL. For example, by declaring the friendly URL "/faq" on the JaliosXperience site, it can be reached by faq or faq/ .

A pager has been added in the friendly URL management interface to enable large numbers of friendly URLs to be handled.

2.6 User documentation

The JCMS User Manual has been updated (currently to version 5.5; version 5.6 available on JaliosXperience).

3. Incompatibilities

The introduction of hierarchical groups has modified the structure of the Member class. Group-type fields have been replaced by the declaredGroups field. During migrations to JCMS 5.6, this modification must be made in the store.

JCMS 5.6 comes with a utility to perform this conversion: start JCMS 5. 6 then authenticate as Administrator and go to admin/classpath.jsp and follow the instructions. Launch the converter in the command window:

Java com.jalios.jcms.tools.StoreConverter oldStore.xml newStore.xml

For migrations of webapps earlier than JCMS 5.5, all resources must be converted into UTF-8.

4. Correctifs

JCMS 5.6 fixes 21 bugs reported in JCMS 5.5.