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.
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: allow us to specify whether to see hidden nodes or not and to create folders in this drive or not.
Object type: org.exoplatform.services.cms.drives.DriveData
| Field name | Type | Description |
|---|---|---|
| name | String | Name of the drive. It 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 | 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 nodet ype we can create as folders. For example: nt:folder,nt:unstructured |
| allowNodeTypesOnTree | String | Allows you to filter node types in the navigation tree. For example, the default value is "*" to show all content types |
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 the configuration.xml file as the following:
<import>war:/conf/wcm-extension/dms/drives-configuration.xml</import>
<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>
| 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 intitial parameter that will be used inside the component |
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 plugin |
| type | String | org.exoplatform.services.wcm.publication.lifecycle.simple.SimplePublicationPlugin | Class and location of plugin |
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 information will be the object's properties.
| Configuration name | Data type | Sample value | Description |
|---|---|---|---|
| name | String | cache.config.wcm.composer | The name of the 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 |
| 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 |
<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>
<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>
<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>
When a site is created, normally the end-user wants to see something in the page instead of a blank page, so we need this service for deployment of some "default" contents like Banner, Footer, Navigation, Breadcrumb, etc.
There are two main cases to use:
The site is created only one time when the database is clean.
The site is created at runtime, when a user uses the core feature of GateIn portal.
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 contains 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 allows to cleanup the publication lifecycle in the target folder after importing the data. true: allow false:not allow |
org.exoplatform.services.deployment.DeploymentDescriptor$Target
| Field | Type | Default value | Description |
|---|---|---|---|
| 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 |
<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="cleanupPublication">
<boolean>true</boolean>
</field>
</object>
</object-param>
</init-params>
</component-plugin>
</external-component-plugins>
Taxonomies are used to sort documents 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 to the created documents.
Object type: org.exoplatform.services.cms.taxonomy.impl.TaxonomyTreeDefaultUserPermission
| Field name | Collection type | Description |
|---|---|---|
| permissions | java.util.ArrayList<TaxonomyTreeDefaultUserPermission$Permission> | List of default user permission 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
| user name or user group. |
| read | Boolean |
true
| permission to read the taxonomy tree. |
| addNode | Boolean | true
| permission to add a node in the taxonomy tree. |
| setProperty | Boolean |
true
| permission to set properties for a node in the taxonomy tree . |
| remove | Boolean | true
| permission to remove a node from the taxonomy tree. |
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 new 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 taxonomy to be configured 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 taxonomy tree. |
| permissions |
Arraylist
| java.util.ArrayList<TaxonomyTreeDefaultUserPermission$Permission> | list of permissions for user or group 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 which are 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 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, whose responsibility is 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. |
<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>
Every node has a type. Node types can be used to define complex storage objects consisting of multiple sub-nodes and properties, possibly many deep layers.
org.exoplatform.services.jcr.core.nodetype.ExtendedNodeTypeManager
| Node Type | Type | Description |
|---|---|---|
| name | String | Name of the node type. This field is required |
| isMixin | boolean | mixin type |
| hasOrderableChildNodes | boolean | Orderable childnodes |
| primaryItemName | String | Primary item name |
| suppertype | String | Name of supper type |
| propertyDefinition | Object | Define properties of node type |
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>
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.
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 the view. It 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 the tab. It 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. |
<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>
A template is a presentation while displaying the saved information.
Template service is used to select the right template corresponding to the saved content.
| 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 | Configuration for each instance. |
| 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 | Details configuration for each instance type |
Object-type defines all available template files, using the "collection type" configuration
type: It is the name of each object type. It means the type of template, the further configurations for this type are defined by some specified fields.
| Field 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 an 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) |
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 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>
SiteSearchService 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>...</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.
ExcludeMimeTypes is used in the SiteSearchService component to filter the search results before these results are presented on the search page.
Set-method: addExcludeIncludeDataTypePlugin
Type: org.exoplatform.services.wcm.search.ExcludeIncludeDataTypePlugin
| Properties-Params | 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. |
<component>
<key>org.exoplatform.services.wcm.search.SiteSearchService</key>
<type>org.exoplatform.services.wcm.search.SiteSearchServiceImpl</type>
<component-plugins>
<component-plugin>
<name>ExcludeMimeTypes</name>
<set-method>addExcludeIncludeDataTypePlugin</set-method>
<type>org.exoplatform.services.wcm.search.ExcludeIncludeDataTypePlugin</type>
<init-params>
<properties-param>
<name>search.exclude.datatypes</name>
<description>exclude some data type when search</description>
<property name="mimetypes" value="text/css,text/javascript,application/x-javascript,text/ecmascript"/>
</properties-param>
</init-params>
</component-plugin>
</component-plugins>
<init-params>
<value-param>
<name>isEnabledFuzzySearch</name>
<value>true</value>
</value-param>
<value-param>
<name>fuzzySearchIndex</name>
<value/>
</value-param>
</init-params>
</component>