Introduction
In this weblog i am going to present a Dynpage that display content assigned to a user in a nice htmlb tree display. This code is for portal version EP6 SP9 or higher.
Jar files required
com.sap.portal.usermanagementapi.jar,com.sap.portal.pcd.glserviceapi.jar
Create a Dynpage project using NWDS or Eclipse wizard. Add the following source code to your
dynpage
component.package com.ust.browserole;
/* Built By: Prakash Singh
Universal System Technologies, Inc
M 407-474-2216
*/
import java.util.Hashtable;
import java.util.Iterator;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NameClassPair;
import javax.naming.NamingEnumeration;
import javax.naming.NamingException;
import com.sap.ip.portal.service.ume.IUserManagementEngine;
import com.sap.security.api.IRole;
import com.sap.security.api.IUser;
import com.sap.security.api.UMException;
import com.sap.security.api.UMFactory;
import com.sap.security.api.srvUser.IServiceUserFactory;
import com.sapportals.htmlb.Button;
import com.sapportals.htmlb.Form;
import com.sapportals.htmlb.GridLayout;
import com.sapportals.htmlb.Group;
import com.sapportals.htmlb.InputField;
import com.sapportals.htmlb.Label;
import com.sapportals.htmlb.Tree;
import com.sapportals.htmlb.TreeNode;
import com.sapportals.htmlb.enum.GroupDesign;
import com.sapportals.htmlb.event.Event;
import com.sapportals.htmlb.page.DynPage;
import com.sapportals.htmlb.page.PageException;
import com.sapportals.portal.htmlb.page.PageProcessorComponent;
import com.sapportals.portal.pcd.gl.IPcdAttribute;
import com.sapportals.portal.pcd.gl.IPcdContext;
import com.sapportals.portal.prt.component.IPortalComponentRequest;
import com.sapportals.portal.prt.component.IPortalComponentResponse;
import com.sapportals.portal.prt.runtime.PortalRuntime;
public class display extends PageProcessorComponent {
public DynPage getPage() {
return new displayDynPage();
}
public static class displayDynPage extends DynPage {
/**
Initialization code executed once per user.
*/
String userid;
private final String PCDCONTEXT =
"com.sapportals.portal.pcd.gl.IPcdContext";
private final String PCDIVIEW =
"com.sapportals.portal.ivs.iviews.IPortalIview";
private final String PCDPAGE =
"com.sapportals.portal.ivs.iviews.IPortalPage";
private final String PCDROLE =
"com.sapportals.portal.pcd.pcm.roles.IRoleDescriptor";
private final String PCDWORKSET =
"com.sapportals.portal.pcd.pcm.roles.IWorksetDescriptor";
private final String PCDSYSTEM =
"com.sapportals.iviewserver.systemlandscape.service.ISystemObject";
private final String PCDLAYOUT =
"com.sapportals.portal.ivs.iviews.ILayout";
private final String PCDFOLDER =
"com.sapportals.portal.pcd.pcm.roles.IRoleFolderDescriptor";
public void doInitialization() {
userid = "";
}
/**
Input handling code. In general called the first time with the second page request from the user.
*/
public void doProcessAfterInput() throws PageException {
}
/**
Create output. Called once per request.
*/
public void doProcessBeforeOutput() throws PageException {
Form myForm = this.getForm(); // get the form from DynPage
// create your GUI here....
Group myGroup = new Group();
myForm.addComponent(myGroup);
myGroup.setWidth("350");
myGroup.setDesign(GroupDesign.SAPCOLOR);
myGroup.setTitle("Browse assigned content for a user");
GridLayout gl = new GridLayout();
myGroup.addComponent(gl);
gl.setCellSpacing(5);
GridLayout gl1 = new GridLayout();
gl.addComponent(1, 1, gl1);
Label lbluserid = new Label("Userid");
gl1.addComponent(1, 1, lbluserid);
InputField inpuserid = new InputField("userid");
inpuserid.setValue(userid);
gl1.addComponent(1, 2, inpuserid);
Button buttondisplay = new Button("Display");
buttondisplay.setText("Display");
buttondisplay.setOnClick("Display");
gl1.addComponent(2, 1, buttondisplay);
if (!userid.equals("")) {
Tree tree = new Tree("S_Tree", "");
tree.setRootNodeIsVisible(false);
TreeNode root = new TreeNode("e_root", "Role Content");
root.setOpen(true);
tree.setRootNode(root);
IPortalComponentResponse response =
(IPortalComponentResponse) this.getResponse();
IPortalComponentRequest request =
(IPortalComponentRequest) this.getRequest();
try {
IUser user =
UMFactory.getUserFactory().getUserByLogonID(userid);
Iterator role = user.getRoles(true);
String roleroot;
String imgrolepath =
request.getWebResourcePath() + "/images/role.gif";
while (role.hasNext()) {
String rolestr = (String) role.next();
IRole r = UMFactory.getRoleFactory().getRole(rolestr);
roleroot = r.getUniqueName();
//roleroot = "portal_content/administrator/super_admin/super_admin_role/com.sap.portal.system_administration";
String text =
"!!"
+ r.getDescription();
TreeNode name =
new TreeNode(r.getDisplayName(), text, root);
//response.write("
" + r.getDisplayName() + "
Save the following images and add it to your
dist->images
folder.Deploy your application in your portal. h5. BAM! you got yourself a nice utility iView that display all the content assigned to a user.