show.blade.php 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207
  1. @extends('admin.partial.template-full')
  2. @section('section')
  3. <div class="title d-flex justify-content-between align-items-center">
  4. <span><a href="{{route('admin.users')}}" class="btn btn-outline-secondary btn-sm font-weight-bold">Back</a></span>
  5. <span class="text-center">
  6. <h3 class="font-weight-bold mb-0">&commat;{{$profile->username}}</h3>
  7. <p class="mb-0 small text-muted text-uppercase font-weight-bold">
  8. <span>{{$profile->statuses()->count()}} Posts</span>
  9. <span class="px-1">|</span>
  10. <span>{{$profile->followers()->count()}} Followers</span>
  11. <span class="px-1">|</span>
  12. <span>{{$profile->following()->count()}} Following</span>
  13. </p>
  14. </span>
  15. <span>
  16. <div class="dropdown">
  17. <button class="btn btn-outline-secondary btn-sm font-weight-bold dropdown-toggle" type="button" id="userActions" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><i class="fas fa-bars"></i></button>
  18. <div class="dropdown-menu dropdown-menu-right" aria-labelledby="userActions">
  19. <a class="dropdown-item" href="/i/admin/users/activity/{{$user->id}}">
  20. <span class="font-weight-bold">Activity</span>
  21. </a>
  22. <a class="dropdown-item" href="/i/admin/users/message/{{$user->id}}">
  23. <span class="font-weight-bold">Send Message</span>
  24. </a>
  25. <a class="dropdown-item" href="{{$profile->url()}}">
  26. <span class="font-weight-bold">View Profile</span>
  27. </a>
  28. <div class="dropdown-divider"></div>
  29. <a class="dropdown-item" href="/i/admin/users/edit/{{$user->id}}">
  30. <span class="font-weight-bold">Edit</span>
  31. </a>
  32. <a class="dropdown-item" href="/i/admin/users/modtools/{{$user->id}}">
  33. <span class="font-weight-bold">Mod Tools</span>
  34. </a>
  35. <a class="dropdown-item" href="/i/admin/users/modlogs/{{$user->id}}">
  36. <span class="font-weight-bold">Mod Logs</span>
  37. </a>
  38. <div class="dropdown-divider"></div>
  39. <a class="dropdown-item" href="/i/admin/users/delete/{{$user->id}}">
  40. <span class="text-danger font-weight-bold">Delete Account</span>
  41. </a>
  42. </div>
  43. </div>
  44. </span>
  45. </div>
  46. <hr>
  47. <div class="row mb-3">
  48. <div class="col-12 col-md-4">
  49. <div class="card shadow-none border">
  50. <div class="card-body text-center">
  51. <img src="{{$profile->avatarUrl()}}" class="box-shadow rounded-circle" width="128px" height="128px">
  52. <p class="mt-3 mb-0 lead">
  53. <span class="font-weight-bold">{{$profile->name}}</span>
  54. </p>
  55. @if($user->is_admin == true)
  56. <p class="mb-0">
  57. <span class="badge badge-danger badge-sm">ADMIN</span>
  58. </p>
  59. @endif
  60. <div class="d-flex justify-content-around mt-3">
  61. <div class="mb-0">
  62. <p class="mb-n2 text-center text-dark font-weight-bold">
  63. {{$profile->created_at->diffForHumans()}}
  64. </p>
  65. <p class="mb-0 text-center text-muted">
  66. <span class="small">Joined</span>
  67. </p>
  68. </div>
  69. @if($user->last_active_at)
  70. <div class="mb-0">
  71. <p class="mb-n2 text-center text-dark font-weight-bold">
  72. {{$user->last_active_at->diffForHumans()}}
  73. </p>
  74. <p class="mb-0 text-center text-muted">
  75. <span class="small">Last Active</span>
  76. </p>
  77. </div>
  78. @endif
  79. </div>
  80. </div>
  81. <div class="list-group list-group-flush details-list">
  82. <div class="list-group-item details-list-item">
  83. <p class="details-list-item-title">email</p>
  84. <p class="details-list-item-value text-truncate" title="{{$user->email}}">{{$user->email}}</p>
  85. </div>
  86. @if($profile->website)
  87. <div class="list-group-item details-list-item">
  88. <p class="details-list-item-title">website</p>
  89. <p class="details-list-item-value text-truncate" title="{{$profile->website}}">{{$profile->website}}</p>
  90. </div>
  91. @endif
  92. <div class="list-group-item details-list-item">
  93. <p class="details-list-item-title">bookmarks</p>
  94. <p class="details-list-item-value text-truncate">{{$profile->bookmarks()->count()}}</p>
  95. </div>
  96. <div class="list-group-item details-list-item">
  97. <p class="details-list-item-title">collections</p>
  98. <p class="details-list-item-value text-truncate">{{$profile->collections()->count()}}</p>
  99. </div>
  100. <div class="list-group-item details-list-item">
  101. <p class="details-list-item-title">likes</p>
  102. <p class="details-list-item-value text-truncate">{{$profile->likes()->count()}}</p>
  103. </div>
  104. <div class="list-group-item details-list-item">
  105. <p class="details-list-item-title">reports</p>
  106. <p class="details-list-item-value text-truncate">{{$profile->reports()->count()}}</p>
  107. </div>
  108. <div class="list-group-item details-list-item">
  109. <p class="details-list-item-title">reported</p>
  110. <p class="details-list-item-value text-truncate">{{$profile->reported()->count()}}</p>
  111. </div>
  112. <div class="list-group-item details-list-item">
  113. <p class="details-list-item-title">active stories</p>
  114. <p class="details-list-item-value text-truncate">{{$profile->stories()->count()}}</p>
  115. </div>
  116. <div class="list-group-item details-list-item">
  117. <p class="details-list-item-title">storage used</p>
  118. <p class="details-list-item-value text-truncate">{{PrettyNumber::size($profile->media()->sum('size'))}}<span class="text-muted"> / {{PrettyNumber::size(config_cache('pixelfed.max_account_size') * 1000)}}</p>
  119. </div>
  120. <div class="list-group-item details-list-item">
  121. <p class="details-list-item-title">bio</p>
  122. <p class="details-list-item-value text-wrap text-xs">{{ $profile->bio }}</p>
  123. </div>
  124. </div>
  125. </div>
  126. </div>
  127. <div class="col-12 col-md-8">
  128. <p class="title h4 font-weight-bold mt-2 py-2">Recent Posts</p>
  129. <hr>
  130. <div class="row">
  131. @foreach($profile->statuses()->whereHas('media')->latest()->take(16)->get() as $item)
  132. @php($post = \App\Services\StatusService::get($item->id, false))
  133. <div class="col-12 col-md-3 col-sm-6 mb-3 px-0">
  134. <a href="{{$item->url()}}">
  135. @if($post)
  136. <img src="{{$post['media_attachments'][0]['url']}}" width="200px" height="200px" style="object-fit: cover;" onerror="this.src='/storage/no-preview.png';this.onerror=null;">
  137. @else
  138. <img src="/storage/no-preview.png" width="200px" height="200px">
  139. @endif
  140. </a>
  141. </div>
  142. @endforeach
  143. @if($profile->statuses()->whereHas('media')->count() == 0)
  144. <div class="col-12">
  145. <div class="card card-body border shadow-none bg-transparent">
  146. <p class="text-center mb-0 text-muted">No statuses found</p>
  147. </div>
  148. </div>
  149. @endif
  150. </div>
  151. </div>
  152. </div>
  153. @endsection
  154. @push('styles')
  155. <style type="text/css">
  156. .gap-1 {
  157. gap: 5rem;
  158. }
  159. .details-list {
  160. }
  161. .details-list-item {
  162. display: flex;
  163. justify-content: space-between;
  164. align-items: center;
  165. gap: 5rem;
  166. border-left: 0;
  167. border-right: 0;
  168. }
  169. .details-list-item-title {
  170. margin-bottom: 0;
  171. color: #9ca3af !important;
  172. text-transform: uppercase !important;
  173. font-weight: bold;
  174. font-size: 13px;
  175. opacity: 0.69;
  176. }
  177. .details-list-item-value {
  178. font-size: 15px;
  179. font-weight: 600;
  180. margin-bottom: 0;
  181. }
  182. .text-xs {
  183. font-size: 11px !important;
  184. font-weight: normal;
  185. }
  186. </style>
  187. @endpush