member모듈에서 쪽지/친구등의 커뮤니케이션 기능을 communication 모듈로 분리. member_extra_info 애드온에서 쪽지/친구와 관련된 기능을 member_communication 애드온으로 분리
git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4226 201d5d3c-b55e-5fd7-737f-ddc643e51545
35
modules/communication/communication.admin.controller.php
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
<?php
|
||||
/**
|
||||
* @class communicationAdminController
|
||||
* @author zero (zero@nzeo.com)
|
||||
* @brief communication module의 admin controller class
|
||||
**/
|
||||
|
||||
class communicationAdminController extends communication {
|
||||
|
||||
/**
|
||||
* @brief 초기화
|
||||
**/
|
||||
function init() {
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief communication 모듈 설정 저장
|
||||
**/
|
||||
function procCommunicationAdminInsertConfig() {
|
||||
// 기본 정보를 받음
|
||||
$args = Context::gets('skin','colorset','editor_skin');
|
||||
|
||||
if(!$args->skin) $args->skin = "default";
|
||||
if(!$args->colorset) $args->colorset = "white";
|
||||
if(!$args->editor_skin) $args->editor_skin = "default";
|
||||
|
||||
// module Controller 객체 생성하여 입력
|
||||
$oModuleController = &getController('module');
|
||||
$output = $oModuleController->insertModuleConfig('communication',$args);
|
||||
|
||||
return $output;
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
40
modules/communication/communication.admin.model.php
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
<?php
|
||||
/**
|
||||
* @class communicationAdminModel
|
||||
* @author zero (zero@nzeo.com)
|
||||
* @brief communication module의 admin model class
|
||||
**/
|
||||
|
||||
class communicationAdminModel extends communication {
|
||||
|
||||
/**
|
||||
* @brief 초기화
|
||||
**/
|
||||
function init() {
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 지정된 스킨의 컬러셋 선택을 위한 html을 return
|
||||
**/
|
||||
function getCommunicationAdminColorset() {
|
||||
$skin = Context::get('skin');
|
||||
if(!$skin) $tpl = "";
|
||||
else {
|
||||
$oModuleModel = &getModel('module');
|
||||
$skin_info = $oModuleModel->loadSkinInfo($this->module_path, $skin);
|
||||
Context::set('skin_info', $skin_info);
|
||||
|
||||
$oModuleModel = &getModel('module');
|
||||
$communication_config = $oModuleModel->getModuleConfig('communication');
|
||||
if(!$communication_config->colorset) $communication_config->colorset = "white";
|
||||
Context::set('communication_config', $communication_config);
|
||||
|
||||
$oTemplate = &TemplateHandler::getInstance();
|
||||
$tpl = $oTemplate->compile($this->module_path.'tpl', 'colorset_list');
|
||||
}
|
||||
|
||||
$this->add('tpl', $tpl);
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
40
modules/communication/communication.admin.view.php
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
<?php
|
||||
/**
|
||||
* @class communicationAdminView
|
||||
* @author zero (zero@nzeo.com)
|
||||
* @brief communication module의 admin view class
|
||||
**/
|
||||
|
||||
class communicationAdminView extends communication {
|
||||
|
||||
/**
|
||||
* @brief 초기화
|
||||
**/
|
||||
function init() {
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 쪽지 및 친구등의 관리를 위한 설정
|
||||
**/
|
||||
function dispCommunicationAdminConfig() {
|
||||
// 객체 생성
|
||||
$oEditorModel = &getModel('editor');
|
||||
$oModuleModel = &getModel('module');
|
||||
$oCommunicationModel = &getModel('communication');
|
||||
|
||||
// communication 모듈의 모듈설정 읽음
|
||||
Context::set('communication_config', $oCommunicationModel->getConfig() );
|
||||
|
||||
// 에디터 스킨 목록을 구함
|
||||
Context::set('editor_skin_list', $oEditorModel->getEditorSkinList() );
|
||||
|
||||
// 커뮤니케이션 스킨 목록을 구함
|
||||
Context::set('communication_skin_list', $oModuleModel->getSkins($this->module_path) );
|
||||
|
||||
// template 지정
|
||||
$this->setTemplatePath($this->module_path.'tpl');
|
||||
$this->setTemplateFile('index');
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
71
modules/communication/communication.class.php
Normal file
|
|
@ -0,0 +1,71 @@
|
|||
<?php
|
||||
/**
|
||||
* @class communication
|
||||
* @author zero (zero@nzeo.com)
|
||||
* @brief communication module의 high class
|
||||
**/
|
||||
|
||||
class communication extends ModuleObject {
|
||||
|
||||
/**
|
||||
* @brief 설치시 추가 작업이 필요할시 구현
|
||||
**/
|
||||
function moduleInstall() {
|
||||
// 새쪽지 알림을 위한 임시 파일 저장소 생성
|
||||
FileHandler::makeDir('./files/member_extra_info/new_message_flags');
|
||||
|
||||
// action forward에 등록 (관리자 모드에서 사용하기 위함)
|
||||
$oModuleController = &getController('module');
|
||||
$oModuleController->insertActionForward('communication', 'view', 'dispCommunicationAdminConfig');
|
||||
|
||||
$oModuleController->insertActionForward('communication', 'view', 'dispCommunicationMessages');
|
||||
$oModuleController->insertActionForward('communication', 'view', 'dispCommunicationFriend');
|
||||
|
||||
return new Object();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 설치가 이상이 없는지 체크하는 method
|
||||
**/
|
||||
function checkUpdate() {
|
||||
if(!is_dir("./files/member_extra_info/new_message_flags")) return true;
|
||||
|
||||
$oModuleModel = &getModel('module');
|
||||
|
||||
if(!$oModuleModel->getActionForward('dispCommunicationAdminConfig')) return true;
|
||||
|
||||
if(!$oModuleModel->getActionForward('dispCommunicationMessages')) return true;
|
||||
if(!$oModuleModel->getActionForward('dispCommunicationFriend')) return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 업데이트 실행
|
||||
**/
|
||||
function moduleUpdate() {
|
||||
if(!is_dir("./files/member_extra_info/new_message_flags"))
|
||||
FileHandler::makeDir('./files/member_extra_info/new_message_flags');
|
||||
|
||||
$oModuleModel = &getModel('module');
|
||||
$oModuleController = &getController('module');
|
||||
|
||||
if(!$oModuleModel->getActionForward('dispCommunicationAdminConfig'))
|
||||
$oModuleController->insertActionForward('communication', 'view', 'dispCommunicationAdminConfig');
|
||||
|
||||
if(!$oModuleModel->getActionForward('dispCommunicationMessages'))
|
||||
$oModuleController->insertActionForward('communication', 'view', 'dispCommunicationMessages');
|
||||
|
||||
if(!$oModuleModel->getActionForward('dispCommunicationFriend'))
|
||||
$oModuleController->insertActionForward('communication', 'view', 'dispCommunicationFriend');
|
||||
|
||||
return new Object(0, 'success_updated');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 캐시 파일 재생성
|
||||
**/
|
||||
function recompileCache() {
|
||||
}
|
||||
}
|
||||
?>
|
||||
413
modules/communication/communication.controller.php
Normal file
|
|
@ -0,0 +1,413 @@
|
|||
<?php
|
||||
/**
|
||||
* @class communicationController
|
||||
* @author zero (zero@nzeo.com)
|
||||
* @brief communication module의 Controller class
|
||||
**/
|
||||
|
||||
class communicationController extends communication {
|
||||
|
||||
/**
|
||||
* @brief 초기화
|
||||
**/
|
||||
function init() {
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 쪽지함 설정 변경
|
||||
**/
|
||||
function procCommunicationUpdateAllowMessage() {
|
||||
if(!Context::get('is_logged')) return new Object(-1, 'msg_not_logged');
|
||||
|
||||
$args->allow_message = Context::get('allow_message');
|
||||
if(!in_array($args->allow_message, array('Y','N','F'))) $args->allow_message = 'Y';
|
||||
|
||||
$logged_info = Context::get('logged_info');
|
||||
$args->member_srl = $logged_info->member_srl;
|
||||
|
||||
$output = executeQuery('communication.updateAllowMessage', $args);
|
||||
|
||||
return $output;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 쪽지 발송
|
||||
**/
|
||||
function procCommunicationSendMessage() {
|
||||
// 로그인 정보 체크
|
||||
if(!Context::get('is_logged')) return new Object(-1, 'msg_not_logged');
|
||||
$logged_info = Context::get('logged_info');
|
||||
|
||||
// 변수 검사
|
||||
$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');
|
||||
|
||||
$send_mail = Context::get('send_mail');
|
||||
if($send_mail != 'Y') $send_mail = 'N';
|
||||
|
||||
// 받을 회원이 있는지에 대한 검사
|
||||
$oMemberModel = &getModel('member');
|
||||
$receiver_member_info = $oMemberModel->getMemberInfoByMemberSrl($receiver_srl);
|
||||
if($receiver_member_info->member_srl != $receiver_srl) return new Object(-1, 'msg_not_exists_member');
|
||||
|
||||
// 받을 회원의 쪽지 수신여부 검사 (최고관리자이면 패스)
|
||||
if($logged_info->is_admin != 'Y') {
|
||||
if($receiver_member_info->allow_message == 'F') {
|
||||
if(!$oCommunicationModel->isFriend($receiver_member_info->member_srl)) return new object(-1, 'msg_allow_message_to_friend');
|
||||
} elseif($receiver_member_info->allow_messge == 'N') {
|
||||
return new object(-1, 'msg_disallow_message');
|
||||
}
|
||||
}
|
||||
|
||||
// 쪽지 발송
|
||||
$output = $this->sendMessage($logged_info->member_srl, $receiver_srl, $title, $content);
|
||||
|
||||
// 메일로도 발송
|
||||
if($output->toBool() && $send_mail == 'Y') {
|
||||
$view_url = Context::getRequestUri();
|
||||
$content = sprintf("%s<br /><br />From : <a href=\"%s\" target=\"_blank\">%s</a>",$content, $view_url, $view_url);
|
||||
$oMail = new Mail();
|
||||
$oMail->setTitle($title);
|
||||
$oMail->setContent($content);
|
||||
$oMail->setSender($logged_info->user_name, $logged_info->email_address);
|
||||
$oMail->setReceiptor($receiver_member_info->user_name, $receiver_member_info->email_address);
|
||||
$oMail->send();
|
||||
}
|
||||
|
||||
return $output;
|
||||
}
|
||||
|
||||
function sendMessage($sender_srl, $receiver_srl, $title, $content, $sender_log = true) {
|
||||
$content = removeHackTag($content);
|
||||
|
||||
// 보내는 사용자의 쪽지함에 넣을 쪽지
|
||||
$sender_args->sender_srl = $sender_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");
|
||||
$sender_args->related_srl = getNextSequence();
|
||||
$sender_args->message_srl = getNextSequence();
|
||||
$sender_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 = $sender_srl;
|
||||
if(!$receiver_args->sender_srl) $receiver_args->sender_srl = $receiver_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");
|
||||
|
||||
$oDB = &DB::getInstance();
|
||||
$oDB->begin();
|
||||
|
||||
// 발송하는 회원의 쪽지함에 넣을 쪽지
|
||||
if($sender_srl && $sender_log) {
|
||||
$output = executeQuery('communication.sendMessage', $sender_args);
|
||||
if(!$output->toBool()) {
|
||||
$oDB->rollback();
|
||||
return $output;
|
||||
}
|
||||
}
|
||||
|
||||
// 받을 회원의 쪽지함에 넣을 쪽지
|
||||
$output = executeQuery('communication.sendMessage', $receiver_args);
|
||||
if(!$output->toBool()) {
|
||||
$oDB->rollback();
|
||||
return $output;
|
||||
}
|
||||
|
||||
// 받는 회원의 쪽지 발송 플래그 생성 (파일로 생성)
|
||||
$flag_path = './files/member_extra_info/new_message_flags/'.getNumberingPath($receiver_srl);
|
||||
FileHandler::makeDir($flag_path);
|
||||
$flag_file = sprintf('%s%s', $flag_path, $receiver_srl);
|
||||
FileHandler::writeFile($flag_file,'1');
|
||||
|
||||
$oDB->commit();
|
||||
|
||||
return new Object(0,'success_sended');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 특정 쪽지를 보관함으로 보냄
|
||||
**/
|
||||
function procCommunicationStoreMessage() {
|
||||
// 로그인 정보 체크
|
||||
if(!Context::get('is_logged')) return new Object(-1, 'msg_not_logged');
|
||||
$logged_info = Context::get('logged_info');
|
||||
|
||||
// 변수 체크
|
||||
$message_srl = Context::get('message_srl');
|
||||
if(!$message_srl) return new Object(-1,'msg_invalid_request');
|
||||
|
||||
// 쪽지를 가져옴
|
||||
$oCommunicationModel = &getModel('communication');
|
||||
$message = $oCommunicationModel->getSelectedMessage($message_srl);
|
||||
if(!$message || $message->message_type != 'R') return new Object(-1,'msg_invalid_request');
|
||||
|
||||
$args->message_srl = $message_srl;
|
||||
$args->receiver_srl = $logged_info->member_srl;
|
||||
$output = executeQuery('communication.setMessageStored', $args);
|
||||
if(!$output->toBool()) return $output;
|
||||
|
||||
$this->setMessage('success_registed');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 쪽지 삭제
|
||||
**/
|
||||
function procCommunicationDeleteMessage() {
|
||||
// 로그인 정보 체크
|
||||
if(!Context::get('is_logged')) return new Object(-1, 'msg_not_logged');
|
||||
$logged_info = Context::get('logged_info');
|
||||
$member_srl = $logged_info->member_srl;
|
||||
|
||||
// 변수 체크
|
||||
$message_srl = Context::get('message_srl');
|
||||
if(!$message_srl) return new Object(-1,'msg_invalid_request');
|
||||
|
||||
// 쪽지를 가져옴
|
||||
$oCommunicationModel = &getModel('communication');
|
||||
$message = $oCommunicationModel->getSelectedMessage($message_srl);
|
||||
if(!$message) return new Object(-1,'msg_invalid_request');
|
||||
|
||||
// 발송인+type=S or 수신인+type=R 검사
|
||||
if($message->sender_srl == $member_srl && $message->message_type == 'S') {
|
||||
if(!$message_srl) return new Object(-1, 'msg_invalid_request');
|
||||
} elseif($message->receiver_srl == $member_srl && $message->message_type == 'R') {
|
||||
if(!$message_srl) return new Object(-1, 'msg_invalid_request');
|
||||
}
|
||||
|
||||
// 삭제
|
||||
$args->message_srl = $message_srl;
|
||||
$output = executeQuery('communication.deleteMessage', $args);
|
||||
if(!$output->toBool()) return $output;
|
||||
|
||||
$this->setMessage('success_deleted');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 선택된 다수의 쪽지 삭제
|
||||
**/
|
||||
function procCommunicationDeleteMessages() {
|
||||
// 로그인 정보 체크
|
||||
if(!Context::get('is_logged')) return new Object(-1, 'msg_not_logged');
|
||||
$logged_info = Context::get('logged_info');
|
||||
$member_srl = $logged_info->member_srl;
|
||||
|
||||
// 변수 체크
|
||||
$message_srl_list = trim(Context::get('message_srl_list'));
|
||||
if(!$message_srl_list) return new Object(-1, 'msg_cart_is_null');
|
||||
|
||||
$message_srl_list = explode('|@|', $message_srl_list);
|
||||
if(!count($message_srl_list)) return new Object(-1, 'msg_cart_is_null');
|
||||
|
||||
$message_type = Context::get('message_type');
|
||||
if(!$message_type || !in_array($message_type, array('R','S','T'))) return new Object(-1, 'msg_invalid_request');
|
||||
|
||||
$message_count = count($message_srl_list);
|
||||
$target = array();
|
||||
for($i=0;$i<$message_count;$i++) {
|
||||
$message_srl = (int)trim($message_srl_list[$i]);
|
||||
if(!$message_srl) continue;
|
||||
$target[] = $message_srl;
|
||||
}
|
||||
if(!count($target)) return new Object(-1,'msg_cart_is_null');
|
||||
|
||||
// 삭제
|
||||
$args->message_srls = implode(',',$target);
|
||||
$args->message_type = $message_type;
|
||||
|
||||
if($message_type == 'S') $args->sender_srl = $member_srl;
|
||||
else $args->receiver_srl = $member_srl;
|
||||
|
||||
$output = executeQuery('communication.deleteMessages', $args);
|
||||
if(!$output->toBool()) return $output;
|
||||
|
||||
$this->setMessage('success_deleted');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 친구 추가
|
||||
**/
|
||||
function procCommunicationAddFriend() {
|
||||
// 로그인 정보 체크
|
||||
if(!Context::get('is_logged')) return new Object(-1, 'msg_not_logged');
|
||||
$logged_info = Context::get('logged_info');
|
||||
|
||||
$target_srl = (int)trim(Context::get('target_srl'));
|
||||
if(!$target_srl) return new Object(-1,'msg_invalid_request');
|
||||
|
||||
// 변수 정리
|
||||
$args->friend_srl = getNextSequence();
|
||||
$args->list_order = $args->friend_srl * -1;
|
||||
$args->friend_group_srl = Context::get('friend_group_srl');
|
||||
$args->member_srl = $logged_info->member_srl;
|
||||
$args->target_srl = $target_srl;
|
||||
$output = executeQuery('communication.addFriend', $args);
|
||||
if(!$output->toBool()) return $output;
|
||||
|
||||
$this->add('member_srl', $target_srl);
|
||||
$this->setMessage('success_registed');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 등록된 친구의 그룹 이동
|
||||
**/
|
||||
function procCommunicationMoveFriend() {
|
||||
// 로그인 정보 체크
|
||||
if(!Context::get('is_logged')) return new Object(-1, 'msg_not_logged');
|
||||
$logged_info = Context::get('logged_info');
|
||||
|
||||
// 변수 체크
|
||||
$friend_srl_list = trim(Context::get('friend_srl_list'));
|
||||
if(!$friend_srl_list) return new Object(-1, 'msg_cart_is_null');
|
||||
|
||||
$friend_srl_list = explode('|@|', $friend_srl_list);
|
||||
if(!count($friend_srl_list)) return new Object(-1, 'msg_cart_is_null');
|
||||
|
||||
$friend_count = count($friend_srl_list);
|
||||
$target = array();
|
||||
for($i=0;$i<$friend_count;$i++) {
|
||||
$friend_srl = (int)trim($friend_srl_list[$i]);
|
||||
if(!$friend_srl) continue;
|
||||
$target[] = $friend_srl;
|
||||
}
|
||||
if(!count($target)) return new Object(-1,'msg_cart_is_null');
|
||||
|
||||
// 변수 정리
|
||||
$args->friend_srls = implode(',',$target);
|
||||
$args->member_srl = $logged_info->member_srl;
|
||||
$args->friend_group_srl = Context::get('target_friend_group_srl');
|
||||
|
||||
$output = executeQuery('communication.moveFriend', $args);
|
||||
if(!$output->toBool()) return $output;
|
||||
|
||||
$this->setMessage('success_moved');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 친구 삭제
|
||||
**/
|
||||
function procCommunicationDeleteFriend() {
|
||||
// 로그인 정보 체크
|
||||
if(!Context::get('is_logged')) return new Object(-1, 'msg_not_logged');
|
||||
$logged_info = Context::get('logged_info');
|
||||
$member_srl = $logged_info->member_srl;
|
||||
|
||||
// 변수 체크
|
||||
$friend_srl_list = trim(Context::get('friend_srl_list'));
|
||||
if(!$friend_srl_list) return new Object(-1, 'msg_cart_is_null');
|
||||
|
||||
$friend_srl_list = explode('|@|', $friend_srl_list);
|
||||
if(!count($friend_srl_list)) return new Object(-1, 'msg_cart_is_null');
|
||||
|
||||
$friend_count = count($friend_srl_list);
|
||||
$target = array();
|
||||
for($i=0;$i<$friend_count;$i++) {
|
||||
$friend_srl = (int)trim($friend_srl_list[$i]);
|
||||
if(!$friend_srl) continue;
|
||||
$target[] = $friend_srl;
|
||||
}
|
||||
if(!count($target)) return new Object(-1,'msg_cart_is_null');
|
||||
|
||||
// 삭제
|
||||
$args->friend_srls = implode(',',$target);
|
||||
$args->member_srl = $logged_info->member_srl;
|
||||
$output = executeQuery('communication.deleteFriend', $args);
|
||||
if(!$output->toBool()) return $output;
|
||||
|
||||
$this->setMessage('success_deleted');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 친구 그룹 추가
|
||||
**/
|
||||
function procCommunicationAddFriendGroup() {
|
||||
// 로그인 정보 체크
|
||||
if(!Context::get('is_logged')) return new Object(-1, 'msg_not_logged');
|
||||
$logged_info = Context::get('logged_info');
|
||||
|
||||
// 변수 정리
|
||||
$args->friend_group_srl = trim(Context::get('friend_group_srl'));
|
||||
$args->member_srl = $logged_info->member_srl;
|
||||
$args->title = Context::get('title');
|
||||
if(!$args->title) return new Object(-1, 'msg_invalid_request');
|
||||
|
||||
// friend_group_srl이 있으면 수정
|
||||
if($args->friend_group_srl) {
|
||||
$output = executeQuery('communication.renameFriendGroup', $args);
|
||||
$msg_code = 'success_updated';
|
||||
|
||||
// 아니면 입력
|
||||
} else {
|
||||
$output = executeQuery('communication.addFriendGroup', $args);
|
||||
$msg_code = 'success_registed';
|
||||
}
|
||||
|
||||
if(!$output->toBool()) return $output;
|
||||
|
||||
$this->setMessage($msg_code);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 친구 그룹 이름 변경
|
||||
**/
|
||||
function procCommunicationRenameFriendGroup() {
|
||||
// 로그인 정보 체크
|
||||
if(!Context::get('is_logged')) return new Object(-1, 'msg_not_logged');
|
||||
$logged_info = Context::get('logged_info');
|
||||
|
||||
// 변수 정리
|
||||
$args->friend_group_srl= Context::get('friend_group_srl');
|
||||
$args->member_srl = $logged_info->member_srl;
|
||||
$args->title = Context::get('title');
|
||||
if(!$args->title) return new Object(-1, 'msg_invalid_request');
|
||||
|
||||
$output = executeQuery('communication.renameFriendGroup', $args);
|
||||
if(!$output->toBool()) return $output;
|
||||
|
||||
$this->setMessage('success_updated');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 친구 그룹 삭제
|
||||
**/
|
||||
function procCommunicationDeleteFriendGroup() {
|
||||
// 로그인 정보 체크
|
||||
if(!Context::get('is_logged')) return new Object(-1, 'msg_not_logged');
|
||||
$logged_info = Context::get('logged_info');
|
||||
|
||||
// 변수 정리
|
||||
$args->friend_group_srl = Context::get('friend_group_srl');
|
||||
$args->member_srl = $logged_info->member_srl;
|
||||
$output = executeQuery('communication.deleteFriendGroup', $args);
|
||||
if(!$output->toBool()) return $output;
|
||||
|
||||
$this->setMessage('success_deleted');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 특정 쪽지의 상태를 읽은 상태로 변경
|
||||
**/
|
||||
function setMessageReaded($message_srl) {
|
||||
$args->message_srl = $message_srl;
|
||||
$args->related_srl = $message_srl;
|
||||
return executeQuery('communication.setMessageReaded', $args);
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
189
modules/communication/communication.model.php
Normal file
|
|
@ -0,0 +1,189 @@
|
|||
<?php
|
||||
/**
|
||||
* @class communicationModel
|
||||
* @author zero (zero@nzeo.com)
|
||||
* @brief communication module의 Model class
|
||||
**/
|
||||
|
||||
class communicationModel extends communication {
|
||||
|
||||
/**
|
||||
* @brief 초기화
|
||||
**/
|
||||
function init() {
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 설정된 내용을 구함
|
||||
**/
|
||||
function getConfig() {
|
||||
$oModuleModel = &getModel('module');
|
||||
$communication_config = $oModuleModel->getModuleConfig('communication');
|
||||
|
||||
if(!$communication_config->skin) $communication_config->skin = 'default';
|
||||
if(!$communication_config->colorset) $communication_config->colorset = 'white';
|
||||
if(!$communication_config->editor_skin) $communication_config->editor_skin = 'default';
|
||||
|
||||
return $communication_config;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 쪽지 내용을 가져옴
|
||||
**/
|
||||
function getSelectedMessage($message_srl) {
|
||||
$logged_info = Context::get('logged_info');
|
||||
|
||||
$args->message_srl = $message_srl;
|
||||
$output = executeQuery('communication.getMessage',$args);
|
||||
$message = $output->data;
|
||||
if(!$message) return ;
|
||||
|
||||
// 보낸 쪽지일 경우 받는 사람 정보를 구함
|
||||
$oMemberModel = &getModel('member');
|
||||
if($message->sender_srl == $logged_info->member_srl && $message->message_type == 'S') $member_info = $oMemberModel->getMemberInfoByMemberSrl($message->receiver_srl);
|
||||
|
||||
// 보관/받은 쪽지일 경우 보낸 사람 정보를 구함
|
||||
else $member_info = $oMemberModel->getMemberInfoByMemberSrl($message->sender_srl);
|
||||
|
||||
if($member_info) {
|
||||
foreach($member_info as $key => $val) {
|
||||
if($key != 'regdate') $message->{$key} = $val;
|
||||
}
|
||||
}
|
||||
|
||||
// 받은 쪽지이고 아직 읽지 않았을 경우 읽은 상태로 변경
|
||||
if($message->message_type == 'R' && $message->readed != 'Y') {
|
||||
$oCommunicationController = &getController('communication');
|
||||
$oCommunicationController->setMessageReaded($message_srl);
|
||||
}
|
||||
|
||||
|
||||
return $message;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 새 쪽지를 가져옴
|
||||
**/
|
||||
function getNewMessage() {
|
||||
$logged_info = Context::get('logged_info');
|
||||
$args->receiver_srl = $logged_info->member_srl;
|
||||
$args->readed = 'N';
|
||||
|
||||
$output = executeQuery('communication.getNewMessage', $args);
|
||||
if(!count($output->data)) return;
|
||||
$message = array_pop($output->data);
|
||||
|
||||
$oCommunicationController = &getController('communication');
|
||||
$oCommunicationController->setMessageReaded($message->message_srl);
|
||||
|
||||
return $message;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 쪽지 목록 가져오기
|
||||
* type = R : 받은 쪽지
|
||||
* type = S : 보낸 쪽지
|
||||
* type = T : 보관함
|
||||
**/
|
||||
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 = 'communication.getReceivedMessages';
|
||||
break;
|
||||
case 'T' :
|
||||
$args->member_srl = $logged_info->member_srl;
|
||||
$args->message_type = 'T';
|
||||
$query_id = 'communication.getStoredMessages';
|
||||
break;
|
||||
default :
|
||||
$args->member_srl = $logged_info->member_srl;
|
||||
$args->message_type = 'S';
|
||||
$query_id = 'communication.getSendedMessages';
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
// 기타 변수들 정리
|
||||
$args->sort_index = 'message.list_order';
|
||||
$args->page = Context::get('page');
|
||||
$args->list_count = 20;
|
||||
$args->page_count = 10;
|
||||
return executeQuery($query_id, $args);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 친구 목록 가져오기
|
||||
**/
|
||||
function getFriends($friend_group_srl = 0) {
|
||||
$logged_info = Context::get('logged_info');
|
||||
|
||||
$args->friend_group_srl = $friend_group_srl;
|
||||
$args->member_srl = $logged_info->member_srl;
|
||||
|
||||
// 기타 변수들 정리
|
||||
$args->page = Context::get('page');
|
||||
$args->sort_index = 'friend.list_order';
|
||||
$args->list_count = 10;
|
||||
$args->page_count = 10;
|
||||
$output = executeQuery('communication.getFriends', $args);
|
||||
return $output;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 이미 친구로 등록되었는지 검사
|
||||
**/
|
||||
function isAddedFriend($member_srl) {
|
||||
$logged_info = Context::get('logged_info');
|
||||
|
||||
$args->member_srl = $logged_info->member_srl;
|
||||
$args->target_srl = $member_srl;
|
||||
$output = executeQuery('communication.isAddedFriend', $args);
|
||||
return $output->data->count;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 특정 친구 그룹 가져오기
|
||||
**/
|
||||
function getFriendGroupInfo($friend_group_srl) {
|
||||
$logged_info = Context::get('logged_info');
|
||||
|
||||
$args->member_srl = $logged_info->member_srl;
|
||||
$args->friend_group_srl = $friend_group_srl;
|
||||
|
||||
$output = executeQuery('communication.getFriendGroup', $args);
|
||||
return $output->data;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 그룹 목록 가져오기
|
||||
**/
|
||||
function getFriendGroups() {
|
||||
$logged_info = Context::get('logged_info');
|
||||
$args->member_srl = $logged_info->member_srl;
|
||||
|
||||
$output = executeQuery('communication.getFriendGroups', $args);
|
||||
$group_list = $output->data;
|
||||
if(!$group_list) return;
|
||||
|
||||
if(!is_array($group_list)) $group_list = array($group_list);
|
||||
return $group_list;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 특정 회원의 친구 목록에 포함되어 있는지를 확인
|
||||
**/
|
||||
function isFriend($target_srl) {
|
||||
$logged_info = Context::get('logged_info');
|
||||
|
||||
$args->member_srl = $target_srl;
|
||||
$args->target_srl = $logged_info->member_srl;
|
||||
$output = executeQuery('communication.isAddedFriend', $args);
|
||||
if($output->data->count) return true;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
?>
|
||||
221
modules/communication/communication.view.php
Normal file
|
|
@ -0,0 +1,221 @@
|
|||
<?php
|
||||
/**
|
||||
* @class communicationView
|
||||
* @author zero (zero@nzeo.com)
|
||||
* @brief communication module의 View class
|
||||
**/
|
||||
|
||||
class communicationView extends communication {
|
||||
|
||||
/**
|
||||
* @brief 초기화
|
||||
**/
|
||||
function init() {
|
||||
$oCommunicationModel = &getModel('communication');
|
||||
|
||||
$this->communication_config = $oCommunicationModel->getConfig();
|
||||
$skin = $this->communication_config->skin;
|
||||
|
||||
Context::set('communication_config', $this->communication_config);
|
||||
|
||||
$tpl_path = sprintf('%sskins/%s', $this->module_path, $skin);
|
||||
$this->setTemplatePath($tpl_path);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 쪽지함 출력
|
||||
**/
|
||||
function dispCommunicationMessages() {
|
||||
// 로그인이 되어 있지 않으면 오류 표시
|
||||
if(!Context::get('is_logged')) return $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);
|
||||
}
|
||||
|
||||
$oCommunicationModel = &getModel('communication');
|
||||
|
||||
// message_srl이 있으면 내용 추출
|
||||
if($message_srl) {
|
||||
$message = $oCommunicationModel->getSelectedMessage($message_srl);
|
||||
if($message->message_srl == $message_srl && ($message->receiver_srl == $logged_info->member_srl || $message->sender_srl == $logged_info->member_srl) ) Context::set('message', $message);
|
||||
}
|
||||
|
||||
// 목록 추출
|
||||
$output = $oCommunicationModel->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('messages');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 새 쪽지 보여줌
|
||||
**/
|
||||
function dispCommunicationNewMessage() {
|
||||
$this->setLayoutFile('popup_layout');
|
||||
|
||||
// 로그인이 되어 있지 않으면 오류 표시
|
||||
if(!Context::get('is_logged')) return $this->stop('msg_not_logged');
|
||||
$logged_info = Context::get('logged_info');
|
||||
|
||||
$oCommunicationModel = &getModel('communication');
|
||||
|
||||
// 새 쪽지를 가져옴
|
||||
$message = $oCommunicationModel->getNewMessage();
|
||||
if($message) Context::set('message', $message);
|
||||
|
||||
// 플래그 삭제
|
||||
$flag_path = './files/communication_extra_info/new_message_flags/'.getNumberingPath($logged_info->member_srl);
|
||||
$flag_file = sprintf('%s%s', $flag_path, $logged_info->member_srl);
|
||||
@unlink($flag_file);
|
||||
|
||||
$this->setTemplateFile('new_message');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 쪽지 발송 출력
|
||||
**/
|
||||
function dispCommunicationSendMessage() {
|
||||
$this->setLayoutFile("popup_layout");
|
||||
$oCommunicationModel = &getModel('communication');
|
||||
$oMemberModel = &getModel('member');
|
||||
|
||||
// 로그인이 되어 있지 않으면 오류 표시
|
||||
if(!Context::get('is_logged')) return $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) return $this->stop('msg_not_logged');
|
||||
|
||||
// 답글 쪽지일 경우 원본 메세지의 글번호를 구함
|
||||
$message_srl = Context::get('message_srl');
|
||||
if($message_srl) {
|
||||
$source_message = $oCommunicationModel->getSelectedMessage($message_srl);
|
||||
if($source_message->message_srl == $message_srl && $source_message->sender_srl == $receiver_srl) {
|
||||
$source_message->title = "[re] ".$source_message->title;
|
||||
$source_message->content = "\r\n<br />\r\n<br /><div style=\"padding-left:5px; border-left:5px solid #DDDDDD;\">".trim($source_message->content)."</div>";
|
||||
Context::set('source_message', $source_message);
|
||||
}
|
||||
}
|
||||
|
||||
$receiver_info = $oMemberModel->getMemberInfoByMemberSrl($receiver_srl);
|
||||
Context::set('receiver_info', $receiver_info);
|
||||
|
||||
// 에디터 모듈의 getEditor를 호출하여 서명용으로 세팅
|
||||
$oEditorModel = &getModel('editor');
|
||||
$option->primary_key_name = 'receiver_srl';
|
||||
$option->content_key_name = 'content';
|
||||
$option->allow_fileupload = false;
|
||||
$option->enable_autosave = false;
|
||||
$option->enable_default_component = false;
|
||||
$option->enable_component = false;
|
||||
$option->resizable = false;
|
||||
$option->disable_html = true;
|
||||
$option->height = 300;
|
||||
$option->skin = $this->communication_config->editor_skin;
|
||||
$editor = $oEditorModel->getEditor($logged_info->member_srl, $option);
|
||||
Context::set('editor', $editor);
|
||||
|
||||
$this->setTemplateFile('send_message');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 친구 목록 보기
|
||||
**/
|
||||
function dispCommunicationFriend() {
|
||||
// 로그인이 되어 있지 않으면 오류 표시
|
||||
if(!Context::get('is_logged')) return $this->stop('msg_not_logged');
|
||||
|
||||
$oCommunicationModel = &getModel('communication');
|
||||
|
||||
// 그룹 목록을 가져옴
|
||||
$tmp_group_list = $oCommunicationModel->getFriendGroups();
|
||||
$group_count = count($tmp_group_list);
|
||||
for($i=0;$i<$group_count;$i++) $friend_group_list[$tmp_group_list[$i]->friend_group_srl] = $tmp_group_list[$i];
|
||||
Context::set('friend_group_list', $friend_group_list);
|
||||
|
||||
// 친구 목록을 가져옴
|
||||
$friend_group_srl = Context::get('friend_group_srl');
|
||||
$output = $oCommunicationModel->getFriends($friend_group_srl);
|
||||
$friend_count = count($output->data);
|
||||
if($friend_count) {
|
||||
foreach($output->data as $key => $val) {
|
||||
$group_srl = $val->friend_group_srl;
|
||||
$group_title = $friend_group_list[$group_srl]->title;
|
||||
if(!$group_title) $group_title = Context::get('default_friend_group');
|
||||
$output->data[$key]->group_title = $group_title;
|
||||
}
|
||||
}
|
||||
|
||||
// 템플릿에 쓰기 위해서 context::set
|
||||
Context::set('total_count', $output->total_count);
|
||||
Context::set('total_page', $output->total_page);
|
||||
Context::set('page', $output->page);
|
||||
Context::set('friend_list', $output->data);
|
||||
Context::set('page_navigation', $output->page_navigation);
|
||||
|
||||
$this->setTemplateFile('friends');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 친구 추가
|
||||
**/
|
||||
function dispCommunicationAddFriend() {
|
||||
$this->setLayoutFile("popup_layout");
|
||||
|
||||
// 로그인이 되어 있지 않으면 오류 표시
|
||||
if(!Context::get('is_logged')) return $this->stop('msg_not_logged');
|
||||
$logged_info = Context::get('logged_info');
|
||||
|
||||
$target_srl = Context::get('target_srl');
|
||||
if(!$target_srl) return $this->stop('msg_invalid_request');
|
||||
|
||||
// 대상 회원의 정보를 구함
|
||||
$oMemberModel = &getModel('member');
|
||||
$oCommunicationModel = &getModel('communication');
|
||||
$communication_info = $oMemberModel->getMemberInfoByMemberSrl($target_srl);
|
||||
if($communication_info->member_srl != $target_srl) return $this->stop('msg_invalid_request');
|
||||
Context::set('target_info', $communication_info);
|
||||
|
||||
// 그룹의 목록을 구함
|
||||
$friend_group_list = $oCommunicationModel->getFriendGroups();
|
||||
Context::set('friend_group_list', $friend_group_list);
|
||||
|
||||
$this->setTemplateFile('add_friend');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 친구 그룹 추가
|
||||
**/
|
||||
function dispCommunicationAddFriendGroup() {
|
||||
$this->setLayoutFile("popup_layout");
|
||||
|
||||
// 로그인이 되어 있지 않으면 오류 표시
|
||||
if(!Context::get('is_logged')) return $this->stop('msg_not_logged');
|
||||
$logged_info = Context::get('logged_info');
|
||||
|
||||
// 그룹 번호가 넘어오면 수정모드로..
|
||||
$friend_group_srl = Context::get('friend_group_srl');
|
||||
if($friend_group_srl) {
|
||||
$oCommunicationModel = &getModel('communication');
|
||||
$friend_group = $oCommunicationModel->getFriendGroupInfo($friend_group_srl);
|
||||
if($friend_group->friend_group_srl == $friend_group_srl) Context::set('friend_group', $friend_group);
|
||||
}
|
||||
|
||||
$this->setTemplateFile('add_friend_group');
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
8
modules/communication/conf/info.xml
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<module version="0.1" category="utility">
|
||||
<title xml:lang="ko">커뮤니케이션</title>
|
||||
<author email_address="zero@zeroboard.com" link="http://www.zeroboard.com" date="2008. 5. 30">
|
||||
<name xml:lang="ko">제로</name>
|
||||
<description xml:lang="ko">회원들간의 쪽지, 친구기능을 담당하는 모듈입니다.</description>
|
||||
</author>
|
||||
</module>
|
||||
31
modules/communication/conf/module.xml
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<module>
|
||||
<actions>
|
||||
|
||||
<action name="dispCommunicationMessages" type="view" standalone="true" />
|
||||
<action name="dispCommunicationSendMessage" type="view" standalone="true" />
|
||||
<action name="dispCommunicationNewMessage" type="view" standalone="true" />
|
||||
|
||||
<action name="dispCommunicationFriend" type="view" standalone="true" />
|
||||
<action name="dispCommunicationAddFriend" type="view" standalone="true" />
|
||||
<action name="dispCommunicationAddFriendGroup" type="view" standalone="true" />
|
||||
|
||||
<action name="procCommunicationUpdateAllowMessage" type="controller" standalone="true" />
|
||||
<action name="procCommunicationSendMessage" type="controller" standalone="true" />
|
||||
<action name="procCommunicationStoreMessage" type="controller" standalone="true" />
|
||||
<action name="procCommunicationDeleteMessage" type="controller" standalone="true" />
|
||||
<action name="procCommunicationDeleteMessages" type="controller" standalone="true" />
|
||||
|
||||
<action name="procCommunicationAddFriend" type="controller" standalone="true" />
|
||||
<action name="procCommunicationMoveFriend" type="controller" standalone="true" />
|
||||
<action name="procCommunicationDeleteFriend" type="controller" standalone="true" />
|
||||
|
||||
<action name="procCommunicationAddFriendGroup" type="controller" standalone="true" />
|
||||
<action name="procCommunicationRenameFriendGroup" type="controller" standalone="true" />
|
||||
<action name="procCommunicationDeleteFriendGroup" type="controller" standalone="true" />
|
||||
|
||||
<action name="getCommunicationAdminColorset" type="model" standalone="true" />
|
||||
<action name="procCommunicationAdminInsertConfig" type="controller" standalone="true" />
|
||||
<action name="dispCommunicationAdminConfig" type="view" standalone="true" admin_index="true" />
|
||||
</actions>
|
||||
</module>
|
||||
48
modules/communication/lang/en.lang.php
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
<?php
|
||||
/**
|
||||
* @file en.lang.php
|
||||
* @author zero (zero@nzeo.com)
|
||||
* @brief English Language Pack (Only Basic Things)
|
||||
**/
|
||||
|
||||
$lang->communication = 'Communication';
|
||||
$lang->about_communication = '회원간의 쪽지나 친구 관리등 커뮤니케이션 기능을 수행하는 모듈입니다';
|
||||
|
||||
$lang->allow_message = 'Receive Messages';
|
||||
$lang->allow_message_type = array(
|
||||
'Y' => 'Receive All',
|
||||
'N' => 'Reject All',
|
||||
'F' => 'Only Friends',
|
||||
);
|
||||
|
||||
$lang->message_box = array(
|
||||
'R' => 'Received',
|
||||
'S' => 'Sent',
|
||||
'T' => 'Mailbox',
|
||||
);
|
||||
$lang->readed_date = "Read Date";
|
||||
|
||||
$lang->sender = 'Sender';
|
||||
$lang->receiver = 'Receiver';
|
||||
$lang->friend_group = 'Friend Group';
|
||||
$lang->default_friend_group = 'Unassigned Group';
|
||||
|
||||
$lang->cmd_send_message = 'Send Message';
|
||||
$lang->cmd_reply_message = 'Reply Message';
|
||||
$lang->cmd_view_friend = 'Friends';
|
||||
$lang->cmd_add_friend = 'Add to Friends';
|
||||
$lang->cmd_view_message_box = 'Message Box';
|
||||
$lang->cmd_store = "Save";
|
||||
$lang->cmd_add_friend_group = 'Add Friend Group';
|
||||
$lang->cmd_rename_friend_group = 'Modify Friend Group Name';
|
||||
|
||||
$lang->msg_no_message = 'There is no message';
|
||||
$lang->message_received = 'You have a new message';
|
||||
|
||||
$lang->msg_title_is_null = 'Please input the title of message';
|
||||
$lang->msg_content_is_null = 'Please input the content';
|
||||
$lang->msg_allow_message_to_friend = "Failed to send because receiver only allows friends' messages";
|
||||
$lang->msg_disallow_message = 'Failed to send because receiver rejects message reception';
|
||||
|
||||
$lang->about_allow_message = 'You can decide message reception';
|
||||
?>
|
||||
49
modules/communication/lang/es.lang.php
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
<?php
|
||||
/**
|
||||
* @file es.lang.php
|
||||
* @author zero (zero@nzeo.com)
|
||||
* @brief Spanish Language Pack (Only Basic Things)
|
||||
**/
|
||||
|
||||
$lang->communication = 'Communication';
|
||||
$lang->about_communication = '회원간의 쪽지나 친구 관리등 커뮤니케이션 기능을 수행하는 모듈입니다';
|
||||
|
||||
$lang->allow_message = 'Permitir la recepción del mensaje';
|
||||
$lang->allow_message_type = array(
|
||||
'Y' => 'Recibir todo',
|
||||
'N' => 'Rechazar',
|
||||
'F' => 'Sólo amigos',
|
||||
);
|
||||
|
||||
$lang->message_box = array(
|
||||
'R' => 'Recibido',
|
||||
'S' => 'Enviado',
|
||||
'T' => 'Buzon de Email',
|
||||
);
|
||||
|
||||
$lang->readed_date = "Fecha Leído";
|
||||
|
||||
$lang->sender = 'Remitente';
|
||||
$lang->receiver = 'Receptor';
|
||||
$lang->friend_group = 'Grupo de amigos';
|
||||
$lang->default_friend_group = 'Grupo desasignado';
|
||||
|
||||
$lang->cmd_send_message = 'Enviar Mensaje';
|
||||
$lang->cmd_reply_message = 'Responder el mensaje';
|
||||
$lang->cmd_view_friend = 'Amigos';
|
||||
$lang->cmd_add_friend = 'Registrar como Amigo';
|
||||
$lang->cmd_view_message_box = 'Buzón de mensajes';
|
||||
$lang->cmd_store = "Guardar";
|
||||
$lang->cmd_add_friend_group = 'agregar grupo de amigos';
|
||||
$lang->cmd_rename_friend_group = 'Cambiar el nombre del grupo de amigos';
|
||||
|
||||
$lang->msg_no_message = 'No hay mensajes';
|
||||
$lang->message_received = 'Usted ha recibido un mensaje';
|
||||
|
||||
$lang->msg_title_is_null = 'Por favor ingresar el título de la nota';
|
||||
$lang->msg_content_is_null = 'Por favor ingresar el contenido';
|
||||
$lang->msg_allow_message_to_friend = "Falló el envío por permitir sólo mensajes de sus amigos";
|
||||
$lang->msg_disallow_message = 'Falló el envío por ser usuario rechazado para recibir mensajes';
|
||||
|
||||
$lang->about_allow_message = 'Usted puede decidir la recepción del mensaje';
|
||||
?>
|
||||
49
modules/communication/lang/jp.lang.php
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
<?php
|
||||
/**
|
||||
* @file modules/member/jp.lang.php
|
||||
* @author zero (zero@nzeo.com) 翻訳:RisaPapa、ミニミ、liahona
|
||||
* @brief 日本語言語パッケージ(基本的な内容のみ)
|
||||
**/
|
||||
|
||||
$lang->communication = '커뮤니케이션';
|
||||
$lang->about_communication = '회원간의 쪽지나 친구 관리등 커뮤니케이션 기능을 수행하는 모듈입니다';
|
||||
|
||||
$lang->allow_message = 'メッセージの受信';
|
||||
$lang->allow_message_type = array(
|
||||
'Y' => '全て受信',
|
||||
'N' => '全て受信しない',
|
||||
'F' => '友達からのみ受信する',
|
||||
);
|
||||
|
||||
$lang->message_box = array(
|
||||
'R' => 'メッセージ受信ボックス',
|
||||
'S' => 'メッセージ送信ボックス',
|
||||
'T' => '保存ボックス',
|
||||
);
|
||||
|
||||
$lang->readed_date = "開封時間";
|
||||
|
||||
$lang->sender = '送信者';
|
||||
$lang->receiver = '受信者';
|
||||
$lang->friend_group = '友達グループ';
|
||||
$lang->default_friend_group = 'グループ未指定';
|
||||
|
||||
$lang->cmd_send_message = 'メッセージ送信';
|
||||
$lang->cmd_reply_message = 'メッセージ返信';
|
||||
$lang->cmd_view_friend = '友達表示';
|
||||
$lang->cmd_add_friend = '友達登録';
|
||||
$lang->cmd_view_message_box = 'メッセージ表示';
|
||||
$lang->cmd_store = "保存";
|
||||
$lang->cmd_add_friend_group = '友達グループ追加';
|
||||
$lang->cmd_rename_friend_group = '友達グループ名変更';
|
||||
|
||||
$lang->msg_no_message = 'メッセージがありません。';
|
||||
$lang->message_received = 'メッセージが届きました。';
|
||||
|
||||
$lang->msg_title_is_null = 'メッセージのタイトルを入力してください。';
|
||||
$lang->msg_content_is_null = '内容を入力してください。';
|
||||
$lang->msg_allow_message_to_friend = '友達からのみメッセージを受信できるように設定したユーザであるため、送信できませんでした。';
|
||||
$lang->msg_disallow_message = 'メッセージの受信を拒否している受信者であるため、送信できませんでした。';
|
||||
|
||||
$lang->about_allow_message = 'メッセージを受信するかを設定します。';
|
||||
?>
|
||||
48
modules/communication/lang/ko.lang.php
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
<?php
|
||||
/**
|
||||
* @file ko.lang.php
|
||||
* @author zero (zero@nzeo.com)
|
||||
* @brief 한국어 언어팩 (기본적인 내용만 수록)
|
||||
**/
|
||||
|
||||
$lang->communication = '커뮤니케이션';
|
||||
$lang->about_communication = '회원간의 쪽지나 친구 관리등 커뮤니케이션 기능을 수행하는 모듈입니다';
|
||||
|
||||
$lang->allow_message = '쪽지 수신 허용';
|
||||
$lang->allow_message_type = array(
|
||||
'Y' => '전체 수신',
|
||||
'N' => '거부',
|
||||
'F' => '친구만 허용',
|
||||
);
|
||||
|
||||
$lang->message_box = array(
|
||||
'R' => '받은 쪽지함',
|
||||
'S' => '보낸 쪽지함',
|
||||
'T' => '보관함',
|
||||
);
|
||||
|
||||
$lang->readed_date = "읽은 시간";
|
||||
|
||||
$lang->sender = '보낸이';
|
||||
$lang->receiver = '받는이';
|
||||
$lang->friend_group = '친구 그룹';
|
||||
$lang->default_friend_group = '그룹 미지정';
|
||||
|
||||
$lang->cmd_send_message = '쪽지 보내기';
|
||||
$lang->cmd_reply_message = '쪽지 답장';
|
||||
$lang->cmd_view_friend = '친구 보기';
|
||||
$lang->cmd_add_friend = '친구 등록';
|
||||
$lang->cmd_view_message_box = '쪽지함 보기';
|
||||
$lang->cmd_store = "보관";
|
||||
$lang->cmd_add_friend_group = '친구 그룹 추가';
|
||||
$lang->cmd_rename_friend_group = '친구 그룹 이름 변경';
|
||||
|
||||
$lang->msg_no_message = '쪽지가 없습니다';
|
||||
$lang->message_received = '쪽지가 왔습니다';
|
||||
|
||||
$lang->msg_title_is_null = '쪽지 제목을 입력해주세요';
|
||||
$lang->msg_content_is_null = '내용을 입력해주세요';
|
||||
$lang->msg_allow_message_to_friend = '친구에게만 쪽지 수신을 허용한 사용자라서 쪽지 발송을 하지 못했습니다';
|
||||
$lang->msg_disallow_message = '쪽지 수신을 거부한 사용자라서 쪽지 발송을 하지 못했습니다';
|
||||
$lang->about_allow_message = '쪽지 수신 여부를 결정할 수 있습니다';
|
||||
?>
|
||||
50
modules/communication/lang/ru.lang.php
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
<?php
|
||||
/**
|
||||
* @file ru.lang.php
|
||||
* @author zero <zero@nzeo.com> | translation by Maslennikov Evgeny aka X-[Vr]bL1s5 | e-mail: x-bliss[a]tut.by; ICQ: 225035467;
|
||||
* @brief Russian basic language pack for Zeroboard XE
|
||||
**/
|
||||
|
||||
$lang->communication = 'Communication';
|
||||
$lang->about_communication = '회원간의 쪽지나 친구 관리등 커뮤니케이션 기능을 수행하는 모듈입니다';
|
||||
|
||||
$lang->allow_message = 'Разрешить прием сообщений';
|
||||
$lang->allow_message_type = array(
|
||||
'Y' => 'Принимать все',
|
||||
'N' => 'Отклонять все',
|
||||
'F' => 'Только друзья',
|
||||
);
|
||||
|
||||
|
||||
$lang->message_box = array(
|
||||
'R' => 'Принятые',
|
||||
'S' => 'Отправленные',
|
||||
'T' => 'Почтовый ящик',
|
||||
);
|
||||
|
||||
$lang->readed_date = "Дата прочтения";
|
||||
|
||||
$lang->sender = 'Отправитель';
|
||||
$lang->receiver = 'Получатель';
|
||||
$lang->friend_group = 'Группа друзей';
|
||||
$lang->default_friend_group = 'Неприсвоенная группа';
|
||||
|
||||
$lang->cmd_send_message = 'Отправить сообщение';
|
||||
$lang->cmd_reply_message = 'Ответить';
|
||||
$lang->cmd_view_friend = 'Дзузья';
|
||||
$lang->cmd_add_friend = 'Сделать другом';
|
||||
$lang->cmd_view_message_box = 'Ящик сообщений';
|
||||
$lang->cmd_store = "Сохранить";
|
||||
$lang->cmd_add_friend_group = 'Добавить группу друзей';
|
||||
$lang->cmd_rename_friend_group = 'Изменить имя группы друзей';
|
||||
|
||||
$lang->msg_no_message = 'Нет сообщений';
|
||||
$lang->message_received = 'Новое сообщение';
|
||||
|
||||
$lang->msg_title_is_null = 'Пожалуйста, введите тему сообщения';
|
||||
$lang->msg_content_is_null = 'Пожалуйста, введите содержание';
|
||||
$lang->msg_allow_message_to_friend = "Отправка провалена, поскольку получатель принимает сообщения только от друзей";
|
||||
$lang->msg_disallow_message = 'Отправка провалена, поскольку получатель отклоняет прием сообщений';
|
||||
|
||||
$lang->about_allow_message = 'Вы можете определить политику принятия сообщений';
|
||||
?>
|
||||
49
modules/communication/lang/zh-CN.lang.php
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
<?php
|
||||
/**
|
||||
* @file zh-CN.lang.php
|
||||
* @author zero (zero@nzeo.com)
|
||||
* @brief 简体中文语言包 (只收录基本内容)
|
||||
**/
|
||||
|
||||
$lang->communication = '커뮤니케이션';
|
||||
$lang->about_communication = '회원간의 쪽지나 친구 관리등 커뮤니케이션 기능을 수행하는 모듈입니다';
|
||||
|
||||
$lang->allow_message = '允许接收短消息';
|
||||
$lang->allow_message_type = array(
|
||||
'Y' => '全部接收',
|
||||
'N' => '拒收',
|
||||
'F' => '只允许好友',
|
||||
);
|
||||
|
||||
$lang->message_box = array(
|
||||
'R' => '收件箱',
|
||||
'S' => '发件箱',
|
||||
'T' => '保管箱',
|
||||
);
|
||||
|
||||
$lang->readed_date = "阅读日期";
|
||||
|
||||
$lang->sender = '寄件人';
|
||||
$lang->receiver = '收件人';
|
||||
$lang->friend_group = '好友组';
|
||||
$lang->default_friend_group = '组未指定';
|
||||
|
||||
$lang->cmd_send_message = '发送短消息';
|
||||
$lang->cmd_reply_message = '回复短消息';
|
||||
$lang->cmd_view_friend = '查看好友';
|
||||
$lang->cmd_add_friend = '加为好友';
|
||||
$lang->cmd_view_message_box = '查看短信箱';
|
||||
$lang->cmd_store = "保管";
|
||||
$lang->cmd_add_friend_group = '添加好友组';
|
||||
$lang->cmd_rename_friend_group = '修改好友组名称';
|
||||
|
||||
$lang->msg_no_message = '没有短消息。';
|
||||
$lang->message_received = '您有新消息。';
|
||||
|
||||
$lang->msg_title_is_null = '请输入短消息标题。';
|
||||
$lang->msg_content_is_null = '请输入内容。';
|
||||
$lang->msg_allow_message_to_friend = '因其为只允许接收好友短消息的用户,所以不能发送短消息。';
|
||||
$lang->msg_disallow_message = '因其为拒绝接收短消息的用户,所以不能发送短消息。';
|
||||
|
||||
$lang->about_allow_message = '可以选择短消息接收与否。';
|
||||
?>
|
||||
13
modules/communication/queries/addFriend.xml
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
<query id="addFriend" action="insert">
|
||||
<tables>
|
||||
<table name="member_friend" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="friend_srl" var="friend_srl" notnull="notnull" />
|
||||
<column name="friend_group_srl" var="friend_group_srl" default="0" />
|
||||
<column name="member_srl" var="member_srl" notnull="notnull" />
|
||||
<column name="target_srl" var="target_srl" notnull="notnull" />
|
||||
<column name="list_order" var="list_order" />
|
||||
<column name="regdate" default="curdate()" />
|
||||
</columns>
|
||||
</query>
|
||||
11
modules/communication/queries/addFriendGroup.xml
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
<query id="addFriendGroup" action="insert">
|
||||
<tables>
|
||||
<table name="member_friend_group" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="friend_group_srl" var="friend_group_srl" default="sequence()" notnull="notnull" />
|
||||
<column name="member_srl" var="member_srl" notnull="notnull" />
|
||||
<column name="title" var="title" notnull="notnull" />
|
||||
<column name="regdate" default="curdate()" />
|
||||
</columns>
|
||||
</query>
|
||||
9
modules/communication/queries/deleteFriend.xml
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
<query id="deleteFriend" action="delete">
|
||||
<tables>
|
||||
<table name="member_friend" />
|
||||
</tables>
|
||||
<conditions>
|
||||
<condition operation="equal" column="member_srl" var="member_srl" notnull="notnull" filter="number" />
|
||||
<condition operation="in" column="friend_srl" var="friend_srls" notnull="notnull" pipe="and" />
|
||||
</conditions>
|
||||
</query>
|
||||
9
modules/communication/queries/deleteFriendGroup.xml
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
<query id="deleteFriendGroup" action="delete">
|
||||
<tables>
|
||||
<table name="member_friend_group" />
|
||||
</tables>
|
||||
<conditions>
|
||||
<condition operation="equal" column="friend_group_srl" var="friend_group_srl" notnull="notnull" filter="number" />
|
||||
<condition operation="equal" column="member_srl" var="member_srl" notnull="notnull" filter="number" pipe="and" />
|
||||
</conditions>
|
||||
</query>
|
||||
8
modules/communication/queries/deleteMessage.xml
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
<query id="deleteMessage" action="delete">
|
||||
<tables>
|
||||
<table name="member_message" />
|
||||
</tables>
|
||||
<conditions>
|
||||
<condition operation="equal" column="message_srl" var="message_srl" notnull="notnull" filter="number" />
|
||||
</conditions>
|
||||
</query>
|
||||
11
modules/communication/queries/deleteMessages.xml
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
<query id="deleteMessages" action="delete">
|
||||
<tables>
|
||||
<table name="member_message" />
|
||||
</tables>
|
||||
<conditions>
|
||||
<condition operation="in" column="message_srl" var="message_srls" notnull="notnull" />
|
||||
<condition operation="equal" column="message_type" var="message_type" notnull="notnull" pipe="and" />
|
||||
<condition operation="equal" column="sender_srl" var="sender_srl" pipe="and" />
|
||||
<condition operation="equal" column="receiver_srl" var="receiver_srl" pipe="and" />
|
||||
</conditions>
|
||||
</query>
|
||||
12
modules/communication/queries/getFriendGroup.xml
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
<query id="getFriendGroup" action="select">
|
||||
<tables>
|
||||
<table name="member_friend_group" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="*" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="member_srl" var="member_srl" />
|
||||
<condition operation="equal" column="friend_group_srl" var="friend_group_srl" pipe="and" />
|
||||
</conditions>
|
||||
</query>
|
||||
11
modules/communication/queries/getFriendGroups.xml
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
<query id="getFriendGroups" action="select">
|
||||
<tables>
|
||||
<table name="member_friend_group" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="*" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="member_srl" var="member_srl" />
|
||||
</conditions>
|
||||
</query>
|
||||
20
modules/communication/queries/getFriends.xml
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
<query id="getFriends" action="select">
|
||||
<tables>
|
||||
<table name="member_friend" alias="friend" />
|
||||
<table name="member" alias="member" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="*" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="friend.friend_group_srl" var="friend_group_srl" />
|
||||
<condition operation="equal" column="friend.member_srl" var="member_srl" pipe="and" />
|
||||
<condition operation="equal" column="member.member_srl" var="friend.target_srl" pipe="and" />
|
||||
</conditions>
|
||||
<navigation>
|
||||
<index var="sort_index" default="friend.list_order" order="asc" />
|
||||
<list_count var="list_count" default="10" />
|
||||
<page_count var="page_count" default="10" />
|
||||
<page var="page" default="1" />
|
||||
</navigation>
|
||||
</query>
|
||||
11
modules/communication/queries/getMessage.xml
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
<query id="getMessage" action="select">
|
||||
<tables>
|
||||
<table name="member_message" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="*" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="message_srl" var="message_srl" notnull="notnull" />
|
||||
</conditions>
|
||||
</query>
|
||||
20
modules/communication/queries/getNewMessage.xml
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
<query id="getNewMessage" action="select">
|
||||
<tables>
|
||||
<table name="member_message" alias="member_message" />
|
||||
<table name="member" alias="member"/>
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="*" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="member_message.receiver_srl" var="receiver_srl" notnull="notnull" />
|
||||
<condition operation="equal" column="member_message.readed" var="readed" default="N" notnull="notnull" pipe="and" />
|
||||
<condition operation="equal" column="member_message.sender_srl" var="member.member_srl" pipe="and" />
|
||||
</conditions>
|
||||
<navigation>
|
||||
<index var="sort_index" default="member_message.list_order" order="desc" />
|
||||
<list_count var="list_count" default="1" />
|
||||
<page_count var="page_count" default="1" />
|
||||
<page var="page" default="1" />
|
||||
</navigation>
|
||||
</query>
|
||||
24
modules/communication/queries/getReceivedMessages.xml
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
<query id="getReceivedMessages" action="select">
|
||||
<tables>
|
||||
<table name="member_message" alias="message"/>
|
||||
<table name="member" alias="member" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="message.*" />
|
||||
<column name="member.user_id" />
|
||||
<column name="member.member_srl" />
|
||||
<column name="member.nick_name" />
|
||||
<column name="member.user_name" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="message.receiver_srl" var="member_srl" notnull="notnull" />
|
||||
<condition operation="equal" column="message.message_type" var="message_type" default="R" pipe="and" />
|
||||
<condition operation="equal" column="message.sender_srl" var="member.member_srl" pipe="and"/>
|
||||
</conditions>
|
||||
<navigation>
|
||||
<index var="sort_index" default="message.list_order" order="asc" />
|
||||
<list_count var="list_count" default="20" />
|
||||
<page_count var="page_count" default="10" />
|
||||
<page var="page" default="1" />
|
||||
</navigation>
|
||||
</query>
|
||||
24
modules/communication/queries/getSendedMessages.xml
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
<query id="getSendedMessages" action="select">
|
||||
<tables>
|
||||
<table name="member_message" alias="message"/>
|
||||
<table name="member" alias="member" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="message.*" />
|
||||
<column name="member.user_id" />
|
||||
<column name="member.member_srl" />
|
||||
<column name="member.nick_name" />
|
||||
<column name="member.user_name" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="message.sender_srl" var="member_srl" notnull="notnull" />
|
||||
<condition operation="equal" column="message.message_type" var="message_type" default="S" pipe="and" />
|
||||
<condition operation="equal" column="message.receiver_srl" var="member.member_srl" pipe="and"/>
|
||||
</conditions>
|
||||
<navigation>
|
||||
<index var="sort_index" default="message.list_order" order="asc" />
|
||||
<list_count var="list_count" default="20" />
|
||||
<page_count var="page_count" default="10" />
|
||||
<page var="page" default="1" />
|
||||
</navigation>
|
||||
</query>
|
||||
24
modules/communication/queries/getStoredMessages.xml
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
<query id="getStoredMessages" action="select">
|
||||
<tables>
|
||||
<table name="member_message" alias="message"/>
|
||||
<table name="member" alias="member" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="message.*" />
|
||||
<column name="member.user_id" />
|
||||
<column name="member.member_srl" />
|
||||
<column name="member.nick_name" />
|
||||
<column name="member.user_name" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="message.receiver_srl" var="member_srl" notnull="notnull" />
|
||||
<condition operation="equal" column="message.message_type" var="message_type" default="T" pipe="and" />
|
||||
<condition operation="equal" column="message.sender_srl" var="member.member_srl" pipe="and"/>
|
||||
</conditions>
|
||||
<navigation>
|
||||
<index var="sort_index" default="message.list_order" order="asc" />
|
||||
<list_count var="list_count" default="20" />
|
||||
<page_count var="page_count" default="10" />
|
||||
<page var="page" default="1" />
|
||||
</navigation>
|
||||
</query>
|
||||
12
modules/communication/queries/isAddedFriend.xml
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
<query id="isAddedFriend" action="select">
|
||||
<tables>
|
||||
<table name="member_friend" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="count(*)" alias="count" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="member_srl" var="member_srl" notnull="notnull" />
|
||||
<condition operation="equal" column="target_srl" var="target_srl" pipe="and" notnull="notnull" />
|
||||
</conditions>
|
||||
</query>
|
||||
12
modules/communication/queries/moveFriend.xml
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
<query id="moveFriend" action="update">
|
||||
<tables>
|
||||
<table name="member_friend" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="friend_group_srl" var="friend_group_srl" default="0" notnull="notnull" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="member_srl" var="member_srl" notnull="notnull" filter="number"/>
|
||||
<condition operation="in" column="friend_srl" var="friend_srls" notnull="notnull" pipe="and" />
|
||||
</conditions>
|
||||
</query>
|
||||
12
modules/communication/queries/renameFriendGroup.xml
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
<query id="renameFriendGroup" action="update">
|
||||
<tables>
|
||||
<table name="member_friend_group" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="title" var="title" notnull="notnull" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="friend_group_srl" var="friend_group_srl" notnull="notnull" filter="number" />
|
||||
<condition operation="equal" column="member_srl" var="member_srl" notnull="notnull" filter="number" pipe="and" />
|
||||
</conditions>
|
||||
</query>
|
||||
18
modules/communication/queries/sendMessage.xml
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
<query id="sendMessage" action="insert">
|
||||
<tables>
|
||||
<table name="member_message" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="message_srl" var="message_srl" notnull="notnull" />
|
||||
<column name="related_srl" var="related_srl" default="0" />
|
||||
<column name="list_order" var="list_order" notnull="notnull" />
|
||||
<column name="sender_srl" var="sender_srl" notnull="notnull" />
|
||||
<column name="receiver_srl" var="receiver_srl" notnull="notnull" />
|
||||
<column name="message_type" var="message_type" notnull="notnull" />
|
||||
<column name="title" var="title" notnull="notnull" />
|
||||
<column name="content" var="content" notnull="notnull" />
|
||||
<column name="readed" var="readed" notnull="notnull" />
|
||||
<column name="regdate" var="regdate" default="curdate()" />
|
||||
<column name="readed_date" var="readed_date" />
|
||||
</columns>
|
||||
</query>
|
||||
13
modules/communication/queries/setMessageReaded.xml
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
<query id="setMessageReaded" action="update">
|
||||
<tables>
|
||||
<table name="member_message" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="readed" default="Y" />
|
||||
<column name="readed_date" default="curdate()" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="message_srl" var="message_srl" notnull="notnull" filter="number"/>
|
||||
<condition operation="equal" column="related_srl" var="related_srl" notnull="notnull" filter="number" pipe="or" />
|
||||
</conditions>
|
||||
</query>
|
||||
12
modules/communication/queries/setMessageStored.xml
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
<query id="setMessageStored" action="update">
|
||||
<tables>
|
||||
<table name="member_message" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="message_type" default="T" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="message_srl" var="message_srl" notnull="notnull" filter="number"/>
|
||||
<condition operation="equal" column="receiver_srl" var="receiver_srl" notnull="notnull" filter="number" pipe="and" />
|
||||
</conditions>
|
||||
</query>
|
||||
11
modules/communication/queries/updateAllowMessage.xml
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
<query id="updateAllowMessage" action="update">
|
||||
<tables>
|
||||
<table name="member" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="allow_message" var="allow_message" default="Y" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="member_srl" var="member_srl" notnull="notnull" filter="number"/>
|
||||
</conditions>
|
||||
</query>
|
||||
8
modules/communication/schemas/member_friend.xml
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
<table name="member_friend">
|
||||
<column name="friend_srl" type="number" size="11" notnull="notnull" primary_key="primary_key" />
|
||||
<column name="friend_group_srl" type="number" size="11" default="0" notnull="notnull" index="idx_friend_group_srl" />
|
||||
<column name="member_srl" type="number" size="11" notnull="notnull" index="idx_member_srl" />
|
||||
<column name="target_srl" type="number" size="11" notnull="notnull" index="idx_target_srl" />
|
||||
<column name="list_order" type="number" size="11" notnull="notnull" index="idx_list_order" />
|
||||
<column name="regdate" type="date" />
|
||||
</table>
|
||||
7
modules/communication/schemas/member_friend_group.xml
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
<table name="member_friend_group">
|
||||
<column name="friend_group_srl" type="number" size="11" notnull="notnull" primary_key="primary_key" />
|
||||
<column name="member_srl" type="number" size="11" notnull="notnull" index="index_owner_member_srl" />
|
||||
<column name="title" type="varchar" size="250" notnull="notnull" />
|
||||
<column name="regdate" type="date" />
|
||||
</table>
|
||||
|
||||
13
modules/communication/schemas/member_message.xml
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
<table name="member_message">
|
||||
<column name="message_srl" type="number" size="11" notnull="notnull" primary_key="primary_key" />
|
||||
<column name="related_srl" type="number" size="11" notnull="notnull" index="idx_related_srl" />
|
||||
<column name="sender_srl" type="number" size="11" notnull="notnull" index="idx_sender_srl" />
|
||||
<column name="receiver_srl" type="number" size="11" notnull="notnull" index="idx_receiver_srl" />
|
||||
<column name="message_type" type="char" size="1" default="S" notnull="notnull" />
|
||||
<column name="title" type="varchar" size="250" notnull="notnull" />
|
||||
<column name="content" type="text" notnull="notnull" />
|
||||
<column name="readed" type="char" size="1" default="N" notnull="notnull" />
|
||||
<column name="list_order" type="number" size="11" notnull="notnull" index="idx_list_order" />
|
||||
<column name="regdate" type="date" />
|
||||
<column name="readed_date" type="date" />
|
||||
</table>
|
||||
49
modules/communication/skins/default/add_friend.html
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
<!--#include("./common_header.html")-->
|
||||
<!--%import("filter/add_friend.xml")-->
|
||||
|
||||
<div class="memberSmallBox w500pop">
|
||||
<div class="header">
|
||||
<h3>{$lang->cmd_add_friend}</h3>
|
||||
</div>
|
||||
|
||||
<form action="./" method="get" onsubmit="return procFilter(this, add_friend)">
|
||||
<input type="hidden" name="target_srl" value="{$target_info->member_srl}" />
|
||||
|
||||
<div class="complex">
|
||||
<table cellspacing="0" class="leftHeaderType">
|
||||
<col width="110" />
|
||||
<col />
|
||||
<tr>
|
||||
<th scope="row">{$lang->user_id}</th>
|
||||
<td>{$target_info->user_id}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{$lang->user_name}</th>
|
||||
<td>{$target_info->user_name}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{$lang->nick_name}</th>
|
||||
<td><div class="member_{$target_info->member_srl}">{$target_info->nick_name}</div></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<div class="group">
|
||||
<select name="friend_group_srl" class="fl">
|
||||
<option value="">{$lang->default_friend_group}</option>
|
||||
<!--@foreach($friend_group_list as $key => $val)-->
|
||||
<option value="{$val->friend_group_srl}">{$val->title}</option>
|
||||
<!--@end-->
|
||||
</select>
|
||||
<span class="fr"><a href="{getUrl('act','dispCommunicationAddFriendGroup')}" onclick="popopen(this.href);return false;" class="button"><span>{$lang->cmd_add_friend_group}</span></a></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="tCenter help">
|
||||
<span class="button"><input type="submit" value="{$lang->cmd_add_friend}" /></span>
|
||||
<a href="#" onclick="window.close();return false;" class="button"><span>{$lang->cmd_close}</span></a>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<!--#include("./common_footer.html")-->
|
||||
34
modules/communication/skins/default/add_friend_group.html
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
<!--#include("./common_header.html")-->
|
||||
<!--%import("filter/add_friend_group.xml")-->
|
||||
|
||||
<div class="memberSmallBox w500pop">
|
||||
<form action="./" method="get" onsubmit="return procFilter(this, add_friend_group)">
|
||||
<input type="hidden" name="friend_group_srl" value="{$friend_group->friend_group_srl}" />
|
||||
|
||||
<div class="header">
|
||||
<h3>
|
||||
<!--@if($friend_group->friend_group_srl)-->
|
||||
{$lang->cmd_rename_friend_group}
|
||||
<!--@else-->
|
||||
{$lang->cmd_add_friend_group}
|
||||
<!--@end-->
|
||||
</h3>
|
||||
</div>
|
||||
|
||||
<div class="text">
|
||||
<p>{$lang->msg_insert_group_name}</p>
|
||||
<input name="title" type="text" class="inputTypeText" value="{htmlspecialchars($friend_group->title)}"/>
|
||||
</div>
|
||||
|
||||
<div class="help tCenter">
|
||||
<!--@if($friend_group->friend_group_srl)-->
|
||||
<span class="button"><input type="submit" value="{$lang->cmd_modify}" /></span>
|
||||
<!--@else-->
|
||||
<span class="button"><input type="submit" value="{$lang->cmd_insert}" /></span>
|
||||
<!--@end-->
|
||||
<a href="#" onclick="window.close();return false;" class="button"><span>{$lang->cmd_close}</span></a>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<!--#include("./common_footer.html")-->
|
||||
1
modules/communication/skins/default/common_footer.html
Normal file
|
|
@ -0,0 +1 @@
|
|||
</div>
|
||||
36
modules/communication/skins/default/common_header.html
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
<!--%import("js/communication.js")-->
|
||||
|
||||
<!--%import("css/common.css")-->
|
||||
<!--@if($communication_config->colorset=="purple")-->
|
||||
<!--%import("css/purple.css")-->
|
||||
<!--@elseif($communication_config->colorset=="green")-->
|
||||
<!--%import("css/green.css")-->
|
||||
<!--@elseif($communication_config->colorset=="red")-->
|
||||
<!--%import("css/red.css")-->
|
||||
<!--@elseif($communication_config->colorset=="cyan")-->
|
||||
<!--%import("css/cyan.css")-->
|
||||
<!--@elseif($communication_config->colorset=="black")-->
|
||||
<!--%import("css/black.css")-->
|
||||
<!--@else-->
|
||||
<!--%import("css/white.css")-->
|
||||
<!--@end-->
|
||||
|
||||
<div id="memberModule">
|
||||
|
||||
<!--@if($member_title)-->
|
||||
<div class="boardHeader">
|
||||
<h3>{$member_title}</h3>
|
||||
|
||||
<!--@if($is_logged && $logged_info->menu_list && (!$member_srl || $member_srl == $logged_info->member_srl) )-->
|
||||
<form action="./" method="get" class="member_option">
|
||||
<input type="hidden" name="mid" value="{$mid}" />
|
||||
<select name="act">
|
||||
<!--@foreach($logged_info->menu_list as $key => $val)-->
|
||||
<option value="{$key}" <!--@if($key == $act)-->selected="selected"<!--@end-->>{Context::getLang($val)}</option>
|
||||
<!--@end-->
|
||||
</select>
|
||||
<input type="image" src="./images/button_go.gif" />
|
||||
</form>
|
||||
<!--@end-->
|
||||
</div>
|
||||
<!--@end-->
|
||||
54
modules/communication/skins/default/css/black.css
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
@charset "utf-8";
|
||||
.boardHeader h3 { margin:0; padding:0; float:left; clear:both; font-size:1.2em; padding:1em 2em .7em 1.2em; border:none; border-left:1px solid #e1e1dd; border-bottom:3px solid #fe3614; background:url(../images/common/lineH3.gif) no-repeat right bottom;}
|
||||
|
||||
.memberSmallBox .header h3 { margin:0; border:none; float:left; clear:both; font-size:1.2em; padding:.8em 2em .6em 1.2em; border:none; border-bottom:3px solid #fe3614; background:url(../images/common/lineH3.gif) no-repeat right bottom;}
|
||||
|
||||
/* button */
|
||||
a.button, span.button, del.button,
|
||||
a.button span, span.button button, span.button input, del.button span{
|
||||
background-image:url(../images/black/form_buttons.png);
|
||||
_background-image:url(../images/black/form_buttons.gif);
|
||||
}
|
||||
|
||||
|
||||
del.button span,
|
||||
a.button, span.button, del.button,
|
||||
a.button span, span.button button, span.button input, del.button span{
|
||||
color:#FFFFFF;
|
||||
}
|
||||
|
||||
.inputTypeText { background-color:transparent !important; color:#AAAAAA !important; }
|
||||
.inputTypeText:hover, .inputTypeText:focus { background-color:transparent; color:#AAAAAA; }
|
||||
|
||||
/* replace color */
|
||||
.memberSmallBox { border:1px solid #888888; }
|
||||
.memberSmallBox .header { background:transparent url("../images/black/bgH3.gif) no-repeat left bottom; }
|
||||
.memberSmallBox .header h3 { background:transparent url("../images/black/lineH3.gif") no-repeat right bottom; color:#888888; border-bottom:3px solid #888888; }
|
||||
.memberSmallBox .openid_user_id { color:#AAAAAA; background:transparent url("../images/black/openid_input_bg.gif") no-repeat left 50% !important; }
|
||||
.memberSmallBox .help { background-color:transparent; }
|
||||
|
||||
.memberInfoTable tr.first-child th, .memberInfoTable tr.first-child td { background-color:transparent; color:#AAAAAA; }
|
||||
.memberInfoTable tr th, .memberInfoTable tr td { background-color:transparent; color:#AAAAAA; }
|
||||
.memberInfoTable td input { background-color:transparent; color:#AAAAAA; }
|
||||
.memberInfoTable caption { color:#AAAAAA; }
|
||||
div.checkValue { color:#BBBBBB !important; }
|
||||
|
||||
.boardHeader { border:1px solid #888888; }
|
||||
.boardHeader { background:transparent url("../images/black/bgH3.gif) no-repeat left bottom; }
|
||||
.boardHeader h3 { border:none; background:transparent url("../images/black/lineH3.gif") no-repeat right bottom; color:#888888; border-bottom:3px solid #888888; }
|
||||
|
||||
table.list { border:1px solid #000000 !important; }
|
||||
table.list th { background:#282829 url("../images/black/lineBoardListTh.gif") no-repeat left bottom; border:1px solid #444444 !important; color:#AAAAAA; }
|
||||
table.list tr { background-color:transparent !important; }
|
||||
table.list tr td.title { color:#BBBBBB !important; }
|
||||
table.list tr td.title a { color:#BBBBBB !important; }
|
||||
table.list tr td { border-top:1px solid #888888 !important; }
|
||||
table .list tr td, table.list tr td * { color:#BBBBBB; }
|
||||
|
||||
.pageNavigation a { border:none !important; }
|
||||
.pageNavigation .current { border:none !important; color:#EEEEEE; }
|
||||
|
||||
.memberSmallBox .leftHeaderType th { background:transparent; color:#AAAAAA; }
|
||||
.memberSmallBox .leftHeaderType td { color:#AAAAAA; }
|
||||
|
||||
#popup_content { background-color:#000000; }
|
||||
175
modules/communication/skins/default/css/common.css
Normal file
|
|
@ -0,0 +1,175 @@
|
|||
@charset "utf-8";
|
||||
|
||||
/* common */
|
||||
.memberSmallBox { border:1px solid #e0e1db; margin:5em auto 1em auto;}
|
||||
.memberSmallBox fieldset { border:0; margin:0; }
|
||||
|
||||
.memberSmallBox.w400 { width:400px;}
|
||||
.memberSmallBox.w500 { width:500px;}
|
||||
|
||||
.memberSmallBox.w400pop { width:400px; margin:0; padding:0;}
|
||||
.memberSmallBox.w500pop { width:500px; margin:0; padding:0;}
|
||||
.memberSmallBox.w600pop { width:600px; margin:0; padding:0;}
|
||||
|
||||
.memberSmallBox .header { position:relative; _width:100%; background:#ffffff url(../images/common/bgH3.gif) no-repeat left bottom; overflow:hidden;}
|
||||
|
||||
.boardInformation { font:normal 11px Tahoma; width:100%; clear:both; margin:1em 0 .5em 0; overflow:hidden; color:#666666; height:28px;}
|
||||
.boardInformation strong { font:bold 11px Tahoma; color:#ff6600;}
|
||||
|
||||
.boardHeader { position:relative; _width:100%; border-top:1px solid #e1e1dd; border-bottom:none; background:#ffffff url(../images/common/bgH3.gif) no-repeat right bottom; overflow:hidden;}
|
||||
.boardHeader .member_option { float:right; position:relative; top:1em; right:1em; }
|
||||
.boardHeader select { vertical-align:bottom; }
|
||||
.boardHeader input { vertical-align:bottom; _padding-bottom:1px;}
|
||||
.boardHeader .essential { position:absolute; top:1.5em; right:1em; color:#54564b; font-size:.9em;}
|
||||
.boardHeader .essential:first-letter { color:#ff0000;}
|
||||
|
||||
/* list */
|
||||
.list { width:100%; border:1px solid #e0e1db; table-layout:fixed;}
|
||||
.list tr:first-child td, .list tr.first-child td { border-top:1px solid #e0e1db; white-space:nowrap;}
|
||||
.list tr.bg1 { background:#ffffff}
|
||||
.list tr.bg2 { background:#fbfbfb;}
|
||||
.list th { color:#3e3f3e; font-weight:white; border-bottom:1px solid #ffffff; padding:.5em .2em .5em .2em; background:#ffffff url(../images/common/lineBoardListTh.gif) no-repeat left bottom; white-space:nowrap;}
|
||||
.list th a { color:#3e3f3e;}
|
||||
.list th:first-child, .list th.first-child { background-position:-3px bottom; border-left:1px solid #ffffff;}
|
||||
.list th.check { padding:0;}
|
||||
.list th select, .list th input { vertical-align:middle;}
|
||||
.list td { border-top:1px solid #eff0ed; padding:.5em; text-align:center; height:35px;}
|
||||
.list td.registDate { font:.8em Tahoma; color:#999999; text-align:center;}
|
||||
.list td.num { font:.8em Tahoma; color:#999999; text-align:center;}
|
||||
.list td.check { text-align:center;}
|
||||
.list td.user { color:#333333; font-size:.9em; text-align:left;}
|
||||
.list td.user a { color:#333333;}
|
||||
.list td.userId { font:.9em Tahoma;}
|
||||
.list td.userNick { font-size:.9em; color:#999999;}
|
||||
.list td.sendMessage { text-align:center; padding:0;}
|
||||
.list td.sendMessage .buttonFixedLeft { float:left; position:relative; margin-left:1em;}
|
||||
.list td input { _margin:-3px;}
|
||||
.list td.title { text-align:left; }
|
||||
.list td.title.bold { font-size:1.2em; font-weight:bold;}
|
||||
.list td.title.bold a { position:relative; top:.3em;}
|
||||
.list td.title * { vertical-align:middle;}
|
||||
.list td.title, .list td.title a { color:#444444; text-decoration:none;}
|
||||
.list td.title a:visited { color:#777777; text-decoration:none;}
|
||||
.list td.checkDate { font:.8em Tahoma; color:#333333; text-align:center;}
|
||||
.list td.subject { font-size:1em; text-align:left; color:#555555; }
|
||||
.list td.subject a { text-decoration:none; color:#555555; }
|
||||
.memberSelect { margin-top:2px; }
|
||||
|
||||
.saved_content { margin-top:1em; padding-top:1em; border-top:1px dotted #DDDDDD; }
|
||||
|
||||
/* login */
|
||||
.memberSmallBox .login { border:none; padding:2em 0 1.5em 2em;}
|
||||
.memberSmallBox .login legend { position:absolute; overflow:hidden; width:1px; height:1px; font-size:.001em; text-indent:-100em;}
|
||||
.memberSmallBox .login dl { margin:0; padding:0; overflow:hidden; float:left; margin-right:10px; width:250px;}
|
||||
.memberSmallBox .login dl dt { margin:0; padding:0; width:100px; clear:left; float:left; color:#54564b; height:24px; padding-top:3px;}
|
||||
.memberSmallBox .login dl dd { margin:0; padding:0; float:left; height:27px; width:150px; }
|
||||
.memberSmallBox .login .keep { clear:both; white-space:nowrap; margin-left:100px;}
|
||||
.memberSmallBox .login .keep input { vertical-align:middle;}
|
||||
.memberSmallBox .login .keep label { margin:0; padding:0; font-size:11px; color:#999999;}
|
||||
.memberSmallBox .openid_user_id { background: url(../images/openid_input_bg.gif) left no-repeat; background-color: #ffffff; background-position: 0 50%; padding:3px 3px 3px 18px; border:1px solid; border-color:#a6a6a6 #d8d8d8 #d8d8d8 #a6a6a6; line-height:1em; vertical-align:middle; color:#666666; width:120px;}
|
||||
.memberSmallBox .help { background:#f5f5f3; color:#666666; border-top:1px solid #eaebe7; overflow:hidden; padding:1.1em; }
|
||||
|
||||
/* logout */
|
||||
.memberSmallBox .text { color:#54564b; text-align:center; padding:4em 2em 5em 2em;}
|
||||
.memberSmallBox .text p { margin:0; padding:0; margin-bottom:.5em;}
|
||||
|
||||
/* friend */
|
||||
.friendNum { float:left; background:url(../images/common/iconFriend.gif) no-repeat .5em .4em; padding:.4em 0 0 2em;}
|
||||
.friendNum strong { font:bold 11px Tahoma; color:#ff6600;}
|
||||
|
||||
/* message */
|
||||
.readMessage { border:1px solid #e0e1db; border-top:none; margin-bottom:2em;}
|
||||
.readMessage .messageHeader { padding:1.5em; height:1em; overflow:hidden;}
|
||||
.readMessage .messageHeader h4 { margin:0; padding:0; float:left; padding-left:.5em; font-size:1em; background:url(../images/common/iconArrow99.gif) no-repeat left .3em;}
|
||||
.readMessage .messageHeader address { float:right; white-space:nowrap;}
|
||||
.readMessage .messageHeader address em { font-size:1em; font-style:white; color:#333333; margin-right:.3em; float:left;}
|
||||
.readMessage .messageHeader address em a { color:#333333;}
|
||||
.readMessage .messageHeader address .date { font:.8em Tahoma; color:#999999; margin-left:10px;}
|
||||
.readMessage .messageBody { border:1px solid #e0e1db; margin:0 1.5em 1.5em 1.5em; padding:1em; color:#666666;}
|
||||
.readMessage .deleteOrKeep { padding:.5em 0; overflow:hidden; background:#f5f5f3; border-top:1px solid #eaebe7; _width:100%;}
|
||||
.messageSetup { float:left; overflow:hidden; }
|
||||
.instantMessage { float:right; overflow:hidden;}
|
||||
.instantMessage li { float:left; padding:0 .8em 0 .8em; margin-left:-1px; background:url(../images/common/line_1x10_e0e0e0.gif) no-repeat left center; list-style:none; }
|
||||
.instantMessage li a { text-decoration:none; display:block; float:left; height:1em; height:1.1em; overflow:hidden; font-size:1em; white-space:nowrap; color:#666666; padding-left:1.8em; background:url(../images/common/iconInstantMessage.gif) no-repeat left top;}
|
||||
.instantMessage li.on a { background-position:left -14px; font-weight:bold;}
|
||||
.instantMessage li a strong { color:#ff6600;}
|
||||
|
||||
/* member info */
|
||||
.memberInfoTable { width:100%; border:1px solid #e0e1db; margin-bottom:10px;}
|
||||
.memberInfoTable caption { padding:2em 0 .5em 1.5em; font-weight:bold; text-align:left; background:url(../images/common/iconH3.gif) no-repeat .5em 2em;}
|
||||
.memberInfoTable tr.first-child th, .memberInfoTable tr.first-child td { border-top:none;}
|
||||
.memberInfoTable th, .memberInfoTable td { border-top:1px solid #eaebe7; padding:.5em;}
|
||||
.memberInfoTable th { background:#f5f5f3; text-align:left; padding:.5em 1em;}
|
||||
.memberInfoTable td { border-left:1px solid #eaebe7;}
|
||||
.memberInfoTable td input { border:1px solid; border-color:#a6a6a6 #d8d8d8 #d8d8d8 #a6a6a6; padding:3px; height:1em; line-height:1em; background:#fbfbfb; vertical-align:middle; margin-right:.5em; margin-bottom:.5em; color:#666666;}
|
||||
.memberInfoTable td input.radio, .memberInfoTable td input.check { border:none; padding:0; margin:0; background:none; margin-top:.4em;}
|
||||
.memberInfoTable td input.w4em { width:4em;}
|
||||
.memberInfoTable td input.w2em { width:2em;}
|
||||
.memberInfoTable td select { margin-right:.5em;}
|
||||
.memberInfoTable td checkbox { border:0; }
|
||||
.memberInfoTable td .fl { margin-right:.5em;}
|
||||
.memberInfoTable td br { clear:both;}
|
||||
.memberInfoTable td p { clear:both; margin:0; padding:0; font-size:.9em; color:#999999; padding-top:.5em; margin-right:.5em;}
|
||||
.memberInfoTable td label { color:#3f4040; padding-top:.3em; margin-right:.5em;}
|
||||
.memberInfoTable td ul { list-style:none; }
|
||||
.memberInfoTable td .checkbox { border:none; }
|
||||
|
||||
/* 아이디, 이름, 이메일 주소 중복 체크후 중복되면 출력되는 메세지의 className */
|
||||
.memberInfoTable td .checkValue { margin-top:5px; font-weight:bold; color:#444444; }
|
||||
|
||||
/* modify/ insert member info */
|
||||
.memberImage { clear:both; }
|
||||
.memberImage .info { margin-bottom:1.5em; float:left; margin-right:1em;}
|
||||
.memberImage .form { float:left; }
|
||||
.memberImage .form input { height:1.5em; margin:0 .3em 0 0; padding:0;}
|
||||
|
||||
.checkbox li { float:left; margin-right:2em; }
|
||||
.checkbox li input { border:none; }
|
||||
|
||||
.display_date { cursor:pointer; width:80px; float:left; border:1px solid; border-color:#a6a6a6 #d8d8d8 #d8d8d8 #a6a6a6; height:1em; padding:3px; }
|
||||
|
||||
.krZip .address2 { clear:both; margin-top:10px;}
|
||||
|
||||
.extendDesc { clear:both; margin-top:0; font-size:.9em; color:#999999; }
|
||||
|
||||
.extendPublic { clear:both; margin-top:5px; padding:0; font-size:.9em; color:#999999; }
|
||||
.extendPublic input { padding:0; margin:0; }
|
||||
|
||||
.publicItem { display:block; margin-top:5px;}
|
||||
.publicItem input { margin:0; padding:0;}
|
||||
.publicItem label { font-weight:normal; margin:0; padding:0; color:#666666;}
|
||||
span.publicItem { display:inline; margin:0; font-weight:normal; color:#666666; }
|
||||
span.privateItem { display:inline; margin:0; font-weight:normal; color:#666666; }
|
||||
|
||||
.agreementBox { border:1px solid #AAAAAA; margin:.5em 0 0 0; padding:1em; border-bottom:none; height:200px; overflow-y:scroll;}
|
||||
.agreementButton { background-color:#EEEEEE; padding:1em; border:1px solid #AAAAAA; border-top:none;}
|
||||
|
||||
/* popup common */
|
||||
.memberSmallBox .complex { padding:1.5em 2em 2em 2em;}
|
||||
.memberSmallBox .leftHeaderType { border-top:1px solid #e0e1db; border-left:1px solid #e0e1db; width:100%;}
|
||||
.memberSmallBox .leftHeaderType th, .memberSmallBox .leftHeaderType td { border-right:1px solid #e0e1db; border-bottom:1px solid #e0e1db; padding:.8em 1em .6em 1em;}
|
||||
.memberSmallBox .leftHeaderType th { color:#333333; text-align:left; background:#f5f5f3;}
|
||||
.memberSmallBox .leftHeaderType td { color:#444444;}
|
||||
.memberSmallBox .group { border:1px solid #e0e1db; border-width:1px 0; overflow:hidden; padding:.5em 0; margin-top:.7em; height:23px;}
|
||||
.memberSmallBox .group select { width:11em; margin-top:1px;}
|
||||
.memberSmallBox .editor { margin:10px 0 0 0; _height:400px; }
|
||||
|
||||
/* password change */
|
||||
.memberSmallBox .pwModify { border:none;}
|
||||
.memberSmallBox .pwModify legend { position:absolute; overflow:hidden; width:1px; height:1px; font-size:.001em; text-indent:-100em;}
|
||||
.memberSmallBox .pwModify input { width:9em;}
|
||||
.memberSmallBox .pwModify br { display:block; margin-bottom:.2em}
|
||||
.memberSmallBox .pwModify p { margin:0; padding:0; text-align:center; margin-top:1em; color:#54564b;}
|
||||
|
||||
/* pageNavigation */
|
||||
.pageNavigation { position:relative; display:block; padding:1.5em 0 2em 0; text-align:center; font:bold .8em Tahoma; }
|
||||
.pageNavigation a { position:relative; margin-left:-4px; font:bold 1em Tahoma; color:#666666; display:inline-block; padding:1px 7px 2px 6px; border-left:1px solid #dedfde; border-right:1px solid #CCCCCC; text-decoration:none; line-height:1em; }
|
||||
.pageNavigation a:hover { background:#F7F7F7; text-decoration:none; }
|
||||
.pageNavigation a:visited { color:#999999;}
|
||||
.pageNavigation a.goToFirst { border:none; border-right:1px solid #ffffff; border-left:1px solid #ffffff; z-index:99; vertical-align:top; padding:0px 7px 4px 6px;}
|
||||
.pageNavigation a.goToLast { border:none; border-right:1px solid #ffffff; border-left:1px solid #ffffff; z-index:99; vertical-align:top; padding:0px 7px 4px 6px;}
|
||||
.pageNavigation a.goToFirst img, .pageNavigation a.goToLast img { display:inline-block; padding:2px 0; position:relative; top:2px; _top:1px;}
|
||||
.pageNavigation .current { position:relative; margin-left:-4px; font:bold 1em Tahoma; color:#ff6600; display:inline-block; padding:1px 7px 1px 6px; border-left:1px solid #dedfde; border-right:1px solid #CCCCCC; text-decoration:none; line-height:1em; }
|
||||
|
||||
/* Own Document */
|
||||
img.button_go { position:relative; bottom:-4px; }
|
||||
4
modules/communication/skins/default/css/cyan.css
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
@charset "utf-8";
|
||||
.boardHeader h3 { margin:0; padding:0; float:left; clear:both; font-size:1.2em; padding:1em 2em .7em 1.2em; border-left:1px solid #d1d9db; border-bottom:3px solid #2895c0; background:url(../images/common/lineH3.gif) no-repeat right bottom;}
|
||||
|
||||
.memberSmallBox .header h3 { margin:0; border:none; float:left; clear:both; font-size:1.2em; padding:.8em 2em .6em 1.2em; border-bottom:3px solid #2895c0; background:url(../images/common/lineH3.gif) no-repeat right bottom;}
|
||||
4
modules/communication/skins/default/css/green.css
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
@charset "utf-8";
|
||||
.boardHeader h3 { margin:0; padding:0; float:left; clear:both; font-size:1.2em; padding:1em 2em .7em 1.2em; border-left:1px solid #d0dbd1; border-bottom:3px solid #38b549; background:url(../images/common/lineH3.gif) no-repeat right bottom;}
|
||||
|
||||
.memberSmallBox .header h3 { margin:0; border:none; float:left; clear:both; font-size:1.2em; padding:.8em 2em .6em 1.2em; border-bottom:3px solid #38b549; background:url(../images/common/lineH3.gif) no-repeat right bottom;}
|
||||
4
modules/communication/skins/default/css/purple.css
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
@charset "utf-8";
|
||||
.boardHeader h3 { margin:0; padding:0; float:left; clear:both; font-size:1.2em; padding:1em 2em .7em 1.2em; border-left:1px solid #d1d9db; border-bottom:3px solid #ac19a9; background:url(../images/common/lineH3.gif) no-repeat right bottom;}
|
||||
|
||||
.memberSmallBox .header h3 { margin:0; border:none; float:left; clear:both; font-size:1.2em; padding:.8em 2em .6em 1.2em; border-bottom:3px solid #ac19a9; background:url(../images/common/lineH3.gif) no-repeat right bottom;}
|
||||
4
modules/communication/skins/default/css/red.css
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
@charset "utf-8";
|
||||
.boardHeader h3 { margin:0; padding:0; float:left; clear:both; font-size:1.2em; padding:1em 2em .7em 1.2em; border-left:1px solid #e1e1dd; border-bottom:3px solid #fe3614; background:url(../images/common/lineH3.gif) no-repeat right bottom;}
|
||||
|
||||
.memberSmallBox .header h3 { margin:0; border:none; float:left; clear:both; font-size:1.2em; padding:.8em 2em .6em 1.2em; border-bottom:3px solid #fe3614; background:url(../images/common/lineH3.gif) no-repeat right bottom;}
|
||||
5
modules/communication/skins/default/css/white.css
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
@charset "utf-8";
|
||||
.boardHeader h3 { margin:0; padding:0; float:left; clear:both; font-size:1.2em; padding:1em 2em .7em 1.2em; border:none; border-left:1px solid #e1e1dd; border-bottom:3px solid #fe3614; background:url(../images/common/lineH3.gif) no-repeat right bottom;}
|
||||
|
||||
.memberSmallBox .header h3 { margin:0; border:none; float:left; clear:both; font-size:1.2em; padding:.8em 2em .6em 1.2em; border:none; border-bottom:3px solid #fe3614; background:url(../images/common/lineH3.gif) no-repeat right bottom;}
|
||||
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
<filter name="add_friend" module="communication" act="procCommunicationAddFriend" confirm_msg_code="confirm_submit">
|
||||
<form />
|
||||
<parameter />
|
||||
<response callback_func="completeAddFriend">
|
||||
<tag name="error" />
|
||||
<tag name="message" />
|
||||
<tag name="member_srl" />
|
||||
</response>
|
||||
</filter>
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
<filter name="add_friend_group" module="communication" act="procCommunicationAddFriendGroup" confirm_msg_code="confirm_submit">
|
||||
<form>
|
||||
<node target="title" required="true" minlength="1" maxlength="240" />
|
||||
</form>
|
||||
<parameter />
|
||||
<response callback_func="completeAddFriendGroup">
|
||||
<tag name="error" />
|
||||
<tag name="message" />
|
||||
</response>
|
||||
</filter>
|
||||
|
|
@ -0,0 +1 @@
|
|||
<filter name="delete_checked_friend" module="communication" act="procCommunicationDeleteFriend" confirm_msg_code="confirm_delete" />
|
||||
|
|
@ -0,0 +1 @@
|
|||
<filter name="delete_checked_message" module="communication" act="procCommunicationDeleteMessages" confirm_msg_code="confirm_delete" />
|
||||
|
|
@ -0,0 +1 @@
|
|||
<filter name="delete_friend_group" module="communication" act="procCommunicationDeleteFriendGroup" confirm_msg_code="confirm_delete" />
|
||||
|
|
@ -0,0 +1 @@
|
|||
<filter name="move_friend" module="communication" act="procCommunicationMoveFriend" confirm_msg_code="confirm_move" />
|
||||
12
modules/communication/skins/default/filter/send_message.xml
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
<filter name="send_message" module="communication" act="procCommunicationSendMessage" confirm_msg_code="confirm_submit">
|
||||
<form>
|
||||
<node target="title" required="true" minlength="1" maxlength="240" />
|
||||
<node target="content" required="true" minlength="1" />
|
||||
</form>
|
||||
<parameter />
|
||||
<response callback_func="completeSendMessage">
|
||||
<tag name="error" />
|
||||
<tag name="message" />
|
||||
<tag name="redirect_url" />
|
||||
</response>
|
||||
</filter>
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
<filter name="update_allow_message" module="communication" act="procCommunicationUpdateAllowMessage">
|
||||
<form />
|
||||
<parameter />
|
||||
<response />
|
||||
</filter>
|
||||
101
modules/communication/skins/default/friends.html
Normal file
|
|
@ -0,0 +1,101 @@
|
|||
{@ $member_title = $lang->cmd_view_friend }
|
||||
|
||||
<!--#include("./common_header.html")-->
|
||||
|
||||
<!--%import("filter/delete_checked_friend.xml")-->
|
||||
<!--%import("filter/delete_friend_group.xml")-->
|
||||
<!--%import("filter/move_friend.xml")-->
|
||||
|
||||
<form id="fo_friend_list" action="./" method="get" onsubmit="return procFilter(this, delete_checked_friend)">
|
||||
|
||||
<div class="boardInformation">
|
||||
<span class="friendNum">{$lang->friend} : <strong>{$total_count}</strong></span>
|
||||
<div class="fr">
|
||||
<select name="friend_group_list" id="friend_group_list">
|
||||
<!--@foreach($friend_group_list as $key => $val)-->
|
||||
<option value="{$val->friend_group_srl}" <!--@if($val->friend_group_srl == $friend_group_srl)-->selected="selected"<!--@end--> >{$val->title}</option>
|
||||
<!--@end-->
|
||||
</select>
|
||||
<a href="#" onclick="doRenameFriendGroup();return false;" class="button"><span>{$lang->cmd_modify}</span></a>
|
||||
<a href="#" onclick="doDeleteFriendGroup();return false;" class="button"><span>{$lang->cmd_delete}</span></a>
|
||||
<a href="{getUrl('module','communication','act','dispCommunicationAddFriendGroup')}" onclick="popopen(this.href);return false;" class="button"><span>{$lang->cmd_add_friend_group}</span></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<table cellspacing="0" class="list">
|
||||
<col width="40" />
|
||||
<col width="170" />
|
||||
<col />
|
||||
<col />
|
||||
<col />
|
||||
<col />
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col" class="check first-child"><input name="check_all" type="checkbox" onclick="doCheckAll(this, 'fo_friend_list');" /></th>
|
||||
<th scope="col" class="friendGroup">
|
||||
<select name="jumpMenu" id="jumpMenu" class="w100">
|
||||
<option value="">{$lang->default_friend_group}</option>
|
||||
<!--@foreach($friend_group_list as $key => $val)-->
|
||||
<option value="{$val->friend_group_srl}" <!--@if($val->friend_group_srl == $friend_group_srl)-->selected="selected"<!--@end--> >{$val->title}</option>
|
||||
<!--@end-->
|
||||
</select><a href="#" onclick="doJumpFriendGroup(); return false;"><img src="./images/button_go.gif" alt="" align="absmiddle" /></a>
|
||||
</th>
|
||||
<th scope="col" class="userId">{$lang->user_id}</th>
|
||||
<th scope="col" class="userName">{$lang->user_name}</th>
|
||||
<th scope="col" class="userNick">{$lang->nick_name}</th>
|
||||
<th scope="col" class="registDate">{$lang->regdate}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<!--@foreach($friend_list as $no => $val)-->
|
||||
<tr class="bg{($no+1)%2+1}">
|
||||
<td class="check"><input type="checkbox" name="friend_srl_list" value="{$val->friend_srl}" /></td>
|
||||
<td class="friendGroup">{$val->group_title?$val->group_title:" "}</td>
|
||||
<td class="userId">{$val->user_id}</td>
|
||||
<td class="userName">{$val->user_name}</td>
|
||||
<td class="userNick"><div class="member_{$val->target_srl}">{$val->nick_name}</div></td>
|
||||
<td class="registDate">{zdate($val->regdate,"Y-m-d")}</td>
|
||||
</tr>
|
||||
<!--@end-->
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<!-- 페이지 네비게이션 -->
|
||||
<div class="pageNavigation">
|
||||
<a href="{getUrl('page','','document_srl','')}" class="goToFirst"><img src="./images/bottomGotoFirst.gif" alt="{$lang->first_page}" width="7" height="5" /></a>
|
||||
<!--@while($page_no = $page_navigation->getNextPage())-->
|
||||
<!--@if($page == $page_no)-->
|
||||
<span class="current">{$page_no}</span>
|
||||
<!--@else-->
|
||||
<a href="{getUrl('page',$page_no,'document_srl','')}">{$page_no}</a>
|
||||
<!--@end-->
|
||||
<!--@end-->
|
||||
<a href="{getUrl('page',$page_navigation->last_page,'document_srl','')}" class="goToLast"><img src="./images/bottomGotoLast.gif" alt="{$lang->last_page}" width="7" height="5" /></a>
|
||||
</div>
|
||||
|
||||
<div class="fl memberSelect">
|
||||
<select name="target_friend_group_srl">
|
||||
<!--@foreach($friend_group_list as $key => $val)-->
|
||||
<option value="{$val->friend_group_srl}">{$val->title}</option>
|
||||
<!--@end-->
|
||||
</select>
|
||||
</div>
|
||||
<div class="fl">
|
||||
<a href="#" onclick="doMoveFriend();return false;" class="button"><span>{$lang->cmd_move}</span></a>
|
||||
<span class="button"><input type="submit" value="{$lang->cmd_delete}" /></span>
|
||||
</div>
|
||||
|
||||
<div class="fr">
|
||||
<a href="{getUrl('act','','message_type','','friend_gruop_srl','')}" class="button"><span>{$lang->cmd_back}</span></a>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
||||
|
||||
<!-- 그룹 삭제를 위한 빈 form -->
|
||||
<form action="./" method="get" id="for_delete_group">
|
||||
<input type="hidden" name="friend_group_srl" value="" />
|
||||
</form>
|
||||
|
||||
|
||||
<!--#include("./common_footer.html")-->
|
||||
BIN
modules/communication/skins/default/images/black/bgH3.gif
Executable file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
modules/communication/skins/default/images/black/form_buttons.gif
Executable file
|
After Width: | Height: | Size: 4 KiB |
BIN
modules/communication/skins/default/images/black/form_buttons.png
Executable file
|
After Width: | Height: | Size: 7.6 KiB |
BIN
modules/communication/skins/default/images/black/lineBoardListTh.gif
Executable file
|
After Width: | Height: | Size: 2.7 KiB |
BIN
modules/communication/skins/default/images/black/lineH3.gif
Executable file
|
After Width: | Height: | Size: 37 B |
BIN
modules/communication/skins/default/images/black/openid_input_bg.gif
Executable file
|
After Width: | Height: | Size: 220 B |
BIN
modules/communication/skins/default/images/blank.gif
Normal file
|
After Width: | Height: | Size: 43 B |
BIN
modules/communication/skins/default/images/bottomGotoFirst.gif
Normal file
|
After Width: | Height: | Size: 51 B |
BIN
modules/communication/skins/default/images/bottomGotoLast.gif
Normal file
|
After Width: | Height: | Size: 51 B |
BIN
modules/communication/skins/default/images/button_go.gif
Executable file
|
After Width: | Height: | Size: 316 B |
BIN
modules/communication/skins/default/images/common/bgH3.gif
Normal file
|
After Width: | Height: | Size: 2.7 KiB |
|
After Width: | Height: | Size: 51 B |
|
After Width: | Height: | Size: 51 B |
|
After Width: | Height: | Size: 419 B |
BIN
modules/communication/skins/default/images/common/iconAdd.gif
Normal file
|
After Width: | Height: | Size: 51 B |
|
After Width: | Height: | Size: 46 B |
BIN
modules/communication/skins/default/images/common/iconCheck.gif
Normal file
|
After Width: | Height: | Size: 306 B |
BIN
modules/communication/skins/default/images/common/iconFriend.gif
Normal file
|
After Width: | Height: | Size: 145 B |
BIN
modules/communication/skins/default/images/common/iconH3.gif
Normal file
|
After Width: | Height: | Size: 58 B |
|
After Width: | Height: | Size: 254 B |
|
After Width: | Height: | Size: 535 B |
|
After Width: | Height: | Size: 2.7 KiB |
BIN
modules/communication/skins/default/images/common/lineH3.gif
Normal file
|
After Width: | Height: | Size: 45 B |
|
After Width: | Height: | Size: 44 B |
BIN
modules/communication/skins/default/images/openid_input_bg.gif
Normal file
|
After Width: | Height: | Size: 237 B |
101
modules/communication/skins/default/js/communication.js
Normal file
|
|
@ -0,0 +1,101 @@
|
|||
/* 쪽지 발송 */
|
||||
function completeSendMessage(ret_obj) {
|
||||
alert(ret_obj['message']);
|
||||
window.close();
|
||||
}
|
||||
|
||||
function doSendMessage(member_srl, message_srl) {
|
||||
if(typeof(message_srl)=='undefined') message_srl = 0;
|
||||
var url = current_url.setQuery('module','communication').setQuery('act','dispCommunicationSendMessage').setQuery('receiver_srl',member_srl).setQuery('message_srl',message_srl);
|
||||
popopen(url, 'sendMessage');
|
||||
}
|
||||
|
||||
/* 쪽지 모두 선택 */
|
||||
function doCheckAll(obj, fo_id) {
|
||||
var fo_obj = xGetElementById(fo_id);
|
||||
for(var i=0; i<fo_obj.length; i++) {
|
||||
if(fo_obj[i].type == "checkbox" && fo_obj[i] != obj) fo_obj[i].checked = obj.checked;
|
||||
}
|
||||
}
|
||||
|
||||
/* 개별 쪽지 삭제 */
|
||||
function doDeleteMessage(message_srl) {
|
||||
if(!message_srl) return;
|
||||
|
||||
var params = new Array();
|
||||
params['message_srl'] = message_srl;
|
||||
exec_xml('communication', 'procCommunicationDeleteMessage', params, completeDeleteMessage);
|
||||
}
|
||||
|
||||
function completeDeleteMessage(ret_obj) {
|
||||
alert(ret_obj['message']);
|
||||
location.href = current_url.setQuery('message_srl','');
|
||||
}
|
||||
|
||||
/* 개별 쪽지 보관 */
|
||||
function doStoreMessage(message_srl) {
|
||||
if(!message_srl) return;
|
||||
|
||||
var params = new Array();
|
||||
params['message_srl'] = message_srl;
|
||||
exec_xml('communication', 'procCommunicationStoreMessage', params, completeStoreMessage);
|
||||
}
|
||||
|
||||
function completeStoreMessage(ret_obj) {
|
||||
alert(ret_obj['message']);
|
||||
location.href = current_url.setQuery('message_srl','');
|
||||
}
|
||||
|
||||
/* 친구 추가 후 */
|
||||
function completeAddFriend(ret_obj) {
|
||||
alert(ret_obj['message']);
|
||||
var member_srl = ret_obj['member_srl'];
|
||||
if(opener && opener.loaded_member_menu_list) {
|
||||
opener.loaded_member_menu_list[ret_obj['member_srl']] = '';
|
||||
}
|
||||
window.close();
|
||||
}
|
||||
|
||||
/* 친구 그룹 추가 후 */
|
||||
function completeAddFriendGroup(ret_obj) {
|
||||
alert(ret_obj['message']);
|
||||
if(opener) opener.location.href = opener.location.href;
|
||||
window.close();
|
||||
}
|
||||
|
||||
/* 친구 그룹 삭제 */
|
||||
function doDeleteFriendGroup() {
|
||||
var obj = xGetElementById('friend_group_list');
|
||||
if(obj.options.length<1) return;
|
||||
var friend_group_srl = obj.options[obj.selectedIndex].value;
|
||||
var fo_obj = xGetElementById('for_delete_group');
|
||||
fo_obj.friend_group_srl.value = friend_group_srl;
|
||||
procFilter(fo_obj, delete_friend_group);
|
||||
}
|
||||
|
||||
function completeDeleteFriendGroup(ret_obj) {
|
||||
alert(ret_obj['message']);
|
||||
location.href = current_url.setQuery('friend_group_srl','');
|
||||
}
|
||||
|
||||
/* 친구 그룹의 이름 변경 */
|
||||
function doRenameFriendGroup() {
|
||||
var obj = xGetElementById('friend_group_list');
|
||||
if(obj.options.length<1) return;
|
||||
var friend_group_srl = obj.options[obj.selectedIndex].value;
|
||||
popopen("./?module=communication&act=dispCommunicationAddFriendGroup&friend_group_srl="+friend_group_srl);
|
||||
}
|
||||
|
||||
/* 친구 그룹 이동 */
|
||||
function doMoveFriend() {
|
||||
var fo_obj = xGetElementById('fo_friend_list');
|
||||
procFilter(fo_obj, move_friend);
|
||||
}
|
||||
|
||||
/* 친구 그룹 선택 */
|
||||
function doJumpFriendGroup() {
|
||||
var sel_obj = xGetElementById('jumpMenu');
|
||||
var sel_idx = sel_obj.selectedIndex;
|
||||
var sel_val = sel_obj.options[sel_idx].value;
|
||||
location.href = current_url.setQuery('friend_group_srl', sel_val);
|
||||
}
|
||||
136
modules/communication/skins/default/messages.html
Normal file
|
|
@ -0,0 +1,136 @@
|
|||
<!--@foreach($lang->message_box as $key => $val)-->
|
||||
<!--@if($key == $message_type)-->
|
||||
{@ $member_title = $val}
|
||||
<!--@end-->
|
||||
<!--@end-->
|
||||
|
||||
<!--#include("./common_header.html")-->
|
||||
|
||||
<!--%import("filter/delete_checked_message.xml")-->
|
||||
<!--%import("filter/update_allow_message.xml")-->
|
||||
|
||||
<!--@if($message)-->
|
||||
<div class="readMessage">
|
||||
<div class="messageHeader">
|
||||
<h4>{$message->title}</h4>
|
||||
<address>
|
||||
<em>
|
||||
<!--@if($message->member_srl == $logged_info->member_srl)-->
|
||||
|
||||
<!--@else-->
|
||||
{$message->nick_name} ({$message->user_id})
|
||||
<!--@end-->
|
||||
<span class="date">{zdate($message->regdate, "Y.m.d H:i:s")}</span>
|
||||
</em>
|
||||
</address>
|
||||
</div>
|
||||
|
||||
<div class="messageBody xe_content">{$message->content}</div>
|
||||
|
||||
<div class="deleteOrKeep tCenter">
|
||||
<!--@if($message->message_type != "S" && $message->member_srl != $logged_info->member_srl)-->
|
||||
<a href="#" onclick="doSendMessage('{$message->sender_srl}','{$message->message_srl}');return false;" class="button"><span>{$lang->cmd_reply}</span></a>
|
||||
<!--@end-->
|
||||
<!--@if($message->message_type == "R")-->
|
||||
<a href="#" onclick="doStoreMessage('{$message->message_srl}');return false;" class="button"><span>{$lang->cmd_store}</span></a>
|
||||
<!--@end-->
|
||||
<a href="#" onclick="doDeleteMessage('{$message->message_srl}');return false;" class="button"><span>{$lang->cmd_delete}</span></a>
|
||||
</div>
|
||||
</div>
|
||||
<!--@end-->
|
||||
|
||||
<div class="boardInformation">
|
||||
<div class="messageSetup">
|
||||
<form action="./" method="POST" onsubmit="return procFilter(this, update_allow_message)">
|
||||
<select name="allow_message">
|
||||
<!--@foreach($lang->allow_message_type as $key => $val)-->
|
||||
<option value="{$key}" <!--@if($logged_info->allow_message == $key)-->selected="selected"<!--@end-->>{$val}</option>
|
||||
<!--@end-->
|
||||
</select>
|
||||
<span class="button"><input type="submit" value="{$lang->cmd_save}"></span>
|
||||
</form>
|
||||
</div>
|
||||
<ul class="instantMessage">
|
||||
<!--@foreach($lang->message_box as $key => $val)-->
|
||||
<!--@if($key == $message_type)-->
|
||||
<li class="on"><a href="{getUrl('message_type',$key,'message_srl','','page','')}">{$val} : <strong>{$total_count}</strong></a></li>
|
||||
<!--@else-->
|
||||
<li><a href="{getUrl('message_type',$key,'message_srl','','page','')}">{$val}</a></li>
|
||||
<!--@end-->
|
||||
<!--@end-->
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<form action="./" method="get" onsubmit="return procFilter(this, delete_checked_message)" id="fo_message_list">
|
||||
<input type="hidden" name="message_type" value="{$message_type}" />
|
||||
|
||||
<table cellspacing="0" class="list">
|
||||
<col width="40" />
|
||||
<col width="160" />
|
||||
<col />
|
||||
<col width="80" />
|
||||
<col width="120" />
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col" class="check first-child"><input name="check_all" type="checkbox" onclick="doCheckAll(this, 'fo_message_list');" /></th>
|
||||
<th scope="col" class="user">
|
||||
<!--@if($message_type == "S")-->
|
||||
{$lang->receiver}
|
||||
<!--@else-->
|
||||
{$lang->sender}
|
||||
<!--@end-->
|
||||
</th>
|
||||
<th scope="col" class="title">{$lang->title}</th>
|
||||
<th scope="col" class="registDate">{$lang->regdate}</th>
|
||||
<th scope="col" class="checkDate last-child">{$lang->readed_date}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
<!--@foreach($message_list as $no => $val)-->
|
||||
<tr class="bg{($no+1)%2+1}">
|
||||
<td class="check"><input name="message_srl_list" type="checkbox" value="{$val->message_srl}" /></td>
|
||||
<td class="user">
|
||||
<!--@if($val->member_srl == $logged_info->member_srl)-->
|
||||
|
||||
<!--@else-->
|
||||
<div class="member_{$val->member_srl}">{$val->nick_name} ({$val->user_id})</div></td>
|
||||
<!--@end-->
|
||||
</td>
|
||||
<td class="title">
|
||||
<!--@if($val->readed=='Y')-->
|
||||
<a href="{getUrl('message_srl',$val->message_srl)}">{$val->title}</a>
|
||||
<!--@else-->
|
||||
<span style="font-weight:bold"><a href="{getUrl('message_srl',$val->message_srl)}">{$val->title}</a></span>
|
||||
<!--@end-->
|
||||
</td>
|
||||
<td class="registDate">{zdate($val->regdate,"Y-m-d")}</td>
|
||||
<td class="checkDate"><!--@if($val->readed=="Y")-->{zdate($val->readed_date,"Y-m-d H:i:s")}<!--@else--> <!--@end--></td>
|
||||
</tr>
|
||||
<!--@end-->
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<!-- 페이지 네비게이션 -->
|
||||
<div class="pageNavigation">
|
||||
<a href="{getUrl('page','','document_srl','')}" class="goToFirst"><img src="./images/{$colorset}/bottomGotoFirst.gif" alt="{$lang->first_page}" width="7" height="5" /></a>
|
||||
<!--@while($page_no = $page_navigation->getNextPage())-->
|
||||
<!--@if($page == $page_no)-->
|
||||
<span class="current">{$page_no}</span>
|
||||
<!--@else-->
|
||||
<a href="{getUrl('page',$page_no,'document_srl','')}">{$page_no}</a>
|
||||
<!--@end-->
|
||||
<!--@end-->
|
||||
<a href="{getUrl('page',$page_navigation->last_page,'document_srl','')}" class="goToLast"><img src="./images/{$colorset}/bottomGotoLast.gif" alt="{$lang->last_page}" width="7" height="5" /></a>
|
||||
</div>
|
||||
|
||||
<div class="fr">
|
||||
<a href="{getUrl('act','','message_type','','target_srl','')}" class="button"><span>{$lang->cmd_back}</span></a>
|
||||
</div>
|
||||
<div class="fl">
|
||||
<span class="button"><input type="submit" value="{$lang->cmd_delete}" /></span>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
||||
<!--#include("./common_footer.html")-->
|
||||
46
modules/communication/skins/default/new_message.html
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
<!--#include("./common_header.html")-->
|
||||
|
||||
<!--%import("js/member.js")-->
|
||||
<!--@if($message)-->
|
||||
<div class="memberSmallBox w600pop">
|
||||
|
||||
<div class="header">
|
||||
<h3>{$lang->message_received}</h3>
|
||||
</div>
|
||||
|
||||
<div class="complex">
|
||||
<table cellspacing="0" class="leftHeaderType">
|
||||
<col width="100" />
|
||||
<col />
|
||||
<!--@if($message->member_srl != $logged_info->member_srl)-->
|
||||
<tr>
|
||||
<th scope="row">{$lang->sender}</th>
|
||||
<td><div class="member_{$message->member_srl}">{$message->nick_name} ({$message->user_id})</div></td>
|
||||
</tr>
|
||||
<!--@end-->
|
||||
<tr>
|
||||
<th scope="row">{$lang->title}</th>
|
||||
<td>{htmlspecialchars($message->title)}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">{$message->content}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="tCenter help">
|
||||
<!--@if($message->member_srl != $logged_info->member_srl)-->
|
||||
<a href="#" onclick="doSendMessage('{$message->sender_srl}','{$message->message_srl}');return false;" class="button"><span>{$lang->cmd_reply_message}</span></a>
|
||||
<!--@end-->
|
||||
<a href="#" onclick="doDeleteMessage('{$message->message_srl}');return false;" class="button"><span>{$lang->cmd_delete}</span></a>
|
||||
<a href="#" onclick="doStoreMessage('{$message->message_srl}');return false;" class="button"><span>{$lang->cmd_store}</span></a>
|
||||
<a href="#" onclick="location.href=location.href;return false;" class="button"><span>{$lang->cmd_next}</span></a>
|
||||
</div>
|
||||
</div>
|
||||
<!--@else-->
|
||||
<script type="text/javascript">
|
||||
window.close();
|
||||
</script>
|
||||
<!--@end-->
|
||||
|
||||
<!--#include("./common_footer.html")-->
|
||||
BIN
modules/communication/skins/default/screenshot/black.gif
Executable file
|
After Width: | Height: | Size: 6 KiB |
BIN
modules/communication/skins/default/screenshot/cyan.gif
Normal file
|
After Width: | Height: | Size: 5.3 KiB |
BIN
modules/communication/skins/default/screenshot/green.gif
Normal file
|
After Width: | Height: | Size: 5.2 KiB |
BIN
modules/communication/skins/default/screenshot/purple.gif
Normal file
|
After Width: | Height: | Size: 7 KiB |
BIN
modules/communication/skins/default/screenshot/red.gif
Normal file
|
After Width: | Height: | Size: 6.1 KiB |
BIN
modules/communication/skins/default/screenshot/white.gif
Normal file
|
After Width: | Height: | Size: 6.1 KiB |
51
modules/communication/skins/default/send_message.html
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
<!--#include("./common_header.html")-->
|
||||
<!--%import("filter/send_message.xml")-->
|
||||
<!--%import("js/member.js")-->
|
||||
|
||||
<div class="memberSmallBox w600pop">
|
||||
|
||||
<div class="header">
|
||||
<h3>{$lang->cmd_send_message}</h3>
|
||||
</div>
|
||||
|
||||
<form action="./" method="get" onsubmit="return procFilter(this, send_message)">
|
||||
<input type="hidden" name="content" value="{htmlspecialchars($source_message->content)}" />
|
||||
<input type="hidden" name="receiver_srl" value="{$receiver_info->member_srl}" />
|
||||
|
||||
<div class="complex">
|
||||
<table cellspacing="0" class="leftHeaderType">
|
||||
<col width="110" />
|
||||
<col />
|
||||
<tr>
|
||||
<th scope="row"><label for="textfield1">{$lang->receiver}</label></th>
|
||||
<td><div class="member_{$receiver_info->member_srl}">{$receiver_info->nick_name} ({$receiver_info->user_id})</div></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{$lang->title}</th>
|
||||
<td><input type="text" name="title" id="message_title" class="inputTypeText w300" value="{$source_message->title}"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{$lang->cmd_option}</th>
|
||||
<td><input type="checkbox" value="Y" name="send_mail" /> {$lang->cmd_send_mail}</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<div class="editor">
|
||||
{$editor}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="tCenter help">
|
||||
<span class="button"><input type="submit" value="{$lang->cmd_send_message}" class="editor_button" accesskey="s" /></span>
|
||||
<a href="#" onclick="window.close(); return false;" class="button"><span>{$lang->cmd_close}</span></a>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
xAddEventListener(window, 'load', function() { xGetElementById("message_title").focus(); });
|
||||
</script>
|
||||
|
||||
<!--#include("./common_footer.html")-->
|
||||
91
modules/communication/skins/default/skin.xml
Normal file
|
|
@ -0,0 +1,91 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<skin>
|
||||
<title xml:lang="ko">기본 스킨</title>
|
||||
<title xml:lang="zh-CN">기본 스킨</title>
|
||||
<title xml:lang="jp">기본 스킨</title>
|
||||
<title xml:lang="en">Default Skin</title>
|
||||
<title xml:lang="es">Por defecto piel</title>
|
||||
<title xml:lang="ru">기본 스킨</title>
|
||||
<maker email_address="zero@zeroboard.com" link="http://www.zeroboard.com" date="2008. 5. 28">
|
||||
<name xml:lang="ko">(주)NHN</name>
|
||||
<name xml:lang="jp">(株)NHN</name>
|
||||
<name xml:lang="zh-CN">(株)NHN</name>
|
||||
<name xml:lang="en">NHN Corp</name>
|
||||
<name xml:lang="es">NHN Corp</name>
|
||||
<name xml:lang="ru">NHN Корп</name>
|
||||
<description xml:lang="ko">
|
||||
디자인 : 서기정 (http://blog.naver.com/addcozy)
|
||||
HTML/CSS : 정찬명 (http://naradesign.net)
|
||||
</description>
|
||||
<description xml:lang="zh-CN">
|
||||
设计 : Ki-Jeong Seo (http://blog.naver.com/addcozy)
|
||||
HTML/CSS : Chan-Myung Jeong (http://naradesign.net)
|
||||
</description>
|
||||
<description xml:lang="jp">
|
||||
デザイン:ソギジョン (http://blog.naver.com/addcozy)
|
||||
HTML/CSS:ジョンチャンミョン (http://naradesign.net)
|
||||
</description>
|
||||
<description xml:lang="en">
|
||||
Design : Ki-Jeong Seo (http://blog.naver.com/addcozy)
|
||||
HTML/CSS : Chan-Myung Jeong (http://naradesign.net)
|
||||
</description>
|
||||
<description xml:lang="es">
|
||||
Diseño: Ki-Jeong Seo (http://blog.naver.com/addcozy)
|
||||
HTML / CSS: Jeong Chan-Myung (http://naradesign.net)
|
||||
</description>
|
||||
<description xml:lang="ru">
|
||||
Дизайн: Ги Чен Се (http://blog.naver.com/addcozy)
|
||||
HTML / CSS: Чен-Чен Мен (http://naradesign.net)
|
||||
</description>
|
||||
</maker>
|
||||
<colorset>
|
||||
<color name="white" src="screenshot/white.gif">
|
||||
<title xml:lang="ko">기본</title>
|
||||
<title xml:lang="zh-CN">默认</title>
|
||||
<title xml:lang="jp">デフォルト</title>
|
||||
<title xml:lang="en">default</title>
|
||||
<title xml:lang="es">Por defecto</title>
|
||||
<title xml:lang="ru">умолчанию</title>
|
||||
</color>
|
||||
<color name="cyan" src="screenshot/cyan.gif">
|
||||
<title xml:lang="ko">청록색</title>
|
||||
<title xml:lang="jp">青緑</title>
|
||||
<title xml:lang="zh-CN">青绿色</title>
|
||||
<title xml:lang="en">cyan</title>
|
||||
<title xml:lang="es">Cian</title>
|
||||
<title xml:lang="ru">бирюзовый</title>
|
||||
</color>
|
||||
<color name="green" src="screenshot/green.gif">
|
||||
<title xml:lang="ko">초록색</title>
|
||||
<title xml:lang="jp">緑</title>
|
||||
<title xml:lang="zh-CN">绿色</title>
|
||||
<title xml:lang="en">green</title>
|
||||
<title xml:lang="es">Verde</title>
|
||||
<title xml:lang="ru">зеленый</title>
|
||||
</color>
|
||||
<color name="red" src="screenshot/red.gif">
|
||||
<title xml:lang="ko">빨간색</title>
|
||||
<title xml:lang="jp">赤</title>
|
||||
<title xml:lang="zh-CN">红色</title>
|
||||
<title xml:lang="en">red</title>
|
||||
<title xml:lang="es">Roja</title>
|
||||
<title xml:lang="ru">красный</title>
|
||||
</color>
|
||||
<color name="purple" src="screenshot/purple.gif">
|
||||
<title xml:lang="ko">보라색</title>
|
||||
<title xml:lang="jp">紫</title>
|
||||
<title xml:lang="zh-CN">紫色</title>
|
||||
<title xml:lang="en">purple</title>
|
||||
<title xml:lang="es">Púrpura</title>
|
||||
<title xml:lang="ru">Лиловый</title>
|
||||
</color>
|
||||
<color name="black" src="screenshot/black.gif">
|
||||
<title xml:lang="ko">검은색</title>
|
||||
<title xml:lang="jp">黒</title>
|
||||
<title xml:lang="en">Black</title>
|
||||
<title xml:lang="ru">Черного</title>
|
||||
<title xml:lang="es">Negro</title>
|
||||
<title xml:lang="zh-CN">黑色</title>
|
||||
</color>
|
||||
</colorset>
|
||||
</skin>
|
||||
16
modules/communication/tpl/colorset_list.html
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
<!--@foreach($skin_info->colorset as $key => $val)-->
|
||||
<!--@if($val->screenshot)-->
|
||||
{@ $_img_info = getImageSize($val->screenshot); $_height = $_img_info[1]+40; $_width = $_img_info[0]+20; $_talign = "center"; }
|
||||
<!--@else-->
|
||||
{@ $_width = 200; $_height = 20; $_talign = "left"; }
|
||||
<!--@end-->
|
||||
<div style="float:left;text-align:{$_talign};margin-bottom:1em;width:{$_width}px;height:{$_height}px;margin-right:10px;">
|
||||
<input type="radio" name="colorset" value="{$val->name}" id="colorset_{$key}" <!--@if($communication_config->colorset==$val->name)-->checked="checked"<!--@end-->/>
|
||||
<label for="colorset_{$key}">{$val->title}</label>
|
||||
<!--@if($val->screenshot)-->
|
||||
<br />
|
||||
<img src="{$val->screenshot}" alt="{$val->title}" style="border:1px solid #888888;padding:2px;margin:2px;"/>
|
||||
<!--@end-->
|
||||
</div>
|
||||
<!--@if($key%2==1)--><div class="clear"></div><!--@end-->
|
||||
<!--@end-->
|
||||
7
modules/communication/tpl/filter/insert_config.xml
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
<filter name="insert_config" module="communication" act="procCommunicationAdminInsertConfig" confirm_msg_code="confirm_submit">
|
||||
<form />
|
||||
<response>
|
||||
<tag name="error" />
|
||||
<tag name="message" />
|
||||
</response>
|
||||
</filter>
|
||||
BIN
modules/communication/tpl/images/icon_add_friend.gif
Normal file
|
After Width: | Height: | Size: 174 B |
BIN
modules/communication/tpl/images/icon_friend_box.gif
Normal file
|
After Width: | Height: | Size: 168 B |
BIN
modules/communication/tpl/images/icon_message_box.gif
Normal file
|
After Width: | Height: | Size: 234 B |