Serene Bach 3.00 beta020
- 2009/02/19 Thu 19:30
- アップデート通知 > β版
Serene Bach 3 beta020 を公開しています(ダウンロードセンター)。
β版の動作は不安定な場合があります。あらかじめご了承の上、ご利用下さい。
Serene Bach 3.00 beta020 では、以下のバグが修正されました。
- データドライバーに Text を指定している際、「テンプレート編集」が利用できません
- カテゴリーを更新した際、カテゴリーインデックスが更新されません
- 再構築オプションが正しく表示されない場合があります
Serene Bach 3.00 beta020 では、以下の仕様変更があります。
- 一部の再構築処理を共有化
- 管理画面スタイルの最大幅を若干変更
- スタイルシートが空のとき、記事生成時にスタイルシートを生成するように
また、以下の機能が追加されました。
- 静的ファイル生成構築時のプラグインフックを追加
これにより静的ファイル生成あるいは更新時に呼ばれるプラグインを作成することができます。
「続き」に簡単な解説並びにサンプルスクリプトをご用意しましたので、ご参照ください。
Serene Bach 3.00 beta019 からのバージョンアップ
Serene Bach 3.00 beta019 からは、以下の手順でバージョンアップを行なってください。
- lib/, resource/ ディレクトリの内容を差し替える、もしくは、以下の表に示すファイルを差し替える
- 管理画面にアクセスして、ログインできることを確認する
lib/ ディレクトリ内 | sb.pm |
---|---|
lib/sb/ ディレクトリ内 | Build.pm |
FastCGI.pm | |
Plugin.pm | |
lib/sb/Admin/ ディレクトリ内 | Build.pm |
Category.pm | |
Entry.pm | |
List.pm | |
Profile.pm | |
Template.pm | |
lib/sb/App/ ディレクトリ内 | Builder.pm |
Receipt.pm | |
Xmlrpc.pm | |
lib/sb/Net/ ディレクトリ内 | Ping.pm |
lib/resource/ ディレクトリ内 | ja.txt |
resource/ ディレクトリ内 | style.css |
静的ファイル構築時のプラグインフック
Serene Bach 3.00beta020 より静的ファイル構築時に呼び出されるプラグイン (以下、ビルド用プラグイン) 向けにエントリーポイントが追加されました。
ビルド用プラグインは、以下のタイミングで呼び出されます。
- sb::Build オブジェクト生成時 (
initialize
) - 記事ファイル生成・更新時 (
prebuild_entry
&postbuild_entry
) - コメント・トラックバック受信後の記事ファイル更新時 (
prebuild_receipt
&postbuild_receipt
) - 全再構築時 (
prebuild_all
&postbuild_all
) - トップページ生成・更新時 (
prebuild_top
&postbuild_top
)
sb::Build オブジェクト生成時以外は prebuild_xxx
と postbuild_xxx
のモードがあり、それぞれ静的ファイル生成前後に呼ばれます。
ビルド用プラグインは、Serene Bach プラグイン API 「register_extra_module
」を通して登録します。
sb::Plugin->register_extra_module( 'type' => 'build', 'callback' => \&_callback, # コールバックのリファレンス );
登録したコールバックには、sb::Build のインスタンス、モード、場合によってターゲットとなっている記事オブジェクトが引き渡されます。
sub _callback { my $builder = shift; # sb::Build インスタンス my $mode = shift; # モード / initialize, xxx_entry, xxx_top, xxx_receipt, xxx_all my $obj = shift; # ターゲット記事オブジェクト (xxx_entry or xxx_receipt) # 以下、コード }
ターゲット記事オブジェクトは、記事ファイル生成・更新時ないしコメント・トラックバック受信時のみセットされます。
ビルド用プラグインのサンプル
以下のサンプルプラグインは、静的ファイル生成時にデバッグ出力を行なうシンプルなビルド用プラグインです。
package sb::Plugin::BuildSample; use sb::Plugin (); # -------------------------------------- sb::Plugin->register_plugin( 'lang' => { 'ja' => 'utf8', 'en' => 'ascii', }, 'text' => { 'type' => 'build', 'name' => 'sample plugin for build', 'text' => 'sample plugin for build', 'author' => 'takkyun', 'detail' => 'http://serenebach.net/', 'version' => version(), }, 'file' => undef, 'data' => undef, ); sb::Plugin->register_extra_module( 'type' => 'build', 'callback' => \&_callback, ); sub version { return '0.00'; } # -------------------------------------- sub _callback { my $builder = shift; my $mode = shift; # initialize, xxx_entry, xxx_top, xxx_receipt, xxx_all my $obj = shift; # target entry object (xxx_entry or xxx_receipt) return if ( $mode eq 'initialize' ); sb->debug('[build] ' . $mode . ' ... ' . $obj . "\n"); } 1;