PukiWiki Pluginの作成・インストール

更新日2008-04-10 (木) 15:42:48

必要なファイルはここのpluginからDownload

コマンド型プラグインの使用方法

以下のように指定する

RSSの表示
https://wwwism.dyndns.org/index.php?plugin=rss&ver=1.0
編集ページの表示
https://wwwism.dyndns.org/index.php?cmd=edit&page=TEST2

アクション型プラグイン

定義:function plugin_XXX_action()
戻り値:'msg'=>'タイトル','body'=>'本文'(型 array)
(e.g) return array('msg'=>'Error','body'=>'ファイルが存在しません<br>');
ページタイトルにErrorと表示される。内容はファイルが存在しませんと表示

HTTP変数は$varsでPOSTもGETも渡せる。グローバルで宣言しておく。

使用例

以下の例はmy_filenameという変数をPOSTで引き渡している。

function plugin_my_test_action()
{
       global $vars;

       $DEL = $vars['DEL'];  //配列変数 $DEL[0],$DEL[1]...に値が入る
       $kazu = count($DEL);  //配列の数が取れる
       return array('msg'=>'File名','body'=>$vars['my_filename']);
      //return   <===このときは同じページをなにもせず表示
}

function plugin_my_test_convert()
{
    global $vars;

    $script = get_script_uri();
    $s_page = htmlspecialchars($vars['page']);   <==開いているページ名
    $element ="<form action=\"$script\" method=\"post\">";

    $element=$element . "<input type=\"hidden\" name=\"my_filename\" value=\"abc.txt\" />";
    for($i = 0; $i < $n ;$i++){  //配列変数の設定
        $element=$element . "<input type=\"checkbox\" name=\"DEL[]\" value=\"$i\">";
    }
    $element = $element . "<input type=\"submit\" value=\"ボタン\"></form>";

    return $element;
}

参考ページ

ディレクトリ指定定数

DATA_HOME => pukiwiki.ini.phpがあるディレクトリ
DATA_DIR => wiki/
DIFF_DIR => diff/
BACKUP_DIR => backup/
CACHE_DIR => cache/
UPLOAD_DIR => attach/
COUNTER_DIR =>counter/
TRACKBACK_DIR => trackback/
PLUGIN_DIR = plugin/
SKIN_DIR => skin/

ファイルの指定は

$tmpfile = CACHE_DIR ."my_tmp";

PukiwikiからHTML変換

Pukiwiki文法をHTMLに変換する関数

function convert_html($lines)がlib/convert_html.phpに定義されている

$html = convert_html($wikiline);

ページ名からファイル名取得

lib/func.phpのなかにfunction get_filename($page)が定義されているので

$filename = get_filename($page);

wiki/6F6B6164615F7465737432.txtなどが得られる

プラグインで使用する場合パスが相対パスの場合pukiwiki.ini.phpから相対で呼び出されるのでそのまま使用できる。

別ページの内容の表示(includex)Plugin

デフォルトでinclude.inc.phpというプラグインがあるが、表示行数の指定等オプションが増えている。ここからdownlad.

contentsx.inc.phpも必要なのでインストール。

ただ、そのままでは109行でエラーするので、includexの109行目、contentsxの19行目の _(の行をコメントアウトする。gettextをインストールするといいようなことが書かれていたが、インストールしてもだめだったのでコメントアウトした。

(e.g)タイトルを表示せず、1行から10行目を表示

#includex(ページ名,titlestr=off,1:10)

includeしたページでanchor(アンカー)マーク「†」が表示されるので以下の部分(380行付近)をコメントアウト

       $attr_href  = ' href="#' . $id . '"';
       $attr_title = ' title="' . $id . '"';
       $attr_class = ' class="anchor_super"';
//        $link  = '<a' . $attr_class . $attr_id . $attr_href . $attr_title . '>' . $_symbol_anchor . '</a>';   <==この行
       return $link;
   }

添付(attach.inc.php)Plugin

添付を行うときのパスワードリクエストの変数定義について

アップロード/削除時はそのページの作成権限のユーザパスワードで実行できるバックアップファイルはこの範囲外

// 管理者だけが添付ファイルをアップロードできるようにする
//define('PLUGIN_ATTACH_UPLOAD_ADMIN_ONLY', TRUE); // FALSE or TRUE
define('PLUGIN_ATTACH_UPLOAD_ADMIN_ONLY', FALSE); // FALSE or TRUE

// 管理者だけが添付ファイルを削除できるようにする
//define('PLUGIN_ATTACH_DELETE_ADMIN_ONLY', TRUE); // FALSE or TRUE
define('PLUGIN_ATTACH_DELETE_ADMIN_ONLY', FALSE); // FALSE or TRUE

// アップロード/削除時にパスワードを要求する(ADMIN_ONLYが優先)
define('PLUGIN_ATTACH_PASSWORD_REQUIRE', FALSE); // FALSE or TRUE
//define('PLUGIN_ATTACH_PASSWORD_REQUIRE', TRUE); // FALSE or TRUE
[このパラメータはそのページの編集権限にパスワードが不要の場合のみ意味がある。
つまり編集は出来るが添付はに制限を設けるときのみ有効。編集が制限されている場合
は必ず編集用パスワードをリクエストされる。]

以下の設定はADMIN_ONLYが優先なため、Webページ上にパスワードリクエストの表示 はされるがパスワードを入力しなくてもOKで、次のダイアログボックスでそのページ の作成権限のユーザパスワードで実行できる(PLUGIN_ATTACH_PASSWORD_REQUIREは 意味がない)

// 管理者だけが添付ファイルをアップロードできるようにする
//define('PLUGIN_ATTACH_UPLOAD_ADMIN_ONLY', TRUE); // FALSE or TRUE
define('PLUGIN_ATTACH_UPLOAD_ADMIN_ONLY', FALSE); // FALSE or TRUE

// 管理者だけが添付ファイルを削除できるようにする
//define('PLUGIN_ATTACH_DELETE_ADMIN_ONLY', TRUE); // FALSE or TRUE
define('PLUGIN_ATTACH_DELETE_ADMIN_ONLY', FALSE); // FALSE or TRUE

// アップロード/削除時にパスワードを要求する(ADMIN_ONLYが優先)
//define('PLUGIN_ATTACH_PASSWORD_REQUIRE', FALSE); // FALSE or TRUE
define('PLUGIN_ATTACH_PASSWORD_REQUIRE', TRUE); // FALSE or TRUE

以下の設定ではPLUGIN_ATTACH_PASSWORD_REQUIREの設定なか関わらず、Webページ上に パスワードリクエストが表示されでは管理者パスワードを入力後、ダイアログボックス ではそのページの作成権限のユーザパスワードまたは管理者ユーザパスワードで実行 できる。

// 管理者だけが添付ファイルをアップロードできるようにする
define('PLUGIN_ATTACH_UPLOAD_ADMIN_ONLY', TRUE); // FALSE or TRUE
//define('PLUGIN_ATTACH_UPLOAD_ADMIN_ONLY', FALSE); // FALSE or TRUE

// 管理者だけが添付ファイルを削除できるようにする
define('PLUGIN_ATTACH_DELETE_ADMIN_ONLY', TRUE); // FALSE or TRUE
//define('PLUGIN_ATTACH_DELETE_ADMIN_ONLY', FALSE); // FALSE or TRUE

InterWikiNameについて

InterWikiNameについてはpukiwiki.ini.phpの

$interwiki    = 'InterWikiName'; // Set InterWiki definition here

に指定されているページに定義されている

そのページ(InterWikiName)に

[URL InterWikiName] (文字エンコードタイプ)
(e.g)
-[http://enfant.mie-chukyo-u.ac.jp/? enfant] euc

例えば、他のサイトのwikiページを表示するPlugin(include_interwiki)では以下のように指定する

#include_interwiki(InterWikiName,表示ページ名)
(e.g)
#include_interwiki(enfant,お知らせ)

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS