PluginProbe ʕ •ᴥ•ʔ
Tutor LMS – eLearning and online course solution / 4.0.1
Tutor LMS – eLearning and online course solution v4.0.1
4.0.1 4.0.0 3.9.15 3.9.14 3.9.13 3.9.12 3.9.11 trunk 1.0.0 1.0.0-alpha 1.0.1 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.0.7 1.0.8 1.0.9 1.1.0 1.1.1 1.2.0 1.2.1 1.2.11 1.2.12 1.2.13 1.2.20 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.3.7 1.3.8 1.3.9 1.4.0 1.4.1 1.4.2 1.4.3 1.4.4 1.4.5 1.4.6 1.4.7 1.4.8 1.4.9 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.5.9 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.6.9 1.7.0 1.7.1 1.7.2 1.7.3 1.7.4 1.7.5 1.7.6 1.7.7 1.7.8 1.7.9 1.8.0 1.8.1 1.8.10 1.8.2 1.8.3 1.8.4 1.8.5 1.8.6 1.8.7 1.8.8 1.8.9 1.9.0 1.9.1 1.9.10 1.9.11 1.9.12 1.9.13 1.9.14 1.9.15 1.9.16 1.9.2 1.9.3 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.0.0 2.0.1 2.0.10 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.0.8 2.0.9 2.1.0 2.1.1 2.1.10 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.3.0 2.4.0 2.5.0 2.6.0 2.6.1 2.6.2 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.7.6 2.7.7 3.0.0 3.0.1 3.0.2 3.1.0 3.2.0 3.2.1 3.2.2 3.2.3 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.6.0 3.6.1 3.6.2 3.6.3 3.6.4 3.7.0 3.7.1 3.7.2 3.7.3 3.7.4 3.8.0 3.8.1 3.8.2 3.8.3 3.9.0 3.9.1 3.9.10 3.9.2 3.9.3 3.9.4 3.9.5 3.9.6 3.9.7 3.9.8 3.9.9
tutor / templates / learning-area / quiz / questions / matching.php
tutor / templates / learning-area / quiz / questions Last commit date
fill-in-the-blank.php 1 week ago image-answering.php 1 week ago matching.php 1 week ago multiple-choice.php 1 week ago open-ended.php 1 week ago ordering.php 1 week ago true-false.php 1 week ago
matching.php
122 lines
1 <?php
2 /**
3 * Matching
4 *
5 * @package Tutor\Templates
6 * @author Themeum <support@themeum.com>
7 * @link https://themeum.com
8 * @since 4.0.0
9 */
10
11 defined( 'ABSPATH' ) || exit;
12
13 use TUTOR\Icon;
14 use Tutor\Components\SvgIcon;
15 use Tutor\Components\Constants\Color;
16 use Tutor\Components\Button;
17 use Tutor\Components\Constants\Size;
18 use Tutor\Components\Constants\Variant;
19
20 $answer_field_name = ( $question_field_name_base ?? '' ) . '[answers][]';
21 $register_rules = '';
22 $draggable_answers = $question['question_randomized_answers'] ?? $question['question_answers'] ?? array();
23 $is_image_matching = isset( $question['question_settings']['is_image_matching'] ) && '1' === (string) $question['question_settings']['is_image_matching'];
24 if ( $answer_is_required ) {
25 $register_rules = ", { validate: (value) => Array.isArray(value) && value.every((item) => item) || '" . esc_js( $required_message ) . "' }";
26 }
27 $register_attr = "register('{$answer_field_name}'{$register_rules})";
28
29 ?>
30
31 <div
32 x-data="tutorQuestionMatching({
33 questionId: 'question-<?php echo esc_attr( $question['question_id'] ); ?>',
34 onDrop: (values) => setValue('<?php echo esc_attr( $answer_field_name ); ?>', values, { shouldDirty: true }),
35 onClear: (values) => setValue('<?php echo esc_attr( $answer_field_name ); ?>', values, { shouldDirty: true }),
36 })"
37 class='tutor-flex tutor-flex-column tutor-gap-7 tutor-sm-gap-5'
38 >
39 <div
40 class="tutor-quiz-question-options"
41 data-image-matching="<?php echo esc_attr( $is_image_matching ? '1' : '0' ); ?>"
42 >
43 <?php foreach ( $question['question_answers'] as $answer ) : ?>
44 <div class="tutor-quiz-question-option">
45 <?php if ( $is_image_matching && ! empty( $answer['image_id'] ) ) : ?>
46 <img src="<?php echo esc_url( wp_get_attachment_image_url( $answer['image_id'], 'full' ) ); ?>" alt="<?php echo esc_attr( $answer['answer_title'] ); ?>">
47 <?php else : ?>
48 <div data-title>
49 <div class="tutor-quiz-question-option-number">
50 <?php echo esc_html( $answer['answer_order'] ); ?>
51 </div>
52 <?php echo esc_html( $answer['answer_title'] ); ?>
53 </div>
54 <?php endif; ?>
55 <div
56 class="tutor-quiz-question-option-drop-zone"
57 tabindex="0"
58 data-drop-placeholder-text="<?php echo esc_attr__( 'Drop here', 'tutor' ); ?>"
59 >
60 <input
61 class="tutor-hidden"
62 name="<?php echo esc_attr( $answer_field_name ); ?>"
63 x-bind="<?php echo esc_attr( $register_attr ); ?>"
64 >
65 <span data-drop-placeholder class="tutor-text-subdued">
66 <?php esc_html_e( 'Drop here', 'tutor' ); ?>
67 </span>
68 <?php
69 Button::make()
70 ->variant( Variant::GHOST )
71 ->size( Size::X_SMALL )
72 ->icon( Icon::CROSS )
73 ->icon_only()
74 ->attrs(
75 array(
76 'class' => 'tutor-force-hidden',
77 '@click.prevent' => 'clearDropZone',
78 'aria-label' => __( 'Clear matched option', 'tutor' ),
79 )
80 )
81 ->render();
82 ?>
83 </div>
84 </div>
85 <?php endforeach; ?>
86 </div>
87 <div
88 class="tutor-quiz-questions-error"
89 x-cloak
90 x-show="errors?.['<?php echo esc_attr( $answer_field_name ); ?>']?.message"
91 x-text="errors?.['<?php echo esc_attr( $answer_field_name ); ?>']?.message"
92 ></div>
93
94 <div class="tutor-quiz-question-draggable">
95 <div class="tutor-quiz-question-draggable-header">
96 <?php SvgIcon::make()->name( Icon::DRAG )->size( 20 )->color( Color::SECONDARY )->render(); ?>
97 <span class="tutor-text-small tutor-font-medium"><?php esc_html_e( 'Drag from here', 'tutor' ); ?></span>
98 </div>
99 <div class="tutor-quiz-question-options">
100 <?php foreach ( $draggable_answers as $answer ) : ?>
101 <?php
102 $draggable_title = $is_image_matching
103 ? $answer['answer_title'] : $answer['answer_two_gap_match'];
104 ?>
105 <div
106 class="tutor-quiz-question-option"
107 data-option="draggable"
108 data-id="<?php echo esc_attr( $answer['answer_id'] ); ?>"
109 >
110 <div data-title>
111 <?php echo esc_html( $draggable_title ); ?>
112 </div>
113 <button type="button" data-grab-handle aria-label="<?php esc_attr_e( 'Drag matching option', 'tutor' ); ?>">
114 <?php SvgIcon::make()->name( Icon::GRAB_HANDLE )->size( 24 )->render(); ?>
115 </button>
116 </div>
117 <?php endforeach; ?>
118 </div>
119 </div>
120 </div>
121
122