PukiWiki Pluginの作成・インストール †更新日2008-04-10 (木) 15:42:48
プラグイン内のサーバ変数について †プラグインではrequireが何回か行われるの取得できないサーバ変数があるたとえば ブラウザの種類等のデータを表示する$_SERVER['HTTP_USER_AGENT']は空になる getenv("HTTP_USER_AGENT"); とすると取得できるようだ。 必要なファイルはここの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,お知らせ) |