diff options
| -rw-r--r-- | lib/DBInfoscreen/Controller/Stationboard.pm | 32 | ||||
| -rw-r--r-- | templates/_error.html.ep | 4 | ||||
| -rw-r--r-- | templates/layouts/app.html.ep | 4 | 
3 files changed, 28 insertions, 12 deletions
| diff --git a/lib/DBInfoscreen/Controller/Stationboard.pm b/lib/DBInfoscreen/Controller/Stationboard.pm index f7c469a..55dcd0b 100644 --- a/lib/DBInfoscreen/Controller/Stationboard.pm +++ b/lib/DBInfoscreen/Controller/Stationboard.pm @@ -28,7 +28,9 @@ my %default = (  );  sub handle_no_results { -	my ( $self, $station, $errstr ) = @_; +	my ( $self, $station, $data ) = @_; + +	my $errstr = $data->{errstr};  	my @candidates = map { [ $_->[1], $_->[0] ] }  	  Travel::Status::DE::IRIS::Stations::get_station($station); @@ -43,17 +45,27 @@ sub handle_no_results {  		);  		return;  	} +	if ( $data->{station_ds100} and $data->{station_ds100} =~ m{ ^ [XYZ] }x ) { +		$self->render( +			'landingpage', +			error => ( $errstr // "Keine Abfahrten an '$station'" ) +			  . '. Das von DBF genutzte IRIS-Backend unterstützt im Regelfall nur innerdeutsche Zugfahrten.', +			hide_opts => 0 +		); +		return; +	}  	$self->render(  		'landingpage', -		error     => ( $errstr // "Got no results for '$station'" ), +		error     => ( $errstr // "Keine Abfahrten an '$station'" ),  		hide_opts => 0  	);  	return;  }  sub handle_no_results_json { -	my ( $self, $station, $errstr, $api_version ) = @_; +	my ( $self, $station, $data, $api_version ) = @_; +	my $errstr   = $data->{errstr};  	my $callback = $self->param('callback');  	$self->res->headers->access_control_allow_origin(q{*}); @@ -221,6 +233,8 @@ sub get_results_for {  		$data = {  			results => [ $status->results ],  			errstr  => $status->errstr, +			station_ds100 => +			  ( $status->station ? $status->station->{ds100} : undef ),  			station_name =>  			  ( $status->station ? $status->station->{name} : $station ),  		}; @@ -317,16 +331,15 @@ sub handle_request {  		$opt{lookahead} = 200;  	} -	my $data   = get_results_for( $station, %opt ); -	my $errstr = $data->{errstr}; +	my $data = get_results_for( $station, %opt );  	if ( not @{ $data->{results} } and $template eq 'json' ) { -		$self->handle_no_results_json( $station, $errstr, $api_version ); +		$self->handle_no_results_json( $station, $data, $api_version );  		return;  	}  	if ( not @{ $data->{results} } ) { -		$self->handle_no_results( $station, $errstr ); +		$self->handle_no_results( $station, $data );  		return;  	} @@ -1104,7 +1117,10 @@ sub handle_result {  				# no longer supported  				$self->handle_no_results_json(  					undef, -					"JSON API version=${apiver} is no longer supported", +					{ +						errstr => +						  "JSON API version=${apiver} is no longer supported" +					},  					$Travel::Status::DE::IRIS::VERSION  				);  				return; diff --git a/templates/_error.html.ep b/templates/_error.html.ep index 4abfb4e..8585f90 100644 --- a/templates/_error.html.ep +++ b/templates/_error.html.ep @@ -1,5 +1,5 @@  <div class="error"><strong>Fehler:</strong> -<pre> +<p style="font-family: Monospace;">  %= $error -</pre> +</p>  </div> diff --git a/templates/layouts/app.html.ep b/templates/layouts/app.html.ep index 83c83fa..a897747 100644 --- a/templates/layouts/app.html.ep +++ b/templates/layouts/app.html.ep @@ -101,9 +101,9 @@  <div class="container">  % if (my $error = stash 'error') {  <div class="error"><strong>Fehler:</strong> -<pre> +<p>  %= $error -</pre> +</p>  </div>  % }  % elsif (stash('stationlist')) { | 
