目录

Admin Plugins

Admin PluginはDokuwikiの追加機能プラグインです。管理ページからアクセスすることができます。

Admin pluginのより詳細な情報はtutorialを参照してください。

概要

例えば、Admin Plugin exampleという名前のプラグインであればadmin_plugin_exampleという名前のクラスを必要とします。これはDokuWiki_Admin_Pluginを継承したクラスです。1). このクラスはlib/plugins/example/admin.phpというファイルの中に記述されていなければなりません。プラグインとそのファイルの詳細は plugin file structureを参照してください。

最低でも以下の3つの関数を定義してください:


以下のメソッドをオーバーライドすることができます:

追加の関数を定義することもできます。関数名の衝突をさけるために、関数名の前にアンダースコアをつけることをおすすめします。


継承される関数とプロパティ

返す。 link, taking into account the wiki installation's mailguard setting.

対ユーザ処理

(regaining control from Dokuwiki)

ユーザーは管理ページのプラグインメニューオプションをクリックすることで、プラグインを使用します。 もしプラグインが、ユーザーからフォームやリンクを通してデータを受け取るのであれば、 そこに下記の$_REQUEST変数が設定されていなければなりません。

最も良い方法は、プラグインのHTML内でformにhiddenパラメータを設定することです。(<input> with type=“hidden”) またはクエリースとしてリンクから送ることもできます。

他国語対応のガイドライン

Admin pluginの基本クラス(DokuWiki_Admin_Plugin)は多国語対応の機能も提供しています。4つのパブリックメソッドと2つのプロパティがあります:


言語ファイルは以下のように設置してください。

lib/plugins/[プラグイン名]/lang/[xx]/

[xx]は2文字の国コードです。最低でも“en” (US English)の言語ファイルがなければなりません。このファイルは、対応する言語ファイルが存在しない時にも使われます。

プラグインで表示する文字列は以下のファイルで定義してください。

.../lang/[xx]/lang.php

書き方はこのようになります。

$lang['string name'] = 'text';

その他

Admin pluginはDokuwiki管理者とフォームやクエリー文字列を通してやりとりします($_REQUEST, $_POST or $_GET)。正しくないデータが送られてくることも想定して処理してください。悪意あるユーザーがサーバーやWikiの脆弱性を突いてくる可能性もあります。

A plugin may vary its menu text on the main admin menu depending on its status or the state of what it administers.

Admin Pluginサンプル

もう少し肉付けされたサンプルもあります。

lib/plugin/skeleton/admin.php

<?php
if(!defined('DOKU_INC')) define('DOKU_INC',realpath(dirname(__FILE__).'/../../').'/');
if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/');
require_once(DOKU_PLUGIN.'admin.php');
 
/**
 * All DokuWiki plugins to extend the admin function
 * need to inherit from this class
 */
class admin_plugin_skeleton extends DokuWiki_Admin_Plugin {
 
    /**
     * return some info
     */
    function getInfo(){
      return array(
        'author' => 'me',
        'email'  => 'me@somesite.com',
        'date'   => '20yy-mm-dd',
        'name'   => 'admin plugin skeleton',
        'desc'   => 'demonstration skeleton',
        'url'    => 'http://www.dokuwiki.org/plugin:admin',
      );
    }
 
    /**
     * return sort order for position in admin menu
     */
    function getMenuSort() {
      return 999;
    }
 
    /**
     * handle user request
     */
    function handle() {
    }
 
    /**
     * output appropriate html
     */
    function html() {
    }
 
}

lib/plugins/skeleton/lang/en/lang.php

<?php
/**
 * english language file
 */
 
// settings must be present and set appropriately for the language
$lang['encoding']   = 'utf-8';
$lang['direction']  = 'ltr';
 
// for admin plugins, the menu prompt to be displayed in the admin menu
// if set here, the plugin doesn't need to override the getMenuText() method
$lang['menu'] = 'Skeleton Plugin...'; 
 
// custom language strings for the plugin
1)
lib/plugins/admin.phpで定義されています。