eXo Platform 3.0

- Prev
- Next

## Chapter 2. Configuration

## Drives

A drive is like 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.

For shorter, a drive is the combination of :

- Path : the root folder of the drive.

- View : how we can see the contents (by list, thumbnails, coverflow, etc)

- Role : visible to everybody, a group or a single user

- Options : can we see hidden nodes ? can we create folders in this drive ?

### Fields

|  | org.exoplatform.services.cms.drives.DriveData
--- | --- | ---
name | `String` | Name of the drive, must be unique inside WCM
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
| example | `*:/platform/users`
icon | `String` | url to the icon
views | `String` | List of views you want to use
| example | `simple-view,admin-view`
viewPreferences | `Boolean` | "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 nodetype we can create as folders
| example | `nt:folder,nt:unstructured`
allowNodeTypesOnTree | `String` | Allows you to filter nodetypes in the navigation tree. Default value is "*" to show all content types
| example | `*`
|  | `exo:taxonomy`

We use the following structure 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 configuration.xml file as the following:

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

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

## Publication

### 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` |  | The plugins that is used inside the component
init-params | `Object` |  | The intitial parameter that will be used inside the component

#### component-plugin configuration

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

#### init-params configuration

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

- parameter also can be set in an object, with further infomation will be the object's properties.

Configuration name | Data type | Sample value | Description
--- | --- | --- | ---
name | `String` | cache.config.wcm.composer |
description | `String` |  |
object | `Object` |  | 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` |  | Configuration of component that will be used as a plugin

### Example

#### Component that use plugins example

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

#### external-component-plugins configuration example

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

## Deployment

When a site is created, normally the end-user want to see something in the page instead of a blank page, so we need this service for deployment some "default" contents like Banner, Footer, Navigation, Breadcrumb, ... There are too main case to use

- The site is created only one time when the database is clean.

- The site is created at runtime, when user use the core feature of GateIn portal.

### Fields

`init-params`

Element | Type | Default value | Description
--- | --- | --- | ---
object-param | `Object` | (see below) | The parameter which is an Object

`object-param`

Element | Type | Default value | object-param
--- | --- | --- | ---
name | `String` |  | The name of this object parameter
description | `String` |  | The description of this object parameter
object | `Class` | (see below) | 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 contains the imported node)
sourcePath | `String` |  | The absolute path of the XML file

`org.exoplatform.services.deployment.DeploymentDescriptor$Target`

Field | Type | Default value | Description
--- | --- | --- | ---
repository | `String` |  | The repository of the target node
workspace | `String` |  | The workspace of the target node
nodePath | `String` |  | The path of the target node

### Example of 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>
            </object>
          </object-param>
        </init-params>
      </component-plugin>
    </external-component-plugins>

## Taxonomies

Taxonomies are used to sort documents in order to ease searches when browsing documents online. The main idea behind that concept is to provide a multi dimensional set of paths to find a document. The best example is when you browse Yahoo news. 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. As you can imagine, taxonomies are stored in the JCR itself and we are using the JCR Reference functionality to provide that advanced ECM feature.

Managing the tree of taxonomies is very simple, you can copy/cut nodes and paste them. Of course you can add and remove 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 from the created documents.

### Fields

|  | org.exoplatform.services.cms.taxonomy.impl.TaxonomyTreeDefaultUserPermission
--- | --- | ---
permissions | `java.util.ArrayList<TaxonomyTreeDefaultUserPermission$Permission>` | List of default user permission to access the Taxonomy Tree

|  | org.exoplatform.services.cms.taxonomy.impl.TaxonomyTreeDefaultUserPermission$Permission
--- | --- | ---
identity | `String` | user name or user group.
read | `Boolean` | permission to read taxonomy tree.
addNode | `Boolean` | permission to add a node in taxonomy tree.
setProperty | `Boolean` | permission to set properties for node in taxonomy tree .
remove | `Boolean` | permission to remove node in taxonomy tree.

|  | org.exoplatform.services.cms.taxonomy.impl.TaxonomyPlugin
--- | --- | ---
autoCreateInNewRepository | `Boolean` | Enable/ Disable the creation of the taxonomies in new created repository.
repository | `String` | name of the repository where taxonomies are created.
workspace | `String` | name of the workspace where taxonomies are created.
treeName | `String` | name of the taxonomy tree to be created.
permission.configuration | `org.exoplatform.services.cms.taxonomy.impl.TaxonomyConfig` | access permission for the whole taxonomy tree
predefined.actions | `org.exoplatform.services.cms.actions.impl.ActionConfig` | predefined actions for the taxonomy tree root node.
taxonomy.configuration | `org.exoplatform.services.cms.taxonomy.impl.TaxonomyConfig` | access permissions for each taxonomy in tree.

|  | org.exoplatform.services.cms.taxonomy.impl.TaxonomyConfig
--- | --- | ---
taxonomies | `java.util.ArrayList<TaxonomyConfig$Taxonomy>` | list of taxonomy to be configured permission.

|  | org.exoplatform.services.cms.taxonomy.impl.TaxonomyConfig$Taxonomy
--- | --- | ---
name | `String` | name of the taxonomy.
path | `String` | path to the taxonomy in taxonomy tree.
permissions | `java.util.ArrayList<TaxonomyTreeDefaultUserPermission$Permission>` | list of permission for user or group to access the taxonomy

|  | org.exoplatform.services.cms.actions.impl.ActionConfig
--- | --- | ---
actions | `java.util.ArrayList<ActionConfig$TaxonomyAction>` | list of actions which are created for the taxonomy tree root node.

|  | org.exoplatform.services.cms.actions.impl.ActionConfig$TaxonomyAction
--- | --- | ---
type | `String` | type of the action.
name | `String` | name of the action.
description | `String` | description of the action.
homePath | `String` | location of node where the action node is stored.
targetWspace | `String` | 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 workspace is specified in this field.
targetPath | `String` | 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 | `java.util.ArrayList<String>` | the life cycle phases, in which the action is activated.
roles | `String` | the users or groups only with whom the action is activated.
mixins | `java.util.ArrayList<ActionConfig$Mixin>` | list of node types that are affected by this action.

|  | org.exoplatform.services.cms.actions.impl.ActionConfig$Mixin
--- | --- | ---
name | `String` | mixin node type name that will be added, whose responsibility is to store the affected node types.
properties | `String` | name of the properties that stores all the node types affected by the action.

### Sample Configuration

    <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>
              </collection>
            </field>
          </object>
        </object-param>
      </init-params>
      <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>
    </component>

## Nodetypes

Every node has a type. A node's type The names, types and other attributes of its child items. Node types can be used to define complex storage objects consisting of multiple sub nodes and properties, possibly many layers deep.

### Fields

|  | org.exoplatform.services.jcr.core.nodetype.ExtendedNodeTypeManager
--- | --- | ---
name | `String` | Name of the Node type, this field is required
isMixin | `boolean` | mixin type&nbsp;
hasOrderableChildNodes | `boolean` | Orderable childnodes
primaryItemName | `String` | Primary item name
suppertype | `String` | Name of supper type
propertyDefinition | `Object` | Define properties of node type

### Examples Nodetype configuration

The node definition should be placed in a special XML file (see DTD below) and declared in the service's configuration file to eXo component plugin mechanism, described as follows:

    	<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>jar:/conf/nodetypes-publication-config.xml</value>
    	      </values-param>
    	    </init-params>
    	  </component-plugin>
    	</external-component-plugins>

This is a Nodetype definition file format:

    <nodeTypes xmlns:nt="http://www.jcp.org/jcr/nt/1.0" xmlns:mix="http://www.jcp.org/jcr/mix/1.0"
      xmlns:jcr="http://www.jcp.org/jcr/1.0">
      <nodeType name="publication:publication" isMixin="true" hasOrderableChildNodes="false" primaryItemName="">
        <propertyDefinitions>
        	<propertyDefinition name="publication:lifecycleName" requiredType="String" autoCreated="false" mandatory="true"
            onParentVersion="COPY" protected="false" multiple="false">
            <valueConstraints/>
          </propertyDefinition>
          <propertyDefinition name="publication:currentState" requiredType="String" autoCreated="false" mandatory="true"
            onParentVersion="COPY" protected="false" multiple="false">
            <valueConstraints/>
          </propertyDefinition>
          <propertyDefinition name="publication:history" requiredType="String" autoCreated="false" mandatory="true"
            onParentVersion="COPY" protected="false" multiple="true">
            <valueConstraints/>
          </propertyDefinition>
        </propertyDefinitions>
      </nodeType>
    </nodeTypes>

## Views

A view can include many object parameters. Parameters are used to create default views, templates and actions of Manage view service. View allow administrators to customize many sort of views that can impact to users in exploring workspace. Each object-param have a type that is a class representing all properties of a view.

### Fields

org.exoplatform.services.cms.views.ViewConfig

Name | Type | Description
--- | --- | ---
name | `String` | view name, must be unique inside WCM
permissions | `String` | Visibility of the view based on eXo Rights
| example | `*:/platform/administrators`
template | `String` | Specify path to the template location
tabList | `java.util.ArrayList` | include a set of view names.

org.exoplatform.services.cms.views.ViewConfig$Tab

Name | Type | Description
--- | --- | ---
tabName | `String` | tab name that is not uniquely
button | `String` | These have to specify a set of view component names
| example | viewNodeType; viewPermissions; viewProperties; showJCRStructure

org.exoplatform.services.cms.views.TemplateConfig

Name | Type | Description
--- | --- | ---
type | `String` | Specify to a name that is truly a class representing all properties of a view.
name | `String` | These have to specify a set of view component names
warPath | `String` | Specify to a template location for viewing
| example | /ecm-explorer/SystemView.gtmpl

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

## Templates

### Application template

A template is an definition of presentation while displaying the saved information

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

#### Available configuration

##### init-params

Configuration name | Data type | Default Value | Description
--- | --- | --- | ---
autoCreateInNewRepository | `Boolean` | true | Allow the application automatically import predefined templated at start up of template service
storedLocation | `String` | war:/conf/dms-extension/dms/artifacts/templates | Location of stored templates
repository | `String` | repository | Location of stored templates
object-param | `Structure` |  | 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 localtion of templates to inject in jcr | Description of template instance
object-type | Structure |  | Details configuration for each instance type

Object type define all available template file, using the "collection type" configuration

##### object

type: name of each object type, it means the type of template, the further configurations for this type are define by the some specify fileds.

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 displaying of the title for this node

There are 3 further information related to presentation of each template, that is referencedView: Determine how to display to view. referencedDialog: Determine how to display a diaglog to input information. referencedSkin: Determine the style sheet for displaying.

Each type include some definition as an ﻿object type="org.exoplatform.services.cms.templates.impl.TemplateConfig$Template"with the fields as the properties.

Field name | Data type | Desciption
--- | --- | ---
templateFile | String | The location of the file store for the template's presentation
roles | String | Determine who can access this object (View/Dialog/CSS)

#### Example of configuration for an template

This bellow 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 NodeType.

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

### Nodetype template

## Views

A view can include many object parameters. Parameters are used to create default views, templates and actions of Manage view service. View allow administrators to customize many sort of views that can impact to users in exploring workspace. Each object-param have a type that is a class representing all properties of a view.

### Fields

org.exoplatform.services.cms.views.ViewConfig

Name | Type | Description
--- | --- | ---
name | `String` | view name, must be unique inside WCM
permissions | `String` | Visibility of the view based on eXo Rights
| example | `*:/platform/administrators`
template | `String` | Specify path to the template location
tabList | `java.util.ArrayList` | include a set of view names.

org.exoplatform.services.cms.views.ViewConfig$Tab

Name | Type | Description
--- | --- | ---
tabName | `String` | tab name that is not uniquely
button | `String` | These have to specify a set of view component names
| example | viewNodeType; viewPermissions; viewProperties; showJCRStructure

org.exoplatform.services.cms.views.TemplateConfig

Name | Type | Description
--- | --- | ---
type | `String` | Specify to a name that is truly a class representing all properties of a view.
name | `String` | These have to specify a set of view component names
warPath | `String` | Specify to a template location for viewing
| example | /ecm-explorer/SystemView.gtmpl

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

- Prev
- Up
- Home
- Next