Compare commits

..

10 commits

12 changed files with 66 additions and 27 deletions

View file

@ -171,7 +171,7 @@ class UA
}
// Look for common search engine names and the 'bot' keyword.
if (preg_match('/bot|spider|crawler|archiver|wget|curl|php|slurp|wordpress|facebook|external(agent|fetcher)|teoma|yeti|daum|apachebench|googleother|mediapartners-google|[(<+]https?:|@/i', $ua))
if (preg_match('/bot|spider|crawler|archiver|wget|curl|php|slurp|wordpress|facebook|external(agent|fetcher)|teoma|yeti|daum\b|apachebench|googleother|mediapartners-google|[(<+]https?:|@/i', $ua))
{
return self::$_robot_cache[$ua] = true;
}

View file

@ -1580,9 +1580,10 @@ function doDocumentLoad(obj) {
*
* @param int document_srl
* @param string module
* @param string mid
* @return void
*/
function doDocumentSelect(document_srl, module) {
function doDocumentSelect(document_srl, module, mid) {
if (!opener) {
window.close();
return;
@ -1590,6 +1591,9 @@ function doDocumentSelect(document_srl, module) {
if (module === undefined) {
module = 'document';
}
if (mid === undefined) {
mid = current_mid;
}
// 게시글을 가져와서 등록하기
if (module === 'page') {
@ -1602,9 +1606,13 @@ function doDocumentSelect(document_srl, module) {
}
opener.location.href = url;
} else {
opener.location.href = opener.current_url.setQuery('act', 'dispBoardWrite').setQuery('document_srl', document_srl);
opener.location.href = opener.current_url.setQuery('mid', mid).setQuery('act', 'dispBoardWrite').setQuery('document_srl', document_srl);
}
window.close();
// 딜레이 후 창 닫기
setTimeout(function() {
window.close();
}, 100);
}
/**

View file

@ -307,6 +307,7 @@ $lang->confirm_vote = 'Are you sure you want to upvote?';
$lang->confirm_delete = 'Are you sure you want to delete?';
$lang->confirm_restore = 'Are you sure you want to restore?';
$lang->confirm_move = 'Are you sure you want to move?';
$lang->confirm_trash = 'Are you sure you want to move to trash?';
$lang->confirm_reset = 'Are you sure you want to reset?';
$lang->confirm_leave = 'Are you sure you want to delete your account?';
$lang->confirm_update = 'Are you sure you want to update?';

View file

@ -307,6 +307,7 @@ $lang->confirm_vote = '추천하시겠습니까?';
$lang->confirm_delete = '삭제하시겠습니까?';
$lang->confirm_restore = '복원하시겠습니까?';
$lang->confirm_move = '이동하시겠습니까?';
$lang->confirm_trash = '휴지통으로 이동하시겠습니까?';
$lang->confirm_reset = '초기화하시겠습니까?';
$lang->confirm_leave = '탈퇴하시겠습니까?';
$lang->confirm_update = '수정하시겠습니까?';

View file

@ -875,6 +875,7 @@ function getDestroyXeVars($vars)
*/
function getNumberingPath($no, int $size = 3): string
{
$no = intval($no);
$mod = pow(10, $size);
$output = sprintf('%0' . $size . 'd/', intval($no % $mod));
if($no >= $mod)

View file

@ -10,7 +10,7 @@
<dl>
<dt>{$lang->menu_gnb['user']}: </dt><dd><a href="{getUrl('', 'module', 'admin', 'act', 'dispMemberAdminList')}">{number_format($status->member->totalCount)} (<!--@if($status->member->todayCount > 0)-->+<!--@end-->{number_format($status->member->todayCount)})</a></dd>
</dl>
<a href="{getUrl('', 'module', 'admin', 'act', 'dispCounterAdminIndex')}"><i>&rsaquo;</i> {$lang->details}</a>
<a href="{getUrl('', 'module', 'admin', 'act', 'dispCounterAdminIndex')}">{$lang->details} <i class="xi-angle-right"></i></a>
</div>
</section>
{@ $dashboard_stack->left[] = ob_get_clean()}
@ -23,7 +23,7 @@
<dl>
<dt>{$lang->menu_gnb_sub['document']}: </dt><dd><a href="{getUrl('', 'module', 'admin', 'act', 'dispDocumentAdminList')}">{number_format($status->document->totalCount)} (<!--@if($status->document->todayCount > 0)-->+<!--@end-->{number_format($status->document->todayCount)})</a></dd>
</dl>
<a href="{getUrl('', 'module', 'admin', 'act', 'dispCounterAdminIndex')}"><i>&rsaquo;</i> {$lang->details}</a>
<a href="{getUrl('', 'module', 'admin', 'act', 'dispCounterAdminIndex')}">{$lang->details} <i class="xi-angle-right"></i></a>
</div>
</section>
<style scoped>.jqplot-table-legend{background:#fff;top:13px!important}</style>
@ -48,7 +48,7 @@
</li>
<li cond="!is_array($latestDocumentList) || count($latestDocumentList) < 1">{$lang->no_data}</li>
</ul>
<p class="more"><a href="{getUrl('', 'module', 'admin', 'act', 'dispDocumentAdminList')}"><i>&rsaquo;</i> {$lang->more}</a></p>
<p class="more"><a href="{getUrl('', 'module', 'admin', 'act', 'dispDocumentAdminList')}">{$lang->more} <i class="xi-angle-right"></i></a></p>
</section>
{@ $dashboard_stack->right[] = ob_get_clean()}
@ -70,11 +70,13 @@
</li>
<li cond="!is_array($latestCommentList) || count($latestCommentList) < 1">{$lang->no_data}</li>
</ul>
<p class="more"><a href="{getUrl('', 'module', 'admin', 'act', 'dispCommentAdminList')}"><i>&rsaquo;</i> {$lang->more}</a></p>
<p class="more"><a href="{getUrl('', 'module', 'admin', 'act', 'dispCommentAdminList')}">{$lang->more} <i class="xi-angle-right"></i></a></p>
</section>
{@ $dashboard_stack->right[] = ob_get_clean()}
<script>
xe.lang.confirm_delete = '{$lang->confirm_delete}';
xe.lang.confirm_trash = '{$lang->confirm_trash}';
xe.lang.this_week = '{$lang->this_week}';
xe.lang.last_week = '{$lang->last_week}';
xe.lang.next_week = '{$lang->next_week}';

View file

@ -14,7 +14,7 @@
<dl>
<dt>{$lang->menu_gnb['user']}: </dt><dd><a href="{getUrl('', 'module', 'admin', 'act', 'dispMemberAdminList')}">{number_format($status->member->totalCount)} (<!--@if($status->member->todayCount > 0)-->+<!--@end-->{number_format($status->member->todayCount)})</a></dd>
</dl>
<a href="{getUrl('', 'module', 'admin', 'act', 'dispMemberAdminList')}"><i class="xi-angle-right"></i><span>{$lang->more}</span></a>
<a href="{getUrl('', 'module', 'admin', 'act', 'dispMemberAdminList')}">{$lang->more} <i class="xi-angle-right"></i></a>
</div>
</section>
{@ $dashboard_stack->left[] = ob_get_clean()}
@ -42,7 +42,7 @@
<dl>
<dt>{$lang->menu_gnb_sub['document']}: </dt><dd><a href="{getUrl('', 'module', 'admin', 'act', 'dispDocumentAdminList')}">{number_format($status->document->totalCount)} (<!--@if($status->document->todayCount > 0)-->+<!--@end-->{number_format($status->document->todayCount)})</a></dd>
</dl>
<a href="{getUrl('', 'module', 'admin', 'act', 'dispDocumentAdminList')}"><i class="xi-angle-right"></i><span>{$lang->more}</span></a>
<a href="{getUrl('', 'module', 'admin', 'act', 'dispDocumentAdminList')}">{$lang->more} <i class="xi-angle-right"></i></a>
</div>
</section>
{@ $dashboard_stack->right[] = ob_get_clean()}
@ -65,7 +65,11 @@
</li>
<li cond="!is_array($latestCommentList) || count($latestCommentList) < 1">{$lang->no_data}</li>
</ul>
<p class="more"><a href="{getUrl('', 'module', 'admin', 'act', 'dispCommentAdminList')}"><i class="xi-angle-right"></i><span>{$lang->more}</span></a></p>
<p class="more"><a href="{getUrl('', 'module', 'admin', 'act', 'dispCommentAdminList')}">{$lang->more} <i class="xi-angle-right"></i></a></p>
</section>
{@ $dashboard_stack->right[] = ob_get_clean()}
<script>
xe.lang.confirm_delete = '{$lang->confirm_delete}';
xe.lang.confirm_trash = '{$lang->confirm_trash}';
</script>

View file

@ -10,4 +10,17 @@ $(function() {
$(this).removeClass('hover').find('>.action').hide();
}
});
var forms = $('.dashboard>div>section form.action');
forms.on('click', 'button', function(e) {
var title = $(this).closest('form').siblings('a').first().text();
var message;
if ($(this).val() === 'trash' || $(this).val() === 'true') {
message = xe.lang.confirm_trash;
} else {
message = xe.lang.confirm_delete;
}
if (!confirm(title + "\n" + message)) {
e.preventDefault();
}
});
});

View file

@ -313,37 +313,34 @@ class BoardView extends Board
}
}
// if the consultation function is enabled, and the document is not a notice
// if the consultation function is enabled, only the author can read the document.
if($this->consultation && !$oDocument->isNotice())
{
$logged_info = Context::get('logged_info');
if(abs($oDocument->get('member_srl')) != $logged_info->member_srl)
if (abs($oDocument->get('member_srl')) != $this->user->member_srl)
{
$oDocument = DocumentModel::getDocument(0);
Context::set('document_srl', null, true);
$this->dispBoardMessage('msg_not_founded', 404);
}
}
// if the document is TEMP saved, check Grant
// if the document is TEMP saved, pretend that it doesn't exist.
if($oDocument->getStatus() == 'TEMP')
{
if(!$oDocument->isGranted())
{
$oDocument = DocumentModel::getDocument(0);
}
Context::set('document_srl', null, true);
$this->dispBoardMessage('msg_not_founded', 404);
}
}
else
{
// if the document is not existed, then alert a warning message
// if the document does not exist, then display a warning message.
Context::set('document_srl', null, true);
$this->dispBoardMessage('msg_not_founded', 404);
}
}
/**
* if the document is not existed, get an empty document
*/
}
else
{
$oDocument = DocumentModel::getDocument(0);
@ -351,7 +348,7 @@ class BoardView extends Board
}
/**
*check the document view grant
* Check the document view grant
*/
if($oDocument->isExists())
{

View file

@ -11,6 +11,7 @@
<thead>
<tr>
<th class="title">{$lang->title}</th>
<th class="title">{$lang->module}</th>
<th class="title">{$lang->date}</th>
<th class="title" style="width:60px">{$lang->cmd_select}</th>
<th class="title" style="width:60px">{$lang->cmd_delete}</th>
@ -22,8 +23,9 @@
<td>
<a href="#" class="toggle_content" data-document-srl="{$val->document_srl}">{$val->getTitle()}</a>
</td>
<td>{$val->getModuleName()}</td>
<td>{$val->getRegdate("Y-m-d H:i:s")}</td>
<td><a href="#" class="btn btn_select_temp_saved" data-document-srl="{$val->document_srl}" data-document-type="{$val->getDocumentType()}">{$lang->cmd_select}</a></td>
<td><a href="#" class="btn btn_select_temp_saved" data-document-srl="{$val->document_srl}" data-document-type="{$val->getDocumentType()}" data-document-mid="{$val->getDocumentMid()}">{$lang->cmd_select}</a></td>
<td><a href="#" class="btn btn_delete_temp_saved" data-document-srl="{$val->document_srl}">{$lang->cmd_delete}</a></td>
</tr>
<tr id="saved_document_{$val->document_srl}" class="saved_content" style="display:none">
@ -61,7 +63,8 @@
event.preventDefault();
var document_srl = $(this).data('documentSrl');
var document_type = $(this).data('documentType');
doDocumentSelect(document_srl, document_type);
var document_mid = $(this).data('documentMid');
doDocumentSelect(document_srl, document_type, document_mid);
});
$('.btn_delete_temp_saved').on('click', function(event) {
event.preventDefault();

View file

@ -1870,7 +1870,14 @@ class FileController extends File
foreach($source_file_list as $source_file)
{
$this->copyFile($source_file, $module_srl, $upload_target_srl, $content);
$copied_file = $this->copyFile($source_file, $module_srl, $upload_target_srl, $content);
if ($source_file->cover_image == 'Y')
{
executeQuery('file.updateCoverImage', [
'file_srl' => $copied_file->get('file_srl'),
'cover_image' => 'Y',
]);
}
}
}

View file

@ -40,6 +40,7 @@ class UATest extends \Codeception\Test\Unit
$this->assertTrue(Rhymix\Framework\UA::isRobot('Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)'));
$this->assertTrue(Rhymix\Framework\UA::isRobot('Googlebot/2.1 (+http://www.googlebot.com/bot.html)'));
$this->assertTrue(Rhymix\Framework\UA::isRobot('Yeti/1.0 (NHN Corp.; http://help.naver.com/robots/)'));
$this->assertTrue(Rhymix\Framework\UA::isRobot('Mozilla/5.0 (compatible; MSIE or Firefox mutant; not on Windows server;) Daum 4.1'));
$this->assertTrue(Rhymix\Framework\UA::isRobot('Random user agent (+https://url.com)'));
$this->assertTrue(Rhymix\Framework\UA::isRobot('facebookexternalhit/1.1'));
$this->assertTrue(Rhymix\Framework\UA::isRobot('meta-externalfetcher/1.1'));
@ -49,6 +50,7 @@ class UATest extends \Codeception\Test\Unit
// Not robot
$this->assertFalse(Rhymix\Framework\UA::isRobot('Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5376e Safari/8536.25'));
$this->assertFalse(Rhymix\Framework\UA::isRobot('Mozilla/5.0 (iPad; CPU OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5376e Safari/8536.25'));
$this->assertFalse(Rhymix\Framework\UA::isRobot('Mozilla/5.0 (Linux; Android 15; SM-XXX Build/AAAA; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/143.0.0.0 Mobile Safari/537.36 DaumApps/8.0.0 DaumDevice/mobile'));
$this->assertFalse(Rhymix\Framework\UA::isRobot('Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; AS; rv:11.0) like Gecko'));
}