Changeset 1173

Show
Ignore:
Timestamp:
07/27/06 03:11:42
Author:
miyagawa
Message:

Merge from refactoring-planet. YAY!

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/plagger/Makefile.PL

    r1120 r1173  
     1use strict; 
    12use inc::Module::Install; 
    23 
     
    2425requires('Date::Parse'); 
    2526requires('MIME::Types', 1.16); 
    26  
    27 requires('XML::Feed', 0.08); 
     27requires('Net::DNS'); 
     28 
     29requires('XML::Feed', 0.09); 
    2830requires('XML::LibXML'); 
    2931requires('XML::Atom', 0.19); 
     
    3234requires('Term::Encoding'); 
    3335 
    34 build_requires(Test::More => 0.42); 
     36build_requires('Test::More', 0.42); 
     37build_requires('Test::Base', 0.52); 
    3538 
    3639features( 
     
    99102        recommends('POE::Component::IKC::Client'), 
    100103    ], 
    101     'Filter::URLBL' => [ 
    102         -default => 0, 
    103         recommends('Net::DNS'), 
    104     ], 
    105104    'Publish::JavaScript' => [ 
    106105        -default => 0, 
     
    124123    ], 
    125124    'Publish::Planet' => [ 
    126         -default => 0, 
    127         recommends('HTML::Tidy'), 
     125        -default => 1, 
    128126        recommends('HTML::Scrubber'), 
    129127        recommends('File::Copy::Recursive'), 
     
    191189        recommends('Text::Kakasi'), 
    192190    ], 
    193     'Rule::URLBL' => [ 
    194         -default => 0, 
    195         recommends('Net::DNS'), 
    196     ], 
    197191    'Subscription::LivedoorReader' => [ 
    198192        -default => 0, 
     
    227221        -default => 0, 
    228222        recommends('Audio::Beep'), 
     223    ], 
     224    'Bundle::Planet' => [ 
     225        -default => 1, 
     226        recommends('Time::Duration::Parse'), 
    229227    ], 
    230228    'Publish::SWF' => [ 
     
    295293 
    296294tests 't/*.t t/*/*.t t/*/*/*.t'; 
     295 
     296use_test_base; 
    297297 
    298298auto_include; 
  • trunk/plagger/assets/plugins/Publish-OPML/opml.tt

    r1092 r1173  
     1<?xml version="1.0" encoding="utf-8"?>  
    12<opml version="1.0"> 
    23<head> 
    3 <title>Plagger Subscriptions</title> 
     4<title>[% (conf.title || 'Plagger Subscriptions') | html %]</title> 
    45<dateCreated>[% now.format('Mail') %]</dateCreated> 
    56<ownerName /> 
    67</head> 
    78<body> 
    8 <outline title="Subscriptions"> 
     9<outline text="Subscriptions"> 
    910[% FOREACH feed = feeds -%] 
    10 <outline title="[% feed.title | html %]" htmlUrl="[% feed.link | html %]" type="rss" xmlUrl="[% feed.url | html %]" /> 
     11<outline title="[% feed.title | html %]" htmlUrl="[% feed.link | html %]" text="[% (feed.primary_author || feed.title) | html %]" type="rss" xmlUrl="[% feed.url | html %]" /> 
    1112[% END -%] 
    1213</outline> 
  • trunk/plagger/assets/plugins/Publish-Planet/default/template/index.tt

    r1092 r1173  
    66    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
    77    <meta name="generator" contnet="Plagger [% context.VERSION %]" /> 
    8     <link rel="alternate" type="application/atom+xml" title="Atom: [% feed.title %]" href="smartfeed_all.atom" /> 
    9     <link rel="alternate" type="application/rss+xml" title="RSS: [% feed.title %]" href="smartfeed_all.rss" /> 
     8    <link rel="alternate" type="application/atom+xml" title="Atom: [% feed.title | html %]" href="[% url.atom %]" /> 
     9    <link rel="alternate" type="application/rss+xml" title="RSS: [% feed.title | html %]" href="[% url.rss %]" /> 
     10[% IF url.opml -%] 
     11    <link rel="subscriptions" type="text/x-opml" title="Subscriptions" ref="[% url.opml %]" /> 
     12[% END -%] 
     13[% IF url.foaf -%] 
     14    <link rel="meta" type="application/rdf+xml" title="foafroll" href="[% url.foaf %]" /> 
     15[% END -%] 
    1016    <link rel="stylesheet" type="text/css" href="css/screen.css" /> 
    1117    <link rel="stylesheet" type="text/css" href="css/print.css" media="print" /> 
    1218    <link rel="stylesheet" type="text/css" href="css/handheld.css" media="handheld" /> 
    13     [% IF members_list %] 
    14       <link rel="stylesheet" type="text/css" href="css/screen-members-list.css" /> 
    15     [% END %] 
     19    <link rel="stylesheet" type="text/css" href="css/screen-members-list.css" /> 
    1620    <title>[% feed.title %]</title> 
    1721  </head> 
     
    1923    <div id="feed-title">[% feed.title %]</div> 
    2024 
    21     [% IF members_list %] 
    22       <ul id="members-list"> 
    23         [% FOREACH member = members %] 
    24           <li class="member"> 
    25             <a class="member-link" href="[% member.link | html %]">[% member.title | html %]</a> 
    26           </li> 
    27         [% END %] 
    28       </ul> 
    29     [% END %] 
     25    <ul id="members-list"> 
     26      [% FOREACH member = members %] 
     27        <li class="member"> 
     28          <a class="member-link" href="[% member.link | html %]">[% member.title | html %]</a> 
     29        </li> 
     30      [% END %] 
     31    </ul> 
    3032 
    31     [% FOREACH entry = feed.entries %] 
     33    [% FOREACH entry = entries %] 
    3234      <div class="entry"> 
    3335        <div class="entry-header"> 
  • trunk/plagger/assets/plugins/Publish-Planet/sixapart-std/template/index.tt

    r1092 r1173  
    55  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
    66  <meta name="generator" content="Plagger [% context.VERSION %]" /> 
    7   <link rel="alternate" type="application/atom+xml" title="Atom: [% feed.title %]" href="smartfeed_all.atom" /> 
    8   <link rel="alternate" type="application/rss+xml" title="RSS: [% feed.title %]" href="smartfeed_all.rss" /> 
    9   [% IF style_url %]<link rel="stylesheet" type="text/css" href="[% style_url %]" />[% END %] 
     7  <link rel="alternate" type="application/atom+xml" title="Atom: [% feed.title | html %]" href="[% url.atom %]" /> 
     8  <link rel="alternate" type="application/rss+xml" title="RSS: [% feed.title | html %]" href="[% url.rss %]" /> 
     9[% IF url.opml -%] 
     10  <link rel="subscriptions" type="text/x-opml" title="Subscriptions" href="[% url.opml %]" /> 
     11[% END -%] 
     12[% IF url.foaf -%] 
     13  <link rel="meta" type="application/rdf+xml" title="foafroll" href="[% url.foaf %]" /> 
     14[% END -%] 
     15[% FOREACH style = style_url.list -%] 
     16  <link rel="stylesheet" type="text/css" href="[% style | html %]" /> 
     17[% END %] 
    1018  <title>[% feed.title | html %]</title> 
    1119</head> 
     
    2432          <div id="alpha"> 
    2533            <div id="alpha-inner" class="pkg"> 
    26               [% FOREACH entry = feed.entries %] 
     34              [% FOREACH entry = entries %] 
    2735              <a id="[% entry.id %]"></a> 
    2836              <div class="entry" id="entry-[% entry.id %]"> 
     
    4553                    <span class="separator">|</span> 
    4654                    <a class="permalink" href="[% entry.permalink | html %]">Permalink</a> 
    47                     [% FOREACH widget = entry.widgerts %] 
     55                    [% FOREACH widget = entry.widgets %] 
    4856                    | [% widget.html(entry) %] 
    4957                    [% END %] 
     
    5765          <div id="beta"> 
    5866            <div id="beta-inner" class="pkg"> 
    59             [% IF members_list %] 
    6067              <div class="module"> 
    6168                <h2 class="module-header">Subscriptions</h2> 
     
    7077                </div> 
    7178              </div> 
    72             [% END %] 
    7379              <div class="module-powered module"> 
    7480                <div class="module-content"> 
  • trunk/plagger/examples/planet.yaml

    r1054 r1173  
    66plugins: 
    77  # Subscribe to a couple of "My Feeds" on the web 
    8   # They could be either Feeds URL or Blog URL (with AUto-Discovery support) 
     8  # They could be either Feeds URL or Blog URL (with Auto-Discovery support) 
    99  - module: Subscription::Config 
    1010    config: 
     
    1616        - http://d.hatena.ne.jp/miyagawa/ 
    1717 
    18   # Create "Smart Feed" with all entries across the feeds, fresher than 7 days old 
    19   # Add the title "Planet Plagger" to the smartfeed 
    20   - module: SmartFeed::All 
    21     rule: 
    22       module: Fresh 
    23       duration: 10080 # Seven Days 
     18  # Load 'Bundle' planet plugins 
     19  - module: Bundle::Planet 
    2420    config: 
     21      duration: 7 days 
    2522      title: Planet Plagger 
     23      dir: /tmp/planet 
     24      url: http://example.org/planet/ 
     25      theme: sixapart-std 
     26      stylesheet: http://bulknews.typepad.com/blog/styles.css 
    2627 
    27   # Generate Planet XHTML output out of the smartfeed 
    28   # to the directory /tmp/planet with sixapart-std "skin" 
    29   - module: Publish::Planet 
    30     rule: 
    31       expression: $args->{feed}->id eq 'smartfeed:all' 
    32     config: 
    33       dir: /tmp/planet 
    34       skin: sixapart-std 
    35       template: 
    36         members_list: 1 
    37         style_url: http://bulknews.typepad.com/blog/styles.css 
    38  
    39   # Output Atom feed for the smartfeed 
    40   - module: Publish::Feed 
    41     rule: 
    42       expression:  $args->{feed}->id eq 'smartfeed:all' 
    43     config: 
    44       dir: /tmp/planet 
    45  
    46   # Output RSS feed for the smartfeed 
    47   - module: Publish::Feed 
    48     rule: 
    49       expression:  $args->{feed}->id eq 'smartfeed:all' 
    50     config: 
    51       dir: /tmp/planet 
    52       format: RSS 
    53  
  • trunk/plagger/lib/Plagger.pm

    r1145 r1173  
    99use File::Copy; 
    1010use File::Basename; 
    11 use File::Find::Rule; 
     11use File::Find::Rule (); # don't import rule()! 
    1212use YAML; 
    1313use Storable; 
     
    6868    $self->rewrite_config if @{ $self->{rewrite_tasks} }; 
    6969    $self->run(); 
     70 
     71    $self; 
    7072} 
    7173 
     
    361363    my($self, $level, $msg, %opt) = @_; 
    362364 
     365    return unless $self->should_log($level); 
     366 
    363367    # hack to get the original caller as Plugin or Rule 
    364368    my $caller = $opt{caller}; 
     
    372376    } 
    373377 
    374     if ($self->should_log($level)) { 
    375         chomp($msg); 
    376         if ($self->{log}->{encoding}) { 
    377             $msg = Encode::decode_utf8($msg) unless utf8::is_utf8($msg); 
    378             $msg = Encode::encode($self->{log}->{encoding}, $msg); 
    379         } 
    380         warn "$caller [$level] $msg\n"; 
    381     } 
     378    chomp($msg); 
     379    if ($self->{log}->{encoding}) { 
     380        $msg = Encode::decode_utf8($msg) unless utf8::is_utf8($msg); 
     381        $msg = Encode::encode($self->{log}->{encoding}, $msg); 
     382    } 
     383    warn "$caller [$level] $msg\n"; 
    382384} 
    383385 
     
    409411sub template { 
    410412    my $self = shift; 
     413    $self->log(error => "\$context->template is DEPRECATED NOW. use \$plugin->templatize()"); 
    411414    my $plugin = shift || (caller)[0]; 
    412415    Plagger::Template->new($self, $plugin->class_id); 
     
    415418sub templatize { 
    416419    my($self, $plugin, $file, $vars) = @_; 
    417     my $tt = $self->template($plugin); 
    418     $tt->process($file, $vars, \my $out) or $self->error($tt->error); 
    419     $out; 
     420    $self->log(error => "\$context->templatize is DEPRECATED NOW. use \$plugin->templatize()"); 
     421    $plugin->templatize($file, $vars); 
    420422} 
    421423 
  • trunk/plagger/lib/Plagger/Entry.pm

    r1024 r1173  
    6868sub body_text { 
    6969    my $self = shift; 
    70     Plagger::Util::strip_html($self->body); 
     70    Plagger::Util::strip_html($self->body || ''); 
    7171} 
    7272 
  • trunk/plagger/lib/Plagger/Feed.pm

    r1024 r1173  
    9595} 
    9696 
     97sub primary_author { 
     98    my $self = shift; 
     99    $self->author || do { 
     100        # if all entries are authored by the same person, use him/her as primary 
     101        my %authors = map { defined $_->author ? ($_->author => 1) : () } $self->entries; 
     102        my @authors = keys %authors; 
     103        @authors == 1 ? $authors[0] : undef; 
     104    }; 
     105} 
     106 
    971071; 
  • trunk/plagger/lib/Plagger/Plugin.pm

    r807 r1173  
    1111 
    1212use FindBin; 
     13use File::Find::Rule (); 
    1314use File::Spec; 
    1415 
     
    126127} 
    127128 
     129sub templatize { 
     130    my($self, $file, $vars) = @_; 
     131 
     132    my $context = Plagger->context; 
     133    $vars->{context} ||= $context; 
     134 
     135    my $template = Plagger::Template->new($context, $self->class_id); 
     136    $template->process($file, $vars, \my $out) or $context->error($template->error); 
     137 
     138    $out; 
     139} 
     140 
     141sub load_assets { 
     142    my($self, $rule, $callback) = @_; 
     143 
     144    my $context = Plagger->context; 
     145 
     146    my $dir = $self->assets_dir; 
     147 
     148    # $rule isa File::Find::Rule 
     149    for my $file ($rule->in($dir)) { 
     150        $callback->($file); 
     151    } 
     152} 
     153 
    1281541; 
  • trunk/plagger/lib/Plagger/Plugin/Aggregator/Null.pm

    r921 r1173  
    1414    my($self, $context, $args) = @_; 
    1515    $context->update->add($args->{feed}); 
     16    return 1; 
    1617} 
    1718 
  • trunk/plagger/lib/Plagger/Plugin/Aggregator/Simple.pm

    r1065 r1173  
    3838        $self->handle_feed($url, \$content, $args->{feed}); 
    3939    } else { 
     40        $content = Plagger::Util::decode_content($res); 
    4041        my @feeds = Feed::Find->find_in_html(\$content, $url); 
    4142        if (@feeds) { 
  • trunk/plagger/lib/Plagger/Plugin/Notify/IRC.pm

    r1049 r1173  
    3939    $context->log(info => "Notifying " . $args->{feed}->title . " to IRC"); 
    4040 
    41     my $body = $self->templatize($context, $args->{feed}); 
     41    my $body = $self->templatize('irc_notify.tt', { feed => $args->{feed} }); 
    4242    Encode::_utf8_off($body) if Encode::is_utf8($body); 
    4343    Encode::from_to($body, 'utf-8', $self->conf->{charset}) 
     
    4646        $remote->post( 'notify_irc/update', $line ); 
    4747    } 
    48 } 
    49  
    50 sub templatize { 
    51     my($self, $context, $feed) = @_; 
    52     my $tt = $context->template(); 
    53     $tt->process('irc_notify.tt', { 
    54         feed => $feed, 
    55     }, \my $out) or $context->error($tt->error); 
    56     $out; 
    5748} 
    5849 
  • trunk/plagger/lib/Plagger/Plugin/Notify/SSTP.pm

    r269 r1173  
    2020    my @messages = $title; 
    2121    for my $entry ($args->{feed}->entries) { 
    22         push @messages, $self->templatize($context, $entry); 
     22        push @messages, $self->templatize('sstp.tt', { entry => $entry }); 
    2323    } 
    2424    my $message = join '\x', @messages; 
     
    3232    my $result = $sstp->send($message); 
    3333    $context->log(debug => $result); 
    34 } 
    35  
    36 sub templatize { 
    37     my($self, $context, $entry) = @_; 
    38     my $tt = $context->template(); 
    39     $tt->process('sstp.tt', { 
    40         entry => $entry, 
    41     }, \my $out) or $context->error($tt->error); 
    42     $out; 
    4334} 
    4435 
  • trunk/plagger/lib/Plagger/Plugin/Notify/Tiarra.pm

    r791 r1173  
    2121 
    2222    my $protocol = 'TIARRACONTROL/1.0'; 
    23     my $tt = $context->template(); 
     23 
    2424    my $request_template = <<END; 
    2525NOTIFY System::SendMessage [% protocol %]\r 
     
    3636    my $charset = $self->conf->{charset} || 'UTF-8'; 
    3737 
    38     my $body = $self->templatize($context, $args->{feed}); 
     38    my $body = $self->templatize('irc_notify.tt', $args); 
    3939 
    4040    for my $line (split("\n", $body)) { 
     
    4949        } 
    5050 
    51         $tt->process(\$request_template, { 
     51        my $out = $self->templatize(\$request_template, { 
    5252            protocol => $protocol, 
    53             charset => $charset, 
    54             channel => $self->conf->{channel}, 
    55             sender => $self->conf->{sender} || "Plagger/$Plagger::VERSION (http://plagger.bulknews.net/)", 
     53            charset => $charset, 
     54            channel => $self->conf->{channel}, 
     55            sender   => $self->conf->{sender} || "Plagger/$Plagger::VERSION (http://plagger.bulknews.net/)", 
    5656            use_notice => ($self->conf->{use_notice} ? 'yes' : 'no'), 
    57             text => $line, 
    58         }, \my $out) or $context->error($tt->error); 
     57            text     => $line, 
     58        }); 
    5959        Encode::_utf8_off($out) if Encode::is_utf8($out); 
    60         Encode::from_to($out, 'utf-8', $charset) unless $charset eq 'UTF-8'; 
     60        Encode::from_to($out, 'utf-8', $charset) unless uc($charset) eq 'UTF-8'; 
    6161        $remote->print($out); 
    6262 
     
    6969        Time::HiRes::sleep( $self->conf->{send_interval} || 2 ); 
    7070    } 
    71 } 
    72  
    73 sub templatize { 
    74     my($self, $context, $feed) = @_; 
    75     my $tt = $context->template(); 
    76     $tt->process('irc_notify.tt', { 
    77         feed => $feed, 
    78     }, \my $out) or $context->error($tt->error); 
    79     $out; 
    8071} 
    8172 
  • trunk/plagger/lib/Plagger/Plugin/Publish/CHTML.pm

    r943 r1173  
    5555        my $entry_id = md5_hex($entry->permalink); 
    5656        $self->write("$publish_path/$entry_id.html", 
    57                      $self->entry_templatize($feed, $entry)); 
     57                     $self->templatize('chtml_entry.tt', { 
     58                         conf => $self->conf, 
     59                         feed => $feed, 
     60                         entry => $entry, 
     61                         strip_html => sub { 
     62                             my $html = shift; 
     63                             $html =~ s|\s{2,}||og; 
     64                             $html =~ s|<[bh]r.*?>|\n|ogi; 
     65                             $html =~ s|<.*?>||og; 
     66                             $html; 
     67                         }, 
     68                     })); 
     69 
    5870        $entry->{feed2entry_link} = $self->id . "/$entry_id.html"; 
    5971    } 
    6072 
    61     $self->write("$publish_path.html",  
    62                  $self->feed_templatize($feed, $self->earlier($feed_path)), 
     73    $self->write("$publish_path.html", 
     74                 $self->templatize('chtml_feed.tt', { 
     75                     conf => $self->conf, 
     76                     feed => $feed, 
     77                     earlier => $self->earlier($feed_path), 
     78                 }), 
    6379                 "$feed_path/index.html"); 
    6480 
     
    7692    return unless @{$self->feeds}; 
    7793    $self->write($self->work . '/' . $self->id . '.html',  
    78                  $self->index_templatize($self->earlier($self->work)), 
     94                 $self->templatize('chtml_index.tt', { 
     95                     conf => $self->conf, 
     96                     feeds => [ $self->feeds ], 
     97                     earlier => $self->earlier($self->work), 
     98                 }), 
    7999                 $self->work . '/index.html'); 
    80 } 
    81  
    82 sub entry_templatize { 
    83     my($self, $feed, $entry) = @_; 
    84     $self->templatize('chtml_entry.tt', { 
    85         conf => $self->conf, 
    86         feed => $feed, 
    87         entry => $entry, 
    88         strip_html => sub { 
    89             my $html = shift; 
    90             $html =~ s|\s{2,}||og; 
    91             $html =~ s|<[bh]r.*?>|\n|ogi; 
    92             $html =~ s|<.*?>||og; 
    93             $html; 
    94         }}); 
    95 } 
    96  
    97 sub feed_templatize { 
    98     my($self, $feed, $earlier) = @_; 
    99     $self->templatize('chtml_feed.tt', { 
    100         conf => $self->conf, 
    101         feed => $feed, 
    102         earlier => $earlier, 
    103     }); 
    104 } 
    105  
    106 sub index_templatize { 
    107     my($self, $earlier) = @_; 
    108     $self->templatize('chtml_index.tt', { 
    109         conf => $self->conf, 
    110         feeds => [ $self->feeds ], 
    111         earlier => $earlier, 
    112     }); 
    113 } 
    114  
    115 sub templatize { 
    116     my $self = shift; 
    117     my $tt = $self->context->template(); 
    118     $tt->process(shift, shift, \my $out) or $self->context->error($tt->error); 
    119     $out; 
    120100} 
    121101 
  • trunk/plagger/lib/Plagger/Plugin/Publish/Feed.pm

    r1089 r1173  
    3030        mkdir $dir, 0755 or $context->error("mkdir $dir: $!"); 
    3131    } 
     32 
     33    unless (exists $self->conf->{full_content}) { 
     34        $self->conf->{full_content} = 1; 
     35    } 
    3236} 
    3337 
     
    3842    my $f = $args->{feed}; 
    3943    my $feed_format = $conf->{format} || 'Atom'; 
     44 
     45    local $XML::Atom::DefaultVersion = "1.0"; 
    4046 
    4147    # generate feed 
     
    5157        $entry->title($e->title); 
    5258        $entry->link($e->link); 
    53         $entry->summary($e->body_text); 
    54         $entry->content($e->body); 
     59        $entry->summary($e->body_text) if defined $e->body; 
     60        $entry->content($e->body) 
     61            if $self->conf->{full_content} && defined $e->body; 
    5562        $entry->category(join(' ', @{$e->tags})); 
    5663        $entry->issued($e->date) if $e->date; 
     
    151158=head1 CONFIG 
    152159 
    153 =head2 format 
     160=over 4 
     161 
     162=item format 
    154163 
    155164Specify the format of feed. C<Plagger::Plugin::Publish::Feed> supports 
    156165the following syndication feed formats: 
    157166 
    158 =over 4 
    159  
    160 =item * Atom (default) 
    161  
    162 =item * RSS 
     167=over 8 
     168 
     169=item Atom (default) 
     170 
     171=item RSS 
    163172 
    164173=back 
    165174 
    166 =head2 dir 
     175=item dir 
    167176 
    168177Directory to save feed files in. 
    169178 
    170 =head2 filename 
     179=item filename 
    171180 
    172181Filename to be used to create feed files. It defaults to C<%i.rss> for 
     
    174183like printf(): 
    175184 
    176 =over 4 
    177  
    178 =item * %u url 
    179  
    180 =item * %l link 
    181  
    182 =item * %t title 
    183  
    184 =item * %i id 
     185=over 8 
     186 
     187=item %u url 
     188 
     189=item %l link 
     190 
     191=item %t title 
     192 
     193=item %i id 
    185194 
    186195=back 
    187196 
     197=item full_content 
     198 
     199Whether to publish full content feed. Defaults to 1. 
     200 
     201=back 
     202 
    188203=head1 AUTHOR 
    189204 
  • trunk/plagger/lib/Plagger/Plugin/Publish/Gmail.pm

    r908 r1173  
    6565    } 
    6666 
    67     my $body = $self->templatize($context, $feed); 
     67    my $body = $self->templatize('gmail_notify.tt', { feed => $feed }); 
    6868 
    6969    my $cfg = $self->conf; 
     
    184184} 
    185185 
    186 sub templatize { 
    187     my($self, $context, $feed) = @_; 
    188     my $tt = $context->template(); 
    189     $tt->process('gmail_notify.tt', { 
    190         feed => $feed, 
    191     }, \my $out) or $context->error($tt->error); 
    192     $out; 
    193 } 
    194  
    195186sub DESTORY { 
    196187    my $self = shift; 
  • trunk/plagger/lib/Plagger/Plugin/Publish/IMAP.pm

    r795 r1173  
    6161     $feed_title =~ tr/,//d; 
    6262  my $subject    = $entry->title || '(no-title)'; 
    63   my $body       = $self->templatize($context, $args); 
     63  my $body       = $self->templatize('mail.tt', { entry => $args->{entry}, feed => $args->{feed} }); 
    6464  my $now = Plagger::Date->now(timezone => $context->conf->{timezone}); 
    6565  $msg = MIME::Lite->new( 
     
    8282  store_maildir($self, $context,$msg->as_string()); 
    8383  $self->{msg} += 1; 
    84 } 
    85  
    86 sub templatize { 
    87   my ($self, $context, $args) = @_; 
    88   my $tt = $context->template(); 
    89   $tt->process( 'mail.tt', { 
    90     entry => $args->{entry}, 
    91     feed  => $args->{feed}, 
    92   }, \my $out ) or $context->error($tt->error); 
    93   $out; 
    9484} 
    9585 
  • trunk/plagger/lib/Plagger/Plugin/Publish/JavaScript.pm

    r934 r1173  
    3131    $context->log(info => "writing output to $path"); 
    3232 
    33     my $body = $self->templatize($context, $args->{feed}); 
     33    my $body = $self->templatize('javascript.tt', { feed => $args->{feed} }); 
    3434 
    3535    open my $out, ">:utf8", $path or $context->error("$path: $!"); 
     
    6262    $path =~ s!\s+!_!g; 
    6363    $path; 
    64 } 
    65  
    66 sub templatize { 
    67     my($self, $context, $feed) = @_; 
    68     my $tt = $context->template(); 
    69     $tt->process('javascript.tt', { 
    70         feed => $feed, 
    71     }, \my $out) or $context->error($tt->error); 
    72     $out; 
    7364} 
    7465 
  • trunk/plagger/lib/Plagger/Plugin/Publish/MT.pm

    r792 r1173  
    3131sub feed { 
    3232    my ($self, $context, $args) = @_; 
    33     my $body = $context->templatize( 
    34         $self, 
     33    my $body = $self->templatize( 
    3534        $self->{conf}->{template} || 'mt.tt', 
    3635        { feed => $args->{feed} } 
  • trunk/plagger/lib/Plagger/Plugin/Publish/MTWidget.pm

    r387 r1173  
    3939    my $blog_id = $self->conf->{blog_id} || 1; 
    4040    my $title = $self->conf->{title} || $args->{feed}->title; 
    41     my $body  = $self->templatize($context, $args); 
     41    my $body  = $self->templatize('mt_widget.tt', $args); 
    4242 
    4343    my $trimed_title = substr($title, 0, 10); 
     
    5959    $tmpl->text($body);