package MT::Plugin::TextFilters; # Copyright, 2003, Jacques Distler. # # Adds a container tag -- loops on all available Text Filters # and tags -- the short name of the filter # -- the longer, descriptive name # (which make sense in a context), and # -- default filter for comments on this blog # -- short name of filter used by the current comment # -- same thing, but in preview mode # use MT::Template::Context; use MT::Blog; use MT 2.6; use vars qw( $VERSION ); $VERSION = 0.1; use strict; use warnings; MT::Template::Context->add_container_tag(TextFilters => \&text_filters ); MT::Template::Context->add_tag(FilterKey => \&filter_key ); MT::Template::Context->add_tag(FilterLabel => \&filter_label ); MT::Template::Context->add_tag(DefaultCommentFilter => \&default_comment_filter); MT::Template::Context->add_tag(CommentTextFilter => sub { return comment_convert_breaks(shift) || 0; }); MT::Template::Context->add_tag(CommentPreviewTextFilter => sub { return comment_convert_breaks(shift) || 0; }); sub comment_convert_breaks ($) { my $ctx = shift; if ($ctx->stash('tag') =~ /Preview/) { return $ctx->stash('comment_preview') ? $ctx->stash('comment_preview')->convert_breaks : $ctx->stash('convert_breaks'); } else { return $ctx->stash('comment') ? $ctx->stash('comment')->convert_breaks : undef; } } sub text_filters { my $ctx = shift; my $args = shift; my $content = ''; my $builder = $ctx->stash('builder'); my $tokens = $ctx->stash('tokens'); my $filters = MT->all_text_filters; for my $filter (keys %$filters) { $ctx->stash('mt_filter_key', $filter); $ctx->stash('mt_filter_label', $filters->{$filter}{label}); my $out = $builder->build($ctx, $tokens); $content .= $out; } $content; } sub filter_key { my $ctx = shift; return $ctx->stash('mt_filter_key'); } sub filter_label { my $ctx = shift; return $ctx->stash('mt_filter_label'); } sub default_comment_filter{ my $ctx = shift; my $blog =$ctx->stash('blog'); my $filter = $blog->comment_text_filters; return $$filter[0]; } 1;