PluginProbe ʕ •ᴥ•ʔ
Tutor LMS – eLearning and online course solution / 4.0.2
Tutor LMS – eLearning and online course solution v4.0.2
4.0.7 4.0.6 4.0.5 4.0.4 4.0.3 4.0.2 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 month ago image-answering.php 1 month ago matching.php 1 month ago multiple-choice.php 1 month ago open-ended.php 1 month ago ordering.php 1 month ago true-false.php 1 month ago
matching.php
123 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 $question = $question ?? array();
23 $draggable_answers = $question['question_randomized_answers'] ?? $question['question_answers'] ?? array();
24 $is_image_matching = isset( $question['question_settings']['is_image_matching'] ) && '1' === (string) $question['question_settings']['is_image_matching'];
25 if ( $answer_is_required ?? false ) {
26 $register_rules = ", { validate: (value) => Array.isArray(value) && value.every((item) => item) || '" . esc_js( $required_message ?? '' ) . "' }";
27 }
28 $register_attr = "register('{$answer_field_name}'{$register_rules})";
29
30 ?>
31
32 <div
33 x-data="tutorQuestionMatching({
34 questionId: 'question-<?php echo esc_attr( $question['question_id'] ); ?>',
35 onDrop: (values) => setValue('<?php echo esc_attr( $answer_field_name ); ?>', values, { shouldDirty: true }),
36 onClear: (values) => setValue('<?php echo esc_attr( $answer_field_name ); ?>', values, { shouldDirty: true }),
37 })"
38 class='tutor-flex tutor-flex-column tutor-gap-7 tutor-sm-gap-5'
39 >
40 <div
41 class="tutor-quiz-question-options"
42 data-image-matching="<?php echo esc_attr( $is_image_matching ? '1' : '0' ); ?>"
43 >
44 <?php foreach ( $question['question_answers'] as $answer ) : ?>
45 <div class="tutor-quiz-question-option">
46 <?php if ( $is_image_matching && ! empty( $answer['image_id'] ) ) : ?>
47 <img src="<?php echo esc_url( wp_get_attachment_image_url( $answer['image_id'], 'full' ) ); ?>" alt="<?php echo esc_attr( $answer['answer_title'] ); ?>">
48 <?php else : ?>
49 <div data-title>
50 <div class="tutor-quiz-question-option-number">
51 <?php echo esc_html( $answer['answer_order'] ); ?>
52 </div>
53 <?php echo esc_html( $answer['answer_title'] ); ?>
54 </div>
55 <?php endif; ?>
56 <div
57 class="tutor-quiz-question-option-drop-zone"
58 tabindex="0"
59 data-drop-placeholder-text="<?php echo esc_attr__( 'Drop here', 'tutor' ); ?>"
60 >
61 <input
62 class="tutor-hidden"
63 name="<?php echo esc_attr( $answer_field_name ); ?>"
64 x-bind="<?php echo esc_attr( $register_attr ); ?>"
65 >
66 <span data-drop-placeholder class="tutor-text-subdued">
67 <?php esc_html_e( 'Drop here', 'tutor' ); ?>
68 </span>
69 <?php
70 Button::make()
71 ->variant( Variant::GHOST )
72 ->size( Size::X_SMALL )
73 ->icon( Icon::CROSS )
74 ->icon_only()
75 ->attrs(
76 array(
77 'class' => 'tutor-force-hidden',
78 '@click.prevent' => 'clearDropZone',
79 'aria-label' => __( 'Clear matched option', 'tutor' ),
80 )
81 )
82 ->render();
83 ?>
84 </div>
85 </div>
86 <?php endforeach; ?>
87 </div>
88 <div
89 class="tutor-quiz-questions-error"
90 x-cloak
91 x-show="errors?.['<?php echo esc_attr( $answer_field_name ); ?>']?.message"
92 x-text="errors?.['<?php echo esc_attr( $answer_field_name ); ?>']?.message"
93 ></div>
94
95 <div class="tutor-quiz-question-draggable">
96 <div class="tutor-quiz-question-draggable-header">
97 <?php SvgIcon::make()->name( Icon::DRAG )->size( 20 )->color( Color::SECONDARY )->render(); ?>
98 <span class="tutor-text-small tutor-font-medium"><?php esc_html_e( 'Drag from here', 'tutor' ); ?></span>
99 </div>
100 <div class="tutor-quiz-question-options">
101 <?php foreach ( $draggable_answers as $answer ) : ?>
102 <?php
103 $draggable_title = $is_image_matching
104 ? $answer['answer_title'] : $answer['answer_two_gap_match'];
105 ?>
106 <div
107 class="tutor-quiz-question-option"
108 data-option="draggable"
109 data-id="<?php echo esc_attr( $answer['answer_id'] ); ?>"
110 >
111 <div data-title>
112 <?php echo esc_html( $draggable_title ); ?>
113 </div>
114 <button type="button" data-grab-handle tabindex="-1" aria-label="<?php esc_attr_e( 'Drag matching option', 'tutor' ); ?>">
115 <?php SvgIcon::make()->name( Icon::GRAB_HANDLE )->size( 24 )->render(); ?>
116 </button>
117 </div>
118 <?php endforeach; ?>
119 </div>
120 </div>
121 </div>
122
123