Просмотр файла WhiteBlack/views/admin/forums/topic.blade.php

Размер файла: 11.54Kb
  1. @extends('layout')
  2.  
  3. @section('title')
  4. {{ $topic->title }} (Стр. {{ $page->current }})
  5. @stop
  6.  
  7. @section('description', 'Обсуждение темы: '.$topic->title.' (Стр. '.$page->current.')')
  8.  
  9. @section('content')
  10. <h1>{{ $topic->title }}</h1>
  11.  
  12. <nav>
  13. <ol class="breadcrumb">
  14. <li class="breadcrumb-item"><a href="/"><i class="fas fa-home"></i></a></li>
  15. <li class="breadcrumb-item"><a href="/admin">Панель</a></li>
  16. <li class="breadcrumb-item"><a href="/admin/forums">Форум</a></li>
  17.  
  18. @if ($topic->forum->parent->id)
  19. <li class="breadcrumb-item"><a href="/admin/forums/{{ $topic->forum->parent->id }}">{{ $topic->forum->parent->title }}</a></li>
  20. @endif
  21.  
  22. <li class="breadcrumb-item"><a href="/admin/forums/{{ $topic->forum->id }}">{{ $topic->forum->title }}</a></li>
  23. <li class="breadcrumb-item active">{{ $topic->title }}</li>
  24. </ol>
  25. </nav>
  26.  
  27. @if ($topic->curators)
  28. <div>
  29. <span class="badge badge-warning">
  30. <i class="fa fa-wrench"></i> Кураторы темы:
  31. @foreach ($topic->curators as $key => $curator)
  32. <?php $comma = (empty($key)) ? '' : ', '; ?>
  33. {{ $comma }}{!! $curator->getProfile() !!}
  34. @endforeach
  35. </span>
  36. </div>
  37. @endif
  38.  
  39. @if ($topic->note)
  40. <div class="p-1 bg-info text-white">{!! bbCode($topic->note) !!}</div>
  41. @endif
  42.  
  43. <hr>
  44.  
  45. @if ($topic->closed)
  46. <a href="/admin/topics/action/{{ $topic->id }}?type=open&amp;page={{ $page->current }}&amp;token={{ $_SESSION['token'] }}">Открыть</a> /
  47. @else
  48. <a href="/admin/topics/action/{{ $topic->id }}?type=closed&amp;page={{ $page->current }}&amp;token={{ $_SESSION['token'] }}">Закрыть</a> /
  49. @endif
  50.  
  51. @if ($topic->locked)
  52. <a href="/admin/topics/action/{{ $topic->id }}?type=unlocked&amp;page={{ $page->current }}&amp;token={{ $_SESSION['token'] }}">Открепить</a> /
  53. @else
  54. <a href="/admin/topics/action/{{ $topic->id }}?type=locked&amp;page={{ $page->current }}&amp;token={{ $_SESSION['token'] }}">Закрепить</a> /
  55. @endif
  56.  
  57. <a href="/admin/topics/edit/{{ $topic->id }}">Изменить</a> /
  58. <a href="/admin/topics/move/{{ $topic->id }}">Переместить</a> /
  59. <a href="/admin/topics/delete/{{ $topic->id }}?token={{ $_SESSION['token'] }}" onclick="return confirm('Вы действительно хотите удалить данную тему?')">Удалить</a> /
  60. <a href="/topics/{{ $topic->id }}?page={{ $page->current }}">Обзор</a><br>
  61.  
  62.  
  63. @if ($vote)
  64. <h3>{{ $vote->title }}</h3>
  65.  
  66. @if (!getUser() || $vote->poll || $vote->closed)
  67. @foreach ($vote->voted as $key => $data)
  68. <?php $proc = round(($data * 100) / $vote->sum, 1); ?>
  69. <?php $maxproc = round(($data * 100) / $vote->max); ?>
  70.  
  71. <b>{{ $key }}</b> (Голосов: {{ $data }})<br>
  72. {!! progressBar($maxproc, $proc.'%') !!}
  73. @endforeach
  74. @else
  75. <form action="/topics/votes/{{ $topic->id }}?page={{ $page->current }}" method="post">
  76. <input type="hidden" name="token" value="{{ $_SESSION['token'] }}">
  77. @foreach ($vote->answers as $answer)
  78. <label><input name="poll" type="radio" value="{{ $answer->id }}"> {{ $answer->answer }}</label><br>
  79. @endforeach
  80. <br><button class="btn btn-sm btn-primary">Голосовать</button>
  81. </form><br>
  82. @endif
  83.  
  84. Всего проголосовало: {{ $vote->count }}
  85. @endif
  86.  
  87. <form action="/admin/posts/delete?tid={{ $topic->id }}&amp;page={{ $page->current }}" method="post">
  88. <input type="hidden" name="token" value="{{ $_SESSION['token'] }}">
  89.  
  90. <div class="p-1 bg-light text-right">
  91. <label for="all">Отметить все</label>
  92. <input type="checkbox" id="all" onchange="var o=this.form.elements;for(var i=0;i&lt;o.length;i++)o[i].checked=this.checked">
  93. </div>
  94.  
  95. @if ($posts->isNotEmpty())
  96. @foreach ($posts as $data)
  97. <?php $num = ($page->offset + $loop->iteration ); ?>
  98. <div class="post">
  99. <div class="b" id="post_{{ $data->id }}">
  100. <div class="float-right text-right">
  101. @if (getUser())
  102. @if (getUser('id') != $data->user_id)
  103. <a href="#" onclick="return postReply(this)" title="Ответить"><i class="fa fa-reply text-muted"></i></a>
  104.  
  105. <a href="#" onclick="return postQuote(this)" title="Цитировать"><i class="fa fa-quote-right text-muted"></i></a>
  106.  
  107. <a href="#" onclick="return sendComplaint(this)" data-type="{{ App\Models\Post::class }}" data-id="{{ $data->id }}" data-token="{{ $_SESSION['token'] }}" data-page="{{ $page->current }}" rel="nofollow" title="Жалоба"><i class="fa fa-bell text-muted"></i></a>
  108. @endif
  109.  
  110. <a href="/admin/posts/edit/{{ $data->id }}?page={{ $page->current }}" title="Редактировать"><i class="fa fa-pencil-alt text-muted"></i></a>
  111.  
  112. <input type="checkbox" name="del[]" value="{{ $data->id }}">
  113. @endif
  114.  
  115. <div class="js-rating">
  116. @if (getUser() && getUser('id') != $data->user_id)
  117. <a class="post-rating-down{{ $data->vote == '-' ? ' active' : '' }}" href="#" onclick="return changeRating(this);" data-id="{{ $data->id }}" data-type="{{ App\Models\Post::class }}" data-vote="-" data-token="{{ $_SESSION['token'] }}"><i class="fa fa-minus"></i></a>
  118. @endif
  119. <span>{!! formatNum($data->rating) !!}</span>
  120. @if (getUser() && getUser('id') != $data->user_id)
  121. <a class="post-rating-up{{ $data->vote == '+' ? ' active' : '' }}" href="#" onclick="return changeRating(this);" data-id="{{ $data->id }}" data-type="{{ App\Models\Post::class }}" data-vote="+" data-token="{{ $_SESSION['token'] }}"><i class="fa fa-plus"></i></a>
  122. @endif
  123. </div>
  124. </div>
  125.  
  126. <div class="img">
  127. {!! $data->user->getAvatar() !!}
  128. {!! $data->user->getOnline() !!}
  129. </div>
  130.  
  131. {{ $num }}. <b>{!! $data->user->getProfile() !!}</b> <small>({{ dateFixed($data->created_at) }})</small><br>
  132. {!! $data->user->getStatus() !!}
  133. </div>
  134.  
  135. <div class="message">
  136. {!! bbCode($data->text) !!}
  137. </div>
  138.  
  139. @if ($data->files->isNotEmpty())
  140. <div class="hiding">
  141. <i class="fa fa-paperclip"></i> <b>Прикрепленные файлы:</b><br>
  142. @foreach ($data->files as $file)
  143. <?php $ext = getExtension($file->hash); ?>
  144.  
  145. {!! icons($ext) !!}
  146. <a href="{{ $file->hash }}">{{ $file->name }}</a> ({{ formatSize($file->size) }})<br>
  147. @if (in_array($ext, ['jpg', 'jpeg', 'gif', 'png']))
  148. <a href="{{ $file->hash }}" class="gallery" data-group="{{ $data->id }}">{!! resizeImage($file->hash, ['alt' => $file->name]) !!}</a><br>
  149. @endif
  150. @endforeach
  151. </div>
  152. @endif
  153.  
  154. @if ($data->edit_user_id)
  155. <small><i class="fa fa-exclamation-circle text-danger"></i> Отредактировано: {{ $data->editUser->login }} ({{ dateFixed($data->updated_at) }})</small><br>
  156. @endif
  157.  
  158. @if (isAdmin())
  159. <span class="data">({{ $data->brow }}, {{ $data->ip }})</span>
  160. @endif
  161. </div>
  162. @endforeach
  163.  
  164. @else
  165. {!! showError('Сообщений еще нет, будь первым!') !!}
  166. @endif
  167.  
  168. <span class="float-right">
  169. <button class="btn btn-sm btn-danger">Удалить выбранное</button>
  170. </span>
  171. </form>
  172.  
  173. {!! pagination($page) !!}
  174.  
  175. @if (getUser())
  176. @if (empty($topic->closed))
  177. <div class="form">
  178. <form action="/topics/create/{{ $topic->id }}" method="post" enctype="multipart/form-data">
  179. <input type="hidden" name="token" value="{{ $_SESSION['token'] }}">
  180.  
  181. <div class="form-group{{ hasError('msg') }}">
  182. <label for="msg">Сообщение:</label>
  183. <textarea class="form-control markItUp" id="msg" rows="5" name="msg" placeholder="Текст сообщения" required>{{ getInput('msg') }}</textarea>
  184. {!! textError('msg') !!}
  185. </div>
  186.  
  187. @if (getUser('point') >= setting('forumloadpoints'))
  188. <div class="js-attach-form" style="display: none;">
  189.  
  190. <label class="btn btn-sm btn-secondary" for="files">
  191. <input type="file" id="files" name="files[]" onchange="$('#upload-file-info').html((this.files.length > 1) ? this.files.length + ' файлов' : this.files[0].name);" hidden multiple>
  192. Прикрепить файлы&hellip;
  193. </label>
  194. <span class="badge badge-info" id="upload-file-info"></span>
  195. {!! textError('files') !!}
  196. <br>
  197.  
  198. <p class="text-muted font-italic">
  199. Можно загрузить до {{ setting('maxfiles') }} файлов<br>
  200. Максимальный вес файла: {{ formatSize(setting('forumloadsize')) }}<br>
  201. Допустимые расширения файлов: {{ str_replace(',', ', ', setting('forumextload')) }}<br>
  202. Допустимые размеры картинок: от 100px
  203. </p>
  204. </div>
  205.  
  206. <span class="float-right js-attach-button">
  207. <a href="#" onclick="return showAttachForm();">Загрузить файл</a>
  208. </span>
  209. @endif
  210.  
  211. <button class="btn btn-primary">Написать</button>
  212. </form>
  213. </div><br>
  214.  
  215. @else
  216. {!! showError('Данная тема закрыта для обсуждения!') !!}
  217. @endif
  218. @else
  219. {!! showError('Для добавления сообщения необходимо авторизоваться') !!}
  220. @endif
  221.  
  222. <a href="/smiles">Смайлы</a> /
  223. <a href="/tags">Теги</a> /
  224. <a href="/rules">Правила</a> /
  225. <a href="/forums/top/topics">Топ тем</a> /
  226. <a href="/forums/top/posts">Топ постов</a> /
  227. <a href="/forums/search?fid={{ $topic->forum_id }}">Поиск</a><br>
  228. @stop