diff options
author | Daniel Friesel <derf@finalrewind.org> | 2019-05-29 20:01:52 +0200 |
---|---|---|
committer | Daniel Friesel <derf@finalrewind.org> | 2019-05-29 20:01:52 +0200 |
commit | 155f9f39cc83fcf83e5dd48ae58b09736281c912 (patch) | |
tree | 6d181034a0f0599b9c5929e5db31d2f25435281c | |
parent | 146b3a2682c7c91984b15bfa34325558201203ba (diff) |
use journey-specific status links -> one twitter card per journey
-rwxr-xr-x | lib/Travelynx.pm | 2 | ||||
-rwxr-xr-x | lib/Travelynx/Controller/Traveling.pm | 13 | ||||
-rw-r--r-- | 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 @@ <a class="action-share blue-text right" data-text="Ich bin gerade <%= $attrib %> <%= $journey->{train_type} %> <%= $journey->{train_no} %> nach <%= $journey->{arr_name} %> #NowTräwelling #dbl" % if (current_user()->{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 %>" % } > <i class="material-icons left">share</i> Teilen |