WikiモジュールはWikiの基本的な処理、プラグインの管理などを実装したクラスです。
アクションハンドラプラグインを登録します。
$wiki->add_handler(actionパラメータ,アクションハンドラのクラス名);
フックプラグインを登録します。
$wiki->add_hook(フック名,フックプラグインのクラス名);
インラインプラグインを登録します。プラグインの出力タイプには"WIKI"または"HTML"を指定します。省略した場合は"HTML"を指定したものとみなされます。
$wiki->add_inline_plugin(プラグイン名,プラグインのクラス名,プラグインの出力タイプ);
パラグラフプラグインを登録します。プラグインの出力タイプには"WIKI"または"HTML"を指定します。省略した場合は"HTML"を指定したものとみなされます。
$wiki->add_inline_plugin(プラグイン名,プラグインのクラス名,プラグインの出力タイプ);
プラグインをインストールするために各プラグインのパッケージ毎に用意されたインストールモジュール(Install.pm)を読み込みます。
$wiki->install(プラグイン);
ユーザを追加します。
$wiki->add_user(ID,パスワード,ユーザタイプ);
ユーザタイプには管理者ユーザの場合0、一般ユーザの場合1を指定します。なお、このメソッドは実行時にWiki.pmにユーザを追加するためのもので、このメソッドに対してユーザを追加しても永続化は行われません。
ログインユーザ用のメニューを追加します。一般ユーザがログインすると表示されます。また、管理者にてログインした場合も表示されます。優先度が高いほど上位に表示されます。
$wiki->add_user_menu(項目名,URL,優先度);
ログインユーザ用のアクションハンドラを追加します。このメソッドによって追加されたアクションハンドラはログインしている場合のみ実行可能です。それ以外の場合はエラーメッセージを表示します。
$wiki->add_user_handler(actionパラメータ,アクションハンドラのクラス名);
管理者用のメニューを追加します。管理者ユーザがログインすると表示されます。優先度が高いほど上位に表示されます。
$wiki->add_admin_menu(項目名,URL);
管理者用のアクションハンドラを追加します。このメソッドによって追加されたアクションハンドラは管理者としてログインしている場合のみ実行可能です。それ以外の場合はエラーメッセージを表示します。
$wiki->add_admin_handler(actionパラメータ,アクションハンドラのクラス名);
エディットフォームプラグインを追加します。
$wiki->add_editform_plugin(エディットフォームプラグインのクラス名,重み);
重みが大きいほど上位に表示されます。
引数で指定したページのソースを取得します。
my $source = $wiki->get_page(ページ名);
ページを保存します。
$wiki->save_page(ページ名,ページ内容);
アクションハンドラ中で画面のタイトルを設定するのに使用します。
$wiki->set_title(タイトル);
編集系の画面の場合、第二引数に1を指定してください。ロボット対策用に以下のMETAタグが出力されます。
<meta name="ROBOTS" content="NOINDEX, NOFOLLOW">
ページ名の一覧をリストで取得します。引数としてハッシュリファレンスを渡すことで取得内容を指定することが可能です。デフォルトでは全てのページを名前でソートしたリストを返却します。
# 以下の例は参照権のあるページのみ取得し、更新日時でソートします。 my @list = $wiki->get_page_list({-sort => 'last_modified', -permit => 'show'}); # 以下の例は全てのページを取得し、名前でソートする。 my @list = $wiki->get_page_list({-sort => 'name'}); # 以下の例は最新の10件を取得する。 my @list = $wiki->get_page_list({-sort=>'last_modified',-max=>10});
ページの物理的な最終更新時刻(データファイルのタイムスタンプ)を取得します。
my $modified = $wiki->get_last_modified(ページ名);
ページの論理的な最終更新時刻を取得します。「タイムスタンプを更新しない」にチェックを入れてページを保存した場合はこのメソッドで返される日時は保存前のものになります。
my $modified = $wiki->get_last_modified2(ページ名);
メニュー項目を追加します。既に同じ名前の項目が登録されている場合は上書きします。
$wiki->add_menu(項目名,URL,重み);
重みが大きいほど左側に表示されます。
add_hookメソッドで登録されたフックプラグインを実行します。
$wiki->do_hook(フック名);
add_handlerメソッドで登録されたアクションハンドラを実行します。アクションハンドラのdo_actionメソッドの戻り値を返します。
my $content = $wiki->call_handler(actionパラメータ);
アクションハンドラ中等でエラーが発生した場合に使用するメソッドです。
sub do_action { my $self = shift; my $wiki = shift; ... return $wiki->error(エラーメッセージ); }
引数で渡したWikiフォーマットの文字列をHTMLに変換して返します。
my $html = $wiki->process_wiki(文字列);
引数で指定したページが存在するかどうかをしらべます。
if($wiki->page_exists(ページ名)){ # ページが存在する場合の処理 } else { # ページが存在しない場合の処理 }
引数で指定したページが凍結中かどうかを調べます。
if($wiki->is_freeze(ページ名)){ ... }
ページを凍結します。
$wiki->freeze_page(ページ名);
ページの凍結を解除します。
$wiki->un_freeze_page(ページ名);
CGIクラスのオブジェクトを取得します。
my $cgi = $wiki->get_CGI;
ログイン情報を取得します。ログインしている場合はログイン情報を含んだハッシュリファレンスを、ログインしていない場合はundefを返します。
my $info = $wiki->get_login_info(); if(defined($info)){ # ログインしていない場合はundef my $id = $info->{id}; # ログインユーザのID my $type = $info->{type}; # ログインユーザの種別(0:管理者 1:一般) }
引数で渡したページが編集可能かどうかを調べます。編集不可モード(setup.plで$accept_editが0に設定されている場合)はログインしていれば編集可能、ページが凍結されている場合は管理者ユーザでログインしている場合に編集可能となります。
if($wiki->can_modify_page(ページ名)){ ... }
ページの公開レベルを指定します。公開レベルは0=全員に公開、1=ログインユーザに公開、2=管理者のみに公開のいずれかを指定します。
$wiki->set_page_level(ページ名,公開レベル);
ページの公開レベルを取得します。0=全員に公開、1=ログインユーザに公開、2=管理者のみに公開のいずれかが返却されます。
my $level = $get_page_level(ページ名);
ページが参照可能かどうかを判定します。
if($wiki->can_show(ページ名)){ # 参照可能 } else { # 参照不可能 }
設定内容を取得または上書きします。
# データファイルを格納するディレクトリ my $data_dir = $wiki->config('data_dir'); # 設定を$data_dirで上書き $wiki->config('data_dir',$data_dir);
引数で渡したページにリダイレクトします。ページの保存後にページを再表示する場合はこのメソッドを使用して下さい。なお、このメソッドを呼び出すとそこでスクリプトの実行は終了し、呼び出し元に制御は戻りません。
$wiki->redirect("FrontPage");
子Wikiを作成します。引数にはWikiの名前、作成するWikiサイトの管理者ID、パスワードを渡します。このメソッド内ではWikiサイト名のバリデーションや重複チェックは行われません。事前に行う必要があります。このメソッドはfarmプラグインを使用している場合のみ使用可能です。
$wiki->create_wiki(Wikiサイト名,管理者ID,パスワード);
子Wikiを削除します。引数には削除するWikiサイトのパス(PATH_INFO部分)を渡します。このメソッドはfarmプラグインを使用している場合のみ使用可能です。
$wiki->remove_wiki(Wikiサイトのパス);
引数で渡した名称の子Wikiが存在するかどうかを調べます。このメソッドはfarmプラグインを使用している場合のみ使用可能です。
$wiki->wiki_exists(Wikiサイト名);
子Wikiを配列で取得します。孫Wiki、曾孫Wikiは配列のリファレンスとして格納されています。このメソッドはfarmプラグインを使用している場合のみ使用可能です。