323 lines
14 KiB
PHP
Executable File
323 lines
14 KiB
PHP
Executable File
<?php
|
|
/**
|
|
* Kadence\GiveWP\Component class
|
|
*
|
|
* @package kadence
|
|
*/
|
|
|
|
namespace Kadence\Give;
|
|
|
|
use Kadence\Component_Interface;
|
|
use Kadence\Kadence_CSS;
|
|
use function Kadence\kadence;
|
|
use function Kadence\print_webfont_preload;
|
|
use function Kadence\get_webfont_url;
|
|
use function add_action;
|
|
use function have_posts;
|
|
use function the_post;
|
|
use function is_search;
|
|
use function get_template_part;
|
|
use function get_post_type;
|
|
|
|
/**
|
|
* Class for adding Woocommerce plugin support.
|
|
*/
|
|
class Component implements Component_Interface {
|
|
/**
|
|
* Associative array of Google Fonts to load.
|
|
*
|
|
* Do not access this property directly, instead use the `get_google_fonts()` method.
|
|
*
|
|
* @var array
|
|
*/
|
|
protected static $google_fonts = array();
|
|
/**
|
|
* Gets the unique identifier for the theme component.
|
|
*
|
|
* @return string Component slug.
|
|
*/
|
|
public function get_slug() : string {
|
|
return 'give';
|
|
}
|
|
|
|
/**
|
|
* Adds the action and filter hooks to integrate with WordPress.
|
|
*/
|
|
public function initialize() {
|
|
add_action( 'wp_print_styles', array( $this, 'override_iframe_template_styles' ), 10 );
|
|
add_action( 'wp_print_styles', array( $this, 'add_iframe_fonts' ), 20 );
|
|
add_action( 'give_default_wrapper_start', array( $this, 'output_content_wrapper' ) );
|
|
add_action( 'give_default_wrapper_end', array( $this, 'output_content_wrapper_end' ) );
|
|
add_action( 'wp_enqueue_scripts', array( $this, 'give_styles' ), 60 );
|
|
add_filter( 'post_class', array( $this, 'set_give_entry_class' ), 10, 3 );
|
|
add_action( 'give_before_single_form_summary', array( $this, 'output_inner_content_wrapper' ), 2 );
|
|
add_action( 'give_after_single_form_summary', array( $this, 'output_inner_content_wrapper_end' ) );
|
|
add_action( 'give_single_form_summary', array( $this, 'maybe_add_title' ), 1 );
|
|
remove_action( 'give_single_form_summary', 'give_template_single_title', 5 );
|
|
}
|
|
/**
|
|
* Adds theme output Wrapper.
|
|
*/
|
|
public function maybe_add_title() {
|
|
if ( function_exists( 'give_get_meta' ) ) {
|
|
$form_template = give_get_meta( get_the_ID(), '_give_form_template', true );
|
|
if ( ( ! $form_template || 'legacy' === $form_template ) && kadence()->show_in_content_title() ) {
|
|
get_template_part( 'template-parts/content/entry_header', get_post_type() );
|
|
}
|
|
} elseif ( kadence()->show_in_content_title() ) {
|
|
get_template_part( 'template-parts/content/entry_header', get_post_type() );
|
|
}
|
|
}
|
|
/**
|
|
* Adds entry class to loop items.
|
|
*
|
|
* @param array $classes the classes.
|
|
* @param string $class the class.
|
|
* @param int $post_id the post id.
|
|
*/
|
|
public function set_give_entry_class( $classes, $class, $post_id ) {
|
|
if ( is_singular() && in_array( 'type-give_forms', $classes, true ) ) {
|
|
$classes[] = 'entry';
|
|
$classes[] = 'content-bg';
|
|
$classes[] = 'single-entry';
|
|
}
|
|
return $classes;
|
|
}
|
|
/**
|
|
* Add some css styles for zoom_recipe_card
|
|
*/
|
|
public function give_styles() {
|
|
wp_enqueue_style( 'kadence-givewp', get_theme_file_uri( '/assets/css/givewp.min.css' ), array(), KADENCE_VERSION );
|
|
}
|
|
/**
|
|
* Adds theme output Wrapper.
|
|
*/
|
|
public function output_inner_content_wrapper() {
|
|
?>
|
|
<div class="entry-content-wrap">
|
|
<?php
|
|
}
|
|
/**
|
|
* Adds theme output Wrapper.
|
|
*/
|
|
public function output_inner_content_wrapper_end() {
|
|
?>
|
|
</div>
|
|
<?php
|
|
}
|
|
/**
|
|
* Adds theme output Wrapper.
|
|
*/
|
|
public function output_content_wrapper() {
|
|
kadence()->print_styles( 'kadence-content' );
|
|
/**
|
|
* Hook for Hero Section
|
|
*/
|
|
do_action( 'kadence_hero_header' );
|
|
?>
|
|
<div id="primary" class="content-area">
|
|
<div class="content-container site-container">
|
|
<main id="main" class="site-main" role="main">
|
|
<?php
|
|
/**
|
|
* Hook for anything before main content
|
|
*/
|
|
do_action( 'kadence_before_main_content' );
|
|
?>
|
|
<div class="content-wrap">
|
|
<?php
|
|
}
|
|
/**
|
|
* Adds theme end output Wrapper.
|
|
*/
|
|
public function output_content_wrapper_end() {
|
|
?>
|
|
</div>
|
|
<?php
|
|
/**
|
|
* Hook for anything after main content
|
|
*/
|
|
do_action( 'kadence_after_main_content' );
|
|
?>
|
|
</main><!-- #main -->
|
|
<?php
|
|
get_sidebar();
|
|
?>
|
|
</div>
|
|
</div><!-- #primary -->
|
|
<?php
|
|
}
|
|
/**
|
|
* Registers or enqueues google fonts.
|
|
*/
|
|
public function add_iframe_fonts() {
|
|
// Enqueue Google Fonts.
|
|
$google_fonts = apply_filters( 'kadence_theme_givewp_google_fonts_array', self::$google_fonts );
|
|
if ( empty( $google_fonts ) ) {
|
|
return '';
|
|
}
|
|
$link = '';
|
|
$sub_add = array();
|
|
$subsets = kadence()->option( 'google_subsets' );
|
|
foreach ( $google_fonts as $key => $gfont_values ) {
|
|
if ( ! empty( $link ) ) {
|
|
$link .= '%7C'; // Append a new font to the string.
|
|
}
|
|
$link .= $gfont_values['fontfamily'];
|
|
if ( ! empty( $gfont_values['fontvariants'] ) ) {
|
|
$link .= ':';
|
|
$link .= implode( ',', $gfont_values['fontvariants'] );
|
|
}
|
|
if ( ! empty( $gfont_values['fontsubsets'] ) && is_array( $gfont_values['fontsubsets'] ) ) {
|
|
foreach ( $gfont_values['fontsubsets'] as $subkey ) {
|
|
if ( ! empty( $subkey ) && ! isset( $sub_add[ $subkey ] ) ) {
|
|
$sub_add[] = $subkey;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
$args = array(
|
|
'family' => $link,
|
|
);
|
|
if ( ! empty( $subsets ) ) {
|
|
$available = array( 'latin-ext', 'cyrillic', 'cyrillic-ext', 'greek', 'greek-ext', 'vietnamese', 'arabic', 'khmer', 'chinese', 'chinese-simplified', 'tamil', 'bengali', 'devanagari', 'hebrew', 'korean', 'thai', 'telugu' );
|
|
foreach ( $subsets as $key => $enabled ) {
|
|
if ( $enabled && in_array( $key, $available, true ) ) {
|
|
if ( 'chinese' === $key ) {
|
|
$key = 'chinese-traditional';
|
|
}
|
|
if ( ! isset( $sub_add[ $key ] ) ) {
|
|
$sub_add[] = $key;
|
|
}
|
|
}
|
|
}
|
|
if ( $sub_add ) {
|
|
$args['subset'] = implode( ',', $sub_add );
|
|
}
|
|
}
|
|
if ( apply_filters( 'kadence_givewp_display_swap_google_fonts', true ) ) {
|
|
$args['display'] = 'swap';
|
|
}
|
|
$google_fonts_url = add_query_arg( apply_filters( 'kadence_theme_givewp_google_fonts_query_args', $args ), 'https://fonts.googleapis.com/css' );
|
|
if ( ! empty( $google_fonts_url ) ) {
|
|
if ( kadence()->option( 'load_fonts_local' ) ) {
|
|
if ( kadence()->option( 'preload_fonts_local' ) && apply_filters( 'kadence_local_fonts_preload', true ) ) {
|
|
print_webfont_preload( $google_fonts_url );
|
|
}
|
|
wp_enqueue_style(
|
|
'kadence-givewp-iframe-fonts',
|
|
get_webfont_url( $google_fonts_url ),
|
|
'give-sequoia-template-css',
|
|
KADENCE_VERSION
|
|
);
|
|
} else {
|
|
wp_enqueue_style( 'kadence-givewp-iframe-fonts', $google_fonts_url, 'give-sequoia-template-css', KADENCE_VERSION ); // phpcs:ignore WordPress.WP.EnqueuedResourceParameters.MissingVersion
|
|
}
|
|
}
|
|
}
|
|
/**
|
|
* Add basic theme styling to iframe.
|
|
*/
|
|
public function override_iframe_template_styles() {
|
|
$css = new Kadence_CSS();
|
|
$media_query = array();
|
|
$media_query['mobile'] = apply_filters( 'kadence_mobile_media_query', '(max-width: 767px)' );
|
|
$media_query['tablet'] = apply_filters( 'kadence_tablet_media_query', '(max-width: 1024px)' );
|
|
$media_query['desktop'] = apply_filters( 'kadence_desktop_media_query', '(min-width: 1025px)' );
|
|
// Globals.
|
|
$css->set_selector( ':root' );
|
|
$css->add_property( '--global-palette1', kadence()->palette_option( 'palette1' ) );
|
|
$css->add_property( '--global-palette2', kadence()->palette_option( 'palette2' ) );
|
|
$css->add_property( '--global-palette3', kadence()->palette_option( 'palette3' ) );
|
|
$css->add_property( '--global-palette4', kadence()->palette_option( 'palette4' ) );
|
|
$css->add_property( '--global-palette5', kadence()->palette_option( 'palette5' ) );
|
|
$css->add_property( '--global-palette6', kadence()->palette_option( 'palette6' ) );
|
|
$css->add_property( '--global-palette7', kadence()->palette_option( 'palette7' ) );
|
|
$css->add_property( '--global-palette8', kadence()->palette_option( 'palette8' ) );
|
|
$css->add_property( '--global-palette9', kadence()->palette_option( 'palette9' ) );
|
|
$css->add_property( '--global-palette-highlight', $css->render_color( kadence()->sub_option( 'link_color', 'highlight' ) ) );
|
|
$css->add_property( '--global-palette-highlight-alt', $css->render_color( kadence()->sub_option( 'link_color', 'highlight-alt' ) ) );
|
|
$css->add_property( '--global-palette-highlight-alt2', $css->render_color( kadence()->sub_option( 'link_color', 'highlight-alt2' ) ) );
|
|
$css->add_property( '--global-palette-btn-bg', $css->render_color( kadence()->sub_option( 'buttons_background', 'color' ) ) );
|
|
$css->add_property( '--global-palette-btn-bg-hover', $css->render_color( kadence()->sub_option( 'buttons_background', 'hover' ) ) );
|
|
$css->add_property( '--global-palette-btn', $css->render_color( kadence()->sub_option( 'buttons_color', 'color' ) ) );
|
|
$css->add_property( '--global-palette-btn-hover', $css->render_color( kadence()->sub_option( 'buttons_color', 'hover' ) ) );
|
|
$css->add_property( '--global-body-font-family', $css->render_font_family( kadence()->option( 'base_font' ), '' ) );
|
|
$css->add_property( '--global-heading-font-family', $css->render_font_family( kadence()->option( 'heading_font' ) ) );
|
|
$css->add_property( '--global-fallback-font', apply_filters( 'kadence_theme_global_typography_fallback', 'sans-serif' ) );
|
|
$css->add_property( '--global-display-fallback-font', apply_filters( 'kadence_theme_global_display_typography_fallback', 'sans-serif' ) );
|
|
|
|
$css->set_selector( 'body' );
|
|
$css->add_property( 'margin', '10px' );
|
|
$css->add_property( 'font-family', 'var( --global-body-font-family )' );
|
|
$css->add_property( 'color', 'var(--global-palette4 )' );
|
|
|
|
$css->set_selector( '.give-embed-form, .give-embed-receipt' );
|
|
$css->add_property( 'color', 'var(--global-palette5 )' );
|
|
$css->add_property( 'background-color', 'var(--global-palette9 )' );
|
|
$css->add_property( 'box-shadow', '0px 15px 25px -10px rgb(0 0 0 / 5%)' );
|
|
$css->add_property( 'border-radius', '.25rem' );
|
|
$css->add_property( 'border', '1px solid var( --global-palette7 )' );
|
|
|
|
$css->set_selector( 'body.give-form-templates .give-form-navigator' );
|
|
$css->add_property( 'border', '1px solid transparent' );
|
|
$css->add_property( 'background', 'var(--global-palette8 )' );
|
|
$css->set_selector( '.form-footer .secure-notice' );
|
|
$css->add_property( 'background', 'var(--global-palette8 )' );
|
|
$css->add_property( 'border-top', '1px solid var( --global-palette7 )' );
|
|
$css->add_property( 'color', 'var(--global-palette6 )' );
|
|
$css->set_selector( 'body.give-form-templates .give-form-navigator.nav-visible' );
|
|
$css->add_property( 'border', '1px solid var( --global-palette7 )' );
|
|
$css->set_selector( '.form-footer .navigator-tracker .step-tracker' );
|
|
$css->add_property( 'background', 'var(--global-palette7 )' );
|
|
$css->set_selector( '.form-footer .navigator-tracker .step-tracker.current' );
|
|
$css->add_property( 'background', 'var(--global-palette6 )' );
|
|
$css->set_selector( '.payment #give_purchase_form_wrap');
|
|
$css->add_property( 'background', 'var(--global-palette8 )' );
|
|
$css->set_selector(
|
|
'body.give-form-templates,
|
|
body.give-form-templates .give-btn,
|
|
body.give-form-templates .choose-amount .give-donation-amount .give-amount-top,
|
|
body.give-form-templates #give-recurring-form .form-row input[type=email],
|
|
body.give-form-templates #give-recurring-form .form-row input[type=password],
|
|
body.give-form-templates #give-recurring-form .form-row input[type=tel],
|
|
body.give-form-templates #give-recurring-form .form-row input[type=text],
|
|
body.give-form-templates #give-recurring-form .form-row input[type=url],
|
|
body.give-form-templates #give-recurring-form .form-row textarea, .give-input-field-wrapper,
|
|
body.give-form-templates .give-square-cc-fields,
|
|
body.give-form-templates .give-stripe-cc-field,
|
|
body.give-form-templates .give-stripe-single-cc-field-wrap,
|
|
body.give-form-templates form.give-form .form-row input[type=email],
|
|
body.give-form-templates form.give-form .form-row input[type=password],
|
|
body.give-form-templates form.give-form .form-row input[type=tel],
|
|
body.give-form-templates form.give-form .form-row input[type=text],
|
|
body.give-form-templates form.give-form .form-row input[type=url],
|
|
body.give-form-templates form.give-form .form-row textarea,
|
|
body.give-form-templates form[id*=give-form] .form-row input[type=email],
|
|
body.give-form-templates form[id*=give-form] .form-row input[type=email].required,
|
|
body.give-form-templates form[id*=give-form] .form-row input[type=password],
|
|
body.give-form-templates form[id*=give-form] .form-row input[type=password].required,
|
|
body.give-form-templates form[id*=give-form] .form-row input[type=tel],
|
|
body.give-form-templates form[id*=give-form] .form-row input[type=tel].required,
|
|
body.give-form-templates form[id*=give-form] .form-row input[type=text],
|
|
body.give-form-templates form[id*=give-form] .form-row input[type=text].required,
|
|
body.give-form-templates form[id*=give-form] .form-row input[type=url],
|
|
body.give-form-templates form[id*=give-form] .form-row input[type=url].required,
|
|
body.give-form-templates form[id*=give-form] .form-row textarea,
|
|
body.give-form-templates form[id*=give-form] .form-row textarea.required'
|
|
);
|
|
$css->add_property( 'font-family', 'var( --global-body-font-family )' );
|
|
$css->set_selector( '.give-stripe-becs-mandate-acceptance-text, .give-stripe-sepa-mandate-acceptance-text, p, .give-form-navigator>.title, .give-form-navigator>.back-btn,.payment .subheading' );
|
|
$css->add_property( 'color', 'var(--global-palette5 )' );
|
|
$css->set_selector( 'h1,h2,h3,h4,h5,h6, .payment .heading' );
|
|
$css->add_property( 'color', 'var(--global-palette3 )' );
|
|
$css->set_selector( '.advance-btn, .download-btn, .give-submit' );
|
|
$css->add_property( 'text-transform', 'uppercase' );
|
|
$css->add_property( 'font-weight', '600' );
|
|
$css->add_property( 'font-size', '16px' );
|
|
$css->add_property( 'padding', '14px 30px !important' );
|
|
self::$google_fonts = $css->fonts_output();
|
|
wp_add_inline_style( 'give-sequoia-template-css', $css->css_output() );
|
|
}
|
|
}
|