📄 managespamrules.aspx.cs
字号:
//------------------------------------------------------------------------------
// <copyright company="Telligent Systems">
// Copyright (c) Telligent Systems Corporation. All rights reserved.
// </copyright>
//------------------------------------------------------------------------------
using System;
using System.Collections;
using System.Web.UI.WebControls;
using CommunityServer.Components;
using CommunityServer.ControlPanel.UI;
using CommunityServer.Controls;
using CommunityServer.Spam;
using ResourceManager = CommunityServer.ControlPanel.Components.ResourceManager;
namespace CommunityServerWeb.ControlPanel.Tools
{
/// <summary>
/// Summary description for ManageSpamRules.
/// </summary>
public class ManageSpamRules : BaseToolsPage
{
#region Members
protected StatusMessage Status;
protected Panel ConfigurationPanel;
protected TextBox AutoModerateValue;
protected TextBox AutoDeleteValue;
protected CheckBox EnableAudit;
protected RequiredFieldValidator AutoModerateValueValidator;
protected RequiredFieldValidator AutoDeleteValueValidator;
protected Literal AutoModerateLabel;
protected Literal AutoDeleteLabel;
protected Literal EnableAuditLabel;
protected Repeater RulesList;
protected IButton SaveButton;
protected IButton RefreshButton;
private ArrayList ConfiguredRules;
#endregion
protected override void OnInit(EventArgs e)
{
this.SaveButton.Click += new EventHandler(this.SaveButton_Click);
this.RefreshButton.Click += new EventHandler(this.RefreshButton_Click);
this.RulesList.ItemDataBound += new RepeaterItemEventHandler(this.RulesList_ItemDataBound);
this.Load += new EventHandler(this.Page_Load);
base.OnInit(e);
}
private void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
this.DataBind();
}
public override void DataBind()
{
Status.Visible = false;
RefreshButton.Text = ResourceManager.GetString("Spam_ManageSpamRules_Refresh");
AutoModerateLabel.Text = ResourceManager.GetString("Spam_ManageSpamRules_AutoModerate");
AutoDeleteLabel.Text = ResourceManager.GetString("Spam_ManageSpamRules_AutoDelete");
EnableAuditLabel.Text = ResourceManager.GetString("Spam_ManageSpamRules_EnableAudit");
SpamConfiguration config = SpamConfiguration.Instance();
AutoModerateValue.Text = config.AutoModerateScore.ToString();
AutoDeleteValue.Text = config.AutoDeleteScore.ToString();
EnableAudit.Checked = config.EnableSpamScoreAudit;
ConfiguredRules = SpamRules.GetSelectedRules();
RulesList.DataSource = SpamRules.SearchForRules();
RulesList.DataBind();
}
private void SaveSettings()
{
SpamConfiguration config = SpamConfiguration.Instance(false);
config.AutoModerateScore = Int32.Parse(AutoModerateValue.Text.Trim());
config.AutoDeleteScore = Int32.Parse(AutoDeleteValue.Text.Trim());
config.EnableSpamScoreAudit = EnableAudit.Checked;
// Save the rules that are checked
ArrayList allRules = SpamRules.SearchForRules();
ArrayList checkedRules = new ArrayList();
for (int i = 0; i < RulesList.Items.Count; i++)
{
CheckBox cb = RulesList.Items[i].FindControl("RuleEnabled") as CheckBox;
if ((cb != null) && (cb.Checked))
{
Literal l = RulesList.Items[i].FindControl("RuleID") as Literal;
if (l != null)
{
Guid ruleID = new Guid(l.Text);
SpamRule rule = FindRule(allRules, ruleID);
if (rule != null)
checkedRules.Add(rule);
}
}
}
SpamRules.SaveRules(checkedRules, config);
}
private SpamRule FindRule(ArrayList rules, Guid ruleID)
{
if (rules != null)
{
foreach (SpamRule rule in rules)
{
if (rule.RuleID == ruleID)
return rule;
}
}
return null;
}
private bool IsRuleEnabled(Guid ruleID)
{
if (ConfiguredRules != null)
{
foreach (SpamRule rule in ConfiguredRules)
{
if (rule.RuleID == ruleID)
return true;
}
}
return false;
}
#region Events
private void SaveButton_Click(Object sender, EventArgs e)
{
if (!Page.IsValid)
return;
SaveSettings();
Status.Visible = true;
Status.Success = true;
Status.Text = ResourceManager.GetString("Spam_ManageSpamRules_SaveSuccessful");
}
private void RefreshButton_Click(Object sender, EventArgs e)
{
SpamRules.ClearRulesCache();
ConfiguredRules = SpamRules.GetSelectedRules();
RulesList.DataSource = SpamRules.SearchForRules();
RulesList.DataBind();
Status.Visible = true;
Status.Success = true;
Status.Text = ResourceManager.GetString("Spam_ManageSpamRules_RuleReloaded");
}
private void RulesList_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if ((e.Item.ItemType == ListItemType.Item) || (e.Item.ItemType == ListItemType.AlternatingItem))
{
SpamRule rule = e.Item.DataItem as SpamRule;
if (rule != null)
{
Literal RuleID = e.Item.FindControl("RuleID") as Literal;
if (RuleID != null)
RuleID.Text = rule.RuleID.ToString();
Literal RuleName = e.Item.FindControl("RuleName") as Literal;
if (RuleName != null)
RuleName.Text = rule.Name;
Literal RuleDesc = e.Item.FindControl("RuleDesc") as Literal;
if (RuleDesc != null)
RuleDesc.Text = rule.Description;
CheckBox RuleEnabled = e.Item.FindControl("RuleEnabled") as CheckBox;
if (RuleEnabled != null)
RuleEnabled.Checked = IsRuleEnabled(rule.RuleID);
HyperLink Settings = e.Item.FindControl("Settings") as HyperLink;
if (Settings != null)
{
// Only show configure button if there are actually settings to configure
ArrayList availableSettings = rule.GetAvailableSettings();
if ((availableSettings != null) && (availableSettings.Count > 0))
{
int height = 75 + (85 * availableSettings.Count);
Settings.Text = ResourceManager.GetString("Spam_ManageSpamRules_Configure");
Settings.NavigateUrl = String.Format("javascript:Telligent_Modal.Open('SpamRuleSettings.aspx?ruleid={0}', 500, {1}, null);", rule.RuleID, height);
}
else
{
Settings.Visible = false;
}
}
}
}
}
#endregion
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -