mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-01-03 16:51:40 +09:00
개별 문서 댓글 알림을 차단하는 옵션 추가
This commit is contained in:
parent
7285a332b7
commit
c315a6ad10
15 changed files with 447 additions and 0 deletions
|
|
@ -4,6 +4,8 @@
|
|||
<actions>
|
||||
<action name="dispNcenterliteNotifyList" type="view" permission="member" />
|
||||
<action name="dispNcenterliteUserConfig" type="view" permission="member" />
|
||||
<action name="dispNcenterliteIndividualBlockList" type="view" />
|
||||
<action name="dispNcenterliteInsertIndividualBlock" type="view" />
|
||||
|
||||
<action name="getColorsetList" type="model" permission="root" />
|
||||
<action name="getMyNotifyListTpl" type="model" permission="member" />
|
||||
|
|
@ -11,6 +13,7 @@
|
|||
<action name="procNcenterliteUserConfig" type="controller" permission="member" />
|
||||
<action name="procNcenterliteNotifyReadAll" type="controller" permission="member" />
|
||||
<action name="procNcenterliteRedirect" type="controller" permission="member" method="GET|POST" />
|
||||
<action name="procNcenterliteInsertIndividualBlock" type="controller" />
|
||||
|
||||
<action name="dispNcenterliteAdminConfig" type="view" admin_index="true" menu_name="ncenterlite" menu_index="true" />
|
||||
<action name="dispNcenterliteAdminAdvancedconfig" type="view" menu_name="ncenterlite" />
|
||||
|
|
|
|||
|
|
@ -40,6 +40,8 @@ $lang->ncenterlite_vote_noti = '추천 알림';
|
|||
$lang->ncenterlite_vote_noti_about = '내 게시글, 혹은 댓글이 추천을 받았을 때 알림을 받습니다.';
|
||||
$lang->ncenterlite_scrap_noti = '스크랩 알림';
|
||||
$lang->ncenterlite_scrap_noti_about = '누군가 내 게시글을 스크랩 했을 경우 알림을 받습니다.';
|
||||
$lang->ncneterlite_block_individual = '개별 문서/댓글 알림 차단';
|
||||
$lang->ncneterlite_block_individual_about = '개별적으로 문서/댓글을 차단할 수 있습니다.';
|
||||
$lang->ncenterlite_activate = '사용';
|
||||
$lang->ncenterlite_inactivate = '사용 안함';
|
||||
$lang->ncenterlite_userconfig_about_warning = '주의! 당신은 관리자 권한으로 다른 사용자의 설정창에 접속하였습니다.';
|
||||
|
|
@ -81,6 +83,7 @@ $lang->ncenterlite_more = '더보기';
|
|||
$lang->ncenterlite_stop_login_required = '알림센터 설정을 하시려면 로그인 해주세요.';
|
||||
$lang->ncenterlite_stop_no_permission_other_user = '다른 회원의 설정을 볼 권한이 없습니다.';
|
||||
$lang->ncenterlite_stop_no_permission_other_user_settings = '다른 회원의 설정을 변경할 권한이 없습니다.';
|
||||
$lang->ncenterlite_stop_no_permission_other_user_block_settings = '다른 회원의 차단 설정을 변경할 권한이 없습니다.';
|
||||
$lang->ncenterlite_message_delete_notification_before = '%s까지 알림 정보를 삭제했습니다.';
|
||||
$lang->ncenterlite_message_delete_notification_all = '모든 알림을 삭제했습니다.';
|
||||
$lang->ncenterlite_notice_list = '알림 목록';
|
||||
|
|
@ -123,6 +126,10 @@ $lang->ncenterlite_commnet_event_noti_some = '대댓글은 알리지 않음';
|
|||
$lang->ncenterlite_message_event = '쪽지 알림 설정';
|
||||
$lang->ncenterlite_message_event_about = '쪽지 알림을 사용하지 않음(XE의 기본 쪽지 알림을 사용)';
|
||||
$lang->ncenterlite_mid_use = '모듈별 사용 설정';
|
||||
$lang->ncenterlite_to_block = '차단함';
|
||||
$lang->ncenterlite_unblock = '차단 안함';
|
||||
$lang->this_message_block = '이 게시글/댓글의 알림 차단여부';
|
||||
$lang->about_this_message_block = '이 게시글/댓글의 알림을 차단합니다.';
|
||||
$lang->member_menu_view = '회원 메뉴 표시';
|
||||
$lang->member_menu_on = '표시';
|
||||
$lang->member_menu_off = '표시하지 않음';
|
||||
|
|
@ -168,3 +175,4 @@ $lang->ncenterlite_custom_list = '커스텀 리스트';
|
|||
$lang->msg_not_use_user_setting = '유저 세팅을 제공하지 않습니다. 관리자에게 문의하세요.';
|
||||
$lang->msg_denger_rhymix_user = '<strong>경고!</strong> 라이믹스에서는 코어에 포함된 순정 알림센터를 사용해야 합니다.<br />XE용 알림센터를 삭제하고, 라이믹스 알림센터를 다시 설치해 주시기 바랍니다.';
|
||||
$lang->msg_test_notifycation_success = '테스트알림더미를 정상적으로 생성하였습니다.';
|
||||
$lang->msg_individual_block_not_support = '개별 차단 기능을 제공하지 않습니다. 관리자에게 문의하세요.';
|
||||
|
|
|
|||
|
|
@ -35,6 +35,7 @@ class ncenterliteAdminController extends ncenterlite
|
|||
'highlight_effect',
|
||||
'comment_all',
|
||||
'comment_all_notify_module_srls',
|
||||
'individual_block',
|
||||
);
|
||||
|
||||
foreach($config_vars as $val)
|
||||
|
|
|
|||
|
|
@ -65,6 +65,99 @@ class ncenterliteController extends ncenterlite
|
|||
$this->setRedirectUrl(getNotEncodedUrl('act', 'dispNcenterliteUserConfig', 'member_srl', $member_srl));
|
||||
}
|
||||
}
|
||||
|
||||
function procNcenterliteInsertIndividualBlock()
|
||||
{
|
||||
$oNcenterliteModel = getModel('ncenterlite');
|
||||
$config = $oNcenterliteModel->getConfig();
|
||||
|
||||
if($config->individual_block !== 'Y')
|
||||
{
|
||||
throw new Rhymix\Framework\Exception('msg_individual_block_not_support');
|
||||
}
|
||||
|
||||
$member_srl = Context::get('member_srl');
|
||||
if(!$member_srl)
|
||||
{
|
||||
$member_srl = $this->user->member_srl;
|
||||
}
|
||||
|
||||
if($this->user->member_srl != $member_srl && $this->user->is_admin != 'Y')
|
||||
{
|
||||
throw new Rhymix\Framework\Exception('ncenterlite_stop_no_permission_other_user_block_settings');
|
||||
}
|
||||
|
||||
$obj = Context::getRequestVars();
|
||||
if($obj->individual_srl)
|
||||
{
|
||||
$userBlockData = $oNcenterliteModel->getUserIndividualBlockConfigByIndividualSrl($obj->individual_srl)->data;
|
||||
}
|
||||
else if($obj->target_srl)
|
||||
{
|
||||
$userBlockData = $oNcenterliteModel->getUserIndividualBlockConfigByTargetSrl($obj->target_srl, $member_srl)->data;
|
||||
}
|
||||
|
||||
if($obj->individual_type == 'document')
|
||||
{
|
||||
$text = cut_str(getModel('document')->getDocument($obj->target_srl)->get('title'), 30);
|
||||
}
|
||||
else
|
||||
{
|
||||
$comment = getModel('comment')->getComment($obj->target_srl);
|
||||
$text = cut_str($comment->get('content'), 30);
|
||||
}
|
||||
|
||||
$args = new stdClass();
|
||||
$args->member_srl = $member_srl;
|
||||
$args->target_srl = $obj->target_srl;
|
||||
if($obj->individual_type == 'document')
|
||||
{
|
||||
$args->document_srl = $obj->target_srl;
|
||||
}
|
||||
else
|
||||
{
|
||||
$args->document_srl = $comment->get('document_srl');
|
||||
}
|
||||
$args->individual_type = $obj->individual_type;
|
||||
$args->text = $text;
|
||||
|
||||
if($obj->value == 'Y')
|
||||
{
|
||||
// 데이터가 있으면 차단, 데이터가 없으면 차단하지 않기 때문에 따로 업데이트를 하지 않는다.
|
||||
if(!$userBlockData)
|
||||
{
|
||||
$args->individual_srl = getNextSequence();
|
||||
$output = executeQuery('ncenterlite.insertIndividualBlock', $args);
|
||||
if(!$output->toBool())
|
||||
{
|
||||
return $output;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$args->individual_srl = $userBlockData->individual_srl;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$args->individual_srl = $obj->individual_srl;
|
||||
$output = executeQuery('ncenterlite.deleteIndividualBlock', $args);
|
||||
if(!$output->toBool())
|
||||
{
|
||||
return $output;
|
||||
}
|
||||
}
|
||||
$this->setMessage('success_updated');
|
||||
|
||||
if (Context::get('success_return_url'))
|
||||
{
|
||||
$this->setRedirectUrl(Context::get('success_return_url'));
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->setRedirectUrl(getNotEncodedUrl('act', 'dispNcenterliteIndividualBlockList', 'member_srl', $member_srl));
|
||||
}
|
||||
}
|
||||
|
||||
function triggerAfterDeleteMember($obj)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -669,4 +669,28 @@ class ncenterliteModel extends ncenterlite
|
|||
|
||||
return $output->data;
|
||||
}
|
||||
|
||||
function getUserIndividualBlockConfigByIndividualSrl($individual_srl = 0)
|
||||
{
|
||||
$args = new stdClass();
|
||||
$args->individual_srl = $individual_srl;
|
||||
$output = executeQuery('ncenterlite.getUserIndividualBlockConfigByIndividualSrl', $args);
|
||||
|
||||
return $output;
|
||||
}
|
||||
|
||||
function getUserIndividualBlockConfigByTargetSrl($target_srl = 0, $member_srl = null)
|
||||
{
|
||||
if(!$member_srl)
|
||||
{
|
||||
$member_srl = $this->user->member_srl;
|
||||
}
|
||||
|
||||
$args = new stdClass();
|
||||
$args->target_srl = $target_srl;
|
||||
$args->member_srl = $member_srl;
|
||||
$output = executeQuery('ncenterlite.getUserIndividualBlockConfigByTargetSrl', $args);
|
||||
|
||||
return $output;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -71,4 +71,113 @@ class ncenterliteView extends ncenterlite
|
|||
Context::set('user_config', $output->data);
|
||||
$this->setTemplateFile('userconfig');
|
||||
}
|
||||
|
||||
function dispNcenterliteIndividualBlockList()
|
||||
{
|
||||
/** @var ncenterliteModel $oNcenterliteModel */
|
||||
$oNcenterliteModel = getModel('ncenterlite');
|
||||
$config = $oNcenterliteModel->getConfig();
|
||||
|
||||
if($config->individual_block !== 'Y')
|
||||
{
|
||||
throw new Rhymix\Framework\Exception('msg_individual_block_not_support');
|
||||
}
|
||||
|
||||
if(!Rhymix\Framework\Session::getMemberSrl())
|
||||
{
|
||||
throw new Rhymix\Framework\Exception('ncenterlite_stop_login_required');
|
||||
}
|
||||
|
||||
$member_srl = Context::get('member_srl');
|
||||
|
||||
if(!$member_srl)
|
||||
{
|
||||
$member_srl = $this->user->member_srl;
|
||||
}
|
||||
|
||||
$args = new stdClass();
|
||||
$args->page = Context::get('page');
|
||||
$args->list_count = '20';
|
||||
$args->page_count = '10';
|
||||
$args->member_srl = $member_srl;
|
||||
$output = executeQuery('ncenterlite.getIndividualBlockList', $args);
|
||||
|
||||
Context::set('total_count', $output->page_navigation->total_count);
|
||||
Context::set('total_page', $output->page_navigation->total_page);
|
||||
Context::set('page', $output->page);
|
||||
Context::set('individual_list', $output->data);
|
||||
Context::set('page_navigation', $output->page_navigation);
|
||||
|
||||
$this->setTemplateFile('individualList');
|
||||
}
|
||||
|
||||
function dispNcenterliteInsertIndividualBlock()
|
||||
{
|
||||
/** @var ncenterliteModel $oNcenterliteModel */
|
||||
$oNcenterliteModel = getModel('ncenterlite');
|
||||
$target_srl = Context::get('target_srl');
|
||||
$individual_srl = Context::get('individual_srl');
|
||||
$individual_type = Context::get('individual_type');
|
||||
|
||||
$member_srl = Context::get('member_srl');
|
||||
|
||||
if($individual_srl)
|
||||
{
|
||||
$output = $oNcenterliteModel->getUserIndividualBlockConfigByIndividualSrl($individual_srl);
|
||||
}
|
||||
else
|
||||
{
|
||||
$output = $oNcenterliteModel->getUserIndividualBlockConfigByTargetSrl($target_srl, $member_srl);
|
||||
}
|
||||
|
||||
|
||||
if((!$target_srl || !$individual_type) && !$output->data)
|
||||
{
|
||||
throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
}
|
||||
|
||||
if($individual_type == 'document')
|
||||
{
|
||||
$text = getModel('document')->getDocument($target_srl)->get('title');
|
||||
$type = '문서';
|
||||
if(!$text)
|
||||
{
|
||||
$text = getModel('comment')->getComment($target_srl)->get('content');
|
||||
if(!$text)
|
||||
{
|
||||
throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
}
|
||||
else
|
||||
{
|
||||
Context::set('individual_type', 'comment');
|
||||
$type = '댓글';
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
$text = getModel('comment')->getComment($target_srl)->get('content');
|
||||
$type = '댓글';
|
||||
if(!$text)
|
||||
{
|
||||
$text = getModel('document')->getDocument($target_srl)->get('title');
|
||||
if(!$text)
|
||||
{
|
||||
throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
}
|
||||
else
|
||||
{
|
||||
Context::set('individual_type', 'document');
|
||||
$type = '문서';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Context::set('individualData', $output->data);
|
||||
Context::set('text', $text);
|
||||
Context::set('type', $type);
|
||||
|
||||
$this->setTemplateFile('individualBlock');
|
||||
}
|
||||
}
|
||||
|
|
|
|||
8
modules/ncenterlite/queries/deleteIndividualBlock.xml
Normal file
8
modules/ncenterlite/queries/deleteIndividualBlock.xml
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
<query id="deleteIndividualBlock" action="delete">
|
||||
<tables>
|
||||
<table name="ncenterlite_block_individual" />
|
||||
</tables>
|
||||
<conditions>
|
||||
<condition operation="equal" column="individual_srl" var="individual_srl" notnull="notnull" filter="number" />
|
||||
</conditions>
|
||||
</query>
|
||||
19
modules/ncenterlite/queries/getIndividualBlockList.xml
Normal file
19
modules/ncenterlite/queries/getIndividualBlockList.xml
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
<query id="getIndividualBlockList" action="select">
|
||||
<tables>
|
||||
<table name="ncenterlite_block_individual" />
|
||||
</tables>
|
||||
|
||||
<columns>
|
||||
<column name="*" />
|
||||
</columns>
|
||||
|
||||
<conditions>
|
||||
<condition operation="equal" column="member_srl" var="member_srl" filter="number" notnull="notnull" />
|
||||
</conditions>
|
||||
<navigation>
|
||||
<index default="individual_srl" var="list_order" order="desc" />
|
||||
<list_count var="list_count" default="5" />
|
||||
<page_count var="page_count" default="2" />
|
||||
<page var="page" default="1" />
|
||||
</navigation>
|
||||
</query>
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
<query id="getUserIndividualBlockConfigByIndividualSrl" action="select">
|
||||
<tables>
|
||||
<table name="ncenterlite_block_individual" />
|
||||
</tables>
|
||||
|
||||
<columns>
|
||||
<column name="*" />
|
||||
</columns>
|
||||
|
||||
<conditions>
|
||||
<condition operation="equal" column="individual_srl" var="individual_srl" filter="number" notnull="notnull" />
|
||||
</conditions>
|
||||
</query>
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
<query id="getUserIndividualBlockConfigByTargetSrl" action="select">
|
||||
<tables>
|
||||
<table name="ncenterlite_block_individual" />
|
||||
</tables>
|
||||
|
||||
<columns>
|
||||
<column name="*" />
|
||||
</columns>
|
||||
|
||||
<conditions>
|
||||
<condition operation="equal" column="target_srl" var="target_srl" filter="number" notnull="notnull" />
|
||||
<condition operation="equal" column="member_srl" var="member_srl" filter="number" notnull="notnull" pipe="and" />
|
||||
</conditions>
|
||||
</query>
|
||||
12
modules/ncenterlite/queries/insertIndividualBlock.xml
Normal file
12
modules/ncenterlite/queries/insertIndividualBlock.xml
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
<query id="insertIndividualBlock" action="insert">
|
||||
<tables>
|
||||
<table name="ncenterlite_block_individual" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="individual_srl" var="individual_srl" filter="number" notnull="notnull" />
|
||||
<column name="member_srl" var="member_srl" filter="number" notnull="notnull" />
|
||||
<column name="target_srl" var="target_srl" filter="number" notnull="notnull" />
|
||||
<column name="individual_type" var="individual_type" notnull="notnull" />
|
||||
<column name="text" var="text" notnull="notnull" />
|
||||
</columns>
|
||||
</query>
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
<table name="ncenterlite_block_individual">
|
||||
<column name="individual_srl" type="number" size="11" notnull="notnull" primary_key="primary_key" />
|
||||
<column name="member_srl" type="number" size="11" notnull="notnull" index="idx_member_srl" />
|
||||
<column name="text" type="text" notnull="notnull" />
|
||||
<column name="target_srl" type="number" size="11" notnull="notnull" />
|
||||
<column name="individual_type" type="varchar" size="10" notnull="notnull" />
|
||||
</table>
|
||||
65
modules/ncenterlite/skins/default/individualBlock.html
Normal file
65
modules/ncenterlite/skins/default/individualBlock.html
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
<load target="../../../member/skins/default/css/member.css" />
|
||||
<include target="../../../member/skins/default/common_header.html" />
|
||||
<div class="xm">
|
||||
|
||||
<div cond="$XE_VALIDATOR_MESSAGE && $XE_VALIDATOR_ID == 'modules/ncenterlite/skins/default/individualblock/1'" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
|
||||
<p>{$XE_VALIDATOR_MESSAGE}</p>
|
||||
</div>
|
||||
|
||||
|
||||
<form ruleset="insertConfig" action="./" method="post" class="form-horizontal" id="fo_ncenterlite">
|
||||
<input type="hidden" name="module" value="ncenterlite" />
|
||||
<input type="hidden" name="act" value="procNcenterliteInsertIndividualBlock" />
|
||||
<input type="hidden" name="xe_validator_id" value="modules/ncenterlite/skins/default/individualblock/1" />
|
||||
<!--@if($individualData)-->
|
||||
<input type="hidden" name="target_srl" value="{$individualData->target_srl}" />
|
||||
<input type="hidden" name="individual_srl" value="{$individualData->individual_srl}" />
|
||||
<input type="hidden" name="individual_type" value="{$individualData->individual_type}" />
|
||||
<!--@else-->
|
||||
<input type="hidden" name="target_srl" value="{$target_srl}" />
|
||||
<input type="hidden" name="individual_srl" value="{$individual_srl}" />
|
||||
<input type="hidden" name="individual_type" value="{$individual_type}" />
|
||||
<!--@end-->
|
||||
<section class="section">
|
||||
<div class="control-group">
|
||||
<label class="control-label">글 종류</label>
|
||||
<div class="controls">
|
||||
<p>
|
||||
{$type}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label">내용</label>
|
||||
<div class="controls">
|
||||
<p>
|
||||
<!--@if($individualData)-->
|
||||
{$individualData->text}
|
||||
<!--@else-->
|
||||
{$text}
|
||||
<!--@end-->
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
<label class="control-label">{$lang->this_message_block}</label>
|
||||
<div class="controls">
|
||||
<label class="inline">
|
||||
<input type="radio" name="value" value="Y" checked="checked"|cond="$individualData->value != 'N'" /> {$lang->ncenterlite_to_block}
|
||||
</label>
|
||||
<label class="inline">
|
||||
<input type="radio" name="value" value="N" checked="checked"|cond="$individualData->value == 'N'" /> {$lang->ncenterlite_unblock}
|
||||
</label>
|
||||
<p>{$lang->about_this_message_block}</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<div class="clearfix btnArea">
|
||||
<div class="pull-right">
|
||||
<button class="btn btn-primary" type="submit">{$lang->cmd_registration}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<include target="../../../member/skins/default/common_footer.html" />
|
||||
59
modules/ncenterlite/skins/default/individualList.html
Normal file
59
modules/ncenterlite/skins/default/individualList.html
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
<include target="../../../member/skins/default/common_header.html" />
|
||||
<table class="table table-striped table-hover" style="margin-top:20px;">
|
||||
<thead class="bg_f_f9">
|
||||
<tr>
|
||||
<th scope="col">타입</th>
|
||||
<th scope="col">콘텐츠</th>
|
||||
<th scope="col">차단설정</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<!--@foreach($individual_list as $no => $val)-->
|
||||
<tr>
|
||||
<td>
|
||||
<!--@if($val->individual_type == 'document')-->
|
||||
<span>문서</span>
|
||||
<!--@else-->
|
||||
<span>댓글</span>
|
||||
<!--@end-->
|
||||
</td>
|
||||
<td>
|
||||
<!--@if($val->individual_type == 'document')-->
|
||||
<a href="{getUrl('', 'document_srl', $val->target_url)}">{$val->text}</a>
|
||||
<!--@else-->
|
||||
<a href="{getUrl('', 'document_srl', $val->document_srl)}#{$val->target_srl}">{$val->text}</a>
|
||||
<!--@end-->
|
||||
</td>
|
||||
<td>
|
||||
<form action="./" method="post">
|
||||
<fieldset>
|
||||
<input type="hidden" name="module" value="ncenterlite" />
|
||||
<input type="hidden" name="act" value="procNcenterliteInsertIndividualBlock" />
|
||||
<input type="hidden" name="target_srl" value="{$val->target_srl}" />
|
||||
<input type="hidden" name="individual_type" value="{$val->individual_type}" />
|
||||
<input type="hidden" name="individual_srl" value="{$val->individual_srl}" />
|
||||
<select name="value" style="width:75px;">
|
||||
<option value="Y">{$lang->ncenterlite_to_block}</option>
|
||||
<option value="N">{$lang->ncenterlite_unblock}</option>
|
||||
</select>
|
||||
<button type="submit" class="x_btn">{$lang->cmd_setup}</button>
|
||||
</fieldset>
|
||||
</form>
|
||||
</td>
|
||||
</tr>
|
||||
<!--@endforeach-->
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<div class="pagination pagination-centered">
|
||||
<ul>
|
||||
<li><a href="{getUrl('page','')}" class="direction">« {$lang->first_page}</a></li>
|
||||
<!--@if($page_navigation)-->
|
||||
<!--@while($page_no = $page_navigation->getNextPage())-->
|
||||
<li class="active"|cond="$page == $page_no"><a href="{getUrl('page',$page_no)}">{$page_no}</a></li>
|
||||
<!--@end-->
|
||||
<!--@end-->
|
||||
<li><a href="{getUrl('page',$page_navigation->last_page)}" class="direction">{$lang->last_page} »</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<include target="../../../member/skins/default/common_footer.html" />
|
||||
|
|
@ -94,6 +94,18 @@
|
|||
<p class="x_help-block">{$lang->about_highlight_effect}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="x_control-group">
|
||||
<label class="x_control-label">개별 문서/댓글 알림 차단</label>
|
||||
<div class="x_controls">
|
||||
<label class="x_inline">
|
||||
<input type="radio" name="individual_block" value="Y" checked="checked"|cond="$config->individual_block === 'Y'" /> {$lang->use}
|
||||
</label>
|
||||
<label class="x_inline">
|
||||
<input type="radio" name="individual_block" value="N" checked="checked"|cond="$config->individual_block !== 'Y'" /> {$lang->notuse}
|
||||
</label>
|
||||
<p class="x_help-block">{$lang->about_highlight_effect}</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<div class="x_clearfix btnArea">
|
||||
<div class="x_pull-right">
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue