eXo Platform 3.5

## Chapter 3. Configuration

This chapter describes about configurations used in eXo Content. It consists of two main sections:

- Component

- External Component Plugins

## Components

This section describes services which provide low-level functionality for UI components.

### ActionServiceContainer

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.

### ApplicationTemplateManagerService

The ApplicationTemplateManagerService component is used to manage dynamic Groovy templates for WCM-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.

### FragmentCacheService

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.

### JodConverterService

The JodConverterServices component is used to convert documents into different office formats. 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:

Name | Type | Value | Description
--- | --- | --- | ---
port | `Integer` | ${jodconverter.portNumbers} | The number of ports to connect with the office server.
officeHome | `String` | ${jodconverter.officeHome} | The absolute path to the office home on the current local computer.
taskQueueTimeout | `Long` | ${jodconverter.taskExecutionTimeout} | The maximum living time of a task in the conversation queue.
taskExecutionTimeout | `Long` | ${jodconverter.taskExecutionTimeout} | The maximum time to process a task.
maxTasksPerProcess | `Integer` | ${jodconverter.maxTasksPerProcess} | The maximum number of tasks are processed.
retryTimeout | `Long` | ${jodconverter.retryTimeout} | The interval time to try to restart the office services in case they unexpectedly stop.

### LiveLinkManagerService

The LiveLinkManagerService component is used to check broken links, update links when the links are edited and extract links to return a list of all links. 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.link.LiveLinkManagerService</key>

        <type>org.exoplatform.services.wcm.link.LiveLinkManagerServiceImpl</type>

        <init-params>

            <properties-param>

                <name>server.config</name>

                <description>server.address</description>

                <property name="scheme" value="http"/>

                <property name="hostName" value="localhost"/>

                <property name="port" value="8080"/>

            </properties-param>

        </init-params>

    </component>

Details:

Properties-param | Property name | Type | Value | Description
--- | --- | --- | --- | ---
server.config | `scheme` `hostName` `port` | `http/https` `String` `The port number` | `http` `localhost` `8080` | All the property names are used together to configure the server. Here is an example about the server configuration: http//:localhost:8080.

### LockService

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>

### NewsletterInitializationService

The NewsletterInitializationService component is used to initiate some data for the newsletter portlet. The configuration of this component is found in packaging/ecmdemo/webapp/src/main/webapp/WEB-INF/conf/sample-portal/wcm/newsletter-configuration.xml.

### Note

The Newsletter portlet and its services are deprecated. It remains fully supported for eXo customers, however it will not receive any enhancement and will be removed from the product scope in the future.

    <component>

        <type>org.exoplatform.services.wcm.newsletter.NewsletterInitializationService</type>

        <init-params>

            <values-param>

                <name>portalNames</name>

                <value>classic</value>

                <value>acme</value>

            </values-param>

            <values-param>

                <name>administrators</name>

                <value>root</value>

                <value>john</value>

            </values-param>

            <object-param>

                <name>marketing</name>

                <description>marketing</description>

                <object type="org.exoplatform.services.wcm.newsletter.NewsletterCategoryConfig">

                    <field name="name">

                        <string>marketing</string>

                    </field>

                    <field name="title">

                        <string>Marketing</string>

                    </field>

                    <field name="description">

                        <string>You want to know where we are, where we go ?</string>

                    </field>

                    <field name="moderator">

                        <string>*:/platform/web-contributors</string>

                    </field>

                </object>

            </object-param>

            <object-param>

                <name>general</name>

                <description>general</description>

                <object type="org.exoplatform.services.wcm.newsletter.NewsletterCategoryConfig">

                    <field name="name">

                        <string>general</string>

                    </field>

                    <field name="title">

                        <string>General</string>

                    </field>

                    <field name="description">

                        <string>General information about us</string>

                    </field>

                    <field name="moderator">

                        <string>*:/platform/web-contributors</string>

                    </field>

                </object>

            </object-param>

            <object-param>

                <name>subscription2</name>

                <description>subscription2</description>

                <object type="org.exoplatform.services.wcm.newsletter.NewsletterSubscriptionConfig">

                    <field name="name">

                        <string>results</string>

                    </field>

                    <field name="title">

                        <string>Results</string>

                    </field>

                    <field name="description">

                        <string>Monthly newsletter about our results and forecasts</string>

                    </field>

                    <field name="categoryName">

                        <string>general</string>

                    </field>

                    <field name="redactor">

                        <string>*:/platform/web-contributors</string>

                    </field>

                </object>

            </object-param>

            <object-param>

                <name>subscription1</name>

                <description>subscription1</description>

                <object type="org.exoplatform.services.wcm.newsletter.NewsletterSubscriptionConfig">

                    <field name="name">

                        <string>checklist</string>

                    </field>

                    <field name="title">

                        <string>Check-List</string>

                    </field>

                    <field name="description">

                        <string>Weekly newsletter with general topics</string>

                    </field>

                    <field name="categoryName">

                        <string>general</string>

                    </field>

                    <field name="redactor">

                        <string>*:/platform/web-contributors</string>

                    </field>

                </object>

            </object-param>

            <object-param>

                <name>subscription3</name>

                <description>subscription3</description>

                <object type="org.exoplatform.services.wcm.newsletter.NewsletterSubscriptionConfig">

                    <field name="name">

                        <string>market</string>

                    </field>

                    <field name="title">

                        <string>The market</string>

                    </field>

                    <field name="description">

                        <string>What's on the market today ?</string>

                    </field>

                    <field name="categoryName">

                        <string>marketing</string>

                    </field>

                    <field name="redactor">

                        <string>*:/platform/web-contributors</string>

                    </field>

                </object>

            </object-param>

            <object-param>

                <name>user1@gmail.com</name>

                <description>user1@gmail.com</description>

                <object type="org.exoplatform.services.wcm.newsletter.config.NewsletterUserConfig">

                    <field name="mail">

                        <string>user1@gmail.com</string>

                    </field>

                </object>

            </object-param>

            <object-param>

                <name>user2@gmail.com</name>

                <description>user2@gmail.com</description>

                <object type="org.exoplatform.services.wcm.newsletter.config.NewsletterUserConfig">

                    <field name="mail">

                        <string>user2@gmail.com</string>

                    </field>

                </object>

            </object-param>

        </init-params>

    </component>

Details:

- Value-param

Name | Type | Value | Description
--- | --- | --- | ---
portalNames | `string` | `classic, acme` | The portal names.
administrators | `string` | `root` | The administrator who manages the newsletter portlet.

- Object-param:

  - object type: `org.exoplatform.services.wcm.newsletter.NewsletterCategoryConfig`

Field | Type | Description
--- | --- | ---
name | `string` | The name of categories or subscriptions.
title | `string` | The title of categories or subscriptions.
description | `string` | The description of categories or subscriptions.
moderator | `string` | The users or groups that can moderate the newsletter portlet.
categoryName | `string` | The categories name.
redactor | `string` | The users or groups that are newsletter redactor.
mail | `string` | The email that user uses to subscribe.

### NewsletterManagerService

The NewsletterManagerService component is used to send newsletters to subscribers. The configuration of this component is found in core/core-configuration/src/main/webapp/WEB-INF/conf/wcm-core/ext-newsletter-configuration.xml.

### Note

The Newsletter Manager portlet and its services are deprecated. It remains fully supported for eXo customers, however it will not receive any enhancement and will be removed from the product scope in the future.

    <component>

        <type>org.exoplatform.services.wcm.newsletter.NewsletterManagerService</type>

        <init-params>

            <value-param>

                <name>repository</name>

                <value>repository</value>

            </value-param>

            <value-param>

                <name>workspace</name>

                <value>collaboration</value>

            </value-param>

        </init-params>

    </component>

Details:

- Value-param:

Name | Type | Value | Description
--- | --- | --- | ---
repository | `string` | `repository` | The repository name.
workspace | `string` | `collaboration` | The workspace name.

### SiteSearchService

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-plugins>

      <init-params>

        <value-param>

          <name>isEnabledFuzzySearch</name>

          <value>true</value>

        </value-param>

        <value-param>

          <name>fuzzySearchIndex</name>

          <value/>

        </value-param>

      </init-params>

    </component>

Detail:

- Value-param:

Name | Type | Value | Description
--- | --- | --- | ---
isEnabledFuzzySearch | `boolean` | `true` | Allow administrators to enable/disable the fuzzy search mechanism.
fuzzySearchIndex | `N/A` | `N/A` | Allow 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.

### SEOService

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` | Allow search engines to index a particular page or not.
robotsfollow | `ArrayList` | `FOLLOW` `NOFOLLOW` | Allow search engines to follow links from a particular page to find other pages or not.
frequency | `ArrayList` | `Always` `Hourly` `Daily` `Weekly` `Monthly` `Yearly` `Never` | Define how often a particular page is updated.

### QueryService

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/Queries</value>

            </value-param>

            <value-param>

                <name>group</name>

                <value>*:/admin</value>

            </value-param>

        </init-params>

    </component>

Details:

- Value-param:

Name | Type | Value | Description
--- | --- | --- | ---
workspace | `string` | `system` | The workspace name.
relativePath | `Private/Queries` | `Private/Queries` | The path to the query location.
group | `string` | *:/admin | The group is allowed to access the query folder.

### TaxonomyService

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 that advanced WCM 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.

### ThumbnailService

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. 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.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>false</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:

Name | Type | Value | Description
--- | --- | --- | ---
smallSize | `integer x integer` | `32x32` | The small thumbnail size.
mediumSize | `integer x integer` | `64x64` | The medium thumbnail size.
largeSize | `integer x integer` | `300x300` | The large thumbnail size.
enable | `boolean` | `false` | Specify if the thumbnail is displayed or not.
mimetypes | `Images formats` | `image/jpeg;image/png;image/gif;image/bmp` | The image formats are supported.

### TimelineService

The TimelineService component allows documents to be displayed by days, months and years. 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.timeline.TimelineService</key>

        <type>org.exoplatform.services.cms.timeline.impl.TimelineServiceImpl</type>

        <init-params>

            <value-param>

                <name>itemPerTimeline</name>

                <value>5</value>

            </value-param>

        </init-params>

    </component>

Details:

- Value-param

Name | Type | Value | Description
--- | --- | --- | ---
itemPerTimeline | `integer` | `5` | The number of documents are displayed.

### WatchDocumentService

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.

    <component>

        <key>org.exoplatform.services.cms.watch.WatchDocumentService</key>

        <type>org.exoplatform.services.cms.watch.impl.WatchDocumentServiceImpl</type>

        <init-params>

            <object-param>

                <name>messageConfig</name>

                <description>description</description>

                <object type="org.exoplatform.services.cms.watch.impl.MessageConfig">

                    <field name="sender">

                        <string>support@exoplatform.com</string>

                    </field>

                    <field name="subject">

                        <string>Your watching document is changed</string>

                    </field>

                    <field name="content">

                        <string>The document that you are watching is changed.

                            Please go to ecm to see this change

                        </string>

                    </field>

                </object>

            </object-param>

        </init-params>

    </component>

Details:

- object-param:

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

Field | Type | Value | Description
--- | --- | --- | ---
sender | `string` | `support@exoplatform.com` | The sender who sends the notification mail.
subject | `string` | `Your watching document is changed.` | The subject of the notification mail.
content | `string` | `The document that you are watching is changed. Please go to ecm to see this change.` | The content of the notification mail.

### WCMService

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/core-services-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="30"/>

        </properties-param>

      </init-params>

    </component>

Details:

Properties-param | Property name | Type | Value | Description
--- | --- | --- | --- | ---
server.config | `expirationCache` | `integer` | `30` | The period in which the cache is clear in second. By default, the cache is cleared every 30 seconds.

## External Component Plugins

This section describes about the main component plugins used in eXo Content. Each part supply an example configuration with the explanation about ini-params so you can know how to use these plugins.

### AuthoringPublicationPlugin

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

### BaseActionPlugin

This is an abstract class and the parent of ScriptActionPlugin and BPActionPlugin . You can create a link from this plugin to its children.

### BPActionPlugin

This plugin is used to define the business process action in Workflow.

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/workflow/webapp/src/main/webapp/WEB-INF/workflow-extension/workflow/workflow-system-configuration.xml.

Sample configuration:

    <external-component-plugins>

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

        <component-plugin>

            <name>exo:businessProcessAction</name>

            <set-method>addPlugin</set-method>

            <type>org.exoplatform.services.plugin.actions.impl.BPActionPlugin</type>

            <priority>112</priority>

            <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:publishingProcess</string>

                                        </field>

                                        <field name="name">

                                            <string>content publishing</string>

                                        </field>

                                        <field name="description">

                                            <string>content publishing workflow</string>

                                        </field>

                                        <field name="srcWorkspace">

                                            <string>collaboration</string>

                                        </field>

                                        <field name="srcPath">

                                            <string>/Documents/Validation Requests</string>

                                        </field>

                                        <field name="isDeep">

                                            <boolean>true</boolean>

                                        </field>

                                        <field name="lifecyclePhase">

                                            <collection type="java.util.ArrayList">

                                                <value>

                                                    <string>node_added</string>

                                                </value>

                                            </collection>

                                        </field>

                                        <field name="roles">

                                            <string>*:/platform/users</string>

                                        </field>

                                        <field name="variables">

                                            <string>

                                                exo:supervisor=*:/organization/management/executive-board;exo:validator=*:/platform/administrators

                                            </string>

                                        </field>

                                        <field name="mixins">

                                            <collection type="java.util.ArrayList">

                                                <value>

                                                    <object type="org.exoplatform.services.cms.actions.impl.ActionConfig$Mixin">

                                                        <field name="name">

                                                            <string>exo:publishLocation</string>

                                                        </field>

                                                        <field name="properties">

                                                            <string>

                                                                exo:publishWorkspace=collaboration;exo:publishPath=/Documents/Live;exo:validator=*:/platform/administrators

                                                            </string>

                                                        </field>

                                                    </object>

                                                </value>

                                                <value>

                                                    <object type="org.exoplatform.services.cms.actions.impl.ActionConfig$Mixin">

                                                        <field name="name">

                                                            <string>exo:pendingLocation</string>

                                                        </field>

                                                        <field name="properties">

                                                            <string>

                                                                exo:pendingWorkspace=collaboration;exo:pendingPath=/Documents/Pending

                                                            </string>

                                                        </field>

                                                    </object>

                                                </value>

                                                <value>

                                                    <object type="org.exoplatform.services.cms.actions.impl.ActionConfig$Mixin">

                                                        <field name="name">

                                                            <string>exo:backupLocation</string>

                                                        </field>

                                                        <field name="properties">

                                                            <string>exo:backupWorkspace=backup;exo:backupPath=/Expired

                                                                Documents

                                                            </string>

                                                        </field>

                                                    </object>

                                                </value>

                                                <value>

                                                    <object type="org.exoplatform.services.cms.actions.impl.ActionConfig$Mixin">

                                                        <field name="name">

                                                            <string>exo:trashLocation</string>

                                                        </field>

                                                        <field name="properties">

                                                            <string>

                                                                exo:trashWorkspace=collaboration;exo:trashPath=/Documents/Trash

                                                            </string>

                                                        </field>

                                                    </object>

                                                </value>

                                                <value>

                                                    <object type="org.exoplatform.services.cms.actions.impl.ActionConfig$Mixin">

                                                        <field name="name">

                                                            <string>mix:affectedNodeTypes</string>

                                                        </field>

                                                        <field name="properties">

                                                            <string>

                                                                exo:affectedNodeTypeNames=exo:article,exo:podcast,exo:sample,kfx:document,nt:file,rma:filePlan

                                                            </string>

                                                        </field>

                                                    </object>

                                                </value>

                                            </collection>

                                        </field>

                                    </object>

                                </value>

                            </collection>

                        </field>

                    </object>

                </object-param>

            </init-params>

        </component-plugin>

    </external-component-plugins>

In which:

- Name: `exo:businessProcessAction`

- Set-method: `addPlugin`

- Type: `org.exoplatform.services.plugin.actions.impl.BPActionPlugin`

- Object type: `org.exoplatform.services.cms.actions.impl.ActionConfig`

Field | Type | Value | Description
--- | --- | --- | ---
repository | `string` | `repository` | The repository name.
workspace | `string` | `collaboration` | The workspace name.
action | `ArrayList` | {java.util.ArrayList} | The action name.

### ContentTypeFilterPlugin

This plugin is used to filter WCM 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 | `ArrayList` | {java.util.ArrayList} | The content type.

### ContextPlugin

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/ecmdemo/webapp/src/main/webapp/WEB-INF/conf/sample-portal/wcm/content-configuration.xml or 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.

### CreatePortalPlugin

This is an abstract class and the parent of axonomyPlugin . You can create a link from this plugin to its children.

### ExcludeIncludeDataTypePlugin

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="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 | Exclude 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 | `text/css,text/javascript,application/x-javascript,text/ecmascript` | The list of mimetypes which will be excluded from the search results.

### FriendlyPlugin

This plugin is used to refine URLs in WCM.

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>

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

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>true</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>documents</string>

                                        </field>

                                        <field name="unfriendlyUri">

                                            <string>/public/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>files</string>

                                        </field>

                                        <field name="unfriendlyUri">

                                            <string>/rest-ecmdemo/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
--- | --- | --- | ---
friendlyUrl | `string` | `documents` | The object that will be applied the friendly URL.
unfriendlyUrl | `string` | `/public/acme/detail?content-id=/repository/collaboration` | The path to the location that will be applied the friendly URL.

### ImageThumbnailPlugin

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.

### IgnorePortalPlugin

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.

### InitialWebcontentPlugin

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 content/live/{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 content/live/{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 content/live//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.

### LinkDeploymentPlugin

This plugin is used to create predefined Symlinks into the system.

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 packaging/ecmdemo/webapp/src/main/webapp/WEB-INF/conf/sample-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.LinkDeploymentPlugin</type>

            <description>Link Deployment Plugin</description>

            <init-params>

                <object-param>

                    <name>link01</name>

                    <description>Deployment Descriptor</description>

                    <object type="org.exoplatform.services.deployment.plugins.LinkDeploymentDescriptor">

                        <field name="sourcePath">

                            <string>repository:collaboration:/sites content/live/acme/web contents/News/News1</string>

                        </field>

                        <field name="targetPath">

                            <string>repository:collaboration:/sites content/live/acme/categories/acme</string>

                        </field>

                    </object>

                </object-param>

                <object-param>

                    <name>link02</name>

                    <description>Deployment Descriptor</description>

                    <object type="org.exoplatform.services.deployment.plugins.LinkDeploymentDescriptor">

                        <field name="sourcePath">

                            <string>repository:collaboration:/sites content/live/acme/web contents/News/News2</string>

                        </field>

                        <field name="targetPath">

                            <string>repository:collaboration:/sites content/live/acme/categories/acme</string>

                        </field>

                    </object>

                </object-param>

                <object-param>

                    <name>link03</name>

                    <description>Deployment Descriptor</description>

                    <object type="org.exoplatform.services.deployment.plugins.LinkDeploymentDescriptor">

                        <field name="sourcePath">

                            <string>repository:collaboration:/sites content/live/acme/web contents/News/News3</string>

                        </field>

                        <field name="targetPath">

                            <string>repository:collaboration:/sites content/live/acme/categories/acme</string>

                        </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.webcontent.InitialWebContentPlugin

- Object type: org.exoplatform.services.deployment.plugins.LinkDeploymentDescriptor

Field | Type | Value | Description
--- | --- | --- | ---
sourcePath | `string` | `repository:collaboration:/sites content/live/acme/web contents/News/News1` | The path to the source where this plugin will get data.
targetPath | `string` | `repository:collaboration:/sites content/live/acme/categories/acme` | The path to the target where this plugin will deploy.

### LockGroupsOrUsersPlugin

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.

### ManageDrivePlugin

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, coverflow.

- 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 content/live</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>

                <object-param>

                    <name>Public</name>

                    <description>Public drive</description>

                    <object type="org.exoplatform.services.cms.drives.DriveData">

                        <field name="name">

                            <string>Public</string>

                        </field>

                        <field name="repository">

                            <string>repository</string>

                        </field>

                        <field name="workspace">

                            <string>collaboration</string>

                        </field>

                        <field name="permissions">

                            <string>*:/platform/users</string>

                        </field>

                        <field name="homePath">

                            <string>/Users/${userId}/Public</string>

                        </field>

                        <field name="icon">

                            <string/>

                        </field>

                        <field name="views">

                            <string>simple-view, admin-view</string>

                        </field>

                        <field name="viewPreferences">

                            <boolean>false</boolean>

                        </field>

                        <field name="viewNonDocument">

                            <boolean>false</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` | `Public` | 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 content/live` | 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 | The 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` | Show/Hide 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` | * | Allow you to filter node types in the navigation tree. For example, the default value is "*" to show all content types.

### ManageViewPlugin

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>System-View</name>

                    <description>View configuration for System workspace</description>

                    <object type="org.exoplatform.services.cms.views.ViewConfig">

                        <field name="name">

                            <string>system-view</string>

                        </field>

                        <field name="permissions">

                            <string>*:/platform/administrators</string>

                        </field>

                        <field name="template">

                            <string>/exo:ecm/views/templates/ecm-explorer/SystemView</string>

                        </field>

                        <field name="tabList">

                            <collection type="java.util.ArrayList">

                                <value>

                                    <object type="org.exoplatform.services.cms.views.ViewConfig$Tab">

                                        <field name="tabName">

                                            <string>Info</string>

                                        </field>

                                        <field name="buttons">

                                            <string>viewNodeType; viewPermissions; viewProperties; showJCRStructure</string>

                                        </field>

                                    </object>

                                </value>

                            </collection>

                        </field>

                    </object>

                </object-param>

                <object-param>

                    <name>System Template</name>

                    <description>Template for display documents in list style</description>

                    <object type="org.exoplatform.services.cms.views.TemplateConfig">

                        <field name="type">

                            <string>ecmExplorerTemplate</string>

                        </field>

                        <field name="name">

                            <string>SystemView</string>

                        </field>

                        <field name="warPath">

                            <string>/ecm-explorer/SystemView.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` | Allow 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` | `system-view` | The name of view which must be unique inside WCM.
permissions | `string` | *:/platform/administrators | Visibility of the view based on eXo rights.
template | `string` | `/exo:ecm/views/templates/ecm-explorer/SystemView` | Specify path to the template location.
tabList | `ArrayList` | {java.util.ArrayList} | Include a set of view names.

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

Field | Type | Value | Description
--- | --- | --- | ---
tabName | `string` | `Info` | The name of tab which must be unique.
button | `string` | `viewNodeType; viewPermissions; viewProperties; showJCRStructure` | Specify a set of view component names.

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

Field | Type | Vsalue | Description
--- | --- | --- | ---
type | `string` | `ecmExplorerTemplate` | Specify if a name is truly a class representing all properties of a view.
name | `string` | `system-view` | Specify a set of view component names.
warPath | `string` | `/ecm-explorer/SystemView.gtmpl` | Specify a template location to view.

### PDFThumbnailPlugin

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.

### PorletTemplatePlugin

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>default.folder.list.viewer</name>

                    <description>Default folder list viewer groovy template</description>

                    <object type="org.exoplatform.services.cms.views.PortletTemplatePlugin$PortletTemplateConfig">

                        <field name="templateName">

                            <string>UIContentListPresentationDefault.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.

### PredefinedProcessesPlugin

This plugin is used to import the predefined processes into the system.

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

    <target-component>org.exoplatform.services.workflow.WorkflowServiceContainer</target-component>

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

Sample configuration:

    <external-component-plugins>

        <target-component>org.exoplatform.services.workflow.WorkflowServiceContainer</target-component>

        <component-plugin>

            <name>deploy.predefined.processes</name>

            <set-method>addPlugin</set-method>

            <type>org.exoplatform.services.workflow.PredefinedProcessesPlugin</type>

            <init-params>

                <object-param>

                    <name>predefined.processes</name>

                    <description>load of default business processes</description>

                    <object type="org.exoplatform.services.workflow.ProcessesConfig">

                        <field name="processLocation">

                            <string>war:/conf/bp</string>

                        </field>

                        <field name="predefinedProcess">

                            <collection type="java.util.HashSet">

                                <value>

                                    <string>/exo-ecms-ext-workflow-bp-bonita-content-2.3.7.jar</string>

                                </value>

                                <value>

                                    <string>/exo-ecms-ext-workflow-bp-bonita-payraise-2.3.7.jar</string>

                                </value>

                                <value>

                                    <string>/exo-ecms-ext-workflow-bp-bonita-holiday-2.3.7.jar</string>

                                </value>

                            </collection>

                        </field>

                    </object>

                </object-param>

            </init-params>

        </component-plugin>

    </external-component-plugins>

In which:

- name: deploy.predefined.processes

- set-method: addPlugin

- type: org.exoplatform.services.workflow.PredefinedProcessesPlugin

- Object type: `org.exoplatform.services.workflow.ProcessesConfig`

Field | Type | Value | Description
--- | --- | --- | ---
processLocation | `string` | `war:/conf/bp` | The path to the process.
predefinedProcess | `HashSet` | `java.util.HashSet` | The list of the processes.

### PublicationPlugin

This is an abstract class and the parent of StageAndVersionPublicationPlugin and AuthoringPublicationPlugin . You can create a link from this plugin to its children.

### QueryPlugin

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>

                <object-param>

                    <name>CreatedDocumentsDayBefore</name>

                    <description>documents created the day before</description>

                    <object type="org.exoplatform.services.cms.queries.impl.QueryData">

                        <field name="name">

                            <string>CreatedDocumentDayBefore</string>

                        </field>

                        <field name="language">

                            <string>xpath</string>

                        </field>

                        <field name="statement">

                            <string>//element(*,exo:article)[@exo:dateCreated &lt; xs:dateTime('${Date}$')] 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>true</boolean>

                        </field>

                    </object>

                </object-param>

                <object-param>

                    <name>AllArticles</name>

                    <description>All articles</description>

                    <object type="org.exoplatform.services.cms.queries.impl.QueryData">

                        <field name="name">

                            <string>All Articles</string>

                        </field>

                        <field name="language">

                            <string>xpath</string>

                        </field>

                        <field name="statement">

                            <string>//element(*,exo:article) 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>true</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` | Store 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` | Specify if the query is cached or not.

### RemovePortalPlugin

This is an abstract class and the parent of RemoveTaxonomyPlugin . You can create a link from this plugin to its children.

### RemoveTaxonomyPlugin

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`

### ScriptActionPlugin

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:sendMailAction</string>

                                        </field>

                                        <field name="name">

                                            <string>sendMail</string>

                                        </field>

                                        <field name="description">

                                            <string>send a notification mail</string>

                                        </field>

                                        <field name="srcWorkspace">

                                            <string>collaboration</string>

                                        </field>

                                        <field name="srcPath">

                                            <string>/Documents/Validation Requests</string>

                                        </field>

                                        <field name="isDeep">

                                            <boolean>true</boolean>

                                        </field>

                                        <field name="lifecyclePhase">

                                            <collection type="java.util.ArrayList">

                                                <value>

                                                    <string>read</string>

                                                </value>

                                            </collection>

                                        </field>

                                        <field name="roles">

                                            <string>*:/platform/administrators</string>

                                        </field>

                                        <field name="variables">

                                            <string>exo:to=benjamin.mestrallet@exoplatform.com</string>

                                        </field>

                                        <field name="mixins">

                                            <collection type="java.util.ArrayList">

                                                <value>

                                                    <object type="org.exoplatform.services.cms.actions.impl.ActionConfig$Mixin">

                                                        <field name="name">

                                                            <string>mix:affectedNodeTypes</string>

                                                        </field>

                                                        <field name="properties">

                                                            <string>

                                                                exo:affectedNodeTypeNames=exo:article,exo:podcast,exo:sample,kfx:document,nt:file,rma:filePlan

                                                            </string>

                                                        </field>

                                                    </object>

                                                </value>

                                            </collection>

                                        </field>

                                    </object>

                                </value>

                                <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 the actions.

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

Name | Type | Default Value | Description
--- | --- | --- | ---
type | `string` | `exo:sendMailAction` | The type of the action.
name | `string` | `sendMail` | The name of the action.
description | `string` | `send a notification mail` | The description of the action.
srcWorkspace | `string` | `collaboration` | The source workspace of the action.
isDeep | `boolean` | `false` | Specify the depth of node that the action script will affect.
srcPath | `string` | `trash` | The path to the source.
lifecyclePhase | `ArrayList` | {java.util.ArrayList} | Specify the lifecycle phase that the action will take place.

### ScriptPlugin

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>repository</name>

                    <value>repository</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">

                                <value>

                                    <object type="org.exoplatform.services.cms.impl.ResourceConfig$Resource">

                                        <field name="name">

                                            <string>ecm-explorer/action/RSSScript.groovy</string>

                                        </field>

                                    </object>

                                </value>

                                <value>

                                    <object type="org.exoplatform.services.cms.impl.ResourceConfig$Resource">

                                        <field name="name">

                                            <string>ecm-explorer/action/SendMailScript.groovy</string>

                                        </field>

                                    </object>

                                </value>

                                <value>

                                    <object type="org.exoplatform.services.cms.impl.ResourceConfig$Resource">

                                        <field name="name">

                                            <string>ecm-explorer/action/TrashFolderScript.groovy</string>

                                        </field>

                                    </object>

                                </value>

                                <value>

                                    <object type="org.exoplatform.services.cms.impl.ResourceConfig$Resource">

                                        <field name="name">

                                            <string>ecm-explorer/action/EnableVersioningScript.groovy</string>

                                        </field>

                                    </object>

                                </value>

                                <value>

                                    <object type="org.exoplatform.services.cms.impl.ResourceConfig$Resource">

                                        <field name="name">

                                            <string>ecm-explorer/action/AutoVersioningScript.groovy</string>

                                        </field>

                                    </object>

                                </value>

                                <value>

                                    <object type="org.exoplatform.services.cms.impl.ResourceConfig$Resource">

                                        <field name="name">

                                            <string>ecm-explorer/action/AddMetadataScript.groovy</string>

                                        </field>

                                    </object>

                                </value>

                                <value>

                                    <object type="org.exoplatform.services.cms.impl.ResourceConfig$Resource">

                                        <field name="name">

                                            <string>ecm-explorer/action/TransformBinaryChildrenToTextScript.groovy</string>

                                        </field>

                                    </object>

                                </value>

                                <value>

                                    <object type="org.exoplatform.services.cms.impl.ResourceConfig$Resource">

                                        <field name="name">

                                            <string>ecm-explorer/action/GetMailScript.groovy</string>

                                        </field>

                                    </object>

                                </value>

                                <value>

                                    <object type="org.exoplatform.services.cms.impl.ResourceConfig$Resource">

                                        <field name="name">

                                            <string>ecm-explorer/action/ProcessRecordsScript.groovy</string>

                                        </field>

                                    </object>

                                </value>

                                <value>

                                    <object type="org.exoplatform.services.cms.impl.ResourceConfig$Resource">

                                        <field name="name">

                                            <string>ecm-explorer/action/PublishingRequestScript.groovy</string>

                                        </field>

                                    </object>

                                </value>

                                <value>

                                    <object type="org.exoplatform.services.cms.impl.ResourceConfig$Resource">

                                        <field name="name">

                                            <string>ecm-explorer/action/AddTaxonomyActionScript.groovy</string>

                                        </field>

                                    </object>

                                </value>

                                <value>

                                    <object type="org.exoplatform.services.cms.impl.ResourceConfig$Resource">

                                        <field name="name">

                                            <string>ecm-explorer/widget/FillSelectBoxWithCalendarCategories.groovy</string>

                                        </field>

                                    </object>

                                </value>

                                <value>

                                    <object type="org.exoplatform.services.cms.impl.ResourceConfig$Resource">

                                        <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="name">

                                            <string>ecm-explorer/widget/FillSelectBoxWithWorkspaces.groovy</string>

                                        </field>

                                    </object>

                                </value>

                                <value>

                                    <object type="org.exoplatform.services.cms.impl.ResourceConfig$Resource">

                                        <field name="name">

                                            <string>ecm-explorer/widget/FillSelectBoxWithNodeChildren.groovy</string>

                                        </field>

                                    </object>

                                </value>

                                <value>

                                    <object type="org.exoplatform.services.cms.impl.ResourceConfig$Resource">

                                        <field name="name">

                                            <string>ecm-explorer/widget/FillSelectBoxWithLanguage.groovy</string>

                                        </field>

                                    </object>

                                </value>

                                <value>

                                    <object type="org.exoplatform.services.cms.impl.ResourceConfig$Resource">

                                        <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="name">

                                            <string>ecm-explorer/interceptor/PostNodeSaveInterceptor.groovy</string>

                                        </field>

                                    </object>

                                </value>

                                <value>

                                    <object type="org.exoplatform.services.cms.impl.ResourceConfig$Resource">

                                        <field name="name">

                                            <string>ecm-explorer/interceptor/PostFilePlanInterceptor.groovy</string>

                                        </field>

                                    </object>

                                </value>

                                <value>

                                    <object type="org.exoplatform.services.cms.impl.ResourceConfig$Resource">

                                        <field name="name">

                                            <string>content-browser/GetDocuments.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` | Enable/Disable 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.

### StageAndVersionPublicationPlugin

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

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>States and versions based publication</name>

        <set-method>addPublicationPlugin</set-method>

        <type>org.exoplatform.services.wcm.publication.lifecycle.stageversion.StageAndVersionPublicationPlugin</type>

        <description>This publication lifecycle publish a web content or DMS document to a portal page with more state

            and version.

        </description>

    </component-plugin>

In which:

- name: States and versions based publication

- set method: addPublicationPlugin

- type: org.exoplatform.services.wcm.publication.lifecycle.stageversion.StageAndVersionPublicationPlugin

### StatesLifecyclePlugin

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.

### TagPermissionPlugin

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.

### TagStylePlugin

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` | Specify whether the tag style is added automatically in a new reposistory 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.

### TaxonomyPlugin

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` | Enable/Disable 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.

### TemplatePlugin

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` | Enable 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` | Determine if the node type is a document type.
label | `string` | `file` | Visual display of the title for this node.
referencedView | `ArrayList` | {java.util.ArrayList} | Determine how to display a view.
referencedDialog | `ArrayList` | {java.util.ArrayList} | Determine how to display a dialog to input information.
referencedSkin | `ArrayList` | {java.util.ArrayList} | Determine 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` | Determine who can access this object (View/Dialog/CSS).

### XMLdeploymentPlugin

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 packaging/ecmdemo/webapp/src/main/webapp/WEB-INF/conf/sample-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>

                <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 content/live/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

- 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` | Decide 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 content/live/acme/web contents/site artifacts` | The path of the target node.

Copyright © 2009-2012. All rights reserved. eXo Platform SAS