슬라이드 에디터(lab.xslide.kr)와 메인 사이트(xslide.kr) 간의 템플릿 연동 기능을 구현하기 위한 계획입니다.
User Review Required
IMPORTANT
- 슬라이드 템플릿 데이터를 저장할 때, 각 장의 슬라이드 데이터(애니메이션 포함) 및 썸네일 정보가 상당히 클 수 있습니다. 이를 효율적으로 저장하기 위해
slide_templates라는 새로운 DB 테이블을 추가하고, 상세 정보는 JSON 형태로 저장할 계획입니다. https://xslide.kr/board/templates경로 요청을 기존PostController게시판 로직이 아닌 새로운SlideTemplateController로 연결하여 템플릿 전용 UI를 구현하겠습니다.
Proposed Changes
[Database 변경]
새로운 슬라이드 템플릿용 테이블(slide_templates)과 찜하기 기능용 테이블(slide_template_likes)을 생성합니다.
slide_templates: 템플릿 기본 정보(제목, 설명, 카테고리, Color Style, Screen Mode) 및 슬라이드 전체 데이터(JSON) 보관slide_template_likes: 사용자별 찜하기 데이터 저장용
[Frontend - 슬라이드 에디터 (lab.xslide.kr / htdocs)]
[MODIFY]
- 우측 상단 메뉴(
btn-export-html옆)에 "템플릿 내보내기" 버튼 추가 (최고관리자만 노출되도록 기존 JS 활용). - 템플릿 내보내기 클릭 시 뜨는 모달(Modal) HTML 팝업 마크업 추가.
- 카테고리(Select), 제목(Input), Color Style(Checkbox 다중선택), Screen Mode(Select/Radio), 설명(Textarea).
[NEW] (또는 기존 메인 스크립트 파일 내 작성)
- 모달 열기/닫기 처리 및 폼 제출 이벤트 바인딩.
- 에디터 상의 현재 슬라이드 상태(JSON 형태의 데이터 및 각 장의 썸네일)를 추출하여
xslide.kr의 새로운 API 엔드포인트(api/templates/export)로 POST 전송. - 전송 성공 시 템플릿 등록 완료 알림 추가.
[Backend - 메인 사이트 (xslide.kr)]
[MODIFY]
- 라우터 로직에 아래 엔드포인트 추가:
api/templates/export: 에디터에서 전송된 템플릿 저장 (POST)board/templates: 템플릿 목록 페이지board/templates/view/(\d+): 템플릿 상세 페이지api/templates/like: 찜하기 처리 API
[NEW]
export(): 모달에서 넘겨받은 데이터(카테고리, 메타정보, 슬라이드 데이터)를 DB에 삽입.index(): 카테고리, Color Style, Screen Mode에 따른 검색/필터링을 포함하여 템플릿 목록 렌더링.view($id): 템플릿 상세 정보 및 슬라이드 뷰어 렌더링. 찜하기 기능 및 '내 슬라이드 적용' 액션 제공.toggleLike(): 사용자의 찜하기 설정/해제 처리.
[NEW]
- DB의
slide_templates와slide_template_likes테이블 접근을 위한 모델 클래스. 목록 가져오기, 저장, 필터링 로직 포함.
[NEW] (경로는 설정에 맞게 변경)
/board/templates진입 시 보여질 템플릿 목록 마크업.- 검색 필터 (Color Style, Screen Mode) UI 제공.
- 썸네일 목록 렌더링.
[NEW]
- 선택된 템플릿의 상세 페이지.
- 상단에 메인 슬라이드 뷰어 (가로모드 100%, 세로/정사각형 정비율), 애니메이션 적용 프리뷰.
- 하단에 가로 스크롤형 썸네일 리스트, 클릭 시 상단 메인 뷰어 갱신.
- "내 슬라이드 적용", "찜하기" 버튼 추가 및 동작 JS 구현.
- 내 슬라이드 적용 시
lab.xslide.kr로 템플릿 ID와 함께 리다이렉트(window.open또는location.href).
- 내 슬라이드 적용 시
Verification Plan
Manual Verification
lab.xslide.kr편집기에서 최고관리자로 로그인된 상태인지 확인하고 우측 상단 "템플릿 내보내기" 버튼이 보이는지 확인.- 버튼 클릭 시 모달이 제대로 뜨고 폼 입력 후 전송이 성공적으로 이루어지는지(Network 탭 확인) 테스트.
xslide.kr/board/templates접속 시 방금 등록한 템플릿이 필터와 함께 리스트에 노출되는지 확인.- 상세 보기 페이지에서 썸네일 클릭 시 슬라이드가 잘 변경되고 비율이 정상적으로 유지되는지(가로/세로) 확인.
- "내 슬라이드 적용" 버튼 클릭 시 Confirm 창 후 에디터로 리다이렉트 되는지 확인.
- "찜하기" 버튼 클릭 시 정상적으로 DB에 반영되는지 확인.
데이터베이스: 슬라이드 템플릿과 찜하기 정보를 저장하기 위해 slide_templates, slide_template_likes 테이블을 추가했습니다.
xslide.kr 백엔드/뷰: /api/templates/export 통신을 위한 엔드포인트와 /board/templates, /board/templates/view/(\d+) 목록 및 상세 페이지를 구성했습니다.
목록 페이지 검색 및 상세 페이지 UI: 목록에서 Color Style과 Screen Mode로 검색이 가능하며, 상세 뷰어에서는 스와이프 및 썸네일 클릭 연동이 되도록 비율 처리까지 적용했습니다. "내 슬라이드 적용" 버튼 클릭 시 기존 에디터 창으로 리다이렉트 됩니다.