サマリ | Ajax を用いたツリーメニュー |
---|---|
リビジョン | 1.3 |
対応バージョン | 1.4.7 で動作することは確認済み |
作者 | revulo |
pagetree.inc.php プラグイン を JavaScript を利用するように作り直したものです。 JavaScript が使えないブラウザでも、それなりに動きます。
機能的には treeview.inc.php プラグイン とまったく同じですが、 次のような違いがあります。
このサイトのメニューバーに設置してあります。 適当に触って試してみて下さい。
アーカイブファイルをダウンロードし、 PukiWiki をインストールしてあるディレクトリで展開します。
$ tar xvfz ajaxtree-1.3.tar.gz
html/ajaxtree というディレクトリが作られるので、Web サーバへの書き込み許可を与えて下さい。 パーミッションで言うと 777 にするのが確実ですが、 レンタルサーバが推奨している値がある場合はそちらに従って下さい *1。
$ chmod 777 html/ajaxtree
スキン (skin/pukiwiki.skin.php, skin/default.skin.php など) の <head>〜</head> のどこかに、以下の設定を追加します。
(PukiWiki の場合) <link rel="stylesheet" type="text/css" href="<?php echo SKIN_DIR ?>ajaxtree/ajaxtree.css" /> (PukiWiki Plus! の場合) <link rel="stylesheet" type="text/css" href="<?php echo SKIN_URI ?>ajaxtree/ajaxtree.css" />
または、スキンのスタイルシート (skin/pukiwiki.css.php, skin/default.css など) の @charset 行の直後に、 次のように書き加えても良いです *2。
@import "./ajaxtree/ajaxtree.css";
lib/file.php の page_write() 関数の末尾に、以下の3行を追加します。 行頭の+は不要なので、それ以外の部分を追加して下さい。
function page_write($page, $postdata, $notimestamp = FALSE) { ...... + if (exist_plugin('ajaxtree')) { + plugin_ajaxtree_write_after(); + } }
以下のような URL に一度アクセスして下さい。Ajax 用のキャッシュファイルが作成されます。
http://…/?plugin=ajaxtree
あとは MenuBar ページに以下のように書いて下さい。
#ajaxtree
なお、 Help や MenuBar などの階層化されていないページは、デフォルトでは表示しないようにしています。 それらのページも表示したい場合は、PLUGIN_AJAXTREE_HIDE_TOPLEVEL_LEAVES や PLUGIN_AJAXTREE_INCLUDE_LIST の設定を変更して下さい。
基本的には、新しいファイルで上書きコピーすれば良いですが、以下の点に注意して下さい。
書式は次のようになっています。
#ajaxtree
引数は取りません。MenuBar ページのどこかに #ajaxtree と書くだけです。
設定方法は基本的に pagetree.inc.php プラグイン と同じなので、そちらの説明を見て下さい。 ただし、いろいろと機能を追加してあるので、追加分の説明を以下に記しておきます。
ajaxtree.inc.php の先頭部分で以下の値を設定することで、動作をカスタマイズできます。
CHECK_MTIME の機能は、ext3 や NTFS などのファイルシステムでないと正常に機能しません。 ほとんどの環境でこの条件は満たされていると思いますが、 ファイルシステムが FAT32 などの場合は、このオプションを false に設定して下さい。
PLUGIN_AJAXTREE_SORT_TYPE を reading に設定すると、ページの並び順を制御することができます。 この機能は、sonots さんの lsx プラグインの実装をほぼそのまま利用しています。 詳細については以下のページをご覧下さい。
ツリーの一部分を常に展開して表示しておきたい場合は、 展開したいページを PLUGIN_AJAXTREE_EXPAND_LIST に正規表現で指定して下さい。 書き方の例をいくつか挙げておきます。
// PukiWiki ページと PHP ページは常に展開して表示 define('PLUGIN_AJAXTREE_EXPAND_LIST', '^(PukiWiki|PHP)$'); // PukiWiki ページの下は全て展開して表示 define('PLUGIN_AJAXTREE_EXPAND_LIST', '^PukiWiki'); // 2階層目まで全て展開して表示 define('PLUGIN_AJAXTREE_EXPAND_LIST', '^[^\/]+$');
skin/ajaxtree/ajaxtree.css を書き換えることで、 レイアウトや配色やアイコンを変更することができます。 一応 PukiWiki の標準スキンにあわせて調整してあるつもりですが、 設定を変えたい場合は background や padding-bottom の値を適当に変えて下さい。
また、ツリーの上にある AjaxTree というタイトルが要らない場合は、
#ajaxtree h5 { display: none; }
という設定を追加すると消すことができます。
Ajax 用のキャッシュファイルは、標準では html/ajaxtree ディレクトリに置かれます。 これを例えば ajax というディレクトリに設定し直したい場合は、次のようにして下さい。
$ mkdir ajax $ chmod 777 ajax
define('PLUGIN_AJAXTREE_HTML_DIR', 'ajax/');
var baseUrl = "ajax/";
環境によっては、日本語のページ名が文字化けする可能性があります。 Web サーバが Apache か lighttpd の場合は、以下のページを参考にして設定を行ってみて下さい。
設定がうまくいかない場合や、他の Web サーバの場合は、 skin/ajaxtree/ajaxtree.js の baseUrl の設定を次のように書き換えて下さい。
var baseUrl = "ajaxtree.php?url=";
ほんの少し遅くなりますが、一旦 PHP を通して HTML ファイルを読み込むことで、文字化けせずに表示できるようになります。
rewritemap.inc.php プラグイン などを使って PukiWiki/Install.html のような階層化された URL に見せかけている場合、 以下のように設定をする必要があります。
PukiWiki Plus! には SKIN_URI の設定項目がもとからありますが、 本家 PukiWiki の場合は自分で設定を追加して下さい。
基本的には MIT & GPL のデュアルライセンスです。 ただし以下のファイルについては、別途ライセンスを定めます。
他のライセンスを希望する場合は、連絡をいただければ対応を検討します。