LLMS_Metabox_Course_Builder
Meta box for the “Course Builder” launcher/browser
Source Source
File: includes/admin/post-types/meta-boxes/class.llms.meta.box.course.builder.php
class LLMS_Metabox_Course_Builder extends LLMS_Admin_Metabox { /** * Configure the metabox settings * * @return void * @since 3.13.0 * @version 3.13.0 */ public function configure() { $this->id = 'course_builder'; $this->title = __( 'Course Builder', 'lifterlms' ); $this->screens = array( 'course', 'lesson', ); $this->context = 'side'; $this->capability = 'edit_course'; } /** * Get a URL to the course builder with an optional hash to a lesson/quiz/assignment * * @param int $course_id WP Post ID of a course. * @param string $hash Hash of the lesson & tab info (lesson:{$lesson_id}:tab). * @return string * @since 3.27.0 * @version 3.27.0 */ public function get_builder_url( $course_id, $hash = null ) { $url = add_query_arg( array( 'page' => 'llms-course-builder', 'course_id' => $course_id, ), admin_url( 'admin.php' ) ); if ( $hash ) { $url = $url . '#' . $hash; } return $url; } /** * This metabox has no options * * @return array * @since 3.13.0 * @version 3.13.0 */ public function get_fields() { return array(); } /** * Get the HTML for a title, optionally as an anchor * * @param string $title title to display * @param boolean $url url to link to * @return string * @since 3.13.0 * @version 3.27.0 */ public function get_title_html( $title, $url = false ) { if ( $url ) { $title = sprintf( '<a href="%1$s">%2$s</a>', esc_url( $url ), $title ); } return $title; } /** * Override the output method to output a button * * @since 3.13.0 * @since 3.30.1 Add `llms-mb-container` CSS class to container element. * * @return void */ public function output() { $post_id = $this->post->ID; $lesson = false; $section = false; if ( 'lesson' === $this->post->post_type ) { $course = llms_get_post_parent_course( $post_id ); if ( ! $course ) { _e( 'This lesson is not attached to a course.', 'lifterlms' ); return; } $course_id = $course->get( 'id' ); $lesson = llms_get_post( $this->post ); $section = $lesson->get_parent_section() ? llms_get_post( $lesson->get_parent_section() ) : false; } else { $course = llms_get_post( $post_id ); } ?> <div class="llms-builder-launcher llms-mb-container"> <?php if ( $lesson && $section ) : ?> <p><strong><?php printf( __( 'Course: %s', 'lifterlms' ), $this->get_title_html( $course->get( 'title' ), get_edit_post_link( $course->get( 'id' ) ) ) ); ?></strong></p> <?php $this->output_section( $section, 'previous' ); ?> <?php $this->output_section( $section, 'current' ); ?> <?php $this->output_section( $section, 'next' ); ?> <?php endif; ?> <a class="llms-button-primary full" href="<?php echo esc_url( $this->get_builder_url( $course->get( 'id' ) ) ); ?>"><?php _e( 'Launch Course Builder', 'lifterlms' ); ?></a> </div> <?php } /** * HTML helper to output info for a section * * @param obj $section LLMS_Section object * @param string $which positioning [current|previous|next] * @return void * @since 3.13.0 * @version 3.28.0 */ private function output_section( $section, $which ) { $url = false; if ( 'previous' === $which ) { $section = $section->get_previous(); } elseif ( 'next' === $which ) { $section = $section->get_next(); } if ( ! $section ) { return; } if ( 'previous' === $which || 'next' === $which ) { $lessons = $section->get_lessons( 'ids' ); if ( $lessons ) { $url = get_edit_post_link( $lessons[0] ); } } ?> <p><strong><?php printf( __( 'Section %1$d: %2$s', 'lifterlms' ), $section->get( 'order' ), $this->get_title_html( $section->get( 'title' ), $url ) ); ?></strong></p> <?php if ( 'current' === $which ) : ?> <ol> <?php foreach ( $section->get_lessons() as $lesson ) : $hash = 'lesson:' . $lesson->get( 'id' ); ?> <li> <?php if ( $this->post->ID !== $lesson->get( 'id' ) ) : ?> <?php echo $this->get_title_html( $lesson->get( 'title' ), get_edit_post_link( $lesson->get( 'id' ) ) ); ?> <?php else : ?> <?php echo $lesson->get( 'title' ); ?> <?php endif; ?> <a class="tip--top-left" href="<?php echo esc_url( $this->get_builder_url( $lesson->get( 'parent_course' ), $hash ) ); ?>" data-tip="<?php esc_attr_e( 'Edit lesson in builder', 'lifterlms' ); ?>"><i class="fa fa-cog"></i></a> <?php if ( $lesson->has_quiz() ) : $quiz = $lesson->get_quiz(); ?> <br> <?php printf( '<span class="tip--top-right" data-tip="%1$s"><i class="fa fa-question-circle"></i></span> %2$s', __( 'Quiz', 'lifterlms' ), $this->get_title_html( $quiz->get( 'title' ), $this->get_builder_url( $lesson->get( 'parent_course' ), $hash . ':quiz' ) ) ); ?> <?php endif; ?> <?php do_action( 'llms_builder_mb_after_lesson', $lesson, $this ); ?> </li> <?php endforeach; ?> </ol> <?php endif; } }
Expand full source code Collapse full source code View on GitHub
Methods Methods
- configure — Configure the metabox settings
- get_builder_url — Get a URL to the course builder with an optional hash to a lesson/quiz/assignment
- get_fields — This metabox has no options
- get_title_html — Get the HTML for a title, optionally as an anchor
- output — Override the output method to output a button
- output_section — HTML helper to output info for a section
Changelog Changelog
Version | Description |
---|---|
3.30.1 | Add llms-mb-container CSS class to container element in the output() method. |
3.13.0 | Introduced. |