Skip to content

Commit 45aac9a

Browse files
committed
Merge branch 'v4-quiz' into v4-quiz-layout-single
2 parents a05d142 + c7e9ae8 commit 45aac9a

8 files changed

Lines changed: 21 additions & 43 deletions

File tree

templates/learning-area/quiz/question.php

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,9 @@
4040
$quiz_id = $tutor_is_started_quiz->quiz_id ?? 0;
4141
$quiz_settings = tutor_utils()->get_quiz_option( $quiz_id, 'quiz_settings', array() );
4242
$show_question_mark = $question_settings['show_question_mark'] ?? '0';
43+
$attempt_id = (int) ( $tutor_is_started_quiz->attempt_id ?? 0 );
44+
$question_id = (int) ( $question->question_id ?? 0 );
45+
$field_name_base = sprintf( 'attempt[%d][quiz_question][%d]', $attempt_id, $question_id );
4346

4447
$answer_is_required = isset( $question_settings['answer_required'] ) && '1' === $question_settings['answer_required'];
4548
$required_message = __( 'The answer for this question is required', 'tutor' );
@@ -67,10 +70,11 @@ class="tutor-quiz-question"
6770
tutor_load_template(
6871
'learning-area.quiz.questions.' . $question_type,
6972
array(
70-
'question' => wp_parse_args( (array) $question, $default_question ),
71-
'quiz_settings' => $quiz_settings,
72-
'answer_is_required' => $answer_is_required,
73-
'required_message' => $required_message,
73+
'question' => wp_parse_args( (array) $question, $default_question ),
74+
'quiz_settings' => $quiz_settings,
75+
'answer_is_required' => $answer_is_required,
76+
'required_message' => $required_message,
77+
'question_field_name_base' => $field_name_base,
7478
)
7579
);
7680

templates/learning-area/quiz/questions/fill-in-the-blank.php

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,10 @@
1010

1111
defined( 'ABSPATH' ) || exit;
1212

13-
global $tutor_is_started_quiz;
14-
15-
$field_name = '';
16-
$field_names = array();
17-
$register_rules = '';
13+
$base_field_name = ( $question_field_name_base ?? '' ) . '[]';
14+
$field_name = '';
15+
$field_names = array();
16+
$register_rules = '';
1817
if ( $answer_is_required ) {
1918
$register_rules = ", { required: '" . esc_js( $required_message ) . "' }";
2019
}
@@ -32,17 +31,9 @@
3231

3332
$answer_title = preg_replace_callback(
3433
'/{dash}/',
35-
function () use ( &$input_index, $tutor_is_started_quiz, $question, $register_rules, &$field_name, &$field_names ) {
36-
37-
$attempt_id = (int) $tutor_is_started_quiz->attempt_id;
38-
$question_id = (int) $question['question_id'];
34+
function () use ( &$input_index, $base_field_name, $register_rules, &$field_name, &$field_names ) {
3935

40-
$input_name = sprintf(
41-
'attempt[%d][quiz_question][%d][][%d]',
42-
$attempt_id,
43-
$question_id,
44-
$input_index
45-
);
36+
$input_name = sprintf( '%s[%d]', $base_field_name, $input_index );
4637

4738
$register_attr = "register('{$input_name}'{$register_rules})";
4839
$input_html = sprintf(

templates/learning-area/quiz/questions/image-answering.php

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,6 @@
1212

1313
use Tutor\Components\InputField;
1414

15-
global $tutor_is_started_quiz;
16-
1715
$field_name = '';
1816
$register_rules = '';
1917
if ( $answer_is_required ) {
@@ -27,7 +25,7 @@
2725
<div class="tutor-quiz-question-option">
2826
<img src="<?php echo esc_url( wp_get_attachment_image_url( $answer['image_id'], 'full' ) ); ?>" alt="<?php echo esc_attr( $answer['answer_title'] ); ?>">
2927
<?php
30-
$input_name = 'attempt[' . $tutor_is_started_quiz->attempt_id . '][quiz_question][' . $question['question_id'] . '][answer_id][' . $answer['answer_id'] . ']';
28+
$input_name = sprintf( '%s[answer_id][%d]', $question_field_name_base ?? '', (int) $answer['answer_id'] );
3129
$rules_suffix = $register_rules;
3230
$register_attr = "register('{$input_name}'{$rules_suffix})";
3331

templates/learning-area/quiz/questions/matching.php

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,7 @@
1515
use Tutor\Components\Constants\Size;
1616
use Tutor\Components\Constants\Variant;
1717

18-
global $tutor_is_started_quiz;
19-
20-
$answer_field_name = sprintf(
21-
'attempt[%d][quiz_question][%d][answers][]',
22-
$tutor_is_started_quiz->attempt_id,
23-
$question['question_id']
24-
);
18+
$answer_field_name = ( $question_field_name_base ?? '' ) . '[answers][]';
2519
$register_rules = '';
2620
if ( $answer_is_required ) {
2721
$register_rules = ", { validate: (value) => Array.isArray(value) && value.every((item) => item) || '" . esc_js( $required_message ) . "' }";

templates/learning-area/quiz/questions/multiple-choice.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,8 @@
5757
$has_multiple_correct_answer = isset( $question['question_settings']['has_multiple_correct_answer'] ) && '1' === $question['question_settings']['has_multiple_correct_answer'];
5858
$radio_required_message = __( 'Please select an option to answer', 'tutor' );
5959
$checkbox_required_message = __( 'Please select at least one option to answer.', 'tutor' );
60-
$field_name = 'attempt[' . $tutor_is_started_quiz->attempt_id . '][quiz_question][' . $question['question_id'] . ']' . ( $has_multiple_correct_answer ? '[]' : '' );
60+
$field_name_base = $question_field_name_base ?? '';
61+
$field_name = $field_name_base . ( $has_multiple_correct_answer ? '[]' : '' );
6162
$register_rules = '';
6263
if ( $answer_is_required ) {
6364
if ( $has_multiple_correct_answer ) {

templates/learning-area/quiz/questions/open-ended.php

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,12 @@
1313
use Tutor\Components\InputField;
1414
use Tutor\Components\Constants\InputType;
1515

16-
global $tutor_is_started_quiz;
17-
1816
$question_type = $question['question_settings']['question_type'] ?? 'open_ended';
19-
$quiz_id = $tutor_is_started_quiz->quiz_id ?? 0;
20-
2117
$quiz_settings = $quiz_settings ?? array();
2218
$limit_key = 'short_answer' === $question_type ? 'short_answer_characters_limit' : 'open_ended_answer_characters_limit';
2319

2420
$characters_limit = (int) ( $quiz_settings[ $limit_key ] ?? 0 );
25-
$field_name = 'attempt[' . $tutor_is_started_quiz->attempt_id . '][quiz_question][' . $question['question_id'] . ']';
21+
$field_name = $question_field_name_base ?? '';
2622
$register_rule_parts = array();
2723
if ( $answer_is_required ) {
2824
$register_rule_parts[] = "required: '" . esc_js( $required_message ) . "'";

templates/learning-area/quiz/questions/ordering.php

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,7 @@
1212

1313
use TUTOR\Icon;
1414

15-
global $tutor_is_started_quiz;
16-
17-
$answer_field_name = sprintf(
18-
'attempt[%d][quiz_question][%d][answers][]',
19-
$tutor_is_started_quiz->attempt_id,
20-
$question['question_id']
21-
);
15+
$answer_field_name = ( $question_field_name_base ?? '' ) . '[answers][]';
2216
$register_rules = '';
2317
if ( $answer_is_required ) {
2418
$register_rules = ", { validate: (value) => Array.isArray(value) && value.length > 0 || '" . esc_js( $required_message ) . "' }";

templates/learning-area/quiz/questions/true-false.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616
global $tutor_is_started_quiz;
1717

18-
$field_name = 'attempt[' . $tutor_is_started_quiz->attempt_id . '][quiz_question][' . $question['question_id'] . ']';
18+
$field_name = $question_field_name_base ?? '';
1919
$register_rules = '';
2020
if ( $answer_is_required ) {
2121
$register_rules = ", { required: '" . esc_js( $required_message ) . "' }";

0 commit comments

Comments
 (0)