Dream of Enc 팀에서 개발한 DokuWiki 플러그인들과 플러그인 개발 방법을 상세히 설명합니다.
개발 목적: HR지원실 직원들을 위한 Dream of Enc 서비스를 위해 특별히 개발된 맞춤형 AI
주요 기능:
기술 스택:
파일 구조:
lib/plugins/geminidraft/ ├── action.php # 백엔드 로직 및 API 통신 ├── script.js # 프론트엔드 사용자 인터페이스 ├── style.css # 반응형 버튼 디자인 ├── plugin.info.txt # 플러그인 메타데이터 ├── conf/ │ ├── default.php # 기본 설정값 │ └── metadata.php # 설정 메타데이터 └── lang/ ├── en/lang.php # 영어 언어 파일 └── ko/lang.php # 한국어 언어 파일
설정 방법:
사용법:
관련 문서: DokuWiki AI 기능 상세 가이드
개발 목적: 사용자가 쉽게 새 글을 작성할 수 있도록 오른쪽 하단에 플로팅 버튼 제공
주요 기능:
파일 구조:
lib/plugins/floatingnewpost/ ├── action.php # 플러그인 로직 및 이벤트 처리 └── plugin.info.txt # 플러그인 메타데이터
사용법:
DokuWiki 플러그인은 다음과 같은 기본 구조를 가집니다:
필수 파일:
선택 파일:
base 플러그인명 author 개발자명 email 이메일주소 date 개발일자 name 플러그인 표시명 desc 플러그인 설명 url 관련 URL
DokuWiki는 다양한 이벤트를 제공합니다:
주요 이벤트:
이벤트 등록 예시:
public function register(Doku_Event_Handler $controller) { $controller->register_hook('TOOLBAR_DEFINE', 'AFTER', $this, 'insert_button'); $controller->register_hook('AJAX_CALL_UNKNOWN', 'BEFORE', $this, 'handle_ajax'); }
AJAX 요청 처리:
public function handle_ajax(Doku_Event &$event, $param) { if ($event->data == 'my_plugin_action') { $event->preventDefault(); $this->my_ajax_function(); } }
응답 전송:
private function my_ajax_function() { $response = array('status' => 'success', 'data' => $result); echo json_encode($response); }
JavaScript 파일 로드:
public function load_js(Doku_Event &$event, $param) { $event->data['script'][] = array( 'type' => 'text/javascript', 'src' => DOKU_BASE . 'lib/plugins/myplugin/script.js', '_data' => '' ); }
CSS 파일 로드:
public function load_css(Doku_Event &$event, $param) { $event->data['link'][] = array( 'rel' => 'stylesheet', 'type' => 'text/css', 'href' => DOKU_BASE . 'lib/plugins/myplugin/style.css', ); }
설정 파일 구조:
conf/ ├── default.php # 기본값 설정 └── metadata.php # 설정 타입 정의
default.php 예시:
$conf['my_setting'] = 'default_value';
metadata.php 예시:
$meta['my_setting'] = array('string');
언어 파일 구조:
lang/ ├── en/lang.php # 영어 └── ko/lang.php # 한국어
언어 파일 예시:
$lang['my_plugin_title'] = 'My Plugin Title'; $lang['my_plugin_desc'] = 'My Plugin Description';
디버깅 방법:
테스트 체크리스트:
배포 준비사항:
버전 관리: