From ef4987da0e144eefb4b3ec76eb3c5a963fc66141 Mon Sep 17 00:00:00 2001 From: zero Date: Tue, 3 Apr 2007 09:09:14 +0000 Subject: [PATCH] git-svn-id: http://xe-core.googlecode.com/svn/trunk@930 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- .../member_extra_info.addon.php | 2 +- classes/display/DisplayHandler.class.php | 6 +- modules/member/lang/ko.lang.php | 54 +++++---- modules/member/member.controller.php | 12 +- modules/member/member.model.php | 79 +++++++++++- modules/member/member.view.php | 56 ++++++++- modules/member/queries/getFriends.xml | 20 ++++ modules/member/queries/getFriendsGroups.xml | 11 ++ .../member/queries/getReceivedMessages.xml | 20 ++++ modules/member/queries/getSendedMessages.xml | 20 ++++ modules/member/queries/getStoredMessages.xml | 20 ++++ modules/member/queries/sendMessage.xml | 7 +- modules/member/queries/setMessageStored.xml | 2 +- modules/member/schemas/member_message.xml | 1 + .../skins/default/filter/send_message.xml | 12 ++ modules/member/skins/default/js/member.js | 6 + modules/member/skins/default/member_info.html | 1 + .../member/skins/default/member_messages.html | 112 ++++++++++++++++++ .../member/skins/default/send_message.html | 31 +++++ 19 files changed, 433 insertions(+), 39 deletions(-) create mode 100644 modules/member/queries/getFriends.xml create mode 100644 modules/member/queries/getFriendsGroups.xml create mode 100644 modules/member/queries/getReceivedMessages.xml create mode 100644 modules/member/queries/getSendedMessages.xml create mode 100644 modules/member/queries/getStoredMessages.xml create mode 100644 modules/member/skins/default/filter/send_message.xml create mode 100644 modules/member/skins/default/member_messages.html create mode 100644 modules/member/skins/default/send_message.html diff --git a/addons/member_extra_info/member_extra_info.addon.php b/addons/member_extra_info/member_extra_info.addon.php index 7a63c0e28..580e74d7d 100644 --- a/addons/member_extra_info/member_extra_info.addon.php +++ b/addons/member_extra_info/member_extra_info.addon.php @@ -75,7 +75,7 @@ $menu_link = sprintf('./?module=member&act=dispMemberAddFriend&target_member_srl=%s',$member_srl); // 메뉴에 새로 만든 친구 등록 메뉴 추가 - $menu_list .= sprintf("\n%s,popopen('%s','sendMessage')", $menu_str, $menu_link); + $menu_list .= sprintf("\n%s,popopen('%s','addFriend')", $menu_str, $menu_link); } // 템플릿에 적용되게 하기 위해 module의 variables에 재등록 diff --git a/classes/display/DisplayHandler.class.php b/classes/display/DisplayHandler.class.php index 91a83a9dd..8828ff62b 100644 --- a/classes/display/DisplayHandler.class.php +++ b/classes/display/DisplayHandler.class.php @@ -54,10 +54,10 @@ // 컨텐츠 출력 if(Context::getResponseMethod()!="XMLRPC") { - ini_set('zlib.output_compression_level',3); - ob_start('ob_gzhandler'); + //ini_set('zlib.output_compression_level',3); + //ob_start('ob_gzhandler'); print trim($output); - ob_end_flush(); + //ob_end_flush(); } else { print trim($output); } diff --git a/modules/member/lang/ko.lang.php b/modules/member/lang/ko.lang.php index d11493b66..954446ba0 100644 --- a/modules/member/lang/ko.lang.php +++ b/modules/member/lang/ko.lang.php @@ -5,26 +5,6 @@ * @brief 한국어 언어팩 (기본적인 내용만 수록) **/ - $lang->cmd_login = '로그인'; - $lang->cmd_logout = '로그아웃'; - $lang->cmd_signup = '가입'; - $lang->cmd_modify_member_info = '회원정보 수정'; - $lang->cmd_modify_member_password = '비밀번호 변경'; - $lang->cmd_view_member_info = '회원정보 보기'; - $lang->cmd_leave = '탈퇴'; - - $lang->cmd_member_list = '회원 목록'; - $lang->cmd_module_config = '기본 설정'; - $lang->cmd_member_group = '그룹 관리'; - $lang->cmd_send_mail = '메일발송'; - $lang->cmd_manage_id = '금지아이디관리'; - $lang->cmd_manage_form = '가입폼관리'; - $lang->cmd_view_own_document = '작성글 보기'; - $lang->cmd_send_email = '메일 보내기'; - $lang->cmd_send_message = '쪽지 보내기'; - $lang->cmd_add_friend = '친구 등록'; - $lang->cmd_view_message_box = '쪽지함 보기'; - $lang->member_default_info = '기본 정보'; $lang->member_extend_info = '추가 정보'; @@ -52,6 +32,8 @@ $lang->redirect_url = '회원 가입후 이동할 페이지'; $lang->agreement = '회원 가입 약관'; $lang->accept_agreement = '약관동의'; + $lang->sender = '보낸이'; + $lang->receiver = '받는이'; $lang->search_target_list = array( 'user_id' => '아이디', @@ -62,6 +44,35 @@ 'last_login' => '최근로그인일시', ); + $lang->message_box = array( + 'R' => '받은 쪽지함', + 'S' => '보낸 쪽지함', + 'T' => '보관함', + ); + + $lang->readed_date = "읽은 시간"; + + $lang->cmd_login = '로그인'; + $lang->cmd_logout = '로그아웃'; + $lang->cmd_signup = '가입'; + $lang->cmd_modify_member_info = '회원정보 수정'; + $lang->cmd_modify_member_password = '비밀번호 변경'; + $lang->cmd_view_member_info = '회원정보 보기'; + $lang->cmd_leave = '탈퇴'; + + $lang->cmd_member_list = '회원 목록'; + $lang->cmd_module_config = '기본 설정'; + $lang->cmd_member_group = '그룹 관리'; + $lang->cmd_send_mail = '메일발송'; + $lang->cmd_manage_id = '금지아이디관리'; + $lang->cmd_manage_form = '가입폼관리'; + $lang->cmd_view_own_document = '작성글 보기'; + $lang->cmd_send_email = '메일 보내기'; + $lang->cmd_send_message = '쪽지 보내기'; + $lang->cmd_add_friend = '친구 등록'; + $lang->cmd_view_message_box = '쪽지함 보기'; + $lang->cmd_store = "보관"; + $lang->msg_new_member = '회원 추가'; $lang->msg_update_member = '회원 정보 수정'; $lang->msg_group_is_null = '등록된 그룹이 없습니다'; @@ -74,7 +85,8 @@ $lang->msg_signup_disabled = '회원 가입을 하실 수 없습니다'; $lang->msg_already_logged = '이미 회원 가입을 하신 상태입니다'; $lang->msg_not_logged = '로그인을 하지 않으셨습니다'; - $lang->msg_content_is_null = '내용을 입력해주세요'; + $lang->msg_title_is_null = '쪽지 제목을 입력해주세요'; + $lang->msg_content_is_null = '쪽지 내용을 입력해주세요'; $lang->msg_not_uploaded_image_name = '이미지 이름을 등록할 수가 없습니다'; $lang->msg_not_uploaded_image_mark = '이미지 마크를 등록할 수가 없습니다'; diff --git a/modules/member/member.controller.php b/modules/member/member.controller.php index 0aa09b412..a6240469f 100644 --- a/modules/member/member.controller.php +++ b/modules/member/member.controller.php @@ -55,6 +55,8 @@ // 변수 검사 $receiver_srl = Context::get('receiver_srl'); if(!$receiver_srl) return new Object(-1, 'msg_not_exists_member'); + $title = trim(Context::get('title')); + if(!$title) return new Object(-1, 'msg_title_is_null'); $content = trim(Context::get('content')); if(!$content) return new Object(-1, 'msg_content_is_null'); @@ -65,11 +67,12 @@ // 발송하는 회원의 쪽지함에 넣을 쪽지 $sender_args->message_srl = getNextSequence(); - $sender_args->related_srl = 0; + $sender_args->related_srl = getNextSequence(); $sender_args->list_order = getNextSequence()*-1; $sender_args->sender_srl = $logged_info->member_srl; $sender_args->receiver_srl = $receiver_srl; $sender_args->message_type = 'S'; + $sender_args->title = $title; $sender_args->content = $content; $sender_args->readed = 'N'; $sender_args->regdate = date("YmdHis"); @@ -77,12 +80,13 @@ if(!$output->toBool()) return $output; // 받는 회원의 쪽지함에 넣을 쪽지 - $receiver_args->message_srl = getNextSequence(); - $receiver_args->related_srl = $sender_args->message_srl; - $receiver_args->list_order = getNextSequence()*-1; + $receiver_args->message_srl = $sender_args->related_srl; + $receiver_args->related_srl = 0; + $receiver_args->list_order = $sender_args->related_srl*-1; $receiver_args->sender_srl = $logged_info->member_srl; $receiver_args->receiver_srl = $receiver_srl; $receiver_args->message_type = 'R'; + $receiver_args->title = $title; $receiver_args->content = $content; $receiver_args->readed = 'N'; $receiver_args->regdate = date("YmdHis"); diff --git a/modules/member/member.model.php b/modules/member/member.model.php index 23b48e539..fa073a08b 100644 --- a/modules/member/member.model.php +++ b/modules/member/member.model.php @@ -60,7 +60,7 @@ $menu_list[] = sprintf('%s,move_url(\'%s\')', $menu_str, $menu_url); } - // 다른 사람의 아이디를 클릭한 경우 (메일, 쪽지 보내기등은 다른 사람에게만 보내는거로 설정) + // 다른 사람의 아이디를 클릭한 경우 if($member_srl != $logged_info->member_srl) { // 메일 보내기 @@ -97,7 +97,7 @@ * @brief user_id에 해당하는 사용자 정보 return **/ function getMemberInfoByUserID($user_id) { - if(!$this->member_info[$member_srl]) { + if(!$this->member_info[$user_id]) { $args->user_id = $user_id; $output = executeQuery('member.getMemberInfo', $args); if(!$output) return $output; @@ -251,7 +251,7 @@ if(!$this->member_groups[$member_srl]) { $args->member_srl = $member_srl; $output = executeQuery('member.getMemberGroups', $args); - if(!$output->data) return; + if(!$output->data) return array(); $group_list = $output->data; if(!is_array($group_list)) $group_list = array($group_list); @@ -483,23 +483,85 @@ /** * @brief 쪽지 내용을 가져옴 **/ - function getMessage($message_srl) { + function getSelectedMessage($message_srl) { + $logged_info = Context::get('logged_info'); + $args->message_srl = $message_srl; $output = executeQuery('member.getMessage',$args); - return $output->data; + $message = $output->data; + if(!$message) return ; + + // 보낸 쪽지일 경우 받는 사람 정보를 구함 + if($message->sender_srl == $logged_info->member_srl && $message->message_type == 'S') $member_info = $this->getMemberInfoByMemberSrl($message->receiver_srl); + + // 보관/받은 쪽지일 경우 보낸 사람 정보를 구함 + else $member_info = $this->getMemberInfoByMemberSrl($message->sender_srl); + + if($member_info) { + foreach($member_info as $key => $val) $message->{$key} = $val; + } + + // 받은 쪽지이고 아직 읽지 않았을 경우 읽은 상태로 변경 + if($message->message_type == 'R' && $message->readed != 'Y') { + $oMemberController = &getController('member'); + $oMemberController->setMessageReaded($message_srl); + } + + + return $message; } /** * @brief 쪽지 목록 가져오기 + * type = R : 받은 쪽지 + * type = S : 보낸 쪽지 + * type = T : 보관함 **/ - function getMessages($type = "R") { + function getMessages($message_type = "R") { + $logged_info = Context::get('logged_info'); + switch($message_type) { + case 'R' : + $args->member_srl = $logged_info->member_srl; + $args->message_type = 'R'; + $query_id = 'member.getReceivedMessages'; + break; + case 'T' : + $args->member_srl = $logged_info->member_srl; + $args->message_type = 'T'; + $query_id = 'member.getStoredMessages'; + break; + default : + $args->member_srl = $logged_info->member_srl; + $args->message_type = 'S'; + $query_id = 'member.getSendedMessages'; + break; + + } + + // 기타 변수들 정리 + $args->sort_index = 'message.list_order'; + $args->page = Context::get('page'); + $args->list_count = 10; + $args->page_count = 10; + return executeQuery($query_id, $args); } /** * @brief 친구 목록 가져오기 **/ function getFriends($friends_group_srl = 0) { + $logged_info = Context::get('logged_info'); + + $args->friends_group_srl = $friends_group_srl; + $args->member_srl = $logged_info->member_srl; + + // 기타 변수들 정리 + $args->page = Context::get('page'); + $args->sort_index = 'friends.list_order'; + $args->list_count = 10; + $args->page_count = 10; + return executeQuery('member.getMessages', $args); } @@ -507,6 +569,11 @@ * @brief 그룹 목록 가져오기 **/ function getFriendsGroups() { + $logged_info = Context::get('logged_info'); + + $args->member_srl = $logged_info->member_srl; + + return executeQuery('member.getFriendsGroups', $args); } } ?> diff --git a/modules/member/member.view.php b/modules/member/member.view.php index d813b9084..20765b097 100644 --- a/modules/member/member.view.php +++ b/modules/member/member.view.php @@ -185,13 +185,67 @@ /** * @brief 쪽지함 출력 **/ - function dispMemberMessage() { + function dispMemberMessages() { + $this->initNormal(); + + // 로그인이 되어 있지 않으면 오류 표시 + if(!Context::get('is_logged')) $this->stop('msg_not_logged'); + $logged_info = Context::get('logged_info'); + + // 변수 설정 + $message_srl = Context::get('message_srl'); + $message_type = Context::get('message_type'); + if(!in_array($message_type, array('R','S','T'))) { + $message_type = 'R'; + Context::set('message_type', $message_type); + } + + $oMemberModel = &getModel('member'); + + // message_srl이 있으면 내용 추출 + if($message_srl) { + $message = $oMemberModel->getSelectedMessage($message_srl); + if($message->message_srl == $message_srl) Context::set('message', $message); + } + + // 목록 추출 + $output = $oMemberModel->getMessages($message_type); + + // 템플릿에 쓰기 위해서 context::set + Context::set('total_count', $output->total_count); + Context::set('total_page', $output->total_page); + Context::set('page', $output->page); + Context::set('message_list', $output->data); + Context::set('page_navigation', $output->page_navigation); + + $this->setTemplateFile('member_messages'); } /** * @brief 쪽지 발송 출력 **/ function dispMemberSendMessage() { + $this->initNormal(); + $this->setLayoutFile("popup_layout"); + + // 로그인이 되어 있지 않으면 오류 표시 + if(!Context::get('is_logged')) $this->stop('msg_not_logged'); + $logged_info = Context::get('logged_info'); + + // 쪽지 받을 사용자 정보 구함 + $receiver_srl = Context::get('receiver_srl'); + if(!$receiver_srl || $logged_info->member_srl == $receiver_srl) $this->stop('msg_not_logged'); + + $oMemberModel = &getModel('member'); + $receiver_info = $oMemberModel->getMemberInfoByMemberSrl($receiver_srl); + Context::set('receiver_info', $receiver_info); + + // 에디터 모듈의 getEditor를 호출하여 서명용으로 세팅 + $oEditorModel = &getModel('editor'); + $editor = $oEditorModel->getEditor($logged_info->member_srl, false, false); + Context::set('editor', $editor); + + $this->setTemplateFile('send_message'); } /** diff --git a/modules/member/queries/getFriends.xml b/modules/member/queries/getFriends.xml new file mode 100644 index 000000000..619177486 --- /dev/null +++ b/modules/member/queries/getFriends.xml @@ -0,0 +1,20 @@ + + + +
+ + + + + + + + + + + + + + + + diff --git a/modules/member/queries/getFriendsGroups.xml b/modules/member/queries/getFriendsGroups.xml new file mode 100644 index 000000000..1eef8985b --- /dev/null +++ b/modules/member/queries/getFriendsGroups.xml @@ -0,0 +1,11 @@ + + +
+ + + + + + + + diff --git a/modules/member/queries/getReceivedMessages.xml b/modules/member/queries/getReceivedMessages.xml new file mode 100644 index 000000000..34626e2a7 --- /dev/null +++ b/modules/member/queries/getReceivedMessages.xml @@ -0,0 +1,20 @@ + + +
+
+ + + + + + + + + + + + + + + + diff --git a/modules/member/queries/getSendedMessages.xml b/modules/member/queries/getSendedMessages.xml new file mode 100644 index 000000000..7c436c4a2 --- /dev/null +++ b/modules/member/queries/getSendedMessages.xml @@ -0,0 +1,20 @@ + + +
+
+ + + + + + + + + + + + + + + + diff --git a/modules/member/queries/getStoredMessages.xml b/modules/member/queries/getStoredMessages.xml new file mode 100644 index 000000000..08f7b5455 --- /dev/null +++ b/modules/member/queries/getStoredMessages.xml @@ -0,0 +1,20 @@ + + +
+
+ + + + + + + + + + + + + + + + diff --git a/modules/member/queries/sendMessage.xml b/modules/member/queries/sendMessage.xml index 97105c446..b2e8c9ba7 100644 --- a/modules/member/queries/sendMessage.xml +++ b/modules/member/queries/sendMessage.xml @@ -4,11 +4,14 @@ + - + + + - + diff --git a/modules/member/queries/setMessageStored.xml b/modules/member/queries/setMessageStored.xml index 021a1c24d..c3ecdafdc 100644 --- a/modules/member/queries/setMessageStored.xml +++ b/modules/member/queries/setMessageStored.xml @@ -3,7 +3,7 @@
- + diff --git a/modules/member/schemas/member_message.xml b/modules/member/schemas/member_message.xml index 3648cff80..cb8e1b7b2 100644 --- a/modules/member/schemas/member_message.xml +++ b/modules/member/schemas/member_message.xml @@ -4,6 +4,7 @@ + diff --git a/modules/member/skins/default/filter/send_message.xml b/modules/member/skins/default/filter/send_message.xml new file mode 100644 index 000000000..dfab09133 --- /dev/null +++ b/modules/member/skins/default/filter/send_message.xml @@ -0,0 +1,12 @@ + +
+ + + + + + + + + +
diff --git a/modules/member/skins/default/js/member.js b/modules/member/skins/default/js/member.js index c5f92e2fb..296da97cd 100644 --- a/modules/member/skins/default/js/member.js +++ b/modules/member/skins/default/js/member.js @@ -81,3 +81,9 @@ function doDeleteImageMark(member_srl) { procFilter(fo_obj, delete_image_mark); } + +/* 쪽지 발송 */ +function completeSendMessage(ret_obj) { + alert(ret_obj['message']); + window.close(); +} diff --git a/modules/member/skins/default/member_info.html b/modules/member/skins/default/member_info.html index 8bdb53d4d..b21451ff0 100644 --- a/modules/member/skins/default/member_info.html +++ b/modules/member/skins/default/member_info.html @@ -78,6 +78,7 @@ + diff --git a/modules/member/skins/default/member_messages.html b/modules/member/skins/default/member_messages.html new file mode 100644 index 000000000..895c20189 --- /dev/null +++ b/modules/member/skins/default/member_messages.html @@ -0,0 +1,112 @@ + +
+ + + + {$lang->message_box[$message_type]} ({number_format($total_count)}) + + + {$val} + + + {$lang->cmd_back} +
+ + + +
+
+
+ + + + + + + + + + + + + + +
+ + {$lang->receiver} + + {$lang->sender} + +
{$message->nick_name} ({$message->user_id})
{$lang->title}{htmlspecialchars($message->title)}
{$message->content}
+ + + + +
+ + + + +
+ + +
+ + + + + + + + + + + + + + + + +
+ + {$lang->receiver} + + {$lang->sender} + + {$lang->title}{$lang->regdate}{$lang->readed_date}
{$val->nick_name} ({$val->user_id})
+ + {$val->title} + + {$val->title} + + {zdate($val->regdate,"Y-m-d")} + + {zdate($val->readed_date,"Y-m-d H:i:s")} + +
+
+ + +
+ + + + +
+ +
+ + +
+ [{$lang->first_page}] + + + + {$page_no} + + [{$page_no}] + + + + [{$lang->last_page}] +
diff --git a/modules/member/skins/default/send_message.html b/modules/member/skins/default/send_message.html new file mode 100644 index 000000000..c655fc69c --- /dev/null +++ b/modules/member/skins/default/send_message.html @@ -0,0 +1,31 @@ + + + +
+
+ + + + + + + + + + + + + + + + + + + + +
{$lang->cmd_send_message}
{$lang->receiver}
{$receiver_info->nick_name} ({$receiver_info->user_id})
{$lang->title}
{$editor}
+ + +
+
+