diff --git a/modules/ncenterlite/lang/en.php b/modules/ncenterlite/lang/en.php index 7a95b8758..26c1e1fb0 100644 --- a/modules/ncenterlite/lang/en.php +++ b/modules/ncenterlite/lang/en.php @@ -6,10 +6,10 @@ $lang->ncenterlite_document = 'document'; $lang->ncenterlite_comment = 'comment'; $lang->ncenterlite_type_message = 'message'; $lang->ncenterlite_sender = 'Sender'; -$lang->ncenterlite_addressee = 'Addressee'; +$lang->ncenterlite_addressee = 'Recipient'; $lang->ncenterlite_noti_contents = 'Contents'; $lang->ncenterlite_read = 'Have read'; -$lang->ncenterlite_read_y = 'Have read'; +$lang->ncenterlite_read_y = 'Read'; $lang->ncenterlite_read_n = 'Not read'; $lang->ncenterlite_no_target = 'no target'; $lang->ncenterlite_my_list = 'My notification list'; @@ -26,26 +26,27 @@ $lang->ncenterlite_message_noti_about = 'Get notice of a message after someone s $lang->ncenterlite_activate = 'Activate'; $lang->ncenterlite_inactivate = 'Inactivate'; $lang->ncenterlite_userconfig_about_warning = 'Watch out! You are controlling other user\'s settings via this page.'; -$lang->ncenterlite_article = '%1$s wrote an article as "%2$s".'; -$lang->ncenterlite_board = '%1$s wrote "%3$s" on %2$s.'; -$lang->ncenterlite_commented = '%1$s commented as "%3$s" on your %2$s.'; -$lang->ncenterlite_commented_board = '%1$s commented as "%3$s" on the board %2$s.'; -$lang->ncenterlite_mentioned = '%s mentioned you on "%s"board to "%s" .'; -$lang->ncenterlite_message_string = 'You have %d new message(s).'; -$lang->ncenterlite_message_mention = '%1$s sent a message as "%2$s".'; -$lang->ncenterlite_test_noti = '%s! Skin test notification has been done.'; -$lang->ncenterlite_vote = '%1$s marked the article "%2$s" with a recommendation.'; -$lang->ncenterlite_admin_content_message = '%1$s wrote "%3$s" on %2$s.'; +$lang->ncenterlite_article = '%1$s wrote "%2$s".'; +$lang->ncenterlite_board = '%1$s wrote "%3$s" on %2$s.'; +$lang->ncenterlite_commented = '%1$s commented "%3$s" on your %2$s.'; +$lang->ncenterlite_commented_board = '%1$s commented "%3$s" on %2$s.'; +$lang->ncenterlite_mentioned = '%1$s mentioned you in a %4$s, "%3$s", on "%2$s".'; +$lang->ncenterlite_message_string = 'You have %d unread message.'; +$lang->ncenterlite_message_string_plural = 'You have %d unread messages.'; +$lang->ncenterlite_message_mention = '%1$s sent you a message, "%2$s".'; +$lang->ncenterlite_test_noti = 'Hello, %s! This is a test notification.'; +$lang->ncenterlite_vote = '%1$s upvoted your %3$s, "%2$s".'; +$lang->ncenterlite_admin_content_message = '%1$s wrote "%3$s" on %2$s.'; $lang->ncenterlite_ago = 'ago'; -$lang->ncenterlite_date['0'] = 'Year'; -$lang->ncenterlite_date['1'] = 'Month'; -$lang->ncenterlite_date['2'] = 'Day'; -$lang->ncenterlite_date['3'] = 'Hour'; -$lang->ncenterlite_date['4'] = 'Minute'; -$lang->ncenterlite_date['5'] = 'Second'; +$lang->ncenterlite_date['0'] = 'year'; +$lang->ncenterlite_date['1'] = 'month'; +$lang->ncenterlite_date['2'] = 'day'; +$lang->ncenterlite_date['3'] = 'hour'; +$lang->ncenterlite_date['4'] = 'minute'; +$lang->ncenterlite_date['5'] = 'second'; $lang->ncenterlite_sir = ' '; -$lang->ncenterlite_message = 'You have %s notification.'; -$lang->ncenterlite_messages = 'you have %s notifications.'; +$lang->ncenterlite_message = 'You have %s new notification.'; +$lang->ncenterlite_messages = 'You have %s new notifications.'; $lang->ncenterlite_thisistest = '[*] This is a test notice.'; $lang->ncenterlite_delete_all = 'delete all'; $lang->ncenterlite_more = 'More'; @@ -89,3 +90,6 @@ $lang->ncenterlite_commnet_event_noti_all = 'Notice every comments to the author $lang->ncenterlite_commnet_event_noti_some = 'Notice only direct replies to the author'; $lang->ncenterlite_message_event = 'Notify message'; $lang->ncenterlite_message_event_about = 'Do not notify message (Use XE Core message notification system).'; +$lang->ncenterlite_all_delete = 'Delete all'; +$lang->ncenterlite_month_before_delete = 'Delete older than 1 month'; +$lang->dont_check_notify_delete = 'Unread notifications will be deleted, too.'; diff --git a/modules/ncenterlite/lang/ko.php b/modules/ncenterlite/lang/ko.php index 6cbb8ec20..40bae6b7c 100644 --- a/modules/ncenterlite/lang/ko.php +++ b/modules/ncenterlite/lang/ko.php @@ -1,13 +1,14 @@ ncenterlite = '알림센터 Lite'; $lang->ncenterlite_install_version = '설치된 버전'; -$lang->ncenterlite_advenced_config = '고급설정'; +$lang->ncenterlite_advenced_config = '고급 설정'; $lang->ncenterlite_document = '글'; $lang->ncenterlite_comment = '댓글'; $lang->ncenterlite_mention = '멘션'; $lang->ncenterlite_cmd_vote = '추천'; $lang->ncenterlite_comment_comment = '대댓글'; $lang->ncenterlite_type_message = '쪽지'; +$lang->ncenterlite_type_test = '테스트'; $lang->ncenterlite_sender = '보낸 사람'; $lang->ncenterlite_addressee = '받는 사람'; $lang->ncenterlite_noti_contents = '내용'; @@ -36,15 +37,16 @@ $lang->ncenterlite_activate = '사용'; $lang->ncenterlite_inactivate = '사용 안함'; $lang->ncenterlite_userconfig_about_warning = '주의! 당신은 관리자 권한으로 다른 사용자의 설정창에 접속하였습니다.'; $lang->ncenterlite_article = '%1$s님이 "%2$s"라고 글을 남겼습니다.'; -$lang->ncenterlite_board = '%1$s님이 게시판 "%2$s""%3$s"라고 글을 남겼습니다.'; +$lang->ncenterlite_board = '%1$s님이 "%2$s" 게시판에 "%3$s"라고 글을 남겼습니다.'; $lang->ncenterlite_commented = '%1$s님이 회원님의 %2$s에 "%3$s"라고 댓글을 남겼습니다.'; $lang->ncenterlite_commented_board = '%1$s님이 "%2$s"게시판에 "%3$s"라고 댓글을 남겼습니다.'; -$lang->ncenterlite_mentioned = '%s님이 "%s"게시판에서 "%s" 게시글을 작성하며 회원님을 언급하였습니다.'; +$lang->ncenterlite_mentioned = '%s님이 "%s" 게시판의 "%s" %s에서 회원님을 언급하였습니다.'; $lang->ncenterlite_message_string = '%d개의 읽지 않은 메시지가 있습니다.'; -$lang->ncenterlite_message_mention = '%s님께서 "%s"라고 메시지를 보내셨습니다.'; -$lang->ncenterlite_test_noti = '%s님! 스킨 테스트 알림을 완료했습니다.'; -$lang->ncenterlite_vote = '%s님이 "%s" 글을 추천하였습니다.'; -$lang->ncenterlite_admin_content_message = '%1$s님이 "%2$s"게시판에 "%3$s"라고 글을 남겼습니다.'; +$lang->ncenterlite_message_string_plural = '%d개의 읽지 않은 메시지가 있습니다.'; +$lang->ncenterlite_message_mention = '%s님이 "%s"라고 메시지를 보내셨습니다.'; +$lang->ncenterlite_test_noti = '%s님! 테스트 알림입니다.'; +$lang->ncenterlite_vote = '%s님이 회원님의 "%s" %s을 추천하였습니다.'; +$lang->ncenterlite_admin_content_message = '%1$s님이 "%2$s" 게시판에 "%3$s"라고 글을 남겼습니다.'; $lang->ncenterlite_ago = '전'; $lang->ncenterlite_date['0'] = '년'; $lang->ncenterlite_date['1'] = '개월'; @@ -107,12 +109,6 @@ $lang->ncenterlite_no_notify = '알림 내역이 없습니다.'; $lang->ncenterlite_all_delete = '전체 삭제'; $lang->ncenterlite_month_before_delete = '한 달 이전의 알림 삭제'; $lang->dont_check_notify_delete = '회원이 확인하지 않은 알림도 삭제됩니다.'; -$lang->send_member = '보낸 사람'; -$lang->resiver_member = '받는 사람'; -$lang->notify_content = '알림 내용'; -$lang->notify_read_check = '알림 읽음 여부'; -$lang->notify_readed = '읽음'; -$lang->notify_dont_readed = '읽지않음'; $lang->anonymous_nick_name_setting = '익명 닉네임 대체'; $lang->about_anonymous_nick_name = '익명 게시판에서 발생한 알림에 표시할 이름을 지정합니다.'; $lang->mention_suffixes = '멘션 접미사'; @@ -121,4 +117,6 @@ $lang->mention_suffix_always_cut = '접미사가 포함된 이름 처리'; $lang->mention_suffix_always_cut_y = '접미사를 제외한 이름의 회원 우선'; $lang->mention_suffix_always_cut_n = '접미사를 포함한 이름의 회원 우선'; $lang->about_mention_suffix_always_cut = '\'알림센터님\'이라는 회원과 \'알림센터\'라는 회원이 모두 있을 경우 @알림센터님을 멘션하면 누구에게 알릴지 선택합니다.'; +$lang->mention_limit = '멘션 갯수 제한'; +$lang->about_mention_limit = '서버 과부하와 스팸을 방지하기 위해 한 글에서 지나치게 많은 회원들을 호출하지 못하도록 합니다.'; $lang->ncenterlite_msg_setting_error = '설정에 오류가 있습니다. 다시 설정해 주세요.'; diff --git a/modules/ncenterlite/ncenterlite.admin.controller.php b/modules/ncenterlite/ncenterlite.admin.controller.php index 97a438ae3..f185a3104 100644 --- a/modules/ncenterlite/ncenterlite.admin.controller.php +++ b/modules/ncenterlite/ncenterlite.admin.controller.php @@ -14,6 +14,7 @@ class ncenterliteAdminController extends ncenterlite 'mention_names', 'mention_suffixes', 'mention_suffix_always_cut', + 'mention_limit', 'hide_module_srls', 'admin_notify_module_srls', 'skin', diff --git a/modules/ncenterlite/ncenterlite.admin.model.php b/modules/ncenterlite/ncenterlite.admin.model.php index 4e5a9ecb9..f715b3cee 100644 --- a/modules/ncenterlite/ncenterlite.admin.model.php +++ b/modules/ncenterlite/ncenterlite.admin.model.php @@ -18,75 +18,7 @@ class ncenterliteAdminModel extends ncenterlite foreach($list as $k => $v) { - $target_member = $v->target_nick_name; - - switch($v->type) - { - case 'D': - $type = $lang->ncenterlite_document; //$type = '글'; - break; - case 'C': - $type = $lang->ncenterlite_comment; //$type = '댓글'; - break; - // 메시지. 쪽지 - case 'E': - $type = $lang->ncenterlite_type_message; //$type = '쪽지'; - break; - } - - switch($v->target_type) - { - case 'C': - $str = sprintf($lang->ncenterlite_commented, $target_member, $type, $v->target_summary); - //$str = sprintf('%s님이 회원님의 %s에 "%s" 댓글을 남겼습니다.', $target_member, $type, $v->target_summary); - break; - case 'A': - $str = sprintf($lang->ncenterlite_commented_board, $target_member, $v->target_browser, $v->target_summary); - //$str = sprintf('%1$s님이 게시판 "%2$s""%3$s"라고 댓글을 남겼습니다.', $target_member, $type, $v->target_summary); - break; - case 'M': - $str = sprintf($lang->ncenterlite_mentioned, $target_member, $v->target_summary, $type); - //$str = sprintf('%s님이 "%s" %s에서 회원님을 언급하였습니다.', $target_member, $v->target_summary, $type); - break; - // 메시지. 쪽지 - case 'E': - if(version_compare(__XE_VERSION__, '1.7.4', '>=')) - { - $str = sprintf($lang->ncenterlite_message_mention, $target_member, $v->target_summary); - //%s님께서 "%s"라고 메세지를 보내셨습니다. - } - else - { - $str = sprintf($lang->ncenterlite_message_string, $v->target_summary); - } - break; - case 'T': - $str = sprintf($lang->ncenterlite_test_noti, $target_member); - break; - case 'P': - $str = sprintf($lang->ncenterlite_board, $target_member, $v->target_browser, $v->target_summary); - //%1$s님이 게시판 "%2$s""%3$s"라고 글을 남겼습니다. - break; - case 'S': - if($v->target_browser) - { - $str = sprintf($lang->ncenterlite_board, $target_member, $v->target_browser, $v->target_summary); - } - else - { - $str = sprintf($lang->ncenterlite_article, $target_member, $v->target_summary); - } - break; - case 'V': - $str = sprintf($lang->ncenterlite_vote, $target_member, $v->target_summary); - break; - } - - if($v->type=='U') - { - $str = $oNcenterliteModel->getNotifyTypeString($v->notify_type,unserialize($v->target_body)); - } - $v->text = $str; + $v->text = $oNcenterliteModel->getNotificationText($v); $v->ago = $oNcenterliteModel->getAgo($v->regdate); $v->url = getUrl('','act','procNcenterliteRedirect', 'notify', $v->notify, 'url', $v->target_url); if($v->target_member_srl) @@ -102,4 +34,4 @@ class ncenterliteAdminModel extends ncenterlite return $output; } -} \ No newline at end of file +} diff --git a/modules/ncenterlite/ncenterlite.controller.php b/modules/ncenterlite/ncenterlite.controller.php index ebaa58db2..92d951029 100644 --- a/modules/ncenterlite/ncenterlite.controller.php +++ b/modules/ncenterlite/ncenterlite.controller.php @@ -735,6 +735,7 @@ class ncenterliteController extends ncenterlite Context::set('ncenterlite_list', $_output->data); Context::set('ncenterlite_page_navigation', $_output->page_navigation); + Context::set('_ncenterlite_num', $_output->page_navigation->total_count); if(Mobile::isFromMobilePhone()) { @@ -1080,6 +1081,16 @@ class ncenterliteController extends ncenterlite // Find members. foreach ($mentions as $mention) { + if (isset($members[$mention])) + { + continue; + } + + if (count($members) >= $config->mention_limit) + { + break; + } + if ($config->mention_suffix_always_cut != 'Y') { if ($config->mention_names === 'id') diff --git a/modules/ncenterlite/ncenterlite.model.php b/modules/ncenterlite/ncenterlite.model.php index a03f6acd1..cf4fae036 100644 --- a/modules/ncenterlite/ncenterlite.model.php +++ b/modules/ncenterlite/ncenterlite.model.php @@ -28,6 +28,10 @@ class ncenterliteModel extends ncenterlite $config->mention_suffixes = array('님', '様', 'さん', 'ちゃん'); } unset($config->mention_format); + if(!isset($config->mention_limit)) + { + $config->mention_limit = 20; + } if(!$config->hide_module_srls) $config->hide_module_srls = array(); if(!is_array($config->hide_module_srls)) $config->hide_module_srls = explode('|@|', $config->hide_module_srls); if(!$config->document_read) $config->document_read = 'Y'; @@ -120,8 +124,6 @@ class ncenterliteModel extends ncenterlite function getMyNotifyList($member_srl=null, $page=1, $readed='N') { - global $lang; - $act = Context::get('act'); if($act=='dispNcenterliteNotifyList') { @@ -137,71 +139,7 @@ class ncenterliteModel extends ncenterlite foreach($list as $k => $v) { - - $target_member = $v->target_nick_name; - - switch($v->type) - { - case 'D': - $type = $lang->ncenterlite_document; //$type = '글'; - break; - case 'C': - $type = $lang->ncenterlite_comment; //$type = '댓글'; - break; - // 메시지. 쪽지 - case 'E': - $type = $lang->ncenterlite_type_message; //$type = '쪽지'; - break; - } - - switch($v->target_type) - { - case 'C': - $str = sprintf($lang->ncenterlite_commented, $target_member, $type, $v->target_summary); - //$str = sprintf('%s님이 회원님의 %s에 "%s" 댓글을 남겼습니다.', $target_member, $type, $v->target_summary); - break; - case 'A': - $str = sprintf($lang->ncenterlite_commented_board, $target_member, $v->target_browser, $v->target_summary); - //$str = sprintf('%1$s님이 게시판 "%2$s""%3$s"라고 댓글을 남겼습니다.', $target_member, $type, $v->target_summary); - break; - case 'M': - $str = sprintf($lang->ncenterlite_mentioned, $target_member, $v->target_browser, $v->target_summary); - //$str = sprintf('%s님이 "%s" %s에서 회원님을 언급하였습니다.', $target_member, $v->target_summary, $type); - break; - // 메시지. 쪽지 - case 'E': - $str = sprintf($lang->ncenterlite_message_mention,$target_member, $v->target_summary); - break; - case 'T': - $str = sprintf($lang->ncenterlite_test_noti, $target_member); - break; - case 'P': - $str = sprintf($lang->ncenterlite_board, $target_member, $v->target_browser, $v->target_summary); - break; - case 'S': - if($v->target_browser) - { - $str = sprintf($lang->ncenterlite_board, $target_member, $v->target_browser, $v->target_summary); - } - else - { - $str = sprintf($lang->ncenterlite_article, $target_member, $v->target_summary); - } - break; - case 'V': - $str = sprintf($lang->ncenterlite_vote, $target_member, $v->target_summary); - break; - case 'B': - $str = sprintf($lang->ncenterlite_admin_content_message, $target_member, $v->target_browser, $v->target_summary); - break; - } - - if($v->type=='U') - { - $str = $this->getNotifyTypeString($v->notify_type,unserialize($v->target_body)); - } - - $v->text = $str; + $v->text = $this->getNotificationText($v); $v->ago = $this->getAgo($v->regdate); $v->url = getUrl('','act','procNcenterliteRedirect', 'notify', $v->notify, 'url', $v->target_url); if($v->target_member_srl) @@ -356,7 +294,109 @@ class ncenterliteModel extends ncenterlite if(count($colorset_list)) $colorsets = implode("\n", $colorset_list); $this->add('colorset_list', $colorsets); } - + + /** + * Return the notification text. + * + * @param object $notification + * @return string + */ + public function getNotificationText($notification) + { + global $lang; + + // Get the type of notification. + switch ($notification->type) + { + // Document. + case 'D': + $type = $lang->ncenterlite_document; + break; + + // Comment. + case 'C': + $type = $lang->ncenterlite_comment; + break; + + // Message. + case 'E': + $type = $lang->ncenterlite_type_message; + break; + + // Test. + case 'T': + $type = $lang->ncenterlite_type_test; + break; + + // Other. + case 'U': + default: + return $this->getNotifyTypeString($notification->notify_type, unserialize($notification->target_body)) ?: $lang->ncenterlite; + } + + // Get the notification text. + switch ($notification->target_type) + { + // Comment on your document. + case 'C': + $str = sprintf($lang->ncenterlite_commented, $notification->target_nick_name, $type, $notification->target_summary); + break; + + // Comment on a board. + case 'A': + $str = sprintf($lang->ncenterlite_commented_board, $notification->target_nick_name, $notification->target_browser, $notification->target_summary); + break; + + // Mentioned. + case 'M': + $str = sprintf($lang->ncenterlite_mentioned, $notification->target_nick_name, $notification->target_browser, $notification->target_summary, $type); + break; + + // Message arrived. + case 'E': + $str = sprintf($lang->ncenterlite_message_mention, $notification->target_nick_name, $notification->target_summary); + break; + + // Test notification. + case 'T': + $str = sprintf($lang->ncenterlite_test_noti, $notification->target_nick_name); + break; + + // New document on a board. + case 'P': + $str = sprintf($lang->ncenterlite_board, $notification->target_nick_name, $notification->target_browser, $notification->target_summary); + break; + + // New document. + case 'S': + if($notification->target_browser) + { + $str = sprintf($lang->ncenterlite_board, $notification->target_nick_name, $notification->target_browser, $notification->target_summary); + } + else + { + $str = sprintf($lang->ncenterlite_article, $notification->target_nick_name, $notification->target_summary); + } + break; + + // Voted. + case 'V': + $str = sprintf($lang->ncenterlite_vote, $notification->target_nick_name, $notification->target_summary, $type); + break; + + // Admin notification. + case 'B': + $str = sprintf($lang->ncenterlite_admin_content_message, $notification->target_nick_name, $notification->target_browser, $notification->target_summary); + break; + + // Other. + default: + $str = $lang->ncenterlite; + } + + return $str; + } + /** * @brief 주어진 시간이 얼마 전 인지 반환 * @param string YmdHis @@ -367,9 +407,8 @@ class ncenterliteModel extends ncenterlite global $lang; $lang_type = Context::getLangType(); - $display = $lang->ncenterlite_date; // array('Year', 'Month', 'Day', 'Hour', 'Minute', 'Second') - - $ago = $lang->ncenterlite_ago; // 'Ago' + $display = $lang->ncenterlite_date; + $ago = $lang->ncenterlite_ago; $date = getdate(strtotime(zdate($datetime, 'Y-m-d H:i:s'))); diff --git a/modules/ncenterlite/tpl/advancedconfig.html b/modules/ncenterlite/tpl/advancedconfig.html index 640b0c0af..f6c5ccd75 100644 --- a/modules/ncenterlite/tpl/advancedconfig.html +++ b/modules/ncenterlite/tpl/advancedconfig.html @@ -39,6 +39,15 @@

{$lang->about_mention_suffix_always_cut}

+
+ +
+ +

{$lang->about_mention_limit}

+
+
diff --git a/modules/ncenterlite/tpl/ncenter_list.html b/modules/ncenterlite/tpl/ncenter_list.html index 60d598a57..aab6896fc 100644 --- a/modules/ncenterlite/tpl/ncenter_list.html +++ b/modules/ncenterlite/tpl/ncenter_list.html @@ -2,7 +2,7 @@
-

알림 목록

+

{$lang->ncenterlite_notice_list}

{$lang->ncenterlite_no_notify}

@@ -22,10 +22,10 @@ - - - - + + + + @@ -40,8 +40,8 @@
{$lang->send_member}{$lang->resiver_member}{$lang->notify_content}{$lang->notify_read_check}{$lang->ncenterlite_sender}{$lang->ncenterlite_addressee}{$lang->ncenterlite_noti_contents}{$lang->ncenterlite_read} {$lang->date}
{$member_info->nick_name} 타겟없음 {$val->text} - {$lang->notify_readed} - {$lang->notify_dont_readed} + {$lang->ncenterlite_read_y} + {$lang->ncenterlite_read_n} {zdate($val->regdate,"Y-m-d")} @@ -67,4 +67,4 @@ - \ No newline at end of file +