코어 디렉토리: config, extend, js, data
코어의 네 영역이 맡는 책임과 변경·백업 경계를 정리합니다.
코어 디렉토리
/config
extend.php: ABI 2 런타임 포인터, 엔드포인트 포워딩, 확장·플러그인·locale 루트와 캐시를 관리한다.t2_config.php: 설치 경로와 URL, 공개 데이터·DB·비공개 루트, 허용 URL과 iframe 도메인을 정의한다.upload_config.php: 업로드 크기, MIME·파일 시그니처, 이미지 픽셀 수, Origin과 호스트 어댑터를 검증한다.t2_storage.php: 데이터 구조를 준비·이전하고 공개 영역의 실행 파일을 제거하거나 접근을 차단한다.t2_private_store.php: 404 래퍼가 붙은 PHP 상태 파일을 원자적으로 읽고 쓴다.t2_i18n_loader.php: 코어·Extend·플러그인 번역을 namespace 단위로 합치고 동적 또는 세대별 캐시로 제공한다.
그누보드5 분기는 실제 T2Editor 경로가 G5_PLUGIN_PATH 아래인지 realpath()로 확인된 경우에만 사용한다. 라이믹스와 독립 환경은 BASIC 경로 계산을 사용하지만 라이믹스의 렌더링·업로드는 별도 어댑터가 처리한다.
/extend
/extend/php: 서버 전역 정책과 호스트 브릿지. 파일 머리의@t2-scope로 요청 범위를 제한할 수 있다./extend/js,/extend/css: 모든 에디터 인스턴스에 추가할 전역 자산./extend/locales: 코어 문자열을 보완하는 전역 번역 overlay.
동일 이름의 확장은 base(10), 선택 runtime(20), data 설치(30), 허용된 override(40) 우선순위로 선택된다. 첫 실행 보안 게이트처럼 base에 고정된 파일은 제3자 override가 대체하지 못한다.
/js
core.js:T2Editor인스턴스, 명령, 저장·복원 훅과 플러그인 로딩.document-model.js: 문서 상태와 블록 모델.format-engine.js: 인라인·블록 포맷 처리.hooks.js: submit, restore 같은 생명주기 훅 레지스트리.toolbar.js:button.json을 바탕으로 UI를 구성한다.utils.js: URL·업로드·라이믹스 결과 정규화 등 공통 도구.rhymix.js: 라이믹스 실제 폼, 다중 인스턴스, 임시저장과 첨부 UI 연결.
button.json은 버튼 선언이며 플러그인 활성 등록을 대신하지 않는다.
/data
독립 환경의 기본 공개 루트는 <T2Editor>/data, 상태 루트는 data/t2editor_db, 비공개 루트는 data/t2editor_db/t2admin-private다. 그누보드5에서는 공개 루트가 G5_DATA_PATH/editor로 이동한다. 라이믹스 첨부 미디어는 T2Editor 로컬 업로드 폴더가 아니라 파일 모듈과 files 테이블의 수명을 따른다.
운영 백업에는 DB 상태, 비공개 관리자·마켓 파일과 실제 호스트 첨부파일을 포함하되, 배포 ZIP에는 세션·비밀번호·업로드·캐시·백업을 넣지 않는다.