LLMS_Meta_Box_Lesson
Lesson Settings meta box class
Source Source
File: includes/admin/post-types/meta-boxes/class.llms.meta.box.lesson.php
class LLMS_Meta_Box_Lesson extends LLMS_Admin_Metabox {
/**
* This function allows extending classes to configure required class properties
* $this->id, $this->title, and $this->screens should be configured in this function
*
* @return void
* @since 3.0.0
* @version 3.0.0
*/
public function configure() {
$this->id = 'lifterlms-lesson';
$this->title = __( 'Lesson Settings', 'lifterlms' );
$this->screens = array(
'lesson',
);
$this->priority = 'high';
}
/**
* This function is where extending classes can configure all the fields within the metabox.
*
* The function must return an array which can be consumed by the "output" function.
*
* @since 3.0.0
* @since 3.30.3 Fixed spelling errors.
* @since 3.36.2 'start' drip method made available only if the parent course has a start date set.
* @since 7.1.3 Replace outdated URLs to WordPress' documentation about the list of sites you can embed from.
*
* @return array
*/
public function get_fields() {
$lesson = llms_get_post( $this->post );
$methods = array(
'date' => __( 'On a specific date', 'lifterlms' ),
'enrollment' => __( 'After course enrollment', 'lifterlms' ),
'start' => __( 'After course start date', 'lifterlms' ),
);
$section = $lesson->get_section();
// Tf the lesson isn't first, add previous completion method.
if ( 1 !== $lesson->get( 'order' ) || ( $section && 1 !== $section->get( 'order' ) ) ) {
$methods['prerequisite'] = __( 'After prerequisite completion', 'lifterlms' );
}
// If the parent course has no start date set, unset the 'start' drip method.
$course = $lesson->get_course();
if ( ! $course || ! $course->get_date( 'start_date' ) ) {
unset( $methods['start'] );
}
return array(
array(
'title' => __( 'General', 'lifterlms' ),
'fields' => array(
array(
'class' => 'code input-full',
'desc' => sprintf( __( 'Paste the url for a Wistia, Vimeo or Youtube video or a hosted video file. For a full list of supported providers see %s.', 'lifterlms' ), '<a href="https://wordpress.org/documentation/article/embeds/#list-of-sites-you-can-embed-from" target="_blank">WordPress oEmbeds</a>' ),
'desc_class' => 'd-all',
'id' => $this->prefix . 'video_embed',
'label' => __( 'Video Embed Url', 'lifterlms' ),
'type' => 'text',
),
array(
'class' => 'code input-full',
'desc' => sprintf( __( 'Paste the url for a SoundCloud or Spotify song or a hosted audio file. For a full list of supported providers see %s.', 'lifterlms' ), '<a href="https://wordpress.org/documentation/article/embeds/#list-of-sites-you-can-embed-from" target="_blank">WordPress oEmbeds</a>' ),
'desc_class' => 'd-all',
'id' => $this->prefix . 'audio_embed',
'type' => 'text',
'label' => __( 'Audio Embed Url', 'lifterlms' ),
),
array(
'class' => '',
'desc' => __( 'Checking this box will allow guests to view the content of this lesson without registering or signing up for the course.', 'lifterlms' ),
'desc_class' => 'd-3of4 t-3of4 m-1of2',
'id' => $this->prefix . 'free_lesson',
'is_controller' => true,
'label' => __( 'Free Lesson', 'lifterlms' ),
'type' => 'checkbox',
'value' => 'yes',
),
),
),
array(
'title' => __( 'Prerequisites', 'lifterlms' ),
'fields' => array(
array(
'class' => '',
'controls' => '#' . $this->prefix . 'prerequisite',
'desc' => __( 'Enable to choose a prerequisite Lesson', 'lifterlms' ),
'desc_class' => 'd-3of4 t-3of4 m-1of2',
'id' => $this->prefix . 'has_prerequisite',
'label' => __( 'Enable Prerequisite', 'lifterlms' ),
'type' => 'checkbox',
'value' => 'yes',
),
array(
'class' => 'llms-select2-post',
'data_attributes' => array(
'allow-clear' => true,
'placeholder' => __( 'Select a Prerequisite Lesson', 'lifterlms' ),
'post-type' => 'lesson',
),
'desc' => __( 'Select the prerequisite lesson', 'lifterlms' ),
'desc_class' => 'd-all',
'id' => $this->prefix . 'prerequisite',
'label' => __( 'Choose Prerequisite', 'lifterlms' ),
'type' => 'select',
'value' => llms_make_select2_post_array( array( get_post_meta( $this->post->ID, $this->prefix . 'prerequisite', true ) ) ),
),
),
),
array(
'title' => __( 'Drip Settings', 'lifterlms' ),
'fields' => array(
array(
'class' => 'llms-select2',
'desc_class' => 'd-all',
'id' => $this->prefix . 'drip_method',
'is_controller' => true,
'label' => __( 'Method', 'lifterlms' ),
'type' => 'select',
'value' => $methods,
),
array(
'controller' => '#' . $this->prefix . 'drip_method',
'controller_value' => 'lesson,enrollment,start,prerequisite',
'class' => 'input-full',
'id' => $this->prefix . 'days_before_available',
'label' => __( 'Delay (in days) ', 'lifterlms' ),
'type' => 'number',
'step' => 1,
'min' => 0,
),
array(
'controller' => '#' . $this->prefix . 'drip_method',
'controller_value' => 'date',
'class' => 'llms-datepicker',
'id' => $this->prefix . 'date_available',
'label' => __( 'Date Available', 'lifterlms' ),
'type' => 'date',
),
array(
'controller' => '#' . $this->prefix . 'drip_method',
'controller_value' => 'date',
'class' => '',
'desc' => __( 'Optionally enter a time when the lesson should become available. If no time supplied, lesson will be available at 12:00 AM. Format must be HH:MM AM', 'lifterlms' ),
'id' => $this->prefix . 'time_available',
'label' => __( 'Time Available', 'lifterlms' ),
'type' => 'text',
),
),
),
array(
'title' => __( 'Quiz', 'lifterlms' ),
'fields' => array(
array(
'controller' => '#' . $this->prefix . 'free_lesson',
'controller_value' => 'false',
'desc' => __( 'Checking this box will require students to get a passing score on the above quiz to complete the lesson.', 'lifterlms' ),
'desc_class' => 'd-3of4 t-3of4 m-1of2',
'id' => $this->prefix . 'require_passing_grade',
'label' => __( 'Require Passing Grade', 'lifterlms' ),
'type' => 'checkbox',
'value' => 'yes',
),
),
),
);
}
Expand full source code Collapse full source code View on GitHub
Methods Methods
- configure — This function allows extending classes to configure required class properties $this->id, $this->title, and $this->screens should be configured in this function
- get_fields — This function is where extending classes can configure all the fields within the metabox The function must return an array which can be consumed by the "output" function
Changelog Changelog
| Version | Description |
|---|---|
| 3.36.2 | 'start' drip method made avialble only if the parent course has a start date set. |
| 3.30.3 | Fixed spelling errors. |
| 1.0.0 | Introduced. |