Merge branch 'rhymix:master' into master

This commit is contained in:
Lastorder 2025-05-14 18:42:06 +09:00 committed by GitHub
commit 0739f82c49
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
28 changed files with 160 additions and 58 deletions

View file

@ -28,6 +28,7 @@ a img {
} @else {
word-break: $default_word_break;
word-wrap: break-word;
overflow-wrap: anywhere;
}
p {
margin: 0 0 $default_paragraph_spacing 0;

View file

@ -30,6 +30,7 @@ return array(
'homepage' => true,
'multidomain' => true,
'seo' => true,
'syndication' => true,
'trackback' => true,
),

View file

@ -453,8 +453,8 @@ class Formatter
}
if ($import_type === 'scss')
{
$import_content = preg_replace('!//.*?\n!s', '', $import_content);
$import_content = preg_replace('![\r\n]+!', ' ', $import_content);
$import_content = preg_replace('@(?<!:)//.*?\n@s', '', $import_content);
$import_content = preg_replace('@[\r\n]@', ' ', $import_content);
}
return trim($import_content);
}, $content);

View file

@ -91,7 +91,11 @@ class HTTP
$target_dir = dirname($target_filename);
if (!Storage::isDirectory($target_dir) && !Storage::createDirectory($target_dir))
{
return false;
return new Helpers\HTTPHelper(new Exception('Cannot create directory: ' . $target_dir));
}
if (!Storage::isWritable($target_dir) && (!Storage::exists($target_filename) || !Storage::isWritable($target_filename)))
{
return new Helpers\HTTPHelper(new Exception('No permission to write file: ' . $target_filename));
}
// Pass to request() with appropriate settings for the filename.

View file

@ -205,6 +205,7 @@
var menu_id = params.menu_id;
var menus = ret_obj.menus;
var html = "";
var isMobile = navigator.userAgent.match(/mobile/i);
if(this.loaded_popup_menus[menu_id]) {
html = this.loaded_popup_menus[menu_id];
@ -234,7 +235,11 @@
var matches = [];
/* if(icon) styleText = " style=\"background-image:url('"+icon+"')\" "; */
if (target === 'popup') {
click_str = 'onclick="popopen(this.href, \''+target+'\'); return false;"';
if (isMobile) {
click_str = 'onclick="openFullScreenIframe(this.href, \''+target+'\'); return false;"';
} else {
click_str = 'onclick="popopen(this.href, \''+target+'\'); return false;"';
}
classText += 'popup ';
} else if (target === 'javascript') {
click_str = 'onclick="'+url+'; return false; "';
@ -737,6 +742,23 @@ function zbxe_folder_close(id) {
jQuery("#folder_"+id).hide();
}
/**
* 팝업창 대신 전체 화면 iframe을 띄우는 함수
*/
function openFullScreenIframe(url, target) {
const iframe = document.createElement('iframe');
const iframe_sequence = String(Date.now()) + Math.round(Math.random() * 1000000);
iframe.setAttribute('id', '_rx_iframe_' + iframe_sequence);
iframe.setAttribute('name', target || ('_rx_iframe_' + iframe_sequence))
iframe.setAttribute('src', url + '&iframe_sequence=' + iframe_sequence);
iframe.setAttribute('width', '100%');
iframe.setAttribute('height', '100%');
iframe.setAttribute('frameborder', '0');
iframe.setAttribute('scrolling', 'no');
iframe.setAttribute('style', 'position:fixed; top:0; left:0; width:100%; height:100%; z-index:999999999; background-color: #fff; overflow-y:auto');
$(document.body).append(iframe);
}
/**
* @brief 팝업의 경우 내용에 맞춰 윈도우의 크기를 조절해줌
* 팝업의 내용에 맞게 크기를 늘리는 것은... 쉽게 되지는 않음.. .
@ -930,7 +952,12 @@ var objForSavedDoc = null;
function doDocumentLoad(obj) {
// 저장된 게시글 목록 불러오기
objForSavedDoc = obj.form;
popopen(request_uri.setQuery('module','document').setQuery('act','dispTempSavedList'));
var popup_url = request_uri.setQuery('module','document').setQuery('act','dispTempSavedList');
if (navigator.userAgent.match(/mobile/i)) {
openFullScreenIframe(popup_url);
} else {
popopen(popup_url);
}
}
/* 저장된 게시글의 선택 */
@ -940,7 +967,7 @@ function doDocumentSelect(document_srl, module) {
return;
}
if(module===undefined) {
if(module === undefined) {
module = 'document';
}
@ -961,7 +988,7 @@ function doDocumentSelect(document_srl, module) {
opener.location.href = url;
break;
default :
opener.location.href = opener.current_url.setQuery('document_srl', document_srl).setQuery('act', 'dispBoardWrite');
opener.location.href = opener.current_url.setQuery('act', 'dispBoardWrite').setQuery('document_srl', document_srl);
break;
}
window.close();

View file

@ -1,12 +1,41 @@
@version(2)
@load('../../modules/admin/tpl/css/admin.bootstrap.css')
@load('../../modules/admin/tpl/css/admin.css')
<div class="x popup">
{!! $content !!}
</div>
<script>
jQuery(function() {
setTimeout(setFixedPopupSize, 500);
});
var _isPoped = true;
</script>
@if (isset($iframe_sequence) && preg_match('/^\w+$/', $iframe_sequence))
<script>
const iframe_sequence = '{{ $iframe_sequence }}';
window.opener = window.parent;
window.close = function() {
const iframe = parent.document.getElementById('_rx_iframe_' + iframe_sequence);
if (iframe) {
iframe.remove();
}
};
</script>
<style>
.x.popup {
width: 100vw; height: 100vh;
display: flex; flex-direction: column;
}
.x.popup > form {
width: 100vw; height: 100vh;
display: flex; flex-direction: column;
margin: 0 !important;
}
.x_modal-header { flex: 0 0 auto; }
.x_modal-body { flex: 1; overflow: scroll; }
.x_modal-footer { padding-bottom: 24px !important; }
</style>
@else
<script>
jQuery(function() {
setTimeout(setFixedPopupSize, 500);
});
var _isPoped = true;
</script>
@endif