Communication module mobile support enhancement

쪽지 모듈의 모바일 지원을 향상시켰습니다.
이 PR 이후에 회원 모듈의 모바일 지원을 향상 시키면 XE의 모바일 지원 수준이 한 단계 상승하게 됩니다.
꼭 반영되길 바랍니다!

## 수정 내용

* 커뮤니케이션 애드온의 회원 메뉴 설정 기능을 모듈의 트리거로 처리하여 조금 더 직관적으로 설정하게 됨.
* 기본값은 모듈이 동작 하도록 함.
* 모듈을 켜고 끌 수 있도록 함.
* 모바일에서 친구 추가를 할 수 있게 함.
* 스타일 아주 조금 다듬음.
This commit is contained in:
MinSoo Kim 2015-05-25 02:32:47 +09:00
parent ecce7e5efd
commit e75983768f
14 changed files with 428 additions and 85 deletions

View file

@ -0,0 +1,31 @@
<load target="./css/mcommunication.css" />
<load target="./js/communication.js" />
<div class="hx h2">
<h2>{$lang->cmd_add_friend}</h2>
</div>
<div cond="$XE_VALIDATOR_MESSAGE && $XE_VALIDATOR_ID == 'modules/communication/m.skins/default/add_friend/1'" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
<p>{$XE_VALIDATOR_MESSAGE}</p>
</div>
<form ruleset="addFriend" action="./" method="post" class="ff">
<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/m.skins/default/add_friend/1" />
<ul>
<li>
<label for="nickname" class="control-label">{$lang->nick_name}</label>
<input id="nickname" name="nickname" type="text" disabled="disabled" value="{htmlspecialchars($target_info->nick_name, ENT_COMPAT | ENT_HTML401, 'UTF-8', false)}"/>
</li>
<li>
<label for="friend_group_srl">{$lang->friend_group}</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>
<a href="{getUrl('act','dispCommunicationAddFriendGroup')}" class="btn" onclick="popopen(this.href);return false;">{$lang->cmd_add_friend_group}</a>
</li>
</ul>
<div class="bna" style="border-top:0;padding:0">
<input type="submit" value="{$lang->cmd_add_friend}" class="btn btn-inverse" />
</div>
</form>

View file

@ -0,0 +1,30 @@
<load target="./css/mcommunication.css" />
<load target="./js/communication.js" />
<div class="hx h2">
<h2>
<!--@if($friend_group->friend_group_srl)-->
{$lang->cmd_rename_friend_group}
<!--@else-->
{$lang->cmd_add_friend_group}
<!--@end-->
</h2>
</div>
<div cond="$XE_VALIDATOR_MESSAGE && $XE_VALIDATOR_ID == 'modules/communication/skins/default/add_friend_group/1'" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
<p>{$XE_VALIDATOR_MESSAGE}</p>
</div>
<form ruleset="addFriendGroup" action="./" method="post" class="ff">
<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/default/add_friend_group/1" />
<ul>
<li>
<label for="title" class="control-label">{$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)}"/>
</li>
</ul>
<div class="bna">
<input cond="$friend_group->friend_group_srl" type="submit" value="{$lang->cmd_modify}" class="btn btn-inverse" />
<input cond="!$friend_group->friend_group_srl" type="submit" value="{$lang->cmd_insert}" class="btn btn-inverse" />
</div>
</form>

View file

@ -100,7 +100,7 @@ input[type=radio]{width:13px;height:13px;margin:0;padding:0}
.ff label+input[type=text],
.ff label+input[type=password],
.ff label+textarea,
.ff label+select{display:block;width:96%;font-size:14px;margin:0 0 5px 0}
.ff label+select{display:block;box-sizing:border-box;width:100%;font-size:14px;margin:0 0 5px 0}
.ff label+input[type=text],
.ff label+input[type=password],
.ff label+textarea{padding:5px}

View file

@ -20,3 +20,50 @@ function mergeContents()
$form.find('input[name=content]').val(content);
$form.submit();
}
/* 친구 그룹 삭제 */
function doDeleteFriendGroup() {
var friend_group_srl = jQuery('#friend_group_list 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('#friend_group_list 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;
}
});
});