X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=TreeOfTexts%2Flib%2FTreeOfTexts%2FController%2FRoot.pm;fp=TreeOfTexts%2Flib%2FTreeOfTexts%2FController%2FRoot.pm;h=0000000000000000000000000000000000000000;hb=5c9ecf6629514c0b83ccf41052f13f5f02e982f2;hp=cb3b9d9ce7bf637b584723d7689cc289901510e6;hpb=f13b558285a3d2459e2b90ffac2acfe00f57e73b;p=scpubgit%2Fstemmatology.git diff --git a/TreeOfTexts/lib/TreeOfTexts/Controller/Root.pm b/TreeOfTexts/lib/TreeOfTexts/Controller/Root.pm deleted file mode 100644 index cb3b9d9..0000000 --- a/TreeOfTexts/lib/TreeOfTexts/Controller/Root.pm +++ /dev/null @@ -1,171 +0,0 @@ -package TreeOfTexts::Controller::Root; -use Moose; -use namespace::autoclean; -use Text::Tradition::Analysis qw/ run_analysis /; - - -BEGIN { extends 'Catalyst::Controller' } - -# -# Sets the actions in this controller to be registered with no prefix -# so they function identically to actions created in MyApp.pm -# -__PACKAGE__->config(namespace => ''); - -=head1 NAME - -TreeOfTexts::Controller::Root - Root Controller for TreeOfTexts - -=head1 DESCRIPTION - -Serves up the main container pages. - -=head1 URLs - -=head2 index - -The root page (/). Serves the main container page, from which the various -components will be loaded. - -=cut - -sub index :Path :Args(0) { - my ( $self, $c ) = @_; - - $c->stash->{template} = 'index.tt'; -} - -=head1 Elements of index page - -=head2 directory - - GET /directory - -Serves a snippet of HTML that lists the available texts. Eventually this will be available texts by user. - -=cut -sub directory :Local :Args(0) { - my( $self, $c ) = @_; - my $m = $c->model('Directory'); - # TODO not used yet, will load user texts later - my $user = $c->request->param( 'user' ) || 'ALL'; - my @textlist; - foreach my $id ( $m->tradition_ids ) { - my $data = { - 'id' => $id, - 'name' => $m->name( $id ), - }; - push( @textlist, $data ); - } - - $c->stash->{texts} = \@textlist; - $c->stash->{template} = 'directory.tt'; -} - -=head2 alignment - - GET /alignment/$textid - -Returns an alignment table for the text specified at $textid. - -=cut - -sub alignment :Local :Args(1) { - my( $self, $c, $textid ) = @_; - my $m = $c->model('Directory'); - my $collation = $m->tradition( $textid )->collation; - my $alignment = $collation->make_alignment_table; - - # Turn the table, so that witnesses are by column and the rows - # are by rank. - my $wits = [ map { $_->{'witness'} } @{$alignment->{'alignment'}} ]; - my $rows; - foreach my $i ( 0 .. $alignment->{'length'} - 1 ) { - my @rankrdgs = map { $_->{'tokens'}->[$i]->{'t'} } - @{$alignment->{'alignment'}}; - push( @$rows, { 'rank' => $i+1, 'readings' => \@rankrdgs } ); - } - $c->log->debug( Dumper( $rows ) ); - $c->stash->{'witnesses'} = $wits; - $c->stash->{'table'} = $rows; - $c->stash->{'template'} = 'alignment.tt'; -} - -=head2 stemma - - GET /stemma/$textid - POST /stemma/$textid, { 'dot' => $dot_string } - -Returns an SVG representation of the stemma hypothesis for the text. If -the URL is called with POST and a new dot string, updates the stemma and -returns the SVG as with GET. - -=cut - -sub stemma :Local :Args(1) { - my( $self, $c, $textid ) = @_; - my $m = $c->model('Directory'); - my $tradition = $m->tradition( $textid ); - - if( $c->req->method eq 'POST' ) { - # Update the stemma - my $dot = $c->request->body_params->{'dot'}; - $tradition->add_stemma( $dot ); - $m->store( $tradition ); - } - - $c->stash->{'result'} = $tradition->stemma->as_svg; - $c->forward('View::SVG'); -} - -=head2 stemmadot - - GET /stemmadot/$textid - -Returns the 'dot' format representation of the current stemma hypothesis. - -=cut - -sub stemmadot :Local :Args(1) { - my( $self, $c, $textid ) = @_; - my $m = $c->model('Directory'); - my $tradition = $m->tradition( $textid ); - - $c->response->body( $tradition->stemma->editable ); - $c->forward('View::Plain'); -} - -=head2 default - -Standard 404 error page - -=cut - -sub default :Path { - my ( $self, $c ) = @_; - $c->response->body( 'Page not found' ); - $c->response->status(404); -} - -=head2 end - -Attempt to render a view, if needed. - -=cut - -sub end : ActionClass('RenderView') {} - -=head1 AUTHOR - -Tara L Andrews - -=head1 LICENSE - -This library is free software. You can redistribute it and/or modify -it under the same terms as Perl itself. - -=cut - -__PACKAGE__->meta->make_immutable; - -1;