includes/theme-support/class-llms-twenty-twenty-two.php
<?php
/**
* LLMS_Twenty_Twenty_Two class file
*
* @package LifterLMS/ThemeSupport/Classes
*
* @since 5.8.0
* @version 6.8.0
*/
defined( 'ABSPATH' ) || exit;
/**
* Theme Support: Twenty Twenty-Two.
*
* @since 5.8.0
*/
class LLMS_Twenty_Twenty_Two {
/**
* Static "constructor".
*
* @since 5.8.0
*
* @return void
*/
public static function init() {
// This theme doesn't have a sidebar.
remove_action( 'lifterlms_sidebar', 'lifterlms_get_sidebar', 10 );
// Handle content wrappers.
remove_action( 'lifterlms_before_main_content', 'lifterlms_output_content_wrapper', 10 );
remove_action( 'lifterlms_after_main_content', 'lifterlms_output_content_wrapper_end', 10 );
add_action( 'lifterlms_before_main_content', array( __CLASS__, 'handle_page_header_wrappers' ) );
// Modify catalog & checkout columns when the catalog page isn't full width.
add_filter( 'lifterlms_loop_columns', array( __CLASS__, 'modify_columns_count' ) );
add_filter( 'llms_checkout_columns', array( __CLASS__, 'modify_columns_count' ) );
// Use theme colors for various LifterLMS elements.
add_action( 'wp_enqueue_scripts', array( __CLASS__, 'add_inline_styles' ) );
add_action( 'enqueue_block_editor_assets', array( __CLASS__, 'add_inline_editor_styles' ) );
}
/**
* Enqueue inline styles for the block editor.
*
* @since 5.8.0
*
* @return void
*/
public static function add_inline_editor_styles() {
wp_add_inline_style( 'llms-blocks-editor', self::generate_inline_styles( 'editor' ) );
}
/**
* Enqueue inline styles on the frontend.
*
* @since 5.8.0
*
* @return void
*/
public static function add_inline_styles() {
wp_add_inline_style( 'twentytwentytwo-style', self::generate_inline_styles() );
}
/**
* Generate inline CSS for a given context.
*
* @since 5.8.0
* @since 5.9.0 Fixed stretched images in questions with pictures, and images in quiz/questions description.
* @since 6.8.0 Fixed label/text alignment by removing text’s margin top. Also, removed now outdated width rule.
*
* @param string|null $context Inline CSS context. Accepts "editor" to define styles loaded within the block editor or `null` for frontend styles.
* @return string
*/
protected static function generate_inline_styles( $context = null ) {
$selector_prefix = ( 'editor' === $context ) ? '.editor-styles-wrapper' : '';
$styles = array();
// Frontend only.
if ( is_null( $context ) ) {
// Fix alignment of content in an access plan, and navigation.
$styles[] = '.llms-access-plan-description ul, .llms-pagination ul { padding-left: 0; }';
// Fix form input padding.
$styles[] = '.llms-form-field input, .llms-form-field textarea, .llms-form-field select { padding: 6px 10px }';
// Question layout.
$styles[] = '.llms-question-wrapper ol.llms-question-choices li.llms-choice .llms-choice-text { margin-top: 0; }';
// Payment gateway stylized radio buttons.
$styles[] = LLMS_Theme_Support::get_css(
array( '.llms-form-field.type-radio:not(.is-group) input[type=radio]:checked+label:before' ),
array(
'background-image' => '-webkit-radial-gradient(center,ellipse,var(--wp--preset--color--primary) 0,var(--wp--preset--color--primary) 40%,#fafafa 45%)',
'background-image' => 'radial-gradient(ellipse at center,var(--wp--preset--color--primary) 0,var(--wp--preset--color--primary) 40%,#fafafa 45%)',
)
);
// Completed lesson check.
$styles[] = LLMS_Theme_Support::get_css(
array(
'.llms-lesson-preview.is-free .llms-lesson-complete',
'.llms-lesson-preview.is-complete .llms-lesson-complete',
),
array(
'color' => 'var(--wp--preset--color--primary)',
)
);
}
// Editor only.
if ( 'editor' === $context ) {
// Elements with a light background that become unreadable in darkmode in the block editor.
$styles[] = LLMS_Theme_Support::get_css(
array(
'.wp-block-llms-course-progress .progress-bar .progress--fill',
'.wp-block[data-type="llms/course-continue-button"] button',
'.wp-block[data-type="llms/lesson-progression"] button',
),
array(
'background-color' => 'var(--wp--preset--color--primary)',
'color' => 'var(--wp--preset--color--background)',
),
$selector_prefix
);
}
// Fix lesson preview titles.
$styles[] = '.llms-lesson-preview h6 { margin: 0 0 10px; }';
// Primary background color.
$styles[] = LLMS_Theme_Support::get_css(
LLMS_Theme_Support::get_selectors_primary_color_background(),
array(
'background-color' => 'var(--wp--preset--color--primary)',
'color' => 'var(--wp--preset--color--background)',
)
);
// Add border color to qualifying elements.
$styles[] = LLMS_Theme_Support::get_css(
LLMS_Theme_Support::get_selectors_primary_color_border(),
array(
'border-color' => 'var(--wp--preset--color--primary)',
)
);
// Quiz.
$styles[] = '.llms-quiz-ui { background: transparent; }';
// Fix questions with pictures, and images in quiz/questions description.
$styles[] = '.llms-quiz-wrapper img, .llms-quiz-question-wrapper img { max-width: 100%; height: auto; }';
// Fix anchor buttons.
$styles[] = 'a.llms-button-action, a.llms-button-danger, a.llms-button-primary, a.llms-button-secondary { display: inline-block; }';
return implode( "\r", $styles );
}
/**
* Handle wrapping the catalog page header in 2022 theme elements.
*
* This method determines if the catalog title are to be displayed and adds additional actions
* which will wrap the elements in 2022 theme elements depending on what is meant to be displayed.
*
* @since 5.8.0
*
* @return void
*/
public static function handle_page_header_wrappers() {
/** This filter is documented in templates/loop.php */
$show_title = apply_filters( 'lifterlms_show_page_title', true );
if ( $show_title ) {
add_action( 'lifterlms_before_main_content', array( __CLASS__, 'page_header_wrap' ), 11 );
add_action( 'lifterlms_archive_description', array( __CLASS__, 'page_header_wrap_end' ), 99999999 );
}
if ( $show_title && ! empty( lifterlms_get_archive_description() ) ) {
add_action( 'lifterlms_archive_description', array( __CLASS__, 'output_archive_description_wrapper' ), -1 );
add_action( 'lifterlms_archive_description', array( __CLASS__, 'output_archive_description_wrapper_end' ), 99999998 );
}
}
/**
* Modify the number of catalog & checkout columns.
*
* @since 5.8.0
*
* @param int $cols Number of columns.
* @return int
*/
public static function modify_columns_count( $cols ) {
return 1;
}
/**
* Output the catalog archive description 2022 theme wrapper opener.
*
* @since 5.8.0
*
* @return void
*/
public static function output_archive_description_wrapper() {
echo '<div class="archive-description">';
}
/**
* Output the catalog archive description 2022 theme wrapper closer.
*
* @since 5.8.0
*
* @return void
*/
public static function output_archive_description_wrapper_end() {
echo '</div><!-- .archive-description -->';
}
/**
* Output the catalog page header 2022 theme wrapper opener.
*
* @since 5.8.0
*
* @return void
*/
public static function page_header_wrap() {
echo '<header class="page-header alignwide">';
}
/**
* Output the catalog page header 2022 theme wrapper closer.
*
* @since 5.8.0
*
* @return void
*/
public static function page_header_wrap_end() {
echo '</header><!-- .page-header -->';
}
}
return LLMS_Twenty_Twenty_Two::init();