filters.jsp

来自「Jive是基于JSP/JAVA技术构架的一个大型BBS论坛系统,这是Jive论坛」· JSP 代码 · 共 832 行 · 第 1/3 页

JSP
832
字号
                    // Make a new entry array of entries.length+1 because we're                    // adding one more entry to the property                    String[] newEntries = new String[entries.length+1];                    for (int i=0; i<entries.length; i++) {                        newEntries[i] = entries[i];                    }                    // The new prop value goes in the last spot of newEntries:                    newEntries[newEntries.length-1] = newPropValue;                    // Use the write method to save the new entries:                    writeMethod.invoke(filter, new Object[]{newEntries});                    // Save filters                    filterManager.saveFilters();                    // Done, so redirect                    StringBuffer url = new StringBuffer();                    url.append("filters.jsp?forum=").append(forumID);                    url.append("&edit=true&pos=").append(filterIndex);                    response.sendRedirect(url.toString());                    return;                }            }        }    }    // Remove one of the String[] prop entries:    if (deletePropEntry) {        if (deletePropertyName != null) {            // The filter we're working with:            ForumMessageFilter filter = filterManager.getFilter(filterIndex);            PropertyDescriptor[] descriptors = (Introspector.getBeanInfo(filter.getClass())).getPropertyDescriptors();            PropertyDescriptor propDescriptor = null;            // Look for the property specified            for (int i=0; i<descriptors.length; i++) {                if (descriptors[i].getName().equals(deletePropertyName)) {                    propDescriptor = descriptors[i];                    break;                }            }            if (propDescriptor != null) {                // Get both the read and write methods:                Method readMethod = propDescriptor.getReadMethod();                Method writeMethod = propDescriptor.getWriteMethod();                // Get the String[] via the read method:                String[] entries = (String[])readMethod.invoke(filter, null);                // Make a new entry array of entries.length+1 because we're                // adding one more entry to the property                String[] newEntries = new String[entries.length-1];                int offset = 0;                for (int i=0; i<newEntries.length; i++) {                    // Skip the index of the item we want to delete                    if (i == deleteIndex) {                        offset++;                    }                    newEntries[i] = entries[i+offset];                }                // Use the write method to save the new entries:                writeMethod.invoke(filter, new Object[]{newEntries});                // Save filters                filterManager.saveFilters();                // Done, so redirect                StringBuffer url = new StringBuffer();                url.append("filters.jsp?forum=").append(forumID);                url.append("&edit=true&pos=").append(filterIndex);                response.sendRedirect(url.toString());                return;            }        }    }    // Save filter properties    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;        }    }    // Add a new filter to the list of installable filters    if (addFilter) {        try {            if (newClassname == null) {                throw new ClassNotFoundException("No classname specified.");            }            DbFilterManager.addFilterClass(newClassname.trim());        }        catch (ClassNotFoundException cnfe) {            setOneTimeMessage(session, "message",                "\"" + newClassname + "\" is not a valid classname.");        }        response.sendRedirect("filters.jsp?forum=" + forumID);        return;    }    // Change the position of a filter    if (changePosition) {        if (filterIndex >= 0) {            // Get the filter at the specified filter position            ForumMessageFilter filter = filterManager.getFilter(filterIndex);            // Remove it            filterManager.removeFilter(filterIndex);            // Re-add it based on the "direction" we're doing            if (up) {                filterManager.addFilter(filter, filterIndex-1);            }            if (down) {                filterManager.addFilter(filter, filterIndex+1);            }            // done, so redirect            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="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"},            {"Forums", "forums.jsp"},            {"Edit Forum", "editForum.jsp?forum="+forumID},            {"Message Filters", "filters.jsp?forum="+forumID}        };    }%><%@ include file="title.jsp" %><span><font size="-1"><%  if (isGlobal) { %>    Filters dynamically reformat the contents of messages. Use the forms below    to install and customize global filters.<%  } else { %>    Filters dynamically reformat the contents of messages. Use the forms below    to install and customize filters for this forum.    Please note that global message filters are always applied before any forum message filters.<%  } %></font></span><p><script language="JavaScript" type="text/javascript">var filterInfo = new Array(<%	for (int i=0; i<filters.length; i++) {        try {            BeanDescriptor descriptor = (Introspector.getBeanInfo(filters[i].getClass())).getBeanDescriptor();%>    new Array(    "<%= descriptor.getBeanClass().getName() %>",    "<%= descriptor.getValue("version") %>",    "<%= descriptor.getValue("author") %>",    "<%= StringUtils.replace(descriptor.getShortDescription(), "\"", "\\\"") %>",    "<%= filters[i].isCacheable() %>"    )<%          if ((filters.length-i) > 1) { %>		,<%	        }        } catch (Exception e) {}    }%>);function properties(theForm) {    var className = theForm.filters.options[theForm.filters.selectedIndex].value;    var selected = 0;    for (selected=0; selected<filterInfo.length; selected++) {        if (filterInfo[selected][0] == className) {            var version = filterInfo[selected][1];            var author = filterInfo[selected][2];            var description = filterInfo[selected][3];            var cacheable = filterInfo[selected][4];            theForm.version.value = ((version=="null")?"":version);            theForm.author.value = ((author=="null")?"":author);            theForm.description.value = ((description=="null")?"":description);            if (cacheable == "true") {                theForm.cacheable.value = "Yes";            } else {                theForm.cacheable.value = "No";            }            break;        }    }}</script><%  // Print out a message if one exists    String oneTimeMessage = getOneTimeMessage(session, "message");    if (oneTimeMessage != null) {%>    <font size="-1" color="#ff0000">    <i><%= oneTimeMessage %></i>    </font>    <p><%  }%><%  // Colors    String red = "#ffeeee";    String yellow = "#ffffee";    if (filterCount > 0) { %><table cellpadding="0" cellspacing="0" border="0"><tr><td>    <font size="-1"><b>Current Filters</b></font>    </td>    <td>    <a href="#" onclick="helpwin('filters','current_filters');return false;"     title="Click for help"     ><img src="images/help.gif" width="12" height="15" border="0" hspace="8"></a>    </td></tr></table><br><ul>	<table bgcolor="<%= tblBorderColor %>" cellpadding="0" cellspacing="0" border="0">    <tr><td>    <table cellpadding="4" cellspacing="1" border="0" width="100%">	<tr bgcolor="#eeeeee">	<td align="center"><font size="-2" face="verdana"><b>ORDER</b></font></td>	<td align="center"><font size="-2" face="verdana"><b>NAME</b></font></td>	<td align="center"><font size="-2" face="verdana"><b>DESCRIPTION</b></font></td>    <%  if (filterCount > 1) { %>	<td align="center"><font size="-2" face="verdana"><b>MOVE</b></font></td>    <%  } %>	<td align="center"><font size="-2" face="verdana"><b>EDIT</b></font></td>	<td align="center"><font size="-2" face="verdana"><b>DELETE</b></font></td>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?