JJ-basic — GNUBOARD Write Skin (jj_basic)
Version : 25.08.31
Date    : 2025-08-31
Author  : JEILJOA (https://jeiljoa.com)
Folder  : /skin/board/jj_basic

────────────────────────────────────────────────────────
개요
────────────────────────────────────────────────────────
JJ-basic은 “그누보드 기본 디자인”을 유지하면서 파일 첨부 UX를 강화한 쓰기 스킨입니다.
- 파일칸(슬롯) 고정 + 빈칸 보존
- DB의 bf_no와 동일한 “번호 배지” 표기
- 열린 모든 슬롯에 −(접기/삭제), 마지막 열린 슬롯에만 +(추가)
- 기존 파일의 삭제 체크를 “파일명 옆”으로 이동
- 이미지 선택 즉시 썸네일 미리보기 + ALT 자동 채움
- 모바일에서 ALT 칸 선택적 자동 숨김(게시판 옵션 연동)
- 링크 입력 행 동적 추가/삭제(+/−), wr_linkN 자동 재번호
- 접근성(a11y)·Safari 표시 안정화 보강

※ 디자인(타이포/여백/버튼 룩앤필)은 기본 스킨 감각을 최대한 유지합니다.

────────────────────────────────────────────────────────
설치
────────────────────────────────────────────────────────
1) 아래 구조로 업로드
/skin/board/jj_basic/
  ├─ img/                                  # 기존 이미지 디렉토리
  ├─ write.skin.php                   # JJ-basic 핵심
  ├─ write.custom.js                 # JJ-basic 핵심
  ├─ write.custom.css              # JJ-basic 핵심
  ├─ view_comment.skin.php
  ├─ view-typography.css       # 추가: 뷰 타이포 전용 CSS
  ├─ view.skin.php
  ├─ list.skin.php
  ├─ style.css
  ├─ README.txt
  └─ LICENSE.txt

2) 관리자 > 게시판관리 > 스킨 선택
   - 스킨명: jj_basic   (폴더명과 정확히 동일)

3) 캐시/버전쿼리 확인
   - write.skin.php 내부에서 JS/CSS를 ?ver=25.08.31 형태로 로드
   - 수정 후 숫자만 올려도 캐시가 즉시 갱신됩니다.

4) (선택) 폰트어썸
   - 본 스킨은 아이콘 표시를 위해 CDN(6.5.x)을 사용합니다.
   - 사내망/폐쇄망이면 로컬로 교체해 주세요.

────────────────────────────────────────────────────────
동작 요약
────────────────────────────────────────────────────────
- 파일 첨부
  • 1..N 슬롯을 DOM에 고정 생성합니다.
  • 수정 모드: 저장돼 있던 슬롯은 자동으로 펼치고, 가장 작은 미사용 슬롯 1칸을 추가로 펼칩니다.
  • 신규 글: 1번 슬롯만 기본으로 펼칩니다.
  • 1번 슬롯은 빈칸일 때 − 비활성(실수 방지), 사용 중이면 삭제 확인 후 정리합니다.
  • 번호 배지는 실제 슬롯 번호(bf_no+1)를 표시하며, “첨부/변경” 버튼 오른쪽에 노출됩니다.
  • 기존 파일 삭제 체크는 파일명 오른쪽으로 이동했습니다.

- 링크 입력
  • wr_linkN은 +/−로 행을 동적 추가/삭제하며, 내부적으로 번호를 다시 붙입니다.
  • 최대 개수는 게시판 설정(G5_LINK_COUNT)을 따릅니다.

- ALT(파일 설명)
  • 이미지 선택 시 썸네일 즉시 표시, ALT 미입력 시 파일명(확장자 제외) 자동 채움.
  • 게시판 옵션(파일 설명 미사용)인 경우, 모바일에서만 ALT 칸을 자동 숨김.

────────────────────────────────────────────────────────
옵션/의존 항목
────────────────────────────────────────────────────────
- 파일 최대 개수: 게시판 설정의 file_count
- 링크 최대 개수: G5_LINK_COUNT
- 파일 설명 사용여부: is_file_content
- 에디터/자동저장/캡챠: 그누보드 기본 스크립트 사용

────────────────────────────────────────────────────────
호환/주의
────────────────────────────────────────────────────────
- 서버의 경로/파일 시스템은 대소문자를 구분할 수 있습니다.
  폴더명은 반드시 소문자+언더스코어: jj_basic
- 일부 레거시 플러그인이 폴더명에 하이픈(-)을 허용하지 않는 경우가 있어
  언더스코어 네이밍을 채택했습니다.
- write.skin.php 하단에는 “화면 비표시 라이선스 표기”가 포함되어 있으며,
  라이선스/카피라이트는 삭제 금지입니다. (자세한 내용은 LICENSE.txt)

────────────────────────────────────────────────────────
업데이트
────────────────────────────────────────────────────────
1) 기존 폴더 백업(/skin/board/jj_basic)
2) 새 파일 덮어쓰기
3) JS/CSS 버전쿼리 갱신(?ver=YY.MM.DD)
4) 브라우저 강력 새로고침(Ctrl/Cmd+Shift+R)

────────────────────────────────────────────────────────
문제해결(FAQ)
────────────────────────────────────────────────────────
Q. “스킨을 선택했는데 버튼/아이콘이 안 보입니다.”
A. 캐시를 비워주고(?ver= 갱신), 폰트어썸 로드 여부를 확인하세요.

Q. “파일칸이 하나도 보이지 않습니다.”
A. 게시판의 file_count가 0이면 파일 섹션이 출력되지 않습니다.

Q. “모바일에서 ALT 칸이 사라졌습니다.”
A. 게시판 옵션에서 파일 설명을 비활성화하면 모바일에서 ALT 칸이 숨겨집니다(의도된 동작).

Q. “번호 배지가 브라우저마다 다르게 보입니다.”
A. write.custom.css의 .file-idx-badge(고정 line-height/inline-block)를 임의 변경하지 마세요.

────────────────────────────────────────────────────────
라이선스
────────────────────────────────────────────────────────
- Free to use (개인/상업) + 출처 고지 필수
- 본문/헤더의 라이선스/카피라이트 절대 삭제 금지
- 재판매/유료 재배포 금지, 2차 라이선스 변경 금지
- 자세한 약관은 LICENSE.txt를 참조하세요.

────────────────────────────────────────────────────────
문의/출처
────────────────────────────────────────────────────────
JEILJOA — https://jeiljoa.com
