mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-01-05 09:41:40 +09:00
커뮤니케이션 모듈 네모의 꿈 스킨 (#815)
* Communication 모듈 네모의 꿈 스킨 작업을 시작합니다. * default skin 코드를 기반으로 했습니다. * 추후 javascript 에 과도하게 의존하는 액션을 수정할 예정입니다. * 중간 완성본입니다.
This commit is contained in:
parent
35eae12cca
commit
b991869463
24 changed files with 885 additions and 7 deletions
|
|
@ -91,9 +91,9 @@
|
|||
<li><a href="{getUrl('act', 'dispMemberLoginForm')}">{lang('member.cmd_login')}...</a></li>
|
||||
<li><a href="{getUrl('act', 'dispMemberSignUpForm')}" cond="$member_config->enable_join === 'Y'">{lang('member.cmd_signup')}...</a></li>
|
||||
</ul>
|
||||
<a href="{getUrl('act', 'dispMemberInfo')}" cond="$is_logged">{sprintf(lang('simple_hello'), $logged_info->nick_name)}</a>
|
||||
<a href="{getUrl('act', 'dispMemberInfo', 'member_srl', '')}" cond="$is_logged">{sprintf(lang('simple_hello'), $logged_info->nick_name)}</a>
|
||||
<ul class="layout_dropdown-content" cond="$is_logged">
|
||||
<li><a href="{getUrl('act', 'dispMemberInfo')}">{lang('member.cmd_view_member_info')}</a></li>
|
||||
<li><a href="{getUrl('act', 'dispMemberInfo', 'member_srl', '')}">{lang('member.cmd_view_member_info')}</a></li>
|
||||
<li cond="$logged_info->is_admin == 'Y'">
|
||||
<a href="{getUrl('', 'module','admin')}">{lang('common.cmd_management')}</a>
|
||||
</li>
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ $lang->cmd_add_friend = 'Add Friend';
|
|||
$lang->cmd_message_box = 'Message Box';
|
||||
$lang->cmd_view_message_box = 'Message Box';
|
||||
$lang->cmd_store = 'Save';
|
||||
$lang->cmd_view_selected_frend_group = 'View only selected group';
|
||||
$lang->cmd_add_friend_group = 'Add Friend Group';
|
||||
$lang->cmd_rename_friend_group = 'Rename Friend Group';
|
||||
$lang->cmd_delete_friend_group = 'Delete Friend Group';
|
||||
|
|
|
|||
|
|
@ -20,7 +20,8 @@ $lang->cmd_add_friend = '친구 등록';
|
|||
$lang->cmd_message_box = '쪽지함';
|
||||
$lang->cmd_view_message_box = '쪽지함 보기';
|
||||
$lang->cmd_store = '보관함 이동';
|
||||
$lang->cmd_add_friend_group = '친구 그룹 추가';
|
||||
$lang->cmd_view_selected_frend_group = '선택된 그룹만 보기';
|
||||
$lang->cmd_add_friend_group = '친구 그룹 생성';
|
||||
$lang->cmd_rename_friend_group = '친구 그룹 이름 변경';
|
||||
$lang->cmd_delete_friend_group = '친구 그룹 삭제';
|
||||
$lang->msg_already_friend = '이미 친구로 등록되어 있습니다.';
|
||||
|
|
|
|||
28
modules/communication/skins/simple_world/add_friend.html
Normal file
28
modules/communication/skins/simple_world/add_friend.html
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
{@ $communication_popup = TRUE;}
|
||||
<load target="filter/add_friend.xml" />
|
||||
<include target="./common_header.html" />
|
||||
<section class="sw-body">
|
||||
<h1>{$lang->cmd_add_friend}</h1>
|
||||
<div cond="$XE_VALIDATOR_MESSAGE && $XE_VALIDATOR_ID == 'modules/communication/skins/simple_world/add_friend/1'" class="rx_member-notice {$XE_VALIDATOR_MESSAGE_TYPE}">
|
||||
<p>{$XE_VALIDATOR_MESSAGE}</p>
|
||||
</div>
|
||||
<form ruleset="addFriend" action="./" method="post">
|
||||
<input type="hidden" name="module" value="communication" />
|
||||
<input type="hidden" name="act" value="procCommunicationAddFriend" />
|
||||
<input type="hidden" name="target_srl" value="{$target_info->member_srl}" />
|
||||
<input type="hidden" name="xe_validator_id" value="modules/communication/skins/simple_world/add_friend/1" />
|
||||
<div class="control-group">
|
||||
<label for="n_name">{$lang->nick_name}</label>
|
||||
<input type="text" disabled="disabled" name="nick_name" id="n_name" value="{$target_info->nick_name}" title="{lang('common.user_id')}" />
|
||||
<label for="friend_group_srl">{$lang->friend_group}<a class="pos-right" href="{getUrl('act','dispCommunicationAddFriendGroup')}" onclick="popopen(this.href);return false;">{$lang->cmd_add_friend_group}</a></label>
|
||||
<select name="friend_group_srl" id="friend_group_srl">
|
||||
<option value="">{$lang->default_friend_group}</option>
|
||||
<option loop="$friend_group_list => $key,$val" value="{$val->friend_group_srl}">{$val->title}</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<input type="submit" value="{lang('communication.cmd_add_friend')}" />
|
||||
</div>
|
||||
</form>
|
||||
</section>
|
||||
<include target="./common_footer.html" />
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
{@ $communication_popup = TRUE;}
|
||||
<include target="./common_header.html" />
|
||||
<load target="js/communication.js" />
|
||||
<section class="sw-body">
|
||||
<h1>
|
||||
<!--@if($friend_group->friend_group_srl)-->
|
||||
{$lang->cmd_rename_friend_group}
|
||||
<!--@else-->
|
||||
{$lang->cmd_add_friend_group}
|
||||
<!--@end-->
|
||||
</h1>
|
||||
<div cond="$XE_VALIDATOR_MESSAGE && $XE_VALIDATOR_ID == 'modules/communication/skins/simple_world/add_friend_group/1'" class="rx_member-notice {$XE_VALIDATOR_MESSAGE_TYPE}">
|
||||
<p>{$XE_VALIDATOR_MESSAGE}</p>
|
||||
</div>
|
||||
<form ruleset="addFriendGroup" action="./" method="post" class="form-horizontal">
|
||||
<input type="hidden" name="module" value="communication" />
|
||||
<input type="hidden" name="act" value="procCommunicationAddFriendGroup" />
|
||||
<input type="hidden" name="friend_group_srl" value="{$friend_group->friend_group_srl}" />
|
||||
<input type="hidden" name="xe_validator_id" value="modules/communication/skins/simple_world/add_friend_group/1" />
|
||||
<div class="control-group">
|
||||
<label for="title">{$lang->msg_insert_group_name}</label>
|
||||
<input name="title" id="title" type="text" value="{htmlspecialchars($friend_group->title, ENT_COMPAT | ENT_HTML401, 'UTF-8', false)}"/>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<input cond="$friend_group->friend_group_srl" type="submit" value="{$lang->cmd_modify}" />
|
||||
<input cond="!$friend_group->friend_group_srl" type="submit" value="{$lang->cmd_insert}" />
|
||||
</div>
|
||||
</form>
|
||||
</section>
|
||||
|
|
@ -0,0 +1 @@
|
|||
</section>
|
||||
81
modules/communication/skins/simple_world/common_header.html
Normal file
81
modules/communication/skins/simple_world/common_header.html
Normal file
|
|
@ -0,0 +1,81 @@
|
|||
<!--// responsible layout -->
|
||||
<!--@if($communication_popup === TRUE)-->
|
||||
{@Context::addMetaTag("viewport", "width=device-width, user-scalable=yes")}
|
||||
<!--@endif-->
|
||||
|
||||
<load target="js/communication.js" />
|
||||
<!--// Check layout. If it is Simple World, select layout primary colors as a primary color of this skin -->
|
||||
<block cond="$layout_info->extra_var->primary_color->type === 'select' || $layout_info->extra_var->customized_primary_color->type === 'colorpicker'">
|
||||
{@
|
||||
if(!$layout_info->primary_color)
|
||||
$layout_info->primary_color = 'red';
|
||||
if(!$layout_info->primary_color && $layout_info->customized_primary_color)
|
||||
$layout_info->primary_color = 'customized';
|
||||
if(!$layout_info->customized_primary_color)
|
||||
$layout_info->customized_primary_color = '#f44336';
|
||||
}
|
||||
</block>
|
||||
<block cond="$layout_info->extra_var->primary_color->type !== 'select' && $layout_info->extra_var->customized_primary_color->type !== 'colorpicker'">
|
||||
{@$layout_info->primary_color = 'red';}
|
||||
</block>
|
||||
{@
|
||||
$material_colors = array(
|
||||
'red' => '#f44336',
|
||||
'crimson' => '#aa0000',
|
||||
'pink' => '#e91e63',
|
||||
'purple' => '#9c27b0',
|
||||
'deep-purple' => '#673ab7',
|
||||
'indigo' => '#3f51b5',
|
||||
'deep-blue' => '#00397f',
|
||||
'blue' => '#2196f3',
|
||||
'light-blue' => '#03a9f4',
|
||||
'cyan' => '#00bcd4',
|
||||
'teal' => '#009688',
|
||||
'green' => '#4caf50',
|
||||
'light-green' => '#8bc34a',
|
||||
'lime' => '#cddc39',
|
||||
'yellow' => '#ffeb3b',
|
||||
'amber' => '#ffc107',
|
||||
'orange' => '#ff9800',
|
||||
'deep-orange' => '#ff5722',
|
||||
'brown' => '#795548',
|
||||
'grey' => '#9e9e9e',
|
||||
'blue-grey' => '#607d8b',
|
||||
'black' => '#000000',
|
||||
'white' => '#ffffff',
|
||||
'customized' => $layout_info->customized_primary_color,
|
||||
);
|
||||
}
|
||||
<!--// Load styles -->
|
||||
{@$colorset = $material_colors[$member_config->colorset];}
|
||||
{@$skin_color = $material_colors[$layout_info->primary_color];}
|
||||
<block cond="$colorset">
|
||||
<!--@if(preg_match("/#([a-f0-9]{3}){1,2}/i", trim($colorset)) && in_array(strlen(trim($colorset)), array(4, 7)))-->
|
||||
{@$skin_color = trim($colorset)}
|
||||
<!--@if(strlen(trim($colorset)) === 4)-->
|
||||
{@$skin_color = trim($colorset)[1].trim($colorset)[1].trim($colorset)[2].trim($colorset)[2].trim($colorset)[3].trim($colorset)[3]}
|
||||
<!--@endif-->
|
||||
<!--@else-->
|
||||
{@$skin_color = '#f44336'}
|
||||
<!--@endif-->
|
||||
</block>
|
||||
<block cond="!$skin_color">
|
||||
<!--@if(preg_match("/#([a-f0-9]{3}){1,2}/i", $layout_info->primary_color) && in_array(strlen(trim($colorset)), array(4, 7)))-->
|
||||
{@$skin_color = $layout_info->primary_color}
|
||||
<!--@if(strlen($layout_info->primary_color) === 4)-->
|
||||
{@$skin_color = $layout_info->primary_color[1].$layout_info->primary_color[1].$layout_info->primary_color[2].$layout_info->primary_color[2].$layout_info->primary_color[3].$layout_info->primary_color[3]}
|
||||
<!--@endif-->
|
||||
<!--@else-->
|
||||
{@$skin_color = '#f44336'}
|
||||
<!--@endif-->
|
||||
</block>
|
||||
{@Context::set('simple_less_value', array('red' => hexdec(substr($skin_color, 1, 2)), 'green' => hexdec(substr($skin_color, 3, 2)), 'blue' => hexdec(substr($skin_color, 5, 2)) ))}
|
||||
<load target="css/css.less" vars="$simple_less_value" />
|
||||
<section class="rx_simple_communication">
|
||||
<div class="rx_simple_tab" cond="$communication_popup !== TRUE && $is_logged && $logged_info->menu_list && (!$member_srl || $member_srl == $logged_info->member_srl)">
|
||||
<ul class="rx_simple_tab">
|
||||
<li loop="$logged_info->menu_list=>$key,$val" class="active"|cond="$key==$act">
|
||||
<a href="{getUrl('', 'act',$key, 'mid', $mid, 'vid', $vid)}"><span>{lang($val)}</span></a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
381
modules/communication/skins/simple_world/css/css.less
Normal file
381
modules/communication/skins/simple_world/css/css.less
Normal file
|
|
@ -0,0 +1,381 @@
|
|||
@charset "UTF-8";
|
||||
/*
|
||||
@method .text-contrast()
|
||||
@author misol <misol.kr@gmail.com>
|
||||
@brief Select a text color according to WCAG 2.0 contrast guideline. The calcualtion of contrast follows the formula on the guideline.
|
||||
*/
|
||||
.text-contrast(@bg_color; @bright_color:#fff; @dark_color:#000; @multi:1; @i:0) when (@i >= 100) and ( ( (luma(@bg_color) + 0.05) / (luma(@dark_color) + 0.05) ) =< ( ( luma(@bright_color) + 0.05) / ( luma(@bg_color) + 0.05) )) {
|
||||
color: @bright_color;
|
||||
}
|
||||
.text-contrast(@bg_color; @bright_color:#fff; @dark_color:#000; @multi:1; @i:0) when (@i >= 100) and ( ( (luma(@bg_color) + 0.05) / (luma(@dark_color) + 0.05) ) > ( ( luma(@bright_color) + 0.05) / ( luma(@bg_color) + 0.05) )) {
|
||||
color: @dark_color;
|
||||
}
|
||||
.text-contrast(@bg_color; @bright_color:#fff; @dark_color:#000; @multi:1; @i:0) when (@i < 100) and ( ( (luma(@bg_color) + 0.05) / (luma(@dark_color) + 0.05) ) =< ( ( luma(@bright_color) + 0.05) / ( luma(@bg_color) + 0.05) )) and ( ( ( luma(@bright_color) + 0.05) / ( luma(@bg_color) + 0.05) ) > 4.5 * @multi ) {
|
||||
color: @bright_color;
|
||||
}
|
||||
.text-contrast(@bg_color; @bright_color:#fff; @dark_color:#000; @multi:1; @i:0) when (@i < 100) and ( ( (luma(@bg_color) + 0.05) / (luma(@dark_color) + 0.05) ) =< ( ( luma(@bright_color) + 0.05) / ( luma(@bg_color) + 0.05) ) ) and ( ( ( luma(@bright_color) + 0.05) / ( luma(@bg_color) + 0.05) ) =< 4.5 * @multi ) {
|
||||
.text-contrast(@bg_color; lighten(@bright_color, 5%); @dark_color; @multi; @i + 1);
|
||||
}
|
||||
.text-contrast(@bg_color; @bright_color:#fff; @dark_color:#000; @multi:1; @i:0) when (@i < 100) and ( ( (luma(@bg_color) + 0.05) / (luma(@dark_color) + 0.05) ) > ( ( luma(@bright_color) + 0.05) / ( luma(@bg_color) + 0.05) )) and ( ( (luma(@bg_color) + 0.05) / (luma(@dark_color) + 0.05) ) > 4.5 * @multi ) {
|
||||
color: @dark_color;
|
||||
}
|
||||
.text-contrast(@bg_color; @bright_color:#fff; @dark_color:#000; @multi:1; @i:0) when (@i < 100) and (( (luma(@bg_color) + 0.05) / (luma(@dark_color) + 0.05) ) > ( ( luma(@bright_color) + 0.05) / ( luma(@bg_color) + 0.05) )) and ( ( (luma(@bg_color) + 0.05) / (luma(@dark_color) + 0.05) ) =< 4.5 * @multi ) {
|
||||
.text-contrast(@bg_color; @bright_color; darken(@dark_color, 5%); @multi; @i + 1);
|
||||
}
|
||||
|
||||
/*
|
||||
@method .bg-contrast()
|
||||
@author misol <misol.kr@gmail.com>
|
||||
@brief Select a background color, which has less contrast background color than WCAG 2.0 contrast guideline. On the WCAG 2.0 guideline, bigger string can have less contrast as 3.0.
|
||||
*/
|
||||
.bg-contrast(@text_color; @bright_color:#fff; @dark_color:#000; @multi:1; @i:0) when (@i >= 100) and ( ( (luma(@text_color) + 0.05) / (luma(@dark_color) + 0.05) ) =< ( ( luma(@bright_color) + 0.05) / ( luma(@text_color) + 0.05) )) {
|
||||
background: @bright_color;
|
||||
}
|
||||
.bg-contrast(@text_color; @bright_color:#fff; @dark_color:#000; @multi:1; @i:0) when (@i >= 100) and ( ( (luma(@text_color) + 0.05) / (luma(@dark_color) + 0.05) ) > ( ( luma(@bright_color) + 0.05) / ( luma(@text_color) + 0.05) )) {
|
||||
background: @dark_color;
|
||||
}
|
||||
|
||||
.bg-contrast(@text_color; @bright_color:#fff; @dark_color:#000; @multi:1; @i:0) when (@i < 100) and ( ( (luma(@text_color) + 0.05) / (luma(@dark_color) + 0.05) ) =< ( ( luma(@bright_color) + 0.05) / ( luma(@text_color) + 0.05) )) and ( ( ( luma(@bright_color) + 0.05) / ( luma(@text_color) + 0.05) ) > 3 * @multi ) {
|
||||
background: @bright_color;
|
||||
}
|
||||
.bg-contrast(@text_color; @bright_color:#fff; @dark_color:#000; @multi:1; @i:0) when (@i < 100) and ( ( (luma(@text_color) + 0.05) / (luma(@dark_color) + 0.05) ) =< ( ( luma(@bright_color) + 0.05) / ( luma(@text_color) + 0.05) ) ) and ( ( ( luma(@bright_color) + 0.05) / ( luma(@text_color) + 0.05) ) =< 3 * @multi ) {
|
||||
.bg-contrast(@text_color; lighten(@bright_color,3%); @dark_color; @multi; @i + 1);
|
||||
}
|
||||
.bg-contrast(@text_color; @bright_color:#fff; @dark_color:#000; @multi:1; @i:0) when (@i < 100) and ( ( (luma(@text_color) + 0.05) / (luma(@dark_color) + 0.05) ) > ( ( luma(@bright_color) + 0.05) / ( luma(@text_color) + 0.05) )) and ( ( (luma(@text_color) + 0.05) / (luma(@dark_color) + 0.05) ) > 3 * @multi ) {
|
||||
background: @dark_color;
|
||||
}
|
||||
.bg-contrast(@text_color; @bright_color:#fff; @dark_color:#000; @multi:1; @i:0) when (@i < 100) and (( (luma(@text_color) + 0.05) / (luma(@dark_color) + 0.05) ) > ( ( luma(@bright_color) + 0.05) / ( luma(@text_color) + 0.05) )) and ( ( (luma(@text_color) + 0.05) / (luma(@dark_color) + 0.05) ) =< 3 * @multi ) {
|
||||
.bg-contrast(@text_color; @bright_color; darken(@dark_color, 3%); @multi; @i + 1);
|
||||
}
|
||||
|
||||
/* As LESS library in Rhymix substitude variables as an strings, convert colors as the color objects of LESS. */
|
||||
@color: rgb(@red, @green, @blue);
|
||||
|
||||
|
||||
/* Member skin container, default settings */
|
||||
section.rx_simple_communication {
|
||||
font-family: "맑은 고딕", "Apple SD Gothic Neo","나눔고딕",NanumGothic,'Nanum Gothic',Arial,Helvetica,sans-serif;
|
||||
font-size: 14px;
|
||||
text-align: justify;
|
||||
margin: 8px 0px;
|
||||
padding: 0 5px;
|
||||
color: #000;
|
||||
|
||||
/* As this file handle some wild-selectors to control display settings, hide inline script and style codes. */
|
||||
script, style
|
||||
{
|
||||
display:none!important;
|
||||
}
|
||||
a, button, input, button, select, textarea, span, div, p {
|
||||
font-size: 1em;
|
||||
}
|
||||
a
|
||||
{
|
||||
.text-contrast(#fff; darken(@color,5%); lighten(@color,5%));
|
||||
text-decoration: none;
|
||||
}
|
||||
/* Horizontal align */
|
||||
.pos-left
|
||||
{
|
||||
position:absolute;
|
||||
left:0;
|
||||
width: auto;
|
||||
}
|
||||
.pos-right
|
||||
{
|
||||
position:absolute;
|
||||
right:0;
|
||||
width: auto;
|
||||
}
|
||||
/* message; error, info, update */
|
||||
.rx_member-notice, .rx_member-notice.info
|
||||
{
|
||||
.bg-contrast(#000; lighten(@color, 5%); darken(@color, 5%); 5.0);
|
||||
color: #000;
|
||||
padding: 15px;
|
||||
margin:0;
|
||||
margin-top:0;
|
||||
text-align: justify;
|
||||
}
|
||||
.rx_member-notice.error
|
||||
{
|
||||
background: #fff3e0;
|
||||
.text-contrast(#fff3e0);
|
||||
}
|
||||
.rx_member-notice.update
|
||||
{
|
||||
background: #e8f5e9;
|
||||
.text-contrast(#e8f5e9);
|
||||
}
|
||||
.rx_member-notice>*
|
||||
{
|
||||
padding: 0;
|
||||
margin:0;
|
||||
}
|
||||
/* member forms */
|
||||
.signin
|
||||
{
|
||||
max-width:400px;
|
||||
margin:30px auto;
|
||||
box-sizing:border-box
|
||||
}
|
||||
.sw-body
|
||||
{
|
||||
box-sizing:border-box;
|
||||
background:#ffffff;
|
||||
margin: 0 0 20px;
|
||||
box-shadow: 0 1px 2px rgba(0,0,0,0.16), 0 1px 2px rgba(0,0,0,0.23);
|
||||
&>*
|
||||
{
|
||||
padding: 20px;
|
||||
margin:0;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
h1
|
||||
{
|
||||
margin:0;
|
||||
border-bottom: 1px solid #e0e0e0;
|
||||
color: #000;
|
||||
font-size: 1.5em;
|
||||
}
|
||||
}
|
||||
|
||||
.pagination {
|
||||
ul, ul li {
|
||||
display:inline-block;
|
||||
list-style: outside none none;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
border:0;
|
||||
}
|
||||
ul
|
||||
{
|
||||
display:block;
|
||||
text-align:center;
|
||||
}
|
||||
}
|
||||
.pagination ul li>a, .sw-footer>a
|
||||
{
|
||||
display: inline-block;
|
||||
background: #fff;
|
||||
font-size: 1em;
|
||||
box-shadow: 0 1px 2px rgba(0,0,0,0.16), 0 1px 2px rgba(0,0,0,0.23);
|
||||
margin-top: 1px;
|
||||
margin-bottom: 2px;
|
||||
color: #000;
|
||||
padding: 8px;
|
||||
min-width:25px;
|
||||
text-decoration: none;
|
||||
text-align: center;
|
||||
}
|
||||
.pagination ul li.active>a
|
||||
{
|
||||
.bg-contrast(#000; lighten(@color, 5%); darken(@color, 5%), 2.0);
|
||||
font-weight:bold;
|
||||
color:#000;
|
||||
}
|
||||
form div.control-group>*, .sw-body dl>*
|
||||
{
|
||||
display:block;
|
||||
position:relative;
|
||||
box-sizing: border-box;
|
||||
width:100%;
|
||||
min-height:25px;
|
||||
margin:0px;
|
||||
margin-top: 10px;
|
||||
}
|
||||
form
|
||||
{
|
||||
div.control-group>*:first-child
|
||||
{
|
||||
margin-top: 0;
|
||||
}
|
||||
div.control-group>input, div.control-group>select, div.control-group>a, div.control-group>button{
|
||||
border: 1px solid #bdbdbd;
|
||||
border-radius: 0;
|
||||
font-size:1em;
|
||||
line-height: 18px;
|
||||
margin-top: 0;
|
||||
padding:8px 8px 6px;
|
||||
-webkit-appearance: none;
|
||||
min-height: 32px;
|
||||
}
|
||||
}
|
||||
.sw-body
|
||||
{
|
||||
dl>* {
|
||||
list-style:none;
|
||||
border-bottom: 1px solid #e0e0e0;
|
||||
}
|
||||
dl dt, form>div.control-group>label, form>div.control-group>div.control-label
|
||||
{
|
||||
font-weight: bold;
|
||||
border:0;
|
||||
}
|
||||
}
|
||||
form
|
||||
{
|
||||
overflow: hidden;
|
||||
width:100%;
|
||||
white-space: normal;
|
||||
box-sizing: border-box;
|
||||
div.control-group, .sw-footer, .sw-anchor-buttons {
|
||||
&>input[type="submit"], &>input.btn.dateRemover, &>a, &>button, &>select {
|
||||
display: inline-block;
|
||||
padding: 8px;
|
||||
vertical-align: bottom;
|
||||
text-shadow: none;
|
||||
border:0;
|
||||
background-color: #fff;
|
||||
color: #000;
|
||||
box-shadow: 0 1px 2px rgba(0,0,0,0.16), 0 1px 2px rgba(0,0,0,0.23);
|
||||
margin-top: 1px;
|
||||
margin-bottom: 2px;
|
||||
}
|
||||
&>input[type="submit"], &>input.btn.dateRemover {
|
||||
.bg-contrast(#000; lighten(@color,5%); darken(@color,5%); 3.0);
|
||||
}
|
||||
}
|
||||
}
|
||||
form div.control-group>input[type="submit"], .sw-footer{
|
||||
margin: 15px 0 0;
|
||||
}
|
||||
.sw-footer.sw-headers{
|
||||
position:relative;
|
||||
margin: 0 20px 10px;
|
||||
}
|
||||
|
||||
form.pos-left>div.control-group, form.pos-right>div.control-group {
|
||||
input, select, a
|
||||
{
|
||||
display:inline-block;
|
||||
float: left;
|
||||
margin-top: 0;
|
||||
margin-left: 5px;
|
||||
width: auto;
|
||||
}
|
||||
}
|
||||
|
||||
/* Tab over the main content. */
|
||||
div.rx_simple_tab{
|
||||
background: #ffffff;
|
||||
margin: 5px 0;
|
||||
box-shadow: 0 1px 2px rgba(0,0,0,0.16), 0 1px 2px rgba(0,0,0,0.23);
|
||||
box-sizing: border-box;
|
||||
}
|
||||
ul.rx_simple_tab{
|
||||
list-style: outside none none;
|
||||
margin: 0;
|
||||
display: block;
|
||||
padding: 6px 0;
|
||||
text-decoration: none;
|
||||
|
||||
}
|
||||
ul.rx_simple_tab>li {
|
||||
display:inline-block;
|
||||
height: 40px;
|
||||
line-height: 18px;
|
||||
position: relative;
|
||||
a {
|
||||
display:inline-block;
|
||||
color: #000;
|
||||
font-weight: 400;
|
||||
letter-spacing: -1px;
|
||||
line-height: 40px;
|
||||
text-decoration: none;
|
||||
&:hover, &:focus {
|
||||
.text-contrast(#fff; darken(@color,5%); lighten(@color,5%));
|
||||
font-weight: 700;
|
||||
}
|
||||
span {
|
||||
border-left: 1px solid #e0e0e0;
|
||||
padding: 0 15px;
|
||||
}
|
||||
}
|
||||
&:first-child a span {
|
||||
border-left: 0 none;
|
||||
}
|
||||
}
|
||||
ul.rx_simple_tab>li.active a, .sw-anchor-buttons a.active{
|
||||
.text-contrast(#fff; darken(@color,5%); lighten(@color,5%));
|
||||
font-weight: 700;
|
||||
}
|
||||
.sw-footer.sw-anchor-buttons {
|
||||
text-align:right;
|
||||
a, button, input, select{
|
||||
display:inline-block;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* The list of document style */
|
||||
.rx_sw_list .cont_a {
|
||||
color: #222;
|
||||
display: block;
|
||||
letter-spacing: -1px;
|
||||
line-height: 18px;
|
||||
margin: 0;
|
||||
overflow: hidden;
|
||||
padding: 0.667em 70px 0.733em 15px;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
text-decoration: none;
|
||||
&.no_delete {
|
||||
padding-right: 15px;
|
||||
}
|
||||
|
||||
&:hover, &:focus {
|
||||
.text-contrast(#fff; darken(@color,5%); lighten(@color,5%));
|
||||
}
|
||||
}
|
||||
.content_basic{
|
||||
position:relative;
|
||||
display:inline-block;
|
||||
max-width:100%;
|
||||
vertical-align: middle;
|
||||
overflow:hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
.content_subinfo
|
||||
{
|
||||
color: #9e9e9e;
|
||||
font-size: 0.94em;
|
||||
margin: 0 3px 0 7px;
|
||||
overflow:hidden;
|
||||
}
|
||||
ul.rx_sw_list {
|
||||
list-style: outside none none;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
border-bottom: 1px solid #e0e0e0;
|
||||
li {
|
||||
position:relative;
|
||||
border-top: 1px solid #e0e0e0;
|
||||
overflow: hidden;
|
||||
padding:0;
|
||||
}
|
||||
.content_delete {
|
||||
position:absolute;
|
||||
top:0;
|
||||
right:0;
|
||||
&>input {
|
||||
margin: 10px;
|
||||
width:20px;
|
||||
height:20px;
|
||||
vertical-align: bottom;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* button hover */
|
||||
form div.control-group>input[type="submit"], .sw-footer>a, .sw-anchor-buttons input[type="submit"], .sw-anchor-buttons a, .sw-anchor-buttons button, .pagination ul li>a{
|
||||
&:hover, &:focus{
|
||||
.bg-contrast(#000; lighten(@color,5%); darken(@color,5%); 4.0);
|
||||
color: #000;
|
||||
box-shadow: 0 2px 4px rgba(0,0,0,0.16), 0 2px 4px rgba(0,0,0,0.23);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -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" />
|
||||
|
|
@ -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>
|
||||
72
modules/communication/skins/simple_world/friends.html
Normal file
72
modules/communication/skins/simple_world/friends.html
Normal file
|
|
@ -0,0 +1,72 @@
|
|||
<include target="./common_header.html" />
|
||||
<load target="filter/delete_friend_group.xml" />
|
||||
<load target="filter/move_friend.xml" />
|
||||
|
||||
<section class="sw-body">
|
||||
<h1>{$member_title = $lang->cmd_view_friend}</h1>
|
||||
<div class="rx_member-notice">{lang('common.total')}: {number_format($total_count)}</div>
|
||||
<div cond="$XE_VALIDATOR_MESSAGE && $XE_VALIDATOR_ID == 'modules/communication/skins/simple_world/frineds/1'" class="rx_member-notice {$XE_VALIDATOR_MESSAGE_TYPE}">
|
||||
<p>{$XE_VALIDATOR_MESSAGE}</p>
|
||||
</div>
|
||||
<div class="sw-footer sw-anchor-buttons sw-headers">
|
||||
<form action="./" method="get" class="pos-left">
|
||||
<input type="hidden" name="act" value="dispCommunicationFriend" />
|
||||
<input type="hidden" name="message_type" value="{$message_type}" />
|
||||
<input type="hidden" name="mid" value="{$mid}" />
|
||||
<div class="control-group">
|
||||
<select name="friend_group_srl" id="jumpMenu">
|
||||
<option value="">{$lang->default_friend_group}</option>
|
||||
<option loop="$friend_group_list => $key,$val" value="{$val->friend_group_srl}" selected="selected"|cond="$val->friend_group_srl == $friend_group_srl">{$val->title}</option>
|
||||
</select>
|
||||
<input type="submit" value="{$lang->cmd_view_selected_frend_group}">
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<form ruleset="deleteCheckedFriend" id="fo_friend_list" action="./" method="post">
|
||||
<input type="hidden" name="module" value="communication" />
|
||||
<input type="hidden" name="act" value="procCommunicationDeleteFriend" />
|
||||
<input type="hidden" name="xe_validator_id" value="modules/communication/skins/simple_world/frineds/1" />
|
||||
<ul class="rx_sw_list">
|
||||
<li loop="$friend_list => $no,$val">
|
||||
<a href="#popup_menu_area" class="cont_a member_{$val->target_srl}">
|
||||
<span class="content_basic member_{$val->target_srl}">
|
||||
<span class="content_title member_{$val->target_srl}">
|
||||
{escape($val->nick_name)}
|
||||
</span>
|
||||
<span class="content_subinfo member_{$val->target_srl}">
|
||||
{escape($val->group_title?$val->group_title:$lang->default_friend_group)} / {zdate($val->regdate,"Y-m-d H:i")}
|
||||
</span>
|
||||
</span>
|
||||
</a>
|
||||
<span class="content_delete">
|
||||
<input name="friend_srl_list[]" type="checkbox" value="{$val->friend_srl}" />
|
||||
</span>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="sw-footer sw-anchor-buttons">
|
||||
<select name="target_friend_group_srl" id="target_friend_group_srl" cond="count($friend_group_list)" style="margin:0">
|
||||
<option loop="$friend_group_list => $key,$val" value="{$val->friend_group_srl}">{$val->title}</option>
|
||||
</select>
|
||||
<button type="submit" name="act" cond="count($friend_group_list)" value="procCommunicationMoveFriend">{$lang->cmd_move}</button>
|
||||
<button type="submit" name="act" value="procCommunicationDeleteFriend">{$lang->cmd_delete}</button>
|
||||
<button type="button" value="{getUrl('','module','communication','act','dispCommunicationAddFriendGroup')}" onclick="popopen(this.value);return false;">{$lang->cmd_add_friend_group}</button>
|
||||
<button type="button" cond="count($friend_group_list)" onclick="doRenameFriendGroup();return false;">{$lang->cmd_rename_friend_group}</button>
|
||||
<button type="button" cond="count($friend_group_list)" onclick="doDeleteFriendGroup();return false;">{$lang->cmd_delete_friend_group}</button>
|
||||
</div>
|
||||
</form>
|
||||
</section>
|
||||
|
||||
<div class="pagination pagination-centered">
|
||||
<ul>
|
||||
<li><a href="{getUrl('page','','document_srl','')}" class="direction">« {$lang->first_page}</a></li>
|
||||
<!--@while($page_no = $page_navigation->getNextPage())-->
|
||||
<li class="active"|cond="$page == $page_no"><a href="{getUrl('page',$page_no,'document_srl','')}">{$page_no}</a></li>
|
||||
<!--@end-->
|
||||
<li><a href="{getUrl('page',$page_navigation->last_page,'document_srl','')}" class="direction">{$lang->last_page} »</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<form action="./" method="get" id="for_delete_group">
|
||||
<input type="hidden" name="friend_group_srl" value="" />
|
||||
<input type="hidden" name="xe_validator_id" value="modules/communication/skins/simple_world/frineds/1" />
|
||||
</form>
|
||||
<include target="./common_footer.html" />
|
||||
103
modules/communication/skins/simple_world/js/communication.js
Normal file
103
modules/communication/skins/simple_world/js/communication.js
Normal file
|
|
@ -0,0 +1,103 @@
|
|||
/* 쪽지 발송 */
|
||||
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 = request_uri.setQuery('module','communication').setQuery('act','dispCommunicationSendMessage').setQuery('receiver_srl',member_srl).setQuery('message_srl',message_srl);
|
||||
popopen(url, 'sendMessage');
|
||||
}
|
||||
|
||||
/* 개별 쪽지 삭제 */
|
||||
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 friend_group_srl = jQuery('#target_friend_group_srl option:selected').val();
|
||||
if(!friend_group_srl) return;
|
||||
|
||||
var fo_obj = jQuery('#for_delete_group').get(0);
|
||||
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 friend_group_srl = jQuery('#target_friend_group_srl option:selected').val();
|
||||
if(!friend_group_srl) return;
|
||||
|
||||
popopen("./?module=communication&act=dispCommunicationAddFriendGroup&friend_group_srl="+friend_group_srl);
|
||||
}
|
||||
|
||||
/* 친구 그룹 이동 */
|
||||
function doMoveFriend() {
|
||||
var fo_obj = jQuery('#fo_friend_list').get(0);
|
||||
procFilter(fo_obj, move_friend);
|
||||
}
|
||||
|
||||
/* 친구 그룹 선택 */
|
||||
function doJumpFriendGroup() {
|
||||
var sel_val = jQuery('#jumpMenu option:selected').val();
|
||||
location.href = current_url.setQuery('friend_group_srl', sel_val);
|
||||
}
|
||||
|
||||
jQuery(function($){
|
||||
$('.__submit_group button[type=submit]').click(function(e){
|
||||
var sel_val = $('input[name="friend_srl_list[]"]:checked').length;
|
||||
if(sel_val == 0)
|
||||
{
|
||||
e.preventDefault();
|
||||
return false;
|
||||
}
|
||||
});
|
||||
});
|
||||
78
modules/communication/skins/simple_world/messages.html
Normal file
78
modules/communication/skins/simple_world/messages.html
Normal file
|
|
@ -0,0 +1,78 @@
|
|||
<include target="./common_header.html" />
|
||||
<load target="filter/delete_checked_message.xml" />
|
||||
<load target="filter/update_allow_message.xml" />
|
||||
<section class="sw-body" cond="$message">
|
||||
<h1>{escape($message->title)}</h1>
|
||||
<div>
|
||||
<a href="popup_menu_area" class="member_{$message->member_srl}">{$message->nick_name}</a> / {zdate($message->regdate, "Y-m-d H:i")}
|
||||
</div>
|
||||
<div class="xe_content">
|
||||
{$message->content}
|
||||
</div>
|
||||
<div class="sw-footer sw-anchor-buttons">
|
||||
<a cond="$message->message_type != 'S' && $message->member_srl != $logged_info->member_srl" href="#" onclick="doSendMessage('{$message->sender_srl}','{$message->message_srl}');">{$lang->cmd_reply_message}</a>
|
||||
<a cond="$message->message_type == 'R'" href="#" onclick="doStoreMessage('{$message->message_srl}');">{$lang->cmd_store}</a>
|
||||
<a href="#" onclick="doDeleteMessage('{$message->message_srl}');">{$lang->cmd_delete}</a>
|
||||
</div>
|
||||
</section>
|
||||
<section class="sw-body">
|
||||
<h1 loop="$lang->message_box => $key,$val" cond="$message_type == $key">{$val}</h1>
|
||||
|
||||
<div class="sw-footer sw-anchor-buttons sw-headers" cond="$message_type == 'R'">
|
||||
<form action="./" method="POST" class="pos-left">
|
||||
<input type="hidden" name="module" value="communication" />
|
||||
<input type="hidden" name="act" value="procCommunicationUpdateAllowMessage" />
|
||||
<input type="hidden" name="message_type" value="{$message_type}" />
|
||||
|
||||
<div class="control-group">
|
||||
<select name="allow_message">
|
||||
<option loop="$lang->allow_message_type => $key,$val" value="{$key}" selected="selected"|cond="$logged_info->allow_message==$key">{$val}</option>
|
||||
</select>
|
||||
<input type="submit" value="{$lang->cmd_save}">
|
||||
</div>
|
||||
</form>
|
||||
<div style="clear:both"></div>
|
||||
</div>
|
||||
|
||||
<form action="./" method="post" id="fo_message_list">
|
||||
<input type="hidden" name="module" value="communication" />
|
||||
<input type="hidden" name="act" value="procCommunicationDeleteMessages" />
|
||||
<input type="hidden" name="message_type" value="{$message_type}" />
|
||||
|
||||
<ul class="rx_sw_list">
|
||||
<li loop="$message_list => $key, $val">
|
||||
<a href="{getUrl('message_srl',$val->message_srl)}" class="cont_a">
|
||||
<span class="content_basic">
|
||||
<span class="content_title">
|
||||
{escape($val->title)}
|
||||
</span>
|
||||
<span class="content_subinfo">
|
||||
{escape($val->nick_name)} / {zdate($val->regdate,"Y-m-d H:i")}<block cond="$val->readed=='Y'"> / {zdate($val->readed_date,"Y-m-d H:i")}</block>
|
||||
</span>
|
||||
</span>
|
||||
</a>
|
||||
<span class="content_delete">
|
||||
<input name="message_srl_list[]" type="checkbox" value="{$val->message_srl}" />
|
||||
</span>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="sw-footer sw-anchor-buttons">
|
||||
<label for="check_all">{$lang->cmd_select_all}</label>
|
||||
<input name="check_all" id="check_all" type="checkbox" onclick="XE.checkboxToggleAll('message_srl_list[]', {wrap:'fo_message_list'})"/>
|
||||
<input type="submit" value="{$lang->cmd_delete}" />
|
||||
</div>
|
||||
</form>
|
||||
<div class="sw-footer sw-anchor-buttons">
|
||||
<a loop="$lang->message_box => $key,$val" href="{getUrl('message_type', $key, 'message_srl', '')}" class="active"|cond="$message_type == $key">{$val}</a>
|
||||
</div>
|
||||
</section>
|
||||
<div class="pagination pagination-centered">
|
||||
<ul>
|
||||
<li><a href="{getUrl('page','','document_srl','')}" class="direction">« {$lang->first_page}</a></li>
|
||||
<!--@while($page_no = $page_navigation->getNextPage())-->
|
||||
<li class="active"|cond="$page == $page_no"><a href="{getUrl('page',$page_no,'document_srl','')}">{$page_no}</a></li>
|
||||
<!--@end-->
|
||||
<li><a href="{getUrl('page',$page_navigation->last_page,'document_srl','')}" class="direction">{$lang->last_page} »</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<include target="./common_footer.html" />
|
||||
17
modules/communication/skins/simple_world/new_message.html
Normal file
17
modules/communication/skins/simple_world/new_message.html
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
{@ $communication_popup = TRUE}
|
||||
<include target="./common_header.html" />
|
||||
<section class="sw-body" cond="$message">
|
||||
<h1>{escape($message->title)}</h1>
|
||||
<div>
|
||||
<a href="popup_menu_area" class="member_{$message->member_srl}">{$message->nick_name}</a> / {zdate($message->regdate, "Y-m-d H:i")}
|
||||
</div>
|
||||
<div class="xe_content">
|
||||
{$message->content}
|
||||
</div>
|
||||
<div class="sw-footer sw-anchor-buttons">
|
||||
<a cond="$message->message_type != 'S' && $message->member_srl != $logged_info->member_srl" href="#" onclick="doSendMessage('{$message->sender_srl}','{$message->message_srl}');">{$lang->cmd_reply_message}</a>
|
||||
<a cond="$message->message_type == 'R'" href="#" onclick="doStoreMessage('{$message->message_srl}');">{$lang->cmd_store}</a>
|
||||
<a href="#" onclick="doDeleteMessage('{$message->message_srl}');">{$lang->cmd_delete}</a>
|
||||
</div>
|
||||
</section>
|
||||
<include target="./common_footer.html" />
|
||||
28
modules/communication/skins/simple_world/send_message.html
Normal file
28
modules/communication/skins/simple_world/send_message.html
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
{@ $communication_popup = TRUE}
|
||||
<include target="./common_header.html" />
|
||||
<section class="sw-body">
|
||||
<h1>{$lang->cmd_send_message}</h1>
|
||||
<div cond="$XE_VALIDATOR_MESSAGE && $XE_VALIDATOR_ID == 'modules/communication/skins/simple_world/send_message/1'" class="rx_member-notice {$XE_VALIDATOR_MESSAGE_TYPE}">
|
||||
<p>{$XE_VALIDATOR_MESSAGE}</p>
|
||||
</div>
|
||||
<form ruleset="sendMessage" action="./" method="post">
|
||||
<input type="hidden" name="module" value="communication" />
|
||||
<input type="hidden" name="act" value="procCommunicationSendMessage" />
|
||||
<input type="hidden" name="content" value="{htmlspecialchars($source_message->content)}" />
|
||||
<input type="hidden" name="receiver_srl" value="{$receiver_info->member_srl}" />
|
||||
<input type="hidden" name="xe_validator_id" value="modules/communication/skins/simple_world/send_message/1" />
|
||||
<div class="control-group">
|
||||
<label for="message_receiver">{$lang->receiver}</label>
|
||||
<a id="message_receiver" href="#popup_menu_area" class="member_{$receiver_info->member_srl}">{$receiver_info->nick_name}</a>
|
||||
<label for="message_title">{$lang->title}</label>
|
||||
<input type="text" name="title" id="message_title" value="{$source_message->title}" />
|
||||
<label for="message_send_mail"><input type="checkbox" value="Y" name="send_mail" id="message_send_mail" /> {$lang->cmd_send_mail}</label>
|
||||
<div class="rx_member-notice info">{$lang->msg_send_mail_privacy}</div>
|
||||
</div>
|
||||
{$editor}
|
||||
<div class="control-group">
|
||||
<input type="submit" value="{$lang->cmd_send_message}" />
|
||||
</div>
|
||||
</form>
|
||||
</section>
|
||||
<include target="./common_footer.html" />
|
||||
18
modules/communication/skins/simple_world/skin.xml
Normal file
18
modules/communication/skins/simple_world/skin.xml
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<skin version="0.2">
|
||||
<title xml:lang="ko">네모의 꿈</title>
|
||||
<title xml:lang="en">Rectangular World</title>
|
||||
<description xml:lang="ko">
|
||||
면과 선으로 이루어진 단순한 모양의 깔끔한 스킨
|
||||
</description>
|
||||
<description xml:lang="en">
|
||||
Simple rectangular planes and shadows
|
||||
</description>
|
||||
<version>0.1</version>
|
||||
<date>2017-04-30</date>
|
||||
|
||||
<author email_address="misol.kr@gmail.com" link="https://github.com/misol">
|
||||
<name xml:lang="ko">misol</name>
|
||||
<name xml:lang="en">misol</name>
|
||||
</author>
|
||||
</skin>
|
||||
|
|
@ -8,7 +8,7 @@
|
|||
<ul class="rx_sw_list">
|
||||
<li loop="$active_logins => $no, $autologin_info">
|
||||
{@ $autologin_info->user_agent = @json_decode($autologin_info->user_agent) ?: new stdClass()}
|
||||
<span class="content_basic">
|
||||
<span class="content_basic cont_a">
|
||||
<span class="content_title">
|
||||
{escape($autologin_info->user_agent->browser)} {escape($autologin_info->user_agent->version)} ({escape($autologin_info->user_agent->os)})
|
||||
</span>
|
||||
|
|
|
|||
|
|
@ -15,9 +15,9 @@
|
|||
</span>
|
||||
</span>
|
||||
</a>
|
||||
<span class="content_delete">
|
||||
<button type="button" class="text" onclick="doDeleteSavedDocument({$item->document_srl},'{lang('common.confirm_delete')}');return false;">{$lang->cmd_delete}</button>
|
||||
</span>
|
||||
<span class="content_delete">
|
||||
<button type="button" class="text" onclick="doDeleteSavedDocument({$item->document_srl},'{lang('common.confirm_delete')}');return false;">{$lang->cmd_delete}</button>
|
||||
</span>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue