From: Tara L Andrews Date: Tue, 11 Sep 2012 08:02:25 +0000 (+0200) Subject: better error handling of missing / forbidden traditions X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=d3cdef68c7090fe2883ed66d69a325cc0f47b59e;p=scpubgit%2Fstemmaweb.git better error handling of missing / forbidden traditions --- diff --git a/lib/stemmaweb/Controller/Stexaminer.pm b/lib/stemmaweb/Controller/Stexaminer.pm index 264cef1..0b5b395 100644 --- a/lib/stemmaweb/Controller/Stexaminer.pm +++ b/lib/stemmaweb/Controller/Stexaminer.pm @@ -32,16 +32,24 @@ graph identified by $stemmaid. sub index :Path :Args(2) { my( $self, $c, $textid, $stemid ) = @_; my $m = $c->model('Directory'); + $c->stash->{template} = 'stexaminer.tt'; + + # Make sure the tradition exists and is viewable my $tradition = $m->tradition( $textid ); + unless( $tradition ) { + $c->response->status( 404 ); + $c->stash->{'error'} = "No tradition with ID $textid"; + return; + } my $ok = _check_permission( $c, $tradition ); return unless $ok; + if( $tradition->stemma_count ) { my $stemma = $tradition->stemma( $stemid ); $c->stash->{svg} = $stemma->as_svg( { size => [ 600, 350 ] } ); $c->stash->{graphdot} = $stemma->editable({ linesep => ' ' }); $c->stash->{text_id} = $textid; $c->stash->{text_title} = $tradition->name; - $c->stash->{template} = 'stexaminer.tt'; # Get the analysis options my( $use_type1, $ignore_sort ) = ( 0, 'none' ); @@ -109,8 +117,7 @@ sub _check_permission { # ...nope. Forbidden! $c->response->status( 403 ); - $c->response->body( 'You do not have permission to view this tradition' ); - $c->forward('View::Plain'); + $c->stash->{'error'} = 'You do not have permission to view this tradition'; return 0; } diff --git a/root/src/stexaminer.tt b/root/src/stexaminer.tt index 50763ec..9867a8a 100644 --- a/root/src/stexaminer.tt +++ b/root/src/stexaminer.tt @@ -6,7 +6,11 @@ [% END -%] @@ -18,6 +22,11 @@ var graphdot = '[% graphdot %]';

[% text_title %]

Analysis options

+
+[% IF error -%] + [% error %] +[% END -%] +
[% FOREACH row IN variants -%]