pixelfed/resources/views/status/reply.blade.php
2023-02-02 02:21:13 -07:00

208 lines
8.6 KiB
PHP

@extends('layouts.app')
@section('content')
<div class="container reply-container">
<div class="col-12 col-md-8 offset-md-2 mt-4">
<div class="card shadow-none border">
@php($authed = request()->user())
@php($pid = $authed ? request()->user()->profile_id : null)
@php($gp = $status->parent()->parent())
@if($gp)
<div class="card-body p-0 m-0 bg-light border-bottom">
@if(
!in_array($gp->scope, ['public', 'unlisted', 'private']) ||
($gp->scope == 'private' && !$authed) ||
($gp->scope == 'private' && ($gp->profile_id != $pid && \App\Services\FollowerService::follows($pid, $gp->profile_id) == false))
)
<p class="text-center mb-0 py-5 font-weight-bold">This status cannot be viewed at this time.</p>
@else
<div class="d-flex p-0 m-0 align-items-center">
@if($gp->media()->count())
<img src="{{$gp->thumb()}}" width="150px" height="150px" class="post-thumbnail" onerror="this.onerror=null;this.src='/storage/no-preview.png?v=0';">
@endif
<div class="p-4 w-100">
<div class="">
<div class="media">
<img src="{{$gp->profile->avatarUrl()}}" class="rounded-circle img-thumbnail mb-1 mr-3" width="30px" onerror="this.onerror=null;this.src='/storage/avatars/default.png?v=0';">
<div class="media-body">
<span class="font-weight-bold" v-pre>{{$gp->profile->username}}</span>
<div class="">
<p class="w-100 text-break" v-pre>{!!$gp->rendered!!}</p>
</div>
<div class="mb-0 small">
<a href="{{$gp->url()}}" class="text-muted">
{{$gp->created_at->diffForHumans()}}
</a>
</div>
</div>
<a class="float-right" href="{{$gp->url()}}"><i class="far fa-share-square"></i></a>
</div>
</div>
</div>
</div>
@endif
</div>
@endif
@php($parent = $status->parent())
<div class="card-body p-0 m-0 bg-light border-bottom">
@if(
!in_array($parent->scope, ['public', 'unlisted', 'private']) ||
($parent->scope == 'private' && !$authed) ||
($parent->scope == 'private' && ($parent->profile_id != $pid && \App\Services\FollowerService::follows($pid, $parent->profile_id) == false))
)
<p class="text-center mb-0 py-5 font-weight-bold">This status cannot be viewed at this time.</p>
@else
<div class="d-flex p-0 m-0 align-items-center">
@if($parent->media()->count())
<img src="{{$parent->thumb()}}" width="150px" height="150px" class="post-thumbnail" onerror="this.onerror=null;this.src='/storage/no-preview.png?v=0';">
@endif
<div class="p-4 w-100">
<div class="">
<div class="media">
<img src="{{$parent->profile->avatarUrl()}}" class="rounded-circle img-thumbnail mb-1 mr-3" width="30px" onerror="this.onerror=null;this.src='/storage/avatars/default.png?v=0';">
<div class="media-body">
<span class="font-weight-bold" v-pre>{{$parent->profile->username}}</span>
<div class="">
<p class="w-100 text-break" v-pre>{!!$parent->rendered!!}</p>
</div>
<div class="mb-0 small">
<a href="{{$parent->url()}}" class="text-muted">
{{$parent->created_at->diffForHumans()}}
</a>
</div>
</div>
<a class="float-right" href="{{$parent->url()}}"><i class="far fa-share-square"></i></a>
</div>
</div>
</div>
</div>
@endif
</div>
<div class="card-body border-bottom">
@if($status->is_nsfw)
<details class="cw">
<summary class="px-3 px-md-5">
<p class="py-5 mb-0 text-center">This comment may contain sensitive content. <span class="float-right font-weight-bold text-primary">Show</span></p>
</summary>
<div class="media py-5">
<img class="mr-3 rounded-circle img-thumbnail" src="{{$status->profile->avatarUrl()}}" width="60px" onerror="this.onerror=null;this.src='/storage/avatars/default.png?v=0';">
<div class="media-body">
<h5 class="mt-0 font-weight-bold" v-pre>{{$status->profile->username}}</h5>
<p class="" v-pre>{!! $status->rendered !!}</p>
<div class="mb-0 small">
<a href="{{$status->url()}}" class="text-muted">
{{$status->created_at->diffForHumans()}}
</a>
</div>
</div>
</div>
</details>
@else
<div class="media py-5">
<img class="mr-3 rounded-circle img-thumbnail" src="{{$status->profile->avatarUrl()}}" width="60px" onerror="this.onerror=null;this.src='/storage/avatars/default.png?v=0';">
<div class="media-body">
<h5 class="mt-0 font-weight-bold" v-pre>{{$status->profile->username}}</h5>
<p class="" v-pre>{!! $status->rendered !!}</p>
<div class="mb-0 small">
<a href="{{$status->url()}}" class="text-muted">
{{$status->created_at->diffForHumans()}}
</a>
@if(Auth::check() && $status->profile_id == Auth::user()->profile->id)
<form class="float-right" method="POST" action="/i/delete">
@csrf
<input type="hidden" name="item" value="{{$status->id}}">
<input type="hidden" name="type" value="status">
<button class="btn btn-outline-danger small font-weight-bold btn-sm py-1">Delete</button>
</form>
@endif
</div>
</div>
</div>
@endif
</div>
@if($status->comments->count())
<div class="card-body p-0 m-0 bg-light border-bottom">
<div class="d-flex p-0 m-0 align-items-center">
@if($status->comments()->first()->media()->count())
<img src="{{$status->comments()->first()->thumb()}}" width="150px" height="150px" class="post-thumbnail" onerror="this.onerror=null;this.src='/storage/no-preview.png?v=0';">
@endif
<div class="p-4 w-100">
<div class="">
<div class="media">
<img src="{{$status->comments()->first()->profile->avatarUrl()}}" class="rounded-circle img-thumbnail mb-1 mr-3" width="30px" onerror="this.onerror=null;this.src='/storage/avatars/default.png?v=0';">
<div class="media-body">
<span class="font-weight-bold" v-pre>{{$status->comments()->first()->profile->username}}</span>
<div class="">
<p class="w-100 text-break" v-pre>{!!$status->comments()->first()->rendered!!}</p>
</div>
<div class="mb-0 small">
<a href="{{$status->comments()->first()->url()}}" class="text-muted">
{{$status->comments()->first()->created_at->diffForHumans()}}
</a>
</div>
</div>
<a class="float-right" href="{{$status->comments()->first()->url()}}"><i class="far fa-share-square"></i></a>
</div>
</div>
</div>
</div>
</div>
@endif
</div>
</div>
</div>
@endsection
@push('styles')
<style type="text/css">
@keyframes fadeInDown {
0% {
opacity: 0;
transform: translateY(-1.25em);
}
100% {
opacity: 1;
transform: translateY(0);
}
}
.cw[open] {
animation-name: fadeInDown;
animation-duration: 0.5s;
}
.cw>summary {
display: flex;
flex-flow: column;
justify-content: center;
border: 0;
background-color: #fff;
padding-top: 50px;
padding-bottom: 50px;
text-align: center;
}
.cw[open] > summary {
display: none!important;
}
</style>
@endpush
@push('scripts')
<script type="text/javascript">
$(document).ready(function() {
$('.reactions').hide();
$('.more-comments').hide();
$('.card-footer').hide();
new Vue({
el: '#content'
});
});
</script>
@endpush