diff options
| -rw-r--r-- | lib/Travelynx/Controller/Account.pm | 9 | ||||
| -rwxr-xr-x | lib/Travelynx/Controller/Traveling.pm | 34 | ||||
| -rw-r--r-- | templates/account.html.ep | 20 | ||||
| -rw-r--r-- | templates/privacy.html.ep | 83 | ||||
| -rw-r--r-- | templates/profile.html.ep | 2 | 
5 files changed, 99 insertions, 49 deletions
| diff --git a/lib/Travelynx/Controller/Account.pm b/lib/Travelynx/Controller/Account.pm index 10200a6..c68a22c 100644 --- a/lib/Travelynx/Controller/Account.pm +++ b/lib/Travelynx/Controller/Account.pm @@ -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} );  	}  } diff --git a/lib/Travelynx/Controller/Traveling.pm b/lib/Travelynx/Controller/Traveling.pm index 33b3118..24edaa3 100755 --- a/lib/Travelynx/Controller/Traveling.pm +++ b/lib/Travelynx/Controller/Traveling.pm @@ -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 { diff --git a/templates/account.html.ep b/templates/account.html.ep index 7bc725f..9b049a3 100644 --- a/templates/account.html.ep +++ b/templates/account.html.ep @@ -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} & 0x10) { -						Vergangene Fahrten (nur mit Anmeldung) +					% 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) +						% }  					% } -					% elsif ($acc->{is_public} & 0x20) { -						Vergangene Fahrten +					% if ($acc->{is_public} & 0x04) { +						<br/> +						Kommentare  					% }  				</td>  			</tr> diff --git a/templates/privacy.html.ep b/templates/privacy.html.ep index 98dc068..b5f3bb3 100644 --- a/templates/privacy.html.ep +++ b/templates/privacy.html.ep @@ -12,26 +12,22 @@  <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"> @@ -39,63 +35,72 @@  			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"> diff --git a/templates/profile.html.ep b/templates/profile.html.ep index 1755303..6a8d67d 100644 --- a/templates/profile.html.ep +++ b/templates/profile.html.ep @@ -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') | 
