show.blade.php 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. @extends('layouts.app')
  2. @section('title', 'Просмотр данных формы')
  3. @section('content')
  4. <div class="container mx-auto px-4 py-8">
  5. <div class="max-w-4xl mx-auto">
  6. <div class="flex justify-between items-center mb-6">
  7. <div>
  8. <h4 class="text-2xl font-bold text-gray-800">Данные формы #{{ $formData->id }}</h4>
  9. <p class="text-gray-600 text-sm">UUID: {{ $formData->uuid }}</p>
  10. </div>
  11. <div class="flex space-x-2">
  12. <a href="{{ route('form-data.edit', $formData->id) }}"
  13. class="px-4 py-2 bg-yellow-500 text-white rounded hover:bg-yellow-600 transition">
  14. Редактировать
  15. </a>
  16. <form action="{{ route('form-data.destroy', $formData->id) }}" method="POST" class="inline">
  17. @csrf
  18. @method('DELETE')
  19. <button type="submit"
  20. class="px-4 py-2 bg-red-500 text-white rounded hover:bg-red-600 transition"
  21. onclick="return confirm('Удалить эту запись?')">
  22. Удалить
  23. </button>
  24. </form>
  25. <a href="{{ route('data.show') }}"
  26. class="px-4 py-2 bg-gray-500 text-white rounded hover:bg-gray-600 transition">
  27. Назад к списку
  28. </a>
  29. </div>
  30. </div>
  31. <div class="bg-white rounded-lg shadow-md p-6 mb-6">
  32. <div class="grid grid-cols-1 md:grid-cols-2 gap-6">
  33. <div>
  34. <h5 class="text-lg font-semibold text-gray-700 mb-4">Персональные данные</h5>
  35. <div class="space-y-3">
  36. <div>
  37. <span class="text-gray-600 text-sm">Имя:</span>
  38. <p class="text-gray-800 font-medium">{{ $formData->name }}</p>
  39. </div>
  40. <div>
  41. <span class="text-gray-600 text-sm">Email:</span>
  42. <p class="text-gray-800 font-medium">{{ $formData->email }}</p>
  43. </div>
  44. <div>
  45. <span class="text-gray-600 text-sm">Телефон:</span>
  46. <p class="text-gray-800 font-medium">{{ $formData->phone }}</p>
  47. </div>
  48. <div>
  49. <span class="text-gray-600 text-sm">Пол:</span>
  50. <p class="text-gray-800 font-medium">{{ $formData->gender ? 'Мужской' : 'Женский' }}</p>
  51. </div>
  52. </div>
  53. </div>
  54. <div>
  55. <h5 class="text-lg font-semibold text-gray-700 mb-4">Дополнительная информация</h5>
  56. <div class="space-y-3">
  57. <div>
  58. <span class="text-gray-600 text-sm">Категория:</span>
  59. <p class="text-gray-800 font-medium">
  60. {{ $formData->category ? $formData->category->name : 'Не указана' }}
  61. </p>
  62. </div>
  63. <div>
  64. <span class="text-gray-600 text-sm">Дата отправки:</span>
  65. <p class="text-gray-800 font-medium">
  66. {{ $formData->submitted_at->format('d.m.Y H:i') }}
  67. </p>
  68. </div>
  69. <div>
  70. <span class="text-gray-600 text-sm">Создано:</span>
  71. <p class="text-gray-800 font-medium">
  72. {{ $formData->created_at->format('d.m.Y H:i') }}
  73. </p>
  74. </div>
  75. <div>
  76. <span class="text-gray-600 text-sm">Обновлено:</span>
  77. <p class="text-gray-800 font-medium">
  78. {{ $formData->updated_at->format('d.m.Y H:i') }}
  79. </p>
  80. </div>
  81. </div>
  82. </div>
  83. </div>
  84. <div class="mt-6">
  85. <h5 class="text-lg font-semibold text-gray-700 mb-4">Сообщение</h5>
  86. <div class="bg-gray-50 rounded p-4">
  87. <p class="text-gray-800 whitespace-pre-line">{{ $formData->message }}</p>
  88. </div>
  89. </div>
  90. </div>
  91. <div class="bg-white rounded-lg shadow-md p-6">
  92. <div class="flex justify-between items-center mb-6">
  93. <h5 class="text-lg font-semibold text-gray-700">Комментарии ({{ $formData->comments->count() }})</h5>
  94. <button onclick="toggleCommentForm()"
  95. class="px-4 py-2 bg-blue-500 text-white rounded hover:bg-blue-600 transition text-sm">
  96. Добавить комментарий
  97. </button>
  98. </div>
  99. <div id="commentForm" class="hidden mb-6">
  100. <form action="/form-data/{{ $formData->id }}/comment" method="POST">
  101. @csrf
  102. <div class="mb-4">
  103. <textarea name="content"
  104. rows="3"
  105. required
  106. class="w-full px-4 py-2 border border-gray-300 rounded-md focus:ring-2 focus:ring-blue-500 focus:border-blue-500 transition"
  107. placeholder="Введите ваш комментарий"></textarea>
  108. </div>
  109. <div class="flex justify-end space-x-2">
  110. <button type="button"
  111. onclick="toggleCommentForm()"
  112. class="px-4 py-2 border border-gray-300 text-gray-700 rounded hover:bg-gray-50 transition">
  113. Отмена
  114. </button>
  115. <button type="submit"
  116. class="px-4 py-2 bg-green-500 text-white rounded hover:bg-green-600 transition">
  117. Отправить
  118. </button>
  119. </div>
  120. </form>
  121. </div>
  122. @if($formData->comments->count() > 0)
  123. <div class="space-y-4">
  124. @foreach($formData->comments as $comment)
  125. <div class="border-l-4 border-blue-500 pl-4 py-2">
  126. <div class="flex justify-between items-start mb-2">
  127. <div>
  128. <p class="font-medium text-gray-800">
  129. {{ $comment->user ? $comment->user->name : 'Аноним' }}
  130. </p>
  131. <p class="text-sm text-gray-500">
  132. {{ $comment->created_at->format('d.m.Y H:i') }}
  133. </p>
  134. </div>
  135. @if($comment->is_banned)
  136. <span class="px-2 py-1 bg-green-100 text-green-800 text-xs rounded">
  137. Одобрено
  138. </span>
  139. @endif
  140. </div>
  141. <p class="text-gray-700">{{ $comment->content }}</p>
  142. </div>
  143. @endforeach
  144. </div>
  145. @else
  146. <p class="text-gray-500 text-center py-4">Комментариев пока нет</p>
  147. @endif
  148. </div>
  149. </div>
  150. </div>
  151. <script>
  152. function toggleCommentForm() {
  153. const form = document.getElementById('commentForm');
  154. form.classList.toggle('hidden');
  155. }
  156. </script>
  157. @endsection