forumFilters.jsp
资源名称:NetOffice.rar [点击查看]
上传用户:guhaomin
上传日期:2007-06-10
资源大小:23203k
文件大小:14k
源码类别:
电子政务应用
开发平台:
Java
- <%
- /**
- * $RCSfile: forumFilters.jsp,v $
- * $Revision: 1.4.2.1 $
- * $Date: 2001/05/10 02:06:19 $
- */
- %>
- <%@ page import="java.util.*,
- com.coolservlets.forum.*,
- com.coolservlets.forum.util.*,
- com.coolservlets.forum.util.admin.*"%>
- <jsp:useBean id="adminBean" scope="session"
- class="com.coolservlets.forum.util.admin.AdminBean"/>
- <% ////////////////////////////////
- // Jive authorization check
- // check the bean for the existence of an authorization token.
- // Its existence proves the user is valid. If it's not found, redirect
- // to the login page
- Authorization authToken = adminBean.getAuthToken();
- if( authToken == null ) {
- response.sendRedirect( "/mainctrl/bbs/admin" );
- return;
- }
- ////////////////////
- // Security check
- // make sure the user is authorized to administer users:
- ForumFactory forumFactory = ForumFactory.getInstance(authToken);
- ForumPermissions permissions = forumFactory.getPermissions(authToken);
- boolean isSystemAdmin = permissions.get(ForumPermissions.SYSTEM_ADMIN);
- boolean isUserAdmin = permissions.get(ForumPermissions.FORUM_ADMIN);
- // redirect to error page if we're not a forum admin or a system admin
- if( !isUserAdmin && !isSystemAdmin ) {
- request.setAttribute("message","您没有权限管理论坛!");
- response.sendRedirect("error.jsp");
- return;
- }
- %>
- <%! // Global variables/methods
- private final int ADD_FILTER = 1;
- private final int REMOVE_FILTER = 2;
- private final int EDIT_FILTER = 3;
- private final int SAVE_MODIFIED_FILTER = 4;
- private final int SAVE_PROPERTIES = 5;
- private final String[] classNames = { "com.coolservlets.forum.filter.FilterHtml",
- "com.coolservlets.forum.filter.FilterCodeHighlight",
- "com.coolservlets.forum.filter.FilterFontStyle",
- "com.coolservlets.forum.filter.FilterNewline",
- "com.coolservlets.forum.filter.FilterSmileyFace",
- "com.coolservlets.forum.filter.FilterURLConverter",
- "com.coolservlets.forum.filter.FilterProfanity",
- "com.coolservlets.forum.filter.FilterHackerSpeak"};
- private boolean containsString( ForumMessageFilter[] installedFilters, String filterName ) {
- for( int i=0; i<installedFilters.length; i++ ) {
- if( installedFilters[i].getName().equals(filterName) ) {
- return true;
- }
- }
- return false;
- }
- private String escapeHTML( String line ) {
- StringBuffer buf = new StringBuffer();
- for( int i=0; i<line.length(); i++ ) {
- char ch = line.charAt(i);
- if( ch == '"' ) {
- buf.append( """ ); //"
- } else if( ch == '&' ) {
- buf.append( "&" );
- } else {
- buf.append( ch );
- }
- }
- return buf.toString();
- }
- private String unescapeHTML( String line ) {
- //line = replace( line, ">", ">" );
- //line = replace( line, "<", "<" );
- line = replace( line, """, """ ); //"
- line = replace( line, "&", "&" );
- return line;
- }
- private String replace( String line, String oldString, String newString ) {
- int i=0;
- if ( ( i=line.indexOf( oldString, i ) ) >= 0 ) {
- int oLength = oldString.length();
- int nLength = newString.length();
- StringBuffer buf = new StringBuffer();
- buf.append(line.substring(0,i)).append(newString);
- i += oLength;
- int j = i;
- while( ( i=line.indexOf( oldString, i ) ) > 0 ) {
- buf.append(line.substring(j,i)).append(newString);
- i += oLength;
- j = i;
- }
- buf.append(line.substring(j));
- return buf.toString();
- }
- return line;
- }
- %>
- <% ////////////////////
- // get parameters
- int forumID = ParamUtils.getIntParameter(request,"forum",-1);
- int mode = ParamUtils.getIntParameter(request,"mode",-1);
- int filterID = ParamUtils.getIntParameter(request,"filter",-1);
- //////////////////////////////////
- // global error variables
- String errorMessage = "";
- boolean noForumSpecified = (forumID < 0);
- boolean filterIDOK = (filterID != -1 );
- boolean doMode = (mode != -1);
- ////////////////////
- // make a profile manager
- ProfileManager manager = forumFactory.getProfileManager();
- // Create the factory and forum objects
- Forum forum = null;
- if (!noForumSpecified)
- {
- try {
- forum = forumFactory.getForum(forumID);
- }
- catch( UnauthorizedException ue ) { System.err.println( "... in admin/admin-filter.jsp: " + ue ); }
- catch( ForumNotFoundException fnfe ) { System.err.println( "... in admin/admin-filter.jsp: " + fnfe ); }
- catch( Exception e ) {
- System.err.println( "... in admin/admin-filter.jsp: " + e );
- e.printStackTrace( System.err );
- }
- }
- boolean forumOK = (forum != null);
- // Get an array of all filters in the system
- ForumMessageFilter[] allFilters = null;
- if (!noForumSpecified)
- {
- try {
- allFilters = new ForumMessageFilter[classNames.length];
- for( int i=0; i<classNames.length; i++ ) {
- Class c = Class.forName(classNames[i]); // load the name of the filter
- allFilters[i] = (ForumMessageFilter)(c.newInstance());
- }
- }
- catch( ClassNotFoundException cnfe ) { System.err.println( "... in admin/admin-filter.jsp: " + cnfe ); }
- catch( IllegalAccessException iae ) { System.err.println( "... in admin/admin-filter.jsp: " + iae ); }
- catch( InstantiationException ie ) { System.err.println( "... in admin/admin-filter.jsp: " + ie ); }
- }
- // Get an array of installed filters
- ForumMessageFilter[] installedFilters = null;
- String[] installedFilterNames = null;
- if( forumOK ) {
- try {
- installedFilters = forum.getForumMessageFilters();
- }
- catch( UnauthorizedException ue ) {
- System.err.println( "... in admin/admin-filter.jsp: " + ue );
- }
- if( installedFilters != null ) {
- // build up list of class names of the forums (so we can not display the ones that are
- // installed in the "add new webfilter box"
- installedFilterNames = new String[installedFilters.length];
- for( int i=0; i<installedFilterNames.length; i++ ) {
- installedFilterNames[i] = installedFilters[i].getClass().getName();
- }
- }
- }
- // Based on the mode, do an action:
- if( doMode ) {
- // Add a filter
- if( mode == ADD_FILTER ) {
- if( filterIDOK ) {
- try {
- Class c = Class.forName(classNames[filterID]); // load the name of the filter
- ForumMessageFilter newFilter = (ForumMessageFilter)(c.newInstance());
- forum.addForumMessageFilter( newFilter );
- }
- catch( ClassNotFoundException cnfe ) { System.err.println( "... in admin/admin-filter.jsp: " + cnfe ); }
- catch( IllegalAccessException iae ) { System.err.println( "... in admin/admin-filter.jsp: " + iae ); }
- catch( InstantiationException ie ) { System.err.println( "... in admin/admin-filter.jsp: " + ie ); }
- catch( UnauthorizedException ue ) { System.err.println( "... in admin/admin-filter.jsp: " + ue ); }
- }
- // redirect to same page
- response.sendRedirect( "forumFilters.jsp?forum=" + forumID );
- return;
- }
- else if( mode == REMOVE_FILTER ) {
- if( filterIDOK ) {
- try {
- forum.removeForumMessageFilter(filterID);
- } catch( UnauthorizedException ue ) { System.err.println( "... in admin/admin-filter.jsp: " + ue ); }
- }
- // redirect to same page
- response.sendRedirect( "forumFilters.jsp?forum=" + forumID );
- return;
- }
- else if( mode == SAVE_PROPERTIES ) {
- if( filterIDOK ) {
- Enumeration props = installedFilters[filterID].filterPropertyNames();
- while( props.hasMoreElements() ) {
- String propName = (String)props.nextElement();
- String propValue = request.getParameter(propName);
- if( propValue != null ) {
- try {
- installedFilters[filterID].setFilterProperty(propName,propValue);
- } catch( IllegalArgumentException iae ) { System.err.println( "... in admin/admin-filter.jsp: " + iae ); }
- }
- }
- }
- }
- else {
- // do nothing
- }
- }
- %>
- <html>
- <head>
- <title></title>
- <%
- if (!noForumSpecified)
- {
- %>
- <script language="JavaScript" type="text/javascript">
- <%-- JavaScript array of filter descriptions --%>
- var descriptions = new Array(
- <% for( int i=0; i<allFilters.length; i++ ) { %>
- "<%= unescapeHTML(allFilters[i].getDescription()) %>"
- <% if( (allFilters.length-i) > 1 ) { %>
- ,
- <% } %>
- <% } %> );
- function doDesc( theForm ) {
- var selected = theForm.filter.options[theForm.filter.selectedIndex].value;
- theForm.filterDesc.value = descriptions[selected];
- }
- </script>
- <%
- }
- %>
- <link rel="stylesheet" href="style/global.css">
- </head>
- <body background="images/shadowBack.gif" bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#800080" alink="#ff0000">
- <% ///////////////////////
- // pageTitleInfo variable (used by include/pageTitle.jsp)
- String[] pageTitleInfo = { "论坛 : 论坛过滤器" };
- %>
- <% ///////////////////
- // pageTitle include
- %><%@ include file="include/pageTitle.jsp" %>
- <p>
- <% ////////////////////
- // display a list of groups to edit if no group was specified:
- if( noForumSpecified ) {
- String formAction = "filters";
- %>
- <%@ include file="forumChooser.jsp"%>
- <% out.flush();
- return;
- }
- %>
- <% /////////////////////
- // at this point, we know there is a group to work with:
- //Forum forum = forumFactory.getForum(forumID);
- String forumName = forum.getName();
- %>
- 配置 <b><%= forumName %></b> 的过滤器。
- <p>
- <%-- table of Name/Version/Description/Edit/Remove --%>
- <table cellpadding=5 cellspacing=0 border=1 width="100%">
- <tr bgcolor="#eeeeee">
- <td align="center">当前 <b><%= forum.getName() %></b> 安装的过滤器</td>
- </tr>
- <tr>
- <td>
- <% if( installedFilters==null || installedFilters.length == 0 ) { %>
- <i>没有安装任何过滤器。(你可以从下面的选择安装)</i>
- <% } else { %>
- <table cellpadding=3 cellspacing=0 border=1 width="100%">
- <tr bgcolor="#eeeeee">
- <td width="1%" nowrap>名称</td>
- <td width="1%" nowrap>版本</td>
- <td width="97%">描述</td>
- <td width="1%" nowrap align="center">属性</td>
- <td width="1%" nowrap align="center">删除</td>
- </tr>
- <% for( int i=0; i<installedFilters.length; i++ ) { %>
- <tr>
- <td><%= installedFilters[i].getName() %></td>
- <td align="center"><%= installedFilters[i].getMajorVersion() %>.<%= installedFilters[i].getMinorVersion() %></td>
- <td><%= installedFilters[i].getDescription() %></td>
- <form name="editFilterForum">
- <input type="hidden" name="forum" value="<%= forumID %>">
- <input type="hidden" name="filter" value="<%= i %>">
- <input type="hidden" name="mode" value="<%= EDIT_FILTER %>">
- <td align="center"><input type="submit" value="编辑"></td>
- </form>
- <form name="removeFilterForm">
- <input type="hidden" name="forum" value="<%= forumID %>">
- <input type="hidden" name="filter" value="<%= i %>">
- <input type="hidden" name="mode" value="<%= REMOVE_FILTER %>">
- <td align="center"><input type="radio" value="" name="remove<%= i %>" onclick="if(confirm('你确定要删除此论坛吗?')){this.form.submit();}"></td>
- </form>
- </tr>
- <% if( mode==EDIT_FILTER && filterID==i ) { %>
- <tr>
- <!-- <td><br></td> -->
- <td colspan=5>
- <%-- begin of props table --%>
- <table cellpadding=2 cellspacing=0 border=1 width="100%">
- <form action="forumFilters.jsp">
- <input type="hidden" name="forum" value="<%= forumID %>">
- <input type="hidden" name="mode" value="<%= SAVE_PROPERTIES %>">
- <input type="hidden" name="filter" value="<%= i %>">
- <% Enumeration props = installedFilters[i].filterPropertyNames();
- if( props == null ) {
- %>
- <tr>
- <td colspan=4><i>No properties to set</i></td>
- </tr>
- <% } else { %>
- <tr>
- <td width="1%" nowrap>名称</td>
- <td width="1%" nowrap>值</td>
- <td width="97%">描述</td>
- <td width="1%" rowspan=99 align="center"><input type="submit" value="保存"></td>
- </tr>
- <% while( props.hasMoreElements() ) {
- String propName = (String)props.nextElement();
- %>
- <tr>
- <td><%= propName %></td>
- <td><input type="text" name="<%= propName %>" size="25" value="<%= escapeHTML(installedFilters[i].getFilterProperty(propName)) %>"></td>
- <td><%= installedFilters[i].getFilterPropertyDescription(propName) %></td>
- </tr>
- <% } %>
- <% } %>
- </form>
- </table>
- <%-- end of props table --%>
- </td>
- </tr>
- <%-- end edit filter --%>
- <% } %>
- <% } %>
- <% } %>
- </table>
- </td>
- </tr>
- </table>
- <%-- end table of Name/Version/Description/Edit/Remove --%>
- <br>
- <%-- table of Install New WebFilter --%>
- <table cellpadding=5 cellspacing=0 border=1 width="50%">
- <tr bgcolor="#eeeeee">
- <td align="center">安装新的过滤器</td>
- </tr>
- <tr>
- <td>
- <table cellpadding=3 cellspacing=0 border=1 width="100%">
- <form action="forumFilters.jsp">
- <input type="hidden" name="forum" value="<%=forumID%>">
- <input type="hidden" name="mode" value="<%=ADD_FILTER%>">
- <tr>
- <td width="1%" nowrap align="center" valign="top">
- 过滤器:<br>
- <select name="filter" size="7" onchange="doDesc(this.form);">
- <% for( int i=0; i<allFilters.length; i++ ) {
- // if the filter is not currently installed, show it as
- // being available for install.
- if( !containsString( installedFilters, allFilters[i].getName() ) ) {
- %>
- <option value="<%= i %>"><%= allFilters[i].getName() %>
- <% } %>
- <% } %>
- </select>
- </td>
- <td width="98%"><br></td>
- <td width="1%" nowrap align="center" valign="top">
- 描述:<br>
- <textarea rows="6" cols="20" name="filterDesc" wrap="virtual"></textarea>
- </td>
- </tr>
- <tr>
- <td colspan="3" align="center"><input type="submit" value="安装..."></td>
- </tr>
- </form>
- </table>
- </td>
- </tr>
- </table>
- <%-- end table of Install New WebFilter --%>
- </body>
- </html>