summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Friesel <daniel.friesel@uos.de>2019-11-20 17:41:21 +0100
committerDaniel Friesel <daniel.friesel@uos.de>2019-11-20 17:41:21 +0100
commit57f47d2a3caf380ca32b4230e81aecf41e72c63a (patch)
treeffa61191375885daee03623d7e6ab4344a124e0c
parent7b0a8ad4f83a262f73964114a002c8bd9d11d131 (diff)
allow routes to be edited after recording a journey
-rwxr-xr-xlib/Travelynx.pm30
-rwxr-xr-xlib/Travelynx/Controller/Traveling.pm14
-rw-r--r--templates/edit_journey.html.ep6
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'