muc-sysadmins.jsp 9.09 KB
Newer Older
Bill Lynch's avatar
Bill Lynch committed
1
<%--
Matt Tucker's avatar
Matt Tucker committed
2 3
  -	$Revision$
  -	$Date$
Bill Lynch's avatar
Bill Lynch committed
4
  -
5
  - Copyright (C) 2004-2008 Jive Software. All rights reserved.
Bill Lynch's avatar
Bill Lynch committed
6
  -
7 8 9 10 11 12 13 14 15 16 17
  - 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
18 19 20
--%>

<%@ page import="org.jivesoftware.util.*,
21 22
                 org.jivesoftware.openfire.group.Group,
                 org.jivesoftware.openfire.group.GroupJID,
Matt Tucker's avatar
Matt Tucker committed
23
                 java.util.*,
24
                 org.xmpp.packet.*,
25 26
                 org.jivesoftware.openfire.muc.MultiUserChatService"
         errorPage="error.jsp"
Matt Tucker's avatar
Matt Tucker committed
27
%>
28
<%@ page import="java.net.URLEncoder" %>
29
<%@ page import="java.net.URLDecoder" %>
Bill Lynch's avatar
Bill Lynch committed
30

31
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
32
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
Bill Lynch's avatar
Bill Lynch committed
33

34 35
<jsp:useBean id="webManager" class="org.jivesoftware.util.WebManager" />
<% webManager.init(request, response, session, application, out ); %>
Matt Tucker's avatar
Matt Tucker committed
36 37 38

<%  // Get parameters
    String userJID = ParamUtils.getParameter(request,"userJID");
39
    String[] groupNames = ParamUtils.getParameters(request, "groupNames");
Bill Lynch's avatar
Bill Lynch committed
40
    boolean add = request.getParameter("add") != null;
Matt Tucker's avatar
Matt Tucker committed
41
    boolean delete = ParamUtils.getBooleanParameter(request,"delete");
42
    String mucname = ParamUtils.getParameter(request,"mucname");
Matt Tucker's avatar
Matt Tucker committed
43

44 45 46 47 48 49 50 51
    if (!webManager.getMultiUserChatManager().isServiceRegistered(mucname)) {
        // The requested service name does not exist so return to the list of the existing rooms
        response.sendRedirect("muc-service-summary.jsp");
        return;
    }

    // Get muc server
    MultiUserChatService mucService = webManager.getMultiUserChatManager().getMultiUserChatService(mucname);
Matt Tucker's avatar
Matt Tucker committed
52 53

    // Handle a save
54
    Map<String,String> errors = new HashMap<String,String>();
55
    List<JID> allowedJIDs = new ArrayList<JID>();
56
    try {
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
    	if (userJID != null && userJID.trim().length() > 0) {
    		String allowedJID;
	        // do validation; could be a group jid
            if (userJID.indexOf('@') == -1) {
                String username = JID.escapeNode(userJID);
                String domain = webManager.getXMPPServer().getServerInfo().getXMPPDomain();
                allowedJID = username + '@' + domain;
            }
            else {
                String username = JID.escapeNode(userJID.substring(0, userJID.indexOf('@')));
                String rest = userJID.substring(userJID.indexOf('@'), userJID.length());
                allowedJID = username + rest.trim();
            }
	    	allowedJIDs.add(GroupJID.fromString(allowedJID.trim()).asBareJID());
    	}
    	if (groupNames != null) {
    		// create a group JID for each group
    		for (String groupName : groupNames) {
    			GroupJID groupJID = new GroupJID(URLDecoder.decode(groupName, "UTF-8"));
    			allowedJIDs.add(groupJID);
    		}
    	}
    } catch (java.lang.IllegalArgumentException ex) {
80 81 82 83 84
        errors.put("userJID","userJID");
    }
    
    if (errors.size() == 0) {
	    if (add) {
85
            mucService.addSysadmins(allowedJIDs);
86
            // Log the event
87
            webManager.logEvent("added muc sysadmin permissions for service "+mucname, null);
88
            response.sendRedirect("muc-sysadmins.jsp?addsuccess=true&mucname="+URLEncoder.encode(mucname, "UTF-8"));
Matt Tucker's avatar
Matt Tucker committed
89 90 91
            return;
        }

92 93
	    if (delete) {
	        // Remove the user from the list of system administrators
94
	        mucService.removeSysadmin(GroupJID.fromString(userJID));
95 96 97 98 99 100
	        // Log the event
	        webManager.logEvent("removed muc sysadmin "+userJID+" for service "+mucname, null);
	        // done, return
	        response.sendRedirect("muc-sysadmins.jsp?deletesuccess=true&mucname="+URLEncoder.encode(mucname, "UTF-8"));
	        return;
	    }
Matt Tucker's avatar
Matt Tucker committed
101
    }
Bill Lynch's avatar
Bill Lynch committed
102
%>
Matt Tucker's avatar
Matt Tucker committed
103

104
<html>
105 106
<head>
<title><fmt:message key="groupchat.admins.title"/></title>
107 108
<meta name="subPageID" content="muc-sysadmin"/>
<meta name="extraParams" content="<%= "mucname="+URLEncoder.encode(mucname, "UTF-8") %>"/>
109 110 111
<meta name="helpPage" content="edit_group_chat_service_administrators.html"/>
</head>
<body>
Matt Tucker's avatar
Matt Tucker committed
112

Bill Lynch's avatar
Bill Lynch committed
113
<p>
114
<fmt:message key="groupchat.admins.introduction" />
Sven Tantau's avatar
Sven Tantau committed
115
<fmt:message key="groupchat.service.settings_affect" /> <b><a href="muc-service-edit-form.jsp?mucname=<%= URLEncoder.encode(mucname, "UTF-8") %>"><%= StringUtils.escapeHTMLTags(mucname) %></a></b>
Bill Lynch's avatar
Bill Lynch committed
116
</p>
Matt Tucker's avatar
Matt Tucker committed
117 118 119

<%  if ("true".equals(request.getParameter("deletesuccess"))) { %>

Bill Lynch's avatar
Bill Lynch committed
120 121 122
    <div class="jive-success">
    <table cellpadding="0" cellspacing="0" border="0">
    <tbody>
123
        <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
124
        <td class="jive-icon-label">
125
        <fmt:message key="groupchat.admins.user_removed" />
Bill Lynch's avatar
Bill Lynch committed
126 127 128 129
        </td></tr>
    </tbody>
    </table>
    </div><br>
Matt Tucker's avatar
Matt Tucker committed
130

Bill Lynch's avatar
Bill Lynch committed
131
<%  } else if ("true".equals(request.getParameter("addsuccess"))) { %>
Matt Tucker's avatar
Matt Tucker committed
132

Bill Lynch's avatar
Bill Lynch committed
133 134 135
    <div class="jive-success">
    <table cellpadding="0" cellspacing="0" border="0">
    <tbody>
136
        <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
137
        <td class="jive-icon-label">
138
        <fmt:message key="groupchat.admins.user_added" />
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
<%  } else if (errors.size() > 0) {  
	    if (delete) {
	    	userJID = null; // mask group jid on error
	    }
%>
Matt Tucker's avatar
Matt Tucker committed
149

Bill Lynch's avatar
Bill Lynch committed
150 151 152
    <div class="jive-error">
    <table cellpadding="0" cellspacing="0" border="0">
    <tbody>
153
        <tr><td class="jive-icon"><img src="images/error-16x16.gif" width="16" height="16" border="0" alt=""></td>
Bill Lynch's avatar
Bill Lynch committed
154
        <td class="jive-icon-label">
155
        <fmt:message key="groupchat.admins.error_adding" />
Bill Lynch's avatar
Bill Lynch committed
156 157 158 159
        </td></tr>
    </tbody>
    </table>
    </div><br>
Matt Tucker's avatar
Matt Tucker committed
160

Bill Lynch's avatar
Bill Lynch committed
161
<%  } %>
Matt Tucker's avatar
Matt Tucker committed
162 163


164 165
<!-- BEGIN 'Administrators' -->
<form action="muc-sysadmins.jsp?add" method="post">
Sven Tantau's avatar
Sven Tantau committed
166
    <input type="hidden" name="mucname" value="<%= StringUtils.escapeForXML(mucname) %>" />
167
    <div class="jive-contentBoxHeader">
168 169 170
		<fmt:message key="groupchat.admins.legend" />
	</div>
	<div class="jive-contentBox">
171 172 173 174 175 176 177 178 179 180
	    <p>
	    <label for="groupJIDs"><fmt:message key="groupchat.admins.add_group" /></label><br/>
		<select name="groupNames" size="6" multiple style="width:400px;font-family:verdana,arial,helvetica,sans-serif;font-size:8pt;" id="groupJIDs">
		<%  for (Group g : webManager.getGroupManager().getGroups()) {	%>
			<option value="<%= URLEncoder.encode(g.getName(), "UTF-8") %>"
			 <%= (StringUtils.contains(groupNames, g.getName()) ? "selected" : "") %>
			 ><%= StringUtils.escapeHTMLTags(g.getName()) %></option>
		<%  } %>
		</select>
		</p>
181
		<label for="userJIDtf"><fmt:message key="groupchat.admins.label_add_admin" /></label>
Sven Tantau's avatar
Sven Tantau committed
182
		<input type="text" name="userJID" size="30" maxlength="100" value="<%= (userJID != null ? StringUtils.escapeForXML(userJID) : "") %>"
183
		 id="userJIDtf">
184
		<input type="submit" value="<fmt:message key="groupchat.admins.add" />">
185 186 187 188 189 190 191 192 193 194 195
		<br><br>

		<div class="jive-table" style="width:400px;">
			<table cellpadding="0" cellspacing="0" border="0" width="100%">
			<thead>
				<tr>
					<th width="99%"><fmt:message key="groupchat.admins.column_user" /></th>
					<th width="1%" nowrap><fmt:message key="groupchat.admins.column_remove" /></th>
				</tr>
			</thead>
			<tbody>
196
				<%  if (mucService.getSysadmins().size() == 0) { %>
197 198 199 200 201 202 203 204 205

					<tr>
						<td colspan="2">
							<fmt:message key="groupchat.admins.no_admins" />
						</td>
					</tr>

				<%  } %>

206 207 208
				<%  for (JID jid : mucService.getSysadmins()) {
            	    boolean isGroup = GroupJID.isGroup(jid);
            	    String jidDisplay = isGroup ? ((GroupJID)jid).getGroupName() : jid.toString();
209
	            %>
210 211
					<tr>
						<td width="99%">
212 213 214 215 216 217 218 219
		                  <% if (isGroup) { %>
		                	<img src="images/group.gif" width="16" height="16" align="top" title="<fmt:message key="groupchat.admins.group" />" alt="<fmt:message key="groupchat.admins.group" />"/>
		                  <% } else { %>
		                	<img src="images/user.gif" width="16" height="16" align="top" title="<fmt:message key="groupchat.admins.user" />" alt="<fmt:message key="groupchat.admins.user" />"/>
		                  <% } %>
						  <a href="<%= isGroup ? "group-edit.jsp?group=" + URLEncoder.encode(jidDisplay) : "user-properties.jsp?username=" + URLEncoder.encode(jid.getNode()) %>">
						  <%= jidDisplay %></a>
						</td>
220 221
						</td>
						<td width="1%" align="center">
222
							<a href="muc-sysadmins.jsp?userJID=<%= URLEncoder.encode(jid.toString()) %>&delete=true&mucname=<%= URLEncoder.encode(mucname, "UTF-8") %>"
223 224
							 title="<fmt:message key="groupchat.admins.dialog.title" />"
							 onclick="return confirm('<fmt:message key="groupchat.admins.dialog.text" />');"
225
							 ><img src="images/delete-16x16.gif" width="16" height="16" border="0" alt=""></a>
226 227 228 229 230 231 232 233
						</td>
					</tr>

				<%  } %>
			</tbody>
			</table>
		</div>
	</div>
Bill Lynch's avatar
Bill Lynch committed
234
</form>
235 236
<!-- END 'Administrators' -->

Bill Lynch's avatar
Bill Lynch committed
237

238
</body>
Sven Tantau's avatar
Sven Tantau committed
239
</html>