diff options
author | Daniel Friesel <daniel.friesel@uos.de> | 2019-11-20 17:41:21 +0100 |
---|---|---|
committer | Daniel Friesel <daniel.friesel@uos.de> | 2019-11-20 17:41:21 +0100 |
commit | 57f47d2a3caf380ca32b4230e81aecf41e72c63a (patch) | |
tree | ffa61191375885daee03623d7e6ab4344a124e0c | |
parent | 7b0a8ad4f83a262f73964114a002c8bd9d11d131 (diff) |
allow routes to be edited after recording a journey
-rwxr-xr-x | lib/Travelynx.pm | 30 | ||||
-rwxr-xr-x | lib/Travelynx/Controller/Traveling.pm | 14 | ||||
-rw-r--r-- | templates/edit_journey.html.ep | 6 |
3 files changed, 50 insertions, 0 deletions
diff --git a/lib/Travelynx.pm b/lib/Travelynx.pm index f13dd60..07e0c4c 100755 --- a/lib/Travelynx.pm +++ b/lib/Travelynx.pm @@ -817,6 +817,19 @@ sub startup { } )->rows; } + elsif ( $key eq 'route' ) { + my @new_route = map { [ $_, {}, undef ] } @{$value}; + $rows = $db->update( + 'journeys', + { + route => JSON->new->encode( \@new_route ), + edited => $journey->{edited} | 0x0010, + }, + { + id => $journey_id, + } + )->rows; + } elsif ( $key eq 'comment' ) { $journey->{user_data}{comment} = $value; $rows = $db->update( @@ -871,6 +884,23 @@ sub startup { { return 'Die Zugfahrt ist länger als 24 Stunden.'; } + if ( $journey->{kmh_route} > 500 or $journey->{kmh_beeline} > 500 ) + { + return 'Zugfahrten mit über 500 km/h? Schön wär\'s.'; + } + if ( $journey->{edited} & 0x0010 ) { + my @unknown_stations; + for my $station ( @{ $journey->{route} } ) { + my $station_info = get_station( $station->[0] ); + if ( not $station_info ) { + push( @unknown_stations, $station->[0] ); + } + } + if (@unknown_stations) { + return 'Unbekannte Stationen: ' + . join( ', ', @unknown_stations ); + } + } return undef; } diff --git a/lib/Travelynx/Controller/Traveling.pm b/lib/Travelynx/Controller/Traveling.pm index c8f975f..c05586a 100755 --- a/lib/Travelynx/Controller/Traveling.pm +++ b/lib/Travelynx/Controller/Traveling.pm @@ -719,6 +719,16 @@ sub edit_journey { } } } + if ( defined $self->param('route') ) { + my @route_old = map { $_->[0] } @{ $journey->{route} }; + my @route_new = split( qr{\r?\n\r?}, $self->param('route') ); + @route_new = grep { $_ ne '' } @route_new; + if ( join( '|', @route_old ) ne join( '|', @route_new ) ) { + $error + = $self->update_journey_part( $db, $journey->{id}, 'route', + [@route_new] ); + } + } if ( not $error ) { $journey = $self->get_journey( @@ -742,6 +752,10 @@ sub edit_journey { $key => $journey->{$key}->strftime('%d.%m.%Y %H:%M') ); } } + + $self->param( + route => join( "\n", map { $_->[0] } @{ $journey->{route} } ) ); + for my $key (qw(comment)) { if ( $journey->{user_data} and $journey->{user_data}{$key} ) { $self->param( $key => $journey->{user_data}{$key} ); diff --git a/templates/edit_journey.html.ep b/templates/edit_journey.html.ep index d1c1d47..a77bbd4 100644 --- a/templates/edit_journey.html.ep +++ b/templates/edit_journey.html.ep @@ -76,6 +76,12 @@ </td> </tr> <tr> + <th scope="row">Route</th> + <td> + %= text_area 'route', id => 'route', class => 'materialize-textarea' + </td> + </tr> + <tr> <th scope="row">Kommentar</th> <td> %= text_field 'comment' |