# <$Id: MTMyTags.pl,v 1.16 2003/03/07 16:19:45 akosut Exp $> use MT::Template::Context; use MT::Util qw( dirify encode_html format_ts ); use strict; MT::Template::Context->add_tag(SiteURL => sub { return 'http://akosut.com/'; }); MT::Template::Context->add_tag(CommentLink => sub { my $ctx = shift; my $comment = $ctx->stash('comment') or return $ctx->_no_comment_error('MTCommentLink'); my $entry = $ctx->stash('entry') || MT::Entry->load($comment->entry_id); my $blog = $ctx->stash('blog'); return $ctx->_no_entry_error('MTCommentLink') unless $entry; return $blog->archive_url . $entry->archive_file() . '#c' . sprintf("%06d", $comment->id); }); MT::Template::Context->add_tag(EntryRSSLink => sub { my $ctx = shift; my $entry = $ctx->stash('entry') or return $ctx->_no_entry_error('MTEntryRSSLink'); my $blog = $ctx->stash('blog'); my $old_archive_url = 'http://akosut.com/log/archives/'; # Old entries get an old link if ($entry->id < 49) { return $old_archive_url . sprintf("%06d", $entry->id) . '.html'; } if ($entry->id < 73) { return $old_archive_url . $entry->archive_file(); } return $blog->archive_url . $entry->archive_file(); }); MT::Template::Context->add_conditional_tag(EntryRSSIfExcerpt => sub { my $ctx = shift; my $entry = $ctx->stash('entry') or return $ctx->_no_entry_error('MTEntryRSSIfExcerpt'); return ($entry->id <= 69); }); MT::Template::Context->add_conditional_tag(EntryRSSIfFullEntry => sub { my $ctx = shift; my $entry = $ctx->stash('entry') or return $ctx->_no_entry_error('MTEntryRSSIfFullEntry'); return ($entry->id > 69); }); MT::Template::Context->add_conditional_tag(EntryIfHasPings => sub { my $ctx = shift; my $entry = $ctx->stash('entry') or return $ctx->_no_entry_error('MTEntryIfHasPings'); return $entry->ping_count > 0; }); MT::Template::Context->add_conditional_tag(EntryIfExcerpt => sub { my $ctx = shift; my $entry = $ctx->stash('entry') or return $ctx->_no_entry_error('MTEntryIfExcerpt'); return $entry->excerpt; }); MT::Template::Context->add_conditional_tag(EntryUnlessExcerpt => sub { my $ctx = shift; my $entry = $ctx->stash('entry') or return $ctx->_no_entry_error('MTEntryUnlessExcerpt'); return not $entry->excerpt; }); MT::Template::Context->add_global_filter(idify => sub { my $s = dirify(shift); $s =~ s/[^a-z0-9]//g; return $s; }); sub encode_xmp { my $s = encode_html(shift, 1); $s =~ s/\t/ /g; $s; } MT::Template::Context->add_global_filter(xmp => sub { my $s = shift; $s =~ s{
" . encode_xmp($1) . ""}ges; # "peephole" optimization (not really) $s =~ s{
}{}g;
return $s;
});