admin-modules.php 13.6 KB
<?php
namespace uncanny_learndash_toolkit;

/**
 * A variable with some data, for now it has:
 * - has_toolkit_pro:    Boolean to determinate if the user has the Pro version installed.
 *
 * @var Array
 */
$config = [
	'has_toolkit_pro' => ( defined( 'UNCANNY_TOOLKIT_PRO_VERSION' ) ) ? true : false,
	'get_toolkit_pro' => 'https://www.uncannyowl.com/downloads/uncanny-learndash-toolkit-pro/',
	'pro_name'        => __( 'Uncanny Toolkit Pro for LearnDash', 'uncanny-learndash-toolkit' ),
];

/**
 * Array that defines all the Toolkit Free and Pro modules
 * Each element will have:
 * - title:                The title of the module
 * - description:            The description of the module
 * - keywords:                A list of words separated by commas to use
 *                            when using the search algorithm
 * - is_active:            Boolean to determinate if the module is active
 * - version:                Boolean to determinate if this module is pro-only
 * - categories:            An array with the module categories
 * - dependencies:            An array with the dependencies of this module
 * - documentation:        The URL where users will be sent when they press on "Get more info"
 * - settings_id:            The ID of the modal box that loads the fields
 *
 *
 * Don't define these elements, we're going to define them later.
 * - can_use:                Boolean to define if the user can use or not this module.
 * - cant_use_notice:        The message the user will see if can't use the module.
 * - missing_dependencies:    An array with all the mising dependencies for this module.
 *
 * @var Array
 */

$modules = AdminMenu::$modules;

/**
 * Sort alphabetically
 */

$add_on_titles = array();

foreach ( $modules as $key => $row ) {
	$add_on_titles[ $key ] = $row['title'];
}

array_multisort( $add_on_titles, SORT_ASC, $modules );

/**
 * If Pro is disabled then push Pro modules to the bottom
 */

// Check if it doesn't have the pro version
if ( ! defined( 'UNCANNY_TOOLKIT_PRO_VERSION' ) ) {
	// Create arrays to separate free and pro modules
	$free_modules = [];
	$pro_modules  = [];

	// Iterate each module
	foreach ( $modules as $module_key => $module ) {
		// Check if it's a pro module
		if ( isset( $module['is_pro'] ) && $module['is_pro'] ) {
			// Add to the pro array
			$pro_modules[ $module_key ] = $module;
		} else {
			// Add to the free array
			$free_modules[ $module_key ] = $module;
		}
	}

	// Create array, inserting all the free modules first
	$modules = array_merge( $free_modules, $pro_modules );
}

/**
 * Determinate if each module can be used
 * we're going to check if the user has pro enabled and if it has the required dependencies
 */

?>

<script>
    <?php
    $js_modules = [];

    foreach ( $modules as $module ) {
        $js_modules[] = [
            'id'          => $module[ 'id' ],
            'title'       => $module[ 'title' ],
            'description' => $module[ 'description' ],
        ];
    }
    ?>
    var ultModules = <?php echo json_encode( $js_modules ); ?>;
</script>

<div class="container">

    <div class="ult">

        <div class="ult-directory">

            <div class="ult-directory-actions">

                <div class="ult-directory-filters">
                    <div class="ult-directory-filter ult-directory-filter--version">
                        <div class="ult-form-element">
                            <div class="ult-form-element__field">
                                <select name="version" data-name="version" class="ult-form-element__select">
                                    <option value="">
										<?php _e( 'All versions', 'uncanny-learndash-toolkit' ) ?>
                                    </option>
                                    <option value="free">
										<?php _e( 'Free only', 'uncanny-learndash-toolkit' ) ?>
                                    </option>
                                    <option value="pro">
										<?php _e( 'Pro only', 'uncanny-learndash-toolkit' ) ?>
                                    </option>
                                </select>
                            </div>
                        </div>
                    </div>
                    <div class="ult-directory-filter ult-directory-filter--categories">
                        <div class="ult-form-element">
                            <div class="ult-form-element__field">
                                <select name="category" data-name="category" class="ult-form-element__select">
                                    <option value="">
										<?php _e( 'All categories', 'uncanny-learndash-toolkit' ) ?>
                                    </option>
                                    <option value="learndash">
										<?php _e( 'LearnDash', 'uncanny-learndash-toolkit' ) ?>
                                    </option>
                                    <option value="wordpress">
										<?php _e( 'General WordPress', 'uncanny-learndash-toolkit' ) ?>
                                    </option>
                                </select>
                            </div>
                        </div>
                    </div>
                    <div class="ult-directory-filter ult-directory-filter--statuses">
                        <div class="ult-form-element">
                            <div class="ult-form-element__field">
                                <select name="status" data-name="status" class="ult-form-element__select">
                                    <option value="">
										<?php _e( 'All statuses', 'uncanny-learndash-toolkit' ) ?>
                                    </option>
                                    <option value="active">
										<?php _e( 'Active', 'uncanny-learndash-toolkit' ) ?>
                                    </option>
                                    <option value="inactive">
										<?php _e( 'Inactive', 'uncanny-learndash-toolkit' ) ?>
                                    </option>
                                </select>
                            </div>
                        </div>
                    </div>
                </div>

                <div class="ult-directory-search">
                    <div class="ult-form-element">
                        <div class="ult-form-element__field">
                            <input type="text" id="ult-directory-search-input"
                                   class="ult-directory-search-input ult-form-element__text"
                                   placeholder="<?php _e( 'Search modules by title, description or keywords', 'uncanny-learndash-toolkit' ) ?>">
                        </div>
                    </div>
                </div>

                <div class="ult-directory-layout">
                    <div id="ult-directory-layout-toggle">
                        <div class="ult-directory-layout-item" data-view="grid">
                            <span class="ult-icon ult-icon--th"></span>
                        </div>
                        <div class="ult-directory-layout-item" data-view="table">
                            <span class="ult-icon ult-icon--th-list"></span>
                        </div>
                    </div>
                </div>

            </div>

            <div class="ult-directory-modules">

				<?php
				foreach ( $modules as $module ) {

					$css_classes = [];

					if ( ! isset( $module['can_use'] ) || ! $module['can_use'] ) {
						$css_classes[] = 'ult-directory-module--cant-use';
					}

					if ( isset( $module['version'] ) && $module['version'] ) {
						$css_classes[] = 'ult-directory-module--is-pro';
					}

					?>

                    <div class="ult-directory-module <?php echo implode( ' ', $css_classes ); ?>"
                         data-id="<?php echo isset( $module['id'] ) ? $module['id'] : md5( time() ); ?>"
                         data-version="<?php echo isset( $module['version'] ) ? $module['version'] : 'free'; ?>"
                         data-status="<?php echo isset( $module['is_active'] ) && $module['is_active'] ? 'active' : 'inactive'; ?>"
                         data-category='<?php echo isset( $module['category'] ) ? json_encode( $module['category'] ) : json_encode( array() ); ?>'
                    >

                        <div class="ult-directory-module-content">
							<?php if ( ! empty( $module['cant_use_notice'] ) ) { ?>

                                <div class="ult-directory-module-notice">
                                    <div class="ult-directory-module-notice__icon">
                                        <span class="ult-icon ult-icon--lock-alt"></span> 
                                    </div>
                                    <div class="ult-directory-module-notice__text">
                                        <?php echo $module['cant_use_notice']; ?>
                                    </div>
                                </div>

							<?php } ?>

                            <div class="ult-directory-module-header">
                                <div class="ult-directory-module-header-left">
                                    <div class="ult-directory-module__title">
										<?php echo $module['title']; ?>
                                    </div>

									<?php if ( isset( $module['version'] ) && 'pro' === $module['version'] ) { ?>

                                        <?php

                                        // Get the link
                                        // Check if the module ID is defined
                                        if ( ! empty( $module[ 'utm_id' ] ) ){
                                            $get_toolkit_pro_link = Config::utm_parameters( $config[ 'get_toolkit_pro' ], 'modules', 'pro_badge_on_title-' . $module[ 'utm_id' ] );
                                        }
                                        else {
                                            $get_toolkit_pro_link = Config::utm_parameters( $config[ 'get_toolkit_pro' ], 'modules', 'pro_badge_on_title' );
                                        }

                                        ?>

                                        <a href="<?php echo $get_toolkit_pro_link; ?>" target="_blank"
                                           class="ult-directory-module__pro-label">
                                            <?php _e( 'Pro', 'uncanny-learndash-toolkit' ); ?>
                                        </a>

									<?php } ?>
                                </div>

								<?php if ( isset( $module['can_use'] ) && $module['can_use'] ) { ?>

                                    <div class="ult-directory-module__status">

                                        <div class="ult-form-element">
                                            <div class="ult-form-checkbox ult-form-checkbox--toggle ult-form-checkbox--toggle-gutenberg">
                                                <label class="ult-form-checkbox__container">
                                                    <input type="checkbox"
                                                           class="ult-directory-module__status-toggle ult-checkbox--hidden ult-checkbox--primary"
                                                           value="<?php echo $module['class_name']; ?>"
														<?php echo $module['is_active'] ? 'checked="checked"' : ''; ?>
                                                    />
                                                    <div class="ult-checkbox--show"></div>
                                                </label>
                                            </div>
                                        </div>
                                    </div>

								<?php } ?>
                            </div>

                            <div class="ult-directory-module__description">
								<?php echo $module['description']; ?>
                            </div>

                            <div class="ult-directory-module-actions">

								<?php if ( isset( $module['can_use'] ) && $module['can_use'] ) { ?>

									<?php if ( false !== $module['has_settings'] ) { ?>

                                        <div class="ult-directory-module-settings ult-directory-module-settings--modal ult-directory-module__btn ult-btn ult-btn--primary"
                                             data-settings="<?php echo $module['settings_id']; ?>">
											<?php _e( 'Settings', 'uncanny-learndash-toolkit' ); ?>
                                        </div>

									<?php } ?>

								<?php }

								// Check if it has a KB article
								if ( ! empty( $module['kb_link'] ) ) {

                                    // Get the link
                                    // Check if the module ID is defined
                                    if ( ! empty( $module[ 'utm_id' ] ) ){
                                        $module_kb_link = Config::utm_parameters( $module[ 'kb_link' ], 'modules', 'learn_more-' . $module[ 'utm_id' ] );
                                    }
                                    else {
                                        $module_kb_link = Config::utm_parameters( $module[ 'kb_link' ], 'modules', 'learn_more' );
                                    }

									// Add the link
									?>

                                    <a href="<?php echo $module_kb_link; ?>" target="_blank"
                                       class="ult-directory-module-settings ult-directory-module-settings--kb-link ult-directory-module__btn ult-btn ult-btn--secondary">
										<?php _e( 'Learn More', 'uncanny-learndash-toolkit' ); ?>
                                    </a>

								<?php } ?>

                            </div>
                        </div>

                    </div>

				<?php } ?>

            </div>

        </div>

    </div>