course-filter
2 months ago
dashboard
2 months ago
ecommerce
2 months ago
email
9 months ago
global
2 days ago
instructor
3 years ago
loop
2 months ago
modal
2 months ago
profile
3 years ago
shortcode
2 months ago
single
2 months ago
template-part
1 year ago
widget
3 years ago
archive-course-init.php
9 months ago
archive-course.php
3 years ago
course-embed.php
2 months ago
course-none.php
3 years ago
dashboard.php
1 year ago
feature_disabled.php
3 years ago
login-form.php
2 months ago
login.php
3 years ago
metabox-wrapper.php
2 months ago
permission-denied.php
3 years ago
public-profile.php
8 months ago
single-assignment.php
3 years ago
single-content-loader.php
2 months ago
single-course.php
9 months ago
single-lesson.php
3 years ago
single-preview-lesson.php
3 years ago
single-quiz.php
1 year ago
template.php
3 years ago
single-content-loader.php
121 lines
| 1 | <?php |
| 2 | /** |
| 3 | * Template for displaying single lesson, assignment, quiz etc. |
| 4 | * |
| 5 | * @package Tutor\Templates |
| 6 | * @author Themeum <support@themeum.com> |
| 7 | * @link https://themeum.com |
| 8 | * @since 1.0.0 |
| 9 | */ |
| 10 | |
| 11 | global $post; |
| 12 | //phpcs:ignore WordPress.NamingConventions.ValidVariableName.VariableNotSnakeCase |
| 13 | $currentPost = $post; |
| 14 | |
| 15 | $method_map = array( |
| 16 | 'lesson' => 'tutor_lesson_content', |
| 17 | 'assignment' => 'tutor_assignment_content', |
| 18 | ); |
| 19 | |
| 20 | $content_id = tutor_utils()->get_post_id(); |
| 21 | $course_id = tutor_utils()->get_course_id_by_subcontent( $content_id ); |
| 22 | $contents = tutor_utils()->get_course_prev_next_contents_by_id( $content_id ); |
| 23 | $previous_id = $contents->previous_id; |
| 24 | $next_id = $contents->next_id; |
| 25 | $user_id = get_current_user_id(); |
| 26 | |
| 27 | $is_course_completed = tutor_utils()->is_completed_course( $course_id, $user_id ); |
| 28 | $enable_spotlight_mode = tutor_utils()->get_option( 'enable_spotlight_mode' ); |
| 29 | //phpcs:ignore WordPress.PHP.DontExtract.extract_extract |
| 30 | extract( $data ); // $data variable consist $context, $html_content. |
| 31 | |
| 32 | /** |
| 33 | * Single course sidebar content |
| 34 | * |
| 35 | * @param boolean $echo echo the content or not. |
| 36 | * @param string $context device context (mobile/desktop). |
| 37 | * @return string HTML output string. |
| 38 | */ |
| 39 | function tutor_course_single_sidebar( $echo = true, $context = 'desktop' ) { |
| 40 | ob_start(); |
| 41 | tutor_load_template( 'single.lesson.lesson_sidebar', array( 'context' => $context ) ); |
| 42 | $output = apply_filters( 'tutor_lesson/single/lesson_sidebar', ob_get_clean() ); |
| 43 | |
| 44 | if ( $echo ) { |
| 45 | add_filter( 'wp_kses_allowed_html', 'tutor_kses_allowed_html', 10, 2 ); |
| 46 | echo wp_kses_post( $output ); |
| 47 | remove_filter( 'wp_kses_allowed_html', 'tutor_kses_allowed_html' ); |
| 48 | } |
| 49 | |
| 50 | return $output; |
| 51 | } |
| 52 | |
| 53 | do_action( 'tutor/course/single/content/before/all', $course_id, $content_id ); |
| 54 | |
| 55 | get_tutor_header(); |
| 56 | |
| 57 | $show_mark_as_complete = false; |
| 58 | |
| 59 | if ( tutor()->lesson_post_type === $post->post_type ) { |
| 60 | $show_mark_as_complete = apply_filters( 'tutor_lesson_show_mark_as_complete', true ); |
| 61 | } |
| 62 | |
| 63 | ?> |
| 64 | |
| 65 | <?php do_action( 'tutor_' . $context . '/single/before/wrap' ); ?> |
| 66 | <div class="tutor-course-single-content-wrapper<?php echo $enable_spotlight_mode ? ' tutor-spotlight-mode' : ''; ?>"> |
| 67 | <div class="tutor-course-single-sidebar-wrapper tutor-<?php echo esc_attr( $context ); ?>-sidebar"> |
| 68 | <?php tutor_course_single_sidebar(); ?> |
| 69 | </div> |
| 70 | <div id="tutor-single-entry-content" class="tutor-quiz-single-entry-wrap"> |
| 71 | <?php ( isset( $method_map[ $context ] ) && is_callable( $method_map[ $context ] ) ) ? $method_map[ $context ]() : 0; ?> |
| 72 | <?php |
| 73 | /** |
| 74 | * Note: $html_content comes from extracted $data variable |
| 75 | * $html_content consist dynamic HTML content which is loaded by tutor_load_template_from_custom_path |
| 76 | */ |
| 77 | echo isset( $html_content ) ? $html_content : ''; //phpcs:ignore |
| 78 | ?> |
| 79 | </div> |
| 80 | </div> |
| 81 | |
| 82 | <!-- Course Progressbar on sm/mobile --> |
| 83 | <?php |
| 84 | // Get total content count. |
| 85 | $course_stats = tutor_utils()->get_course_completed_percent( $course_id, 0, true ); |
| 86 | |
| 87 | // Is Lesstion Complete. |
| 88 | $is_completed_lesson = tutor_utils()->is_completed_lesson(); |
| 89 | ?> |
| 90 | |
| 91 | <?php if ( ! \TUTOR\Course_List::is_public( $course_id ) ) : ?> |
| 92 | <div class="tutor-spotlight-mobile-progress-complete tutor-px-20 tutor-py-16 tutor-mt-20 tutor-d-xl-none tutor-d-block"> |
| 93 | <div class="tutor-row tutor-align-center"> |
| 94 | <div class="tutor-spotlight-mobile-progress-left <?php echo ! $is_completed_lesson ? 'tutor-col-sm-8 tutor-col-6' : 'tutor-col-12'; ?>"> |
| 95 | <div class="tutor-fs-7 tutor-color-muted"> |
| 96 | <?php echo esc_html( $course_stats['completed_percent'] ) . '% '; ?><span><?php esc_html_e( 'Complete', 'tutor' ); ?></span> |
| 97 | </div> |
| 98 | <div class="list-item-progress tutor-my-16"> |
| 99 | <div class="tutor-progress-bar tutor-mt-12" style="--tutor-progress-value:<?php echo esc_attr( $course_stats['completed_percent'] ); ?>%;"> |
| 100 | <span class="tutor-progress-value" aria-hidden="true"></span> |
| 101 | </div> |
| 102 | </div> |
| 103 | </div> |
| 104 | |
| 105 | <div class="tutor-spotlight-mobile-progress-right tutor-col-sm-4 tutor-col-6"> |
| 106 | <?php |
| 107 | if ( ! $is_completed_lesson && $show_mark_as_complete ) { |
| 108 | tutor_lesson_mark_complete_html(); |
| 109 | } |
| 110 | do_action( 'tutor_after_lesson_completion_button', $course_id, $user_id, $is_course_completed, $course_stats ); |
| 111 | ?> |
| 112 | </div> |
| 113 | |
| 114 | </div> |
| 115 | </div> |
| 116 | <?php endif; ?> |
| 117 | <?php |
| 118 | do_action( 'tutor_' . $context . '/single/after/wrap' ); |
| 119 | |
| 120 | get_tutor_footer(); |
| 121 |