Commit d2b40a9c authored by Derek DeMoro's avatar Derek DeMoro Committed by derek

Adding new Group Edit Page and added new "Add user" during Group create.


git-svn-id: http://svn.igniterealtime.org/svn/repos/messenger/trunk@803 b35dd754-fafc-0310-a699-88a17e54d16e
parent a26f4017
...@@ -99,6 +99,10 @@ ...@@ -99,6 +99,10 @@
url="group-properties.jsp" url="group-properties.jsp"
description="Click to edit the groups's properties" /> description="Click to edit the groups's properties" />
<item id="group-edit" name="Edit Group"
url="group-edit-form.jsp"
description="Click to edit the group" />
<item id="group-delete" name="Delete Group" <item id="group-delete" name="Delete Group"
url="group-delete.jsp" url="group-delete.jsp"
description="Click to delete the group" /> description="Click to delete the group" />
......
...@@ -8,8 +8,8 @@ ...@@ -8,8 +8,8 @@
- This software is published under the terms of the GNU Public License (GPL), - This software is published under the terms of the GNU Public License (GPL),
- a copy of which is included in this distribution. - a copy of which is included in this distribution.
--%> --%>
<%@ page
<%@ page import="org.jivesoftware.util.*, import ="org.jivesoftware.util.*,
java.util.HashMap, java.util.HashMap,
java.util.Map, java.util.Map,
java.util.*, java.util.*,
...@@ -23,34 +23,30 @@ ...@@ -23,34 +23,30 @@
org.dom4j.xpath.DefaultXPath, org.dom4j.xpath.DefaultXPath,
org.dom4j.*, org.dom4j.*,
org.jivesoftware.messenger.group.*" org.jivesoftware.messenger.group.*"
errorPage="error.jsp" errorPage="error.jsp"%>
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c"%>
<jsp:useBean id="webManager" class="org.jivesoftware.util.WebManager"/>
<jsp:useBean id="errors" class="java.util.HashMap"/>
<%
webManager.init(request, response, session, application, out);
%> %>
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %>
<jsp:useBean id="webManager" class="org.jivesoftware.util.WebManager" />
<jsp:useBean id="errors" class="java.util.HashMap" />
<% webManager.init(request, response, session, application, out ); %>
<% // Get parameters // <% // Get parameters //
boolean create = request.getParameter("create") != null; boolean create = request.getParameter("create") != null;
boolean cancel = request.getParameter("cancel") != null; boolean cancel = request.getParameter("cancel") != null;
String name = ParamUtils.getParameter(request,"name"); String name = ParamUtils.getParameter(request, "name");
String description = ParamUtils.getParameter(request,"description"); String description = ParamUtils.getParameter(request, "description");
String users = ParamUtils.getParameter(request, "users");
// Handle a cancel // Handle a cancel
if (cancel) { if (cancel) {
response.sendRedirect("group-summary.jsp"); response.sendRedirect("group-summary.jsp");
return; return;
} }
// Handle a request to create a group: // Handle a request to create a group:
if (create) { if (create) {
// Validate // Validate
if (name == null) { if (name == null) {
errors.put("name",""); errors.put("name", "");
} }
// do a create if there were no errors // do a create if there were no errors
if (errors.size() == 0) { if (errors.size() == 0) {
try { try {
...@@ -58,25 +54,33 @@ ...@@ -58,25 +54,33 @@
if (description != null) { if (description != null) {
newGroup.setDescription(description); newGroup.setDescription(description);
} }
String hostName = webManager.getXMPPServer().getServerInfo().getName();
StringTokenizer tokenizer = new StringTokenizer(users, ",");
while (tokenizer.hasMoreTokens()) {
String tok = tokenizer.nextToken();
String address = tok;
if (address.indexOf("@") == -1) {
address = address + "@" + hostName;
}
newGroup.getMembers().add(address);
}
// Successful, so redirect // Successful, so redirect
response.sendRedirect("group-properties.jsp?success=true&group=" + newGroup.getName()); response.sendRedirect("group-properties.jsp?success=true&group=" + newGroup.getName());
return; return;
} }
catch (GroupAlreadyExistsException e) { catch (GroupAlreadyExistsException e) {
e.printStackTrace(); e.printStackTrace();
errors.put("groupAlreadyExists",""); errors.put("groupAlreadyExists", "");
} }
catch (Exception e) { catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
errors.put("general",""); errors.put("general", "");
Log.error(e); Log.error(e);
} }
} }
} }
%> %>
<jsp:useBean id="pageinfo" scope="request" class="org.jivesoftware.admin.AdminPageBean"/>
<jsp:useBean id="pageinfo" scope="request" class="org.jivesoftware.admin.AdminPageBean" />
<% // Title of this page and breadcrumbs <% // Title of this page and breadcrumbs
String title = "Create Group"; String title = "Create Group";
pageinfo.setTitle(title); pageinfo.setTitle(title);
...@@ -84,56 +88,61 @@ ...@@ -84,56 +88,61 @@
pageinfo.getBreadcrumbs().add(new AdminPageBean.Breadcrumb(title, "group-create.jsp")); pageinfo.getBreadcrumbs().add(new AdminPageBean.Breadcrumb(title, "group-create.jsp"));
pageinfo.setPageID("group-create"); pageinfo.setPageID("group-create");
%> %>
<jsp:include page="top.jsp" flush="true" /> <jsp:include page="top.jsp" flush="true"/>
<jsp:include page="title.jsp" flush="true" /> <jsp:include page="title.jsp" flush="true"/>
<c:set var="submit" value="${param.create}"/>
<c:set var="submit" value="${param.create}" /> <c:set var="errors" value="${errors}"/>
<c:set var="errors" value="${errors}" /> <%
if (errors.get("general") != null) {
<% if (errors.get("general") != null) { %> %>
<div class="jive-success"> <div class="jive-success">
<table cellpadding="0" cellspacing="0" border="0"> <table cellpadding="0" cellspacing="0" border="0">
<tbody> <tbody>
<tr><td class="jive-icon"><img src="images/success-16x16.gif" width="16" height="16" border="0"></td> <tr>
<td class="jive-icon">
<img src="images/success-16x16.gif" width="16" height="16" border="0">
</td>
<td class="jive-icon-label"> <td class="jive-icon-label">
Error creating the group. Please check your error logs. Error creating the group. Please check your error logs.
</td></tr> </td>
</tr>
</tbody> </tbody>
</table> </table>
</div><br> </div>
<br>
<% } %> <%
}
<p>Use the form below to create a new group.</p> %>
<p>
<form name="f" action="group-create.jsp" method="post"> Use the form below to create a new group.</p>
<form name="f" action="group-create.jsp" method="post">
<fieldset> <fieldset>
<legend>Create New Group</legend> <legend>
Create New Group
</legend>
<div> <div>
<table cellpadding="3" cellspacing="0" border="0" width="100%"> <table cellpadding="3" cellspacing="0" border="0" width="100%">
<tr valign="top"> <tr valign="top">
<td width="1%" nowrap> <td width="1%" nowrap>
<label for="gname">Group Name:</label> * <label for="gname">Group Name:</label>
*
</td> </td>
<td width="99%"> <td width="99%">
<input type="text" name="name" size="30" maxlength="75" value="<%= ((name!=null) ? name : "") %>" <input type="text" name="name" size="30" maxlength="75"
id="gname"> value="<%= ((name != null) ? name : "") %>" id="gname">
<%
<% if (errors.get("name") != null) { %> if (errors.get("name") != null) {
%>
<span class="jive-error-text"> <span class="jive-error-text"> Invalid name. </span>
Invalid name. <%
</span> }
else if (errors.get("groupAlreadyExists") != null) {
<% } else if (errors.get("groupAlreadyExists") != null) { %> %>
<span class="jive-error-text"> Group already exists - please choose a different
<span class="jive-error-text"> name. </span>
Group already exists - please choose a different name. <%
</span> }
%>
<% } %>
</td> </td>
</tr> </tr>
<tr valign="top"> <tr valign="top">
...@@ -141,39 +150,43 @@ ...@@ -141,39 +150,43 @@
<label for="gdesc">Description:</label> <label for="gdesc">Description:</label>
</td> </td>
<td width="99%"> <td width="99%">
<textarea name="description" cols="30" rows="5" id="gdesc" <textarea name="description" cols="30" rows="5" id="gdesc"><%= ((description != null) ? description : "") %></textarea>
><%= ((description!=null) ? description : "") %></textarea> <%
if (errors.get("description") != null) {
<% if (errors.get("description") != null) { %> %>
<span class="jive-error-text"> Invalid description. </span>
<span class="jive-error-text"> <%
Invalid description. }
</span> %>
</td>
<% } %> </tr>
<tr>
<td nowrap width="1%">
Add User(s):
</td>
<td nowrap class="c1" align="left">
<input type="text" size="40" name="users"/>
&nbsp;
</td>
</tr>
<td width="1%">
</td>
<td nowrap align="left" class="jive-description">
Comma delimited list. Example: "user1@site.com", "user2@site.com"
</td> </td>
</tr> </tr>
</table> </table>
<br> <br>
<span class="jive-description"> <span class="jive-description"> * Required fields </span>
* Required fields
</span>
</div> </div>
</fieldset> </fieldset>
<br>
<br><br> <br>
<input type="submit" name="create" value="Create Group"> <input type="submit" name="cancel" value="Cancel">
<input type="submit" name="create" value="Create Group"> </form>
<input type="submit" name="cancel" value="Cancel"> <script language="JavaScript" type="text/javascript">
document.f.name.focus();
</form> function checkFields() {
}
<script language="JavaScript" type="text/javascript"> </script>
document.f.name.focus(); <jsp:include page="bottom.jsp" flush="true"/>
function checkFields() {
}
</script>
<jsp:include page="bottom.jsp" flush="true" />
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %> <%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c"%>
<%@ page import="java.text.DateFormat, <%@ page
import="java.text.DateFormat,
java.util.*, java.util.*,
org.jivesoftware.util.ParamUtils, org.jivesoftware.util.ParamUtils,
org.jivesoftware.admin.*, org.jivesoftware.admin.*,
org.xmpp.packet.JID, org.xmpp.packet.JID,
org.jivesoftware.messenger.group.GroupManager, org.jivesoftware.messenger.group.GroupManager,
org.jivesoftware.messenger.group.Group" org.jivesoftware.messenger.group.Group"%>
%>
<!-- Define Administration Bean --> <!-- Define Administration Bean -->
<jsp:useBean id="webManager" class="org.jivesoftware.util.WebManager" /> <jsp:useBean id="webManager" class="org.jivesoftware.util.WebManager"/>
<% webManager.init(pageContext); %> <%
webManager.init(pageContext);
%>
<% <%
// Get parameters // Get parameters
boolean add = request.getParameter("add") != null; boolean add = request.getParameter("add") != null;
boolean delete = request.getParameter("remove") != null; boolean delete = request.getParameter("remove") != null;
boolean update = request.getParameter("update") != null; boolean update = request.getParameter("update") != null;
String users = ParamUtils.getParameter(request,"users"); String users = ParamUtils.getParameter(request, "users");
String[] adminIDs = ParamUtils.getParameters(request,"admin"); String [] adminIDs = ParamUtils.getParameters(request, "admin");
String[] deleteMembers = ParamUtils.getParameters(request,"delete"); String [] deleteMembers = ParamUtils.getParameters(request, "delete");
String groupName = ParamUtils.getParameter(request, "group"); String groupName = ParamUtils.getParameter(request, "group");
GroupManager groupManager = webManager.getGroupManager(); GroupManager groupManager = webManager.getGroupManager();
Group group = groupManager.getGroup(groupName); Group group = groupManager.getGroup(groupName);
if (update) { if (update) {
Set adminIDSet = new HashSet(); Set adminIDSet = new HashSet();
for(int i=0;i<adminIDs.length; i++){ for (int i = 0; i < adminIDs.length; i++) {
String newAdmin = adminIDs[i]; String newAdmin = adminIDs[i];
adminIDSet.add(newAdmin); adminIDSet.add(newAdmin);
boolean isAlreadyAdmin = group.getAdmins().contains(newAdmin); boolean isAlreadyAdmin = group.getAdmins().contains(newAdmin);
if(!isAlreadyAdmin){ if (!isAlreadyAdmin) {
// Add new admin // Add new admin
group.getMembers().remove(newAdmin); group.getMembers().remove(newAdmin);
group.getAdmins().add(newAdmin); group.getAdmins().add(newAdmin);
} }
} }
Iterator groupIter = Collections.unmodifiableCollection(group.getAdmins()).iterator(); Iterator groupIter = Collections.unmodifiableCollection(group.getAdmins()).iterator();
Set removeList = new HashSet(); Set removeList = new HashSet();
while(groupIter.hasNext()){ while (groupIter.hasNext()) {
String m = (String)groupIter.next(); String m = (String) groupIter.next();
if(!adminIDSet.contains(m)){ if (!adminIDSet.contains(m)) {
removeList.add(m); removeList.add(m);
} }
} }
Iterator i = removeList.iterator(); Iterator i = removeList.iterator();
while(i.hasNext()){ while (i.hasNext()) {
String m = (String)i.next(); String m = (String) i.next();
group.getAdmins().remove(m); group.getAdmins().remove(m);
group.getMembers().add(m); group.getMembers().add(m);
} }
// Get admin list and compare it the admin posted list. // Get admin list and compare it the admin posted list.
response.sendRedirect("group-edit-form.jsp?group=" + groupName + "&updatesuccess=true"); response.sendRedirect("group-edit-form.jsp?group=" + groupName + "&updatesuccess=true");
return; return;
} }
else if (add && users != null){ else if (add && users != null) {
String hostName = webManager.getXMPPServer().getServerInfo().getName(); String hostName = webManager.getXMPPServer().getServerInfo().getName();
StringTokenizer tokenizer = new StringTokenizer(users, ","); StringTokenizer tokenizer = new StringTokenizer(users, ",");
while (tokenizer.hasMoreTokens()) { while (tokenizer.hasMoreTokens()) {
String tok = tokenizer.nextToken(); String tok = tokenizer.nextToken();
String address = tok; String address = tok;
if (address.indexOf("@") == -1) { if (address.indexOf("@") == -1) {
address = address + "@" + hostName; address = address + "@" + hostName;
} }
// Add To Group as member by default. // Add To Group as member by default.
if(!group.getMembers().contains(address) && !group.getAdmins().contains(address)){ if (!group.getMembers().contains(address) && !group.getAdmins().contains(address)) {
group.getMembers().add(address); group.getMembers().add(address);
} }
} }
response.sendRedirect("group-edit-form.jsp?group=" + groupName + "&success=true"); response.sendRedirect("group-edit-form.jsp?group=" + groupName + "&success=true");
return; return;
} }
else if (delete) { else if (delete) {
for (int i=0; i<deleteMembers.length; i++){ for (int i = 0; i < deleteMembers.length; i++) {
String member = deleteMembers[i]; String member = deleteMembers[i];
group.getMembers().remove(member); group.getMembers().remove(member);
group.getAdmins().remove(member); group.getAdmins().remove(member);
} }
response.sendRedirect("group-edit-form.jsp?group=" + groupName + "&deletesuccess=true"); response.sendRedirect("group-edit-form.jsp?group=" + groupName + "&deletesuccess=true");
return; return;
} }
DateFormat dateFormatter = DateFormat.getDateInstance(DateFormat.MEDIUM); DateFormat dateFormatter = DateFormat.getDateInstance(DateFormat.MEDIUM);
%> %>
<jsp:useBean id="pageinfo" scope="request" class="org.jivesoftware.admin.AdminPageBean"/>
<jsp:useBean id="pageinfo" scope="request" class="org.jivesoftware.admin.AdminPageBean" />
<% // Title of this page and breadcrumbs <% // Title of this page and breadcrumbs
String title = "Edit Group"; String title = "Edit Group";
pageinfo.setTitle(title); pageinfo.setTitle(title);
pageinfo.getBreadcrumbs().add(new AdminPageBean.Breadcrumb("Main", "index.jsp")); pageinfo.getBreadcrumbs().add(new AdminPageBean.Breadcrumb("Main", "index.jsp"));
pageinfo.getBreadcrumbs().add(new AdminPageBean.Breadcrumb(title, "group-summary.jsp")); pageinfo.getBreadcrumbs().add(new AdminPageBean.Breadcrumb(title, "group-summary.jsp"));
pageinfo.setPageID("group-summary"); pageinfo.setPageID("group-summary");
pageinfo.setExtraParams("group="+groupName); pageinfo.setExtraParams("group=" + groupName);
%>
<jsp:include page="top.jsp" flush="true"/>
<jsp:include page="title.jsp" flush="true"/>
<script language="JavaScript" type="text/javascript">
function openWin(el) {
var win = window.open(
'user-browser.jsp?formName=f&elName=agents', 'newWin',
'width=500,height=550,menubar=yes,location=no,personalbar=no,scrollbars=yes,resize=yes');
}
</script>
<p>
Below is a summary of properties for the group as well as admins and members. Use the forms on the page to add
members and optionally designate them as groups administrators.
</p>
<%
if ("true".equals(request.getParameter("success"))) {
%> %>
<jsp:include page="top.jsp" flush="true" />
<jsp:include page="title.jsp" flush="true" />
<script language="JavaScript" type="text/javascript">
function openWin(el) {
var win = window.open('user-browser.jsp?formName=f&elName=agents','newWin','width=500,height=550,menubar=yes,location=no,personalbar=no,scrollbars=yes,resize=yes');
}
</script>
<p>
Below is a summary of properties for the group as well as admins and members. Use the forms
on the page to add members and optionally designate them as groups administrators.
</p>
<% if ("true".equals(request.getParameter("success"))) { %>
<p class="jive-success-text"> <p class="jive-success-text">
User(s) added successfully. User(s) added successfully.
</p> </p>
<%
<% } else if ("true".equals(request.getParameter("deletesuccess"))) { %> }
else if ("true".equals(request.getParameter("deletesuccess"))) {
%>
<p class="jive-success-text"> <p class="jive-success-text">
User(s) deleted successfully. User(s) deleted successfully.
</p> </p>
<%
<% } else if ("true".equals(request.getParameter("updatesuccess"))) { %> }
else if ("true".equals(request.getParameter("updatesuccess"))) {
%>
<p class="jive-success-text"> <p class="jive-success-text">
User(s) updated successfully. User(s) updated successfully.
</p> </p>
<%
<% } %> }
%>
<fieldset><legend>User Group Summary</legend> <fieldset>
<table cellpadding="3" cellspacing="1" border="0" > <legend>
<tr> User Group Summary
</legend>
<table cellpadding="3" cellspacing="1" border="0">
<tr>
<td class="c1"> <td class="c1">
Name: Name:
</td> </td>
<td class="c2"> <td class="c2">
<b><%= group.getName() %></b> <b><%= group.getName() %></b>
</td> </td>
</tr> </tr>
<tr> <tr>
<td class="c1"> <td class="c1">
Description: Description:
</td> </td>
<td class="c2"> <td class="c2">
<%= ((group.getDescription()!=null) ? group.getDescription() : "No Description") %> <%= ((group.getDescription() != null) ? group.getDescription() : "No Description") %>
</td> </td>
</tr> </tr>
</table> </table>
</fieldset> </fieldset>
<br> <br>
<form action="group-edit-form.jsp" method="post" name="f">
<input type="hidden" name="group" value="<%= groupName %>">
<table cellpadding="3" cellspacing="1" border="0"> <form action="group-edit-form.jsp" method="post" name="f">
<tr> <input type="hidden" name="group" value="<%= groupName %>">
<input type="hidden" name="add" value="Add"/>
<table cellpadding="3" cellspacing="1" border="0">
<tr>
<td nowrap width="1%"> <td nowrap width="1%">
Add User(s): Add User(s):
</td> </td>
<td nowrap class="c1" align="left"> <td nowrap class="c1" align="left">
<input type="text" size="40" name="users" /> <input type="text" size="40" name="users"/>
&nbsp;<input type="submit" name="add" value="Add"> &nbsp;<input type="submit" name="addbutton" value="Add">
</td> </td>
</tr> </tr>
<td width="1%"></td><td nowrap align="left" class="jive-description">Comma delimited list. Example: "user1@site.com", "user2@site.com" </td> <td width="1%">
</tr> </td>
<td nowrap align="left" class="jive-description">
</table> Comma delimited list. Example: "user1@site.com", "user2@site.com"
</td>
</tr>
</table>
</form>
</form>
<form action="group-edit-form.jsp" method="post" name="main">
<input type="hidden" name="group" value="<%= groupName %>">
<table class="jive-table" cellpadding="3" cellspacing="0" border="0" width="600">
<tr>
<th width="10%">Name</th>
<th width="60%">Address</th>
<th>Admin</th>
<th>Remove</th>
</tr>
<!-- Add admins first --> <form action="group-edit-form.jsp" method="post" name="main">
<input type="hidden" name="group" value="<%= groupName %>">
<table class="jive-table" cellpadding="3" cellspacing="0" border="0" width="600">
<tr>
<th width="10%">Name</th> <th width="60%">Address</th> <th>Admin</th> <th>Remove</th>
</tr>
<!-- Add admins first -->
<% <%
int memberCount = group.getCachedSize(); int memberCount = group.getCachedSize();
Iterator members = group.getMembers().iterator(); Iterator members = group.getMembers().iterator();
Iterator admins = group.getAdmins().iterator(); Iterator admins = group.getAdmins().iterator();
%> %>
<% <%
if (memberCount == 0) { %> if (memberCount == 0) {
%>
<tr> <tr>
<td align="center" colspan="4"> <td align="center" colspan="4">
<br> <br>
No members in this group. Use the form above to add some. No members in this group. Use the form above to add some.
<br><br> <br>
<br>
</td> </td>
</tr> </tr>
<%
<% } %> }
%>
<% <%
boolean showUpdateButtons = memberCount > 0; boolean showUpdateButtons = memberCount > 0;
while (admins.hasNext()) { while (admins.hasNext()) {
String adminName = (String)admins.next(); String adminName = (String) admins.next();
JID adminJID = new JID(adminName); JID adminJID = new JID(adminName);
%> %>
<tr> <tr>
<td><%= adminJID.getNode() %></td> <td><%= adminJID.getNode() %>
<td><%= adminName %></td> </td>
<td><%= adminName %>
</td>
<td> <td>
<input type="checkbox" name="admin" value="<%= adminName %>" checked> <input type="checkbox" name="admin" value="<%= adminName %>" checked>
</td> </td>
...@@ -244,44 +217,50 @@ on the page to add members and optionally designate them as groups administrator ...@@ -244,44 +217,50 @@ on the page to add members and optionally designate them as groups administrator
<input type="checkbox" name="delete" value="<%= adminName %>"> <input type="checkbox" name="delete" value="<%= adminName %>">
</td> </td>
</tr> </tr>
<%
<% } %> }
%>
<% <%
while (members.hasNext()) { while (members.hasNext()) {
String member = (String)members.next(); String member = (String) members.next();
JID memberJID = new JID(member); JID memberJID = new JID(member);
%> %>
<tr> <tr>
<td><%= memberJID.getNode() %></td> <td><%= memberJID.getNode() %>
<td><%= member %></td> </td>
<td><%= member %>
</td>
<td> <td>
<input type="checkbox" name="admin" value="<%= member %>"> <input type="checkbox" name="admin" value="<%= member %>">
</td> </td>
<td align="center"> <td align="center">
<input type="checkbox" name="delete" value="<%= member%>"> <input type="checkbox" name="delete" value="<%= member %>">
</td> </td>
</tr> </tr>
<%
<% } %> }
%>
<% if (showUpdateButtons) { %> <%
if (showUpdateButtons) {
%>
<tr> <tr>
<td colspan="2">&nbsp;</td> <td colspan="2">
<td align="center"><input type="submit" name="update" value="Update"></td> &nbsp;
<td align="center"><input type="submit" name="remove" value="Remove"></td> </td>
<td align="center">
<input type="submit" name="update" value="Update">
</td>
<td align="center">
<input type="submit" name="remove" value="Remove">
</td>
</tr> </tr>
<%
<% } %> }
%>
</table> </table>
</div> </div>
</form> </form>
<jsp:include page="footer.jsp" flush="true"/>
<jsp:include page="footer.jsp" flush="true" /> <script>
document.f.users.focus();
<script> </script>
document.f.users.focus();
</script>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment