테스트 사이트 - 개발 중인 베타 버전입니다

첨부파일 다운로드 유효기간 적용하기

· 8개월 전 · 497 · 2

첨부파일에 다운로드 유효기간을 적용할 수 있게 변경해봤습니다.

여분필드를 이용해서 숫자를 입력해주면 됩니다.

 

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]

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

댓글 2개

8개월 전

감사합니다 ^^

8개월 전

감사합니다 

게시글 목록

번호 제목
23254
23244
23241
23236
23200
23199
23179
23174
23138
23128
23125
23116
23109
23099
23092
23083
23079
23063
23050
23036
23029
23007
23003
22983
22959
22943
22939
22934
22905
22897