109 lines
4.8 KiB
PHP
109 lines
4.8 KiB
PHP
<?php
|
|
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
|
|
|
|
// 💡 [핵심 수정] 이 스킨 파일이 직접 팝업 데이터를 가져오도록 DB 조회 로직을 추가합니다.
|
|
// 이 로직은 head.php에서 이 파일을 include 하기 전에 $result 변수를 준비합니다.
|
|
if (!defined('_SHOP_')) {
|
|
$pop_division = 'comm';
|
|
} else {
|
|
$pop_division = 'shop';
|
|
}
|
|
|
|
$sql = " SELECT * FROM {$g5['new_win_table']}
|
|
WHERE '".G5_TIME_YMDHIS."' BETWEEN nw_begin_time AND nw_end_time
|
|
AND nw_device IN ( 'both', 'pc' )
|
|
AND nw_division IN ( 'both', '{$pop_division}' )
|
|
ORDER BY nw_id ASC ";
|
|
|
|
$result = sql_query($sql, false);
|
|
|
|
|
|
// 이 스킨의 CSS 파일을 불러옵니다.
|
|
add_stylesheet('<link rel="stylesheet" href="'.G5_THEME_URL.'/skin/newwin/modal/style.css?ver='.G5_CSS_VER.'">', 0);
|
|
|
|
// 💡 [핵심] 표시할 팝업이 있는지 먼저 확인합니다.
|
|
$popups_to_show = [];
|
|
// 💡 [안정성] sql_query()가 실패할 경우를 대비하여 $result가 유효한지 확인합니다.
|
|
if ($result) {
|
|
while ($nw = sql_fetch_array($result)) {
|
|
// 쿠키가 설정된 팝업은 건너뜁니다.
|
|
if (isset($_COOKIE["rb_newwin_{$nw['nw_id']}"]) && $_COOKIE["rb_newwin_{$nw['nw_id']}"]) {
|
|
continue;
|
|
}
|
|
$popups_to_show[] = $nw;
|
|
}
|
|
}
|
|
$popup_count = count($popups_to_show);
|
|
?>
|
|
|
|
<?php if ($popup_count > 0): // 💡 표시할 팝업이 1개 이상일 때만 전체 구조를 출력합니다. ?>
|
|
<!-- 팝업레이어 시작 -->
|
|
<!-- 💡 [접근성 개선] role과 aria 속성을 추가하여 스크린 리더 사용자에게 더 나은 경험을 제공합니다. -->
|
|
<div id="rb_newwin_modal_wrapper" class="rb-modal-overlay" role="dialog" aria-modal="true">
|
|
<div class="rb-modal-grid-container">
|
|
<?php
|
|
foreach ($popups_to_show as $nw) {
|
|
?>
|
|
<div id="rb_newwin_<?php echo $nw['nw_id'] ?>" class="rb-modal-card">
|
|
<div class="rb-modal-content" style="width:<?php echo (int)$nw['nw_width'] ?>px;">
|
|
<!-- 💡 [접근성 개선] aria-label을 추가하여 버튼의 역할을 명확히 합니다. -->
|
|
<button type="button" class="rb-modal-close" data-nw-id="<?php echo $nw['nw_id']; ?>" aria-label="팝업 닫기">×</button>
|
|
|
|
<div class="rb-modal-body" style="height:<?php echo (int)$nw['nw_height'] ?>px;">
|
|
<div class="rb-modal-body-inner">
|
|
<?php echo conv_content($nw['nw_content'], 1); ?>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="rb-modal-footer">
|
|
<button type="button" class="rb-modal-reject" data-nw-id="<?php echo $nw['nw_id']; ?>" data-hours="<?php echo (int)$nw['nw_disable_hours']; ?>">
|
|
<strong><?php echo (int)$nw['nw_disable_hours']; ?></strong>시간 동안 보지 않기
|
|
</button>
|
|
<button type="button" class="rb-modal-close" data-nw-id="<?php echo $nw['nw_id']; ?>">닫기</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<?php
|
|
} // end foreach
|
|
?>
|
|
</div>
|
|
</div>
|
|
|
|
<script>
|
|
jQuery(function($) {
|
|
const $wrapper = $("#rb_newwin_modal_wrapper");
|
|
|
|
/**
|
|
* 💡 [리팩토링] 팝업 카드를 닫는 공통 함수
|
|
* @param {string} nw_id - 닫을 팝업의 ID
|
|
*/
|
|
function closePopupCard(nw_id) {
|
|
const $card = $("#rb_newwin_" + nw_id);
|
|
$card.fadeOut(300, function() {
|
|
// 카드가 사라진 후, 보이는 카드가 없으면 전체 오버레이를 닫습니다.
|
|
if ($wrapper.find('.rb-modal-card:visible').length === 0) {
|
|
$wrapper.fadeOut();
|
|
}
|
|
});
|
|
}
|
|
|
|
// "n시간 동안 보지 않기" 버튼 클릭 시
|
|
$wrapper.on("click", ".rb-modal-reject", function() {
|
|
const nw_id = $(this).data("nw-id");
|
|
const hours = parseInt($(this).data("hours"), 10);
|
|
|
|
if (hours > 0) {
|
|
set_cookie("rb_newwin_" + nw_id, 1, hours, g5_cookie_domain);
|
|
}
|
|
closePopupCard(nw_id); // 💡 공통 함수 호출
|
|
});
|
|
|
|
// "닫기" 버튼 클릭 시 (이벤트 위임 사용)
|
|
$wrapper.on("click", ".rb-modal-close", function() {
|
|
const nw_id = $(this).data("nw-id");
|
|
closePopupCard(nw_id); // 💡 공통 함수 호출
|
|
});
|
|
});
|
|
</script>
|
|
<!-- 팝업레이어 끝 -->
|
|
<?php endif; ?>
|