status/profile: re-add ability to show latest checkout, if desired
got lost in 1.30.0
This commit is contained in:
parent
9abdaefaf5
commit
e1231b88e2
7 changed files with 64 additions and 6 deletions
|
@ -1609,7 +1609,7 @@ sub startup {
|
||||||
|
|
||||||
my ( $latest, $latest_cancellation ) = $self->journeys->get_latest(
|
my ( $latest, $latest_cancellation ) = $self->journeys->get_latest(
|
||||||
uid => $uid,
|
uid => $uid,
|
||||||
db => $db
|
db => $db,
|
||||||
);
|
);
|
||||||
|
|
||||||
if ( $latest_cancellation and $latest_cancellation->{cancelled} ) {
|
if ( $latest_cancellation and $latest_cancellation->{cancelled} ) {
|
||||||
|
@ -1675,6 +1675,8 @@ sub startup {
|
||||||
arr_name => $latest->{arr_name},
|
arr_name => $latest->{arr_name},
|
||||||
arr_platform => $latest->{arr_platform},
|
arr_platform => $latest->{arr_platform},
|
||||||
comment => $latest->{user_data}{comment},
|
comment => $latest->{user_data}{comment},
|
||||||
|
visibility => $latest->{visibility},
|
||||||
|
visibility_str => $latest->{visibility_str},
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -464,6 +464,7 @@ sub privacy {
|
||||||
$opt{comments_visible} = $self->param('public_comment') ? 1 : 0;
|
$opt{comments_visible} = $self->param('public_comment') ? 1 : 0;
|
||||||
|
|
||||||
$opt{past_all} = $self->param('history_age') eq 'infinite' ? 1 : 0;
|
$opt{past_all} = $self->param('history_age') eq 'infinite' ? 1 : 0;
|
||||||
|
$opt{past_status} = $self->param('past_status') ? 1 : 0;
|
||||||
|
|
||||||
if ( $self->param('history_level') eq 'intern' ) {
|
if ( $self->param('history_level') eq 'intern' ) {
|
||||||
$opt{past_visible} = 1;
|
$opt{past_visible} = 1;
|
||||||
|
@ -493,6 +494,7 @@ sub privacy {
|
||||||
: 'private'
|
: 'private'
|
||||||
);
|
);
|
||||||
$self->param( history_age => $user->{past_all} ? 'infinite' : 'month' );
|
$self->param( history_age => $user->{past_all} ? 'infinite' : 'month' );
|
||||||
|
$self->param( past_status => $user->{past_status} );
|
||||||
$self->render( 'privacy', name => $user->{name} );
|
$self->render( 'privacy', name => $user->{name} );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -570,7 +570,7 @@ sub user_status {
|
||||||
);
|
);
|
||||||
|
|
||||||
my $visibility;
|
my $visibility;
|
||||||
if ( $status->{checked_in} ) {
|
if ( $status->{checked_in} or $status->{arr_name} ) {
|
||||||
$visibility
|
$visibility
|
||||||
= $self->compute_effective_visibility(
|
= $self->compute_effective_visibility(
|
||||||
$user->{default_visibility_str},
|
$user->{default_visibility_str},
|
||||||
|
@ -589,8 +589,15 @@ sub user_status {
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
$status->{checked_in} = 0;
|
$status->{checked_in} = 0;
|
||||||
|
$status->{arr_name} = undef;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if ( not $status->{checked_in}
|
||||||
|
and $status->{arr_name}
|
||||||
|
and not $user->{past_status} )
|
||||||
|
{
|
||||||
|
$status->{arr_name} = undef;
|
||||||
|
}
|
||||||
|
|
||||||
if ( $status->{checked_in} ) {
|
if ( $status->{checked_in} ) {
|
||||||
$og_data{url} .= '/' . $status->{sched_departure}->epoch;
|
$og_data{url} .= '/' . $status->{sched_departure}->epoch;
|
||||||
|
@ -640,7 +647,7 @@ sub public_profile {
|
||||||
|
|
||||||
my $status = $self->get_user_status( $user->{id} );
|
my $status = $self->get_user_status( $user->{id} );
|
||||||
my $visibility;
|
my $visibility;
|
||||||
if ( $status->{checked_in} ) {
|
if ( $status->{checked_in} or $status->{arr_name} ) {
|
||||||
$visibility
|
$visibility
|
||||||
= $self->compute_effective_visibility(
|
= $self->compute_effective_visibility(
|
||||||
$user->{default_visibility_str},
|
$user->{default_visibility_str},
|
||||||
|
@ -659,8 +666,15 @@ sub public_profile {
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
$status->{checked_in} = 0;
|
$status->{checked_in} = 0;
|
||||||
|
$status->{arr_name} = undef;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if ( not $status->{checked_in}
|
||||||
|
and $status->{arr_name}
|
||||||
|
and not $user->{past_status} )
|
||||||
|
{
|
||||||
|
$status->{arr_name} = undef;
|
||||||
|
}
|
||||||
|
|
||||||
my %opt = (
|
my %opt = (
|
||||||
uid => $user->{id},
|
uid => $user->{id},
|
||||||
|
@ -855,7 +869,7 @@ sub public_status_card {
|
||||||
|
|
||||||
my $status = $self->get_user_status( $user->{id} );
|
my $status = $self->get_user_status( $user->{id} );
|
||||||
my $visibility;
|
my $visibility;
|
||||||
if ( $status->{checked_in} ) {
|
if ( $status->{checked_in} or $status->{arr_name} ) {
|
||||||
$visibility
|
$visibility
|
||||||
= $self->compute_effective_visibility(
|
= $self->compute_effective_visibility(
|
||||||
$user->{default_visibility_str},
|
$user->{default_visibility_str},
|
||||||
|
@ -874,8 +888,15 @@ sub public_status_card {
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
$status->{checked_in} = 0;
|
$status->{checked_in} = 0;
|
||||||
|
$status->{arr_name} = undef;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if ( not $status->{checked_in}
|
||||||
|
and $status->{arr_name}
|
||||||
|
and not $user->{past_status} )
|
||||||
|
{
|
||||||
|
$status->{arr_name} = undef;
|
||||||
|
}
|
||||||
|
|
||||||
$self->render(
|
$self->render(
|
||||||
'_public_status_card',
|
'_public_status_card',
|
||||||
|
|
|
@ -720,6 +720,11 @@ sub get_latest {
|
||||||
}
|
}
|
||||||
)->expand->hash;
|
)->expand->hash;
|
||||||
|
|
||||||
|
$latest_successful->{visibility_str}
|
||||||
|
= $latest_successful->{visibility}
|
||||||
|
? $visibility_itoa{ $latest_successful->{visibility} }
|
||||||
|
: 'default';
|
||||||
|
|
||||||
my $latest = $db->select(
|
my $latest = $db->select(
|
||||||
'journeys_str',
|
'journeys_str',
|
||||||
'*',
|
'*',
|
||||||
|
@ -732,6 +737,11 @@ sub get_latest {
|
||||||
}
|
}
|
||||||
)->expand->hash;
|
)->expand->hash;
|
||||||
|
|
||||||
|
$latest->{visibility_str}
|
||||||
|
= $latest->{visibility}
|
||||||
|
? $visibility_itoa{ $latest->{visibility} }
|
||||||
|
: 'default';
|
||||||
|
|
||||||
return ( $latest_successful, $latest );
|
return ( $latest_successful, $latest );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -178,6 +178,7 @@ sub get_privacy_by_name {
|
||||||
comments_visible => $user->{public_level} & 0x80 ? 1 : 0,
|
comments_visible => $user->{public_level} & 0x80 ? 1 : 0,
|
||||||
past_visible => ( $user->{public_level} & 0x300 ) >> 8,
|
past_visible => ( $user->{public_level} & 0x300 ) >> 8,
|
||||||
past_all => $user->{public_level} & 0x400 ? 1 : 0,
|
past_all => $user->{public_level} & 0x400 ? 1 : 0,
|
||||||
|
past_status => $user->{public_level} & 0x800 ? 1 : 0,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
|
@ -194,7 +195,7 @@ sub set_privacy {
|
||||||
= ( $opt{default_visibility} & 0x7f )
|
= ( $opt{default_visibility} & 0x7f )
|
||||||
| ( $opt{comments_visible} ? 0x80 : 0x00 )
|
| ( $opt{comments_visible} ? 0x80 : 0x00 )
|
||||||
| ( ( ( $opt{past_visible} // 0 ) << 8 ) & 0x300 )
|
| ( ( ( $opt{past_visible} // 0 ) << 8 ) & 0x300 )
|
||||||
| ( $opt{past_all} ? 0x400 : 0 );
|
| ( $opt{past_all} ? 0x400 : 0 ) | ( $opt{past_status} ? 0x800 : 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
$db->update( 'users', { public_level => $public_level }, { id => $uid } );
|
$db->update( 'users', { public_level => $public_level }, { id => $uid } );
|
||||||
|
@ -376,6 +377,7 @@ sub get {
|
||||||
comments_visible => $user->{public_level} & 0x80 ? 1 : 0,
|
comments_visible => $user->{public_level} & 0x80 ? 1 : 0,
|
||||||
past_visible => ( $user->{public_level} & 0x300 ) >> 8,
|
past_visible => ( $user->{public_level} & 0x300 ) >> 8,
|
||||||
past_all => $user->{public_level} & 0x400 ? 1 : 0,
|
past_all => $user->{public_level} & 0x400 ? 1 : 0,
|
||||||
|
past_status => $user->{public_level} & 0x800 ? 1 : 0,
|
||||||
email => $user->{email},
|
email => $user->{email},
|
||||||
sb_name => $user->{external_services}
|
sb_name => $user->{external_services}
|
||||||
? $sb_templates[ $user->{external_services} & 0x07 ][0]
|
? $sb_templates[ $user->{external_services} & 0x07 ][0]
|
||||||
|
|
|
@ -173,6 +173,17 @@
|
||||||
<i class="material-icons small right sync-failed-marker grey-text" style="display: none;">sync_problem</i>
|
<i class="material-icons small right sync-failed-marker grey-text" style="display: none;">sync_problem</i>
|
||||||
<span class="card-title"><%= $name %> ist gerade nicht eingecheckt</span>
|
<span class="card-title"><%= $name %> ist gerade nicht eingecheckt</span>
|
||||||
<p>
|
<p>
|
||||||
|
% if ($journey->{arr_name}) {
|
||||||
|
Zuletzt gesehen
|
||||||
|
% if ($journey->{real_arrival}->epoch and ($public_level & 0x20 or ($public_level & 0x10 and is_user_authenticated()))) {
|
||||||
|
%= $journey->{real_arrival}->strftime('am %d.%m.%Y')
|
||||||
|
in <b><%= $journey->{arr_name} %></b>
|
||||||
|
%= $journey->{real_arrival}->strftime('(Ankunft um %H:%M Uhr)')
|
||||||
|
% }
|
||||||
|
% else {
|
||||||
|
in <b><%= $journey->{arr_name} %></b>
|
||||||
|
% }
|
||||||
|
% }
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -64,6 +64,16 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="input-field col s12">
|
||||||
|
<div>
|
||||||
|
<label>
|
||||||
|
%= check_box past_status => 1
|
||||||
|
<span>Wenn nicht eingecheckt: letztes Fahrtziel unter <a href="/status/<%= $name %>">/status/<%= $name %></a> zeigen, sofern die zugehörige Reise für die aufrufende Person sichtbar ist. Caveat: Die derzeitige Implementierung dieses Features gibt preis, ob deine letzte Fahrt öffentlich / lokal sichtbar war (→ Ziel angegeben) oder nicht (→ kein Ziel angegeben).</span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col s12">
|
<div class="col s12">
|
||||||
Wenn du (mit passender Sichtbarkeit) eingecheckt bist, werden unter
|
Wenn du (mit passender Sichtbarkeit) eingecheckt bist, werden unter
|
||||||
|
|
Loading…
Reference in a new issue