You are here

function quiz_result_form in Quiz 7.5

Same name and namespace in other branches
  1. 7.6 quiz.module \quiz_result_form()

Quiz result edit form.

1 string reference to 'quiz_result_form'
quiz_forms in ./quiz.module
Implements hook_forms().

File

./quiz.module, line 3911
quiz.module Main file for the Quiz module.

Code

function quiz_result_form($form, &$form_state, $quiz_result) {
  field_attach_form('quiz_result', $quiz_result, $form, $form_state);
  $quiz = node_load($quiz_result->nid, $quiz_result->vid);
  if (!empty($quiz->build_on_last) && QuizResultController::findOldResult($quiz_result)) {
    $form['build_on_last'] = array(
      '#title' => t('Keep answers from last attempt?'),
      '#type' => 'radios',
      '#options' => array(
        '' => t('No answers'),
        'correct' => t('Only correct answers'),
        'all' => t('All answers'),
      ),
      '#default_value' => $quiz->build_on_last,
      '#description' => t('You can choose to keep previous answers or start a new attempt.'),
      '#access' => $quiz->build_on_last,
    );
  }
  $form['actions'] = array(
    '#type' => 'actions',
  );
  if (!empty($quiz_result->result_id)) {
    $idx = 0;
    $form['question']['#tree'] = TRUE;
    foreach ($quiz_result
      ->getLayout() as $question) {

      // Loop through all the questions and get their scoring form.
      $question_node = node_load($question['nid'], $question['vid']);
      $instance = _quiz_question_response_get_instance($quiz_result->result_id, $question_node);
      $qras = entity_load('quiz_result_answer', FALSE, array(
        'result_id' => $quiz_result->result_id,
        'question_nid' => $question['nid'],
        'question_vid' => $question['vid'],
      ));
      $qra = reset($qras);

      // Get the feedback elements.
      if ($instance
        ->getQuizQuestion()
        ->hasFeedback()) {

        // The display of the question.
        $form['question'][$idx] = $instance
          ->getReportForm();
        $form['question'][$idx]['response'] = $qra
          ->view();
        $form['question'][$idx]['#tree'] = TRUE;
        $form['question'][$idx]['#type'] = 'fieldset';
        $form['question'][$idx]['#title'] = t('Question @num', array(
          '@num' => $question['display_number'],
        ));
        $form['question'][$idx]['response']['#weight'] = -1;
        $idx++;
      }
    }
  }
  if (empty($quiz_result->result_id)) {
    $form['actions']['submit'] = array(
      '#type' => 'submit',
      '#value' => t('Start @quiz', array(
        '@quiz' => QUIZ_NAME,
      )),
    );
  }
  else {
    $form['actions']['submit'] = array(
      '#type' => 'submit',
      '#value' => t('Save score'),
    );
  }
  return $form;
}