enrolled
1 year ago
add-to-cart-edd.php
1 year ago
add-to-cart-tutor.php
11 months ago
add-to-cart-woocommerce.php
1 year ago
continue-lesson.php
3 years ago
course-benefits.php
3 years ago
course-content.php
3 years ago
course-entry-box.php
1 year ago
course-requirements.php
3 years ago
course-target-audience.php
3 years ago
course-topics.php
1 year ago
instructors.php
3 years ago
lead-info.php
9 months ago
material-includes.php
3 years ago
q_and_a_turned_off.php
3 years ago
reviews-loop.php
1 year ago
reviews.php
2 years ago
social_share.php
3 years ago
tags.php
3 years ago
wc-price-html.php
3 years ago
course-topics.php
158 lines
| 1 | <?php |
| 2 | /** |
| 3 | * Template for displaying single course |
| 4 | * |
| 5 | * @package Tutor\Templates |
| 6 | * @subpackage Single\Course |
| 7 | * @author Themeum <support@themeum.com> |
| 8 | * @link https://themeum.com |
| 9 | * @since 1.0.0 |
| 10 | */ |
| 11 | |
| 12 | if ( ! defined( 'ABSPATH' ) ) { |
| 13 | exit; |
| 14 | } |
| 15 | |
| 16 | global $is_enrolled; |
| 17 | |
| 18 | $topics = apply_filters( 'tutor_get_course_topics', tutor_utils()->get_topics() ); |
| 19 | $course_id = get_the_ID(); |
| 20 | $index = 0; |
| 21 | |
| 22 | /** |
| 23 | * $is_enrolled getting null for Addons plugin like Elementor addons |
| 24 | * |
| 25 | * @since 2.1.8 |
| 26 | */ |
| 27 | if ( is_null( $is_enrolled ) ) { |
| 28 | $is_enrolled = tutor_utils()->is_enrolled( $course_id ); |
| 29 | } |
| 30 | |
| 31 | do_action( 'tutor_course/single/before/topics' ); |
| 32 | ?> |
| 33 | <div class="tutor-mt-40"> |
| 34 | <?php if ( $topics->have_posts() ) : ?> |
| 35 | |
| 36 | <h3 class="tutor-fs-5 tutor-fw-bold tutor-color-black tutor-mb-24 tutor-course-content-title"> |
| 37 | <?php |
| 38 | echo esc_html( apply_filters( 'tutor_course_topics_title', __( 'Course Content', 'tutor' ) ) ); |
| 39 | ?> |
| 40 | </h3> |
| 41 | |
| 42 | <div class="tutor-accordion tutor-mt-24"> |
| 43 | <?php while ( $topics->have_posts() ) : ?> |
| 44 | <?php |
| 45 | $topics->the_post(); |
| 46 | $topic_summery = get_the_content(); |
| 47 | $index++; |
| 48 | ?> |
| 49 | <div class="tutor-accordion-item"> |
| 50 | <h4 class="tutor-accordion-item-header<?php echo 1 == $index ? ' is-active' : ''; ?>"> |
| 51 | <?php the_title(); ?> |
| 52 | <?php if ( ! empty( $topic_summery ) ) : ?> |
| 53 | <div class="tooltip-wrap tooltip-icon"> |
| 54 | <span class="tooltip-txt tooltip-right"><?php echo esc_attr( $topic_summery ); ?></span> |
| 55 | </div> |
| 56 | <?php endif; ?> |
| 57 | </h4> |
| 58 | |
| 59 | <?php $topic_contents = tutor_utils()->get_course_contents_by_topic( get_the_ID(), -1 ); ?> |
| 60 | <?php if ( $topic_contents->have_posts() ) : ?> |
| 61 | <div class="tutor-accordion-item-body" style="<?php echo 1 != $index ? 'display: none;' : ''; ?>"> |
| 62 | <div class="tutor-accordion-item-body-content"> |
| 63 | <ul class="tutor-course-content-list"> |
| 64 | <?php while ( $topic_contents->have_posts() ) : ?> |
| 65 | <?php |
| 66 | $topic_contents->the_post(); |
| 67 | global $post; |
| 68 | |
| 69 | // Get Lesson video information if any. |
| 70 | $video = tutor_utils()->get_video_info(); |
| 71 | $play_time = $video ? $video->playtime : false; |
| 72 | $is_preview = get_post_meta( $post->ID, '_is_preview', true ); |
| 73 | |
| 74 | // Determine topic content icon based on lesson, video, quiz etc. |
| 75 | $topic_content_icon = $play_time ? 'tutor-icon-brand-youtube-bold' : 'tutor-icon-document-text'; |
| 76 | 'tutor_quiz' === $post->post_type ? $topic_content_icon = 'tutor-icon-circle-question-mark' : 0; |
| 77 | 'tutor_assignments' === $post->post_type ? $topic_content_icon = 'tutor-icon-document-text' : 0; |
| 78 | 'tutor_zoom_meeting' === $post->post_type ? $topic_content_icon = 'tutor-icon-brand-zoom' : 0; |
| 79 | 'tutor-google-meet' === $post->post_type ? $topic_content_icon = 'tutor-icon-brand-google-meet' : 0; |
| 80 | |
| 81 | $is_public_course = \TUTOR\Course_List::is_public( $course_id ); |
| 82 | $is_locked = ! ( $is_enrolled || $is_preview || $is_public_course ); |
| 83 | ?> |
| 84 | <li class="tutor-course-content-list-item"> |
| 85 | <div class="tutor-d-flex"> |
| 86 | <span class="tutor-course-content-list-item-icon <?php echo esc_attr( $topic_content_icon ); ?> tutor-mr-12 tutor-mt-4"></span> |
| 87 | <h5 class="tutor-course-content-list-item-title"> |
| 88 | <?php |
| 89 | $lesson_title = ''; |
| 90 | $title_tag_allow = array( |
| 91 | 'a' => array( |
| 92 | 'href' => true, |
| 93 | 'class' => true, |
| 94 | ), |
| 95 | 'span' => array( 'class' => true ), |
| 96 | 'div' => array( |
| 97 | 'class' => true, |
| 98 | 'data-timer' => array(), |
| 99 | 'data-timezone' => array(), |
| 100 | ), |
| 101 | ); |
| 102 | |
| 103 | // Add zoom meeting countdown info. |
| 104 | $countdown = ''; |
| 105 | if ( 'tutor_zoom_meeting' === $post->post_type ) { |
| 106 | $zoom_meeting = tutor_zoom_meeting_data( $post->ID ); |
| 107 | $countdown = '<div class="tutor-zoom-lesson-countdown tutor-lesson-duration" data-timer="' . $zoom_meeting->countdown_date . '" data-timezone="' . $zoom_meeting->timezone . '"></div>'; |
| 108 | } |
| 109 | |
| 110 | /** |
| 111 | * Show clickable content if enrolled. |
| 112 | * Or if it is public and not paid, then show content forcefully. |
| 113 | */ |
| 114 | if ( $is_enrolled || ( get_post_meta( $course_id, '_tutor_is_public_course', true ) == 'yes' && ! tutor_utils()->is_course_purchasable( $course_id ) ) ) { |
| 115 | $lesson_title .= "<a href='" . get_the_permalink() . "'> " . get_the_title() . ' </a>'; |
| 116 | |
| 117 | if ( $countdown ) { |
| 118 | if ( $zoom_meeting->is_expired ) { |
| 119 | $lesson_title .= '<span class="tutor-zoom-label">' . __( 'Expired', 'tutor' ) . '</span>'; |
| 120 | } elseif ( $zoom_meeting->is_started ) { |
| 121 | $lesson_title .= '<span class="tutor-zoom-label tutor-zoom-live-label">' . __( 'Live', 'tutor' ) . '</span>'; |
| 122 | } |
| 123 | $lesson_title .= $countdown; |
| 124 | } |
| 125 | |
| 126 | echo wp_kses( |
| 127 | $lesson_title, |
| 128 | $title_tag_allow |
| 129 | ); |
| 130 | } else { |
| 131 | $lesson_title .= get_the_title(); |
| 132 | echo wp_kses( apply_filters( 'tutor_course/contents/lesson/title', $lesson_title, get_the_ID() ), $title_tag_allow ); |
| 133 | } |
| 134 | ?> |
| 135 | </h5> |
| 136 | </div> |
| 137 | |
| 138 | <div class="tutor-d-flex tutor-align-center tutor-flex-shrink-0 tutor-mt-2"> |
| 139 | <span class="tutor-course-content-list-item-duration tutor-fs-7 tutor-color-muted"> |
| 140 | <?php echo esc_html( $play_time ? tutor_utils()->get_optimized_duration( $play_time ) : '' ); ?> |
| 141 | </span> |
| 142 | <span class="tutor-course-content-list-item-status <?php echo $is_locked ? 'tutor-icon-lock-line' : 'tutor-icon-eye-line'; ?> tutor-color-muted tutor-ml-20" area-hidden="true"></span> |
| 143 | </div> |
| 144 | </li> |
| 145 | <?php endwhile; ?> |
| 146 | </ul> |
| 147 | </div> |
| 148 | </div> |
| 149 | <?php $topic_contents->reset_postdata(); ?> |
| 150 | <?php endif; ?> |
| 151 | </div> |
| 152 | <?php endwhile; ?> |
| 153 | </div> |
| 154 | <?php endif; ?> |
| 155 | </div> |
| 156 | |
| 157 | <?php do_action( 'tutor_course/single/after/topics', $course_id ); ?> |
| 158 |