PluginProbe ʕ •ᴥ•ʔ
Tutor LMS – eLearning and online course solution / 4.0.0
Tutor LMS – eLearning and online course solution v4.0.0
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 / dashboard / discussions / comment-single.php
tutor / templates / dashboard / discussions Last commit date
comment-card.php 1 day ago comment-form.php 1 day ago comment-list.php 1 day ago comment-replies.php 1 day ago comment-single.php 1 day ago qna-card.php 1 day ago qna-form.php 1 day ago qna-list.php 1 day ago qna-replies.php 1 day ago qna-single.php 1 day ago
comment-single.php
178 lines
1 <?php
2 /**
3 * Lesson comment replies template.
4 *
5 * @package Tutor\Templates
6 * @subpackage Dashboard
7 * @author Themeum <support@themeum.com>
8 * @link https://themeum.com
9 * @since 4.0.0
10 */
11
12 defined( 'ABSPATH' ) || exit;
13
14 use Tutor\Components\Avatar;
15 use Tutor\Components\Button;
16 use Tutor\Components\ConfirmationModal;
17 use Tutor\Components\Constants\Size;
18 use Tutor\Components\EmptyState;
19 use Tutor\Components\PreviewTrigger;
20 use Tutor\Helpers\UrlHelper;
21 use TUTOR\Icon;
22 use Tutor\Components\SvgIcon;
23 use Tutor\Components\Constants\Color;
24 use Tutor\Components\Constants\Variant;
25 use TUTOR\Input;
26 use TUTOR\Lesson;
27
28 $lesson_comment = get_comment( $discussion_id );
29 if ( ! $lesson_comment ) {
30 EmptyState::make()
31 ->icon( tutor_utils()->get_themed_svg( 'images/illustrations/comments-empty.svg' ) )
32 ->title( __( 'No Comments Found', 'tutor' ) )
33 ->render();
34 return;
35 }
36
37 $user_id = get_current_user_id();
38 $comment_delete_modal_id = 'tutor-comment-delete-modal';
39
40 $replies_order = Input::get( 'order', 'DESC' );
41 $replies = Lesson::get_comment_replies( $discussion_id, $replies_order );
42
43 $course = get_post( tutor_utils()->get_course_id_by( 'lesson', $lesson_comment->comment_post_ID ) );
44
45 ?>
46 <div class="tutor-discussion-single">
47 <div class="tutor-flex tutor-justify-between tutor-px-6 tutor-py-5 tutor-border-b">
48 <a
49 href="<?php echo esc_url( UrlHelper::add_query_params( $discussion_url, array( 'tab' => 'lesson-comments' ) ) ); ?>"
50 class="tutor-btn tutor-btn-secondary tutor-btn-small tutor-gap-2"
51 >
52 <?php SvgIcon::make()->name( Icon::ARROW_LEFT_2 )->flip_rtl()->render(); ?>
53 <?php esc_html_e( 'Back', 'tutor' ); ?>
54 </a>
55 </div>
56 <div class="tutor-discussion-single-body tutor-p-6 tutor-border-b">
57 <div class="tutor-flex tutor-gap-5 tutor-mb-5">
58 <?php Avatar::make()->user( $lesson_comment->user_id )->size( Size::SIZE_40 )->render(); ?>
59 <div class="tutor-min-w-0 tutor-flex-1">
60 <div class="tutor-flex tutor-items-center tutor-gap-5 tutor-small">
61 <span class="tutor-discussion-card-author tutor-flex-shrink-0"><?php echo esc_html( $lesson_comment->comment_author ); ?></span>
62 <span class="tutor-text-secondary tutor-flex-shrink-0">
63 <?php
64 /* translators: %s human-readable time difference. */
65 echo esc_html( sprintf( __( '%s ago', 'tutor' ), human_time_diff( strtotime( $lesson_comment->comment_date_gmt ) ) ) );
66 ?>
67 </span>
68 </div>
69 <div class="tutor-tiny tutor-flex tutor-items-center tutor-gap-2 tutor-overflow-hidden">
70 <div class="tutor-flex tutor-items-center tutor-gap-2 tutor-min-w-0">
71 <span class="tutor-text-subdued tutor-flex-shrink-0"><?php esc_html_e( 'comment on', 'tutor' ); ?></span>
72 <div class="tutor-min-w-0 tutor-flex-1">
73 <?php PreviewTrigger::make()->id( $lesson_comment->comment_post_ID )->render(); ?>
74 </div>
75 </div>
76 <div class="tutor-flex tutor-items-center tutor-gap-2 tutor-min-w-0">
77 <span class="tutor-text-subdued tutor-flex-shrink-0"><?php esc_html_e( 'in', 'tutor' ); ?></span>
78 <div class="tutor-min-w-0 tutor-flex-1">
79 <?php PreviewTrigger::make()->id( $course->ID )->render(); ?>
80 </div>
81 </div>
82 </div>
83 </div>
84 <div class="tutor-ml-auto">
85 <?php if ( $user_id === (int) $lesson_comment->user_id ) : ?>
86 <div x-data="tutorPopover({ placement: 'bottom-end' })">
87 <?php
88 Button::make()
89 ->label( __( 'More options', 'tutor' ) )
90 ->variant( Variant::GHOST )
91 ->size( Size::X_SMALL )
92 ->icon( Icon::ELLIPSES, 'left', Size::SIZE_16, Color::SECONDARY )
93 ->icon_only()
94 ->attr( 'x-ref', 'trigger' )
95 ->attr( '@click', 'toggle()' )
96 ->render();
97 ?>
98 <div x-ref="content" x-show="open" x-cloak @click.outside="handleClickOutside()" class="tutor-popover">
99 <div class="tutor-popover-menu" style="min-width: 104px;">
100 <button class="tutor-popover-menu-item tutor-gap-5" @click="setEditing(<?php echo (int) $lesson_comment->comment_ID; ?>); hide()">
101 <?php SvgIcon::make()->name( Icon::EDIT_2 )->size( 20 )->render(); ?>
102 <?php esc_html_e( 'Edit', 'tutor' ); ?>
103 </button>
104 <button class="tutor-popover-menu-item tutor-gap-5" @click="TutorCore.modal.showModal('<?php echo esc_js( $comment_delete_modal_id ); ?>', { commentId: <?php echo esc_html( $lesson_comment->comment_ID ); ?> }); hide()">
105 <?php SvgIcon::make()->name( Icon::DELETE_2 )->size( 20 )->render(); ?>
106 <?php esc_html_e( 'Delete', 'tutor' ); ?>
107 </button>
108 </div>
109 </div>
110 </div>
111 <?php endif; ?>
112 </div>
113 </div>
114
115 <div x-show="editingId !== <?php echo (int) $lesson_comment->comment_ID; ?>">
116 <div class="tutor-p1 tutor-font-medium tutor-text-secondary" id="tutor-lesson-comment-text-<?php echo (int) $lesson_comment->comment_ID; ?>">
117 <?php echo wp_kses_post( $lesson_comment->comment_content ); ?>
118 </div>
119 </div>
120
121 <?php if ( $user_id === (int) $lesson_comment->user_id ) : ?>
122 <div x-show="editingId === <?php echo (int) $lesson_comment->comment_ID; ?>" x-cloak class="tutor-w-full">
123 <?php
124 tutor_load_template(
125 'dashboard.discussions.comment-form',
126 array(
127 'form_id' => 'lesson-comment-edit-' . (int) $lesson_comment->comment_ID,
128 'default_value' => $lesson_comment->comment_content,
129 'submit_handler' => '(data) => handleEditComment(data, ' . (int) $lesson_comment->comment_ID . ')',
130 'cancel_handler' => 'reset(); editingId = null; focused = false',
131 'is_pending' => 'editCommentMutation?.isPending',
132 'placeholder' => __( 'Write your comment', 'tutor' ),
133 )
134 );
135 ?>
136 </div>
137 <?php endif; ?>
138 </div>
139 <?php
140 tutor_load_template(
141 'dashboard.discussions.comment-form',
142 array(
143 'form_id' => 'lesson-comment-reply-form-' . $lesson_comment->comment_ID,
144 'submit_handler' => '(data) => handleReplyComment(data, ' . (int) $lesson_comment->comment_ID . ', ' . (int) $lesson_comment->comment_post_ID . ', "single")',
145 'cancel_handler' => 'reset(); focused = false',
146 'is_pending' => 'replyCommentMutation?.isPending',
147 'placeholder' => __( 'Just drop your response here!', 'tutor' ),
148 'label' => __( 'Reply', 'tutor' ),
149 'submit_label' => __( 'Save', 'tutor' ),
150 'form_class' => 'tutor-discussion-single-reply-form tutor-p-6',
151 )
152 );
153 ?>
154 <div id="tutor-discussion-replies-list">
155 <?php
156 tutor_load_template(
157 'dashboard.discussions.comment-replies',
158 array(
159 'replies' => $replies,
160 'replies_order' => $replies_order,
161 'user_id' => $user_id,
162 )
163 );
164 ?>
165 </div>
166
167 <?php
168 ConfirmationModal::make()
169 ->id( $comment_delete_modal_id )
170 ->title( __( 'Delete This Comment?', 'tutor' ) )
171 ->message( __( 'Are you sure you want to delete this comment permanently? Please confirm your choice.', 'tutor' ) )
172 ->confirm_text( __( 'Yes, Delete This', 'tutor' ) )
173 ->confirm_handler( 'deleteCommentMutation?.mutate({ comment_id: payload?.commentId, is_reply: payload?.isReply })' )
174 ->mutation_state( 'deleteCommentMutation' )
175 ->render();
176 ?>
177 </div>
178