목차

DokuWiki 플러그인 개발 가이드

Dream of Enc 팀에서 개발한 DokuWiki 플러그인들과 플러그인 개발 방법을 상세히 설명합니다.

개발된 플러그인 목록

AI 기반 플러그인

플러그인 상세 정보

Gemini Draft 플러그인

개발 목적: 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 기능 상세 가이드

Floating New Post 플러그인

개발 목적: 사용자가 쉽게 새 글을 작성할 수 있도록 오른쪽 하단에 플로팅 버튼 제공

주요 기능:

파일 구조:

lib/plugins/floatingnewpost/
├── action.php          # 플러그인 로직 및 이벤트 처리
└── plugin.info.txt     # 플러그인 메타데이터

사용법:

플러그인 개발 기초

플러그인 구조

DokuWiki 플러그인은 다음과 같은 기본 구조를 가집니다:

필수 파일:

선택 파일:

plugin.info.txt 작성법

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 처리

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';

디버깅 및 테스트

디버깅 방법:

테스트 체크리스트:

배포 및 관리

배포 준비사항:

버전 관리:


관련 링크