function QuizQuestionsForm::_quiz_add_fields_for_creating_questions in Quiz 8.6
Same name and namespace in other branches
- 8.5 src/Form/QuizQuestionsForm.php \Drupal\quiz\Form\QuizQuestionsForm::_quiz_add_fields_for_creating_questions()
- 6.x src/Form/QuizQuestionsForm.php \Drupal\quiz\Form\QuizQuestionsForm::_quiz_add_fields_for_creating_questions()
Fields for creating new questions are added to the quiz_questions_form.
Parameters
$form: FAPI form(array).
$types: All the question types(array).
$quiz: The quiz node.
1 call to QuizQuestionsForm::_quiz_add_fields_for_creating_questions()
- QuizQuestionsForm::buildForm in src/
Form/ QuizQuestionsForm.php - Handles "manage questions" tab.
File
- src/
Form/ QuizQuestionsForm.php, line 35
Class
- QuizQuestionsForm
- Form to manage questions in a quiz.
Namespace
Drupal\quiz\FormCode
function _quiz_add_fields_for_creating_questions(&$form, &$types, Quiz $quiz) {
// Display links to create other questions.
$form['additional_questions'] = array(
'#type' => 'fieldset',
'#title' => t('Create new question'),
);
$create_question = FALSE;
$entity_manager = Drupal::entityTypeManager();
$access_handler = $entity_manager
->getAccessControlHandler('quiz_question');
foreach ($types as $type => $info) {
$options = array(
'query' => [
'qid' => $quiz
->id(),
'vid' => $quiz
->getRevisionId(),
],
'attributes' => [
'class' => 'use-ajax',
'data-dialog-type' => 'modal',
'data-dialog-options' => Json::encode([
'width' => 800,
]),
],
);
$access = $access_handler
->createAccess($type);
if ($access) {
$create_question = TRUE;
}
$url = Url::fromRoute('entity.quiz_question.add_form', [
'quiz_question_type' => $type,
], $options);
$form['additional_questions'][$type] = array(
'#markup' => '<div class="add-questions">' . Link::fromTextAndUrl($info['label'], $url)
->toString() . '</div>',
'#access' => $access,
);
}
if (!$create_question) {
$form['additional_questions']['create'] = array(
'#type' => 'markup',
'#markup' => t('You have not enabled any question type module or no has permission been given to create any question.'),
);
}
}