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(
|
||||
uid => $uid,
|
||||
db => $db
|
||||
db => $db,
|
||||
);
|
||||
|
||||
if ( $latest_cancellation and $latest_cancellation->{cancelled} ) {
|
||||
|
@ -1675,6 +1675,8 @@ sub startup {
|
|||
arr_name => $latest->{arr_name},
|
||||
arr_platform => $latest->{arr_platform},
|
||||
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{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' ) {
|
||||
$opt{past_visible} = 1;
|
||||
|
@ -493,6 +494,7 @@ sub privacy {
|
|||
: 'private'
|
||||
);
|
||||
$self->param( history_age => $user->{past_all} ? 'infinite' : 'month' );
|
||||
$self->param( past_status => $user->{past_status} );
|
||||
$self->render( 'privacy', name => $user->{name} );
|
||||
}
|
||||
}
|
||||
|
|
|
@ -570,7 +570,7 @@ sub user_status {
|
|||
);
|
||||
|
||||
my $visibility;
|
||||
if ( $status->{checked_in} ) {
|
||||
if ( $status->{checked_in} or $status->{arr_name} ) {
|
||||
$visibility
|
||||
= $self->compute_effective_visibility(
|
||||
$user->{default_visibility_str},
|
||||
|
@ -589,8 +589,15 @@ sub user_status {
|
|||
)
|
||||
{
|
||||
$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} ) {
|
||||
$og_data{url} .= '/' . $status->{sched_departure}->epoch;
|
||||
|
@ -640,7 +647,7 @@ sub public_profile {
|
|||
|
||||
my $status = $self->get_user_status( $user->{id} );
|
||||
my $visibility;
|
||||
if ( $status->{checked_in} ) {
|
||||
if ( $status->{checked_in} or $status->{arr_name} ) {
|
||||
$visibility
|
||||
= $self->compute_effective_visibility(
|
||||
$user->{default_visibility_str},
|
||||
|
@ -659,8 +666,15 @@ sub public_profile {
|
|||
)
|
||||
{
|
||||
$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 = (
|
||||
uid => $user->{id},
|
||||
|
@ -855,7 +869,7 @@ sub public_status_card {
|
|||
|
||||
my $status = $self->get_user_status( $user->{id} );
|
||||
my $visibility;
|
||||
if ( $status->{checked_in} ) {
|
||||
if ( $status->{checked_in} or $status->{arr_name} ) {
|
||||
$visibility
|
||||
= $self->compute_effective_visibility(
|
||||
$user->{default_visibility_str},
|
||||
|
@ -874,8 +888,15 @@ sub public_status_card {
|
|||
)
|
||||
{
|
||||
$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(
|
||||
'_public_status_card',
|
||||
|
|
|
@ -720,6 +720,11 @@ sub get_latest {
|
|||
}
|
||||
)->expand->hash;
|
||||
|
||||
$latest_successful->{visibility_str}
|
||||
= $latest_successful->{visibility}
|
||||
? $visibility_itoa{ $latest_successful->{visibility} }
|
||||
: 'default';
|
||||
|
||||
my $latest = $db->select(
|
||||
'journeys_str',
|
||||
'*',
|
||||
|
@ -732,6 +737,11 @@ sub get_latest {
|
|||
}
|
||||
)->expand->hash;
|
||||
|
||||
$latest->{visibility_str}
|
||||
= $latest->{visibility}
|
||||
? $visibility_itoa{ $latest->{visibility} }
|
||||
: 'default';
|
||||
|
||||
return ( $latest_successful, $latest );
|
||||
}
|
||||
|
||||
|
|
|
@ -178,6 +178,7 @@ sub get_privacy_by_name {
|
|||
comments_visible => $user->{public_level} & 0x80 ? 1 : 0,
|
||||
past_visible => ( $user->{public_level} & 0x300 ) >> 8,
|
||||
past_all => $user->{public_level} & 0x400 ? 1 : 0,
|
||||
past_status => $user->{public_level} & 0x800 ? 1 : 0,
|
||||
};
|
||||
}
|
||||
return;
|
||||
|
@ -194,7 +195,7 @@ sub set_privacy {
|
|||
= ( $opt{default_visibility} & 0x7f )
|
||||
| ( $opt{comments_visible} ? 0x80 : 0x00 )
|
||||
| ( ( ( $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 } );
|
||||
|
@ -376,6 +377,7 @@ sub get {
|
|||
comments_visible => $user->{public_level} & 0x80 ? 1 : 0,
|
||||
past_visible => ( $user->{public_level} & 0x300 ) >> 8,
|
||||
past_all => $user->{public_level} & 0x400 ? 1 : 0,
|
||||
past_status => $user->{public_level} & 0x800 ? 1 : 0,
|
||||
email => $user->{email},
|
||||
sb_name => $user->{external_services}
|
||||
? $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>
|
||||
<span class="card-title"><%= $name %> ist gerade nicht eingecheckt</span>
|
||||
<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>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -64,6 +64,16 @@
|
|||
</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="col s12">
|
||||
Wenn du (mit passender Sichtbarkeit) eingecheckt bist, werden unter
|
||||
|
|
Loading…
Reference in a new issue