issue 70 spamfilter UI - add script

git-svn-id: http://xe-core.googlecode.com/svn/branches/1.5.0@8935 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
chschy 2011-08-30 01:10:38 +00:00
parent 5a1d41dd00
commit d53eb1e448
14 changed files with 82 additions and 311 deletions

View file

@ -20,12 +20,8 @@
<actions>
<action name="dispSpamfilterAdminSetting" type="view" admin_index="true" standalone="true" menu_name="spamFilter" menu_index="true" />
<action name="procSpamfilterAdminInsertConfig" type="controller" standalone="true" ruleset="insertConfig" />
<action name="procSpamfilterAdminInsertDeniedIP" type="controller" standalone="true" ruleset="insertDeniedIp" />
<action name="procSpamfilterAdminDeleteDeniedIP" type="controller" standalone="true" ruleset="deleteDeniedIp" />
<action name="procSpamfilterAdminInsertDeniedWord" type="controller" standalone="true" ruleset="insertDeniedWord" />
<action name="procSpamfilterAdminDeleteDeniedWord" type="controller" standalone="true" ruleset="deleteDeniedWord" />
<action name="procSpamfilterAdminInsertSetting" type="controller" standalone="true" ruleset="insertSetting" />
</actions>

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<ruleset version="1.5.0">
<customrules>
<rule name="word" type="regex" test="/(.*){1,125}/" />
<rule name="word" type="regex" test="/^(.{2,40}[\r\n]+)*.{2,40}$/" />
</customrules>
<fields>
<field name="act" required="true" default="procSpamfilterAdminDeleteDeniedWord" />

View file

@ -1,9 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<ruleset version="1.5.0">
<customrules>
</customrules>
<fields>
<field name="interval" required="true" rule="number" default="0" />
<field name="limit_count" required="true" rule="number" default="5" />
</fields>
</ruleset>

View file

@ -1,9 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<ruleset version="1.5.0">
<customrules>
<rule name="ip" type="regex" test="/^(\d{1,3}(?:.(\d{1,3}|\*)){3}\s*(\/\/[^\r\n]*)?[\r\n]*)*$/" />
</customrules>
<fields>
<field name="ipaddress" required="true" rule="ip" />
</fields>
</ruleset>

View file

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<ruleset version="1.5.0">
<customrules>
</customrules>
<fields>
<field name="word" required="true" length="1:250" />
</fields>
</ruleset>

View file

@ -2,9 +2,9 @@
<ruleset version="1.5.0">
<customrules>
<rule name="ip" type="regex" test="/^(\d{1,3}(?:.(\d{1,3}|\*)){3}\s*(\/\/.*)?[^.]*)*$/" />
<rule name="word" type="regex" test="/(.*){1,125}" />
<rule name="word" type="regex" test="/^((.{2,40}[\r\n]+)*.{2,40})*$/" />
</customrules>
<fields>
<field name="act" required="true" default="procSpamfilterAdminDeleteDeniedIP" />
<field name="act" required="true" default="procSpamfilterAdminInsertSetting" />
</fields>
</ruleset>

View file

@ -53,35 +53,7 @@
}
return false;
}
/**CUT!
* @brief Spam filter configurations
**/
function procSpamfilterAdminInsertConfig() {
// Get the default information
$args = Context::gets('interval','limit_count','check_trackback');
if($args->check_trackback!='Y') $args->check_trackback = 'N';
// Create and insert the module Controller object
$oModuleController = &getController('module');
$output = $oModuleController->insertModuleConfig('spamfilter',$args);
if($output->toBool() && !in_array(Context::getRequestMethod(),array('XMLRPC','JSON'))) {
$returnUrl = Context::get('success_return_url') ? Context::get('success_return_url') : getNotEncodedUrl('', 'module', 'admin', 'act', 'dispSpamfilterAdminConfig');
header('location:'.$returnUrl);
return;
}
return $output;
}
/** CUT!
* @brief Register the banned IP address
**/
function procSpamfilterAdminInsertDeniedIP() {
$ipaddress = Context::get('ipaddress');
$description = Context::get('description');
$oSpamfilterController = &getController('spamfilter');
return $oSpamfilterController->insertIP($ipaddress, $description);
}
/**
* @brief Delete the banned IP
**/
@ -96,20 +68,6 @@
return $output;
}
/** CUT!
* @brief Register the prohibited word
**/
function procSpamfilterAdminInsertDeniedWord() {
$word = Context::get('word');
$output = $this->insertWord($word);
if($output->toBool() && !in_array(Context::getRequestMethod(),array('XMLRPC','JSON'))) {
$returnUrl = Context::get('success_return_url') ? Context::get('success_return_url') : getNotEncodedUrl('', 'module', 'admin', 'act', 'dispSpamfilterAdminSetting');
header('location:'.$returnUrl);
return;
}
return $output;
}
/**
* @brief Delete the prohibited Word
**/

View file

@ -33,7 +33,7 @@
Context::set('ip_list', $ip_list);
Context::set('word_list', $word_list);
// Set a template file
$this->setTemplateFile('spSpamFilter');
$this->setTemplateFile('index');
}
}
?>

View file

@ -1,60 +0,0 @@
<!--#include("header.html")-->
<!-- xml js filter를 이용하기 위한 데이터 전달용 form -->
<form ruleset="deleteDeniedIp" id="fo_denied_ip" action="./" method="post">
<input type="hidden" name="act" value="procSpamfilterAdminDeleteDeniedIP" />
<input type="hidden" name="ipaddress" value="" />
</form>
<!-- 수동 추가 -->
<div cond="$XE_VALIDATOR_MESSAGE" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
<p>{$XE_VALIDATOR_MESSAGE}</p>
</div>
<form ruleset="insertDeniedIp" action="./" method="post">
<input type="hidden" name="act" value="procSpamfilterAdminInsertDeniedIP" />
<table cellspacing="0" class="rowTable">
<tr>
<th scope="row"><div>{$lang->denied_ip}</div></th>
<td>
<input type="text" name="ipaddress" value="" class="inputTypeText" />
<p>{$lang->about_denied_ip}</p>
</td>
</tr>
<tr>
<th scope="row"><div>{$lang->description}</div></th>
<td>
<input type="text" name="description" value="" class="inputTypeText" />
</td>
</tr>
<tr>
<th colspan="2" class="button">
<span class="button black strong"><input type="submit" value="{$lang->cmd_registration}" accesskey="s" /></span>
</th>
</tr>
</table>
</form>
<!-- 목록 -->
<table cellspacing="0" class="rowTable">
<caption>Total{count($ip_list)}</caption>
<thead>
<tr>
<th scope="col"><div>{$lang->no}</div></th>
<th scope="col"><div>{$lang->ipaddress}</div></th>
<th scope="col"><div>{$lang->description}</div></th>
<th scope="col"><div>{$lang->regdate}</div></th>
<th scope="col"><div>{$lang->cmd_delete}</div></th>
</tr>
</thead>
<tbody>
<!--@foreach($ip_list as $no => $val)-->
<tr class="row{$cycle_idx}">
<td>{count($ip_list)-$no}</td>
<td>{$val->ipaddress}</td>
<td class="wide">{$val->description}</td>
<td>{zdate($val->regdate,"Y-m-d")}</td>
<td><a href="#" onclick="doDeleteDeniedIP('{$val->ipaddress}');return false;" title="{$lang->cmd_delete}" class="buttonSet buttonDelete"><span>{$lang->cmd_delete}</span></a></td>
</tr>
<!--@end-->
</tbody>
</table>

View file

@ -1,57 +0,0 @@
<!--#include("header.html")-->
<!-- xml js filter를 이용하기 위한 데이터 전달용 form -->
<form ruleset="deleteDeniedWord" id="fo_denied_word" action="./" method="post">
<input type="hidden" name="act" value="procSpamfilterAdminDeleteDeniedWord" />
<input type="hidden" name="word" value="" />
</form>
<!-- 수동 추가 -->
<div cond="$XE_VALIDATOR_MESSAGE" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
<p>{$XE_VALIDATOR_MESSAGE}</p>
</div>
<form ruleset="insertDeniedWord" action="./" method="post">
<input type="hidden" name="act" value="procSpamfilterAdminInsertDeniedWord" />
<table cellspacing="0" class="rowTable">
<tr>
<th scope="row"><div>{$lang->word}</div></th>
<td>
<input type="text" name="word" value="" class="inputTypeText" />
<p>{$lang->about_denied_word}</p>
</td>
</tr>
<tr>
<th colspan="2" class="button">
<span class="button black stron"><input type="submit" value="{$lang->cmd_registration}" accesskey="s" /></span>
</th>
</tr>
</table>
</form>
<!-- 목록 -->
<table cellspacing="0" class="rowTable">
<caption>Total {number_format($word_list)}</caption>
<thead>
<tr>
<th scope="col"><div>{$lang->no}</div></th>
<th scope="col"><div>{$lang->word}</div></th>
<th scope="col"><div>{$lang->hit}</div></th>
<th scope="col"><div>{$lang->latest_hit}</div></th>
<th scope="col"><div>{$lang->regdate}</div></th>
<th scope="col"><div>{$lang->cmd_delete}</div></th>
</tr>
</thead>
<tbody>
<!--@foreach($word_list as $no => $val)-->
<tr class="row{$cycle_idx}">
<td>{count($word_list)-$no}</td>
<td class="wide">{$val->word}</td>
<td>{$val->hit}</td>
<td><span title="{zdate($val->latest_hit, 'Y-m-d H:i:s')}">{zdate($val->latest_hit, 'Y-m-d')}</span></td>
<td>{zdate($val->regdate,"Y-m-d")}</td>
{@ $val->word = base64_encode($val->word);}
<td><a href="#" onclick="doDeleteDeniedWord('{$val->word}');return false;" title="{$lang->cmd_delete}" class="buttonSet buttonDelete"><span>{$lang->cmd_delete}</span></a></td>
</tr>
<!--@end-->
</tbody>
</table>

View file

@ -1,11 +0,0 @@
<!--%import("js/spamfilter_admin.js")-->
<h3 class="xeAdmin">{$lang->spamfilter} <span class="gray">{$lang->cmd_management}</span></h3>
<div class="header4 gap1">
<ul class="localNavigation">
<li <!--@if($act=='dispSpamfilterAdminConfig')-->class="on"<!--@end-->><a href="{getUrl('act','dispSpamfilterAdminConfig','module_srl','')}">{$lang->cmd_module_config}</a></li>
<li <!--@if($act=='dispSpamfilterAdminDeniedIPList')-->class="on"<!--@end-->><a href="{getUrl('act','dispSpamfilterAdminDeniedIPList')}">{$lang->cmd_denied_ip}</a></li>
<li <!--@if($act=='dispSpamfilterAdminDeniedWordList')-->class="on"<!--@end-->><a href="{getUrl('act','dispSpamfilterAdminDeniedWordList')}">{$lang->cmd_denied_word}</a></li>
</ul>
</div>

View file

@ -1,38 +1,70 @@
<!--#include("header.html")-->
<!--%import("js/spamfilter_admin.js")-->
<div class="content" id="content">
<div cond="$XE_VALIDATOR_MESSAGE" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
<p>{$XE_VALIDATOR_MESSAGE}</p>
<form id="spamfilterDelete" action="" method="post">
<input type="hidden" name="act" value="" />
<input type="hidden" name="ipaddress" value="" />
<input type="hidden" name="word" value="" />
<input type="hidden" name="ruleset" value="">
</form>
<form action="" id="spamfilterInsert" class="form" ruleset="insertSetting">
<input type="hidden" name="act" value="procSpamfilterAdminInsertSetting">
<input type="hidden" name="module" value="spamfilter">
<input type="hidden" name="ruleset" value="insertSetting">
<input type="hidden" name="flag" value="">
<h1 class="h1">Spam Filter</h1>
<ul>
<li>
<p class="q">{$lang->cmd_interval}</p>
<p class="a">
<input type="radio" name="limits" id="spamCond1_yes" value="Y" <!--@if($config->limits=='Y' || $config->limits =='')-->checked="checked"<!--@end--> />
<label for="spamCond1_yes">{$lang->yes}</label>
<input type="radio" name="limits" id="spamCond1_no" value="N" <!--@if($config->limits!='Y' && $config->limits !='')--> checked="checked"<!--@end--> /> <label for="spamCond1_no">{$lang->no}</label>
</p>
</li>
<li>
<p class="q">{$lang->cmd_check_trackback}</p>
<p class="a">
<input type="radio" name="check_trackback" id="spamCond2_yes" value="Y" <!--@if($config->check_trackback=='Y' || $config->check_trackback=='')--> checked="checked"<!--@end--> />
<label for="spamCond2_yes">{$lang->yes}</label>
<input type="radio" name="check_trackback" id="spamCond2_yes" value="N" <!--@if($config->check_trackback!='Y' && $config->check_trackback!='')--> checked="checked"<!--@end--> / > <label for="spamCond2_yes">{$lang->no}</label>
</p>
</li>
<li>
<p class="q">{$lang->cmd_denied_ip}</p>
<div class="a">
<ul class="textList">
<!--@foreach($ip_list as $ipListKey)-->
<li>{$ipListKey->ipaddress} <!--@if($ipListKey->description)-->// {$ipListKey->description} <!--@end-->
<a href="#" onclick="doDeleteDeniedIP('{$ipListKey->ipaddress}')" class="side">{$lang->delete}</a>
</li>
<!--@endforeach-->
</ul>
</div>
<p class="a">
<textarea rows="4" cols="42" name="ipaddressList" title="스팸 IP 추가"></textarea>
<span class="btn small"><button type="button" onclick="doInsertDeniedSome('ipaddressList')">{$lang->add}</button></span>
<span class="desc">{$lang->about_denied_ip}</span>
</p>
</li>
<li>
<p class="q"><label for="spamKeyword">{$lang->cmd_denied_word}</label></p>
<div class="a">
<ul class="textList">
<!--@foreach($word_list as $wordListKey)-->
<li>{$wordListKey->word} <a href="#" onclick="doDeleteDeniedWord('{$wordListKey->word}')" class="side">{$lang->delete}</a></li>
<!--@end-->
</ul>
</div>
<p class="a">
<textarea rows="4" cols="42" name="wordList" title="스팸 키워드 추가"></textarea>
<span class="btn small"><button type="button" onclick="doInsertDeniedSome('wordList')">{$lang->add}</button></span>
<span class="desc">{$lang->about_denied_word}</span>
</p>
</li>
</ul>
<div class="btnArea">
<span class="btn medium"><input type="submit" value="Save" /></span>
</div>
</form>
</div>
<form ruleset="insertConfig" action="./" method="post">
<input type="hidden" name="act" value="procSpamfilterAdminInsertConfig" />
<table cellspacing="0" class="rowTable">
<tr>
<th scope="col"><div>{$lang->interval}</div></th>
<td>
<input type="text" name="interval" value="{$config->interval}" class="inputTypeText" /> {$lang->unit_sec}
<p>{$lang->about_interval}</p>
</td>
</tr>
<tr class="row2">
<th scope="col"><div>{$lang->limit_count}</div></th>
<td>
<input type="text" name="limit_count" value="{$config->limit_count?$config->limit_count:5}" class="inputTypeText" />
<p>{$lang->about_limit_count}</p>
</td>
</tr>
<tr>
<th scope="col"><div>{$lang->check_trackback}</div></th>
<td>
<input type="checkbox" name="check_trackback" value="Y" <!--@if($config->check_trackback=='Y')-->checked="checked"<!--@end--> />
<p>{$lang->about_check_trackback}</p>
</td>
</tr>
<tr class="row2">
<th colspan="2" class="button">
<span class="button black strong"><input type="submit" value="{$lang->cmd_registration}" accesskey="s" /></span>
</th>
</tr>
</table>
</form>

View file

@ -22,12 +22,21 @@ function doDeleteDeniedWord(word) {
function doInsertDeniedSome(some){
var fo_obj = get_by_id('spamfilterInsert');
fo_obj.flag.value = 'addsome';
if(some == 'ipaddressList'){
var reg = /^(\d{1,3}(?:.(\d{1,3}|\*)){3}\s*(\/\/[^\r\n]*)?[\r\n]*)*$/;
var matchStr = fo_obj.ipaddressList.value;
fo_obj.wordList.value = '';
}
else if(some == 'wordList'){
var reg = /^(.{2,40}[\r\n]+)*.{2,40}$/;
var matchStr = fo_obj.wordList.value;
fo_obj.ipaddressList.value = '';
}
if(!matchStr.match(reg)){
alert('형식에 맞게 입력하세요'); return false;
}
fo_obj.submit();
}

View file

@ -1,70 +0,0 @@
<!--%import("js/spamfilter_admin.js")-->
<div class="content" id="content">
<form id="spamfilterDelete" action="" method="post">
<input type="hidden" name="act" value="" />
<input type="hidden" name="ipaddress" value="" />
<input type="hidden" name="word" value="" />
<input type="hidden" name="ruleset" value="">
</form>
<form action="" id="spamfilterInsert" class="form" ruleset="insertSetting">
<input type="hidden" name="act" value="procSpamfilterAdminInsertSetting">
<input type="hidden" name="module" value="spamfilter">
<input type="hidden" name="ruleset" value="insertSetting">
<input type="hidden" name="flag" value="">
<h1 class="h1">Spam Filter</h1>
<ul>
<li>
<p class="q">{$lang->cmd_interval}</p>
<p class="a">
<input type="radio" name="limits" id="spamCond1_yes" value="Y" <!--@if($config->limits=='Y')-->checked="checked"<!--@end--> />
<label for="spamCond1_yes">{$lang->yes}</label>
<input type="radio" name="limits" id="spamCond1_no" value="N" <!--@if($config->limits!='Y')--> checked="checked"<!--@end--> /> <label for="spamCond1_no">{$lang->no}</label>
</p>
</li>
<li>
<p class="q">{$lang->cmd_check_trackback}</p>
<p class="a">
<input type="radio" name="check_trackback" id="spamCond2_yes" value="Y" <!--@if($config->check_trackback=='Y')--> checked="checked"<!--@end--> />
<label for="spamCond2_yes">{$lang->yes}</label>
<input type="radio" name="check_trackback" id="spamCond2_yes" value="N" <!--@if($config->check_trackback!='Y')--> checked="checked"<!--@end--> / > <label for="spamCond2_yes">{$lang->no}</label>
</p>
</li>
<li>
<p class="q">{$lang->cmd_denied_ip}</p>
<div class="a">
<ul class="textList">
<!--@foreach($ip_list as $ipListKey)-->
<li>{$ipListKey->ipaddress} <!--@if($ipListKey->description)-->// {$ipListKey->description} <!--@end-->
<a href="#" onclick="doDeleteDeniedIP('{$ipListKey->ipaddress}')" class="side">삭제</a>
</li>
<!--@endforeach-->
</ul>
</div>
<p class="a">
<textarea rows="4" cols="42" name="ipaddressList" title="스팸 IP 추가"></textarea>
<span class="btn small"><button type="button" onclick="doInsertDeniedSome('ipaddressList')">{$lang->add}</button></span>
<span class="desc">{$lang->about_denied_ip}</span>
</p>
</li>
<li>
<p class="q"><label for="spamKeyword">{$lang->cmd_denied_word}</label></p>
<div class="a">
<ul class="textList">
<!--@foreach($word_list as $wordListKey)-->
<li>{$wordListKey->word} <a href="#" onclick="doDeleteDeniedWord('{$wordListKey->word}')" class="side">삭제</a></li>
<!--@end-->
</ul>
</div>
<p class="a">
<textarea rows="4" cols="42" name="wordList" title="스팸 키워드 추가"></textarea>
<span class="btn small"><button type="button" onclick="doInsertDeniedSome('wordList')">{$lang->add}</button></span>
<span class="desc">{$lang->about_denied_word}</span>
</p>
</li>
</ul>
<div class="btnArea">
<span class="btn medium"><input type="submit" value="Save" /></span>
</div>
</form>
</div>