reply.blade.php 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  1. @extends('layouts.app')
  2. @section('content')
  3. <div class="container reply-container">
  4. <div class="col-12 col-md-8 offset-md-2 mt-4">
  5. <div class="card shadow-none border">
  6. @php($gp = $status->parent()->parent())
  7. @if($gp)
  8. <div class="card-body p-0 m-0 bg-light border-bottom">
  9. @if($gp->scope == 'archived')
  10. <p class="text-center mb-0 py-5 font-weight-bold">This status cannot be viewed at this time.</p>
  11. @else
  12. <div class="d-flex p-0 m-0 align-items-center">
  13. @if($gp->media()->count())
  14. <img src="{{$gp->thumb()}}" width="150px" height="150px" class="post-thumbnail" onerror="this.onerror=null;this.src='/storage/no-preview.png?v=0';">
  15. @endif
  16. <div class="p-4 w-100">
  17. <div class="">
  18. <div class="media">
  19. <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';">
  20. <div class="media-body">
  21. <span class="font-weight-bold" v-pre>{{$gp->profile->username}}</span>
  22. <div class="">
  23. <p class="w-100 text-break" v-pre>{!!$gp->rendered!!}</p>
  24. </div>
  25. <div class="mb-0 small">
  26. <a href="{{$gp->url()}}" class="text-muted">
  27. {{$gp->created_at->diffForHumans()}}
  28. </a>
  29. </div>
  30. </div>
  31. <a class="float-right" href="{{$gp->url()}}"><i class="far fa-share-square"></i></a>
  32. </div>
  33. </div>
  34. </div>
  35. </div>
  36. @endif
  37. </div>
  38. @endif
  39. @php($parent = $status->parent())
  40. <div class="card-body p-0 m-0 bg-light border-bottom">
  41. @if($parent->scope == 'archived')
  42. <p class="text-center mb-0 py-5 font-weight-bold">This status cannot be viewed at this time.</p>
  43. @else
  44. <div class="d-flex p-0 m-0 align-items-center">
  45. @if($parent->media()->count())
  46. <img src="{{$parent->thumb()}}" width="150px" height="150px" class="post-thumbnail" onerror="this.onerror=null;this.src='/storage/no-preview.png?v=0';">
  47. @endif
  48. <div class="p-4 w-100">
  49. <div class="">
  50. <div class="media">
  51. <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';">
  52. <div class="media-body">
  53. <span class="font-weight-bold" v-pre>{{$parent->profile->username}}</span>
  54. <div class="">
  55. <p class="w-100 text-break" v-pre>{!!$parent->rendered!!}</p>
  56. </div>
  57. <div class="mb-0 small">
  58. <a href="{{$parent->url()}}" class="text-muted">
  59. {{$parent->created_at->diffForHumans()}}
  60. </a>
  61. </div>
  62. </div>
  63. <a class="float-right" href="{{$parent->url()}}"><i class="far fa-share-square"></i></a>
  64. </div>
  65. </div>
  66. </div>
  67. </div>
  68. @endif
  69. </div>
  70. <div class="card-body border-bottom">
  71. @if($status->is_nsfw)
  72. <details class="cw">
  73. <summary class="px-3 px-md-5">
  74. <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>
  75. </summary>
  76. <div class="media py-5">
  77. <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';">
  78. <div class="media-body">
  79. <h5 class="mt-0 font-weight-bold" v-pre>{{$status->profile->username}}</h5>
  80. <p class="" v-pre>{!! $status->rendered !!}</p>
  81. <div class="mb-0 small">
  82. <a href="{{$status->url()}}" class="text-muted">
  83. {{$status->created_at->diffForHumans()}}
  84. </a>
  85. </div>
  86. </div>
  87. </div>
  88. </details>
  89. @else
  90. <div class="media py-5">
  91. <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';">
  92. <div class="media-body">
  93. <h5 class="mt-0 font-weight-bold" v-pre>{{$status->profile->username}}</h5>
  94. <p class="" v-pre>{!! $status->rendered !!}</p>
  95. <div class="mb-0 small">
  96. <a href="{{$status->url()}}" class="text-muted">
  97. {{$status->created_at->diffForHumans()}}
  98. </a>
  99. @if(Auth::check() && $status->profile_id == Auth::user()->profile->id)
  100. <form class="float-right" method="POST" action="/i/delete">
  101. @csrf
  102. <input type="hidden" name="item" value="{{$status->id}}">
  103. <input type="hidden" name="type" value="status">
  104. <button class="btn btn-outline-danger small font-weight-bold btn-sm py-1">Delete</button>
  105. </form>
  106. @endif
  107. </div>
  108. </div>
  109. </div>
  110. @endif
  111. </div>
  112. @if($status->comments->count())
  113. <div class="card-body p-0 m-0 bg-light border-bottom">
  114. <div class="d-flex p-0 m-0 align-items-center">
  115. @if($status->comments()->first()->media()->count())
  116. <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';">
  117. @endif
  118. <div class="p-4 w-100">
  119. <div class="">
  120. <div class="media">
  121. <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';">
  122. <div class="media-body">
  123. <span class="font-weight-bold" v-pre>{{$status->comments()->first()->profile->username}}</span>
  124. <div class="">
  125. <p class="w-100 text-break" v-pre>{!!$status->comments()->first()->rendered!!}</p>
  126. </div>
  127. <div class="mb-0 small">
  128. <a href="{{$status->comments()->first()->url()}}" class="text-muted">
  129. {{$status->comments()->first()->created_at->diffForHumans()}}
  130. </a>
  131. </div>
  132. </div>
  133. <a class="float-right" href="{{$status->comments()->first()->url()}}"><i class="far fa-share-square"></i></a>
  134. </div>
  135. </div>
  136. </div>
  137. </div>
  138. </div>
  139. @endif
  140. </div>
  141. </div>
  142. </div>
  143. @endsection
  144. @push('styles')
  145. <style type="text/css">
  146. @keyframes fadeInDown {
  147. 0% {
  148. opacity: 0;
  149. transform: translateY(-1.25em);
  150. }
  151. 100% {
  152. opacity: 1;
  153. transform: translateY(0);
  154. }
  155. }
  156. .cw[open] {
  157. animation-name: fadeInDown;
  158. animation-duration: 0.5s;
  159. }
  160. .cw>summary {
  161. display: flex;
  162. flex-flow: column;
  163. justify-content: center;
  164. border: 0;
  165. background-color: #fff;
  166. padding-top: 50px;
  167. padding-bottom: 50px;
  168. text-align: center;
  169. }
  170. .cw[open] > summary {
  171. display: none!important;
  172. }
  173. </style>
  174. @endpush
  175. @push('scripts')
  176. <script type="text/javascript">
  177. $(document).ready(function() {
  178. $('.reactions').hide();
  179. $('.more-comments').hide();
  180. $('.card-footer').hide();
  181. new Vue({
  182. el: '#content'
  183. });
  184. });
  185. </script>
  186. @endpush