function QuizQuestionFeedbackForm::buildForm in Quiz 8.6
Same name and namespace in other branches
- 8.5 src/Form/QuizQuestionFeedbackForm.php \Drupal\quiz\Form\QuizQuestionFeedbackForm::buildForm()
- 6.x src/Form/QuizQuestionFeedbackForm.php \Drupal\quiz\Form\QuizQuestionFeedbackForm::buildForm()
Show feedback for a question response.
Overrides FormInterface::buildForm
File
- src/
Form/ QuizQuestionFeedbackForm.php, line 15
Class
Namespace
Drupal\quiz\FormCode
function buildForm(array $form, FormStateInterface $form_state) {
$quiz = $form_state
->getBuildInfo()['args'][0];
$question_number = $form_state
->getBuildInfo()['args'][1];
$quiz_result = \Drupal\quiz\Util\QuizUtil::resultOrTemp($quiz);
$form = array();
$form['actions']['#type'] = 'actions';
if (!$quiz_result
->get('time_end')
->isEmpty()) {
// Quiz is done.
$form['actions']['finish'] = array(
'#type' => 'submit',
'#submit' => array(
'::submitEnd',
),
'#value' => t('Finish'),
);
}
else {
$form['actions']['next'] = array(
'#type' => 'submit',
'#value' => t('Next question'),
);
}
$view_builder = Drupal::entityTypeManager()
->getViewBuilder('quiz_result_answer');
// Add feedback.
$out = array();
foreach ($quiz_result
->getLayout() as $question) {
if ($question
->get('number')
->getString() == $question_number && $question->qqr_pid) {
// Question is in a page.
foreach ($quiz_result
->getLayout() as $qra) {
if ($qra->qqr_pid == $question->qqr_pid) {
$out[] = array(
'#title' => t('Question @num', array(
'@num' => $qra
->get('display_number')
->getString(),
)),
'#type' => 'fieldset',
'feedback' => $view_builder
->view($qra),
);
}
}
}
}
// Single question.
if (empty($out)) {
$qra = $quiz_result
->getLayout()[$question_number];
$feedback = $view_builder
->view($qra);
$out[] = array(
'#title' => t('Question @num', array(
'@num' => $quiz_result
->getLayout()[$question_number]
->get('display_number')
->getString(),
)),
'#type' => 'fieldset',
'feedback' => $feedback,
);
}
$form['feedback'] = $out;
return $form;
}