summaryrefslogtreecommitdiff
path: root/templates
diff options
context:
space:
mode:
authorDaniel Friesel <derf@finalrewind.org>2023-02-27 22:14:54 +0100
committerDaniel Friesel <derf@finalrewind.org>2023-02-27 22:14:54 +0100
commit6d261197e3138c80357ec485749e2089ef6ff96a (patch)
tree3089879a8863354e6b1cd669caf37bcb8558883a /templates
parentfb3878665b38f1e4c2439238c19cba0c9767f721 (diff)
set visibility per journey (wip)
some odds and ends left to polish, but ready for testing
Diffstat (limited to 'templates')
-rw-r--r--templates/_checked_in.html.ep23
-rw-r--r--templates/_public_status_card.html.ep23
-rw-r--r--templates/account.html.ep30
-rw-r--r--templates/journey.html.ep10
-rw-r--r--templates/landingpage.html.ep2
-rw-r--r--templates/privacy.html.ep88
-rw-r--r--templates/profile.html.ep12
-rw-r--r--templates/user_status.html.ep2
8 files changed, 105 insertions, 85 deletions
diff --git a/templates/_checked_in.html.ep b/templates/_checked_in.html.ep
index f4acc9f..1775986 100644
--- a/templates/_checked_in.html.ep
+++ b/templates/_checked_in.html.ep
@@ -244,13 +244,16 @@
</div>
<div class="card-action">
% if ($journey->{arr_name}) {
- <a style="margin-right: 0;" href="/journey/comment">
- <i class="material-icons left" aria-hidden="true">comment</i> Kommentar
+ <a href="/journey/comment">
+ <i class="material-icons">comment</i>
+ </a>
+ <a style="margin-right: 0;" href="/journey/visibility">
+ <i class="material-icons"><%= visibility_icon($journey_visibility) %></i>
</a>
% }
% else {
<a class="action-undo blue-text" data-id="in_transit" data-checkints="<%= $journey->{timestamp}->epoch %>" style="margin-right: 0;">
- <i class="material-icons left" aria-hidden="true">undo</i> Checkin Rückgängig
+ <i class="material-icons left" aria-hidden="true">undo</i> Rückgängig
</a>
% }
% if (defined $journey->{arrival_countdown} and $journey->{arrival_countdown} <= 0) {
@@ -259,7 +262,7 @@
style="margin-right: 0;"
data-station="<%= $journey->{arr_name}%>">
<i class="material-icons left">done</i>
- Jetzt auschecken
+ Auschecken
</a>
% }
% elsif ($journey->{arr_name}) {
@@ -270,7 +273,7 @@
<a class="action-share blue-text right"
style="margin-right: 0;"
% my $arr_text = q{};
- % if ($journey->{real_arrival}->epoch and not $user->{is_public} & 0x02) {
+ % if ($journey->{real_arrival}->epoch and $journey_visibility eq 'private') {
% $arr_text = $journey->{real_arrival}->strftime(' – Ankunft gegen %H:%M Uhr');
% }
% if ($user->{is_public} & 0x04 and $journey->{comment}) {
@@ -279,13 +282,21 @@
% else {
data-text="Ich bin gerade <%= $attrib %> <%= $journey->{train_type} %> <%= $journey->{train_no} %> nach <%= $journey->{arr_name} . $arr_text %> #travelynx"
% }
- % if ($user->{is_public} & 0x02) {
+ % if ($journey_visibility eq 'public') {
data-url="<%= url_for('/status')->to_abs->scheme('https') %>/<%= $user->{name} %>/<%= $journey->{sched_departure}->epoch %>"
% }
+ % elsif ($journey_visibility eq 'travelynx' or $journey_visibility eq 'unlisted') {
+ data-url="<%= url_for('/status')->to_abs->scheme('https') %>/<%= $user->{name} %>/<%= $journey->{sched_departure}->epoch %>?token=<%= $journey->{dep_eva} %>-<%= $journey->{timestamp}->epoch %>"
+ % }
>
<i class="material-icons left" aria-hidden="true">share</i> Teilen
</a>
% }
+ % else {
+ <a class="right" href="/journey/visibility">
+ <i class="material-icons left"><%= visibility_icon($journey_visibility) %></i> Sichtbarkeit
+ </a>
+ % }
</div>
</div>
% if ($journey->{arr_name}) {
diff --git a/templates/_public_status_card.html.ep b/templates/_public_status_card.html.ep
index 43b9926..cb0fb0d 100644
--- a/templates/_public_status_card.html.ep
+++ b/templates/_public_status_card.html.ep
@@ -3,7 +3,11 @@
<div class="card">
<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"><%= $name %> ist unterwegs</span>
+ <span class="card-title"><%= $name %> ist unterwegs
+ % if ($journey_visibility) {
+ <i class="material-icons right"><%= visibility_icon($journey_visibility) %></i>
+ % }
+ </span>
% if ($public_level & 0x04 and $journey->{comment}) {
<p>„<%= $journey->{comment} %>“</p>
% }
@@ -16,6 +20,9 @@
% }
<div class="center-align countdown"
data-duration="<%= $journey->{journey_duration} // 0 %>"
+ % if (param('token')) {
+ data-token="<%= $journey->{dep_eva} %>-<%= $journey->{timestamp}->epoch %>-<%= $journey->{sched_departure}->epoch %>"
+ % }
data-arrival="<%= $journey->{real_arrival}->epoch %>">
% if ($journey->{departure_countdown} > 120) {
Abfahrt in <%= sprintf('%.f', $journey->{departure_countdown} / 60) %> Minuten
@@ -166,20 +173,6 @@
<i class="material-icons small right sync-failed-marker grey-text" style="display: none;">sync_problem</i>
<span class="card-title"><%= $name %> ist gerade nicht eingecheckt</span>
<p>
- % if ($journey->{arr_name}) {
- Zuletzt gesehen
- % if ($journey->{real_arrival}->epoch and ($public_level & 0x20 or ($public_level & 0x10 and is_user_authenticated()))) {
- %= $journey->{real_arrival}->strftime('am %d.%m.%Y')
- in <b><%= $journey->{arr_name} %></b>
- %= $journey->{real_arrival}->strftime('(Ankunft um %H:%M Uhr)')
- % }
- % else {
- in <b><%= $journey->{arr_name} %></b>
- % }
- % }
- % else {
- Noch keine Zugfahrten geloggt.
- % }
</p>
</div>
</div>
diff --git a/templates/account.html.ep b/templates/account.html.ep
index 9c5d88e..e5dba60 100644
--- a/templates/account.html.ep
+++ b/templates/account.html.ep
@@ -70,36 +70,10 @@
</td>
</tr>
<tr>
- <th scope="row">Öffentliche Daten</th>
+ <th scope="row">Sichtbarkeit</th>
<td>
<a href="/account/privacy"><i class="material-icons">edit</i></a>
- % if ($acc->{is_public} == 0) {
- <span style="color: #999999;">Keine</span>
- % }
- % if ($acc->{is_public} & 0x01) {
- Aktueller Status (nur mit Anmeldung)
- % }
- % elsif ($acc->{is_public} & 0x02) {
- Aktueller Status
- % }
- % if ($acc->{is_public} & 0x0f and $acc->{is_public} & 0xf0) {
- <br/>
- % }
- % if ($acc->{is_public} & 0x30) {
- % if ($acc->{is_public} & 0x40) {
- Vergangene Fahrten
- % }
- % else {
- Fahrten der letzten vier Wochen
- % }
- % if ($acc->{is_public} & 0x10) {
- (nur mit Anmeldung)
- % }
- % }
- % if ($acc->{is_public} & 0x04) {
- <br/>
- Kommentare
- % }
+ <span><i class="material-icons"><%= visibility_icon($acc->{default_visibility_str}) %></i></span>
</td>
</tr>
<tr>
diff --git a/templates/journey.html.ep b/templates/journey.html.ep
index 50dcb3e..74c032b 100644
--- a/templates/journey.html.ep
+++ b/templates/journey.html.ep
@@ -38,6 +38,16 @@
% }
am
<b><%= $journey->{sched_departure}->strftime('%d.%m.%Y') %></b>
+ % if ($journey_visibility) {
+ % if (stash('username')) {
+ <i class="material-icons right"><%= visibility_icon($journey_visibility) %></i>
+ % }
+ % else {
+ <a class="right" href="/journey/visibility?id=<%= $journey->{id} %>">
+ <i class="material-icons"><%= visibility_icon($journey_visibility) %></i>
+ </a>
+ % }
+ % }
</p>
% if ($journey->{edited}) {
<p>
diff --git a/templates/landingpage.html.ep b/templates/landingpage.html.ep
index a4bf10c..205e35c 100644
--- a/templates/landingpage.html.ep
+++ b/templates/landingpage.html.ep
@@ -15,7 +15,7 @@
<div class="row">
<div class="col s12 statuscol">
% if ($status->{checked_in}) {
- %= include '_checked_in', journey => $status;
+ %= include '_checked_in', journey => $status, journey_visibility => stash('journey_visibility');
% }
% elsif ($status->{cancelled}) {
<div class="card info-color">
diff --git a/templates/privacy.html.ep b/templates/privacy.html.ep
index b5f3bb3..efeb6e1 100644
--- a/templates/privacy.html.ep
+++ b/templates/privacy.html.ep
@@ -1,10 +1,11 @@
<h1>Öffentliche Daten</h1>
<div class="row">
<div class="col s12">
- Hier kannst du auswählen, welche Aspekte deines Accounts bzw. deiner
- Bahnfahrten öffentlich einsehbar sind. Öffentliche Daten sind
- grundsätzlich für <i>alle</i> einsehbar, die die (leicht erratbare) URL
- kennen.
+ Hier kannst du auswählen, welche Personengruppen deine Fahrten bei
+ travelynx einsehen können und ob dies auch für vergangene Fahrten
+ gelten soll. Nach dem Einchecken in einen Zug hast du im
+ Checkin-Fenster die Möglichkeit, für die aktuelle Fahrt eine
+ abweichende Sichtbarkeit einzustellen.
</div>
</div>
%= form_for '/account/privacy' => (method => 'POST') => begin
@@ -13,33 +14,62 @@
<div class="row">
<div class="input-field col s12">
<div>
- <label>
- %= radio_button status_level => 'private'
- <span>Nicht sichtbar</span>
- </label>
- </div><div>
- <label>
- %= radio_button status_level => 'intern'
- <span>Nur mit Anmeldung</span>
- </label>
- </div><div>
- <label>
- %= radio_button status_level => 'extern'
- <span>Öffentlich</span>
- </label>
+ <label>
+ %= radio_button status_level => 'public'
+ <span><i class="material-icons left"><%= visibility_icon('public') %></i>Öffentlich: Im Profil verlinkt und beliebig zugänglich.</span>
+ </label>
+ </div>
+ </div>
+ </div>
+ <div class="row">
+ <div class="input-field col s12">
+ <div>
+ <label>
+ %= radio_button status_level => 'travelynx'
+ <span><i class="material-icons left"><%= visibility_icon('travelynx') %></i>Lokal: Nur für<!-- Personen, die dir folgen oder auf dieser Seite angemeldet sind --> auf dieser Seite angemeldete Acounts sowie nicht angemeldete Personen, denen du mithilfe der Teilen-Funktion einen Link schickst.</span>
+ </label>
+ </div>
+ </div>
+ </div>
+ <!--
+ <div class="row">
+ <div class="input-field col s12">
+ <div>
+ <label>
+ %= radio_button status_level => 'fedi'
+ <span><i class="material-icons left"><%= visibility_icon('fedi') %></i>Fedi: nur für Personen, die deinem Account folgen.</span>
+ </label>
+ </div>
+ </div>
+ </div>
+ -->
+ <div class="row">
+ <div class="input-field col s12">
+ <div>
+ <label>
+ %= radio_button status_level => 'unlisted'
+ <span><i class="material-icons left"><%= visibility_icon('unlisted') %></i>Verlinkbar: Nur für Personen zugänglich, denen du mithilfe der Teilen-Funktion einen Link schickst.</span>
+ </label>
+ </div>
+ </div>
+ </div>
+ <div class="row">
+ <div class="input-field col s12">
+ <div>
+ <label>
+ %= radio_button status_level => 'private'
+ <span><i class="material-icons left"><%= visibility_icon('private') %></i>Privat: nur für dich sichtbar.</span>
+ </label>
</div>
</div>
</div>
<div class="row">
<div class="col s12">
- Hier kannst du auswählen, ob dein aktueller Status unter <a
- href="/status/<%= $name %>">/status/<%= $name %></a> sowie <a
- href="/p/<%= $name %>">/p/<%= $name %></a> abrufbar ist.
- Wenn du eingecheckt bist, werden dort Zug, Start- und Zielstation
- sowie Abfahrts- und Ankunftszeit gezeigt, andernfalls lediglich der
- Zielbahnhof der letzten Reise. Wann die letzte Reise beendet wurde,
- wird nur angegeben, wenn deine vergangenen Zugfahrten sichtbar sind
- (siehe unten).
+ Wenn du (mit passender Sichtbarkeit) eingecheckt bist, werden unter
+ <a href="/status/<%= $name %>">/status/<%= $name %></a> sowie <a
+ href="/p/<%= $name %>">/p/<%= $name %></a> Zug, Start- und
+ Zielstation sowie Abfahrts- und Ankunftszeit gezeigt. Andernfalls
+ wird angegeben, dass du gerade nicht eingecheckt seist.
</div>
</div>
<h2>Vergangene Zugfahrten</h2>
@@ -85,7 +115,10 @@
dort nicht eingetragene Fahrten sind jedoch weiterhin über /p/<%=
$name %>/j/ID zugänglich. Da die ID (mit Lücken) aufsteigend vergeben
wird, sind effektiv alle deiner vergangenen Fahrten (oder alle Fahrten
- der letzten vier Wochen) öffentlich.
+ der letzten vier Wochen) öffentlich. Auch hier besteht die
+ Möglichkeit, für einzelne Fahrten eine abweichende Sichtbarkeit
+ einzustellen. Sofern die Sichtbarkeit auf die letzten vier Wochen
+ beschränkt ist, hat dies jedoch Vorrang.
</div>
</div>
<h2>Sonstiges</h2>
@@ -101,6 +134,7 @@
<div class="col s12">
Wenn aktiv, sind von dir eingetragene Freitext-Kommentare in deinem
aktuellen Status sowie bei deinen vergangenen Zugfahrten sichtbar.
+ Diese Einstellung kann nicht pro Fahrt verändert werden.
</div>
</div>
<div class="row">
diff --git a/templates/profile.html.ep b/templates/profile.html.ep
index 6a8d67d..63bc3ff 100644
--- a/templates/profile.html.ep
+++ b/templates/profile.html.ep
@@ -10,14 +10,12 @@
</div>
</div>
% }
-% if ($public_level & 0x02 or ($public_level & 0x01 and is_user_authenticated())) {
- <div class="row">
- <div class="col s12 publicstatuscol" data-user="<%= $name %>">
- %= include '_public_status_card', name => $name, public_level => $public_level, journey => $journey
- </div>
+<div class="row">
+ <div class="col s12 publicstatuscol" data-user="<%= $name %>">
+ %= include '_public_status_card', name => $name, public_level => $public_level, journey => $journey, journey_visibility => $journey_visibility
</div>
-% }
-% if ($public_level & 0x20 or ($public_level & 0x10 and is_user_authenticated())) {
+</div>
+% if ($journeys and @{$journeys}) {
<div class="row">
<div class="col s12">
<h2>Letzte Fahrten von <%= $name %></h1>
diff --git a/templates/user_status.html.ep b/templates/user_status.html.ep
index 78ef547..783f430 100644
--- a/templates/user_status.html.ep
+++ b/templates/user_status.html.ep
@@ -1,5 +1,5 @@
<div class="row">
<div class="col s12 publicstatuscol" data-user="<%= $name %>">
- %= include '_public_status_card', name => $name, public_level => $public_level, journey => $journey
+ %= include '_public_status_card', name => $name, public_level => $public_level, journey => $journey, journey_visibility => $journey_visibility
</div>
</div>