PluginProbe ʕ •ᴥ•ʔ
Tutor LMS – eLearning and online course solution / 4.0.5
Tutor LMS – eLearning and online course solution v4.0.5
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 / shared / components / quiz / attempt-details / questions-sidebar.php
tutor / templates / shared / components / quiz / attempt-details Last commit date
questions 1 week ago question-header.php 1 week ago question.php 1 month ago questions-sidebar.php 1 week ago review-answers.php 1 month ago summary.php 1 month ago
questions-sidebar.php
100 lines
1 <?php
2 /**
3 * Tutor quiz attempt details sidebar.
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\Quiz;
14 use Tutor\Models\QuizModel;
15
16 if ( ! isset( $quiz_id ) ) {
17 return;
18 }
19
20 $quiz_id = (int) $quiz_id;
21
22 if ( ! $quiz_id ) {
23 return;
24 }
25
26 $question_status_map = array();
27 $default_item_status = ( isset( $attempt_data ) && is_object( $attempt_data ) ) ? 'incorrect' : '';
28 $status_priority = array(
29 'correct' => 1,
30 'incorrect' => 2,
31 'pending' => 3,
32 );
33
34 if ( isset( $attempt_data ) && is_object( $attempt_data ) && ! empty( $attempt_data->attempt_id ) ) {
35 $questions = isset( $questions ) ? $questions : QuizModel::get_quiz_answers_by_attempt_id( (int) $attempt_data->attempt_id );
36 $questions = QuizModel::filter_attempt_answers_for_details( $questions, ! empty( $is_instructor_review ) );
37
38 foreach ( $questions as $answer_row ) {
39 $question_id = (int) ( $answer_row->question_id ?? 0 );
40 if ( ! $question_id ) {
41 continue;
42 }
43
44 $answer_status = QuizModel::get_attempt_answer_status( $answer_row );
45 $item_status = 'correct' === $answer_status ? 'correct' : ( 'pending' === $answer_status ? 'pending' : 'incorrect' );
46 $current = $question_status_map[ $question_id ] ?? '';
47
48 if ( ! $current || $status_priority[ $item_status ] > $status_priority[ $current ] ) {
49 $question_status_map[ $question_id ] = $item_status;
50 }
51 }
52 } else {
53 $questions = tutor_utils()->get_questions_by_quiz( $quiz_id );
54 }
55
56 $first_question_id = is_array( $questions ) && ! empty( $questions ) ? (int) ( $questions[0]->question_id ?? 0 ) : 0;
57 $first_question_id = $first_question_id > 0 ? $first_question_id : '';
58 ?>
59
60 <div
61 class="tutor-quiz-summary-sidebar"
62 x-data="tutorQuizSummarySidebar({
63 firstQuestionId: '<?php echo esc_js( (string) $first_question_id ); ?>'
64 })"
65 >
66 <h3 class="tutor-h3 tutor-mb-10">
67 <?php esc_html_e( 'Quiz questions', 'tutor' ); ?>
68 </h3>
69
70 <div class="tutor-quiz-sidebar-questions">
71 <?php if ( is_array( $questions ) ) : ?>
72 <?php foreach ( $questions as $index => $question ) : ?>
73 <?php
74 $question_id = (int) ( $question->question_id ?? 0 );
75 $item_status_class = '';
76
77 $item_status_class = $question_status_map[ $question_id ] ?? $default_item_status;
78
79 $classes = array( 'tutor-quiz-sidebar-question-item' );
80 if ( $item_status_class ) {
81 $classes[] = $item_status_class;
82 }
83 ?>
84 <a
85 href="#question-<?php echo esc_attr( $question_id ); ?>"
86 class="<?php echo esc_attr( implode( ' ', $classes ) ); ?>"
87 data-question-id="<?php echo esc_attr( $question_id ); ?>"
88 :class="{ 'active': String(activeQuestionId) === '<?php echo esc_attr( $question_id ); ?>' }"
89 @click.prevent="setActiveQuestion('<?php echo esc_attr( $question_id ); ?>')"
90 >
91 <div class="tutor-question-number"><?php echo esc_html( (int) $index + 1 ); ?>.</div>
92 <div class="tutor-question-content">
93 <?php echo esc_html( Quiz::sanitize_quiz_content( $question->question_title ?? '' ) ); ?>
94 </div>
95 </a>
96 <?php endforeach; ?>
97 <?php endif; ?>
98 </div>
99 </div>
100