Changeset 1336
- Timestamp:
- 08/16/06 17:37:17
- Files:
-
- trunk/plagger/assets/plugins/Widget-Simple (added)
- trunk/plagger/assets/plugins/Widget-Simple/bloglines.yaml (added)
- trunk/plagger/assets/plugins/Widget-Simple/bulkfeeds.yaml (added)
- trunk/plagger/assets/plugins/Widget-Simple/delicious.yaml (added)
- trunk/plagger/assets/plugins/Widget-Simple/hatena_bookmark.yaml (added)
- trunk/plagger/assets/plugins/Widget-Simple/hatena_bookmark_users.yaml (added)
- trunk/plagger/lib/Plagger/Plugin/Widget/Simple.pm (modified) (4 diffs)
- trunk/plagger/t/plugins/Widget-Simple/base.t (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/plagger/lib/Plagger/Plugin/Widget/Simple.pm
r1335 r1336 12 12 $self, 13 13 'publish.entry.fixup' => \&add, 14 'plugin.init' => \&initialize, 14 15 ); 16 } 17 18 sub initialize { 19 my($self, $context, $args) = @_; 20 21 if (my $name = $self->conf->{widget}) { 22 my $found; 23 $self->load_assets( 24 File::Find::Rule->name("$name.yaml"), 25 sub { 26 my $data = YAML::LoadFile(shift); 27 $self->{conf} = { %{$self->{conf}}, %$data }; 28 $found++; 29 }, 30 ); 31 32 unless ($found) { 33 $context->log(error => "Can't find widget for $name"); 34 } 35 } 15 36 } 16 37 … … 32 53 sub plugin { shift->{plugin} } 33 54 55 sub value { 56 my($self, $string, $args) = @_; 57 58 if ($string =~ /\$/) { # DWIM 59 $string = eval $string; 60 Plagger->context->log(error => $@) if $@; 61 utf8::encode($string) if utf8::is_utf8($string); 62 } 63 64 $string; 65 } 66 34 67 sub html { 35 68 my($self, $entry) = @_; … … 38 71 my $args = { entry => $entry, feed => $self->{feed} }; 39 72 73 if (my $append = $self->plugin->conf->{append}) { 74 $uri->path( $uri->path . $self->value($append, $args) ); 75 } 76 40 77 if (my $query = $self->plugin->conf->{query}) { 41 my @query = map { 42 if ($query->{$_} =~ /\$/) { # DWIM 43 $query->{$_} = eval $query->{$_}; 44 Plagger->context->log(error => $@) if $@; 45 } 46 ($_ => $query->{$_}); 47 } sort keys %$query; 48 $uri->query_form(@query); 78 if (ref $query) { 79 my @query = map { 80 ($_ => $self->value($query->{$_}, $args)); 81 } sort keys %$query; 82 $uri->query_form(@query); 83 } else { 84 $query = $self->value($query, $args); 85 $uri->query($query); 86 } 49 87 } 50 88 … … 52 90 53 91 my $content; 54 if ($self->plugin->conf->{content_dynamic}) { 55 $content = $self->plugin->templatize(\$self->plugin->conf->{content_dynamic}, $args); 92 if (my $template = $self->plugin->conf->{content_dynamic}) { 93 chomp $template; 94 $content = $self->plugin->templatize(\$template, $args); 56 95 } else { 57 96 $content = $self->plugin->conf->{content}; trunk/plagger/t/plugins/Widget-Simple/base.t
r1335 r1336 61 61 <a href="http://www.example.com/">Entry from miyagawa</a> 62 62 63 === Use del.icio.us asset 64 --- input config 65 plugins: 66 - module: Subscription::Config 67 config: 68 feed: 69 - file://$t::TestPlagger::BaseDir/t/samples/rss-full.xml 70 - module: Widget::Simple 71 config: 72 widget: delicious 73 --- expected chomp 74 <a href="http://del.icio.us/post?title=+%E3%82%BF%E3%82%A4%E3%83%97%E6%95%B0%E3%82%AB%E3%82%A6%E3%83%B3%E3%82%BF%E3%83%BC%E3%82%92%E3%83%93%E3%82%B8%E3%83%A5%E3%82%A2%E3%83%AB%E8%A1%A8%E7%A4%BA&url=http%3A%2F%2Fsubtech.g.hatena.ne.jp%2Fmiyagawa%2F20060710%2F1152534733"><img src="http://del.icio.us/static/img/delicious.small.gif" alt="del.icio.us it!" style="border:0;vertical-align:middle" /></a> 75 76 === Use Hatena Bookmark asset 77 --- input config 78 plugins: 79 - module: Subscription::Config 80 config: 81 feed: 82 - file://$t::TestPlagger::BaseDir/t/samples/rss-full.xml 83 - module: Widget::Simple 84 config: 85 widget: hatena_bookmark 86 --- expected chomp 87 <a href="http://b.hatena.ne.jp/append?http://subtech.g.hatena.ne.jp/miyagawa/20060710/1152534733"><img src="http://b.hatena.ne.jp/images/append.gif" alt="Post to Hatena Bookmark" style="border:0;vertical-align:middle" /></a> 88 89 === Use Hatena Bookmark count asset 90 --- input config 91 plugins: 92 - module: Subscription::Config 93 config: 94 feed: 95 - file://$t::TestPlagger::BaseDir/t/samples/rss-full.xml 96 - module: Widget::Simple 97 config: 98 widget: hatena_bookmark_users 99 --- expected chomp 100 <a href="http://b.hatena.ne.jp/entry/http://subtech.g.hatena.ne.jp/miyagawa/20060710/1152534733"><img src="http://b.hatena.ne.jp/entry/image/normal/http://subtech.g.hatena.ne.jp/miyagawa/20060710/1152534733" style="border:0;vertical-align:middle" /></a>
