This commit is contained in:
shim
2023-04-17 11:06:08 +09:00
parent d0b393aa97
commit 76264e09ad
4686 changed files with 552713 additions and 0 deletions

View File

@@ -0,0 +1,18 @@
<div class="jumbotron jumbotron-fluid bg-white py-5 mb-0">
<div class="container">
<h1 class="display-2 text-center">404</h1>
<p class="lead text-center text-muted">잘못된 주소이거나 비공개 또는 삭제된 글입니다.</p>
<div class="text-center">
<?php if (!$my['uid']): ?>
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#modal-login">로그인 하기</button>
<?php endif; ?>
<button type="button" class="btn btn-light" onclick="history.back();">이전가기</button>
</div>
</div>
</div>
<script type="text/javascript">
document.title = 'Page not found · 킴스큐';
</script>

View File

@@ -0,0 +1,98 @@
<?php
// 댓글 일반 사항
/*
1) 댓글 저장 테이블 : rb_s_comment
2) 한줄의견 저장 테이블 : rb_s_oneline
3) rb_s_comment 의 parent 필드 저장형식 ==> p_modulep_uid
예를 들어, 게시판 모듈의 uid = 3 인 글의 댓글은 아래와 같이 저장됩니다.
====> bbs3
4) 테마 css 는 테마/css/style.css 이며 댓글박스 가져올때 자동으로 함께 링크를 가져옵니다.
이 css 를 삭제하면 안되며 필요없는 경우 공백으로 처리하는 방법으로 하시기 바랍니다.
현재, notify 부분에 대한 css 가 있어서 삭제하면 안됩니다.
*/
// 댓글 출력 함수
// 함수 호출 방식으로 하면 모달 호출시에도 적용하기 편합니다.
/*
1) module = 부모모듈 : 댓글의 부모 모듈 id ( ex: bbs, post, forum ...)
2) parent_uid = 부모 uid : 댓글의 부모 포스트 uid
3) parent_table = 부모 테이블 : p_uid 가 소속된 테이블명 ( ex : rb_bbs_data, rb_blog_data, rb_chanel_data ...)
(댓글, 한줄의견 추가/삭제시 합계 업데이트시 필요)
*/
$comment_theme = '_desktop/bs4-default'; // 댓글 테마
?>
<div id="commentting-container">
<!-- 댓글 출력 -->
</div>
<link href="<?php echo $g['url_root']?>/modules/comment/themes/<?php echo $comment_theme?>/css/style.css" rel="stylesheet">
<script>
var attach_file_saveDir = '<?php echo $g['path_file']?>comment/';// 파일 업로드 폴더
var attach_module_theme = '_desktop/bs4-default-attach';// attach 모듈 테마
$(function() {
// 댓글 출력 함수 실행
var p_module = '<?php echo $m?>';
var p_table = '<?php echo $table[$m.'data']?>';
var p_uid = '<?php echo $R['uid']?>';
var theme = '<?php echo $comment_theme ?>';
var agent = navigator.userAgent.toLowerCase();
var commentting_container = $('#commentting-container');
var get_Rb_Comment = function(p_module,p_table,p_uid,theme){
commentting_container.Rb_comment({
moduleName : 'comment', // 댓글 모듈명 지정 (수정금지)
parent : p_module+'-'+p_uid, // rb_s_comment parent 필드에 저장되는 형태가 p_modulep_uid 형태임 참조.(- 는 저장시 제거됨)
parent_table : p_table, // 부모 uid 가 저장된 테이블 (게시판인 경우 rb_bbs_data : 댓글, 한줄의견 추가/삭제시 전체 합계 업데이트용)
theme_name : theme, // 댓글 테마
containerClass :'rb-commentting', // 본 엘리먼트(#commentting-container)에 추가되는 class
recnum: 15, // 출력갯수
commentPlaceHolder : '댓글을 입력해 주세요..',
noMoreCommentMsg : '댓글 없음 ',
commentLength : 500, // 댓글 입력 글자 수 제한
toolbar : ['heading','strikethrough','imageUpload','link','bulletedList', 'numberedList', 'blockQuote','|','alignment:left','alignment:center','|','Highlight','Code','insertTable'] // 툴바 항목
});
}
get_Rb_Comment(p_module,p_table,p_uid,theme);
$('[data-toggle="tooltip"]').tooltip()
// 댓글이 등록된 후에
$('#commentting-container').on('saved.rb.comment',function(){
// $.notify({message:'댓글이 등록 되었습니다.'});
$('[data-toggle="tooltip"]').tooltip()
$(document).on('click','.add-comment',function(){
var uid = $(this).data('parent')
var textarea = $('[data-role="oneline-input-'+uid+'"]')
setTimeout(function(){ textarea.focus(); }, 200); // 한줄의견 추가시에 textarea focus 처리하기
});
})
// 댓글이 수정된 후에
$('#commentting-container').on('edited.rb.comment',function(){
$.notify({message: '댓글이 수정 되었습니다.'},{type: 'success'});
})
// 한줄의견이 등록된 후에
$('#commentting-container').on('saved.rb.oneline',function(){
$('[data-toggle="tooltip"]').tooltip()
})
$('#commentting-container').on('edited.rb.oneline',function(){
$.notify({message: '의견이 수정 되었습니다.'},{type: 'success'});
})
});
</script>

View File

@@ -0,0 +1,43 @@
<li class="list-group-item media align-items-center serial"
data-role="item"
data-subject="{$subject}"
data-featured_img="{$featured_img}">
<div class="pr-3 text-muted counter"></div>
<a href="{$link}" class="position-relative mr-3" target="_blank">
<img class="border" src="{$featured_img}" alt="" style="width:100px">
<time class="badge badge-dark rounded-0 position-absolute" style="right:1px;bottom:1px">{$time}</time>
</a>
<div class="media-body">
<h5 class="f14 my-1 line-clamp-2">
<a href="{$edit_link}" class="font-weight-light muted-link">
{$subject}
</a>
</h5>
<div class="mb-1">
<ul class="list-inline d-inline-block f12 text-muted">
<li class="list-inline-item">조회 {$hit}</li>
<li class="list-inline-item">
<a href="#modal-post-opinion" data-toggle="modal" data-backdrop="static" data-uid="{$uid}" data-opinion="like" class="text-reset">
좋아요 {$likes}
</a>
</li>
<li class="list-inline-item">
<a href="#modal-post-opinion" data-toggle="modal" data-backdrop="static" data-uid="{$uid}" data-opinion="dislike" class="text-reset">
싫어요 {$dislikes}
</a>
</li>
<li class="list-inline-item">댓글 {$comment}</li>
<li class="list-inline-item">
<time data-plugin="timeago" datetime="{$d_modify}"></time>
</li>
</ul>
</div>
</div>
<div class="ml-3 align-self-center form-inline">
<span class="text-muted mr-1 f14 rounded-0 px-2 align-middle">{$num}</span>
<button type="button" class="btn btn-white btn-sm" data-target="#modal-post-analytics" data-toggle="modal" data-backdrop="static" data-uid="{$uid}">
<i class="fa fa-bar-chart" aria-hidden="true"></i>
</button>
</div>
</li>

View File

@@ -0,0 +1,11 @@
<a class="list-group-item list-group-item-action" href="{$profile_link}" class="media" target="_blank">
<div class="position-relative pull-left mr-2">
<img class="media-object border rounded-circle" src="{$avatar}" style="width:42px" data-toggle="tooltip" title="{$nic}" role="button">
<i class="position-absolute fa fa-heart text-danger" aria-hidden="true" style="bottom:0;right:0"></i>
</div>
<div class="media-body">
{$nic}
<div><time data-plugin="timeago" class="small">{$d_regis}</time></div>
</div>
</a>

View File

@@ -0,0 +1,104 @@
<?php
$_WTIT=strip_tags($g['meta_tit']);
$link_url = explode("?", $g['url_root'].$_SERVER['REQUEST_URI']); // 파라미터 제외
$_link_url = $link_url[0] ;
?>
<ul class="list-inline" data-role="linkshare">
<li data-toggle="tooltip" title="페이스북" class="list-inline-item">
<a href="" role="button" onclick="snsWin('fb');">
<img src="<?php echo $g['img_core']?>/sns/facebook.png" alt="페이스북공유" class="rounded-circle" width="50">
</a>
</li>
<li data-toggle="tooltip" title="카카오스토리" class="list-inline-item">
<a href="" role="button" onclick="snsWin('ks');">
<img src="<?php echo $g['img_core']?>/sns/kakaostory.png" alt="카카오스토리" class="rounded-circle" width="50">
</a>
</li>
<li data-toggle="tooltip" title="네이버" class="list-inline-item">
<a href="" role="button" onclick="snsWin('nv');">
<img src="<?php echo $g['img_core']?>/sns/naver.png" alt="네이버" class="rounded-circle" width="50">
</a>
</li>
<li data-toggle="tooltip" title="트위터" class="list-inline-item">
<a href="" role="button" onclick="snsWin('tt');">
<img src="<?php echo $g['img_core']?>/sns/twitter.png" alt="트위터" class="rounded-circle" width="50">
</a>
</li>
</ul>
<div class="mt-5 mb-4">
<div class="input-group mt-3" data-role="ref_selector">
<div class="input-group-prepend">
<button class="btn btn-white dropdown-toggle text-primary" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
선택
</button>
<div class="dropdown-menu shadow" data-url="<?php echo $_link_url?>">
<a class="dropdown-item" href="#" data-ref="kt">카카오톡</a>
<a class="dropdown-item" href="#" data-ref="yt">유튜브</a>
<a class="dropdown-item" href="#" data-ref="fb">페이스북</a>
<a class="dropdown-item" href="#" data-ref="ig">인스타그램</a>
<a class="dropdown-item" href="#" data-ref="nb">네이버 블로그</a>
<a class="dropdown-item" href="#" data-ref="ks">카카오스토리</a>
<a class="dropdown-item" href="#" data-ref="tt">트위터</a>
<div role="separator" class="dropdown-divider"></div>
<a class="dropdown-item" href="#" data-ref="em">이메일</a>
<a class="dropdown-item" href="#" data-ref="sm">SMS</a>
<a class="dropdown-item" href="#" data-ref="et">기타</a>
</div>
</div>
<input type="text" class="form-control" readonly value="<?php echo $_link_url?>" id="_url_">
<div class="input-group-append">
<button class="btn btn-white js-clipboard js-tooltip" type="button" title="클립보드에 복사" data-clipboard-target="#_url_">
<i class="fa fa-clone" aria-hidden="true"></i>
</button>
</div>
</div>
<span class="form-text text-muted mt-3 f13">통계분석을 위해 매체별 전용URL 사용해주세요.</span>
</div>
<?php getImport('clipboard','clipboard.min','2.0.4','js'); ?>
<script type="text/javascript">
// sns 이벤트
function snsWin(sns) {
var snsset = new Array();
var enc_sbj = "<?php echo urlencode($_WTIT)?>";
var enc_url = "<?php echo $_link_url?>?ref="+sns;
var enc_tag = "<?php echo urlencode(str_replace(',',' ',$R['tag']))?>";
snsset['tt'] = 'https://twitter.com/intent/tweet?url=' + enc_url + '&text=' + enc_sbj;
snsset['fb'] = 'http://www.facebook.com/sharer.php?u=' + enc_url;
snsset['nv'] = 'http://share.naver.com/web/shareView.nhn?url=' + enc_url + '&title=' + enc_sbj;
snsset['ks'] = 'https://story.kakao.com/share?url=' + enc_url + '&title=' + enc_sbj;
window.open(snsset[sns]);
}
$( document ).ready(function() {
var clipboard = new ClipboardJS('.js-clipboard');
clipboard.on('success', function (e) {
$(e.trigger)
.attr('title', '복사완료!')
.tooltip('_fixTitle')
.tooltip('show')
.attr('title', '클립보드 복사')
.tooltip('_fixTitle')
e.clearSelection()
})
$('[data-role="ref_selector"]').find('.dropdown-item').click(function(){
var item = $(this)
var selector = $('[data-role="ref_selector"]')
var ref = item.attr('data-ref');
var url = selector.find('.dropdown-menu').attr('data-url');
var label = item.text();
selector.find('[data-toggle="dropdown"]').text(label)
selector.find('[type="text"]').val(url+'?ref='+ref)
selector.find('.js-tooltip').click();
});
});
</script>

View File

@@ -0,0 +1,23 @@
<?php
$listque = 'mbruid='.$my['uid'];
$_RCD = getDbArray($table[$m.'list'],$listque,'*','gid','asc',30,1);
$NUM = getDbRows($table[$m.'list'],$listque);
?>
<div data-role="list-selector">
<?php foreach($_RCD as $_R):?>
<?php $is_list = getDbRows($table[$m.'list_index'],'data='.$R['uid'].' and list='.$_R['uid']) ?>
<div class="d-flex justify-content-between align-items-center px-3 py-2">
<div class="custom-control custom-checkbox">
<input type="checkbox" id="listRadio<?php echo $_R['uid'] ?>" name="postlist_members[]" value="<?php echo $_R['uid'] ?>" class="custom-control-input" <?php echo $is_list?' checked':'' ?>>
<label class="custom-control-label" for="listRadio<?php echo $_R['uid'] ?>"><?php echo $_R['name'] ?></label>
</div>
<i class="material-icons text-muted mr-2" data-toggle="tooltip" title="<?php echo $g['displaySet']['label'][$_R['display']] ?>"><?php echo $g['displaySet']['icon'][$_R['display']] ?></i>
</div>
<?php endforeach?>
</div>
<?php if(!$NUM):?>
<div class="text-center text-muted p-5">리스트가 없습니다.</div>
<?php endif?>

View File

@@ -0,0 +1,244 @@
/* form */
.dropdown-filter .dropdown-toggle {
position: relative;
text-align: left;
min-width: 10rem
}
.dropdown-filter .dropdown-toggle::after {
position: absolute;
top: 50%;
right: 10px;
margin-top: -2px;
}
.dropdown-filter.show .dropdown-toggle::after {
border-bottom: .3em solid;
border-top: 0;
}
.dropdown-menu {
border-radius: 0;
}
.input-group .form-control:focus {
border-color: #ced4da;
outline: 0;
box-shadow: none;
}
.input-group .btn:hover {
background-color: inherit;
border-color: rgba(27,31,35,0.2);
}
/*attach*/
.post-section .gallery figure,
.post-section .gallery .card {
position: relative;
}
.post-section .gallery figcaption,
.post-section .gallery .card-img-overlay {
opacity: 0;
position: absolute;
top:0;
left: 0;
right: 0;
bottom: 0;
background-color: rgba(0, 0, 0, 0.5);
word-break: break-all;
cursor: pointer;
transition-timing-function: ease-in;
transition-duration: .3s;
transition-property: all;
transition-delay: 0s;
}
.post-section .gallery figcaption {
color: #fff;
}
.post-section .gallery .card-img-overlay:hover,
.post-section .gallery figcaption:hover {
opacity: 1 !important;
-webkit-transform: translate(0, 0);
-ms-transform: translate(0, 0);
transform: translate(0, 0);
text-decoration: none;
}
.post-section .gallery .card-img-overlay:hover {
background-color: #fff !important
}
.post-section .gallery [data-role="caption"] {
display: none;
}
.post-section .clearfix .float-left:first-child {
margin-right: 10px
}
.card__corner {
position: absolute;
top: 0;
right: 0;
width: 2em;
height: 2em;
background-color: #e6e7e8;
border: 1px solid rgba(0,0,0,.045);
border-top: 0;
}
.card .card__corner {
top: -1px;
right: -1px;
}
.card__corner .card__corner-triangle {
position: absolute;
width: 0;
height: 0;
border-style: solid;
border-width: 0 2em 2em 0;
border-color: transparent #fff transparent transparent;
}
.post-section .gallery .card:hover .card__corner,
.post-section .gallery figure:hover .card__corner {
display: none
}
/* 보기 */
.serial {
counter-increment: Serial;
}
.serial .counter:before {
content: counter(Serial);
}
.serial.active .counter:before {
content: '▶';
}
[data-role="follow"].active {
background-color: #e0e0e0 !important;
color: #696969 !important;
border: none !important
}
[data-role="follow"].active::after {
content: '중'
}
/* 쓰기 */
.rb-post-write header {
position: fixed;
top: 0;
left: 0;
right:0;
bottom:auto
}
.rb-post-write aside {
position: fixed;
top: 64px;
bottom: 0;
right:0;
left: auto;
width: 350px;
z-index: 99
}
.rb-post-write aside .inner {
position: relative;
height: 100%
}
.rb-post-write aside .nav-tabs {
position: absolute;
top: 0;
left:0;
right:0
}
.rb-post-write aside .tab-content {
position: absolute;
top: 40px;
left: 0;
right:0;
bottom:0;
overflow-x: hidden;
overflow-y: auto;
}
.nav-tabs .nav-link {
border: 1px solid transparent;
border-top-left-radius: 0;
border-top-right-radius: 0;
color: #999;
background-color: rgba(0,0,0,.03);
}
.nav-tabs .nav-item.show .nav-link,
.nav-tabs .nav-link.active {
color: #495057;
background-color: #fff;
border-color: #fff #dee2e6 #fff;
}
.nav-tabs .nav-item:first-child.show .nav-link,
.nav-tabs .nav-item:first-child .nav-link.active {
border-color: #fff #dee2e6 #fff #fff;
}
.nav-tabs .nav-link:focus,
.nav-tabs .nav-link:hover {
border-top-left-radius: 0;
border-top-right-radius: 0;
}
.nav-tabs .nav-link.disabled {
color: #ccc;
background-color: rgba(0,0,0,.03);
}
.document-editor {
position: absolute;
top: 104px;
right: 350px;
bottom: 0;
left: 0;
overflow: auto;
}
.document-editor__toolbar {
position: fixed;
top: 64px;
right: 350px;
left: 0;
}
.rb-post-write [name="subject"] {
border-color: #fff;
color: #000;
font-size: 18px;
height: calc(1.5em + .5rem + 2px);
padding: .3rem .5rem;
font-size: 18px;
line-height: 1.5;
}
.rb-post-write [name="subject"]:hover {
border-color: #ced4da
}
.rb-post-write fieldset:disabled button {
opacity: 0
}
/* 관리 */
.modal .nav-tabs .nav-link {
border: 1px solid transparent;
color: #999;
background-color: transparent;
}
.modal .nav-tabs .nav-item.show .nav-link,
.modal .nav-tabs .nav-link.active {
color: #495057;
background-color: #fff;
border-color: #dee2e6 #dee2e6 #fff;
}

View File

@@ -0,0 +1,196 @@
var submitFlag = false;
function listCheckedNum() {
var checked_num = $('[data-role="list-selector"] :checkbox:checked').length;
if(checked_num==0) checked_num='';
$('[data-role="list_num"]').text(checked_num);
}
function doToc() {
Toc.init({
$nav: $("#toc"),
$scope: $(".document-editor__editable-container h2, .document-editor__editable-container h3, .document-editor__editable-container h4")
});
}
function showSaveButton(changed) {
if (changed) {
$('[data-role="postsubmit"]').removeClass('d-none');
$('[data-role="library"]').addClass('d-none');
} else {
$('[data-role="postsubmit"]').addClass('d-none');
$('[data-role="library"]').removeClass('d-none');
}
}
function savePost(f) {
if (submitFlag == true) {
alert('포스트를 등록하고 있습니다. 잠시만 기다려 주세요.');
return false;
}
// if (f.subject.value == '') {
// alert('제목 입력해 주세요.');
// f.subject.focus();
// return false;
// }
var editorData = editor.getData();
if (editorData == '')
{
$.notify({message: '본문 입력후 저장해 주세요.'},{type: 'primary'});
editor.editing.view.focus();
return false;
} else {
$('[name="content"]').val(editorData)
}
// 카테고리 체크
var cat_sel=$('input[name="tree_members[]"]');
var cat_sel_n=cat_sel.length;
var cat_arr=$('input[name="tree_members[]"]:checked').map(function(){return $(this).val();}).get();
var cat_n=cat_arr.length;
// if(cat_sel_n>0 && cat_arr==''){
// alert('지정된 카테고리가 없습니다.\n적어도 하나이상의 카테고리를 지정해 주세요.');
// $('#advan').tab('show')
// return false;
// }
var s='';
for (var i=0;i <cat_n;i++) {
if(cat_arr[i]!='') s += '['+cat_arr[i]+']';
}
f.category_members.value = s;
// 리스트 체크
var list_sel=$('input[name="postlist_members[]"]');
var list_arr=$('input[name="postlist_members[]"]:checked').map(function(){return $(this).val();}).get();
var list_n=list_arr.length;
var l='';
for (var i=0;i <list_n;i++) {
if(list_arr[i]!='') l += '['+list_arr[i]+']';
}
$('input[name="list_members"]').val(l);
// 대표이미지가 없을 경우, 첫번째 업로드 사진을 지정함
var featured_img_input = $('input[name="featured_img"]'); // 대표이미지 input
var featured_img_uid = $(featured_img_input).val();
if(featured_img_uid ==0){ // 대표이미지로 지정된 값이 없는 경우
var first_attach_img_li = $('.rb-attach-featured li:first'); // 첫번째 첨부된 이미지 리스트 li
var first_attach_img_uid = $(first_attach_img_li).attr('data-id');
featured_img_input.val(first_attach_img_uid);
}
// 첨부파일 uid 를 upfiles 값에 추가하기
var attachfiles=$('input[name="attachfiles[]"]').map(function(){return $(this).val()}).get();
var new_upfiles='';
if(attachfiles){
for(var i=0;i<attachfiles.length;i++) {
new_upfiles+=attachfiles[i];
}
$('input[name="upload"]').val(new_upfiles);
}
// 공유회원 uid 를 members 값에 추가하기
var postmembers=$('input[name="postmembers[]"]').map(function(){return $(this).val()}).get();
var new_members='';
if(postmembers){
for(var i=0;i<postmembers.length;i++) {
new_members+=postmembers[i];
}
$('input[name="members"]').val(new_members);
}
// 첨부상품 uid 를 gooods 값에 추가하기
var postgoods=$('input[name="attachGoods[]"]').map(function(){return $(this).val()}).get();
var new_goods='';
if(postgoods){
for(var i=0;i<postgoods.length;i++) {
new_goods+=postgoods[i];
}
$('input[name="goods"]').val(new_goods);
}
checkUnload = false;
$('[data-role="postsubmit"]').attr( 'disabled', true );
var form = $('[name="writeForm"]')
var uid = form.find('[name="uid"]').val();
var category_members = form.find('[name="category_members"]').val();
var list_members = form.find('[name="list_members"]').val();
var members = form.find('[name="members"]').val();
var upload = form.find('[name="upload"]').val();
var featured_img = form.find('[name="featured_img"]').val();
var html = form.find('[name="html"]').val();
var subject = form.find('[name="subject"]').val();
var review = form.find('[name="review"]').val();
var tag = form.find('[name="tag"]').val();
var display = form.find('[name="display"]').val();
var format = form.find('[name="format"]').val();
var goods = form.find('[name="goods"]').val();
var dis_rating = form.find('[name="use_rating"]').is(":checked")?0:1;
var dis_like = form.find('[name="use_like"]').is(":checked")?0:1;
var dis_comment = form.find('[name="use_comment"]').is(":checked")?0:1;
var dis_listadd = form.find('[name="use_listadd"]').is(":checked")?0:1;
if (uid) {
setTimeout(function(){
$.post(rooturl+'/?r='+raccount+'&m=post&a=write',{
content : editorData,
uid : uid,
category_members : category_members,
list_members : list_members,
members : members,
upload : upload,
featured_img : featured_img,
html : html,
subject : subject,
review : review,
tag : tag,
format : format,
goods : goods,
display : display,
dis_rating : dis_rating,
dis_like : dis_like,
dis_comment : dis_comment,
dis_listadd : dis_listadd
},function(response,status){
if(status=='success'){
var result = $.parseJSON(response);
var error=result.error;
if (!error) {
var d_modify=result.d_modify;
form.find('[data-role="postsubmit"]').attr( 'disabled', false );
form.find('[data-role="d_modify"]').attr('data-original-title',d_modify);
form.find('[data-plugin="timeago"]').timeago("update", new Date());
form.find('[data-role="postsubmit"]').addClass('d-none');
form.find('[data-role="library"]').removeClass('d-none');
form.find('[data-role="share"]').removeClass('d-none');
} else {
alert(error);
}
} else {
alert(status);
}
});
}, 200);
} else {
form.find('[name="dis_rating"]').val(1); //평점 사용안함
form.find('[name="dis_like"]').val(dis_like);
form.find('[name="dis_comment"]').val(dis_comment);
form.find('[name="dis_listadd"]').val(dis_listadd);
setTimeout(function(){
getIframeForAction(f);
f.submit()
}, 200);
}
}

View File

@@ -0,0 +1,54 @@
<?php
$wdgvar['limit'] = 3; //전체 출력수
$wdgvar['title'] ='최근 리스트';
$listque = 'mbruid='.$M1['memberuid'].' and site='.$s;
if ($my['uid']) $listque .= ' and display > 3'; // 회원공개와 전체공개 포스트 출력
else $listque .= ' and display = 5'; // 전체공개 포스트만 출력
if ($list) $listque .= ' and id <>'.$list;
$_RCD=getDbArray($table['postlist'],$listque,'*','gid','asc',$wdgvar['limit'],1);
$_NUM = getDbRows($table['postlist'],$listque);
?>
<section class="widget-post-card-01">
<header class="d-flex justify-content-between align-items-center py-2">
<span><?php echo $wdgvar['title']?></span>
</header>
<?php if ($_NUM): ?>
<ul class="list-unstyled">
<?php $i=0;foreach($_RCD as $LIST):$i++;?>
<li class="media mb-2">
<a href="<?php echo getListLink($LIST,1) ?>" class="position-relative mr-2">
<img class="" src="<?php echo getPreviewResize(getListImageSrc($LIST['uid']),'160x90') ?>" alt="">
<span class="list_mask">
<span class="txt"><?php echo $LIST['num']?><i class="fa fa-list-ul d-block" aria-hidden="true"></i></span>
</span>
</a>
<div class="media-body">
<h5 class="h6 my-1 font-weight-light line-clamp-3">
<a href="<?php echo getListLink($LIST,1) ?>" class="text-reset" ><?php echo $LIST['name']?></a>
</h5>
<div class="mb-1">
<ul class="list-inline d-inline-block f13 text-muted">
<li class="list-inline-item">
<time data-plugin="timeago" datetime="<?php echo getDateFormat($LIST['d_regis'],'c')?>"></time>
</li>
</ul>
</div>
</div>
</li>
<?php endforeach?>
</ul>
<?php else: ?>
<div class="p-5 text-muted text-center border mb-3">
리스트가 없습니다.
</div>
<?php endif; ?>
</section><!-- /.widget -->

View File

@@ -0,0 +1,60 @@
<?php
$wdgvar['limit'] = 3; //전체 출력수
$wdgvar['title'] = $M1[$_HS['nametype']].'님의 포스트';
$postque = 'mbruid='.$M1['memberuid'].' and site='.$s.' and data <>'.$R['uid'];
if ($my['uid']) $postque .= ' and display > 3'; // 회원공개와 전체공개 포스트 출력
else $postque .= ' and display = 5'; // 전체공개 포스트만 출력
$_RCD=getDbArray($table['postmember'],$postque,'*','gid','asc',$wdgvar['limit'],1);
while($_R = db_fetch_array($_RCD)) $RCD[] = getDbData($table['postdata'],'gid='.$_R['gid'],'*');
$_NUM = getDbRows($table['postmember'],$postque);
?>
<section class="widget-post-card-01">
<header class="d-flex justify-content-between align-items-center pb-2">
<span><?php echo $wdgvar['title']?></span>
<?php if($wdgvar['link']):?>
<a href="<?php echo $wdgvar['link']?>" class="muted-link small">
더보기 <i class="fa fa-angle-right" aria-hidden="true"></i>
</a>
<?php endif?>
</header>
<?php if ($_NUM): ?>
<ul class="list-unstyled">
<?php $i=0;foreach($RCD as $POST):$i++;?>
<li class="media mb-2">
<a href="<?php echo getPostLink($POST,0) ?>" class="position-relative mr-2">
<img class="" src="<?php echo getPreviewResize(getUpImageSrc($POST),'160x90') ?>" alt="" >
<time class="badge badge-dark rounded-0 position-absolute" style="right:1px;bottom:1px"><?php echo getUpImageTime($POST) ?></time>
</a>
<div class="media-body">
<h5 class="h6 my-1 font-weight-light line-clamp-3">
<a href="<?php echo getPostLink($POST,0) ?>" class="text-reset" ><?php echo stripslashes($POST['subject'])?></a>
</h5>
<div class="mb-1">
<ul class="list-inline d-inline-block f13 text-muted">
<li class="list-inline-item">조회수 <?php echo $POST['hit']?>회 </li>
<li class="list-inline-item">
<time data-plugin="timeago" datetime="<?php echo getDateFormat($POST['d_regis'],'c')?>"></time>
</li>
</ul>
</div>
</div>
</li>
<?php endforeach?>
</ul>
<?php else: ?>
<div class="p-5 text-muted text-center border mb-3">
내역이 없습니다.
</div>
<?php endif; ?>
</section><!-- /.widget -->

View File

@@ -0,0 +1,43 @@
<div class="custom-control custom-radio my-1">
<input type="radio" id="report-radio-01" name="report-radio" class="custom-control-input">
<label class="custom-control-label" for="report-radio-01">성적인 콘텐츠</label>
</div>
<div class="custom-control custom-radio my-1">
<input type="radio" id="report-radio-02" name="report-radio" class="custom-control-input">
<label class="custom-control-label" for="report-radio-02">폭력적 또는 혐오스러운 콘텐츠</label>
</div>
<div class="custom-control custom-radio my-1">
<input type="radio" id="report-radio-03" name="report-radio" class="custom-control-input">
<label class="custom-control-label" for="report-radio-03">증오 또는 악의적인 콘텐츠</label>
</div>
<div class="custom-control custom-radio my-1">
<input type="radio" id="report-radio-04" name="report-radio" class="custom-control-input">
<label class="custom-control-label" for="report-radio-04">유해한 위험 행위</label>
</div>
<div class="custom-control custom-radio my-1">
<input type="radio" id="report-radio-05" name="report-radio" class="custom-control-input">
<label class="custom-control-label" for="report-radio-05">아동 학대</label>
</div>
<div class="custom-control custom-radio my-1">
<input type="radio" id="report-radio-06" name="report-radio" class="custom-control-input">
<label class="custom-control-label" for="report-radio-06">테러 조장</label>
</div>
<div class="custom-control custom-radio my-1">
<input type="radio" id="report-radio-07" name="report-radio" class="custom-control-input">
<label class="custom-control-label" for="report-radio-07">스팸 또는 사용자를 현혹하는 콘텐츠</label>
</div>
<div class="custom-control custom-radio my-1">
<input type="radio" id="report-radio-08" name="report-radio" class="custom-control-input">
<label class="custom-control-label" for="report-radio-08">권리 침해</label>
</div>
<div class="custom-control custom-radio my-1">
<input type="radio" id="report-radio-09" name="report-radio" class="custom-control-input">
<label class="custom-control-label" for="report-radio-09">기타</label>
</div>
<div class="mt-3">
<small class="text-muted">
운영팀 팀에서는 신고된 동영상 사용자의 커뮤니티 가이드 위반 여부를 판단하기 위해 연중무휴 24시간 검토 작업을 하고 있습니다.
커뮤니티 가이드를 위반한 계정은 제재를 받게 되며 심각하거나 반복적인 위반 행위에 대해서는 계정 해지 조치가 취해질 있습니다.
</small>
</div>

View File

@@ -0,0 +1,39 @@
<div data-role="attach">
<?php if($d['theme']['perm_photo']<=$my['level']):?>
<?php endif?>
<!--
module : 첨부파일 사용 모듈 ,
theme : 첨부파일 테마 ,
attach_handler_file : 파일첨부 실행 엘리먼트 ,
attach_handler_photo : 사진첨부 실행 엘리먼트 ,
parent_data : 수정시 필요한 해당 포스트 데이타 배열 변수,
attach_handler_getModalList : 업로드 리스트 모달로 호출용 엘리먼트 (class 인 경우 . 까지 넘긴다.) -->
<?php
// 설정값 세팅
// $parent_table=$wdgvar['parent_table'];
// $parent_uid=$wdgvar['parent_uid'];
// $parent_field=$wdgvar['parent_field'];
// $attach_mod=$wdgvar['attach_mod']; // main, list...
// $attach_object_type=$wdgvar['attach_object_type'];//첨부 대상에 따른 분류 : photo, file, link, video....
// $attach_tmpcode=$wdgvar['attach_tmpcode'];//첨부 대상에 따른 분류 : photo, file, link, video....
// $attach_featuredImg_form_name=$wdgvar['featuredImg_form_name'];//첨부 대상에 따른 분류 : photo, file, link, video....
// $attach_wdgvar_id=$wdgvar['widget_uid'];
$attachSkin = "_desktop/bs4-default-attach"; // 업로드 테마
$parent_module=$m; // 첨부파일 사용하는 모듈
$parent_data=$R; // 해당 포스트 데이타 (수정시 필요)
$attach_module_theme=$attachSkin; // 첨부파일 테마
$attach_handler_file='[data-role="attach-handler-file"]'; //파일첨부 실행 엘리먼트 button or 기타 엘리먼트 data-role="" 형태로 하는 것을 권고
$attach_handler_photo='[data-role="attach-handler-photo"]'; // 사진첨부 실행 엘리먼트 button or 기타 엘리먼트 data-role="" 형태로 하는 것을 권고
$attach_handler_getModalList='.getModalList'; // 첨부파일 리스트 호출 handler
$editor_type=$editor_type; // 에디터 타입 : html,markdown
$attach_object_type= 'photo';//첨부 대상에 따른 분류 : photo, file, link, video....
include $g['path_module'].'mediaset/attach.php'; // 함수 인클루드
?>
</div>

View File

@@ -0,0 +1,3 @@
<?php
$d['theme']['format'] = "doc,video,adv"; // 포맷 (문서형,비디오형,포토갤러리형,카드형) , 테마폴더 view_doc.php .. 연계
?>

View File

@@ -0,0 +1,142 @@
<!-- 사진 -->
<?php if ($R['upload']): ?>
<?php
$img_files = array();
$audio_files = array();
$video_files = array();
$down_files = array();
foreach($d['upload']['data'] as $_u){
if($_u['type']==2 and $_u['hidden']==0) array_push($img_files,$_u);
else if($_u['type']==4 and $_u['hidden']==0) array_push($audio_files,$_u);
else if($_u['type']==5 and $_u['hidden']==0) array_push($video_files,$_u);
else if($_u['type']==1 || $_u['type']==6 || $_u['type']==7 and $_u['hidden']==0) array_push($down_files,$_u);
}
$attach_photo_num = count ($img_files);
$attach_video_num = count ($video_files);
$attach_audio_num = count ($audio_files);
$attach_down_num = count ($down_files);
?>
<div class="clearfix">
<?php if($attach_photo_num>0):?>
<div class="float-left">
<ul class="list-inline mb-1 gallery animated fadeIn delay-1" data-plugin="photoswipe">
<?php foreach($img_files as $_u):?>
<?php
$img_origin=$_u['src'];
$thumb_list=getPreviewResize($img_origin,'180x120'); // 미리보기 사이즈 조정 (이미지 업로드시 썸네일을 만들 필요 없다.)
$thumb_modal=getPreviewResize($img_origin,'c'); // 정보수정 모달용 사이즈 조정 (이미지 업로드시 썸네일을 만들 필요 없다.)
?>
<figure class="list-inline-item">
<a class="" href="<?php echo $img_origin ?>" data-size="<?php echo $_u['width']?>x<?php echo $_u['height']?>" title="<?php echo $_u['name']?>">
<img src="<?php echo $thumb_list ?>" alt="" class="border">
</a>
<figcaption itemprop="caption description" class="f12 p-3">
<div class="media">
<div class="mr-2"><i class="fa fa-file-image-o fa-lg text-primary" aria-hidden="true"></i></div>
<div class="media-body">
<p class="mb-2 font-weight-bold"><?php echo $_u['name']?></p>
<small data-role="caption"><?php echo $_u['caption']?></small>
<small><?php echo getSizeFormat($_u['size'],1)?></small>
</div>
</div>
</figcaption>
<div class="card__corner">
<div class="card__corner-triangle"></div>
</div>
</figure>
<?php endforeach?>
</ul>
</div>
<?php endif?>
<?php if($attach_down_num>0):?>
<div class="float-left">
<ul class="list-inline mb-1 gallery animated fadeIn delay-1">
<?php foreach($down_files as $_u):?>
<?php
$ext_to_fa=array('xls'=>'excel','xlsx'=>'excel','ppt'=>'powerpoint','pptx'=>'powerpoint','txt'=>'text','pdf'=>'pdf','zip'=>'archive','doc'=>'word');
$ext_icon=in_array($_u['ext'],array_keys($ext_to_fa))?'-'.$ext_to_fa[$_u['ext']]:'';
?>
<li class="list-inline-item">
<div class="card f12" style="width: 180px">
<div class="card__corner">
<div class="card__corner-triangle"></div>
</div>
<div class="card-block d-flex justify-content-center align-items-center" style="height:87px">
<i class="fa fa-3x fa-file<?php echo $ext_icon?>-o text-muted"></i>
</div>
<div class="card-footer p-2 text-truncate text-muted bg-light">
<i class="fa fa-download" aria-hidden="true"></i> <?php echo $_u['name']?>
</div>
<a href="<?php echo $g['s']?>/?r=<?php echo $r?>&amp;m=mediaset&amp;a=download&amp;uid=<?php echo $_u['uid']?>" class="card-img-overlay bg-light text-muted p-3">
<div class="media">
<div class="mr-2"><i class="fa fa-file<?php echo $ext_icon?>-o fa-lg text-primary" aria-hidden="true"></i></div>
<div class="media-body">
<p class="mb-2 font-weight-bold"><?php echo $_u['name']?></p>
<small data-role="caption"><?php echo $_u['caption']?></small>
<small><?php echo getSizeFormat($_u['size'],1)?></small>
<span class="ml-2">
<i class="fa fa-download" aria-hidden="true"></i>
<small class="text-muted"><?php echo number_format($_u['down'])?></small>
</span>
</div>
</div>
</a>
</div>
</li>
<?php endforeach?>
</ul>
</div>
<?php endif?>
<?php if($attach_video_num>0):?>
<div class="card-deck">
<?php foreach($video_files as $_u):?>
<?php
$ext_to_fa=array('xls'=>'excel','xlsx'=>'excel','ppt'=>'powerpoint','pptx'=>'powerpoint','txt'=>'text','pdf'=>'pdf','zip'=>'archive','doc'=>'word');
$ext_icon=in_array($_u['ext'],array_keys($ext_to_fa))?'-'.$ext_to_fa[$_u['ext']]:'';
?>
<div class="card">
<video width="320" height="240" controls data-plugin="mediaelement" class="card-img-top">
<source src="<?php echo $_u['url']?><?php echo $_u['folder']?>/<?php echo $_u['tmpname']?>" type="video/<?php echo $_u['ext']?>">
</video>
<div class="card-body">
<h6 class="card-title"><?php echo $_u['name']?></h6>
<p class="card-text"><small class="text-muted">(<?php echo getSizeFormat($_u['size'],1)?>)</small></p>
</div><!-- /.card-block -->
</div><!-- /.card -->
<?php endforeach?>
</div><!-- /.card-deck -->
<?php endif?>
<?php if($attach_audio_num>0):?>
<?php foreach($audio_files as $_u):?>
<?php
$ext_to_fa=array('xls'=>'excel','xlsx'=>'excel','ppt'=>'powerpoint','pptx'=>'powerpoint','txt'=>'text','pdf'=>'pdf','zip'=>'archive','doc'=>'word');
$ext_icon=in_array($_u['ext'],array_keys($ext_to_fa))?'-'.$ext_to_fa[$_u['ext']]:'';
?>
<div class="card">
<audio controls data-plugin="mediaelement" class="card-img-top w-100">
<source src="<?php echo $_u['url']?><?php echo $_u['folder']?>/<?php echo $_u['tmpname']?>" type="audio/mp3">
</audio>
<div class="card-body">
<h6 class="card-title"><?php echo $_u['name']?></h6>
<p class="card-text"><small class="text-muted">(<?php echo getSizeFormat($_u['size'],1)?>)</small></p>
</div><!-- /.card-block -->
</div><!-- /.card -->
<?php endforeach?>
<?php endif?>
</div>
<?php endif; ?>

View File

@@ -0,0 +1,205 @@
<?php
switch ($sort) {
case 'gid' : $sort_txt='생성순';break;
case 'd_modify' : $sort_txt='최신순';break;
case 'hit' : $sort_txt='조회순';break;
case 'likes' : $sort_txt='좋아요순';break;
case 'comment' : $sort_txt='댓글순';break;
}
?>
<section>
<div class="row">
<div class="col-3">
<div class="card">
<div class="card-header">
<a href="<?php echo RW('m=post&mod=category') ?>" class="muted-link" title="전체보기">카테고리</a>
</div>
<div class="card-body">
<?php $_treeOptions=array('site'=>$s,'table'=>$table[$m.'category'],'dispNum'=>$my['uid']?true:false,'dispHidden'=>true,'dispCheckbox'=>false,'allOpen'=>true)?>
<?php $_treeOptions['link'] = RW('m=post&cat=')?>
<?php echo getTreeCategory($_treeOptions,$code,0,0,'')?>
</div>
</div><!-- /.card -->
</div>
<div class="col-9">
<header class="d-flex justify-content-between align-items-center border-bottom border-dark mt-2 pb-2">
<h3 class="mb-0">
<?php echo $CAT['name']?$CAT['name']:'전체 카테고리' ?>
</h3>
<div class="">
</div>
</header>
<div class="d-flex align-items-center py-3" role="filter">
<span class="f18">전체 <span class="text-primary"><?php echo number_format($NUM)?></span> 개</span>
<form name="postsearchf" action="<?php echo $g['page_reset'] ?>" method="get" class="form-inline ml-auto">
<?php if ($_HS['rewrite']): ?>
<input type="hidden" name="sort" value="<?php echo $sort?>">
<?php else: ?>
<input type="hidden" name="r" value="<?php echo $r?>">
<?php if($_mod):?>
<input type="hidden" name="mod" value="<?php echo $_mod?>">
<?php else:?>
<input type="hidden" name="m" value="<?php echo $m?>">
<input type="hidden" name="front" value="<?php echo $front?>">
<?php endif?>
<input type="hidden" name="page" value="<?php echo $page?>">
<input type="hidden" name="sort" value="<?php echo $sort?>">
<input type="hidden" name="orderby" value="<?php echo $orderby?>">
<input type="hidden" name="recnum" value="<?php echo $recnum?>">
<input type="hidden" name="type" value="<?php echo $type?>" />
<input type="hidden" name="mbrid" value="<?php echo $_MP['id']?>">
<?php endif; ?>
<input type="hidden" name="code" value="<?php echo $code?>">
<label class="mt-1 mr-2 sr-only">정열</label>
<div class="dropdown" data-role="sort">
<a class="btn btn-white dropdown-toggle" href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
정열 : <?php echo $sort_txt ?>
</a>
<div class="dropdown-menu shadow-sm" aria-labelledby="dropdownMenuLink" style="min-width: 116px;">
<button class="dropdown-item d-flex justify-content-between align-items-center<?php echo $sort=='gid'?' active':'' ?>" type="button" data-value="gid">
생성순
</button>
<button class="dropdown-item d-flex justify-content-between align-items-center<?php echo $sort=='d_modify'?' active':'' ?>" type="button" data-value="d_modify">
최신순
</button>
<button class="dropdown-item d-flex justify-content-between align-items-center<?php echo $sort=='hit'?' active':'' ?>" type="button" data-value="hit">
조회순
</button>
<button class="dropdown-item d-flex justify-content-between align-items-center<?php echo $sort=='likes'?' active':'' ?>" type="button" data-value="likes">
좋아요순
</button>
<button class="dropdown-item d-flex justify-content-between align-items-center<?php echo $sort=='comment'?' active':'' ?>" type="button" data-value="comment">
댓글순
</button>
</div>
</div>
<div class="input-group ml-2">
<input type="text" name="keyword" class="form-control" placeholder="제목,요약,태그 검색" value="<?php echo $_keyword?>">
<div class="input-group-append">
<button class="btn btn-white text-muted border-left-0" type="submit">
<i class="fa fa-search" aria-hidden="true"></i>
</button>
<?php if ($keyword): ?>
<a class="btn btn-white ml-1" href="<?php echo $g['post_reset'] ?>">리셋</a>
<?php endif; ?>
</div>
</div>
</form><!-- /.form-inline -->
</div><!-- /.d-flex -->
<?php if ($NUM): ?>
<ul class="list-unstyled" data-plugin="markjs">
<?php foreach($RCD as $R):?>
<li class="media my-4">
<?php if ($R['featured_img']): ?>
<a href="<?php echo getPostLink($R,0) ?>" class="position-relative mr-3">
<img src="<?php echo checkPostPerm($R) ?getPreviewResize(getUpImageSrc($R),'180x100'):getPreviewResize('/files/noimage.png','180x100') ?>" alt="">
<time class="badge badge-dark rounded-0 position-absolute f14" style="right:1px;bottom:1px"><?php echo checkPostPerm($R)?getUpImageTime($R):'' ?></time>
</a>
<?php endif; ?>
<div class="media-body">
<h5 class="mt-0 mb-1">
<a class="text-decoration-none text-reset" href="<?php echo getPostLink($R,0) ?>">
<?php echo checkPostPerm($R)?stripslashes($R['subject']):'[비공개 포스트]'?>
</a>
</h5>
<?php if (checkPostPerm($R)): ?>
<div class="mb-1">
<ul class="list-inline d-inline-block f13 text-muted">
<li class="list-inline-item">조회 <?php echo $R['hit']?> </li>
<li class="list-inline-item">좋아요 <?php echo $R['likes']?> </li>
<li class="list-inline-item">댓글 <?php echo $R['comment']?> </li>
<li class="list-inline-item">
<time class="text-muted" data-plugin="timeago" datetime="<?php echo getDateFormat($R['d_modify']?$R['d_modify']:$R['d_regis'],'c')?>"></time>
</li>
</ul>
<?php if ($R['category']): ?>
<span class="ml-2 f13 text-muted">
<i class="fa fa-folder-o mr-1" aria-hidden="true"></i> <?php echo getAllPostCat($m,$R['category']) ?>
</span>
<?php endif; ?>
<span class="ml-2 f13 text-muted">
<!-- 태그 -->
<?php $_tags=explode(',',$R['tag'])?>
<?php $_tagn=count($_tags)?>
<?php $i=0;for($i = 0; $i < $_tagn; $i++):?>
<?php $_tagk=trim($_tags[$i])?>
<a class="badge badge-light" href="<?php echo RW('m=post&mod=keyword&') ?>keyword=<?php echo urlencode($_tagk)?>"><?php echo $_tagk?></a>
<?php endfor?>
</span>
<span class="badge badge-secondary ml-2"><?php echo checkPostOwner($R) && $R['display']!=5?$g['displaySet']['label'][$R['display']]:'' ?></span>
</div>
</div>
<?php else: ?>
<p class="text-muted py-3">
이 포스트에 대한 액세스 권한이 없습니다.
</p>
<?php endif; ?>
</li>
<?php endforeach?>
</ul>
<?php else: ?>
<div class="d-flex align-items-center justify-content-center" style="height: 50vh">
<div class="text-muted">
포스트가 없습니다.
</div>
</div>
<?php endif; ?>
<footer class="d-flex justify-content-between mt-5">
<div class=""></div>
<?php if ($NUM > $recnum): ?>
<ul class="pagination mb-0">
<?php echo getPageLink(10,$p,$TPG,$_N)?>
</ul>
<?php endif; ?>
<div class="">
</div>
</footer>
</div>
</div><!-- /.row -->
</section>
<script>
$( document ).ready(function() {
// 툴바
$('[name="postsearchf"] .dropdown-item').click(function(){
var form = $('[name="postsearchf"]');
var value = $(this).attr('data-value');
var role = $(this).closest('.dropdown').attr('data-role');
form.find('[name="'+role+'"]').val(value)
form.submit();
});
// marks.js
$('[data-plugin="markjs"]').mark("<?php echo $keyword ?>");
});
</script>

View File

@@ -0,0 +1,192 @@
<div class="modal" id="modal-post-share" tabindex="-1" role="dialog">
<div class="modal-dialog modal-dialog-centered" role="document" style="width: 400px">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">공유하기</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body text-center p-5">
<?php include $g['dir_module_skin'].'_linkshare.php'?>
</div>
</div>
</div>
</div>
<div class="modal" id="modal-post-listadd" tabindex="-1" role="dialog">
<div class="modal-dialog modal-dialog-centered" role="document" style="width: 400px">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">저장하기</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body p-2" style="min-height: 200px">
<?php if ($my['uid']) include $g['dir_module_skin'].'_listadd.php'?>
</div>
<div class="modal-footer py-2 f13">
<button type="button" class="btn btn-link mr-auto text-reset text-decoration-none" data-role="list-add-button">
<i class="material-icons text-muted align-bottom mr-1">add</i>
새 리스트 만들기
</button>
<div class="input-group my-2 d-none" data-role="list-add-input">
<input type="text" class="form-control" placeholder="리스트명 입력" name="list_name">
<div class="input-group-append">
<button class="btn btn-white" type="button" data-act="list-add-submit">
<span class="not-loading">
추가
</span>
<span class="is-loading">
<span class="spinner-border spinner-border-sm" role="status" aria-hidden="true"></span>
</span>
</button>
<button class="btn btn-white" type="button" data-act="list-add-cancel">취소</button>
</div>
</div><!-- /.input-group -->
<button type="button" class="btn btn-link" data-act="submit">
<span class="not-loading">
저장하기
</span>
<span class="is-loading">
<span class="spinner-border spinner-border-sm mr-1" role="status" aria-hidden="true"></span>
저장중...
</span>
</button>
</div>
</div>
</div>
</div>
<div class="modal" id="modal-post-report" tabindex="-1" role="dialog">
<div class="modal-dialog modal-dialog-centered" role="document" style="width: 400px">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">신고하기</h5>
</div>
<div class="modal-body" style="min-height: 200px">
<?php include $g['dir_module_skin'].'_report.php'?>
</div>
<div class="modal-footer py-2">
<button type="button" class="btn btn-link text-muted" data-dismiss="modal">취소</button>
<button type="button" class="btn btn-link">접수하기</button>
</div>
</div>
</div>
</div>
<script>
$( document ).ready(function() {
$('#modal-post-listadd').on('show.bs.modal', function (e) {
var modal = $(this);
var button = $(e.relatedTarget);
var uid = button.attr('data-uid');
var submit = modal.find('[data-act="submit"]')
modal.attr('data-uid',uid);
submit.attr('disabled',false );
})
$('#modal-post-listadd').find('[data-act="submit"]').click(function(){
var modal = $('#modal-post-listadd');
var uid = modal.attr('data-uid');
// 리스트 체크
var list_sel=$('input[name="postlist_members[]"]');
var list_arr=$('input[name="postlist_members[]"]:checked').map(function(){return $(this).val();}).get();
var list_n=list_arr.length;
var list_members='';
for (var i=0;i <list_n;i++) {
if(list_arr[i]!='') list_members += '['+list_arr[i]+']';
}
$(this).attr('disabled',true );
setTimeout(function(){
$.post(rooturl+'/?r='+raccount+'&m=post&a=update_listindex',{
uid : uid,
list_members : list_members
},function(response,status){
if(status=='success'){
modal.modal('hide');
$.notify({message: '리스트에 저장되었습니다.'},{type: 'default'});
} else {
alert(status);
}
});
}, 500);
});
$('#modal-post-listadd').find('[data-role="list-add-button"]').click( function() {
$(this).addClass('d-none');
$('#modal-post-listadd').find('[data-role="list-add-input"]').removeClass('d-none');
$('#modal-post-listadd').find('[data-act="submit"]').addClass('d-none');
$('#modal-post-listadd').find('[data-role="list-add-input"]').find('.form-control').val('').focus();
} );
$('#modal-post-listadd').find('[data-act="list-add-cancel"]').click( function() {
$('#modal-post-listadd').find('[data-role="list-add-button"]').removeClass('d-none');
$('#modal-post-listadd').find('[data-act="submit"]').removeClass('d-none');
$('#modal-post-listadd').find('[data-role="list-add-input"]').addClass('d-none')
} );
$('#modal-post-listadd').find('[data-act="list-add-submit"]').click(function(e){
var modal = $('#modal-post-listadd');
var button = $(this)
var input = modal.find('[name="list_name"]');
var list = $('[data-role="list-selector"]');
var checked_num = list.find('[data-role="list_num"]');
var checked_num_val = Number(checked_num.text());
var name = input.val();
if (!name) {
input.focus();
return false
}
button.attr( 'disabled', true );
setTimeout(function(){
$.post(rooturl+'/?r='+raccount+'&m=post&a=regis_list',{
name : name,
send_mod : 'ajax'
},function(response,status){
if(status=='success'){
var result = $.parseJSON(response);
var uid=result.uid;
var icon=result.icon;
var label=result.label;
var item = '<div class="d-flex justify-content-between align-items-center px-3 py-2"><div class="custom-control custom-checkbox">'+
'<input type="checkbox" id="listRadio'+uid+'" name="postlist_members[]" value="'+uid+'" class="custom-control-input" checked>'+
'<label class="custom-control-label" for="listRadio'+uid+'">'+name+'</label>'+
'</div><i class="material-icons text-muted mr-2" data-toggle="tooltip" title="" data-original-title="'+label+'">'+icon+'</i></div>';
button.attr( 'disabled', false );
input.val('');
$('#modal-post-listadd').find('[data-role="list-add-button"]').removeClass('d-none');
$('#modal-post-listadd').find('[data-role="list-add-input"]').addClass('d-none')
$('#modal-post-listadd').find('[data-act="submit"]').removeClass('d-none');
list.append(item);
$('#modal-post-listadd').find('[data-toggle="tooltip"]').tooltip();
} else {
alert(status);
}
});
}, 200);
});
$('#modal-post-report').on('show.bs.modal', function (e) {
if (!memberid) {
alert('로그인 해주세요.');
return false;
}
})
});
</script>

View File

@@ -0,0 +1,97 @@
<section>
<h1 class="h4 my-5 text-center">'<?php echo $keyword ?>' <small class="text-muted">포스트 검색결과 <?php echo $NUM ?>개</small></h1>
<hr>
<?php if ($NUM): ?>
<ul class="list-unstyled" data-plugin="markjs">
<?php foreach($RCD as $R):?>
<?php $R['mobile']=isMobileConnect($R['agent'])?>
<li class="media my-4">
<?php if ($R['featured_img']): ?>
<a href="<?php echo getPostLink($R,0) ?>" class="position-relative mr-3">
<img src="<?php echo checkPostPerm($R) ?getPreviewResize(getUpImageSrc($R),'180x100'):getPreviewResize('/files/noimage.png','180x100') ?>" alt="">
<time class="badge badge-dark rounded-0 position-absolute f14" style="right:1px;bottom:1px"><?php echo checkPostPerm($R)?getUpImageTime($R):'' ?></time>
</a>
<?php endif; ?>
<div class="media-body">
<h5 class="mt-0 mb-1">
<a href="<?php echo getPostLink($R,0) ?>">
<?php echo checkPostPerm($R)?stripslashes($R['subject']):'[비공개 포스트]'?>
</a>
</h5>
<?php if (checkPostPerm($R)): ?>
<div class="text-muted mb-1"><?php echo $R['review']?></div>
<div class="mb-1">
<ul class="list-inline d-inline-block ml-2 f13 text-muted">
<li class="list-inline-item">조회 <?php echo $R['hit']?> </li>
<li class="list-inline-item">좋아요 <?php echo $R['likes']?> </li>
<li class="list-inline-item">댓글 <?php echo $R['comment']?> </li>
<li class="list-inline-item"><?php echo getDateFormat($R['d_regis'],'Y.m.d H:i')?></li>
</ul>
<span class="ml-2 f13 text-muted">
<i class="fa fa-folder-o mr-1" aria-hidden="true"></i> <?php echo getAllPostCat($m,$R['category']) ?>
</span>
<span class="ml-2 f13 text-muted">
<!-- 태그 -->
<?php $_tags=explode(',',$R['tag'])?>
<?php $_tagn=count($_tags)?>
<?php $i=0;for($i = 0; $i < $_tagn; $i++):?>
<?php $_tagk=trim($_tags[$i])?>
<a class="badge badge-light" href="<?php echo RW('m=post&mod=keyword&') ?>keyword=<?php echo urlencode($_tagk)?>">
# <?php echo $_tagk?>
</a>
<?php endfor?>
</span>
<span class="badge badge-secondary ml-2"><?php echo checkPostOwner($R) && $R['display']!=5?$g['displaySet']['label'][$R['display']]:'' ?></span>
</div>
<?php else: ?>
<div class="text-muted py-3">
이 포스트에 대한 액세스 권한이 없습니다.
</div>
<?php endif; ?>
</div>
</li>
<?php endforeach?>
</ul>
<?php else: ?>
<div class="p-5 text-center text-muted">
자료가 없습니다.
</div>
<?php endif; ?>
<footer class="d-flex justify-content-between mt-5">
<div class=""></div>
<?php if ($NUM > $recnum): ?>
<ul class="pagination mb-0">
<?php echo getPageLink(10,$p,$TPG,'')?>
</ul>
<?php endif; ?>
<div class="">
</div>
</footer>
</section>
<!-- markjs js : https://github.com/julmot/mark.js -->
<?php getImport('markjs','jquery.mark.min','8.11.1','js')?>
<script>
$( document ).ready(function() {
// marks.js
$('[data-plugin="markjs"]').mark("<?php echo $keyword ?>");
});
</script>

View File

@@ -0,0 +1,161 @@
<?php
$c_recnum = $d['post']['rownum']; // 한 열에 출력할 카드 갯수
$totalCardDeck=ceil($NUM/$c_recnum); // card-deck 갯수 ($NUM 은 해당 데이타의 총 card 갯수 getDbRows 이용)
$total_card_num = $totalCardDeck*$c_recnum;// 총 출력되야 할 card 갯수(빈카드 포함)
$print_card_num = 0; // 실제 출력된 카드 숫자 (아래 card 출력될 때마다 1 씩 증가)
$lack_card_num = $total_card_num;
switch ($sort) {
case 'gid' : $sort_txt='생성순';break;
case 'd_last' : $sort_txt='최신순';break;
}
?>
<section>
<div class="d-flex justify-content-between align-items-center mt-4">
<h3 class="mb-0">
전체 리스트
</h3>
<div class="">
</div>
</div>
<div class="d-flex align-items-center border-top border-dark pt-4 pb-3" role="filter">
<span class="f18">전체 <span class="text-primary"><?php echo number_format($NUM)?></span> 개</span>
<form name="listsearchf" action="<?php echo $g['page_reset'] ?>" method="get" class="form-inline ml-auto">
<?php if ($_HS['rewrite']): ?>
<input type="hidden" name="sort" value="<?php echo $sort?>">
<?php else: ?>
<input type="hidden" name="r" value="<?php echo $r?>">
<?php if($_mod):?>
<input type="hidden" name="mod" value="<?php echo $_mod?>">
<?php else:?>
<input type="hidden" name="m" value="<?php echo $m?>">
<input type="hidden" name="front" value="<?php echo $front?>">
<?php endif?>
<input type="hidden" name="page" value="<?php echo $page?>">
<input type="hidden" name="sort" value="<?php echo $sort?>">
<input type="hidden" name="orderby" value="<?php echo $orderby?>">
<input type="hidden" name="recnum" value="<?php echo $recnum?>">
<input type="hidden" name="type" value="<?php echo $type?>" />
<input type="hidden" name="mbrid" value="<?php echo $_MP['id']?>">
<?php endif; ?>
<label class="mt-1 mr-2 sr-only">정열</label>
<div class="dropdown" data-role="sort">
<a class="btn btn-white dropdown-toggle" href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
정열 : <?php echo $sort_txt ?>
</a>
<div class="dropdown-menu shadow-sm" aria-labelledby="dropdownMenuLink" style="min-width: 116px;">
<button class="dropdown-item d-flex justify-content-between align-items-center<?php echo $sort=='gid'?' active':'' ?>" type="button" data-value="gid">
생성순
</button>
<button class="dropdown-item d-flex justify-content-between align-items-center<?php echo $sort=='d_last'?' active':'' ?>" type="button" data-value="d_last">
최신순
</button>
</div>
</div>
<div class="input-group ml-2">
<input type="text" name="keyword" class="form-control" placeholder="리스트명 검색" value="<?php echo $_keyword?>">
<div class="input-group-append">
<button class="btn btn-white text-muted border-left-0" type="submit">
<i class="fa fa-search" aria-hidden="true"></i>
</button>
<?php if ($keyword): ?>
<a class="btn btn-white ml-1" href="<?php echo $g['post_reset'] ?>">리셋</a>
<?php endif; ?>
</div>
</div>
</form><!-- /.form-inline -->
</div><!-- /.d-flex -->
<?php if ($NUM): ?>
<div class="card-deck" data-plugin="markjs">
<?php $i=0;foreach($RCD as $R):$i++?>
<div class="card mb-3">
<a href="<?php echo getListLink($R,0) ?>" class="position-relative">
<img src="<?php echo getPreviewResize(getListImageSrc($R['uid']),'320x180') ?>" class="img-fluid" alt="">
<span class="list_mask">
<span class="txt"><?php echo $R['num']?><i class="fa fa-list-ul d-block" aria-hidden="true"></i></span>
</span>
<img class="list_avatar shadow-sm" src="<?php echo getAvatarSrc($R['mbruid'],'50') ?>" width="50" height="50" alt="">
</a>
<div class="card-body pt-5 p-3">
<h5 class="card-title h6 mb-1">
<a class="muted-link" href="<?php echo getListLink($R,0) ?>">
<?php echo $R['name']?>
</a>
</h5>
<span class="small text-muted">업데이트: <time class="text-muted" data-plugin="timeago" datetime="<?php echo getDateFormat($R['d_last'],'c')?>"></time></span>
<?php if(getNew($R['d_last'],$d['post']['newtime'])):?><span class="rb-new ml-1"></span><?php endif?>
</div><!-- /.card-body -->
</div><!-- /.card -->
<?php
$print_card_num++; // 카드 출력될 때마 1씩 증가
$lack_card_num = $total_card_num - $print_card_num;
?>
<?php if(!($i%$c_recnum)):?></div><div class="card-deck mt-3" data-role="post-list"><?php endif?>
<?php endforeach?>
<?php if($lack_card_num ):?>
<?php for($j=0;$j<$lack_card_num;$j++):$i++;?>
<div class="card border-0" style="background-color: transparent"></div>
<?php if(!($i%$c_recnum)):?></div><div class="card-deck mt-3" data-role="post-list"><?php endif?>
<?php endfor?>
<?php endif?>
</div><!-- /.card-deck -->
<?php else: ?>
<div class="p-5 text-center text-muted">
등록된 리스트가 없습니다.
</div>
<?php endif; ?>
<footer class="d-flex justify-content-between mt-5">
<div class=""></div>
<?php if ($NUM > $recnum): ?>
<ul class="pagination mb-0">
<?php echo getPageLink(10,$p,$TPG,$_N)?>
</ul>
<?php endif; ?>
<div class="">
</div>
</footer>
</section>
<script>
$( document ).ready(function() {
// 툴바
$('[name="listsearchf"] .dropdown-item').click(function(){
var form = $('[name="listsearchf"]');
var value = $(this).attr('data-value');
var role = $(this).closest('.dropdown').attr('data-role');
form.find('[name="'+role+'"]').val(value)
form.submit();
});
// marks.js
$('[data-plugin="markjs"]').mark("<?php echo $keyword ?>");
});
</script>

View File

@@ -0,0 +1,114 @@
<?php
$c_recnum = $d['post']['rownum']; // 한 열에 출력할 카드 갯수
$totalCardDeck=ceil($NUM/$c_recnum); // card-deck 갯수 ($NUM 은 해당 데이타의 총 card 갯수 getDbRows 이용)
$total_card_num = $totalCardDeck*$c_recnum;// 총 출력되야 할 card 갯수(빈카드 포함)
$print_card_num = 0; // 실제 출력된 카드 숫자 (아래 card 출력될 때마다 1 씩 증가)
$lack_card_num = $total_card_num;
?>
<section>
<div class="d-flex justify-content-between align-items-center py-2 mt-3 mb-4 border-bottom border-dark">
<h3 class="h4 mb-0">
<a href="<?php echo getProfileLink($LIST['mbruid'])?><?php echo $_HS['rewrite']?'/':'&page=' ?>list" data-toggle="tooltip" title="<?php echo $MBR['name'] ?>의 리스트" class="d-inline-block align-bottom">
<img src="<?php echo getAvatarSrc($LIST['mbruid'],'30') ?>" width="30" height="30" alt="<?php echo $MBR['name'] ?>" class="mr-1 rounded-circle">
</a>
<?php echo $LIST['name'] ?> <small class="text-muted"><?php echo $NUM ?>개</small>
</h3>
<div class="">
<a class="btn btn-white" href="/list">전체 리스트</a>
<button class="btn btn-white" data-history="back" type="button">이전</button>
<?php if ($_perm['list_owner']): ?>
<a class="btn btn-white" href="<?php echo RW('mod=dashboard&page=list_view&id='.$listid)?>">관리</a>
<?php endif; ?>
</div>
</div>
<p>
<?php echo $LIST['review'] ?>
</p>
<!-- 태그 -->
<?php if ($LIST['tag']): ?>
<div class="my-4">
<?php $_tags=explode(',',$LIST['tag'])?>
<?php $_tagn=count($_tags)?>
<?php $i=0;for($i = 0; $i < $_tagn; $i++):?>
<?php $_tagk=trim($_tags[$i])?>
<a class="badge badge-light rounded-0 f15 font-weight-light bg-light border-0 py-2" href="<?php echo RW('m=post&mod=keyword&') ?>keyword=<?php echo urlencode($_tagk)?>">
#<?php echo $_tagk?>
</a>
<?php endfor?>
</div>
<?php endif; ?>
<?php if ($NUM): ?>
<div class="card-deck">
<?php $i=0;foreach($RCD as $R):$i++?>
<div class="card mb-3">
<?php if ($R['featured_img']): ?>
<a href="<?php echo getPostLink($R,$mbrid?1:0).($GLOBALS['_HS']['rewrite']?'?':'&').'list='.$listid ?>" class="position-relative">
<img src="<?php echo checkPostPerm($R)?getPreviewResize(getUpImageSrc($R),'320x180'):getPreviewResize('/files/noimage.png','320x180') ?>" class="img-fluid" alt="">
<time class="badge badge-dark rounded-0 position-absolute f14" style="right:1px;bottom:1px"><?php echo checkPostPerm($R)?getUpImageTime($R):'' ?></time>
</a>
<?php endif; ?>
<div class="card-body p-3">
<h5 class="card-title h6 mb-1 line-clamp-2">
<a class="muted-link" href="<?php echo getPostLink($R,$mbrid?1:0).($GLOBALS['_HS']['rewrite']?'?':'&').'list='.$listid ?>">
<?php echo checkPostPerm($R)?stripslashes($R['subject']):'[비공개 포스트]'?>
</a>
</h5>
<?php if (checkPostPerm($R)): ?>
<ul class="list-inline f13 text-muted mb-0">
<li class="list-inline-item">조회 <?php echo $R['hit']?> </li>
<li class="list-inline-item">좋아요 <?php echo $R['likes']?> </li>
<li class="list-inline-item">댓글 <?php echo $R['comment']?> </li>
</ul>
<time class="text-muted small" data-plugin="timeago" datetime="<?php echo getDateFormat($R['d_regis'],'c')?>"></time>
<?php if(getNew($R['d_regis'],$d['post']['newtime'])):?><span class="rb-new ml-1"></span><?php endif?>
<span class="badge badge-secondary ml-2"><?php echo checkPostOwner($R) && $R['display']!=5?$g['displaySet']['label'][$R['display']]:'' ?></span>
<?php endif; ?>
</div><!-- /.card-body -->
</div><!-- /.card -->
<?php
$print_card_num++; // 카드 출력될 때마 1씩 증가
$lack_card_num = $total_card_num - $print_card_num;
?>
<?php if(!($i%$c_recnum)):?></div><div class="card-deck mt-3" data-role="post-list"><?php endif?>
<?php endforeach?>
<?php if($lack_card_num ):?>
<?php for($j=0;$j<$lack_card_num;$j++):$i++;?>
<div class="card border-0" style="background-color: transparent"></div>
<?php if(!($i%$c_recnum)):?></div><div class="card-deck mt-3" data-role="post-list"><?php endif?>
<?php endfor?>
<?php endif?>
</div><!-- /.card-deck -->
<?php else: ?>
<div class="p-5 text-center text-muted">
등록된 포스트가 없습니다.
</div>
<?php endif; ?>
<footer class="d-flex justify-content-between mt-5">
<div class=""></div>
<?php if ($NUM > $recnum): ?>
<ul class="pagination mb-0">
<?php echo getPageLink(10,$p,$TPG,$_N)?>
</ul>
<?php endif; ?>
<div class="">
</div>
</footer>
</section>

View File

@@ -0,0 +1 @@
BS4 기본테마

View File

@@ -0,0 +1,183 @@
<?php
$c_recnum = $d['post']['rownum']; // 한 열에 출력할 카드 갯수
$totalCardDeck=ceil($NUM/$c_recnum); // card-deck 갯수 ($NUM 은 해당 데이타의 총 card 갯수 getDbRows 이용)
$total_card_num = $totalCardDeck*$c_recnum;// 총 출력되야 할 card 갯수(빈카드 포함)
$print_card_num = 0; // 실제 출력된 카드 숫자 (아래 card 출력될 때마다 1 씩 증가)
$lack_card_num = $total_card_num;
switch ($sort) {
case 'gid' : $sort_txt='생성순';break;
case 'd_modify' : $sort_txt='최신순';break;
case 'hit' : $sort_txt='조회순';break;
case 'likes' : $sort_txt='좋아요순';break;
case 'dislikes' : $sort_txt='싫어요순';break;
case 'comment' : $sort_txt='댓글순';break;
}
?>
<section>
<div class="d-flex justify-content-between align-items-center mt-4">
<h3 class="mb-0">
전체 포스트
</h3>
<div class="">
</div>
</div>
<div class="d-flex align-items-center border-top border-dark pt-4 pb-3" role="filter">
<span class="f18">전체 <span class="text-primary"><?php echo number_format($NUM)?></span> 개</span>
<form name="postsearchf" action="<?php echo $g['page_reset'] ?>" method="get" class="form-inline ml-auto">
<?php if ($_HS['rewrite']): ?>
<input type="hidden" name="sort" value="<?php echo $sort?>">
<?php else: ?>
<input type="hidden" name="r" value="<?php echo $r?>">
<?php if($_mod):?>
<input type="hidden" name="mod" value="<?php echo $_mod?>">
<?php else:?>
<input type="hidden" name="m" value="<?php echo $m?>">
<input type="hidden" name="front" value="<?php echo $front?>">
<?php endif?>
<input type="hidden" name="page" value="<?php echo $page?>">
<input type="hidden" name="sort" value="<?php echo $sort?>">
<input type="hidden" name="orderby" value="<?php echo $orderby?>">
<input type="hidden" name="recnum" value="<?php echo $recnum?>">
<input type="hidden" name="type" value="<?php echo $type?>" />
<?php endif; ?>
<label class="mt-1 mr-2 sr-only">정열</label>
<div class="dropdown" data-role="sort">
<a class="btn btn-white dropdown-toggle" href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
정열 : <?php echo $sort_txt ?>
</a>
<div class="dropdown-menu shadow-sm" aria-labelledby="dropdownMenuLink" style="min-width: 116px;">
<button class="dropdown-item d-flex justify-content-between align-items-center<?php echo $sort=='gid'?' active':'' ?>" type="button" data-value="gid">
생성순
</button>
<button class="dropdown-item d-flex justify-content-between align-items-center<?php echo $sort=='d_modify'?' active':'' ?>" type="button" data-value="d_modify">
최신순
</button>
<button class="dropdown-item d-flex justify-content-between align-items-center<?php echo $sort=='hit'?' active':'' ?>" type="button" data-value="hit">
조회순
</button>
<button class="dropdown-item d-flex justify-content-between align-items-center<?php echo $sort=='likes'?' active':'' ?>" type="button" data-value="likes">
좋아요순
</button>
<button class="dropdown-item d-flex justify-content-between align-items-center<?php echo $sort=='dislikes'?' active':'' ?>" type="button" data-value="dislikes">
싫어요순
</button>
<button class="dropdown-item d-flex justify-content-between align-items-center<?php echo $sort=='comment'?' active':'' ?>" type="button" data-value="comment">
댓글순
</button>
</div>
</div>
<div class="input-group ml-2">
<input type="text" name="keyword" class="form-control" placeholder="제목,리뷰,태그 검색" value="<?php echo $_keyword?>">
<div class="input-group-append">
<button class="btn btn-white text-muted border-left-0" type="submit">
<i class="fa fa-search" aria-hidden="true"></i>
</button>
<?php if ($keyword): ?>
<a class="btn btn-white ml-1" href="<?php echo $g['post_reset'] ?>">리셋</a>
<?php endif; ?>
</div>
</div>
</form><!-- /.form-inline -->
</div><!-- /.d-flex -->
<?php if ($NUM): ?>
<div class="card-deck" data-role="post-list" data-plugin="markjs">
<?php $i=0;foreach($RCD as $R):$i++?>
<div class="card mb-3">
<?php if ($R['featured_img']): ?>
<a href="<?php echo getPostLink($R,0) ?>" class="position-relative">
<img src="<?php echo checkPostPerm($R)?getPreviewResize(getUpImageSrc($R),'400x225'):getPreviewResize('/files/noimage.png','300x168') ?>" class="img-fluid" alt="">
<time class="badge badge-dark rounded-0 position-absolute f14" style="right:1px;bottom:1px"><?php echo checkPostPerm($R)?getUpImageTime($R):'' ?></time>
</a>
<?php endif; ?>
<div class="card-body p-3">
<h5 class="card-title h6 mb-1 line-clamp-2">
<a class="muted-link" href="<?php echo getPostLink($R,0) ?>">
<?php echo checkPostPerm($R)?stripslashes($R['subject']):'[비공개 포스트]'?>
</a>
</h5>
<?php if (checkPostPerm($R)): ?>
<ul class="list-inline f13 text-muted mb-0">
<li class="list-inline-item">조회 <?php echo $R['hit']?> </li>
<li class="list-inline-item">좋아요 <?php echo $R['likes']?> </li>
<li class="list-inline-item">댓글 <?php echo $R['comment']?> </li>
</ul>
<time class="text-muted small" data-plugin="timeago" datetime="<?php echo getDateFormat($R['d_regis'],'c')?>"></time>
<?php if(getNew($R['d_regis'],$d['post']['newtime'])):?><i class="material-icons align-middle">fiber_new</i><?php endif?>
<span class="badge badge-secondary ml-2"><?php echo checkPostOwner($R) && $R['display']!=5?$g['displaySet']['label'][$R['display']]:'' ?></span>
<?php endif; ?>
</div><!-- /.card-body -->
</div><!-- /.card -->
<?php
$print_card_num++; // 카드 출력될 때마 1씩 증가
$lack_card_num = $total_card_num - $print_card_num;
?>
<?php if(!($i%$c_recnum)):?></div><div class="card-deck mt-3" data-role="post-list" data-plugin="markjs"><?php endif?>
<?php endforeach?>
<?php if($lack_card_num ):?>
<?php for($j=0;$j<$lack_card_num;$j++):$i++;?>
<div class="card border-0" style="background-color: transparent"></div>
<?php if(!($i%$c_recnum)):?></div><div class="card-deck mt-3" data-role="post-list" data-plugin="markjs"><?php endif?>
<?php endfor?>
<?php endif?>
</div><!-- /.card-deck -->
<?php else: ?>
<div class="p-5 text-center text-muted">
등록된 포스트가 없습니다.
</div>
<?php endif; ?>
<footer class="d-flex justify-content-between mt-5">
<div class=""></div>
<?php if ($NUM > $recnum): ?>
<ul class="pagination mb-0">
<?php echo getPageLink(10,$p,$TPG,$_N)?>
</ul>
<?php endif; ?>
<div class="">
</div>
</footer>
</section>
<script>
$( document ).ready(function() {
// 툴바
$('[name="postsearchf"] .dropdown-item').click(function(){
var form = $('[name="postsearchf"]');
var value = $(this).attr('data-value');
var role = $(this).closest('.dropdown').attr('data-role');
form.find('[name="'+role+'"]').val(value)
form.submit();
});
// marks.js
$('[data-plugin="markjs"]').mark("<?php echo $keyword ?>");
});
</script>

View File

@@ -0,0 +1,32 @@
<?php
include $g['dir_module_skin'].'_header.php';
$formats = explode(',', $d['theme']['format']);array_unshift($formats,'');
include $g['dir_module_skin'].'view_'.$formats[$R['format']].'.php';
include $g['dir_module_skin'].'_footer.php';
include $g['dir_module_skin'].'component.php';
if ($_perm['post_owner']) {
include_once $g['dir_module'].'mod/_component.desktop.php';
getImport('Chart.js','Chart.bundle.min','2.8.0','js');
}
?>
<script>
putCookieAlert('post_action_result') // 실행결과 알림 메시지 출력
$( document ).ready(function() {
$('[data-toggle="print"]').click(function() {
window.print()
});
$('[data-toggle="actionIframe"] , [data-act="actionIframe"]').click(function() {
getIframeForAction('');
frames.__iframe_for_action__.location.href = $(this).attr("data-url");
});
});
</script>

View File

@@ -0,0 +1,231 @@
<section class="post-section row">
<div class="col-8">
<h2 class="h3"><?php echo stripslashes($R['subject']) ?></h2>
<div class="page-meta f13">
<div class="page-meta-body">
<div class="project-meta">
<span class="badge badge-light align-middle border border-success text-success mr-1"><?php echo $g['projectSet']['type'][$R['type']] ?></span>
<time class="js-timeago mr-1 text-muted js-tooltip" title="등록일시">
<i class="fa fa-clock-o" aria-hidden="true"></i> <?php echo getDateFormat($R['d_regis'],'Y-m-d H:i') ?>
</time>
<?php if($R['d_modify']):?>
<time class="text-muted f12">
(<?php echo '수정 : '.getDateFormat($R['d_modify'],'Y-m-d H:i') ?>)
</time>
<?php endif?>
<?php if (!$R['disabled_comment']): ?>
<span class="ml-2">· 댓글 : <a class="muted-link" href="#comments"><?php echo $R['comment']?></a></span>
<?php endif; ?>
<span class="ml-2">
조회 : <?php echo $R['hit']?>
</span>
<?php if (!$R['disabled_like']): ?>
<span class="ml-2">· <i class="fa fa-thumbs-o-up" aria-hidden="true"></i> <span class="text-muted" data-role=like_num><?php echo $R['likes']?></span></span>
<?php endif; ?>
<?php if ($R['num_rating'] && !$R['disabled_rating']): ?>
<span class="ml-2" data-toggle="tooltip" title="참여: <?php echo $R['num_rating'] ?>명 , 평점 <?php echo $R['rating']/$R['num_rating']?>" role="button">· <i class="fa fa-star-o" aria-hidden="true"></i>
<a href="#" class="muted-link"> <?php echo $R['rating']/$R['num_rating']?></a></span>
<?php endif; ?>
</div>
</div><!-- /.page-meta-body -->
</div>
<blockquote class="blockquote mt-4">
<?php echo $R['review'] ?>
</blockquote>
<!-- 본문 -->
<article class="py-4 rb-article">
<?php echo getContents($R['content'],$R['html'])?>
</article>
<section class="mt-4">
<?php include $g['dir_module_skin'].'_view_attach.php'?>
</section>
<div class="my-4 text-center d-print-none">
<!-- 스크탭-->
<button type="button" class="btn btn-white <?php if($is_saved):?> active<?php endif?>"
data-toggle="button"
data-act="actionIframe"
data-url="<?php echo $g['post_action']?>saved&amp;uid=<?php echo $R['uid']?>"
data-role="btn_post_saved">
<i class="material-icons align-middle">bookmark_border</i> 저장
</button>
<!-- 좋아요 or 싫어요 -->
<?php if (!$R['dis_like']): ?>
<button type="button" class="btn btn-white<?php if($is_liked):?> active<?php endif?>"
data-toggle="button"
data-act="actionIframe"
data-url="<?php echo $g['post_action']?>opinion&amp;opinion=like&amp;uid=<?php echo $R['uid']?>&amp;effect=heartbeat"
data-role="btn_post_like">
<i class="material-icons align-middle">thumb_up</i> <strong></strong>
<span data-role='likes_<?php echo $R['uid']?>' class="badge badge-inverted"><?php echo $R['likes']?></span>
</button>
<button type="button" class="btn btn btn-white<?php if($is_disliked):?> active<?php endif?>"
data-toggle="button"
data-act="actionIframe"
data-url="<?php echo $g['post_action']?>opinion&amp;opinion=dislike&amp;uid=<?php echo $R['uid']?>&amp;effect=heartbeat"
data-role="btn_post_dislike">
<i class="material-icons align-middle">thumb_down</i> <strong></strong>
<span data-role='dislikes_<?php echo $R['uid']?>' class="badge badge-inverted"><?php echo $R['dislikes']?></span>
</button>
<?php endif; ?>
</div>
<!-- 태그 -->
<?php if ($R['tag']): ?>
<div class="">
<?php $_tags=explode(',',$R['tag'])?>
<?php $_tagn=count($_tags)?>
<?php $i=0;for($i = 0; $i < $_tagn; $i++):?>
<?php $_tagk=trim($_tags[$i])?>
<a class="badge badge-light rounded-0 f15 font-weight-light bg-light border-0 py-2" href="<?php echo RW('m=post&mod=keyword&') ?>keyword=<?php echo urlencode($_tagk)?>">
#<?php echo $_tagk?>
</a>
<?php endfor?>
</div>
<?php endif; ?>
<!-- 작성자 정보 -->
<div class="text-center my-4 py-5 border-top">
<a href="<?php echo getProfileLink($R['mbruid']) ?>" class="text-reset text-decoration-none">
<img class="mb-3 rounded-circle border" src="<?php echo getAvatarSrc($R['mbruid'],'64') ?>" width="64" height="64" alt="<?php echo $M1[$_HS['nametype']] ?>의 프로필">
<h5 class="mb-1"><?php echo $M1[$_HS['nametype']] ?></h5>
<span class="f13 text-muted"><?php echo $M1['bio'] ?></span>
</a>
</div>
<!-- 링크 공유 -->
<div class="my-4 d-print-none text-center">
<?php include $g['dir_module_skin'].'_linkshare.php'?>
</div>
<footer class="d-flex justify-content-between align-items-center my-5 d-print-none">
<div data-role="item" data-featured_img="<?php echo getPreviewResize(getUpImageSrc($R),'180x100') ?>" data-subject="<?php echo $R['subject'] ?>">
<?php if($_perm['post_owner']):?>
<?php if ($R['likes'] || $R['dislikes']): ?>
<button type="button" class="btn btn btn-outline-primary"
data-target="#modal-post-opinion"
data-opinion="like"
data-toggle="modal"
data-uid="<?php echo $R['uid'] ?>">
좋아요 내역
</button>
<?php endif; ?>
<?php if ($d['post']['writeperm']): ?>
<button type="button" class="btn btn btn-outline-primary"
data-target="#modal-post-analytics"
data-toggle="modal"
data-uid="<?php echo $R['uid'] ?>">
분석
</button>
<a href="<?php echo RW('m=post&mod=write&cid='.$R['cid']) ?>" class="btn btn-primary">수정</a>
<?php endif; ?>
<?php endif?>
</div>
<div class="">
<button type="button" class="btn btn-white" data-history="back">이전가기</button>
</div>
</footer>
<?php if (!$R['dis_comment']): ?>
<aside class="border-top mt-4 pt-4">
<?php include $g['dir_module_skin'].'_comment.php'?>
</aside>
<?php endif; ?>
</div><!-- /.col -->
<div class="col-4 pr-0">
<?php if ($list): ?>
<?php
$LIST=getDbData($table[$m.'list'],"id='".$list."'",'*');
$_WHERE = 'site='.$s;
$_WHERE .= ' and list="'.$LIST['uid'].'"';
$TCD = getDbArray($table[$m.'list_index'],$_WHERE,'*','gid','asc',11,1);
$NUM = getDbRows($table[$m.'list_index'],$_WHERE);
while($_R = db_fetch_array($TCD)) $LCD[] = getDbData($table[$m.'data'],'uid='.$_R['data'],'*');
?>
<div class="card mb-4 shadow-sm">
<div class="card-body px-2 pt-2 pb-1">
<a href="<?php echo getListLink($LIST,$mbrid?1:0) ?>" class="media text-reset text-decoration-none">
<i class="material-icons mr-1 text-muted" style="font-size: 34px;">playlist_play</i>
<div class="media-body">
<h5 class="h6 mb-0">
<?php echo $LIST['name'] ?>
</h5>
<small class="text-muted"><?php echo $MBR['name'] ?></small>
</div>
</a><!-- /.media -->
</div>
<ul class="list-group list-group-flush">
<?php foreach($LCD as $_L): ?>
<a href="<?php echo getPostLink($_L,$mbrid?1:0).($GLOBALS['_HS']['rewrite']?'?':'&').'list='.$list ?>"
class="list-group-item list-group-item-action p-1 pr-3 serial<?php echo $_L['cid']==$cid?' active':' bg-light' ?>">
<div class="media">
<span class="align-self-center pr-2 pl-1 f12 counter"></span>
<span class="position-relative mr-2">
<img class="" src="<?php echo getPreviewResize(getUpImageSrc($_L),'100x56') ?>" alt="">
<time class="badge badge-dark rounded-0 position-absolute" style="right:1px;bottom:1px"><?php echo getUpImageTime($_L) ?></time>
</span>
<div class="media-body">
<h5 class="f13 my-1 font-weight-light line-clamp-2">
<?php echo stripslashes($_L['subject'])?>
</h5>
<ul class="list-inline d-inline-block f13">
<li class="list-inline-item">
<time data-plugin="timeago" datetime="<?php echo getDateFormat($_L['d_regis'],'c')?>"></time>
</li>
</ul>
</div>
</div>
</a>
<?php endforeach; ?>
</ul>
</div>
<?php endif; ?>
<?php include $g['dir_module_skin'].'_newPost.php' ?>
<?php include $g['dir_module_skin'].'_newList.php' ?>
</div><!-- /.col -->
</section>
<!-- jquery.shorten : https://github.com/viralpatel/jquery.shorten -->
<?php getImport('jquery.shorten','jquery.shorten.min','1.0','js')?>
<script>
$('[data-plugin="shorten"]').shorten({
moreText: '더보기',
lessText: ''
});
</script>

View File

@@ -0,0 +1,230 @@
<section class="post-section row">
<div class="col-8">
<h2 class="h3"><?php echo stripslashes($R['subject']) ?></h2>
<div class="page-meta f13">
<div class="page-meta-body">
<div class="project-meta">
<span class="badge badge-light align-middle border border-success text-success mr-1"><?php echo $g['projectSet']['type'][$R['type']] ?></span>
<time class="js-timeago mr-1 text-muted js-tooltip" title="등록일시">
<i class="fa fa-clock-o" aria-hidden="true"></i> <?php echo getDateFormat($R['d_regis'],'Y-m-d H:i') ?>
</time>
<?php if($R['d_modify']):?>
<time class="text-muted f12">
(<?php echo '수정 : '.getDateFormat($R['d_modify'],'Y-m-d H:i') ?>)
</time>
<?php endif?>
<?php if (!$R['disabled_comment']): ?>
<span class="ml-2">· 댓글 : <a class="muted-link" href="#comments"><?php echo $R['comment']?></a></span>
<?php endif; ?>
<span class="ml-2">
조회 : <?php echo $R['hit']?>
</span>
<?php if (!$R['disabled_like']): ?>
<span class="ml-2">· <i class="fa fa-thumbs-o-up" aria-hidden="true"></i> <span class="text-muted" data-role=like_num><?php echo $R['likes']?></span></span>
<?php endif; ?>
<?php if ($R['num_rating'] && !$R['disabled_rating']): ?>
<span class="ml-2" data-toggle="tooltip" title="참여: <?php echo $R['num_rating'] ?>명 , 평점 <?php echo $R['rating']/$R['num_rating']?>" role="button">· <i class="fa fa-star-o" aria-hidden="true"></i>
<a href="#" class="muted-link"> <?php echo $R['rating']/$R['num_rating']?></a></span>
<?php endif; ?>
</div>
</div><!-- /.page-meta-body -->
</div>
<blockquote class="blockquote mt-4">
<?php echo $R['review'] ?>
</blockquote>
<!-- 본문 -->
<article class="py-4 rb-article">
<?php echo getContents($R['content'],$R['html'])?>
</article>
<section class="mt-4">
<?php include $g['dir_module_skin'].'_view_attach.php'?>
</section>
<div class="my-4 text-center d-print-none">
<!-- 스크탭-->
<button type="button" class="btn btn-white <?php if($is_saved):?> active<?php endif?>"
data-toggle="button"
data-act="actionIframe"
data-url="<?php echo $g['post_action']?>saved&amp;uid=<?php echo $R['uid']?>"
data-role="btn_post_saved">
<i class="material-icons align-middle">bookmark_border</i> 저장
</button>
<!-- 좋아요 or 싫어요 -->
<?php if (!$R['dis_like']): ?>
<button type="button" class="btn btn-white<?php if($is_liked):?> active<?php endif?>"
data-toggle="button"
data-act="actionIframe"
data-url="<?php echo $g['post_action']?>opinion&amp;opinion=like&amp;uid=<?php echo $R['uid']?>&amp;effect=heartbeat"
data-role="btn_post_like">
<i class="material-icons align-middle">thumb_up</i> <strong></strong>
<span data-role='likes_<?php echo $R['uid']?>' class="badge badge-inverted"><?php echo $R['likes']?></span>
</button>
<button type="button" class="btn btn btn-white<?php if($is_disliked):?> active<?php endif?>"
data-toggle="button"
data-act="actionIframe"
data-url="<?php echo $g['post_action']?>opinion&amp;opinion=dislike&amp;uid=<?php echo $R['uid']?>&amp;effect=heartbeat"
data-role="btn_post_dislike">
<i class="material-icons align-middle">thumb_down</i> <strong></strong>
<span data-role='dislikes_<?php echo $R['uid']?>' class="badge badge-inverted"><?php echo $R['dislikes']?></span>
</button>
<?php endif; ?>
</div>
<!-- 태그 -->
<?php if ($R['tag']): ?>
<div class="">
<?php $_tags=explode(',',$R['tag'])?>
<?php $_tagn=count($_tags)?>
<?php $i=0;for($i = 0; $i < $_tagn; $i++):?>
<?php $_tagk=trim($_tags[$i])?>
<a class="badge badge-light rounded-0 f15 font-weight-light bg-light border-0 py-2" href="<?php echo RW('m=post&mod=keyword&') ?>keyword=<?php echo urlencode($_tagk)?>">
#<?php echo $_tagk?>
</a>
<?php endfor?>
</div>
<?php endif; ?>
<!-- 작성자 정보 -->
<div class="text-center my-4 py-5 border-top">
<a href="<?php echo getProfileLink($R['mbruid']) ?>" class="text-reset text-decoration-none">
<img class="mb-3 rounded-circle border" src="<?php echo getAvatarSrc($R['mbruid'],'64') ?>" width="64" height="64" alt="<?php echo $M1[$_HS['nametype']] ?>의 프로필">
<h5 class="mb-1"><?php echo $M1[$_HS['nametype']] ?></h5>
<span class="f13 text-muted"><?php echo $M1['bio'] ?></span>
</a>
</div>
<!-- 링크 공유 -->
<div class="my-4 d-print-none text-center">
<?php include $g['dir_module_skin'].'_linkshare.php'?>
</div>
<footer class="d-flex justify-content-between align-items-center my-5 d-print-none">
<div data-role="item" data-featured_img="<?php echo getPreviewResize(getUpImageSrc($R),'180x100') ?>" data-subject="<?php echo $R['subject'] ?>">
<?php if($_perm['post_owner']):?>
<?php if ($R['likes'] || $R['dislikes']): ?>
<button type="button" class="btn btn btn-outline-primary"
data-target="#modal-post-opinion"
data-opinion="like"
data-toggle="modal"
data-uid="<?php echo $R['uid'] ?>">
좋아요 내역
</button>
<?php endif; ?>
<?php if ($d['post']['writeperm']): ?>
<button type="button" class="btn btn btn-outline-primary"
data-target="#modal-post-analytics"
data-toggle="modal"
data-uid="<?php echo $R['uid'] ?>">
분석
</button>
<a href="<?php echo RW('m=post&mod=write&cid='.$R['cid']) ?>" class="btn btn-primary">수정</a>
<?php endif; ?>
<?php endif?>
</div>
<div class="">
<button type="button" class="btn btn-white" data-history="back">이전가기</button>
</div>
</footer>
<?php if (!$R['dis_comment']): ?>
<aside class="border-top mt-4 pt-4">
<?php include $g['dir_module_skin'].'_comment.php'?>
</aside>
<?php endif; ?>
</div><!-- /.col -->
<div class="col-4 pr-0">
<?php if ($list): ?>
<?php
$LIST=getDbData($table[$m.'list'],"id='".$list."'",'*');
$_WHERE = 'site='.$s;
$_WHERE .= ' and list="'.$LIST['uid'].'"';
$TCD = getDbArray($table[$m.'list_index'],$_WHERE,'*','gid','asc',11,1);
$NUM = getDbRows($table[$m.'list_index'],$_WHERE);
while($_R = db_fetch_array($TCD)) $LCD[] = getDbData($table[$m.'data'],'uid='.$_R['data'],'*');
?>
<div class="card mb-4 shadow-sm">
<div class="card-body px-2 pt-2 pb-1">
<a href="<?php echo getListLink($LIST,$mbrid?1:0) ?>" class="media text-reset text-decoration-none">
<i class="material-icons mr-1 text-muted" style="font-size: 34px;">playlist_play</i>
<div class="media-body">
<h5 class="h6 mb-0">
<?php echo $LIST['name'] ?>
</h5>
<small class="text-muted"><?php echo $MBR['name'] ?></small>
</div>
</a><!-- /.media -->
</div>
<ul class="list-group list-group-flush">
<?php foreach($LCD as $_L): ?>
<a href="<?php echo getPostLink($_L,$mbrid?1:0).($GLOBALS['_HS']['rewrite']?'?':'&').'list='.$list ?>"
class="list-group-item list-group-item-action p-1 pr-3 serial<?php echo $_L['cid']==$cid?' active':' bg-light' ?>">
<div class="media">
<span class="align-self-center pr-2 pl-1 f12 counter"></span>
<span class="position-relative mr-2">
<img class="" src="<?php echo getPreviewResize(getUpImageSrc($_L),'100x56') ?>" alt="">
<time class="badge badge-dark rounded-0 position-absolute" style="right:1px;bottom:1px"><?php echo getUpImageTime($_L) ?></time>
</span>
<div class="media-body">
<h5 class="f13 my-1 font-weight-light line-clamp-2">
<?php echo stripslashes($_L['subject'])?>
</h5>
<ul class="list-inline d-inline-block f13">
<li class="list-inline-item">
<time data-plugin="timeago" datetime="<?php echo getDateFormat($_L['d_regis'],'c')?>"></time>
</li>
</ul>
</div>
</div>
</a>
<?php endforeach; ?>
</ul>
</div>
<?php endif; ?>
<?php include $g['dir_module_skin'].'_newPost.php' ?>
<?php include $g['dir_module_skin'].'_newList.php' ?>
</div><!-- /.col -->
</section>
<!-- jquery.shorten : https://github.com/viralpatel/jquery.shorten -->
<?php getImport('jquery.shorten','jquery.shorten.min','1.0','js')?>
<script>
$('[data-plugin="shorten"]').shorten({
moreText: '더보기',
lessText: ''
});
</script>

View File

@@ -0,0 +1,332 @@
<section class="post-section row">
<div class="col-8">
<div class="mb-4">
<oembed url="<?php echo getFeaturedimgMeta($R,'linkurl') ?>">
<div class="bg-black d-flex align-items-center justify-content-center text-muted" style="height: 360px">
<div class="spinner-border" role="status">
<span class="sr-only">Loading...</span>
</div>
</div>
</oembed>
</div>
<!-- 태그 -->
<?php if ($R['tag']): ?>
<div>
<?php $_tags=explode(',',$R['tag'])?>
<?php $_tagn=count($_tags)?>
<?php $i=0;for($i = 0; $i < $_tagn; $i++):?>
<?php $_tagk=trim($_tags[$i])?>
<a class="badge bg-white rounded-0 f13 font-weight-light border-0" href="<?php echo RW('m=post&mod=keyword&') ?>keyword=<?php echo urlencode($_tagk)?>">
#<?php echo $_tagk?>
</a>
<?php endfor?>
</div>
<?php endif; ?>
<h2 class="h5"><?php echo stripslashes($R['subject']) ?></h2>
<div class="page-meta border-bottom pb-1 mb-4">
<div class="d-flex justify-content-between align-items-center">
<div class="mt-1 text-muted">
<span>조회수 <?php echo number_format($R['hit'])?>회</span>
<span class="badge badge-light align-middle border border-success text-success mr-1"><?php echo $g['projectSet']['type'][$R['type']] ?></span>
<time class="mr-1">
•<?php echo getDateFormat($R['d_modify']?$R['d_modify']:$R['d_regis'],'Y-m-d H:i') ?>
</time>
</div>
<div class="">
<!-- 좋아요 or 싫어요 -->
<?php if (!$R['dis_like']): ?>
<span class="dropdown">
<button type="button" class="btn btn-link muted-link px-2 text-decoration-none<?php if($is_liked):?> active<?php endif?>"
data-toggle="<?php echo $my['uid']?'button':'dropdown' ?>"
data-act="<?php echo $my['uid']?'actionIframe':'dropdown'?>"
data-url="<?php echo $g['post_action']?>opinion&amp;opinion=like&amp;uid=<?php echo $R['uid']?>&amp;effect=heartbeat"
data-role="btn_post_like">
<i class="material-icons align-text-bottom">thumb_up</i>
<span data-role='likes_<?php echo $R['uid']?>' class="ml-1 f13 text-muted"><?php echo $R['likes']?$R['likes']:'좋아요'?></span>
</button>
<div class="dropdown-menu shadow" style="min-width: 300px;">
<div class="py-3 px-4">
<h6>포스트가 마음에 드시나요?</h6>
<p class="f13 text-muted mb-0">로그인하여 의견을 알려주세요.</p>
</div>
<div class="dropdown-divider"></div>
<div class="px-3">
<button type="button" class="btn btn-link btn-sm" data-toggle="modal" data-target="#modal-login">
로그인
</button>
</div>
</div>
</span>
<span class="dropdown">
<button type="button" class="btn btn-link muted-link px-2 text-decoration-none<?php if($is_disliked):?> active<?php endif?>"
data-toggle="<?php echo $my['uid']?'button':'dropdown' ?>"
data-act="<?php echo $my['uid']?'actionIframe':'dropdown'?>"
data-url="<?php echo $g['post_action']?>opinion&amp;opinion=dislike&amp;uid=<?php echo $R['uid']?>&amp;effect=heartbeat"
data-role="btn_post_dislike">
<i class="material-icons align-text-bottom">thumb_down</i>
<span data-role='dislikes_<?php echo $R['uid']?>' class="ml-1 f13 text-muted"><?php echo $R['dislikes']?$R['dislikes']:'싫어요'?></span>
</button>
<div class="dropdown-menu shadow" style="min-width: 300px;">
<div class="py-3 px-4">
<h6>포스트가 마음에 안 드시나요?</h6>
<p class="f13 text-muted mb-0">로그인하여 의견을 알려주세요.</p>
</div>
<div class="dropdown-divider"></div>
<div class="px-3">
<button type="button" class="btn btn-link btn-sm" data-toggle="modal" data-target="#modal-login">
로그인
</button>
</div>
</div>
</span>
<?php endif; ?>
<?php if (!$R['dis_share']): ?>
<button type="button" class="btn btn-link muted-link px-2 text-decoration-none"
data-toggle="modal" data-target="#modal-post-share">
<i class="material-icons align-text-bottom mirror">reply</i>
<span class="f13 text-muted">공유</span>
</button>
<?php endif; ?>
<?php if (!$R['dis_listadd']): ?>
<span class="dropdown" data-role="listadd">
<button type="button" class="btn btn-link muted-link px-2 text-decoration-none"
data-toggle="<?php echo $my['uid']?'modal':'dropdown'?>"
data-target="<?php echo $my['uid']?'#modal-post-listadd':''?>"
data-uid="<?php echo $R['uid']?>">
<i class="material-icons align-text-bottom">playlist_add</i>
<span class="f13 text-muted">저장</span>
</button>
<div class="dropdown-menu shadow" style="min-width: 300px;">
<div class="py-3 px-4">
<h6>나중에 다시 보고 싶으신가요?</h6>
<p class="f13 text-muted mb-0">로그인하여 포스트를 리스트에 추가하세요.</p>
</div>
<div class="dropdown-divider"></div>
<div class="px-3">
<button type="button" class="btn btn-link btn-sm" data-toggle="modal" data-target="#modal-login">
로그인
</button>
</div>
</div>
</span>
<?php endif; ?>
<?php if ($R['num_rating'] && !$R['disabled_rating']): ?>
<span class="ml-2" data-toggle="tooltip" title="참여: <?php echo $R['num_rating'] ?>명 , 평점 <?php echo $R['rating']/$R['num_rating']?>" role="button">· <i class="fa fa-star-o" aria-hidden="true"></i>
<a href="#" class="muted-link"> <?php echo $R['rating']/$R['num_rating']?></a></span>
<?php endif; ?>
<div class="dropdown d-inline">
<button class="btn btn-link muted-link px-2" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<i class="material-icons">more_horiz</i>
</button>
<div class="dropdown-menu dropdown-menu-right shadow">
<a class="dropdown-item" href="#modal-post-report" data-toggle="modal" data-uid="<?php echo $R['uid']?>">
신고하기
</a>
</div>
</div>
</div>
</div><!-- /.page-meta-body -->
</div>
<div class="d-flex justify-content-between">
<div class="media w-100" data-mbruid="<?php echo $R['mbruid'] ?>">
<a href="<?php echo getProfileLink($R['mbruid']) ?>" class="mr-3">
<img src="<?php echo getAvatarSrc($R['mbruid'],'48') ?>" class="rounded-circle" width="48" height="48" alt="<?php echo $M1[$_HS['nametype']] ?>의 프로필">
</a>
<div class="media-body pt-1">
<div class="d-flex justify-content-between">
<div class="mb-2">
<h6 class="mb-1">
<a href="<?php echo getProfileLink($R['mbruid']) ?>" class="text-reset text-decoration-none"><?php echo $M1[$_HS['nametype']] ?></a>
</h6>
<p class="mb-0 text-muted f12">
<?php if ($M1['num_follower']): ?>
<a class="text-reset text-decoration-none" href="<?php echo getProfileLink($R['mbruid'])?>/follower">
구독자
<span data-role="num_follower"><?php echo number_format($M1['num_follower'])?></span>
</a>
<?php else: ?>
구독자 <span data-role="num_follower">없음</span>
<?php endif; ?>
</p>
</div>
<div data-role="item" data-featured_img="<?php echo getPreviewResize(getUpImageSrc($R),'180x100') ?>" data-subject="<?php echo stripslashes($R['subject'])?>">
<?php if($_perm['post_owner']):?>
<?php if ($R['likes'] || $R['dislikes']): ?>
<button type="button" class="btn btn btn-outline-primary"
data-target="#modal-post-opinion"
data-opinion="like"
data-toggle="modal"
data-uid="<?php echo $R['uid'] ?>">
좋아요 내역
</button>
<?php endif; ?>
<?php if ($d['post']['writeperm']): ?>
<button type="button" class="btn btn btn-outline-primary"
data-target="#modal-post-analytics"
data-toggle="modal"
data-uid="<?php echo $R['uid'] ?>">
분석
</button>
<a href="<?php echo RW('m=post&mod=write&cid='.$R['cid']) ?>" class="btn btn-outline-primary">수정</a>
<?php endif; ?>
<?php endif?>
<?php if($my['uid']!=$R['mbruid']):?>
<button type="button" class="btn btn-primary<?php echo $_isFollowing ?' active':''?>"
data-act="<?php echo $my['uid']?'actionIframe':'' ?>"
data-toggle="<?php echo $my['uid']?'button':'dropdown' ?>"
data-role="follow"
data-url="<?php echo $g['s'].'/?r='.$r.'&amp;m=member&amp;a=profile_follow&amp;mbruid='.$M1['memberuid']?>">
구독
</button>
<div class="dropdown-menu dropdown-menu-right shadow" style="min-width: 350px;">
<div class="py-3 px-4">
<h6><?php echo $M1[$_HS['nametype']] ?>님의 포스트를 구독하시겠습니까?</h6>
<p class="f13 text-muted mb-0">구독하려면 로그인하세요.</p>
</div>
<div class="dropdown-divider"></div>
<div class="px-3 text-right">
<button type="button" class="btn btn-link btn-sm" data-toggle="modal" data-target="#modal-login">
로그인
</button>
</div>
</div>
<?php endif?>
</div>
</div><!-- /.flex -->
<!-- 본문 -->
<article class="rb-article" data-plugin="shorten">
<?php echo getContents($R['content'],$R['html'])?>
<?php if ($R['category']): ?>
<span class="ml-2 f13 text-muted">
<i class="fa fa-folder-o mr-1" aria-hidden="true"></i> <?php echo getAllPostCat($m,$R['category']) ?>
</span>
<?php endif; ?>
</article>
<section class="mt-1">
<?php include $g['dir_module_skin'].'_view_attach.php'?>
</section>
</div>
</div><!-- /.media -->
</div><!-- /.d-flex -->
<?php if (!$R['dis_comment']): ?>
<aside class="border-top mt-4 pt-4">
<?php include $g['dir_module_skin'].'_comment.php'?>
</aside>
<?php endif; ?>
</div><!-- /.col -->
<div class="col-4 pr-0">
<?php if ($list): ?>
<?php
$LIST=getDbData($table[$m.'list'],"id='".$list."'",'*');
$_WHERE = 'site='.$s;
$_WHERE .= ' and list="'.$LIST['uid'].'"';
$TCD = getDbArray($table[$m.'list_index'],$_WHERE,'*','gid','asc',11,1);
$NUM = getDbRows($table[$m.'list_index'],$_WHERE);
while($_R = db_fetch_array($TCD)) $LCD[] = getDbData($table[$m.'data'],'uid='.$_R['data'],'*');
?>
<div class="card mb-4 shadow-sm">
<div class="card-body px-2 pt-2 pb-1">
<a href="<?php echo getListLink($LIST,$mbrid?1:0) ?>" class="media text-reset text-decoration-none">
<i class="material-icons mr-1 text-muted" style="font-size: 42px;">playlist_play</i>
<div class="media-body">
<h5 class="h6 mb-0 pb-0 pt-1">
<?php echo $LIST['name'] ?>
</h5>
<small class="text-muted line-clamp-1"><?php echo $LIST['review']?$LIST['review']:getProfileInfo($LIST['mbruid'],'name') ?></small>
</div>
</a><!-- /.media -->
</div>
<ul class="list-group list-group-flush">
<?php foreach($LCD as $_L): ?>
<a href="<?php echo getPostLink($_L,$mbrid?1:0).($GLOBALS['_HS']['rewrite']?'?':'&').'list='.$list ?>"
class="list-group-item list-group-item-action p-1 pr-3 serial<?php echo $_L['cid']==$cid?' active':' bg-light' ?>">
<div class="media">
<span class="align-self-center pr-2 pl-1 f12 counter" style="width:20px"></span>
<span class="position-relative mr-2">
<img class="" src="<?php echo getPreviewResize(getUpImageSrc($_L),'100x56') ?>" alt="">
<time class="badge badge-dark rounded-0 position-absolute" style="right:1px;bottom:1px"><?php echo getUpImageTime($_L) ?></time>
</span>
<div class="media-body">
<h5 class="f13 my-1 font-weight-light line-clamp-2">
<?php echo stripslashes($_L['subject'])?>
</h5>
<ul class="list-inline d-inline-block f13">
<li class="list-inline-item">
<time data-plugin="timeago" datetime="<?php echo getDateFormat($_L['d_regis'],'c')?>"></time>
</li>
</ul>
</div>
</div>
</a>
<?php endforeach; ?>
</ul>
</div>
<?php endif; ?>
<?php include $g['dir_module_skin'].'_newPost.php' ?>
<?php include $g['dir_module_skin'].'_newList.php' ?>
</div><!-- /.col -->
</section>
<!-- jquery.shorten : https://github.com/viralpatel/jquery.shorten -->
<?php getImport('jquery.shorten','jquery.shorten.min','1.0','js')?>
<script>
$( document ).ready(function() {
$('[data-plugin="shorten"]').shorten({
moreText: '더보기',
lessText: ''
});
$('.rb-article').linkify({
target: "_blank"
});
});
</script>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,20 @@
<header class="bar bar-nav bar-light bg-faded">
<a class="title" data-href="<?php echo RW(0)?>" data-text="새로고침">
<?php echo $d['layout']['header_file']?'<img src="'.$g['url_layout'].'/_var/'.$d['layout']['header_file'].'">':stripslashes($d['layout']['header_title'])?>
</a>
</header>
<div class="content">
<p class="text-xs-center text-muted py-5">잘못된 주소이거나 비공개 또는 삭제된 글입니다.</p>
<div class="text-xs-center">
<?php if (!$my['uid']): ?>
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#modal-login">로그인 하기</button>
<?php endif; ?>
<button type="button" class="btn btn-light" onclick="history.back();">이전가기</button>
</div>
</div>
<script type="text/javascript">
document.title = 'Page not found · 킴스큐';
</script>

View File

@@ -0,0 +1 @@
<p class="text-xs-center text-muted py-5">잘못된 주소이거나 비공개 또는 삭제된 글입니다.</p>

View File

@@ -0,0 +1,28 @@
<li class="media mb-3" data-role="item" data-uid="{$uid}">
<a class="w-100"
data-toggle="profile"
data-target="#modal-member-profile"
data-mbruid="{$mbruid}"
data-title="{$nic}"
data-zindex="21"
data-url="{$profile_url}">
<div class="pull-left text-xs-center" style="width:6.25rem">
<img class="border img-circle" src="{$avatar}" alt="" style="width: 4.0625rem">
</div>
<div class="media-body">
<h5 class="h6 my-1 font-weight-light line-clamp-3">
{$nic}
</h5>
<div class="mb-1 f13 text-muted">
구독자 {$num_follower}명 <br>
동영상 {$num_post}개
</div>
</div>
</a>
<span class="badge badge-default badge-inverted">
<a href="#popup-post-postMore" data-toggle="popup" data-uid="{$post_uid}" class="icon material-icons text-muted f18">more_vert</a>
</span>
</li>

View File

@@ -0,0 +1,38 @@
<li class="table-view-cell border-bottom-0">
<div class="media" data-toggle="page"
data-target="#page-post-view"
data-format="{$format}"
data-start="{$start}"
data-uid="{$uid}"
data-featured="{$featured_16by9}"
data-provider="{$provider}"
data-videoId="{$videoId}"
data-url="/post/{$cid}">
<div class="media-left">
<span class="embed-responsive embed-responsive-16by9 bg-faded">
<img class="media-object" src="{$featured_16by9_sm}" class="img-fluid" alt="" style="width:10rem">
<time class="badge badge-default bg-black rounded-0 position-absolute f13" style="top:auto;left:auto;right:0.0625rem;bottom:0.0625rem">{$time}</time>
</span>
</div>
<div class="media-body">
<div class="f14 line-clamp-3" style="line-height:1.3">{$subject}</div>
<div class="f12" style="margin-top:.2rem;line-height:1.3">
<p>{$nic}</p>
<ul class="list-inline text-muted mb-0">
<li class="list-inline-item">조회수 {$hit}회 </li>
<li class="list-inline-item"><time class="" data-plugin="timeago" datetime="{$d_modify}"></time></li>
</ul>
</div>
</div>
</div>
<span class="badge badge-default badge-inverted">
<a href="#popup-post-postMore" data-toggle="popup" data-uid="{$uid}" class="icon material-icons text-muted">more_vert</a>
</span>
</li>

View File

@@ -0,0 +1,38 @@
<li class="table-view-cell border-bottom-0">
<div class="media" data-toggle="page"
data-target="#page-post-view"
data-format="{$format}"
data-start="{$start}"
data-uid="{$uid}"
data-featured="{$featured_16by9}"
data-provider="{$provider}"
data-videoId="{$videoId}"
data-url="/post/{$cid}">
<div class="media-left">
<span class="embed-responsive embed-responsive-16by9 bg-faded">
<img class="media-object" src="{$featured_16by9_sm}" class="img-fluid" alt="" style="width:10rem">
<time class="badge badge-default bg-black rounded-0 position-absolute f13" style="top:auto;left:auto;right:0.0625rem;bottom:0.0625rem">{$time}</time>
</span>
</div>
<div class="media-body">
<div class="f14 line-clamp-3" style="line-height:1.3">{$subject}</div>
<div class="f12" style="margin-top:.2rem;line-height:1.3">
<p>{$nic}</p>
<ul class="list-inline text-muted mb-0">
<li class="list-inline-item">조회수 {$hit}회 </li>
<li class="list-inline-item"><time class="" data-plugin="timeago" datetime="{$d_modify}"></time></li>
</ul>
</div>
</div>
</div>
<span class="badge badge-default badge-inverted">
<a href="#popup-post-postMore" data-toggle="popup" data-uid="{$uid}" class="icon material-icons text-muted">more_vert</a>
</span>
</li>

View File

@@ -0,0 +1,33 @@
<li class="d-flex justify-content-between mb-2" data-role="item">
<div class="media"
data-toggle="page"
data-target="#page-post-listview"
data-start="{$start}"
data-uid="{$uid}"
data-title="{$name}"
data-featured="{$featured_16by9}"
data-url="/list/{$id}" data-id="{$id}">
<div class="media-left">
<span class="embed-responsive embed-responsive-16by9 bg-faded">
<img src="{$featured_16by9}" class="media-object img-fluid" alt="" style="width:10rem">
<span class="list_mask">
<span class="txt">{$num}<i class="fa fa-list-ul d-block" aria-hidden="true"></i></span>
</span>
</span>
</div>
<div class="media-body pt-1">
<h4 class="media-heading f15 line-clamp-2">{$name}</h4>
<div class="f14">동영상 {$num}개</div>
<ul class="list-inline f13 text-muted mt-1 mb-0">
<li class="list-inline-item">{$nic}</li>
<li class="list-inline-item"><time data-plugin="timeago" datetime="{$d_modify}"></time></li>
<li class="list-inline-item"><i class="material-icons f15" style="vertical-align:text-bottom">{$display}</i></li>
</ul>
</div>
</div>
<div class="ml-4 px-1 d-none">
<a href="#popup-list-postMore" data-toggle="popup" data-uid="{$uid}" data-role="more" class="icon material-icons text-muted f18">
more_vert
</a>
</div>
</li>

View File

@@ -0,0 +1,27 @@
<li class="table-view-cell border-bottom-0" data-role="item" data-uid="{$uid}">
<div class="media" data-toggle="page" data-target="#page-post-listview" class="ml-1" data-start="" data-url="/list/{$id}" data-id="{$id}" data-title="{$name}">
<div class="media-left">
<div class="embed-responsive embed-responsive-16by9 bg-faded">
<img class="media-object " src="{$featured_16by9}" class="img-fluid" alt="" style="width:10rem">
<span class="list_mask">
<span class="txt">{$num}<i class="fa fa-list-ul d-block" aria-hidden="true"></i></span>
</span>
</div>
</div>
<div class="media-body">
<div class="line-clamp-3">{$name}</div>
<p>포스트 {$num}개</p>
<ul class="list-inline f13 text-muted mt-1 mb-0">
<li class="list-inline-item">{$nic}</li>
<li class="list-inline-item"><time data-plugin="timeago" datetime="{$d_modify}"></time></li>
</ul>
</div>
</div>
<span class="badge badge-default badge-inverted">
<a href="#popup-post-admin" data-toggle="popup" data-uid="{$uid}" class="icon material-icons text-muted">more_vert</a>
</span>
</li>

View File

@@ -0,0 +1,11 @@
<div class="ad_section bg-black position-relative mb-3" style="background-image: url({$cover});">
<div class="text-xs-center text-white position-relative p-2">
<strong class="h4 d-block">{$name}</strong>
<div class="mb-1"><small>{$review}</small></div>
</div>
</div>
<span class="text-muted f14 content-padded">포스트 {$num}개 </span>
<ul class="table-view table-view-sm mt-0 border-top-0 border-bottom-0">
{$row}
</ul>

View File

@@ -0,0 +1,29 @@
<li class="table-view-cell border-bottom-0" data-role="item" data-uid="{$uid}">
<div class="media" data-toggle="page"
data-target="#page-post-view"
data-format="{$format}"
data-start="#page-post-listview"
data-list="{$list}"
data-provider="{$provider}"
data-featured="{$featured_16by9}"
data-videoid="{$videoId}"
data-uid="{$uid}" data-url="/post/{$cid}?list={$list}">
<div class="media-left">
<span class="embed-responsive embed-responsive-16by9 bg-faded">
<img src="{$featured_16by9_sm}" class="media-object border" alt="" style="width:10rem">
<time class="badge badge-default bg-black rounded-0 position-absolute f13" style="top:auto;left:auto;right:0.0625rem;bottom:0.0625rem">{$time}</time>
</span>
</div>
<div class="media-body">
<div class="f14 line-clamp-3">{$subject}</div>
<p><small>{$nic}</small></p>
</div>
</div>
<span class="badge badge-default badge-inverted">
<a href="#popup-post-postMore" data-toggle="popup" data-uid="{$uid}" class="icon icon-more-vertical text-muted f18"></a>
</span>
</li>

View File

@@ -0,0 +1,37 @@
<li class="d-flex justify-content-between mb-2" data-role="item">
<div class="media"
data-toggle="page"
data-target="#page-post-view"
data-format="{$format}"
data-start="{$start}"
data-uid="{$uid}"
data-featured="{$featured_16by9}"
data-provider="{$provider}"
data-videoId="{$videoId}"
data-title="{$subject}"
data-url="/post/{$cid}">
<div class="media-left {$has_featured}">
<div class="embed-responsive embed-responsive-16by9 bg-faded">
<img class="media-object" src="{$featured_16by9_sm}" alt="" data-role="featured" style="width:10rem">
<time class="badge badge-default bg-black rounded-0 position-absolute f12 p-1" style="right:0.125rem;bottom:0.125rem" data-role="time">{$time}</time>
</div>
</div>
<div class="media-body pt-1">
<h4 class="media-heading f15 line-clamp-2">{$subject}</h4>
<ul class="list-inline f13 text-muted mt-1 mb-0">
<li class="list-inline-item">{$nic}</li>
<li class="list-inline-item">조회수 {$hit}회 </li>
<li class="list-inline-item">댓글 {$comment} </li>
<li class="list-inline-item"><time data-plugin="timeago" datetime="{$d_modify}"></time></li>
<li class="list-inline-item"><i class="material-icons f15" style="vertical-align:text-bottom">{$display}</i></li>
</ul>
</div>
</div>
<div class="ml-4 px-1">
<a href="#popup-post-postMore" data-toggle="popup" data-uid="{$uid}" data-role="more" class="icon material-icons text-muted f18">
more_vert
</a>
</div>
</li>

View File

@@ -0,0 +1,21 @@
<li class="table-view-cell">
<a data-toggle="analytics"
data-uid="{$uid}">
통계
</a>
</li>
<li class="table-view-cell">
<a class="" data-toggle="postedit"
data-uid="{$uid}"
data-title="포스트 수정"
data-url="/post/write/{$cid}"
class="btn btn-outline-primary">
수정
</a>
</li>
<li class="table-view-cell">
<a class="" data-toggle="postdel" data-title="정말로 포스트를 삭제하시겠습니까?" data-type="post">
삭제
</a>
</li>

View File

@@ -0,0 +1,30 @@
<li class="table-view-cell">
<a class="" data-toggle="saved" data-title="나중에 다시 보고 싶으신가요" data-subtext="로그인하여 동영상을 저장하세요.">
나중에 볼 동영상에 저장
</a>
</li>
<li class="table-view-cell">
<a class="" data-toggle="listAdd" data-title="나중에 다시 보고 싶으신가요" data-subtext="로그인하여 동영상을 재생목록에 추가하세요.">
재생목록에 저장
</a>
</li>
<li class="table-view-cell" >
<a class="" data-toggle="linkShare" data-hback="back">
링크 복사
</a>
</li>
<li class="table-view-cell">
<a class="" data-toggle="kakaoTalkSend" data-hback="back">
카톡 공유
</a>
</li>
<li class="table-view-cell">
<a class="" data-toggle="opinionList">
좋아요 내역
</a>
</li>
<li class="table-view-cell">
<a class="" data-toggle="report" data-title="동영상을 신고하시겠습니까?" data-subtext="부적절한 콘텐츠를 신고하려면 로그인하세요.">
신고...
</a>
</li>

View File

@@ -0,0 +1,51 @@
<div class="card card-full border-bottom rounded-0" data-role="item" data-uid="{$uid}">
<div class="position-relative embed-responsive embed-responsive-16by9 bg-faded"
data-toggle="modal"
data-target="#modal-post-view"
data-format="{$format}"
data-start="{$start}"
data-uid="{$uid}"
data-title="{$subject}"
data-featured="{$featured_16by9}"
data-provider="{$provider}"
data-videoId="{$videoId}"
data-url="{$post_url}">
<img class="card-img-top img-fluid rounded-0" src="{$featured_16by9}" alt="" data-role="featured">
<time class="badge badge-default bg-black rounded-0 position-absolute f14" style="right:0.0625rem;bottom:0.0625rem" data-role="time">{$time}</time>
</div>
<div class="card-block px-2 pb-4" style="padding-top: .8rem">
<div class="media">
<div class="mr-2">
<span class="badge badge-warning text-white">광고</span>
</div>
<div class="media-body"
data-toggle="modal"
data-target="#modal-post-view"
data-format="{$format}"
data-start="{$start}"
data-uid="{$uid}"
data-title="{$subject}"
data-featured="{$featured_16by9}"
data-provider="{$provider}"
data-videoId="{$videoId}"
data-url="{$post_url}">
<div class="f15 line-clamp-2" style="line-height: 1.2">
{$subject}
</div>
<ul class="list-inline f13 text-muted mt-1 mb-0">
<li class="list-inline-item line-clamp-2">{$review}</li>
</ul>
</div>
<div class="ml-4 px-1">
<a href="#popup-post-postMore"
data-toggle="popup"
data-role="more"
data-uid="{$uid}" class="icon material-icons text-muted f18">
more_vert
</a>
</div>
</div>
</div>
</div>

View File

@@ -0,0 +1,93 @@
<div class="card card-full border-bottom rounded-0 bg-white" data-role="item" data-uid="{$uid}" data-saved="{$is_post_saved}">
<header class="px-3 pt-3 d-flex justify-content-between">
<div class="media"
data-toggle="profile"
data-target="#modal-member-profile"
data-mbruid="{$mbruid}"
data-title="{$nic}"
data-url="{$profile_url}">
<span class="media-left">
<img class="media-object img-circle" data-role="avatar" src="{$avatar}" alt="" style="width:2.5rem">
</span>
<div class="media-body">
<div class="f15 line-clamp-2" style="line-height: 1.2">{$nic}</div>
<ul class="list-inline f13 text-muted mt-1 mb-0">
<li class="list-inline-item"><time data-plugin="timeago" datetime="{$d_modify}"></time></li>
</ul>
</div>
</div><!-- /.media -->
<div class="px-1">
<a href="#popup-post-postMore"
data-toggle="popup"
data-role="more"
data-uid="{$uid}" class="icon material-icons text-muted f18">
more_vert
</a>
</div>
</header><!-- /.d-flex -->
<div class="card-block px-3 py-2"
data-toggle="page"
data-target="#page-post-view"
data-format="{$format}"
data-start="{$start}"
data-uid="{$uid}"
data-featured="{$featured_1by1}"
data-provider="{$provider}"
data-videoId="{$videoId}"
data-title="{$subject}"
data-url="{$post_url}">
<p>{$subject} <span class="f14 text-muted mt-2 {$has_content}">자세히 보기</span></p>
<div class="position-relative embed-responsive embed-responsive-1by1 bg-faded {$has_featured}">
<img class="card-img-top img-fluid rounded-0" src="{$featured_1by1}" alt="" data-role="featured">
<span class="position-absolute icon-tag text-white {$has_goodslink}" style="left:0.625rem;bottom:0.625rem" data-role="goodslink">
<i class="material-icons f18">redeem</i>
</span>
<time class="badge badge-default bg-black rounded-0 position-absolute f14" style="right:0.0625rem;bottom:0.0625rem" data-role="time">{$time}</time>
</div>
</div>
<footer class="d-flex justify-content-between px-3 mb-3">
<div class="">
<button type="button"
class="btn btn-link muted-link px-1 text-decoration-none {$is_post_liked}"
data-toggle="view_opinion"
data-title="동영상이 마음에 드시나요?"
data-subtext="로그인하여 의견을 알려주세요."
data-send="_ajax"
data-uid="{$uid}"
data-opinion="like"
data-role="btn_post_like_{$uid}">
<i class="material-icons align-text-bottom f20 align-middle">thumb_up</i>
<span class="ml-1 f13" data-role="likes_{$uid}">{$likes}</span>
</button>
<button type="button" class="btn btn-link muted-link px-1 text-decoration-none ml-2 {$is_post_disliked}"
data-toggle="view_opinion"
data-target="#popup-login-guide"
data-title="동영상이 마음에 안 드시나요?"
data-subtext="로그인하여 의견을 알려주세요."
data-send="_ajax"
data-uid="{$uid}"
data-opinion="dislike"
data-role="btn_post_dislike_{$uid}">
<i class="material-icons align-text-bottom f20 align-middle">thumb_down</i>
<span class="ml-1 f13" data-role="dislikes_{$uid}">{$dislikes}</span>
</button>
</div>
<div class="">
<button type="button" class="btn btn-link text-muted px-1 text-decoration-none"
data-toggle="modal"
data-target="#modal-post-view"
data-format="{$format}"
data-start="{$start}"
data-uid="{$uid}"
data-featured="{$featured_16by9}"
data-provider="{$provider}"
data-videoId="{$videoId}"
data-url="{$post_url}">
<i class="material-icons align-text-bottom f20 align-middle">comment</i>
<span class="ml-1 f13" data-role="comment_{$uid}">{$comment}{$oneline}</span>
</button>
</div>
</footer>
</div>

View File

@@ -0,0 +1,57 @@
<div class="card card-full border-bottom rounded-0" data-role="item" data-uid="{$uid}">
<div class="position-relative embed-responsive embed-responsive-16by9 bg-faded"
data-toggle="modal"
data-target="#modal-post-view"
data-format="{$format}"
data-start="{$start}"
data-uid="{$uid}"
data-featured="{$featured_16by9}"
data-provider="{$provider}"
data-videoId="{$videoId}"
data-title="{$subject}"
data-url="{$post_url}">
<img class="card-img-top img-fluid rounded-0" src="{$featured_16by9}" alt="" data-role="featured">
<span class="position-absolute icon-tag text-white {$has_goodslink}" style="left:0.625rem;bottom:0.625rem" data-role="goodslink">
<i class="material-icons f18">redeem</i>
</span>
<time class="badge badge-default bg-black rounded-0 position-absolute f14" style="right:0.0625rem;bottom:0.0625rem" data-role="time">{$time}</time>
</div>
<div class="card-block px-2 pb-4" style="padding-top: .8rem">
<div class="media">
<a data-toggle="profile"
data-target="#modal-member-profile"
data-mbruid="{$mbruid}"
data-title="{$nic}"
data-url="{$profile_url}"
class="media-left">
<img class="media-object img-circle" data-role="avatar" src="{$avatar}" alt="" style="width:2.5rem">
</a>
<div class="media-body"
data-toggle="modal"
data-target="#modal-post-view"
data-format="{$format}"
data-uid="{$uid}"
data-featured="{$featured_16by9}"
data-provider="{$provider}"
data-videoId="{$videoId}"
data-url="{$post_url}">
<div class="f15 line-clamp-2" style="line-height: 1.2">{$subject}</div>
<ul class="list-inline f13 text-muted mt-1 mb-0">
<li class="list-inline-item">{$nic}</li>
<li class="list-inline-item">조회수 {$hit}회 </li>
<li class="list-inline-item">댓글 {$comment} </li>
<li class="list-inline-item"><time data-plugin="timeago" datetime="{$d_modify}"></time></li>
</ul>
</div>
<div class="ml-4 px-1">
<a href="#popup-post-postMore"
data-toggle="popup"
data-role="more"
data-uid="{$uid}" class="icon material-icons text-muted f18">
more_vert
</a>
</div>
</div>
</div>
</div>

View File

@@ -0,0 +1,29 @@
<div class="swiper-slide" style="width:40%;">
<div class="card card-video border-0 text-left m-0" data-role="item"
data-toggle="page"
data-target="#page-post-view"
data-format="{$format}"
data-start="{$start}"
data-uid="{$uid}"
data-featured="{$featured_16by9}"
data-provider="{$provider}"
data-videoId="{$videoId}"
data-title="{$subject}"
data-url="/post/{$cid}">
<div class="position-relative">
<img src="{$featured_16by9_sm}" alt="" class="img-fluid">
<time class="badge badge-default bg-black rounded-0 position-absolute" style="right:0.0625rem;bottom:0.0625rem" data-role="time">{$time}</time>
</div>
<div class="d-flex justify-content-between mt-2 mb-0 ">
<div class="f14 line-clamp-2" style="line-height:1.1">
{$subject}
</div>
<div class="ml-1 pl-1">
<a href="#popup-post-postMore" data-toggle="popup" data-uid="{$uid}" data-role="more" class="icon material-icons text-muted f18">
more_vert
</a>
</div>
</div><!-- /.d-flex -->
<small class="text-muted">{$nic}</small>
</div>
</div><!-- /.swiper-slide -->

View File

@@ -0,0 +1,8 @@
<div class="d-flex justify-content-between align-items-center py-2">
<label class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input" type="checkbox" id="listRadio{$uid}" name="postlist_members[]" value="{$uid}" {$is_list}>
<span class="custom-control-indicator"></span>
<span class="custom-control-description" for="listRadio{$uid}">{$name}</span>
</label>
<i class="material-icons text-muted mr-2" data-toggle="tooltip" title="{$display_label}">{$display_icon}</i>
</div>

View File

@@ -0,0 +1,37 @@
<li class="table-view-cell border-bottom-0">
<div class="media" data-toggle="modal"
data-target="#modal-post-view"
data-format="{$format}"
data-uid="{$uid}"
data-featured="{$featured_16by9}"
data-provider="{$provider}"
data-videoId="{$videoId}"
data-url="/post/{$cid}">
<div class="media-left">
<span class="embed-responsive embed-responsive-16by9 bg-faded">
<img class="media-object" src="{$featured_16by9_sm}" class="img-fluid" alt="" style="width:10rem">
<time class="badge badge-default bg-black rounded-0 position-absolute f13" style="top:auto;left:auto;right:0.0625rem;bottom:0.0625rem">{$time}</time>
</span>
</div>
<div class="media-body">
<div class="f14 line-clamp-3" style="line-height:1.3">{$subject}</div>
<div class="f12" style="margin-top:.2rem;line-height:1.3">
<p>{$nic}</p>
<ul class="list-inline text-muted mb-0">
<li class="list-inline-item">조회수 {$hit}회 </li>
<li class="list-inline-item"><time class="" data-plugin="timeago" datetime="{$d_modify}"></time></li>
</ul>
</div>
</div>
</div>
<span class="badge badge-default badge-inverted">
<a href="#popup-post-postMore" data-toggle="popup" data-uid="{$uid}" class="icon material-icons text-muted">more_vert</a>
</span>
</li>

View File

@@ -0,0 +1,11 @@
<header class="bar bar-nav bar-light bg-white px-0">
<a class="icon pull-left material-icons px-3" role="button" data-history="back" data-role="hback">arrow_back</a>
<a class="icon material-icons pull-left px-3 d-none" role="button" data-href="/" data-text="홈으로 이동" data-role="gohome">house</a>
<a class="icon material-icons pull-right px-3 mirror" role="button" data-toggle="linkShare" data-subject data-title="링크공유">reply</a>
<span class="title title-left" data-history="back" data-role="title">포스트 보기</span>
</header>
<div class="bar bar-standard bar-header-secondary px-0 border-0" data-role="listCollapse" style="height:auto">
</div>
<main role="main" class="content post-section">
<div data-role="box"></div>
</main>

View File

@@ -0,0 +1,110 @@
<div class="content-padded p-2">
<h5 data-role="title" class="mt-1 mb-0">
{$subject}
</h5>
<div class="d-flex justify-content-between align-items-end mt-2 mb-3">
<ul class="list-inline f13 text-muted mt-1 mb-0">
<li class="list-inline-item">조회수 {$hit}회 </li>
<li class="list-inline-item">{$d_regis}</li>
</ul>
<div class="">
<button type="button" class="btn btn-secondary"
data-toggle="move" data-target="[data-role='comment-box']" data-role="btn_comment">
<i class="material-icons align-text-bottom f20 align-middle">comment</i>
<span class="">{$comment}{$oneline}</span>
</button>
</div>
</div><!-- /.d-flex -->
<div class="rb-article px-4 pb-4 d-none" data-role="review">
<blockquote>
{$review}
</blockquote>
</div>
<div class="rb-article mb-4 text-break">
{$content}
</div>
<div class="content-padded" data-role="attach-photo"></div>
<ul class="table-view" data-role="attach-file"></ul>
<div class="content-padded" data-role="attach-link"></div>
<div class="content-padded">
{$tag}
</div>
</div>
<div class="d-flex text-xs-center px-2">
<div class="flex-fill" data-role="opinion">
<button type="button" class="btn btn-link muted-link px-3"
data-toggle="view_opinion"
data-title="동영상이 마음에 드시나요?"
data-subtext="로그인하여 의견을 알려주세요."
data-send="_ajax"
data-uid="{$uid}"
data-opinion="like"
data-effect="heartbeat"
data-role="btn_post_like_{$uid}">
<i class="material-icons d-block mb-1">thumb_up</i>
<small class="text-muted" data-role='likes_{$uid}'>{$likes}</small>
</button>
</div>
<div class="flex-fill" data-role="opinion">
<button type="button" class="btn btn-link muted-link px-3"
data-toggle="view_opinion"
data-target="#popup-login-guide"
data-title="동영상이 마음에 안 드시나요?"
data-subtext="로그인하여 의견을 알려주세요."
data-send="_ajax"
data-uid="{$uid}"
data-opinion="dislike"
data-effect="heartbeat"
data-role="btn_post_dislike_{$uid}">
<i class="material-icons d-block mb-1">thumb_down</i>
<small class="text-muted" data-role='dislikes_{$uid}'>{$dislikes}</small>
</button>
</div>
<div class="flex-fill" data-role="linkShare">
<button type="button" class="btn btn-link muted-link px-3"
data-toggle="linkShareCopy"
data-subject="{$subject}"
data-featured="{$featured_16by9}"
data-desc="{$review}"
data-link="{$post_url}"
data-title="링크공유">
<i class="material-icons d-block mb-1 mirror" style="font-size: 1.875rem;margin-top:-0.375rem">reply</i>
<small>공유</small>
</button>
</div>
<div class="flex-fill" data-role="listadd">
<button type="button" class="btn btn-link muted-link px-3"
data-toggle="view_listadd"
data-title="나중에 다시 보고 싶으신가요?"
data-subtext="로그인하여 동영상을 재생목록에 추가하세요."
data-uid="{$uid}">
<i class="material-icons d-block mb-1" style="font-size: 1.625rem;">library_add</i>
<small>저장</small>
</button>
</div>
</div>
<div class="border-top">
<div class="d-flex justify-content-between align-items-center content-padded">
<div data-role="item" data-featured_img="{$avatar}" data-subject="{$subject}">
{$view_opinion}
</div>
</div><!-- /.d-flex -->
</div>
<aside class="mt-4">
<div data-role="comment_box"></div>
</aside>

View File

@@ -0,0 +1,11 @@
<header class="bar bar-nav bar-light bg-white px-0">
<a class="icon pull-left material-icons px-3" role="button" data-history="back" data-role="hback">arrow_back</a>
<a class="icon material-icons pull-left px-3 d-none" role="button" data-href="/" data-text="홈으로 이동" data-role="gohome">house</a>
<a class="icon material-icons pull-right px-3 mirror" role="button" data-toggle="linkShare" data-subject data-title="링크공유">reply</a>
<span class="title title-left" data-history="back">포스트 보기</span>
</header>
<div class="bar bar-standard bar-header-secondary px-0 border-0" data-role="listCollapse" style="height:auto">
</div>
<main role="main" class="content post-section">
<div data-role="box"></div>
</main>

View File

@@ -0,0 +1,140 @@
<div class="content-padded p-2">
<h3 data-role="title" class="rb-subject">
{$subject}
</h3>
<div class="d-flex justify-content-between align-items-end mt-2 mb-3">
<ul class="list-inline f13 text-muted mt-1 mb-0">
<li class="list-inline-item">{$nic}</li>
<li class="list-inline-item">조회수 {$hit}회 </li>
<li class="list-inline-item">{$d_regis}</li>
</ul>
<div class="">
<button type="button" class="btn btn-secondary"
data-toggle="move" data-target="[data-role='comment-box']" data-role="btn_comment">
<i class="material-icons align-text-bottom f20 align-middle">comment</i>
<span class="">{$comment}{$oneline}</span>
</button>
</div>
</div><!-- /.d-flex -->
</div>
<div class="rb-article px-4 pb-4 d-none" data-role="review">
<blockquote>
{$review}
</blockquote>
</div>
<div class="rb-article mb-4 text-break">
{$content}
</div>
<div class="content-padded" data-role="attach-photo"></div>
<ul class="table-view" data-role="attach-file"></ul>
<div class="content-padded" data-role="attach-link"></div>
<div class="content-padded">
{$tag}
</div>
<div class="d-flex text-xs-center mt-4 px-2">
<div class="flex-fill" data-role="opinion">
<button type="button" class="btn btn-link muted-link px-3"
data-toggle="view_opinion"
data-title="동영상이 마음에 드시나요?"
data-subtext="로그인하여 의견을 알려주세요."
data-send="_ajax"
data-uid="{$uid}"
data-opinion="like"
data-role="btn_post_like_{$uid}">
<i class="material-icons d-block mb-1">thumb_up</i>
<small class="text-muted" data-role='likes_{$uid}'>{$likes}</small>
</button>
</div>
<div class="flex-fill" data-role="opinion">
<button type="button" class="btn btn-link muted-link px-3"
data-toggle="view_opinion"
data-target="#popup-login-guide"
data-title="동영상이 마음에 안 드시나요?"
data-subtext="로그인하여 의견을 알려주세요."
data-send="_ajax"
data-uid="{$uid}"
data-opinion="dislike"
data-role="btn_post_dislike_{$uid}">
<i class="material-icons d-block mb-1">thumb_down</i>
<small class="text-muted" data-role='dislikes_{$uid}'>{$dislikes}</small>
</button>
</div>
<div class="flex-fill" data-role="linkShare">
<button type="button" class="btn btn-link muted-link px-3"
data-toggle="linkShareCopy"
data-subject="{$subject}"
data-featured="{$featured_16by9}"
data-desc="{$review}"
data-link="{$post_url}"
data-title="링크공유">
<i class="material-icons d-block mb-1 mirror" style="font-size: 1.875rem;margin-top:-0.375rem">reply</i>
<small>공유</small>
</button>
</div>
<div class="flex-fill" data-role="listadd">
<button type="button" class="btn btn-link muted-link px-3"
data-toggle="view_listadd"
data-title="나중에 다시 보고 싶으신가요?"
data-subtext="로그인하여 동영상을 재생목록에 추가하세요."
data-uid="{$uid}">
<i class="material-icons d-block mb-1" style="font-size: 1.625rem;">library_add</i>
<small>저장</small>
</button>
</div>
<div class="flex-fill">
<button type="button" class="btn btn-link muted-link px-3"
data-toggle="view_report"
data-title="동영상을 신고하시겠습니까?"
data-subtext="부적절한 콘텐츠를 신고하려면 로그인하세요."
data-uid="{$uid}">
<i class="material-icons d-block mb-1" style="font-size: 1.875rem;margin-top:-0.125rem">flag</i>
<small>신고</small>
</button>
</div>
</div>
<div class="border-top border-bottom">
<div class="d-flex justify-content-between align-items-center content-padded">
<a class="text-reset media"
data-toggle="sheet"
href="#sheet-member-profile"
dat-url="{$profile_url}"
data-mbruid="{$mbruid}"
data-avatar="{$avatar}"
data-nic="{$nic}">
<img src="{$avatar}" class="mr-2 rounded-circle" style="width:2.125rem;height:2.125rem" alt="{$M1_nic}의 프로필">
<div class="media-body">
<div class="f16" style="line-height: 1.2;">{$nic}</div>
<p class="mb-0 text-muted f12">
구독자
<span data-role="num_follower">{$num_follower}</span>
</p>
</div>
</a><!-- /.media -->
<div>
{$view_opinion}
{$view_follow}
</div>
</div><!-- /.d-flex -->
</div>
<ul class="table-view table-view-sm border-top-0 border-bottom-0 mt-2" data-role="newPost">
{$newPost}
</ul>
<aside class="mt-4">
<div data-role="comment_box"></div>
</aside>

View File

@@ -0,0 +1,7 @@
<button type="button" class="btn btn-link {$isFollowing} mr-2"
data-title="채널을 구독하시겠습니까?"
data-subtext="채널을 구독하려면 로그인하세요."
data-toggle="follow"
data-mbruid="{$mbruid}">
구독
</button>

View File

@@ -0,0 +1,19 @@
<button class="d-flex justify-content-between align-items-center bg-black w-100 collapsed shadow-sm text-xs-left"
data-role="list"
data-toggle="collapse" data-target="#listCollapse"
aria-expanded="false" aria-controls="listCollapse">
<h3 class="f16 text-white content-padded">
{$list_name}<br>
<small class="text-muted">동영상 {$list_num}개 <span class="ml-1">• {$list_mbrnic}</span></small>
</h3>
<div class="pr-3">
<i class="fa fa-caret-up fa-lg text-muted" aria-hidden="true"></i>
</div>
</button><!-- /.d-flex -->
<div class="collapse" id="listCollapse">
<div class="shadow" style="overflow:auto;background-color: #111">
<ul class="table-view table-view-sm border-0 table-view-inverse mt-2 mb-4">
{$listPost}
</ul>
</div>
</div><!-- /.collapse -->

View File

@@ -0,0 +1,22 @@
<li class="table-view-cell border-bottom-0 serial {$L_active}">
<a class="media d-flex" data-toggle="view"
data-uid="{$L_uid}"
data-list="{$list_id}"
data-featured="{$L_featured_16by9}"
data-provider="{$L_provider}"
data-videoId="{$L_videoId}"
data-format="{$L_format}"
data-collapse="ture"
data-url="/post/{$L_cid}">
<span class="pull-left media-middle pr-2 pl-1 f12 counter" style="width:1.25rem"></span>
<span class="pull-left position-relative mr-2">
<img class="media-object" src="{$L_featured_16by9_sm}" style="width:7.5rem">
<time class="badge badge-dark rounded-0 position-absolute" style="right:0.0625rem;bottom:0.0625rem">{$L_time}</time>
</span>
<div class="media-body">
<p class="font-weight-light line-clamp-2 f16" >
{$L_subject}
</p>
</div>
</a>
</li>

View File

@@ -0,0 +1,35 @@
<li class="table-view-cell table-view-cell-full border-bottom-0">
<a data-toggle="view"
data-uid="{$newpost_uid}"
data-featured="{$newpost_featured_16by9}"
data-provider="{$newpost_provider}"
data-videoId="{$newpost_videoId}"
data-format="{$newpost_format}"
data-title="{$subject}"
data-url="/post/{$newpost_cid}">
<div class="pull-left mr-2 {$newpost_has_featured}">
<div class="embed-responsive embed-responsive-16by9 bg-faded">
<img class="media-object border" src="{$newpost_featured_16by9_sm}" alt="" style="width: 10rem">
<time class="badge badge-default rounded-0 position-absolute" style="top:auto;left:auto;right:0.0625rem;bottom:0.0625rem">{$newpost_time}</time>
</div>
</div>
<div class="media-body">
<h5 class="h6 my-1 font-weight-light line-clamp-3">
{$newpost_subject}
</h5>
<div class="mb-1">
<ul class="list-inline d-inline-block f13 text-muted">
<li class="list-inline-item">조회수 {$newpost_hit}회 </li>
<li class="list-inline-item">
<time data-plugin="timeago" datetime="{$newpost_d_modify}"></time>
</li>
</ul>
</div>
</div>
</a>
<span class="badge badge-default badge-inverted">
<a href="#popup-post-postMore" data-toggle="popup" data-uid="{$newpost_uid}" class="icon material-icons text-muted f18">more_vert</a>
</span>
</li>

View File

@@ -0,0 +1,8 @@
<button type="button" class="btn btn-link"
data-target="#modal-post-opinion"
data-opinion="like"
data-toggle="modal"
data-featured_img="{$avatar}" data-subject="{$subject}"
data-uid="{$uid}">
좋아요 내역
</button>

View File

@@ -0,0 +1,37 @@
<header class="bar bar-standard px-0 bar-dark bg-black border-bottom-0 bar-media shadow-sm">
<div class="embed-responsive embed-responsive-16by9 bg-black mask" data-role="video">
<oembed id="player"></oembed>
</div>
<div class="progress rounded-0 position-absolute" style="height: .15rem;left:0;right:0;bottom:0;top:auto;display:none" data-role="progress_yt">
<div class="progress-bar bg-danger" role="progressbar" style="width: 0" aria-valuenow="100" aria-valuemin="0" aria-valuemax="100"></div>
</div>
<div class="modia-loader"></div>
<div class="miniplayer-control">
<div class="d-flex justify-content-between align-items-center">
<div class="py-1" data-uid='' data-toggle="modal" data-target="#modal-post-view" data-url="">
<div data-role="subject" class="f13 text-black line-clamp-1"></div>
<span data-role="nic" class="f12 line-clamp-1 text-muted"></span>
</div>
<div style="width: 7.5rem;text-align: right" class="text-nowrap">
<button type="button" class="btn btn-link px-2 active" data-toggle="play">
<i class="material-icons">
pause
</i>
</button>
<button type="button" class="btn btn-link js-close px-3">
<i class="material-icons">
clear
</i>
</button>
<button type="button" class="d-none" data-act="pauseVideo">
pause
</button>
</div>
</div><!-- /.flex -->
<!-- /.flex -->
</div><!-- /.miniplayer-control -->
<div data-role="listCollapse" class="bg-black text-white"></div>
</header>
<main class="content post-section">
<div data-role="box"></div>
</main>

View File

@@ -0,0 +1,123 @@
<div class="content-padded mb-0" data-role="tag">
{$tag}
</div>
<button class="d-flex justify-content-between px-0 collapsed text-reset w-100" data-toggle="collapse" data-target="#collapseContent">
<div class="content-padded my-1 text-xs-left">
<strong class="h5 mb-0 line-clamp-2" data-role="subject">
{$subject}
</strong>
<small class="d-block text-muted mt-1">
조회수 {$hit}회
</small>
</div>
<div class="pr-3">
<i class="fa fa-caret-up text-muted" aria-hidden="true"></i>
</div>
</button>
<div class="d-flex text-xs-center px-3">
<div class="flex-fill" data-role="opinion">
<button type="button" class="btn btn-link muted-link px-3"
data-toggle="view_opinion"
data-title="동영상이 마음에 드시나요?"
data-subtext="로그인하여 의견을 알려주세요."
data-send="_ajax"
data-uid="{$uid}"
data-opinion="like"
data-effect="heartbeat"
data-role="btn_post_like_{$uid}">
<i class="material-icons d-block mb-1">thumb_up</i>
<small class="text-muted" data-role='likes_{$uid}'>{$likes}</small>
</button>
</div>
<div class="flex-fill" data-role="opinion">
<button type="button" class="btn btn-link muted-link px-3"
data-toggle="view_opinion"
data-target="#popup-login-guide"
data-title="동영상이 마음에 안 드시나요?"
data-subtext="로그인하여 의견을 알려주세요."
data-send="_ajax"
data-uid="{$uid}"
data-opinion="dislike"
data-effect="heartbeat"
data-role="btn_post_dislike_{$uid}">
<i class="material-icons d-block mb-1">thumb_down</i>
<small class="text-muted" data-role='dislikes_{$uid}'>{$dislikes}</small>
</button>
</div>
<div class="flex-fill" data-role="linkShare">
<button type="button" class="btn btn-link muted-link px-3"
data-toggle="linkShareCopy"
data-subject="{$subject}"
data-featured="{$featured_16by9}"
data-desc="{$review}"
data-link="{$post_url}"
data-title="링크공유">
<i class="material-icons d-block mb-1 mirror" style="font-size: 1.875rem;margin-top:-0.375rem">reply</i>
<small>공유</small>
</button>
</div>
<div class="flex-fill" data-role="listadd">
<button type="button" class="btn btn-link muted-link px-3"
data-toggle="view_listadd"
data-title="나중에 다시 보고 싶으신가요?"
data-subtext="로그인하여 동영상을 재생목록에 추가하세요."
data-uid="{$uid}">
<i class="material-icons d-block mb-1" style="font-size: 1.625rem;">library_add</i>
<small>저장</small>
</button>
</div>
<div class="flex-fill">
<button type="button" class="btn btn-link muted-link px-3"
data-toggle="view_report"
data-title="동영상을 신고하시겠습니까?"
data-subtext="부적절한 콘텐츠를 신고하려면 로그인하세요."
data-uid="{$uid}">
<i class="material-icons d-block mb-1" style="font-size: 1.875rem;margin-top:-0.125rem">flag</i>
<small>신고</small>
</button>
</div>
</div>
<div class="border-top border-bottom">
<div class="d-flex justify-content-between align-items-center content-padded">
<div class="text-reset media"
data-toggle="profile"
data-target="#modal-member-profile"
dat-url="{$profile_url}"
data-mbruid="{$mbruid}"
data-nic="{$nic}" data-change="true">
<img src="{$avatar}" class="mr-2 rounded-circle" style="width:2.125rem;height:2.125rem" alt="{$M1_nic}의 프로필">
<div class="media-body">
<div class="f16" style="line-height: 1.2;">{$nic}</div>
<p class="mb-0 text-muted f12">
구독자
<span data-role="num_follower">{$num_follower}</span>
</p>
</div>
</div><!-- /.media -->
<div class="text-right">
{$view_opinion}
{$view_follow}
</div>
</div><!-- /.d-flex -->
</div>
<!-- 본문 -->
<article class="collapse border-bottom" id="collapseContent">
<div class="f15 text-muted content-padded text-break" data-plugin="shorten">
{$content}
</div>
</article>
<ul class="table-view table-view-sm border-top-0 border-bottom-0 mt-2" data-role="newPost">
{$newPost}
</ul>
<aside class="mt-4 border-top">
<div data-role="comment_box"></div>
</aside>

View File

@@ -0,0 +1,124 @@
function setPostTrendChart(ctx,uid,mod,unit,start) {
$.post(rooturl+'/?r='+raccount+'&m=post&a=get_postTrend',{
uid : uid,
mod : mod,
unit : unit,
d_start : start
},function(response,status){
if(status=='success'){
var result = $.parseJSON(response);
var type=result.type;
var data=result.data;
var options=result.options;
var postChart = new Chart(ctx, {
type: type,
data: data,
options: options
});
$('[data-role="canvas"]').removeClass('d-none');
$('[data-role="loader"]').addClass('d-none');
} else {
alert(status);
}
});
}
page_post_analytics_hit.on('show.rc.page', function(event) {
var modal = modal_post_analytics;
var uid = modal.attr('data-uid');
var page = $(this);
var ctx = page.find('canvas');
var mod = 'hit';
var start = modal.attr('data-start');
page.find('[data-role="canvas"]').addClass('d-none');
page.find('[data-role="loader"]').removeClass('d-none');
setTimeout(function(){
setPostTrendChart(ctx,uid,mod,'day',start);
}, 400);
})
page_post_analytics_referer.on('show.rc.page', function(event) {
var modal = modal_post_analytics;
var uid = modal.attr('data-uid');
var page = $(this);
var ctx = page.find('canvas');
var mod = 'referer';
var start = modal.attr('data-start');
page.find('[data-role="canvas"]').addClass('d-none');
page.find('[data-role="loader"]').removeClass('d-none');
setTimeout(function(){
setPostTrendChart(ctx,uid,mod,'day',start);
}, 400);
})
page_post_analytics_device.on('show.rc.page', function(event) {
var modal = modal_post_analytics;
var uid = modal.attr('data-uid');
var page = $(this);
var ctx = page.find('canvas');
var mod = 'device';
var start = modal.attr('data-start');
page.find('[data-role="canvas"]').addClass('d-none');
page.find('[data-role="loader"]').removeClass('d-none');
setTimeout(function(){
setPostTrendChart(ctx,uid,mod,'day',start);
}, 400);
})
page_post_analytics_side.on('show.rc.page', function(event) {
var modal = modal_post_analytics;
var uid = modal.attr('data-uid');
var page = $(this);
var ctx = page.find('canvas');
var mod = 'side';
var start = modal.attr('data-start');
page.find('[data-role="canvas"]').addClass('d-none');
page.find('[data-role="loader"]').removeClass('d-none');
setTimeout(function(){
setPostTrendChart(ctx,uid,mod,'day',start);
}, 400);
})
page_post_analytics_likes.on('show.rc.page', function(event) {
var modal = modal_post_analytics;
var uid = modal.attr('data-uid');
var page = $(this);
var ctx = page.find('canvas');
var mod = 'likes';
var start = modal.attr('data-start');
page.find('[data-role="canvas"]').addClass('d-none');
page.find('[data-role="loader"]').removeClass('d-none');
setTimeout(function(){
setPostTrendChart(ctx,uid,mod,'day',start);
}, 400);
})
page_post_analytics_dislikes.on('show.rc.page', function(event) {
var modal = modal_post_analytics;
var uid = modal.attr('data-uid');
var page = $(this);
var ctx = page.find('canvas');
var mod = 'dislikes';
var start = modal.attr('data-start');
page.find('[data-role="canvas"]').addClass('d-none');
page.find('[data-role="loader"]').removeClass('d-none');
setTimeout(function(){
setPostTrendChart(ctx,uid,mod,'day',start);
}, 400);
})
page_post_analytics_comment.on('show.rc.page', function(event) {
var modal = modal_post_analytics;
var uid = modal.attr('data-uid');
var page = $(this);
var ctx = page.find('canvas');
var mod = 'comment';
var start = modal.attr('data-start');
page.find('[data-role="canvas"]').addClass('d-none');
page.find('[data-role="loader"]').removeClass('d-none');
setTimeout(function(){
setPostTrendChart(ctx,uid,mod,'day',start);
}, 400);
})

View File

@@ -0,0 +1,76 @@
function getPostBest(settings) {
var start = settings.start;
var d_start = settings.d_start;
var wrapper = settings.wrapper;
var sort=settings.sort; // sort
var orderby=settings.orderby; // orderby
var recnum=settings.recnum; // recnum
var markup_file = settings.markup;
var none = settings.none;
var paging = settings.paging; //페이징 타입
var currentPage =1; // 처음엔 무조건 1, 아래 더보기 진행되면서 +1 증가
wrapper.loader({ position: 'inside' });
$.post(rooturl+'/?r='+raccount+'&m=post&a=get_postBest',{
start: start,
d_start : d_start,
sort : sort,
recnum : recnum,
p : currentPage,
markup_file : markup_file
},function(response,status){
if(status=='success'){
var result = $.parseJSON(response);
var list=result.list;
var num=result.num;
var totalPage=result.tpg
wrapper.loader('hide');
if (list) wrapper.html(list);
else wrapper.html(none);
wrapper.find('[data-plugin="timeago"]').timeago();
if (paging=='infinit') {
//무한 스크롤
wrapper.closest('.content').infinitescroll({
dataSource: function(helpers, callback){
var nextPage = parseInt(currentPage)+1;
if (totalPage>currentPage) {
$.post(rooturl+'/?r='+raccount+'&m=post&a=get_postBest',{
start: start,
d_start : d_start,
sort: sort,
recnum : recnum,
markup_file : markup_file,
p : nextPage
},function(response) {
var result = $.parseJSON(response);
var error = result.error;
var list=result.list;
if(error) alert(result.error);
callback({ content: list });
currentPage++; // 현재 페이지 +1
console.log(currentPage+'페이지 불러옴')
wrapper.find('[data-plugin="timeago"]').timeago();
//wrapper.find('[data-plugin="markjs"]').mark(keyword); // marks.js
});
} else {
callback({ end: true });
console.log('더이상 불러올 페이지가 없습니다.')
}
},
appendToEle : wrapper,
percentage : 95, // 95% 아래로 스크롤할때 다움페이지 호출
hybrid : true // true: 버튼형, false: 자동
});
}
} else {
alert(status);
}
});
}

View File

@@ -0,0 +1,79 @@
function getPostCategory(settings) {
var wrapper = settings.wrapper;
var category=settings.category; // category
var sort=settings.sort; // sort
var orderby=settings.orderby; // orderby
var recnum=settings.recnum; // recnum
var totalPage = settings.totalPage;
var totalNUM = settings.totalNUM;
var markup_file = settings.markup;
var start = settings.start;
var none = settings.none;
var currentPage =1; // 처음엔 무조건 1, 아래 더보기 진행되면서 +1 증가
var prevNUM = currentPage * recnum;
var moreNUM = totalNUM - prevNUM ;
wrapper.loader();
$.post(rooturl+'/?r='+raccount+'&m=post&a=get_postCategory',{
sort : sort,
cat : category,
recnum : recnum,
p : currentPage,
markup_file : markup_file,
orderby :orderby,
start : start
},function(response,status){
if(status=='success'){
var result = $.parseJSON(response);
var list=result.list;
var num=result.num;
wrapper.loader('hide');
if (num) wrapper.html(list)
else wrapper.html(none)
wrapper.find('[data-plugin="timeago"]').timeago();
//무한 스크롤
wrapper.closest('.content').infinitescroll({
dataSource: function(helpers, callback){
var nextPage = parseInt(currentPage)+1;
if (totalPage>currentPage) {
$.post(rooturl+'/?r='+raccount+'&m=post&a=get_postKeyword',{
sort: sort,
keyword : keyword,
recnum : recnum,
markup_file : markup_file,
p : nextPage,
start : start
},function(response) {
var result = $.parseJSON(response);
var error = result.error;
var list=result.list;
if(error) alert(result.error);
callback({ content: list });
currentPage++; // 현재 페이지 +1
console.log(currentPage+'페이지 불러옴')
wrapper.find('[data-plugin="timeago"]').timeago();
//wrapper.find('[data-plugin="markjs"]').mark(keyword); // marks.js
});
} else {
callback({ end: true });
console.log('더이상 불러올 페이지가 없습니다.')
}
},
appendToEle : wrapper,
percentage : 95, // 95% 아래로 스크롤할때 다움페이지 호출
hybrid : false // true: 버튼형, false: 자동
});
} else {
alert(status);
}
});
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,124 @@
function getPostFeed(settings) {
var start = settings.start;
var wrapper = settings.wrapper;
var sort=settings.sort; // sort
var orderby=settings.orderby; // orderby
var recnum=settings.recnum; // recnum
var totalPage = settings.totalPage;
var totalNUM = settings.totalNUM;
var markup_file = settings.markup;
var none = settings.none;
var paging = settings.paging; //페이징 타입
var currentPage =1; // 처음엔 무조건 1, 아래 더보기 진행되면서 +1 증가
var prevNUM = currentPage * recnum;
var moreNUM = totalNUM - prevNUM ;
wrapper.removeClass('animated fadeIn');
wrapper.loader({ position: 'inside' });
$.post(rooturl+'/?r='+raccount+'&m=post&a=get_postFeed',{
start: start,
sort : sort,
recnum : recnum,
p : currentPage,
markup_file : markup_file
},function(response,status){
if(status=='success'){
var result = $.parseJSON(response);
var list=result.list;
var num=result.num;
var totalPage=result.tpg;
wrapper.loader('hide');
if (list) wrapper.html(list).addClass('animated fadeIn');
else wrapper.html(none);
wrapper.find('[data-plugin="timeago"]').timeago();
if (paging=='infinit') {
//무한 스크롤
wrapper.closest('.content').infinitescroll({
dataSource: function(helpers, callback){
var nextPage = parseInt(currentPage)+1;
if (totalPage>currentPage) {
$.post(rooturl+'/?r='+raccount+'&m=post&a=get_postFeed',{
start: start,
sort: sort,
recnum : recnum,
markup_file : markup_file,
p : nextPage
},function(response) {
var result = $.parseJSON(response);
var error = result.error;
var list=result.list;
if(error) alert(result.error);
callback({ content: list });
currentPage++; // 현재 페이지 +1
console.log(currentPage+'페이지 불러옴')
wrapper.find('[data-plugin="timeago"]').timeago();
//wrapper.find('[data-plugin="markjs"]').mark(keyword); // marks.js
});
} else {
callback({ end: true });
console.log('더이상 불러올 페이지가 없습니다.')
}
},
appendToEle : wrapper,
percentage : 95, // 95% 아래로 스크롤할때 다움페이지 호출
hybrid : false // true: 버튼형, false: 자동
});
} else {
//수동 페이징
if (totalPage>currentPage) {
$(document).on('click','[data-toggle="morePage"]',function(){
var button = $(this);
var nextPage = parseInt(currentPage)+1;
console.log(nextPage+' 페이지 불러옴');
console.log('전체페이지'+totalPage)
return false
//
// $.post(rooturl+'/?r='+raccount+'&m=post&a=get_postAll',{
// start: start,
// sort: sort,
// recnum : recnum,
// markup_file : markup_file,
// p : nextPage
// },function(response) {
// var result = $.parseJSON(response);
// var error = result.error;
// var list=result.list;
// if(error) alert(result.error);
//
// currentPage++; // 현재 페이지 +1
// console.log(currentPage+'페이지 불러옴')
// wrapper.find('[data-plugin="timeago"]').timeago();
// wrapper.append(list);
//
// });
});
wrapper.append('<div class="content-padded"><button type="button" class="btn btn-link btn-block text-muted" data-toggle="morePage"><i class="material-icons">expand_more</i></button></div>');
} else {
wrapper.append('<div class="infinitescroll-end"></div>');
console.log('피드에서 더이상 불러올 페이지가 없습니다.')
}
}
} else {
alert(status);
}
});
}

View File

@@ -0,0 +1,78 @@
function getPostKeyword(settings) {
var wrapper = settings.wrapper;
var keyword=settings.keyword; // keyword
var sort=settings.sort; // sort
var orderby=settings.orderby; // orderby
var recnum=settings.recnum; // recnum
var totalPage = settings.totalPage;
var totalNUM = settings.totalNUM;
var markup_file = settings.markup;
var start = settings.start;
var none = settings.none;
var currentPage =1; // 처음엔 무조건 1, 아래 더보기 진행되면서 +1 증가
var prevNUM = currentPage * recnum;
var moreNUM = totalNUM - prevNUM ;
wrapper.loader();
$.post(rooturl+'/?r='+raccount+'&m=post&a=get_postKeyword',{
sort : sort,
keyword : keyword,
recnum : recnum,
p : currentPage,
markup_file : markup_file,
start : start
},function(response,status){
if(status=='success'){
var result = $.parseJSON(response);
var list=result.list;
var num=result.num;
wrapper.loader('hide');
if (num) wrapper.html(list)
else wrapper.html(none)
wrapper.find('[data-plugin="timeago"]').timeago();
//무한 스크롤
wrapper.closest('.content').infinitescroll({
dataSource: function(helpers, callback){
var nextPage = parseInt(currentPage)+1;
if (totalPage>currentPage) {
$.post(rooturl+'/?r='+raccount+'&m=post&a=get_postKeyword',{
sort: sort,
keyword : keyword,
recnum : recnum,
markup_file : markup_file,
p : nextPage,
start : start
},function(response) {
var result = $.parseJSON(response);
var error = result.error;
var list=result.list;
if(error) alert(result.error);
callback({ content: list });
currentPage++; // 현재 페이지 +1
console.log(currentPage+'페이지 불러옴')
wrapper.find('[data-plugin="timeago"]').timeago();
//wrapper.find('[data-plugin="markjs"]').mark(keyword); // marks.js
});
} else {
callback({ end: true });
console.log('더이상 불러올 페이지가 없습니다.')
}
},
appendToEle : wrapper,
percentage : 95, // 95% 아래로 스크롤할때 다움페이지 호출
hybrid : false // true: 버튼형, false: 자동
});
} else {
alert(status);
}
});
}

View File

@@ -0,0 +1,91 @@
function getPostLiked(settings) {
var start = settings.start;
var wrapper = settings.wrapper;
var sort=settings.sort; // sort
var orderby=settings.orderby; // orderby
var recnum=settings.recnum; // recnum
var markup_file = settings.markup;
var none = settings.none;
var currentPage =1; // 처음엔 무조건 1, 아래 더보기 진행되면서 +1 증가
wrapper.removeClass('animated fadeIn');
wrapper.loader();
$.post(rooturl+'/?r='+raccount+'&m=post&a=get_postLiked',{
start: start,
sort : sort,
recnum : recnum,
p : currentPage,
markup_file : markup_file
},function(response,status){
if(status=='success'){
var result = $.parseJSON(response);
var list=result.list;
var num=result.num;
var totalPage=result.tpg;
wrapper.loader('hide');
if (num) wrapper.html(list).addClass('animated fadeIn');
else wrapper.html(none);
wrapper.find('[data-plugin="timeago"]').timeago();
//무한 스크롤
wrapper.closest('.content').infinitescroll({
dataSource: function(helpers, callback){
var nextPage = parseInt(currentPage)+1;
if (totalPage>currentPage) {
$.post(rooturl+'/?r='+raccount+'&m=post&a=get_postLiked',{
start: start,
sort: sort,
recnum : recnum,
markup_file : markup_file,
p : nextPage
},function(response) {
var result = $.parseJSON(response);
var error = result.error;
var list=result.list;
if(error) alert(result.error);
callback({ content: list });
currentPage++; // 현재 페이지 +1
console.log(currentPage+'페이지 불러옴')
wrapper.find('[data-plugin="timeago"]').timeago();
//wrapper.find('[data-plugin="markjs"]').mark(keyword); // marks.js
});
} else {
callback({ end: true });
console.log('더이상 불러올 페이지가 없습니다.')
}
},
appendToEle : wrapper,
percentage : 95, // 95% 아래로 스크롤할때 다움페이지 호출
hybrid : false // true: 버튼형, false: 자동
});
// edgeEffect
var wrapper_startY = 0;
wrapper.closest('.content').on('touchstart',function(event){
wrapper_startY = event.originalEvent.changedTouches[0].pageY;
});
wrapper.closest('.content').on('touchmove',function(event){
var wrapper_moveY = event.originalEvent.changedTouches[0].pageY;
var wrapper_contentY = $(this).scrollTop();
if (wrapper_contentY === 0 && wrapper_moveY > wrapper_startY) {
if (wrapper_moveY-wrapper_startY>50) {
edgeEffect(wrapper.closest('.page'),'top','show'); // 스크롤 상단 끝
}
}
if( (wrapper_moveY < wrapper_startY) && ($(this).scrollTop() + $(this).innerHeight() >= $(this)[0].scrollHeight)) {
if (wrapper_startY-wrapper_moveY>50) {
edgeEffect(wrapper.closest('.page'),'bottom','show');
}
}
});
} else {
alert(status);
}
});
}

View File

@@ -0,0 +1,78 @@
function getPostListAll(settings) {
var wrapper = settings.wrapper;
var start = settings.start;
var sort=settings.sort; // sort
var orderby=settings.orderby; // orderby
var recnum=settings.recnum; // recnum
var totalPage = settings.totalPage;
var totalNUM = settings.totalNUM;
var markup_file = settings.markup;
var none = settings.none;
var currentPage =1; // 처음엔 무조건 1, 아래 더보기 진행되면서 +1 증가
var prevNUM = currentPage * recnum;
var moreNUM = totalNUM - prevNUM ;
wrapper.loader();
$.post(rooturl+'/?r='+raccount+'&m=post&a=get_listAll',{
sort : sort,
recnum : recnum,
p : currentPage,
markup_file : markup_file
},function(response,status){
if(status=='success'){
var result = $.parseJSON(response);
var list=result.list;
var num=result.num;
wrapper.loader('hide');
if (num) {
wrapper.html(list);
console.log(start)
wrapper.find('[data-toggle="page"]').attr('data-start',start);
} else {
wrapper.html(none)
}
wrapper.find('[data-plugin="timeago"]').timeago();
//무한 스크롤
wrapper.closest('.content').infinitescroll({
dataSource: function(helpers, callback){
var nextPage = parseInt(currentPage)+1;
if (totalPage>currentPage) {
$.post(rooturl+'/?r='+raccount+'&m=post&a=get_listAll',{
sort: sort,
recnum : recnum,
markup_file : markup_file,
p : nextPage
},function(response) {
var result = $.parseJSON(response);
var error = result.error;
var list=result.list;
if(error) alert(result.error);
callback({ content: list });
currentPage++; // 현재 페이지 +1
console.log(currentPage+'페이지 불러옴')
wrapper.find('[data-role="item"]').attr('data-start',start);
wrapper.find('[data-plugin="timeago"]').timeago();
});
} else {
callback({ end: true });
console.log('더이상 불러올 페이지가 없습니다.')
}
},
appendToEle : wrapper,
percentage : 95, // 95% 아래로 스크롤할때 다움페이지 호출
hybrid : false // true: 버튼형, false: 자동
});
} else {
alert(status);
}
});
}

View File

@@ -0,0 +1,72 @@
function getPostListview(settings) {
var listid = settings.listid;
var wrapper = settings.wrapper;
var sort=settings.sort; // sort
var orderby=settings.orderby; // orderby
var recnum=settings.recnum; // recnum
var totalPage = settings.totalPage;
var totalNUM = settings.totalNUM;
var markup_file = settings.markup;
var none = settings.none;
var currentPage =1; // 처음엔 무조건 1, 아래 더보기 진행되면서 +1 증가
var prevNUM = currentPage * recnum;
var moreNUM = totalNUM - prevNUM ;
wrapper.loader();
$.post(rooturl+'/?r='+raccount+'&m=post&a=get_listview',{
listid : listid,
sort : sort,
recnum : recnum,
p : currentPage,
markup_file : markup_file
},function(response,status){
if(status=='success'){
var result = $.parseJSON(response);
var box=result.box;
var num=result.num;
wrapper.loader('hide');
wrapper.html(box)
wrapper.find('[data-plugin="timeago"]').timeago();
//무한 스크롤
wrapper.closest('.content').infinitescroll({
dataSource: function(helpers, callback){
var nextPage = parseInt(currentPage)+1;
if (totalPage>currentPage) {
$.post(rooturl+'/?r='+raccount+'&m=post&a=get_listview',{
listid : listid,
sort: sort,
recnum : recnum,
markup_file : markup_file,
p : nextPage
},function(response) {
var result = $.parseJSON(response);
var error = result.error;
var list=result.list;
if(error) alert(result.error);
callback({ content: list });
currentPage++; // 현재 페이지 +1
console.log(currentPage+'페이지 불러옴')
wrapper.find('[data-plugin="timeago"]').timeago();
});
} else {
callback({ end: true });
console.log('더이상 불러올 페이지가 없습니다.')
}
},
appendToEle : wrapper,
percentage : 95, // 95% 아래로 스크롤할때 다움페이지 호출
hybrid : false // true: 버튼형, false: 자동
});
} else {
alert(status);
}
});
}

View File

@@ -0,0 +1,169 @@
function getPostMore(uid) {
var wrapper = popup_post_postMore;
wrapper.find('[data-role="list"]').html('<div data-role="loader"><div class="d-flex justify-content-center align-items-center text-muted" style="height:30vh"><div class="spinner-border mr-2" role="status"></div></div></div>');
$.post(rooturl+'/?r='+raccount+'&m=post&a=get_postMenu',{
uid: uid
},function(response,status){
if(status=='success'){
var result = $.parseJSON(response);
var list=result.list;
var owner=result.owner;
var likes=result.likes;
var subject = result.subject.replace(/&quot;/g, '"');
var featured=result.featured;
var review=result.review;
var link=result.link;
var cid=result.cid;
wrapper.find('[data-role="list"]').html(list)
wrapper.find('[data-toggle="kakaoTalkSend"],[data-toggle="linkShare"]').attr('data-subject',subject).attr('data-review',review).attr('data-featured',featured).attr('data-link',link).attr('data-entry',cid);
if (owner) {
wrapper.find('[data-role="list"] [data-toggle="saved"]').closest('.table-view-cell').remove();
wrapper.find('[data-role="list"] [data-toggle="report"]').closest('.table-view-cell').remove();
}
if (!likes) {
wrapper.find('[data-role="list"] [data-toggle="opinionList"]').closest('.table-view-cell').remove();
}
} else {
alert(status);
}
});
}
popup_post_postMore.on('click','[data-toggle="listAdd"]',function(){
var button = $(this);
var uid = popup_post_postMore.attr('data-uid');
history.back();
setTimeout(function(){
if (memberid) {
sheet_post_listadd.attr('data-uid',uid).css('top','20vh');
sheet_post_listadd.sheet();
} else {
var title = button.attr('data-title')
var subtext = button.attr('data-subtext')
popup_login_guide.find('[data-role="title"]').text(title);
popup_login_guide.find('[data-role="subtext"]').text(subtext);
popup_login_guide.popup('show');
}
}, 200);
});
popup_post_postMore.on('click','[data-toggle="report"]',function(){
var button = $(this);
var uid = popup_post_postMore.attr('data-uid');
history.back();
setTimeout(function(){
if (memberid) {
popup_post_report.attr('data-uid',uid);
popup_post_report.popup();
} else {
var title = button.attr('data-title')
var subtext = button.attr('data-subtext')
popup_login_guide.find('[data-role="title"]').text(title);
popup_login_guide.find('[data-role="subtext"]').text(subtext);
popup_login_guide.popup('show');
}
}, 200);
});
popup_post_postMore.on('click','[data-toggle="saved"]',function(){
var button = $(this);
var uid = popup_post_postMore.attr('data-uid');
history.back();
setTimeout(function(){
if (memberid) {
setTimeout(function(){
$.post(rooturl+'/?r='+raccount+'&m=post&a=update_saved',{
uid : uid
},function(response,status){
if(status=='success'){
$.notify({message: '나중에 볼 동영상에 추가되었습니다.'},{type: 'default'});
} else {
alert(status);
}
});
}, 100);
} else {
var title = button.attr('data-title')
var subtext = button.attr('data-subtext')
popup_login_guide.find('[data-role="title"]').text(title);
popup_login_guide.find('[data-role="subtext"]').text(subtext);
popup_login_guide.popup('show');
}
}, 200);
});
popup_post_postMore.on('click','[data-toggle="postedit"]',function(){
var button = $(this);
var uid = button.attr('data-uid');
var title = button.attr('data-title');
var url = button.attr('data-url');
modal_post_write.attr('data-uid',uid);
history.back();
setTimeout(function(){
modal_post_write.modal({
title : title,
url : url
})
}, 200);
});
popup_post_postMore.on('click','[data-toggle="analytics"]',function(){
var button = $(this);
var uid = button.attr('data-uid');
modal_post_analytics.attr('data-uid',uid);
history.back();
setTimeout(function(){
modal_post_analytics.modal()
}, 200);
});
popup_post_postMore.on('click','[data-toggle="opinionList"]',function(){
var button = $(this);
var uid = popup_post_postMore.attr('data-uid');
modal_post_opinion.attr('data-uid',uid);
history.back();
setTimeout(function(){
modal_post_opinion.modal()
}, 200);
});
popup_post_postMore.on('click','[data-toggle="postdel"]',function(){
var button = $(this);
var uid = popup_post_postMore.attr('data-uid');
var title = button.attr('data-title');
var type = button.attr('data-type');
popup_post_delConfirm.attr('data-uid',uid);
history.back();
setTimeout(function(){
popup_post_delConfirm.popup({
title : title
})
}, 200);
});
// 카카오톡 링크 공유
popup_post_postMore.on('click','[data-toggle="kakaoTalkSend"]',function(){
var button = $(this);
var subject = button.attr('data-subject');
var review = button.attr('data-review');
var featured = button.attr('data-featured');
var link = button.attr('data-link');
history.back();
kakaoTalkSend({
subject : subject,
review : review,
featured : featured,
link : link
})
});

View File

@@ -0,0 +1,90 @@
function getMyHistory(settings) {
var start = settings.start;
var wrapper = settings.wrapper;
var sort=settings.sort; // sort
var orderby=settings.orderby; // orderby
var recnum=settings.recnum; // recnum
var markup_file = settings.markup;
var none = settings.none;
var currentPage =1; // 처음엔 무조건 1, 아래 더보기 진행되면서 +1 증가
wrapper.removeClass('animated fadeIn');
wrapper.loader({ position: 'inside' });
$.post(rooturl+'/?r='+raccount+'&m=post&a=get_myHistory',{
start: start,
sort : sort,
recnum : recnum,
p : currentPage,
markup_file : markup_file
},function(response,status){
if(status=='success'){
var result = $.parseJSON(response);
var list=result.list;
var num=result.num;
var totalPage=result.tpg;
wrapper.loader('hide');
if (num) wrapper.html(list).addClass('animated fadeIn');
else wrapper.html(none);
wrapper.find('[data-plugin="timeago"]').timeago();
//무한 스크롤
wrapper.closest('.content').infinitescroll({
dataSource: function(helpers, callback){
var nextPage = parseInt(currentPage)+1;
if (totalPage>currentPage) {
$.post(rooturl+'/?r='+raccount+'&m=post&a=get_myHistory',{
start: start,
sort: sort,
recnum : recnum,
markup_file : markup_file,
p : nextPage
},function(response) {
var result = $.parseJSON(response);
var error = result.error;
var list=result.list;
if(error) alert(result.error);
callback({ content: list });
currentPage++; // 현재 페이지 +1
console.log(currentPage+'페이지 불러옴')
wrapper.find('[data-plugin="timeago"]').timeago();
});
} else {
callback({ end: true });
console.log('더이상 불러올 페이지가 없습니다.')
}
},
appendToEle : wrapper,
percentage : 95, // 95% 아래로 스크롤할때 다움페이지 호출
hybrid : false // true: 버튼형, false: 자동
});
// edgeEffect
var wrapper_startY = 0;
wrapper.closest('.content').on('touchstart',function(event){
wrapper_startY = event.originalEvent.changedTouches[0].pageY;
});
wrapper.closest('.content').on('touchmove',function(event){
var wrapper_moveY = event.originalEvent.changedTouches[0].pageY;
var wrapper_contentY = $(this).scrollTop();
if (wrapper_contentY === 0 && wrapper_moveY > wrapper_startY) {
if (wrapper_moveY-wrapper_startY>50) {
edgeEffect(wrapper.closest('.page'),'top','show'); // 스크롤 상단 끝
}
}
if( (wrapper_moveY < wrapper_startY) && ($(this).scrollTop() + $(this).innerHeight() >= $(this)[0].scrollHeight)) {
if (wrapper_startY-wrapper_moveY>50) {
edgeEffect(wrapper.closest('.page'),'bottom','show');
}
}
});
} else {
alert(status);
}
});
}

View File

@@ -0,0 +1,90 @@
function getMyList(settings) {
var start = settings.start;
var wrapper = settings.wrapper;
var sort=settings.sort; // sort
var orderby=settings.orderby; // orderby
var recnum=settings.recnum; // recnum
var markup_file = settings.markup;
var none = settings.none;
var currentPage =1; // 처음엔 무조건 1, 아래 더보기 진행되면서 +1 증가
wrapper.loader({ position: 'inside' });
$.post(rooturl+'/?r='+raccount+'&m=post&a=get_myList',{
start: start,
sort : sort,
recnum : recnum,
p : currentPage,
markup_file : markup_file
},function(response,status){
if(status=='success'){
var result = $.parseJSON(response);
var list=result.list;
var num=result.num;
var totalPage=result.tpg;
if (num) wrapper.html(list)
else wrapper.html(none)
wrapper.find('[data-plugin="timeago"]').timeago();
//무한 스크롤
wrapper.closest('.content').infinitescroll({
dataSource: function(helpers, callback){
var nextPage = parseInt(currentPage)+1;
if (totalPage>currentPage) {
$.post(rooturl+'/?r='+raccount+'&m=post&a=get_myList',{
start: start,
sort: sort,
recnum : recnum,
markup_file : markup_file,
p : nextPage
},function(response) {
var result = $.parseJSON(response);
var error = result.error;
var list=result.list;
if(error) alert(result.error);
callback({ content: list });
currentPage++; // 현재 페이지 +1
console.log(currentPage+'페이지 불러옴')
wrapper.find('[data-plugin="timeago"]').timeago();
//wrapper.find('[data-plugin="markjs"]').mark(keyword); // marks.js
});
} else {
callback({ end: true });
console.log('더이상 불러올 페이지가 없습니다.')
}
},
appendToEle : wrapper,
percentage : 95, // 95% 아래로 스크롤할때 다움페이지 호출
hybrid : false // true: 버튼형, false: 자동
});
// edgeEffect
var wrapper_startY = 0;
wrapper.closest('.content').on('touchstart',function(event){
wrapper_startY = event.originalEvent.changedTouches[0].pageY;
});
wrapper.closest('.content').on('touchmove',function(event){
var wrapper_moveY = event.originalEvent.changedTouches[0].pageY;
var wrapper_contentY = $(this).scrollTop();
if (wrapper_contentY === 0 && wrapper_moveY > wrapper_startY) {
if (wrapper_moveY-wrapper_startY>50) {
edgeEffect(wrapper.closest('.page'),'top','show'); // 스크롤 상단 끝
}
}
if( (wrapper_moveY < wrapper_startY) && ($(this).scrollTop() + $(this).innerHeight() >= $(this)[0].scrollHeight)) {
if (wrapper_startY-wrapper_moveY>50) {
edgeEffect(wrapper.closest('.page'),'bottom','show');
}
}
});
} else {
alert(status);
}
});
}

View File

@@ -0,0 +1,91 @@
function getMyPost(settings) {
var start = settings.start;
var wrapper = settings.wrapper;
var sort=settings.sort; // sort
var orderby=settings.orderby; // orderby
var recnum=settings.recnum; // recnum
var markup_file = settings.markup;
var none = settings.none;
var currentPage =1; // 처음엔 무조건 1, 아래 더보기 진행되면서 +1 증가
wrapper.removeClass('animated fadeIn');
wrapper.loader();
$.post(rooturl+'/?r='+raccount+'&m=post&a=get_myPost',{
start: start,
sort : sort,
recnum : recnum,
p : currentPage,
markup_file : markup_file
},function(response,status){
if(status=='success'){
var result = $.parseJSON(response);
var list=result.list;
var num=result.num;
var totalPage=result.tpg;
wrapper.loader('hide');
if (num) wrapper.html(list).addClass('animated fadeIn');
else wrapper.html(none);
wrapper.find('[data-plugin="timeago"]').timeago();
//무한 스크롤
wrapper.closest('.content').infinitescroll({
dataSource: function(helpers, callback){
var nextPage = parseInt(currentPage)+1;
if (totalPage>currentPage) {
$.post(rooturl+'/?r='+raccount+'&m=post&a=get_myPost',{
start: start,
sort: sort,
recnum : recnum,
markup_file : markup_file,
p : nextPage
},function(response) {
var result = $.parseJSON(response);
var error = result.error;
var list=result.list;
if(error) alert(result.error);
callback({ content: list });
currentPage++; // 현재 페이지 +1
console.log(currentPage+'페이지 불러옴')
wrapper.find('[data-plugin="timeago"]').timeago();
//wrapper.find('[data-plugin="markjs"]').mark(keyword); // marks.js
});
} else {
callback({ end: true });
console.log('더이상 불러올 페이지가 없습니다.')
}
},
appendToEle : wrapper,
percentage : 95, // 95% 아래로 스크롤할때 다움페이지 호출
hybrid : false // true: 버튼형, false: 자동
});
// edgeEffect
var wrapper_startY = 0;
wrapper.closest('.content').on('touchstart',function(event){
wrapper_startY = event.originalEvent.changedTouches[0].pageY;
});
wrapper.closest('.content').on('touchmove',function(event){
var wrapper_moveY = event.originalEvent.changedTouches[0].pageY;
var wrapper_contentY = $(this).scrollTop();
if (wrapper_contentY === 0 && wrapper_moveY > wrapper_startY) {
if (wrapper_moveY-wrapper_startY>50) {
edgeEffect(wrapper.closest('.page'),'top','show'); // 스크롤 상단 끝
}
}
if( (wrapper_moveY < wrapper_startY) && ($(this).scrollTop() + $(this).innerHeight() >= $(this)[0].scrollHeight)) {
if (wrapper_startY-wrapper_moveY>50) {
edgeEffect(wrapper.closest('.page'),'bottom','show');
}
}
});
} else {
alert(status);
}
});
}

View File

@@ -0,0 +1,77 @@
function getPostOpinion(settings) {
var start = settings.start;
var wrapper = settings.wrapper;
var uid=settings.uid;
var opinion=settings.opinion;
var sort=settings.sort; // sort
var orderby=settings.orderby; // orderby
var recnum=settings.recnum; // recnum
var totalPage = settings.totalPage;
var totalNUM = settings.totalNUM;
var markup_file = settings.markup;
var none = settings.none;
var currentPage =1; // 처음엔 무조건 1, 아래 더보기 진행되면서 +1 증가
var prevNUM = currentPage * recnum;
var moreNUM = totalNUM - prevNUM ;
wrapper.loader({ position: 'inside' });
$.post(rooturl+'/?r='+raccount+'&m=post&a=get_opinionList',{
uid : uid,
opinion : opinion,
start: start,
sort : sort,
recnum : recnum,
p : currentPage,
markup_file : markup_file
},function(response,status){
if(status=='success'){
var result = $.parseJSON(response);
var list=result.list;
var num=result.num;
if (num) wrapper.html(list)
else wrapper.html(none)
wrapper.find('[data-plugin="timeago"]').timeago();
//무한 스크롤
wrapper.closest('.content').infinitescroll({
dataSource: function(helpers, callback){
var nextPage = parseInt(currentPage)+1;
if (totalPage>currentPage) {
$.post(rooturl+'/?r='+raccount+'&m=post&a=get_postSaved',{
start: start,
sort: sort,
recnum : recnum,
markup_file : markup_file,
p : nextPage
},function(response) {
var result = $.parseJSON(response);
var error = result.error;
var list=result.list;
if(error) alert(result.error);
callback({ content: list });
currentPage++; // 현재 페이지 +1
console.log(currentPage+'페이지 불러옴')
wrapper.find('[data-plugin="timeago"]').timeago();
//wrapper.find('[data-plugin="markjs"]').mark(keyword); // marks.js
});
} else {
callback({ end: true });
console.log('더이상 불러올 페이지가 없습니다.')
}
},
appendToEle : wrapper,
percentage : 95, // 95% 아래로 스크롤할때 다움페이지 호출
hybrid : false // true: 버튼형, false: 자동
});
} else {
alert(status);
}
});
}

View File

@@ -0,0 +1,115 @@
function getPostAll(settings) {
var start = settings.start;
var wrapper = settings.wrapper;
var page = wrapper.closest('.page');
var sort=settings.sort; // sort
var orderby=settings.orderby; // orderby
var recnum=settings.recnum; // recnum
var markup_file = settings.markup;
var none = settings.none;
var paging = settings.paging; //페이징 타입
var currentPage =1; // 처음엔 무조건 1, 아래 더보기 진행되면서 +1 증가
wrapper.removeClass('animated fadeIn');
wrapper.loader();
$.post(rooturl+'/?r='+raccount+'&m=post&a=get_postAll',{
start: start,
sort : sort,
recnum : recnum,
p : currentPage,
markup_file : markup_file
},function(response,status){
if(status=='success'){
var result = $.parseJSON(response);
var list=result.list;
var num=result.num;
var totalPage=result.tpg;
wrapper.loader('hide');
if (list) wrapper.html(list).addClass('animated fadeIn');
else wrapper.html(none)
wrapper.find('[data-plugin="timeago"]').timeago();
if (page.find('.snap-content').length) {
overScrollEffect(page.find('.snap-content'));
} else {
overScrollEffect(page);
}
if (paging=='infinit') {
pullToRefresh_post($(start));
//무한 스크롤
wrapper.closest('.content').infinitescroll({
dataSource: function(helpers, callback){
var nextPage = parseInt(currentPage)+1;
if (totalPage>currentPage) {
$.post(rooturl+'/?r='+raccount+'&m=post&a=get_postAll',{
start: start,
sort: sort,
recnum : recnum,
markup_file : markup_file,
p : nextPage
},function(response) {
var result = $.parseJSON(response);
var error = result.error;
var list=result.list;
if(error) alert(result.error);
callback({ content: list });
currentPage++; // 현재 페이지 +1
console.log(currentPage+'페이지 불러옴')
wrapper.find('[data-plugin="timeago"]').timeago();
//wrapper.find('[data-plugin="markjs"]').mark(keyword); // marks.js
});
} else {
callback({ end: true });
console.log('더이상 불러올 페이지가 없습니다.')
}
},
appendToEle : wrapper,
percentage : 85, // 95% 아래로 스크롤할때 다움페이지 호출
hybrid : false // true: 버튼형, false: 자동
});
} else {
//수동 페이징
if (totalPage>currentPage) {
$.post(rooturl+'/?r='+raccount+'&m=post&a=get_postAll',{
start: start,
sort: sort,
recnum : recnum,
markup_file : markup_file,
p : nextPage
},function(response) {
var result = $.parseJSON(response);
var error = result.error;
var list=result.list;
if(error) alert(result.error);
callback({ content: list });
currentPage++; // 현재 페이지 +1
console.log(currentPage+'페이지 불러옴')
wrapper.find('[data-plugin="timeago"]').timeago();
wrapper.append(list);
wrapper.append('<button type="button" class="btn btn-white btn-block">불러오기</button>');
});
} else {
console.log('더이상 불러올 페이지가 없습니다.')
}
}
} else {
alert(status);
}
});
}

View File

@@ -0,0 +1,91 @@
function getPostSaved(settings) {
var start = settings.start;
var wrapper = settings.wrapper;
var sort=settings.sort; // sort
var orderby=settings.orderby; // orderby
var recnum=settings.recnum; // recnum
var markup_file = settings.markup;
var none = settings.none;
var currentPage =1; // 처음엔 무조건 1, 아래 더보기 진행되면서 +1 증가
wrapper.removeClass('animated fadeIn');
wrapper.loader();
$.post(rooturl+'/?r='+raccount+'&m=post&a=get_postSaved',{
start: start,
sort : sort,
recnum : recnum,
p : currentPage,
markup_file : markup_file
},function(response,status){
if(status=='success'){
var result = $.parseJSON(response);
var list=result.list;
var num=result.num;
var totalPage=result.tpg;
wrapper.loader('hide');
if (num) wrapper.html(list).addClass('animated fadeIn');
else wrapper.html(none);
wrapper.find('[data-plugin="timeago"]').timeago();
//무한 스크롤
wrapper.closest('.content').infinitescroll({
dataSource: function(helpers, callback){
var nextPage = parseInt(currentPage)+1;
if (totalPage>currentPage) {
$.post(rooturl+'/?r='+raccount+'&m=post&a=get_postSaved',{
start: start,
sort: sort,
recnum : recnum,
markup_file : markup_file,
p : nextPage
},function(response) {
var result = $.parseJSON(response);
var error = result.error;
var list=result.list;
if(error) alert(result.error);
callback({ content: list });
currentPage++; // 현재 페이지 +1
console.log(currentPage+'페이지 불러옴')
wrapper.find('[data-plugin="timeago"]').timeago();
//wrapper.find('[data-plugin="markjs"]').mark(keyword); // marks.js
});
} else {
callback({ end: true });
console.log('더이상 불러올 페이지가 없습니다.')
}
},
appendToEle : wrapper,
percentage : 95, // 95% 아래로 스크롤할때 다움페이지 호출
hybrid : false // true: 버튼형, false: 자동
});
// edgeEffect
var wrapper_startY = 0;
wrapper.closest('.content').on('touchstart',function(event){
wrapper_startY = event.originalEvent.changedTouches[0].pageY;
});
wrapper.closest('.content').on('touchmove',function(event){
var wrapper_moveY = event.originalEvent.changedTouches[0].pageY;
var wrapper_contentY = $(this).scrollTop();
if (wrapper_contentY === 0 && wrapper_moveY > wrapper_startY) {
if (wrapper_moveY-wrapper_startY>50) {
edgeEffect(wrapper.closest('.page'),'top','show'); // 스크롤 상단 끝
}
}
if( (wrapper_moveY < wrapper_startY) && ($(this).scrollTop() + $(this).innerHeight() >= $(this)[0].scrollHeight)) {
if (wrapper_startY-wrapper_moveY>50) {
edgeEffect(wrapper.closest('.page'),'bottom','show');
}
}
});
} else {
alert(status);
}
});
}

View File

@@ -0,0 +1,584 @@
function getPostView(settings) {
var mod = settings.mod;
var wrapper = settings.wrapper;
var start = settings.start;
var format=settings.format;
var uid=settings.uid;
var list=settings.list;
var featured=settings.featured;
var provider = settings.provider;
var videoId = settings.videoId;
var url = settings.url;
var landing = settings.landing;
var ctheme=settings.ctheme?settings.ctheme:'_mobile/rc-default'; // 댓글테마
var template = '/modules/post/themes/'+post_skin_mobile+'/_html/view_'+format+'.html';
var list_collapse = settings.list_collapse;
if (!uid || !post_skin_mobile || !format) {
console.log('템플릿이 없어요')
setTimeout(function(){
history.back();
setTimeout(function(){ $.notify({message: ' 존재하지 않는 포스트 입니다.'},{type: 'default'}); }, 400);
return false
}, 300);
}
page_post_photo.find('.swiper-wrapper').html('') // 사진크게보기 영역 초기화
wrapper.load(template, function() {
var header_height = wrapper.find('.bar-nav').outerHeight();
var embed_height = wrapper.find('.embed-responsive').outerHeight();
var height = header_height + embed_height;
var window_height = $(window).height();
var content_height = window_height - height;
if (landing) {
wrapper.find('[data-role="hback"]').addClass('d-none');
wrapper.find('[data-role="gohome"]').removeClass('d-none');
}
if (mod=='page') {
wrapper.find('[data-role="buy"]').attr('data-toggle','page');
wrapper.find('[data-role="buy"]').attr('data-act','pauseVideo')
} else {
wrapper.find('[data-role="buy"]').attr('data-toggle','goods');
wrapper.find('[data-role="buy"]').removeAttr('data-act','pauseVideo')
}
wrapper.find('[data-toggle="linkShare"]').attr('data-link',url);
wrapper.find('.embed-responsive').css('background-image','url('+featured+')')
wrapper.find('.content').css('padding-top',height+'px')
wrapper.find('[data-role="goodsLink"]').addClass('d-none');
wrapper.find('[data-uid]').attr('data-uid',uid);
wrapper.find('[data-role="progress_yt"] .progress-bar').css('width',0);
if (format=='video') {
wrapper.find('.bar-standard').css('height',embed_height+'px')
wrapper.find('.bar-standard .embed-responsive').css('height',embed_height+'px')
if (provider=='YouTube') {
var player;
player = new YT.Player('player', {
height: '360',
width: '640',
videoId: videoId,
events: {
'onReady': onPlayerReady,
'onStateChange': onPlayerStateChange
}
});
function onPlayerReady(event) {
event.target.playVideo();
}
function onPlayerStateChange(event) {
var miniplayer = wrapper.find('.miniplayer-control');
var playerTimeDifference =0;
if (event.data == YT.PlayerState.PLAYING) {
console.log('재생중')
miniplayer.find('[data-toggle="play"]').addClass('active');
miniplayer.find('[data-toggle="play"] .material-icons').text('pause');
//재생 진행바
setTimeout(function(){
wrapper.find('[data-role="progress_yt"]').show();
}, 2000);
var playerTotalTime = player.getDuration();
timer_yt = setInterval(function() {
var playerCurrentTime = player.getCurrentTime();
var playerTimeDifference = (playerCurrentTime / playerTotalTime) * 100;
// console.log(playerTimeDifference)
wrapper.find('[data-role="progress_yt"] .progress-bar').css('width',playerTimeDifference+'%')
}, 1000);
} else {
wrapper.find('[data-role="progress_yt"]').hide();
}
if (event.data == YT.PlayerState.PAUSED) {
console.log('일시중지')
clearTimeout(timer_yt);
miniplayer.find('[data-toggle="play"]').removeClass('active');
miniplayer.find('[data-toggle="play"] .material-icons').text('play_arrow');
}
if (event.data == YT.PlayerState.ENDED) {
console.log('재생끝')
clearTimeout(timer_yt);
miniplayer.find('[data-toggle="play"]').removeClass('active');
miniplayer.find('[data-toggle="play"] .material-icons').text('replay');
}
}
wrapper.on('click','[data-toggle="play"]',function(){
if ($(this).hasClass('active')) {
player.pauseVideo();
$(this).find('.material-icons').text('play_arrow');
} else {
player.playVideo();
$(this).find('.material-icons').text('pause');
}
$(this).button('toggle')
})
wrapper.on('click','[data-act="pauseVideo"]',function(){
player.pauseVideo();
})
}
}
$.post(rooturl+'/?r='+raccount+'&m=post&a=get_postView',{
uid : uid,
list : list,
markup_file : 'view_'+format+'_content'
},function(response,status){
if(status=='success'){
var result = $.parseJSON(response);
var subject = result.subject.replace(/&quot;/g, '"');
var nic=result.nic;
var isperm=result.isperm;
var article=result.article;
var review=result.review;
var linkurl=result.linkurl;
var listCollapse=result.listCollapse;
var is_post_liked=result.is_post_liked;
var is_post_disliked=result.is_post_disliked;
var dis_like = result.dis_like;
var dis_rating = result.dis_rating;
var dis_comment = result.dis_comment;
var dis_listadd = result.dis_listadd;
var goods = result.goods;
var featured = result.featured_640;
var attachNum=result.attachNum;
var attachFileTheme = result.theme_attachFile;
var link=result.link;
var theme=result.theme;
var theme_css = '/modules/post/themes/'+theme+'/_main.css';
if (!$('link[href="'+theme_css+'"]').length)
$('<link/>', {
rel: 'stylesheet',
type: 'text/css',
href: theme_css
}).appendTo('head');
wrapper.find('[data-toggle="linkShare"]').attr('data-subject',subject).attr('data-link',url).attr('data-featured',featured);
wrapper.find('oembed').attr('url',linkurl);
wrapper.find('[data-role="subject"]').text(subject);
wrapper.find('[data-role="nic"]').text(nic);
wrapper.find('.miniplayer-control [data-toggle="play"]').removeClass('d-none');
wrapper.find('[data-role="review"]').removeClass('d-none');
if (provider!='YouTube') {
Iframely('oembed[url]') // oembed 미디어 변환
setTimeout(function(){
wrapper.find('.bar-media [data-role="featured"]').addClass('d-none')
wrapper.find('.embed-responsive').removeClass('d-none');
wrapper.find('.miniplayer-control [data-toggle="play"]').addClass('d-none');
}, 500);
}
wrapper.find('[data-role="box"]').html(article);
if (goods) {
wrapper.find('[data-role="goodsLink"]').removeClass('d-none');
setImageGoodsTag('figure.image') // 이미지상품태그 처리
}
if (format!='video') Iframely('oembed[url]') // oembed 미디어 변환
// 첨부파일이 있을 경우
if (attachNum) {
$.post(rooturl+'/?r='+raccount+'&m=mediaset&a=getAttachFileList',{
p_module : 'post',
uid : uid,
theme_file : attachFileTheme,
mod : 'view'
},function(response){
var result = $.parseJSON(response);
var photo=result.photo;
var photo_full=result.photo_full;
var video=result.video;
var audio=result.audio;
var file=result.file;
var zip=result.zip;
var doc=result.doc;
if (photo) { // 첨부 이미지가 있을 경우
wrapper.find('[data-role="attach-photo"]').removeClass('hidden').html(photo)
i=0;
wrapper.find('[data-role="attach-photo"] [data-toggle="page"]').each(function(i) {
$(this).attr('data-index',i);i=++i;
});
page_post_photo.find('.swiper-wrapper').html(photo_full)
}
if (video) { // 첨부 비디오가 있을 경우
wrapper.find('[data-role="attach-video"]').removeClass('hidden').html(video)
}
if (audio) { // 첨부 오디오가 있을 경우
wrapper.find('[data-role="attach-audio"]').removeClass('hidden').html(audio)
}
if (doc) { // 첨부 문서 있을 경우
wrapper.find('[data-role="attach-file"]').removeClass('hidden').html(doc)
}
if (zip) { // 첨부 압축파일이 있을 경우
page.find('[data-role="attach-file"]').removeClass('hidden').html(zip)
}
if (file) { // 첨부 기타파일이 있을 경우
wrapper.find('[data-role="attach-file"]').removeClass('hidden').html(file)
}
});
}
if (link) { // 첨부 링크가 있을 경우
wrapper.find('[data-role="attach-link"]').removeClass('hidden').html(link);
Iframely('oembed[url]') // oembed 미디어 변환
}
if (listCollapse) {
wrapper.find('[data-role="listCollapse"]').html(listCollapse);
if (format=='doc') {
if (!list) wrapper.find('.bar-header-secondary').addClass('d-none');
else wrapper.find('.bar-header-secondary').removeClass('d-none');
}
if (format=='video' && list_collapse ) setTimeout(function(){wrapper.find('#listCollapse').collapse('show');}, 3000);
var _window_height = $(window).height();
var list_height = wrapper.find('[data-role="listCollapse"]').outerHeight();
var _height = height + list_height - 1;
var content_height = _window_height - _height;
wrapper.find('.content').css('padding-top',_height+'px')
wrapper.find('#listCollapse > div').css('height',content_height+'px');
}
wrapper.find('[data-plugin="shorten"]').shorten({
moreText: '더보기',
lessText: ''
});
if (is_post_liked) wrapper.find('[data-role="btn_post_like_'+uid+'"]').addClass('active');
if (is_post_disliked) wrapper.find('[data-role="btn_post_dislike_'+uid+'"]').addClass('active');
wrapper.find('#collapseContent').on('show.rc.collapse', function () {
wrapper.find('[data-toggle="collapse"] [data-role="subject"]').removeClass('line-clamp-2')
})
wrapper.find('#collapseContent').on('hide.rc.collapse', function () {
wrapper.find('[data-toggle="collapse"] [data-role="subject"]').addClass('line-clamp-2')
})
if (dis_like) wrapper.find('[data-role="opinion"]').hide();
if (dis_listadd) wrapper.find('[data-role="listadd"]').hide();
if (review) wrapper.find('[data-role="review"]').removeClass('d-none');
else wrapper.find('[data-role="review"]').addClass('d-none');
if (!dis_comment) {
// 댓글 출력 함수 정의
var get_Rb_Comment = function(p_module,p_table,p_uid,theme){
wrapper.find('[data-role="comment_box"]').Rb_comment({
moduleName : 'comment', // 댓글 모듈명 지정 (수정금지)
parent : p_module+'-'+p_uid, // rb_s_comment parent 필드에 저장되는 형태가 p_modulep_uid 형태임 참조.(- 는 저장시 제거됨)
parent_table : p_table, // 부모 uid 가 저장된 테이블 (게시판인 경우 rb_bbs_data : 댓글, 한줄의견 추가/삭제시 전체 합계 업데이트용)
theme_name : theme, // 댓글 테마
containerClass :'', // 본 엘리먼트(#commentting-container)에 추가되는 class
recnum: 5, // 출력갯수
commentPlaceHolder : '공개 댓글 추가...',
noMoreCommentMsg : '댓글 없음 ',
commentLength : 200, // 댓글 입력 글자 수 제한
toolbar : ['imageUpload'] // 툴바 항목
});
}
// 댓글 출력 함수 실행
var p_module = 'post';
var p_table = 'rb_post_data';
var comment_theme_css = '/modules/comment/themes/'+ctheme+'/css/style.css';
if (!$('link[href="'+comment_theme_css+'"]').length)
$('<link/>', {
rel: 'stylesheet',
type: 'text/css',
href: comment_theme_css
}).appendTo('head');
get_Rb_Comment(p_module,p_table,uid,ctheme);
// 보기 에서 댓글이 등록된 이후에 ..
wrapper.find('[data-role="comment_box"]').on('saved.rb.comment',function(){
window.history.back(); //댓글작성 sheet 내림
var list_item = $(document).find('[data-role="item"] [data-uid="'+uid+'"]')
//var showComment_Ele_1 = page_allcomment.find('[data-role="total_comment"]'); // 댓글 숫자 출력 element
var showComment_Ele_2 = wrapper.find('[data-role="total_comment"]'); // 댓글 숫자 출력 element
var showComment_ListEle = list_item.find('[data-role="comment_'+uid+'"]'); // 댓글 숫자 출력 element
$.post(rooturl+'/?r='+raccount+'&m=post&a=get_postData',{
uid : uid
},function(response){
var result = $.parseJSON(response);
var total_comment=result.comment;
//$.notify({message: '댓글이 등록 되었습니다.'},{type: 'default'});
//showComment_Ele_1.text(total_comment); // 모달 상단 최종 댓글수량 합계 업데이트
showComment_Ele_2.text(total_comment); // 모달 상단 최종 댓글수량 합계 업데이트
showComment_ListEle.text(total_comment); // 포스트 목록 해당 항목의 최종 댓글수량 합계 업데이트
});
});
// 포스트 보기 모달에서 한줄의견이 등록된 이후에..
wrapper.find('[data-role="comment_box"]').on('saved.rb.oneline',function(){
window.history.back(); //댓글작성 sheet 내림
var uid = wrapper.find('[name="uid"]').val()
var list_item = $('[data-role="list"]').find('#item-'+uid)
//var showComment_Ele_1 = page_allcomment.find('[data-role="total_comment"]'); // 댓글 숫자 출력 element
var showComment_Ele_2 = wrapper.find('[data-role="total_comment"]'); // 댓글 숫자 출력 element
var showComment_ListEle = list_item.find('[data-role="total_comment"]'); // 댓글 숫자 출력 element
$.post(rooturl+'/?r='+raccount+'&m=post&a=get_postData',{
uid : uid
},function(response){
var result = $.parseJSON(response);
var total_comment=result.total_comment;
$.notify({message: '답글이 등록 되었습니다.'},{type: 'default'});
//showComment_Ele_1.text(total_comment); // 최종 댓글수량 합계 업데이트
showComment_Ele_2.text(total_comment); // 최종 댓글수량 합계 업데이트
showComment_ListEle.text(total_comment); // 포스트 목록 해당 항목의 최종 댓글수량 합계 업데이트
});
});
// 댓글이 수정된 후에..
wrapper.find('[data-role="comment_box"]').on('edited.rb.comment',function(){
setTimeout(function(){
history.back()
$.notify({message: '댓글이 수정 되었습니다.'},{type: 'default'});
}, 300);
})
// 한줄의견이 수정 후에
wrapper.find('[data-role="comment_box"]').on('edited.rb.oneline',function(){
setTimeout(function(){
history.back()
$.notify({message: '답글이 수정 되었습니다.'},{type: 'default'});
}, 300);
})
} else {
wrapper.find('[data-role="btn_comment"]').hide(); //댓글 바로가기 버튼 숨김
wrapper.find('[data-role="comment_box"]').html('<div class="text-muted pb-3 text-xs-center">댓글이 사용 중지되었습니다.</div>')
}
} else {
setTimeout(function(){
history.back();
setTimeout(function(){ $.notify({message: error+' 존재하지 않는 포스트 입니다.'},{type: 'default'}); }, 400);
return false
}, 300);
}
if (!isperm) wrapper.find('.bar-standard .embed-responsive').empty().removeAttr('style')
// edgeEffect
var wrapper_startY = 0;
wrapper.find('.content').on('touchstart',function(event){
wrapper_startY = event.originalEvent.changedTouches[0].pageY;
});
wrapper.find('.content').on('touchmove',function(event){
var wrapper_moveY = event.originalEvent.changedTouches[0].pageY;
var wrapper_contentY = $(this).scrollTop();
if (wrapper_contentY === 0 && wrapper_moveY > wrapper_startY) {
edgeEffect(wrapper,'top','show');
}
if( (wrapper_moveY < wrapper_startY) && ($(this).scrollTop() + $(this).innerHeight() >= $(this)[0].scrollHeight)) {
edgeEffect(wrapper,'bottom','show');
}
});
});
});
wrapper.off('click').on('click','[data-toggle="view"]',function(){
var button = $(this);
var _uid = button.attr('data-uid');
var _featured = button.attr('data-featured');
var _provider = button.attr('data-provider');
var _videoId = button.attr('data-videoId');
var _list = button.attr('data-list');
var _format = button.attr('data-format');
var list_collapse = button.attr('data-collapse');
var template = template?template:'/modules/post/themes/'+post_skin_mobile+'/_html/view_'+_format+'.html';
//wrapper.empty(); //초기화
wrapper.load('/modules/post/themes/'+post_skin_mobile+'/_html/view_'+_format+'.html', function() {
wrapper.attr('data-format',_format).attr('data-uid',_uid);
getPostView({
uid : _uid,
format : _format,
list : _list,
featured : _featured,
provider : _provider,
videoId : _videoId,
wrapper : wrapper,
list_collapse : list_collapse
});
});
});
page_post_photo.on('show.rc.page', function (e) {
var ele = $(e.relatedTarget)
var index = ele.attr('data-index');
var uid = ele.attr('data-uid');
var page = $(this);
var title = page_post_view.find('[data-role="title"]').text();
var subject = page_post_view.find('[data-role="subject"]').text();
page.find('[data-role="title"]').text(title);
page.find('[data-role="subject"]').text(subject);
page.find('[data-act="down"]').attr('data-uid',uid);
var bbs_photo_swiper = new Swiper('#page-post-photo .swiper-container', {
zoom: true,
initialSlide: index,
spaceBetween: 30,
pagination: {
el: '#page-post-photo .swiper-pagination',
type: 'fraction',
},
navigation: {
nextEl: '#page-post-photo .swiper-button-next',
prevEl: '#page-post-photo .swiper-button-prev',
},
on: {
init: function () {
page_post_photo.find('.swiper-container').css('height','100vh');
},
},
});
bbs_photo_swiper.on('slideChangeTransitionEnd', function () {
var uid = page_post_photo.find('.swiper-slide-active').attr('data-uid');
page_post_photo.find('[data-act="down"]').attr('data-uid',uid)
});
})
page_post_photo.on('hidden.rc.page', function () {
// swiper destroy
var bbs_photo_swiper = document.querySelector('#page-post-photo .swiper-container').swiper
bbs_photo_swiper.destroy(false, true);
// 줌상태 초기화
setTimeout(function(){
page_post_photo.find('.swiper-zoom-container').removeAttr('style');
page_post_photo.find('.swiper-zoom-container img').removeAttr('style');
}, 500);
})
} // getPostView
$(document).on('click','[data-toggle="view_listadd"]',function(){
var button = $(this);
var popup = $('#popup-login-guide');
var sheet = $('#sheet-post-listadd');
var uid = button.attr('data-uid');
var height = button.closest('.content').css('padding-top');
if (memberid) {
sheet.attr('data-uid',uid).css('top',height);
sheet.sheet();
} else {
var title = button.attr('data-title')
var subtext = button.attr('data-subtext')
popup.find('[data-role="title"]').text(title);
popup.find('[data-role="subtext"]').text(subtext);
popup.popup('show');
}
});
$(document).on('click','[data-toggle="view_tag"]',function(){
var button = $(this);
var keyword = button.attr('data-tag');
var page = $('#page-post-keyword');
page.attr('data-keyword',keyword);
page.find('[data-role="title"]').text(keyword);
window.history.back();
setTimeout(function(){ page.page({
start: '#page-main',
title : keyword
}); }, 300);
});
$(document).on('click','[data-toggle="view_opinion"]',function(){
var button = $(this);
var popup = $('#popup-login-guide');
var uid = button.attr('data-uid');
var opinion = button.attr('data-opinion');
var url = rooturl+'/?r='+raccount+'&m=post&a=opinion&opinion='+opinion+'&uid='+uid;
if (memberid) {
button.button('toggle');
getIframeForAction('');
frames.__iframe_for_action__.location.href = url;
} else {
var title = button.attr('data-title')
var subtext = button.attr('data-subtext')
popup.find('[data-role="title"]').text(title);
popup.find('[data-role="subtext"]').text(subtext);
popup.popup('show');
}
});
$(document).on('click','[data-toggle="view_report"]',function(){
var button = $(this);
var uid = button.attr('data-uid');
if (memberid) {
popup_post_report.attr('data-uid',uid);
popup_post_report.popup();
} else {
var title = button.attr('data-title')
var subtext = button.attr('data-subtext')
popup_login_guide.find('[data-role="title"]').text(title);
popup_login_guide.find('[data-role="subtext"]').text(subtext);
popup_login_guide.popup('show');
}
});
$(document).on('tap','[data-toggle="tag"]',function(){
var keyword= $(this).attr('data-tag');
page_post_keyword.attr('data-keyword',keyword)
history.back();
setTimeout(function(){
page_post_keyword.page({ start: '#page-main' });
}, 300);
})

View File

@@ -0,0 +1,893 @@
function setPostWrite(settings) {
var wrapper = settings.wrapper;
var uid=settings.uid;
if (!uid) var uid=wrapper.attr('data-uid');
// 상태 초기화
wrapper.find('[name="uid"]').val('');
wrapper.find('[data-role="display_label"]').text(uid?'':'전체공개');
popover_post_display.find('[data-toggle="display"] .badge').empty();
popover_post_display.find('[data-toggle="display"][data-display="5"] .badge').html('<span class="icon icon-check"></span>');
wrapper.find('[name="display"]').val(5);
wrapper.find('[name="category_members"]').val('');
wrapper.find('[name="list_members"]').val('');
wrapper.find('[name="upload"]').val('');
wrapper.find('[name="member"]').val('');
wrapper.find('[name="featured_img"]').val('');
wrapper.find('[name="review"]').val('');
wrapper.find('[name="format"]').val(1);
wrapper.find('[name="dis_rating"]').val(0);
wrapper.find('[name="dis_like"]').val(0);
wrapper.find('[name="dis_comment"]').val(0);
wrapper.find('[name="dis_listadd"]').val(0);
wrapper.find('[name="goods"]').val('');
wrapper.find('[data-role="linkNum"]').text('');
//wrapper.find('[data-role="attach-preview-photo"]').html('');
wrapper.find('[data-role="attach-preview-link"]').html('');
wrapper.find('[data-role="linkadd_input"]').val('');
wrapper.find('[data-toggle="switch"][data-role="dis_like"]').addClass('active');
wrapper.find('[data-toggle="switch"][data-role="dis_comment"]').addClass('active');
wrapper.find('[data-toggle="switch"][data-role="dis_listadd"]').addClass('active');
wrapper.find('.switch-handle').removeAttr("style");
wrapper.find('[data-toggle="collapse"]').addClass('collapsed');
wrapper.find('.collapse').removeClass('in');
wrapper.find('[data-role="goodsNum"]').text('');
wrapper.find('[name="uid"]').val(uid);
autosize.destroy(wrapper.find('[data-plugin="autosize"]'));
setTimeout(function(){
// 미디어셋 초기화
wrapper.find('[data-role="attach-files"]').RbUploadFile(post_upload_settings); // 아작스 폼+input=file 엘리먼트 세팅
wrapper.find('[data-role="attach-files"]').RbAttachTheme(post_attach_settings);
wrapper.find('[data-sortable="mediaset"]').sortable({
axis: 'y',
cancel: 'button',
delay: 250,
update: function( event, ui ) {
var attachfiles=wrapper.find('input[name="attachfiles[]"]').map(function(){return $(this).val()}).get();
var new_upfiles='';
if(attachfiles){
for(var i=0;i<attachfiles.length;i++) {
new_upfiles+=attachfiles[i];
}
}
$.post(rooturl+'/?r='+raccount+'&m=mediaset&a=modifygid',{
attachfiles : new_upfiles
})
}
});
// 에디터 초기화
DecoupledEditor
.create( document.querySelector( '[data-role="write"] [data-role="editor-body"]' ),{
placeholder: '본문 입력...',
toolbar: [ 'alignment:left','alignment:center','bulletedList','blockQuote','imageUpload','insertTable','undo'],
removePlugins: [ 'ImageToolbar', 'ImageCaption', 'ImageStyle',,'WordCount' ],
image: {},
language: 'ko',
extraPlugins: [rbUploadAdapterPlugin],
table: {
contentToolbar: [ 'tableColumn', 'tableRow', 'mergeTableCells' ]
},
mediaEmbed: {
extraProviders: [
{
name: 'other',
url: /^([a-zA-Z0-9_\-]+)\.([a-zA-Z0-9_\-]+)\.([a-zA-Z0-9_\-]+)/
},
{
name: 'another',
url: /^([a-zA-Z0-9_\-]+)\.([a-zA-Z0-9_\-]+)/
}
]
},
typing: {
transformations: {
include: [
'quotes',
'typography',
],
extra: [
// Add some custom transformations e.g. for emojis.
{ from: ':)', to: '🙂' },
{ from: ':+1:', to: '👍' },
{ from: ':tada:', to: '🎉' }
],
}
}
} )
.then( newEditor => {
console.log('editor_post init');
editor_post = newEditor;
wrapper.find('.toolbar-container').html(editor_post.ui.view.toolbar.element)
editor_post.editing.view.document.on( 'change:isFocused', ( evt, name, value ) => {
if (value) {
console.log('editor_post focus');
wrapper.addClass('editor-focused');
} else {
console.log('editor_post blur');
wrapper.removeClass('editor-focused');
}
} );
$.post(rooturl+'/?r='+raccount+'&m=post&a=get_category',{
uid : uid
},function(response,status){
if(status=='success'){
var result = $.parseJSON(response);
var error=result.error;
if (!error) {
var category_tree=result.category_tree;
page_post_edit_category.find('[data-role="box"]').html(category_tree);
} else {
page_post_edit_category.find('[data-role="box"]').html('<div class="text-xs-center p-3 text-muted">지정 권한이 없습니다.</div>');
}
} else {
alert(status);
}
});
if (uid) {
$.post(rooturl+'/?r='+raccount+'&m=post&a=get_postWrite',{
uid : uid
},function(response,status){
if(status=='success'){
var result = $.parseJSON(response);
var featured=result.featured;
var featured_img=result.featured_img;
var upload=result.upload;
var display=result.display;
var display_label=result.display_label;
var format=result.format;
var time=result.time;
var subject=result.subject;
var review=result.review;
var tag=result.tag;
var content=result.content;
var nic=result.nic;
var isperm=result.isperm;
var linkurl=result.linkurl;
var listCollapse=result.listCollapse;
var dis_like = result.dis_like;
var dis_comment = result.dis_comment;
var dis_listadd = result.dis_listadd;
var goods = result.goods;
var linkNum = result.linkNum;
var attachNum = result.attachNum;
var goodsNum = result.goodsNum;
var attachFileTheme = result.theme_attachFile;
wrapper.find('[data-role="display_label"]').text(display_label);
popover_post_display.find('[data-toggle="display"] .badge').empty();
popover_post_display.find('[data-toggle="display"][data-display="'+display+'"] .badge').html('<span class="icon icon-check"></span>');
wrapper.find('[name="display"]').val(display);
wrapper.find('[data-role="subject"]').val(subject);
wrapper.find('[data-role="time"]').text(time);
wrapper.find('[data-role="featured"]').attr('src',featured);
wrapper.find('[name="featured_img"]').val(featured_img);
wrapper.find('[name="upload"]').val(upload);
wrapper.find('[name="review"]').val(review);
wrapper.find('[name="tag"]').val(tag);
wrapper.find('[name="goods"]').val(goods);
wrapper.find('[name="dis_like"]').val(dis_like);
wrapper.find('[name="dis_comment"]').val(dis_comment);
wrapper.find('[name="dis_listadd"]').val(dis_listadd);
if (featured_img) wrapper.find('.media-left').removeClass('d-none');
else wrapper.find('.media-left').addClass('d-none');
if (linkNum) {
wrapper.find('[data-role="addlink_guide"]').addClass('d-none');
wrapper.find('[data-role="linkNum"]').text(linkNum);
wrapper.find('[data-role="attach-preview-link"]').removeClass('hidden').html(link)
}
if (attachNum) {
$.post(rooturl+'/?r='+raccount+'&m=mediaset&a=getAttachFileList',{
p_module : 'post',
uid : uid,
theme_file : attachFileTheme,
mod : 'upload'
},function(response){
var result = $.parseJSON(response);
var photo=result.photo;
var video=result.video;
var audio=result.audio;
var file=result.file;
var zip=result.zip;
var doc=result.doc;
wrapper.find('[name="featured_img"]').val(featured_img); // 대표이미지 셋팅
wrapper.find('[data-role="attach-preview-photo"]').html(photo);
wrapper.find('[data-role="attach-preview-video"]').html(video)
wrapper.find('[data-role="attach-preview-audio"]').html(audio)
wrapper.find('[data-role="attach-preview-file"]').html(file)
wrapper.find('[data-role="attachNum"]').text(attachNum)
});
} else {
$('[data-role="attach_guide"]').removeClass('d-none');
wrapper.find('[data-role="attachNum"]').text('');
}
if (goodsNum) {
wrapper.find('[data-role="goodsNum"]').text(goodsNum);
}
editor_post.setData(content);
wrapper.find('[name="format"]').val(format).prop("selected", true);
wrapper.find('[data-role="loader"]').addClass('d-none') //로더 제거
wrapper.find('form').removeClass('d-none')
if (dis_like) {
wrapper.find('[data-toggle="switch"][data-role="dis_like"]').removeClass('active');
} else {
wrapper.find('[data-toggle="switch"][data-role="dis_like"]').addClass('active');
}
if (dis_comment) {
wrapper.find('[data-toggle="switch"][data-role="dis_comment"]').removeClass('active');
} else {
wrapper.find('[data-toggle="switch"][data-role="dis_comment"]').addClass('active');
}
if (dis_listadd) {
wrapper.find('[data-toggle="switch"][data-role="dis_listadd"]').removeClass('active');
} else {
wrapper.find('[data-toggle="switch"][data-role="dis_listadd"]').addClass('active');
}
wrapper.find('.form-list.floating .input-row').addClass('active');
autosize(wrapper.find('[data-plugin="autosize"]'));
} else {
alert(status);
}
});
} else {
wrapper.find('[data-role="loader"]').addClass('d-none') //로더 제거
wrapper.find('form').removeClass('d-none')
autosize(wrapper.find('[data-plugin="autosize"]'));
}
})
.catch( error => {
console.error( error );
} );
}, 10);
wrapper.find('.form-list.floating .input-row textarea').on('keyup', function(event) {
if ($(this).val().length >= 1) {
$(this).parents('.input-row').addClass('active');
} else {
$(this).parents('.input-row').removeClass('active');
}
})
wrapper.find('.switch[data-role="dis_comment"]').on('changed.rc.switch', function () {
var _switch = $(this);
if (_switch.hasClass('active')) {
wrapper.find('[name="dis_comment"]').val(0);
} else {
wrapper.find('[name="dis_comment"]').val(1);
}
})
wrapper.find('.switch[data-role="dis_like"]').on('changed.rc.switch', function () {
var _switch = $(this);
if (_switch.hasClass('active')) {
wrapper.find('[name="dis_like"]').val(0);
} else {
wrapper.find('[name="dis_like"]').val(1);
}
})
wrapper.find('.switch[data-role="dis_listadd"]').on('changed.rc.switch', function () {
var _switch = $(this);
if (_switch.hasClass('active')) {
wrapper.find('[name="dis_listadd"]').val(0);
} else {
wrapper.find('[name="dis_listadd"]').val(1);
}
})
//연결상품 불러오기
// $.post(rooturl+'/?r='+raccount+'&m=shop&a=get_postAttachGoods',{
// markup_file: 'attach_goods_write_item',
// uid : uid,
// featured_size : '140x104'
// },function(response,status){
// if(status=='success'){
// var result = $.parseJSON(response);
// var list=result.list;
// page_post_edit_goodslist.find('[data-role="attach-goods"]').html(list);
// page_post_edit_goodslist.find('[data-sortable="goods"]').sortable({
// axis: 'y',
// cancel: 'button',
// delay: 250,
// update: function( event, ui ) {
// var attachGoods=$('input[name="attachGoods[]"]').map(function(){return $(this).val()}).get();
// var new_goods='';
// if(attachGoods){
// for(var i=0;i<attachGoods.length;i++) {
// new_goods+=attachGoods[i];
// }
// }
// $.post(rooturl+'/?r='+raccount+'&m=shop&a=modifygid',{
// attachfiles : new_goods
// })
//
// }
// });
// } else {
// alert(status);
// }
// });
} // getPostWrite
function savePost(f) {
var editorData = editor_post.getData();
var after = modal_post_write.attr('data-after');
var start = modal_post_write.attr('data-start')?modal_post_write.attr('data-start'):'#page-post-allpost';
// 카테고리 체크
var cat_sel=page_post_edit_category.find('input[name="tree_members[]"]');
var cat_sel_n=cat_sel.length;
var cat_arr=page_post_edit_category.find('input[name="tree_members[]"]:checked').map(function(){return $(this).val();}).get();
var cat_n=cat_arr.length;
// if(cat_sel_n>0 && cat_arr==''){
// alert('지정된 카테고리가 없습니다.\n적어도 하나이상의 카테고리를 지정해 주세요.');
// $('#advan').tab('show')
// return false;
// }
var s='';
for (var i=0;i <cat_n;i++) {
if(cat_arr[i]!='') s += '['+cat_arr[i]+']';
}
f.category_members.value = s;
// 리스트 체크
var list_sel=modal_post_write.find('input[name="postlist_members[]"]');
var list_arr=modal_post_write.find('input[name="postlist_members[]"]:checked').map(function(){return $(this).val();}).get();
var list_n=list_arr.length;
var l='';
for (var i=0;i <list_n;i++) {
if(list_arr[i]!='') l += '['+list_arr[i]+']';
}
modal_post_write.find('input[name="list_members"]').val(l);
// 대표이미지가 없을 경우, 첫번째 업로드 사진을 지정함
var featured_img_input = modal_post_write.find('input[name="featured_img"]'); // 대표이미지 input
var featured_img_uid = $(featured_img_input).val();
if(featured_img_uid ==0){ // 대표이미지로 지정된 값이 없는 경우
var first_attach_img_li = modal_post_write.find('[data-role="attach-preview-photo"] li:first'); // 첫번째 첨부된 이미지 리스트 li
var first_attach_img_uid = modal_post_write.find(first_attach_img_li).attr('data-id');
featured_img_input.val(first_attach_img_uid);
}
// 첨부파일 uid 를 upfiles 값에 추가하기
var attachfiles=modal_post_write.find('input[name="attachfiles[]"]').map(function(){return $(this).val()}).get();
var new_upfiles='';
if(attachfiles){
for(var i=0;i<attachfiles.length;i++) {
new_upfiles+=attachfiles[i];
}
modal_post_write.find('input[name="upload"]').val(new_upfiles);
}
// 공유회원 uid 를 members 값에 추가하기
var postmembers=modal_post_write.find('input[name="postmembers[]"]').map(function(){return $(this).val()}).get();
var new_members='';
if(postmembers){
for(var i=0;i<postmembers.length;i++) {
new_members+=postmembers[i];
}
modal_post_write.find('input[name="member"]').val(new_members);
}
// 첨부상품 uid 를 gooods 값에 추가하기
var postgoods=$('input[name="attachGoods[]"]').map(function(){return $(this).val()}).get();
var new_goods='';
if(postgoods){
for(var i=0;i<postgoods.length;i++) {
new_goods+=postgoods[i];
}
modal_post_write.find('input[name="goods"]').val(new_goods);
}
checkUnload = false;
$('[data-role="postsubmit"]').attr( 'disabled', true );
var form = modal_post_write.find('[name="writeForm"]')
var uid = form.find('[name="uid"]').val();
var category_members = form.find('[name="category_members"]').val();
var list_members = form.find('[name="list_members"]').val();
var member = form.find('[name="member"]').val();
var upload = form.find('[name="upload"]').val();
var goods = form.find('[name="goods"]').val();
var featured_img = form.find('[name="featured_img"]').val();
var html = form.find('[name="html"]').val();
var subject = form.find('[name="subject"]').val();
var display = form.find('[name="display"]').val();
var format = modal_post_write.find('[name="format"]').val();
var review = page_post_edit_review.find('[name="review"]').val();
var tag = page_post_edit_tag.find('[name="tag"]').val();
var dis_like = form.find('[name="dis_like"]').val();
var dis_comment = form.find('[name="dis_comment"]').val();
var dis_listadd = form.find('[name="dis_listadd"]').val();
if (!subject) {
$.notify({message: '제목 입력후 저장해 주세요.'},{type: 'default'});
modal_post_write.find('[data-act="submit"]').attr('disabled',false);
return false;
}
// if (editorData == '') {
// $.notify({message: '본문 입력후 저장해 주세요.'},{type: 'default'});
// modal_post_write.find('[data-act="submit"]').attr('disabled',false);
// return false;
// }
setTimeout(function(){
$.post(rooturl+'/?r='+raccount+'&m=post&a=write',{
send_mod : 'ajax',
content : editorData,
uid : uid,
category_members : category_members,
list_members : list_members,
member : member,
upload : upload,
featured_img : featured_img,
html : html,
subject : subject,
review : review,
tag : tag,
format : format,
goods : goods,
display : display,
dis_like : dis_like,
dis_comment : dis_comment,
dis_listadd : dis_listadd
},function(response,status){
if(status=='success'){
var result = $.parseJSON(response);
var error=result.error;
if (!error) {
var d_modify=result.d_modify;
form.find('[data-role="postsubmit"]').attr( 'disabled', false );
history.back();
setTimeout(function(){
if (uid) {
$.notify({message: '저장 되었습니다.'},{type: 'default'});
} else {
if (display<4) {
$('#page-post-mypost').page({ start: start, title : '내 포스트', url : 'dashboard?page=post' });
}
}
// 메인화면 목록 새로불러오기
getPostAll({
wrapper : $('[data-role="postFeed"] [data-role="list"]'),
start : start,
markup : 'post-row', // 테마 > _html > post-row-***.html
recnum : 5,
sort : 'gid',
none : $(start).find('[data-role="postFeed"] [data-role="none"]').html(),
paging : 'infinit'
})
}, 300);
} else {
history.back();
setTimeout(function(){
$.notify({message: error},{type: 'danger'}); // 작성권한 없음
return false
}, 300);
}
} else {
alert(status);
}
});
}, 200);
}
function saveTwit(display,content) {
var start = modal_post_twit.attr('data-start')?modal_post_twit.attr('data-start'):'#page-post-allpost';
setTimeout(function(){
$.post(rooturl+'/?r='+raccount+'&m=post&a=write',{
send_mod : 'ajax',
content : '',
subject : content,
display : display,
html : 'TEXT'
},function(response,status){
if(status=='success'){
var result = $.parseJSON(response);
var error=result.error;
if (!error) {
history.back(); // 작성모달 내리고
setTimeout(function(){
if (display==5) {
// 메인화면 목록 새로불러오기
getPostAll({
wrapper : $('[data-role="postFeed"] [data-role="list"]'),
start : start,
markup : 'post-row', // 테마 > _html > post-row-***.html
recnum : 5,
sort : 'gid',
none : '',
paging : 'infinit'
})
} else {
$('#page-post-mypost').page({ start: start });
}
}, 300);
} else {
history.back();
setTimeout(function(){
$.notify({message: error},{type: 'danger'}); // 작성권한 없음
return false
}, 300);
}
} else {
alert(status);
}
});
}, 200);
}
function savePostByLink(url,start) {
$.get('//embed.kimsq.com/oembed',{
url: url
}).done(function(response) {
var type = response.type;
var title = response.title;
var description = response.description?response.description:'.';
var description = linkifyStr(description,{ target: '_blank' });
var description = description.replace(/(?:\r\n|\r|\n)/g, '<br>');
var thumbnail_url = response.thumbnail_url;
var author = response.author;
var provider = response.provider_name;
var url = response.url;
var width = response.thumbnail_width;
var height = response.thumbnail_height;
var embed = response.html;
$('[name="subject"]').val(title);
if (type=='video') {
$.get('//embed.kimsq.com/iframely',{
url: url
}).done(function(response) {
var duration = response.meta.duration;
var _duration = moment.duration(duration, 's');
var formatted_duration = _duration.format("h:*m:ss");
$.post(rooturl+'/?r='+raccount+'&m=mediaset&a=saveLink',{
type : 9,
title : title,
theme : '_desktop/bs4-default-link',
description : description,
thumbnail_url : thumbnail_url,
author: author,
provider : provider,
url : url,
duration : duration?duration:'',
time : duration?formatted_duration:'',
width : width,
height : height,
embed : embed
},function(response){
var result=$.parseJSON(response);
var uid = result.last_uid
if(!result.error){
// 새 포스트 저장
var subject = title;
var content = description;
var upload = '['+uid+']';
var featured_img = uid;
var format = 2; //비디오 타입
var html = 'HTML';
$.post(rooturl+'/?r='+raccount+'&m=post&a=write',{
send_mod : 'ajax',
content : content,
upload : upload,
featured_img : featured_img,
html : html,
subject : subject,
format : format
},function(response,status){
if(status=='success'){
var result = $.parseJSON(response);
var error=result.error;
if (!error) {
var uid=result.last_uid;
var cid=result.last_cid;
history.back();
modal_post_write.attr('data-uid',uid).attr('data-after','mypost').attr('data-start',start);
setTimeout(function(){
modal_post_write.modal({
title : '포스트 수정',
url : '/post/write/'+cid
});
}, 300);
} else {
history.back();
setTimeout(function(){
$.notify({message: error},{type: 'danger'}); // 작성권한 없음
return false
}, 300);
}
} else {
alert(status);
}
});
}
});
});
} else {
$.post(rooturl+'/?r='+raccount+'&m=mediaset&a=saveLink',{
type : 8,
title : title,
saveDir : './files/post/',
theme : '_desktop/bs4-default-link',
description : description,
thumbnail_url : thumbnail_url,
author: author,
provider : provider,
url : url,
width : width,
height : height,
embed : embed
},function(response){
var result=$.parseJSON(response);
var uid = result.last_uid
if(!result.error){
// 새 포스트 저장
var subject = title;
var content = '<p>'+description+'</p>';
var upload = '['+uid+']';
var featured_img = uid;
if (provider=='Vimeo' || provider=='kakaoTV' || provider=='NAVERTV') {
var format = 2; //비디오 타입
} else {
var format = 1; //문서 타입
}
var html = 'HTML';
$.post(rooturl+'/?r='+raccount+'&m=post&a=write',{
send_mod : 'ajax',
content : content,
upload : upload,
featured_img : featured_img,
html : html,
subject : subject,
format : format
},function(response,status){
if(status=='success'){
var result = $.parseJSON(response);
var error=result.error;
if (!error) {
var uid=result.last_uid;
var cid=result.last_cid;
history.back();
modal_post_write.attr('data-uid',uid).attr('data-after','mypost').attr('data-start',start);
setTimeout(function(){
modal_post_write.modal({
title : '포스트 수정',
url : '/post/write/'+cid
});
}, 300);
} else {
history.back();
setTimeout(function(){
$.notify({message: error},{type: 'danger'}); // 작성권한 없음
return false
}, 300);
}
} else {
alert(status);
}
});
}
});
}
}).fail(function() {
$.notify({message: 'URL을 확인해주세요.'},{type: 'default'});
sheet_post_linkadd.find('[data-act="submit"]').attr('disabled',false );
textarea.attr('disabled',false).focus()
}).always(function() {
});
} // savePostByLink()
page_post_edit_review.on('shown.rc.page', function(event) {
var page = $(this)
var textarea = page.find('textarea')
setTimeout(function(){ textarea.focus() }, 300);
})
page_post_edit_review.on('hidden.rc.page', function(event) {
var page = $(this)
var textarea = page.find('textarea')
textarea.blur()
})
page_post_edit_tag.on('shown.rc.page', function(event) {
var page = $(this)
var textarea = page.find('textarea')
setTimeout(function(){ textarea.focus() }, 300);
})
page_post_edit_tag.on('hidden.rc.page', function(event) {
var page = $(this)
var textarea = page.find('textarea')
textarea.blur()
})
page_post_edit_imageGoodsTag.on('shown.rc.page', function(event) {
var page = $(this)
console.log('상품태그 기능추가');
var swiper = new Swiper('#page-post-edit-imageGoodsTag .swiper-container');
})
page_post_edit_imageGoodsTag.on('hidden.rc.page', function(event) {
var page = $(this)
var swiper = new Swiper('#page-post-edit-imageGoodsTag .swiper-container');
swiper.destroy();
})
page_post_edit_goodslist.on('shown.rc.page', function(event) {
var page = $(this)
var input = page.find('[name="keyword"]')
var uid = modal_post_write.attr('data-uid');
page.find('[data-role="backdrop"]').addClass('d-none')
page.find('[data-plugin="autocomplete"]').blur(function(){
page.find('[data-role="backdrop"]').addClass('d-none')
$(this).val('');
});
page.find('[data-plugin="autocomplete"]').on("change keyup paste", function() {
var currentVal = $(this).val();
if (currentVal) {
page.find('[data-role="backdrop"]').removeClass('d-none')
page.find('[data-role="keyword-reset"]').removeClass("d-none");
} else {
page.find('[data-role="backdrop"]').addClass('d-none');
page.find('[data-role="keyword-reset"]').addClass("d-none");
}
});
// 검색어 입력필드 초기화
page.on('click','[data-act="keyword-reset"]',function(){
page.find('[data-plugin="autocomplete"]').val('') // 입력필드 초기화
setTimeout(function(){
page.find('[data-plugin="autocomplete"]').blur().autocomplete('clear');; // 입력필드 포커싱
page.find('[data-role="keyword-reset"]').addClass("d-none"); // 검색어 초기화 버튼 숨김
}, 10);
});
//상품연결을 위한 상품명 검색
page.find('[data-plugin="autocomplete"]').autocomplete({
width : 320,
minChars:1,
showNoSuggestionNotice: true,
noSuggestionNotice : '결과가 없습니다.',
lookup: function (query, done) {
$.getJSON(rooturl+"/?m=shop&a=search_data", {q: query,featured_size : '140x104'}, function(res){
if (res.goodslist) {
var sg_goods = [];
var data_arr = res.goodslist.split(',');//console.log(data.usernames);
$.each(data_arr,function(key,goods){
var goodsData = goods.split('|');
var name = goodsData[0];
var uid = goodsData[1];
var featured_img = goodsData[2];
var price = goodsData[3];
sg_goods.push({"value":name,"data":{ 'uid': uid, 'featured_img': featured_img, 'price': price }});
});
var result = {
suggestions: sg_goods
};
done(result);
}
});
},
formatResult: function (suggestion,currentValue) {
return '<div class="media"><span class="media-left"><img src="' + suggestion.data.featured_img+'" class="media-object border mr-2" style="width:70px"/></span><div class="media-body" style="line-height: 1.2;"><h6 class="my-0 text-reset line-clamp-2">' + $.Autocomplete.formatResult(suggestion, currentValue) + '</h6><span class="text-muted f13">'+ suggestion.data.price+'</span></div></div>';
},
onSelect: function (suggestion) {
if (page.find('[data-plugin="autocomplete"]').val().length >= 1) {
console.log(suggestion.data.uid)
$(this).val('');
page.find('[data-role="backdrop"]').addClass('d-none')
page.find('[data-role="keyword-reset"]').addClass("d-none"); // 검색어 초기화 버튼 숨김
$.post(rooturl+'/?r='+raccount+'&m=shop&a=get_goodsData',{
markup_file: 'attach_goods_write_item',
uid : suggestion.data.uid,
featured_size : '140x104'
},function(response){
var result = $.parseJSON(response);
var item=result.item;
page.find('[data-role="attach-goods"]').append(item);
$.notify({message: '추가 되었습니다.'},{type: 'default'});
});
}
}
});
})
page_post_edit_goodslist.on('hidden.rc.page', function(event) {
var page = $(this);
var input = page.find('[name="keyword"]');
var goodsNum = page.find('[data-role="item"]').length
input.val('').blur()
page.find('[data-plugin="autocomplete"]').autocomplete('dispose');
page_post_edit_main.find('[data-role="goodsNum"]').text(goodsNum);
})
//연결상품 지우기
page_post_edit_goodslist.find('[data-role="attach-goods"]').on('tap','[data-act="del"]',function(){
var item = $(this).closest('[data-role="item"]')
item.remove();
});
page_post_edit_goodsview.on('show.rc.page', function(event) {
var page = $(this)
console.log('상품 상세보기')
})

View File

@@ -0,0 +1,26 @@
.collapsed .fa-caret-up:before {
content: "\f0d7";
}
.collapsed .fa {
transition: all 0.4s ease;
}
button[data-toggle="popover"],
button[data-toggle="collapse"] {
background-image: none;
background-color: #fff;
outline: none;
border: none
}
button[data-toggle="collapse"]:active {
background-color: #eee
}
.table-view-inverse .table-view-cell {
background-color: #111;
border-bottom: none
}
.table-view-inverse .table-view-active {
background-color: #373a3c;
}

View File

@@ -0,0 +1,142 @@
function setPostView(settings) {
var format=settings.format;
var uid=settings.uid;
var list=settings.list;
var featured=settings.featured;
var provider = settings.provider;
var videoId = settings.videoId;
var url = settings.url;
var ctheme = '_mobile/rc-default';
var header_height = $('.bar-nav').outerHeight();
var embed_height = $('.embed-responsive').outerHeight();
var height = header_height + embed_height;
var window_height = $(window).height();
var content_height = window_height - height;
if (format=='video') {
$('.embed-responsive').css('background-image','url('+featured+')')
$('.content').css('padding-top',height+'px')
$('.bar-standard').css('height',embed_height+'px')
$('.bar-standard .embed-responsive').css('height',embed_height+'px')
$('.modia-loader').loader();
if (provider=='YouTube') {
var player;
player = new YT.Player('player', {
height: '360',
width: '640',
videoId: videoId,
events: {
// 'onReady': onPlayerReady
}
});
function onPlayerReady(event) {
event.target.playVideo();
}
setTimeout(function(){
$('.modia-loader').loader('hide');
}, 1000);
}
} else {
setTimeout(function(){
$('[data-role="box"]').loader({ position: 'inside' });
}, 50);
}
$('oembed').attr('url',linkurl);
if (!dis_comment) {
// 댓글 출력 함수 정의
var get_Rb_Comment = function(p_module,p_table,p_uid,theme){
$('[data-role="comment"]').Rb_comment({
moduleName : 'comment', // 댓글 모듈명 지정 (수정금지)
parent : p_module+'-'+p_uid, // rb_s_comment parent 필드에 저장되는 형태가 p_modulep_uid 형태임 참조.(- 는 저장시 제거됨)
parent_table : p_table, // 부모 uid 가 저장된 테이블 (게시판인 경우 rb_bbs_data : 댓글, 한줄의견 추가/삭제시 전체 합계 업데이트용)
theme_name : theme, // 댓글 테마
containerClass :'', // 본 엘리먼트(#commentting-container)에 추가되는 class
recnum: 5, // 출력갯수
commentPlaceHolder : '공개 댓글 추가...',
noMoreCommentMsg : '댓글 없음 ',
commentLength : 200, // 댓글 입력 글자 수 제한
toolbar : ['imageUpload'] // 툴바 항목
});
}
// 댓글 출력 함수 실행
var p_module = 'post';
var p_table = 'rb_post_data';
get_Rb_Comment(p_module,p_table,uid,ctheme);
// 보기 에서 댓글이 등록된 이후에 ..
$('[data-role="comment"]').on('saved.rb.comment',function(){
window.history.back(); //댓글작성 sheet 내림
var list_item = $(document).find('[data-role="item"] [data-uid="'+uid+'"]')
//var showComment_Ele_1 = page_allcomment.find('[data-role="total_comment"]'); // 댓글 숫자 출력 element
var showComment_Ele_2 = $('[data-role="total_comment"]'); // 댓글 숫자 출력 element
var showComment_ListEle = list_item.find('[data-role="comment_'+uid+'"]'); // 댓글 숫자 출력 element
$.post(rooturl+'/?r='+raccount+'&m=post&a=get_postData',{
uid : uid
},function(response){
var result = $.parseJSON(response);
var total_comment=result.comment;
//$.notify({message: '댓글이 등록 되었습니다.'},{type: 'default'});
//showComment_Ele_1.text(total_comment); // 모달 상단 최종 댓글수량 합계 업데이트
showComment_Ele_2.text(total_comment); // 모달 상단 최종 댓글수량 합계 업데이트
showComment_ListEle.text(total_comment); // 포스트 목록 해당 항목의 최종 댓글수량 합계 업데이트
});
});
// 포스트 보기 모달에서 한줄의견이 등록된 이후에..
$('[data-role="comment"]').on('saved.rb.oneline',function(){
window.history.back(); //댓글작성 sheet 내림
var uid = $('[name="uid"]').val()
var list_item = $('[data-role="list"]').find('#item-'+uid)
//var showComment_Ele_1 = page_allcomment.find('[data-role="total_comment"]'); // 댓글 숫자 출력 element
var showComment_Ele_2 = $('[data-role="total_comment"]'); // 댓글 숫자 출력 element
var showComment_ListEle = list_item.find('[data-role="total_comment"]'); // 댓글 숫자 출력 element
$.post(rooturl+'/?r='+raccount+'&m=post&a=get_postData',{
uid : uid
},function(response){
var result = $.parseJSON(response);
var total_comment=result.total_comment;
$.notify({message: '답글이 등록 되었습니다.'},{type: 'default'});
//showComment_Ele_1.text(total_comment); // 최종 댓글수량 합계 업데이트
showComment_Ele_2.text(total_comment); // 최종 댓글수량 합계 업데이트
showComment_ListEle.text(total_comment); // 포스트 목록 해당 항목의 최종 댓글수량 합계 업데이트
});
});
// 댓글이 수정된 후에..
$('[data-role="comment"]').on('edited.rb.comment',function(){
setTimeout(function(){
history.back()
$.notify({message: '댓글이 수정 되었습니다.'},{type: 'default'});
}, 300);
})
// 한줄의견이 수정 후에
$('[data-role="comment"]').on('edited.rb.oneline',function(){
setTimeout(function(){
history.back()
$.notify({message: '답글이 수정 되었습니다.'},{type: 'default'});
}, 300);
})
} else {
$('[data-role="btn_comment"]').hide(); //댓글 바로가기 버튼 숨김
$('[data-role="comment"]').html('<div class="text-muted pb-3 text-xs-center">댓글이 사용 중지되었습니다.</div>')
}
};

View File

@@ -0,0 +1,52 @@
<?php
$wdgvar['limit'] = 3; //전체 출력수
$postque = 'mbruid='.$M1['memberuid'].' and site='.$s.' and data <>'.$R['uid'];
if ($my['uid']) $postque .= ' and display > 3'; // 회원공개와 전체공개 포스트 출력
else $postque .= ' and display = 5'; // 전체공개 포스트만 출력
$_RCD=getDbArray($table['postmember'],$postque,'*','gid','asc',$wdgvar['limit'],1);
while($_R = db_fetch_array($_RCD)) $RCD[] = getDbData($table['postdata'],'gid='.$_R['gid'],'*');
$_NUM = getDbRows($table['postmember'],$postque);
?>
<section class="widget-post-card-01">
<?php if ($_NUM): ?>
<ul class="table-view table-view-sm border-top-0 mt-2" data-role="newPost">
<?php $i=0;foreach($RCD as $POST):$i++;?>
<li class="media mb-2">
<a href="<?php echo getPostLink($POST,1) ?>" class="position-relative mr-2">
<img class="" src="<?php echo getPreviewResize(getUpImageSrc($POST),'160x90') ?>" alt="" >
<time class="badge badge-dark rounded-0 position-absolute" style="right:1px;bottom:1px"><?php echo getUpImageTime($POST) ?></time>
</a>
<div class="media-body">
<h5 class="h6 my-1 font-weight-light line-clamp-3">
<a href="<?php echo getPostLink($POST,1) ?>" class="text-reset" ><?php echo stripslashes($POST['subject'])?></a>
</h5>
<div class="mb-1">
<ul class="list-inline d-inline-block f13 text-muted">
<li class="list-inline-item">조회수 <?php echo $POST['hit']?>회 </li>
<li class="list-inline-item">
<time data-plugin="timeago" datetime="<?php echo getDateFormat($POST['d_regis'],'c')?>"></time>
</li>
</ul>
</div>
</div>
</li>
<?php endforeach?>
</ul>
<?php else: ?>
<div class="p-5 text-muted text-center border mb-3">
내역이 없습니다.
</div>
<?php endif; ?>
</section><!-- /.widget -->

View File

@@ -0,0 +1,3 @@
<?php
$d['theme']['format'] = "doc,video,adv"; // 포맷 (문서형,비디오형,포토갤러리형,카드형) , 테마폴더 view_doc.php .. 연계
?>

View File

@@ -0,0 +1,38 @@
<header class="bar bar-nav bar-light bg-white px-0">
<a class="icon material-icons pull-left px-3" role="button" data-href="<?php echo RW(0)?>" data-text="홈으로 이동">house</a>
<a class="title" data-href="<?php echo RW(0)?>" data-text="홈으로 이동">
<?php echo $d['layout']['header_file']?'<img src="'.$g['url_layout'].'/_var/'.$d['layout']['header_file'].'">':stripslashes($d['layout']['header_title'])?>
</a>
</header>
<div class="bar bar-standard bar-header-secondary bar-light bg-white px-0">
<a class="icon pull-right material-icons px-3" role="button" data-toggle="sheet" data-target="#sheet-post-filter" data-backdrop="static">tune</a>
<span class="title" data-location="reload"><?php echo $CAT['name']?$CAT['name']:'전체 카테고리' ?></span>
</div>
<section class="content">
<ul class="table-view table-view-sm mt-2 border-top-0 border-bottom-0" data-role="list"></ul>
</section>
<script src="<?php echo $g['url_module_skin'] ?>/_js/category.js<?php echo $g['wcache']?>" ></script>
<script>
$( document ).ready(function() {
getPostCategory({
wrapper : $('[data-role="list"]'),
category : '<?php echo $cat ?>',
markup : 'category-row', // 테마 > _html > keyword-row.html
start : '#page-main',
totalNUM : '<?php echo $NUM?>',
recnum : <?php echo $recnum ?>,
totalPage : '<?php echo getTotalPage($NUM,$recnum)?>',
sort : '<?php echo $sort ?>',
orderby : 'desc',
none : '<div class="p-5 text-xs-center text-muted">포스트가 없습니다.</div>'
});
});
</script>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,40 @@
<header class="bar bar-nav bar-light bg-white px-0">
<a class="icon material-icons pull-left px-3" role="button" data-href="<?php echo RW(0)?>" data-text="홈으로 이동">house</a>
<a class="title" data-href="<?php echo RW(0)?>" data-text="홈으로 이동">
<?php echo $d['layout']['header_file']?'<img src="'.$g['url_layout'].'/_var/'.$d['layout']['header_file'].'">':stripslashes($d['layout']['header_title'])?>
</a>
</header>
<div class="bar bar-standard bar-header-secondary bar-light bg-white px-0">
<a class="icon pull-right material-icons px-3" role="button" data-toggle="sheet" data-target="#sheet-post-filter" data-backdrop="static">tune</a>
<span class="title">#<?php echo $keyword ?></span>
</div>
<section class="content">
<ul class="table-view table-view-sm mt-2 border-top-0 border-bottom-0" data-role="list"></ul>
</section>
<script src="<?php echo $g['url_module_skin'] ?>/_js/keyword.js<?php echo $g['wcache']?>" ></script>
<script>
$( document ).ready(function() {
getPostKeyword({
wrapper : $('[data-role="list"]'),
keyword : '<?php echo $keyword ?>',
markup : 'keyword-row', // 테마 > _html > keyword-row.html
start : '#page-main',
totalNUM : '<?php echo $NUM?>',
recnum : <?php echo $recnum ?>,
totalPage : '<?php echo getTotalPage($NUM,$recnum)?>',
sort : '<?php echo $sort ?>',
orderby : 'desc',
none : '<div class="p-5 text-xs-center text-muted">포스트가 없습니다.</div>'
});
});
</script>

View File

@@ -0,0 +1,41 @@
<header class="bar bar-nav bar-light bg-white px-0">
<a class="icon material-icons pull-left px-3" role="button" data-href="<?php echo RW(0)?>" data-text="홈으로 이동">house</a>
<a class="icon material-icons pull-right pl-2 pr-3" role="button" data-toggle="modal" data-target="#modal-post-search">search</a>
<a class="icon pull-right material-icons px-2" role="button" data-toggle="sheet" data-target="#sheet-post-filter" data-backdrop="static">tune</a>
<a class="title" data-href="<?php echo RW(0)?>" data-text="홈으로 이동">
<?php echo $d['layout']['header_file']?'<img src="'.$g['url_layout'].'/_var/'.$d['layout']['header_file'].'">':stripslashes($d['layout']['header_title'])?>
</a>
</header>
<section class="content">
<ul class="table-view table-view-sm mt-2 border-top-0 border-bottom-0" data-role="list"></ul>
</section>
<script src="<?php echo $g['url_module_skin'] ?>/_js/list.js<?php echo $g['wcache']?>" ></script>
<script>
var settings={
wrapper : $('[data-role="list"]'),
start : '#page-main',
markup : 'list-row', // 테마 > _html > list-tableview.html
totalNUM : '<?php echo $NUM?>',
recnum : <?php echo $recnum ?>,
totalPage : '<?php echo getTotalPage($NUM,$recnum)?>',
sort : '<?php echo $sort ?>',
orderby : '<?php echo $orderby ?>',
none : '<div class="p-5 text-xs-center text-muted">등록된 리스트가 없습니다.</div>'
}
getPostListAll(settings);
//목록 다시 불러오기
$('[data-toggle="reload"]').click(function(){
$('[data-role="list"]').empty();
$('.infinitescroll-end').remove();
console.log(settings.recnum)
getPostListAll(settings);
});
</script>

View File

@@ -0,0 +1,42 @@
<header class="bar bar-nav bar-light bg-white">
<a class="icon material-icons pull-left px-3" role="button" data-href="<?php echo RW(0)?>" data-text="홈으로 이동">house</a>
<a class="icon material-icons pull-right pl-2 pr-3 mirror" role="button" data-toggle="popup" data-target="#popup-link-share" data-url>reply</a>
<a class="title" data-href="<?php echo RW(0)?>" data-text="새로고침">
<?php echo $d['layout']['header_file']?'<img src="'.$g['url_layout'].'/_var/'.$d['layout']['header_file'].'">':stripslashes($d['layout']['header_title'])?>
</a>
</header>
<section class="content">
<div data-role="box"></div>
</section>
<script src="<?php echo $g['url_module_skin'] ?>/_js/list_view.js<?php echo $g['wcache']?>" ></script>
<script>
var settings={
listid : '<?php echo $listid?>',
wrapper : $('[data-role="box"]'),
markup : 'listview-box', // 테마 > _html > list-tableview.html
totalNUM : '<?php echo $NUM?>',
recnum : <?php echo $recnum ?>,
totalPage : '<?php echo getTotalPage($NUM,$recnum)?>',
sort : '<?php echo $sort ?>',
orderby : '<?php echo $orderby ?>',
none : '<div class="p-5 text-xs-center text-muted">등록된 포스트가 없습니다.</div>'
}
getPostListview(settings);
//목록 다시 불러오기
$('[data-toggle="reload"]').click(function(){
$('[data-role="list"]').empty();
$('.infinitescroll-end').remove();
console.log(settings.recnum)
getPostListview(settings);
});
</script>

View File

@@ -0,0 +1,94 @@
<?php
$sort = $sort ? $sort : 'gid';
$orderby= $orderby ? $orderby : 'asc';
$c_recnum = 3; // 한 열에 출력할 카드 갯수
$recnum = $recnum && $recnum < 200 ? $recnum : 24;
$_WHERE = 'display<2 and site='.$s;
if ($cat) $_WHERE .= ' and ('.getPostCategoryCodeToSql($table[$m.'category'],$cat).')';
$TCD = getDbArray($table[$m.'index'],$_WHERE,'*',$sort,$orderby,$recnum,$p);
$NUM = getDbRows($table[$m.'index'],$_WHERE);
$TPG = getTotalPage($NUM,$recnum);
while($_R = db_fetch_array($TCD)) $RCD[] = getDbData($table[$m.'data'],'gid='.$_R['gid'],'*');
?>
<?php if ($NUM): ?>
<div class="card-deck-wrapper">
<div class="card-deck">
<?php
$totalCardDeck=ceil($NUM/$c_recnum); // card-deck 갯수 ($NUM 은 해당 데이타의 총 card 갯수 getDbRows 이용)
$total_card_num = $totalCardDeck*$c_recnum;// 총 출력되야 할 card 갯수(빈카드 포함)
$print_card_num = 0; // 실제 출력된 카드 숫자 (아래 card 출력될 때마다 1 씩 증가)
$lack_card_num = $total_card_num;
?>
<?php $i=1;foreach($RCD as $R):?>
<?php $R['mobile']=isMobileConnect($R['agent'])?>
<div class="card" data-target="#page-post-view"
data-toggle="page"
data-start="#page-main"
data-uid="<?php echo $R['uid'] ?>"
data-url="/post/<?php echo $R['cid'] ?>"
<?php if ($R['featured_img'] || $R['linkedshop']): ?>
<?php
if ($R['linkedshop']):;
$linkedshopArr = getArrayString($R['linkedshop']);
$SH=getUidData($table['shopproduct'],$linkedshopArr['data'][0]);
?>
data-src="<?php echo getPreviewResize(getUpImageSrc($SH),'600x600') ?>"
<?php else: ?>
data-src="<?php echo getPreviewResize(getUpImageSrc($R),'600x600') ?>"
<?php endif; ?>
<?php endif; ?>
data-title="<?php echo $R['subject'] ?>">
<?php if ($R['featured_img'] || $R['linkedshop']): ?>
<?php
if ($R['linkedshop']):;
$linkedshopArr = getArrayString($R['linkedshop']);
$SH=getUidData($table['shopproduct'],$linkedshopArr['data'][0]);
?>
<img src="<?php echo getPreviewResize(getUpImageSrc($SH),'600x400') ?>" class="card-img-top img-fluid" alt="...">
<?php else: ?>
<img src="<?php echo getPreviewResize(getUpImageSrc($R),'600x400') ?>" class="card-img-top img-fluid" alt="...">
<?php endif; ?>
<?php endif; ?>
<div class="card-block">
<h4 class="card-title h6"><?php echo $R['subject']?></h4>
<p class="card-text"><small class="text-muted"><?php echo $R['review']?></small></p>
</div>
</div><!-- /.card -->
<?php
$print_card_num++; // 카드 출력될 때마 1씩 증가
$lack_card_num = $total_card_num - $print_card_num;
?>
<?php if(!($i%$c_recnum)):?></div><div class="card-deck mt-5"><?php endif?>
<?php $i++;endforeach?>
<?php if($lack_card_num ):?>
<?php for($j=0;$j<$lack_card_num;$j++):?>
<a class="card border-0"></a>
<?php endfor?>
<?php endif?>
</div><!-- /.card-deck -->
</div><!-- /.card-deck-wrapper -->
<?php else: ?>
<div class="d-flex align-items-center justify-content-center" style="height:50vh">
<div class="text-muted">
자료가 없습니다.
</div>
</div>
<?php endif; ?>

View File

@@ -0,0 +1,41 @@
<?php $recnum = 3 ?>
<header class="bar bar-nav bar-light bg-white px-0">
<a class="icon material-icons pull-left px-3" role="button" data-href="<?php echo RW(0)?>" data-text="홈으로 이동">house</a>
<a class="icon material-icons pull-right pl-2 pr-3" role="button" data-toggle="modal" data-target="#modal-post-search">search</a>
<a class="icon pull-right material-icons px-2" role="button" data-toggle="sheet" data-target="#sheet-post-filter" data-backdrop="static">tune</a>
<a class="title" data-href="<?php echo RW(0)?>" data-text="홈으로 이동">
<?php echo $d['layout']['header_file']?'<img src="'.$g['url_layout'].'/_var/'.$d['layout']['header_file'].'">':stripslashes($d['layout']['header_title'])?>
</a>
</header>
<section class="content bg-faded">
<div data-role="list"></div>
</section>
<script src="<?php echo $g['url_module_skin'] ?>/_js/post.js<?php echo $g['wcache']?>" ></script>
<script>
var settings={
wrapper : $(document).find('[data-role="list"]'),
markup : 'post-row', // 테마 > _html > post-card-full.html
totalNUM : '<?php echo $NUM?>',
recnum : <?php echo $recnum ?>,
totalPage : '<?php echo getTotalPage($NUM,$recnum)?>',
sort : '<?php echo $sort ?>',
orderby : '<?php echo $orderby ?>',
none : '<div class="p-5 text-xs-center text-muted">등록된 포스트가 없습니다.</div>'
}
getPostAll(settings);
//목록 다시 불러오기
$('[data-toggle="reload"]').click(function(){
$('[data-role="list"]').html('');
$('.infinitescroll-end').remove();
// $('.content [data-role="list"]').infinitescroll('destroy');
// $('.content').html('<div data-role="list"></div>')
getPostAll(settings);
});
</script>

View File

@@ -0,0 +1,61 @@
<div data-role="loader">
<div class="d-flex justify-content-center align-items-center text-muted" style="height:90vh">
<div class="spinner-border" role="status"></div>
</div>
</div>
<div class="d-flex justify-content-center align-items-center text-muted" style="height:90vh">
<div class="">
<div class="content-padded">
<ul class="media-list">
<li class="media mb-2" data-role="item" data-landing="true"
data-target="#modal-post-view" id ="veiw-<?php echo $R['cid'] ?>"
data-toggle="modal"
data-format="<?php echo $R['format'] ?>"
data-uid="<?php echo $R['uid'] ?>"
data-featured="<?php echo getPreviewResize(getUpImageSrc($R),'640x360'); ?>"
data-provider="<?php echo getFeaturedimgMeta($R,'provider') ?>"
data-videoid="<?php echo getFeaturedimgMeta($R,'provider')=='YouTube'?getFeaturedimgMeta($R,'name'):'' ?>"
data-url="/post/<?php echo $R['cid'] ?>?ref=<?php echo $ref ?>">
<div class="media-left">
<div class="embed-responsive embed-responsive-16by9 bg-faded">
<img class="media-object" src="<?php echo getPreviewResize(getUpImageSrc($R),'320x180'); ?>" alt="" data-role="featured" style="width:160px">
<time class="badge badge-default bg-black rounded-0 position-absolute f12 p-1" style="right:2px;bottom:2px" data-role="time">13:17</time>
</div>
</div>
<div class="media-body pt-1">
<h4 class="media-heading f15 line-clamp-3"><?php echo stripslashes($R['subject']) ?></h4>
<ul class="list-inline f13 text-muted mt-1 mb-0">
<li class="list-inline-item"><?php echo $M1[$_HS['nametype']] ?></li>
<li class="list-inline-item">조회수 <?php echo number_format($R['hit'])?>회 </li>
<li class="list-inline-item">댓글 <?php echo number_format($R['comment'])?> </li>
</ul>
</div>
</li>
</ul>
<button type="button" data-href="/" data-text="홈으로 이동" class="btn btn-secondary btn-block">
홈으로 이동
</button>
</div>
</div>
</div>
<script>
var tag = document.createElement('script');
tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
$( document ).ready(function() {
$('[data-role="loader"]').addClass('d-none');
$('#veiw-<?php echo $R['cid'] ?>').click();
});
</script>

View File

@@ -0,0 +1,34 @@
<div data-role="loader">
<div class="d-flex justify-content-center align-items-center text-muted" style="height:90vh">
<div class="spinner-border" role="status"></div>
</div>
</div>
<div class="d-flex justify-content-center align-items-center text-muted" style="height:90vh">
<div class="w-75">
<button type="button" data-location="reload" class="btn btn-secondary btn-block">
새로고침
</button>
<button type="button" data-href="/" data-text="홈으로 이동" class="btn btn-secondary btn-block">
홈으로 이동
</button>
</div>
</div>
<?php getImport('ckeditor5','decoupled-document/build/ckeditor',false,'js'); ?>
<?php getImport('ckeditor5','decoupled-document/build/translations/ko',false,'js'); ?>
<script>
var uid = '<?php echo $R['uid'] ?>';
$( document ).ready(function() {
$('[data-role="loader"]').addClass('d-none');
if (uid) modal_post_write.attr('data-uid',uid);
modal_post_write.modal();
});
</script>