📄 filters.jsp
字号:
<%
/**
* $RCSfile: filters.jsp,v $
* $Revision: 1.1.1.1 $
* $Date: 2002/09/09 13:50:26 $
*/
%>
<%@ page import="java.beans.*,
java.util.*,
com.jivesoftware.util.*,
com.jivesoftware.forum.*,
com.jivesoftware.forum.util.*"
errorPage="error.jsp"
%>
<%@ include file="include/global.jsp" %>
<%! // Global variables/methods for this page
private boolean isInstalledFilter(FilterManager filterManager,
ForumMessageFilter filter)
{
try {
int filterCount = filterManager.getFilterCount();
if (filter == null) {
return false;
}
if (filterCount < 1) {
return false;
}
String filterClassname = filter.getClass().getName();
for (int i=0; i<filterCount; i++) {
ForumMessageFilter installedFilter = filterManager.getFilter(i);
if (filterClassname.equals(installedFilter.getClass().getName())) {
return true;
}
}
} catch (Exception e) {}
return false;
}
private String getHTML(ForumMessageFilter filter, PropertyDescriptor descriptor)
{
// HTML of the customizer for this property
StringBuffer html = new StringBuffer(50);
// Get the name of the property (this becomes the name of the form element)
String propName = descriptor.getName();
// Get the current value of the property
Object propValue = null;
try {
propValue = descriptor.getReadMethod().invoke(filter,null);
}
catch (Exception e) {e.printStackTrace();}
// Get the classname of this property
String className = descriptor.getPropertyType().getName();
// HTML form elements for number values (rendered as small textfields)
if ("int".equals(className)
|| "double".equals(className)
|| "long".equals(className))
{
html.append("<input type=\"text\" name=\"").append(propName).append("\" size=\"6\" maxlength=\"10\"");
if (propValue != null) {
html.append(" value=\"").append(propValue.toString()).append("\"");
}
html.append(">");
}
// HTML form elements for boolean values (rendered as Yes/No radio buttons)
else if ("boolean".equals(className)) {
boolean value = false;
if ("true".equals(propValue.toString())) {
value = true;
}
html.append("<input type=\"radio\" name=\"").append(propName).append("\" id=\"rb").append(propName).append("1\" ");
html.append("value=\"true\"");
html.append((value)?" checked":"");
html.append("> <label for=\"rb").append(propName).append("1\">Yes</label> ");
html.append("<input type=\"radio\" name=\"").append(propName).append("\" id=\"rb").append(propName).append("2\" ");
html.append("value=\"false\"");
html.append((!value)?" checked":"");
html.append("> <label for=\"rb").append(propName).append("2\">No</label> ");
}
// HTML elements for a String (rendered as a wide textfield)
else if ("java.lang.String".equals(className)) {
if (propName.toLowerCase().equals("password")) {
html.append("<input type=\"password\"");
}
else {
html.append("<input type=\"text\"");
}
html.append(" name=\"").append(propName).append("\" size=\"30\" maxlength=\"150\"");
if (propValue != null) {
html.append(" value=\"").append(escapeHTML(propValue.toString())).append("\"");
}
html.append(">");
}
if (html.length() == 0) {
html.append(" ");
}
return html.toString();
}
private Map getFilterPropertyValues(HttpServletRequest request,
FilterManager filterManager, ForumMessageFilter filter)
{
// Map of filter property name/value pairs
Map map = new HashMap();
try {
// Property descriptors
PropertyDescriptor[] descriptors = BeanUtils.getPropertyDescriptors(filter.getClass());
// Loop through the properties, get the value of the property as a
// parameter from the HttpRequest object
for (int i=0; i<descriptors.length; i++) {
String propName = descriptors[i].getName();
String propValue = ParamUtils.getParameter(request,propName);
map.put(propName, propValue);
}
} catch (Exception e) {e.printStackTrace();}
return map;
}
private String escapeHTML(String html) {
html = StringUtils.replace(html, "\"", """);
return StringUtils.escapeHTMLTags(html);
}
%>
<% // Get parameters
long forumID = ParamUtils.getLongParameter(request,"forum",-1);
String classname = ParamUtils.getParameter(request,"filters");
boolean install = ParamUtils.getBooleanParameter(request,"install");
boolean remove = ParamUtils.getBooleanParameter(request,"remove");
int position = ParamUtils.getIntParameter(request,"pos",-1);
boolean edit = ParamUtils.getBooleanParameter(request,"edit");
boolean saveProperties = ParamUtils.getBooleanParameter(request,"saveProperties");
int filterIndex = ParamUtils.getIntParameter(request,"filterIndex",-1);
// Indicate if we're doing global filters
boolean isGlobal = (forumID == -1L);
// Load the forum
Forum forum = null;
if (forumID > 0L) {
forum = forumFactory.getForum(forumID);
}
// Get the filter manager
FilterManager filterManager = null;
if (forum != null) {
filterManager = forum.getFilterManager();
}
else {
filterManager = forumFactory.getFilterManager();
}
if (saveProperties) {
if (filterIndex >= 0) {
// The filter we're working with
ForumMessageFilter filter = filterManager.getFilter(filterIndex);
// A map of name/value pairs. The names are the names of the bean
// properties and the values come as parameters to this page
Map properties = getFilterPropertyValues(request, filterManager, filter);
// Set the properties
BeanUtils.setProperties(filter, properties);
// Save the filters
filterManager.saveFilters();
// Done, so redirect to this page
response.sendRedirect("filters.jsp?forum=" + forumID);
return;
}
}
// Number of installed filters
int filterCount = filterManager.getFilterCount();
// All filter classes
ForumMessageFilter[] filters = forumFactory.getAvailableFilters();
if (install && classname != null) {
try {
ForumMessageFilter newFilter
= (ForumMessageFilter)(Class.forName(classname)).newInstance();
filterManager.addFilter(newFilter);
String redirect = "filters.jsp";
if (forumID > -1L) {
redirect += "?forum=" + forumID;
}
response.sendRedirect(redirect);
return;
}
catch (Exception e) {}
}
if (remove && position > -1) {
filterManager.removeFilter(position);
String redirect = "filters.jsp";
if (forumID > -1L) {
redirect += "?forum=" + forumID;
}
response.sendRedirect(redirect);
return;
}
%>
<%@ include file="include/header.jsp" %>
<% // Title of this page and breadcrumbs
String title = "";
if (isGlobal) {
title = "Global Message Filters";
} else {
title = "Message Filters";
}
String[][] breadcrumbs = null;
if (isGlobal) {
breadcrumbs = new String[][] {
{"Main", "main.jsp"},
{"Global Message Filters", "filters.jsp"}
};
}
else {
breadcrumbs = new String[][] {
{"Main", "main.jsp"},
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -