Author: bdaw
Date: 2007-05-24 11:35:45 -0400 (Thu, 24 May 2007)
New Revision: 7329
Modified:
trunk/core/src/main/org/jboss/portal/core/portlet/role/RolePortlet.java
trunk/core/src/resources/portal-core-war/WEB-INF/classes/Resource.properties
trunk/core/src/resources/portal-core-war/WEB-INF/jsp/role/editUserRoles.jsp
Log:
JBPORTAL-1440 - changed checkboxes for user - roles assignation to two select boxes - part
for RolePortlet
Modified: trunk/core/src/main/org/jboss/portal/core/portlet/role/RolePortlet.java
===================================================================
--- trunk/core/src/main/org/jboss/portal/core/portlet/role/RolePortlet.java 2007-05-24
14:26:46 UTC (rev 7328)
+++ trunk/core/src/main/org/jboss/portal/core/portlet/role/RolePortlet.java 2007-05-24
15:35:45 UTC (rev 7329)
@@ -52,6 +52,10 @@
import java.util.Locale;
import java.util.ResourceBundle;
import java.util.Set;
+import java.util.Map;
+import java.util.HashSet;
+import java.util.Arrays;
+import java.util.List;
/**
* This portlet aims at managing roles of users.
@@ -144,6 +148,7 @@
protected void doView(JBossRenderRequest req, JBossRenderResponse resp)
throws PortletException, PortletSecurityException, IOException
{
+
if (req.isUserInRole(ADMIN_ROLE))
{
resp.setContentType("text/html");
@@ -399,29 +404,50 @@
ctx.put("userfullname", getFullName(bundle, user));
Set userRoles = membershipModule.getRoles(user);
+ //old stuff
Set roles = roleModule.findRoles();
Role[] rolesArray = new Role[roles.size()];
rolesArray = (Role[])roles.toArray(rolesArray);
Role role = null;
- DelegateContext rowCtx = null;
- for (int i = 0; i < rolesArray.length; i++)
+
+ DelegateContext allRolesCtx = null;
+ for (Iterator it = roles.iterator(); it.hasNext();)
{
- int oddeven = i % 3;
- role = rolesArray[i];
- if (oddeven == 0)
+ role = (Role)it.next();
+ allRolesCtx = ctx.next("allRoles");
+
+ allRolesCtx.put("name", role.getName());
+ allRolesCtx.put("displayname", role.getDisplayName());
+ }
+
+ DelegateContext userRolesCtx = null;
+
+ if
(!req.getParameterMap().keySet().contains("selectedRoles"))
+ {
+ for (Iterator it = userRoles.iterator(); it.hasNext();)
{
- rowCtx = ctx.next("row");
+ role = (Role)it.next();
+ userRolesCtx = ctx.next("userRoles");
+
+ userRolesCtx.put("name", role.getName());
+ userRolesCtx.put("displayname",
role.getDisplayName());
}
+ }
+ else
+ {
+ String[] selectedRoles =
req.getParameterValues("selectedRoles");
+ for (int i = 0; i < selectedRoles.length; i++)
+ {
+ String selectedRole = selectedRoles[i];
+ role = roleModule.findRoleByName(selectedRole);
- DelegateContext colCtx = rowCtx.next("col");
- if (userRoles.contains(role))
- {
- colCtx.put("ischecked", "checked");
+ userRolesCtx = ctx.next("userRoles");
+
+ userRolesCtx.put("name", role.getName());
+ userRolesCtx.put("displayname",
role.getDisplayName());
}
+ }
- colCtx.put("name", role.getName());
- colCtx.put("displayname", role.getDisplayName());
- }
}
catch (IllegalArgumentException e)
{
@@ -633,25 +659,113 @@
*/
public void addRolesToUser(JBossActionRequest request, JBossActionResponse response)
{
+
if (request.isUserInRole(ADMIN_ROLE))
{
- String[] selectedRoles = request.getParameterValues("roles");
String userId = request.getParameters().getParameter("userid");
- try
+ if (request.getParameterMap().keySet().contains("addRoles"))
{
- User user = userModule.findUserById(userId);
- Set roles = roleModule.findRolesByNames(selectedRoles);
- membershipModule.assignRoles(user, roles);
+ String[] selectedRoles =
request.getParameterValues("assignedRoles");
+ String[] rolesToAdd = request.getParameterValues("rolesToAdd");
+
+ if (selectedRoles == null)
+ {
+ selectedRoles = new String[]{};
+ }
+ if (rolesToAdd == null)
+ {
+
+ if (selectedRoles.length != 0)
+ {
+ response.setRenderParameter("selectedRoles", selectedRoles);
+ }
+
+ response.setRenderParameter("op", OP_SHOWADDROLESTOUSER );
+ response.setRenderParameter("userid", userId);
+ }
+
+
+ Set roles = new HashSet();
+ List l1 = Arrays.asList(selectedRoles);
+ List l2 = Arrays.asList(rolesToAdd);
+ roles.addAll(l1);
+ roles.addAll(l2);
+
+ String[] roleNames = new String[roles.size()];
+ roleNames = (String[])roles.toArray(roleNames);
+
+ response.setRenderParameter("selectedRoles", roleNames);
+ response.setRenderParameter("op", OP_SHOWADDROLESTOUSER );
+ response.setRenderParameter("userid", userId);
}
- catch (IllegalArgumentException e)
+ else if (request.getParameterMap().keySet().contains("removeRoles"))
{
- // TODO Auto-generated catch block
- e.printStackTrace();
+
+ String[] selectedRoles =
request.getParameterValues("assignedRoles");
+ String[] rolesToRemove =
request.getParameterValues("selectedRoles");
+
+ if (selectedRoles == null)
+ {
+ selectedRoles = new String[]{};
+ }
+
+ if (rolesToRemove == null)
+ {
+ if (selectedRoles.length != 0)
+ {
+ response.setRenderParameter("selectedRoles", selectedRoles);
+ }
+
+ response.setRenderParameter("op", OP_SHOWADDROLESTOUSER );
+ response.setRenderParameter("userid", userId);
+ }
+
+ List toRemove = Arrays.asList(rolesToRemove);
+
+ Set roles = new HashSet();
+
+ for (int i = 0; i < selectedRoles.length; i++)
+ {
+ String selectedRole = selectedRoles[i];
+
+ if (!toRemove.contains(selectedRole))
+ {
+ roles.add(selectedRole);
+ }
+ }
+
+ String[] roleNames = new String[roles.size()];
+ roleNames = (String[])roles.toArray(roleNames);
+
+ if (roleNames.length != 0)
+ {
+ response.setRenderParameter("selectedRoles", roleNames);
+ }
+
+ response.setRenderParameter("op", OP_SHOWADDROLESTOUSER );
+ response.setRenderParameter("userid", userId);
}
- catch (IdentityException e)
+ else
{
- // TODO Auto-generated catch block
- e.printStackTrace();
+
+ String[] selectedRoles =
request.getParameterValues("assignedRoles");
+
+ try
+ {
+ User user = userModule.findUserById(userId);
+ Set roles = roleModule.findRolesByNames(selectedRoles);
+ membershipModule.assignRoles(user, roles);
+ }
+ catch (IllegalArgumentException e)
+ {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ catch (IdentityException e)
+ {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
}
}
}
@@ -664,6 +778,8 @@
*/
public void removeRole(JBossActionRequest req, JBossActionResponse resp)
{
+
+
if (req.isUserInRole(ADMIN_ROLE))
{
String roleId = req.getParameters().getParameter("roleid");
Modified: trunk/core/src/resources/portal-core-war/WEB-INF/classes/Resource.properties
===================================================================
---
trunk/core/src/resources/portal-core-war/WEB-INF/classes/Resource.properties 2007-05-24
14:26:46 UTC (rev 7328)
+++
trunk/core/src/resources/portal-core-war/WEB-INF/classes/Resource.properties 2007-05-24
15:35:45 UTC (rev 7329)
@@ -270,6 +270,7 @@
PREVIOUSPAGE=Previous page
ASSIGNROLES=Assign roles
+ASSIGNEDROLES=Roles to assign
ROLESAVAILABLE=Available roles
EDITROLESFORUSER=Edit roles for the user
@@ -293,6 +294,8 @@
ROLE_EDIT_MEMBERS=Edit role members
ROLE_MAINLIST=Back to Role Edit
ROLE_EDIT_USER=Editing users in Role
+ROLE_ADD=Add roles
+ROLE_REMOVE=Remove roles
ROLE_ERROR_DISPLAYNAMEALREADYEXISTS=There is already a role with that display name
ROLE_ERROR_NAMEALREADYEXISTS=There is already a role with that name
Modified: trunk/core/src/resources/portal-core-war/WEB-INF/jsp/role/editUserRoles.jsp
===================================================================
--- trunk/core/src/resources/portal-core-war/WEB-INF/jsp/role/editUserRoles.jsp 2007-05-24
14:26:46 UTC (rev 7328)
+++ trunk/core/src/resources/portal-core-war/WEB-INF/jsp/role/editUserRoles.jsp 2007-05-24
15:35:45 UTC (rev 7329)
@@ -8,19 +8,40 @@
<br/>
<table>
<tr>
- <th
colspan="3">${n:i18n("ROLESAVAILABLE")}</th>
+ <th>${n:i18n("ROLESAVAILABLE")}</th>
+ <th/>
+ <th>${n:i18n("ASSIGNEDROLES")}</th>
</tr>
<form name="<portlet:namespace/>editRoles"
method="post" action="<portlet:actionURL><portlet:param
name="op"
value="addRolesToUser"/></portlet:actionURL>">
<input type="hidden" name="userid"
value="${n:out("userid")}"/>
- <n:iterate ctx="row">
- <tr>
- <n:iterate ctx="col">
- <td><input type="checkbox" name="roles"
- value="${n:out("row.col.name")}"
${n:out("row.col.ischecked")}>${n:out("row.col.displayname")}
- </td>
- </n:iterate>
- </tr>
+
+ <n:iterate ctx="userRoles">
+ <input type="hidden" name="assignedRoles"
value="${n:out("userRoles.name")}"/>
</n:iterate>
+
+ <tr>
+ <td style="vertical-align:top;">
+ <select name="rolesToAdd" size="6"
multiple="true">
+ <n:iterate ctx="allRoles">
+ <option
value="${n:out("allRoles.name")}">${n:out("allRoles.displayname")}</option>
+ </n:iterate>
+ </select>
+ </td>
+ <td>
+ <input name="addRoles" class="portlet-form-button"
type="submit" value="${n:i18n("ROLE_ADD")}"/>
+ <br/>
+ <input name="removeRoles"
class="portlet-form-button" type="submit"
value="${n:i18n("ROLE_REMOVE")}"/>
+ </td>
+ <td style="vertical-align:top;">
+ <select name="selectedRoles" size="6"
multiple="true">
+ <n:iterate ctx="userRoles">
+ <option
value="${n:out("userRoles.name")}">${n:out("userRoles.displayname")}</option>
+ </n:iterate>
+ </select>
+ </td>
+ </tr>
+
+
</form>
<form
name="<portlet:namespace/>cancel"
@@ -38,4 +59,5 @@
value="${n:i18n("Cancel")}"/>
</tr>
</table>
-</span>
\ No newline at end of file
+</span>
+