mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-01-04 17:21:39 +09:00
Merge pull request #1161 from bjrambo/pr/notify-comment-all
댓글에 게시글 작성자가 댓글을 남길경우 댓글을 남긴 모든 회원에게 알림
This commit is contained in:
commit
34c4ea5b89
10 changed files with 132 additions and 4 deletions
|
|
@ -19,6 +19,7 @@
|
|||
<action name="dispNcenterliteAdminTest" type="view" menu_name="ncenterlite" />
|
||||
<action name="dispNcenterliteAdminList" type="view" menu_name="ncenterlite" />
|
||||
<action name="dispNcenterliteAdminCustomList" type="view" menu_name="ncenterlite" />
|
||||
<action name="dispNcenterliteAdminOtherComment" type="view" menu_name="ncenterlite" />
|
||||
|
||||
<action name="procNcenterliteAdminInsertConfig" type="controller" ruleset="insertConfig" />
|
||||
<action name="procNcenterliteAdminInsertDummyData" type="controller" />
|
||||
|
|
|
|||
|
|
@ -38,6 +38,10 @@ $lang->ncenterlite_vote_noti = '추천 알림';
|
|||
$lang->ncenterlite_activate = '사용';
|
||||
$lang->ncenterlite_inactivate = '사용 안함';
|
||||
$lang->ncenterlite_userconfig_about_warning = '주의! 당신은 관리자 권한으로 다른 사용자의 설정창에 접속하였습니다.';
|
||||
$lang->ncenterlite_comment_all = '모든 댓글 작성자에게 알림';
|
||||
$lang->ncenterlite_comment_all_setting = '댓글 작성자 알림 설정';
|
||||
$lang->ncenterlite_comment_all_select_mid = '댓글 작성자 알림 사용 모듈';
|
||||
$lang->ncenterlite_about_comment_all_select_mid = '댓글 작성자 알림을 사용하실 모듈을 선택하세요. 모두 선택 해제시 기능이 작동하지 않습니다.';
|
||||
$lang->ncenterlite_article = '<strong>%1$s</strong>님이 <strong>"%2$s"</strong>라고 글을 남겼습니다.';
|
||||
$lang->ncenterlite_board = '<strong>%1$s</strong>님이 <strong>"%2$s"</strong> 게시판에 <strong>"%3$s"</strong>라고 글을 남겼습니다.';
|
||||
$lang->ncenterlite_commented = '<strong>%1$s</strong>님이 회원님의 %2$s에 <strong>"%3$s"</strong>라고 댓글을 남겼습니다.';
|
||||
|
|
@ -133,7 +137,7 @@ $lang->about_mention_suffix_always_cut = '\'알림센터님\'이라는 회원과
|
|||
$lang->mention_limit = '멘션 갯수 제한';
|
||||
$lang->about_mention_limit = '서버 과부하와 스팸을 방지하기 위해 한 글에서 지나치게 많은 회원들을 호출하지 못하도록 합니다.';
|
||||
$lang->ncenterlite_msg_setting_error = '설정에 오류가 있습니다. 다시 설정해 주세요.';
|
||||
$lang->ncenterlite_use_help = '회원들에게 전송할 알림을 선택할 수 있습니다.';
|
||||
$lang->ncenterlite_use_help = '회원들에게 전송할 알림을 선택할 수 있습니다. <br /> 모든 댓글 작성자에게 알림 기능은 게시글의 작성자가 댓글을 남길경우 게시글을 작성한 작성자를 제외하고 해당 글의 <strong>모든 댓글 작성자</strong>들에게 알림을 전송합니다.';
|
||||
$lang->ncenterlite_dont_use_push = '푸시 알림은 현재 지원중이 아닙니다.';
|
||||
$lang->member_phone_variable = '회원전화번호 변수';
|
||||
$lang->member_phone_variable_about = '회원전화번호 변수를 선택합니다. 회원전화번호 변수가 1개일 경우 설치시 자동으로 설정이 저장됩니다. 이 경우 설정을 할 필요가 없어서 설정을 선택할 수 없습니다.';
|
||||
|
|
|
|||
|
|
@ -31,6 +31,8 @@ class ncenterliteAdminController extends ncenterlite
|
|||
'variable_name',
|
||||
'user_notify_setting',
|
||||
'anonymous_voter',
|
||||
'comment_all',
|
||||
'comment_all_notify_module_srls',
|
||||
);
|
||||
|
||||
foreach($config_vars as $val)
|
||||
|
|
@ -77,6 +79,19 @@ class ncenterliteAdminController extends ncenterlite
|
|||
$config->admin_notify_module_srls = array();
|
||||
}
|
||||
}
|
||||
|
||||
if($obj->disp_act == 'dispNcenterliteAdminOtherComment')
|
||||
{
|
||||
if(!$obj->comment_all)
|
||||
{
|
||||
$config->comment_all = 'N';
|
||||
}
|
||||
if(!$obj->comment_all_notify_module_srls)
|
||||
{
|
||||
$config->comment_all_notify_module_srls = array();
|
||||
}
|
||||
}
|
||||
|
||||
$output = $oModuleController->insertModuleConfig('ncenterlite', $config);
|
||||
if(!$output->toBool())
|
||||
{
|
||||
|
|
|
|||
|
|
@ -41,6 +41,18 @@ class ncenterliteAdminView extends ncenterlite
|
|||
Context::set('mid_list', $mid_list);
|
||||
Context::set('config', $config);
|
||||
}
|
||||
|
||||
function dispNcenterliteAdminOtherComment()
|
||||
{
|
||||
$oModuleModel = getModel('module');
|
||||
$oNcenterliteModel = getModel('ncenterlite');
|
||||
$config = $oNcenterliteModel->getConfig();
|
||||
|
||||
$mid_list = $oModuleModel->getMidList(null, array('module_srl', 'mid', 'browser_title', 'module'));
|
||||
|
||||
Context::set('mid_list', $mid_list);
|
||||
Context::set('config', $config);
|
||||
}
|
||||
|
||||
function dispNcenterliteAdminSkinsetting()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ class ncenterlite extends ModuleObject
|
|||
{
|
||||
var $_TYPE_DOCUMENT = 'D'; // 댓글
|
||||
var $_TYPE_COMMENT = 'C'; // 댓글의 댓글
|
||||
var $_TYPE_COMMENT_ALL = 'G';
|
||||
var $_TYPE_ADMIN_COMMENT = 'A'; // 어드민 댓글 알림
|
||||
var $_TYPE_MENTION = 'M'; // 멘션
|
||||
var $_TYPE_MESSAGE = 'E'; // 쪽지 mEssage
|
||||
|
|
|
|||
|
|
@ -172,6 +172,40 @@ class ncenterliteController extends ncenterlite
|
|||
// 익명 노티 체크
|
||||
$is_anonymous = $this->_isAnonymous($this->_TYPE_COMMENT, $obj);
|
||||
|
||||
$oDocumentModel = getModel('document');
|
||||
$oDocument = $oDocumentModel->getDocument($document_srl);
|
||||
|
||||
if($config->comment_all == 'Y' && $obj->member_srl == $oDocument->get('member_srl') && !$obj->parent_srl && (is_array($config->comment_all_notify_module_srls) && in_array($module_info->module_srl, $config->comment_all_notify_module_srls)))
|
||||
{
|
||||
$comment_args = new stdClass();
|
||||
$comment_args->member_srl = $obj->member_srl;
|
||||
$comment_args->document_srl = $obj->document_srl;
|
||||
$other_comment = executeQuery('ncenterlite.getOtherCommentByMemberSrl', $comment_args);
|
||||
foreach ($other_comment->data as $value)
|
||||
{
|
||||
$args = new stdClass();
|
||||
$args->config_type = 'comment_all';
|
||||
$args->member_srl = $value->member_srl;
|
||||
$args->target_p_srl = $obj->comment_srl;
|
||||
$args->srl = $obj->document_srl;
|
||||
$args->target_srl = $obj->comment_srl;
|
||||
$args->type = $this->_TYPE_COMMENT;
|
||||
$args->target_type = $this->_TYPE_COMMENT_ALL;
|
||||
$args->target_url = getNotEncodedUrl('', 'document_srl', $document_srl, '_comment_srl', $comment_srl) . '#comment_' . $comment_srl;
|
||||
$args->target_summary = cut_str(trim(utf8_normalize_spaces(strip_tags($oDocument->get('title')))), 50) ?: (strpos($content, '<img') !== false ? lang('ncenterlite_content_image') : lang('ncenterlite_content_empty'));
|
||||
$args->target_nick_name = $obj->nick_name;
|
||||
$args->target_email_address = $obj->email_address;
|
||||
$args->regdate = date('YmdHis');
|
||||
$args->target_browser = $module_info->browser_title;
|
||||
$args->notify = $this->_getNotifyId($args);
|
||||
$output = $this->_insertNotify($args, $is_anonymous);
|
||||
if(!$output->toBool())
|
||||
{
|
||||
return $output;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$obj->admin_comment_notify = false;
|
||||
$admin_list = $oNcenterliteModel->getMemberAdmins();
|
||||
|
||||
|
|
@ -277,9 +311,6 @@ class ncenterliteController extends ncenterlite
|
|||
// 대댓글이 아니고, 게시글의 댓글을 남길 경우
|
||||
if(!$parent_srl || ($parent_srl && isset($config->use['comment_comment'])))
|
||||
{
|
||||
$oDocumentModel = getModel('document');
|
||||
$oDocument = $oDocumentModel->getDocument($document_srl);
|
||||
|
||||
$member_srl = $oDocument->get('member_srl');
|
||||
|
||||
if(is_array($admin_list) && in_array(abs($member_srl), $admin_list) && isset($config->use['admin_content']) && $obj->admin_comment_notify == true)
|
||||
|
|
|
|||
|
|
@ -567,6 +567,10 @@ class ncenterliteModel extends ncenterlite
|
|||
case 'I':
|
||||
$str = sprintf(lang('ncenterlite_insert_member_message'), $notification->target_nick_name);
|
||||
break;
|
||||
|
||||
case 'G':
|
||||
$str = sprintf(lang('ncenterlite_commented'), $notification->target_nick_name, $type, $notification->target_summary);
|
||||
break;
|
||||
|
||||
// Other.
|
||||
default:
|
||||
|
|
|
|||
17
modules/ncenterlite/queries/getOtherCommentByMemberSrl.xml
Normal file
17
modules/ncenterlite/queries/getOtherCommentByMemberSrl.xml
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
<query id="getOtherCommentByMemberSrl" action="select">
|
||||
<tables>
|
||||
<table name="comments" />
|
||||
</tables>
|
||||
|
||||
<columns>
|
||||
<column name="member_srl" />
|
||||
</columns>
|
||||
|
||||
<conditions>
|
||||
<condition operation="equal" column="document_srl" var="document_srl" notnull="notnull" />
|
||||
<condition operation="notequal" column="member_srl" var="member_srl" notnull="notnull" pipe="and" />
|
||||
</conditions>
|
||||
<groups>
|
||||
<group column="member_srl" />
|
||||
</groups>
|
||||
</query>
|
||||
|
|
@ -6,6 +6,7 @@
|
|||
<ul class="x_nav x_nav-tabs">
|
||||
<li class="x_active"|cond="$act=='dispNcenterliteAdminConfig'"><a href="{getUrl('act','dispNcenterliteAdminConfig')}">{$lang->ncenterlite_basic_settings}</a></li>
|
||||
<li class="x_active"|cond="$act=='dispNcenterliteAdminAdvancedconfig'"><a href="{getUrl('act', 'dispNcenterliteAdminAdvancedconfig')}">{$lang->ncenterlite_advenced_config}</a></li>
|
||||
<li class="x_active"|cond="$act=='dispNcenterliteAdminOtherComment'"><a href="{getUrl('act','dispNcenterliteAdminOtherComment')}">{$lang->ncenterlite_comment_all_setting}</a></li>
|
||||
<li class="x_active"|cond="$act=='dispNcenterliteAdminSeletedmid'"><a href="{getUrl('act','dispNcenterliteAdminSeletedmid')}">{$lang->ncenterlite_mid_use}</a></li>
|
||||
<li class="x_active"|cond="$act=='dispNcenterliteAdminSkinsetting'"><a href="{getUrl('act','dispNcenterliteAdminSkinsetting')}">{$lang->ncenterlite_skin_settings}</a></li>
|
||||
<li class="x_active"|cond="$act=='dispNcenterliteAdminTest'"><a href="{getUrl('act','dispNcenterliteAdminTest')}">{$lang->ncenterlite_test}</a></li>
|
||||
|
|
|
|||
42
modules/ncenterlite/tpl/othercomment.html
Normal file
42
modules/ncenterlite/tpl/othercomment.html
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
<load target="js/ncenter_admin.js" />
|
||||
<load target="css/ncenter_admin.css" />
|
||||
<include target="header.html" />
|
||||
|
||||
|
||||
<form ruleset="insertConfig" action="./" method="post" class="x_form-horizontal" id="fo_ncenterlite">
|
||||
<input type="hidden" name="module" value="ncenterlite" />
|
||||
<input type="hidden" name="disp_act" value="dispNcenterliteAdminOtherComment" />
|
||||
<input type="hidden" name="act" value="procNcenterliteAdminInsertConfig" />
|
||||
|
||||
<section class="section">
|
||||
<div class="x_control-group">
|
||||
<label class="x_control-label">{$lang->ncenterlite_comment_all}</label>
|
||||
<div class="x_controls">
|
||||
<label class="x_inline">
|
||||
<input type="radio" id="comment_all_y" name="comment_all" value="Y" checked="checked"|cond="$config->comment_all == 'Y'" /> {$lang->use}
|
||||
</label>
|
||||
<label class="x_inline">
|
||||
<input type="radio" id="comment_all_n" name="comment_all" value="N" checked="checked"|cond="$config->comment_all != 'Y'" /> {$lang->notuse}
|
||||
</label>
|
||||
<p class="x_help-block">{$lang->ncenterlite_use_help}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="x_control-group">
|
||||
<label class="x_control-label">{$lang->ncenterlite_comment_all_select_mid}</label>
|
||||
<div class="x_controls">
|
||||
<p class="x_help-block">{$lang->ncenterlite_about_comment_all_select_mid}</p>
|
||||
<div loop="$mid_list => $mid, $item">
|
||||
<label>
|
||||
<input type="checkbox" value="{$item->module_srl}" name="comment_all_notify_module_srls[]" checked="checked"|cond="is_array($config->comment_all_notify_module_srls) && in_array($item->module_srl, $config->comment_all_notify_module_srls)" />
|
||||
<strong>{$item->browser_title}</strong> ({$item->mid} / {strtoupper($item->module)})
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<div class="x_clearfix btnArea">
|
||||
<div class="x_pull-right">
|
||||
<button class="x_btn x_btn-primary" type="submit">{$lang->cmd_registration}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
Loading…
Add table
Add a link
Reference in a new issue