에디터 전반 구조와 논리 흐름
불변 진입점, 선택 런타임, 호스트 어댑터, 브라우저 코어와 저장 경계를 연결해 설명합니다.
에디터 전반 구조와 논리 흐름
T2Editor 10.4.0은 불변 진입점, 교체 가능한 런타임, 확장 계층, 운영 데이터를 분리한다. 그누보드5·라이믹스·독립 환경의 차이는 코어 복제보다 호스트 통합 계층에서 흡수한다.
기본 뼈대
t2editor/
├─ editor.lib.php # 공개·근본 진입점, Extend 부트스트랩 호출
├─ editor.core.php # base 런타임 구현과 기본 플러그인 배열
├─ editor.html # 라이믹스 에디터 스킨 템플릿
├─ config.blade.php # 라이믹스 인스턴스 설정 어댑터
├─ run.php # manifest가 허용한 플러그인 PHP 엔트리 실행
├─ config/ # 경로·저장소·업로드·i18n·런타임 라우팅
├─ js/ # 브라우저 코어, 모델, 포맷, 툴바, 호스트 브릿지
├─ plugin/ # 블록·도구 플러그인
├─ extend/ # 전역 PHP·JS·CSS·locale 확장
├─ locales/ # 코어 번역 원본
├─ admin/ # 로컬 관리자, 업데이트, 마켓 API
├─ vendor/ # 외부 라이브러리
└─ data/ # 실행 중 생성되는 공개·비공개 상태
서버 부트스트랩
- 그누보드5·독립 환경은
editor.lib.php를 호출한다. 라이믹스는editor.html과config.blade.php를 거쳐 같은 진입점을 호출한다. editor.lib.php가config/extend.php를 불러t2_extend_bootstrap_editor(__FILE__)를 실행한다.- Extend가 비공개
runtime.php포인터를 검증한다. 선택 런타임이 없거나 유효하지 않으면 base 런타임으로 폴백한다. - 선택된
<runtime>/editor.core.php를 실행한다. 이 파일이 설정, 플러그인 배열, 렌더링 함수와 클라이언트 자산을 준비한다. /extend/php는 요청 범위bootstrap,editor,admin,endpoint에 따라 한 번씩 로드된다.- 브라우저에서
T2Editor인스턴스가 모델·포맷·툴바를 연결하고 등록된 플러그인 자산을 우선순위에 따라 로드한다.
공개 계약과 물리적 구현
플러그인 등록의 가장 근본적인 공개 계약은 editor.lib.php 진입점이다. 다만 10.4.0 ABI 2 배포본에서 이 파일은 짧은 불변 래퍼이고, 번들 기본값 $T2EDITOR_PLUGINS와 $T2EDITOR_PLUGIN_PRIORITY의 물리적 선언은 editor.core.php에 있다. 문서와 유지보수에서는 둘을 구분한다.
- 호출자·호스트가 의존할 파일:
editor.lib.php - base 배포본의 기본 플러그인 목록을 정의한 파일:
editor.core.php - 운영 중 활성 목록을 주입하는 계층:
/extend/php/t2admin_settings_loader.php와 비공개admin_settings.php - 선택적 자동 등록:
/extend/php/t2z_plugin_autoregister.php와plugin.json
편집과 저장 흐름
- 툴바 명령은 에디터 코어를 통해 플러그인에 전달된다.
- 플러그인은 편집 전용 컨트롤과 복원 가능한
data-*메타데이터를 가진 블록을 만든다. - 변경 전후에 undo 지점과 autosave를 일관되게 갱신한다.
- 제출 훅이 선택 핸들·버튼 같은 런타임 UI를 제거하고 안전한 저장 HTML을 만든다.
- 호스트 CMS의 필터와 저장 수명 정책을 통과한다.
- 재편집 시 restore 훅 또는
onContentSet이 저장 HTML을 편집 블록으로 복원한다.
라이믹스에서는 js/rhymix.js가 실제 콘텐츠 필드, 기본 키, 임시저장과 네이티브 첨부파일 UI를 연결한다. 이미지·파일·영상·그리기 업로드는 라이믹스 파일 모듈로 위임된다.