FreeStyle WikiはPerlによる拡張可能なWikiクローンです。 FreeStyle Wikiは以下のような特徴を持っています。
アーカイブを展開し、そのままのフォルダ構造でサーバにアップロードします(docsディレクトリは不要)。 wiki.cgiはブラウザから起動されるスクリプトなのでパーミッションを実行可能にしておきます。
また、アップロードしたディレクトリの直下にbackup、attach、pdf、logディレクトリを作成します。 ディレクトリのうちdata、backup、attach、pdf、log、configディレクトリには CGIから書き込みができるようパーミッションを設定して置いてください。
必要に応じて、data、configディレクトリにアップロードしたファイルも CGIから書き込み可能なようにパーミッションを変更してください。
全体の構成は以下のようになります。
-+-/attach (添付ファイル) | +-/pdf(PDFファイル) | +-/tmpl(テンプレート) | +-/backkup(バックアップファイル) | +-/data(データファイル) | +-/log(ログファイル) | +-/config(設定ファイル) | +-/images(画像ファイル) | +-/theme(テーマ) | +-/plugin(プラグイン) | +-/lib(ライブラリ) | +-wiki.cgi(CGIスクリプト本体) | +-setup.dat(設定ファイル)
設定が完了したらブラウザからwiki.cgiを呼び出してみてください。 FrontPageが表示されればとりあえず設置は成功です。
データ保管場所などFreeStyle Wikiの基本的な設定はsetup.datを編集することで行います。
FreeStyle Wikiでは、ページが変更された場合に管理者にメールで通知する機能があります。 この機能を有効にするにはsetup.datの設定内容にsendmailのパスかSMTPサーバのホスト名を設定します。
上記で解説したインストール方法ではsetup.datや各種データを保存しているディレクトリをHTTPで参照できてしまいます。 セキュリティ上問題になるようであれば.htaccessを使用してアクセス制限を行ってください。
<FilesMatch "\.(pm|dat|wiki|log)$> deny from all </FilesMatch>
なお、データディレクトリに関してはHTTPでは見えない場所に配置することも可能です。 その場合はsetup.datのディレクトリ指定部分を変更してください。
設置ディレクトリ直下にあるsetup.dat、dataディレクトリ、backupディレクトリ、pdfディレクトリ、 logディレクトリ、configディレクトリ以外のファイルおよびディレクトリをいったん削除し、 配布ファイルで置き換えてください。
setup.datはできるだけバージョン間で相違のないよう配慮していますが、 止むを得ずバージョンアップ時に内容を変更する必要がある場合があります。 できれば最新のファイルで上書きしたあと、設定内容を修正するようにしてください。
また、3.4.0以降ではバージョンアップによって管理画面での設定項目が追加されている場合があります。 一度管理ユーザにてログインし、設定の更新を行ってください。
dataディレクトリ、attachディレクトリ、configディレクトリをコピーしてください。 差分表示が必要であればbackupディレクトリ、PDFも必要であればpdfディレクトリもコピーしてください (PDFファイルはPDFアンカ押下時に生成することができるのでバックアップしなくても構いません)。
ログは、デフォルトではlogディレクトリにaccess.log(アクセスログ)、freeze.log(凍結用のログ)、 attach.log(添付ファイルのログ)が出力されていますので、これらもコピーしておいてください。
Ver3.4.1よりmod_perlにも対応しています。wiki.cgiの先頭部分を編集し、 chdirの引数にFSWikiのインストールディレクトリを指定してください。 例えばFSWikiをC:/Apache/htdocs/fswikiに配置した場合は以下のようになります。
BEGIN { if(exists $ENV{MOD_PERL}){ # カレントディレクトリの変更 use Cwd; chdir("C:/Apache/htdocs/fswiki");
画面上部のログインメニューから管理者ユーザでログインすると管理画面を使用することができます。 デフォルトの管理ユーザはID:admin、Pass:adminになっています。ログイン後、パスワードを変更してください。 管理画面ではページの凍結や削除、ユーザの管理、Wikiの動作設定などを行うことができます。
ユーザには管理ユーザと一般ユーザの二種類が存在します。管理ユーザ、一般ユーザは共に凍結されたページの 編集を行うことができたり、ページの作成や編集を禁止されている場合でも作成、編集を行うことができます。 また、プラグインの中にはログインしている場合のみエントリフォームが表示されたりするものもあります。 ただし、管理画面を使用することができるのは管理ユーザだけです。一般ユーザは管理画面を使用することはできません。
FreeStyleWikiのディストリビューションには以下のプラグインが含まれており、 インストール直後に使用可能な状態になっています。ここではパッケージの概要のみ説明します。 インラインプラグインの説明についてはpluginhelpで表示されるヘルプを参照してください。
管理画面でパッケージごとにプラグインを使用するかどうかを設定することができますが、 coreパッケージを使用不可にするとFSWiki自体が動作不可能な状態になります。 また、adminパッケージを使用不可にするとログイン機能、管理機能が使用できなくなります。ご注意ください。
ページのアクセス数を表示するためのプラグインです。
ログイン機能やFSWikiの環境設定、管理者によるページの一括削除、凍結機能などを提供するプラグインです。
ページにファイルを添付するためのプラグインです。
Wikiのページを掲示板として使用するためのプラグインです。
FSWiki上で動作するバグトラックプラグインです。
カレンダを表示し、1日ごとにページを作成するためのプラグインです。
ページをカテゴライズするためのプラグインです。
ページに1行コメントを書き込むためのプラグインです。
FreeStyle Wikiの基本機能を実装しているモジュール群です。
WikiFarmを実現するためのプラグインです。デフォルトではインストールされません。 使用する場合は管理画面のプラグイン設定からfarmにチェックを入れてください。
インストールすると画面上部のメニューに「Farm」が追加され、 現在のWikiサイトの配下にWikiサイトを作成することができます。 また、管理画面に「WikiFarmの設定」が追加され、Wikiサイトの作成や削除を制限することもできます。
脚注を書くためのプラグインです。
Googleで検索するためのフォームを出力するためのプラグインです。
ページの情報を表示するためのプラグインを提供します。
パラグラフごとに編集を行うためのプラグインです。デフォルトではインストールされません。 使用する場合は管理画面のプラグイン設定からparteditにチェックを入れてください。
インストールすると見出しの下に「編集」というアンカがつき、パラグラフごとに編集できるようになります。 なお、mod_perl環境ではいったんインストールしたあとに管理画面でチェックを外しても「編集」アンカが残ってしまいます。 この場合、Apacheを再起動する必要があります。
PDFの生成を行うプラグインです。画面上部のPDFアンカからPDFを生成することができます。
最近更新されたページを表示するためのプラグインです。
ページの更新状況をRSSとして出力するプラグインです。
検索機能を提供するプラグインです。
TODOを管理するためのプラグインです。
プラグインはパッケージごとにディレクトリを作成し、pluginディレクトリに配置します。 プラグインを有効にするには管理画面から「プラグインの設定」で該当するプラグインにチェックを入れます。
プラグインを開発する場合、パッケージごとにまとめてパッケージ名::Installというモジュールを作成し、 そのモジュール内でインストール処理を行うようにします。
package plugin::test::Install; sub install { my $wiki = shift; $wiki->add_plugin("hello","plugin::test::TestPlugin"); }
有効になっているパッケージは自動的ににplugin::test::Installモジュールのinstallメソッドが呼び出され、 プラグインのインストールが行われます。
アクションハンドラプラグインはactionというリクエストパラメータによって クライアントへのレスポンスを行うプラグインです。 アクションハンドラプラグインはdo_actionメソッドを実装したクラスでなくてはなりません。 また、戻り値として、表示する内容(HTML)を返すようにします。
sub do_action { my $self = shift; my $wiki = shift; return "アクションハンドラプラグインからの出力"; }
アクションハンドラの登録はインストールスクリプト中でWiki#add_handlerメソッドによって行います。
$wiki->add_handler("EDIT","plugin::core::EditPage");
管理者のみ使用可能なアクションハンドラはWiki#add_admin_handlerメソッドによって登録します。 このメソッドによって登録されたアクションハンドラは管理者としてログインしている場合のみ実行可能になり、 それ以外の場合はエラーメッセージを表示します。
$wiki->add_admin_handler("ADMINPAGE","plugin::admin::AdminPageHandler");
フックプラグインはある契機で特定のメソッドを実行するプラグインです。 メニューのON/OFF切り替えや、ページ保存時などのタイミングで特殊な処理を行う場合に使用します。 フックプラグインはhookメソッドを実装したクラスでなくてはなりません。
hookメソッドの第3引数には起動されたフックの名前が渡されます。 1つのクラスで複数の処理を実装する場合はこの変数を見て処理を分けます。
sub hook { my $self = shift; my $wiki = shift; my $name = shift; ... }
フックプラグインの登録はインストールスクリプト中でWiki#add_hookメソッドによって行います。
$wiki->add_hook("show","plugin::core::BBS");
フックには以下ものが存在します。
インラインプラグインはWiki文書中に{{プラグイン名 [引数1,引数2...]}}で埋め込むことで、 特殊な出力を行うプラグインです。 インラインプラグインはinlineメソッドを実装したクラスでなくてはなりません。 inlineメソッドの第3引数以降にWiki文書中で指定した引数が渡されます。 また、記述された位置に出力する内容(HTMLも可)を返すよう実装します。
sub inline { my $self = shift; my $wiki = shift; return "<B>簡単なプラグインです。</B>"; }
インラインプラグインの登録はインストールスクリプト中でWiki#add_pluginメソッドによって行います。
$wiki->add_plugin("bbs","plugin::core::BBS");
エディットフォームプラグインはページの編集画面に表示されるプラグインです。 エディットフォームプラグインはeditformメソッドを実装したクラスでなくてはなりません。 editformメソッドは編集画面に表示するHTMLを返却するよう実装します。
エディットフォームプラグインの登録はインストールスクリプト中で Wiki#$wiki->add_editform_pluginメソッドによって行います。
$wiki->add_editform_plugin("plugin::core::EditHelper",0);
第3引数にはそのプラグインの表示優先度を指定します。この値が大きいほど上位に表示されます。
Wikiオブジェクトのadd_menuメソッドで画面上部のメニューアイテムを追加することができます。
$wiki->add_menu(名称,URL,優先度);
第3引数にはそのプラグインの表示優先度を指定します。この値が大きいほど左側に表示されます。 また、URLを省略するか、空文字列を設定すると無効なメニューが登録されます。 既に同じ名前のアイテムが登録されていた場合は上書きされます。
Wikiオブジェクトのadd_admin_menuメソッドで管理者ログイン時のメニューを追加することができます。 このメニューが表示されるのは管理者がログインした場合のみです。一般ユーザがログインしても表示されません。 また、管理者メニューから呼び出されるアクションハンドラはadd_admin_handlerで登録しておくと ログインチェック、権限チェックが自動化されます。
$wiki->add_admin_menu(名称,URL);
FreeStyle Wikiでは以下のライブラリを使用しています。これらについての著作権は原作者が持ちます。 有用なライブラリを無償で提供してくださっている作者の皆様に感謝します。
http://hp1.jonex.ne.jp/~nakajima.yasushi/
PDFの生成にPDFJを使わせていただいています。 Pure Perlで実装されており、手軽にPDFを生成することができる素晴らしいライブラリです。
http://search.cpan.org/author/JANPAZ/TeX-Hyphen-0.140/
PDFJで欧文のハイフネーションを行うために使用しているそうです。
http://search.cpan.org/author/NEDKONZ/Algorithm-Diff-1.15/
差分の表示に使用してます。
http://search.cpan.org/author/SAMTREGAR/HTML-Template-2.6/
http://search.cpan.org/author/DANKOGAI/Jcode-0.83/
3.4.1よりjcode.plの代わりに使用しています。
http://search.cpan.org/author/GAAS/libwww-perl-5.69/
RSSの取得などHTTP通信に使用しています。Active Perlでは不要です。
http://search.cpan.org/author/GBARR/libnet-1.16/
Net::SMTPでのメール送信に使用しています。
http://search.cpan.org/author/GAAS/MIME-Base64-2.20/
メール送信時のMIMEエンコードに使用しています。Perl 5.8.0以降およびActive Perlでは不要です。
http://search.cpan.org/author/GAAS/URI-1.23/
libwwwが内部的に使用しているようです。Active Perlでは不要です。
ログイン機能のセッション維持に使用しています。
http://search.cpan.org/author/SHERZODR/CGI-Session-3.94/
http://search.cpan.org/author/GAAS/Digest-MD5-2.25/
CGI::Sessionが内部的にセッションIDの生成に使用しています。Perl 5.8.0およびActive Perlでは不要です。
http://search.cpan.org/author/DELTA/Digest-Perl-MD5-1.5/
Digest::MD5のPure Perl実装です。Perl 5.8.0およびActive Perlでは不要です。
突っ込み、スタイル、プラグインなど斬新な機能を多数搭載したRubyによるWeb日記システム。 tDiary用のスタイルを使用させていただいてます。
FreeStyle WikiはGNU GPLライセンスの元で配布、改変が可能です。
Copyright 2002 - 2003 Naoki Takezoe <takezoe@netcentury.co.jp>