Difference between revisions of "GCube Portlets Deploying on Liferay"

From Gcube Wiki
Jump to: navigation, search
(Modify the configuration files)
(How to get the logged in user's information)
Line 76: Line 76:
 
The users that are logged in to the portal have certain information registered that can be retrieved using the Liferay's API.
 
The users that are logged in to the portal have certain information registered that can be retrieved using the Liferay's API.
  
  // get the remote user
+
<source lang="java5">
  long userid = Long.parseLong(request.getRemoteUser());
+
long userid = Long.parseLong(request.getRemoteUser());
 
 
  User user = null;
+
User user = null;
  try {
+
try {
 
         user = UserLocalServiceUtil.getUser(userid);
 
         user = UserLocalServiceUtil.getUser(userid);
  } catch (PortalException e) {
+
} catch (PortalException e) {
  } catch (SystemException e) {
+
} catch (SystemException e) {
 
  
 
  
  //get the username
+
String username = user.getScreenName();  //Gets the username
  String username = user.getScreenName();  
+
String fullName = user.getFullName();     //Gets the fullname
   String fullName = user.getFullName();
+
String email = user.getEmailAddress();   //Gets the email address
  String email = user.getEmailAddress();
+
</source>

Revision as of 15:54, 21 June 2010

Gcube Portlets to Liferay

Porting and deploying the existing gCube portlets to Liferay portal is an easy task. The deployment of a portlet to Liferay requires an existing installation of the Liferay portal bundled with the Apache Tomcat server (For more information on how to install and configure Liferay portal visit: [D4Science Portal Installation] ).
The required changes are focused on the configuration files that Liferay requires and on the way the logged in user's information are retrieved. After setting up these information then the portlet can be compiled and deployed on liferay.

Create a new Liferay Portlet

  • Go to $LIFERAY_HOME/liferay-plugins-sdk/ directory
  • If the create.sh script file (located in the current directory) is not executable, change its permissions
  • Execute ./create.sh "portlet-id" "portlet-name"
  • A new directory with name portlet-name-portlet is created at the $LIFERAY_HOME/liferay-plugins-sdk/portlets directory


Liferay portlet hierarchical organization

The hierarchical organization of a liferay portlet is the following:

  • portlet-name-portlet
    • docroot
      • css
      • js
      • WEB-INF
        • classes
        • lib
        • src
        • tld
        • liferay-display.xml
        • liferay-plugin-package.properties
        • liferay-portlet.xml
        • portlet.xml
        • web.xml
      • icon.png
      • view.jsp
    • build.xml

The source code of the portlet should be copied inside the src directory.

Modify the configuration files

  • liferay-portlet.xml

The elements that should be placed in that file must follow the exact order

  <portlet>
     <portlet-name>”portletName”</portlet-name>
     <icon>/icon.png</icon> //optional 
     <layout-cacheable>false</layout-cacheable>  //for loading the new portlet
     <instanceable>false</instanceable>  //to use one portlet instance for the D4S portal
     <ajaxable>false</ajaxable>  //it is need for the correct rendering of the GWT portlet
     <header-portlet-css>/css/test.css</header-portlet-css>
  </portlet>

  • liferay-display.xml

The element 'category' is recommended to use the name "gCube Applications"

  <display>
     <category name="gCube Applications">
        <portlet id="'portlet-id'" />
     </category>
  </display>

  • portlet.xml
  <portlet-class>add you portlet class here</portlet-class>
  <init-param>
    <name>view-jsp</name>
    <value>change this value if you use your own jsp (e.g. /jsp/AnnotationFrontEnd_V2.jsp)</value>
   </init-param>

The root directory is considered the docroot directory

  • web.xml

The web.xml of the existing portlets can be used at the liferay portlet. Remove any references to gridshere servlet mappings.

How to get the logged in user's information

The users that are logged in to the portal have certain information registered that can be retrieved using the Liferay's API.

long userid = Long.parseLong(request.getRemoteUser());
 
User user = null;
try {
        user = UserLocalServiceUtil.getUser(userid);
} catch (PortalException e) {
} catch (SystemException e) {
 
String username = user.getScreenName();   //Gets the username
String fullName = user.getFullName();     //Gets the fullname
String email = user.getEmailAddress();    //Gets the email address