From 146b3a2682c7c91984b15bfa34325558201203ba Mon Sep 17 00:00:00 2001 From: Daniel Friesel Date: Wed, 29 May 2019 18:10:45 +0200 Subject: add twitter preview tags to public user status page --- lib/Travelynx/Controller/Traveling.pm | 31 ++++++++++++++++++++++++++++++- templates/layouts/default.html.ep | 3 +++ 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/lib/Travelynx/Controller/Traveling.pm b/lib/Travelynx/Controller/Traveling.pm index 20a7e73..de79728 100755 --- a/lib/Travelynx/Controller/Traveling.pm +++ b/lib/Travelynx/Controller/Traveling.pm @@ -33,10 +33,39 @@ sub user_status { if ( $user and ( $user->{public_level} & 0x02 ) ) { my $status = $self->get_user_status( $user->{id} ); + + my %tw_data = ( + card => 'summary', + site => '@derfnull', + image => $self->url_for('/static/icons/icon-512x512.png') + ->to_abs->scheme('https'), + ); + + if ( $status->{checked_in} ) { + $tw_data{title} = "${name} ist unterwegs"; + $tw_data{description} = sprintf( + '%s %s von %s nach %s', + $status->{train_type}, + $status->{train_line} // $status->{train_no}, + $status->{dep_name}, + $status->{arr_name} // 'irgendwo' + ); + if ( $status->{real_arrival}->epoch ) { + $tw_data{description} .= $status->{real_arrival} + ->strftime(' – Ankunft gegen %H:%M Uhr'); + + } + } + else { + $tw_data{title} = "${name} ist gerade nicht eingecheckt"; + $tw_data{description} = "Letztes Fahrtziel: $status->{arr_name}"; + } + $self->render( 'user_status', name => $name, - journey => $status + journey => $status, + twitter => \%tw_data, ); } else { diff --git a/templates/layouts/default.html.ep b/templates/layouts/default.html.ep index eef610f..4423060 100644 --- a/templates/layouts/default.html.ep +++ b/templates/layouts/default.html.ep @@ -7,6 +7,9 @@ + % while (my ($key, $value) = each %{stash('twitter') // {}}) { + + % } % my $av = 'v25'; # asset version -- cgit v1.2.3