user-message.jsp 8.56 KB
Newer Older
1

Matt Tucker's avatar
Matt Tucker committed
2 3 4
<%--
  -	$Revision$
  -	$Date$
Bill Lynch's avatar
Bill Lynch committed
5
  -
6
  - Copyright (C) 2004-2008 Jive Software. All rights reserved.
Bill Lynch's avatar
Bill Lynch committed
7
  -
8 9 10 11 12 13 14 15 16 17 18
  - Licensed under the Apache License, Version 2.0 (the "License");
  - you may not use this file except in compliance with the License.
  - You may obtain a copy of the License at
  -
  -     http://www.apache.org/licenses/LICENSE-2.0
  -
  - Unless required by applicable law or agreed to in writing, software
  - distributed under the License is distributed on an "AS IS" BASIS,
  - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  - See the License for the specific language governing permissions and
  - limitations under the License.
Matt Tucker's avatar
Matt Tucker committed
19 20
--%>

21
<%@ page import="org.jivesoftware.util.ParamUtils,
Sven Tantau's avatar
Sven Tantau committed
22
                 org.jivesoftware.util.StringUtils,
23 24 25
                 org.jivesoftware.openfire.SessionManager,
                 org.jivesoftware.openfire.session.ClientSession,
                 org.jivesoftware.openfire.user.User,
26
                 org.xmpp.packet.JID,
27 28
                 java.net.URLEncoder,
                 java.util.Collection,
29
                 java.util.HashMap"
Bill Lynch's avatar
Bill Lynch committed
30 31
    errorPage="error.jsp"
%>
32
<%@ page import="java.util.Map" %>
Matt Tucker's avatar
Matt Tucker committed
33

34 35
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
Matt Tucker's avatar
Matt Tucker committed
36
<%  // Get parameters
37
    String username = ParamUtils.getParameter(request,"username");
Matt Tucker's avatar
Matt Tucker committed
38 39 40 41 42 43 44 45 46
    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 message = ParamUtils.getParameter(request,"message");
%>

Derek DeMoro's avatar
Derek DeMoro committed
47
<jsp:useBean id="webManager" class="org.jivesoftware.util.WebManager"  />
Derek DeMoro's avatar
Derek DeMoro committed
48
<% webManager.init(pageContext); %>
Matt Tucker's avatar
Matt Tucker committed
49 50 51 52

<%
    // Handle a cancel
    if (request.getParameter("cancel") != null) {
53
        if (username == null) {
Matt Tucker's avatar
Matt Tucker committed
54 55 56 57
            response.sendRedirect("session-summary.jsp");
            return;
        }
        else {
58
            response.sendRedirect("user-properties.jsp?username=" + URLEncoder.encode(username, "UTF-8"));
Matt Tucker's avatar
Matt Tucker committed
59 60 61 62 63 64
            return;
        }
    }

    // Get the user - a user might not be passed in if this is a system-wide message
    User user = null;
65
    if (username != null) {
Derek DeMoro's avatar
Derek DeMoro committed
66
        user = webManager.getUserManager().getUser(username);
Matt Tucker's avatar
Matt Tucker committed
67 68 69
    }

    // Get the session manager
Derek DeMoro's avatar
Derek DeMoro committed
70
    SessionManager sessionManager = webManager.getSessionManager();
Matt Tucker's avatar
Matt Tucker committed
71 72

    // Handle the request to send a message:
73
    Map<String,String> errors = new HashMap<String,String>();
Matt Tucker's avatar
Matt Tucker committed
74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
    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
92 93 94 95
                    for (String jid1 : jids) {
                        JID address = new JID(jid1);
                        // TODO: Do we really need this?
                        sessionManager.getSession(address);
Matt Tucker's avatar
Matt Tucker committed
96
                        sessionManager.sendServerMessage(address, null, message);
97 98
                        // Log the event
                        webManager.logEvent("send server message", "jid = all active\nmessage = "+message);
Matt Tucker's avatar
Matt Tucker committed
99 100 101
                    }
                }
                else {
Derek DeMoro's avatar
Derek DeMoro committed
102
                    sessionManager.sendServerMessage(new JID(jid),null,message);
103 104
                    // Log the event
                    webManager.logEvent("send server message", "jid = "+jid+"\nmessage = "+message);
Matt Tucker's avatar
Matt Tucker committed
105 106
                }
            }
Bill Lynch's avatar
Bill Lynch committed
107
            if (username != null){
108 109
                response.sendRedirect("user-message.jsp?success=true&username=" +
                        URLEncoder.encode(username, "UTF-8") + "&tabs=" + tabs);
Bill Lynch's avatar
Bill Lynch committed
110 111 112
            }
            else {
                response.sendRedirect("user-message.jsp?success=true");
Derek DeMoro's avatar
Derek DeMoro committed
113
            }
Bill Lynch's avatar
Bill Lynch committed
114
            return;
Matt Tucker's avatar
Matt Tucker committed
115 116 117 118 119
        }
    }

    // Get all sessions associated with this user:
    int numSessions = -1;
120 121
    ClientSession sess = null;
    Collection<ClientSession> sessions = null;
Matt Tucker's avatar
Matt Tucker committed
122 123 124 125
    if (user != null) {
        numSessions = sessionManager.getSessionCount(user.getUsername());
        sessions = sessionManager.getSessions(user.getUsername());
        if (numSessions == 1) {
126
            sess = sessions.iterator().next();
Matt Tucker's avatar
Matt Tucker committed
127 128 129
        }
    }
%>
Bill Lynch's avatar
Bill Lynch committed
130

Matt Tucker's avatar
Matt Tucker committed
131

132
<html>
133 134 135 136 137 138
<head>
<title><fmt:message key="user.message.title"/></title>
<meta name="pageID" content="user-message"/>
<meta name="helpPage" content="send_an_administrative_message_to_users.html"/>
</head>
<body>
Matt Tucker's avatar
Matt Tucker committed
139 140 141

<%  if (success) { %>

Bill Lynch's avatar
Bill Lynch committed
142 143 144
    <div class="jive-success">
    <table cellpadding="0" cellspacing="0" border="0">
    <tbody>
145
        <tr><td class="jive-icon"><img src="images/success-16x16.gif" width="16" height="16" border="0" alt=""></td>
Bill Lynch's avatar
Bill Lynch committed
146
        <td class="jive-icon-label">
147
        <fmt:message key="user.message.send" />
Bill Lynch's avatar
Bill Lynch committed
148 149 150 151
        </td></tr>
    </tbody>
    </table>
    </div><br>
Matt Tucker's avatar
Matt Tucker committed
152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171

<%  } %>

<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
172
<% if(username != null){ %>
Sven Tantau's avatar
Sven Tantau committed
173
<input type="hidden" name="username" value="<%= StringUtils.escapeForXML(username) %>">
Derek DeMoro's avatar
Derek DeMoro committed
174
<% } %>
Matt Tucker's avatar
Matt Tucker committed
175 176 177 178 179 180 181 182
<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() %>">

<%  } %>

183 184 185 186 187 188
	<!-- BEGIN send message block -->
	<!--<div class="jive-contentBoxHeader">
		<fmt:message key="user.message.send_admin_msg" />
	</div>-->
	<div class="jive-contentBox" style="-moz-border-radius: 3px;">
		<table cellpadding="3" cellspacing="1" border="0" width="600">
Matt Tucker's avatar
Matt Tucker committed
189

190 191
		<tr><td colspan=3 class="text" style="padding-bottom: 10px;">
		<%   if (user == null) { %>
Matt Tucker's avatar
Matt Tucker committed
192

193
			<p><fmt:message key="user.message.info" /></p>
Matt Tucker's avatar
Matt Tucker committed
194

195
		<%  } else { %>
Matt Tucker's avatar
Matt Tucker committed
196

197
			<p><fmt:message key="user.message.specified_user_info" /></p>
Matt Tucker's avatar
Matt Tucker committed
198

199 200 201 202 203 204 205 206
		<%  } %>
		</td></tr>
		<tr>
			<td class="jive-label">
				<fmt:message key="user.message.to" />:
			</td>
			<td>
				<%  if (user == null) { %>
Matt Tucker's avatar
Matt Tucker committed
207

208
					<fmt:message key="user.message.all_online_user" />
Matt Tucker's avatar
Matt Tucker committed
209

210
				<%  } else { %>
Matt Tucker's avatar
Matt Tucker committed
211

212
					<%  if (sess != null && numSessions == 1) { %>
Matt Tucker's avatar
Matt Tucker committed
213

214 215
						<%= sess.getAddress().toString() %>
						<input type="hidden" name="jid" value="<%= sess.getAddress().toString() %>">
Matt Tucker's avatar
Matt Tucker committed
216

217
					<%  } else { %>
Matt Tucker's avatar
Matt Tucker committed
218

219
						<select size="2" name="jid" multiple>
Matt Tucker's avatar
Matt Tucker committed
220

221 222 223 224 225
						<%
                            for (ClientSession clisess : sessions) {
                        %>
                            <option value="<%= clisess.getAddress().toString() %>"><%= clisess.getAddress().toString() %>
                            </option>
Matt Tucker's avatar
Matt Tucker committed
226

227
                            <% } %>
Matt Tucker's avatar
Matt Tucker committed
228

229
						</select>
Matt Tucker's avatar
Matt Tucker committed
230

231 232 233
						<input type="checkbox" name="sendToAll" value="true" id="cb01"
						 onfocus="updateSelect(this);" onclick="updateSelect(this);">
						<label for="cb01"><fmt:message key="user.message.send_session" /></label>
Matt Tucker's avatar
Matt Tucker committed
234

235
					<%  } %>
Matt Tucker's avatar
Matt Tucker committed
236

237
					<%  if (errors.get("jid") != null) { %>
Matt Tucker's avatar
Matt Tucker committed
238

239 240 241 242
						<br>
						<span class="jive-error-text">
						<fmt:message key="user.message.valid_address" />
						</span>
Matt Tucker's avatar
Matt Tucker committed
243

244
					<%  } %>
Matt Tucker's avatar
Matt Tucker committed
245

246 247 248 249 250 251 252 253 254
				<%  } %>
			</td>
		</tr>
		<tr valign="top">
			<td class="jive-label">
				<fmt:message key="user.message.message" />:
			</td>
			<td>
				<%  if (errors.get("message") != null) { %>
Matt Tucker's avatar
Matt Tucker committed
255

256 257 258 259
					<span class="jive-error-text">
					<fmt:message key="user.message.valid_message" />
					</span>
					<br>
Matt Tucker's avatar
Matt Tucker committed
260

261 262 263 264 265 266 267
				<%  } %>
				<textarea name="message" cols="55" rows="5" wrap="virtual"></textarea>
			</td>
		</tr>
		</table>
	</div>
	<!-- END send message block -->
Matt Tucker's avatar
Matt Tucker committed
268

269 270
<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
271 272 273 274 275 276 277

</form>

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

278 279

</body>
Sven Tantau's avatar
Sven Tantau committed
280
</html>