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 + -
显示快捷键?