mirror of
https://github.com/derf/travelynx
synced 2024-12-02 09:19:11 +00:00
profile: limit history to four weeks by default
This commit is contained in:
parent
482fa975b5
commit
7eb5f967f2
5 changed files with 99 additions and 49 deletions
|
@ -261,6 +261,13 @@ sub privacy {
|
||||||
$public_level &= ~0x30;
|
$public_level &= ~0x30;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ( $self->param('history_age') eq 'infinite' ) {
|
||||||
|
$public_level |= 0x40;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$public_level &= ~0x40;
|
||||||
|
}
|
||||||
|
|
||||||
$self->users->set_privacy(
|
$self->users->set_privacy(
|
||||||
uid => $user->{id},
|
uid => $user->{id},
|
||||||
level => $public_level
|
level => $public_level
|
||||||
|
@ -281,6 +288,8 @@ sub privacy {
|
||||||
: $public_level & 0x20 ? 'extern'
|
: $public_level & 0x20 ? 'extern'
|
||||||
: 'private'
|
: 'private'
|
||||||
);
|
);
|
||||||
|
$self->param(
|
||||||
|
history_age => $public_level & 0x40 ? 'infinite' : 'month' );
|
||||||
$self->render( 'privacy', name => $user->{name} );
|
$self->render( 'privacy', name => $user->{name} );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -160,12 +160,32 @@ sub public_profile {
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
my $status = $self->get_user_status( $user->{id} );
|
my $status = $self->get_user_status( $user->{id} );
|
||||||
|
my @journeys;
|
||||||
|
if ( $user->{public_level} & 0x40 ) {
|
||||||
|
@journeys = $self->journeys->get(
|
||||||
|
uid => $user->{id},
|
||||||
|
limit => 10,
|
||||||
|
with_datetime => 1
|
||||||
|
);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
my $now = DateTime->now( time_zone => 'Europe/Berlin' );
|
||||||
|
my $month_ago = $now->clone->subtract( weeks => 4 );
|
||||||
|
@journeys = $self->journeys->get(
|
||||||
|
uid => $user->{id},
|
||||||
|
limit => 10,
|
||||||
|
with_datetime => 1,
|
||||||
|
after => $month_ago,
|
||||||
|
before => $now
|
||||||
|
);
|
||||||
|
}
|
||||||
$self->render(
|
$self->render(
|
||||||
'profile',
|
'profile',
|
||||||
name => $name,
|
name => $name,
|
||||||
uid => $user->{id},
|
uid => $user->{id},
|
||||||
public_level => $user->{public_level},
|
public_level => $user->{public_level},
|
||||||
journey => $status,
|
journey => $status,
|
||||||
|
journeys => [@journeys],
|
||||||
version => $self->app->config->{version} // 'UNKNOWN',
|
version => $self->app->config->{version} // 'UNKNOWN',
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -207,12 +227,22 @@ sub public_journey_details {
|
||||||
with_polyline => 1,
|
with_polyline => 1,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
if ( not( $user->{public_level} & 0x40 ) ) {
|
||||||
|
my $month_ago = DateTime->now( time_zone => 'Europe/Berlin' )
|
||||||
|
->subtract( weeks => 4 )->epoch;
|
||||||
|
if ( $journey and $journey->{rt_dep_ts} < $month_ago ) {
|
||||||
|
$journey = undef;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ($journey) {
|
if ($journey) {
|
||||||
my $map_data = $self->journeys_to_map_data(
|
my $map_data = $self->journeys_to_map_data(
|
||||||
journeys => [$journey],
|
journeys => [$journey],
|
||||||
include_manual => 1,
|
include_manual => 1,
|
||||||
);
|
);
|
||||||
if ( $journey->{user_data}{comment} ) {
|
if ( $journey->{user_data}{comment}
|
||||||
|
and not $user->{public_level} & 0x04 )
|
||||||
|
{
|
||||||
delete $journey->{user_data}{comment};
|
delete $journey->{user_data}{comment};
|
||||||
}
|
}
|
||||||
$self->render(
|
$self->render(
|
||||||
|
@ -226,7 +256,7 @@ sub public_journey_details {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$self->render( 'not_found', );
|
$self->render('not_found');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
|
@ -72,17 +72,23 @@
|
||||||
% elsif ($acc->{is_public} & 0x02) {
|
% elsif ($acc->{is_public} & 0x02) {
|
||||||
Aktueller Status
|
Aktueller Status
|
||||||
% }
|
% }
|
||||||
% if ($acc->{is_public} & 0x04) {
|
|
||||||
mit Kommentar
|
|
||||||
% }
|
|
||||||
% if ($acc->{is_public} & 0x0f and $acc->{is_public} & 0xf0) {
|
% if ($acc->{is_public} & 0x0f and $acc->{is_public} & 0xf0) {
|
||||||
<br/>
|
<br/>
|
||||||
% }
|
% }
|
||||||
% if ($acc->{is_public} & 0x10) {
|
% if ($acc->{is_public} & 0x30) {
|
||||||
Vergangene Fahrten (nur mit Anmeldung)
|
% if ($acc->{is_public} & 0x40) {
|
||||||
|
Vergangene Fahrten
|
||||||
|
% }
|
||||||
|
% else {
|
||||||
|
Fahrten der letzten vier Wochen
|
||||||
|
% }
|
||||||
|
% if ($acc->{is_public} & 0x10) {
|
||||||
|
(nur mit Anmeldung)
|
||||||
|
% }
|
||||||
% }
|
% }
|
||||||
% elsif ($acc->{is_public} & 0x20) {
|
% if ($acc->{is_public} & 0x04) {
|
||||||
Vergangene Fahrten
|
<br/>
|
||||||
|
Kommentare
|
||||||
% }
|
% }
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
|
@ -12,26 +12,22 @@
|
||||||
<h2>Aktueller Status</h2>
|
<h2>Aktueller Status</h2>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="input-field col s12">
|
<div class="input-field col s12">
|
||||||
|
<div>
|
||||||
<label>
|
<label>
|
||||||
%= radio_button status_level => 'private'
|
%= radio_button status_level => 'private'
|
||||||
<span>Nicht sichtbar</span>
|
<span>Nicht sichtbar</span>
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div><div>
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
<div class="input-field col s12">
|
|
||||||
<label>
|
<label>
|
||||||
%= radio_button status_level => 'intern'
|
%= radio_button status_level => 'intern'
|
||||||
<span>Nur mit Anmeldung</span>
|
<span>Nur mit Anmeldung</span>
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div><div>
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
<div class="input-field col s12">
|
|
||||||
<label>
|
<label>
|
||||||
%= radio_button status_level => 'extern'
|
%= radio_button status_level => 'extern'
|
||||||
<span>Öffentlich</span>
|
<span>Öffentlich</span>
|
||||||
</label>
|
</label>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
@ -39,63 +35,72 @@
|
||||||
Hier kannst du auswählen, ob dein aktueller Status unter <a
|
Hier kannst du auswählen, ob dein aktueller Status unter <a
|
||||||
href="/status/<%= $name %>">/status/<%= $name %></a> sowie <a
|
href="/status/<%= $name %>">/status/<%= $name %></a> sowie <a
|
||||||
href="/p/<%= $name %>">/p/<%= $name %></a> abrufbar ist.
|
href="/p/<%= $name %>">/p/<%= $name %></a> abrufbar ist.
|
||||||
Wenn du eingecheckt bist, werden dort Zug, Start- und Zielstation,
|
Wenn du eingecheckt bist, werden dort Zug, Start- und Zielstation
|
||||||
Abfahrts- und Ankunftszeit gezeigt; andernfalls lediglich der
|
sowie Abfahrts- und Ankunftszeit gezeigt, andernfalls lediglich der
|
||||||
Zielbahnhof der letzten Reise. Wann die letzte Reise beendet wurde,
|
Zielbahnhof der letzten Reise. Wann die letzte Reise beendet wurde,
|
||||||
wird nur angegeben, wenn deine vergangenen Zugfahrten sichtbar sind
|
wird nur angegeben, wenn deine vergangenen Zugfahrten sichtbar sind
|
||||||
(siehe unten).
|
(siehe unten).
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
|
||||||
<div class="input-field col s12">
|
|
||||||
<label>
|
|
||||||
%= check_box public_comment => 1
|
|
||||||
<span>Mit Kommentar</span>
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
<div class="col s12">
|
|
||||||
Wenn aktiv, wird in deinem aktuellen Status auch der optionale
|
|
||||||
Freitext-Kommentar der Zugfahrt gezeigt. Wenn du gerade nicht
|
|
||||||
eingecheckt bist oder dein aktueller Status nicht öffentlich ist,
|
|
||||||
hat dieses Feld keine Auswirkungen.
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<h2>Vergangene Zugfahrten</h2>
|
<h2>Vergangene Zugfahrten</h2>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="input-field col s12">
|
<div class="input-field col s12 m6 l6">
|
||||||
|
<div>
|
||||||
<label>
|
<label>
|
||||||
%= radio_button history_level => 'private'
|
%= radio_button history_level => 'private'
|
||||||
<span>Nicht sichtbar</span>
|
<span>Nicht sichtbar</span>
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div><div>
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
<div class="input-field col s12">
|
|
||||||
<label>
|
<label>
|
||||||
%= radio_button history_level => 'intern'
|
%= radio_button history_level => 'intern'
|
||||||
<span>Nur mit Anmeldung</span>
|
<span>Nur mit Anmeldung</span>
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div><div>
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
<div class="input-field col s12">
|
|
||||||
<label>
|
<label>
|
||||||
%= radio_button history_level => 'extern'
|
%= radio_button history_level => 'extern'
|
||||||
<span>Öffentlich</span>
|
<span>Öffentlich</span>
|
||||||
</label>
|
</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="input-field col s12 m6 l6">
|
||||||
|
<div>
|
||||||
|
<label>
|
||||||
|
%= radio_button history_age => 'month'
|
||||||
|
<span>Letzte vier Wochen</span>
|
||||||
|
</label>
|
||||||
|
</div><div>
|
||||||
|
<label>
|
||||||
|
%= radio_button history_age => 'infinite'
|
||||||
|
<span>Alle Fahrten</span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col s12">
|
<div class="col s12">
|
||||||
Diese Einstellung bestimmt die Sichtbarkeit deiner vergangenen
|
Diese Einstellung bestimmt die Sichtbarkeit deiner vergangenen
|
||||||
Zugfahrten mit allen dazu bekannten Details (Abfahrt, Ankunft,
|
Zugfahrten mit allen dazu bekannten Details (Abfahrt, Ankunft,
|
||||||
Wagenreihung u.a.). Die letzten zehn Fahrten werden unter <a
|
Wagenreihung u.a.). Bis zu zehn deiner Fahrten werden unter <a
|
||||||
href="/p/<%= $name %>">/p/<%= $name %></a> aufgelistet und verlinkt,
|
href="/p/<%= $name %>">/p/<%= $name %></a> aufgelistet und verlinkt,
|
||||||
ältere Fahrten sind jedoch weiterhin über /p/<%= $name %>/j/ID
|
dort nicht eingetragene Fahrten sind jedoch weiterhin über /p/<%=
|
||||||
zugänglich. Da die ID (mit Lücken) aufsteigend vergeben wird, sind
|
$name %>/j/ID zugänglich. Da die ID (mit Lücken) aufsteigend vergeben
|
||||||
effektiv alle deiner vergangenen Fahrten öffentlich.
|
wird, sind effektiv alle deiner vergangenen Fahrten (oder alle Fahrten
|
||||||
|
der letzten vier Wochen) öffentlich.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<h2>Sonstiges</h2>
|
||||||
|
<div class="row">
|
||||||
|
<div class="input-field col s12">
|
||||||
|
<label>
|
||||||
|
%= check_box public_comment => 1
|
||||||
|
<span>Kommentare anzeigen</span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col s12">
|
||||||
|
Wenn aktiv, sind von dir eingetragene Freitext-Kommentare in deinem
|
||||||
|
aktuellen Status sowie bei deinen vergangenen Zugfahrten sichtbar.
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
<h2>Letzte Fahrten von <%= $name %></h1>
|
<h2>Letzte Fahrten von <%= $name %></h1>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
%= include '_history_trains', date_format => '%d.%m.%Y', link_prefix => "/p/${name}/j/", journeys => [journeys->get(uid => $uid, limit => 10, with_datetime => 1)];
|
%= include '_history_trains', date_format => '%d.%m.%Y', link_prefix => "/p/${name}/j/", journeys => $journeys;
|
||||||
% }
|
% }
|
||||||
|
|
||||||
%= include '_footer', version => stash('version')
|
%= include '_footer', version => stash('version')
|
||||||
|
|
Loading…
Reference in a new issue