PluginProbe ʕ •ᴥ•ʔ
Tutor LMS – eLearning and online course solution / 2.2.1
Tutor LMS – eLearning and online course solution v2.2.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 / views / qna / qna-single.php
tutor / views / qna Last commit date
contexts.php 3 years ago qna-new.php 3 years ago qna-single.php 3 years ago qna-table.php 3 years ago
qna-single.php
202 lines
1 <?php
2 /**
3 * Tutor Q&A single page
4 *
5 * @package Tutor\Views
6 * @subpackage Tutor\Q&A
7 * @author Themeum <support@themeum.com>
8 * @link https://themeum.com
9 * @since 2.0.0
10 */
11
12 use TUTOR\Input;
13
14 extract( $data ); // $question_id
15
16 // QNA data.
17 $question = tutor_utils()->get_qa_question( $question_id );
18 if ( ! $question ) {
19 tutor_utils()->tutor_empty_state();
20 return;
21 }
22
23 if ( property_exists( $question, 'meta' ) ) {
24 $meta = $question->meta;
25 }
26
27 $answers = tutor_utils()->get_qa_answer_by_question( $question_id );
28 $back_url = isset( $back_url ) ? $back_url : remove_query_arg( 'question_id', tutor()->current_url );
29
30 // Badges data.
31 $_user_id = get_current_user_id();
32 if ( property_exists( $question, 'user_id' ) ) {
33 $is_user_asker = $question->user_id == $_user_id;
34 }
35 $id_slug = $is_user_asker ? '_' . $_user_id : '';
36 $is_solved = (int) tutor_utils()->array_get( 'tutor_qna_solved' . $id_slug, $meta, 0 );
37 $is_important = (int) tutor_utils()->array_get( 'tutor_qna_important' . $id_slug, $meta, 0 );
38 $is_archived = (int) tutor_utils()->array_get( 'tutor_qna_archived' . $id_slug, $meta, 0 );
39 $is_read = (int) tutor_utils()->array_get( 'tutor_qna_read' . $id_slug, $meta, 0 );
40
41 $modal_id = 'tutor_qna_delete_single_' . $question_id;
42 $reply_hidden = ! wp_doing_ajax() ? 'display:none;' : 0;
43
44 // At first set this as read.
45 update_comment_meta( $question_id, 'tutor_qna_read' . $id_slug, 1 );
46 ?>
47
48 <div class="tutor-qna-single-question<?php echo is_admin() ? ' tutor-admin-wrap' : ''; ?>" data-course_id="<?php echo esc_attr( $question->course_id ); ?>" data-question_id="<?php echo esc_attr( $question_id ); ?>" data-context="<?php echo esc_attr( $context ); ?>">
49 <?php if ( in_array( $context, array( 'backend-dashboard-qna-single', 'frontend-dashboard-qna-single' ) ) ) : ?>
50 <div class="<?php echo is_admin() ? 'tutor-wp-dashboard-header tutor-px-24 tutor-mb-24' : 'tutor-qa-sticky-bar'; ?>">
51 <div class="tutor-row tutor-align-lg-center">
52 <div class="tutor-col-lg">
53 <div class="tutor-d-lg-flex tutor-align-lg-center tutor-px-12 tutor-py-16">
54 <a class="tutor-btn tutor-btn-ghost" href="<?php echo esc_url( $back_url ); ?>">
55 <span class="tutor-icon-previous tutor-mr-8" area-hidden="true"></span>
56 <?php esc_html_e( 'Back', 'tutor' ); ?>
57 </a>
58 </div>
59 </div>
60
61 <div class="tutor-col-lg-auto">
62 <div class="tutor-qna-badges tutor-qna-badges-wrapper">
63 <?php if ( ! $is_user_asker ) : ?>
64 <span class="tutor-btn tutor-btn-ghost tutor-mr-16" data-action="solved" data-state-class-selector="i" data-state-class-0="tutor-icon-circle-mark-line" data-state-class-1="tutor-icon-circle-mark tutor-color-success" role="button">
65 <i class="<?php echo $is_solved ? 'tutor-icon-circle-mark tutor-color-success active' : 'tutor-icon-circle-mark-line'; ?> tutor-mr-8"></i>
66 <span><?php esc_html_e( 'Solved', 'tutor' ); ?></span>
67 </span>
68
69 <span class="tutor-btn tutor-btn-ghost tutor-mr-16" data-action="important" data-state-class-selector="i" data-state-class-0="tutor-icon-important-line" data-state-class-1="tutor-icon-important-bold">
70 <i class="<?php echo $is_important ? 'tutor-icon-important-bold active' : 'tutor-icon-important-line'; ?> tutor-mr-8"></i>
71 <span><?php esc_html_e( 'Important', 'tutor' ); ?></span>
72 </span>
73
74 <span class="tutor-btn tutor-btn-ghost tutor-mr-16" data-action="archived" data-state-text-selector="span" data-state-text-0="<?php esc_html_e( 'Archive', 'tutor' ); ?>" data-state-text-1="<?php esc_html_e( 'Un-Archive', 'tutor' ); ?>" data-state-class-selector="i" data-state-class-0="tutor-icon-archive" data-state-class-1="tutor-icon-archive">
75 <i class="<?php echo $is_archived ? 'tutor-icon-archive active' : 'tutor-icon-archive'; ?> tutor-mr-8"></i>
76 <span><?php $is_archived ? esc_html_e( 'Un-Archive', 'tutor' ) : esc_html_e( 'Archive', 'tutor' ); ?></span>
77 </span>
78 <?php endif; ?>
79 <span class="tutor-btn tutor-btn-ghost" data-tutor-modal-target="<?php echo esc_attr( $modal_id ); ?>">
80 <i class="tutor-icon-trash-can-bold tutor-mr-8" area-hidden="true"></i>
81 <?php esc_html_e( 'Delete', 'tutor' ); ?>
82 </span>
83 </div>
84 </div>
85 </div>
86 </div>
87 <?php endif; ?>
88
89 <div class="<?php echo is_admin() ? 'tutor-admin-container' : ''; ?>">
90 <div class="tutor-qna-course-title tutor-color-black tutor-fs-6 tutor-fw-bold tutor-mb-32<?php echo is_single_course( true ) || ( Input::has( 'action' ) ) ? ' tutor-d-none' : ''; ?>">
91 <?php echo esc_html( $question->post_title ); ?>
92 <div class="tutor-hr tutor-mt-20" area-hidden="true"></div>
93 </div>
94 <div class="tutor-qna-single-wrapper">
95 <div class="tutor-qa-reply-wrapper tutor-mt-20">
96 <div class="tutor-qa-chatlist">
97 <?php
98 $current_user_id = get_current_user_id();
99 $avatar_url = array();
100 $is_single = in_array( $context, array( 'course-single-qna-sidebar', 'course-single-qna-single' ) );
101
102 if ( is_array( $answers ) && count( $answers ) ) {
103 $reply_count = count( $answers ) - 1;
104 foreach ( $answers as $answer ) {
105 if ( ! isset( $avatar_url[ $answer->user_id ] ) ) {
106 // Get avatar url if not already got.
107 $avatar_url[ $answer->user_id ] = get_avatar_url( $answer->user_id );
108 }
109
110 $css_class = ( $current_user_id != $answer->user_id || 0 == $answer->comment_parent ) ? 'tutor-qna-left' : 'tutor-qna-right';
111 $css_style = ( $is_single && $answer->comment_parent != 0 ) ? 'margin-left:14%;' . $reply_hidden : '';
112 $reply_class = ( $is_single && $answer->comment_parent != 0 ) ? 'tutor-reply-msg' : '';
113 ?>
114 <div class="tutor-qna-chat <?php echo esc_attr( $css_class . ' ' . $reply_class ); ?>" style="<?php echo esc_attr( $css_style ); ?>">
115 <div class="tutor-qna-user">
116 <div>
117 <img src="<?php echo wp_kses( get_avatar_url( $answer->user_id ), tutor_utils()->allowed_avatar_tags() ); ?>" />
118 </div>
119
120 <div>
121 <div class="tutor-fs-6 tutor-fw-medium tutor-color-secondary">
122 <?php echo esc_html( $answer->display_name ); ?>
123 </div>
124 <div class="tutor-fs-7 tutor-color-muted">
125 <?php
126 $date = human_time_diff( strtotime( $answer->comment_date_gmt ) );
127 $time_ago = __( 'ago', 'tutor' );
128 echo esc_html( $date . ' ' . $time_ago );
129 ?>
130 </div>
131 </div>
132 </div>
133
134 <div class="tutor-qna-text tutor-fs-7">
135 <?php echo wp_kses_post( stripslashes( $answer->comment_content ) ); ?>
136 </div>
137
138 <?php if ( $is_single && 0 == $answer->comment_parent ) : ?>
139 <div class="tutor-toggle-reply">
140 <span>
141 <?php esc_html_e( 'Reply', 'tutor' ); ?>
142 <?php echo esc_html( $reply_count ? '(' . $reply_count . ')' : '' ); ?>
143 </span>
144 </div>
145 <?php endif; ?>
146 </div>
147 <?php
148 }
149 }
150 ?>
151 </div>
152 <div class="tutor-qa-reply tutor-mt-12 tutor-mb-24 tutor-qna-reply-editor" data-context="<?php echo esc_attr( $context ); ?>" style="<?php echo esc_attr( $is_single ? $reply_hidden : '' ); ?>">
153 <?php if ( function_exists( 'tutor_pro' ) ) : ?>
154 <?php
155 wp_editor(
156 '',
157 'tutor_qna_reply_editor_' . $question_id,
158 tutor_utils()->text_editor_config(
159 array(
160 'plugins' => 'codesample',
161 'tinymce' => array(
162 'toolbar1' => 'bold,italic,underline,link,unlink,removeformat,image,bullist,codesample',
163 'toolbar2' => '',
164 'toolbar3' => '',
165 ),
166 )
167 )
168 );
169 ?>
170 <?php else : ?>
171 <textarea class="tutor-form-control" placeholder="<?php esc_html_e( 'Write here...', 'tutor' ); ?>"></textarea>
172 <?php endif; ?>
173
174 <div class="tutor-d-flex tutor-align-center tutor-mt-12">
175 <button data-back_url="<?php echo esc_url( $back_url ); ?>" type="submit" class="tutor-btn tutor-btn-primary tutor-btn-sm">
176 <?php esc_html_e( 'Reply', 'tutor' ); ?>
177 </button>
178 </div>
179 </div>
180 </div>
181 </div>
182 </div>
183 </div>
184
185 <?php
186 // Delete modal.
187 tutor_load_template(
188 'modal.confirm',
189 array(
190 'id' => $modal_id,
191 'image' => 'icon-trash.svg',
192 'title' => __( 'Do You Want to Delete This Question?', 'tutor' ),
193 'content' => __( 'All the replies also will be deleted.', 'tutor' ),
194 'yes' => array(
195 'text' => __( 'Yes, Delete This', 'tutor' ),
196 'class' => 'tutor-list-ajax-action',
197 'attr' => array( 'data-request_data=\'{"action":"tutor_delete_dashboard_question", "question_id":"' . $question_id . '"}\'', 'data-redirect_to="' . $back_url . '"' ),
198 ),
199 )
200 );
201 ?>
202