HEX
Server: Apache/2.4.54 (Debian)
System: Linux f988254d8f22 6.8.0-87-generic #88~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Tue Oct 14 14:03:14 UTC 2 x86_64
User: (1000)
PHP: 7.4.33
Disabled: NONE
Upload Files
File: /var/www/html/wp-content/plugins/kboard/pages/kboard_store.php
<?php if(!defined('ABSPATH')) exit;?>
<div class="wrap">
	<div class="kboard-header-logo"></div>
	<h1 class="wp-heading-inline"><?php echo __('KBoard : 스토어', 'kboard')?></h1>
	<a href="#" class="page-title-action kbstore-login-button"></a>
	<a href="https://www.cosmosfarm.com" class="page-title-action" onclick="window.open(this.href);return false;"><?php echo __('Home', 'kboard')?></a>
	<a href="https://www.cosmosfarm.com/threads" class="page-title-action" onclick="window.open(this.href);return false;"><?php echo __('Community', 'kboard')?></a>
	<a href="https://www.cosmosfarm.com/support" class="page-title-action" onclick="window.open(this.href);return false;"><?php echo __('Support', 'kboard')?></a>
	<a href="https://blog.cosmosfarm.com" class="page-title-action" onclick="window.open(this.href);return false;"><?php echo __('Blog', 'kboard')?></a>
	<a href="https://www.cosmosfarm.com/wpstore/manage/license" class="page-title-action" onclick="window.open(this.href);return false;">라이센스 도메인 등록 및 관리</a>
	
	<hr class="wp-header-end">
	
	<div class="wp-filter">
		<ul class="filter-links">
			<li class="<?php if($category==''):?>current<?php endif?>"><a href="<?php echo admin_url('admin.php?page=kboard_store')?>">모두</a></li>
			<li class="<?php if($category=='kboard'):?>current<?php endif?>"><a href="<?php echo admin_url('admin.php?page=kboard_store&kbstore_category=kboard')?>">KBoard 스킨</a></li>
			<li class="<?php if($category=='theme'):?>current<?php endif?>"><a href="<?php echo admin_url('admin.php?page=kboard_store&kbstore_category=theme')?>">테마</a></li>
			<li class="<?php if($category=='plugin'):?>current<?php endif?>"><a href="<?php echo admin_url('admin.php?page=kboard_store&kbstore_category=plugin')?>">플러그인</a></li>
			<li class="<?php if($category=='widget'):?>current<?php endif?>"><a href="<?php echo admin_url('admin.php?page=kboard_store&kbstore_category=widget')?>">위젯</a></li>
			<li class="<?php if($category=='mobile'):?>current<?php endif?>"><a href="<?php echo admin_url('admin.php?page=kboard_store&kbstore_category=mobile')?>">모바일</a></li>
			<li class="<?php if($category=='admin'):?>current<?php endif?>"><a href="<?php echo admin_url('admin.php?page=kboard_store&kbstore_category=admin')?>">관리자용</a></li>
			<li class="<?php if($category=='social'):?>current<?php endif?>"><a href="<?php echo admin_url('admin.php?page=kboard_store&kbstore_category=social')?>">소셜</a></li>
			<li class="<?php if($category=='design'):?>current<?php endif?>"><a href="<?php echo admin_url('admin.php?page=kboard_store&kbstore_category=design')?>">디자인소스</a></li>
		</ul>
	</div>
	
	<table class="wp-list-table widefat fixed">
		<thead>
			<tr>
				<th class="manage-column kbstore-thumbnail">
					<a><span>미리보기</span></a>
				</th>
				<th class="manage-column kbstore-title">
					<a><span>이름</span></a>
				</th>
				<th class="manage-column kbstore-category">
					<a><span>카테고리</span></a>
				</th>
				<th class="manage-column kbstore-version">
					<a><span>버전</span></a>
				</th>
				<th class="manage-column kbstore-description">
					<a><span>설명</span></a>
				</th>
			</tr>
		</thead>
		<tfoot>
			<tr>
				<th class="manage-column kbstore-thumbnail">
					<a><span>미리보기</span></a>
				</th>
				<th class="manage-column kbstore-title">
					<a><span>이름</span></a>
				</th>
				<th class="manage-column kbstore-category">
					<a><span>카테고리</span></a>
				</th>
				<th class="manage-column kbstore-version">
					<a><span>버전</span></a>
				</th>
				<th class="manage-column kbstore-description">
					<a><span>설명</span></a>
				</th>
			</tr>
		</tfoot>
		<tbody id="kbstore-products-list"></tbody>
	</table>
</div>

<script>
var cf_login_status;
var cf_list_page = 1;
var cf_list_continue = true;
var cf_list_lock = false;
var cf_profile = <?php echo json_encode(KBStore::getMyProfile())?>;

jQuery(document).ready(function(){
	cosmosfarm.init('<?php echo KBOARD_WORDPRESS_APP_ID?>', '<?php echo KBStore::getAccessToken()?>');
	cosmosfarm.oauthStatus(function(res){
		if(res.status == 'valid'){
			cosmosfarm.getProfile(function(res){
				if(res.profile.username){
					cf_login_status = 'connected';
					jQuery('.kbstore-login-button').text(res.profile.username+'님 환영합니다');
				}
				else{
					jQuery('.kbstore-login-button').text('<?php echo __('로그인', 'kboard')?>');
				}
			});
		}
		else{
			jQuery('.kbstore-login-button').text('<?php echo __('로그인', 'kboard')?>');
		}
	}, function(res){
		jQuery('.kbstore-login-button').text('<?php echo __('로그인', 'kboard')?>');
	});
	jQuery('.kbstore-login-button').attr('href', cosmosfarm.getLoginUrl('<?php echo admin_url('admin.php?page=kboard_store')?>'));
	cf_get_kbstore_list(cf_list_page);
});
jQuery(window).scroll(function(){
	var scroll_height = jQuery(window).height() + jQuery(window).scrollTop();
	var document_height = jQuery(document).height();
	
	if(document_height - scroll_height <= 100 && cf_list_lock == false && cf_list_continue){
		cf_list_lock = true;
		cf_get_kbstore_list(cf_list_page);
	}
});
function cf_get_kbstore_list(page){
	var current_scroll_top = jQuery(window).scrollTop();
	cosmosfarm.getWpstoreProducts('<?php echo esc_attr($category)?>', page, 10, function(res){
		if(res.length <= 0) cf_list_continue = false;
		for(var i=0; i<res.length; i++){
			cf_add_kbstore_product(res[i].thumbnail, res[i].title, res[i].link, res[i].download, res[i].formatted_category, res[i].category, res[i].version, res[i].description, res[i].price, res[i].purchased);
		}
		cf_list_page+=1;
		setTimeout(function(){
			jQuery(window).scrollTop(current_scroll_top);
			cf_list_lock = false;
		});
	});
}
function cf_add_kbstore_product(thumbnail, title, link, download, formatted_category, category, version, description, price, purchased){
	var row_id = encodeURIComponent(title);
	
	<?php if(!KBOARD_STORE_AUTH):?>
	purchased = 1;
	<?php endif?>
	
	var td1 = document.createElement('td');
	var img = document.createElement('img');
	img.setAttribute('class', 'kbstore-thumbnail-img');
	img.setAttribute('src', thumbnail);
	td1.appendChild(img);
	
	var td2 = document.createElement('td');
	var strong = document.createElement('strong');
	strong.className = 'kbstore-product-title';
	strong.innerHTML = title;
	td2.appendChild(strong);
	
	var action_links = document.createElement('div');
	action_links.setAttribute('class', 'action-links');
	
	var a_detail = document.createElement('a');
	a_detail.className = 'button';
	a_detail.innerHTML = '세부사항';
	a_detail.setAttribute('href', link);
	a_detail.onclick = function(){
		window.open(this.href); return false;
	}
	
	var a_purchase = document.createElement('a');
	a_purchase.className = 'button';
	a_purchase.innerHTML = '구매하기';
	a_purchase.setAttribute('href', link);
	a_purchase.onclick = function(){
		if(confirm('제품 구매는 스토어 홈페이지에서 가능합니다.')){
			window.open(this.href);
		}
		return false;
	}
	
	var a_download = document.createElement('a');
	a_download.className = 'button';
	a_download.innerHTML = '설치하기';
	a_download.setAttribute('href', download+'?app_id='+cosmosfarm.app_id+'&access_token='+cosmosfarm.access_token);
	a_download.onclick = function(){
		cosmosfarm.oauthStatus(function(res){
			if(res.status == 'valid' && cf_login_status == 'connected'){
				window.open(download);
			}
			else{
				if(confirm('코스모스팜에 로그인해야 합니다. 코스모스팜 홈페이지로 이동합니다.')){
					window.location.href = cosmosfarm.getLoginUrl('<?php echo admin_url('admin.php?page=kboard_store')?>');
				}
			}
		}, function(res){
			if(confirm('코스모스팜에 로그인해야 합니다. 코스모스팜 홈페이지로 이동합니다.')){
				window.location.href = cosmosfarm.getLoginUrl('<?php echo admin_url('admin.php?page=kboard_store')?>');
			}
		});
		return false;
	}
	
	action_links.appendChild(a_detail);
	action_links.appendChild(document.createTextNode(' '));
	if(category=='design'){
		if(purchased=='1' || price<=0) action_links.appendChild(a_download);
		else action_links.appendChild(a_download);
	}
	else if(category=='kboard'){
		if(purchased=='1' || price<=0) action_links.appendChild(cf_get_a_install('kboard-skin', download, version));
		else action_links.appendChild(a_download);
	}
	else if(category=='theme'){
		if(purchased=='1' || price<=0) action_links.appendChild(cf_get_a_install('theme', download, version));
		else action_links.appendChild(a_download);
	}
	else{
		if(purchased=='1' || price<=0) action_links.appendChild(cf_get_a_install('plugin', download, version));
		else action_links.appendChild(a_download);
	}
	td2.appendChild(action_links);
	
	var td3 = document.createElement('td');
	td3.innerHTML = formatted_category;
	
	var td4 = document.createElement('td');
	td4.innerHTML = version;
	
	var td5 = document.createElement('td');
	var td5_wrap = document.createElement('div');
	var td5_more = document.createElement('p');
	td5.className = 'manage-column kbstore-description show-little';
	td5.appendChild(td5_wrap);
	td5.appendChild(td5_more);
	td5_wrap.setAttribute('id', row_id);
	td5_wrap.className = 'kbstore-description-wrap';
	td5_wrap.innerHTML = description;
	td5_more.className = 'kbstore-description-more';
	td5_more.innerHTML = '<a href="#'+row_id+'" class="button button-small" onclick="return cf_kbstore_description_full(this)">설명 펼치기</a>';
	
	var tr = document.createElement('tr');
	tr.appendChild(td1);
	tr.appendChild(td2);
	tr.appendChild(td3);
	tr.appendChild(td4);
	tr.appendChild(td5);
	
	var list = document.getElementById('kbstore-products-list');
	list.appendChild(tr);
}
function cf_get_a_install(action, download, version){
	var a_install = document.createElement('a');
	a_install.className = 'button-primary';
	a_install.innerHTML = '설치하기';
	a_install.setAttribute('href', '<?php echo admin_url('admin.php?page=kboard_updates')?>' + '&action='+action+'&download_url='+download+'&download_version='+version);
	a_install.onclick = function(){
		<?php if(KBOARD_STORE_AUTH):?>
		cosmosfarm.oauthStatus(function(res){
			if(res.status == 'valid' && cf_login_status == 'connected'){
				if(confirm('설치를 계속 할까요? 이미 설치되어 있다면 새로운 파일로 교체됩니다.')){
					window.location.href = '<?php echo admin_url('admin.php?page=kboard_updates')?>' + '&action='+action+'&download_url='+download+'&download_version='+version;
				}
			}
			else{
				if(confirm('코스모스팜에 로그인해야 합니다. 코스모스팜 홈페이지로 이동합니다.')){
					window.location.href = cosmosfarm.getLoginUrl('<?php echo admin_url('admin.php?page=kboard_store')?>');
				}
			}
		}, function(res){
			if(confirm('코스모스팜에 로그인해야 합니다. 코스모스팜 홈페이지로 이동합니다.')){
				window.location.href = cosmosfarm.getLoginUrl('<?php echo admin_url('admin.php?page=kboard_store')?>');
			}
		});
		<?php else:?>
		if(confirm('설치를 계속 할까요? 이미 설치되어 있다면 새로운 파일로 교체됩니다.')){
			window.location.href = '<?php echo admin_url('admin.php?page=kboard_updates')?>' + '&action='+action+'&download_url='+download+'&download_version='+version;
		}
		<?php endif?>
		return false;
	}
	return a_install;
}
function cf_kbstore_description_full(obj){
	var column = jQuery(obj).parents('.kbstore-description');
	if(column.hasClass('show-little')){
		jQuery('#kbstore-products-list .kbstore-description').addClass('show-little');
		jQuery('#kbstore-products-list .kbstore-description-more .button').text('설명 펼치기');

		column.find('.kbstore-description-more .button').text('설명 닫기');
		column.removeClass('show-little');
	}
	else{
		column.find('.kbstore-description-more .button').text('설명 펼치기');
		column.addClass('show-little');
	}
}
</script>