summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Friesel <daniel.friesel@uos.de>2020-02-14 16:29:44 +0100
committerDaniel Friesel <daniel.friesel@uos.de>2020-02-14 16:29:44 +0100
commita1865fa69e3a90e484e8423e256e1cb969b7e04d (patch)
treee5cf2c747e9e4e07181c3e4257a2e3177c4ea773
parent6cbbc2b16f059a0d2b1f65a371e3c1e1f4c11fde (diff)
add privacy setting for showing history and latest arrival timestamp
-rwxr-xr-xlib/Travelynx.pm3
-rw-r--r--lib/Travelynx/Controller/Account.pm18
-rw-r--r--templates/_public_status_card.html.ep9
-rw-r--r--templates/privacy.html.ep36
4 files changed, 64 insertions, 2 deletions
diff --git a/lib/Travelynx.pm b/lib/Travelynx.pm
index 2b34b99..661572e 100755
--- a/lib/Travelynx.pm
+++ b/lib/Travelynx.pm
@@ -187,6 +187,9 @@ sub startup {
status_intern => 0x01,
status_extern => 0x02,
status_comment => 0x04,
+ history_intern => 0x10,
+ history_latest => 0x20,
+ history_full => 0x40,
};
}
);
diff --git a/lib/Travelynx/Controller/Account.pm b/lib/Travelynx/Controller/Account.pm
index cef79a5..135c52b 100644
--- a/lib/Travelynx/Controller/Account.pm
+++ b/lib/Travelynx/Controller/Account.pm
@@ -236,6 +236,19 @@ sub privacy {
else {
$public_level &= ~0x04;
}
+
+ if ( $self->param('history_level') eq 'intern' ) {
+ $public_level |= 0x10;
+ $public_level &= ~0x20;
+ }
+ elsif ( $self->param('history_level') eq 'extern' ) {
+ $public_level |= 0x20;
+ $public_level &= ~0x10;
+ }
+ else {
+ $public_level &= ~0x30;
+ }
+
$self->set_privacy( $user->{id}, $public_level );
$self->flash( success => 'privacy' );
@@ -248,6 +261,11 @@ sub privacy {
: 'private'
);
$self->param( public_comment => $public_level & 0x04 ? 1 : 0 );
+ $self->param(
+ history_level => $public_level & 0x10 ? 'intern'
+ : $public_level & 0x20 ? 'extern'
+ : 'private'
+ );
$self->render( 'privacy', name => $user->{name} );
}
}
diff --git a/templates/_public_status_card.html.ep b/templates/_public_status_card.html.ep
index 810c4b8..ced0c6f 100644
--- a/templates/_public_status_card.html.ep
+++ b/templates/_public_status_card.html.ep
@@ -163,7 +163,14 @@
<span class="card-title"><%= $name %> ist gerade nicht eingecheckt</span>
<p>
% if ($journey->{arr_name}) {
- Zuletzt gesehen in <%= $journey->{arr_name} %>.
+ Zuletzt gesehen
+ % if ($public_level & 0x30 and $journey->{real_arrival}->epoch) {
+ %= $journey->{real_arrival}->strftime('am %d.%m.%Y')
+ % }
+ in <b><%= $journey->{arr_name} %></b>
+ % if ($public_level & 0x30 and $journey->{real_arrival}->epoch) {
+ %= $journey->{real_arrival}->strftime('(Ankunft um %H:%M Uhr)')
+ % }
% }
% else {
Noch keine Zugfahrten geloggt.
diff --git a/templates/privacy.html.ep b/templates/privacy.html.ep
index e8e6459..9439f8b 100644
--- a/templates/privacy.html.ep
+++ b/templates/privacy.html.ep
@@ -8,8 +8,8 @@
</div>
</div>
%= form_for '/account/privacy' => (method => 'POST') => begin
+%= csrf_field
<h2>Aktueller Status</h2>
- %= csrf_field
<div class="row">
<div class="input-field col s12">
<label>
@@ -60,6 +60,40 @@
hat dieses Feld keine Auswirkungen.
</div>
</div>
+<h2>Vergangene Zugfahrten</h2>
+ <div class="row">
+ <div class="input-field col s12">
+ <label>
+ %= radio_button history_level => 'private'
+ <span>Nicht sichtbar</span>
+ </label>
+ </div>
+ </div>
+ <div class="row">
+ <div class="input-field col s12">
+ <label>
+ %= radio_button history_level => 'intern'
+ <span>Nur für angemeldete Accounts</span>
+ </label>
+ </div>
+ </div>
+ <div class="row">
+ <div class="input-field col s12">
+ <label>
+ %= radio_button history_level => 'extern'
+ <span>Öffentlich</span>
+ </label>
+ </div>
+ </div>
+ <div class="row">
+ <div class="col s12">
+ Diese Einstellung bestimmt die Sichtbarkeit deiner letzten
+ zehn Zugfahrten mit allen dazu bekannten Details (Abfahrt, Ankunft,
+ Wagenreihung u.a.). Dies umfasst Angaben auf
+ <a href="/status/<%= $name %>">/status/<%= $name %></a> sowie
+ eine Liste deiner letzten Fahrten. Die Implementierung folgt noch...
+ </div>
+ </div>
<div class="row">
<div class="col s3 m3 l3">
</div>