첨부파일에 다운로드 유효기간을 적용할 수 있게 변경해봤습니다.
여분필드를 이용해서 숫자를 입력해주면 됩니다.
wirte.skin.php
[code]
<?php if ($is_admin) { // 관리자만 보이도록 설정 ?>
<tr>
<th scope="row">다운로드 유효기간 (일)</th>
<td>
<input type="number" name="wr_1" value="<?php echo isset($write['wr_1']) ? $write['wr_1'] : '365'; ?>" class="frm_input" size="10"> 일
<p class="frm_info">기본값: 365일 (비워두면 기본값 적용)</p>
</td>
</tr>
<?php } else { ?>
<input type="hidden" name="wr_1" value="<?php echo isset($write['wr_1']) ? $write['wr_1'] : '365'; ?>">
<?php } ?>
[/code]
view.skin.php
첨부파일 부분 교체 157라인
[code]
<?php
// 가변 파일
for ($i=0; $i<count($view['file']); $i++) {
if (isset($view['file'][$i]['source']) && $view['file'][$i]['source'] && !$view['file'][$i]['view']) {
// 첨부파일 정보
$file = $view['file'][$i];
$file_name = $file['source'];
$file_url = $file['href'];
$file_size = $file['size'];
$download_count = $file['download'];
$upload_date = strtotime($file['datetime']); // 업로드 날짜
// 여분필드1에서 유효기간(일) 가져오기 (기본값: 365일)
$expire_days = isset($write['wr_1']) && is_numeric($write['wr_1']) ? intval($write['wr_1']) : 365;
$expire_date = strtotime("+{$expire_days} days", $upload_date); // 설정된 기간 후 만료
$remaining_days = ceil(($expire_date - time()) / 86400); // 남은 일수 계산
// 툴팁 메시지 설정
if ($remaining_days > 0) {
$tooltip = "다운로드 유효기간이 {$remaining_days}일 남았습니다.";
} else {
$tooltip = "다운로드 기간이 만료되었습니다.";
}
// 다운로드 가능 여부 설정
$disabled_class = ($remaining_days <= 0) ? 'disabled-link' : '';
$disabled_attr = ($remaining_days <= 0) ? 'style="pointer-events: none; color: gray;"' : '';
?>
<li>
<i class="fa fa-folder-open" aria-hidden="true"></i>
<a href="<?php echo ($remaining_days > 0) ? $file_url : '#'; ?>"
class="view_file_download <?php echo $disabled_class; ?>"
data-tooltip="<?php echo $tooltip; ?>"
<?php echo $disabled_attr; ?>>
<strong><?php echo $file_name; ?></strong> <?php echo $file['content']; ?> (<?php echo $file_size; ?>)
</a>
<br>
<span class="bo_v_file_cnt">
<?php echo $download_count; ?>회 다운로드 | DATE : <?php echo $file['datetime']; ?>
</span>
</li>
<?php
}
}
?>
[/code]
하단에 Javascript 추가
[code]
document.addEventListener("DOMContentLoaded", function () {
const fileLinks = document.querySelectorAll(".view_file_download");
fileLinks.forEach(link => {
link.addEventListener("mouseover", function () {
const tooltipText = this.getAttribute("data-tooltip");
this.setAttribute("title", tooltipText);
});
});
});
[/code]
style.css 끝에 추가
[code]
/* 파일 다운로드 CSS */
.view_file_download {
position: relative;
text-decoration: none;
color: #0078ff;
cursor: pointer;
}
.view_file_download:hover::after {
content: attr(data-tooltip);
position: absolute;
left: 50%;
bottom: 120%;
transform: translateX(-50%);
background-color: rgba(0, 0, 0, 0.8);
color: #fff;
padding: 5px 10px;
border-radius: 5px;
white-space: nowrap;
font-size: 12px;
z-index: 10;
}
.disabled-link {
color: gray !important;
pointer-events: none;
}
[/code]
게시글 목록
| 번호 | 제목 |
|---|---|
| 23966 | |
| 23963 | |
| 23953 | |
| 23949 | |
| 23938 | |
| 23935 | |
| 23933 | |
| 23928 | |
| 23919 | |
| 23918 | |
| 23917 | |
| 23910 | |
| 23902 | |
| 23901 | |
| 23897 | |
| 23894 | |
| 23893 | |
| 23891 | |
| 23885 | |
| 23872 | |
| 23870 | |
| 23862 | |
| 23859 | |
| 23853 | |
| 23845 | |
| 23838 | |
| 23827 | |
| 23819 | |
| 23805 | |
| 23801 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기