Class::ComponentとTemplate-Toolkitを使ったプラグイン書いてみた

Class::Componentを使って、プラグインとしてyamlファイルから読み込み→表示まで作れた。


Class::Componentって何かというと、

Class::Componentは、
Plagger,Catalyst,DBICのプラガブルなところだけ盗んで
Class::Accessorみたく他から利用出来るようにしたモジュール

by Presentation source:http://tech.yappo.jp/docs/20071001shibuya.pm/


さっぱり???っていう人はhttp://tech.yappo.jp/docs/20071001shibuya.pm/のプレゼン資料を読んでから

以下のページなどを参考にするといいかと思われます。


私もまだまだコードを読み始めたばかりで、構造が理解できずに苦しむ点が多々あります。

Template-Toolkitで値の受け渡しの部分や構造の理解も、ふむふむって感じでコードを読んで理解していってる途中です。


むしろClass::Componentも読み進めるんですが、

Moxyに詳しい人(kanさんことid:mikihoshさん、id:tokuhiromさん)アドバイス頂きたいです;;


Bookmark.pm

package Moxy::Plugin::Bookmark;
use strict;
use warnings;
use base qw/Moxy::Plugin/;
use Moxy::Util;
use Path::Class;

my $bookmark_list;

sub register {
    my ($class, $context) = @_;

    # pre loading data.
    {
        # Load to bookmark.yaml
        $bookmark_list = $class->_load_yaml($context, 'bookmark.yaml');
    }

    $context->register_hook(
        control_panel => sub {
            my ($context, $args) = @_;

            #$context->log(debug => 'dump http headers');

            return $class->render_template(
                $context,
                'panel.tt' => {
                    bookmark => $bookmark_list, 
                }
            );
        }
    );
}
1;
__END__

=head1 NAME

Moxy::Plugin::Bookmark

=head1 SYNOPSIS

  - module: Bookmark

=head1 DESCRIPTION

View of Bookmark.

=head1 AUTHOR

Akiko Yokoyama


panel.tt

    <div>
        <ul id="bookmark_list">
			[% FOR b IN bookmark %]
			<li>
				<a href="[% b.value %]">[% b.key %]</a> <br>
			</li>
			[% END %]
        </ul>
    </div>


bookmark.yaml

---
Yahoo! Mobile: http://mobile.yahoo.co.jp/
goo Mobile: http://mobile.goo.ne.jp/
Google Mobile: http://www.google.co.jp/imode
MSN Mobile: http://m.msn.co.jp/
2ch: http://c.2ch.net
2ch検索: http://is.2ch.net
イカスミ: http://ika.tv/
エフルート: http://froute.jp/
モバゲー: http://mbga.jp/