summaryrefslogtreecommitdiff
path: root/templates/traewelling.html.ep
diff options
context:
space:
mode:
Diffstat (limited to 'templates/traewelling.html.ep')
-rw-r--r--templates/traewelling.html.ep256
1 files changed, 256 insertions, 0 deletions
diff --git a/templates/traewelling.html.ep b/templates/traewelling.html.ep
new file mode 100644
index 0000000..c1f2b7d
--- /dev/null
+++ b/templates/traewelling.html.ep
@@ -0,0 +1,256 @@
+% if (my $invalid = stash('invalid')) {
+ %= include '_invalid_input', invalid => $invalid
+% }
+
+<h1>Träwelling</h1>
+
+% if (flash('new_traewelling')) {
+ <div class="row">
+ <div class="col s12">
+ % if ($traewelling->{token}) {
+ <div class="card success-color">
+ <div class="card-content white-text">
+ <span class="card-title">Träwelling verknüpft</span>
+ % my $user = $traewelling->{data}{user_name} // '???';
+ <p>Dein travelynx-Account ist nun mit dem Träwelling-Account <b>@<%= $user %></b> verbunden.</p>
+ </div>
+ </div>
+ % }
+ % elsif (my $login_err = flash('login_error')) {
+ <div class="card caution-color">
+ <div class="card-content white-text">
+ <span class="card-title">Login-Fehler</span>
+ <p>Der Login bei Träwelling ist fehlgeschlagen: <%= $login_err %></p>
+ </div>
+ </div>
+ % }
+ % elsif (my $logout_err = stash('logout_error')) {
+ <div class="card caution-color">
+ <div class="card-content white-text">
+ <span class="card-title">Logout-Fehler</span>
+ <p>Der Logout bei Träwelling ist fehlgeschlagen: <%= $logout_err %>.
+ Dein Token bei travelynx wurde dennoch gelöscht, so
+ dass nun kein Zugriff von travelynx auf Träwelling mehr
+ möglich ist. In den <a
+ href="https://traewelling.de/settings">Träwelling-Einstellungen</a>
+ kannst du ihn vollständig löschen.</p>
+ </div>
+ </div>
+ % }
+ </div>
+ </div>
+% }
+
+<div class="row">
+ <div class="col s12">
+ <div class="card purple">
+ <div class="card-content white-text">
+ <span class="card-title">Eingeschränkte Synchronisierung</span>
+ <p>
+ Träwelling und travelynx setzen unterschiedliche Schwerpunkte und haben unterschiedliche Features.
+ Kombiniert mit der Vielzahl an möglichen Randfällen heißt das, dass die Synchronisierung nicht immer funktioniert.
+ Diese Einschränkung ist bekannt und wird voraussichtlich bestehen bleiben.
+ </p>
+ <p>
+ Bei hohen Verspätungen, Ausfällen und nachträglichen Checkin-Änderungen ist die Synchronisierung u.U. nicht möglich und muss von Hand vorgenommen werden.
+ travelynx-Hooks werden bei via Träwelling vorgenommenen Checkins nicht ausgelöst.
+ </p>
+ </div>
+ <div class="card-action">
+ <a href="https://github.com/derf/travelynx/issues" class="waves-effect waves-light btn-flat white-text">
+ <i class="material-icons left" aria-hidden="true">bug_report</i>Bug melden
+ </a>
+ </div>
+ </div>
+ </div>
+</div>
+
+% if ($traewelling->{token} and ($traewelling->{expired} or $traewelling->{expiring})) {
+ <div class="row">
+ <div class="col s12">
+ <div class="card caution-color">
+ <div class="card-content white-text">
+ % if ($traewelling->{expired}) {
+ <span class="card-title">Token abgelaufen</span>
+ % }
+ % else {
+ <span class="card-title">Token läuft bald ab</span>
+ % }
+ <p>Melde deinen travelynx-Account von Träwelling ab und
+ verbinde ihn mit deinem Träwelling-Passwort erneut,
+ um einen neuen Token zu erhalten.</p>
+ </div>
+ <div class="card-action">
+ %= form_for '/account/traewelling' => (method => 'POST') => begin
+ %= csrf_field
+ <button class="btn-flat waves-effect waves-light white-text" type="submit" name="action" value="logout">
+ <i class="material-icons left" aria-hidden="true">sync_disabled</i>
+ Abmelden
+ </button>
+ %= end
+ </div>
+ </div>
+ </div>
+ </div>
+% }
+
+% if (not $traewelling->{token}) {
+ <div class="row">
+ <div class="col s12">
+ <p>
+ Hier hast du die Möglichkeit, deinen travelynx-Account mit einem
+ Account bei <a href="https://traewelling.de">Träwelling</a> zu
+ verknüpfen. Dies erlaubt die automatische Übernahme zukünftiger
+ Checkins zwischen den beiden Diensten. Checkins, die
+ vor dem Verknüpfen der Accounts stattgefunden haben, werden
+ nicht synchronisiert. Bei synchronisierten Checkins wird der
+ zugehörige Träwelling-Status von deiner travelynx-Statusseite
+ aus verlinkt.
+ </p>
+ </div>
+ </div>
+ <div class="row">
+ %= form_for '/oauth/traewelling' => (method => 'POST') => begin
+ %= csrf_field
+ <div class="col s12 center-align">
+ <button class="btn waves-effect waves-light" type="submit" name="action" value="connect">
+ Verknüpfen
+ <i class="material-icons right">send</i>
+ </button>
+ </div>
+ %= end
+ </div>
+% }
+% else {
+ <div class="row">
+ <div class="col s12">
+ <p>
+ Dieser travelynx-Account ist mit dem Träwelling-Account
+ % if (my $user = $traewelling->{data}{user_name}) {
+ <a href="https://traewelling.de/@<%= $user %>"><%= $user %></a>
+ % }
+ % else {
+ %= $traewelling->{email}
+ % }
+ verknüpft. Der aktuelle Token läuft <%= $traewelling->{expires_on}->strftime('am %d.%m.%Y um %H:%M Uhr') %> ab.
+ </p>
+ </div>
+ </div>
+ %= form_for '/account/traewelling' => (method => 'POST') => begin
+ %= csrf_field
+ <div class="row">
+ <div class="input-field col s12">
+ <div>
+ <label>
+ %= radio_button sync_source => 'none'
+ <span>Keine Synchronisierung</span>
+ </label>
+ </div>
+ </div>
+ <div class="input-field col s12">
+ <div>
+ <label>
+ %= radio_button sync_source => 'travelynx'
+ <span>Checkin-Synchronisierung travelynx → Träwelling</span>
+ </label>
+ </div>
+ <div>
+ <label>
+ %= check_box toot => 1
+ <span>… Checkin auf Mastodon veröffentlichen</span>
+ </label>
+ </div>
+ <div>
+ <label>
+ %= check_box tweet => 1
+ <span>… Checkin auf Twitter veröffentlichen</span>
+ </label>
+ </div>
+ <p>Die Synchronisierung erfolgt spätestens drei Minuten nach der
+ Zielwahl. Beachte, dass die Synchronisierung travelynx
+ → Träwelling unabhängig von der eingestellten Sichtbarkeit
+ des Checkins erfolgt. travelynx reicht die Sichtbarkeit
+ aber an Träwelling weiter.
+ Träwelling-Checkins können von travelynx aktuell nicht
+ rückgängig gemacht werden. Eine nachträgliche Änderung der
+ Zielstation wird nicht übernommen. Mastodon und Twitter beziehen
+ sich auf die in den <a
+ href="https://traewelling.de/settings">Träwelling-Einstellungen</a>
+ verknüpften Accounts.</p>
+ </div>
+ <div class="input-field col s12">
+ <div>
+ <label>
+ %= radio_button sync_source => 'traewelling'
+ <span>Checkin-Synchronisierung Träwelling → travelynx</span>
+ </label>
+ </div>
+ <p>Alle fünf Minuten wird dein Status auf Träwelling abgefragt.
+ Falls du gerade in eingecheckt bist, wird der Checkin von
+ travelynx übernommen. Träwelling-Checkins in Züge
+ außerhalb des deutschen Schienennetzes werden noch nicht
+ unterstützt. Die Sichtbarkeit von Träwelling-Checkins wird
+ derzeit von travelynx nicht berücksichtigt.</p>
+ </div>
+ </div>
+ <div class="row hide-on-small-only">
+ <div class="col s12 m6 l6 center-align">
+ <button class="btn waves-effect waves-light red" type="submit" name="action" value="logout">
+ Abmelden
+ <i class="material-icons right" aria-hidden="true">sync_disabled</i>
+ </button>
+ </div>
+ <div class="col s12 m6 l6 center-align">
+ <button class="btn waves-effect waves-light" type="submit" name="action" value="config">
+ Speichern
+ <i class="material-icons right" aria-hidden="true">send</i>
+ </button>
+ </div>
+ </div>
+ <div class="row hide-on-med-and-up">
+ <div class="col s12 m6 l6 center-align">
+ <button class="btn waves-effect waves-light" type="submit" name="action" value="config">
+ Speichern
+ <i class="material-icons right" aria-hidden="true">send</i>
+ </button>
+ </div>
+ <div class="col s12 m6 l6 center-align" style="margin-top: 1em;">
+ <button class="btn waves-effect waves-light red" type="submit" name="action" value="logout">
+ Abmelden
+ <i class="material-icons right" aria-hidden="true">sync_disabled</i>
+ </button>
+ </div>
+ </div>
+ %= end
+ <h2>Status</h2>
+ <div class="row">
+ <div class="col s12"">
+ % if ($traewelling->{latest_run}->epoch) {
+ Letzter Checkin <%= $traewelling->{latest_run}->strftime('am %d.%m.%Y um %H:%M:%S') %><br/>
+ % if ($traewelling->{errored}) {
+ <i class="material-icons left">error</i>
+ Fehler: <%= $traewelling->{data}{error} %>
+ % }
+ % }
+ % else {
+ Bisher wurde noch kein Checkin übernommen.
+ % }
+ </div>
+ </div>
+ <h2>Log</h2>
+ <div class="row">
+ <div class="col s12"">
+ <ul>
+ % for my $log_entry (@{$traewelling->{data}{log} // []}) {
+ <li>
+ <%= $log_entry->[0]->strftime('%d.%m.%Y %H:%M:%S') %> –
+ % if ($log_entry->[2]) {
+ Träwelling <a href="https://traewelling.de/status/<%= $log_entry->[2] %>">#<%= $log_entry->[2] %></a> –
+ % }
+ %= $log_entry->[1]
+ </li>
+ % }
+ </ul>
+ </div>
+ </div>
+% }