Serene Bach - sb Development Laboratory presents

<< Serene Bach 3.00 beta019 | main | Serene Bach 3.00 beta021 >>

Serene Bach 3.00 beta020

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 からは、以下の手順でバージョンアップを行なってください。

  1. lib/, resource/ ディレクトリの内容を差し替える、もしくは、以下の表に示すファイルを差し替える
  2. 管理画面にアクセスして、ログインできることを確認する
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_xxxpostbuild_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;