user-message.jsp 8.26 KB
Newer Older
Matt Tucker's avatar
Matt Tucker committed
1 2 3 4
<%--
  -	$RCSfile$
  -	$Revision$
  -	$Date$
Bill Lynch's avatar
Bill Lynch committed
5 6 7 8 9
  -
  - Copyright (C) 2004 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.
Matt Tucker's avatar
Matt Tucker committed
10 11 12
--%>

<%@ page import="org.jivesoftware.util.*,
Matt Tucker's avatar
Matt Tucker committed
13
                 java.util.*,
Matt Tucker's avatar
Matt Tucker committed
14
                 org.jivesoftware.messenger.*,
Derek DeMoro's avatar
Derek DeMoro committed
15
                 org.jivesoftware.admin.*,
Matt Tucker's avatar
Matt Tucker committed
16 17 18 19
                 java.util.Date,
                 java.text.DateFormat,
                 java.util.HashMap,
                 org.jivesoftware.messenger.user.*,
Derek DeMoro's avatar
Derek DeMoro committed
20
                 java.util.Map,
21 22
                 org.xmpp.packet.JID,
                 java.net.URLEncoder"
Bill Lynch's avatar
Bill Lynch committed
23 24
    errorPage="error.jsp"
%>
Matt Tucker's avatar
Matt Tucker committed
25

26
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %>
27
<%@ taglib uri="http://java.sun.com/jstl/fmt_rt" prefix="fmt" %>
Matt Tucker's avatar
Matt Tucker committed
28
<%  // Get parameters
29
    String username = ParamUtils.getParameter(request,"username");
Matt Tucker's avatar
Matt Tucker committed
30 31 32 33 34 35 36 37 38 39
    boolean send = ParamUtils.getBooleanParameter(request,"send");
    boolean success = ParamUtils.getBooleanParameter(request,"success");
    boolean sendToAll = ParamUtils.getBooleanParameter(request,"sendToAll");
    boolean tabs = ParamUtils.getBooleanParameter(request,"tabs",true);
    String jid = ParamUtils.getParameter(request,"jid");
    String[] jids = ParamUtils.getParameters(request,"jid");
    String sessionID = ParamUtils.getParameter(request,"sessionID");
    String message = ParamUtils.getParameter(request,"message");
%>

Derek DeMoro's avatar
Derek DeMoro committed
40
<jsp:useBean id="webManager" class="org.jivesoftware.util.WebManager"  />
Derek DeMoro's avatar
Derek DeMoro committed
41
<% webManager.init(pageContext); %>
Matt Tucker's avatar
Matt Tucker committed
42 43 44 45

<%
    // Handle a cancel
    if (request.getParameter("cancel") != null) {
46
        if (username == null) {
Matt Tucker's avatar
Matt Tucker committed
47 48 49 50
            response.sendRedirect("session-summary.jsp");
            return;
        }
        else {
51
            response.sendRedirect("user-properties.jsp?username=" + URLEncoder.encode(username, "UTF-8"));
Matt Tucker's avatar
Matt Tucker committed
52 53 54 55 56 57
            return;
        }
    }

    // Get the user - a user might not be passed in if this is a system-wide message
    User user = null;
58
    if (username != null) {
Derek DeMoro's avatar
Derek DeMoro committed
59
        user = webManager.getUserManager().getUser(username);
Matt Tucker's avatar
Matt Tucker committed
60 61 62
    }

    // Get the session manager
Derek DeMoro's avatar
Derek DeMoro committed
63
    SessionManager sessionManager = webManager.getSessionManager();
Matt Tucker's avatar
Matt Tucker committed
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85

    // Handle the request to send a message:
    Map errors = new HashMap();
    if (send) {
        // Validate the message and jid
        if (jid == null && !sendToAll && user != null) {
            errors.put("jid","jid");
        }
        if (message == null) {
            errors.put("message","message");
        }
        if (errors.size() == 0) {
            // no errors, so continue
            if (user == null) {
                // system-wide message:
                sessionManager.sendServerMessage(null,message);
            }
            else {
                if (sendToAll) {
                    // loop through all sessions based on the user assoc with the JID, send
                    // message to all
                    for (int i=0; i<jids.length; i++) {
Derek DeMoro's avatar
Derek DeMoro committed
86
                        JID address = new JID(jids[i]);
Matt Tucker's avatar
Matt Tucker committed
87 88 89 90 91
                        Session s = sessionManager.getSession(address);
                        sessionManager.sendServerMessage(address, null, message);
                    }
                }
                else {
Derek DeMoro's avatar
Derek DeMoro committed
92
                    sessionManager.sendServerMessage(new JID(jid),null,message);
Matt Tucker's avatar
Matt Tucker committed
93 94
                }
            }
Bill Lynch's avatar
Bill Lynch committed
95
            if (username != null){
96 97
                response.sendRedirect("user-message.jsp?success=true&username=" +
                        URLEncoder.encode(username, "UTF-8") + "&tabs=" + tabs);
Bill Lynch's avatar
Bill Lynch committed
98 99 100
            }
            else {
                response.sendRedirect("user-message.jsp?success=true");
Derek DeMoro's avatar
Derek DeMoro committed
101
            }
Bill Lynch's avatar
Bill Lynch committed
102
            return;
Matt Tucker's avatar
Matt Tucker committed
103 104 105 106 107
        }
    }

    // Get all sessions associated with this user:
    int numSessions = -1;
108 109
    ClientSession sess = null;
    Collection<ClientSession> sessions = null;
Matt Tucker's avatar
Matt Tucker committed
110 111 112 113
    if (user != null) {
        numSessions = sessionManager.getSessionCount(user.getUsername());
        sessions = sessionManager.getSessions(user.getUsername());
        if (numSessions == 1) {
114
            sess = sessions.iterator().next();
Matt Tucker's avatar
Matt Tucker committed
115 116 117
        }
    }
%>
Bill Lynch's avatar
Bill Lynch committed
118

Derek DeMoro's avatar
Derek DeMoro committed
119 120
<jsp:useBean id="pageinfo" scope="request" class="org.jivesoftware.admin.AdminPageBean" />
<%  // Title of this page and breadcrumbs
121
    String title = LocaleUtils.getLocalizedString("user.message.title");
Derek DeMoro's avatar
Derek DeMoro committed
122
    pageinfo.setTitle(title);
123
    pageinfo.getBreadcrumbs().add(new AdminPageBean.Breadcrumb(LocaleUtils.getLocalizedString("global.main"), "index.jsp"));
Derek DeMoro's avatar
Derek DeMoro committed
124 125 126
    pageinfo.getBreadcrumbs().add(new AdminPageBean.Breadcrumb(title, "user-message.jsp"));
    pageinfo.setPageID("user-message");
%>
Matt Tucker's avatar
Matt Tucker committed
127

Bill Lynch's avatar
Bill Lynch committed
128 129
<jsp:include page="top.jsp" flush="true" />
<jsp:include page="title.jsp" flush="true" />
Matt Tucker's avatar
Matt Tucker committed
130 131 132

<%  if (success) { %>

Bill Lynch's avatar
Bill Lynch committed
133 134 135 136 137
    <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"></td>
        <td class="jive-icon-label">
138
        <fmt:message key="user.message.send" />
Bill Lynch's avatar
Bill Lynch committed
139 140 141 142
        </td></tr>
    </tbody>
    </table>
    </div><br>
Matt Tucker's avatar
Matt Tucker committed
143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162

<%  } %>

<script language="JavaScript" type="text/javascript">
function updateSelect(el) {
    if (el.checked) {
        for (var e=0; e<el.form.jid.length; e++) {
            el.form.jid[e].selected = true;
        }
    }
    else {
        for (var e=0; e<el.form.jid.length; e++) {
            el.form.jid[e].selected = false;
        }
    }
    el.form.message.focus();
}
</script>

<form action="user-message.jsp" method="post" name="f">
Derek DeMoro's avatar
Derek DeMoro committed
163
<% if(username != null){ %>
164
<input type="hidden" name="username" value="<%= username %>">
Derek DeMoro's avatar
Derek DeMoro committed
165
<% } %>
Matt Tucker's avatar
Matt Tucker committed
166 167 168 169 170 171 172 173 174
<input type="hidden" name="tabs" value="<%= tabs %>">
<input type="hidden" name="send" value="true">
<%  if (sess != null) { %>

    <input type="hidden" name="sessionID" value="<%= sess.getAddress().toString() %>">

<%  } %>

<table cellpadding="3" cellspacing="1" border="0" width="600">
175
<tr class="tableHeader"><td colspan="3" align="left"><fmt:message key="user.message.send_admin_msg" /></td></tr>
Matt Tucker's avatar
Matt Tucker committed
176 177 178
<tr><td colspan=3 class="text">
<%   if (user == null) { %>

179
    <fmt:message key="user.message.info" />
Matt Tucker's avatar
Matt Tucker committed
180 181 182

<%  } else { %>

183
    <fmt:message key="user.message.specified_user_info" />
Matt Tucker's avatar
Matt Tucker committed
184 185 186 187 188

<%  } %>
</td></tr>
<tr>
    <td class="jive-label">
189
        <fmt:message key="user.message.to" />:
Matt Tucker's avatar
Matt Tucker committed
190 191 192 193
    </td>
    <td>
        <%  if (user == null) { %>

194
            <fmt:message key="user.message.all_online_user" />
Matt Tucker's avatar
Matt Tucker committed
195 196 197 198 199 200 201 202 203 204 205 206

        <%  } else { %>

            <%  if (sess != null && numSessions == 1) { %>

                <%= sess.getAddress().toString() %>
                <input type="hidden" name="jid" value="<%= sess.getAddress().toString() %>">

            <%  } else { %>

                <select size="2" name="jid" multiple>

207
                <%   Iterator<ClientSession> iter = sessions.iterator();
Matt Tucker's avatar
Matt Tucker committed
208
                     while (iter.hasNext()) {
209
                        sess = iter.next();
Matt Tucker's avatar
Matt Tucker committed
210 211 212 213 214 215 216 217 218
                %>
                    <option value="<%= sess.getAddress().toString() %>"><%= sess.getAddress().toString() %></option>

                <%  } %>

                </select>

                <input type="checkbox" name="sendToAll" value="true" id="cb01"
                 onfocus="updateSelect(this);" onclick="updateSelect(this);">
219
                <label for="cb01"><fmt:message key="user.message.send_session" /></label>
Matt Tucker's avatar
Matt Tucker committed
220 221 222 223 224 225 226

            <%  } %>

            <%  if (errors.get("jid") != null) { %>

                <br>
                <span class="jive-error-text">
227
                <fmt:message key="user.message.valid_address" />
Matt Tucker's avatar
Matt Tucker committed
228 229 230 231 232 233 234 235 236
                </span>

            <%  } %>

        <%  } %>
    </td>
</tr>
<tr valign="top">
    <td class="jive-label">
237
        <fmt:message key="user.message.message" />:
Matt Tucker's avatar
Matt Tucker committed
238 239 240 241 242
    </td>
    <td>
        <%  if (errors.get("message") != null) { %>

            <span class="jive-error-text">
243
            <fmt:message key="user.message.valid_message" />
Matt Tucker's avatar
Matt Tucker committed
244 245 246 247 248 249 250 251 252 253 254 255
            </span>
            <br>

        <%  } %>
        <textarea name="message" cols="55" rows="5" wrap="virtual"></textarea>
    </td>
</tr>
</table>
</div>

<br>

256 257
<input type="submit" value="<fmt:message key="user.message.send_message" />">
<input type="submit" name="cancel" value="<fmt:message key="global.cancel" />">
Matt Tucker's avatar
Matt Tucker committed
258 259 260 261 262 263 264

</form>

<script language="JavaScript" type="text/javascript">
document.f.message.focus();
</script>

Bill Lynch's avatar
Bill Lynch committed
265
<jsp:include page="bottom.jsp" flush="true" />