package stemmaweb::Controller::Root;
+use File::Temp;
use Moose;
use namespace::autoclean;
use Text::Tradition::Analysis qw/ run_analysis /;
$c->stash->{template} = 'index.tt';
}
+=head2 about
+
+A general overview/documentation page for the site.
+
+=cut
+
+sub about :Local :Args(0) {
+ my( $self, $c ) = @_;
+ $c->stash->{template} = 'about.tt';
+}
+
=head1 Elements of index page
=head2 directory
{ name: <name>,
language: <language>,
public: <is_public>,
- file: <fileupload> }
+ filename: <filename>,
+ file: <filedata> }
Creates a new tradition belonging to the logged-in user, with the given name
and the collation given in the uploaded file. The file type is indicated via
=cut
+## TODO Figure out how to mimic old-style HTML file uploads in AJAX / HTML5
sub newtradition :Local :Args(0) {
my( $self, $c ) = @_;
return _json_error( $c, 403, 'Cannot save a tradition without being logged in' )
my $user = $c->user->get_object;
# Grab the file upload, check its name/extension, and call the
# appropriate parser(s).
- my $upload = $c->request->upload('file');
+ my $upload = File::Temp->new();
+ print $upload $c->request->param('file');
+ close $upload;
my $name = $c->request->param('name') || 'Uploaded tradition';
my $lang = $c->request->param( 'language' ) || 'Default';
my $public = $c->request->param( 'public' ) ? 1 : undef;
- my( $ext ) = $upload->filename =~ /\.(\w+)$/;
+ my( $ext ) = $c->request->param( 'filename' ) =~ /\.(\w+)$/;
my %newopts = (
'name' => $name,
'language' => $lang,
'public' => $public,
- 'file' => $upload->tempname
+ 'file' => $upload->filename
);
my $tradition;
} catch {
$errmsg = "Unexpected parsing error";
}
- last if $tradition;
+ if( $tradition ) {
+ $errmsg = undef;
+ last;
+ }
}
} elsif( $ext =~ /^(txt|csv|xls(x)?)$/ ) {
# If it's Excel we need to pass excel => $ext;
textid => $textid,
name => $tradition->name,
language => $tradition->language,
- public => $tradition->public,
+ public => $tradition->public || 0,
owner => $tradition->user ? $tradition->user->id : undef,
witnesses => [ map { $_->sigil } $tradition->witnesses ],
};
- my @stemmasvg = map { $_->as_svg({ size => [ 500, 375 ] }) } $tradition->stemmata;
+ my @stemmasvg = map { $_->as_svg() } $tradition->stemmata;
map { $_ =~ s/\n/ /mg } @stemmasvg;
$textinfo->{stemmata} = \@stemmasvg;
$c->stash->{'result'} = $textinfo;
if( !$stemma && $tradition->stemma_count > $stemmaid ) {
$stemma = $tradition->stemma( $stemmaid );
}
- my $stemma_xml = $stemma ? $stemma->as_svg( { size => [ 500, 375 ] } ) : '';
+ my $stemma_xml = $stemma ? $stemma->as_svg() : '';
# What was requested, XML or JSON?
my $return_view = 'SVG';
if( my $accept_header = $c->req->header('Accept') ) {