From: Matt S Trout Date: Sat, 7 Mar 2009 21:12:42 +0000 (-0500) Subject: fix up code to 404 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2Fcatbook-code.git;a=commitdiff_plain;h=e639dea98fb69c9382b0823026d8a62111d3053b fix up code to 404 --- diff --git a/lib/LolCatalyst/Lite/Controller/Translate.pm b/lib/LolCatalyst/Lite/Controller/Translate.pm index 749b3ac..b9f7eb1 100644 --- a/lib/LolCatalyst/Lite/Controller/Translate.pm +++ b/lib/LolCatalyst/Lite/Controller/Translate.pm @@ -37,6 +37,9 @@ sub view :Chained('object') :PathPart('') :Args(0) { sub translate_to :Chained('object') :PathPart('to') :Args(1) { my ($self, $c, $to) = @_; my $object = $c->stash->{object}; + unless ($object->can_translate_to($to)) { + $c->detach('/error_404'); + } $c->stash( result => $object->translated_to($to) ); diff --git a/lib/LolCatalyst/Lite/Snippet.pm b/lib/LolCatalyst/Lite/Snippet.pm index abccf30..5beefcd 100644 --- a/lib/LolCatalyst/Lite/Snippet.pm +++ b/lib/LolCatalyst/Lite/Snippet.pm @@ -5,7 +5,10 @@ use namespace::clean -except => 'meta'; has 'id' => (is => 'ro', required => 1); has 'text' => (is => 'ro', required => 1); -has '_translator' => (is => 'ro', required => 1, init_arg => 'translator'); +has '_translator' => ( + is => 'ro', required => 1, init_arg => 'translator', + handles => [ 'can_translate_to' ], +); sub translated { my ($self) = @_; diff --git a/lib/LolCatalyst/Lite/Translator.pm b/lib/LolCatalyst/Lite/Translator.pm index 05122a1..8832943 100644 --- a/lib/LolCatalyst/Lite/Translator.pm +++ b/lib/LolCatalyst/Lite/Translator.pm @@ -38,6 +38,11 @@ sub translate { $self->translate_to($self->default_target, $text); } +sub can_translate_to { + my ($self, $target) = @_; + return exists $self->_translators->{$target}; +} + sub translate_to { my ($self, $target, $text) = @_; $self->_translators->{$target}->translate($text);