diff options
Diffstat (limited to 'templates/traewelling.html.ep')
-rw-r--r-- | templates/traewelling.html.ep | 256 |
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> +% } |