Commit 7eb5f967 authored by Birte Kristina Friesel's avatar Birte Kristina Friesel
Browse files

profile: limit history to four weeks by default

parent 482fa975
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -261,6 +261,13 @@ sub privacy {
			$public_level &= ~0x30;
		}

		if ( $self->param('history_age') eq 'infinite' ) {
			$public_level |= 0x40;
		}
		else {
			$public_level &= ~0x40;
		}

		$self->users->set_privacy(
			uid   => $user->{id},
			level => $public_level
@@ -281,6 +288,8 @@ sub privacy {
			: $public_level & 0x20 ? 'extern'
			:                        'private'
		);
		$self->param(
			history_age => $public_level & 0x40 ? 'infinite' : 'month' );
		$self->render( 'privacy', name => $user->{name} );
	}
}
+32 −2
Original line number Diff line number Diff line
@@ -160,12 +160,32 @@ sub public_profile {
	  )
	{
		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(
			'profile',
			name         => $name,
			uid          => $user->{id},
			public_level => $user->{public_level},
			journey      => $status,
			journeys     => [@journeys],
			version      => $self->app->config->{version} // 'UNKNOWN',
		);
	}
@@ -207,12 +227,22 @@ sub public_journey_details {
			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) {
			my $map_data = $self->journeys_to_map_data(
				journeys       => [$journey],
				include_manual => 1,
			);
			if ( $journey->{user_data}{comment} ) {
			if ( $journey->{user_data}{comment}
				and not $user->{public_level} & 0x04 )
			{
				delete $journey->{user_data}{comment};
			}
			$self->render(
@@ -226,7 +256,7 @@ sub public_journey_details {
			);
		}
		else {
			$self->render( 'not_found', );
			$self->render('not_found');
		}
	}
	else {
+13 −7
Original line number Diff line number Diff line
@@ -72,17 +72,23 @@
					% elsif ($acc->{is_public} & 0x02) {
						Aktueller Status
					% }
					% if ($acc->{is_public} & 0x04) {
						mit Kommentar
					% }
					% 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) {
						Vergangene Fahrten (nur mit Anmeldung)
							(nur mit Anmeldung)
						% }
					% elsif ($acc->{is_public} & 0x20) {
						Vergangene Fahrten
					% }
					% if ($acc->{is_public} & 0x04) {
						<br/>
						Kommentare
					% }
				</td>
			</tr>
+44 −39
Original line number Diff line number Diff line
@@ -12,90 +12,95 @@
<h2>Aktueller Status</h2>
	<div class="row">
		<div class="input-field col s12">
			<div>
			<label>
				%= radio_button status_level => 'private'
				<span>Nicht sichtbar</span>
			</label>
		</div>
	</div>
	<div class="row">
		<div class="input-field col s12">
			</div><div>
			<label>
				%= radio_button status_level => 'intern'
				<span>Nur mit Anmeldung</span>
			</label>
		</div>
	</div>
	<div class="row">
		<div class="input-field col s12">
			</div><div>
			<label>
				%= radio_button status_level => 'extern'
				<span>Öffentlich</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,
			Abfahrts- und Ankunftszeit gezeigt; andernfalls lediglich der
			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).
		</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>
	<div class="row">
		<div class="input-field col s12">
		<div class="input-field col s12 m6 l6">
			<div>
			<label>
				%= radio_button history_level => 'private'
				<span>Nicht sichtbar</span>
			</label>
		</div>
	</div>
	<div class="row">
		<div class="input-field col s12">
			</div><div>
			<label>
				%= radio_button history_level => 'intern'
				<span>Nur mit Anmeldung</span>
			</label>
		</div>
	</div>
	<div class="row">
		<div class="input-field col s12">
			</div><div>
			<label>
				%= radio_button history_level => 'extern'
				<span>Öffentlich</span>
			</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 class="row">
		<div class="col s12">
			Diese Einstellung bestimmt die Sichtbarkeit deiner vergangenen
			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,
			ältere 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 öffentlich.
			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.
		</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 class="row">
+1 −1
Original line number Diff line number Diff line
@@ -23,7 +23,7 @@
			<h2>Letzte Fahrten von <%= $name %></h1>
		</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')