gocodebox/lifterlms

View on GitHub
assets/js/builder/Schemas/Lesson.js

Summary

Maintainability
C
1 day
Test Coverage
/**
 * Lesson Schemas
 *
 * @since    3.17.0
 * @version  3.25.4
 */
define( [], function() {

    return window.llms.hooks.applyFilters( 'llms_define_lesson_schema', {

        default: {
            title: LLMS.l10n.translate( 'General Settings' ),
            toggleable: true,
            fields: [
                [
                    {
                        attribute: 'permalink',
                        id: 'permalink',
                        type: 'permalink',
            },
                ], [
                    {
                        attribute: 'video_embed',
                        id: 'video-embed',
                        label: LLMS.l10n.translate( 'Video Embed URL' ),
                        type: 'video_embed',
            },
                    {
                        attribute: 'audio_embed',
                        id: 'audio-embed',
                        label: LLMS.l10n.translate( 'Audio Embed URL' ),
                        type: 'audio_embed',
            },
                ], [
                    {
                        attribute: 'free_lesson',
                        id: 'free-lesson',
                        label: LLMS.l10n.translate( 'Free Lesson' ),
                        tip: LLMS.l10n.translate( 'Free lessons can be accessed without enrollment.' ),
                        type: 'switch',
            },
                    {
                        attribute: 'require_passing_grade',
                        id: 'require-passing-grade',
                        label: LLMS.l10n.translate( 'Require Passing Grade on Quiz' ),
                        tip: LLMS.l10n.translate( 'When enabled, students must pass this quiz before the lesson can be completed.' ),
                        type: 'switch',
                        condition: function() {
                            return ( 'yes' === this.get( 'quiz_enabled' ) );
                        },
            },
                    {
                        attribute: 'require_assignment_passing_grade',
                        id: 'require-assignment-passing-grade',
                        label: LLMS.l10n.translate( 'Require Passing Grade on Assignment' ),
                        tip: LLMS.l10n.translate( 'When enabled, students must pass this assignment before the lesson can be completed.' ),
                        type: 'switch',
                        condition: function() {
                            return ( 'undefined' !== window.llms_builder.assignments && 'yes' === this.get( 'assignment_enabled' ) );
                        },
            },
                    {
                        attribute: 'points',
                        id: 'points',
                        label: LLMS.l10n.translate( 'Lesson Weight' ),
                        label_after: LLMS.l10n.translate( 'POINTS' ),
                        min: 0,
                        max: 99,
                        tip: LLMS.l10n.translate( 'Determines the weight of the lesson when calculating the overall grade of the course.' ),
                        tip_position: 'top-left',
                        type: 'number',
                        condition: function() {
                            return ( ( 'yes' === this.get( 'quiz_enabled' ) ) || ( 'undefined' !== window.llms_builder.assignments && 'yes' === this.get( 'assignment_enabled' ) ) );
                        },
            },
                ], [
                    {
                        attribute: 'prerequisite',
                        condition: function() {
                            return ( false === this.is_first_in_course() );
                        },
                        id: 'prerequisite',
                        label: LLMS.l10n.translate( 'Prerequisite' ),
                        switch_attribute: 'has_prerequisite',
                        type: 'switch-select',
                        options: function() {
                            return this.get_available_prereq_options();
                        },
            },
                ], [
                    {
                        label: LLMS.l10n.translate( 'Course Drip Method' ),
                        id: 'course-drip',
                        type: 'heading',
                        condition: function() {
                            return ( this.get_course() && 'yes' === this.get_course().get( 'lesson_drip' ) && this.get_course().get( 'drip_method' ) );
                        },
                        detail: LLMS.l10n.translate( 'Drip settings are currently set at the course level, under the Restrictions settings tab. Disable to allow lesson level drip settings.' ) + ' <a href=\"javascript:document.getElementById(\'llms-exit-button\').click()\">' + LLMS.l10n.translate( 'Edit Course' ) + '</a>',
                    },
                ], [
                    {
                        label: LLMS.l10n.translate( 'Course Drip Method' ),
                        id: 'course-drip',
                        type: 'heading',
                        condition: function() {
                            return ( ! this.get_course() || 'yes' !== this.get_course().get( 'lesson_drip' ) || ! this.get_course().get( 'drip_method' ) );
                        },
                        detail: LLMS.l10n.translate( 'Drip settings can be set at the course level to release course content at a specified interval, in the Restrictions settings tab.' ) + ' <a href=\"javascript:document.getElementById(\'llms-exit-button\').click()\">' + LLMS.l10n.translate( 'Edit Course' ) + '</a>',
                    },
                ], [
                    {
                        attribute: 'drip_method',
                        id: 'drip-method',
                        label: LLMS.l10n.translate( 'Drip Method' ),
                        switch_attribute: 'drip_method',
                        type: 'select',
                        condition: function() {
                            return ( ! this.get_course() || 'yes' !== this.get_course().get( 'lesson_drip' ) || ! this.get_course().get( 'drip_method' ) );
                        },
                        options: function() {

                            var options = [
                                {
                                    key: '',
                                    val: LLMS.l10n.translate( 'None' ),
                            },
                                {
                                    key: 'date',
                                    val: LLMS.l10n.translate( 'On a specific date' ),
                            },
                                {
                                    key: 'enrollment',
                                    val: LLMS.l10n.translate( '# of days after course enrollment' ),
                            },
                            ];

                            if ( this.get_course() && this.get_course().get( 'start_date' ) ) {
                                options.push( {
                                    key: 'start',
                                    val: LLMS.l10n.translate( '# of days after course start date' ),
                                } );
                            }

                            if ( 'yes' === this.get( 'has_prerequisite' ) ) {
                                options.push( {
                                    key: 'prerequisite',
                                    val: LLMS.l10n.translate( '# of days after prerequisite lesson completion' ),
                                } );
                            }

                            return options;

                        },
            },
                    {
                        attribute: 'days_before_available',
                        condition: function() {
                            if ( this.get_course() && 'yes' === this.get_course().get( 'lesson_drip' ) && this.get_course().get( 'drip_method' ) ) {
                                return false;
                            }

                            return ( -1 !== [ 'enrollment', 'start', 'prerequisite' ].indexOf( this.get( 'drip_method' ) ) );
                        },
                        id: 'days-before-available',
                        label: LLMS.l10n.translate( '# of days' ),
                        min: 0,
                        type: 'number',
            },
                    {
                        attribute: 'date_available',
                        date_format: 'Y-m-d',
                        condition: function() {
                            if ( this.get_course() && 'yes' === this.get_course().get( 'lesson_drip' ) && this.get_course().get( 'drip_method' ) ) {
                                return false;
                            }

                            return ( 'date' === this.get( 'drip_method' ) );
                        },
                        id: 'date-available',
                        label: LLMS.l10n.translate( 'Date' ),
                        timepicker: 'false',
                        type: 'datepicker',
            },
                    {
                        attribute: 'time_available',
                        condition: function() {
                            if ( this.get_course() && 'yes' === this.get_course().get( 'lesson_drip' ) && this.get_course().get( 'drip_method' ) ) {
                                return false;
                            }

                            return ( 'date' === this.get( 'drip_method' ) );
                        },
                        datepicker: 'false',
                        date_format: 'h:i A',
                        id: 'time-available',
                        label: LLMS.l10n.translate( 'Time' ),
                        type: 'datepicker',
            },
                ],
            ],
        },

    } );

} );