member모듈에서 쪽지/친구등의 커뮤니케이션 기능을 communication 모듈로 분리. member_extra_info 애드온에서 쪽지/친구와 관련된 기능을 member_communication 애드온으로 분리

git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4226 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
zero 2008-05-30 09:33:04 +00:00
parent f7968229e6
commit 08cee6952c
135 changed files with 1980 additions and 1293 deletions

View 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")-->

View 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")-->

View file

@ -0,0 +1 @@
</div>

View 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-->

View 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; }

View 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; }

View 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;}

View 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;}

View 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;}

View 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;}

View 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;}

View file

@ -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>

View file

@ -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>

View file

@ -0,0 +1 @@
<filter name="delete_checked_friend" module="communication" act="procCommunicationDeleteFriend" confirm_msg_code="confirm_delete" />

View file

@ -0,0 +1 @@
<filter name="delete_checked_message" module="communication" act="procCommunicationDeleteMessages" confirm_msg_code="confirm_delete" />

View file

@ -0,0 +1 @@
<filter name="delete_friend_group" module="communication" act="procCommunicationDeleteFriendGroup" confirm_msg_code="confirm_delete" />

View file

@ -0,0 +1 @@
<filter name="move_friend" module="communication" act="procCommunicationMoveFriend" confirm_msg_code="confirm_move" />

View 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>

View file

@ -0,0 +1,5 @@
<filter name="update_allow_message" module="communication" act="procCommunicationUpdateAllowMessage">
<form />
<parameter />
<response />
</filter>

View 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:"&nbsp;"}</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")-->

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 220 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 316 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 419 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 306 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 145 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 254 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 535 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 237 B

View 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);
}

View 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)-->
&nbsp;
<!--@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)-->
&nbsp;
<!--@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-->&nbsp;<!--@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")-->

View 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")-->

Binary file not shown.

After

Width:  |  Height:  |  Size: 6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

View 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")-->

View 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>