*PukiWiki Pluginの作成・インストール [#o6a2f51e] RIGHT:更新日&lastmod(); **プラグイン内のサーバ変数について [#q4db1941] プラグインではrequireが何回か行われるの取得できないサーバ変数があるたとえば ブラウザの種類等のデータを表示する$_SERVER['HTTP_USER_AGENT']は空になる~ ブラウザの種類等のデータを表示する''$_SERVER['HTTP_USER_AGENT']''は空になる~ そこで~ getenv("HTTP_USER_AGENT"); とすると取得できるようだ。 必要なファイルは[[ここ:http://pukiwiki.sourceforge.jp/]]のpluginからDownload **コマンド型プラグインの使用方法 [#dc2c3a1c] 以下のように指定する RSSの表示 https://wwwism.dyndns.org/index.php?plugin=rss&ver=1.0 編集ページの表示 https://wwwism.dyndns.org/index.php?cmd=edit&page=TEST2 **アクション型プラグイン [#d745fd94] 定義: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; } [[''参考ページ'':http://taru.s223.xrea.com/index.php?PukiWiki%2Fplugin#dfc0bf7e]] **ディレクトリ指定定数 [#ed61ba5b] 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変換 [#u42d906f] Pukiwiki文法をHTMLに変換する関数 function convert_html($lines)がlib/convert_html.phpに定義されている $html = convert_html($wikiline); **ページ名からファイル名取得 [#v6d1cf3d] lib/func.phpのなかにfunction get_filename($page)が定義されているので $filename = get_filename($page); wiki/6F6B6164615F7465737432.txtなどが得られる プラグインで使用する場合パスが相対パスの場合pukiwiki.ini.phpから相対で呼び出されるのでそのまま使用できる。 **別ページの内容の表示(includex)Plugin [#f16c9a6a] デフォルトでinclude.inc.phpというプラグインがあるが、表示行数の指定等オプションが増えている。[[ここ:http://note.sonots.com/?PukiWiki%2Fincludex.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 [#r032d64a] 添付を行うときのパスワードリクエストの変数定義について アップロード/削除時はそのページの作成権限のユーザパスワードで実行できるバックアップファイルはこの範囲外 // 管理者だけが添付ファイルをアップロードできるようにする //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について [#w0e862ff] 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,お知らせ)