<%-- - $RCSfile$ - $Revision$ - $Date$ - - Copyright (C) 2002-2003 Jive Software. All rights reserved. - - The Jive Software License (based on Apache Software License, Version 1.1) - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. - - 3. The end-user documentation included with the redistribution, - if any, must include the following acknowledgment: - "This product includes software developed by - Jive Software (http://www.jivesoftware.com)." - Alternately, this acknowledgment may appear in the software itself, - if and wherever such third-party acknowledgments normally appear. - - 4. The names "Smack" and "Jive Software" must not be used to - endorse or promote products derived from this software without - prior written permission. For written permission, please - contact webmaster@jivesoftware.com. - - 5. Products derived from this software may not be called "Smack", - nor may "Smack" appear in their name, without prior written - permission of Jive Software. - - THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - DISCLAIMED. IN NO EVENT SHALL JIVE SOFTWARE OR - ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - SUCH DAMAGE. --%> <%@ page import="java.util.*, org.jivesoftware.smack.*, org.jivesoftware.smack.packet.*, org.jivesoftware.smack.util.*"%> <%@ include file="global.jsp" %> <% // If we don't have a valid connection then proceed to login XMPPConnection conn = (XMPPConnection) session.getAttribute("connection"); if (conn == null || !conn.isConnected()) { response.sendRedirect("login.jsp"); return; } Roster roster = conn.getRoster(); // Get parameters String action = getParameter(request, "action"); String user = getParameter(request, "user"); String fromGroup = getParameter(request, "fromGroup"); String toGroup = getParameter(request, "toGroup"); // Move the entry from the existing group to a new group if ("move".equals(action)) { RosterEntry entry = roster.getEntry(user); // Remove the entry from the existing group RosterGroup rosterGroup = roster.getGroup(fromGroup); rosterGroup.removeEntry(entry); // Get the new group or create it if it doesn't exist rosterGroup = roster.getGroup(toGroup); if (rosterGroup == null) { rosterGroup = roster.createGroup(toGroup); } // Add the new entry to the group rosterGroup.addEntry(entry); response.sendRedirect("viewRoster.jsp"); return; } // Add the entry to a new group if ("add".equals(action)) { RosterEntry entry = roster.getEntry(user); // Get the new group or create it if it doesn't exist RosterGroup rosterGroup = roster.getGroup(toGroup); if (rosterGroup == null) { rosterGroup = roster.createGroup(toGroup); } // Add the new entry to the group rosterGroup.addEntry(entry); response.sendRedirect("viewRoster.jsp"); return; } // Delete the entry from a group if ("delete".equals(action)) { RosterEntry entry = roster.getEntry(user); RosterGroup rosterGroup = roster.getGroup(fromGroup); rosterGroup.removeEntry(entry); response.sendRedirect("viewRoster.jsp"); return; } %> <html> <head> <title>Groups Management</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <link href="css/general.css" rel="stylesheet" type="text/css"> </head> <body> <table width="100%" border="0"> <tr> <td><span id="bigBlack">Groups for entry: <%= user%></span></td> <td align="right"><a href="viewRoster.jsp"><img src="images/address_book.png" alt="View roster" border="0"></a></td> </tr> <tr> <td colspan="2"> </td> </tr><tr><td colspan="2"> <table width="100%" border="0"><tr> <td valign="top" width="48%"><table cellSpacing=0 borderColorDark=#E0E0E0 cellPadding=0 width=100% align=center borderColorLight=#000000 border=1> <tr bgcolor="#AAAAAA"> <td class=text id=bigWhite height=16 align="center"> <b>Add to new group</b> </td> </tr> <tr> <td> <table width="100%" border="0"> <form method="post" action="moveContact.jsp"> <input type="hidden" name="action" value="add"> <input type="hidden" name="user" value="<%= user%>"> <tr> <td width="40%" height=16 align="center" class=text>Group:</td> <td width="20%"> </td> <td width="40%" align="center"><input type="text" name="toGroup"></td> </tr> <tr> <td colspan=3 align="center"> <input type="submit" value="Add"></td> </tr> </form> </table></td> </tr> </table></td> <td width="4%"> </td><td valign="top" width="48%"> <table cellSpacing=0 borderColorDark=#E0E0E0 cellPadding=0 width=100% align=center borderColorLight=#000000 border=1> <tr bgcolor="#AAAAAA"> <td colspan="3" class=text id=bigWhite height=16 align="center"> <b>Move to new group</b> </td> </tr> <tr vAlign=center align=middle bgcolor="#AAAAAA"> <td align="center" width="40%" class=text id=white height=16>From</td> <td width="20%"> </td> <td align="center" width="40%" class=text id=white height=16>To</td> </tr> <% if (fromGroup != null) { %> <form method="post" action="moveContact.jsp"> <input type="hidden" name="action" value="move"> <input type="hidden" name="user" value="<%= user%>"> <input type="hidden" name="fromGroup" value="<%= fromGroup%>"> <tr> <td colspan="3"> <table width="100%" border="0"> <tr> <td width="40%" align="center" valign="middle" class=text height=16><%=fromGroup%></td> <td width="20%" align="center" valign="middle"><img src="images/nav_right_blue.png" alt="Move contact to group" border="0"></td> <td width="40%" align="center" valign="middle"> <input type="text" name="toGroup"> </tr> <tr> <td colspan="3" align="center"> <input type="submit" value="Move"> </tr> </table></td> </tr> </form> <% } else { %> <tr> <td colspan="3" align="center" class=text id=black height=16>Entry does not belong to a group (unfiled entry) </td> </tr> <% } %> </table></td></tr> <tr> <td colspan="3"> </td> </tr> <tr> <td colspan="3" align="center"> <table cellSpacing=0 borderColorDark=#E0E0E0 cellPadding=0 width=50% align=center borderColorLight=#000000 border=1> <tr bgcolor="#AAAAAA"> <td colspan="2" class=text id=bigWhite height=16 align="center"> <b>Remove from groups</b> </td> </tr> <% RosterEntry entry = roster.getEntry(user); RosterGroup group; for (Iterator it=entry.getGroups(); it.hasNext();) { group = (RosterGroup) it.next();%> <tr> <td align="center" width="80%" class=text height=16><%=group.getName()%></td> <td valign="middle" align="center" width="20%"><a href="moveContact.jsp?action=delete&user=<%=user%>&fromGroup=<%=group.getName()%>"><img src="images/garbage.png" alt="Remove contact from the group" border="0"></a></td> </tr> <% } %> </table></td> </tr> </table></td></tr> </table> </body> </html>