Configurations

This chapter describes configurations used in eXo Platform via the following main sections:

  • Components

    Information about configurations of eXo Platform’s main components, including Social, Content, Wiki, Forum, Answer and Poll.

  • External Component Plugins

    Information about configurations of eXo Platform’s main external component plugins, such as what these plugins are for, and how to configure them.

Components

This section consists of the following main topics:

  • Social components

    Information about Social services configurations which provide low-level functionality for UI components.

  • Wiki components

    Information about Wiki services configurations which provide low-level functionality for UI components.

  • Content components

    Information about Content services which provide low-level functionality for UI components.

  • Calendar service

    Information about CalendarService which is used to configure Calendar.

  • Forum components

    Description of Forum components and their data type.

  • Answers components

    Description of Answers components and their data types.

  • Profile contact provider

    How to configure the profile contact provider which is used to retrieve user profile.

  • Poll components

    Details of Poll components and their data types.

Social components

This section describes Social services which provide low-level functionality for UI components. These services are:

  • Space Service

    This service is used for spaces management, including creating spaces.

  • Space Template Service

    This service is used for space templates management, including creating space templates, extending space templates, and installing applications.

  • LifeCycle Completion Service

    This component is used to process the callable request out of the HTTP request.

  • Rest Portal Container Name Config

    This plugin is used to set the portal container name used for REST service.

  • Link Provider

    This service is used to provide the utility to get the URLs of the activities, profiles, spaces, avatars and more.

  • Activity Manager

    This component provides Social activity APIs.

  • Relationship Manager

    This component provides Social relationship APIs.

  • Identity Manager

    This component provides Social identity APIs.

  • l18N Activity Processor

    This component is used to process the localization of activity content.

  • Router

    This component is used to get a requested URL part.

Space Service

The service is used for spaces management, including creating spaces.

Sample configuration:

<component>
  <key>org.exoplatform.social.core.space.spi.SpaceService</key>
  <type>org.exoplatform.social.core.space.impl.SpaceServiceImpl</type>
</component>

Space Template Service

The service is used for space templates management, including creating space templates, extending space templates and installing applications. See Managing Space Templates

Sample configuration:

<component>
    <key>org.exoplatform.social.core.space.spi.SpaceTemplateService</key>
    <type>org.exoplatform.social.core.space.impl.SpaceTemplateServiceImpl</type>
    <init-params>
      <value-param>
        <name>defaultSpaceTemplate</name>
        <value>${exo.social.template.default:community}</value>
      </value-param>
    </init-params>
</component>

Value-param

Description

defaultSpaceTemplate

Defines the default space template name.

LifeCycle Completion Service

This component is used to process the callable request out of the HTTP request.

Sample configuration:

<component>
    <key>org.exoplatform.social.common.lifecycle.LifeCycleCompletionService</key>
    <type>org.exoplatform.social.common.lifecycle.LifeCycleCompletionService</type>
    <init-params>
      <value-param>
        <name>thread-number</name>
        <value>10</value>
      </value-param>
      <value-param>
        <name>async-execution</name>
        <value>false</value>
      </value-param>
    </init-params>
</component>
  • Init-params:

Name

Type

Value

Description

thread-number

integer

10

The maximum number of threads parallel executed.

async-execution

boolean

false

Specifies the running mode of service is synchronous or asynchronous.

Rest Portal Container Name Config

This plugin is used to set the portal container name used for REST service.

Sample configuration:

<component>
    <key>org.exoplatform.social.opensocial.auth.RestPortalContainerNameConfig</key>
    <type>org.exoplatform.social.opensocial.auth.RestPortalContainerNameConfig</type>
    <init-params>
      <value-param>
        <name>rest-container-name</name>
        <value>portal</value>
      </value-param>
    </init-params>
</component>
  • Init-params:

Name

Type

Value

Description

rest-container-name

String

portal

The portal container name.

Activity Manager

This component provides Social activity APIs.

<component>
  <key>org.exoplatform.social.core.manager.ActivityManager</key>
  <type>org.exoplatform.social.core.manager.ActivityManagerImpl</type>
</component>

Relationship Manager

This component provides Social relationship APIs.

<component>
  <key>org.exoplatform.social.core.manager.RelationshipManager</key>
  <type>org.exoplatform.social.core.manager.RelationshipManagerImpl</type>
</component>

Identity Manager

This component provides Social identity APIs.

<component>
    <key>org.exoplatform.social.core.manager.IdentityManager</key>
    <type>org.exoplatform.social.core.manager.IdentityManagerImpl</type>
  </component>

I18N Activity Processor

This component is used to process the localization of activity content.

<component>
  <key>org.exoplatform.social.core.processor.I18NActivityProcessor</key>
  <type>org.exoplatform.social.core.processor.I18NActivityProcessor</type>
</component>

Router

This component is used to get a requested URL part.

<component>
    <key>org.exoplatform.social.common.router.ExoRouter</key>
    <type>org.exoplatform.social.common.router.ExoRouter</type>
</component>

Wiki components

This section describes services which provide low-level functionality for the UI components. These services are:

Diff Service

The DiffService service is used to show the differences between the page versions. The configuration of this service is found in wiki-service/src/main/resources/conf/portal/configuration.xml:

Sample configuration:

<component>
    <key>org.exoplatform.wiki.service.diff.DiffService</key>
    <type>org.exoplatform.wiki.service.diff.DiffService</type>
</component>

Page Rendering Cache Service

The PageRenderingCacheService service is used to cache the Wiki page content. The configuration of this component is found in wiki-service/src/main/resources/conf/portal/configuration.xml:

Sample configuration:

<component>
    <key>org.exoplatform.wiki.rendering.cache.PageRenderingCacheService</key>
    <type>org.exoplatform.wiki.rendering.cache.impl.PageRenderingCacheServiceImpl</type>
</component>

Resize Image Service

The ResizeImageService service is used to resize images added to a Wiki page. The configuration of this service is found in wiki-service/src/main/resources/conf/portal/configuration.xml:

Sample configuration:

<component>
    <key>org.exoplatform.wiki.service.image.ResizeImageService</key>
    <type>org.exoplatform.wiki.service.image.impl.ResizeImageServiceImpl</type>
</component>

Rendering Service

The RenderingService service is used to render content from one syntax to another syntax. The configuration of this service is found in wiki-service/src/main/resources/conf/portal/configuration.xml:

Sample configuration:

<component>
    <key>org.exoplatform.wiki.rendering.RenderingService</key>
    <type>org.exoplatform.wiki.rendering.impl.RenderingServiceImpl</type>
</component>

Wiki Rest Service

The WikiRestService service is used to provide Wiki data, such as Wiki tree data, or list of Spaces. The configuration of this service is found in wiki-service/src/main/resources/conf/portal/configuration.xml:

<component>
    <key>org.exoplatform.wiki.service.WikiRestService</key>
    <type>org.exoplatform.wiki.service.impl.WikiRestServiceImpl</type>
</component>

Wiki Service

The WikiService service is used to configure the Wiki. When this configuration file is executed, the component named org.exoplatform.wiki.service.impl.WikiServiceImpl will process actions of Wiki. The configuration of this service is found in wiki-service/src/main/resources/conf/portal/configuration.xml:

Sample configuration:

<component>
    <key>org.exoplatform.wiki.service.WikiService</key>
    <type>org.exoplatform.wiki.service.impl.WikiServiceImpl</type>
    <init-params>
      <values-param>
        <name>xwiki/2.0</name>
        <value>jar:/wikisyntax/help/xWiki2.0_Short.txt</value>
        <value>jar:/wikisyntax/help/xWiki2.0_Full.txt</value>
      </values-param>
      <properties-param>
        <name>preferences</name>
        <property name="defaultSyntax" value="xwiki/2.0"/>
      </properties-param>
    </init-params>
</component>

Init-params

Name

Type

Value

Description

xwiki/2.0

String list

jar:/wikisyntax/help/xWiki2.0_Short.txt, jar:/wikisyntax/help/xWiki2.0_Full.txt

The list of Syntax Help files.

Properties-param

Property name

Type

Value

Description

defaultSyntax

String

xwiki/2.0

The default syntax which is used in Wiki.

Content components

This section describes Content services which provide low-level functionality for UI components. These services are classified into the following groups:

  • Actions

    This section represents the components related to managing Content actions and scripts in eXo Platform.

  • Content arrangement

    This section describes services related arranging content in eXo Platform, consisting of Lock Service, Taxonomy Service, Link Manager, Manage View Service, Manage Drives Service, New Folksonomy Service, and Relationship Service.

  • Images Processing

    This section describes the components related to processing Content images in eXo Platform, consisting of Jod Converter Service, PDF Viewer Service, and Thumbnail Service.

  • Publication

    This section describes two components which process document publication in eXo Platform.

  • Searching

    This section represents components related to the Content searching feature in eXo Platform, consisting of Site Search Service, SEO Service, and Query Service.

  • Templates Processing

    This section describes services related to processing Content templates, including Application Template Manager Service, Fragment Cache Service, WCM Service, WCM Configuration Service, CMS Service, Multi-language Service, Template Service, Metadata Service, XJavaScript Service, XSkin Service, WCM Content Initializer Service, and Live Link Manager Service.

Actions

This section represents the components related to managing Content actions and scripts in eXo Platform.

  • Action Service Container

    The ActionServiceContainer component is used to manage actions (adding, removing, or executing actions, and more) in the system.

  • Script

    This service is used to manage scripts in Content. These scripts can be registered and executed in the system.

Action Service Container

The ActionServiceContainer component is used to manage actions (adding, removing, or executing actions, and more) in the system. The configuration of this component is found in ``

/core/core-configuration/src/main/webapp/WEB-INF/conf/wcm-core/core-services-configuration.xml``.

<component>
    <key>org.exoplatform.services.cms.actions.ActionServiceContainer</key>
    <type>org.exoplatform.services.cms.actions.impl.ActionServiceContainerImpl</type>
    <init-params>
        <value-param>
            <name>workspace</name>
            <value>system</value>
        </value-param>
        <value-param>
            <name>repository</name>
            <value>repository</value>
        </value-param>
    </init-params>
</component>

Details:

  • Value-param:

Name

Type

Value

Description

workspace

string

system

The workspace name.

repository

string

repository

The repository name.

Script

This service is used to manage scripts in Content. These scripts can be registered and executed in the system.

The configuration of this component can be found here.

<component>
  <key>org.exoplatform.services.cms.scripts.ScriptService</key>
  <type>org.exoplatform.services.cms.scripts.impl.ScriptServiceImpl</type>
</component>

Content arrangement

This section describes services related arranging content in eXo Platform, consisting of:

Lock Service

The LockService component is used to manage all locked nodes and allows unlocking the locked nodes in the system. It is also used to assign the Lock right to a user or a user group or a membership. The configuration of this component is found in /core/core-configuration/src/main/webapp/WEB-INF/conf/wcm-core/core-services-configuration.xml.

<component>
  <key>org.exoplatform.services.cms.lock.LockService</key>
  <type>org.exoplatform.services.cms.lock.impl.LockServiceImpl</type>
</component>
Taxonomy Service

The TaxonomyService component is used to sort documents to ease searches when browsing documents online. It provides a multi-dimensional set of paths to find a document. In many cases, you can get your content by using different category paths. Therefore, after creating a document somewhere in the repository, it is possible to categorize it by adding several taxonomy references. By browsing the taxonomy tree, it will be possible to find the referencing article and display them as if they were children of the taxonomy nodes. Taxonomies are stored in the JCR itself and the JCR Reference functionality is used to provide the advanced Content feature. The tree of taxonomies can be managed simply, such as copying/cutting/pasting nodes, or adding and removing taxonomies from the tree. Once a taxonomy has been added, any user who has access to the “Manage Categories” icon from his/her view can then browse the taxonomy tree and refer one of its nodes to the created documents.

<component>
    <key>org.exoplatform.services.cms.taxonomy.TaxonomyService</key>
    <type>org.exoplatform.services.cms.taxonomy.impl.TaxonomyServiceImpl</type>
    <init-params>
        <object-param>
            <name>defaultPermission.configuration</name>
            <object type="org.exoplatform.services.cms.taxonomy.impl.TaxonomyTreeDefaultUserPermission">
                <field name="permissions">
                    <collection type="java.util.ArrayList">
                        <value>
                            <object type="org.exoplatform.services.cms.taxonomy.impl.TaxonomyTreeDefaultUserPermission$Permission">
                                <field name="identity">
                                    <string>*:/platform/administrators</string>
                                </field>
                                <field name="read">
                                    <string>true</string>
                                </field>
                                <field name="addNode">
                                    <string>true</string>
                                </field>
                                <field name="setProperty">
                                    <string>true</string>
                                </field>
                                <field name="remove">
                                    <string>true</string>
                                </field>
                            </object>
                        </value>
                        <value>
                            <object type="org.exoplatform.services.cms.taxonomy.impl.TaxonomyTreeDefaultUserPermission$Permission">
                                <field name="identity">
                                    <string>*:/platform/users</string>
                                </field>
                                <field name="read">
                                    <string>true</string>
                                </field>
                                <field name="addNode">
                                    <string>true</string>
                                </field>
                                <field name="setProperty">
                                    <string>true</string>
                                </field>
                                <field name="remove">
                                    <string>false</string>
                                </field>
                            </object>
                        </value>
                    </collection>
                </field>
            </object>
        </object-param>
    </init-params>
</component>

Details:

  • Object type: org.exoplatform.services.cms.taxonomy.impl.TaxonomyTreeDefaultUserPermission

Field

Type

Value

Description

permissions

ArrayList

{java.util.ArrayList}

The list of the default user permissions to access the taxonomy tree.

  • Object type: org.exoplatform.services.cms.taxonomy.impl.TaxonomyTreeDefaultUserPermission$Permission

Field

Type

Description

identity

string

The name of user, group or membership.

read

boolean

The permission to read the taxonomy tree.

addNode

boolean

The permission to add a node to the taxonomy tree.

setProperty

boolean

The permission to set properties for a node in the taxonomy tree.

remove

boolean

The permission to remove a node from the taxonomy tree.

Manage View

This service is used to manage views and templates, such as adding/editing/deleting them. The configuration of this component can be found here.

<component>
  <key>org.exoplatform.services.cms.views.ManageViewService</key>
  <type>org.exoplatform.services.cms.views.impl.ManageViewServiceImpl</type>
</component>
Manage Drive

This service is used to manage drives in Content of eXo Platform.

The configuration of this component can be found here.

 <component>
  <key>org.exoplatform.services.cms.drives.ManageDriveService</key>
  <type>org.exoplatform.services.cms.drives.impl.ManageDriveServiceImpl</type>
</component>
New Folksonomy

This service is used to manage tags of documents in Content of eXo Platform.

The configuration of this component can be found here.

 <component>
     <key>org.exoplatform.services.cms.folksonomy.NewFolksonomyService</key>
     <type>org.exoplatform.services.cms.folksonomy.impl.NewFolksonomyServiceImpl</type>
</component>
Relations

This service is used to manage relationships between nodes in Content of eXo Platform.

The configuration of this component can be found here.

<component>
    <key>org.exoplatform.services.cms.relations.RelationsService</key>
    <type>org.exoplatform.services.cms.relations.impl.RelationsServiceImpl</type>
</component>

Images Processing

This section describes the components related to processing Content images in eXo Platform, consisting of:

Jod Converter Service

The JodConverterServices component is used to convert documents into different office formats. This component is enabled by default. The configuration of this component is found in ``

/core/core-configuration/src/main/webapp/WEB-INF/conf/wcm-core/core-services-configuration.xml``.

<component>
    <key>org.exoplatform.services.cms.jodconverter.JodConverterService</key>
    <type>org.exoplatform.services.cms.jodconverter.impl.JodConverterServiceImpl</type>
    <init-params>
        <value-param>
            <name>port</name>
            <value>${jodconverter.portNumbers}</value>
        </value-param>
        <value-param>
            <name>officeHome</name>
            <value>${jodconverter.officeHome}</value>
        </value-param>
        <value-param>
            <name>taskQueueTimeout</name>
            <value>${jodconverter.taskQueueTimeout}</value>
        </value-param>
            <value-param>
            <name>taskExecutionTimeout</name>
            <value>${jodconverter.taskExecutionTimeout}</value>
        </value-param>
        <value-param>
            <name>maxTasksPerProcess</name>
            <value>${jodconverter.maxTasksPerProcess}</value>
        </value-param>
        <value-param>
            <name>retryTimeout</name>
            <value>${jodconverter.retryTimeout}</value>
        </value-param>
    </init-params>
</component>

Details:

  • Value-param:

PDF Viewer

This service is used to initialize data under the PDF format to view files in supported types (MS Word, MS Excel, and more) in Sites Explorer.

The configuration of this component can be found here.

<component>
  <type>org.exoplatform.services.pdfviewer.PDFViewerService</type>
</component>
Thumbnail Service

The ThumbnailService component is used to resize all the images into different sizes. Besides the default sizes, it also allows users to customize the images into the desired sizes. To disable generating thumbnail icons, set the property exo.ecms.document.thumbnails.enabled to false

<component>
    <key>org.exoplatform.services.cms.thumbnail.ThumbnailService</key>
    <type>org.exoplatform.services.cms.thumbnail.impl.ThumbnailServiceImpl</type>
    <init-params>
        <value-param>
            <name>smallSize</name>
            <value>32x32</value>
        </value-param>
        <value-param>
            <name>mediumSize</name>
            <value>64x64</value>
        </value-param>
        <value-param>
            <name>largeSize</name>
            <value>300x300</value>
        </value-param>
        <value-param>
            <name>enable</name>
            <value>true</value>
        </value-param>
        <value-param>
            <name>mimetypes</name>
            <value>image/jpeg;image/png;image/gif;image/bmp</value>
        </value-param>
    </init-params>
</component>

Details:

  • Value-param:

Publication

This section describes two components which process document publication in eXo Platform.

Publication Service

This service is used to manage the status changes of documents in the publication lifecycles.

The configuration of this component can be found here.

<component>
  <key>org.exoplatform.services.ecm.publication.PublicationService</key>
  <type>org.exoplatform.services.ecm.publication.impl.PublicationServiceImpl</type>
</component>

Publication Presentation

This component is used to retrieve the WebUI form corresponding to the current state of the specified node.

The configuration of this component can be found here.

<component>
   <key>org.exoplatform.services.ecm.publication.PublicationPresentationService</key>
   <type>org.exoplatform.services.ecm.publication.impl.PublicationPresentationServiceImpl</type>
</component>

Searching

This section represents components related to the Content searching feature in eXo Platform, consisting of:

Site Search Service

The SiteSearchService component is used in the Search portlet that allows users to find all information matching with your given keyword.

It is configured in the core/core-configuration/src/main/webapp/WEB-INF/conf/configuration.xml file as follows:

<import>war:/conf/wcm-core/core-search-configuration.xml</import>

The component configuration maps the SiteSearchService component with its own implementation: SiteSearchServiceImpl.

<component>
    <key>org.exoplatform.services.wcm.search.SiteSearchService</key>
    <type>org.exoplatform.services.wcm.search.SiteSearchServiceImpl</type>
    <component-plugins>
      <component-plugin>
        <name>ExcludeMimeTypes</name>
        <set-method>addExcludeIncludeDataTypePlugin</set-method>
        <type>org.exoplatform.services.wcm.search.ExcludeIncludeDataTypePlugin</type>
        <init-params>
          <properties-param>
            <name>search.exclude.datatypes</name>
            <description>exclude some data type when search</description>
            <property name="mimetypes" value="${wcm.search.excluded-mimetypes:text/css,text/javascript,application/x-javascript,text/ecmascript}" />
          </properties-param>
        </init-params>
      </component-plugin>
    </component-plugins>
    <init-params>
      <value-param>
        <name>isEnabledFuzzySearch</name>
        <value>${wcm.search.enableFuzzySearch:true}</value>
      </value-param>
      <value-param>
        <name>fuzzySearchIndex</name>
        <value>${wcm.search.fuzzySearchIndex:}</value>
      </value-param>
    </init-params>
  </component>

Detail:

  • Value-param:

Name

Type

Value

Description

search.exclude.datatypes

string

${wcm.search.excluded-mimetypes:text/css,text/javascript,application/x-javascript,text/ecmascript}

Allows administrators to exclude/include some data types when doing a search. See Exclude Include Data Type for more details.

isEnabledFuzzySearch

boolean

${wcm.search.enableFuzzySearch:true}

Allows administrators to enable/disable the fuzzy search mechanism.

fuzzySearchIndex

N/A

${wcm.search.fuzzySearchIndex:}

Allows the approximate level between the input keyword and the found key results. In case of the invalid configuration, the default value is set to 0.8.

To have more information about the fuzzy search, please refer to Fuzzy Search.

SEO Service

The SEOService component is used to help users manage SEO data of a page or a content, so their websites can achieve higher rankings on search engines. The configuration of this component is found in ``

/packaging/wcm/webapp/src/main/webapp/WEB-INF/conf/wcm-extension/wcm/seo-configuration.xml``.

<component>
    <key>org.exoplatform.services.seo.SEOService</key>
    <type>org.exoplatform.services.seo.impl.SEOServiceImpl</type>
    <init-params>
        <object-param>
            <name>seo.config</name>
            <object type="org.exoplatform.services.seo.SEOConfig">
                <field name="robotsindex">
                    <collection type="java.util.ArrayList">
                        <value>
                            <string>INDEX</string>
                        </value>
                        <value>
                            <string>NOINDEX</string>
                        </value>
                    </collection>
                </field>
                <field name="robotsfollow">
                    <collection type="java.util.ArrayList">
                        <value>
                            <string>FOLLOW</string>
                        </value>
                        <value>
                            <string>NOFOLLOW</string>
                        </value>
                    </collection>
                </field>
                <field name="frequency">
                    <collection type="java.util.ArrayList">
                        <value>
                            <string>Always</string>
                        </value>
                        <value>
                            <string>Hourly</string>
                        </value>
                        <value>
                            <string>Daily</string>
                        </value>
                        <value>
                            <string>Weekly</string>
                        </value>
                        <value>
                            <string>Monthly</string>
                        </value>
                        <value>
                            <string>Yearly</string>
                        </value>
                        <value>
                            <string>Never</string>
                        </value>
                    </collection>
                </field>
            </object>
        </object-param>
    </init-params>
</component>

Details:

  • Object-param:

    • Object type: org.exoplatform.services.seo.SEOConfig

Field

Type

Value

Description

robotsindex

ArrayList

INDEX

NOINDEX

Allows search engines to index a particular page or not.

robotsfollow

ArrayList

FOLLOW

NOFOLLOW

Allows search engines to follow links from a particular page to find other pages or not.

frequency

ArrayList

Always

Hourly

Daily

Weekly

Monthly

Yearly

Never

Defines how often a particular page is updated.

Query Service

The QueryService component is used to manage many queries, including adding, removing or executing a query. The configuration of this component is found in /core/core-configuration/src/main/webapp/WEB-INF/conf/wcm-core/core-services-configuration.xml.

<component>
    <key>org.exoplatform.services.cms.queries.QueryService</key>
    <type>org.exoplatform.services.cms.queries.impl.QueryServiceImpl</type>
    <init-params>
      <value-param>
        <name>workspace</name>
        <value>system</value>
      </value-param>
      <value-param>
        <name>relativePath</name>
        <value>Private/Searches</value>
      </value-param>
      <value-param>
        <name>group</name>
        <value>*:/platform/administrators</value>
      </value-param>
    </init-params>
 </component>

Details:

  • Value-param:

Name

Type

Value

Description

workspace

string

system

The workspace name.

relativePath

string

Private/Searches

The path to the query location.

group

string

*:/platform/administrators

The group is allowed to access the query folder.

Templates Processing

This section describes services related to processing Content templates, including:

Application Template Manager

The ApplicationTemplateManagerService component is used to manage dynamic Groovy templates for Content-based products. The configuration of this component is found in /core/core-configuration/src/main/webapp/WEB-INF/conf/wcm-core/core-services-configuration.xml.

<component>
    <key>org.exoplatform.services.cms.views.ApplicationTemplateManagerService</key>
    <type>org.exoplatform.services.cms.views.impl.ApplicationTemplateManagerServiceImpl</type>
    <init-params>
        <properties-param>
            <name>storedLocations</name>
            <property name="repository" value="system"/>
        </properties-param>
    </init-params>
</component>

Details:

  • Properties-param:

Name

Property name

Type

Value

Description

storedLocations

repository

string

system

The repository name.

Fragment Cache

The FragmentCacheService component is used to cache the response fragments which are sent to end-users.

The configuration of this component is found in ``

core/core-configuration/src/main/webapp/WEB-INF/conf/wcm-core/wcm-configuration.xml``.

<component>
    <key>org.exoplatform.services.portletcache.FragmentCacheService</key>
    <type>org.exoplatform.services.portletcache.FragmentCacheService</type>
    <init-params>
        <value-param>
            <name>cleanup-cache</name>
            <description>The cleanup cache period in seconds</description>
            <value>300</value>
        </value-param>
    </init-params>
</component>

Details

  • Value-param:

Name

Type

Value

Description

cleanup-cache

integer

300

The time period over which cache items are expired.

WCM

The WCMService component allows setting expiration cache of portlets and checking given portals if they are shared portals or not. It also gets reference contents basing on item identifiers. The configuration of this component is found in /core/core-configuration/src/main/webapp/WEB-INF/conf/wcm-core/wcm-configuration.xml.

<component>
    <key>org.exoplatform.services.wcm.core.WCMService</key>
    <type>org.exoplatform.services.wcm.core.impl.WCMServiceImpl</type>
    <init-params>
        <properties-param>
            <name>server.config</name>
            <description>server.config</description>
            <property name="expirationCache" value="${wcm.cache.wcmservice.expirationcache:30}" />
        </properties-param>
    </init-params>
</component>

Details:

Properties-param

Property name

Type

Value

Description

server.config

expirationCache

integer

${wcm.cache.wcmservice.expirationcache:30}

The period in which the cache is cleared in seconds. By default, the cache is cleared every 30 seconds.

WCM Configuration

This service is used to manage general information of sites and runtime context parameters.

The configuration of this component can be found here.

<component>
    <key>org.exoplatform.services.wcm.core.WCMConfigurationService</key>
    <type>org.exoplatform.services.wcm.core.WCMConfigurationService</type>
    <init-params>
      <properties-param>
        <name>RuntimeContextParams</name>
        <description>some params for runtime</description>

        <property name="parameterizedPageURI" value="${wcm.config.parameterizedPageURI:/detail}" />
        <property name="parameterizedURIParam" value="${wcm.config.parameterizedURIParam:content-id}"/>
        <property name="printPageURI" value="${wcm.config.printPageURI:/printviewer}" />
        <property name="printViewerPage" value="${wcm.config.printViewerPage:printviewer}" />
        <property name="editorPageURI" value="${wcm.config.editorPageURI:editor}" />
        <property name="siteExplorerURI" value="${wcm.config.siteExplorerURI:siteExplorer}" />

        <property name="CLVPortlet" value="/presentation/ContentListViewerPortlet" />
        <property name="SCVPortlet" value="/presentation/SingleContentViewer" />

        <property name="formViewTemplatePath" value="${wcm.config.formViewTemplatePath:}" />
        <property name="paginatorTemplatePath" value="${wcm.config.paginatorTemplatePath:/exo:ecm/views/templates/content-list-viewer/paginators/DefaultPaginator.gtmpl}" />
      </properties-param>
      <properties-param>
        <name>share.portal.config</name>
        <description>share portal name for each repository</description>
        <property name="portalName" value="shared" />
      </properties-param>
      <object-param>
        <name>live.portals.location.config</name>
        <description>configuration for the cms path</description>
        <object type="org.exoplatform.services.wcm.core.NodeLocation">
          <field name="workspace">
            <string>collaboration</string>
          </field>
          <field name="path">
            <string>/sites</string>
          </field>
        </object>
      </object-param>
      <object-param>
        <name>site.drive.config</name>
        <description>drive config for each site drive</description>
        <object type="org.exoplatform.services.cms.drives.DriveData">
          <field name="name">
            <string>{siteName}</string>
          </field>
          <field name="workspace">
            <string>{workspace}</string>
          </field>
          <field name="permissions">
            <string>{accessPermission}</string>
          </field>
          <field name="homePath">
            <string>{sitePath}/categories/{siteName}</string>
          </field>
          <field name="icon">
            <string></string>
          </field>
          <field name="views">
            <string>Categories</string>
          </field>
          <field name="viewPreferences">
            <boolean>false</boolean>
          </field>
          <field name="viewNonDocument">
            <boolean>true</boolean>
          </field>
          <field name="viewSideBar">
            <boolean>true</boolean>
          </field>
          <field name="showHiddenNode">
            <boolean>false</boolean>
          </field>
          <field name="allowCreateFolders">
            <string>nt:folder,nt:unstructured</string>
          </field>
          <field name="allowNodeTypesOnTree">
            <string>*</string>
          </field>
        </object>
      </object-param>
    </init-params>
  </component>

Details:

  • properties-param: RuntimeContextParams

    Property-name

    Type

    Value

    Description

    parameterizedPageURI

    string

    ${wcm.config.parameterizedPageURI:/detail}

    Contains the path to a page which displays the full content of a document provided by a URL on the browser’s address bar.

    parameterizedURIParam

    string

    ${wcm.config.parameterizedURIParam:content-id}

    Contains the parameter that takes the URL of a document on the browser’s address bar to be displayed in the parameterizedPageURI.

    printPageURI

    string

    ${wcm.config.printPageURI:/printviewer}

    The URL of the document’s print preview page.

    printViewerPage

    string

    ${wcm.config.printViewerPage:printviewer}

    The name of the print preview page.

    editorPageURI

    string

    ${wcm.config.editorPageURI:editor}

    The name of the page which users can in-line edit its content displayed in the front-end page.

    siteExplorerURI

    String

    ${wcm.config.siteExplorerURI:siteExplorer}

    The URL of a page containing the Sites Explorer portlet.

    CLVPortlet

    String

    /presentation/ContentListViewerPortlet

    The portlet which contains a list of content.

    SCVPortlet

    String

    /presentation/SingleContentViewer

    The portlet which contains single content.

    formViewTemplatePath

    String

    ${wcm.config.formViewTemplatePath:}

    The path to the template used to display the contents in this portlet.

    paginatorTemplatePath

    String

    ${wcm.config.paginatorTemplatePath:/exo:ecm/views/templates/content-list-viewer/paginators/DefaultPaginator.gtmpl}

    The path to the paginator used to display the contents in this portlet.

  • properties-param: share.portal.config

    Property name

    Type

    Value

    Description

    portalName

    String

    shared

    The name of the portal.

  • object-param: live.portals.location.config

    Field

    Type

    Value

    Description

    workspace

    string

    collaboration

    The workspace name in the Content Repository.

    path

    string

    /sites

    The path to the folders containing the sites of the system.

  • object-param: site.drive.config

    Field

    Type

    Value

    Description

    name

    String

    {siteName}

    The name of a site in the portal.

    workspace

    String

    {workspace}

    The workspace name in the Content repository.

    permissions

    String

    {accessPermission}

    Visibility of the drive based on users’ access permission.

    homePath

    String

    {sitePath}/categories/{siteName}

    The root path in the Content Repository. userId can be used at runtime in the path.

    views

    String

    wcm-category-view

    The list of views you want to use, separated by commas. For example: simple-view,admin-view.

    viewPreferences

    Boolean

    false

    The User Preference icon will be visible if true.

    viewNonDocument

    Boolean

    true

    Non-document types will be visible in the user view if true.

    viewSideBar

    Boolean

    true

    Shows/Hides the left bar (with navigation and filters).

    showHiddenNode

    Boolean

    false

    Hidden nodes will be visible if true.

    allowCreateFolders

    String

    nt:folder,nt:unstructured

    A list of node types that you can create as folders. For example: nt:folder,nt:unstructured

    allowNodeTypesOnTree

    String

    *

    Allows you to filter node types in the navigation tree. For example, the default value is “*” to show all content types.

CMS

This service is used to write data to JCR. The configuration of this component can be found here.

<component>
  <key>org.exoplatform.services.cms.CmsService</key>
  <type>org.exoplatform.services.cms.impl.CmsServiceImpl</type>
</component>
Multi-language

This service is used to manage and display content in different languages of a node which contains many language versions.

The configuration of this component can be found here.

<component>
  <key>org.exoplatform.services.cms.i18n.MultiLanguageService</key>
  <type>org.exoplatform.services.cms.i18n.impl.MultiLanguageServiceImpl</type>
</component>
Template

This service is used to manage templates of content in Content of eXo Platform.

The configuration of this component can be found here.

<component>
  <key>org.exoplatform.services.cms.templates.TemplateService</key>
  <type>org.exoplatform.services.cms.templates.impl.TemplateServiceImpl</type>
</component>
Metadata

This service is used to manage metadata of nodes in JCR, such as adding/editing/deleting/retrieving them.

The configuration of this component can be found here

<component>
  <key>org.exoplatform.services.cms.metadata.MetadataService</key>
  <type>org.exoplatform.services.cms.metadata.impl.MetadataServiceImpl</type>
</component>
XJavascript

This service is used to update and retrieve JavaScript codes to run on the front-end pages.

The configuration of this component can be found here.

<component>
  <key>org.exoplatform.services.wcm.javascript.XJavascriptService</key>
  <type>org.exoplatform.services.wcm.javascript.XJavascriptService</type>
</component>
XSkin

This service is used to update and retrieve stylesheet codes to apply for the front-end pages.

The configuration of this component can be found here.

<component>
  <key>org.exoplatform.services.wcm.skin.XSkinService</key>
  <type>org.exoplatform.services.wcm.skin.XSkinService</type>
</component>
WCM Content Initializer

This service is used to log, deploy and check the deployment plugin of sites in Content of eXo Platform.

<component>
  <type>org.exoplatform.services.deployment.WCMContentInitializerService</type>
</component>

Calendar Service

The CalendarService configuration of the Calendar application can be found here.

Use the CalendarService to configure the Calendar. The following information will explain details of its configuration. When this configuration file is executed, the component named org.exoplatform.calendar.service.impl.CalendarServiceImpl will process actions of the Calendar application.

<component>
    <key>org.exoplatform.calendar.service.CalendarService</key>
    <type>org.exoplatform.calendar.service.impl.CalendarServiceImpl</type>
    <init-params>
        <properties-param>
            <name>eventNumber.info</name>
            <property name="eventNumber" value="100"/>
        </properties-param>
    </init-params>
</component>

Details:

Properties-Param

Property name

Possible Value

Default Value

Description

eventNumber.info

eventNumber

integer

100

The number of events in a calendar.

Forum components

Key

Data type

Description

org.exoplatform.forum.bbcode.core.BBCodeServiceImpl

org.exoplatform.forum.bbcode.core.BBCodeServiceImpl

Manages CRUD operations on BBCodes.

org.exoplatform.forum.bbcode.api.BBCodeService

org.exoplatform.forum.bbcode.core.cache.CachedBBCodeService

Caches operations on BBCodes.

org.exoplatform.forum.service.DataStorage

org.exoplatform.forum.service.cache.CachedDataStorage

Stores data of Forums via the JCR system.

org.exoplatform.forum.service.impl.JCRDataStorage

org.exoplatform.forum.service.impl.JCRDataStorage

Implements the DataStorage component.

org.exoplatform.forum.service.ForumService

org.exoplatform.forum.service.impl.ForumServiceImpl

Includes all public APIs to interact with the UI component and database.

org.exoplatform.forum.service.ForumStatisticsService

org.exoplatform.forum.service.impl.ForumStatisticsServiceImpl

Includes all public APIs to interact with the database of Statistics system.

org.exoplatform.forum.service.ws.ForumWebservice

N/A

Provides web services for the Forum application.

org.exoplatform.forum.common.image.ResizeImageService

org.exoplatform.forum.common.image.impl.ResizeImageServiceImpl

Resizes the avatar image in the Forum and Answer applications.

org.exoplatform.forum.rendering.MarkupRenderingService

org.exoplatform.forum.rendering.MarkupRenderingService

Renders BBCodes or HTML.

org.exoplatform.forum.common.jcr.KSDataLocation

org.exoplatform.forum.common.jcr.KSDataLocation

Defines the default node path of JCR storage for the data of Forum, Answer and Poll applications. Its workspace value-param which is used to define the workspace where stores the Forum, Answer and Poll data.

org.exoplatform.forum.common.user.ContactProvider

org.exoplatform.forum.ext.common.SocialContactProvider

Auto-synchronizes users’ profile in Social Intranet with the users’ information in the Forum application.

org.exoplatform.forum.common.webui.cssfile.CssClassManager

org.exoplatform.forum.common.webui.cssfile.CssClassManager

Manages CSS class of file icons.

Answers components

Key

Data type

Description

org.exoplatform.faq.service.FAQService

org.exoplatform.faq.service.impl.FAQServiceImpl

Includes all public APIs to interact with the UI component and database.

org.exoplatform.faq.service.DataStorage

org.exoplatform.faq.service.impl.JCRDataStorage

Stores data of FAQ via the JCR system.

Profile contact provider

Forum and FAQ applications are to show some information about posters. The way to retrieve that information is pluggable through the ContactProvider component.

For public internet websites, users can provide personal information, such as personal email address and location. To enable, simply override the ContactProvider component in your configuration.

Configuration

Configure the profile-configuration.xml file as shown below:

<component>
  <key>org.exoplatform.forum.common.user.ContactProvider</key>
  <!-- <type>org.exoplatform.forum.common.user.DefaultContactProvider</type> -->
  <type>org.exoplatform.forum.ext.common.SocialContactProvider</type>
</component>

Use ContactProvider

You can get the ContactProvider as follows:

public static CommonContact getPersonalContact(String userId) {
  try {
    if(userId.indexOf(Utils.DELETED) > 0) return new CommonContact();
    ContactProvider provider = (ContactProvider) PortalContainer.getComponent(ContactProvider.class) ;
    return provider.getCommonContact(userId);
  } catch (Exception e) {
    return new CommonContact();
  }
}

SocialContactProvider

In eXo Platform, when using ContactProvider, you can use the SocialContactProvider classes which gets users’ profiles by userId via the IdentityManager class.

public CommonContact getCommonContact(String userId) {
  CommonContact contact = new CommonContact();
  try {
    IdentityManager identityM = (IdentityManager) PortalContainer.getInstance().getComponentInstanceOfType(IdentityManager.class);
    Identity userIdentity = identityM.getIdentity(OrganizationIdentityProvider.NAME, userId, true);
    Profile profile = userIdentity.getProfile();
    if (profile.contains(Profile.EMAIL)) {
      contact.setEmailAddress(profile.getProperty(Profile.EMAIL).toString());
    }
    if (profile.contains(Profile.FIRST_NAME)) {
      contact.setFirstName(profile.getProperty(Profile.FIRST_NAME).toString());
    }
    if (profile.contains(Profile.LAST_NAME)) {
      contact.setLastName(profile.getProperty(Profile.LAST_NAME).toString());
    }
    contact.setAvatarUrl(profile.getAvatarImageSource());
    if (profile.contains(Profile.GENDER)) {
      contact.setGender(profile.getProperty(Profile.GENDER).toString());
    }

    if (profile.contains(Profile.CONTACT_PHONES)) {
      contact.setPhone(profile.getProperty(Profile.CONTACT_PHONES).toString());
    }
    if (profile.contains(Profile.URL)) {
      contact.setWebSite(profile.getProperty(Profile.URL).toString());
    }
  } catch (Exception e) {
    if (LOG.isErrorEnabled()) LOG.error(String.format("can not load contact from eXo Social Profile with user [%s]", userId), e);
  }
  return contact;
}
  • The information which is get by the user includes:

Name

Type

Description

email

String

Email of user.

firstName

String

First name of user.

lastName

String

Last name of user.

  • The information which is get via UserProfile includes:

Attribute

Type

Description

user.other-info.avatar.url

String

The path containing the user’s avatar.

user.bdate

String

The user’s birthday.

user.home-info.postal.city

String

The home city of user.

user.home-info.postal.country

String

The home country of user.

user.gender

String

The user’s gender.

user.jobtitle

String

The user’s job.

user.home-info.telecom.telephone.number

String

The home phone number of user.

user.business-info.telecom. telephone.number

String

The mobile number of user.

user.home-info.online.uri

String

The individual websites of user.

Poll components

Key

Data type

Description

org.exoplatform.poll. service.DataStorage

org.exoplatform.poll.service. impl.JCRDataStorage

Includes all public APIs to interact with the UI component and database.

org.exoplatform.poll. service.PollService

org.exoplatform.poll.service. impl.PollServiceImpl

Stores data of Polls via the JCR system.

External component plugins

This section consists of the following main topics:

  • Common plugins

    Description of the main component plugins used in Commons, sample configurations, init-params and how to use these plugins.

  • Social plugins

    Description of the main component plugins used in Social, sample configurations, init-params and how to use these plugins.

  • Wiki plugins

    Information about main component plugins used in Wiki, consisting of Wiki Template Page plugin and Page Resolver.

  • Contentplugins

    Description of the main component plugins used in Content, sample configurations, init-params and how to use these plugins.

  • Calendar plugins

    Description of the main component plugins used in Calendar, sample configurations, init-params and how to use these plugins.

  • Init data plugin

    Configuration for initializing default data for Forum, Answers and Poll.

  • Roles plugin

    How to configure the Roles plugin in Forum.

  • Forum plugins

    Description of the main component plugins used in Forum, sample configurations, init-params and how to use these plugins.

  • FAQ plugins

    Description of the main component plugins used to configure the FAQ application of eXo Platform.

Common plugins

This section describes the main component plugins in Commons (used by any eXo Platform modules), sample configurations with explanation about init-params and how to use these plugins.

Currently, only CSS Class Manager plugin is included in this section:

CSS Class Manager

This plugin is used to manage CSS class of file icons.

You can find the configuration file of this component at: commons-extension.war!/WEB-INF/conf/commons-extension/css-class-configuration.xml.

To use the plugin in the component configuration, you must configure the following target-component:

<target-component>org.exoplatform.webui.cssfile.CssClassManager</target-component>

Sample Configuration

<external-component-plugins>
    <target-component>org.exoplatform.webui.cssfile.CssClassManager</target-component>
    <component-plugin>
        <name>forum.default.cssclass</name>
        <set-method>registerCssClassPlugin</set-method>
        <type>org.exoplatform.webui.cssfile.CssClassPlugin</type>
        <description>default supported CSS class icon file</description>
        <init-params>
            <object-param>
                <name>default</name>
                <description></description>
                <object type="org.exoplatform.webui.cssfile.CssClassIconFile">
                    <field name="type">
                        <string>default</string>
                    </field>
                    <field name="cssClass">
                        <string>FileDefault</string>
                    </field>
                    <field name="groupFileTypes">
                        <string><![CDATA[applicationoctet-stream]]></string>
                    </field>
                </object>
            </object-param>
            ...
            <object-param>
                <name>zip</name>
                <description></description>
                <object type="org.exoplatform.webui.cssfile.CssClassIconFile">
                    <field name="type">
                        <string>zip</string>
                    </field>
                    <field name="cssClass">
                        <string>FileArchiveZip</string>
                    </field>
                    <field name="groupFileTypes">
                        <string><![CDATA[FileZip,applicationzip]]></string>
                    </field>
                </object>
            </object-param>
            ...
        </init-params>
    </component-plugin>
</external-component-plugins>

In which:

  • Name: forum.default.cssclass

  • Type: org.exoplatform.webui.cssfile.CssClassPlugin

  • Object type: org.exoplatform.webui.cssfile.CssClassIconFile

Field

Type

Description

type

string

The file extension.

cssClass

string

The CSS class which is corresponding to the file extension.

groupFileTypes

string

The list of file types which have the same CSS class as the file extension.

Social plugins

This section describes the main component plugins used in Social, sample configurations with explanation about init-params and how to use these plugins.

Activity Resource Bundle

This plugin is used to register the external resource bundle for the internationalized activity type.

Sample configuration:

<component-plugin>
  <name>exosocial:spaces</name>
  <!-- activity type -->
  <set-method>addActivityResourceBundlePlugin</set-method>
  <type>org.exoplatform.social.core.processor.ActivityResourceBundlePlugin</type>
  <init-params>
    <object-param>
      <name>locale.social.Core</name>
      <!-- resource bundle key file -->
      <description>activity key type resource bundle mapping for exosocial:spaces</description>
      <object type="org.exoplatform.social.core.processor.ActivityResourceBundlePlugin">
        <field name="activityKeyTypeMapping">
          <map type="java.util.HashMap">
            <entry>
              <key>
                <string>space_created</string>
              </key>
              <value>
                <string>SpaceActivityPublisher.space_created</string>
              </value>
            </entry>
            <entry>
              <key>
                <string>manager_role_granted</string>
              </key>
              <value>
                <string>SpaceActivityPublisher.manager_role_granted</string>
              </value>
            </entry>
            <entry>
              <key>
                <string>manager_role_revoked</string>
              </key>
              <value>
                <string>SpaceActivityPublisher.manager_role_revoked</string>
              </value>
            </entry>
            <entry>
              <key>
                <string>has_joined</string>
              </key>
              <value>
                <string>SpaceActivityPublisher.has_joined</string>
              </value>
            </entry>
            <entry>
              <key>
                <string>has_left</string>
              </key>
              <value>
                <string>SpaceActivityPublisher.has_left</string>
              </value>
            </entry>
            <entry>
              <key>
                <string>user_joined</string>
              </key>
              <value>
                <string>SpaceActivityPublisher.user_joined</string>
              </value>
            </entry>
            <entry>
              <key>
                <string>member_left</string>
              </key>
              <value>
                <string>SpaceActivityPublisher.member_left</string>
              </value>
            </entry>
            <entry>
              <key>
                <string>space_renamed</string>
              </key>
              <value>
                <string>SpaceActivityPublisher.space_renamed</string>
              </value>
            </entry>
            <entry>
              <key>
                <string>space_description_edited</string>
              </key>
              <value>
                <string>SpaceActivityPublisher.space_description_edited</string>
              </value>
            </entry>
            <entry>
              <key>
                <string>space_avatar_edited</string>
              </key>
              <value>
                <string>SpaceActivityPublisher.space_avatar_edited</string>
              </value>
            </entry>
          </map>
        </field>
      </object>
    </object-param>
  </init-params>
</component-plugin>

In which:

  • Name: exosocial:spaces

  • Set-method: addActivityResourceBundlePlugin

  • Type: org.exoplatform.social.core.processor.ActivityResourceBundlePlugin

  • Init-params:

Object-param

Description

locale.social.Core

The resource bundle key file.

Identity Provider

The plugin provides the identity for a space.

Sample configuration:

<component-plugins>
  <component-plugin>
    <name>SpaceIdentityProvider plugin</name>
    <set-method>registerIdentityProviders</set-method>
    <type>org.exoplatform.social.core.identity.IdentityProviderPlugin</type>
    <init-params>
      <values-param>
        <name>providers</name>
        <description>Identity Providers</description>
        <value>org.exoplatform.social.core.identity.provider.SpaceIdentityProvider</value>
      </values-param>
    </init-params>
  </component-plugin>
</component-plugins>

In which:

  • Name: SpaceIdentityProvider plugin

  • Set-method: registerIdentityProviders

  • Type: org.exoplatform.social.core.identity.IdentityProviderPlugin

  • Init-params:

Name

Possible value

Default value

Description

providers

Every other identity providers

org.exoplatform.social.core.identity.provider.SpaceIdentityProvider

Identity Provider instances for managing identities.

Mentions Processor

This plugin allows creating a link to a user profile when the user is mentioned in the activity content.

To use the plugin in the component configuration, you must use the following target-component:

<target-component>org.exoplatform.social.core.manager.ActivityManager</target-component>

Sample Configuration:

<component-plugin>
  <name>MentionsProcessor</name>
  <set-method>addProcessorPlugin</set-method>
  <type>org.exoplatform.social.core.processor.MentionsProcessor</type>
  <init-params>
    <value-param>
      <name>priority</name>
      <description>priority of this processor (lower are executed first)</description>
      <value>2</value>
    </value-param>
  </init-params>
</component-plugin>

In which:

  • Name: MentionsProcessor

  • Set-method: addProcessorPlugin

  • Type: org.exoplatform.social.core.processor.MentionsProcessor

  • Init-params:

Name

Possible value

Default value

Description

priority

integer

2

The priority of this processor. The lower priority level is executed first.

OSHtml Sanitizer Processor

The plugin renders valid HTML tags appearing in the Activity body (content).

Sample configuration:

<component>
  <key>org.exoplatform.social.core.manager.ActivityManager</key>
  <type>org.exoplatform.social.core.manager.ActivityManagerImpl</type>
  <component-plugins>
    <component-plugin>
      <name>OSHtmlSanitizer</name>
      <set-method>addProcessorPlugin</set-method>
      <type>org.exoplatform.social.core.processor.OSHtmlSanitizerProcessor</type>
    </component-plugin>
  </component-plugins>
</component>

In which:

  • Name: OSHtmlSanitizer

  • Set-method: addProcessorPluginn

  • Type: org.exoplatform.social.core.processor.OSHtmlSanitizerProcessor

Portlet Preference Required

This plugin is used to configure the list of portlet names which will have portlet preference of space context.

To use the plugin in the component configuration, you must use the following target-component:

<target-component>org.exoplatform.social.core.space.spi.SpaceService</target-component>

Sample configuration:

<component-plugin>
  <name>portlets.prefs.required</name>
  <set-method>setPortletsPrefsRequired</set-method>
  <type>org.exoplatform.social.core.application.PortletPreferenceRequiredPlugin</type>
  <init-params>
    <values-param>
      <name>portletsPrefsRequired</name>
      <value>SpaceActivityStreamPortlet</value>
      <value>SpaceSettingPortlet</value>
      <value>MembersPortlet</value>
    </values-param>
  </init-params>
</component-plugin>

In which:

  • Name: portlets.prefs.required

  • Set-method: setPortletsPrefsRequired

  • Type: org.exoplatform.social.core.application.PortletPreferenceRequiredPlugin

  • Init-params:

Name

Possible value

Default value

Description

portletsPrefsRequired

Portlet names

SpaceActivityStreamPortlet; SpaceSettingPortlet; MembersPortlet

The list of portlets which need to be saved and get the space context name.

Profile Updates Publisher

This plugin is used to process activities and comments related to changes on the users’ profiles.

Sample configuration:

<external-component-plugins>
  <target-component>org.exoplatform.social.core.manager.IdentityManager</target-component>
  <component-plugin>
    <name>ProfileUpdatesPublisher</name>
    <set-method>addProfileListener</set-method>
    <type>org.exoplatform.social.core.application.ProfileUpdatesPublisher</type>
  </component-plugin>
</external-component-plugins>

Relationship Publisher

This plugin is used to process activities and comments related to changes on the relationship between two users.

Sample configuration:

<external-component-plugins>
  <target-component>org.exoplatform.social.core.manager.RelationshipManager</target-component>
  <component-plugin>
    <name>RelationshipPublisher</name>
    <set-method>addListenerPlugin</set-method>
    <type>org.exoplatform.social.core.application.RelationshipPublisher</type>
  </component-plugin>
</external-component-plugins>

Space Activity Publisher

This plugin is used to process activities and comments related to spaces, such as creating spaces, editing space information, users joining/leaving spaces, or granting/removing the “manager” role of the spaces.

Sample configuration:

<component-plugin>
  <name>SpaceActivityPublisher</name>
  <set-method>addSpaceListener</set-method>
  <type>org.exoplatform.social.core.application.SpaceActivityPublisher</type>
</component-plugin>

Template Params Processor

This plugin uses the value in the template parameter of the activity and replaces the title and body of the activity with the template parameter of this activity.

To use the plugin in the component configuration, you must use the following target-component:

<target-component>org.exoplatform.social.core.manager.ActivityManager</target-component>

Sample configuration:

<component-plugin>
  <name>TemplateParamsProcessor</name>
  <set-method>addProcessorPlugin</set-method>
  <type>org.exoplatform.social.core.processor.TemplateParamsProcessor</type>
  <init-params>
    <value-param>
      <name>priority</name>
      <value>1</value>
    </value-param>
  </init-params>
</component-plugin>

In which:

  • Name: TemplateParamsProcessor

  • Set-method: addProcessorPlugin

  • Type: org.exoplatform.social.core.processor.TemplateParamsProcessor

  • Init-params:

Name

Possible value

Default value

Description

priority

integer

1

The priority of this processor. The lower priority level is executed first.

URL Converter Filter

This plugin converts all the URLs in the activity into the hyperlinks.

To use the plugin in the component configuration, you must use the following target-component:

<target-component>org.exoplatform.social.common.xmlprocessor.XMLProcessor</target-component>

Sample configuration:

<component-plugin>
  <name>URLConverterFilterPlugin</name>
  <set-method>addFilterPlugin</set-method>
  <type>org.exoplatform.social.common.xmlprocessor.filters.URLConverterFilterPlugin</type>
  <init-params>
    <value-param>
      <name>urlMaxLength</name>
      <description>the max length of URL</description>
      <value>-1</value>
    </value-param>
  </init-params>
</component-plugin>

In which:

  • Name: URLConverterFilterPlugin

  • Set-method: addFilterPlugin

  • Type: org.exoplatform.social.common.xmlprocessor.filters.URLConverterFilterPlugin

  • Init-params:

Value-param

Possible value

Default value

Description

urlMaxLength

integer

-1

The maximum length of the URL. If the URL exceeds the maximum length, the URL will be shortened. If the value is -1, it means the URL is not be shortened.

OpenSocial 2-legged OAuth

This section is about configuring the 2-legged OAuth scenario in OpenSocial. (Reference: OpenSocial.org)

For more information, visit 2-legged OAuth for the OpenSocial REST API.

Generate the key

$ openssl req -newkey rsa:1024 -days 365 -nodes -x509 -keyout testkey.pem \
     -out testkey.pem -subj '/CN=mytestkey'
$ openssl pkcs8 -in testkey.pem -out oauthkey.pem -topk8 -nocrypt -outform PEM

Configure the property file

Edit container.js and change the following parameter to point to your private key and key name.

"gadgets.signingKeyFile" : "oauth.pem",
"gadgets.signingKeyName" : "oauthKey",

Wiki plugins

This section describes the main component plugins used in Wiki, sample configurations with explanation about init-params and how to use these plugins.

Wiki Template Page

This plugin is used to inject default Wiki templates. The configuration can be found in wiki-webapp/src/main/webapp/WEB-INF/conf/configuration.xml.

Sample configuration:

<component-plugin><name>Template page initializer</name>
    <set-method>addWikiTemplatePagePlugin</set-method>
    <type>org.exoplatform.wiki.template.plugin.WikiTemplatePagePlugin</type>
    <description>XML Deployment Plugin</description>
    <init-params>
        <values-param>
            <name>sourcePaths</name>
            <description>path of file imported. </description>
            <value>war:/conf/data/template.xml</value>
            <!--value>war:/conf/data/file-name.xml</value -->
        </values-param>
    </init-params>
</component-plugin>

In which:

  • Name: sourcePaths

  • Set-method: addWikiTemplatePagePlugin

  • Type: org.exoplatform.wiki.template.plugin.WikiTemplatePagePlugin

Init-params

Name

Type

Default value

Description

sourcePaths

String

war:/conf/data/template.xml

The path to import the template file.

Page Resolver

This plugin is used to analyze the URLs to output the page information that users want to access. The configuration can be found in wiki-injector/src/main/resources/conf/portal/configuration.xml.

Sample configuration:

<external-component-plugins>
    <target-component>org.exoplatform.wiki.resolver.PageResolver</target-component>
    <component-plugin>
        <name>urlresolver</name>
        <set-method>setResolverPlugin</set-method>
        <type>org.exoplatform.wiki.resolver.URLResolver</type>
    </component-plugin>
</external-component-plugins>

In which:

  • Name: urlresolver

  • Set-method: setResolverPlugin

  • Type: org.exoplatform.wiki.resolver.URLResolver

Data Injector

This plugin is used to initialize data for Wiki. The configuration can be found in wiki-injector/src/main/resources/conf/portal/configuration.xml.

Sample configuration:

<external-component-plugins>
    <target-component>org.exoplatform.services.bench.DataInjectorService</target-component>
    <component-plugin>
        <name>WikiDataInjector</name>
        <set-method>addInjector</set-method>
        <type>org.exoplatform.wiki.bench.WikiDataInjector</type>
        <description>inject data for Wiki</description>
    </component-plugin>
</external-component-plugins>

In which:

  • Name: WikiDataInjector

  • Set-method: addInjector

  • Type: org.exoplatform.wiki.bench.WikiDataInjector

New User Listener

This plugin is used to listen to events when new users are added to the system. As each user can have a default personal Wiki space created. The configuration can be found in wiki-webapp/src/main/webapp/WEB-INF/conf/configuration.xml.

Sample configuration:

<external-component-plugins>
  <target-component>org.exoplatform.services.organization.OrganizationService</target-component>
  <component-plugin>
      <name>ecm.new.user.event.listener</name>
      <set-method>addListenerPlugin</set-method>
      <type>org.exoplatform.services.jcr.ext.hierarchy.impl.NewUserListener</type>
      <description>description</description>
      <init-params>
        <object-param>
          <name>configuration</name>
          <description>description</description>
          <object type="org.exoplatform.services.jcr.ext.hierarchy.impl.HierarchyConfig">
            <field  name="jcrPaths">
              <collection type="java.util.ArrayList">
                <value>
                  <object type="org.exoplatform.services.jcr.ext.hierarchy.impl.HierarchyConfig$JcrPath">
                    <field name="alias"><string>userApplicationData</string></field>
                    <field name="path"><string>ApplicationData</string></field>
                    <field name="nodeType"><string>nt:unstructured</string></field>
                    <field name="permissions">
                      <collection type="java.util.ArrayList">
                        <value>
                          <object type="org.exoplatform.services.jcr.ext.hierarchy.impl.HierarchyConfig$Permission">
                            <field name="identity"><string>*:/platform/administrators</string></field>
                            <field name="read"><string>true</string></field>
                            <field name="addNode"><string>true</string></field>
                            <field name="setProperty"><string>true</string></field>
                            <field name="remove"><string>true</string></field>
                          </object>
                        </value>
                      </collection>
                    </field>
                  </object>
                </value>
              </collection>
            </field>
          </object>
        </object-param>
      </init-params>
    </component-plugin>
</external-component-plugins>

In which:

  • Name: urlresolver

  • Set-method: setResolverPlugin

  • Type: org.exoplatform.services.jcr.ext.hierarchy.impl.NewUserListener

Session Created Listener

This plugin is used to listen to events when users log in (start a session). The configuration can be found in wiki-service/src/main/resources/conf/portal/configuration.xml.

Sample configuration:

 <external-component-plugins>
    <target-component>org.exoplatform.services.listener.ListenerService</target-component>
    <component-plugin>
      <name>org.exoplatform.web.GenericHttpListener.sessionCreated</name>
      <set-method>addListener</set-method>
      <type>org.exoplatform.wiki.service.impl.SessionCreatedListener</type>
      <description>description</description>
    </component-plugin>
</external-component-plugins>

In which:

  • Name: urlresolver

  • Set-method: addListener

  • Type: org.exoplatform.wiki.service.impl.SessionCreatedListener

Session Destroyed Listener

This plugin is used to listen to events when users logout (finish a session or session timeout). The configuration can be found in wiki-service/src/main/resources/conf/portal/configuration.xml.

Sample configuration:

<external-component-plugins>
    <target-component>org.exoplatform.services.listener.ListenerService</target-component>
    <component-plugin>
        <name>org.exoplatform.web.GenericHttpListener.sessionDestroyed</name>
        <set-method>addListener</set-method>
        <type>org.exoplatform.wiki.service.impl.SessionDestroyedListener</type>
        <description>description</description>
    </component-plugin>
</external-component-plugins>

In which:

  • Name: sessionDestroyed

  • Set-method: addListener

  • Type: org.exoplatform.wiki.service.impl.SessionDestroyedListener

Uncached Macros

This plugin is used to list the macros which must not be cached. This is required for macros generating dynamic content (meaning the content generated by the macro can change even if the wiki page source is not updated). Generated HTML version of Wiki pages are cached to avoid generating it again at each display. If a page contains macros producing dynamic content, its HTML version must not be cached to be sure it is always up to date. For example the rss macro provides new content as soon as new articles are published on the remote website, so it must be listed as an uncached macro. The default configuration of this plugin can be found in wiki-service/src/main/resources/conf/portal/cache-configuration.xml.

Sample configuration:

<external-component-plugins>
    <target-component>org.exoplatform.wiki.service.WikiService</target-component>
    <component-plugin>
        <name>addUnCachedMacro</name>
        <set-method>addUnCachedMacro</set-method>
        <type>org.exoplatform.wiki.rendering.cache.UnCachedMacroPlugin</type>
        <description>Add the uncached macro list</description>
        <init-params>
            <values-param>
                <name>uncachedMacroes</name>
                <value>rss</value>
                <value>jira</value>
            </values-param>
        </init-params>
    </component-plugin>
</external-component-plugins>

In which:

  • Name: addUnCachedMacro

  • Set-method: addUnCachedMacro

  • Type: org.exoplatform.wiki.rendering.cache.UnCachedMacroPlugin

Init-params

Name

Type

Default value

Description

uncachedMacroes

String

rss, jira

The list of uncached macros.

Content plugins

This section describes the main component plugins used in Content, sample configurations with explanation about init-params and how to use these plugins.

Authoring Publication

This plugin is used to manage the publication lifecycle of web contents and DMS document on a portal page with more states and versions. The configuration is applied mainly in ``

packaging/wcm/webapp/src/main/webapp/WEB-INF/conf/content-extended/authoring/configuration.xml``.

Sample configuration:

<component-plugin>
    <name>Authoring publication</name>
    <set-method>addPublicationPlugin</set-method>
    <type>org.exoplatform.services.wcm.extensions.publication.lifecycle.authoring.AuthoringPublicationPlugin
    </type>
    <description>This publication lifecycle publish a web content or DMS document to a portal page with more
    states and version.
    </description>
</component-plugin>

In which:

  • Name: Authoring publication

  • Set-method: addPublicationPlugin

  • Type: org.exoplatform.services.wcm.extensions.publication.lifecycle.authoring.AuthoringPublicationPlugin

Content Type Filter

This plugin is used to filter Content node types.

To use the plugin in the component configuration, you must use the following target-component:

<target-component>org.exoplatform.services.cms.templates.TemplateService</target-component>

The configuration is applied mainly in /packaging/wcm/webapp/src/main/webapp/WEB-INF/conf/dms-extension/dms/dms-templates-configuration.xml.

Sample configuration:

<external-component-plugins>
    <target-component>org.exoplatform.services.cms.templates.TemplateService</target-component>
    <component-plugin>
        <name>FilterContentTypeForWCMSpecificFolder</name>
        <set-method>addContentTypeFilterPlugin</set-method>
        <type>org.exoplatform.services.cms.templates.ContentTypeFilterPlugin</type>
        <description>this plugin is used to filter wcm nodetype</description>
        <init-params>
            <object-param>
                <name>cssFolderFilter</name>
                <description>only exo:cssFile can be created in exo:cssFolder</description>
                <object type="org.exoplatform.services.cms.templates.ContentTypeFilterPlugin$FolderFilterConfig">
                    <field name="folderType">
                        <string>exo:cssFolder</string>
                    </field>
                    <field name="contentTypes">
                        <collection type="java.util.ArrayList">
                            <value>
                                <string>exo:cssFile</string>
                            </value>
                        </collection>
                    </field>
                </object>
            </object-param>
            <object-param>
                ...
            </object-param>
        </init-params>
    </component-plugin>
</external-component-plugins>

In which:

  • Name: FilterContentTypeForWCMSpecificFolder

  • Set-method: addContentTypeFilterPlugin

  • Type: org.exoplatform.services.cms.templates.ContentTypeFilterPlugin

  • Object type: org.exoplatform.services.cms.templates.ContentTypeFilterPlugin$FolderFilterConfig

Field

Type

Value

Description

folderType

string

exo:cssFolder

The folder type.

contentTypes

Collection

{java.util.ArrayList}

The content type.

Context

This plugin is used to store the context configuration of a publication lifecycle. To use the plugin in the component configuration, you must use the following target-component:

<target-component>org.exoplatform.services.wcm.extensions.publication.PublicationManager</target-component>

The configuration is applied mainly in packaging/wcm/webapp/src/main/webapp/WEB-INF/conf/content-extended/authoring/configuration.xml.

Sample configuration:

<external-component-plugins>
    <target-component>org.exoplatform.services.wcm.extensions.publication.PublicationManager</target-component>
    <component-plugin>
        <name>AddContext</name>
        <set-method>addContext</set-method>
        <type>org.exoplatform.services.wcm.extensions.publication.context.ContextPlugin</type>
        <init-params>
            <object-param>
                <name>contexts</name>
                <object type="org.exoplatform.services.wcm.extensions.publication.context.impl.ContextConfig">
                    <field name="contexts">
                        <collection type="java.util.ArrayList">
                            <value>
                                <object type="org.exoplatform.services.wcm.extensions.publication.context.impl.ContextConfig$Context">
                                    <field name="name">
                                        <string>context2</string>
                                    </field>
                                    <field name="priority">
                                        <string>100</string>
                                    </field>
                                    <field name="lifecycle">
                                        <string>lifecycle2</string>
                                    </field>
                                    <field name="site">
                                        <string>acme</string>
                                    </field>
                                </object>
                            </value>
                        </collection>
                    </field>
                </object>
            </object-param>
        </init-params>
    </component-plugin>
</external-component-plugins>

In which:

  • Name: AddContext

  • Set-method: addContext

  • Type: org.exoplatform.services.wcm.extensions.publication.context.ContextPlugin

  • Object type: org.exoplatform.services.wcm.extensions.publication.context.impl.ContextConfig

Field

Type

Value

Description

name

string

context2

The name of the context.

priority

string

100

The context priority, the higher number indicates higher priority. Because a site may have several lifecycles, the lifecycle with higher priority will be executed sooner.

lifecycle

string

lifecycle2

The name of the lifecycle.

site

string

acme

The site that will apply the context configuration.

Exclude Include Data Type

This plugin is used in the SiteSearchService component to filter the search results before these results are presented on the search page.

The configuration is applied mainly in ``

core/core-configuration/src/main/webapp/WEB-INF/conf/wcm-core/core-search-configuration.xml``.

Sample configuration:

<component-plugins>
    <component-plugin>
        <name>ExcludeMimeTypes</name>
        <set-method>addExcludeIncludeDataTypePlugin</set-method>
        <type>org.exoplatform.services.wcm.search.ExcludeIncludeDataTypePlugin</type>
        <init-params>
            <properties-param>
                <name>search.exclude.datatypes</name>
                <description>exclude some data type when search</description>
                <property name="mimetypes" value="${wcm.search.excluded-mimetypes:text/css,text/javascript,application/x-javascript,text/ecmascript}"/>
            </properties-param>
        </init-params>
    </component-plugin>
</component-plugins>

In which:

  • Name: ExcludeMimeTypes

  • Set-method: addExcludeIncludeDataTypePlugin

  • Type: org.exoplatform.services.wcm.search.ExcludeIncludeDataTypePlugin

  • The plugin has the following parameter:

Properties-param

Description

search.exclude.datatype

Excludes some data types when doing search.

  • The search.exclude.datatype property includes two attributes:

Attribute

Value

Description

name

mimetypes

The name of the property param.

value

${wcm.search.excluded-mimetypes:text/css,text/javascript,application/x-javascript,text/ecmascript}

The list of mimetypes which will be excluded from the search results.

Friendly

This plugin is used to refine URLs in Content.

To use the plugin in the component configuration, you must use the following target-component:

<target-component>org.exoplatform.services.wcm.friendly.FriendlyService</target-component>

Do as follows:

Set the profile Friendly for eXo Platform by adding the following configuration to the setenv-customize.(sh|bat) file:

SET EXO_PROFILES=all,friendly

Use the following sample configuration in the /WEB-INF/conf/content-extended/friendly/configuration.xml file of the deployed war package.

Sample configuration:

<external-component-plugins>
      <target-component>org.exoplatform.services.wcm.friendly.FriendlyService</target-component>
      <component-plugin>
        <name>FriendlyService.addConfiguration</name>
        <set-method>addConfiguration</set-method>
        <type>org.exoplatform.services.wcm.friendly.impl.FriendlyPlugin</type>
        <description>Configures</description>
        <priority>100</priority>
        <init-params>
          <value-param>
            <name>enabled</name>
            <value>${wcm.friendly.enabled:true}</value>
          </value-param>
          <!--
          <value-param>
            <name>servletName</name>
            <value>${wcm.friendly.servletName:content}</value>
          </value-param>
          -->
          <object-param>
            <name>friendlies.configuration</name>
            <object type="org.exoplatform.services.wcm.friendly.impl.FriendlyConfig">
              <field name="friendlies">
                <collection type="java.util.ArrayList">
                  <value>
                    <object type="org.exoplatform.services.wcm.friendly.impl.FriendlyConfig$Friendly">
                      <field name="friendlyUri"><string>${wcm.friendly.documents.friendlyUri:documents}</string></field>
                      <field name="unfriendlyUri"><string> ${wcm.friendly.documents.unfriendlyUri:/acme/detail?content-id=/repository/collaboration}</string></field>
                    </object>
                  </value>
                  <value>
                    <object type="org.exoplatform.services.wcm.friendly.impl.FriendlyConfig$Friendly">
                      <field name="friendlyUri"><string>${wcm.friendly.files.friendlyUri:files}</string></field>
                      <field name="unfriendlyUri"><string>${wcm.friendly.files.unfriendlyUri:/rest/jcr/repository/collaboration}</string></field>
                    </object>
                  </value>
                </collection>
              </field>
            </object>
          </object-param>
        </init-params>
      </component-plugin>
    </external-component-plugins>

In which:

  • Name: FriendlyService.addConfiguration

  • Set-method: addConfiguration

  • Type: org.exoplatform.services.wcm.friendly.impl.FriendlyPlugin

  • Object type: org.exoplatform.services.wcm.friendly.impl.FriendlyConfig

Field

Type

Value

Description

friendlyUri

string

documents

The object into which the friendly URI is applied.

unfriendlyUri

string

/acme/detail?content-id=/repository/collaboration

The path to the location where the friendly URI is applied.

Image Thumbnail

This plugin is used to configure the file types and get thumbnail for images.

To use the plugin in the component configuration, you must use the following target-component:

<target-component>org.exoplatform.services.cms.thumbnail.ThumbnailService</target-component>

The configuration is applied mainly in packaging/wcm/webapp/src/main/webapp/WEB-INF/conf/dms-extension/dms/dms-thumbnail-configuration.xml.

Sample configuration:

<external-component-plugins>
    <target-component>org.exoplatform.services.cms.thumbnail.ThumbnailService</target-component>
    <component-plugin>
        <name>ImageThumbnailPlugin</name>
        <set-method>addPlugin</set-method>
        <type>org.exoplatform.services.cms.thumbnail.impl.ImageThumbnailPlugin</type>
        <init-params>
            <object-param>
                <name>thumbnailType</name>
                <description>Thumbnail types</description>
                <object type="org.exoplatform.services.cms.thumbnail.impl.ThumbnailType">
                    <field name="mimeTypes">
                        <collection type="java.util.ArrayList">
                            <value>
                                <string>image/jpeg</string>
                            </value>
                            <value>
                                <string>image/png</string>
                            </value>
                            <value>
                                <string>image/gif</string>
                            </value>
                            <value>
                                <string>image/bmp</string>
                            </value>
                            <value>
                                <string>image/tiff</string>
                            </value>
                        </collection>
                    </field>
                </object>
            </object-param>
        </init-params>
    </component-plugin>
</external-component-plugins>

In which:

  • Name: ImageThumbnailPlugin

  • Set-method: addPlugin

  • Type: org.exoplatform.services.cms.thumbnail.impl.ImageThumbnailPlugin

  • Object type: org.exoplatform.services.cms.thumbnail.impl.ThumbnailType

Field

Type

Value

Description

mimeTypes

String

image/jpeg

image/png

image/gif

image/bmp

image/tiff

The list of thumbnail image types.

Ignore Portal

When a new portal is created, the configuration of IgnorePortalPlugin is used to avoid deploying data to the existing ones which are listed in the init-parameters.

To use the plugin in the component configuration, you must use the following target-component:

<target-component>org.exoplatform.services.wcm.portal.artifacts.CreatePortalArtifactsService</target-component>

The configuration is applied mainly in packaging/wcm/webapp/src/main/webapp/WEB-INF/conf/wcm-extension/wcm/deployment/template-deployment-configuration.xml.

Sample configuration:

<external-component-plugins>
    <target-component>org.exoplatform.services.wcm.portal.artifacts.CreatePortalArtifactsService</target-component>
    <component-plugin>
      <name>Add ignored portals</name>
      <set-method>addIgnorePortalPlugin</set-method>
      <type>org.exoplatform.services.wcm.portal.artifacts.IgnorePortalPlugin</type>
      <description>ignored portals. the service will not deploy data to the ignored portals</description>
      <init-params>
        <values-param>
          <name>ignored.portals</name>
          <description>ignored portal list</description>
          <value>classic</value>
          <value>acme</value>
          <value>WAIPortal</value>
        </values-param>
      </init-params>
    </component-plugin>
</external-component-plugins>

In which:

  • Name: Add ignored portals

  • Set-method: addIgnorePortalPlugin

  • Type: org.exoplatform.services.wcm.portal.artifacts.IgnorePortalPlugin

Init-params

Name

Type

Value

Description

ignored.portals

string

classic, acme, WAIPortal

The list of ignored existing portals.

Initial Webcontent

When a portal is created, this plugin will deploy initial web-contents as the site artifact into the Site Artifact folder of that portal.

To use the plugin in the component configuration, you must use the following target-component:

<target-component>org.exoplatform.services.wcm.portal.artifacts.CreatePortalArtifactsService</target-component>

The configuration is applied mainly in packaging/wcm/webapp/src/main/webapp/WEB-INF/conf/wcm-extension/wcm/newsletter-configuration.xml.

Sample configuration:

<external-component-plugins>
    <target-component>org.exoplatform.services.wcm.portal.artifacts.CreatePortalArtifactsService</target-component>
    <component-plugin>
        <name>Initial webcontent artifact for each site</name>
        <set-method>addPlugin</set-method>
        <type>org.exoplatform.services.wcm.webcontent.InitialWebContentPlugin</type>
        <description>This plugin deploy some initial webcontent as site artifact to site artifact folder of portal when
            a portal is
            created
        </description>
        <init-params>
            <object-param>
                <name>Portal logo data</name>
                <description>Deployment Descriptor</description>
                <object type="org.exoplatform.services.deployment.DeploymentDescriptor">
                    <field name="target">
                        <object type="org.exoplatform.services.deployment.DeploymentDescriptor$Target">
                            <field name="repository">
                                <string>repository</string>
                            </field>
                            <field name="workspace">
                                <string>collaboration</string>
                            </field>
                            <field name="nodePath">
                                <string>/sites/{portalName}/web contents/site artifacts</string>
                            </field>
                        </object>
                    </field>
                    <field name="sourcePath">
                        <string>war:/conf/sample-portal/wcm/artifacts/site-resources/acme-templates/Logo.xml</string>
                    </field>
                </object>
            </object-param>
            <object-param>
                <name>Portal signin data</name>
                <description>Deployment Descriptor</description>
                <object type="org.exoplatform.services.deployment.DeploymentDescriptor">
                    <field name="target">
                        <object type="org.exoplatform.services.deployment.DeploymentDescriptor$Target">
                            <field name="repository">
                                <string>repository</string>
                            </field>
                            <field name="workspace">
                                <string>collaboration</string>
                            </field>
                            <field name="nodePath">
                                <string>/sites/{portalName}/web contents/site artifacts</string>
                            </field>
                        </object>
                    </field>
                    <field name="sourcePath">
                        <string>war:/conf/sample-portal/wcm/artifacts/site-resources/acme-templates/Signin.xml</string>
                    </field>
                </object>
            </object-param>
            <object-param>
                ...
            </object-param>
        </init-params>
    </component-plugin>
</external-component-plugins>

In which:

  • Name: AddLifecycle

  • Set-method: addPlugin

  • Type: org.exoplatform.services.wcm.webcontent.InitialWebContentPlugin

  • Object type: org.exoplatform.services.deployment.DeploymentDescriptor$Target

Name

Type

Value

Description

repository

string

repository

The repository into which the initial web contents will be deployed.

workspace

string

collaboration

The workspace into which the initial web contents will be deployed.

nodePath

string

/sites/{portalName}/web contents/site artifacts

The target node where the initial web-contents will be deployed into.

sourcePath

string

war:/conf/sample-portal/wcm/artifacts/site-resources/acme-templates/Logo.xml

The path to the source that this plugin will get data.

Lock Groups Or Users

This plugin is used to configure predefined groups or users for lock administration. To use the plugin in the component configuration, you must use the following target-component:

<target-component>org.exoplatform.services.cms.lock.LockService</target-component>

The configuration is applied mainly in core/core-configuration/src/main/webapp/WEB-INF/conf/wcm-core/core-services-configuration.xml.

Sample configuration:

<external-component-plugins>
    <target-component>org.exoplatform.services.cms.lock.LockService</target-component>
    <component-plugin>
        <name>predefinedLockGroupsOrUsersPlugin</name>
        <set-method>addLockGroupsOrUsersPlugin</set-method>
        <type>org.exoplatform.services.cms.lock.impl.LockGroupsOrUsersPlugin</type>
        <init-params>
            <object-param>
                <name>LockGroupsOrUsers.configuration</name>
                <description>configuration predefined groups or users for lock administrator</description>
                <object type="org.exoplatform.services.cms.lock.impl.LockGroupsOrUsersConfig">
                    <field name="settingLockList">
                        <collection type="java.util.ArrayList">
                            <value>
                                <string>*:/platform/administrators</string>
                            </value>
                        </collection>
                    </field>
                </object>
            </object-param>
        </init-params>
    </component-plugin>
</external-component-plugins>

In which:

  • Name: predefinedLockGroupsOrUsersPlugin

  • Set-method: addLockGroupsOrUsersPlugin

  • Type: org.exoplatform.services.cms.lock.impl.LockGroupsOrUsersPlugin

  • Object type: org.exoplatform.services.cms.lock.impl.LockGroupsOrUsersConfig

Field

Type

Value

Description

settingLockList

ArrayList

{java.util.ArrayList}

The list of the groups or user to be locked.

Manage Drive

This plugin is used to create a predefined drive into a repository. A drive can be considered as a shortcut in the content repository, a quick access to some places for users. You can restrict the visibility of this drive to a group/user and apply a specific view depending on the content you have in this area.

A drive is the combination of:

  • Path: the root folder of the drive.

  • View: how we can see contents, such as by list, thumbnails.

  • Role: the visibility to every users, a group or a single user.

  • Options: allow you to specify whether to see hidden nodes or not and to create folders in this drive or not.

To use the plugin in the component configuration, you must use the following target-component:

<target-component>org.exoplatform.services.cms.drives.ManageDriveService</target-component>
The configuration is applied mainly in ``

packaging/wcm/webapp/src/main/webapp/WEB-INF/conf/dms-extension/dms/dms-drives-configuration.xml``.

The following structure is used for drives configuration.

<external-component-plugins>
    <target-component>org.exoplatform.services.cms.drives.ManageDriveService</target-component>
    <component-plugin>
        <name>manage.drive.plugin</name>
        <set-method>setManageDrivePlugin</set-method>
        <type>org.exoplatform.services.cms.drives.impl.ManageDrivePlugin</type>
        <description>Nothing</description>
        <init-params>
            <object-param>
                There are initializing attributes of org.exoplatform.services.cms.drives.DriveData object
            </object-param>
        </init-params>
    </component-plugin>
</external-component-plugins>

The file that contains the structure above will be configured in the configuration.xml file as the following:

<import>war:/conf/wcm-extension/dms/drives-configuration.xml</import>

Sample configuration:

<external-component-plugins>
    <target-component>org.exoplatform.services.cms.drives.ManageDriveService</target-component>
    <component-plugin>
        <name>manage.drive.plugin</name>
        <set-method>setManageDrivePlugin</set-method>
        <type>org.exoplatform.services.cms.drives.impl.ManageDrivePlugin</type>
        <description>Nothing</description>
        <init-params>
            <object-param>
                <name>Managed Sites</name>
                <description>Managed Sites</description>
                <object type="org.exoplatform.services.cms.drives.DriveData">
                    <field name="name">
                        <string>Managed Sites</string>
                    </field>
                    <field name="repository">
                        <string>repository</string>
                    </field>
                    <field name="workspace">
                        <string>collaboration</string>
                    </field>
                    <field name="permissions">
                        <string>*:/platform/administrators</string>
                    </field>
                    <field name="homePath">
                        <string>/sites</string>
                    </field>
                    <field name="icon">
                        <string/>
                    </field>
                    <field name="views">
                        <string>wcm-view</string>
                    </field>
                    <field name="viewPreferences">
                        <boolean>false</boolean>
                    </field>
                    <field name="viewNonDocument">
                        <boolean>true</boolean>
                    </field>
                    <field name="viewSideBar">
                        <boolean>true</boolean>
                    </field>
                    <field name="showHiddenNode">
                        <boolean>false</boolean>
                    </field>
                    <field name="allowCreateFolders">
                        <string>nt:folder,nt:unstructured</string>
                    </field>
                    <field name="allowNodeTypesOnTree">
                        <string>*</string>
                    </field>
                </object>
            </object-param>
        </init-params>
    </component-plugin>
</external-component-plugins>

In which:

  • Name: manage.drive.plugin

  • Set-method: setManageDrivePlugin

  • Type: org.exoplatform.services.cms.drives.impl.ManageDrivePlugin

  • Object type: org.exoplatform.services.cms.drives.DriveData

Field

Type

Value

Description

name

String

Managed Sites

The name of drive which must be unique.

repository

String

repository

Content Repository where to find the root path.

workspace

String

collaboration

Workspace in the Content Repository.

homePath

String

/sites

Root path in the Content Repository. ``

userId

`` can be used to use the userId at runtime in the path.

permissions

String

*:/platform/administrators

Visibility of the drive based on eXo rights. For example: *:/platform/users

icon

String

N/A

URL to the icon.

views

String

wcm-view

The list of views you want to use, separated by commas. For example: simple-view,admin-view

viewPreferences

Boolean

false

The User Preference icon will be visible if true.

viewNonDocument

Boolean

true

Non-document types will be visible in the user view if true.

viewSideBar

Boolean

true

Shows/Hides the left bar (with navigation and filters).

showHiddenNode

Boolean

false

Hidden nodes will be visible if true.

allowCreateFolders

String

nt:folder,nt:unstructured

List of node types that you can create as folders. For example: nt:folder,nt:unstructured.

allowNodeTypesOnTree

String

*

Allows you to filter node types in the navigation tree. For example, the default value is “*” to show all content types.

Manage View

This plugin is used to create a predefined View into a repository. A View can include many object parameters. Parameters are used to create default Views, Templates and Actions of Manage View service. View enables administrators to customize View classification that can impact on users in exploring workspace. Each object-param has a type that is a class representing all properties of a View.

To use the plugin in the component configuration, you must use the following target-component:

<target-component>org.exoplatform.services.cms.views.ManageViewService</target-component>

The configuration is applied mainly in packaging/wcm/webapp/src/main/webapp/WEB-INF/conf/dms-extension/dms/dms-views-configuration.xml.

Sample configuration:

<external-component-plugins>
    <target-component>org.exoplatform.services.cms.views.ManageViewService</target-component>
    <component-plugin>
        <name>manage.view.plugin</name>
        <set-method>setManageViewPlugin</set-method>
        <type>org.exoplatform.services.cms.views.impl.ManageViewPlugin</type>
        <description>this plugin manage user view</description>
        <init-params>
            <value-param>
                <name>autoCreateInNewRepository</name>
                <value>true</value>
            </value-param>
            <value-param>
                <name>predefinedViewsLocation</name>
                <value>war:/conf/dms-extension/dms/artifacts</value>
            </value-param>
            <value-param>
                <name>repository</name>
                <value>repository</value>
            </value-param>
            <object-param>
              <name>Web</name>
              <description>View configuration of WCM administrator</description>
              <object type="org.exoplatform.services.cms.views.ViewConfig">
                <field name="name"><string>Web</string></field>
                <field name="permissions"><string>*:/platform/web-contributors</string></field>
                <field name="template"><string>/exo:ecm/views/templates/ecm-explorer/Content</string></field>
                <field name="tabList">
                  <collection type="java.util.ArrayList">
                    <value>
                      <object type="org.exoplatform.services.cms.views.ViewConfig$Tab">
                        <field name="tabName"><string>Authoring</string></field>
                        <field name="buttons">
                          <string>
                            addCategory; addFolder; addDocument; editDocument; upload; viewPermissions; managePublications; manageCategories; taggingDocument; vote; watchDocument; publicationRequestApproval; publicationApproveContent; publicationPublish; addLocalizationLink
                          </string>
                        </field>
                      </object>
                    </value>
                  </collection>
                </field>
              </object>
            </object-param>
            <object-param>
              <name>Content Template</name>
              <description>Template to display contents in list style</description>
              <object type="org.exoplatform.services.cms.views.TemplateConfig">
                <field name="type"><string>ecmExplorerTemplate</string></field>
                <field name="name"><string>Content</string></field>
                <field name="warPath"><string>/ecm-explorer/ContentView.gtmpl</string></field>
              </object>
            </object-param>
        </init-params>
    </component-plugin>
</external-component-plugins>

In which:

  • Name: manage.view.plugin

  • Set-method: setManageViewPlugin

  • Type: org.exoplatform.services.cms.views.impl.ManageViewPlugin

  • Init-param:

value-param

Type

Value

Description

autoCreateInNewRepository

boolean

true

Allows creating a predefined View in this repository if the value is “true”.

predefinedViewsLocation

string

war:/conf/dms-extension/dms/artifacts

The location of the View node in the repository.

repository

string

repository

The repository name.

  • Object type: org.exoplatform.services.cms.views.ViewConfig

Field

Type

Value

Description

name

string

Web

The name of view which must be unique inside Content.

permissions

string

*:/platform/web-contributors

Visibility of the view based on eXo rights.

template

string

/exo:ecm/views/templates/ecm-explorer/Content

Specifies path to the template location.

tabList

ArrayList

{java.util.ArrayList}

Includes a set of view names.

  • Object type: org.exoplatform.services.cms.views.ViewConfig$Tab

Field

Type

Value

Description

tabName

string

Authoring

The name of tab which must be unique.

button

string

addCategory; addFolder; addDocument; editDocument; upload; viewPermissions; managePublications; manageCategories; taggingDocument; vote; watchDocument; publicationRequestApproval; publicationApproveContent; publicationPublish; addLocalizationLink

Specifies a set of view component names.

  • Object type: org.exoplatform.services.cms.views.TemplateConfig

Field

Type

Value

Description

type

string

ecmExplorerTemplate

Specifies if a name is truly a class representing all properties of a view.

name

string

Content

Specifies a view component name.

warPath

string

/ecm-explorer/ContentView.gtmpl

Specifies a template location to view.

PDF Thumbnail

This plugin is to set the supported file types of PDF thumbnail. See also **ImageThumbnailPlugin**.

To use the plugin in the component configuration, you must use the following target-component:

<target-component>org.exoplatform.services.cms.thumbnail.ThumbnailService</target-component>

The configuration is applied mainly in packaging/wcm/webapp/src/main/webapp/WEB-INF/conf/dms-extension/dms/dms-thumbnail-configuration.xml.

Sample configuration:

<component-plugin>
    <name>PDFThumbnailPlugin</name>
    <set-method>addPlugin</set-method>
    <type>org.exoplatform.services.cms.thumbnail.impl.PDFThumbnailPlugin</type>
    <init-params>
        <object-param>
            <name>thumbnailType</name>
            <description>Thumbnail types</description>
            <object type="org.exoplatform.services.cms.thumbnail.impl.ThumbnailType">
                <field name="mimeTypes">
                    <collection type="java.util.ArrayList">
                        <value>
                            <string>application/pdf</string>
                        </value>
                    </collection>
                </field>
            </object>
        </object-param>
    </init-params>
</component-plugin>

In which:

  • Name: PDFThumbnailPlugin

  • Set-method: addPlugin

  • Type: org.exoplatform.services.cms.thumbnail.impl.PDFThumbnailPlugin

  • Object type: org.exoplatform.services.cms.thumbnail.impl.ThumbnailType

Field

Type

Value

Description

mimeTypes

String

application/pdf

The MIME type of the PDF thumbnail.

Portlet Template

This plugin is used to import the view templates into Content List Viewer.

To use the plugin in the component configuration, you must use the following target-component:

<target-component>org.exoplatform.services.cms.views.ApplicationTemplateManagerService</target-component>

The configuration is applied mainly in packaging/wcm/webapp/src/main/webapp/WEB-INF/conf/wcm-extension/dms/application-templates-configuration.xml.

Sample configuration:

<external-component-plugins>
    <target-component>org.exoplatform.services.cms.views.ApplicationTemplateManagerService</target-component>
    <component-plugin>
        <name>clv.templates.plugin</name>
        <set-method>addPlugin</set-method>
        <type>org.exoplatform.services.cms.views.PortletTemplatePlugin</type>
        <description>This plugin is used to import views templates for Content List Viewer</description>
        <init-params>
            <value-param>
                <name>portletName</name>
                <value>content-list-viewer</value>
            </value-param>
            <value-param>
                <name>portlet.template.path</name>
                <value>war:/conf/wcm-artifacts/application-templates/content-list-viewer</value>
            </value-param>
            <object-param>
              <name>Two columns CLV template</name>
              <description>Two columns CLV template</description>
              <object type="org.exoplatform.services.cms.views.PortletTemplatePlugin$PortletTemplateConfig">
                <field name="title">
                  <string>Two Columns</string>
                </field>
                <field name="templateName">
                  <string>TwoColumns.gtmpl</string>
                </field>
                <field name="category">
                  <string>list</string>
                </field>
              </object>
            </object-param>
            <object-param>
                ....
            </object-param>
        </init-params>
    </component-plugin>
</external-component-plugins>

In which:

  • Name: clv.templates.plugin

  • Set-method: addPlugin

  • Type: org.exoplatform.services.cms.views.PortletTemplatePlugin

  • Init-param:

Value-param

Type

Value

Description

portletName

string

content-list-viewer

The name of the portlet.

portlet.template.path

string

war:/conf/wcm-artifacts/application-templates/content-list-viewer

The path to the configuration of the portlet.

  • Object type: org.exoplatform.services.cms.views.PortletTemplatePlugin$PortletTemplateConfig

Field

Type

Description

templateName

string

The name of the GROOVY template.

category

string

The category name.

Query

This plugin is used to store predefined queries into the repositories of the system.

To use the plugin in the component configuration, you must use the following target-component:

<target-component>org.exoplatform.services.cms.queries.QueryService</target-component>

The configuration is applied mainly in /packaging/wcm/webapp/src/main/webapp/WEB-INF/conf/dms-extension/dms/dms-queries-configuration.xml.

Sample configuration:

<external-component-plugins>
    <target-component>org.exoplatform.services.cms.queries.QueryService</target-component>
    <component-plugin>
        <name>query.plugin</name>
        <set-method>setQueryPlugin</set-method>
        <type>org.exoplatform.services.cms.queries.impl.QueryPlugin</type>
        <description>Nothing</description>
        <init-params>
            <value-param>
                <name>autoCreateInNewRepository</name>
                <value>true</value>
            </value-param>
            <value-param>
                <name>repository</name>
                <value>repository</value>
            </value-param>
            <object-param>
                <name>CreatedDocuments</name>
                <description>documents created by the current user</description>
                <object type="org.exoplatform.services.cms.queries.impl.QueryData">
                    <field name="name">
                        <string>Created Documents</string>
                    </field>
                    <field name="language">
                        <string>xpath</string>
                    </field>
                    <field name="statement">
                        <string>//*[(@jcr:primaryType = 'exo:article' or @jcr:primaryType = 'nt:file') and
                            @exo:owner='${UserId}$'] order by @exo:dateCreated descending
                        </string>
                    </field>
                    <field name="permissions">
                        <collection type="java.util.ArrayList">
                            <value>
                                <string>*:/platform/users</string>
                            </value>
                        </collection>
                    </field>
                    <field name="cachedResult">
                        <boolean>false</boolean>
                    </field>
                </object>
            </object-param>
        </init-params>
    </component-plugin>
</external-component-plugins>

In which:

  • Name: predefinedTaxonomyPlugin

  • Set-method: setQueryPlugin

  • Type: org.exoplatform.services.cms.queries.impl.QueryPlugin

  • Init-param:

Value-param

Type

Value

Description

autoCreateInNewRepository

boolean

true

Stores queries in a new repository if the value is “true”.

repository

string

repository

The repository to the target node.

  • Object type: org.exoplatform.services.cms.queries.impl.QueryData

Field

Type

Description

name

string

The name of the query.

language

string

The language of the query (Xpath, SQL).

statement

string

The query statement.

permissions

ArrayList

The permission which users must have to use this query.

cachedResult

boolean

Specifies if the query is cached or not.

Watch Document

The WatchDocumentService component allows users to watch/unwatch a document. If they are watching the document, they will receive a notification mail when there are any changes on the document. The configuration of this component is found in /core/core-configuration/src/main/webapp/WEB-INF/conf/wcm-core/core-services-configuration.xml.

<external-component-plugins>
    <target-component>org.exoplatform.services.cms.watch.WatchDocumentService</target-component>
    <component-plugin>
      <name>watching document notification email contents setting</name>
      <set-method>initializeMessageConfig</set-method>
      <type>org.exoplatform.services.cms.watch.impl.MessageConfigPlugin</type>
      <description>Initialize the settings for watching document notification email contents</description>
      <init-params>
        <object-param>
          <name>messageConfig</name>
          <description>Message Configuration</description>
          <object type="org.exoplatform.services.cms.watch.impl.MessageConfig">
            <field name="subject"><string>${gatein.ecms.watchdocument.subject:Your watching document is changed}</string></field>
            <field name="mimeType"><string>${gatein.ecms.watchdocument.mimetype:text/html}</string></field>
            <field name="content">
              <string>${gatein.ecms.watchdocument.content: Dear $user_name,<br /><br />The document $doc_name ($doc_title) has changed.<br /><br />Please go to <a href="$doc_url">$doc_title</a> to see this change.<br /><br /></string>
            </field>
          </object>
        </object-param>
      </init-params>
    </component-plugin>
  </external-component-plugins>

Details:

  • object-param:

    • Object type: org.exoplatform.services.cms.watch.impl.MessageConfig

Field

Type

Value

Description

subject

string

${gatein.ecms.watchdocument.subject:Your watching document is changed}.

The subject of the notification mail.

mimeType

string

${gatein.ecms.watchdocument.mimetype:text/html}.

The format of the notification mail.

content

string

${gatein.ecms.watchdocument.content: Dear $user_name,<br /><br />The document $doc_name ($doc_title) has changed.<br /><br />Please go to <a href="$doc_url">$doc_title</a> to see this change.<br /><br />.

The content of the notification mail.

Remove Taxonomy

This plugin is used to invalidate taxonomy trees in categories folder of a portal when the portal is removed.

To use the plugin in the component configuration, you must use the following target-component:

<target-component>org.exoplatform.services.wcm.portal.artifacts.RemovePortalArtifactsService</target-component>

Sample configuration:

<external-component-plugins>
    <target-component>org.exoplatform.services.wcm.portal.artifacts.RemovePortalArtifactsService</target-component>
    <component-plugin>
        <name>Remove taxonomy tree</name>
        <set-method>addPlugin</set-method>
        <type>org.exoplatform.services.wcm.category.RemoveTaxonomyPlugin</type>
        <description>This plugin invalidate taxonomy tree to categories folder of portal when a portal is removed
        </description>
    </component-plugin>
</external-component-plugins>

In which:

  • Name: Remove taxonomy tree

  • Set-method: addPlugin

  • Type: org.exoplatform.services.wcm.category.RemoveTaxonomyPlugin

Script Action

This plugin is used to import the predefined script actions into the system.

To use the plugin in the component configuration, you must use the following target-component:

<target-component>org.exoplatform.services.cms.actions.ActionServiceContainer</target-component>

The configuration is applied mainly in packaging/wcm/webapp/src/main/webapp/WEB-INF/conf/dms-extension/dms/dms-actions-configuration.xml.

Sample configuration:

<external-component-plugins>
    <target-component>org.exoplatform.services.cms.actions.ActionServiceContainer</target-component>
    <component-plugin>
        <name>exo:scriptAction</name>
        <set-method>addPlugin</set-method>
        <type>org.exoplatform.services.cms.actions.impl.ScriptActionPlugin</type>
        <init-params>
            <object-param>
                <name>predefined.actions</name>
                <description>description</description>
                <object type="org.exoplatform.services.cms.actions.impl.ActionConfig">
                    <field name="repository">
                        <string>repository</string>
                    </field>
                    <field name="workspace">
                        <string>collaboration</string>
                    </field>
                    <field name="actions">
                        <collection type="java.util.ArrayList">
                            <value>
                                <object type="org.exoplatform.services.cms.actions.impl.ActionConfig$Action">
                                    <field name="type">
                                        <string>exo:trashFolderAction</string>
                                    </field>
                                    <field name="name">
                                        <string>trashFolder</string>
                                    </field>
                                    <field name="description">
                                        <string>trigger actions for items in trash</string>
                                    </field>
                                    <field name="srcWorkspace">
                                        <string>collaboration</string>
                                    </field>
                                    <field name="srcPath">
                                        <string>/Trash</string>
                                    </field>
                                    <field name="isDeep">
                                        <boolean>false</boolean>
                                    </field>
                                    <field name="lifecyclePhase">
                                        <collection type="java.util.ArrayList">
                                            <value>
                                                <string>node_added</string>
                                            </value>
                                            <value>
                                                <string>node_removed</string>
                                            </value>
                                        </collection>
                                    </field>
                                </object>
                            </value>
                        </collection>
                    </field>
                </object>
            </object-param>
        </init-params>
    </component-plugin>
</external-component-plugins>

In which:

  • name: exo:scriptAction

  • set-method: addPlugin

  • type: org.exoplatform.services.cms.actions.impl.ScriptActionPlugin

  • Object type: org.exoplatform.services.cms.actions.impl.ActionConfig

Name

Type

Default Value

Description

repository

string

repository

The name of the repository.

workspace

string

collaboration

The name of the workspace.

actions

ArrayList

{java.util.ArrayList}

The list of actions.

  • Object type: org.exoplatform.services.cms.actions.impl.ActionConfig$Action

Name

Type

Default Value

Description

type

string

exo:trashFolderAction

The type of the action.

name

string

trashFolder

The name of the action.

description

string

trigger actions for items in trash

The description of the action.

srcWorkspace

string

collaboration

The source workspace of the action.

srcPath

string

/Trash

The path to the source.

isDeep

boolean

false

Specifies the depth of node that the action script will affect.

lifecyclePhase

ArrayList

node_added, node_removed

Specifies the lifecycle phase that the action will take place.

Script

This plugin is used to add groovy scripts into the system.

To use the plugin in the component configuration, you must use the following target-component:

<target-component>org.exoplatform.services.cms.scripts.ScriptService</target-component>

The configuration is applied mainly in packaging/wcm/webapp/src/main/webapp/WEB-INF/conf/dms-extension/dms/dms-scripts-configuration.xml.

Sample configuration:

<external-component-plugins>
    <target-component>org.exoplatform.services.cms.scripts.ScriptService</target-component>
      <component-plugin>
        <name>manage.script.plugin</name>
        <set-method>addScriptPlugin</set-method>
        <type>org.exoplatform.services.cms.scripts.impl.ScriptPlugin</type>
        <description>Nothing</description>
        <init-params>
          <value-param>
            <name>autoCreateInNewRepository</name>
            <value>true</value>
          </value-param>
          <value-param>
            <name>predefinedScriptsLocation</name>
            <value>war:/conf/dms-extension/dms/artifacts</value>
          </value-param>
          <object-param>
            <name>predefined.scripts</name>
            <description>description</description>
            <object type="org.exoplatform.services.cms.impl.ResourceConfig">
              <field  name="resources">
                <collection type="java.util.ArrayList">
                  <!-- ecm-explorer/action -->
                  <value>
                    <object type="org.exoplatform.services.cms.impl.ResourceConfig$Resource">
                      <field  name="description"><string>Trash Document</string></field>
                      <field  name="name"><string>ecm-explorer/action/TrashFolder.groovy</string></field>
                    </object>
                  </value>
                  <value>
                    <object type="org.exoplatform.services.cms.impl.ResourceConfig$Resource">
                      <field  name="description"><string>Enable Versioning</string></field>
                      <field  name="name"><string>ecm-explorer/action/EnableVersioning.groovy</string></field>
                    </object>
                  </value>
                  <value>
                    <object type="org.exoplatform.services.cms.impl.ResourceConfig$Resource">
                      <field  name="description"><string>Auto Versioning</string></field>
                      <field  name="name"><string>ecm-explorer/action/AutoVersioning.groovy</string></field>
                    </object>
                  </value>
                  <value>
                    <object type="org.exoplatform.services.cms.impl.ResourceConfig$Resource">
                      <field  name="description"><string>Add Metadata</string></field>
                      <field  name="name"><string>ecm-explorer/action/AddMetadata.groovy</string></field>
                    </object>
                  </value>
                  <value>
                    <object type="org.exoplatform.services.cms.impl.ResourceConfig$Resource">
                      <field  name="description"><string>Add to Category</string></field>
                      <field  name="name"><string>ecm-explorer/action/AddToCategory.groovy</string></field>
                    </object>
                  </value>
                  <value>
                    <object type="org.exoplatform.services.cms.impl.ResourceConfig$Resource">
                      <field  name="description"><string>Add to Favorites</string></field>
                      <field  name="name"><string>ecm-explorer/action/AddToFavorites.groovy</string></field>
                    </object>
                  </value>
                  <!-- ecm-explorer/widget -->
                  <value>
                    <object type="org.exoplatform.services.cms.impl.ResourceConfig$Resource">
                      <field  name="description"><string>Fill SelectBox With Metadatas</string></field>
                      <field  name="name"><string>ecm-explorer/widget/FillSelectBoxWithMetadatas.groovy</string></field>
                    </object>
                  </value>
                  <value>
                    <object type="org.exoplatform.services.cms.impl.ResourceConfig$Resource">
                      <field  name="description"><string>Fill SelectBox With Workspaces</string></field>
                      <field  name="name"><string>ecm-explorer/widget/FillSelectBoxWithWorkspaces.groovy</string></field>
                    </object>
                  </value>
                  <value>
                    <object type="org.exoplatform.services.cms.impl.ResourceConfig$Resource">
                      <field  name="description"><string>Fill SelectBox With Language</string></field>
                      <field  name="name"><string>ecm-explorer/widget/FillSelectBoxWithLanguage.groovy</string></field>
                    </object>
                  </value>
                  <!-- ecm-explorer/interceptor -->
                  <value>
                    <object type="org.exoplatform.services.cms.impl.ResourceConfig$Resource">
                      <field  name="description"><string>Pre Node Save Interceptor</string></field>
                      <field  name="name"><string>ecm-explorer/interceptor/PreNodeSaveInterceptor.groovy</string></field>
                    </object>
                  </value>
                  <value>
                    <object type="org.exoplatform.services.cms.impl.ResourceConfig$Resource">
                      <field  name="description"><string>Post Node Save Interceptor</string></field>
                      <field  name="name"><string>ecm-explorer/interceptor/PostNodeSaveInterceptor.groovy</string></field>
                    </object>
                  </value>
                </collection>
              </field>
            </object>
          </object-param>
        </init-params>
       </component-plugin>
  </external-component-plugins>

In which:

  • Name: manage.script.plugin

  • Set-method: addScriptPlugin

  • Type: org.exoplatform.services.cms.scripts.impl.ScriptPlugin

  • Init-param:

Value-param

Type

Value

Description

autoCreateInNewRepository

Boolean

true

Enables/Disables the creation of the scripts in the newly created repository.

repository

String

repository

The repository name.

predefinedScriptsLocation

String

war:/conf/dms-extension/dms/artifacts

The location where the scripts are created.

  • Object type: org.exoplatform.services.cms.impl.ResourceConfig

Field

Type

Value

Description

resource

ArrayList

{java.util.ArrayList}

The resource name.

States Lifecycle

This plugin is used to control the state life cycle of a content.

To use the plugin in the component configuration, you must use the following target-component:

<target-component>org.exoplatform.services.wcm.extensions.publication.PublicationManager</target-component>

The configuration is applied mainly in packaging/wcm/webapp/src/main/webapp/WEB-INF/conf/content-extended/authoring/configuration.xml.

Sample configuration:

<component-plugin>
    <name>AddLifecycle</name>
    <set-method>addLifecycle</set-method>
    <type>org.exoplatform.services.wcm.extensions.publication.lifecycle.StatesLifecyclePlugin</type>
    <description>Configures</description>
    <priority>1</priority>
    <init-params>
        <object-param>
            <name>lifecycles</name>
            <object type="org.exoplatform.services.wcm.extensions.publication.lifecycle.impl.LifecyclesConfig">
                <field name="lifecycles">
                    <collection type="java.util.ArrayList">
                        <value>
                            <object type="org.exoplatform.services.wcm.extensions.publication.lifecycle.impl.LifecyclesConfig$Lifecycle">
                                <field name="name">
                                    <string>lifecycle1</string>
                                </field>
                                <field name="publicationPlugin">
                                    <string>Authoring publication</string>
                                </field>
                                <field name="states">
                                    <collection type="java.util.ArrayList">
                                        <value>
                                            <object type="org.exoplatform.services.wcm.extensions.publication.lifecycle.impl.LifecyclesConfig$State">
                                                <field name="state">
                                                    <string>draft</string>
                                                </field>
                                                <field name="membership">
                                                    <string>author:/platform/web-contributors</string>
                                                </field>
                                            </object>
                                        </value>
                                        <value>
                                            <object type="org.exoplatform.services.wcm.extensions.publication.lifecycle.impl.LifecyclesConfig$State">
                                                <field name="state">
                                                    <string>pending</string>
                                                </field>
                                                <field name="membership">
                                                    <string>author:/platform/web-contributors</string>
                                                </field>
                                            </object>
                                        </value>
                                        <value>
                                            <object type="org.exoplatform.services.wcm.extensions.publication.lifecycle.impl.LifecyclesConfig$State">
                                                <field name="state">
                                                    <string>approved</string>
                                                </field>
                                                <field name="membership">
                                                    <string>manager:/platform/web-contributors</string>
                                                </field>
                                            </object>
                                        </value>
                                        <value>
                                            <object type="org.exoplatform.services.wcm.extensions.publication.lifecycle.impl.LifecyclesConfig$State">
                                                <field name="state">
                                                    <string>staged</string>
                                                </field>
                                                <field name="membership">
                                                    <string>publisher:/platform/web-contributors</string>
                                                </field>
                                            </object>
                                        </value>
                                        <value>
                                            <object type="org.exoplatform.services.wcm.extensions.publication.lifecycle.impl.LifecyclesConfig$State">
                                                <field name="state">
                                                    <string>published</string>
                                                </field>
                                                <field name="membership">
                                                    <string>publisher:/platform/web-contributors</string>
                                                </field>
                                            </object>
                                        </value>
                                    </collection>
                                </field>
                            </object>
                        </value>
                    </collection>
                </field>
            </object>
        </object-param>
    </init-params>
</component-plugin>

In which:

  • Name: AddLifecycle

  • Set-method: addLifecycle

  • Type: org.exoplatform.services.wcm.extensions.publication.lifecycle.StatesLifecyclePlugin

  • Object type: org.exoplatform.services.wcm.extensions.publication.lifecycle.impl.LifecyclesConfig$Lifecycle

Field

Type

Value

Description

name

string

lifecycle1

The name of the lifecycle.

publicationPlugin

string

Authoring publication

The publication plugin name.

states

ArrayList

{java.util.ArrayList}

The list of the publication states.

  • Object type: org.exoplatform.services.wcm.extensions.publication.lifecycle.impl.LifecyclesConfig$State

Field

Type

Description

state

string

The publication states: draft, pending, staged, approved or published.

membership

string

The user or group.

Tag Permission

This plugin is used to configure the predefined permission for tag to inject in JCR.

To use the plugin in the component configuration, you must use the following target-component:

<target-component>org.exoplatform.services.cms.folksonomy.NewFolksonomyService</target-component>

The configuration is applied mainly in packaging/wcm/webapp/src/main/webapp/WEB-INF/conf/dms-extension/dms/dms-folksonomy-configuration.xml.

Sample configuration:

<external-component-plugins>
    <target-component>org.exoplatform.services.cms.folksonomy.NewFolksonomyService</target-component>
    <component-plugin>
        <name>predefinedTagPermissionPlugin</name>
        <set-method>addTagPermissionPlugin</set-method>
        <type>org.exoplatform.services.cms.folksonomy.impl.TagPermissionPlugin</type>
        <init-params>
            <object-param>
                <name>TagPermission.configuration</name>
                <description>configuration predefined permission for tag to inject in jcr</description>
                <object type="org.exoplatform.services.cms.folksonomy.impl.TagPermissionConfig">
                    <field name="tagPermissionList">
                        <collection type="java.util.ArrayList">
                            <value>
                                <string>*:/platform/administrators</string>
                            </value>
                        </collection>
                    </field>
                </object>
            </object-param>
        </init-params>
    </component-plugin>
</external-component-plugins>

In which:

  • Name: predefinedTagPermissionPlugin

  • Set-method: addTagPermissionPlugin

  • Type: org.exoplatform.services.cms.folksonomy.impl.TagPermissionPlugin

  • Object type: org.exoplatform.services.cms.folksonomy.impl.TagPermissionConfig

Name

Type

Value

Description

tagPermissionList

ArrayList

{java.util.ArrayList}

The users/groups that have the permission.

Tag Style

This plugin is used to configure the predefined styles for tag to inject in JCR.

To use the plugin in the component configuration, you must use the following target-component:

<target-component>org.exoplatform.services.cms.folksonomy.NewFolksonomyService</target-component>

The configuration is applied mainly in packaging/wcm/webapp/src/main/webapp/WEB-INF/conf/dms-extension/dms/dms-folksonomy-configuration.xml.

Sample configuration:

<external-component-plugins>
    <target-component>org.exoplatform.services.cms.folksonomy.NewFolksonomyService</target-component>
    <component-plugin>
        <name>predefinedTagStylePlugin</name>
        <set-method>addTagStylePlugin</set-method>
        <type>org.exoplatform.services.cms.folksonomy.impl.TagStylePlugin</type>
        <init-params>
            <object-param>
                <name>htmStyleForTag.configuration</name>
                <description>configuration predefined html style for tag to inject in jcr</description>
                <object type="org.exoplatform.services.cms.folksonomy.impl.TagStyleConfig">
                    <field name="autoCreatedInNewRepository">
                        <boolean>true</boolean>
                    </field>
                    <field name="repository">
                        <string>repository</string>
                    </field>
                    <field name="tagStyleList">
                        <collection type="java.util.ArrayList">
                            <value>
                                <object type="org.exoplatform.services.cms.folksonomy.impl.TagStyleConfig$HtmlTagStyle">
                                    <field name="name">
                                        <string>normal</string>
                                    </field>
                                    <field name="tagRate">
                                        <string>0..2</string>
                                    </field>
                                    <field name="htmlStyle">
                                        <string>font-size: 12px; font-weight: bold; color: #6b6b6b; font-family:
                                            verdana; text-decoration:none;
                                        </string>
                                    </field>
                                    <field name="description">
                                        <string>Normal style for tag</string>
                                    </field>
                                </object>
                            </value>
                            <value>
                                <object type="org.exoplatform.services.cms.folksonomy.impl.TagStyleConfig$HtmlTagStyle">
                                    <field name="name">
                                        <string>interesting</string>
                                    </field>
                                    <field name="tagRate">
                                        <string>2..5</string>
                                    </field>
                                    <field name="htmlStyle">
                                        <string>font-size: 13px; font-weight: bold; color: #5a66ce; font-family:
                                            verdana; text-decoration:none;
                                        </string>
                                    </field>
                                    <field name="description">
                                        <string>Interesting style for tag</string>
                                    </field>
                                </object>
                            </value>
                            <value>
                                <object type="org.exoplatform.services.cms.folksonomy.impl.TagStyleConfig$HtmlTagStyle">
                                    <field name="name">
                                        <string>attractive</string>
                                    </field>
                                    <field name="tagRate">
                                        <string>5..7</string>
                                    </field>
                                    <field name="htmlStyle">
                                        <string>font-size: 15px; font-weight: bold; color: blue; font-family: Arial;
                                            text-decoration:none;
                                        </string>
                                    </field>
                                    <field name="description">
                                        <string>attractive style for tag</string>
                                    </field>
                                </object>
                            </value>
                            <value>
                                <object type="org.exoplatform.services.cms.folksonomy.impl.TagStyleConfig$HtmlTagStyle">
                                    <field name="name">
                                        <string>hot</string>
                                    </field>
                                    <field name="tagRate">
                                        <string>7..10</string>
                                    </field>
                                    <field name="htmlStyle">
                                        <string>font-size: 18px; font-weight: bold; color: #ff9000; font-family: Arial;
                                            text-decoration:none;
                                        </string>
                                    </field>
                                    <field name="description">
                                        <string>hot style for tag</string>
                                    </field>
                                </object>
                            </value>
                            <value>
                                <object type="org.exoplatform.services.cms.folksonomy.impl.TagStyleConfig$HtmlTagStyle">
                                    <field name="name">
                                        <string>hottest</string>
                                    </field>
                                    <field name="tagRate">
                                        <string>10..*</string>
                                    </field>
                                    <field name="htmlStyle">
                                        <string>font-size: 20px; font-weight: bold; color: red; font-family:Arial;
                                            text-decoration:none;
                                        </string>
                                    </field>
                                    <field name="description">
                                        <string>hottest style for tag</string>
                                    </field>
                                </object>
                            </value>
                        </collection>
                    </field>
                </object>
            </object-param>
        </init-params>
    </component-plugin>
</external-component-plugins>
  • Name: predefinedTagStylePlugin

  • Set-method: addTagStylePlugin

  • Type: org.exoplatform.services.cms.folksonomy.impl.TagStylePlugin

  • Object type: org.exoplatform.services.cms.folksonomy.impl.TagStyleConfig

Name

Type

Value

Description

autoCreatedInNewRepository

boolean

true

Specifies whether the tag style is added automatically in a new repository or not.

repository

string

repository

Name of the repository where the tag style is added.

tagStyleList

ArrayList

{java.util.ArrayList}

The list of tag styles.

  • Object type: org.exoplatform.services.cms.folksonomy.impl.TagStyleConfig$HtmlTagStyle

Name

Type

Description

name

string

The name of the tag.

tagRate

string

The number of times that a tag is used which will decide the respective tag style.

htmlStyle

string

The HTML code that defines the style.

Taxonomy

This plugin is used to configure the predefined taxonomies to inject into JCR.

To use the plugin in the component configuration, you must use the following target-component:

<target-component>org.exoplatform.services.cms.taxonomy.TaxonomyService</target-component>

The configuration is applied mainly in packaging/wcm/webapp/src/main/webapp/WEB-INF/conf/dms-extension/dms/dms-categories-configuration.xml.

Sample configuration:

<external-component-plugins>
    <target-component>org.exoplatform.services.cms.taxonomy.TaxonomyService</target-component>
    <component-plugin>
        <name>predefinedTaxonomyPlugin</name>
        <set-method>addTaxonomyPlugin</set-method>
        <type>org.exoplatform.services.cms.taxonomy.impl.TaxonomyPlugin</type>
        <init-params>
            <value-param>
                <name>autoCreateInNewRepository</name>
                <value>true</value>
            </value-param>
            <value-param>
                <name>repository</name>
                <value>repository</value>
            </value-param>
            <value-param>
                <name>workspace</name>
                <value>dms-system</value>
            </value-param>
            <value-param>
                <name>treeName</name>
                <value>System</value>
            </value-param>
            <object-param>
                <name>permission.configuration</name>
                <object type="org.exoplatform.services.cms.taxonomy.impl.TaxonomyConfig">
                    <field name="taxonomies">
                        <collection type="java.util.ArrayList">
                            <value>
                                <object type="org.exoplatform.services.cms.taxonomy.impl.TaxonomyConfig$Taxonomy">
                                    <field name="permissions">
                                        <collection type="java.util.ArrayList">
                                            <value>
                                                <object type="org.exoplatform.services.cms.taxonomy.impl.TaxonomyConfig$Permission">
                                                    <field name="identity">
                                                        <string>*:/platform/users</string>
                                                    </field>
                                                    <field name="read">
                                                        <string>true</string>
                                                    </field>
                                                    <field name="addNode">
                                                        <string>true</string>
                                                    </field>
                                                    <field name="setProperty">
                                                        <string>true</string>
                                                    </field>
                                                    <field name="remove">
                                                        <string>false</string>
                                                    </field>
                                                </object>
                                            </value>
                                        </collection>
                                    </field>
                                </object>
                            </value>
                        </collection>
                    </field>
                </object>
            </object-param>
            <object-param>
                ...
            </object-param>
        </init-params>
    </component-plugin>
</external-component-plugins>

In which:

  • Name: predefinedTaxonomyPlugin

  • Set-method: addTaxonomyPlugin

  • Type: org.exoplatform.services.cms.taxonomy.impl.TaxonomyPlugin

  • Init-param:

Value-param

Type

Value

Description

autoCreateInNewRepository

boolean

true

Enables/Disables the creation of the taxonomies in the newly created repository.

repository

string

repository

The name of the repository where taxonomies are created.

workspace

string

dms-system

The name of the workspace where taxonomies are created.

treeName

string

system

The name of the taxonomy tree created.

  • Object type: org.exoplatform.services.cms.taxonomy.impl.TaxonomyConfig

Name

Type

Value

Description

taxonomies

ArrayList

{java.util.ArrayList}

The list of taxonomies to be configured with permission.

  • Object type: org.exoplatform.services.cms.taxonomy.impl.TaxonomyConfig$Taxonomy

Name

Type

Value

Description

permissions

ArrayList

{java.util.ArrayList}

The list of permissions for users or groups to access the taxonomy.

  • Object type: org.exoplatform.services.cms.taxonomy.impl.TaxonomyConfig$Permission

Name

Type

Value

Description

identity

string

*:/platform/users

The name of the user, group or membership.

read

boolean

true

The permission to read the taxonomy tree.

addNode

boolean

true

The permission to add a node to the taxonomy tree.

setProperty

boolean

true

The permission to set properties for a node in the taxonomy tree.

remove

boolean

false

The permission to remove a node from the taxonomy tree.

Template

This plugin is used to create templates into the system. A template is a presentation to display the saved information.

The node type template is used to edit and display the node content. Each node type has one dialog1.gtmpl file (dialog template) for editing/creating a node and one view1.gtmpl file (view template) for viewing the node content. Using the dialog template, you can specify a dialog whose fields correspond to the properties of the node you want to edit their values. When this template is rendered, each specified field will appear with a data input box for you to edit. Note that you do not have to design a dialog in which all data of the node are listed to be edited. You can just list the subset of node data you want to edit. Like the dialog template, the view template renders information of the node. You just need to create the template and specify which data fields to be displayed. With this kind of template, node information is only displayed but cannot be edited. See details at ContentType.

To use the plugin in the component configuration, you must use the following target-component:

<target-component>org.exoplatform.services.cms.templates.TemplateService</target-component>

The configuration is applied mainly in packaging/wcm/webapp/src/main/webapp/WEB-INF/conf/dms-extension/dms/dms-templates-configuration.xml.

Sample configuration:

This below example is configuration for the nt:file template, any other template will be put in the same level with this template starting from the line <object type=”org.exoplatform.services.cms.templates.impl.TemplateConfig$NodeType> as the another node type.

<external-component-plugins>
    <target-component>org.exoplatform.services.cms.templates.TemplateService</target-component>
    <component-plugin>
        <name>addTemplates</name>
        <set-method>addTemplates</set-method>
        <type>org.exoplatform.services.cms.templates.impl.TemplatePlugin</type>
        <init-params>
            <value-param>
                <name>autoCreateInNewRepository</name>
                <value>true</value>
            </value-param>
            <value-param>
                <name>storedLocation</name>
                <value>war:/conf/dms-extension/dms/artifacts/templates</value>
            </value-param>
            <value-param>
                <name>repository</name>
                <value>repository</value>
            </value-param>
            <object-param>
                <name>template.configuration</name>
                <description>configuration for the localtion of templates to inject in jcr</description>
                <object type="org.exoplatform.services.cms.templates.impl.TemplateConfig">
                    <field name="nodeTypes">
                        <collection type="java.util.ArrayList">
                            <value>
                                <object type="org.exoplatform.services.cms.templates.impl.TemplateConfig$NodeType">
                                    <field name="nodetypeName">
                                        <string>nt:file</string>
                                    </field>
                                    <field name="documentTemplate">
                                        <boolean>true</boolean>
                                    </field>
                                    <field name="label">
                                        <string>File</string>
                                    </field>
                                    <field name="referencedView">
                                        <collection type="java.util.ArrayList">
                                            <value>
                                                <object type="org.exoplatform.services.cms.templates.impl.TemplateConfig$Template">
                                                    <field name="templateFile">
                                                        <string>/file/views/view1.gtmpl</string>
                                                    </field>
                                                    <field name="roles">
                                                        <string>*</string>
                                                    </field>
                                                </object>
                                            </value>
                                            <value>
                                                <object type="org.exoplatform.services.cms.templates.impl.TemplateConfig$Template">
                                                    <field name="templateFile">
                                                        <string>/file/views/admin_view.gtmpl</string>
                                                    </field>
                                                    <field name="roles">
                                                        <string>*:/platform/administrators</string>
                                                    </field>
                                                </object>
                                            </value>
                                        </collection>
                                    </field>
                                    <field name="referencedDialog">
                                        <collection type="java.util.ArrayList">
                                            <value>
                                                <object type="org.exoplatform.services.cms.templates.impl.TemplateConfig$Template">
                                                    <field name="templateFile">
                                                        <string>/file/dialogs/dialog1.gtmpl</string>
                                                    </field>
                                                    <field name="roles">
                                                        <string>*</string>
                                                    </field>
                                                </object>
                                            </value>
                                            <value>
                                                <object type="org.exoplatform.services.cms.templates.impl.TemplateConfig$Template">
                                                    <field name="templateFile">
                                                        <string>/file/dialogs/admin_dialog.gtmpl</string>
                                                    </field>
                                                    <field name="roles">
                                                        <string>*:/platform/administrators</string>
                                                    </field>
                                                </object>
                                            </value>
                                        </collection>
                                    </field>
                                    <field name="referencedSkin">
                                        <collection type="java.util.ArrayList">
                                            <value>
                                                <object type="org.exoplatform.services.cms.templates.impl.TemplateConfig$Template">
                                                    <field name="templateFile">
                                                        <string>/file/skins/Stylesheet-lt.css</string>
                                                    </field>
                                                    <field name="roles">
                                                        <string>*</string>
                                                    </field>
                                                </object>
                                            </value>
                                            <value>
                                                <object type="org.exoplatform.services.cms.templates.impl.TemplateConfig$Template">
                                                    <field name="templateFile">
                                                        <string>/file/skins/Stylesheet-rt.css</string>
                                                    </field>
                                                    <field name="roles">
                                                        <string>*</string>
                                                    </field>
                                                </object>
                                            </value>
                                        </collection>
                                    </field>
                                </object>
                            </value>
                        </collection>
                    </field>
                </object>
            </object-param>
        </init-params>
    </component-plugin>
</external-component-plugins>

In which:

  • name: addTemplates

  • set-method: addTemplates

  • type: org.exoplatform.services.cms.templates.impl.TemplatePlugin

  • Init-params:

Value-param

Type

Value

Description

autoCreateInNewRepository

boolean

true

Enables the application to import predefined templates at the start-up of template service automatically.

storedLocation

string

war:/conf/dms-extension/dms/artifacts/templates

The location of stored templates.

repository

string

repository

Location of stored templates.

  • Object-type: org.exoplatform.services.cms.templates.impl.TemplateConfig that defines all available template files, using the “collection type” configuration.

  • type: It is the name of each object type. It means the type of template, the further configurations for this type are defined by some specified fields.

Field

Type

Value

Description

nodeTypes

ArrayList

{java.util.ArrayList}

The node type of the template.

  • Object-type: org.exoplatform.services.cms.templates.impl.TemplateConfig$NodeType

Field

Type

Value

Description

nodetypeName

string

nt:file

The name of template that is saved as a node in system.

documentTemplate

boolean

true

Determines if the node type is a document type.

label

string

file

Visual display of the title for this node.

referencedView

ArrayList

{java.util.ArrayList}

Determines how to display a view.

referencedDialog

ArrayList

{java.util.ArrayList}

Determines how to display a dialog to input information.

referencedSkin

ArrayList

{java.util.ArrayList}

Determines the stylesheet for display.

  • Object type: org.exoplatform.services.cms.templates.impl.TemplateConfig$Template

Field

Type

Description

templateFile

string

The location of the file store for the template’s presentation.

roles

string

Determines who can access this object (View/Dialog/CSS).

Publication Deployment

This plugin is used to publish content. This plugin checks if content is enrolled to a publication lifecycle or not. If content has been enrolled, this plugin will unsubscribe content from the publication lifecycle. The configuration is applied mainly in webapps/acme-website/WEB-INF/conf/acme-portal/wcm/deployment/acme-deployment-configuration.xml.

Sample configuration:

<external-component-plugins>
    <target-component>org.exoplatform.services.deployment.WCMContentInitializerService</target-component>
    <component-plugin>
      <name>Content Initializer Service</name>
      <set-method>addPlugin</set-method>
      <type>org.exoplatform.services.wcm.extensions.deployment.PublicationDeploymentPlugin</type>
      <description>Publication Deployment Plugin</description>
      <init-params>
        <object-param>
          <name>plfpub01</name>
          <description>Deployment Descriptor</description>
          <object type="org.exoplatform.services.wcm.extensions.deployment.PublicationDeploymentDescriptor">
            <field name="contents">
              <collection type="java.util.ArrayList">
                <value><string>collaboration:/sites/acme/web contents/site artifacts/Introduce</string></value>
                <value><string>collaboration:/sites/acme/web contents/site artifacts/contact_form_confirmation</string></value>
                <value><string>collaboration:/sites/acme/web contents/site artifacts/contact-us-countries</string></value>
                ...
              </collection>
            </field>
          </object>
        </object-param>
      </init-params>
    </component-plugin>
</external-component-plugins>

In which:

  • Name: Content Initializer Service

  • Set-method: addPlugin

  • Type: org.exoplatform.services.wcm.extensions.deployment.PublicationDeploymentPlugin

  • Object type: org.exoplatform.services.wcm.extensions.deployment.PublicationDeploymentDescriptor

Field

Type

Value

Description

contents

Collection

{java.util.ArrayList}

The content paths.

WCM Publication Deployment

This plugin is used to inject content at the server startup. Being considered as a substitute for the deprecated XMLDeploymentPlugin, it is better because it allows both injection and publication to be done at once.

In configuration, plug it to the following target component:

<target-component>org.exoplatform.services.deployment.WCMContentInitializerService</target-component>

Sample configuration:

<external-component-plugins>
    <target-component>org.exoplatform.services.deployment.WCMContentInitializerService</target-component>
    <component-plugin>
        <name>Content Initializer Service</name>
        <set-method>addPlugin</set-method>
        <type>org.exoplatform.services.wcm.extensions.deployment.WCMPublicationDeploymentPlugin</type>
        <description>WCM Plublication Deployment Plugin</description>
        <init-params>
            <value-param>
                <name>override</name>
                <description>The flag parameter to decide if portal metadata is overriden on restarting server</description>
                <value>${acme.portalConfig.metadata.override:false}</value>
            </value-param>
            <object-param>
                <name>ACME French translations directory</name>
                <description>Deployment Descriptor</description>
                <object type="org.exoplatform.services.wcm.extensions.deployment.WCMPublicationDeploymentDescriptor">
                    <field name="target">
                        <object type="org.exoplatform.services.deployment.DeploymentDescriptor$Target">
                            <field name="workspace"><string>collaboration</string></field>
                            <field name="nodePath"><string>/sites/acme/web contents/site artifacts</string></field>
                        </object>
                    </field>
                    <field name="sourcePath">
                        <string>war:/conf/acme-portal/wcm/artifacts/site-resources/acme/FrenchTranslations.xml</string>
                    </field>
                    <field name="cleanupPublicationType">
                        <string>publish-first-publication</string>
                    </field>
                </object>
            </object-param>
        </init-params>
    </component-plugin>
</external-component-plugins>

In which:

  • set-method: addPlugin

  • type: org.exoplatform.services.wcm.extensions.deployment.WCMPublicationDeploymentPlugin

Param name

Type

Value

Description

override

boolean

true or false

  • true: Always re-import the data from the configuration when the server restarts.

  • false: Do not re-import, so if the data has been modified after being imported for the first time, the modification is not overridden when the server restarts.

  • Object type: org.exoplatform.services.wcm.extensions.deployment.WCMPublicationDeploymentDescriptor

Field

**Type **

Value

Descriptio n

target

Obje ct

org.exoplatform.services.deployment. DeploymentDescriptor$Target

The target node to import.

sourcePath

Stri ng

war:/conf/acme-portal/wcm/artifacts/ site-resources/acme/FrenchTranslations .xml

The xml descriptor file of the imported data.

cleanupPubli cationType

Stri ng

publish-first-publication (see all the options in Description column)

  • *clean-pu

blication*:

import, then clean all the publicati

on

state and version history (if any).

  • *keep-pub

lication*:

import and keep the publicati

on

state and version history.

  • *publish-

first-public ation*:

import, clean all the publicati

on

state and version history, then publish the data as the first version.

  • Object type: org.exoplatform.services.deployment.DeploymentDescriptor$Target

Field

**Type* *

Value

Description

workspac e

Strin g

collaboration

The target workspace to import.

**nodePath **

Strin g

``/sites/acme/web contents/site

artifacts``

The target node to import.

XML Deployment

Warning

XMLDeploymentPlugin is deprecated. Use WCMPublicationDeploymentPlugin instead.

When a site is created, most of end-users want to see something in the page instead of a blank page, so you need this plugin to deploy some “default” contents, such as Banner, Footer, Navigation, Breadcrumb.

There are two main cases to use:

  • The site is created only one time when the database is cleaned.

  • The site is created at runtime, when a user uses the core features of the GateIn portal.

To use the plugin in the component configuration, you must use the following target-component:

<target-component>org.exoplatform.services.deployment.WCMContentInitializerService</target-component>

The configuration is applied mainly in samples/acme-website/webapp/src/main/webapp/WEB-INF/conf/acme-portal/wcm/deployment/acme-deployment-configuration.xml.

Sample configuration:

<external-component-plugins>
    <target-component>org.exoplatform.services.deployment.WCMContentInitializerService</target-component>
    <component-plugin>
        <name>Content Initializer Service</name>
        <set-method>addPlugin</set-method>
        <type>org.exoplatform.services.deployment.plugins.XMLDeploymentPlugin</type>
        <description>XML Deployment Plugin</description>
        <init-params>
            <value-param>
                <name>override</name>
                <description>The flag parameter to decide if portal metadata is overriden on restarting server</description>
                <value>${acme.portalConfig.metadata.override:false}</value>
            </value-param>
            <object-param>
                <name>ACME Logo data</name>
                <description>Deployment Descriptor</description>
                <object type="org.exoplatform.services.deployment.DeploymentDescriptor">
                    <field name="target">
                        <object type="org.exoplatform.services.deployment.DeploymentDescriptor$Target">
                            <field name="repository">
                                <string>repository</string>
                            </field>
                            <field name="workspace">
                                <string>collaboration</string>
                            </field>
                            <field name="nodePath">
                                <string>/sites/acme/web contents/site artifacts</string>
                            </field>
                        </object>
                    </field>
                    <field name="sourcePath">
                        <string>war:/conf/sample-portal/wcm/artifacts/site-resources/acme/Logo.xml</string>
                    </field>
                    <field name="versionHistoryPath">
                        <string>war:/conf/sample-portal/wcm/artifacts/site-resources/acme/Logo_versionHistory.zip
                        </string>
                    </field>
                    <field name="cleanupPublication">
                        <boolean>true</boolean>
                    </field>
                </object>
            </object-param>
        </init-params>
    </component-plugin>
</external-component-plugins>

In which:

  • name: Content Initializer Service

  • set-method: addPlugin

  • type: org.exoplatform.services.deployment.plugins.XMLDeploymentPlugin

Name

Type

Value

Description

override

boolean

${acme.portalConfig.metadata.override:false}

Decides if portal metadata is overriden on restarting server.

  • true: Before importing, check if the node exists in JCR, override it with the newer node from configuration.

  • false: Not override.

  • Object type: org.exoplatform.services.deployment.DeploymentDescriptor

Name

Type

Value

Description

target

Object

org.exoplatform.services.deployment.DeploymentDescriptor$Target (*)

The target node which will contain the imported node.

sourcePath

string

war:/conf/sample-portal/wcm/artifacts/site-resources/acme/Logo.xml

The absolute path of the XML file.

cleanupPublication

boolean

false

Decides when the publication lifecycle is cleaned up in the target folder after importing the data.

  • true: Allow.

  • false: Not allow.

versionHistoryPath

string

war:/conf/sample-portal/wcm/artifacts/site-resources/acme/Logo_versionHistory.zip

The absolute path of the version history file.

  • Object type: org.exoplatform.services.deployment.DeploymentDescriptor$Target

Field

Type

Value

Description

repository

string

repository

The repository name of the target node.

workspace

string

collaboration

The collaboration name of the target node.

nodePath

string

/sites/acme/web contents/site artifacts

The path of the target node.

Abstract plugins

BaseActionPlugin

This plugin provides all base and abstract methods which are used for action types, such as Add New, Schedule Activation.

CreatePortalPlugin

This plugin provides an abstract method which creates all data when a new portal is added.

PublicationPlugin

This plugin implements a publication lifecycle. When a lifecycle is defined, a new plugin will be extended from the PublicationPlugin and registered with the Publication Service.

RemovePortalPlugin

This plugin provides an abstract method which invalidates all data when a portal is removed.

Calendar plugins

This section describes the main component plugins used in Calendar, sample configurations with explanation about init-params and how to use these plugins.

New User Listener

Each user can have a default personal calendar created. Use the NewUserListener to configure that. To use the plugin in the component configuration, you must use the target-component:

<target-component>org.exoplatform.services.organization.OrganizationService</target-component>

The configuration can be found here.

<component-plugin>
      <name>calendar.new.user.event.listener</name>
      <set-method>addListenerPlugin</set-method>
      <type>org.exoplatform.calendar.service.impl.NewUserListener</type>
      <description>description</description>
      <init-params>
        <value-param>
          <name>defaultEventCategories</name>
          <value>defaultEventCategoryIdMeeting,defaultEventCategoryIdCalls,defaultEventCategoryIdClients,defaultEventCategoryIdHoliday,defaultEventCategoryIdAnniversary</value><!-- Multi value, use coma (,) to split values-->
          <!-- The event category's name will be get from resource bundle by key "UICalendars.label." + defaultEventCategory's value.
               If the key does not exist, the defaultEventCategory's value will be used to display.
               Sample:
                  If the value is "defaultEventCategoryIdMeeting" then the resource bundle key is "UICalendars.label.defaultEventCategoryIdMeeting".
                    The value of this key is "Meeting", so "Meeting" will be display as default event category.
                  If the value is "Not exist key", because this key doesn't exist in resource bundle then
                    "Not exist key" will be display as default event category.
          -->
        </value-param>
        <value-param>
          <name>defaultCalendarCategory</name>
          <value>defaultCalendarCategoryId</value><!-- Single value, default calendar category's name is "My group"-->
          <!-- The calendar category's name will be get from resource bundle by key "UICalendars.label." + defaultCalendarCategory's value.
               If the key does not exist, the defaultCalendarCategory's value will be used to display.
               Sample:
                  If the value is "defaultCalendarCategoryId" then the resource bundle key is "UICalendars.label.defaultCalendarCategoryId".
                    The value of this key is "My group", so "My group" will be display as default calendar category.
                  If the value is "My calendar category", because this key doesn't exist in resource bundle then
                    "My calendar category" will be display as default calendar category.
          -->
        </value-param>
        <value-param>
          <name>defaultCalendar</name>
          <value>defaultCalendarId</value> <!-- Single value, default calendar's name is "Default"-->
          <!-- The calendar's name will be get from resource bundle by key "UICalendars.label." + defaultCalendar's value.
               If the key does not exist, the defaultCalendar's value will be used to display.
               Sample:
                  If the value is "defaultCalendarId" then the resource bundle key is "UICalendars.label.defaultCalendarId".
                    The value of this key is "Default", so "Default" will be display as default calendar.
                  If the value is "My calendar", because this key doesn't exist in resource bundle then
                    "My calendar" will be display as default calendar.
          -->
        </value-param>
        <!--Params for default calendar setting-->
        <value-param>
         <name>viewType</name>
         <value>1</value><!-- DAY_VIEW = "0" ; WEEK_VIEW = "1" ; MONTH_VIEW = "2" ; YEAR_VIEW = "3" ; LIST_VIEW = "4" ; SCHEDULE_VIEW = "5" ; WORKING_VIEW = "6" ;-->
        </value-param>

        <value-param>
         <name>weekStartOn</name>
         <value>2</value><!--SUNDAY = "1" ; MONDAY = "2" ; TUESDAY = "3" ; WEDNESDAY = "4" ; THURSDAY = "5" ; FRIDAY = "6" ;SATURDAY = "7" ;-->
        </value-param>

        <value-param>
         <name>dateFormat</name>
         <value>MM/dd/yyyy</value>
        </value-param>

        <value-param>
         <name>timeFormat</name>
         <value>HH:mm</value> <!-- HH:mm/hh:mm a -->
        </value-param>

        <value-param>
         <name>localeId</name>
         <value>BEL</value><!-- see more locale ids http://userpage.chemie.fu-berlin.de/diverse/doc/ISO_3166.html -->
        </value-param>

         <value-param>
         <name>timezoneId</name>
         <value>Europe/Brussels</value><!-- see more for timeZone ids http://www.unicode.org/cldr/data/docs/design/formatting/zone_log.html#windows_ids -->
        </value-param>

         <value-param>
         <name>baseUrlForRss</name>
         <value></value>
        </value-param>

         <value-param>
         <name>isShowWorkingTime</name>
         <value>false</value><!-- boolean true/false -->
        </value-param>

         <value-param>
         <name>workingTimeBegin</name>
         <value>08:00</value><!--  -->
        </value-param>

         <value-param>
           <name>workingTimeEnd</name>
           <value>18:00</value><!--  -->
        </value-param>

        <values-param>
          <name>ignoredUsers</name>
          <description>Definition users to ignore create default calendar</description>
          <!--
          <value>demo</value>
          <value>marry</value>
           -->
        </values-param>

      </init-params>
</component-plugin>

Details:

  • Name: calendar.new.user.event.listener - The unique key to avoid duplicate names. Users can change it.

  • Type: org.exoplatform.calendar.service.impl.NewUserListener - The class is set up to execute the creation of database.

  • Description: It is a plugin used to create default personal calendars.

See the details about the init-params of the component in the following table:

Value-params

Possible values

Default value

Description

defaultEventCategories

String (Comma separated list of resource bundle keys for category names)

``

defaultEventCategoryIdMeeting,defaultEventCategoryIdCalls,defaultEventCategoryIdClients,defaultEventCategoryIdHoliday,defaultEventCategoryIdAnniversary

``

The default event categories for users.

defaultCalendarCategory

String

defaultCalendarCategoryId

The name of the default calendar categories.

defaultCalendar

String

defaultCalendarId

The name of the default calendar.

viewType

0-6 (see below)

1

Default view after user logs in and goes to the Calendar portlet.

weekStartOn

1-7 (see below)

2

Day to use as the beginning of the week. It only affects the Week view.

dateFormat

valid Java Date format

MM/dd/yyyy

The display format for dates.

timeFormat

valid Java Date format

HH:mm

The display format for time.

localeId

valid locale ID

BEL

Id of the geographic locale.

timezoneId

valid TimeZone id

Europe

User time zone.

baseUrlForRss

none

none

The URL to publish the RSS content.

isShowWorkingTime

true/false

false

Indicates if the working time should be highlighted in the Day view.

workingTimeBegin

time in timeFormat

08:00

The start time in working time.

workingTimeEnd

time in timeFormat

18:00

The end time in working time.

ignoredUsers

user id, use multiple by each line

N/A

Definition users to ignore creating the default calendar.

The viewType parameter is encoded by a number as follows:

  • 0: Day view

  • 1: Week view

  • 2: Month view

  • 3: Year view

  • 4: List view

  • 5: Schedule view

  • 6: Working days view

The weekStartOn parameter is encoded as follow:

  • 1: Sunday

  • 2: Monday

  • 3: Tuesday

  • 4: Wednesday

  • 5: Thursday

  • 6: Friday

  • 7: Saturday

New Group Listener

To use the plugin in the component configuration, you must use the target-component:

<target-component>org.exoplatform.services.organization.OrganizationService</target-component>

The configuration can be found here.

<component-plugin>
      <name>calendar.new.group.event.listener</name>
      <set-method>addListenerPlugin</set-method>
      <type>org.exoplatform.calendar.service.impl.NewGroupListener</type>
      <description>description</description>
      <init-params>
        <value-param>
          <name>defaultEditPermission</name>
          <value>*.*</value><!-- Multi value membership, use coma (,) to split values-->
        </value-param>
        <value-param>
          <name>defaultViewPermission</name>
          <value>*.*</value><!-- Multi value membership, use coma (,) to split values-->
        </value-param>

        <value-param>
          <name>defaultLocale</name>
          <value>BEL</value><!-- see more locale ids http://userpage.chemie.fu-berlin.de/diverse/doc/ISO_3166.html -->
        </value-param>

        <value-param>
          <name>defaultTimeZone</name>
          <value>Europe/Brussels</value><!-- see more for timeZone ids http://www.unicode.org/cldr/data/docs/design/formatting/zone_log.html#windows_ids -->
        </value-param>

        <values-param>
          <name>ignoredGroups</name>
          <description>Definition group to ignore create default calendar</description>
          <!--
          <value>/platform/guests</value>
           -->
          <value>/spaces/*</value> <!-- single value, use more <value> tags to add more group -->
        </values-param>

      </init-params>
    </component-plugin>

Details:

  • Name: calendar.new.group.event.listener - The unique key to avoid duplicate names. Users can change it.

  • Type: org.exoplatform.calendar.service.impl.NewGroupListener - The class which is set up to execute the creation of database.

  • Description - It is the plugin used to create default group calendars.

See the details about the init-params of the component in the following table:

Value-params

Possible values

Default value

Description

defaultEditPermission

User id (Multi value membership, use coma (,) to split values)

``

. means that all members in that group can modify and add, remove a calendar, events/tasks of the calendar

``

The default permission assigned to membership in a specific group to edit calendars and events/tasks of the calendar.

defaultViewPermission

User Id (Multi value membership, use coma (,) to split values)

``

. means that all members in that group can view this calendar and all the events/tasks of this calendar.

``

The default permission assigned to membership in a specific group to view a calendar and events /tasks of the calendar.

defaultLocale

Valid locale Id

BEL (see more locale ids http://userpage.chemie.fu-berlin.de/diverse/doc/ISO_3166.html )

The default locale of the calendar.

defaultTimeZone

Valid timezone Id

``Europe/Brussels (see more for timeZone Ids

``

The default time zone of the calendar.

ignoredGroups

Group Id (use line to define multiple value)

/spaces/*

Definition group to ignore create the default calendar.

New Membership Listener

To use the plugin in the component configuration, you must use the target-component:

<target-component>org.exoplatform.services.organization.OrganizationService</target-component>

The configuration can be found here.

<component-plugin>
  <name>calendar.new.membership.event.listener</name>
  <set-method>addListenerPlugin</set-method>
  <type>org.exoplatform.calendar.service.impl.NewMembershipListener</type>
  <description>description</description>
</component-plugin>

Details:

  • Name: calendar.new.membership.event.listener - The unique key to avoid duplicate names. Users can change it.

  • Type: org.exoplatform.calendar.service.impl.NewMembershipListener - The class which is set up to execute the creation of database.

  • Description: It is a plugin used to execute sending reminder emails to users.

Reminder Period Job

The Calendar application of eXo Platform sends event reminders by using the email reminder plugin configuration. You will probably need to adjust this configuration to meet your own needs. The feature is based on a periodic poll of the stored reminders.

You must use the following target component to use the plugin in this configuration:

<target-component>org.exoplatform.services.scheduler.JobSchedulerService</target-component>

The configuration can be found here.

<component-plugin>
      <name>RecordsJob</name>
      <set-method>addPeriodJob</set-method>
      <type>org.exoplatform.calendar.service.ReminderPeriodJob</type>
      <description>add e-mail reminder job to the JobSchedulerService</description>
      <init-params>
        <properties-param>
          <name>job.info</name>
          <description>save the monitor data  periodically</description>
          <property name="jobName" value="ReminderJob"/>
          <property name="groupName" value="CollaborationSuite"/>
          <property name="job" value="org.exoplatform.calendar.service.ReminderJob"/>
          <property name="repeatCount" value="0"/>
          <property name="period" value="180000"/>
          <property name="startTime" value="+60000"/>
          <property name="endTime" value=""/>
        </properties-param>
      </init-params>
    </component-plugin>

Details:

  • Name: RecordsJob - The name of a schedule job.

  • Type: org.exoplatform.calendar.service.ReminderPeriodJob - A class that executes to transfer data into database of Job Scheduler.

  • Description: Add email reminder job to the JobSchedulerService.

See details about the init-params of the component in the following table:

Property names

Possible values

Default value

Description

jobName

String

ReminderJob

The name of job

groupName

String

CollaborationSuite

The name of group job.

job

Class path

org.exoplatform.calendar.service.ReminderJob

The name of actual job class.

repeatCount

Long

0, ( use '0' which means 'run forever'.)

How many times to run this job.

period

Long

180000

The time interval between job executions.

startTime

Integer

+60000

The time when the job starts running.

endTime

Integer

none

The time when the job ends running.

Social Integration Configuration

The Social Integration Configuration can be found here.

CalendarDataInitialize

<external-component-plugins>
  <target-component>org.exoplatform.social.core.space.spi.SpaceService</target-component>
  <component-plugin>
    <name>CalendarDataInitialize</name>
    <set-method>addSpaceListener</set-method>
    <type>org.exoplatform.cs.ext.impl.CalendarDataInitialize</type>
    <init-params>
      <value-param>
        <name>portletName</name>
        <value>CalendarPortlet</value>
      </value-param>
    </init-params>
  </component-plugin>
</external-component-plugins>

Details:

  • Name: CalendarDataInitialize - The name of plugin.

  • Type: org.exoplatform.cs.ext.impl.CalendarDataInitialize - A class that executes all requirements of the plugin.

  • Description: It is used to initialize a calendar for a group in a specific space.

See the details about the init-params of the component in the following table:

Value-param

Possible value

Default value

Description

portletName

String

CalendarPortlet

The name of the portlet.

CalendarSpaceActivityPublisher

<external-component-plugins>
  <target-component>org.exoplatform.calendar.service.CalendarService</target-component>
  <component-plugin>
    <name>CalendarEventListener</name>
    <set-method>addEventListenerPlugin</set-method>
    <type>org.exoplatform.cs.ext.impl.CalendarSpaceActivityPublisher</type>
  </component-plugin>
</external-component-plugins>

Details:

  • Name: CalendarEventListener - The name of the plugin.

  • Type: org.exoplatform.cs.ext.impl.CalendarSpaceActivityPublisher - A class that executes all the requirements of the plugin.

  • Description: It is a plugin used to customize the activity status of a specific space when an event happens on a calendar.

PortletPreferenceRequiredPlugin

<external-component-plugins>
  <target-component>org.exoplatform.social.core.space.spi.SpaceService</target-component>
  <component-plugin>
    <name>portlets.prefs.required</name>
    <set-method>setPortletsPrefsRequired</set-method>
    <type>org.exoplatform.social.core.application.PortletPreferenceRequiredPlugin</type>
    <init-params>
      <values-param>
        <name>portletsPrefsRequired</name>
        <value>CalendarPortlet</value>
      </values-param>
    </init-params>
  </component-plugin>
</external-component-plugins>

Details:

  • Name: ortlets.prefs.required - The name of the plugin.

  • Type: org.exoplatform.social.core.application.PortletPreferenceRequiredPlugin - A class that executes all the requires of the plugin.

  • Description: It is a plugin used to declare the application that will automatically create database.

See the details about the init-params of the component in the following table:

Value-param

Possible value

Default value

Description

portletsPrefsRequired

String

CalendarPortlet

The name of plugin added to SpaceService.

Init data plugin

The Init data plug-in is used to define the default data in the .xml file. It includes nodes (node of jcr). When the org.exoplatform.services.jcr.config.RepositoryServiceConfiguration component is initialized, the org.exoplatform.services.jcr.impl.config.RepositoryServiceConfigurationPlugin component will be get and the addConfig function is called. Then, the /ks-extension/jcr/storage-configuration.xml file is loaded and the component org.exoplatform.forum.common.jcr.KSDataLocation will be initialized. Next, the setLocation function is called, setting up the workspace for the Forum, Answers and Polls applications. After that, the addPlugin function will be run, generating the DataLocation (some parent nodes) for the Forum, Answers and Polls applications.

The following is the list of applications and the corresponding components used to initialize the default data.

Application

Component

Description

Forum

KSDataLocation, ForumServiceImpl

Initializes default data of the Forum portlet.

Answers

KSDataLocation, FAQServiceImpl

Initializes default data of the Answers portlet.

Polls

KSDataLocation, PollServiceImpl

Initializes default data of the Polls portlet.

In this section, you will understand how to initialize data via the sample configurations later.

Initializing the conf-part for loading repository-configuration.xml

When the server starts, the jcr-configuration.xml file is initialized. The addConfig function will be referred to the org.exoplatform.services.jcr.impl.config.RepositoryServiceConfigurationPlugin component-plugin to load the war:/ks-extension/jcr/repository-configuration.xml file.

<component-plugin>
  <!-- The name of the plugin -->
  <name>Sample RepositoryServiceConfiguration Plugin</name>
  <!-- The name of the method to call on the RepositoryServiceConfiguration
       in order to add the RepositoryServiceConfigurations -->
  <set-method>addConfig</set-method>
  <!-- The full qualified name of the RepositoryServiceConfigurationPlugin -->
  <type>org.exoplatform.services.jcr.impl.config.RepositoryServiceConfigurationPlugin</type>
  <init-params>
    <value-param>
      <name>conf-path</name>
      <description>JCR configuration file</description>
      <value>war:/ks-extension/jcr/repository-configuration.xml</value>
    </value-param>
  </init-params>
</component-plugin>
  • In which:

Name

Set-method

Type

Description

RepositoryService ConfigurationPlugin

addConfig

org.exoplatform.services. jcr.impl.config.Repository ServiceConfigurationPlugin

Reads the configuration of JCR data to initialize data.

  • Init-params

Name

Possible value

Default value

Description

conf-path

string

war:/ks-extension/jcr/repository-configuration.xml

The path to the repository-configuration.xml file.

Initializing workspace name and repository name in storage-configuration.xml

In details:

Once the war:/ks-extension/jcr/repository-configuration.xml file has been initialized, the server will load the storage-configuration.xml file, and the setLocation function in the org.exoplatform.forum.common.conf.DataLocationPlugin component will run.

<external-component-plugins>
  <target-component>org.exoplatform.forum.common.jcr.KSDataLocation</target-component>
  <component-plugin>
    <name>ks.data.location</name>
    <set-method>setLocation</set-method>
    <type>org.exoplatform.forum.common.conf.DataLocationPlugin</type>
    <init-params>
      <value-param>
        <name>repository</name>
        <description>JCR repository for KS data</description>
        <value>repository</value>
      </value-param>
      <value-param>
        <name>workspace</name>
        <description>workspace for KS data</description>
        <value>knowledge</value>
      </value-param>
    </init-params>
  </component-plugin>
</external-component-plugins>

In which,

Value-param

Possible value

Default value

Description

repository

string

repository

The JCR repository for KS data.

workspace

string

knowledge

The workspace for KS data.

Initializing JCR structure

Once the workspace name and repository name are registered, the server will load org.exoplatform.services.jcr.ext.hierarchy.NodeHierarchyCreator and the addPaths function in org.exoplatform.services.jcr.ext.hierarchy.impl.AddPathPlugin is called. Then, the data location will be built.

<component-plugin>
  <name>addPaths</name>
  <set-method>addPlugin</set-method>
  <type>org.exoplatform.services.jcr.ext.hierarchy.impl.AddPathPlugin</type>
  <init-params>
    <object-param>
      <name>ks.storage</name>
      <description>ks data storage tree</description>
      <object type="org.exoplatform.services.jcr.ext.hierarchy.impl.HierarchyConfig">
        <field name="repository">
          <string>repository</string>
        </field>
        <field name="workspaces">
          <collection type="java.util.ArrayList">
            <value>
              <string>knowledge</string>
            </value>
          </collection>
        </field>
        <field name="jcrPaths">
          <collection type="java.util.ArrayList">
            <value>
              <object type="org.exoplatform.services.jcr.ext.hierarchy.impl.HierarchyConfig$JcrPath">
                <field name="alias">
                  <string>eXoApplications</string>
                </field>
                <field name="path">
                  <string>/exo:applications</string>
                </field>
                <field name="permissions">
                  <collection type="java.util.ArrayList">
                    <value>
                      <object type="org.exoplatform.services.jcr.ext.hierarchy.impl.HierarchyConfig$Permission">
                        <field name="identity">
                          <string>*:/platform/administrators</string>
                        </field>
                        <field name="read">
                          <string>true</string>
                        </field>
                        <field name="addNode">
                          <string>true</string>
                        </field>
                        <field name="setProperty">
                          <string>true</string>
                        </field>
                        <field name="remove">
                          <string>true</string>
                        </field>
                      </object>
                    </value>
                  </collection>
                </field>
              </object>
            </value>
            <value>
            ...
            </value>
          </collection>
        </field>
      </object>
    </object-param>
  </init-params>
</component-plugin>

Roles plugin

The roles plug-in component defines roles in Forum of eXo Platform. This convenient application defines access to a set of functions within the application. Currently, it only defines the person who has the administrator role. Administrators can get access to administration functions. At runtime, the application gets data from the roles plug-in to decide whether the logged user has the administrative role or not.

Configuration

The plug-in is configured in the roles-configuration.xml file.

When the user signs in, his or her username, group and membership will be compared with the user roles defined in the .xml file that is provided by the roles plug-in component.

In particular, at runtime of ForumService, the roles plug-in component is called. The role plug-in is configured in the roles-configuration.xml file. The plug-in component named add.role.rules.plugin will be referred to org.exoplatform.ks.common.conf.RoleRulesPlugin to create users for Forum corresponding to users who exist in the organization database. In addition, the list of users who have the administration role are also defined.

<component-plugin>
  <name>add.role.rules.plugin</name>
  <set-method>addRolePlugin</set-method>
  <type>org.exoplatform.forum.common.conf.RoleRulesPlugin</type>
  <description>add role rules</description>
  <init-params>
    <value-param>
      <name>role</name>
      <description>name of the role</description>
      <value>ADMIN</value>
    </value-param>
    <values-param>
      <name>rules</name>
      <description>rules of the role</description>
      <value>root</value>
      <!-- value>admin</value-->
      <!--value>member:/demo</value-->
      <!--value>/platform/administrators</value-->
      <!--value>manager:/platform/users</value-->
      <!--value>*:/somegroup/somesubgroup</value-->
      <!--value>manager:/somegroup/someothergroup</value-->
    </values-param>
  </init-params>
</component-plugin>

In which:

Name

Set-method

Type

Description

add.role.rules.plugin

addRolePlugin

org.exoplatform.ks.common.conf.RoleRulesPlugin

Adds role rules.

  • Init-params:

Name

Possible value

Default value

Description

role

string

ADMIN

The name of role.

rules

string

root

The rules of role.

  • When the role-configuration.xml file is executed, the administration role (with ADMIN value) will be checked and assigned to a matrix of users/groups/memberships defined inside the “value” tags as below:

<value>...</value>

For example:

...
<value>root</value>
<value>john</value>
<value>/platform/administrators</value>
<value>member:/VIP</value>
<value>validator:/VIP</value>
...

In the example above, the default administrators of Forum include root, john, users in /platform/administrators group and users who have member/validator memberships in the VIP group.

When being root, the users who belong to the /platform/administrators group or who have the member/validator memberships in the VIP group and sign in the Forum, they will be identified as the default administrator of Forum.

To add or remove the default administrator of the Forum, simply edit the roles-configuration.xml file, add or remove the relevant “value” tags.

...
<values-param>
  ...
  <value>...</value>
  ...
</values-param>
...

The default administrators of the Forum can only change their roles by editing in the roles-configuration.xml file.

At runtime, modifications in the roles-configuration.xml file will be read and database will be updated. Normal users of the Forum and default administration will be created correspondingly.

Forum plugins

This section describes the main component plugins used in Forum, sample configurations with explanation about init-params and how to use these plugins.

BBCode

The BBCode plug-in component defines default BBCode data in the .xml file, including BBCode tags, for example, I, B, U, SIZE, COLOR.

When the BBCode Service runs, it will get values returned from the BBCode plug-in component to initialize default BBCode data.

Configuration of default BBCode data

The default BBCode data is configured in the bbcodes-configuration.xml file.

In particular, at runtime of BBCode Service, the BBCode plug-in component is called. Then, the bbcodes-configuration.xml file will be executed, and the component-plugin named registerBBCodePlugin will be referred to org.exoplatform.ks.bbcode.spi.BBCodePlugin to execute some objects that will generate default data.

<component-plugin>
  <name>forum.default.bbcodes</name>
  <set-method>registerBBCodePlugin</set-method>
  <type>org.exoplatform.forum.bbcode.spi.BBCodePlugin</type>
  <description>default supported BBCodes</description>
  <init-params>
    <object-param>
      <name>I</name>
      <description>set text in italic</description>
      <object type="org.exoplatform.forum.bbcode.spi.BBCodeData">
        <field name="tagName">
          <string>I</string>
        </field>
        <field name="replacement">
          <string>&lt;i&gt;{param}&lt;/i&gt;</string>
        </field>
        <field name="description">
          <string>Set text in italic</string>
        </field>
        <field name="example">
          <string>[I]This text is italic[/I]</string>
        </field>
        <field name="isOption">
          <string>false</string>
        </field>
        <field name="isActive">
          <string>true</string>
        </field>
      </object>
    </object-param>

    <object-param>
      <name>B</name>
      <description></description>
      <object type="org.exoplatform.forum.bbcode.spi.BBCodeData">
        <field name="tagName">
          <string>B</string>
        </field>
        <field name="replacement">
          <string>&lt;strong&gt;{param}&lt;/strong&gt;</string>
        </field>
        <field name="description">
          <string>Set text in bold</string>
        </field>
        <field name="example">
          <string>[B]This text is bold[/B]</string>
        </field>
        <field name="isOption">
          <string>false</string>
        </field>
        <field name="isActive">
          <string>true</string>
        </field>
      </object>
    </object-param>

    <object-param>
      ...

    </object-param>
  </init-params>
</component-plugin>
  • In which,

Name

Set method

Type

Description

forum.default.bbcodes

registerBBCodePlugin

org.exoplatform.ks.bbcode.spi.BBCodePlugin

Defines formats for data displayed on UI.

  • The BBCode array is defined by the org.exoplatform.forum.bbcode.spi.BBCodeData object as below:

<object type="org.exoplatform.forum.bbcode.spi.BBCodeData">
  <field name="tagName">
    <string>I</string>
  </field>
  <field name="replacement">
    <string>&lt;i&gt;{param}&lt;/i&gt;</string>
  </field>
  <field name="description">
    <string>Set text in italic</string>
  </field>
  <field name="example">
    <string>[I]This text is italic[/I]</string>
  </field>
  <field name="isOption">
    <string>false</string>
  </field>
  <field name="isActive">
    <string>true</string>
  </field>
</object>
  • The BBCode includes basic data which are defined in the field tag with a specific name as below:

<field name="tagName">
  <string>I</string>
</field>
<field name="replacement">
  <string>&lt;i&gt;{param}&lt;/i&gt;</string>
</field>
<field name="description">
  <string>Set text in italic</string>
</field>
<field name="example">
  <string>[I]This text is italic[/I]</string>
</field>
<field name="isOption">
  <string>false</string>
</field>
<field name="isActive">
  <string>true</string>
</field>

In which:

Field name

Value

Description

tagName

string

The text for the BBCode, which is put between two square brackets ([ ]). For example, for the bold tag, if you type [b], the BBCode tag will be b without any square brackets ([ ]).

replacement

string

The HTML code that replaces the BBCode entered by the user. Make sure that you include {param} to insert the text between opening and closing BBCode tags, and {option} for the parameter within the BBCode tag. You can only use option if ‘Use Option’ is selected.

description

string

The piece of text to describe the BBCode tag, including HTML tags if you want.

example

string

The sample piece of BBCode to use as an example for the particular BBCode. For example, to demonstrate the usage of the [b] tag, enter [b]text[/b].

isOption

true, false

Selects the [tag=option] [/tag] style tag, rather than just a [tag][/tag] style tag. This function will be created if you select this option.

isActive

true, false

Activates the BBCode tag.

Auto-prune

The Auto-prune component is to prune inactive topics which have not been viewed, edited or received for a given period. The “prune” operation does not denote to the physical removal of topics, but sets them to invisible. The function helps you not clutter busy forums from outdated information.

When the Job Scheduler runs, it will get values returned from the Auto-prune plug-in component to identify topics which have to be inactivated in the Forum application. These topics will be invisible to users.

Configuration

The properties of Auto-prune plug-in are configured in the war:/ks-extension/ks/forum/prune-configuration.xml file.

In particular, at runtime of Job Scheduler, the Auto-prune plugin component is called. Then, the prune-configuration.xml file will be executed. The component-plugin named ForumDeactiveJob will refer to org.exoplatform.forum.service.conf.DeactivePeriodJob to inactivate topics in Forum which meets predefined inactivation properties.

<component-plugin>
  <name>ForumDeactiveJob</name>
  <set-method>addPeriodJob</set-method>
  <type>org.exoplatform.forum.service.conf.DeactivePeriodJob</type>
  <description>add a Deactive job to the JobSchedulerService</description>
  <init-params>
    <properties-param>
      <name>job.info</name>
      <description>save the monitor data periodically</description>
      <property name="jobName" value="DeactiveJob"/>
      <property name="groupName" value="KnowlegedSuite"/>
      <property name="job" value="org.exoplatform.forum.service.conf.DeactiveJob"/>
      <property name="repeatCount" value="0"/>
      <property name="period" value="7200000"/> <!-- 2 hours-->
      <property name="startTime" value="+1296000000"/>
      <property name="endTime" value=""/>
    </properties-param>
    <properties-param>
      <name>deactive.info</name>
      <description></description>
      <property name="inactiveDays" value="15"/>
      <property name="forumName" value="Live demo"/>
    </properties-param>
  </init-params>
</component-plugin>
  • In which,

Name

Set-method

Type

Description

ForumDeactiveJob

addPeriodJob

org.exoplatform.forum. service.conf.DeactivePeriodJob

Adds a DeactiveJob to the JobSchedulerService.

  • The properties for the Auto-prune plug-in are defined in the property tag with the format as below:

...
<property name="jobName" value="DeactiveJob"/>
<property name="groupName" value="KnowlegedSuite"/>
<property name="job" value="org.exoplatform.forum.service.conf.DeactiveJob"/>
<property name="repeatCount" value="0"/>
<property name="period" value="7200000"/> <!-- 2 hours-->
<property name="startTime" value="+1296000000"/>
<property name="endTime" value=""/>
...
<property name="inactiveDays" value="15"/>
<property name="forumName" value="Live demo"/>
...

In details:

Property name

Possible value

Default value

Description

jobname

String

DeactiveJob

The name of job which will be executed.

groupname

String

KnowlegedSuite

The name of application which will be executed.

job

Class path

org.exoplatform.forum.service.conf.DeactiveJob

The reference function of the job which will be executed.

repeatCount

Long

0

The repeating time for the job, meaning that how many times the job will be executed. The 0 value means that DecactiveJob is called at runtime only without repeating. If the value is set to 2 or 3, DecactiveJob will be called two or three times correspondingly.

period

Long

72000000

The interval between job executions.

starttime

Integer

+1296000000

The start time when the function executes.

endtime

Integer

null

The end time when the function stops executing. The endtime is blank, meaning that there is no limitation for the end time for ``

DecactiveJob``.

With start and end time, you can give a specific date in the format: yyyy-mm-dd HH:mm:ss.sss to define the start and end time for DecactiveJob. Besides, inactive information is also defined:

Property name

Possible value

Default value

Description

inactiveDays

Integer

15

The number of days the topic has not been activated. The inactivateDays is set to 1, meaning that all the topics, which have one inactivated day, will be set as inactivated status. They will be invisible.

forumname

String

Live Demo

The name of Forum which will be checked for Auto-prune. In case the value of forumname is blank, all forums will be checked for the Auto-prune. If the forumname is Live demo, only the Forum named ‘Live demo’ is checked for the Auto-prune.

By default, the default properties can only be changed by editing its value in the prune-configuration.xml file.

At runtime, the new changes in the prune-configuration.xml file are executed and updated. After that, the Auto-prune plug-in will be executed, depending on its properties.

Forum Group Listener

This plugin is used to remove space forums and user groups stored in categories/forums/topics.

You can find the configuration file of this component at: ``

extension/webapp/src/main/webapp/WEB-INF/ks-extension/ks/ks-configuration.xml``.

To use the plugin in the component configuration, you must use the following target-component:

<target-component>org.exoplatform.services.organization.OrganizationService</target-component>

Sample Configuration

<component-plugin>
  <name>forum.group.event.listener</name>
  <set-method>addListenerPlugin</set-method>
  <type>org.exoplatform.forum.service.conf.ForumGroupListener</type>
  <description>Remove the forums in spaces and remove user groups stored in categories/forums/topics.</description>
</component-plugin>
  • Name: forum.group.event.listener

  • Type: org.exoplatform.forum.service.conf.ForumGroupListener

User Statistics

The Auto-count Active Users component is to calculate the number of active users automatically. A user is considered as the active user only when he/she adds a topic/post in the Forum and his/her last post date matches the predefined interval time.

For example, if one user does not have any new posts after 15 days, he/she is not considered as an active user.

When the Job Scheduler runs, it will get values returned from the Auto-count Active Users plug-in component to identify the number of active users. This value is updated to Active Members information when the user views Forum statistics.

Configuration

The properties of Auto-count Active Users plug-in is configured in the war:/ks-extension/ks/forum/statistics-configuration.xml file.

In details, at runtime of Job Scheduler, the Auto-count Active Users plug-in component is called. Then, the statistics-configuration.xml file is executed. The component-plugin named RecountActiveUserJob will refer to org.exoplatform.forum.service.conf.RecountActiveUserPeriodJob to calculate the number of active users.

<component-plugin>
  <name>RecountActiveUserJob</name>
  <set-method>addPeriodJob</set-method>
  <type>org.exoplatform.forum.service.conf.RecountActiveUserPeriodJob</type>
  <description>add a RecountActiveUser job to the JobSchedulerService</description>
  <init-params>
    <properties-param>
      <name>job.info</name>
      <description>save the monitor data periodically</description>
      <property name="jobName" value="RecountActiveUserJob"/>
      <property name="groupName" value="KnowlegedSuite"/>
      <property name="job" value="org.exoplatform.forum.service.conf.RecountActiveUserJob"/>
      <property name="repeatCount" value="0"/>
      <property name="period" value="7200000"/> <!-- 2 hours-->
      <property name="startTime" value="+0"/>
      <property name="endTime" value=""/>
    </properties-param>
    <properties-param>
      <name>RecountActiveUser.info</name>
      <description/>
      <property name="lastPost" value="15"/> <!-- users are active if have last posts in 15 day -->
    </properties-param>
  </init-params>
</component-plugin>
  • In which,

Name

Method

Type

Description

RecountActiveUserJob

addPeriodJob

org.exoplatform.forum. service.conf. RecountActiveUserPeriodJob

Adds a RecountActiveUser job to the JobSchedulerService.

  • The properties for Auto-count Active Members plug-in are defined in the property tag as below:

...
<property name="jobName" value="RecountActiveUserJob"/>
<property name="groupName" value="KnowlegedSuite"/>
<property name="job" value="org.exoplatform.forum.service.conf.RecountActiveUserJob"/>
<property name="repeatCount" value="0"/>
<property name="period" value="7200000"/>
<property name="startTime" value="+0"/>
<property name="endTime" value=""/>
...
<property name="lastPost" value="15"/>
...

In which:

Property name

Possible value

Default value

Description

jobname

String

RecountActiveUserJob

The name of job which will be executed.

groupname

String

KnowlegedSuite

The name of application which will be executed.

job

Class path

org.exoplatform.forum.service.conf.RecountActiveUserJob

The reference function of job which will be executed.

repeatCount

Long

0

The number of times the job is repeated. If repeatCount is set to 0, RecountActiveUserJob is called at runtime only without repeating. If the number is set to 2 or 3, RecountActiveUserJob will be called two or three times.

period

Long

7200000 (millisecond) (equal to two hours)

The interval time to execute the job.

starttime

Integer

0

The start time when the function executes. The starttime is 0, meaning that the time to start executing RecountActiveUserJob is the runtime.

endtime

Integer

null

The end time when the function stops executing. The endtime is blank, meaning that there is no limitation for the end time for ``

RecountActiveUserJob``.

With start and end time, you can give a specific date in the format: yyyy-mm-dd HH:mm:ss.sss to define the start and end time for RecountActiveUserJob. The information of active time is also defined:

Property name

Possible value

Default value

Description

lastPost

Integer

15

The number of days that the user has added the last post. lastPost is 15, meaning that all users, who have any new posts within 15 days as from their last post date, are active members.

By default, the default properties can only be changed by editing its values in the statistics-configuration.xml file.

At runtime, the new changes in the statistics-configuration.xml file will be executed and updated. The Auto-count Active Users plug-in will be executed, depending on its properties.

Update Statistic Data

The UpdateDataJob is used when there are abnormal changes in Forum data (such as migration). By default, UpdateDataJob is disabled at the server start up. When UpdateDataJob is running, it will calculate the statistic data in Forum to make sure that the statistic data are correct.

Configuration

The properties of Forum’s UpdateDataJob is configured in /WEB-INF/ks-extension/ks/forum/statistics-configuration.xml which is located in the ks-extension webapp.

<component-plugin>
  <name>UpdateDataJob</name>
  <set-method>addPeriodJob</set-method>
  <type>org.exoplatform.services.scheduler.PeriodJob</type>
  <description>update topic count and post count to forum service</description>
  <init-params>
    <properties-param>
      <name>job.info</name>
      <description>save the monitor data  periodically</description>
      <property name="jobName" value="UpdateDataJob"/>
      <property name="groupName" value="KnowledgeSuite-forum"/>
      <property name="job" value="org.exoplatform.forum.service.conf.UpdateDataJob"/>
      <property name="repeatCount" value="1"/>
      <property name="period" value="30000"/>
      <property name="startTime" value="+0"/>
      <property name="endTime" value=""/>
    </properties-param>
  </init-params>
</component-plugin>

In which:

Name

Method

Type

Description

UpdateDataJob

addPeriodJob

org.exoplatform.services.scheduler.PeriodJob

Adds an UpdateDataJob to the JobSchedulerService.

  • The properties for Auto-count Active Members plugin are defined in the property tag as below:

<property name="jobName" value="UpdateDataJob"/>
<property name="groupName" value="KnowledgeSuite-forum"/>
<property name="job" value="org.exoplatform.forum.service.conf.UpdateDataJob"/>
<property name="repeatCount" value="1"/>
<property name="period" value="30000"/>
<property name="startTime" value="+0"/>
<property name="endTime" value=""/>

Property name

Possible value

Default value

Description

jobname

String

UpdateDataJob

The name of job which will be executed.

groupname

String

KnowledgeSuite-forum

The name of application which will be executed.

job

Class path

org.exoplatform.forum.service.conf.UpdateDataJob

The reference function of job which will be executed.

repeatCount

Long

1

The number of times the job is repeated. If repeatCount is set to 1, RecountActiveUserJob is called at runtime only without repeating. If the number is set to 2 or 3, RecountActiveUserJob will be called two or three times.

period

Long

30000 (millisecond) (equal to two hours)

The interval time to execute the job.

starttime

Integer

0

The start time when the function executes. The starttime is 0, meaning that the time to start executing RecountActiveUserJob is the runtime.

endtime

Integer

null

The end time when the function stops executing. The endtime is blank, meaning that there is no limitation for the end time for ``

UpdateDataJob``.

With start and end time, you can give a specific date in the yyyy-mm-dd HH:mm:ss.sss format to define the start and end time for UpdateDataJob.

Default User Profile

The default Forum settings are a set of settings for a new account. It contains declarations of time zone, short date format, long date format, time format, maximum topics per page, maximum posts per page and flag for showing forum jump or not. The settings are simple, and users can change such settings to UI-based functions later.

Configuration

This configuration is declared in the file named ks-configuration.xml. Its path is ``[tomcat source]/webapps/ks-extension/WEB-INF/ks-extension/ks/ks-configuration.xml

`` if you are running the tomcat and

[project source]/extension/webapp/src/main/webapp/WEB-INF/ks-extension/ks/ks-configuration.xml if you are in the development phrase.

...
<external-component-plugins>
  <target-component>org.exoplatform.services.organization.OrganizationService</target-component>
  <component-plugin>
    ...
    <init-params>
      <properties-param>
        <name>user.profile.setting</name>
        <description>set default user profile</description>
        <property name="timeZone" value="GMT"/>
        <property name="shortDateFormat" value="MM/dd/yyyy"/>
        <property name="longDateFormat" value="DDD,MMM dd,yyyy"/>
        <property name="timeFormat" value="hh:mm a"/>
        <property name="maxTopic" value="10"/>
        <property name="maxPost" value="10"/>
      </properties-param>
    </init-params>

  </component-plugin>
</external-component-plugins>
...

In which:

Parameter

Possible value

Default value

Description

timeZone

Time zone id

GMT

The time zone set by user. For example: GMT, GMT-05:00, GMT+07:00, GMT+08:30 … Visit the website: http://java.sun.com/j2se/1.4.2/docs/api/java/util/TimeZone.html for more details.

shortDateFormat

Valid Java Date format

MM/dd/yyyy

The format to display short information of date. Visit the website: http://java.sun.com/j2se/1.4.2/docs/api/java/text/SimpleDateFormat.html to ensure the exact format.

longDateFormat

Valid Java Date format

DDD,MMM dd,yyyy

The format to display a date with more information. Visit the website http://java.sun.com/j2se/1.4.2/docs/api/java/text/SimpleDateFormat.html to ensure the exact format.

timeFormat

valid Java Date format

hh:mm a

The format to view time (for example, hour, minute,). Visit the website: http://java.sun.com/j2se/1.4.2/docs/api/java/text/SimpleDateFormat.html to ensure the exact format.

maxTopic

Integer

10

The maximum number of topics per page.

maxPost

Integer

10

The maximum number of posts per page.

FAQ plugins

This section describes the main component plugins used to configure the FAQ application of eXo Platform, including:

FAQ preference template updater

The FAQPreferenceTemplateUpdaterPlugin plugin is used to migrate the default template of the FAQ viewer.

To use the plugin in the component configuration, you must use the following target-component:

<target-component>org.exoplatform.commons.upgrade.UpgradeProductService</target-component>

The configuration is applied mainly in extension/webapp/src/main/webapp/WEB-INF/ks-extension/ks/faq/templates-configuration.xml.

Sample configuration:

<component-plugin profiles="knowledge,default,all">
  <name>FAQPreferenceTemplateUpdaterPlugin</name>
  <set-method>addUpgradePlugin</set-method>
  <type>org.exoplatform.faq.service.updater.FAQPreferenceTemplateUpdaterPlugin</type>
  <description>FAQ template upgrade plug-in</description>
  <init-params>
    <value-param>
      <name>product.group.id</name>
      <description>The groupId of the product</description>
      <value>org.exoplatform.forum</value>
    </value-param>
    <value-param>
      <name>old.product.group.id</name>
      <description>The groupId of the old product</description>
      <value>org.exoplatform.ks</value>
    </value-param>
    <value-param>
      <name>location</name>
      <description>The location of file template</description>
      <value>war:/ks-extension/ks/faq/templates/FAQViewerPortlet.gtmpl</value>
    </value-param>
  </init-params>
</component-plugin>
  • Name: FAQPreferenceTemplateUpdaterPlugin

  • Type: org.exoplatform.faq.service.updater.FAQPreferenceTemplateUpdaterPlugin

Value-params

Type

Value

Description

product.group.id

string

org.exoplatform.forum

The groupId of the product.

old.product.group.id

string

org.exoplatform.ks

The groupId of the old product.

location

string

war:/ks-extension/ks/faq/templates/FAQViewerPortlet.gtmpl

The location of the template file.

FAQ user listener

The FAQUserListener plugin is used to process the user information when the user is deleted from the system.

To use the plugin in the component configuration, you must use the following target-component:

<target-component>org.exoplatform.services.organization.OrganizationService</target-component>

The configuration is applied mainly in extension/webapp/src/main/webapp/WEB-INF/ks-extension/ks/ks-configuration.xml.

Sample configuration:

<component-plugin>
  <name>answer.user.event.listener</name>
  <set-method>addListenerPlugin</set-method>
  <type>org.exoplatform.faq.service.conf.FAQUserListener</type>
  <description>calculate info when deleted users</description>
</component-plugin>
  • Name: answer.user.event.listener

  • Type: org.exoplatform.faq.service.conf.FAQUserListener

Template

This plugin is used to initialize the template for the FAQ application.

To use the plugin in the component configuration, you must use the following target-component:

<target-component>org.exoplatform.faq.service.FAQService</target-component>

The configuration is applied mainly in extension/webapp/src/main/webapp/WEB-INF/ks-extension/ks/faq/templates-configuration.xml.

Sample configuration:

<component-plugin>
  <name>faq.default.template</name>
  <set-method>addTemplatePlugin</set-method>
  <type>org.exoplatform.faq.service.TemplatePlugin</type>
  <init-params>
    <value-param>
      <name>viewerTemplate</name>
      <value>war:/ks-extension/ks/faq/templates/FAQViewerPortlet.gtmpl</value>
    </value-param>
  </init-params>
</component-plugin>
  • Name: faq.default.template

  • Type: org.exoplatform.faq.service.TemplatePlugin

Value-params

Type

Value

Description

viewerTemplate

string

war:/ks-extension/ks/faq/templates/FAQViewerPortlet.gtmpl

The viewer template file.