Plagger::Plugin::Widget::LivedoorClip

クリックするとLivedoorクリップpermalinkを追加するボタンを作る。
http://subtech.g.hatena.ne.jp/otsune/20060814/WidgetLivedoorClip をコピーしているが、html関数の中身を少し変えて使っている。

package Plagger::Plugin::Widget::LivedoorClip;
use strict;
use base qw( Plagger::Plugin );

use Encode;
use HTML::Entities;
use URI;

sub register {
    my($self, $context) = @_;
    $context->register_hook(
        $self,
        'publish.entry.fixup' => \&add,
    );
}

sub add {
    my($self, $context, $args) = @_;
    $args->{entry}->add_widget($self);
}

sub html {
    my($self, $entry) = @_;
    my $uri = URI->new('http://clip.livedoor.com/clip/add');

    my %query;
    $query{link}  = $entry->permalink;
    $query{title} = $entry->title;

    $uri->query_form(%query);

    my $url = HTML::Entities::encode($uri->as_string);
    my $button = $self->conf->{button} || '16_w';

    return qq(<a href="$url"><img src="http://parts.blog.livedoor.jp/img/cmn/clip_16_$button.gif" al
t="livedoor clip it" style="border:0;vertical-align:middle" /></a>);
}

1;