Content Management Portlet

Description

Content Management Portlet is developed for uPortal to allow authorized users to administer content remotely. Using this portlet, content authors can remotely edit and publish content independently, and pull in and share existing data and re-purpose it according to different needs. Project supports multiple languages and further allows decoration of content with graphics, links, and templates.

Features

  • Portlet will support two user categories: authors and viewers who publish and view content respectively.
  • Author shall use WYSIWYG editor to produce content. WYSIWYG editor shall provide navigational and keyboard support for users with disabilities.
  • All content will be checked and validated for XSS security issues, before any is published.
  • Authors currently are able to insert images, links and smiley icons into the content.
  • Portlet adheres to the portal theme and style.
  • Allow authors to choose templates for content.
  • Ability to upload multiple attachments along with the post, along with thumbnail views.
  • Ability to display video/audio attachments natively using HTML5 capabilities.
  • Ability to schedule posts to be published at a later date/time.
  • Ability to localize portlet content for multiple languages.
  • Allow a post to be rated by viewers.

Planned Features

  • Scan uploaded files using AntiVirus software. (i.e. ClamAV)
  • Incorporate Apache Chemistry along with support for OpenCMIS
  • Portlet content and posts are cached by the distributed Ehcache framework.

Configuration

  • Role configuration (author/viewer) is done within the portal itself via PAGS or any other group types managed by the portal. Please note that this configuration is entirely independent of the portlet audience that is defined at the time of publishing the portlet in portal. The portlet configuration defines a portal-agnostic method for role-based behavior, that is defined inside the portlet.xml file of the project:

    <security-role-ref>
      <role-name>author</role-name>
      <role-link>local.2</role-link>
    </security-role-ref>

    You can modify the role to map to a particular group native to the portal environment. 

    Furthermore, the portlet will be able to allow access to the EDIT mode of the portlet based on the user's role, defined above. The access rules for various portlet modes are defined as such:

    <bean id="portletModeUserRoleAuthorizationInterceptor" class="org.jasig.portlet.cms.controller.PortletModeUserRoleAuthorizationInterceptor">
    	<property name="authorizedRolesMap">
    		<map>
    			<entry key="view" value="*" />
    			<entry key="help" value="*" />
    			<entry key="edit" value="author" />
    			<entry key="config" value="author" />
    		</map>
    	</property>
    </bean>

    The configuration above indicates that all users can access VIEW and HELP modes, but only those that are classified as "author" are allowed access to CONFIG or EDIT mode.

  • Portlet follows the JSR 268 Portlet specification, supported by the Spring Portlet MVC framework.
  • All published content is stored inside the Java Content Repository (JCR) supported by the JSR 170 specification with the implementation provided by Apache Jackrabbit. Spring framework JCR extensions are employed to communicate with the repository. 

    Content Management

    If you have registered multiple instances of the portlet on the page, by default they all would display the same content because the default configuration of all portlets points to the same spots in the underlying content repository.  If you wish for a portlet to administer its own content, in the preferences screen when you deploy, specify the new location of the repository to which the portlet should write content.
  • Apache Velocity is used to render the portlet user interface pages, while JSP implementation of the UI can easily be swapped.

Screenshots

Deployment

Requirements
  1. uPortal (3.x, 4.x)
  2. Apache Maven (2.2.1, 3.0)
  3. Tomcat 6.x

 

Screen Cast

 A brief screen cast that highlights the portlet features and configuration options is available here.

 

Source Code

Project source code is available at: https://github.com/Jasig/ContentManagementPortlet

Build
  • Adjust the paths in the build.properties file (portal, tomcat and maven directories)
  • On the command line inside the project source directory, use the following command:
Apache Ant Deployment
> ant package

Once the build is successful, you should be able to browse to the "<tomcat-home>/webapps" and find the "ContentManagementPortlet.war" application file.

uPortal Portlet Registration

A number of key elements are specified below that should be carefully configured during registration:

  • Select the channel type to be Portlet
  • Allow the channel timeout value to be 50000
  • Allow both Edit and Help modes
  • (uPortal 3.x only) Make sure "Framework Portlet" is set to false
  • (uPortal 3.x only) For "Portlet Web Application Path", enter: /ContentManagementPortlet
  • For "Portlet Name", "Functional Name" and "Title", enter: ContentManagementPortlet

Additional Help

The HELP mode of the Content Management Portlet provides a list of Frequently Asked Questions. While the default configuration of the portlet should run out of the box, thist list address issues like data reopsitory management, content security checks, internationalization and additional preferences. Please review the FAQ page for more info. This list will be frequently updated with aditional information on portlet setup and configuration of new features.

Report Bugs

If you have encounted an issue with the portlet, please submit an entry here: https://issues.jasig.org/browse/INC-15