Fix: Безопасность тестов - не показывать вопросы

 Удалён блок с вопросами из student/tests/show
 Контроллер не загружает questions.answers
 Предупреждение что вопросы будут при тестировании
 Блок с попытками (пока пусто)

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
This commit is contained in:
mirivlad 2026-04-02 16:56:40 +08:00
parent b8d9584f7d
commit 3c3819d3b1
2 changed files with 19 additions and 38 deletions

View File

@ -64,7 +64,8 @@ class TestController extends Controller
abort(403, 'У вас нет доступа к этому тесту'); abort(403, 'У вас нет доступа к этому тесту');
} }
$test->load(['questions.answers', 'course']); // НЕ загружаем вопросы и ответы - только общую информацию
$test->load(['course']);
return view('student.tests.show', compact('test')); return view('student.tests.show', compact('test'));
} }

View File

@ -20,8 +20,15 @@
@if($test->passing_score) @if($test->passing_score)
<div><strong>Проходной балл:</strong> {{ $test->passing_score }}%</div> <div><strong>Проходной балл:</strong> {{ $test->passing_score }}%</div>
@endif @endif
<div><strong>Время:</strong> <span class="text-muted">Не ограничено</span></div>
</div> </div>
</div> </div>
<div class="alert alert-info mt-3">
<i class="bi bi-info-circle"></i>
<strong>Важно!</strong> Вопросы будут показаны только после начала тестирования.
У вас будет одна попытка для прохождения теста.
</div>
</div> </div>
<div class="col-md-4 mb-4"> <div class="col-md-4 mb-4">
@ -32,43 +39,12 @@
</button> </button>
</div> </div>
</div> </div>
</div>
</div> <div class="card shadow-sm mt-3">
<div class="card-header"><h6 class="mb-0">Попытки</h6></div>
<div class="card shadow-sm"> <div class="card-body">
<div class="card-header"><h5 class="mb-0">Вопросы</h5></div> <p class="text-muted mb-0">Попыток пока не было</p>
<div class="card-body">
<div class="accordion" id="questionsAccordion">
@foreach($test->questions as $index => $question)
<div class="accordion-item">
<h2 class="accordion-header" id="heading{{ $question->id }}">
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapse{{ $question->id }}">
Вопрос {{ $index + 1 }}: {{ Str::limit($question->question_text, 100) }}
</button>
</h2>
<div id="collapse{{ $question->id }}" class="accordion-collapse collapse" data-bs-parent="#questionsAccordion">
<div class="accordion-body">
<p><strong>{{ $question->question_text }}</strong></p>
@if($question->type === 'multiple_choice')
<div class="mb-3">
@foreach($question->answers as $answer)
<div class="form-check">
<input class="form-check-input" type="{{ $answer->is_correct ? 'checkbox' : 'checkbox' }}" name="question_{{ $question->id }}" value="{{ $answer->id }}" id="answer_{{ $answer->id }}">
<label class="form-check-label" for="answer_{{ $answer->id }}">
{{ $answer->answer_text }}
@if($answer->image)
<br><img src="/storage/{{ $answer->image }}" alt="Ответ" style="max-width:200px;max-height:150px;margin-top:10px;">
@endif
</label>
</div>
@endforeach
</div>
@endif
</div>
</div>
</div> </div>
@endforeach
</div> </div>
</div> </div>
</div> </div>
@ -79,7 +55,11 @@
@push('scripts') @push('scripts')
<script> <script>
function startTest() { function startTest() {
alert('Функционал прохождения тестов будет реализован в следующем этапе'); if (confirm('Вы готовы начать тестирование? Вопросы будут показаны по одному.')) {
alert('Функционал прохождения тестов будет реализован в следующем этапе');
// TODO: Перенаправление на страницу прохождения теста
// window.location.href = '{{ route('student.tests.take', $test) }}';
}
} }
</script> </script>
@endpush @endpush