Sunday, October 17, 2010

Steps to Install/activate IBM WCM Authoring Portlet

Installing the Authoring portlet

The Authoring portlet configuration task will automatically create IBM Workplace Web Content Management pages(IWWCM) and install the Authoring portlet and Local Rendering portlets.
Stop the portal server if already running.

Running the configuration task:(<PortalServer root>\config>)

  1. Open a command prompt.
  2. Run the configure-wcm-authoring task:
    • Windows and UNIX: Run the following command from the <portal_server_root>/config directory:
      • Windows: WPSconfig.bat configure-wcm-authoring -DPortalAdminPwd=password
      • UNIX: ./WPSconfig.sh configure-wcm-authoring -DPortalAdminPwd=password
    • where profile_root is the name of the WebSphere Application Server profile where WebSphere Portal is installed; for example,wp_profile.
  3. Log out of the portal and log back in.
  4. Select Web Content from the main menu to access the Authoring portlet.
  5. In a clustered environment, sometimes the authoring portlet does not get displayed. In such cases you may need to activate the portlet manually or synchronize the nodes in cluster.

Saturday, September 18, 2010

Steps to set up E-mail Notifications during IBM WCM Workflow


Hi Friends,
In IBM Workplace Webcontent Management (IWWCM) you can set up the e-mail notifications during each stage of webcontent management workflow. This helps the web content author and publisher know the status of content which needs to be published.
Here are some additional steps required to set up e-mail notification during a webcontent workflow:
  • ensure the WCMConfigService.properties file is configured to use your SMTP server.
  • ensure the Member Manager user has a valid e-mail address.
In addition to the InfoCenter steps (http://publib.boulder.ibm.com/infocenter/wpdoc/v6r0/index.jsp?topic=/com.ibm.wp.ent.doc/wcm/wcm_config_smtp.html) you may need to add a username and password if your SMTP server requires authentication.

Step 1:
Check WCMConfigService.properties file under /wcm/shared/app/config/wcmservices

Step 2:
Add defaultusername and defaultpassword. See example:

#SMTP Mail Setup
connect.connector.mailconnector = defaultsmtpserver, defaultfromaddress, defaultreplytoaddress, defaultusername, defaultpassword
connect.connector.mailconnector.defaultsmtpserver= mail.myserver.com
connect.connector.mailconnector.defaultfromaddress= chirag@myserver.com
connect.connector.mailconnector.defaultreplytoaddress= chirag@myserver.com

#Add these lines:
connect.connector.mailconnector.defaultusername= chirag@myserver.com
connect.connector.mailconnector.defaultpassword= mypassword

Step 3:
Restart IBM WebSphere Portal Server for the new settings to take effect.

Note: For the 6.1 server the config file should be under: was_profile_root/PortalServer/wcm/shared/app/config/wcmservices/

Building Multi-locale sites with Web Content Management

Hi Friends,

As you might be knowing, in my previous post I was talking about that we had a requirement of builiding multilingual portal application with IBM Workplace Web Content Managment, I came across a very nice article which helped us lot in converting our portal site to support for English (default) and Spanish.

Just wanted to share this with all who are going forward to build multilingual site with IBM Workplace Web Content Management. This link has a nice document which describes the best practice for applications supporting more than one language.

http://www.ibm.com/developerworks/lotus/documentation/webcontentmanagement/d-ls-multilocalesites/

Saturday, September 11, 2010

Tag to change locale from links on IBM WPS 6.0 Theme

Recently we had a requirement to enable portlet application to support multilingual. Initially we were supporting English language (en_US) but the new requirement was to have Spanish (es) support.

The requirement was when user visits the portlet application he should be able to toggle between English and Spanish. At a time only one of the links needs to displayed. The best place to put this link was on Theme level in banner.jspf.

I just wanted to share with you all the useful tag to switch the portal locale at a global level.
 
<portal-navigation:url command="ChangeLanguage">
 
This tag is used to change the active language in the navigational state in which the URL is generated.
The following code example uses this tag to change the language to Spanish:
 
<a href='<portal-navigation:url command="ChangeLanguage"><portal-navigation:urlParam name="locale" value="es"/></portal-navigation:url>'>En Espanol</a>

Sunday, August 22, 2010

Difference in wiring between websphere portal 6.0 and 6.1

Hi Friends,

I would like to share my experience with you on interportlet communications via wiring tool of websphere portal in 6.x. Recently we are migrating all jsr 168 portlet applications which were running on IBM WebSphere portal 6.0 version to 6.1 version. As I say, wiring as my favorite topic; I came accross very interesting fact that needs to be taken care of if you are doing portlet to portlet communication using wiring tool in websphere portal.

We had an application which passes multiple string parameters from source portlet to target portlet and was working fine on version 6.0. But when I tried deploying this portlet application on version 6.1, it started complaining during the deployment itself as the wsdl file through which the wiring was handled has multiple parameters passed on a single request.

So there was a code change required and we started passing a collection object instead of passing multiple String params. In short, please take care when you implement wiring with jsr 168 and follow the best practice by passing the collection objects instead of multiple string parameters.

Sample Code to retrieve IBM WebSphere Portal Users Group information using PUMA API

This is very useful sample code to retrieve user groups of websphere portal 6.0 using PUMA API. There are some changes in PUMA API in 6.1 but the basics still remains the same.

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import javax.portlet.PortletRequest;
import javax.servlet.http.HttpServletRequest;
import com.ibm.portal.portlet.service.PortletServiceHome;
import com.ibm.portal.puma.Group;
import com.ibm.portal.puma.User;
import com.ibm.portal.um.PumaHome;
import com.ibm.portal.um.PumaLocator;
import com.ibm.portal.um.PumaProfile;
import com.ibm.wps.pe.pc.std.core.PortletUtils;

public class GroupInformation {
public List getUserGroups(PortletRequest prequest){
//Start get the servlet request from the portlet request
HttpServletRequest httpRequest = null;
      try{
         httpRequest = PortletUtils.getIncludeServletRequest(prequest);
}
catch (Exception e){
      e.printStackTrace();
}
//End
PortletServiceHome psh;
PumaHome pumahome = null;
List groupsNames = new ArrayList();
      try{
javax.naming.Context context = new javax.naming.InitialContext();
psh = (PortletServiceHome) context.lookup ("portletservice/com.ibm.portal.um.portletservice.PumaHome");
if (psh != null)
pumahome = (PumaHome) psh.getPortletService(PumaHome.class);
PumaProfile pumaprofile = (PumaProfile)pumahome.getProfile(httpRequest);
User user = (User) pumaprofile.getCurrentUser();
PumaLocator pumalocator = pumahome.getLocator(httpRequest);
List groups = pumalocator.findGroupsByPrincipal(user, false);
Iterator iter = groups.iterator();
while (iter.hasNext()){
Group grp = (Group) iter.next();
groupsNames.add(grp.getName());
}
      }
      catch (Exception e){
      e.printStackTrace();
      }
      return groupsNames;
      }
}