Commit 9b512c27 authored by Daniel Henninger's avatar Daniel Henninger Committed by dhenninger

[JM-65] Added edit and add support to roster viewer.

git-svn-id: http://svn.igniterealtime.org/svn/repos/openfire/trunk@8743 b35dd754-fafc-0310-a699-88a17e54d16e
parent 1da0b7f8
......@@ -201,6 +201,23 @@
## Added key: 'user.roster.delete.info'
## Added key: 'sidebar.user-roster'
## Added key: 'sidebar.user-roster.descr'
## Added key: 'user.roster.edit'
## Added key: 'user.roster.add'
## Added key: 'user.roster.edited'
## Added key: 'user.roster.edit.title'
## Added key: 'user.roster.edit.info'
## Added key: 'user.roster.added'
## Added key: 'user.roster.add.title'
## Added key: 'user.roster.add.info'
## Added key: 'user.roster.add.error_adding_item'
## Added key: 'user.roster.add.item_exists'
## Added key: 'user.roster.add.uneditable_group'
## Added key: 'user.roster.add.success'
## Added key: 'user.roster.add.new_item'
## Added key: 'user.roster.add.add'
## Added key: 'user.roster.add.add_another'
## Added key: 'user.roster.add.required'
## Added key: 'user.roster.item.settings'
# Openfire
......@@ -1901,11 +1918,28 @@ user.roster.subscription=Subscription
user.roster.total_items=Total Items
user.roster.sorted=Sorted by JID
user.roster.items_per_page=Items per page
user.roster.edit=Edit
user.roster.add=Add New Item
user.roster.none_found=No roster items found.
user.roster.deleted=Roster item deleted successfully.
user.roster.delete.title=Delete Roster Item
user.roster.delete.delete=Delete Roster Item
user.roster.delete.info=Are you sure you want to delete the JID {0} from the roster of {1}?
user.roster.edited=Roster item edited successfully.
user.roster.edit.title=Edit Roster Item
user.roster.edit.info=Use the form below to edit the roster item of user {0}.
user.roster.added=Roster item added successfully.
user.roster.add.title=Add Roster Item
user.roster.add.info=Use the form below to add a new roster item for user {0}.
user.roster.add.error_adding_item=Error adding roster item. Please check your server logs.
user.roster.add.item_exists=Roster item of the same JID already exists.
user.roster.add.uneditable_group=Attempted to remove item from a group that is not editable. (probably a shared group)
user.roster.add.success=Successfully added roster item.
user.roster.add.new_item=Add New Roster Item
user.roster.add.add=Add Item
user.roster.add.add_another=Add & Add Another
user.roster.add.required=Required fields
user.roster.item.settings=Roster Item Settings
# User search Page
......
<%--
- $Revision$
- $Date$
-
- Copyright (C) 2007 Jive Software. All rights reserved.
-
- This software is published under the terms of the GNU Public License (GPL),
- a copy of which is included in this distribution.
--%>
<%@ page import="org.jivesoftware.util.*,
java.net.URLEncoder"
errorPage="error.jsp"
%>
<%@ page import="java.util.Map"%>
<%@ page import="java.util.HashMap"%><%@ page import="org.xmpp.packet.JID"%>
<%@ page import="org.jivesoftware.openfire.roster.Roster" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="org.jivesoftware.openfire.user.UserAlreadyExistsException" %>
<%@ page import="org.jivesoftware.openfire.SharedGroupException" %>
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jstl/fmt_rt" prefix="fmt" %>
<jsp:useBean id="webManager" class="org.jivesoftware.util.WebManager" />
<% webManager.init(request, response, session, application, out ); %>
<% // Get parameters //
boolean another = request.getParameter("another") != null;
boolean add = another || request.getParameter("add") != null;
boolean cancel = request.getParameter("cancel") != null;
String username = ParamUtils.getParameter(request, "username");
String jid = ParamUtils.getParameter(request, "jid");
String nickname = ParamUtils.getParameter(request, "nickname");
String groups = ParamUtils.getParameter(request, "groups");
Map<String, String> errors = new HashMap<String, String>();
// Handle a cancel
if (cancel) {
response.sendRedirect("user-roster.jsp?username=" + URLEncoder.encode(username, "UTF-8"));
return;
}
// Handle a request to create a user:
if (add) {
// do an add if there were no errors
if (errors.size() == 0) {
try {
// Load the user's roster object
Roster roster = webManager.getRosterManager().getRoster(username);
List<String> groupList = new ArrayList<String>();
if (groups != null) {
for (String group : groups.split(",")) {
groupList.add(group.trim());
}
}
// Load the roster item from the user's roster.
roster.createRosterItem(new JID(jid), nickname, groupList, true, true);
// Successful, so redirect
if (another) {
response.sendRedirect("user-roster-add.jsp?success=true&username=" + URLEncoder.encode(username, "UTF-8"));
} else {
response.sendRedirect("user-roster.jsp?username=" + URLEncoder.encode(username, "UTF-8") + "&addsuccess=true");
}
return;
}
catch (UserAlreadyExistsException e) {
errors.put("usernameAlreadyExists","");
}
catch (SharedGroupException e) {
errors.put("uneditableGroup","");
}
catch (Exception e) {
errors.put("general","");
Log.error(e);
}
}
}
%>
<html>
<head>
<title><fmt:message key="user.roster.add.title"/></title>
<meta name="subPageID" content="user-roster"/>
<meta name="extraParams" content="<%= "username="+URLEncoder.encode(username, "UTF-8") %>"/>
</head>
<body>
<p>
<fmt:message key="user.roster.add.info">
<fmt:param value="<%= username %>"/>
</fmt:message>
</p>
<%--<c:set var="submit" value="${param.create}"/>--%>
<%--<c:set var="errors" value="${errors}"/>--%>
<% if (!errors.isEmpty()) { %>
<div class="jive-error">
<table cellpadding="0" cellspacing="0" border="0">
<tbody>
<tr>
<td class="jive-icon"><img src="images/error-16x16.gif" width="16" height="16" border="0" alt=""/></td>
<td class="jive-icon-label">
<% if (errors.get("general") != null) { %>
<fmt:message key="user.roster.add.error_adding_item" />
<% } else if (errors.get("usernameAlreadyExists") != null) { %>
<fmt:message key="user.roster.add.item_exists" />
<% } else if (errors.get("uneditableGroup") != null) { %>
<fmt:message key="user.roster.add.uneditable_group" />
<% } %>
</td>
</tr>
</tbody>
</table>
</div>
<br>
<% } else if (request.getParameter("success") != null) { %>
<div class="jive-success">
<table cellpadding="0" cellspacing="0" border="0">
<tbody>
<tr><td class="jive-icon"><img src="images/success-16x16.gif" width="16" height="16" border="0" alt=""></td>
<td class="jive-icon-label">
<fmt:message key="user.roster.add.success" />
</td></tr>
</tbody>
</table>
</div><br>
<% } %>
<form name="f" action="user-roster-add.jsp" method="get">
<input type="hidden" name="username" value="<%= username %>">
<div class="jive-contentBoxHeader">
<fmt:message key="user.roster.add.new_item" />
</div>
<div class="jive-contentBox">
<table cellpadding="3" cellspacing="0" border="0">
<tbody>
<tr>
<td width="1%" nowrap><label for="jidtf"><fmt:message key="user.roster.jid" />:</label> *</td>
<td width="99%">
<input type="text" name="jid" size="30" maxlength="255" value="<%= ((jid!=null) ? jid : "") %>"
id="jidtf">
</td>
</tr>
<tr>
<td width="1%" nowrap>
<label for="nicknametf"><fmt:message key="user.roster.nickname" />:</label>
</td>
<td width="99%">
<input type="text" name="nickname" size="30" maxlength="255" value="<%= ((nickname!=null) ? nickname : "") %>"
id="nicknametf">
</td>
</tr>
<tr>
<td width="1%" nowrap>
<label for="groupstf"><fmt:message key="user.roster.groups" />:</label></td>
<td width="99%">
<input type="text" name="email" size="30" maxlength="255" value="<%= ((groups!=null) ? groups : "") %>"
id="groupstf">
</td>
</tr>
<tr>
<td colspan="2" style="padding-top: 10px;">
<input type="submit" name="add" value="<fmt:message key="user.roster.add.add" />">
<input type="submit" name="another" value="<fmt:message key="user.roster.add.add_another" />">
<input type="submit" name="cancel" value="<fmt:message key="global.cancel" />"></td>
</tr>
</tbody>
</table>
</div>
<span class="jive-description">
* <fmt:message key="user.roster.add.required" />
</span>
</form>
<script language="JavaScript" type="text/javascript">
document.f.jid.focus();
</script>
</body>
</html>
\ No newline at end of file
......@@ -21,7 +21,7 @@
<jsp:useBean id="webManager" class="org.jivesoftware.util.WebManager" />
<% webManager.init(request, response, session, application, out ); %>
<% // Get parameters //
<% // Get parameters
boolean cancel = request.getParameter("cancel") != null;
boolean delete = request.getParameter("delete") != null;
String username = ParamUtils.getParameter(request, "username");
......@@ -50,14 +50,14 @@
<head>
<title><fmt:message key="user.roster.delete.title"/></title>
<meta name="subPageID" content="user-roster"/>
<meta name="extraParams" content="<%= "username="+URLEncoder.encode(username, "UTF-8")+"&jid="+URLEncoder.encode(jid, "UTF-8") %>"/>
<meta name="extraParams" content="<%= "username="+URLEncoder.encode(username, "UTF-8") %>"/>
</head>
<body>
<p>
<fmt:message key="user.roster.delete.info">
<fmt:param value="<%= "<b>"+URLEncoder.encode(jid, "UTF-8")+"</b>" %>" />
<fmt:param value="<%= "<b>"+URLEncoder.encode(username, "UTF-8")+"</b>" %>" />
<fmt:param value="<%= "<b>"+jid+"</b>" %>" />
<fmt:param value="<%= "<b>"+username+"</b>" %>" />
</fmt:message>
</p>
......
<%--
- $Revision$
- $Date$
-
- Copyright (C) 2007 Jive Software. All rights reserved.
-
- This software is published under the terms of the GNU Public License (GPL),
- a copy of which is included in this distribution.
--%>
<%@ page import="org.jivesoftware.util.ParamUtils,
java.net.URLEncoder"
errorPage="error.jsp"
%><%@ page import="org.xmpp.packet.JID"%>
<%@ page import="org.jivesoftware.openfire.roster.Roster" %>
<%@ page import="org.jivesoftware.openfire.roster.RosterItem" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jstl/fmt_rt" prefix="fmt" %>
<jsp:useBean id="webManager" class="org.jivesoftware.util.WebManager" />
<% // Get parameters
boolean cancel = request.getParameter("cancel") != null;
String username = ParamUtils.getParameter(request, "username");
String jid = ParamUtils.getParameter(request, "jid");
String nickname = ParamUtils.getParameter(request, "nickname");
String groups = ParamUtils.getParameter(request, "groups");
Integer sub = ParamUtils.getIntParameter(request, "sub", 0);
boolean save = ParamUtils.getBooleanParameter(request, "save");
// Handle a cancel
if (cancel) {
response.sendRedirect("user-roster.jsp?username=" + URLEncoder.encode(username, "UTF-8"));
return;
}
// Load the user's roster object
Roster roster = webManager.getRosterManager().getRoster(username);
// Load the roster item from the user's roster.
RosterItem item = roster.getRosterItem(new JID(jid));
// Handle a roster item delete:
if (save) {
List<String> groupList = new ArrayList<String>();
if (groups != null) {
for (String group : groups.split(",")) {
groupList.add(group.trim());
}
}
item.setNickname(nickname);
item.setGroups(groupList);
item.setSubStatus(RosterItem.SubType.getTypeFromInt(sub));
// Delete the roster item
roster.updateRosterItem(item);
// Done, so redirect
response.sendRedirect("user-roster.jsp?username=" + URLEncoder.encode(username, "UTF-8") + "&editsuccess=true");
return;
}
%>
<html>
<head>
<title><fmt:message key="user.roster.edit.title"/></title>
<meta name="subPageID" content="user-roster"/>
<meta name="extraParams" content="<%= "username="+URLEncoder.encode(username, "UTF-8") %>"/>
</head>
<body>
<p>
<fmt:message key="user.roster.edit.info">
<fmt:param value="<%= username %>"/>
</fmt:message>
</p>
<form action="user-roster-edit.jsp">
<input type="hidden" name="username" value="<%= username %>">
<input type="hidden" name="jid" value="<%= jid %>">
<input type="hidden" name="save" value="true">
<fieldset>
<legend><fmt:message key="user.roster.item.settings" /></legend>
<div>
<table cellpadding="3" cellspacing="0" border="0" width="100%">
<tbody>
<tr>
<td class="c1">
<fmt:message key="user.roster.jid" />:
</td>
<td>
<%= jid %>
</td>
</tr>
<tr>
<td class="c1">
<fmt:message key="user.roster.nickname" />:
</td>
<td>
<input type="text" size="30" maxlength="150" name="nickname"
value="<%= item.getNickname() %>">
</td>
</tr>
<tr>
<td class="c1">
<fmt:message key="user.roster.groups" />:
</td>
<td>
<input type="text" size="30" maxlength="255" name="groups"
value="<%
List<String> groupList = item.getGroups();
if (!groupList.isEmpty()) {
int count = 0;
for (String group : groupList) {
if (count != 0) {
out.print(",");
}
out.print(group);
count++;
}
}
%>">
</td>
</tr>
<tr>
<td class="c1">
<fmt:message key="user.roster.subscription" />:
</td>
<td>
<select name="sub">
<option value="<%= RosterItem.SUB_REMOVE.getValue() %>"<%= item.getSubStatus() == RosterItem.SUB_REMOVE ? " SELECTED" : "" %>>Remove</option>
<option value="<%= RosterItem.SUB_NONE.getValue() %>"<%= item.getSubStatus() == RosterItem.SUB_NONE ? " SELECTED" : "" %>>None</option>
<option value="<%= RosterItem.SUB_TO.getValue() %>"<%= item.getSubStatus() == RosterItem.SUB_TO ? " SELECTED" : "" %>>To</option>
<option value="<%= RosterItem.SUB_FROM.getValue() %>"<%= item.getSubStatus() == RosterItem.SUB_FROM ? " SELECTED" : "" %>>From</option>
<option value="<%= RosterItem.SUB_BOTH.getValue() %>"<%= item.getSubStatus() == RosterItem.SUB_BOTH ? " SELECTED" : "" %>>Both</option>
</select>
</td>
</tr>
</tbody>
</table>
</div>
</fieldset>
<br><br>
<input type="submit" value="<fmt:message key="global.save" />">
<input type="submit" name="cancel" value="<fmt:message key="global.cancel" />">
</form>
</body>
</html>
\ No newline at end of file
......@@ -69,6 +69,36 @@
</head>
<body>
<% if (request.getParameter("addsuccess") != null) { %>
<div class="jive-success">
<table cellpadding="0" cellspacing="0" border="0">
<tbody>
<tr><td class="jive-icon"><img src="images/success-16x16.gif" alt="" width="16" height="16" border="0"></td>
<td class="jive-icon-label">
<fmt:message key="user.roster.added" />
</td></tr>
</tbody>
</table>
</div><br>
<% } %>
<% if (request.getParameter("editsuccess") != null) { %>
<div class="jive-success">
<table cellpadding="0" cellspacing="0" border="0">
<tbody>
<tr><td class="jive-icon"><img src="images/success-16x16.gif" alt="" width="16" height="16" border="0"></td>
<td class="jive-icon-label">
<fmt:message key="user.roster.edited" />
</td></tr>
</tbody>
</table>
</div><br>
<% } %>
<% if (request.getParameter("deletesuccess") != null) { %>
<div class="jive-success">
......@@ -90,6 +120,9 @@
</fmt:message>
</p>
<div style="float:right; background-color: #ffffff; border: 0.0px solid #005500; vertical-align: middle">
<a style="color: #007700; font-weight: bold; vertical-align: middle; text-decoration: none" href="user-roster-add.jsp?username=<%= URLEncoder.encode(username, "UTF-8") %>"><fmt:message key="user.roster.add"/><img src="images/add-16x16.gif" alt="" width="16" height="16" border="0" align="absmiddle"></a>
</div>
<p>
<fmt:message key="user.roster.total_items" />:
<b><%= LocaleUtils.getLocalizedNumber(rosterCount) %></b> --
......@@ -135,10 +168,10 @@
<%
}
int i = 0;
for (i=s; i<numPages && i<num; i++) {
String sep = ((i+1)<numPages) ? " " : "";
boolean isCurrent = (i+1) == curPage;
int i;
for (i = s; i < numPages && i < num; i++) {
String sep = ((i + 1) < numPages) ? " " : "";
boolean isCurrent = (i + 1) == curPage;
%>
<a href="user-roster.jsp?username=<%= URLEncoder.encode(username, "UTF-8") %>&start=<%= (i*range) %>&range=<%= range %>"
class="<%= ((isCurrent) ? "jive-current" : "") %>"
......@@ -167,6 +200,7 @@
<th nowrap><fmt:message key="user.roster.nickname" /></th>
<th nowrap><fmt:message key="user.roster.groups" /></th>
<th nowrap><fmt:message key="user.roster.subscription" /></th>
<th nowrap><fmt:message key="user.roster.edit" /></th>
<th nowrap><fmt:message key="global.delete" /></th>
</tr>
</thead>
......@@ -175,7 +209,7 @@
if (roster == null) {
%>
<tr>
<td colspan="6" align="center">
<td colspan="7" align="center">
<fmt:message key="error.requested_user_not_found" />
</td>
</tr>
......@@ -183,7 +217,7 @@
} else if (roster.getRosterItems().size() < 1) {
%>
<tr>
<td colspan="6" align="center">
<td colspan="7" align="center">
<i><fmt:message key="user.roster.none_found" /></i>
</td>
</tr>
......@@ -235,6 +269,11 @@
<td>
<%= rosterItem.getSubStatus().getName() %>
</td>
<td width="1%" align="center">
<a href="user-roster-edit.jsp?username=<%= URLEncoder.encode(username, "UTF-8") %>&jid=<%= URLEncoder.encode(rosterItem.getJid().toString(), "UTF-8") %>"
title="<fmt:message key="global.click_edit" />"
><img src="images/edit-16x16.gif" width="16" height="16" border="0" alt="<fmt:message key="global.click_edit" />"></a>
</td>
<td width="1%" align="center" style="border-right:1px #ccc solid;">
<a href="user-roster-delete.jsp?username=<%= URLEncoder.encode(username, "UTF-8") %>&jid=<%= URLEncoder.encode(rosterItem.getJid().toString(), "UTF-8") %>"
title="<fmt:message key="global.click_delete" />"
......
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