Changeset 432

Show
Ignore:
Timestamp:
09/20/07 02:49:25 (1 year ago)
Author:
ogawa
Message:

Now can customize the bookmark title, by using MT template engine.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • HatenaBookmarker/trunk/HatenaBookmarker/HatenaBookmarker.pl

    r431 r432  
    2828    settings             => new MT::PluginSettings([ 
    2929        ['hatena_username', { Default => '' }], 
    30         ['hatena_password', { Default => '' }] 
     30        ['hatena_password', { Default => '' }], 
     31        ['hatena_bm_title', { Default => q(<$MTBlogName encode_html="1"$>: <$MTEntryTitle encode_html="1"$>) }], 
    3132    ]) 
    3233}); 
     
    104105        my $entry = $class->load($entry_id) 
    105106            or return $app->error($plugin->translate('Invalid entry_id')); 
    106         bookmark_entry($app, $entry) 
    107             if $entry->status == MT::Entry::RELEASE(); 
     107        if ($entry->status == MT::Entry::RELEASE()) { 
     108            MT::Util::start_background_task( 
     109                sub { bookmark_entry($app, $entry) } 
     110            ); 
     111        } 
    108112    } 
    109113    $app->call_return; 
     
    153157    my $saved_title   = $bookmark->title; 
    154158    my $saved_summary = extract_summary($bookmark); 
    155     my $title         = $entry->blog->name . ': ' . $entry->title
     159    my $title         = format_bm_title($config->{hatena_bm_title}, $entry)
    156160    my $summary       = tags2summary($entry) || keywords2summary($entry->keywords) || ''; 
    157161 
     
    190194} 
    191195 
     196# format bookmark title 
     197use MT::Template::Context; 
     198use MT::Builder; 
     199sub format_bm_title { 
     200    my ($format, $entry) = @_; 
     201    my $ctx = MT::Template::Context->new; 
     202    $ctx->stash('entry', $entry); 
     203    $ctx->stash('blog' , $entry->blog); 
     204    my $builder = MT::Builder->new; 
     205    my $tokens = $builder->compile($ctx, $format) 
     206        or return $ctx->error($builder->errstr); 
     207    defined(my $title = $builder->build($ctx, $tokens)) 
     208        or return $ctx->error($builder->errstr); 
     209 
     210    $title; 
     211} 
     212 
    192213# extract summary text from a hatena entry 
    193214sub extract_summary { 
    194     my ($entry) = @_
     215    my $entry = shift
    195216    my $summary = ''; 
    196     my $dc = XML::Atom::Namespace->new(dc => 'http://purl.org/dc/elements/1.1/')
    197     for my $subject ($entry->getlist($dc, 'subject')) { 
     217    my $dc_ns = 'http://purl.org/dc/elements/1.1/'
     218    for my $subject ($entry->getlist($dc_ns, 'subject')) { 
    198219        $summary .= '[' . $subject . ']'; 
    199220    } 
     
    203224# convert MT keywords to summary text 
    204225sub keywords2summary { 
    205     my ($str) = @_
     226    my $str = shift
    206227    return '' unless $str; 
    207228    $str =~ s/\#.*$//g; 
  • HatenaBookmarker/trunk/HatenaBookmarker/lib/HatenaBookmarker/L10N/ja.pm

    r431 r432  
    1414    'Hatena Username' => 'はてなIDのユーザ名', 
    1515    'Hatena Password' => 'はてなIDのパスワード', 
     16    'Bookmark Title Format' => 'ブックマークのタイトルの形式', 
    1617    'Bookmark Entries' => 'ブログ記事のブックマーク', 
    1718    'Are you sure you want to bookmark the selected entries?' => '選択したブログ記事をブックマークしてよろしいですか?', 
    1819    'Bookmark Pages' => 'ウェブページのブックマーク', 
    19     'Are you sure you want to bookmark the selected entries?' => '選択したウェブページをブックマークしてよろしいですか?', 
     20    'Are you sure you want to bookmark the selected pages?' => '選択したウェブページをブックマークしてよろしいですか?', 
    2021); 
    2122 
  • HatenaBookmarker/trunk/HatenaBookmarker/tmpl/config.tmpl

    r430 r432  
    99    <input type="password" name="hatena_password" id="hatena_password" size="20" value="<TMPL_VAR NAME=HATENA_PASSWORD ESCAPE=HTML>" /> 
    1010</mtapp:setting> 
     11<mtapp:setting 
     12    id="hatena_bm_title" 
     13    label="<__trans phrase="Bookmark Title Format">"> 
     14    <input name="hatena_bm_title" id="hatena_bm_title" size="50" value="<TMPL_VAR NAME=HATENA_BM_TITLE ESCAPE=HTML>" /> 
     15</mtapp:setting>