*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,お知らせ)

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS