summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBirte Kristina Friesel <derf@finalrewind.org>2024-06-15 17:50:56 +0200
committerBirte Kristina Friesel <derf@finalrewind.org>2024-06-15 17:50:56 +0200
commit9b256f0f0245e597f21823b7078ee1f17fa9911c (patch)
tree8ca48c6769aae1a9c12adf7d28b9f2d3e1f1bffb
parentb00c3698b2a9a8702a02c6c978560aad6cff8698 (diff)
remove service / sb_template selection; hardcode DBF with variable hafas flag
-rwxr-xr-xlib/Travelynx.pm3
-rw-r--r--lib/Travelynx/Controller/Account.pm23
-rw-r--r--lib/Travelynx/Model/Users.pm39
-rw-r--r--templates/_checked_in.html.ep25
-rw-r--r--templates/account.html.ep15
-rw-r--r--templates/use_external_links.html.ep82
6 files changed, 8 insertions, 179 deletions
diff --git a/lib/Travelynx.pm b/lib/Travelynx.pm
index ec17090..e8d3902 100755
--- a/lib/Travelynx.pm
+++ b/lib/Travelynx.pm
@@ -1551,6 +1551,7 @@ sub startup {
$ret =~ s{[{]tt[}]}{$opt{tt}}g;
$ret =~ s{[{]tn[}]}{$opt{tn}}g;
$ret =~ s{[{]id[}]}{$opt{id}}g;
+ $ret =~ s{[{]hafas[}]}{$opt{hafas}}g;
return $ret;
}
);
@@ -2469,7 +2470,6 @@ sub startup {
$authed_r->get('/account/hooks')->to('account#webhook');
$authed_r->get('/account/traewelling')->to('traewelling#settings');
$authed_r->get('/account/insight')->to('account#insight');
- $authed_r->get('/account/services')->to('account#services');
$authed_r->get('/ajax/status_card.html')->to('traveling#status_card');
$authed_r->get('/cancelled')->to('traveling#cancelled');
$authed_r->get('/fgr')->to('passengerrights#list_candidates');
@@ -2497,7 +2497,6 @@ sub startup {
$authed_r->post('/account/hooks')->to('account#webhook');
$authed_r->post('/account/traewelling')->to('traewelling#settings');
$authed_r->post('/account/insight')->to('account#insight');
- $authed_r->post('/account/services')->to('account#services');
$authed_r->post('/journey/add')->to('traveling#add_journey_form');
$authed_r->post('/journey/comment')->to('traveling#comment_form');
$authed_r->post('/journey/visibility')->to('traveling#visibility_form');
diff --git a/lib/Travelynx/Controller/Account.pm b/lib/Travelynx/Controller/Account.pm
index f1dc43e..5c101b1 100644
--- a/lib/Travelynx/Controller/Account.pm
+++ b/lib/Travelynx/Controller/Account.pm
@@ -831,29 +831,6 @@ sub insight {
}
-sub services {
- my ($self) = @_;
- my $user = $self->current_user;
-
- if ( $self->param('action') and $self->param('action') eq 'save' ) {
- my $sb = $self->param('stationboard');
- my $value = 0;
- if ( $sb =~ m{ ^ \d+ $ }x and $sb >= 0 and $sb <= 4 ) {
- $value = int($sb);
- }
- $self->users->use_external_services(
- uid => $user->{id},
- set => $value
- );
- $self->flash( success => 'external' );
- $self->redirect_to('account');
- }
-
- $self->param( stationboard =>
- $self->users->use_external_services( uid => $user->{id} ) );
- $self->render('use_external_links');
-}
-
sub webhook {
my ($self) = @_;
diff --git a/lib/Travelynx/Model/Users.pm b/lib/Travelynx/Model/Users.pm
index 1154a02..4d90d92 100644
--- a/lib/Travelynx/Model/Users.pm
+++ b/lib/Travelynx/Model/Users.pm
@@ -40,17 +40,6 @@ my %predicate_atoi = (
is_blocked_by => 3,
);
-my @sb_templates = (
- undef,
- [ 'DBF', 'https://dbf.finalrewind.org/{name}?rt=1#{tt}{tn}' ],
- [ 'bahn.expert', 'https://bahn.expert/{name}#{id}' ],
- [
- 'DBF HAFAS',
- 'https://dbf.finalrewind.org/{name}?rt=1&hafas=DB#{tt}{tn}'
- ],
- [ 'bahn.expert/regional', 'https://bahn.expert/regional/{name}#{id}' ],
-);
-
my %token_id = (
status => 1,
history => 2,
@@ -414,7 +403,7 @@ sub get {
my $user = $db->select(
'users',
'id, name, status, public_level, email, '
- . 'external_services, accept_follows, notifications, '
+ . 'accept_follows, notifications, '
. 'extract(epoch from registered_at) as registered_at_ts, '
. 'extract(epoch from last_seen) as last_seen_ts, '
. 'extract(epoch from deletion_requested) as deletion_requested_ts',
@@ -438,12 +427,8 @@ sub get {
past_status => $user->{public_level} & 0x08000 ? 1 : 0,
past_all => $user->{public_level} & 0x10000 ? 1 : 0,
email => $user->{email},
- sb_name => $user->{external_services}
- ? $sb_templates[ $user->{external_services} & 0x07 ][0]
- : undef,
- sb_template => $user->{external_services}
- ? $sb_templates[ $user->{external_services} & 0x07 ][1]
- : undef,
+ sb_template =>
+ 'https://dbf.finalrewind.org/{name}?rt=1&hafas={hafas}#{tt}{tn}',
registered_at => DateTime->from_epoch(
epoch => $user->{registered_at_ts},
time_zone => 'Europe/Berlin'
@@ -662,24 +647,6 @@ sub use_history {
}
}
-sub use_external_services {
- my ( $self, %opt ) = @_;
- my $db = $opt{db} // $self->{pg}->db;
- my $uid = $opt{uid};
- my $value = $opt{set};
-
- if ( defined $value ) {
- if ( $value < 0 or $value > 4 ) {
- $value = 0;
- }
- $db->update( 'users', { external_services => $value }, { id => $uid } );
- }
- else {
- return $db->select( 'users', ['external_services'], { id => $uid } )
- ->hash->{external_services};
- }
-}
-
sub get_webhook {
my ( $self, %opt ) = @_;
my $db = $opt{db} // $self->{pg}->db;
diff --git a/templates/_checked_in.html.ep b/templates/_checked_in.html.ep
index b42792e..19a94bb 100644
--- a/templates/_checked_in.html.ep
+++ b/templates/_checked_in.html.ep
@@ -111,12 +111,7 @@
% }
</div>
<div style="float: right; text-align: right;">
- % if ($user->{sb_template}) {
- <b><a href="<%= resolve_sb_template($user->{sb_template}, name => $journey->{arr_name}, eva => $journey->{arr_eva}, tt => $journey->{train_type} // q{x}, tn => $journey->{train_no}, id => $journey->{train_id}) %>" class="unmarked"><%= $journey->{arr_name} %></a></b><br/>
- % }
- % else {
- <b><%= $journey->{arr_name} %></b><br/>
- % }
+ <b><a href="<%= resolve_sb_template($user->{sb_template}, name => $journey->{arr_name}, eva => $journey->{arr_eva}, tt => $journey->{train_type} // q{x}, tn => $journey->{train_no}, id => $journey->{train_id}, hafas => $journey->{is_hafas} ? $journey->{backend_name} : q{}) %>" class="unmarked"><%= $journey->{arr_name} %></a></b><br/>
% if ($journey->{real_arrival}->epoch) {
<b><%= $journey->{real_arrival}->strftime('%H:%M') %></b>
% if ($journey->{real_arrival}->epoch != $journey->{sched_arrival}->epoch) {
@@ -358,12 +353,7 @@
<div class="card-content">
<i class="material-icons small right sync-failed-marker grey-text" style="display: none;">sync_problem</i>
<span class="card-title">Ziel ändern?</span>
- % if ($user->{sb_template}) {
- <div class="targetlist">
- % }
- % else {
- <p>
- % }
+ <div class="targetlist">
% for my $station (@{$journey->{route_after}}) {
% my $is_dest = ($journey->{arr_name} and $station->[0] eq $journey->{arr_name});
<a class="action-checkout tablerow" style="<%= $is_dest? 'font-weight: bold;' : '' %>" data-station="<%= $station->[1] // $station->[0] %>">
@@ -387,16 +377,9 @@
% }
</span>
</a>
- % if ($user->{sb_template}) {
- <a class="nonflex" href="<%= resolve_sb_template($user->{sb_template}, name => $station->[0], eva => $station->[1], tt => $journey->{train_type} // q{x}, tn => $journey->{train_no}, id => $journey->{train_id}) %>"><i class="material-icons tiny">train</i></a>
- % }
- % }
- % if ($user->{sb_template}) {
- </div>
- % }
- % else {
- </p>
+ <a class="nonflex" href="<%= resolve_sb_template($user->{sb_template}, name => $station->[0], eva => $station->[1], tt => $journey->{train_type} // q{x}, tn => $journey->{train_no}, id => $journey->{train_id}, hafas => $journey->{is_hafas} ? $journey->{backend_name} : q{}) %>"><i class="material-icons tiny"><%= $journey->{is_hafas} ? 'directions' : 'train' %></i></a>
% }
+ </div>
</div>
<div class="card-action">
<a class="action-undo blue-text" data-id="in_transit" data-checkints="<%= $journey->{timestamp}->epoch %>" style="margin-right: 0;">
diff --git a/templates/account.html.ep b/templates/account.html.ep
index 7f689c2..036fb35 100644
--- a/templates/account.html.ep
+++ b/templates/account.html.ep
@@ -28,9 +28,6 @@
% elsif ($success eq 'use_history') {
<span class="card-title">Einstellungen zu vorgeschlagenen Verbindungen geändert</span>
% }
- % elsif ($success eq 'external') {
- <span class="card-title">Einstellungen zu externen Diensten geändert</span>
- % }
% elsif ($success eq 'webhook') {
<span class="card-title">Web Hook aktualisiert</span>
% }
@@ -152,18 +149,6 @@
</tr>
% }
<tr>
- <th scope="row">Externe Dienste</th>
- <td>
- <a href="/account/services"><i class="material-icons">edit</i></a>
- % if ($acc->{sb_name}) {
- Abfahrtstafel: <%= $acc->{sb_name} %>
- % }
- % else {
- <span style="color: #999999;">Keine</span>
- % }
- </td>
- </tr>
- <tr>
<th scope="row">Registriert am</th>
<td><%= $acc->{registered_at}->strftime('%d.%m.%Y %H:%M') %></td>
</tr>
diff --git a/templates/use_external_links.html.ep b/templates/use_external_links.html.ep
deleted file mode 100644
index 77dfd44..0000000
--- a/templates/use_external_links.html.ep
+++ /dev/null
@@ -1,82 +0,0 @@
-<h1>Externe Dienste</h1>
-<div class="row">
- <div class="col s12">
- <p>
- Travelynx kann an geeigneten Stellen Links zu externen Diensten
- (z.B. Abfahrstafeln oder Informationen zum gerade genutzten Zug)
- einbinden. Hier lässt sich konfigurieren, welcher Dienst für welche
- Art von Informationen genutzt wird.
- <p/>
- </div>
-</div>
-<h2>Abfahrtstafel</h2>
-%= form_for '/account/services' => (method => 'POST') => begin
- %= csrf_field
- <div class="row">
- <div class="col s12">
- Angaben zu anderen an einer Station verkehrenden Verkehrsmitteln
- </div>
- </div>
- <div class="row">
- <div class="input-field col s12">
- <div>
- <label>
- %= radio_button stationboard => '0'
- <span>Keine</span>
- </label>
- </div>
- </div>
- </div>
- <div class="row">
- <div class="input-field col s12">
- <div>
- <label>
- %= radio_button stationboard => '1'
- <span><a href="https://dbf.finalrewind.org/">DBF</a> (Schienenverkehr)</span>
- </label>
- </div>
- </div>
- </div>
- <div class="row">
- <div class="input-field col s12">
- <div>
- <label>
- %= radio_button stationboard => '2'
- <span><a href="https://bahn.expert/">bahn.expert</a> (Schienenverkehr)</span>
- </label>
- </div>
- </div>
- </div>
- <div class="row">
- <div class="input-field col s12">
- <div>
- <label>
- %= radio_button stationboard => '3'
- <span><a href="https://dbf.finalrewind.org/?hafas=DB">DBF</a> (Nahverkehr)</span>
- </label>
- </div>
- </div>
- </div>
- <div class="row">
- <div class="input-field col s12">
- <div>
- <label>
- %= radio_button stationboard => '4'
- <span><a href="https://bahn.expert/regional">bahn.expert/regional</a> (Nahverkehr)</span>
- </label>
- </div>
- </div>
- </div>
- <div class="row">
- <div class="col s3 m3 l3">
- </div>
- <div class="col s6 m6 l6 center-align">
- <button class="btn waves-effect waves-light" type="submit" name="action" value="save">
- Speichern
- <i class="material-icons right">send</i>
- </button>
- </div>
- <div class="col s3 m3 l3">
- </div>
- </div>
-%= end