From 155f9f39cc83fcf83e5dd48ae58b09736281c912 Mon Sep 17 00:00:00 2001 From: Daniel Friesel Date: Wed, 29 May 2019 20:01:52 +0200 Subject: [PATCH] use journey-specific status links -> one twitter card per journey --- lib/Travelynx.pm | 2 ++ lib/Travelynx/Controller/Traveling.pm | 13 +++++++++++-- templates/_checked_in.html.ep | 2 +- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/lib/Travelynx.pm b/lib/Travelynx.pm index 209a471..19d6edf 100755 --- a/lib/Travelynx.pm +++ b/lib/Travelynx.pm @@ -2177,7 +2177,9 @@ sub startup { $r->get('/register')->to('account#registration_form'); $r->get('/reg/:id/:token')->to('account#verify'); $r->get('/status/:name')->to('traveling#user_status'); + $r->get('/status/:name/:ts')->to('traveling#user_status'); $r->get('/ajax/status/:name')->to('traveling#public_status_card'); + $r->get('/ajax/status/:name/:ts')->to('traveling#public_status_card'); $r->post('/action')->to('traveling#log_action'); $r->post('/geolocation')->to('traveling#geolocation'); $r->post('/list_departures')->to('traveling#redirect_to_station'); diff --git a/lib/Travelynx/Controller/Traveling.pm b/lib/Travelynx/Controller/Traveling.pm index de79728..59991a8 100755 --- a/lib/Travelynx/Controller/Traveling.pm +++ b/lib/Travelynx/Controller/Traveling.pm @@ -29,6 +29,7 @@ sub user_status { my ($self) = @_; my $name = $self->stash('name'); + my $ts = $self->stash('ts'); my $user = $self->get_privacy_by_name($name); if ( $user and ( $user->{public_level} & 0x02 ) ) { @@ -41,7 +42,16 @@ sub user_status { ->to_abs->scheme('https'), ); - if ( $status->{checked_in} ) { + if ( + $ts + and ( not $status->{checked_in} + or $status->{sched_departure}->epoch != $ts ) + ) + { + $tw_data{title} = "Bahnfahrt beendet"; + $tw_data{description} = "${name} hat das Ziel erreicht"; + } + elsif ( $status->{checked_in} ) { $tw_data{title} = "${name} ist unterwegs"; $tw_data{description} = sprintf( '%s %s von %s nach %s', @@ -53,7 +63,6 @@ sub user_status { if ( $status->{real_arrival}->epoch ) { $tw_data{description} .= $status->{real_arrival} ->strftime(' – Ankunft gegen %H:%M Uhr'); - } } else { diff --git a/templates/_checked_in.html.ep b/templates/_checked_in.html.ep index efe1eff..0683ae5 100644 --- a/templates/_checked_in.html.ep +++ b/templates/_checked_in.html.ep @@ -134,7 +134,7 @@ {is_public} & 0x02) { - data-url="<%= url_for('/status')->to_abs->scheme('https') %>/<%= current_user->{name} %>" + data-url="<%= url_for('/status')->to_abs->scheme('https') %>/<%= current_user->{name} %>/<%= $journey->{sched_departure}->epoch %>" % } > share Teilen