eXo Platform 3.5

## Chapter 1. Applications

This chapter provides you with a comprehensive view about applications in Knowledge, including:

- Portlets

  Details (package, portlet.xml, and portlet preferences) of all portlets used in Knowledge, including Forum, Answers, FAQ and Polls.

- Gadgets

  Introduction to Poll Gadget, its preferences and links to used REST services.

These applications are packaged as Web application archives (WARs).

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

## 1.1. Portlets

- Forum Portlet

  Details (including package, portlet.xml, preferences and events) of the Forum application which allows posting and reading messages on different topics.

- Answers Portlet

  Details (including package, portlet.xml, preferences) of the Answers application that allows creating answers, replying and managing questions.

- FAQ Portlet

  Details (including package, portlet.xml, preferences) of the FAQ application which allows showing questions and answers.

- Polls Portlet

  Details (including package, portlet.xml, preferences) of the Poll application which allows voting any ideas, or activities.

`See also`

- Gadgets

### 1.1.1. Forum Portlet

The Forum portlet is the application for users to post and read messages on different topics.

Package

This portlet is packaged in the forum.war file.

Portlet.xml

- See the portlet.xml file in the project following this path: forum/WEB-INF/portlet.xml.

Preferences

Preference name | Possible value | Default value | Description
--- | --- | --- | ---
useAjax | `true`, `false` | `true` | Define if links in the Forum will be plain hrefs or javascript ajax (better for SEO) or not.
showForumActionBar | `true`, `false` | `true` | This is the UIForumActionBar. If the value is set to "true", the UIForumActionBar will be shown. If false, the UIForumActionBar will be hidden.
forumNewPost | `day number` | `1` | Specify if a post is new. If the post is created within the set period, it is new in the Forum.
enableIPLogging | `true`, `false` | `true` | Enable the IP logging function in the Forum. IP addresses of all posts will be collected.
enableIPFiltering | `true`, `false` | `true` | Enable the IP filter function in Forum, enabling IP addresses to be blocked in the Forum.
invisibleCategories | `id categories` | `empty` | Hide some categories. If the value is set empty, all categories of the Forum will be shown.
invisibleForums | `id forums` | `empty` | Hide some Forums. All Forums will be shown if the value is set empty.
uploadFileSizeLimitMB | `integer` | `20` | Limit the size of uploaded files in MB in the Forum.
isShowForumJump | `true`, `false` | `true` | Specify if the Forum jump panel is shown or not.
isShowIconsLegend | `true`, `false` | `true` | Specify if the icon legends panel is shown or not.
isShowModerators | `true`, `false` | `true` | Specify if the moderators panel is shown or not.
isShowPoll | `true`, `false` | `true` | Specify if the poll panel is shown or not.
isShowQuickReply | `true`, `false` | `true` | Specify if the quick reply panel is shown or not.
isShowRules | `true`, `false` | `true` | Specify if the forum rules panel is shown or not.
isShowStatistics | `true`, `false` | `true` | Specify if the statistics panel is shown or not.

Events

Name | Description
--- | ---
ForumLinkEvent | Set the render for UIForumLinkPortlet and set values for UIForumLinks.
ReLoadPortletEvent | Reload UIForumPortlet.
OpenLink | Update values for UIForumLinks.
ForumPollEvent | Set the render for UIForumPollPortlet.
ForumModerateEvent | Set the render for UIForumModeratorPortlet.
ForumRuleEvent | Set the render for UIForumRulePortlet.
QuickReplyEvent | Set the render for UIForumQuickReplyPortlet.

ForumLinkEvent This event is fired through UIForumLinkPortlet.

To receive ForumLinkEvent, you must use the ForumParameter class with two properties:

Name | Type | Possible value | Description
--- | --- | --- | ---
isRenderForumLink | `boolean` | true/false | If the value is set to true or false, the Forum link is rendered or not respectively.
path | `string` | The absolute path of the class node (including types: category, forum, topic) defined by JCR. | Set data for the UIForumLinkPortlet.

For example:

    PortletRequestContext pcontext = (PortletRequestContext) WebuiRequestContext.getCurrentInstance();

    ActionResponse actionRes = (ActionResponse) pcontext.getResponse();

    ForumParameter param = new ForumParameter();

    String path = forum.getPath();

    if ( ...condition to render the UIForumLinkPortlet... ) {

      param.setRenderForumLink(true);

      param.setPath(path);

    } else {

      param.setRenderForumLink(false);

    }

    actionRes.setEvent(new QName("ForumLinkEvent"), param) ;

ReLoadPortletEvent This event is fired through UIForumPortlet.

To receive ReLoadPortletEvent, you must use the ForumParameter class with two properties:

Name | Type | Possible value | Description
--- | --- | --- | ---
topicId | `string` | Id of topic. | Return the id of topic for UIForumPortlet
isRenderPoll | `boolean` | true/false | If the value is set to true or false, the UITopicPoll component is rendered or not respectively.

For example:

    ....

    ActionResponse actionRes = pcontext.getResponse() ;

    ForumParameter param = new ForumParameter() ;

    param.setRenderPoll(true);

    param.setTopicId(topic.get());

    actionRes.setEvent(new QName("ReLoadPortletEvent"), param) ;

    ....

OpenLink This event is fired through UIForumPortlet.

To receive OpenLink, you must use the ForumParameter class with one property:

Name | Type | Possible value | Description
--- | --- | --- | ---
path | `string` | The absolute path of the node defined by JCR. | Set data for the UIForumPortlet.

For example:

    ....

    ActionResponse actionRes = pcontext.getResponse() ;

    ForumParameter param = new ForumParameter() ;

    param.setPath(path);

    actionRes.setEvent(new QName("OpenLink"), param) ;

    ....

ForumPollEvent This event is fired through UIForumPollPortlet.

To receive ForumPollEvent, you must use the ForumParameter class with four properties:

Name | Type | Possible value | Description
--- | --- | --- | ---
isRenderPoll | `boolean` | True/false | If the value is set to true or false, the UIForumPollPortlet portlet is rendered or not respectively.
categoryId | `string` | Id of category | Return the Id of category for UIForumPollPortlet.
forumId | `string` | Id of forum | Return the Id of forum for UIForumPollPortlet.
topicId | `string` | Id of topic | Return the Id of topic for UIForumPollPortlet.

For example:

    ....

    ActionResponse actionRes = pcontext.getResponse() ;

    ForumParameter param = new ForumParameter() ;

    param.setCategoryId(categoryId) ;

    param.setForumId(forumId);

    param.setTopicId(topicId);

    param.setRenderPoll(topic.getIsPoll());

    actionRes.setEvent(new QName("ForumPollEvent"), param);

    ....

ForumModerateEvent This event is fired through UIForumModeratePortlet.

To receive ForumModerateEvent, you must use the ForumParameter class with two properties:

Name | Type | Possible value | Description
--- | --- | --- | ---
isRenderModerator | `boolean` | True/false | If the value is set to true or false, the UIForumModeratePortlet portlet is rendered or not respectively.
moderator | `list of strings` | List of user name | Set data for UIForumModeratePortlet.

For example:

    ....

    List<String> moderators = Arays.asList(forum.getModerators());

    ActionResponse actionRes = pcontext.getResponse() ;

    ForumParameter param = new ForumParameter() ;

    param.setModerators(moderators);

    param.setRenderModerator(true);

    actionRes.setEvent(new QName("ForumPollEvent"), param);

    ....

ForumRuleEvent This event is fired through UIForumRulePortlet.

To receive ForumRuleEvent, you must use the ForumParameter class with two properties:

Name | Type | Possible value | Description
--- | --- | --- | ---
isRenderRule | `boolean` | True/false | If the value is set to true or false, the UIForumRulePortlet portlet is rendered or not respectively.
infoRules | `list of strings` | The list of states: can create topic, can add post and topic has lock. | Set permissions for users in UIForumRulePortlet.

For example:

    ....

    ActionResponse actionRes = pcontext.getResponse() ;

    ForumParameter param = new ForumParameter() ;

    List<String> list = param.getInfoRules();

    if(forum.getIsClosed() || forum.getIsLock()) {

      list.set(0, "true");

    } else {

      list.set(0, "false");

    }

    list.set(1, String.valueOf(canCreateTopic));

    list.set(2, String.valueOf(isCanPost));

    param.setInfoRules(list);

    param.setRenderRule(true);

    actionRes.setEvent(new QName("ForumRuleEvent"), param) ;

    ....

QuickReplyEvent This event is fired through UIQuickReplyPortlet.

To receive QuickReplyEvent, you must use the ForumParameter class with five properties:

Name | Type | Possible value | Description
--- | --- | --- | ---
isRenderQuickReply | `boolean` | True/false | If the value is set to true or false, the UIQuickReplyPortlet portlet is rendered or not respectively.
isModerator | `boolean` | True/false | Specify if the user is moderator of forum containing the topic with quick reply or not.
categoryId | `string` | Id of category | Return the Id of category for UIQuickReplyPortlet.
forumId | `string` | Id of forum | Return the Id of forum for UIQuickReplyPortlet.
topicId | `string` | Id of topic | Return the Id of topic for UIQuickReplyPortlet.

For example:

    ....

    ActionResponse actionRes = pcontext.getResponse() ;

    ForumParameter param = new ForumParameter() ;

    param.setRenderQuickReply(isCanPost);

    param.setModerator(isMod);

    param.setCategoryId(categoryId) ;

    param.setForumId(forumId);

    param.setTopicId(topicId);

    actionRes.setEvent(new QName("QuickReplyEvent"), param) ;;

    ....

### 1.1.2. Answers Portlet

The Answers portlet is the application to create answers, reply and manage questions.

Package

This portlet is packaged in the faq.war file.

Portlet.xml

- See the portlet.xml file in the project following this path: /webapps/faq/WEB-INF/portlet.xml.

Portlet Preferences

The Answers portlet consists of preferences as follows:

Preference name | Possible value | Default value | Description
--- | --- | --- | ---
enableViewAvatar | `true`, `false` | `true` | Enable users to view the avatar of owner posting the question.
enableAutomaticRSS | `true`, `false` | `true` | Enable users to get RSS automatically.
enableVotes AndComments | `true`, `false` | `true` | Enable users to give votes and comments for the question.
enableAnonymous SubmitQuestion | `true`, `false` | `true` | Enable anonymous users to submit questions.
display | `approved`, `both` | `both` | Enable administrators to view unapproved questions in the questions list in UIQuestions.
SendMailAdd NewQuestion | `string` | `empty` | Display the content of sent email when a new question is added.
SendMailEdit ResponseQuestion | `string` | `empty` | Display the email content when a response is edited.
emailMoveQuestion | `string` | `empty` | Display the email content when a question is moved.
orderBy | `alphabet`, `created` | `alphabet` | Arrange questions in the alphabet or created date order.
orderType | `asc`, `desc` | `asc` | Display questions in the ascending or descending order.
isDiscussForum | `true`, `false` | `false` | Enable the DiscussQuestions function.
idNameCategoryForum | `CategoryName,` ForumName`` | `empty` | Select categories and forums for the DiscussionQuestions function.
uploadFileSizeLimitMB | `integer` | `20` | Set the maximum size of uploaded files in MB.

### 1.1.3. FAQ Portlet

The FAQ portlet is the application to show questions and answers.

Package

This portlet is packaged in the faq.war file.

Portlet.xml

- See the portlet.xml file in the project following this path: /webapps/faq/WEB-INF/portlet.xml.

Portlet Preferences

The FAQ portlet includes some portlet preferences that you can configure to alter the behavior.

At runtime, you can use the EDIT mode portlet to set the preferences:

Alternatively, you can configure the portlet in the portet-preferences.xml file.

Preference name | Possible value | Default value | Description
--- | --- | --- | ---
useAjax | `true`, `false` | `false` | Specify if the AJAX load or HREF load is used.

### 1.1.4. Polls Portlet

The Poll portlet is the application for users to vote any ideas, or activities.

Package

This portlet is packaged in the poll.war file.

Portlet.xml

- See the portlet.xml file in the project following this path: poll/WEB-INF/portlet.xml.

    <portlet-preferences>

      <preference>

        <name>pollIdShow</name>

        <value/> <!-- PollId -->

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

      </preference>

    </portlet-preferences>

Portlet Preferences

Preference name | Possible value | Default value | Description
--- | --- | --- | ---
pollIdShow | `string` | `empty` | The Id of poll which is displayed in the Polls portlet.

## 1.2. Gadgets

eXo Platform provides a gadget which enables users to see a poll. The Poll Gadget is developed on the combination of Gadget by GateIn and Polls Service. The Poll Gadget allows users to apply functions of Polls, such as viewing and voting Polls.

Gadget name | War name | Description
--- | --- | ---
pollslist | poll.war | The list of Polls.

Preferences

Preference name | Description
--- | ---
pollId | The Id of Polls which is displayed in the Polls gadget.

Links to used REST services

- portal/rest/private/ks/poll/viewpoll/pollId

- portal/rest/private/ks/poll/votepoll/pollId/indexVote

`See also`

- Portlets

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