1. Collaborative spaces
1.1 Collaborative space plugin
The collaborative space plugin is a key feature of collaborative working using JCMS. It has been completely redesigned to make it even easier to use and administrable from the front-office.
A new wizard is provided to create a collaborative space in just a few clicks. After entering the name and description of the space and its access policy (public or private), you choose a model then invite members to join this new space. If you have sufficient rights, the space is created and becomes operational immediately. Otherwise, an opening request is submitted to a workflow; once this is accepted, the space is created and you are informed by e-mail.
The space's administrator manages the participating users. He can choose different registration policies: unrestricted, subject to validation, or managed exclusively by the administrator. He can also send invitations.
A collaborative space is always created using a model that defines its component services. These may be basic services (latest content, workflows, glossary, etc.) and services provided by different JCMS plugins (calendar, member activity, wiki, documentary management, suggestion boxes, etc.).
Finally, an administrator can configure his space (public/private access, registration mode, etc.), define the page layout and skin (bar type, colors, etc.).
1.2 Calendar
1.2.1 Calendar portlet
All the calendar functions are now in the calendar plugin. The interfaces have been modernized and redesigned to make them easier to use. The calendar portlet's detailed view interface is used to create events, move them by simple drag/drop, filter and perform searches.
1.2.2 Calendar events
Events are edited in a multi-step form that appears in a modal window.
Calendar events have been enriched. You can now associate an event with a place, resources and documents. You can define events lasting the whole day, private/public events, even repetitive events such as "every Monday from 14:00 to 15:00" (exceptions can be defined).
1.2.3 Event resources
Resources of various types can now be reserved for events: meeting room, video projector, vehicle, teleconference system, and the like. The Event Resource type enables an event with a simple structure to be created rapidly (title, characteristics, location and photo). If necessary, sub-types can be defined. Each resource has its own calendar that identifies its availability.
Once an event is created, each participant receives an invitation by e-mail. He will be added to the list of confirmed participants if he accepts.
1.2.4 Event planning
The event planning service is rather like the online service "doodle.com" which proposes an original way of fixing a meeting date between several people. The meeting organizer proposes dates and selects participants. Each participant receives an e-mail asking them to state their availability for each date. Once everyone has replied, the organizer selects the best meeting date, which triggers the automatic creation of the calendar event. The participants are then informed of this date.
Ongoing scheduling of events is visible in the calendars. A portlet is provided to see all plannings rapidly to see how they are progressing.
1.3 Wiki
The Wiki plugin is a very simple collaborative editing system that can be used within a collaborative space. JCMS 7 gives more flexibility to authors using Wiki input fields.
When a Wiki page includes many content items, it is generally organized into sections. The author can now edit the content of a given section – directly on the page – simply by clicking the associated edit icon. The editing field then replaces the chosen section.
In previous versions, the preview function opened a new window to show the formatted text. To avoid opening and closing this window, the author can now switch to preview mode; the editing field is then replaced by the formatted text. The editing field reappears when he clicks the preview icon again.
When editing, the author enjoys auto-completion functions, which means he can rapidly insert a link to a data item such as another Wiki page, a document, a member profile, and so on. He can also use the menu to insert processing tags such as content, figures, video player, or one of the new tags available (image gallery, search results, portlet, etc.). Finally, images inserted in Wiki pages can be resized simply by entering the required width or height.

Fig. 10. Example of wiki editing by section with insertion of a link to a member (note the auto-completion feature).
.
1.4 Publication follower
As a complement to existing notifications functions, JCMS 7 proposes a new system for tracking publication updates. By clicking the icon , a member interested in changes made to a given content item will receive an e-mail after each modification. He will also be informed of new reviews or comments.
1.5 Project tracking (Gantt chart)
The Gantt plugin provides a project management system in the form of a Gantt chart. This is not intended to replace sophisticated project management applications such as Microsoft Project (although it can import and export projects in Microsoft Project format). It just provides some essential information for monitoring the progress of small projects.
A My Projects portlet is used to access projects already created and to create new ones. A wizard is provided to start new projects and define all the aspects to be monitored.
Once a project is created, you can define tasks and the members associated with these tasks and their assignment rates. Tasks can be decomposed into sub-tasks and can be dependent on other tasks. The project display template shows the tasks tree structure and the schedule as a Gantt chart.
Project participants can enter the time they have spent on each task. And it is possible to consult the occupation of all the participants and the global project advancement.
1.6 Hierarchical spaces
The Hierarchical Spaces plugin has been integrated natively in JCMS 7. A workspace administrator can create sub-workspaces that can in turn be decomposed into sub-spaces.
The former workspace selection method has been improved. If a user belongs to more than 20 spaces (this is parameter-defined via the hierarchical-ws.menu-limit property), the space selection interface is no longer a menu with the list of spaces, but now a modal window with a predictive input field to designate the chosen space and list the last spaces visited.
2. Conversation spaces
The Conversation spaces plugin brings a new conversational dimension to JCMS. It provides a vehicle for contacts and interactivity between people interested in specific subjects. In a sense the conversation space is the successor of the traditional forum. This plugin presently supports two types of conversation space: suggestion box and collaborative FAQ.
A conversation space is managed by one or several animators. It is also possible to assign an expert group. Users start a discussion on a precise subject, often an idea or a question. The other members can participate at several levels, by posting reactions, answers and remarks or by voting. These votes help identify the most interesting ideas, the most relevant questions and the best answers. In this manner, the members help to enhance the value of the information.
2.1 Suggestion boxes
Suggestion box can be created to allow participants to post ideas. To each idea they attach a description that may contain media (documents, images, video), categories, keywords (tags). Other members vote for or against each idea and post their reactions. They can also vote for or against the reactions of other members and make clarifying remarks about ideas and reactions. Finally, the space's animators manage the life cycle of ideas by means of statuses (idea accepted, planned, implemented, etc.).
2.2 Collaborative FAQ
In a Collaborative FAQ members post questions. Like the ideas in a suggestion box, questions are categorized and accompanied by a description and keywords. Members vote on the relevance of the question and post answers. They can also vote on the answers of other members. By default, every answer earns its author a parameter-defined number of points (one point by default). Finally, the initiator of a question (or the animator) can decide which of the answers is the best.
2.3 Points system
In order to motivate participants and enhance the conviviality of conversation spaces, each space uses a parameter-defined points system.
Participants can earn points:
- when people vote on their questions, ideas, answers and reactions;
- every answer in a FAQ space earns its author one point (by default);
- if an answer to a question is chosen as the best one, the person who posted this answer earns 2 points (by default).
In each case, the number of points is parameter-defined.
The points earned by each member are specific to each conversation space: they are displayed alongside the member's photo and in his/her profile.
2.4 Dashboards
The home page of each conversation space displays its best contributors, experts and animators.
A member's profile shows statistics on his participation in conversation spaces, the members who are involved and the people whose conversations he is monitoring.
Space animators have a dashboard showing membership and activity statistics.
2.5 Notifications
Notifications are sent by e-mail as a means of ensuring the participants' reactivity. By default, every contributor receives notifications about interchanges in which he is involved. In each space, he can also ask to be notified of new conversations.
2.6 Security
The conversation spaces are JCMS content types and as such they benefit from all the access controls provided by JCMS. This means it is possible to restrict access to a conversation space to a particular group.
On spaces open to the public, an alert system can be set up to enable users to report inappropriate content to the animators. After 3 alerts, this content transferred into a moderation workflow.
Finally, animators have complete power over conversation spaces: they can edit and delete contributions as they like.
2.7 Integration with other JCMS plugins
2.7.1 Jalios ESN (Enterprise Social Network)
The conversation space plugin adds a "Conversations tab" in the ESN profile of a member. This tab lists all the conversation spaces in which he participates.
2.7.2 Collaborative space plugin
Via a conversation space portlet, it is possible to add suggestion boxes and FAQ spaces as services in a collaborative space. If this space is private, all the content of the conversation spaces will be private as well.
2.7.3 Desktop plugin
The conversation space portlet can also be placed on a member's personalized desktop. In this case, it lists the latest conversations in all the spaces in which the member participates. It can be used to ask a new question or publish a new idea rapidly.
2.7.4 iPhone plugin
This plugin makes conversation spaces accessible via an iPhone or Android smartphone. The interface enables remote participation (consult, vote, contribute) in all the user's spaces (see section 5.2.3).
3. Documentary management
All JCMS versions had rich documentary functions (upload, edit, lock, workflow, etc.). JCMS 7 brings several technical and functional enhancements.
3.1 DB Documents
In previous versions of JCMS, all documentary management was based on the "Document" data type. A document contains metadata associated with the file (title, author, categories, rights, etc.) and the file access path. The file is stored in a tree structure managed by JCMS and designed to hold large volumes of documents. The documents are stored in JStore storage, which makes them very fast to access, but limits the volume to a few hundred thousand documents.
JCMS 7 pushes back this limit and now enables millions of documents to be managed. To do this it introduces a new data type – "DBDocument" – which stores the metadata associated with the file in the JCMS "JcmsDB" database. The files are still stored in the original tree structure.
Functionally "DBDocument" items have essentially the same functionalities as "Document" items:
- Metadata
- title, description, author, creation date, modification date, etc.
- categorization
- major and minor versions
- access rights
- Reader tracking
- Historization of versions
- Indexing and multi-criteria searches
- Workflow
- Locking
- WebDAV editing
- Editing using the Microsoft Office add-in
- OpenAPI access
The limits on DBDocuments are the same as for all publications stored in JcmsDB (see section 7.1).
Note that the two types Document and DBDocument can coexist.
3.2 Multiple uploads
JCMS 7 comes with a new file upload interface. This allows several files to be selected for uploading at the same time. With some browsers it is possible to select the files by drag/drop (see the list of compatible browsers).
A progress bar shows the progress of uploads.
3.3 Image editor
JCMS 7 comes with an image editor that can crop and rotate images. After making modifications, you can choose to update the original image (this is possible only in JPEG format) or save a new image.
3.4 Document sizes
The Data Report interface present in workspaces has a new "Documents" tab that lists the sizes of all the files of each document type (PDF, Word, Excel, etc.) present in this space. This function is also available in the Admin Area to see the weight of the files in an entire JCMS system. The figures displayed do not include the associated files (thumbnail, PDF, SWF, etc.) nor archived earlier versions.

Fig. 27. The "Documents" tab in the dashboard shows the total size of document types in the workspace.
3.5 Locking
In order to avoid concurrent modifications, JCMS enables a document being edited to be locked. Unlike the locks on other content types, they are not only for information: they actually prevent editing of the document. Only workspaces administrators and Main Administrators can force the unlocking of these locks.
These locks are used when editing with WebDAV or the Microsoft Office add-in. Since locking and unlocking can be frequent, these locks are now stored in JcmsDB.
The list of the locked documents can be seen in the Documents tab of the workspace dashboard.
3.6 File processing and indexing
JCMS 7 integrated natively a file management system that can trigger actions when files are uploaded to JCMS. This functionality, previously provided by the file processor plugin, was used by several functions such as PDF conversion and file import. These functions are no longer dependent of this plugin. Moreover, the file processor plugin is no longer usable in JCMS 7 and has been replaced by the Document Indexer plugin.
It is also possible to use this system to supervise other folders in which files arrive. For example, the Import Document plugin and Kofax plugin (document capture) do this.
3.7 Document Viewer
The Document Viewer plugin adds a viewer to leaf through documents in document display pages. The viewer does not display the actual document, but rather a version converted into SWF. This conversion is made by calling an external utility program such as "pdf2swf" (in this case, only PDF files can be displayed). To be able to view documents in other formats (MS Word, Excel, PowerPoint), you must install the PDF Converter plugin.
Thanks to the viewer, it is no longer necessary to open documents using their original application. Also, by default, JCMS is configured such that you are redirected to a page of a document when you click a document link, rather than triggering its download. However, this behavior can be modified using the file-document.default-detail-view property.
4. Personalized desktop
The Personalized Desktop plugin gives each member a personal portal page in which he can choose the services he wants to use. These services take the form of portlets available on the site (RSS feeds, calendar, directory, conversation, tasks, bookmarks, etc.).
The new version of the plugin enables any service to be seen in an enlarged view. It then occupies the entire space of the desktop, in which case the portlet's full template is used instead of its box template.
4.1 RSS feeds
RSS feeds are an essential feature of many personal desktops. The new feed engine used by JCMS 7 is more robust for poorly formatted feeds, and it supports both Atom and RSS feeds. The RSS portlet allows an enlarged view in addition to the view in boxes to browse incoming articles. Finally, JCMS grays articles already consulted to make it easier to spot new ones.
4.2 Microsoft Exchange
The Exchange plugin provides 5 portlets that enable Microsoft Exchange messaging tools (e-mail, contacts, events, tasks) to be integrated in a personalized desktop, or in fact in any other part of the site.
The latest version of this plugin is now compatible with Microsoft Exchange 2007 and 2010 thanks to the use of Exchange Web Services. Compatibility with Exchange 2003 is still assured via the SyncEx connector. Regardless of the Exchange version used, the plugin provides a portlet that enables the OWA (Outlook Web Access) service to be integrated in a desktop while allowing single sign-on.
4.3 Lotus Notes
The Lotus Notes plugin, in the same manner as the Exchange plugin, enables access to five IBM Lotus Notes messaging services from a personalized desktop: e-mail, contacts, events, tasks and notepad. The plugin supports searching in a Notes bases and import of a Notes base. Two sets of portlets can be used to display these services.
4.3.1 iNotes portlets
These portlets insert iNotes Web Access services in the personalized desktop while allowing single sign-on. It is possible to use either a single portlet containing all the services (e-mail, events, tasks, etc.) or one portlet for each service.
4.3.2 Lotus Note portlet
These portlets provide information on each service (e-mail, events, tasks, etc.) by interacting with the Domino server via the Jalios Notes Agent. This agent is supplied with the plugin and must be installed and configured on the Domino server.
4.3.3 Searching
The Lotus Notes plugin enables textual searches to be extended to include Notes bases, once these have been declared. You must have the necessary rights to search in these bases. The search requires the presence of the Jalios Notes Agent in the Domino server.
The results found in Notes bases are marked by an icon . If a mapping has been defined with a JCMS type, they can be consulted directly in the JCMS portal, otherwise they will be displayed in the Lotus Notes web interface.
4.3.4 Importing a Notes base
The plugin provides a function to import the entire content of a Lotus Notes base into JCMS. First, you must define a mapping between Lotus Notes documents and JCMS content types. For simple cases this mapping can be done via properties. For more complex cases, it is possible to define a Java class (NotesImportHandler) to handle the mapping.
5. iPhone plugin
The iPhone plugin makes all the services of a JCMS intranet accessible to iPhone and Android smartphone users.
This is a web application, not a native application, so the user has no installation to do. Nevertheless, a special effort has been made to give this application the behavior and reactivity of a native application.
This plugin provides a set of basic services and can accept the services of several other JCMS plugins.
5.1 Basic services
5.1.1 Authentication and home page
It is necessary to be authenticated to get access to a site via a smartphone. The plugin has a user authentication interface adapted to the screen size. After authentication, a home page appears listing all the accessible services (this reflects the installed plugins and the user's rights).
5.1.2 Searching
The search interface enables searching in all the content on the JCMS site for which the member has read rights.
5.1.3 Content display
The display is adapted to the size of the smartphone screen. For documents, links open the file and the PDF version if it exists. The display is extensible. For example, the DB Comment plugin adds the ability to put comments on publications.
5.1.4 Workflow
With the Workflow service you can validate the content and forms submitted to you and on which you are working.
5.1.5 Administration
The administration service is restricted to Main Administrators. It gives them site supervision information: statuses, event logs, etc.
5.2 Additional services
5.2.1 Directory
The Directory plugin allows you to search in the directory of members and contacts. Each person's page contains his personal information, including clickable contact details (phone numbers, SMS number, e-mail address, postal address) and additional points of entry. For example, the ESN plugin adds a link to a member's activity.
5.2.2 Calendar
The Calendar plugin allows you to see your upcoming appointments.
5.2.3 Conversation spaces
The Conversation Space plugin provides complete access to the collaborative FAQs and suggestion boxes. You can consult the latest conversations, react, vote, answer, propose new ideas and pose questions.
5.2.4 Jalios ESN (Enterprise Social Network)
Jalios ESN provides services to monitor the status of the members of your relational network, consult their activities and update their status.
5.2.5 Task management
The Tasks plugin adds a service to consult and manage lists of tasks (add, change, delete).
5.2.6 Personalized Desktop plugin
The Personalized Desktop plugin allows you to receive on your smartphone all the RSS feeds arriving on your personalized personalized desktop.
6. Administration and operation
6.1 Access Control List (ACL)
JCMS 7 has a new feature called the Access Control List (ACL) to control access to the site's advanced functions. ACL does not replace the data rights system (publications, categories, workspaces, etc.), but it completes it by making it possible to decide who has access to the technical and functional administration functions.
Access Control Lists do not radically change the role of the Administrator who still has complete access to all the site's functions. On the other hand, they enable him to delegate the management of parts of the site to identified users. For example, he could give certain functional users responsibility for managing user accounts and give other more technical users access to site supervision functions.
The general principle is to define access control lists each of which gives access only a specific set of functions. Each ACL is then associated with a group whose members are then all covered by the ACL.
In order to make ACLs as easy as possible to manage, the functions proposed are grouped in a tree structure. Giving access to a particular level also gives access to all the lower levels. All the Admin Area and workspace administration functions can be assigned. When a member has access to a particular Admin Area function, he can access this space and use this function, but he does not see any of the other functions to which he does not have access.
An audit function is provided to display all the accesses of a member or group. Inversely, it is also possible to see all the members having access to a given function.
The ACL system is extensible in that each plugin can add its own functions covered by ACLs. For example, the collaborative space plugin can be used to assign to an ACL the right to create a new collaborative space.
6.2 Deployment script
JCMS 7 introduces a new deployment system that replaces the DeployManager. This system can be used only with the JCMS sites running on a Unix or Windows 2008 server. Sites running on Windows 2003 can continue to use the DeployManager.
This system is based on a new organization of the webapp in which the application files are physically separated from the data files. These two spaces are linked by means of symbolic links. The files are grouped in the three following folders:
- WEB-INF/data: contains (among other things) the Store, properties, logs, statistics, etc.;
- upload: contains all files uploaded to the site;
- archives: contains all archived publications.
Unlike DeployManager that deployed only changes (updates), the new deployment script deploys a complete webapp archive (WAR file). This simplifies deployment both for the development team, which simply provides the webapp to be deployed, and for operators who can now deploy a webapp by a single command line instruction.
For more details, see the JCMS 7 Installation and Operation Manual that describes this new deployment procedure in detail.
6.3 Access statistics export
JCMS has always provided some site usage statistics, but these were fairly basic: number of visitors, most-visited contents, most sought keywords, etc. These are too limited for some users, particularly if they need to cross-compare several criteria or make analyses over long periods. JCMS 7 provides a function to export complete access information (date, member, publications consulted, etc.) to allow them to be analyzed externally by specialized tools.
When using the export function you can specify a particular period and workspace to export. By default, the export is in CSV or XML format, but other formats can be supported.
Since an export can take some time in cases of voluminous data, the processing is done in background. The requester receives an e-mail when the export is done.
7. JcmsDB
7.1 Enrichment of DB Publications
Since version 6, JCMS employs a hybrid storage system using the "JStore" and a relational database "JcmsDB". The JStore allows very high-speed access and enables management of a richly structured object graph. JcmsDB is intended for voluminous, more peripheral data and data subject to frequent updates.
JCMS 7 removes several functional limitations on publications stored in JcmsDB:
- Volume: JCMS 7 is designed to manage several million DB Publications while maintaining good performance, notably during the searches.
- Categorization: DB Publications can be categorized, although there are some limits:
- No refinement on the current category for query/foreach portlets that display DB Publications;
- No refinement by contextual categories;
- Explorer portlet: no multicategorization.
- Historization and version: all changes on a DB Publication can be historized. Each modification can be marked as major or minor. You can consult all the versions of a DB Publication, make comparisons and even return to an earlier version. Since the historization of versions can involve very large data volumes in the database, it is activated only on demand for each type of publication. In the standard configuration, only the DBDocument type is historized.
- Track Readers: reader tracking can be activated for DB Publications, as can sorting by number of readers.
- RightPolicyFilter: DB Publications can be subject to RightPolicyFilter dynamic access control (canBeReadBy() method). However, since this control can affect performance, developers must state for which type of query this control must be made (callCanBeRead() method). For example, a RightPolicyFilter operating on the Comment type must not impact searches on DB Documents.
JCMS 7 is designed to provide an acceptable response time even with queries involving large numbers of publications. In order to allow use of JCMS advanced search functions (hybrid and multi-criteria searches, paginated searches, dynamic rights, etc.), the search engine gives priority to response time rather than the exhaustiveness of the results. If a search is interrupted before it completes, the icon (i) indicates that the results are partial. Several properties can be set to control the search algorithm.
Property |
Default Value |
Role |
dbpub.search.category.exact |
False |
False: usual JCMS behavior. |
dbpub.search.auth-group.parents | (empty) | Can be used to define the parent groups to check for read right control. By default, all the groups of the member are used. By choosing only some parent groups (ids) to check, you improve the search performance. |
dbpub.search.max-pub |
100000 |
If a paginated search involving dynamic rights concerns more data than the value set by this property, the search is interrupted. |
dbpub.search.fulltext.hits.timeout |
5 seconds |
During a textual search, if the search for results takes longer than the time set by this property, the search is interrupted. |
dbpub.search.scroll.timeout |
5 seconds |
During a textual search, if scrolling of the results takes longer than the time set by this property, the search is interrupted. |
dbpub.search.scroll.pagesize |
1000 |
Page pre-loading size during scrolling of the results in a paginated search. |
dbpub.search.row-id-set.max |
500 |
Maximum buffer size used when loading data identifiers in batches. |
7.2 Second-level cache
To increase the performance of searches and queries submitted to JcmsDB, JCMS 7 integrates EHCache, a second-level cache system for Hibernate. JCMS 7 has been adapted for make this system compatible with the use of JSync.
Hibernate manages a first cache level in which it stores the objects that were loaded during a Hibernate session. On the other hand, if a given object is also used in a second session, Hibernate triggers an SQL query again to load it.
The second-level cache manages access to the objects between different Hibernate sessions, thereby improving performance by avoiding reloading of objects previously used.
EHCache also caches SQL queries and their results. In this way, when a query already made is submitted again, EHCache finds the associated results. Caution, however! These are the results of the SQL query, not objects returned by Hibernate. Therefore if this query concerns the loading of objects, these must be loaded separately. The second-level cache also acts at this moment. The query cache is particularly useful for memorizing the results of projections, typically counting queries (count(*)). For a paginated search, JCMS makes two queries: a first counting query to know the total number of results and a second query to load the set of results. Thanks to the query cache, these queries will be processed very rapidly, triggering SQL queries only on the first access.
On the other hand, these two caches must be invalidated when the content of the tables evolves. EHCache handles these invalidations within a JCMS instance. But in a replicated architecture with JSync, each JCMS replica must trigger invalidations of the caches when a data item in the base has been modified on another replica. To enable this, JCMS 7 uses a listening system (DBListener) on writes in the base which triggers these calls on each of the replicas.
JCMS 7 provides a standard configuration for EHCache, but it is possible to change the default values defined in the file WEB-INF/classes/ehcache.xml.
7.3 Declaration via a Data Source
The JcmsDB database is usually declared by stating a JDBC URL, a login and a password. To complement of this type of declaration, JCMS 7 allows JcmsDB to be declared via a Data Source.
A Data Source is defined in the application server and associated with a JNDI path of the type java:comp/env/jdbc/jcmsdb. Using a Data Source makes it possible to mask from JCMS the details of the database connection and also to create advanced configurations proposed by the application server, for example a connection pool. For this reason, the c3p0 connection pool supplied with JCMS is disabled when JcmsDB is declared via a Data Source.
7.4 DB2 support
In addition to support of the PostgreSQL, MySQL, Oracle, SQLServer and Derby relational database management systems, JCMS 7 supports the IBM DB2 9.7 RDBMS. For performance reasons, the recommended size of the database pages is 32 KB.
7.5 UTF-8 and SQLServer
JCMS 7 enhances multilingual support when SQLServer is used. The new Hibernate dialect for SQLServer uses column types adapted to the management of UTF-8 encoded characters.
8. Ergonomics
JCMS 7 has been given a new graphic style and ergonomics that will continue on future versions. This first restyled version includes new man-machine interface components, portal page improvements and revamped back-office interfaces.
8.1 New components
8.1.1 Modal forms
Version 6 of JCMS introduced modal windows (sometimes also called "lightboxes" or "pop-ins"). Their purpose is to attract the attention of the user while not changing his browsing context.
JCMS 7 now employs modal windows for forms that must be input in the front-office, for example to input calendar events, to open collaborative spaces, to add a contact in the directory or to update his status.
When the form includes many fields, these are grouped in steps; the form is filled progressively and logically. For example, when adding an event in a calendar, the event's general attributes are input in the first stage (title, dates, place, etc.), then the participants in the second stage, then the resources to be reserved and the associated documents, and finally advanced options such as the event's recurrence. The fields being optional from the second stage, the input can be abandoned at this point.

Fig. 53. Forms in a modal window preserve the browsing context and can be composed of several steps.
8.1.2 Item box
In JCMS, many portlets list a set of results and allow users who have sufficient rights to edit or add new ones. In order to improve the usability in such boxes, their presentation has been reviewed and harmonized. These boxes have options: they can include tabs, mini-icons for editing or the editing icon with the contextual menu, etc. They can display for each item a small information bubble (e.g. the number of proposals for an ongoing event scheduling, the last modification date of a Wiki page, etc.).
8.1.3 Information cards
We would frequently like to get additional information about items appearing in a page. For example, the ESN social network indicates that a member has added a document, will participate in a meeting, has added a contact, etc. But to know more (What is the document about? Where will the meeting take place? Which company does this contact belong to?), we formerly had to go to the associated page. Now with JCMS 7, when you move the mouse pointer over the link, a small card appears showing such additional information.
The cards are specific to each data type (member, publication) and can be refined by sub-type (document, event, etc.) and even according to the browsing context. In a conversation space, for example, a member's card displays not only his contact details but also his level of participation (animator, expert, points earned, number of questions/ideas, answers/reactions, etc.).
8.1.4 Assisted input of links
JCMS 7 provides a more practical input method for link-type fields. This concerns category fields, links on publications, links on members, links on groups, etc. You start by typing in a text field a member's name, the required link title, and so on. JCMS then proposes the corresponding links in a list and you choose the one you need. To aid this choice in the case of members, their photos are displayed.
In the case of categories, if the category you enter does not exist, but you have the right to create categories in this branch, then you can add one. This new input mode gives users the equivalent of the tags we find in web 2.0 services like Flickr, Delicious and Facebook, while enjoying the richness of categories (uniqueness, displacement, multi-language, query, caddy, etc.)
This principle is used in conversation spaces, for example.
8.1.5 Auto-completion pagination
JCMS systematically provides the auto-completion feature in category and link fields. By default, the list of suggestions is limited to 10. Sometimes this is not enough; the item sought is further down the list. JCMS 7 resolves this problem through a simplified pagination (next/previous) system in auto-completions.
8.1.6 Thumbnail rendering
Several earlier JCMS versions included an automatic image resizing system used in many functions, such as the preview of an image, document, video, web page, member photo of variable size, etc.
The resizing algorithm has been revamped to enhance the quality of the images produced.
This change makes it possible to iconize (16x16) member photos while preserving reasonable rendering. Even at this very small size, photos can help to identify people rapidly.
JCMS 7 can also resize images on the server side simply by adding the following parameters to the image's URL:
- "w" with the required width,
- "h" with the required height.
8.2 Portal
8.2.1 Ajax-Refresh
Since version 6, JCMS proposes Ajax-Refresh. This is a framework that simplifies the use of Ajax technology for partial refreshing of pages. During Ajax requests, the JSPs invoked generally need access to contextual information calculated during the initial treatment of the page (e.g. current portal, current category, etc.). In previous versions this information was stored in the user's J2EE session, which is generally set to 30 minutes in application servers. Consequently, if the user makes an Ajax-Refresh request after this period, for example to go to another page in a paginated list, a message appeared saying that the page had to be reloaded.
JCMS 7 avoids this problem, since all the information necessary for processing the Ajax-Refresh request is now memorized in the initial page. This is sent again in response to each Ajax-Refresh request. Even if the J2EE session has expired, JCMS can still reconstitute the context of the initial request and perform the required treatment.
Note however that this is valid only for requests triggered via the Ajax-Refresh API, but not for Ajax requests using another API such as JSON (e.g. category tree opening).
8.2.2 CSS fields for portlet skins
All portlets supporting a skin (PortletSkinnable) now have a new field used to indicate the CSS Classes to apply to the DIV tag containing this skin. The field also serves to add behaviors to the portlet.
8.2.3 Deferred loading
All JCMS 7 portlets can be configured for deferred loading, also known as lazy loading. A portlet configured in this way will be loaded only after the entire portal page has been rendered. You can therefore start reading the page content while the portlet carries out its processing and returns the result.
This is particularly useful for portlets that have to perform long processes or ones that interact with external services whose response time cannot be foreseen. Thanks to deferred loading, these portlets no longer delay the rendering of the page.
To configure a portlet for deferred loading, just indicate ajax-lazy in the CSS Classes field of the portlet's Skin tab.
In order to avoid a jumping effect on the page when the portlet content appears, the portlet can send immediately a static view with an indication that the information is being recovered, then the deferred loading triggers. When the portlet's final content arrives, it replaces this "waiting" content, which avoids the portlets located beneath being shifted downwards.
8.2.4 Periodic loading
JCMS 7 portlets can also be configured to refresh themselves regularly without the user having to ask. This is obviously useful for portlets whose content changes very frequently, for example a one displaying ESN activity or a supervision portlet monitoring the room temperature or an external process, etc.
To configure a portlet for periodic loading, just indicate ajax-periodical-N in the CSS Classes field of the portlet's Skin tab, setting N to the refresh frequency in seconds. For example, ajax-periodical-60 means "refresh every minute".
9. Additional features
9.1 Users
There are some user management changes:
- Group names are multilingual;
- DBMembers can contribute any content type and have access to back-offices;
- All workspaces have a default group. Following version upgrades, the old spaces receive as their default group their group with the least writer rights;
- The Main Administrator is no longer considered to belong to all the workspaces: he must now be explicitly attached to them.
9.2 Development
9.2.1 File handling
JCMS 7 provides natively an API for handling incoming files. This API can be used to monitor a folder and trigger a process every time a file is added to this folder (or its sub-folders). In the standard configuration, JCMS 7 supervises the "upload/docs" folder. This means that plugins can ask to be notified of file changes very simply.
9.2.2 Satellite files
JCMS 7 introduces the notion of satellite files. When a contributor uploads a file, a whole series of satellite files can be produced around this initial file:
- The file containing the text to index;
- Preview images of various dimensions;
- The PDF file if the PDF Converter plugin is installed;
- The SWF file if the Document Viewer plugin is installed.
The satellite files are deleted every time the document is modified or deleted.
By default, the satellite files are files having the same prefix as the document to which they relate. For example, the files report.doc.pdf and report.doc.swf are satellite files of report.doc.
It is possible to declare other regular expressions of association by means of the properties prefixed by "file-document.associated-files".
9.2.3 ProcessExecutor
The ProcessExecutor class simplifies and unifies the way in which external processes are executed. It enables the standard output of the process to be captured easily. An execution timeout can be defined to ensure a process is stopped if takes more than the timeout period to complete. The default timeout is 10 minutes.
Example:
ProcessExecutor executor = new ProcessExecutor("/bin/echo", "Hello World!");
executor.setCaptureOutput(true);
ProcessExecutionResult result = executor.execute();
assertEquals(0, result.getExitValue());
assertFalse(result.hasTimedOut());
assertEquals("Hello World!", result.getStdout().trim());
assertEquals("", result.getStderr());
9.2.4 PersonalizedMailMessage
The PersonalizedMailMessage class is used to send a personalized e-mail very easily to a group of users. The sending can be synchronous or asynchronous, in a separate thread, in order not to block the rest of the process.
Example:
PersonalizedMailMessage mail = new PersonalizedMailMessage() {
public String getOrigin() {
return "MyCustomNotification";
}
public String getSubject(Member mbr) {
return "A personal mail for " + mbr;
};
public String getContentText(Member mbr) {
return mbr.getFriendlyName() + ",\n\nThis is a personal mail for you...\n";
}
};
mail.sendInThread(myMemberSet);
9.2.5 Site name in CSS class
The site name (channel.name) is systematically put in the CSS classes of the body tag of all pages generated with doEmptyHeader.jsp. This makes it very easy to overwrite any CSS definitions of JCMS or one of its plugins.
10. New certifications
JCMS 7 is certified with new information system components:
- Operating Systems:
- Windows 2008
- Application servers:
- IBM WebSphere 7
- Oracle WebLogic 10.3
- Databases:
- IBM DB2
- Oracle 11g2
- Messaging and office suites:
- Microsoft Exchange 2010
- Microsoft Office 2010
- Lotus Domino (v7 or later)
For more details on the platforms for which JCMS 7 is certified, see the Installation and Operation Manual.
Finally, the pre-release versions of the browsers Internet Explorer 9 and Firefox 4 have been successfully tested. These will be certified for a future JCMS version once they are available in a stable version.