eXo Platform 3.5

- Prev
- Next

## Chapter 3. Configuration

## 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 | Possible value | Default 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 | Property name | Possible value | Default value | Description
--- | --- | --- | --- | ---
storedLocations | repository | string | system | The repository name.

### FragmentCacheService

    <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 | Possible value | Default value | Description
--- | --- | --- | ---
cleanup-cache | integer | 300 |

### 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>host</name>

          <value>127.0.0.1</value>

        </value-param>

        <value-param>

          <name>port</name>

          <value>8100</value>

        </value-param>

      </init-params>

    </component>

Details

Value-param | Possible value | Default value | Description
--- | --- | --- | ---
host | The host IP | 127.0.0.1 | The host from which a document is converted into different office formats.
port | The port number | 8100 | The port number is open to accept converting a document into different office formats.

### 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 | Possible value | Default 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.

    <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 | Possible value | Default value | Description
--- | --- | --- | ---
portalNames | string | classic, acme | The portal names.
administrators | string | root | The administrator who manages the newsletter portlet.
name | string |  | The name of categories or subscriptions.
title | string |  | The title of categories or subscriptions.
moderator | string | *:/platform/web-contributors | The users or groups that can moderate the newsletter portlet.
categoryName | string | general, marketing | Thu categories name.
redactor | string | *:/platform/web-contributors | 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.

    <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 | Possible value | Default 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>

The component consists of the following init-parameters:

Init-Params | Default Value | Possible Value | Description
--- | --- | --- | ---
isEnabledFuzzySearch | true | Boolean | 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 type: org.exoplatform.services.seo.SEOConfig

Field name | Type | Default value | Description
--- | --- | --- | ---
robotsindex | string | INDEX NOINDEX | Allow search engines to index a particular page or not.
robotsfollow | string | FOLLOW NOFOLLOW | Allow search engines to follow links from a particular page to find other pages or not.
frequency | string | 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 | Possible value | Default 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 name | Collection type | Description
--- | --- | ---
permissions | `java.util.ArrayList<TaxonomyTreeDefaultUserPermission$Permission>` | The list of the default user permissions to access the taxonomy tree.

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

Field name | Type | Default value | Description
--- | --- | --- | ---
identity | String | *:/platform/administrators | The name of user or group.
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 | true | 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 | Possible value | Default value | Description
--- | --- | --- | ---
smallSize | 32x32 | 32x32 | The small thumbnail size.
mediumSiz | 64x64 | 64x64 | The medium thumbnail size.
largeSize | 300x300 | 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 | Possible value | Default 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 type: org.exoplatform.services.cms.watch.impl.MessageConfig

Field name | Type | Default 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 | Possible value | Default 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

### AuthoringPublicationPlugin

#### Fields

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

Name | Type | Default Value | Description
--- | --- | --- | ---
lifecycles | `array list` | `java.util.ArrayList` | The list of lifecycles.

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

Name | Type | Default Value | Description
--- | --- | --- | ---
name | `String` | `N/A` | The name of the lifecycle.
publicationPlugin | `string` | `Authoring publication` | The publication plugin name.
states | `array list` | `java.util.ArrayList` | The list of the publication states.

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

Name | Type | Default Value | Description
--- | --- | --- | ---
state | `string` | `N/A` | The publication states: draft, pending, staged, approved or published.
membership | `string` | `N/A` | The user or group.

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

Name | Type | Default Value | Description
--- | --- | --- | ---
contexts | `array list` | `java.util.ArrayList` | The list of contexts.

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

Name | Type | Default Value | Description
--- | --- | --- | ---
name | `string` | `contextdefault` | The context name.
priority | `string` | `200` | The context priority. The higher number indicates the higher priority. Because a site may have several lifecycles so the lifecycle with higher priority will be executed.
lifecycle | `string` | `lifecycle1` | The name of lifecycle.

#### Sample configuration

    <external-component-plugins>

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

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

      <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>contextdefault</string>

                      </field>

                      <field name="priority">

                        <string>200</string>

                      </field>

                      <field name="lifecycle">

                        <string>lifecycle1</string>

                      </field>

                    </object>

                  </value>

                </collection>

              </field>

            </object>

          </object-param>

        </init-params>

      </component-plugin>

    </external-component-plugins>

In which:

- Target-component: `org.exoplatform.services.wcm.extensions.publication.PublicationManager`

- Name: `AddLifecycle`

- Set-method: `addLifecycle`

- Type: `org.exoplatform.services.wcm.extensions.publication.lifecycle.StatesLifecyclePlugin`

### AddNameSpacesPlugin

#### Fields

#### Sample configuration

    <external-component-plugins>

      <target-component>org.exoplatform.services.jcr.RepositoryService</target-component>

      <component-plugin>

        <name>add.namespaces</name>

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

        <type>org.exoplatform.services.jcr.impl.AddNamespacesPlugin</type>

        <init-params>

          <properties-param>

            <name>namespaces</name>

            <property name="publication" value="http://www.exoplatform.com/jcr/publication/1.1/"/>

          </properties-param>

        </init-params>

      </component-plugin>

      <component-plugin>

        <name>add.nodeType</name>

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

        <type>org.exoplatform.services.jcr.impl.AddNodeTypePlugin</type>

        <priority>99</priority>

        <init-params>

          <values-param>

            <name>autoCreatedInNewRepository</name>

            <description>Node types configuration file</description>

            <value>war:/conf/wcm-core/nodetypes/nodetypes-publication-config.xml</value>

          </values-param>

        </init-params>

      </component-plugin>

    </external-component-plugins>

In which:

- target component: `org.exoplatform.services.jcr.RepositoryService`

- name: `add.namespaces`

- set method: `addPlugin`

- type: `org.exoplatform.services.jcr.impl.AddNamespacesPlugin`

### BaseActionPlugin

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

### ContentTypeFilterPlugin

This is the configuration for the location of templates to inject in JCR.

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

            <name>jsFolderFolderFilter</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:jsFolder</string>

              </field>

              <field name="contentTypes">

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

                  <value>

                    <string>exo:jsFile</string>

                  </value>

                </collection>

              </field>

            </object>

          </object-param>

        </init-params>

      </component-plugin>

    </external-component-plugins>

In which:

- Target-component: `org.exoplatform.services.cms.templates.TemplateService`

- Name: `addTemplates`

- Set-method: `addTemplates`

- Type: `org.exoplatform.services.cms.templates.impl.TemplatePlugin`

### ContextPlugin

#### Fields

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

Name | Type | Default 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 excuted priorly.
lifecycle | `string` | `lifecycle2` | The name of the lifecycle.
site | `string` | `acme` | The site that will apply the context configuration.

#### 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:

- Target-component: `org.exoplatform.services.wcm.extensions.publication.PublicationManager`

- Name: `AddLifecycle`

- Set-method: `addLifecycle`

- Type: `org.exoplatform.services.wcm.extensions.publication.lifecycle.StatesLifecyclePlugin`

### CreatePortalPlugin

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

### ExcludeMimeTypes

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

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:

Attributes | Values | Description
--- | --- | ---
name | mimetypes | Name of the property param.
value | text/css,text/javascript,application/x-javascript,text/ecmascript | List mimetypes which will be excluded from the search results.

See the following 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:

Set-method: addExcludeIncludeDataTypePlugin

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

### FriendlyPlugin

#### Fields

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

Name | Type | Default 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.

#### 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:

- Target-component: `org.exoplatform.services.wcm.friendly.FriendlyService`

- Name: `FriendlyService.addConfiguration`

- Set-method: `addConfiguration`

- Type: `org.exoplatform.services.wcm.friendly.impl.FriendlyPlugin`

### ImageThumbnailPlugin

#### Fields

This plugin will configure the file types of the thumbnail images.

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

Name | Type | Default Value | Description
--- | --- | --- | ---
mimeTypes | `Array list` | `java.util.ArrayList` | List of thumbnail image types

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

Details:

- Target-component: `org.exoplatform.services.cms.thumbnail.ThumbnailService`

- Name: `ImageThumbnailPlugin`

- Set-method: `addPlugin`

- Type: `org.exoplatform.services.cms.thumbnail.impl.ImageThumbnailPlugin`

### InitialWebcontentPlugin

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

#### Fields

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

Name | Type | Default Value | Description
--- | --- | --- | ---
workspace | `string` | `collaboration` | The workspace into which the initial web contents will be deployed into.
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.

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

            <name>Portal searchbox 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/Searchbox.xml</string>

              </field>

            </object>

          </object-param>

          <object-param>

            <name>Portal navigation 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/Navigation.xml</string>

              </field>

            </object>

          </object-param>

          <object-param>

            <name>Portal footer 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/Footer.xml</string>

              </field>

            </object>

          </object-param>

          <object-param>

            <name>Portal introduce 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/Introduce.xml</string>

              </field>

            </object>

          </object-param>

          <object-param>

            <name>Portal stylesheet 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}/css</string>

                  </field>

                </object>

              </field>

              <field name="sourcePath">

                <string>war:/conf/sample-portal/wcm/artifacts/site-resources/acme-templates/StylesheetGreen.xml</string>

              </field>

            </object>

          </object-param>

          <object-param>

            <name>Portal images 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}/medias/images</string>

                  </field>

                </object>

              </field>

              <field name="sourcePath">

                <string>war:/conf/sample-portal/wcm/artifacts/site-resources/acme-templates/Images.xml</string>

              </field>

            </object>

          </object-param>

        </init-params>

      </component-plugin>

    </external-component-plugins>

In which:

- Target-component: `org.exoplatform.services.wcm.portal.artifacts.CreatePortalArtifactsService`

- Name: `AddLifecycle`

- Set-method: `addPlugin`

- Type: `org.exoplatform.services.wcm.webcontent.InitialWebContentPlugin`

### LinkDeploymentPlugin

#### Fields

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

Name | Type | Default 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.

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

Details:

- Target-component: `org.exoplatform.services.deployment.WCMContentInitializerService`

- Name: `Content Initializer Service`

- Set-method: `addPlugin`

- Type: `org.exoplatform.services.wcm.webcontent.InitialWebContentPlugin`

### LockGroupsOrUsersPlugin

#### Fields

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

Name | Type | Default Value | Description
--- | --- | --- | ---
settingLockList | `array list` | `java.util.ArrayList` | The list of the groups or user to be locked.

#### 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:

- Target-component: `org.exoplatform.services.cms.lock.LockService`

- Name: `predefinedLockGroupsOrUsersPlugin`

- Set-method: `addLockGroupsOrUsersPlugin`

- Type: `org.exoplatform.services.cms.lock.impl.LockGroupsOrUsersPlugin`

### ManageDrivePlugin

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.

#### Fields

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

Field name | Type | Description
--- | --- | ---
name | `String` | The name of drive which must be unique.
repository | `String` | Content Repository where to find the root path.
workspace | `String` | Workspace in the Content Repository.
homePath | `String` | Root path in the Content Repository. `userId` can be used to use the userId at runtime in the path.
permissions | `String` | Visibility of the drive based on eXo rights. For example: `*:/platform/users`
icon | `String` | Url to the icon.
views | `String` | The list of views you want to use, separated by commas. For example: `simple-view,admin-view`
viewPreferences | `Boolean` | The User Preference icon will be visible if true.
viewNonDocument | `Boolean` | Non-document types will be visible in the user view if true.
viewSideBar | `Boolean` | Show/Hide the left bar (with navigation and filters).
showHiddenNode | `Boolean` | Hidden nodes will be visible if true.
allowCreateFolders | `Boolean` | 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.

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>

### ManageViewPlugin

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.

#### Fields

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

- Name: `manage.view.plugin`

- Set-method: `setManageViewPlugin`

- Type: `org.exoplatform.services.cms.views.impl.ManageViewPlugin`

- Description: This plugin manages user views.

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

Name | Type | Default 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

Name | Type | Default 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

Name | Type | Default value | 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.

#### Example of 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>

### PDFThumbnailPlugin

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

#### Fields

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

Name | Type | Default Value | Description
--- | --- | --- | ---
mimeTypes | `array list` | `java.util.ArrayList` | The MIME type of the pdf thumbnail.

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

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

      </external-component-plugins>

In which:

- Target-component: `org.exoplatform.services.cms.thumbnail.ThumbnailService`

- Name: `ImageThumbnailPlugin`

- Set-method: `addPlugin`

- Type: `org.exoplatform.services.cms.thumbnail.impl.ImageThumbnailPlugin`

### PorletTemplatePlugin

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

#### Fields

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

Name | Type | Default Value | Description
--- | --- | --- | ---
templateName | `string` | `UIContentListPresentationDefault.gtmpl` | The name of the GROOVY template.

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

              <name>big.folder.list.viewer</name>

              <description>Default folder list viewer groovy template with Big Image</description>

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

                <field name="templateName">

                  <string>UIContentListPresentationBigImage.gtmpl</string>

                </field>

                <field name="category">

                  <string>list</string>

                </field>

              </object>

            </object-param>

            <object-param>

              <name>small.folder.list.viewer</name>

              <description>Default folder list viewer groovy template with Small Image</description>

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

                <field name="templateName">

                  <string>UIContentListPresentationSmall.gtmpl</string>

                </field>

                <field name="category">

                  <string>list</string>

                </field>

              </object>

            </object-param>

            <object-param>

              <name>Two columns CLV template</name>

              <description>Two columns CLV template</description>

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

                <field name="templateName">

                  <string>TwoColumnsCLVTemplate.gtmpl</string>

                </field>

                <field name="category">

                  <string>list</string>

                </field>

              </object>

            </object-param>

            <object-param>

              <name>One column CLV template</name>

              <description>One column CLV template</description>

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

                <field name="templateName">

                  <string>OneColumnCLVTemplate.gtmpl</string>

                </field>

                <field name="category">

                  <string>list</string>

                </field>

              </object>

            </object-param>

            <object-param>

              <name>Category Tree</name>

              <description>Category Tree</description>

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

                <field name="templateName">

                  <string>CategoryTree.gtmpl</string>

                </field>

                <field name="category">

                  <string>navigation</string>

                </field>

              </object>

            </object-param>

            <object-param>

              <name>Category List</name>

              <description>Category List</description>

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

                <field name="templateName">

                  <string>CategoryList.gtmpl</string>

                </field>

                <field name="category">

                  <string>navigation</string>

                </field>

              </object>

            </object-param>

            <object-param>

              <name>Tags Cloud</name>

              <description>Tags Cloud</description>

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

                <field name="templateName">

                  <string>TagsCloud.gtmpl</string>

                </field>

                <field name="category">

                  <string>navigation</string>

                </field>

              </object>

            </object-param>

            <object-param>

              <name>Documents template</name>

              <description>Documents template</description>

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

                <field name="templateName">

                  <string>DocumentsTemplate.gtmpl</string>

                </field>

                <field name="category">

                  <string>list</string>

                </field>

              </object>

            </object-param>

            <object-param>

              <name>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>ContentListViewerDefault.gtmpl</string>

                </field>

                <field name="category">

                  <string>list</string>

                </field>

              </object>

            </object-param>

            <object-param>

              <name>Big hot news template</name>

              <description>Big hot news template</description>

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

                <field name="templateName">

                  <string>BigHotNewsTemplateCLV.gtmpl</string>

                </field>

                <field name="category">

                  <string>list</string>

                </field>

              </object>

            </object-param>

            <object-param>

              <name>Events template</name>

              <description>Events template</description>

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

                <field name="templateName">

                  <string>EventsTemplateCLV.gtmpl</string>

                </field>

                <field name="category">

                  <string>list</string>

                </field>

              </object>

            </object-param>

            <object-param>

              <name>default.paginator</name>

              <description>Default paginator groovy template</description>

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

                <field name="templateName">

                  <string>UIPaginatorDefault.gtmpl</string>

                </field>

                <field name="category">

                  <string>paginators</string>

                </field>

              </object>

            </object-param>

            <object-param>

              <name>empty.paginator</name>

              <description>Empty paginator groovy template</description>

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

                <field name="templateName">

                  <string>UIPaginatorEmpty.gtmpl</string>

                </field>

                <field name="category">

                  <string>paginators</string>

                </field>

              </object>

            </object-param>

          </init-params>

        </component-plugin>

      </external-component-plugins>

In which:

- Target-component: `org.exoplatform.services.cms.views.ApplicationTemplateManagerService`

- Name: `clv.templates.plugin`

- Set-method: `addPlugin`

- Type: `org.exoplatform.services.wcm.webcontent.InitialWebContentPlugin`

### PredefinedProcessesPlugin

#### Fields

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

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

#### 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.0-GA.jar</string></value>

                 <value><string>/exo-ecms-ext-workflow-bp-bonita-payraise-2.3.0-GA.jar</string></value>

                 <value><string>/exo-ecms-ext-workflow-bp-bonita-holiday-2.3.0-GA.jar</string></value>

                 </collection>

               </field>

             </object>

           </object-param>

         </init-params>

       </component-plugin>

     </external-component-plugins>

In which:

- target component: `org.exoplatform.services.workflow.WorkflowServiceContainer`

- name: `deploy.predefined.processes`

- set-method: `addPlugin`

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

### PublicationPlugin

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

### QueryPlugin

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

- Target Component: `org.exoplatform.services.cms.queries.QueryService`

- Name: `predefinedTaxonomyPlugin`

- Set-method: `setQueryPlugin`

- Type: `org.exoplatform.services.cms.queries.impl.QueryPlugin`

Value param | Possible value | Default value | Description
--- | --- | --- | ---
`autoCreateInNewRepository` | `boolean` | `true` |
`repository` | `string` | `repository` | repository to the target node.

Object param | Possible value | Default value | Description
--- | --- | --- | ---
`CreatedDocuments` | `string` | `:/platform/users` | documents created by the current user.
`AllArticles` | `string` | `:/platform/users` | All articles.
`CreatedDocumentsDayBefore` | `string` | `:/platform/users` | documents created on the day before.

### RemovePortalPlugin

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

### ScriptActionPlugin

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

### ScriptPlugin

#### Fields

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

Name | Type | Default Value | Description |
resources | `array list` | `java.util.ArrayList` | The list of resources. |
name | `string` | - | The resource name. |

#### 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:

- Target-component: `org.exoplatform.services.cms.scripts.ScriptService`

- Name: `manage.script.plugin`

- Set-method: `addScriptPlugin`

- Type: `org.exoplatform.services.cms.scripts.impl.ScriptPlugin`

### StageAndVersionPublicationPlugin

#### Fields

Object type: org.exoplatform.services.cache.ExoCacheConfig

Name | Type | Default Value | Description
--- | --- | --- | ---
name | `string` | `wcm.compose` | The name of the cache which must be unique.
maxSize | `string` | `200` | The max size of the cache object.
liveTime | `string` | `600` | The time interval.
implementation | `string` | `org.exoplatform.services.cache.concurrent.ConcurrentFIFOExoCache` | The algorithm that is used to handle the cache.

#### Sample configuration

    <external-component-plugins>

      <target-component>org.exoplatform.services.cache.CacheService</target-component>

      <component-plugin>

        <name>addExoCacheConfig</name>

        <set-method>addExoCacheConfig</set-method>

        <type>org.exoplatform.services.cache.ExoCacheConfigPlugin</type>

        <description>Configures the cache for query service</description>

        <init-params>

          <object-param>

            <name>cache.config.wcm.composer</name>

            <description>The default cache configuration</description>

            <object type="org.exoplatform.services.cache.ExoCacheConfig">

              <field name="name">

                <string>wcm.composer</string>

              </field>

              <field name="maxSize">

                <int>300</int>

              </field>

              <field name="liveTime">

                <long>600</long>

              </field>

              <field name="distributed">

                <boolean>false</boolean>

              </field>

              <field name="implementation">

                <string>org.exoplatform.services.cache.concurrent.ConcurrentFIFOExoCache</string>

              </field>

            </object>

          </object-param>

        </init-params>

      </component-plugin>

    </external-component-plugins>

    <external-component-plugins>

      <target-component>org.exoplatform.services.wcm.core.WebSchemaConfigService</target-component>

      <component-plugin>

        <name>StageAndVersionPublicationHandler</name>

        <set-method>addWebSchemaHandler</set-method>

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

      </component-plugin>

    </external-component-plugins>

    <external-component-plugins>

      <target-component>org.exoplatform.services.listener.ListenerService</target-component>

      <component-plugin>

        <name>org.exoplatform.portal.config.DataStorage.pageCreated</name>

        <set-method>addListener</set-method>

        <type>org.exoplatform.services.wcm.publication.listener.page.CreatePageEventListener</type>

        <description>this listener update publication state of content when page is created</description>

      </component-plugin>

      <component-plugin>

        <name>org.exoplatform.portal.config.DataStorage.pageUpdated</name>

        <set-method>addListener</set-method>

        <type>org.exoplatform.services.wcm.publication.listener.page.UpdatePageEventListener</type>

        <description>this listener update publication state of content when page is updated</description>

      </component-plugin>

      <component-plugin>

        <name>org.exoplatform.portal.config.DataStorage.pageRemoved</name>

        <set-method>addListener</set-method>

        <type>org.exoplatform.services.wcm.publication.listener.page.RemovePageEventListener</type>

        <description>this listener update publication state of content when page is removed</description>

      </component-plugin>

      <component-plugin>

        <name>org.exoplatform.portal.config.DataStorage.navigationUpdated</name>

        <set-method>addListener</set-method>

        <type>org.exoplatform.services.wcm.publication.listener.navigation.UpdateNavigationEventListener</type>

        <description>this listener update publication state of content when navigation is updated</description>

      </component-plugin>

      <component-plugin>

        <name>org.exoplatform.portal.config.DataStorage.navigationRemoved</name>

        <set-method>addListener</set-method>

        <type>org.exoplatform.services.wcm.publication.listener.navigation.RemoveNavigationEventListener</type>

        <description>this listener update publication state of content when navigation is removed</description>

      </component-plugin>

    </external-component-plugins>

    <external-component-plugins>

      <target-component>org.exoplatform.services.listener.ListenerService</target-component>

      <component-plugin>

        <name>CmsService.event.postCreate</name>

        <set-method>addListener</set-method>

        <type>org.exoplatform.services.wcm.publication.listener.post.PostCreateContentEventListener</type>

        <description>this listener will force the created document enroll to publication lifecycle</description>

      </component-plugin>

      <component-plugin>

        <name>CmsService.event.postEdit</name>

        <set-method>addListener</set-method>

        <type>org.exoplatform.services.wcm.publication.listener.post.PostEditContentEventListener</type>

        <description>this listener will change state of document to draft after editing</description>

      </component-plugin>

      <component-plugin>

        <name>FormGenerator.event.postCreate</name>

        <set-method>addListener</set-method>

        <type>org.exoplatform.services.wcm.publication.listener.post.PostCreateNodeTypeEventListener</type>

        <description>this listener will reinit the composer templates list when creating a new nodetype</description>

      </component-plugin>

    </external-component-plugins>

In which:

- target component: `org.exoplatform.services.cache.CacheService`

- name: `addExoCacheConfig`

- set method: `addExoCacheConfig`

- type `org.exoplatform.services.cache.ExoCacheConfigPlugin`

.

- target component: `org.exoplatform.services.wcm.core.WebSchemaConfigService`

- name: `StageAndVersionPublicationHandler`

- set method: `addExoCacheConfig`

- type `org.exoplatform.services.cache.ExoCacheConfigPlugin`

.

- target component: `org.exoplatform.services.listener.ListenerService`

- name: `org.exoplatform.portal.config.DataStorage.pageCreated`

- set method: `addListener`

- type `org.exoplatform.services.wcm.publication.listener.page.CreatePageEventListener`

.

- target component: `org.exoplatform.services.listener.ListenerService`

- name: `org.exoplatform.portal.config.DataStorage.pageCreated`

- set method: `addListener`

- type `org.exoplatform.services.wcm.publication.listener.post.PostCreateContentEventListener`

### TagPermissionPlugin

#### Fields

object type org.exoplatform.services.cms.folksonomy.impl.TagPermissionConfig

Name | Type | Default Value | Description
--- | --- | --- | ---
tagPermissionList | `array list` | `:/platform/administrators` | The users/groups that have the permission.

#### 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:

- Target-component: `org.exoplatform.services.cms.folksonomy.NewFolksonomyService`

- Name: `predefinedTagPermissionPlugin`

- Set-method: `addTagPermissionPlugin`

- Type: `org.exoplatform.services.cms.folksonomy.impl.TagPermissionPlugin`

### TagStylePlugin

#### Fields

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

Name | Type | Default Value | Description
--- | --- | --- | ---
autoCreatedInNewRepository | `boolean` | `true` | Specify whether the tag style is added automactically in new reposistory or not.
repository | `string` | `repository` | Name of the repository where the tag style is added.
tagStyleList | `array list` | `Array list` | The list of tag styles.

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

Name | Type | Default Value | 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.

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

- Target component: `org.exoplatform.services.cache.CacheService`

- Name: `addExoCacheConfig`

- Set-method: `addExoCacheConfig`

- Type: `org.exoplatform.services.cache.ExoCacheConfigPlugin`

### TaxonomyPlugin

#### Fields

Target Component: `org.exoplatform.services.cms.taxonomy.TaxonomyService`

Name: `predefinedTaxonomyPlugin`

Set-method: `addTaxonomyPlugin`

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

Value param | Type | Default value | Description
--- | --- | --- | ---
autoCreateInNewRepository | `Boolean` | `true` | Enable/Disable the creation of the taxonomies in the newly created repository.
repository | `String` | `repository` | Name of the repository where taxonomies are created.
workspace | `String` | `dms-system` | Name of the workspace where taxonomies are created.
treeName | `String` | `system` | Name of the taxonomy tree to be created.

Object param | Type | Default value | Description
--- | --- | --- | ---
permission.configuration | `String` | `org.exoplatform.services.cms.taxonomy.impl.TaxonomyConfig` | Access permission for the whole taxonomy tree.
predefined.actions | `string` | `org.exoplatform.services.cms.actions.impl.ActionConfig` | Predefined actions for the taxonomy tree root node.
taxonomy.configuration | `String` | `org.exoplatform.services.cms.taxonomy.impl.TaxonomyConfig` | Access permissions for each taxonomy in tree.

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

Name | Type | Description
--- | --- | ---
taxonomies | `java.util.ArrayList<TaxonomyConfig$Taxonomy>` | List of taxonomies to be configured with permission.

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

Name | Type | Default value | Description
--- | --- | --- | ---
name | `String` | `name` | Name of the taxonomy.
path | `String` | `cms` | Path to the taxonomy in the taxonomy tree.
permissions | `Arraylist` | `java.util.ArrayList<TaxonomyTreeDefaultUserPermission$Permission>` | List of permissions for users or groups to access the taxonomy.

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

Name | Type | Default value | Description
--- | --- | --- | ---
actions | `Arraylist` | `java.util.ArrayList<ActionConfig$TaxonomyAction>` | List of actions created for the taxonomy tree root node.

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

Field name | Type | Default value | Description
--- | --- | --- | ---
type | `String` | `exo:taxonomyAction` | Type of the action.
name | `String` | `taxonomyAction` | Name of the action.
description | `String` | `N/A` | Description of the action.
homePath | `String` | `dms-system:/exo:ecm/exo:taxonomyTrees/storage/System` | Location of node where the action node is stored.
targetWspace | `String` | `N/A` | When a new node is created in the node whose path is defined in the homePath field, it will be moved to a new location automatically. The target workspace is specified in this field.
targetPath | `String` | `collaboration` | When a new node is created in the node whose path is defined in homePath field, it will be moved to a new location automatically. The target path is specified in this field.
lifecyclePhase | `Arraylist` | `java.util.ArrayList<String>` | The life cycle phases, in which the action is activated.
roles | `String` | *:/platform/administrators | The users or groups only with whom the action is activated.
mixins | `Arraylist` | `java.util.ArrayList<ActionConfig$Mixin>` | List of node types that are affected by this action.

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

Field name | Type | Default value | Description
--- | --- | --- | ---
name | `String` | `mix:affectedNodeTypes` | Mixin node type name that will be added. The node type is used to store the affected node types.
properties | `String` | `exo:affectedNodeTypeNames=exo:article,exo:podcast,exo:sample,kfx:document,nt:file,rma:filePlan` | The name of the properties that store all the node types affected by the action.

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

            <name>predefined.actions</name>

            <description>description</description>

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

              <field name="actions">

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

                  <value>

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

                      <field name="type">

                        <string>exo:taxonomyAction</string>

                      </field>

                      <field name="name">

                        <string>taxonomyAction</string>

                      </field>

                      <field name="description">

                        <string/>

                      </field>

                      <field name="homePath">

                        <string>dms-system:/exo:ecm/exo:taxonomyTrees/storage/System</string>

                      </field>

                      <field name="targetWspace">

                        <string>collaboration</string>

                      </field>

                      <field name="targetPath">

                        <string>/Documents</string>

                      </field>

                      <field name="lifecyclePhase">

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

                          <value>

                            <string>node_added</string>

                          </value>

                        </collection>

                      </field>

                      <field name="roles">

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

          <object-param>

            <name>taxonomy.configuration</name>

            <description>configuration predefined taxonomies to inject in jcr</description>

            <object type="org.exoplatform.services.cms.taxonomy.impl.TaxonomyConfig">

              <field name="taxonomies">

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

                  <!-- cms taxonomy -->

                  <value>

                    <object type="org.exoplatform.services.cms.taxonomy.impl.TaxonomyConfig$Taxonomy">

                      <field name="name">

                        <string>cmsTaxonomy</string>

                      </field>

                      <field name="path">

                        <string>/cms</string>

                      </field>

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

        </init-params>

      </component-plugin>

    </external-component-plugins>

### TemplatePlugin

A template is a presentation to display the saved information.

Template service is used to select the right template corresponding to the saved content.

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 can not be edited. See details at ContentType.

#### Fields

##### Init-params

Configuration name | Data type | Default 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` | Location of stored templates.
repository | `String` | `repository` | Location of stored templates.
object-param | `Structure` | `N/A` | Configuration for each instance.

##### Object-param

Configuration name | Data type | Default Value | Description
--- | --- | --- | ---
name | `String` | `template.configuration` | The name of this configuration.
description | `String` | `configuration for the location of templates to inject in jcr` | Description of template instance.
object-type | `Structure` | `N/A` | Detailed configuration for each instance type.

Object-type defines all available template files, using the "collection type" configuration.

##### Object

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 name | Data type | Description
--- | --- | ---
nodetypeName | `String` | The name of template that is saved as a node in system.
documentTemplate | `Boolean` | Determine if the node type is a document type.
label | `String` | Visual display of the title for this node.

There are three further information related to the presentation of each template:

- `referencedView` : Determine how to display a view.

- `referencedDialog` : Determine how to display a dialog to input information.

- `referencedSkin` : Determine the stylesheet for displaying.

Each type includes some definitions as the `object type="org.exoplatform.services.cms.templates.impl.TemplateConfig$Template"` with the fields as the properties.

Field name | Data 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).

#### 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 start 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>

### WCMPublicationPlugin

#### Component configuration

Configuration name | Data type | Sample value | Description
--- | --- | --- | ---
key | `String` | `org.exoplatform.services.wcm.publication.WCMPublicationService` | Service class location.
type | `String` | `org.exoplatform.services.wcm.publication.WCMPublicationServiceImpl` | Service class's implementation location.
component-plugins | `Object` | N/A | The plugins that are used inside the component.
init-params | `Object` | N/A | The initial parameter that will be used inside the component.

##### Component-plugin configuration

- Description:

Configuration name | Data type | Sample value | Description
--- | --- | --- | ---
name | `String` | `Simple publication` | Name of component-plugin.
set-method | `String` | `addPublicationPlugin` | Set method to start using the plugin.
type | `String` | `org.exoplatform.services.wcm.publication.lifecycle.simple.SimplePublicationPlugin` | Class and location of plugin.

##### Init-params configuration

The parameter will be set in pair: name-value and will be placed inside the <value-param> object.

Configuration name | Data type | Sample value
--- | --- | ---
name | `String` | `useCache`
value | `String` | `true`

Also, the parameter can be set in an object, with further information which will be the object's properties.

Configuration name | Data type | Sample value | Description
--- | --- | --- | ---
name | `String` | `cache.config.wcm.composer` | The name of object.
description | `String` | N/A | The brief description about the object.
object | `Object` | N/A | This object will be passed to component as a parameter, this object includes fieldset properties.

#### external-component-plugins configuration

Configuration name | Data type | Sample value | Description
--- | --- | --- | ---
target-component | `String` | `org.exoplatform.services.wcm.core.WebSchemaConfigService<` | External plugin's class location.
component-plugin | `Object` | N/A | Configuration of component that will be used as a plugin.

#### Example

##### Component that use plugins example

Example of component using plugins.

    <component>

      <key>org.exoplatform.services.wcm.publication.WCMPublicationService</key>

      <type>org.exoplatform.services.wcm.publication.WCMPublicationServiceImpl</type>

      <component-plugins>

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

        <component-plugin>

          <name>Simple publication</name>

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

          <type>org.exoplatform.services.wcm.publication.lifecycle.simple.SimplePublicationPlugin</type>

          <description>This publication lifecycle publish a web content or DMS document to a portal page without version</description>

        </component-plugin>

      </component-plugins>

    </component>

##### Component with init-params example

    <component>

      <key>org.exoplatform.services.wcm.publication.WCMComposer</key>

      <type>org.exoplatform.services.wcm.publication.WCMComposerImpl</type>

      <init-params>

        <value-param>

          <name>useCache</name>

          <value>true</value>

        </value-param>

      </init-params>

    </component>

##### Sample configuration

    <external-component-plugins>

      <target-component>org.exoplatform.services.cache.CacheService</target-component>

      <component-plugin>

        <name>addExoCacheConfig</name>

        <set-method>addExoCacheConfig</set-method>

        <type>org.exoplatform.services.cache.ExoCacheConfigPlugin</type>

        <description>Configures the cache for query service</description>

        <init-params>

          <object-param>

            <name>cache.config.wcm.composer</name>

            <description>The default cache configuration</description>

            <object type="org.exoplatform.services.cache.ExoCacheConfig">

              <field name="name">

                <string>wcm.composer</string>

              </field>

              <field name="maxSize">

                <int>300</int>

              </field>

              <field name="liveTime">

                <long>600</long>

              </field>

              <field name="distributed">

                <boolean>false</boolean>

              </field>

              <field name="implementation">

                <string>org.exoplatform.services.cache.concurrent.ConcurrentFIFOExoCache</string>

              </field>

            </object>

          </object-param>

        </init-params>

      </component-plugin>

    </external-component-plugins>

### 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 service for deploying 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.

#### Fields

init-params

Element | Type | Description
--- | --- | ---
object-param | `Object` | The parameter which is an Object.

object-param

Element | Type | Default value | object-param
--- | --- | --- | ---
name | `String` | `ACME Logo data` | The name of this object parameter.
description | `String` | `Deployment Descriptor` | The description of this object parameter.
object | `Class` | `org.exoplatform.services.deployment.DeploymentDescriptor` | The object of this object parameter.

object

Attribute | Type | Default value | Description
--- | --- | --- | ---
type | `String` | `org.exoplatform.services.deployment.DeploymentDescriptor (*)` | The type of this object.

org.exoplatform.services.deployment.DeploymentDescriptor

Name | Type | Default 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.

org.exoplatform.services.deployment.DeploymentDescriptor$Target

Field | Type | Default value | Description
--- | --- | --- | ---
repository | `String` | `repository` | The repository of the target node.
repository | `String` | `repository` | The repository of the target node.
workspace | `String` | `collaboration` | The workspace of the target node.
nodePath | `String` | `/sites content/live/acme/web contents/site artifacts` | The path of the target node.

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

- Prev
- Up
- Home
- Next