Commit 482fa975 authored by Birte Kristina Friesel's avatar Birte Kristina Friesel
Browse files

add public profile page and public journey details

parent ea0fe3ea
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -2685,6 +2685,8 @@ sub startup {
	$r->get('/status/:name/:ts')->to('traveling#user_status');
	$r->get('/ajax/status/:name')->to('traveling#public_status_card');
	$r->get('/ajax/status/:name/:ts')->to('traveling#public_status_card');
	$r->get('/p/:name')->to('traveling#public_profile');
	$r->get('/p/:name/j/:id')->to('traveling#public_journey_details');
	$r->post('/api/v1/import')->to('api#import_v1');
	$r->post('/api/v1/travel')->to('api#travel_v1');
	$r->post('/action')->to('traveling#log_action');
+88 −0
Original line number Diff line number Diff line
@@ -146,6 +146,94 @@ sub user_status {
	}
}

sub public_profile {
	my ($self) = @_;

	my $name = $self->stash('name');
	my $user = $self->users->get_privacy_by_name( name => $name );

	if (
		$user
		and ( $user->{public_level} & 0x22
			or
			( $user->{public_level} & 0x11 and $self->is_user_authenticated ) )
	  )
	{
		my $status = $self->get_user_status( $user->{id} );
		$self->render(
			'profile',
			name         => $name,
			uid          => $user->{id},
			public_level => $user->{public_level},
			journey      => $status,
			version      => $self->app->config->{version} // 'UNKNOWN',
		);
	}
	else {
		$self->render('not_found');
	}
}

sub public_journey_details {
	my ($self)     = @_;
	my $name       = $self->stash('name');
	my $journey_id = $self->stash('id');
	my $user       = $self->users->get_privacy_by_name( name => $name );

	$self->param( journey_id => $journey_id );

	if ( not( $journey_id and $journey_id =~ m{ ^ \d+ $ }x ) ) {
		$self->render(
			'journey',
			status  => 404,
			error   => 'notfound',
			journey => {}
		);
		return;
	}

	if (
		$user
		and ( $user->{public_level} & 0x20
			or
			( $user->{public_level} & 0x10 and $self->is_user_authenticated ) )
	  )
	{
		my $journey = $self->journeys->get_single(
			uid           => $user->{id},
			journey_id    => $journey_id,
			verbose       => 1,
			with_datetime => 1,
			with_polyline => 1,
		);

		if ($journey) {
			my $map_data = $self->journeys_to_map_data(
				journeys       => [$journey],
				include_manual => 1,
			);
			if ( $journey->{user_data}{comment} ) {
				delete $journey->{user_data}{comment};
			}
			$self->render(
				'journey',
				error    => undef,
				journey  => $journey,
				with_map => 1,
				username => $name,
				readonly => 1,
				%{$map_data},
			);
		}
		else {
			$self->render( 'not_found', );
		}
	}
	else {
		$self->render('not_found');
	}
}

sub public_status_card {
	my ($self) = @_;

+3 −0
Original line number Diff line number Diff line
@@ -12,6 +12,9 @@
			<tbody>
				% for my $travel (@{$journeys}) {
					% my $detail_link = '/journey/' . $travel->{id};
					% if (my $prefix = stash('link_prefix')) {
						% $detail_link = $prefix . $travel->{id};
					% }
					<tr>
						<td><%= $travel->{sched_departure}->strftime($date_format) %></td>
						<td><a href="<%= $detail_link %>"><%= $travel->{type} %> <%= $travel->{line} // $travel->{no} %></a></td>
+3 −3
Original line number Diff line number Diff line
@@ -67,7 +67,7 @@
						<span style="color: #999999;">Keine</span>
					% }
					% if ($acc->{is_public} & 0x01) {
						Aktueller Status (nur für angemeldete Accounts)
						Aktueller Status (nur mit Anmeldung)
					% }
					% elsif ($acc->{is_public} & 0x02) {
						Aktueller Status
@@ -79,10 +79,10 @@
						<br/>
					% }
					% if ($acc->{is_public} & 0x10) {
						Letzte zehn Fahrten (nur für angemeldete Accounts)
						Vergangene Fahrten (nur mit Anmeldung)
					% }
					% elsif ($acc->{is_public} & 0x20) {
						Letzte zehn Fahrten
						Vergangene Fahrten
					% }
				</td>
			</tr>
+3 −0
Original line number Diff line number Diff line
@@ -14,6 +14,9 @@
	<div class="row">
		<div class="col s12">
			<p>
				% if (my $name = stash('username')) {
					<b><a href="/p/<%= $name %>"><%= $name %></a></b>s
				% }
				% if ($journey->{cancelled}) {
					Ausgefallene Fahrt
				% }
Loading