} 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;
sub textinfo :Local :Args(1) {
my( $self, $c, $textid ) = @_;
my $tradition = $c->model('Directory')->tradition( $textid );
+ ## Have to keep users in the same scope as tradition
+ my $newuser;
+ my $olduser;
unless( $tradition ) {
return _json_error( $c, 404, "No tradition with ID $textid" );
}
}
# Handle ownership change
- my $newuser;
if( exists $params->{'owner'} ) {
# Only admins can update user / owner
my $newownerid = delete $params->{'owner'};
unless( !$newownerid ||
- ( $tradition->has_user && $tradition->user->id eq $newownerid ) ) {
+ ( $tradition->has_user && $tradition->user->email eq $newownerid ) ) {
unless( $c->user->get_object->is_admin ) {
return _json_error( $c, 403,
"Only admin users can change tradition ownership" );
}
- $newuser = $m->find_user({ username => $newownerid });
+ $newuser = $m->find_user({ email => $newownerid });
unless( $newuser ) {
return _json_error( $c, 500, "No such user " . $newownerid );
}
+ if( $tradition->has_user ) {
+ $olduser = $tradition->user;
+ $olduser->remove_tradition( $tradition );
+ }
$newuser->add_tradition( $tradition );
$changed = 1;
}
textid => $textid,
name => $tradition->name,
language => $tradition->language,
- public => $tradition->public,
- owner => $tradition->user ? $tradition->user->id : undef,
+ public => $tradition->public || 0,
+ owner => $tradition->user ? $tradition->user->email : 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') ) {