개발일지 - 관리자 모드 (게시글 관리) 업데이트
개발일지 · 2026.03.30 · 조회 3
이제 10번째 개발일지 - 관리자 모드(게시글 관리) 업데이트
관리자 페이지에서 게시글 리스트를 볼 수 있도록 게시글이 표시되는 페이지를 만들었습니다.
첫번째 기능은 "보기" 버튼을 누르면 전체 보기와 카테고리 목록이 나오고 카테고리별로 리스트업 되도록 하는 기능을 추가 했습니다.
<script>
// 필터 메뉴(보기 버튼 클릭 시 열리는 드롭다운)를 토글하는 함수
function toggleFilterMenu() {
// id="filterMenu" 요소 가져오기
const menu = document.getElementById("filterMenu");
// 'show' 클래스를 토글
// → 있으면 제거(닫힘), 없으면 추가(열림)
menu.classList.toggle("show");
}
// 문서 전체에 클릭 이벤트 리스너 등록
// → 메뉴 외부 클릭 시 자동으로 닫히게 하기 위한 UX 처리
document.addEventListener("click", function(e) {
// 필터 메뉴 요소
const menu = document.getElementById("filterMenu");
// 메뉴를 여는 버튼 요소 (보기 버튼)
const toggle = document.querySelector(".view-label");
// 조건 체크
// 1. menu와 toggle이 존재해야 하고
// 2. 클릭한 대상(e.target)이
// - 메뉴 내부도 아니고
// - 토글 버튼도 아닐 경우
if (
menu &&
toggle &&
!menu.contains(e.target) && // 메뉴 바깥 클릭
!toggle.contains(e.target) // 버튼 바깥 클릭
) {
// 메뉴를 닫기 위해 'show' 클래스 제거
menu.classList.remove("show");
}
});
</script>
.filter-menu {
display: none;
position: absolute;
top: 30px;
right: 0;
width: 260px;
background: #fff;
border: 1px solid #d9dde3;
border-radius: 16px;
box-shadow: 0 12px 24px rgba(15, 23, 42, 0.08);
padding: 18px;
z-index: 20;
}
.filter-menu.show {
display: block;
}
.filter-section + .filter-section {
margin-top: 18px;
padding-top: 18px;
border-top: 1px solid #f1f5f9;
}
.filter-title {
margin: 0 0 10px;
font-size: 14px;
font-weight: 700;
color: #6b7280;
}
.filter-menu a {
display: block;
padding: 7px 2px;
font-size: 15px;
color: #111827;
text-decoration: none;
border-radius: 8px;
}
.filter-menu a:hover {
color: #2563eb;
background: #f8fafc;
}스크립트에서 보기 버튼 클릭 시 열리는 드롭다운 토글 함수를 만들어 css에서 호출을 하는 기능
그리고 각각 게시글에 마우스를 가져다 대면 오른쪽에 "수정", "삭제", "공개, 보호, 비공개" 설정을 하도록 하는 버튼을 만들어서 .hover를 이용해 마우스가 위치한 게시글에만 표시되도록 만들었습니다. css 적용
.post-actions {
display: flex;
align-items: center;
gap: 8px;
opacity: 0;
visibility: hidden;
transform: translateX(8px);
transition: all 0.2s ease;
flex-shrink: 0;
}
.post-manage-row:hover .post-actions {
opacity: 1;
visibility: visible;
transform: translateX(0);
}공개, 보류, 비공개 부분은 게시글 테이블에 visibility 를 추가해 기본값 public 공개로 설정하고 이후 보류, 비공개 등을 통해서 노출 제한을 하도록 설정했습니다.
기존 메인화면에서의 게시글은 모든 글이 표시되도록 되어있었는데 현재는 visibility 값이 public인 값만 출력되도록 수정했습니다. 게시글이 더 늘어나게 되면서 나중에 비공개 글로의 전환을 쉽게 하기 위해서 사전에 미리 만들어둔 기능입니다.
글에 대한 수정, 삭제는 버튼은 만들어 두었지만 아직 기능은 없는 상태여서.. 앞으로의 작업은 글쓰기 화면에 기능을 조금 더 추가하고 특히 썸네일 관련 기능을 수정하고 글 수정 기능과 삭제기능을 추가 할 예정입니다.