diff options
| -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' | 
