Changeset 433 for HatenaBookmarker
- Timestamp:
- 09/20/07 12:28:35 (14 months ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
HatenaBookmarker/trunk/HatenaBookmarker/HatenaBookmarker.pl
r432 r433 14 14 use MT; 15 15 16 our $VERSION = '0. 01';16 our $VERSION = '0.10'; 17 17 18 18 my $plugin = __PACKAGE__->new({ … … 33 33 }); 34 34 MT->add_plugin($plugin); 35 36 sub instance { $plugin } 35 37 36 38 sub init_registry { … … 73 75 } 74 76 77 ## 78 ## handlers 79 ## 75 80 sub post_save_entry { 76 81 my $class = shift; … … 102 107 my @entry_ids = $app->param('id') 103 108 or return $app->error($plugin->translate('No [_1] was selected to bookmark.', $type)); 104 for my $entry_id (@entry_ids) { 105 my $entry = $class->load($entry_id) 106 or return $app->error($plugin->translate('Invalid entry_id')); 107 if ($entry->status == MT::Entry::RELEASE()) { 108 MT::Util::start_background_task( 109 sub { bookmark_entry($app, $entry) } 110 ); 111 } 112 } 109 MT::Util::start_background_task( 110 sub { 111 for my $entry_id (@entry_ids) { 112 my $entry = $class->load($entry_id) 113 or return $app->error($plugin->translate('Invalid entry_id')); 114 if ($entry->status == MT::Entry::RELEASE()) { 115 bookmark_entry($app, $entry); 116 } 117 } 118 } 119 ); 113 120 $app->call_return; 114 121 } 115 122 123 ## 124 ## main 125 ## 116 126 use MT::Log; 117 127 use MT::I18N; … … 156 166 157 167 my $saved_title = $bookmark->title; 158 my $saved_summary = extract_summary($bookmark);168 my $saved_summary = get_bookmark_summary($bookmark); 159 169 my $title = format_bm_title($config->{hatena_bm_title}, $entry); 160 my $summary = tags2summary($entry) || keywords2summary($entry->keywords) || '';170 my $summary = get_entry_summary($entry); 161 171 162 172 my $enc = $app->config->PublishCharset || 'utf-8'; … … 193 203 } 194 204 } 205 206 ## 207 ## utilities 208 ## 195 209 196 210 # format bookmark title … … 212 226 213 227 # extract summary text from a hatena entry 214 sub extract_summary {228 sub get_bookmark_summary { 215 229 my $entry = shift; 216 230 my $summary = ''; … … 222 236 } 223 237 224 # convert MT keywords to summary text 225 sub keywords2summary { 226 my $str = shift; 227 return '' unless $str; 238 # extract summary text from an MT entry 239 sub get_entry_summary { 240 my $entry = shift; 241 tags_to_text($entry) || keywords_to_text($entry) || ''; 242 } 243 244 # convert entry tags to a flattened text 245 sub tags_to_text { 246 my $entry = shift; 247 return '' unless $entry->can('tags'); 248 249 my $text = ''; 250 for my $tag ($entry->tags) { 251 $text .= '[' . $tag . ']'; 252 } 253 $text; 254 } 255 256 # convert entry keywords to a flattened text 257 sub keywords_to_text { 258 my $entry = shift; 259 my $str = $entry->keywords or return ''; 228 260 $str =~ s/\#.*$//g; 229 261 $str =~ s/(^\s+|\s+$)//g; 230 262 return '' unless $str; 231 263 232 my $ summary= '';264 my $text = ''; 233 265 if ($str =~ m/[;,|]/) { 234 266 # separated by non-whitespaces … … 236 268 my $tag = $1; 237 269 $tag =~ s/(^[\["'\s;,|]+|[\]"'\s;,|]+$)//g; 238 $ summary.= '[' . $tag . ']' if $tag;270 $text .= '[' . $tag . ']' if $tag; 239 271 } 240 272 } else { … … 243 275 my $tag = $1; 244 276 $tag =~ s/(^[\["'\s]+|[\]"'\s]+$)//g; 245 $summary .= '[' . $tag . ']' if $tag; 246 } 247 } 248 $summary; 249 } 250 251 # convert MT tags to summary text 252 sub tags2summary { 253 my $entry = shift; 254 return '' unless $entry->can('tags'); 255 256 my $summary = ''; 257 for my $tag ($entry->tags) { 258 $summary .= '[' . $tag . ']'; 259 } 260 $summary; 277 $text .= '[' . $tag . ']' if $tag; 278 } 279 } 280 $text; 261 281 } 262 282
![(please configure the [header_logo] section in trac.ini)](/public/chrome/common/trac_banner.png)