<%-- - $$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 groupName = getParameter(request, "group"); // Remove the selected user from the roster (and all the groups) if ("rosterDelete".equals(action)) { RosterEntry entry = roster.getEntry(user); roster.removeEntry(entry); response.sendRedirect("viewRoster.jsp"); return; } // Remove the selected user from the selected group if ("groupDelete".equals(action)) { RosterEntry entry = roster.getEntry(user); RosterGroup rosterGroup = roster.getGroup(groupName); rosterGroup.removeEntry(entry); response.sendRedirect("viewRoster.jsp"); return; } // Close the connection to the XMPP server if ("close".equals(action)) { conn.close(); session.invalidate(); response.sendRedirect("login.jsp"); return; } %> <html> <head> <title>Viewing roster</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 width="50%"><span id="bigBlack"><%= StringUtils.parseName(conn.getUser())%>'s roster</span></td> <td width="50%"><table width="100%" border="0"> <tr> <td> </td> <td width="24"><a href="viewRoster.jsp"><img src="images/refresh.png" alt="Refresh roster" border="0"></a></td> <td width="24"><a href="viewRoster.jsp?action=close"><img src="images/plug_delete.png" alt="Close connection" border="0"></a></td> </tr> </table></td> </tr> <tr> <td colspan="2"><table width="100%" border="0"> <tr> <td width="49%" valign="top"> <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>Roster entries</b> </td> </tr> <tr> <td> <TABLE cellSpacing=0 borderColorDark=#E0E0E0 cellPadding=0 width=100% align=center borderColorLight=#000000 border=1> <% for (Iterator groups = roster.getGroups(); groups.hasNext();) { RosterGroup group = (RosterGroup)groups.next();%> <tr> <td bgcolor="#AAAAAA" colspan="6" class=text id=white height=16>Group: <%= group.getName()%></td> </tr> <TR vAlign=center align=middle bgcolor="#AAAAAA"> <TD class=text id=white height=16>User</TD> <TD class=text id=white height=16>Name</TD> <TD class=text id=white height=16>Subscription</TD> <TD colspan="3" class=text id=white height=16><a href="addContact.jsp?group1=<%=group.getName()%>"><img src="images/businessman_add.png" alt="Add contact to group" border="0"></a></TD> </TR> <% for (Iterator it = group.getEntries(); it.hasNext();) { RosterEntry entry = (RosterEntry)it.next();%> <TR vAlign=center align=middle bgColor=#ffffff> <TD class=text height=16><%= entry.getUser()%></TD> <TD class=text height=16><%= entry.getName()%></TD> <TD class=text height=16><%= entry.getType()%></TD> <TD class=text height=16><a href="moveContact.jsp?user=<%=entry.getUser()%>&fromGroup=<%=group.getName()%>"><img src="images/businessmen.png" alt="Groups management" border="0"></a></TD> <TD class=text height=16><a href="viewRoster.jsp?action=groupDelete&user=<%=entry.getUser()%>&group=<%=group.getName()%>"><img src="images/businessman_delete.png" alt="Remove contact from the group" border="0"></a></TD> <TD class=text height=16><a href="viewRoster.jsp?action=rosterDelete&user=<%=entry.getUser()%>"><img src="images/garbage.png" alt="Remove contact from the roster" border="0"></a></TD> </TR> <% }%> <% }%> <tr> <td bgcolor="#AAAAAA" colspan="6" class=text id=white height=16>Unfiled entries</td> </tr> <TR vAlign=center align=middle bgcolor="#AAAAAA"> <TD class=text id=white height=16>User</TD> <TD class=text id=white height=16>Name</TD> <TD class=text id=white height=16>Subscription</TD> <TD colspan="3" class=text id=white height=16><a href="addContact.jsp"><img src="images/businessman_add.png" alt="Add contact" border="0"></a></TD> </TR> <% for (Iterator it = roster.getUnfiledEntries(); it.hasNext();) { RosterEntry entry = (RosterEntry)it.next();%> <tr vAlign=center align=middle bgColor=#ffffff> <td class=text height=16><%= entry.getUser()%></td> <td class=text height=16><%= entry.getName()%></td> <td class=text height=16><%= entry.getType()%></td> <TD class=text height=16><a href="moveContact.jsp?user=<%=entry.getUser()%>"><img src="images/businessmen.png" alt="Groups management" border="0"></a></td> <TD class=text height=16> </TD> <TD class=text height=16><a href="viewRoster.jsp?action=rosterDelete&user=<%=entry.getUser()%>"><img src="images/garbage.png" alt="Remove contact from roster" border="0"></a></td> </tr> <% }%> </table></td> </tr> </table></td> <td width="2%" valign="top"> </td> <td width="49%" valign="top"> <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>Presences</b> </td> </tr> <tr> <td> <TABLE cellSpacing=0 borderColorDark=#E0E0E0 cellPadding=0 width=100% align=center borderColorLight=#000000 border=1> <tr> <td bgcolor="#AAAAAA" colspan="5" class=text id=white height=16>Roster�s presences</td> </tr> <TR vAlign=center align=middle bgcolor="#AAAAAA"> <TD class=text id=white height=16>User</TD> <TD class=text id=white height=16>Mode</TD> <TD class=text id=white height=16>Type</TD> <TD class=text id=white height=16> </TD> </TR> <% for (Iterator entries = roster.getEntries(); entries.hasNext();) { RosterEntry entry = (RosterEntry)entries.next(); Iterator presences = roster.getPresences(entry.getUser()); if (presences != null) { while (presences.hasNext()) { Presence presence = (Presence)presences.next(); %> <TR vAlign=center align=middle bgColor=#ffffff> <TD class=text height=16><%= presence.getFrom()%></TD> <TD class=text height=16><%= presence.getMode()%></TD> <TD class=text height=16><%= presence.getType()%></TD> <TD class=text height=16><a href="chat.jsp?user=<%=presence.getFrom()%>"><img src="images/messages.png" alt="Chat" border="0"></a></a></TD> </TR> <% }%> <% }%> <% }%> <tr> <td bgcolor="#AAAAAA" colspan="5" class=text id=white height=16>My other resources</td> </tr> <TR vAlign=center align=middle bgcolor="#AAAAAA"> <TD class=text id=white height=16>User</TD> <TD class=text id=white height=16>Mode</TD> <TD class=text id=white height=16>Type</TD> <TD class=text id=white height=16> </TD> </TR> <% // Show other presences of the current user Iterator presences = roster.getPresences(conn.getUser()); if (presences != null) { while (presences.hasNext()) { Presence presence = (Presence)presences.next(); %> <tr vAlign=center align=middle bgColor=#ffffff> <TD class=text height=16><%= presence.getFrom()%></TD> <TD class=text height=16><%= presence.getMode()%></TD> <TD class=text height=16><%= presence.getType()%></TD> <TD class=text height=16><a href="chat.jsp?user=<%=presence.getFrom()%>"><img src="images/messages.png" alt="Chat" border="0"></a></a></TD> </tr> <% }%> <% }%> </table></td> </tr> </table></tr> </table></td> </tr> </table> </body> </html>