workgroup-queues.jsp
来自「openfire 服务器源码下载」· JSP 代码 · 共 700 行 · 第 1/2 页
JSP
700 行
<%--
- $RCSfile$
- $Revision: 32926 $
- $Date: 2006-08-04 15:39:24 -0700 (Fri, 04 Aug 2006) $
--%>
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %>
<%@ page import="org.jivesoftware.xmpp.workgroup.RequestQueue,
org.jivesoftware.xmpp.workgroup.Workgroup,
org.jivesoftware.util.ParamUtils,
org.jivesoftware.xmpp.workgroup.WorkgroupManager,
org.jivesoftware.xmpp.workgroup.WorkgroupAdminManager,
org.xmpp.packet.JID,
org.jivesoftware.openfire.fastpath.dataforms.FormManager,
org.jivesoftware.xmpp.workgroup.routing.RoutingManager,
org.jivesoftware.xmpp.workgroup.routing.RoutingRule,
org.jivesoftware.openfire.fastpath.dataforms.WorkgroupForm,
java.util.Collection,
java.util.ArrayList,
java.util.List,
java.util.StringTokenizer,
org.jivesoftware.xmpp.workgroup.utils.ModelUtil,
org.jivesoftware.util.StringUtils,
org.jivesoftware.util.NotFoundException,
org.jivesoftware.util.Log,
org.jivesoftware.openfire.fastpath.dataforms.FormUtils,
org.xmpp.forms.FormField, org.xmpp.forms.DataForm"
errorPage="/error.jsp"%>
<%
String wgID = ParamUtils.getParameter(request, "wgID");
long qID = ParamUtils.getLongParameter(request, "qID", -1L);
boolean createQueue = request.getParameter("createQueue") != null;
String name = ParamUtils.getParameter(request, "name");
String description = ParamUtils.getParameter(request, "description");
boolean delete = ParamUtils.getBooleanParameter(request, "delete");
String errorMessage = "";
%>
<%
// Get a workgroup manager
WorkgroupManager wgManager = WorkgroupManager.getInstance();
WorkgroupAdminManager adminManager = new WorkgroupAdminManager();
// If the workgroup manager is null, service is down so redirect:
if (wgManager == null) {
response.sendRedirect("error-serverdown.jsp");
return;
}
%>
<% // Get parameters //
// Load the workgroup
Workgroup workgroup = wgManager.getWorkgroup(new JID(wgID));
if (createQueue) {
RequestQueue queue = workgroup.createRequestQueue(name);
queue.setDescription(description);
response.sendRedirect("workgroup-queues.jsp?wgID=" + wgID);
return;
}
if (delete) {
RequestQueue queue = workgroup.getRequestQueue(qID);
workgroup.deleteRequestQueue(queue);
response.sendRedirect("workgroup-queues.jsp?wgID=" + wgID + "&deletesuccess=true");
return;
}
%>
<%
final WorkgroupManager workgroupManager = WorkgroupManager.getInstance();
FormManager formManager = FormManager.getInstance();
DataForm dataForm = formManager.getDataForm(workgroup);
RoutingManager routingManager = RoutingManager.getInstance();
WorkgroupForm form = formManager.getWebForm(workgroup);
Collection<RoutingRule> rules = routingManager.getRoutingRules(workgroup);
boolean errors = false;
boolean edit = request.getParameter("edit") != null;
int pos = ParamUtils.getIntParameter(request, "pos", -1);
String editVariable = request.getParameter("editVariable");
String editValue = request.getParameter("editValue");
String editQuery = request.getParameter("editQueryField");
boolean editAdvancedQuery = request.getParameter("editAdvancedQuery") != null;
long editQueueID = ParamUtils.getLongParameter(request, "editQueueID", 0);
String variable = request.getParameter("variable");
String value = request.getParameter("value");
if (value == null) {
StringBuffer buf = new StringBuffer();
for (int i = 0; i < 50; i++) {
String tempValue = request.getParameter("value" + i);
if (tempValue != null) {
buf.append(variable + ":" + tempValue);
if (request.getParameter("value" + (i + 1)) != null) {
buf.append(" AND ");
}
}
}
if (buf.length() > 0) {
value = buf.toString();
variable = "";
}
}
long queueID = ParamUtils.getLongParameter(request, "queueID", -1);
String query = "";
boolean advancedBuilder = "advancedBuilder".equals(request.getParameter("selector"));
String advancedQuery = request.getParameter("advancedQuery");
if (edit) {
List routers = (ArrayList)routingManager.getRoutingRules(workgroup);
RoutingRule rule = (RoutingRule)routers.get(pos - 1);
StringTokenizer tkn = new StringTokenizer(rule.getQuery(), ":");
if (tkn.countTokens() == 2) {
variable = tkn.nextToken();
value = StringUtils.escapeForXML(tkn.nextToken());
}
else {
advancedBuilder = true;
variable = StringUtils.escapeForXML(rule.getQuery());
}
queueID = rule.getQueueID();
}
boolean handleEditForm = request.getParameter("editRule") != null;
if (handleEditForm) {
if (editAdvancedQuery) {
if (!org.jivesoftware.xmpp.workgroup.utils.ModelUtil.hasLength(editQuery)) {
errors = true;
errorMessage = "Your query cannot be empty";
}
if (!errors) {
int editPos = ParamUtils.getIntParameter(request, "editPos", -1);
routingManager.removeRoutingRule(workgroup, editPos);
routingManager.addRoutingRule(workgroup, editQueueID, editPos, editQuery);
}
}
else {
if (!ModelUtil.hasLength(editValue)) {
errors = true;
errorMessage = "Please specify a value to map to the form variable.";
}
if (!errors) {
int editPos = ParamUtils.getIntParameter(request, "editPos", -1);
routingManager.removeRoutingRule(workgroup, editPos);
query = editVariable + ":" + editValue;
routingManager.addRoutingRule(workgroup, editQueueID, editPos, query);
}
}
}
boolean submit = request.getParameter("submit") != null;
if (submit) {
if (!ModelUtil.hasLength(value) && !advancedBuilder) {
errors = true;
errorMessage = "Please specify a value to map to the form variable.";
}
else if (advancedBuilder && !ModelUtil.hasLength(advancedQuery)) {
errors = true;
errorMessage = "Specify a valid query.";
}
if (!errors) {
// Add Rule
if (!advancedBuilder) {
if (variable.length() > 0) {
query = variable + ":" + value;
}
else {
query = value;
}
routingManager.addRoutingRule(workgroup, queueID, rules.size() + 1, query);
}
else {
routingManager.addRoutingRule(workgroup, queueID, rules.size() + 1, advancedQuery);
}
}
}
boolean changePos = request.getParameter("changePos") != null;
boolean remove = request.getParameter("remove") != null;
if (changePos) {
boolean up = request.getParameter("up") != null;
boolean down = request.getParameter("down") != null;
String index = request.getParameter("pos");
int routerIndex = Integer.parseInt(index);
RoutingRule moveUpRule = null;
RoutingRule moveDownRule = null;
if (up) {
// Change selected router index to pos - 1 and
// change pos - 1 to pos + 1 and save.
for (RoutingRule rule : rules) {
if (rule.getPosition() == routerIndex) {
moveUpRule = rule;
}
if (rule.getPosition() == routerIndex - 1) {
moveDownRule = rule;
}
}
// Delete both rules and reapply
routingManager.removeRoutingRule(workgroup, routerIndex);
routingManager.removeRoutingRule(workgroup, routerIndex - 1);
// Add new rules
moveUpRule.setPosition(routerIndex - 1);
moveDownRule.setPosition(routerIndex);
}
else if (down) {
for (RoutingRule rule : rules) {
if (rule.getPosition() == routerIndex) {
moveUpRule = rule;
}
if (rule.getPosition() == routerIndex + 1) {
moveDownRule = rule;
}
}
// Delete both rules and reapply
routingManager.removeRoutingRule(workgroup, routerIndex);
routingManager.removeRoutingRule(workgroup, routerIndex + 1);
// Add new rules
moveUpRule.setPosition(routerIndex + 1);
moveDownRule.setPosition(routerIndex);
}
routingManager.addRoutingRule(workgroup, moveUpRule.getQueueID(), moveUpRule.getPosition(),
moveUpRule.getQuery());
routingManager.addRoutingRule(workgroup, moveDownRule.getQueueID(),
moveDownRule.getPosition(), moveDownRule.getQuery());
}
if (remove) {
String index = request.getParameter("pos");
int routerIndex = Integer.parseInt(index);
routingManager.removeRoutingRule(workgroup, routerIndex);
for (RoutingRule rule : rules) {
if (rule.getPosition() > routerIndex) {
routingManager
.updateRoutingRule(workgroup, rule.getPosition(), rule.getPosition() - 1);
}
}
}
rules = routingManager.getRoutingRules(workgroup);
%>
<html>
<head>
<title><%= "Workgroup Queues for " + wgID%></title>
<meta name="subPageID" content="workgroup-queues"/>
<meta name="extraParams" content="<%= "wgID="+wgID %>"/>
<!--<meta name="helpPage" content="create_a_queue.html"/>-->
<script type="text/javascript">
function enableDefault() {
document.getElementById('advancedField').disabled = true;
}
function enableAdvanced() {
document.getElementById('advancedField').disabled = false;
}
function updateForm(selectbox){
window.location.href = "workgroup-queues.jsp?wgID=<%= wgID%>&fElement="+selectbox.value;
}
</script>
</head>
<body>
<%
boolean added = ParamUtils.getBooleanParameter(request, "queueaddsuccess");
boolean deleted = ParamUtils.getBooleanParameter(request, "deletesuccess");
%>
<% if (errors) { %>
<div class="error">
<%= errorMessage%>
</div><br/>
<% } %>
<% if (added) { %>
<div class="success">
A new Request Queue has been added.
</div><br>
<% }
else if (deleted) { %>
<div class="success">
Request Queue has been removed.
</div><br>
<% } %>
<% if (handleEditForm && !errors) { %>
<div class="success">
Routing rules have been updated.
</div>
<% } %>
<% if (!errors && submit) { %>
<div class="success">
New routing rule has been added.
</div>
<% } %>
<p>
A request queue handles incoming client support requests. To add members to a queue, click on an available queue below.
</p>
<table>
<tr>
<td>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?