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';
디버깅 방법:
테스트 체크리스트:
배포 준비사항:
버전 관리: