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