218 lines
7.6 KiB
PHP
218 lines
7.6 KiB
PHP
|
|
|
|
<!-- <?php if (!empty($errors)): ?>
|
|
<div style="margin:20px; padding:15px; border:1px solid #e00; color:#e00;">
|
|
<strong>오류 발생</strong>
|
|
<ul>
|
|
<?php foreach ($errors as $err): ?>
|
|
<li><?= htmlspecialchars($err) ?></li>
|
|
<?php endforeach ?>
|
|
</ul>
|
|
</div>
|
|
<?php endif; ?> -->
|
|
|
|
<!DOCTYPE html>
|
|
<html lang="ko">
|
|
<head>
|
|
<?php include __DIR__ . "/_head.php"; ?>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>Q&A 게시판 리스트</title>
|
|
|
|
<link rel="stylesheet" href="/kngil/css/qa/font-awesome.min.css?ver=2303229">
|
|
|
|
<!-- 디자인팀 작성 -->
|
|
<script src="/kngil/js/lib/jquery-3.6.1.min.js" type="text/javascript"></script>
|
|
<script src="/kngil/js/qa/jquery.mousewheel.min.js" type="text/javascript"></script>
|
|
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/gsap.min.js"></script>
|
|
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/ScrollTrigger.min.js"></script>
|
|
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/ScrollToPlugin.min.js"></script>
|
|
<link rel="stylesheet" href="https://unpkg.com/aos@2.3.1/dist/aos.css" type="text/css"/>
|
|
<link rel="stylesheet" href="https://unpkg.com/lenis@1.1.9/dist/lenis.css">
|
|
<script src="https://unpkg.com/aos@2.3.1/dist/aos.js"></script>
|
|
<script src="https://unpkg.com/lenis@1.1.9/dist/lenis.min.js"></script>
|
|
|
|
|
|
<!-- CKEditor 5 -->
|
|
<script src="https://cdn.ckeditor.com/ckeditor5/41.0.0/classic/ckeditor.js"></script>
|
|
</head>
|
|
<body>
|
|
|
|
<div class="wrap">
|
|
|
|
<?php
|
|
include __DIR__ . "/_header.php";
|
|
|
|
if (!$isLogin) {
|
|
echo "<script>
|
|
alert('로그인 후 문의 등록이 가능합니다.');
|
|
location.href = '/kngil/skin/qa_list.skin.php';
|
|
</script>";
|
|
exit;
|
|
}
|
|
?>
|
|
|
|
<?php
|
|
include __DIR__ . "/pop_login.php";
|
|
include __DIR__ . "/pop_join.php";
|
|
include __DIR__ . "/pop_agreement.php";
|
|
include __DIR__ . "/pop_mypage01.php";
|
|
include __DIR__ . "/pop_mypage02.php";
|
|
include __DIR__ . "/pop_mypage03.php";
|
|
include __DIR__ . "/pop_password.php";
|
|
include __DIR__ . "/pop_privacy.php";
|
|
include __DIR__ . "/pop_search.php";
|
|
?>
|
|
|
|
<div class="container faq">
|
|
<section class="sub-header">
|
|
<div class="page-title">
|
|
<h2>Q&A</h2>
|
|
<p class="sub-txt">KNGIL 관련 문의하기</p>
|
|
</div>
|
|
<ul class="sub-tab">
|
|
<li><a href="/kngil/skin/faq_list.skin.php">자주하는 질문(FAQ)</a></li>
|
|
<li class="on"><a href="/kngil/bbs/qa_list.php">문의하기(Q&A)</a></li>
|
|
<li><a href="https://939.co.kr/saman/" target="_blank">원격지원</a></li>
|
|
</ul>
|
|
</section>
|
|
<section class="sub-content">
|
|
<h3 class="sub-tit">문의하기(Q&A)</h3>
|
|
<form id="qaForm"
|
|
action="/kngil/bbs/qa_write.php<?= $isEdit ? '?id=' . $post['post_id'] : '' ?>"
|
|
method="POST"
|
|
enctype="multipart/form-data">
|
|
<div class="form-area">
|
|
|
|
<div class="form-group">
|
|
<fieldset class="form-item">
|
|
<label class="form-tit" for="category">구분</label>
|
|
<select class="select-sm" name="category" id="category" required>
|
|
<option value="">-- 선택 --</option>
|
|
<option value="오류문의" <?= ($post['category'] ?? '')=='오류문의' ? 'selected':'' ?>>오류문의</option>
|
|
<option value="개선문의" <?= ($post['category'] ?? '')=='개선문의' ? 'selected':'' ?>>개선문의</option>
|
|
<option value="일반문의" <?= ($post['category'] ?? '')=='일반문의' ? 'selected':'' ?>>일반문의</option>
|
|
<?php if ($isSuperAdmin): ?>
|
|
<option value="공지사항" <?= ($post['category'] ?? '')=='공지사항' ? 'selected':'' ?>>공지사항</option>
|
|
<option value="관리글" <?= ($post['category'] ?? '')=='관리글' ? 'selected':'' ?>>관리글</option>
|
|
<?php endif; ?>
|
|
</select>
|
|
</fieldset>
|
|
</div>
|
|
|
|
<div class="form-item">
|
|
<strong class="form-tit">제목<span class="require">*</span></strong>
|
|
<input type="text" name="title" style="width:100%;" placeholder="제목을 입력하세요" class="input-text" required
|
|
value="<?= htmlspecialchars($post['title'] ?? '', ENT_QUOTES) ?>">
|
|
</div>
|
|
|
|
<div class="form-item">
|
|
<strong class="form-tit">비밀글</strong>
|
|
<label>
|
|
<input type="checkbox" name="secret" value="1"
|
|
<?= ($isEdit && ($post['is_secret'] ?? 'N') === 'Y') ? 'checked' : '' ?>>
|
|
비밀글로 등록
|
|
</label>
|
|
</div>
|
|
|
|
<div class="form-item">
|
|
<label class="form-tit" for="content">내용</label>
|
|
<div class="form-col-group">
|
|
<textarea id="content" name="content" class="text-area"
|
|
placeholder="문의 내용을 작성해주세요"><?= htmlspecialchars($post['content'] ?? '') ?></textarea>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-item">
|
|
<label class="form-tit" for="attach">첨부파일</label>
|
|
<div class="form-col-group">
|
|
<div class="attach-box">
|
|
<input type="file" id="attach" name="attach[]" multiple>
|
|
<small class="info-msg">* 최대 30MB 이내</small>
|
|
</div>
|
|
|
|
<div id="drop-zone" class="drop-zone">
|
|
<p>여기로 파일을 드래그하거나 클릭해서 선택하세요.</p>
|
|
</div>
|
|
|
|
<ul id="file-list"></ul>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
<div class="btn-wrap right">
|
|
<button type="button" class="btn btn-cancel" onclick="history.back()">취소</button>
|
|
<button type="submit" class="btn btn-secondary"><?= $isEdit ? '수정 저장' : '작성완료' ?></button>
|
|
</div>
|
|
<form>
|
|
</section>
|
|
</div>
|
|
|
|
<?php include __DIR__ . "/_footer.php"; ?>
|
|
</div>
|
|
|
|
<script src="/kngil/js/index.js"></script>
|
|
<script src="/kngil/js/mypage.js"></script>
|
|
<script src="/kngil/js/join.js"></script>
|
|
<script type="module" src="/kngil/js/login.js"></script>
|
|
<script src="/kngil/js/login_sms.js"></script>
|
|
|
|
<!-- CKEditor 표시용 초기화 (submit 관여 X) -->
|
|
<script>
|
|
document.addEventListener("DOMContentLoaded", function () {
|
|
ClassicEditor
|
|
.create(document.querySelector('#content'), {
|
|
language: 'ko',
|
|
ckfinder: {
|
|
uploadUrl: '/kngil/bbs/qa_img_upload.php'
|
|
}
|
|
})
|
|
.catch(console.error);
|
|
});
|
|
</script>
|
|
|
|
<!-- 첨부파일 drag UX (submit 관여 X) -->
|
|
<script>
|
|
const dropZone = document.getElementById("drop-zone");
|
|
const fileInput = document.getElementById("attach");
|
|
const fileList = document.getElementById("file-list");
|
|
let uploadFiles = [];
|
|
|
|
if (dropZone) {
|
|
dropZone.addEventListener("click", () => fileInput.click());
|
|
dropZone.addEventListener("dragover", e => { e.preventDefault(); dropZone.classList.add("dragover"); });
|
|
dropZone.addEventListener("dragleave", () => dropZone.classList.remove("dragover"));
|
|
dropZone.addEventListener("drop", e => {
|
|
e.preventDefault();
|
|
dropZone.classList.remove("dragover");
|
|
addFiles(e.dataTransfer.files);
|
|
});
|
|
}
|
|
|
|
fileInput.addEventListener("change", () => addFiles(fileInput.files));
|
|
|
|
function addFiles(files) {
|
|
for (const f of files) uploadFiles.push(f);
|
|
render();
|
|
sync();
|
|
}
|
|
|
|
function render() {
|
|
fileList.innerHTML = "";
|
|
uploadFiles.forEach(f => {
|
|
const li = document.createElement("li");
|
|
li.textContent = `${f.name} (${(f.size/1024).toFixed(1)} KB)`;
|
|
fileList.appendChild(li);
|
|
});
|
|
}
|
|
|
|
function sync() {
|
|
const dt = new DataTransfer();
|
|
uploadFiles.forEach(f => dt.items.add(f));
|
|
fileInput.files = dt.files;
|
|
}
|
|
</script>
|
|
|
|
</body>
|
|
</html>
|