You are here

function QuizQuestionsForm::_quiz_add_fields_for_creating_questions in Quiz 8.5

Same name and namespace in other branches
  1. 8.6 src/Form/QuizQuestionsForm.php \Drupal\quiz\Form\QuizQuestionsForm::_quiz_add_fields_for_creating_questions()
  2. 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\Form

Code

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.'),
    );
  }
}