eXo Platform 3.5

## Chapter 2. Applications

This chapter provides you a comprehensive view about portlet applications included in eXo Content. These portlet applications are packaged as Web application archives (WARs).

Also, you can specify the package of each portlet and its available preferences that allow you to extend the configuration choices for standard preferences defined in portlet.xml.

## Portlets

### Content Detail

The Content Detail portlet allows users to view the detail of a specific content.

This is an example of the Content Detail portlet used in eXo Content:

- Packaging: This portlet is packaged in the presentation.war file.

- The portlet class name: org.exoplatform.wcm.webui.scv.UISingleContentViewerPortlet

- Available preferences: When using this portlet, you can customize the following preferences:

Preference | Type | Value | Description
--- | --- | --- | ---
repository | `String` | `repository` | The repository where data are stored and maintained.
workspace | `String` | `collaboration` | The workspace where content is stored.
nodeIdentifier | `String` | `N/A` | The UUID or the path of content that you want to show.
ShowTitle | `Boolean` | `true` | Show the content title on the top of the portlet.
ShowDate | `Boolean` | `false` | Show the content date on the top of the portlet.
ShowOptionBar | `Boolean` | `false` | Show a bar with some actions (Print, Back).
ContextEnable | `Boolean` | `false` | Define if the portlet will use the parameter on URL as the path to content to display or not.
ParameterName | `String` | `content-id` | Define which parameter will be used to get the content's path.
ShowVote | `Boolean` | `false` | Show the result of voting for the displayed content.
ShowComments | `Boolean` | `false` | Show the existing comments of this content (if any).
sharedCache | `Boolean` | `true` | Define if the portlet will cache the displayed contents.

- Sample configuration

    <portlet-preferences>

      <preference>

        <name>repository</name>

        <value>repository</value>

        <read-only>false</read-only>

      </preference>

      <preference>

        <name>workspace</name>

        <value>collaboration</value>

        <read-only>false</read-only>

      </preference>

      <preference>

        <name>nodeIdentifier</name>

        <value>/myfolder/mycontent</value>

        <read-only>false</read-only>

      </preference>

      <preference>

        <name>ShowTitle</name>

        <value>true</value>

        <read-only>false</read-only>

      </preference>

      <preference>

        <name>ShowDate</name>

        <value>false</value>

        <read-only>false</read-only>

      </preference>

      <preference>

        <name>ShowOptionBar</name>

        <value>false</value>

        <read-only>false</read-only>

      </preference>

      <preference>

        <name>ShowPrintAction</name>

        <value>true</value>

        <read-only>false</read-only>

      </preference>

      <preference>

        <name>isQuickCreate</name>

        <value>false</value>

        <read-only>true</read-only>

      </preference>

      <preference>

        <name>ContextEnable</name>

        <value>false</value>

        <read-only>false</read-only>

      </preference>

      <preference>

        <name>ParameterName</name>

        <value>content-id</value>

        <read-only>false</read-only>

      </preference>

      <preference>

        <name>sharedCache</name>

        <value>true</value>

        <read-only>false</read-only>

      </preference>

    </portlet-preferences>

### Note

In WCM 2.3.0, some preferences are no longer used, for example, the ShowPrintAction preference.

### Content List

The Content List portlet shows a list of contents which already exist in the system.

This is an example of the Content List portlet used in eXo Content:

- Packaging: This porlet is packaged in the presentation.war file.

- The portlet class name: org.exoplatform.wcm.webui.clv.UICLVPortlet

- Available preferences: When using this portlet, you can customize the following preferences:

Preference | Type | Value | Description
--- | --- | --- | ---
mode | `String` | `AutoViewerMode` | The mode for displaying content of the portlet: all contents in a specific folder or all specific contents in the portlet.
folderPath | `String` |  | The path to the folder whose contents are displayed by this portlet.
orderBy | `String` | `publication:liveDate` | The property by which all the contents in the portlet are sorted.
orderType | `String` | `DESC` | The type of the content sort method: ascending or descending.
header | `String` |  | The header of the portlet which is displayed at the top of the portlet.
automaticDetection | `Boolean` | `true` | This value indicates whether the header of the portlet is selected to be the title of the folder given in the folderPath parameter (true value) or the value given in the header parameter above.
formViewTemplatePath | `String` | `/exo:ecm/views/templates/content-list-viewer/list/UIContentListPresentationDefault.gtmpl` | The path to the template used to display the contents in this portlet.
paginatorTemplatePath | `String` | `/exo:ecm/views/templates/content-list-viewer/paginators/UIPaginatorDefault.gtmpl` | The path to the paginator used to display the contents in this portlet.
itemsPerPage | `Integer` | 10 | The number of contents displayed in every "page" of the portlet.
showThumbnailsView | `Boolean` | `true` | This value indicates whether the content image in this portlet is shown or not.
showTitle | `Boolean` | `true` | This value indicates whether the content title in this portlet is shown or not.
showHeader | `Boolean` | `true` | This value indicates whether the content header in this portlet is shown or not.
showRefreshButton | `Boolean` | `false` | This value indicates whether the Refresh button is shown in this portlet or not.
showDateCreated | `Boolean` | `true` | This value indicates whether the content created date in this portlet is shown or not.
showReadmore | `Boolean` | `true` | This value indicates whether the Read more button is shown in every content of the portlet or not. After clicking this button, the user can read the whole text of the content.
showSummary | `Boolean` | `true` | This value indicates whether the content summary in this portlet is shown or not.
showLink | `Boolean` | `true` | If this value is `true`, the header of every content is also the link to view this content fully. If the value is `false`, the header is considered as a simple text.
showRssLink | `Boolean` | `true` | Show the RSS link of this portlet.
basePath | `String` | `detail` | Show the page in which the full content is displayed when the user clicks to the Read more button.
contextualFolder | `String` | `contextualDisable` | Enable/disable the contextual mode of the portlet. If enabled, the portlet can take the folder path indicated in the URL to display contents.
showScvWith | `String` | `content-id` | The parameter name which shows the folder path in URL when the Read more button is clicked.
showClvBy | `String` | `folder-id` | The parameter name which shows the folder path in URL.
sharedCache | `Boolean` | `true` | Define if the portlet will cache the displayed contents.

- Sample Configuration

    <portlet-preferences>

      <preference>

        <name>mode</name>

        <value>AutoViewerMode</value>

        <read-only>false</read-only>

      </preference>

      <preference>

        <name>folderPath</name>

        <value/>

        <read-only>false</read-only>

      </preference>

      <preference>

        <name>orderBy</name>

        <value>publication:liveDate</value>

        <read-only>false</read-only>

      </preference>

      <preference>

        <name>orderType</name>

        <value>DESC</value>

        <read-only>false</read-only>

      </preference>

      <preference>

        <name>header</name>

        <value/>

        <read-only>false</read-only>

      </preference>

      <preference>

        <name>automaticDetection</name>

        <value>true</value>

        <read-only>false</read-only>

      </preference>

      <preference>

        <name>formViewTemplatePath</name>

        <value>/exo:ecm/views/templates/content-list-viewer/list/UIContentListPresentationDefault.gtmpl</value>

        <read-only>false</read-only>

      </preference>

      <preference>

        <name>paginatorTemplatePath</name>

        <value>/exo:ecm/views/templates/content-list-viewer/paginators/UIPaginatorDefault.gtmpl</value>

        <read-only>false</read-only>

      </preference>

      <preference>

        <name>itemsPerPage</name>

        <value>10</value>

        <read-only>false</read-only>

      </preference>

      <preference>

        <name>showThumbnailsView</name>

        <value>true</value>

        <read-only>false</read-only>

      </preference>

      <preference>

        <name>showTitle</name>

        <value>true</value>

        <read-only>false</read-only>

      </preference>

      <preference>

        <name>showHeader</name>

        <value>true</value>

        <read-only>false</read-only>

      </preference>

      <preference>

        <name>showRefreshButton</name>

        <value>false</value>

        <read-only>false</read-only>

      </preference>

      <preference>

        <name>showDateCreated</name>

        <value>true</value>

        <read-only>false</read-only>

      </preference>

      <preference>

        <name>showReadmore</name>

        <value>true</value>

        <read-only>false</read-only>

      </preference>

      <preference>

        <name>showSummary</name>

        <value>true</value>

        <read-only>false</read-only>

      </preference>

      <preference>

        <name>showLink</name>

        <value>true</value>

        <read-only>false</read-only>

      </preference>

      <preference>

        <name>showRssLink</name>

        <value>true</value>

        <read-only>false</read-only>

      </preference>

      <preference>

        <name>basePath</name>

        <value>detail</value>

        <read-only>false</read-only>

      </preference>

      <preference>

        <name>contextualFolder</name>

        <value>contextualDisable</value>

        <read-only>false</read-only>

      </preference>

      <preference>

        <name>showScvWith</name>

        <value>content-id</value>

        <read-only>false</read-only>

      </preference>

      <preference>

        <name>showClvBy</name>

        <value>folder-id</value>

        <read-only>false</read-only>

      </preference>

      <preference>

        <name>sharedCache</name>

        <value>true</value>

        <read-only>false</read-only>

      </preference>

    </portlet-preferences>

### Search

The Search portlet allows users to do a search with any string. In eXo Content, there are three types of search: quick search, advanced search and search with saved queries.

The users can find this porlet in the front page. This is an example of the Search portlet used in eXo Content:

- Packaging: This portlet is packaged in the searches.war file.

- The portlet class name: org.exoplatform.wcm.webui.search.UIWCMSearchPortlet

- Available preferences: When using this portlet, you can customize the following preferences:

Preference | Type | Value | Description
--- | --- | --- | ---
repository | `string` | `repository` | The place where data are stored and maintained.
workspace | `string` | `collaboration` | The workspace where the content is stored.
searchFormTemplatePath | `string` | /exo:ecm/views/templates/WCM Advance Search/search-form/UIDefaultSearchForm.gtmpl{noformat} | The path to the search form template.
searchResultTemplatePath | `string` | /exo:ecm/views/templates/WCM Advance Search/search-result/UIDefaultSearchResult.gtmpl{noformat} | The path to the search result template.
searchPaginatorTemplatePath | `string` | /exo:ecm/views/templates/WCM Advance Search/search-paginator/UIDefaultSearchPaginator.gtmpl{noformat} | The path to the search paginator template.
searchPageLayoutTemplatePath | `string` | /exo:ecm/views/templates/WCM Advance Search/search-page-layout/UISearchPageLayoutDefault.gtmpl{noformat} | The path to the search page template.
itemsPerPage | `Integer` | 5 | The number of items for each page.
showQuickEditButton | `boolean` | `true` | Show or hide the quick edit icon.
basePath | `string` | `parameterizedviewer` | The page which is used to display the search result.

- Sample configuration

    <portlet-preferences>

      <preference>

        <name>repository</name>

        <value>repository</value>

        <read-only>false</read-only>

      </preference>

      <preference>

        <name>workspace</name>

        <value>collaboration</value>

        <read-only>false</read-only>

      </preference>

      <preference>

        <name>searchFormTemplatePath</name>

        <value>/exo:ecm/views/templates/WCM Advance Search/search-form/UIDefaultSearchForm.gtmpl</value>

        <read-only>false</read-only>

      </preference>

      <preference>

        <name>searchResultTemplatePath</name>

        <value>/exo:ecm/views/templates/WCM Advance Search/search-result/UIDefaultSearchResult.gtmpl</value>

        <read-only>false</read-only>

      </preference>

      <preference>

        <name>searchPaginatorTemplatePath</name>

        <value>/exo:ecm/views/templates/WCM Advance Search/search-paginator/UIDefaultSearchPaginator.gtmpl</value>

        <read-only>false</read-only>

      </preference>

      <preference>

        <name>searchPageLayoutTemplatePath</name>

        <value>/exo:ecm/views/templates/WCM Advance Search/search-page-layout/UISearchPageLayoutDefault.gtmpl</value>

        <read-only>false</read-only>

      </preference>

      <preference>

        <name>itemsPerPage</name>

        <value>5</value>

        <read-only>false</read-only>

      </preference>

      <preference>

        <name>showQuickEditButton</name>

        <value>true</value>

        <read-only>false</read-only>

      </preference>

      <preference>

        <name>basePath</name>

        <value>parameterizedviewer</value>

        <read-only>false</read-only>

      </preference>

    </portlet-preferences>

### Content Explorer

The Content Explorer portlet is used to manage all documents in different drives. With this portlet, users can do many different actions depending on their roles, such as adding/deleting a category and a document, showing/hiding a node, managing publication, and more.

This is an example of the Content Explorer portlet used in eXo Content:

- Packaging: The porlet is packaged in the ecmexplorer.war file.

- The portlet class name: org.exoplatform.ecm.webui.component.explorer.UIJCRExplorerPortlet

- Available preferences: When using this portlet, you can customize the following preferences:

Preference | Type | Value | Description
--- | --- | --- | ---
repository | `string` | `repository` | The repository name which is used in an instance of Content Explorer.
workspace | `string` | `N/A` | Not in use. The workspace name was included in the Drive.
path | `string` | `N/A` | The path of the node. This preference will be used when the selected usecase is Parameterize.
drive | `string` | `N/A` | Not in use. Replaced by the driveName preference.
views | `string` | `N/A` | Not in use. The views will be displayed basing on the Drive which the user has the access permission.
allowCreateFolders | `string` | `N/A` | Allow creating a folder by type. When you do not specify the value, the default value will be nt:unstructured, nt:folder.
categoryMandatoryWhenFileUpload | `boolean` | false | Force a user to add a category when uploading or creating a document.
uploadFileSizeLimitMB | `float` | 150 | The maximum size of a file that is uploaded to the system (MB).
usecase | `string` | `selection` | The behavior to access Content Explorer. By default, the "selection" option is configured. Besides "selection", there are four other ways to configure the Content Explorer: Jailed, Personal, Social, Parameterize.
driveName | `string` | `private` | The name of drive which the user wants to access.
trashHomeNodePath | `string` | `/Trash` | The location to store the deleted nodes.
trashRepository | `string` | `repository` | The name of the repository where stores the deleted nodes.
trashWorkspace | `string` | `collaboration` | The name of the workspace where stores the deleted nodes.
editInNewWindow | `boolean` | `false` | Allow editing documents with or without a window popup.
showTopBar | `boolean` | `true` | Allow showing the Top bar or not.
showActionBar | `boolean` | `true` | Allow showing the Action bar or not.
showSideBar | `boolean` | `true` | Allow showing the Side bar or not.
showFilterBar | `boolean` | `true` | Allow showing the Filter bar or not.

- Sample Configuration

    <portlet-preferences>

      <preference>

        <name>repository</name>

        <value>repository</value>

        <read-only>false</read-only>

      </preference>

      <preference>

        <name>workspace</name>

        <value/>

        <read-only>false</read-only>

      </preference>

      <preference>

        <name>path</name>

        <value/>

        <read-only>false</read-only>

      </preference>

      <preference>

        <name>drive</name>

        <value/>

        <read-only>false</read-only>

      </preference>

      <preference>

        <name>views</name>

        <value/>

        <read-only>false</read-only>

      </preference>

      <preference>

        <name>allowCreateFolders</name>

        <value/>

        <read-only>false</read-only>

      </preference>

      <preference>

        <name>categoryMandatoryWhenFileUpload</name>

        <value>false</value>

        <read-only>false</read-only>

      </preference>

      <preference>

        <name>uploadFileSizeLimitMB</name>

        <value>150</value>

        <read-only>false</read-only>

      </preference>

      <preference>

        <name>usecase</name>

        <value>selection</value>

        <read-only>false</read-only>

      </preference>

      <preference>

        <name>driveName</name>

        <value>Private</value>

        <read-only>false</read-only>

      </preference>

      <preference>

        <name>trashHomeNodePath</name>

        <value>/Trash</value>

        <read-only>false</read-only>

      </preference>

      <preference>

        <name>trashRepository</name>

        <value>repository</value>

        <read-only>false</read-only>

      </preference>

      <preference>

        <name>trashWorkspace</name>

        <value>collaboration</value>

        <read-only>false</read-only>

      </preference>

      <preference>

        <name>editInNewWindow</name>

        <value>false</value>

        <read-only>false</read-only>

      </preference>

      <preference>

        <name>showTopBar</name>

        <value>true</value>

        <read-only>false</read-only>

      </preference>

      <preference>

        <name>showActionBar</name>

        <value>true</value>

        <read-only>false</read-only>

      </preference>

      <preference>

        <name>showSideBar</name>

        <value>true</value>

        <read-only>false</read-only>

      </preference>

      <preference>

        <name>showFilterBar</name>

        <value>true</value>

        <read-only>false</read-only>

      </preference>

    </portlet-preferences>

### Administration

The Administration portlet is used to manage the main ECM functions, including categories and tags, content presentation, types of content and advanced configuration.

This is an example of the Administration portlet used in eXo Content:

- Packaging: This portlet is packaged in the ecmadmin.war file.

- The portlet class name: org.exoplatform.ecm.webui.component.admin.UIECMAdminPortlet

- Available preferences: When using this portlet, you can customize the following preference:

Preference | Type | Value | Description
--- | --- | --- | ---
repository | `string` | `Repository` | The name of the current repository.

- Sample Configuration

    <portlet-preferences>

      <preference>

        <name>repository</name>

        <value>repository</value>

        <read-only>false</read-only>

      </preference>

    </portlet-preferences>

### Fast Content Creator

The Fast Content Creator portlet consists of two modes: Standard Content Creator and Basic Content Creator. This portlet allows users to quickly create contents without accessing the Content Explorer portlet.

This is an example of the Fast Content Creator portlet used in eXo Content:

By default, this porlet is applied for the Contact Us portlet in eXo Content.

- Packaging: This portlet is packaged in the formgenerator.war file.

- The portlet class name: org.exoplatform.wcm.webui.fastcontentcreator.UIFCCPortlet

- Available preferences: When using this portlet, you can customize the following preferences:

Preference | Type | Value | Description
--- | --- | --- | ---
mode | `string` | `basic` | The default mode of the Fast Content Creator portlet.
repository | `string` | `repository` | The name of the current repository.
workspace | `string` | `collaboration` | The workspace where the content is stored.
path | `string` | `/Groups/platform/users/Documents` | The destination path where the content is stored.
type | `string` | `exo:article` | The node type of document which is shown on the dialog form.
saveButton | `string` | `Save` | The custom button: Save.
saveMessage | `string` | `This node has been saved successfully` | The custom message when the user clicks the Save button.
isRedirect | `boolean` | `false` | Specify whether redirecting to another page or not.
redirectPath | `string` | http://www.google.com.vn | The path to which the page will redirect.
isActionNeeded | `boolean` | `true` | Specify whether an action is needed to save to the configuration or not.

- Sample Configuration

    <portlet-preferences>

      <preference>

        <name>mode</name>

        <value>basic</value>

        <read-only>true</read-only>

      </preference>

      <preference>

        <name>repository</name>

        <value>repository</value>

        <read-only>false</read-only>

      </preference>

      <preference>

        <name>workspace</name>

        <value>collaboration</value>

        <read-only>false</read-only>

      </preference>

      <preference>

        <name>path</name>

        <value>/Groups/platform/users/Documents</value>

        <read-only>false</read-only>

      </preference>

      <preference>

        <name>type</name>

        <value>exo:article</value>

        <read-only>false</read-only>

      </preference>

      <preference>

        <name>saveButton</name>

        <value>Save</value>

        <read-only>false</read-only>

      </preference>

      <preference>

        <name>saveMessage</name>

        <value>This node has been saved successfully</value>

        <read-only>false</read-only>

      </preference>

      <preference>

        <name>isRedirect</name>

        <value>false</value>

        <read-only>false</read-only>

      </preference>

      <preference>

        <name>redirectPath</name>

        <value>http://www.google.com.vn</value>

        <read-only>false</read-only>

      </preference>

      <preference>

        <name>isActionNeeded</name>

        <value>true</value>

        <read-only>true</read-only>

      </preference>

    </portlet-preferences>

### Form Builder

### Note

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

The Form Builder portlet allows users to create node types and document templates for node types.

This is an example of the Form Builder portlet used in eXo Content:

- Packaging: This porlet is packaged in the formgenerator.war file.

- The portlet class name: org.exoplatform.wcm.webui.formgenerator.UIFormGeneratorPortlet

- Available preferences: When using this portlet, you can customize the following preference:

Preference | Type | Value | Description
--- | --- | --- | ---
repository | `string` | `repository` | The current repository name which is always "repository".

- Sample Configuration

    <portlet-preferences>

      <preference>

        <name>repository</name>

        <value>repository</value>

        <read-only>false</read-only>

      </preference>

    </portlet-preferences>

### Authoring

The Authoring portlet allows users to manage contents in draft and ones which need to be approved or published.

This is an example of the Authoring portlet used in eXo Content:

- Packaging: This porlet is packaged in the authoring-apps.war{noformat} file.

- The portlet class name: org.exoplatform.wcm.webui.authoring.UIWCMDashboardPortlet

- Available preferences: When using this portlet, you can customize the following preferences:

Preference | Type | Value | Description
--- | --- | --- | ---
repository | `string` | `Repository` | The name of the repository.
workspace | `string` | `Collaboration` | The name of the workspace.
drive | `string` | `Collaboration` | The name of the drive.

- Sample Configuration

    <portlet-preferences>

      <preference>

        <name>repository</name>

        <value>repository</value>

        <read-only>true</read-only>

      </preference>

      <preference>

        <name>workspace</name>

        <value>collaboration</value>

        <read-only>false</read-only>

      </preference>

      <preference>

        <name>drive</name>

        <value>collaboration</value>

        <read-only>false</read-only>

      </preference>

    </portlet-preferences>

### Newsletter

### Note

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

The Newsletter portlet is used to help users quickly get the updated newsletter from a site.

This is an example of the Newsletter portlet used in eXo Content:

- Packaging: This portlet is packaged in the newsletter.war file.

- The portlet class name: org.exoplatform.wcm.webui.newsletter.manager.UINewsletterManagerPortlet

### SEO portlet

The SEO portlet allows users to manage SEO data of web content and web pages, so they can maximize their website position on search engines.

This is an example of the SEO portlet used in eXo Content:

- Packaging: This porlet is packaged in the seo.war file.

- The portlet class name: org.exoplatform.wcm.webui.seo.UISEOToolbarPortlet