X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2Fstemmaweb%2FController%2FStexaminer.pm;h=535bd296fac4cb45065f7638d9e6587f8d3225fd;hb=ea77ecb8864816b446be21ae0356e31523621120;hp=37c2dea655db05f3cee749ad88725edff729d819;hpb=c655153c4b67f2460832281ac412d374fb5ae6e5;p=scpubgit%2Fstemmaweb.git diff --git a/lib/stemmaweb/Controller/Stexaminer.pm b/lib/stemmaweb/Controller/Stexaminer.pm index 37c2dea..535bd29 100644 --- a/lib/stemmaweb/Controller/Stexaminer.pm +++ b/lib/stemmaweb/Controller/Stexaminer.pm @@ -5,7 +5,6 @@ use Encode qw/ decode_utf8 /; use File::Temp; use JSON; use Text::Tradition::Analysis qw/ run_analysis wit_stringify /; -use Text::Tradition::Collation; use Text::Tradition::Stemma; BEGIN { extends 'Catalyst::Controller' } @@ -33,16 +32,26 @@ 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 ] } ); + my $svgstr = $stemma->as_svg(); + $svgstr =~ s/\n/ /g; + $c->stash->{svg} = $svgstr; $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' ); @@ -110,8 +119,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; } @@ -132,10 +140,8 @@ sub graphsvg :Local { my @layerwits = $c->request->param('layerwits[]'); open my $stemma_fh, '<', \$dot; binmode( $stemma_fh, ':encoding(UTF-8)' ); - my $emptycoll = Text::Tradition::Collation->new(); - my $tempstemma = Text::Tradition::Stemma->new( - collation => $emptycoll, 'dot' => $stemma_fh ); - my $svgopts = { size => [ 600, 350 ] }; + my $tempstemma = Text::Tradition::Stemma->new( 'dot' => $stemma_fh ); + my $svgopts = {}; if( @layerwits ) { $svgopts->{'layerwits'} = \@layerwits; }