show_spam.blade.php 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. @extends('admin.partial.template-full')
  2. @section('section')
  3. <div class="bg-primary px-4 py-3 mb-5 rounded d-flex align-items-center justify-content-between">
  4. <div style="max-width: 70%;">
  5. <p class="lead text-white my-0 font-weight-bold">Try the new Report UI</p>
  6. <p class="text-white small mb-0">We are deprecating this Report UI in the next major version release. The updated Report UI is easier, faster and provides more options to handle reports and spam.</p>
  7. </div>
  8. <a href="/i/admin/reports?tab=autospam&id={{$appeal->id}}" class="btn btn-outline-white">View in new Report UI</a>
  9. </div>
  10. <div class="d-flex justify-content-between title mb-3">
  11. <div>
  12. <p class="font-weight-bold h3">Autospam</p>
  13. <p class="text-muted mb-0 lead">Detected <span class="font-weight-bold">{{$appeal->created_at->diffForHumans()}}</span> from <a href="{{$appeal->user->url()}}" class="text-muted font-weight-bold">&commat;{{$appeal->user->username}}</a>.</p>
  14. </div>
  15. <div>
  16. </div>
  17. </div>
  18. <div class="row">
  19. <div class="col-12 col-md-8 mt-3">
  20. @if($appeal->type == 'post.autospam')
  21. <div class="card shadow-none border">
  22. <div class="card-header bg-light h5 font-weight-bold py-4">Unlisted + Content Warning</div>
  23. @if($appeal->has_media)
  24. <img class="card-img-top border-bottom" src="{{$appeal->status->thumb(true)}}" style="max-height: 40vh;object-fit: contain;" onerror="this.onerror=null;this.src='/storage/no-preview.png?v=0'">
  25. @endif
  26. <div class="card-body">
  27. <div class="mt-2 p-3">
  28. @if($meta->caption)
  29. <p class="text-break">
  30. {{$appeal->has_media ? 'Caption' : 'Comment'}}: <span class="font-weight-bold">{{$meta->caption}}</span>
  31. </p>
  32. @endif
  33. <p class="mb-0">
  34. Like Count: <span class="font-weight-bold">{{$meta->likes_count}}</span>
  35. </p>
  36. <p class="mb-0">
  37. Share Count: <span class="font-weight-bold">{{$meta->reblogs_count}}</span>
  38. </p>
  39. <p class="mb-0">
  40. Timestamp: <span class="font-weight-bold">{{now()->parse($meta->created_at)->format('r')}}</span>
  41. </p>
  42. <p class="" style="word-break: break-all !important;">
  43. URL: <span class="font-weight-bold text-primary"><a href="/i/web/post/{{$appeal->item_id}}" target="_blank">{{$meta->url}}</a></span>
  44. </p>
  45. </div>
  46. </div>
  47. </div>
  48. @endif
  49. </div>
  50. <div class="col-12 col-md-4 mt-3">
  51. @if($appeal->appeal_handled_at)
  52. @else
  53. <button type="button" class="btn btn-primary border btn-block font-weight-bold mb-3 action-btn" data-action="dismiss">Mark as read</button>
  54. <button type="button" class="btn btn-light border btn-block font-weight-bold mb-3 action-btn" data-action="approve">Mark as not spam</button>
  55. <hr>
  56. <button type="button" class="btn btn-default border btn-block font-weight-bold mb-3 action-btn" data-action="dismiss-all">Mark all as read</button>
  57. <button type="button" class="btn btn-light border btn-block font-weight-bold mb-3 action-btn" data-action="approve-all">Mark all as not spam</button>
  58. <hr>
  59. <button type="button" class="btn btn-light border btn-block font-weight-bold mb-3 action-btn" data-action="mark-spammer">Mark as spammer</button>
  60. <button type="button" class="btn btn-danger border btn-block font-weight-bold mb-3 action-btn mb-5" data-action="delete-account">Delete Account</button>
  61. @endif
  62. <div class="card shadow-none border">
  63. <div class="card-header text-center font-weight-bold bg-light">
  64. &commat;{{$appeal->user->username}} stats
  65. </div>
  66. <div class="card-body">
  67. <p class="">
  68. Open Appeals: <span class="font-weight-bold">{{App\AccountInterstitial::whereUserId($appeal->user_id)->whereNotNull('appeal_requested_at')->whereNull('appeal_handled_at')->count()}}</span>
  69. </p>
  70. <p class="">
  71. Total Appeals: <span class="font-weight-bold">{{App\AccountInterstitial::whereUserId($appeal->user_id)->whereNotNull('appeal_requested_at')->count()}}</span>
  72. </p>
  73. <p class="">
  74. Total Warnings: <span class="font-weight-bold">{{App\AccountInterstitial::whereUserId($appeal->user_id)->count()}}</span>
  75. </p>
  76. <p class="">
  77. Status Count: <span class="font-weight-bold">{{$appeal->user->statuses()->count()}}</span>
  78. </p>
  79. <p class="mb-0">
  80. Joined: <span class="font-weight-bold">{{$appeal->user->created_at->diffForHumans(null, null, false)}}</span>
  81. </p>
  82. </div>
  83. </div>
  84. </div>
  85. </div>
  86. @endsection
  87. @push('scripts')
  88. <script type="text/javascript">
  89. $('.action-btn').click((e) => {
  90. e.preventDefault();
  91. e.currentTarget.blur();
  92. let type = e.currentTarget.getAttribute('data-action');
  93. switch(type) {
  94. case 'dismiss':
  95. break;
  96. case 'approve':
  97. if(!window.confirm('Are you sure you want to approve this post?')) {
  98. return;
  99. }
  100. break;
  101. case 'dismiss-all':
  102. if(!window.confirm('Are you sure you want to dismiss all autospam reports?')) {
  103. return;
  104. }
  105. break;
  106. case 'approve-all':
  107. if(!window.confirm('Are you sure you want to approve this post and all other posts by this account?')) {
  108. return;
  109. }
  110. break;
  111. case 'mark-spammer':
  112. if(!window.confirm('Are you sure you want to mark this account as a spammer?')) {
  113. return;
  114. }
  115. break;
  116. case 'delete-account':
  117. if(!window.confirm('Are you sure you want to delete this account?')) {
  118. return;
  119. }
  120. break;
  121. }
  122. axios.post(window.location.href, {
  123. action: type
  124. }).then(res => {
  125. location.href = '/i/admin/reports/autospam';
  126. }).catch(err => {
  127. swal('Oops!', 'An error occured', 'error');
  128. console.log(err);
  129. })
  130. });
  131. </script>
  132. @endpush