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);
%> %>
<% // Get parameters //
<%@ 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 //
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,122 +54,139 @@ ...@@ -58,122 +54,139 @@
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);
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-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>
<tr><td class="jive-icon"><img src="images/success-16x16.gif" width="16" height="16" border="0"></td> <td class="jive-icon">
<td class="jive-icon-label"> <img src="images/success-16x16.gif" width="16" height="16" border="0">
Error creating the group. Please check your error logs. </td>
</td></tr> <td class="jive-icon-label">
</tbody> Error creating the group. Please check your error logs.
</table> </td>
</div><br> </tr>
</tbody>
<% } %> </table>
</div>
<p>Use the form below to create a new group.</p> <br>
<%
<form name="f" action="group-create.jsp" method="post"> }
%>
<fieldset> <p>
<legend>Create New Group</legend> Use the form below to create a new group.</p>
<div> <form name="f" action="group-create.jsp" method="post">
<table cellpadding="3" cellspacing="0" border="0" width="100%"> <fieldset>
<tr valign="top"> <legend>
<td width="1%" nowrap> Create New Group
<label for="gname">Group Name:</label> * </legend>
</td> <div>
<td width="99%"> <table cellpadding="3" cellspacing="0" border="0" width="100%">
<input type="text" name="name" size="30" maxlength="75" value="<%= ((name!=null) ? name : "") %>" <tr valign="top">
id="gname"> <td width="1%" nowrap>
<label for="gname">Group Name:</label>
<% if (errors.get("name") != null) { %> *
</td>
<span class="jive-error-text"> <td width="99%">
Invalid name. <input type="text" name="name" size="30" maxlength="75"
</span> value="<%= ((name != null) ? name : "") %>" id="gname">
<%
<% } else if (errors.get("groupAlreadyExists") != null) { %> if (errors.get("name") != null) {
%>
<span class="jive-error-text"> <span class="jive-error-text"> Invalid name. </span>
Group already exists - please choose a different name. <%
</span> }
else if (errors.get("groupAlreadyExists") != null) {
<% } %> %>
</td> <span class="jive-error-text"> Group already exists - please choose a different
</tr> name. </span>
<tr valign="top"> <%
<td width="1%" nowrap> }
<label for="gdesc">Description:</label> %>
</td> </td>
<td width="99%"> </tr>
<textarea name="description" cols="30" rows="5" id="gdesc" <tr valign="top">
><%= ((description!=null) ? description : "") %></textarea> <td width="1%" nowrap>
<label for="gdesc">Description:</label>
<% if (errors.get("description") != null) { %> </td>
<td width="99%">
<span class="jive-error-text"> <textarea name="description" cols="30" rows="5" id="gdesc"><%= ((description != null) ? description : "") %></textarea>
Invalid description. <%
</span> if (errors.get("description") != null) {
%>
<% } %> <span class="jive-error-text"> Invalid description. </span>
</td> <%
</tr> }
</table> %>
<br> </td>
<span class="jive-description"> </tr>
* Required fields <tr>
</span> <td nowrap width="1%">
</div> Add User(s):
</fieldset> </td>
<td nowrap class="c1" align="left">
<br><br> <input type="text" size="40" name="users"/>
&nbsp;
<input type="submit" name="create" value="Create Group"> </td>
<input type="submit" name="cancel" value="Cancel"> </tr>
<td width="1%">
</form> </td>
<td nowrap align="left" class="jive-description">
<script language="JavaScript" type="text/javascript"> Comma delimited list. Example: "user1@site.com", "user2@site.com"
document.f.name.focus(); </td>
</tr>
function checkFields() { </table>
<br>
} <span class="jive-description"> * Required fields </span>
</script> </div>
</fieldset>
<jsp:include page="bottom.jsp" flush="true" /> <br>
<br>
<input type="submit" name="create" value="Create Group"> <input type="submit" name="cancel" value="Cancel">
</form>
<script language="JavaScript" type="text/javascript">
document.f.name.focus();
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="top.jsp" flush="true" /> <jsp:include page="title.jsp" flush="true"/>
<jsp:include page="title.jsp" flush="true" /> <script language="JavaScript" type="text/javascript">
function openWin(el) {
var win = window.open(
<script language="JavaScript" type="text/javascript"> 'user-browser.jsp?formName=f&elName=agents', 'newWin',
function openWin(el) { 'width=500,height=550,menubar=yes,location=no,personalbar=no,scrollbars=yes,resize=yes');
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>
</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
<p> members and optionally designate them as groups administrators.
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">
User(s) added successfully.
</p>
<% } else if ("true".equals(request.getParameter("deletesuccess"))) { %>
<p class="jive-success-text">
User(s) deleted successfully.
</p>
<% } else if ("true".equals(request.getParameter("updatesuccess"))) { %>
<p class="jive-success-text">
User(s) updated successfully.
</p> </p>
<%
<% } %> if ("true".equals(request.getParameter("success"))) {
%>
<fieldset><legend>User Group Summary</legend> <p class="jive-success-text">
<table cellpadding="3" cellspacing="1" border="0" > User(s) added successfully.
<tr> </p>
<td class="c1"> <%
Name: }
</td> else if ("true".equals(request.getParameter("deletesuccess"))) {
<td class="c2"> %>
<b><%= group.getName() %></b> <p class="jive-success-text">
</td> User(s) deleted successfully.
</tr> </p>
<tr> <%
<td class="c1"> }
Description: else if ("true".equals(request.getParameter("updatesuccess"))) {
</td> %>
<td class="c2"> <p class="jive-success-text">
<%= ((group.getDescription()!=null) ? group.getDescription() : "No Description") %> User(s) updated successfully.
</td> </p>
</tr> <%
</table> }
</fieldset> %>
<br> <fieldset>
<legend>
User Group Summary
<form action="group-edit-form.jsp" method="post" name="f"> </legend>
<input type="hidden" name="group" value="<%= groupName %>"> <table cellpadding="3" cellspacing="1" border="0">
<tr>
<table cellpadding="3" cellspacing="1" border="0"> <td class="c1">
<tr> Name:
<td nowrap width="1%"> </td>
Add User(s): <td class="c2">
</td> <b><%= group.getName() %></b>
<td nowrap class="c1" align="left"> </td>
<input type="text" size="40" name="users" /> </tr>
&nbsp;<input type="submit" name="add" value="Add"> <tr>
<td class="c1">
Description:
</td>
<td class="c2">
<%= ((group.getDescription() != null) ? group.getDescription() : "No Description") %>
</td>
</tr>
</table>
</fieldset>
<br>
<form action="group-edit-form.jsp" method="post" name="f">
<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%">
Add User(s):
</td>
<td nowrap class="c1" align="left">
<input type="text" size="40" name="users"/>
&nbsp;<input type="submit" name="addbutton" value="Add">
</td>
</tr>
<td width="1%">
</td> </td>
</tr> <td nowrap align="left" class="jive-description">
<td width="1%"></td><td nowrap align="left" class="jive-description">Comma delimited list. Example: "user1@site.com", "user2@site.com" </td> Comma delimited list. Example: "user1@site.com", "user2@site.com"
</tr> </td>
</tr>
</table> </table>
</form>
<form action="group-edit-form.jsp" method="post" name="main">
<input type="hidden" name="group" value="<%= groupName %>">
</form> <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>
</td> <br>
</tr> </td>
</tr>
<% } %>
<% <%
boolean showUpdateButtons = memberCount > 0; }
while (admins.hasNext()) {
String adminName = (String)admins.next();
JID adminJID = new JID(adminName);
%> %>
<tr>
<td><%= adminJID.getNode() %></td>
<td><%= adminName %></td>
<td>
<input type="checkbox" name="admin" value="<%= adminName %>" checked>
</td>
<td align="center">
<input type="checkbox" name="delete" value="<%= adminName %>">
</td>
</tr>
<% } %>
<% <%
while (members.hasNext()) { boolean showUpdateButtons = memberCount > 0;
String member = (String)members.next(); while (admins.hasNext()) {
JID memberJID = new JID(member); String adminName = (String) admins.next();
JID adminJID = new JID(adminName);
%> %>
<tr> <tr>
<td><%= memberJID.getNode() %></td> <td><%= adminJID.getNode() %>
<td><%= member %></td> </td>
<td> <td><%= adminName %>
<input type="checkbox" name="admin" value="<%= member %>"> </td>
</td> <td>
<td align="center"> <input type="checkbox" name="admin" value="<%= adminName %>" checked>
<input type="checkbox" name="delete" value="<%= member%>"> </td>
</td> <td align="center">
</tr> <input type="checkbox" name="delete" value="<%= adminName %>">
</td>
<% } %> </tr>
<%
<% if (showUpdateButtons) { %> }
%>
<tr> <%
<td colspan="2">&nbsp;</td> while (members.hasNext()) {
<td align="center"><input type="submit" name="update" value="Update"></td> String member = (String) members.next();
<td align="center"><input type="submit" name="remove" value="Remove"></td> JID memberJID = new JID(member);
</tr> %>
<tr>
<% } %> <td><%= memberJID.getNode() %>
</td>
</table> <td><%= member %>
</div> </td>
</form> <td>
<input type="checkbox" name="admin" value="<%= member %>">
<jsp:include page="footer.jsp" flush="true" /> </td>
<td align="center">
<script> <input type="checkbox" name="delete" value="<%= member %>">
document.f.users.focus(); </td>
</script> </tr>
\ No newline at end of file <%
}
%>
<%
if (showUpdateButtons) {
%>
<tr>
<td colspan="2">
&nbsp;
</td>
<td align="center">
<input type="submit" name="update" value="Update">
</td>
<td align="center">
<input type="submit" name="remove" value="Remove">
</td>
</tr>
<%
}
%>
</table>
</div>
</form>
<jsp:include page="footer.jsp" flush="true"/>
<script>
document.f.users.focus();
</script>
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