Clean up notification center and fix mention algorithm

This commit is contained in:
Kijin Sung 2016-04-16 21:32:00 +09:00
parent 30fbf83659
commit 3df66f2a1a
13 changed files with 170 additions and 191 deletions

View file

@ -134,9 +134,10 @@ $lang->layout = 'Layout';
$lang->mobile_layout = 'Mobile Layout';
$lang->widget = 'Widget';
$lang->module = 'Module';
$lang->skin = 'Theme';
$lang->mobile_skin = 'Mobile Theme';
$lang->skin = 'Skin';
$lang->mobile_skin = 'Mobile Skin';
$lang->colorset = 'Colorset';
$lang->mobile_colorset = 'Mobile Colorset';
$lang->extra_vars = 'User Defined';
$lang->domain = 'Domain Name';
$lang->url = 'URL';

View file

@ -137,6 +137,7 @@ $lang->module = '모듈';
$lang->skin = '스킨';
$lang->mobile_skin = '모바일 스킨';
$lang->colorset = '컬러셋';
$lang->mobile_colorset = '모바일 컬러셋';
$lang->extra_vars = '사용자 정의';
$lang->domain = '도메인';
$lang->url = 'URL';

View file

@ -1,11 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<module version="0.2">
<title xml:lang="ko">Rhymix 알림센터 Lite</title>
<title xml:lang="en">Rhymix Notification Center Lite</title>
<title xml:lang="ko">알림센터 Lite</title>
<title xml:lang="en">Notification Center Lite</title>
<description xml:lang="ko">사이트 사용자간의 커뮤니케이션에 대한 정보를 알려주는 모듈입니다.</description>
<description xml:lang="en">This module notify users of information about new documents, comments and/or messages that call them. This module will enhance communication beween site users.</description>
<version>2.1.5</version>
<date>2014-12-09</date>
<version>3.0.0</version>
<date>2016-04-17</date>
<category>content</category>
<author link="http://github.com/xe-public">
<name xml:lang="ko">XE Public</name>

View file

@ -24,9 +24,9 @@
</actions>
<menus>
<menu name="ncenterlite" type="all">
<title xml:lang="ko">Rhymix 알림센터 Lite</title>
<title xml:lang="en">Rhymix Notification Center Lite</title>
<title xml:lang="jp">Rhymix 通知センター Lite</title>
<title xml:lang="ko">알림센터 Lite</title>
<title xml:lang="en">Notification Center Lite</title>
<title xml:lang="jp">通知センター Lite</title>
</menu>
</menus>
</module>

View file

@ -1,6 +1,6 @@
<?php
$lang->ncenterlite = 'Rhymix Notification Center Lite';
$lang->ncenterlite_install_version = 'Installed Notification Center Lite version';
$lang->ncenterlite = 'Notification Center Lite';
$lang->ncenterlite_install_version = 'Installed version';
$lang->ncenterlite_document = 'document';
$lang->ncenterlite_comment = 'comment';
$lang->ncenterlite_type_message = 'message';
@ -52,37 +52,24 @@ $lang->ncenterlite_stop_no_permission_other_user = 'You don\'t have the authorit
$lang->ncenterlite_stop_no_permission_other_user_settings = 'You don\'t have the authority to control settings of other members.';
$lang->ncenterlite_message_delete_notification_before = 'Notifications before %s are deleted.';
$lang->ncenterlite_message_delete_notification_all = 'Every notification is deleted.';
$lang->ncenterlite_config_environment = '<span class="x_label x_label-important">HELP!</span> Agreement on gathering server environment information';
$lang->ncenterlite_config_environment_about = '
<p>\'Notification Center Lite\' is distributed as an <a href="https://en.wikipedia.org/wiki/Free_software" target="_blank">free software</a>.</p>
<p>\'Notification Center Lite\' is developing with collective intelligence, such as users\' bug reports, suggestions and/or contributions.<br />If you select to \'Agree on gathering\', the items below will be gathered by developers of this program, and the information will be referenced to enhance functions of this program. Thank you.</p>
<ul>
<li>Domain name of this website</li>
<li>Version value of Notification Center Lite</li>
<li>XE Core version value</li>
<li>PHP version value</li>
</ul>
';
$lang->ncenterlite_config_environment_agree = 'Agree on gathering';
$lang->ncenterlite_config_environment_disagree = 'Disagree on gathering';
$lang->ncenterlite_click_to_open = 'Click here to open';
$lang->ncenterlite_notice_list = 'Notification list';
$lang->ncenterlite_basic_settings = 'Basic function settings';
$lang->ncenterlite_warning = 'Watch out!';
$lang->ncenterlite_io = 'Activate Notification Center';
$lang->ncenterlite_io = 'Activate Notifications';
$lang->ncenterlite_io_about = 'You can activate or inactivate every function of Notification Center Lite module.';
$lang->ncenterlite_on = 'Active';
$lang->ncenterlite_off = 'Inactive';
$lang->ncenterlite_display = 'Display Notification Center';
$lang->ncenterlite_display_y = 'Display';
$lang->ncenterlite_display_n = 'Hide';
$lang->ncenterlite_display_about = 'Whether to use the skins of the module is the option to choose whether to use the skin of the widget or layout. The default setting uses the skins of the module.
<span class="x_label x_label-important">Watch out!</span> Choose only if you use a layout or widget in Notification Center!';
$lang->ncenterlite_display = 'Display Notifications';
$lang->ncenterlite_display_y = 'Yes';
$lang->ncenterlite_display_n = 'No';
$lang->ncenterlite_display_about = 'You can hide notifications from Notification Center Lite if you are using a layout or widget that handles notifications for you.';
$lang->ncenterlite_mention_target = 'Mention target';
$lang->ncenterlite_mention_target_about = 'Mention target can be nicknames or IDs (@Nickname or @ID).';
$lang->ncenterlite_skin_settings = 'Skin settings';
$lang->ncenterlite_zindex = 'Z-index of notification';
$lang->ncenterlite_zindex_about = 'Some elements that have high z-index can hide notification layer. If so, set z-index of notification layer as 100, 200, and so on to show it.';
$lang->ncenterlite_test = 'Tests';
$lang->ncenterlite_test_make_dummy = 'Make dummy data';
$lang->ncenterlite_test_mention = 'Web page notification test';
$lang->ncenterlite_test_mention_about = 'Create dummy data for module and/or skin test.';

View file

@ -1,21 +1,21 @@
<?php
$lang->ncenterlite = 'Rhymix 알림센터 Lite';
$lang->ncenterlite_install_version = '설치된 알림센터 Lite 버전';
$lang->ncenterlite = '알림센터 Lite';
$lang->ncenterlite_install_version = '설치된 버전';
$lang->ncenterlite_document = '글';
$lang->ncenterlite_comment = '댓글';
$lang->ncenterlite_mention = '션';
$lang->ncenterlite_mention = '션';
$lang->ncenterlite_cmd_vote = '추천';
$lang->ncenterlite_comment_comment = '대댓글';
$lang->ncenterlite_type_message = '쪽지';
$lang->ncenterlite_sender = '보낸 사람';
$lang->ncenterlite_addressee = '받는 사람';
$lang->ncenterlite_noti_contents = '내용';
$lang->ncenterlite_notify_setting = '알림센터 사용할 페이지';
$lang->ncenterlite_about_notify_setting = '선택한 페이지에서 알림센터를 표시하지 않습니다.';
$lang->ncenterlite_notify_mid_all = '전체 알림 사용할 페이지';
$lang->ncenterlite_about_mid_all = '선택한 게시판에서는 모든 알림을 관리자가 받을 수 있습니다.';
$lang->ncenterlite_notify_setting = '알림 미표시 페이지';
$lang->ncenterlite_about_notify_setting = '선택한 모듈에서는 알림을 표시하지 않습니다.';
$lang->ncenterlite_notify_mid_all = '관리자 알림 페이지';
$lang->ncenterlite_about_mid_all = '선택한 모듈에서는 모든 알림이 관리자에게도 전달됩니다.';
$lang->ncenterlite_admin_content = '관리자 알림';
$lang->about_admin_content = '\'관리자 알림\'은 선택한 페이지에 대해서 관리자에게 새글과 댓글을 알려줍니다. 이 설정은 알림센터 사용설정에서 사용할 페이지를 선택해야합니다.';
$lang->about_admin_content = '관리자 알림을 받을 모듈은 "모듈별 사용 설정" 페이지에서 선택할 수 있습니다.';
$lang->ncenterlite_read = '읽음 확인';
$lang->ncenterlite_read_y = '읽음';
$lang->ncenterlite_read_n = '읽지 않음';
@ -28,19 +28,19 @@ $lang->ncenterlite_userconfig_about = '알림센터의 개인의 설정을 저
$lang->ncenterlite_comment_noti = '댓글 알림';
$lang->ncenterlite_comment_noti_about = '내 게시물의 혹은 내 댓글에 댓글이 달릴경우 알림을 받습니다.';
$lang->ncenterlite_mention_noti = '멘션 알림';
$lang->ncenterlite_mention_noti_about = '누군가 글, 혹은 댓글을 통해서 나를 맨션 했을 경우 알려줍니다. (맨션 방법 @닉네임 )';
$lang->ncenterlite_mention_noti_about = '누군가 글, 혹은 댓글을 통해서 나를 멘션 했을 경우 알려줍니다. (멘션 방법 @닉네임 )';
$lang->ncenterlite_message_noti = '쪽지 알림';
$lang->ncenterlite_message_noti_about = '누군가에게 받은 쪽지를 알림을 받습니다.';
$lang->ncenterlite_activate = '사용';
$lang->ncenterlite_inactivate = '사용 안함';
$lang->ncenterlite_userconfig_about_warning = '주의! 당신은 관리자 권한으로 다른 사용자의 설정창 접속하였습니다.';
$lang->ncenterlite_userconfig_about_warning = '주의! 당신은 관리자 권한으로 다른 사용자의 설정창 접속하였습니다.';
$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>라고 댓글을 남겼습니다.';
$lang->ncenterlite_commented_board = '<strong>%1$s</strong>님이 <strong>"%2$s"</strong>게시판에 <strong>"%3$s"</strong>라고 댓글을 남겼습니다.';
$lang->ncenterlite_mentioned = '<strong>%s</strong>님이 <strong>"%s" %s</strong>에서 회원님을 언급하였습니다.';
$lang->ncenterlite_message_string = '<strong>%d</strong>개의 읽지 않은 <strong>메시지</strong>가 있습니다.';
$lang->ncenterlite_message_mention = '<strong>%s</strong>님께서 <strong>"%s"</strong>라고 메지를 보내셨습니다.';
$lang->ncenterlite_message_mention = '<strong>%s</strong>님께서 <strong>"%s"</strong>라고 메지를 보내셨습니다.';
$lang->ncenterlite_test_noti = '<strong>%s</strong>님! 스킨 테스트 알림을 완료했습니다.';
$lang->ncenterlite_vote = '<strong>%s</strong>님이 <strong>"%s"</strong> 글을 추천하였습니다.';
$lang->ncenterlite_admin_content_message = '<strong>%1$s</strong>님이 <strong>"%2$s"</strong>게시판에 <strong>"%3$s"</strong>라고 글을 남겼습니다.';
@ -62,49 +62,24 @@ $lang->ncenterlite_stop_no_permission_other_user = '다른 회원의 설정을
$lang->ncenterlite_stop_no_permission_other_user_settings = '다른 회원의 설정을 변경할 권한이 없습니다.';
$lang->ncenterlite_message_delete_notification_before = '%s까지 알림 정보를 삭제했습니다.';
$lang->ncenterlite_message_delete_notification_all = '모든 알림을 삭제했습니다.';
$lang->ncenterlite_config_environment = '<span class="x_label x_label-important">도와주세요!</span> 사용 환경 정보 제공 동의';
$lang->ncenterlite_config_environment_about = '
<p>\'알림센터 Lite\' <a href="https://ko.wikipedia.org/wiki/자유소프트웨어" target="_blank">자유소프트웨어</a> 제공하고 있습니다.</p>
<p>\'알림센터 Lite\' 사용자의 버그 보고, 의견 제출을 통해 공동의 힘으로 발전하고 있습니다.<br>\'제공 동의\' 선택하면 아래와 같은 항목이 전송되며, 알림센터 Lite의 기능을 개선하는데 참고하겠습니다. 감사합니다.</p>
<ul>
<li> 사이트의 도메인</li>
<li>알림센터 Lite의 버전</li>
<li>XE 버전</li>
<li>PHP 버전</li>
</ul>
';
$lang->about_mention_preview = '
<ul class="preview">
<li data-mention-default="enable"><strong>@스님</strong></li>
<li data-mention-default="enable"><strong>@선생님이다</strong></li>
<li data-mention-default="enable"><strong>@NAME</strong>&nbsp;&nbsp;</li>
<li data-mention-default="enable"><strong>@NAME</strong>&nbsp;&nbsp;</li>
<li><strong>@NAME</strong></li>
<li><strong>@NAME</strong>님과</li>
<li><strong>@NAME1</strong>,&nbsp;&nbsp;<strong>@NAME2</strong>님이&nbsp;&nbsp;</li>
</ul>
<p class="x_help-block">녹색으로 표시된 예시처럼 사용할 있습니다.</p>
';
$lang->ncenterlite_config_environment_agree = '제공 동의';
$lang->ncenterlite_config_environment_disagree = '제공 안 함';
$lang->ncenterlite_notice_list = '알림 목록';
$lang->ncenterlite_basic_settings = '기본 기능 설정';
$lang->ncenterlite_basic_settings = '기본 설정';
$lang->ncenterlite_warning = '주의!';
$lang->ncenterlite_io = '알림센터 동작여부';
$lang->ncenterlite_io = '알림 대상 동작';
$lang->ncenterlite_io_about = '알림센터의 모든 기능을 중지 시킬 수 있습니다.';
$lang->ncenterlite_on = '동작';
$lang->ncenterlite_only_message = '쪽지만';
$lang->ncenterlite_off = '동작 안 함';
$lang->ncenterlite_display = '알림센터 노출여부';
$lang->ncenterlite_display_y = '노출';
$lang->ncenterlite_display_n = '숨김';
$lang->ncenterlite_display_about = '알림센터의 스킨을 사용할 것인지 혹은 위젯 레이아웃에서 제작되어 들어간 스킨을 사용할지 선택합니다. 기본은 알림센터모듈의 기본스킨을 사용하도록 합니다.
<span class="x_label x_label-important">주의!</span> 알림센터를 레이아웃이나 위젯으로 표현할 있을 때에만 동작안함 선택하세요.';
$lang->ncenterlite_mention_target = '멘션 타겟 설정';
$lang->ncenterlite_mention_target_about = '알림센터에서 닉네임 혹은 아이디 선택하여 맨션설정을 할 수 있습니다.';
$lang->ncenterlite_display = '알림 표시 여부';
$lang->ncenterlite_display_y = '표시';
$lang->ncenterlite_display_n = '표시하지 않음';
$lang->ncenterlite_display_about = '사용하는 레이아웃이나 위젯에 알림을 표시하는 기능이 있는 경우 중복을 막기 위해 알림센터의 알림을 숨길 수 있습니다.';
$lang->ncenterlite_mention_target = '멘션 타겟';
$lang->ncenterlite_mention_target_about = '멘션 알림을 @아이디 소유자에게 보낼지 @닉네임 소유자에게 보낼지 선택할 수 있습니다.';
$lang->ncenterlite_skin_settings = '스킨 설정';
$lang->ncenterlite_zindex = '알림센터의 z-index';
$lang->ncenterlite_zindex_about = '알림센터가 다른 요소에 가려지는 경우에 100, 200, ... 이상으로 높여 보세요.';
$lang->ncenterlite_zindex = '알림의 z-index';
$lang->ncenterlite_zindex_about = '알림이 페이지 헤더 등 다른 요소에 가려지는 경우 z-index를 높여 보세요.';
$lang->ncenterlite_test = '시험용 알림 생성';
$lang->ncenterlite_test_make_dummy = '더미 데이터 생성';
$lang->ncenterlite_test_mention = '시험용 스킨 알림 생성';
$lang->ncenterlite_test_mention_about = '스킨 및 모듈 테스트를 위한 시험용 알림 생성.';
@ -113,21 +88,21 @@ $lang->ncenterlite_test_push_about = '모듈 및 모바일 테스트를 위한
$lang->ncenterlite_document_event_settings = '새 글 알림 및 문서알림';
$lang->ncenterlite_document_event_vote = '글 추천 알림';
$lang->ncenterlite_document_event_vote_about = '글이 추천받았을때 추천알림을 받을 수 있습니다.';
$lang->ncenterlite_document_event_read = '게시판 읽을경우 관련알림 삭제';
$lang->ncenterlite_document_event_read_preserve = '알림을 지우지 않음';
$lang->ncenterlite_document_event_read_delete = '알림을 지움';
$lang->ncenterlite_document_event_read_about = '게시판을 읽을경우 해당 글의 포함된 모든 알림내역을 알림내역에서 삭제 합니다. 기본값은 알림을 보존합니다.';
$lang->ncenterlite_document_event_read = '글을 읽으면 관련 알림 삭제';
$lang->ncenterlite_document_event_read_preserve = '삭제하지 않음';
$lang->ncenterlite_document_event_read_delete = '삭제';
$lang->ncenterlite_document_event_read_about = '글을 읽을 경우 해당 글과 관련된 모든 알림을 자동으로 삭제합니다.';
$lang->ncenterlite_commnet_event = '댓글 알림 설정';
$lang->ncenterlite_commnet_event_noti_all = '글쓴이에게 모든 댓글 알림';
$lang->ncenterlite_commnet_event_noti_some = '대댓글은 알리지 않음';
$lang->ncenterlite_message_event = '쪽지 알림 설정';
$lang->ncenterlite_message_event_about = '쪽지 알림을 사용하지 않음(XE의 기본 쪽지 알림을 사용)';
$lang->ncenterlite_mid_use = '알림센터 사용설정';
$lang->member_menu_view = '회원정보 메뉴노출 설정';
$lang->member_menu_on = '메뉴에 표시';
$lang->member_menu_off = '메뉴에 표시안함';
$lang->about_member_menu_view = '회원정보보기에서 메뉴 목록에 회원알림센터 설정 및 회원알림목록을 접근할 수잇는 페이지를 노출하거나 노출 시키지 않을 수 있습니다.';
$lang->ncenterlite_no_notify = '알림 내역이 없습니다.';
$lang->ncenterlite_mid_use = '모듈별 사용 설정';
$lang->member_menu_view = '회원 메뉴 표시';
$lang->member_menu_on = '표시';
$lang->member_menu_off = '표시하지 않음';
$lang->about_member_menu_view = '각 회원이 알림 설정을 변경할 수 있는 메뉴를 추가합니다.';
$lang->ncenterlite_no_notify = '알림 내역이 없습니다.';
$lang->ncenterlite_all_delete = '전체 삭제';
$lang->ncenterlite_month_before_delete = '한 달 이전의 알림 삭제';
$lang->dont_check_notify_delete = '회원이 확인하지 않은 알림도 삭제됩니다.';
@ -137,8 +112,12 @@ $lang->notify_content = '알림 내용';
$lang->notify_read_check = '알림 읽음 여부';
$lang->notify_readed = '읽음';
$lang->notify_dont_readed = '읽지않음';
$lang->anonymous_nick_name_setting = '익명의 지정 닉네임';
$lang->about_anonymous_nick_name = '익명게시판에서 고정된 익명닉네임인 \'Anonymous\'를 사용하지 않고 표기할 이름을 지정합니다. 기본값은 \'Anonymous\'입니다.';
$lang->mention_setting = '맨션 설정';
$lang->mention_nim = '\'님\'을 붙여 쓸 수 있도록 허용';
$lang->ncenterlite_msg_setting_error = '설정에 오류가 있습니다. 다시 설정해주세요.';
$lang->anonymous_nick_name_setting = '익명 닉네임 대체';
$lang->about_anonymous_nick_name = '익명 게시판에서 발생한 알림에 표시할 이름을 지정합니다.';
$lang->mention_suffixes = '멘션 접미사';
$lang->about_mention_suffixes = '한국어처럼 존칭이나 조사를 붙여쓰는 언어에서 @알림센터님을 멘션해도 \'알림센터\' 회원에게 알립니다.<br>여러 접미사를 사용하려면 쉼표로 구분하여 입력해 주십시오.';
$lang->mention_suffix_always_cut = '접미사가 포함된 이름 처리';
$lang->mention_suffix_always_cut_y = '접미사를 제외한 이름의 회원 우선';
$lang->mention_suffix_always_cut_n = '접미사를 포함한 이름의 회원 우선';
$lang->about_mention_suffix_always_cut = '\'알림센터님\'이라는 회원과 \'알림센터\'라는 회원이 모두 있을 경우 @알림센터님을 멘션하면 누구에게 알릴지 선택합니다.';
$lang->ncenterlite_msg_setting_error = '설정에 오류가 있습니다. 다시 설정해 주세요.';

View file

@ -11,11 +11,11 @@ class ncenterliteAdminController extends ncenterlite
'use',
'display_use',
'user_config_list',
'mention_format',
'mention_names',
'mention_suffixes',
'mention_suffix_always_cut',
'document_notify',
'hide_module_srls',
'mention_format',
'admin_notify_module_srls',
'skin',
'mskin',
@ -42,9 +42,16 @@ class ncenterliteAdminController extends ncenterlite
{
$config->anonymous_name = null;
}
if($obj->disp_act == 'dispNcenterliteAdminConfig' && !$obj->mention_format)
if($obj->disp_act == 'dispNcenterliteAdminConfig')
{
$config->mention_format = array();
if ($obj->mention_suffixes)
{
$config->mention_suffixes = array_map('trim', implode(',', $obj->mention_suffixes));
}
else
{
$config->mention_suffixes = array();
}
}
if($obj->disp_act == 'dispNcenterliteAdminSeletedmid' && !$obj->hide_module_srls)
{

View file

@ -78,9 +78,7 @@ class ncenterliteController extends ncenterlite
$oNcenterliteModel = getModel('ncenterlite');
$config = $oNcenterliteModel->getConfig();
$content = strip_tags($obj->title . ' ' . $obj->content);
$mention_targets = $this->_getMentionTarget($content);
$mention_targets = $this->_getMentionTarget($obj->title . ' ' . $obj->content);
$document_srl = $obj->document_srl;
$module_info = $oModuleModel->getModuleInfoByDocumentSrl($document_srl);
@ -233,7 +231,9 @@ class ncenterliteController extends ncenterlite
// check use the mention option.
if(isset($config->use['mention']))
{
$mention_targets = $this->_getMentionTarget(strip_tags($obj->content));
$mention_targets = $this->_getMentionTarget($content);
debugPrint($mention_targets);
// !TODO 공용 메소드로 분리
foreach($mention_targets as $mention_member_srl)
{
@ -1076,81 +1076,66 @@ class ncenterliteController extends ncenterlite
function _getMentionTarget($content)
{
$oNcenterliteModel = getModel('ncenterlite');
$oMemberModel = getModel('member');
$config = $oNcenterliteModel->getConfig();
$logged_info = Context::get('logged_info');
$list = array();
$content = strip_tags($content);
$content = str_replace('&nbsp;', ' ', $content);
// 정규표현식 정리
$split = array();
if(in_array('comma', $config->mention_format))
// Extract mentions.
$content = html_entity_decode(strip_tags($content));
preg_match_all('/(?:^|\s)@([^\pC\pM\pP\pS\pZ]+)/u', $content, $matches);
$mentions = array_unique($matches[1]);
$members = array();
// Find members.
foreach ($mentions as $mention)
{
$split[] = ',';
}
$regx = join('', array('/(^|\s)@([^@\s', join('', $split), ']+)/i'));
preg_match_all($regx, $content, $matches);
// '님'문자 이후 제거
if(in_array('respect', $config->mention_format))
{
$nick_name = array_unique($matches[2]);
foreach($nick_name as $nick)
if ($config->mention_suffix_always_cut != 'Y')
{
$nick_member_srl = getModel('member')->getMemberSrlByNickName($nick);
if($nick_member_srl)
if ($config->mention_names === 'id')
{
$list[] = $nick_member_srl;
$member_srl = $oMemberModel->getMemberSrlByUserID($mention);
}
else
{
$member_srl = $oMemberModel->getMemberSrlByNickName($mention);
}
}
if(!empty($list))
else
{
return $list;
$member_srl = null;
}
foreach($matches[2] as $idx => $item)
if (!$member_srl)
{
$pos = strpos($item, '님');
if($pos !== false && $pos > 0)
foreach ($config->mention_suffixes as $suffix)
{
$matches[2][$idx] = trim(substr($item, 0, $pos));
if($logged_info && $logged_info->nick_name == $matches[2][$idx])
if (($pos = strpos($mention, $suffix)) !== false && $pos > 0)
{
unset($matches[2][$idx]);
$mention = substr($mention, 0, $pos);
}
}
}
}
$nicks = array_unique($matches[2]);
$oMemberModel = getModel('member');
$member_config = $oMemberModel->getMemberConfig();
if($config->mention_names == 'id' && $member_config->identifier != 'email_address')
{
foreach($nicks as $user_id)
{
$id_member_srl = $oMemberModel->getMemberSrlByUserID($user_id);
if($id_member_srl)
if (isset($members[$mention]))
{
$list[] = $id_member_srl;
continue;
}
elseif ($config->mention_names === 'id')
{
$member_srl = $oMemberModel->getMemberSrlByUserID($mention);
}
else
{
$member_srl = $oMemberModel->getMemberSrlByNickName($mention);
}
}
}
else
{
foreach($nicks as $nick_name)
if (!$member_srl || ($logged_info && $member_srl == $logged_info->member_srl))
{
$nick_member_srl = $oMemberModel->getMemberSrlByNickName($nick_name);
if($nick_member_srl)
{
$list[] = $nick_member_srl;
}
continue;
}
$members[$mention] = $member_srl;
}
return $list;
return array_values($members);
}
}

View file

@ -18,13 +18,16 @@ class ncenterliteModel extends ncenterlite
}
if(!$config->use)
{
$config->use = array();
$config->use = array('message' => 1);
}
if(!$config->display_use) $config->display_use = 'Y';
if(!$config->mention_names) $config->mention_names = 'nick_name';
if(!$config->mention_format && !is_array($config->mention_format)) $config->mention_format = array('respect');
if(!is_array($config->mention_format)) $config->mention_format = explode('|@|', $config->mention_format);
if(!$config->mention_suffixes)
{
$config->mention_suffixes = array('님', '様');
}
unset($config->mention_format);
if(!$config->document_notify) $config->document_notify = 'direct-comment';
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);
@ -33,6 +36,7 @@ class ncenterliteModel extends ncenterlite
if(!$config->skin) $config->skin = 'default';
if(!$config->colorset) $config->colorset = 'black';
if(!$config->zindex) $config->zindex = '9999';
if(!$config->anonymous_name) $config->anonymous_name = 'Anonymous';
self::$config = $config;
}

View file

@ -4,7 +4,10 @@
</customrules>
<fields>
<field name="use" />
<field name="mention_format" />
<field name="display_use" />
<field name="display_use" />
<field name="mention_suffixes" />
<field name="mention_names" />
<field name="document_notify" />
<field name="skin" />
<field name="colorset" />

View file

@ -9,19 +9,19 @@
<section class="section">
<div class="x_control-group">
<label class="x_control-label"><span class="x_label x_label-important">{$lang->ncenterlite_warning}</span> {$lang->ncenterlite_io}</label>
<label class="x_control-label">{$lang->ncenterlite_io}</label>
<div class="x_controls">
<label for="notify_mention" class="x_inline"><input type="checkbox" name="use['mention']" id="notify_mention" value="1" checked="checked"|cond="isset($config->use['mention'])" /> {$lang->ncenterlite_mention}</label>
<label for="notify_comment" class="x_inline"><input type="checkbox" name="use['comment']" id="notify_comment" value="1" checked="checked"|cond="isset($config->use['comment'])" /> {$lang->ncenterlite_comment}</label>
<label for="notify_comment_comment" class="x_inline"><input type="checkbox" name="use['comment_comment']" id="notify_comment_comment" value="1" checked="checked"|cond="isset($config->use['comment_comment'])" /> {$lang->ncenterlite_comment_comment}</label>
<label for="notify_vote" class="x_inline"><input type="checkbox" name="use['vote']" id="notify_vote" value="1" checked="checked"|cond="isset($config->use['vote'])" /> {$lang->ncenterlite_cmd_vote}</label>
<label for="notify_message" class="x_inline"><input type="checkbox" name="use['message']" id="notify_message" value="1" checked="checked"|cond="isset($config->use['message'])" /> {$lang->ncenterlite_type_message}</label>
<label for="notify_admin_content" class="x_inline"><input type="checkbox" name="use['admin_content']" id="notify_admin_content" value="1" checked="checked"|cond="isset($config->use['admin_content'])" /> {$lang->ncenterlite_admin_content}</label>
<p>{$lang->about_admin_content}</p>
<label for="notify_mention" class="x_inline"><input type="checkbox" name="use[mention]" id="notify_mention" value="1" checked="checked"|cond="isset($config->use['mention'])" /> {$lang->ncenterlite_mention}</label>
<label for="notify_comment" class="x_inline"><input type="checkbox" name="use[comment]" id="notify_comment" value="1" checked="checked"|cond="isset($config->use['comment'])" /> {$lang->ncenterlite_comment}</label>
<label for="notify_comment_comment" class="x_inline"><input type="checkbox" name="use[comment_comment]" id="notify_comment_comment" value="1" checked="checked"|cond="isset($config->use['comment_comment'])" /> {$lang->ncenterlite_comment_comment}</label>
<label for="notify_vote" class="x_inline"><input type="checkbox" name="use[vote]" id="notify_vote" value="1" checked="checked"|cond="isset($config->use['vote'])" /> {$lang->ncenterlite_cmd_vote}</label>
<label for="notify_message" class="x_inline"><input type="checkbox" name="use[message]" id="notify_message" value="1" checked="checked"|cond="isset($config->use['message'])" /> {$lang->ncenterlite_type_message}</label>
<label for="notify_admin_content" class="x_inline"><input type="checkbox" name="use[admin_content]" id="notify_admin_content" value="1" checked="checked"|cond="isset($config->use['admin_content'])" /> {$lang->ncenterlite_admin_content}</label>
<p class="x_help-block">{$lang->about_admin_content}</p>
</div>
</div>
<div class="x_control-group">
<label class="x_control-label"><span class="x_label x_label-important">{$lang->ncenterlite_warning}</span> {$lang->ncenterlite_display}</label>
<label class="x_control-label">{$lang->ncenterlite_display}</label>
<div class="x_controls">
<label class="x_inline">
<input type="radio" id="display_use_y" name="display_use" value="Y" checked="checked"|cond="$config->display_use == 'Y'" /> {$lang->ncenterlite_display_y}
@ -33,19 +33,15 @@
</div>
</div>
<div class="x_control-group">
<label class="x_control-label">{$lang->anonymous_nick_name_setting}</label>
<label class="x_control-label">{$lang->member_menu_view}</label>
<div class="x_controls">
<input type="text" name="anonymous_name" value="{$config->anonymous_name}" />
<p class="x_help-block">{$lang->about_anonymous_nick_name}</p>
</div>
</div>
<div class="x_control-group">
<label class="x_control-label">{$lang->mention_setting}</label>
<div class="x_controls mention_option">
<label class="x_inline">
<input type="checkbox" name="mention_format[]" value="respect" data-mention-split="님" checked="checked"|cond="is_array($config->mention_format) && in_array('respect', $config->mention_format)" />{$lang->mention_nim}
<input type="radio" id="user_config_list_id" name="user_config_list" value="Y" checked="checked"|cond="$config->user_config_list == 'Y'" /> {$lang->member_menu_on}
</label>
{$lang->about_mention_preview}
<label class="x_inline">
<input type="radio" id="user_config_list_nick_name" name="user_config_list" value="N" checked="checked"|cond="$config->user_config_list != 'Y'" /> {$lang->member_menu_off}
</label>
<p class="x_help-block">{$lang->about_member_menu_view}</p>
</div>
</div>
<div class="x_control-group">
@ -61,23 +57,39 @@
</div>
</div>
<div class="x_control-group">
<label class="x_control-label">{$lang->member_menu_view}</label>
<div class="x_controls">
<label class="x_control-label">{$lang->mention_suffixes}</label>
<div class="x_controls mention_option">
<label class="x_inline">
<input type="radio" id="user_config_list_id" name="user_config_list" value="Y" checked="checked"|cond="$config->user_config_list == 'Y'" /> {$lang->member_menu_on}
<input type="text" name="mention_suffixes" value="{escape(implode(', ', $config->mention_suffixes), false)}" />
</label>
<p class="x_help-block">{$lang->about_mention_suffixes}</p>
</div>
</div>
<div class="x_control-group">
<label class="x_control-label">{$lang->mention_suffix_always_cut}</label>
<div class="x_controls mention_option">
<label class="x_inline">
<input type="radio" id="mention_suffix_always_cut_y" name="mention_suffix_always_cut" value="Y" checked="checked"|cond="$config->mention_suffix_always_cut == 'Y'" /> {$lang->mention_suffix_always_cut_y}
</label>
<label class="x_inline">
<input type="radio" id="user_config_list_nick_name" name="user_config_list" value="N" checked="checked"|cond="$config->user_config_list == 'N'" /> {$lang->member_menu_off}
<input type="radio" id="mention_suffix_always_cut_n" name="mention_suffix_always_cut" value="N" checked="checked"|cond="$config->mention_suffix_always_cut != 'Y'" /> {$lang->mention_suffix_always_cut_n}
</label>
<p class="x_help-block">{$lang->about_member_menu_view}</p>
<p class="x_help-block">{$lang->about_mention_suffix_always_cut}</p>
</div>
</div>
<div class="x_control-group">
<label class="x_control-label">{$lang->ncenterlite_document_event_read}</label>
<div class="x_controls">
<label class="x_inline"><input type="radio" name="document_read" value="N" checked="checked"|cond="$config->document_read == 'N'" />{$lang->ncenterlite_document_event_read_preserve}</label>
<label class="x_inline"><input type="radio" name="document_read" value="Y" checked="checked"|cond="$config->document_read == 'Y'" />{$lang->ncenterlite_document_event_read_delete}</label>
<p>{$lang->ncenterlite_document_event_read_about}</p>
<label class="x_inline"><input type="radio" name="document_read" value="Y" checked="checked"|cond="$config->document_read == 'Y'" /> {$lang->ncenterlite_document_event_read_delete}</label>
<label class="x_inline"><input type="radio" name="document_read" value="N" checked="checked"|cond="$config->document_read != 'Y'" /> {$lang->ncenterlite_document_event_read_preserve}</label>
<p class="x_help-block">{$lang->ncenterlite_document_event_read_about}</p>
</div>
</div>
<div class="x_control-group">
<label class="x_control-label">{$lang->anonymous_nick_name_setting}</label>
<div class="x_controls">
<input type="text" name="anonymous_name" value="{escape($config->anonymous_name, false)}" />
<p class="x_help-block">{$lang->about_anonymous_nick_name}</p>
</div>
</div>
</section>

View file

@ -7,7 +7,7 @@
<li class="x_active"|cond="$act=='dispNcenterliteAdminConfig'"><a href="{getUrl('act','dispNcenterliteAdminConfig')}">{$lang->ncenterlite_basic_settings}</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_push}</a></li>
<li class="x_active"|cond="$act=='dispNcenterliteAdminTest'"><a href="{getUrl('act','dispNcenterliteAdminTest')}">{$lang->ncenterlite_test}</a></li>
<li class="x_active"|cond="$act=='dispNcenterliteAdminList'"><a href="{getUrl('act','dispNcenterliteAdminList')}">{$lang->ncenterlite_notice_list}</a></li>
</ul>
</div>

View file

@ -56,7 +56,7 @@
</div>
</div>
<div class="x_control-group">
<label class="x_control-label" for="mskin">mobile {$lang->mskin}</label>
<label class="x_control-label" for="mskin">{$lang->mobile_skin}</label>
<div class="x_controls">
<select name="mskin" id="mskin" onchange="doDisplayMobileSkinColorset(this); return false;">
<option loop="$mskin_list => $key, $val" value="{$key}" selected="selected"|cond="$config->mskin == $key">
@ -66,7 +66,7 @@
</div>
</div>
<div class="x_control-group">
<label class="x_control-label" for="mcolorset">mobile {$lang->colorset}</label>
<label class="x_control-label" for="mcolorset">{$lang->mobile_colorset}</label>
<div class="x_controls">
<select name="mcolorset" id="mcolorset">
<option loop="$mcolorset_list => $key, $val" value="{$val->name}" selected="selected"|cond="$config->mcolorset == $val->name">
@ -78,7 +78,7 @@
<div class="x_control-group">
<label class="x_control-label" for="zindex">{$lang->ncenterlite_zindex}</label>
<div class="x_controls">
<input type="number" name="zindex" id="zindex" value="{$config->zindex}" />
<input type="number" name="zindex" id="zindex" value="{$config->zindex}" style="width:100px" />
<p class="x_help-block">{$lang->ncenterlite_zindex_about}</p>
</div>
</div>