71 lines
2.6 KiB
Plaintext
71 lines
2.6 KiB
Plaintext
<!doctype html>
|
|
<html lang="ko">
|
|
<head>
|
|
<meta charset="utf-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
<title>관리자 대시보드</title>
|
|
<link rel="stylesheet" href="/static/styles.css" />
|
|
</head>
|
|
<body class="siteBody">
|
|
<%- include('../partials/navbar', { userId }) %>
|
|
|
|
<main class="pageWrap">
|
|
<section class="toolbar">
|
|
<form method="post" action="/op/dashboard/packs">
|
|
<button class="primaryButton" type="submit">서버팩 추가</button>
|
|
</form>
|
|
<form method="post" action="/op/dashboard/packs/delete" class="deleteForm" data-delete-form>
|
|
<div class="deleteToolbar">
|
|
<button class="dangerButton" type="button" data-delete-toggle>서버팩 삭제</button>
|
|
<div class="deleteActions hidden" data-delete-actions>
|
|
<button class="ghostButton" type="button" data-delete-cancel>취소</button>
|
|
<button class="dangerButton" type="submit">확인</button>
|
|
</div>
|
|
</div>
|
|
<div class="cardRow">
|
|
<% packs.forEach((pack) => { %>
|
|
<label class="packCard selectableCard">
|
|
<input class="selectionBox hidden" type="checkbox" name="packKeys" value="<%= pack.file %>" />
|
|
<span class="selectionTitle"><%= pack.name %></span>
|
|
<span><code><%= pack.file %></code></span>
|
|
<% if (!pack.registered) { %>
|
|
<span class="warningBadge">manifest.json 미등록</span>
|
|
<% } %>
|
|
<a class="ghostLink" href="/op/dashboard/<%= pack.file %>">편집</a>
|
|
</label>
|
|
<% }) %>
|
|
</div>
|
|
</form>
|
|
</section>
|
|
</main>
|
|
<script>
|
|
(() => {
|
|
const form = document.querySelector('[data-delete-form]')
|
|
if (form == null) {
|
|
return
|
|
}
|
|
|
|
const toggleButton = form.querySelector('[data-delete-toggle]')
|
|
const cancelButton = form.querySelector('[data-delete-cancel]')
|
|
const actions = form.querySelector('[data-delete-actions]')
|
|
const checkboxes = form.querySelectorAll('.selectionBox')
|
|
|
|
const setDeleteMode = (enabled) => {
|
|
form.classList.toggle('deleteMode', enabled)
|
|
actions.classList.toggle('hidden', !enabled)
|
|
checkboxes.forEach((checkbox) => {
|
|
checkbox.classList.toggle('hidden', !enabled)
|
|
if (!enabled) {
|
|
checkbox.checked = false
|
|
}
|
|
})
|
|
}
|
|
|
|
toggleButton?.addEventListener('click', () => setDeleteMode(true))
|
|
cancelButton?.addEventListener('click', () => setDeleteMode(false))
|
|
setDeleteMode(false)
|
|
})()
|
|
</script>
|
|
</body>
|
|
</html>
|