modals
4 days ago
questions
4 days ago
attempt-details.php
4 days ago
attempt.php
4 days ago
content.php
4 days ago
nav-item.php
4 days ago
progress-bar.php
4 days ago
question-header.php
4 days ago
question.php
4 days ago
question.php
90 lines
| 1 | <?php |
| 2 | /** |
| 3 | * Quiz question wrapper template. |
| 4 | * |
| 5 | * Renders the outer question div, header, answer template, and after-answers actions. |
| 6 | * |
| 7 | * @package Tutor\Templates |
| 8 | * @subpackage LearningArea\Quiz |
| 9 | * @author Themeum <support@themeum.com> |
| 10 | * @link https://themeum.com |
| 11 | * @since 4.0.0 |
| 12 | * |
| 13 | * @var object $question The question object. |
| 14 | * @var array $question_settings The question settings array. |
| 15 | * @var string $question_type The question type template name (e.g. 'true-false'). |
| 16 | */ |
| 17 | |
| 18 | defined( 'ABSPATH' ) || exit; |
| 19 | |
| 20 | global $tutor_is_started_quiz; |
| 21 | global $post; |
| 22 | |
| 23 | $default_question = array( |
| 24 | 'index' => 1, |
| 25 | 'question_id' => 0, |
| 26 | 'question_title' => '', |
| 27 | 'question_description' => '', |
| 28 | 'question_type' => 'true_false', |
| 29 | 'answer_required' => true, |
| 30 | 'question_mark' => 10, |
| 31 | 'answer_explanation' => '', |
| 32 | 'question_settings' => array( |
| 33 | 'answer_required' => '0', |
| 34 | 'is_image_matching' => '0', |
| 35 | 'question_mark' => '1', |
| 36 | 'question_type' => 'true_false', |
| 37 | 'randomize_question' => '1', |
| 38 | 'show_question_mark' => '1', |
| 39 | ), |
| 40 | 'question_answers' => array(), |
| 41 | 'question_randomized_answers' => array(), |
| 42 | ); |
| 43 | |
| 44 | $quiz_id = $tutor_is_started_quiz->quiz_id ?? 0; |
| 45 | $quiz = $post instanceof WP_Post ? $post : get_post( $quiz_id ); |
| 46 | $quiz_settings = tutor_utils()->get_quiz_option( $quiz_id, '', array() ); |
| 47 | $show_question_mark = $question_settings['show_question_mark'] ?? '0'; |
| 48 | $attempt_id = (int) ( $tutor_is_started_quiz->attempt_id ?? 0 ); |
| 49 | $question_id = (int) ( $question->question_id ?? 0 ); |
| 50 | $field_name_base = sprintf( 'attempt[%d][quiz_question][%d]', $attempt_id, $question_id ); |
| 51 | |
| 52 | $answer_is_required = isset( $question_settings['answer_required'] ) && '1' === $question_settings['answer_required']; |
| 53 | $required_message = __( 'The answer for this question is required', 'tutor' ); |
| 54 | ?> |
| 55 | |
| 56 | <div |
| 57 | class="tutor-quiz-question" |
| 58 | id="<?php echo esc_attr( $question_id ); ?>" |
| 59 | data-question="<?php echo esc_attr( $question->question_type ); ?>" |
| 60 | data-answer-required="<?php echo esc_attr( $answer_is_required ); ?>" |
| 61 | > |
| 62 | <?php |
| 63 | // Render question header. |
| 64 | tutor_load_template( |
| 65 | 'learning-area.quiz.question-header', |
| 66 | array( |
| 67 | 'question' => $question, |
| 68 | 'show_question_mark' => $show_question_mark, |
| 69 | ) |
| 70 | ); |
| 71 | |
| 72 | // Render the question type specific answers template. |
| 73 | tutor_load_template( |
| 74 | apply_filters( 'tutor_filter_quiz_question_template', 'learning-area.quiz.questions.' . $question_type, $question_type ), |
| 75 | array( |
| 76 | 'question' => wp_parse_args( (array) $question, $default_question ), |
| 77 | 'quiz_settings' => $quiz_settings, |
| 78 | 'answer_is_required' => $answer_is_required, |
| 79 | 'required_message' => $required_message, |
| 80 | 'question_field_name_base' => $field_name_base, |
| 81 | ) |
| 82 | ); |
| 83 | |
| 84 | // Fire after-answers actions. |
| 85 | do_action( 'tutor_quiz_question_after_answers', $quiz, $quiz_settings, $question ); |
| 86 | do_action( 'tutor_require_question_answer_file', $question_type, $tutor_is_started_quiz, $question ); |
| 87 | |
| 88 | ?> |
| 89 | </div> |
| 90 |