summaryrefslogtreecommitdiff
path: root/inc/compatibility/edd
diff options
context:
space:
mode:
Diffstat (limited to 'inc/compatibility/edd')
-rw-r--r--inc/compatibility/edd/class-astra-edd.php1087
-rw-r--r--inc/compatibility/edd/customizer/class-astra-customizer-register-edd-section.php67
-rw-r--r--inc/compatibility/edd/customizer/sections/class-astra-edd-container-configs.php64
-rw-r--r--inc/compatibility/edd/customizer/sections/class-astra-edd-sidebar-configs.php84
-rw-r--r--inc/compatibility/edd/customizer/sections/layout/class-astra-edd-archive-layout-configs.php214
-rw-r--r--inc/compatibility/edd/customizer/sections/layout/class-astra-edd-single-product-layout-configs.php57
-rw-r--r--inc/compatibility/edd/edd-common-functions.php324
7 files changed, 1897 insertions, 0 deletions
diff --git a/inc/compatibility/edd/class-astra-edd.php b/inc/compatibility/edd/class-astra-edd.php
new file mode 100644
index 0000000..657f3f6
--- /dev/null
+++ b/inc/compatibility/edd/class-astra-edd.php
@@ -0,0 +1,1087 @@
+<?php
+/**
+ * Easy Digital Downloads Compatibility File.
+ *
+ * @link https://easydigitaldownloads.com/
+ *
+ * @package Astra
+ */
+
+// If plugin - 'Easy_Digital_Downloads' not exist then return.
+if ( ! class_exists( 'Easy_Digital_Downloads' ) ) {
+ return;
+}
+
+/**
+ * Astra Easy Digital Downloads Compatibility
+ */
+if ( ! class_exists( 'Astra_Edd' ) ) :
+
+ /**
+ * Astra Easy Digital Downloads Compatibility
+ *
+ * @since 1.5.5
+ */
+ class Astra_Edd {
+
+ /**
+ * Member Variable
+ *
+ * @var object instance
+ */
+ private static $instance;
+
+ /**
+ * Initiator
+ */
+ public static function get_instance() {
+ if ( ! isset( self::$instance ) ) {
+ self::$instance = new self();
+ }
+ return self::$instance;
+ }
+
+ /**
+ * Constructor
+ */
+ public function __construct() {
+
+ require_once ASTRA_THEME_DIR . 'inc/compatibility/edd/edd-common-functions.php';// phpcs:ignore WPThemeReview.CoreFunctionality.FileInclude.FileIncludeFound
+
+ add_filter( 'astra_theme_defaults', array( $this, 'theme_defaults' ) );
+ // Register Store Sidebars.
+ add_action( 'widgets_init', array( $this, 'store_widgets_init' ), 15 );
+ // Replace Edd Store Sidebars.
+ add_filter( 'astra_get_sidebar', array( $this, 'replace_store_sidebar' ) );
+ // Edd Sidebar Layout.
+ add_filter( 'astra_page_layout', array( $this, 'store_sidebar_layout' ) );
+ // Edd Content Layout.
+ add_filter( 'astra_get_content_layout', array( $this, 'store_content_layout' ) );
+
+ add_filter( 'body_class', array( $this, 'edd_products_item_class' ) );
+ add_filter( 'post_class', array( $this, 'edd_single_product_class' ) );
+ add_filter( 'post_class', array( $this, 'render_post_class' ), 99 );
+
+ add_action( 'customize_register', array( $this, 'customize_register' ), 2 );
+
+ add_filter( 'astra_theme_assets', array( $this, 'add_styles' ) );
+ add_filter( 'wp_enqueue_scripts', array( $this, 'add_inline_scripts' ) );
+ add_filter( 'astra_dynamic_theme_css', array( $this, 'add_inline_styles' ) );
+
+ add_action( 'wp', array( $this, 'edd_initialization' ) );
+ add_action( 'init', array( $this, 'edd_set_defaults_initialization' ) );
+
+ // Add Cart option in dropdown.
+ add_filter( 'astra_header_section_elements', array( $this, 'header_section_elements' ) );
+
+ // Add Cart icon in Menu.
+ add_filter( 'astra_get_dynamic_header_content', array( $this, 'astra_header_cart' ), 10, 3 );
+
+ add_filter( 'astra_single_post_navigation', array( $this, 'edd_single_post_navigation' ) );
+
+ // Header Cart Icon.
+ add_action( 'astra_edd_header_cart_icons_before', array( $this, 'header_cart_icon_markup' ) );
+ add_filter( 'astra_edd_cart_in_menu_class', array( $this, 'header_cart_icon_class' ), 99 );
+
+ }
+
+ /**
+ * Header Cart Extra Icons markup
+ *
+ * @return void;
+ */
+ public function header_cart_icon_markup() {
+
+ if ( false === Astra_Builder_Helper::$is_header_footer_builder_active && ! defined( 'ASTRA_EXT_VER' ) ) {
+ return;
+ }
+
+ $icon = astra_get_option( 'edd-header-cart-icon' );
+ $cart_total_display = astra_get_option( 'edd-header-cart-total-display' );
+ $cart_count_display = apply_filters( 'astra_edd_header_cart_count', true );
+ $cart_title_display = astra_get_option( 'edd-header-cart-title-display' );
+ $cart_title = apply_filters( 'astra_header_cart_title', __( 'Cart', 'astra' ) );
+
+ $cart_title_markup = '<span class="ast-edd-header-cart-title">' . esc_html( $cart_title ) . '</span>';
+
+ $cart_total_markup = '<span class="ast-edd-header-cart-total">' . esc_html( edd_currency_filter( edd_format_amount( edd_get_cart_total() ) ) ) . '</span>';
+
+ // Cart Title & Cart Cart total markup.
+ $cart_info_markup = sprintf(
+ '<span class="ast-edd-header-cart-info-wrap">
+ %1$s
+ %2$s
+ %3$s
+ </span>',
+ ( $cart_title_display ) ? $cart_title_markup : '',
+ ( $cart_total_display && $cart_title_display ) ? '/' : '',
+ ( $cart_total_display ) ? $cart_total_markup : ''
+ );
+
+ $cart_items = count( edd_get_cart_contents() );
+ $cart_contents_count = $cart_items;
+
+ $cart_icon = sprintf(
+ '<span class="astra-icon ast-icon-shopping-%1$s %2$s"
+ %3$s
+ >%4$s</span>',
+ ( $icon ) ? $icon : '',
+ ( $cart_count_display ) ? '' : 'no-cart-total',
+ ( $cart_count_display ) ? 'data-cart-total="' . $cart_contents_count . '"' : '',
+ ( $icon ) ? ( ( false !== Astra_Icons::is_svg_icons() ) ? Astra_Icons::get_icons( $icon ) : '' ) : ''
+ );
+
+ // Theme's default icon with cart title and cart total.
+ if ( 'default' == $icon || ! defined( 'ASTRA_EXT_VER' ) || ( defined( 'ASTRA_EXT_VER' ) && ! Astra_Ext_Extension::is_active( 'edd' ) ) ) {
+ // Cart Total or Cart Title enable then only add markup.
+ if ( $cart_title_display || $cart_total_display ) {
+ echo $cart_info_markup; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
+ }
+ } else {
+
+ // Remove Default cart icon added by theme.
+ add_filter( 'astra_edd_default_header_cart_icon', '__return_false' );
+
+ /* translators: 1: Cart Title Markup, 2: Cart Icon Markup */
+ printf(
+ '<div class="ast-addon-cart-wrap">
+ %1$s
+ %2$s
+ </div>',
+ ( $cart_title_display || $cart_total_display ) ? $cart_info_markup : '', // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
+ ( $cart_icon ) ? $cart_icon : '' // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
+ );
+ }
+ }
+
+ /**
+ * Header Cart Icon Class
+ *
+ * @param array $classes Default argument array.
+ *
+ * @return array;
+ */
+ public function header_cart_icon_class( $classes ) {
+
+ if ( false === Astra_Builder_Helper::$is_header_footer_builder_active && ! defined( 'ASTRA_EXT_VER' ) ) {
+ return;
+ }
+
+ $header_cart_icon_style = astra_get_option( 'edd-header-cart-icon-style' );
+
+ $classes[] = 'ast-edd-menu-cart-' . $header_cart_icon_style;
+ $header_cart_icon_has_color = astra_get_option( 'edd-header-cart-icon-color' );
+ if ( ! empty( $header_cart_icon_has_color ) && ( 'none' !== $header_cart_icon_style ) ) {
+ $classes[] = 'ast-menu-cart-has-color';
+ }
+
+ return $classes;
+ }
+
+ /**
+ * Disable EDD style only for the first time
+ *
+ * @return void
+ */
+ public function edd_set_defaults_initialization() {
+
+ $astra_theme_options = get_option( 'astra-settings' );
+ $edd_settings = get_option( 'edd_settings' );
+
+ // Set flag to set the EDD style disable only once for the very first time.
+ if ( ! isset( $astra_theme_options['ast-edd-disable-styles'] ) ) {
+ $astra_theme_options['ast-edd-disable-styles'] = true;
+ $edd_settings['disable_styles'] = true;
+ update_option( 'astra-settings', $astra_theme_options );
+ update_option( 'edd_settings', $edd_settings );
+ }
+
+ }
+
+ /**
+ * Single Product Navigation
+ *
+ * @param array $args single products navigation arguments.
+ *
+ * @return array $args single products navigation arguments.
+ */
+ public function edd_single_post_navigation( $args ) {
+ $is_edd_single_product_page = astra_is_edd_single_product_page();
+ $disable_single_product_navigation = astra_get_option( 'disable-edd-single-product-nav' );
+ if ( $is_edd_single_product_page && ! $disable_single_product_navigation ) {
+ $next_post = get_next_post();
+ $prev_post = get_previous_post();
+
+ $next_text = false;
+ if ( $next_post ) {
+ $next_text = sprintf(
+ '%s <span class="ast-right-arrow">&rarr;</span>',
+ $next_post->post_title
+ );
+ }
+
+ $prev_text = false;
+ if ( $prev_post ) {
+ $prev_text = sprintf(
+ '<span class="ast-left-arrow">&larr;</span> %s',
+ $prev_post->post_title
+ );
+ }
+
+ $args['prev_text'] = $prev_text;
+ $args['next_text'] = $next_text;
+ } elseif ( $is_edd_single_product_page && $disable_single_product_navigation ) {
+ $args['prev_text'] = false;
+ $args['next_text'] = false;
+ }
+
+ return $args;
+ }
+
+ /**
+ * EDD Initialization
+ *
+ * @return void
+ */
+ public function edd_initialization() {
+ $is_edd_archive_page = astra_is_edd_archive_page();
+ $is_edd_single_product_page = astra_is_edd_single_product_page();
+
+ if ( $is_edd_archive_page ) {
+ add_action( 'astra_template_parts_content', array( $this, 'edd_content_loop' ) );
+ remove_action( 'astra_template_parts_content', array( Astra_Loop::get_instance(), 'template_parts_default' ) );
+
+ // Add edd wrapper.
+ add_action( 'astra_template_parts_content_top', array( $this, 'astra_edd_templat_part_wrap_open' ), 25 );
+ add_action( 'astra_template_parts_content_bottom', array( $this, 'astra_edd_templat_part_wrap_close' ), 5 );
+
+ // Remove closing and ending div 'ast-row'.
+ remove_action( 'astra_template_parts_content_top', array( Astra_Loop::get_instance(), 'astra_templat_part_wrap_open' ), 25 );
+ remove_action( 'astra_template_parts_content_bottom', array( Astra_Loop::get_instance(), 'astra_templat_part_wrap_close' ), 5 );
+ }
+ if ( $is_edd_single_product_page ) {
+ remove_action( 'astra_template_parts_content', array( Astra_Loop::get_instance(), 'template_parts_post' ) );
+
+ add_action( 'astra_template_parts_content', array( $this, 'edd_single_template' ) );
+
+ }
+ }
+
+
+ /**
+ * Add wrapper for edd archive pages
+ *
+ * @return void
+ */
+ public function astra_edd_templat_part_wrap_open() {
+ ?>
+ <div class="ast-edd-container">
+ <?php
+ }
+
+ /**
+ * Add end of wrapper for edd archive pages
+ */
+ public function astra_edd_templat_part_wrap_close() {
+ ?>
+ </div> <!-- .ast-edd-container -->
+ <?php
+ }
+
+ /**
+ * Edd Single Product template
+ */
+ public function edd_single_template() {
+
+ astra_entry_before();
+ ?>
+
+ <div <?php post_class(); ?>>
+
+ <?php astra_entry_top(); ?>
+
+ <?php astra_entry_content_single(); ?>
+
+ <?php astra_entry_bottom(); ?>
+
+ </div><!-- #post-## -->
+
+ <?php
+ astra_entry_after();
+ }
+
+ /**
+ * Add Cart icon markup
+ *
+ * @param Array $options header options array.
+ *
+ * @return Array header options array.
+ * @since 1.5.5
+ */
+ public function header_section_elements( $options ) {
+
+ $options['edd'] = __( 'Easy Digital Downloads', 'astra' );
+
+ return $options;
+ }
+
+ /**
+ * Add wrapper to the edd archive content template
+ *
+ * @return void
+ */
+ public function edd_content_loop() {
+ ?>
+ <div <?php post_class(); ?>>
+ <?php
+ /**
+ * Edd Archive Page Product Content Sorting
+ */
+ do_action( 'astra_edd_archive_product_content' );
+ ?>
+ </div>
+ <?php
+ }
+
+
+
+ /**
+ * Remove theme post's default classes when EDD archive.
+ *
+ * @param array $classes Post Classes.
+ * @return array
+ * @since 1.5.5
+ */
+ public function render_post_class( $classes ) {
+ $post_class = array( 'ast-edd-archive-article' );
+ $result = array_intersect( $classes, $post_class );
+
+ if ( count( $result ) > 0 ) {
+ $classes = array_diff(
+ $classes,
+ array(
+ // Astra common grid.
+ 'ast-col-sm-12',
+ 'ast-col-md-8',
+ 'ast-col-md-6',
+ 'ast-col-md-12',
+
+ // Astra Blog / Single Post.
+ 'ast-article-post',
+ 'ast-article-single',
+ 'ast-separate-posts',
+ 'remove-featured-img-padding',
+ 'ast-featured-post',
+ )
+ );
+ }
+ return $classes;
+ }
+
+ /**
+ * Add Cart icon markup
+ *
+ * @param String $output Markup.
+ * @param String $section Section name.
+ * @param String $section_type Section selected option.
+ * @return Markup String.
+ *
+ * @since 1.5.5
+ */
+ public function astra_header_cart( $output, $section, $section_type ) {
+
+ if ( 'edd' === $section_type && apply_filters( 'astra_edd_header_cart_icon', true ) ) {
+
+ $output = $this->edd_mini_cart_markup();
+ }
+
+ return $output;
+ }
+
+ /**
+ * Easy Digital DOwnloads mini cart markup markup
+ *
+ * @since 1.5.5
+ * @return html
+ */
+ public function edd_mini_cart_markup() {
+ $class = '';
+ if ( edd_is_checkout() ) {
+ $class = 'current-menu-item';
+ }
+
+ $cart_menu_classes = apply_filters( 'astra_edd_cart_in_menu_class', array( 'ast-menu-cart-with-border' ) );
+
+ ob_start();
+ if ( is_customize_preview() && ( true === Astra_Builder_Helper::$is_header_footer_builder_active ) ) {
+ Astra_Builder_UI_Controller::render_customizer_edit_button();
+ }
+ ?>
+ <div class="ast-edd-site-header-cart <?php echo esc_attr( implode( ' ', $cart_menu_classes ) ); ?>">
+ <div class="ast-edd-site-header-cart-wrap <?php echo esc_attr( $class ); ?>">
+ <?php $this->astra_get_edd_cart(); ?>
+ </div>
+ <?php if ( ! edd_is_checkout() ) { ?>
+ <div class="ast-edd-site-header-cart-widget">
+ <?php
+ the_widget( 'edd_cart_widget', 'title=' );
+ ?>
+ </div>
+ <?php } ?>
+ </div>
+ <?php
+ return ob_get_clean();
+ }
+
+ /**
+ * Cart Link
+ * Displayed a link to the cart including the number of items present and the cart total
+ *
+ * @return void
+ * @since 1.5.5
+ */
+ public function astra_get_edd_cart() {
+
+ $view_shopping_cart = apply_filters( 'astra_edd_view_shopping_cart_title', __( 'View your shopping cart', 'astra' ) );
+ $edd_cart_link = apply_filters( 'astra_edd_cart_link', edd_get_checkout_uri() );
+
+ if ( is_customize_preview() ) {
+ $edd_cart_link = '#';
+ }
+ ?>
+ <a class="ast-edd-cart-container" href="<?php echo esc_url( $edd_cart_link ); ?>" title="<?php echo esc_attr( $view_shopping_cart ); ?>">
+
+ <?php
+ do_action( 'astra_edd_header_cart_icons_before' );
+
+ if ( apply_filters( 'astra_edd_default_header_cart_icon', true ) ) {
+ ?>
+ <div class="ast-edd-cart-menu-wrap">
+ <span class="count">
+ <?php
+ if ( apply_filters( 'astra_edd_header_cart_total', true ) ) {
+ $cart_items = count( edd_get_cart_contents() );
+ echo esc_html( $cart_items );
+ }
+ ?>
+ </span>
+ </div>
+ <?php
+ }
+
+ do_action( 'astra_edd_header_cart_icons_after' );
+
+ ?>
+ </a>
+ <?php
+ }
+
+ /**
+ * Add assets in theme
+ *
+ * @param array $assets list of theme assets (JS & CSS).
+ * @return array List of updated assets.
+ * @since 1.5.5
+ */
+ public function add_styles( $assets ) {
+ $assets['css']['astra-edd'] = Astra_Builder_Helper::apply_flex_based_css() ? 'compatibility/edd-grid' : 'compatibility/edd';
+ return $assets;
+ }
+
+ /**
+ * Add inline style
+ *
+ * @since 1.5.5
+ */
+ public function add_inline_scripts() {
+
+ $is_site_rtl = is_rtl();
+
+ if ( ! Astra_Builder_Helper::apply_flex_based_css() ) {
+ $max_tablet_edd_css = array(
+ '.tablet-columns-1 .ast-edd-archive-article' => array(
+ 'width' => '100%',
+ ),
+ '.tablet-columns-2 .ast-edd-archive-article' => array(
+ 'width' => '47.6%',
+ 'width' => 'calc(50% - 10px)',
+ ),
+ '.tablet-columns-3 .ast-edd-archive-article, .edd_downloads_list[class*="edd_download_columns_"] .edd_download' => array(
+ 'width' => '30.2%',
+ 'width' => 'calc(33.33% - 14px)',
+ ),
+ '.tablet-columns-4 .ast-edd-archive-article' => array(
+ 'width' => '21.5%',
+ 'width' => 'calc(25% - 15px)',
+ ),
+ '.tablet-columns-5 .ast-edd-archive-article' => array(
+ 'width' => '16.2%',
+ 'width' => 'calc(20% - 16px)',
+ ),
+ '.tablet-columns-6 .ast-edd-archive-article' => array(
+ 'width' => '12.7%',
+ 'width' => 'calc(16.66% - 16.66px)',
+ ),
+ );
+ } else {
+ $max_tablet_edd_css = array(
+ '.tablet-columns-1 .ast-edd-container' => array(
+ 'grid-template-columns' => 'repeat(1, 1fr)',
+ ),
+ '.tablet-columns-2 .ast-edd-container' => array(
+ 'grid-template-columns' => 'repeat(2, 1fr)',
+ ),
+ '.tablet-columns-3 .ast-edd-container, .edd_downloads_list[class*="edd_download_columns_"] .edd_download' => array(
+ 'grid-template-columns' => 'repeat(3, 1fr)',
+ ),
+ '.tablet-columns-4 .ast-edd-container' => array(
+ 'grid-template-columns' => 'repeat(4, 1fr)',
+ ),
+ '.tablet-columns-5 .ast-edd-container' => array(
+ 'grid-template-columns' => 'repeat(5, 1fr)',
+ ),
+ '.tablet-columns-6 .ast-edd-container' => array(
+ 'grid-template-columns' => 'repeat(6, 1fr)',
+ ),
+ );
+ }
+
+ /* Parse CSS from array() -> max-width: (tablet-breakpoint) px & min-width: (mobile-breakpoint + 1) px */
+ $edd_css_output = astra_parse_css( $max_tablet_edd_css, astra_get_mobile_breakpoint( '', 1 ), astra_get_tablet_breakpoint() );
+
+ if ( ! Astra_Builder_Helper::apply_flex_based_css() ) {
+ if ( $is_site_rtl ) {
+ $max_tablet_edd_lang_direction_css = array(
+ '[class*="columns-"] .ast-edd-archive-article:nth-child(n)' => array(
+ 'margin-left' => '20px',
+ 'clear' => 'none',
+ ),
+ '.tablet-columns-2 .ast-edd-archive-article:nth-child(2n), .tablet-columns-3 .ast-edd-archive-article:nth-child(3n), .tablet-columns-4 .ast-edd-archive-article:nth-child(4n), .tablet-columns-5 .ast-edd-archive-article:nth-child(5n), .tablet-columns-6 .ast-edd-archive-article:nth-child(6n), .edd_downloads_list[class*="edd_download_columns_"] .edd_download:nth-child(3n)' => array(
+ 'margin-left' => '0',
+ 'clear' => 'left',
+ ),
+ '.tablet-columns-2 .ast-edd-archive-article:nth-child(2n+1), .tablet-columns-3 .ast-edd-archive-article:nth-child(3n+1), .tablet-columns-4 .ast-edd-archive-article:nth-child(4n+1), .tablet-columns-5 .ast-edd-archive-article:nth-child(5n+1), .tablet-columns-6 .ast-edd-archive-article:nth-child(6n+1), .edd_downloads_list[class*="edd_download_columns_"] .edd_download:nth-child(3n+1)' => array(
+ 'clear' => 'right',
+ ),
+ );
+ } else {
+ $max_tablet_edd_lang_direction_css = array(
+ '[class*="columns-"] .ast-edd-archive-article:nth-child(n)' => array(
+ 'margin-right' => '20px',
+ 'clear' => 'none',
+ ),
+ '.tablet-columns-2 .ast-edd-archive-article:nth-child(2n), .tablet-columns-3 .ast-edd-archive-article:nth-child(3n), .tablet-columns-4 .ast-edd-archive-article:nth-child(4n), .tablet-columns-5 .ast-edd-archive-article:nth-child(5n), .tablet-columns-6 .ast-edd-archive-article:nth-child(6n), .edd_downloads_list[class*="edd_download_columns_"] .edd_download:nth-child(3n)' => array(
+ 'margin-right' => '0',
+ 'clear' => 'right',
+ ),
+ '.tablet-columns-2 .ast-edd-archive-article:nth-child(2n+1), .tablet-columns-3 .ast-edd-archive-article:nth-child(3n+1), .tablet-columns-4 .ast-edd-archive-article:nth-child(4n+1), .tablet-columns-5 .ast-edd-archive-article:nth-child(5n+1), .tablet-columns-6 .ast-edd-archive-article:nth-child(6n+1), .edd_downloads_list[class*="edd_download_columns_"] .edd_download:nth-child(3n+1)' => array(
+ 'clear' => 'left',
+ ),
+ );
+ }
+ /* Parse CSS from array() -> max-width: (tablet-breakpoint) px & min-width: (mobile-breakpoint + 1) px */
+ $edd_css_output .= astra_parse_css( $max_tablet_edd_lang_direction_css, astra_get_mobile_breakpoint( '', 1 ), astra_get_tablet_breakpoint() );
+ }
+
+ if ( ! Astra_Builder_Helper::apply_flex_based_css() ) {
+ $mobile_edd_css = array(
+ '.mobile-columns-1 .ast-edd-archive-article' => array(
+ 'width' => '100%',
+ ),
+ '.mobile-columns-3 .ast-edd-archive-article' => array(
+ 'width' => '28.2%',
+ 'width' => 'calc(33.33% - 14px)',
+ ),
+ '.mobile-columns-4 .ast-edd-archive-article' => array(
+ 'width' => '19%',
+ 'width' => 'calc(25% - 15px)',
+ ),
+ '.mobile-columns-5 .ast-edd-archive-article' => array(
+ 'width' => '13%',
+ 'width' => 'calc(20% - 16px)',
+ ),
+ '.mobile-columns-6 .ast-edd-archive-article' => array(
+ 'width' => '10.2%',
+ 'width' => 'calc(16.66% - 16.66px)',
+ ),
+ '.edd_downloads_list[class*="edd_download_columns_"] .edd_download, .edd_downloads_list[class*="edd_download_columns_"] .edd_download:nth-child(2n+1), .mobile-columns-2 .ast-edd-archive-article' => array(
+ 'width' => '46.1%',
+ 'width' => 'calc(50% - 10px)',
+ ),
+ );
+ } else {
+ $mobile_edd_css = array(
+ '.mobile-columns-1 .ast-edd-container' => array(
+ 'grid-template-columns' => 'repeat(1, 1fr)',
+ ),
+ '.mobile-columns-3 .ast-edd-container' => array(
+ 'grid-template-columns' => 'repeat(3, 1fr)',
+ ),
+ '.mobile-columns-4 .ast-edd-container' => array(
+ 'grid-template-columns' => 'repeat(4, 1fr)',
+ ),
+ '.mobile-columns-5 .ast-edd-container' => array(
+ 'grid-template-columns' => 'repeat(5, 1fr)',
+ ),
+ '.mobile-columns-6 .ast-edd-container' => array(
+ 'grid-template-columns' => 'repeat(6, 1fr)',
+ ),
+ '.edd_downloads_list[class*="edd_download_columns_"] .edd_download, .edd_downloads_list[class*="edd_download_columns_"] .edd_download:nth-child(2n+1), .mobile-columns-2 .ast-edd-container' => array(
+ 'grid-template-columns' => 'repeat(2, 1fr)',
+ ),
+ );
+ }
+
+ /* Parse CSS from array() -> max-width: (mobile-breakpoint) px */
+ $edd_css_output .= astra_parse_css( $mobile_edd_css, '', astra_get_mobile_breakpoint() );
+
+ if ( $is_site_rtl ) {
+ $mobile_edd_lang_direction_css = array(
+ '[class*="columns-"] .ast-edd-archive-article:nth-child(n)' => array(
+ 'margin-left' => '20px',
+ 'clear' => 'none',
+ ),
+ '.mobile-columns-1 .ast-edd-archive-article:nth-child(n)' => array(
+ 'margin-left' => '0',
+ ),
+ '.edd_downloads_list[class*="edd_download_columns_"] .edd_download:nth-child(2n), .mobile-columns-2 .ast-edd-archive-article:nth-child(2n), .mobile-columns-3 .ast-edd-archive-article:nth-child(3n), .mobile-columns-4 .ast-edd-archive-article:nth-child(4n), .mobile-columns-5 .ast-edd-archive-article:nth-child(5n), .mobile-columns-6 .ast-edd-archive-article:nth-child(6n)' => array(
+ 'margin-left' => '0',
+ 'clear' => 'left',
+ ),
+ '.mobile-columns-2 .ast-edd-archive-article:nth-child(2n+1), .mobile-columns-3 .ast-edd-archive-article:nth-child(3n+1), .mobile-columns-4 .ast-edd-archive-article:nth-child(4n+1), .mobile-columns-5 .ast-edd-archive-article:nth-child(5n+1), .mobile-columns-6 .ast-edd-archive-article:nth-child(6n+1)' => array(
+ 'clear' => 'right',
+ ),
+ );
+ } else {
+ $mobile_edd_lang_direction_css = array(
+ '[class*="columns-"] .ast-edd-archive-article:nth-child(n)' => array(
+ 'margin-right' => '20px',
+ 'clear' => 'none',
+ ),
+ '.mobile-columns-1 .ast-edd-archive-article:nth-child(n)' => array(
+ 'margin-right' => '0',
+ ),
+ '.edd_downloads_list[class*="edd_download_columns_"] .edd_download:nth-child(2n), .mobile-columns-2 .ast-edd-archive-article:nth-child(2n), .mobile-columns-3 .ast-edd-archive-article:nth-child(3n), .mobile-columns-4 .ast-edd-archive-article:nth-child(4n), .mobile-columns-5 .ast-edd-archive-article:nth-child(5n), .mobile-columns-6 .ast-edd-archive-article:nth-child(6n)' => array(
+ 'margin-right' => '0',
+ 'clear' => 'right',
+ ),
+ '.mobile-columns-2 .ast-edd-archive-article:nth-child(2n+1), .mobile-columns-3 .ast-edd-archive-article:nth-child(3n+1), .mobile-columns-4 .ast-edd-archive-article:nth-child(4n+1), .mobile-columns-5 .ast-edd-archive-article:nth-child(5n+1), .mobile-columns-6 .ast-edd-archive-article:nth-child(6n+1)' => array(
+ 'clear' => 'left',
+ ),
+ );
+ }
+
+ /* Parse CSS from array() -> max-width: (mobile-breakpoint) px */
+ $edd_css_output .= astra_parse_css( $mobile_edd_lang_direction_css, '', astra_get_mobile_breakpoint() );
+
+ wp_add_inline_style( 'astra-edd', apply_filters( 'astra_theme_edd_dynamic_css', $edd_css_output ) );
+
+ // Inline js for EDD Cart updates.
+ wp_add_inline_script(
+ 'edd-ajax',
+ "jQuery( document ).ready( function($) {
+ /**
+ * Astra - Easy Digital Downloads Cart Quantity & Total Amount
+ */
+ var cartQuantity = jQuery('.ast-edd-site-header-cart-wrap .count'),
+ iconQuantity = jQuery('.ast-edd-site-header-cart-wrap .astra-icon'),
+ cartTotalAmount = jQuery('.ast-edd-site-header-cart-wrap .ast-edd-header-cart-total');
+
+ jQuery('body').on('edd_cart_item_added', function( event, response ) {
+ cartQuantity.html( response.cart_quantity );
+ iconQuantity.attr('data-cart-total', response.cart_quantity );
+ cartTotalAmount.html( response.total );
+ });
+
+ jQuery('body').on('edd_cart_item_removed', function( event, response ) {
+ cartQuantity.html( response.cart_quantity );
+ iconQuantity.attr('data-cart-total', response.cart_quantity );
+ cartTotalAmount.html( response.total );
+ });
+ });"
+ );
+ }
+
+ /**
+ * Dynamic CSS
+ *
+ * @param string $dynamic_css Astra Dynamic CSS.
+ * @param string $dynamic_css_filtered Astra Dynamic CSS Filters.
+ * @since 1.5.5
+ * @return string $dynamic_css
+ */
+ public function add_inline_styles( $dynamic_css, $dynamic_css_filtered = '' ) {
+
+ /**
+ * - Variable Declaration
+ */
+
+ $site_content_width = astra_get_option( 'site-content-width', 1200 );
+ $edd_archive_width = astra_get_option( 'edd-archive-width' );
+ $edd_archive_max_width = astra_get_option( 'edd-archive-max-width' );
+ $css_output = '';
+
+ $theme_color = astra_get_option( 'theme-color' );
+ $link_color = astra_get_option( 'link-color', $theme_color );
+ $text_color = astra_get_option( 'text-color' );
+ $link_h_color = astra_get_option( 'link-h-color' );
+
+ $btn_color = astra_get_option( 'button-color' );
+ if ( empty( $btn_color ) ) {
+ $btn_color = astra_get_foreground_color( $theme_color );
+ }
+
+ $btn_h_color = astra_get_option( 'button-h-color' );
+ if ( empty( $btn_h_color ) ) {
+ $btn_h_color = astra_get_foreground_color( $link_h_color );
+ }
+ $btn_bg_h_color = astra_get_option( 'button-bg-h-color', $link_h_color );
+
+ $btn_border_radius = astra_get_option( 'button-radius' );
+
+ $cart_h_color = astra_get_foreground_color( $link_h_color );
+
+ $css_output = array(
+ // Loading effect color.
+ 'a.edd-add-to-cart.white .edd-loading, .edd-discount-loader.edd-loading, .edd-loading-ajax.edd-loading' => array(
+ 'border-left-color' => esc_attr( $cart_h_color ),
+ ),
+ );
+
+ if ( false === Astra_Builder_Helper::$is_header_footer_builder_active ) {
+
+ $compat_css_desktop = array(
+ /**
+ * Cart in menu
+ */
+ '.ast-edd-site-header-cart a' => array(
+ 'color' => esc_attr( $text_color ),
+ ),
+
+ '.ast-edd-site-header-cart a:focus, .ast-edd-site-header-cart a:hover, .ast-edd-site-header-cart .current-menu-item a' => array(
+ 'color' => esc_attr( $text_color ),
+ ),
+
+ '.ast-edd-cart-menu-wrap .count, .ast-edd-cart-menu-wrap .count:after' => array(
+ 'border-color' => esc_attr( $link_color ),
+ 'color' => esc_attr( $link_color ),
+ ),
+
+ '.ast-edd-cart-menu-wrap:hover .count' => array(
+ 'color' => esc_attr( $cart_h_color ),
+ 'background-color' => esc_attr( $link_color ),
+ ),
+ '.ast-edd-site-header-cart .widget_edd_cart_widget .cart-total' => array(
+ 'color' => esc_attr( $link_color ),
+ ),
+
+ '.ast-edd-site-header-cart .widget_edd_cart_widget .edd_checkout a, .widget_edd_cart_widget .edd_checkout a' => array(
+ 'color' => $btn_h_color,
+ 'border-color' => $btn_bg_h_color,
+ 'background-color' => $btn_bg_h_color,
+ 'border-radius' => astra_get_css_value( $btn_border_radius, 'px' ),
+ ),
+ '.site-header .ast-edd-site-header-cart .ast-edd-site-header-cart-widget .edd_checkout a, .site-header .ast-edd-site-header-cart .ast-edd-site-header-cart-widget .edd_checkout a:hover' => array(
+ 'color' => $btn_color,
+ ),
+ '.below-header-user-select .ast-edd-site-header-cart .widget, .ast-above-header-section .ast-edd-site-header-cart .widget a, .below-header-user-select .ast-edd-site-header-cart .widget_edd_cart_widget a' => array(
+ 'color' => $text_color,
+ ),
+ '.below-header-user-select .ast-edd-site-header-cart .widget_edd_cart_widget a:hover, .ast-above-header-section .ast-edd-site-header-cart .widget_edd_cart_widget a:hover, .below-header-user-select .ast-edd-site-header-cart .widget_edd_cart_widget a.remove:hover, .ast-above-header-section .ast-edd-site-header-cart .widget_edd_cart_widget a.remove:hover' => array(
+ 'color' => esc_attr( $link_color ),
+ ),
+ '.widget_edd_cart_widget a.edd-remove-from-cart:hover:after' => array(
+ 'color' => esc_attr( $link_color ),
+ 'border-color' => esc_attr( $link_color ),
+ 'background-color' => esc_attr( '#ffffff' ),
+ ),
+ );
+
+ $css_output = array_merge( $css_output, $compat_css_desktop );
+ }
+
+ /* Parse CSS from array() */
+ $css_output = astra_parse_css( $css_output );
+
+ /* Easy Digital DOwnloads Shop Archive width */
+ if ( 'custom' === $edd_archive_width ) :
+ // Easy Digital DOwnloads shop archive custom width.
+ $site_width = array(
+ '.ast-edd-archive-page .site-content > .ast-container' => array(
+ 'max-width' => astra_get_css_value( $edd_archive_max_width, 'px' ),
+ ),
+ );
+ $css_output .= astra_parse_css( $site_width, astra_get_tablet_breakpoint( '', 1 ) );
+
+ else :
+ // Easy Digital DOwnloads shop archive default width.
+ $site_width = array(
+ '.ast-edd-archive-page .site-content > .ast-container' => array(
+ 'max-width' => astra_get_css_value( $site_content_width + 40, 'px' ),
+ ),
+ );
+
+ /* Parse CSS from array()*/
+ $css_output .= astra_parse_css( $site_width, astra_get_tablet_breakpoint( '', 1 ) );
+ endif;
+
+ $dynamic_css .= apply_filters( 'astra_theme_edd_dynamic_css', $css_output );
+
+ return $dynamic_css;
+ }
+
+ /**
+ * Theme Defaults.
+ *
+ * @param array $defaults Array of options value.
+ * @return array
+ */
+ public function theme_defaults( $defaults ) {
+
+ // Container.
+ $defaults['edd-content-layout'] = 'plain-container';
+
+ // // Sidebar.
+ $defaults['edd-sidebar-layout'] = 'no-sidebar';
+ $defaults['edd-single-product-sidebar-layout'] = 'default';
+
+ // Edd Archive.
+ $defaults['edd-archive-grids'] = array(
+ 'desktop' => 4,
+ 'tablet' => 3,
+ 'mobile' => 2,
+ );
+
+ $defaults['edd-archive-product-structure'] = array(
+ 'image',
+ 'category',
+ 'title',
+ 'price',
+ 'add_cart',
+ );
+
+ $defaults['edd-archive-add-to-cart-button-text'] = __( 'Add To Cart', 'astra' );
+ $defaults['edd-archive-variable-button'] = 'button';
+ $defaults['edd-archive-variable-button-text'] = __( 'View Details', 'astra' );
+
+ $defaults['edd-archive-width'] = 'default';
+ $defaults['edd-archive-max-width'] = 1200;
+ $defaults['disable-edd-single-product-nav'] = false;
+
+ return $defaults;
+ }
+
+
+ /**
+ * Add products item class to the body
+ *
+ * @param Array $classes product classes.
+ *
+ * @return array.
+ */
+ public function edd_products_item_class( $classes = '' ) {
+
+ $is_edd_archive_page = astra_is_edd_archive_page();
+
+ if ( $is_edd_archive_page ) {
+ $shop_grid = astra_get_option( 'edd-archive-grids' );
+ $classes[] = 'columns-' . $shop_grid['desktop'];
+ $classes[] = 'tablet-columns-' . $shop_grid['tablet'];
+ $classes[] = 'mobile-columns-' . $shop_grid['mobile'];
+
+ $classes[] = 'ast-edd-archive-page';
+ }
+
+ return $classes;
+ }
+
+ /**
+ * Add class on single product page
+ *
+ * @param Array $classes product classes.
+ *
+ * @return array.
+ */
+ public function edd_single_product_class( $classes ) {
+
+ $is_edd_archive_page = astra_is_edd_archive_page();
+
+ if ( $is_edd_archive_page ) {
+ $classes[] = 'ast-edd-archive-article';
+ }
+
+ return $classes;
+ }
+
+ /**
+ * Store widgets init.
+ */
+ public function store_widgets_init() {
+ register_sidebar(
+ apply_filters(
+ 'astra_edd_sidebar_init',
+ array(
+ 'name' => esc_html__( 'Easy Digital Downloads Sidebar', 'astra' ),
+ 'id' => 'astra-edd-sidebar',
+ 'description' => __( 'This sidebar will be used on Product archive, Cart, Checkout and My Account pages.', 'astra' ),
+ 'before_widget' => '<div id="%1$s" class="widget %2$s">',
+ 'after_widget' => '</div>',
+ 'before_title' => '<h2 class="widget-title">',
+ 'after_title' => '</h2>',
+ )
+ )
+ );
+ register_sidebar(
+ apply_filters(
+ 'astra_edd_single_product_sidebar_init',
+ array(
+ 'name' => esc_html__( 'EDD Single Product Sidebar', 'astra' ),
+ 'id' => 'astra-edd-single-product-sidebar',
+ 'description' => __( 'This sidebar will be used on EDD Single Product page.', 'astra' ),
+ 'before_widget' => '<div id="%1$s" class="widget %2$s">',
+ 'after_widget' => '</div>',
+ 'before_title' => '<h2 class="widget-title">',
+ 'after_title' => '</h2>',
+ )
+ )
+ );
+ }
+
+ /**
+ * Assign shop sidebar for store page.
+ *
+ * @param String $sidebar Sidebar.
+ *
+ * @return String $sidebar Sidebar.
+ */
+ public function replace_store_sidebar( $sidebar ) {
+
+ $is_edd_page = astra_is_edd_page();
+ $is_edd_single_product_page = astra_is_edd_single_product_page();
+
+ if ( $is_edd_page && ! $is_edd_single_product_page ) {
+ $sidebar = 'astra-edd-sidebar';
+ } elseif ( $is_edd_single_product_page ) {
+ $sidebar = 'astra-edd-single-product-sidebar';
+ }
+
+ return $sidebar;
+ }
+
+ /**
+ * Easy Digital Downloads Container
+ *
+ * @param String $sidebar_layout Layout type.
+ *
+ * @return String $sidebar_layout Layout type.
+ */
+ public function store_sidebar_layout( $sidebar_layout ) {
+
+ $is_edd_page = astra_is_edd_page();
+ $is_edd_single_product_page = astra_is_edd_single_product_page();
+ $is_edd_archive_page = astra_is_edd_archive_page();
+
+ if ( $is_edd_page ) {
+
+ $edd_sidebar = astra_get_option( 'edd-sidebar-layout' );
+
+ if ( 'default' !== $edd_sidebar ) {
+
+ $sidebar_layout = $edd_sidebar;
+ }
+
+ if ( $is_edd_single_product_page ) {
+ $edd_single_product_sidebar = astra_get_option( 'edd-single-product-sidebar-layout' );
+
+ if ( 'default' !== $edd_single_product_sidebar ) {
+ $sidebar_layout = $edd_single_product_sidebar;
+ } else {
+ $sidebar_layout = astra_get_option( 'site-sidebar-layout' );
+ }
+
+ $page_id = get_the_ID();
+ $edd_sidebar_layout = get_post_meta( $page_id, 'site-sidebar-layout', true );
+ } elseif ( $is_edd_archive_page ) {
+ $edd_sidebar_layout = astra_get_option( 'edd-sidebar-layout' );
+ } else {
+ $edd_sidebar_layout = astra_get_option_meta( 'site-sidebar-layout', '', true );
+ }
+
+ if ( 'default' !== $edd_sidebar_layout && ! empty( $edd_sidebar_layout ) ) {
+ $sidebar_layout = $edd_sidebar_layout;
+ }
+ }
+
+ return $sidebar_layout;
+ }
+ /**
+ * Easy Digital Downloads Container
+ *
+ * @param String $layout Layout type.
+ *
+ * @return String $layout Layout type.
+ */
+ public function store_content_layout( $layout ) {
+
+ $is_edd_page = astra_is_edd_page();
+ $is_edd_single_page = astra_is_edd_single_page();
+ $is_edd_archive_page = astra_is_edd_archive_page();
+
+ if ( $is_edd_page ) {
+
+ $edd_layout = astra_get_option( 'edd-content-layout' );
+
+ if ( 'default' !== $edd_layout ) {
+
+ $layout = $edd_layout;
+ }
+
+ if ( $is_edd_single_page ) {
+ $page_id = get_the_ID();
+ $edd_page_layout = get_post_meta( $page_id, 'site-content-layout', true );
+ } elseif ( $is_edd_archive_page ) {
+ $edd_page_layout = astra_get_option( 'edd-content-layout' );
+ } else {
+ $edd_page_layout = astra_get_option_meta( 'site-content-layout', '', true );
+ }
+
+ if ( 'default' !== $edd_page_layout && ! empty( $edd_page_layout ) ) {
+ $layout = $edd_page_layout;
+ }
+ }
+
+ return $layout;
+ }
+
+ /**
+ * Register Customizer sections and panel for Easy Digital Downloads.
+ *
+ * @since 1.5.5
+ * @param WP_Customize_Manager $wp_customize Theme Customizer object.
+ */
+ public function customize_register( $wp_customize ) {
+
+ // @codingStandardsIgnoreStart WPThemeReview.CoreFunctionality.FileInclude.FileIncludeFound
+ /**
+ * Register Sections & Panels
+ */
+ require ASTRA_THEME_DIR . 'inc/compatibility/edd/customizer/class-astra-customizer-register-edd-section.php';
+
+ /**
+ * Sections
+ */
+ require ASTRA_THEME_DIR . 'inc/compatibility/edd/customizer/sections/class-astra-edd-container-configs.php';
+ require ASTRA_THEME_DIR . 'inc/compatibility/edd/customizer/sections/class-astra-edd-sidebar-configs.php';
+ require ASTRA_THEME_DIR . 'inc/compatibility/edd/customizer/sections/layout/class-astra-edd-archive-layout-configs.php';
+ require ASTRA_THEME_DIR . 'inc/compatibility/edd/customizer/sections/layout/class-astra-edd-single-product-layout-configs.php';
+ // @codingStandardsIgnoreEnd WPThemeReview.CoreFunctionality.FileInclude.FileIncludeFound
+
+ }
+
+ }
+
+endif;
+
+if ( apply_filters( 'astra_enable_edd_integration', true ) ) {
+ Astra_Edd::get_instance();
+}
diff --git a/inc/compatibility/edd/customizer/class-astra-customizer-register-edd-section.php b/inc/compatibility/edd/customizer/class-astra-customizer-register-edd-section.php
new file mode 100644
index 0000000..afdfa36
--- /dev/null
+++ b/inc/compatibility/edd/customizer/class-astra-customizer-register-edd-section.php
@@ -0,0 +1,67 @@
+<?php
+/**
+ * Register customizer panels & sections for Easy Digital Downloads.
+ *
+ * @package Astra
+ * @author Astra
+ * @copyright Copyright (c) 2020, Astra
+ * @link https://wpastra.com/
+ * @since Astra 1.5.5
+ */
+
+if ( ! defined( 'ABSPATH' ) ) {
+ exit; // Exit if accessed directly.
+}
+
+if ( ! class_exists( 'Astra_Customizer_Register_Edd_Section' ) ) {
+
+ /**
+ * Customizer Sanitizes Initial setup
+ */
+ class Astra_Customizer_Register_Edd_Section extends Astra_Customizer_Config_Base {
+
+ /**
+ * Register Panels and Sections for Customizer.
+ *
+ * @param Array $configurations Astra Customizer Configurations.
+ * @param WP_Customize_Manager $wp_customize instance of WP_Customize_Manager.
+ * @since 1.5.5
+ * @return Array Astra Customizer Configurations with updated configurations.
+ */
+ public function register_configuration( $configurations, $wp_customize ) {
+
+ $configs = array(
+ /**
+ * WooCommerce
+ */
+ array(
+ 'name' => 'section-edd-group',
+ 'type' => 'section',
+ 'title' => __( 'Easy Digital Downloads', 'astra' ),
+ 'priority' => 60,
+ ),
+
+ array(
+ 'name' => 'section-edd-archive',
+ 'title' => __( 'Product Archive', 'astra' ),
+ 'type' => 'section',
+ 'section' => 'section-edd-group',
+ 'priority' => 10,
+ ),
+
+ array(
+ 'name' => 'section-edd-single',
+ 'type' => 'section',
+ 'title' => __( 'Single Product', 'astra' ),
+ 'section' => 'section-edd-group',
+ 'priority' => 15,
+ ),
+ );
+
+ return array_merge( $configurations, $configs );
+ }
+ }
+}
+
+
+new Astra_Customizer_Register_Edd_Section();
diff --git a/inc/compatibility/edd/customizer/sections/class-astra-edd-container-configs.php b/inc/compatibility/edd/customizer/sections/class-astra-edd-container-configs.php
new file mode 100644
index 0000000..45c2cb3
--- /dev/null
+++ b/inc/compatibility/edd/customizer/sections/class-astra-edd-container-configs.php
@@ -0,0 +1,64 @@
+<?php
+/**
+ * Easy Digital Downloads Container Options for Astra theme.
+ *
+ * @package Astra
+ * @author Brainstorm Force
+ * @copyright Copyright (c) 2020, Brainstorm Force
+ * @link https://www.brainstormforce.com
+ * @since Astra 1.5.5
+ */
+
+if ( ! defined( 'ABSPATH' ) ) {
+ exit;
+}
+
+if ( ! class_exists( 'Astra_Edd_Container_Configs' ) ) {
+
+ /**
+ * Customizer Sanitizes Initial setup
+ */
+ class Astra_Edd_Container_Configs extends Astra_Customizer_Config_Base {
+
+ /**
+ * Register Astra-Easy Digital Downloads Shop Container Settings.
+ *
+ * @param Array $configurations Astra Customizer Configurations.
+ * @param WP_Customize_Manager $wp_customize instance of WP_Customize_Manager.
+ * @since 1.5.5
+ * @return Array Astra Customizer Configurations with updated configurations.
+ */
+ public function register_configuration( $configurations, $wp_customize ) {
+
+ $_configs = array(
+
+ /**
+ * Option: Shop Page
+ */
+ array(
+ 'name' => ASTRA_THEME_SETTINGS . '[edd-content-layout]',
+ 'type' => 'control',
+ 'control' => 'ast-select',
+ 'default' => astra_get_option( 'edd-content-layout' ),
+ 'section' => 'section-container-layout',
+ 'priority' => 85,
+ 'title' => __( 'Easy Digital Downloads Layout', 'astra' ),
+ 'divider' => array( 'ast_class' => 'ast-top-divider' ),
+ 'choices' => array(
+ 'default' => __( 'Default', 'astra' ),
+ 'boxed-container' => __( 'Boxed', 'astra' ),
+ 'content-boxed-container' => __( 'Content Boxed', 'astra' ),
+ 'plain-container' => __( 'Full Width / Contained', 'astra' ),
+ 'page-builder' => __( 'Full Width / Stretched', 'astra' ),
+ ),
+ ),
+ );
+
+ return array_merge( $configurations, $_configs );
+
+ }
+ }
+}
+
+new Astra_Edd_Container_Configs();
+
diff --git a/inc/compatibility/edd/customizer/sections/class-astra-edd-sidebar-configs.php b/inc/compatibility/edd/customizer/sections/class-astra-edd-sidebar-configs.php
new file mode 100644
index 0000000..eb36e7f
--- /dev/null
+++ b/inc/compatibility/edd/customizer/sections/class-astra-edd-sidebar-configs.php
@@ -0,0 +1,84 @@
+<?php
+/**
+ * Easy Digital Downloads Sidebar Options for our theme.
+ *
+ * @package Astra
+ * @author Brainstorm Force
+ * @copyright Copyright (c) 2020, Brainstorm Force
+ * @link https://www.brainstormforce.com
+ * @since Astra 1.5.5
+ */
+
+if ( ! defined( 'ABSPATH' ) ) {
+ exit;
+}
+
+if ( ! class_exists( 'Astra_Edd_Sidebar_Configs' ) ) {
+
+ /**
+ * Customizer Sanitizes Initial setup
+ */
+ class Astra_Edd_Sidebar_Configs extends Astra_Customizer_Config_Base {
+
+ /**
+ * Register Astra Easy Digital Downloads Sidebar Configurations.
+ *
+ * @param Array $configurations Astra Customizer Configurations.
+ * @param WP_Customize_Manager $wp_customize instance of WP_Customize_Manager.
+ * @since 1.5.5
+ * @return Array Astra Customizer Configurations with updated configurations.
+ */
+ public function register_configuration( $configurations, $wp_customize ) {
+
+ $_configs = array(
+
+ /**
+ * Option: Shop Page
+ */
+ array(
+ 'name' => ASTRA_THEME_SETTINGS . '[edd-sidebar-layout]',
+ 'type' => 'control',
+ 'control' => 'ast-select',
+ 'section' => 'section-sidebars',
+ 'default' => astra_get_option( 'edd-sidebar-layout' ),
+ 'priority' => 5,
+ 'title' => __( 'Easy Digital Downloads', 'astra' ),
+ 'choices' => array(
+ 'default' => __( 'Default', 'astra' ),
+ 'no-sidebar' => __( 'No Sidebar', 'astra' ),
+ 'left-sidebar' => __( 'Left Sidebar', 'astra' ),
+ 'right-sidebar' => __( 'Right Sidebar', 'astra' ),
+ ),
+ ),
+
+ /**
+ * Option: Single Product
+ */
+ array(
+ 'name' => ASTRA_THEME_SETTINGS . '[edd-single-product-sidebar-layout]',
+ 'type' => 'control',
+ 'control' => 'ast-select',
+ 'default' => astra_get_option( 'edd-single-product-sidebar-layout' ),
+ 'section' => 'section-sidebars',
+ 'priority' => 5,
+ 'title' => __( 'EDD Single Product', 'astra' ),
+ 'choices' => array(
+ 'default' => __( 'Default', 'astra' ),
+ 'no-sidebar' => __( 'No Sidebar', 'astra' ),
+ 'left-sidebar' => __( 'Left Sidebar', 'astra' ),
+ 'right-sidebar' => __( 'Right Sidebar', 'astra' ),
+ ),
+ 'divider' => array( 'ast_class' => 'ast-bottom-divider' ),
+ ),
+ );
+
+ return array_merge( $configurations, $_configs );
+
+ }
+ }
+}
+
+new Astra_Edd_Sidebar_Configs();
+
+
+
diff --git a/inc/compatibility/edd/customizer/sections/layout/class-astra-edd-archive-layout-configs.php b/inc/compatibility/edd/customizer/sections/layout/class-astra-edd-archive-layout-configs.php
new file mode 100644
index 0000000..bd770a9
--- /dev/null
+++ b/inc/compatibility/edd/customizer/sections/layout/class-astra-edd-archive-layout-configs.php
@@ -0,0 +1,214 @@
+<?php
+/**
+ * Easy Digital Downloads Options for Astra Theme.
+ *
+ * @package Astra
+ * @author Astra
+ * @copyright Copyright (c) 2020, Astra
+ * @link https://wpastra.com/
+ * @since Astra 1.5.5
+ */
+
+if ( ! defined( 'ABSPATH' ) ) {
+ exit;
+}
+
+if ( ! class_exists( 'Astra_Edd_Archive_Layout_Configs' ) ) {
+
+ /**
+ * Customizer Sanitizes Initial setup
+ */
+ class Astra_Edd_Archive_Layout_Configs extends Astra_Customizer_Config_Base {
+
+ /**
+ * Register Astra-Easy Digital Downloads Shop Layout Customizer Configurations.
+ *
+ * @param Array $configurations Astra Customizer Configurations.
+ * @param WP_Customize_Manager $wp_customize instance of WP_Customize_Manager.
+ * @since 1.5.5
+ * @return Array Astra Customizer Configurations with updated configurations.
+ */
+ public function register_configuration( $configurations, $wp_customize ) {
+
+ $_configs = array(
+
+ /**
+ * Option: Shop Columns
+ */
+ array(
+ 'name' => ASTRA_THEME_SETTINGS . '[edd-archive-grids]',
+ 'type' => 'control',
+ 'control' => 'ast-responsive-slider',
+ 'sanitize_callback' => array( 'Astra_Customizer_Sanitizes', 'sanitize_responsive_slider' ),
+ 'section' => 'section-edd-archive',
+ 'default' => astra_get_option(
+ 'edd-archive-grids',
+ array(
+ 'desktop' => 4,
+ 'tablet' => 3,
+ 'mobile' => 2,
+ )
+ ),
+ 'priority' => 10,
+ 'title' => __( 'Archive Columns', 'astra' ),
+ 'input_attrs' => array(
+ 'step' => 1,
+ 'min' => 1,
+ 'max' => 6,
+ ),
+ 'divider' => array( 'ast_class' => 'ast-bottom-divider' ),
+ 'transport' => 'postMessage',
+ ),
+
+ /**
+ * Option: EDD Archive Post Meta
+ */
+ array(
+ 'name' => ASTRA_THEME_SETTINGS . '[edd-archive-product-structure]',
+ 'type' => 'control',
+ 'control' => 'ast-sortable',
+ 'sanitize_callback' => array( 'Astra_Customizer_Sanitizes', 'sanitize_multi_choices' ),
+ 'section' => 'section-edd-archive',
+ 'divider' => array( 'ast_class' => 'ast-bottom-divider' ),
+ 'default' => astra_get_option( 'edd-archive-product-structure' ),
+ 'priority' => 30,
+ 'title' => __( 'Product Structure', 'astra' ),
+ 'description' => __( 'The Image option cannot be sortable if the Product Style is selected to the List Style ', 'astra' ),
+ 'choices' => array(
+ 'image' => __( 'Image', 'astra' ),
+ 'category' => __( 'Category', 'astra' ),
+ 'title' => __( 'Title', 'astra' ),
+ 'price' => __( 'Price', 'astra' ),
+ 'short_desc' => __( 'Short Description', 'astra' ),
+ 'add_cart' => __( 'Add To Cart', 'astra' ),
+ ),
+ ),
+
+ /**
+ * Option: Add to Cart button text
+ */
+ array(
+ 'name' => ASTRA_THEME_SETTINGS . '[edd-archive-add-to-cart-button-text]',
+ 'type' => 'control',
+ 'control' => 'text',
+ 'section' => 'section-edd-archive',
+ 'default' => astra_get_option( 'edd-archive-add-to-cart-button-text' ),
+ 'priority' => 31,
+ 'title' => __( 'Cart Button Text', 'astra' ),
+ 'context' => array(
+ Astra_Builder_Helper::$general_tab_config,
+ array(
+ 'setting' => ASTRA_THEME_SETTINGS . '[edd-archive-product-structure]',
+ 'operator' => 'contains',
+ 'value' => 'add_cart',
+ ),
+ ),
+ ),
+
+ /**
+ * Option: Variable product button
+ */
+ array(
+ 'name' => ASTRA_THEME_SETTINGS . '[edd-archive-variable-button]',
+ 'type' => 'control',
+ 'control' => 'ast-select',
+ 'section' => 'section-edd-archive',
+ 'divider' => array( 'ast_class' => 'ast-bottom-divider ast-top-divider' ),
+ 'default' => astra_get_option( 'edd-archive-variable-button' ),
+ 'context' => array(
+ Astra_Builder_Helper::$general_tab_config,
+ array(
+ 'setting' => ASTRA_THEME_SETTINGS . '[edd-archive-product-structure]',
+ 'operator' => 'contains',
+ 'value' => 'add_cart',
+ ),
+ ),
+ 'priority' => 31,
+ 'title' => __( 'Variable Product Button', 'astra' ),
+ 'choices' => array(
+ 'button' => __( 'Button', 'astra' ),
+ 'options' => __( 'Options', 'astra' ),
+ ),
+ ),
+
+ /**
+ * Option: Variable product button text
+ */
+ array(
+ 'name' => ASTRA_THEME_SETTINGS . '[edd-archive-variable-button-text]',
+ 'type' => 'control',
+ 'control' => 'text',
+ 'divider' => array( 'ast_class' => 'ast-bottom-divider' ),
+ 'section' => 'section-edd-archive',
+ 'default' => astra_get_option( 'edd-archive-variable-button-text' ),
+ 'context' => array(
+ Astra_Builder_Helper::$general_tab_config,
+ array(
+ 'setting' => ASTRA_THEME_SETTINGS . '[edd-archive-variable-button]',
+ 'operator' => '==',
+ 'value' => 'button',
+ ),
+ ),
+ 'priority' => 31,
+ 'title' => __( 'Variable Product Button Text', 'astra' ),
+ ),
+
+ /**
+ * Option: Archive Content Width
+ */
+ array(
+ 'name' => ASTRA_THEME_SETTINGS . '[edd-archive-width]',
+ 'type' => 'control',
+ 'control' => 'ast-select',
+ 'section' => 'section-edd-archive',
+ 'default' => astra_get_option( 'edd-archive-width' ),
+ 'divider' => array( 'ast_class' => 'ast-bottom-divider' ),
+ 'priority' => 220,
+ 'title' => __( 'Archive Content Width', 'astra' ),
+ 'choices' => array(
+ 'default' => __( 'Default', 'astra' ),
+ 'custom' => __( 'Custom', 'astra' ),
+ ),
+ 'transport' => 'postMessage',
+ ),
+
+ /**
+ * Option: Enter Width
+ */
+ array(
+ 'name' => ASTRA_THEME_SETTINGS . '[edd-archive-max-width]',
+ 'type' => 'control',
+ 'control' => 'ast-slider',
+ 'section' => 'section-edd-archive',
+ 'default' => astra_get_option( 'edd-archive-max-width' ),
+ 'priority' => 225,
+ 'context' => array(
+ Astra_Builder_Helper::$general_tab_config,
+ array(
+ 'setting' => ASTRA_THEME_SETTINGS . '[edd-archive-width]',
+ 'operator' => '===',
+ 'value' => 'custom',
+ ),
+ ),
+
+ 'title' => __( 'Custom Width', 'astra' ),
+ 'transport' => 'postMessage',
+ 'suffix' => 'px',
+ 'input_attrs' => array(
+ 'min' => 768,
+ 'step' => 1,
+ 'max' => 1920,
+ ),
+ ),
+ );
+
+ $configurations = array_merge( $configurations, $_configs );
+
+ return $configurations;
+
+ }
+ }
+}
+
+new Astra_Edd_Archive_Layout_Configs();
+
diff --git a/inc/compatibility/edd/customizer/sections/layout/class-astra-edd-single-product-layout-configs.php b/inc/compatibility/edd/customizer/sections/layout/class-astra-edd-single-product-layout-configs.php
new file mode 100644
index 0000000..64e163b
--- /dev/null
+++ b/inc/compatibility/edd/customizer/sections/layout/class-astra-edd-single-product-layout-configs.php
@@ -0,0 +1,57 @@
+<?php
+/**
+ * Easy Digital Downloads Options for Astra Theme.
+ *
+ * @package Astra
+ * @author Astra
+ * @copyright Copyright (c) 2020, Astra
+ * @link https://wpastra.com/
+ * @since Astra 1.5.5
+ */
+
+if ( ! defined( 'ABSPATH' ) ) {
+ exit;
+}
+
+if ( ! class_exists( 'Astra_Edd_Single_Product_Layout_Configs' ) ) {
+
+
+ /**
+ * Customizer Sanitizes Initial setup
+ */
+ class Astra_Edd_Single_Product_Layout_Configs extends Astra_Customizer_Config_Base {
+
+ /**
+ * Register Astra-Easy Digital Downloads Shop Cart Layout Customizer Configurations.
+ *
+ * @param Array $configurations Astra Customizer Configurations.
+ * @param WP_Customize_Manager $wp_customize instance of WP_Customize_Manager.
+ * @since 1.5.5
+ * @return Array Astra Customizer Configurations with updated configurations.
+ */
+ public function register_configuration( $configurations, $wp_customize ) {
+
+ $_configs = array(
+
+ /**
+ * Option: Cart upsells
+ */
+ array(
+ 'name' => ASTRA_THEME_SETTINGS . '[disable-edd-single-product-nav]',
+ 'section' => 'section-edd-single',
+ 'type' => 'control',
+ 'control' => 'ast-toggle-control',
+ 'default' => astra_get_option( 'disable-edd-single-product-nav' ),
+ 'title' => __( 'Disable Product Navigation', 'astra' ),
+ 'priority' => 10,
+ 'divider' => array( 'ast_class' => 'ast-bottom-divider' ),
+
+ ),
+ );
+
+ return array_merge( $configurations, $_configs );
+ }
+ }
+}
+
+new Astra_Edd_Single_Product_Layout_Configs();
diff --git a/inc/compatibility/edd/edd-common-functions.php b/inc/compatibility/edd/edd-common-functions.php
new file mode 100644
index 0000000..7bcbca6
--- /dev/null
+++ b/inc/compatibility/edd/edd-common-functions.php
@@ -0,0 +1,324 @@
+<?php
+/**
+ * Custom functions that used for Easy Digital Downloads compatibility.
+ *
+ * @package Astra
+ * @author Astra
+ * @copyright Copyright (c) 2020, Astra
+ * @link https://wpastra.com/
+ * @since Astra 1.5.5
+ */
+
+if ( ! defined( 'ABSPATH' ) ) {
+ exit; // Exit if accessed directly.
+}
+
+/**
+ * Current Page is EDD page
+ */
+if ( ! function_exists( 'astra_is_edd_page' ) ) :
+
+ /**
+ * Check current page is an EDD page
+ *
+ * @since 1.5.5
+ * @return bool true | false
+ */
+ function astra_is_edd_page() {
+ if (
+ is_singular( 'download' ) ||
+ is_post_type_archive( 'download' ) ||
+ is_tax( 'download_category' ) ||
+ is_tax( 'download_tag' ) ||
+ edd_is_checkout() ||
+ edd_is_success_page() ||
+ edd_is_failed_transaction_page() ||
+ edd_is_purchase_history_page()
+ ) {
+ return true;
+ }
+ return false;
+ }
+
+endif;
+
+/**
+ * Current Page is EDD single page
+ */
+if ( ! function_exists( 'astra_is_edd_single_page' ) ) :
+
+ /**
+ * Check current page is an EDD single page
+ *
+ * @since 1.5.5
+ * @return bool true | false
+ */
+ function astra_is_edd_single_page() {
+ if (
+ is_singular( 'download' ) ||
+ edd_is_checkout() ||
+ edd_is_success_page() ||
+ edd_is_failed_transaction_page() ||
+ edd_is_purchase_history_page()
+ ) {
+ return true;
+ }
+ return false;
+ }
+
+endif;
+
+/**
+ * Current Page is EDD archive page
+ */
+if ( ! function_exists( 'astra_is_edd_archive_page' ) ) :
+
+ /**
+ * Check current page is an EDD archive page
+ *
+ * @since 1.5.5
+ * @return bool true | false
+ */
+ function astra_is_edd_archive_page() {
+ if (
+ is_post_type_archive( 'download' ) ||
+ is_tax( 'download_category' ) ||
+ is_tax( 'download_tag' )
+ ) {
+ return true;
+ }
+ return false;
+ }
+
+endif;
+
+
+/**
+ * Current Page is EDD single Product page
+ */
+if ( ! function_exists( 'astra_is_edd_single_product_page' ) ) :
+
+ /**
+ * Check current page is an EDD single product page
+ *
+ * @since 1.5.5
+ * @return bool true | false
+ */
+ function astra_is_edd_single_product_page() {
+ if ( is_singular( 'download' ) ) {
+ return true;
+ }
+ return false;
+ }
+
+endif;
+
+if ( ! function_exists( 'astra_edd_archive_product_structure' ) ) {
+
+ /**
+ * Show the product title in the product loop. By default this is an H2.
+ */
+ function astra_edd_archive_product_structure() {
+ $edd_structure = apply_filters( 'astra_edd_archive_product_structure', astra_get_option( 'edd-archive-product-structure' ) );
+
+ if ( is_array( $edd_structure ) && ! empty( $edd_structure ) ) {
+
+ do_action( 'astra_edd_archive_before_block_wrap' );
+ echo '<div class="ast-edd-archive-block-wrap">';
+ do_action( 'astra_edd_archive_block_wrap_top' );
+
+ foreach ( $edd_structure as $value ) {
+
+ switch ( $value ) {
+ case 'title':
+ /**
+ * Add Product Title on edd page for all products.
+ */
+ do_action( 'astra_edd_archive_title_before' );
+ do_action( 'astra_edd_archive_title' );
+ do_action( 'astra_edd_archive_title_after' );
+ break;
+ case 'image':
+ /**
+ * Add Product Title on edd page for all products.
+ */
+ do_action( 'astra_edd_archive_image_before' );
+ do_action( 'astra_edd_archive_image' );
+ do_action( 'astra_edd_archive_image_after' );
+ break;
+ case 'price':
+ /**
+ * Add Product Price on edd page for all products.
+ */
+ do_action( 'astra_edd_archive_price_before' );
+ do_action( 'astra_edd_archive_price' );
+ do_action( 'astra_edd_archive_price_after' );
+ break;
+ case 'short_desc':
+ /**
+ * Add Product short description on edd page for all products.
+ */
+ do_action( 'astra_edd_archive_short_description_before' );
+ do_action( 'astra_edd_archive_short_description' );
+ do_action( 'astra_edd_archive_short_description_after' );
+ break;
+ case 'add_cart':
+ /**
+ * Add to cart on edd page for all products.
+ */
+ do_action( 'astra_edd_archive_add_to_cart_before' );
+ do_action( 'astra_edd_archive_add_to_cart' );
+ do_action( 'astra_edd_archive_add_to_cart_after' );
+
+ break;
+ case 'category':
+ /**
+ * Add and/or Remove Categories from edd archive page.
+ */
+ do_action( 'astra_edd_archive_category_before' );
+ do_action( 'astra_edd_archive_category' );
+ do_action( 'astra_edd_archive_category_after' );
+ break;
+ default:
+ break;
+ }
+ }
+
+ do_action( 'astra_edd_archive_block_wrap_bottom' );
+ echo '</div>';
+ do_action( 'astra_edd_archive_after_block_wrap' );
+ }
+ }
+
+ add_action( 'astra_edd_archive_product_content', 'astra_edd_archive_product_structure' );
+}
+
+/**
+ * Returns list of Easy Digital Downloads Terms
+ */
+if ( ! function_exists( 'astra_edd_terms_list' ) ) {
+ /**
+ * Show EDD product terms
+ *
+ * @param string $taxonomy_name Taxonomy name.
+ * @return void
+ */
+ function astra_edd_terms_list( $taxonomy_name ) {
+ $terms = get_terms( $taxonomy_name );
+ ?>
+ <div class="ast-edd-download-categories">
+ <?php foreach ( $terms as $term ) : ?>
+ <a href="<?php echo esc_url( get_term_link( $term, $taxonomy_name ) ); ?>" title="<?php echo esc_attr( $term->name ); ?>"> <?php echo esc_html( $term->name ); ?> </a>
+ <?php endforeach; ?>
+ </div>
+ <?php
+ }
+}
+
+if ( ! function_exists( 'astra_edd_archive_product_title' ) ) {
+ /**
+ * Show EDD archive product title
+ *
+ * @return void
+ */
+ function astra_edd_archive_product_title() {
+ edd_get_template_part( 'shortcode', 'content-title' );
+ }
+
+ add_action( 'astra_edd_archive_title', 'astra_edd_archive_product_title' );
+}
+
+if ( ! function_exists( 'astra_edd_archive_product_image' ) ) {
+ /**
+ * Show EDD archive product image
+ *
+ * @return void
+ */
+ function astra_edd_archive_product_image() {
+ edd_get_template_part( 'shortcode', 'content-image' );
+ }
+
+ add_action( 'astra_edd_archive_image', 'astra_edd_archive_product_image' );
+}
+
+if ( ! function_exists( 'astra_edd_archive_product_price' ) ) {
+ /**
+ * Show EDD archive product price
+ *
+ * @return void
+ */
+ function astra_edd_archive_product_price() {
+ edd_get_template_part( 'shortcode', 'content-price' );
+ }
+
+ add_action( 'astra_edd_archive_price', 'astra_edd_archive_product_price' );
+}
+
+if ( ! function_exists( 'astra_edd_archive_product_short_description' ) ) {
+ /**
+ * Show EDD archive product description
+ *
+ * @return void
+ */
+ function astra_edd_archive_product_short_description() {
+ edd_get_template_part( 'shortcode', 'content-excerpt' );
+ }
+
+ add_action( 'astra_edd_archive_short_description', 'astra_edd_archive_product_short_description' );
+}
+
+if ( ! function_exists( 'astra_edd_archive_product_add_to_cart' ) ) {
+ /**
+ * Show EDD archive product add to cart
+ *
+ * @return void
+ */
+ function astra_edd_archive_product_add_to_cart() {
+ echo astra_edd_cart_button_markup(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
+ }
+
+ add_action( 'astra_edd_archive_add_to_cart', 'astra_edd_archive_product_add_to_cart' );
+}
+
+
+if ( ! function_exists( 'astra_edd_archive_product_category' ) ) {
+ /**
+ * Show EDD archive product category
+ *
+ * @return void
+ */
+ function astra_edd_archive_product_category() {
+ echo astra_edd_terms_list( 'download_category' ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
+ }
+
+ add_action( 'astra_edd_archive_category', 'astra_edd_archive_product_category' );
+}
+
+
+/**
+ * EDD archive page Cart button markup
+ *
+ * @return array $output Add to cart button markup
+ */
+function astra_edd_cart_button_markup() {
+ $variable_button = astra_get_option( 'edd-archive-variable-button' );
+ $add_to_cart_text = astra_get_option( 'edd-archive-add-to-cart-button-text' );
+ $variable_button_text = astra_get_option( 'edd-archive-variable-button-text' );
+ $output = edd_get_purchase_link();
+ if ( edd_has_variable_prices( get_the_ID() ) && 'button' == $variable_button ) {
+ $output = '<div class="ast-edd-variable-details-button-wrap">';
+ $output .= '<a class="button ast-edd-variable-btn" href="' . esc_url( get_permalink() ) . '">' . esc_html( $variable_button_text ) . '</a>';
+ $output .= '</div>';
+ } else {
+ if ( ! empty( $add_to_cart_text ) ) {
+ $output = edd_get_purchase_link(
+ array(
+ 'price' => false,
+ 'text' => esc_html( $add_to_cart_text ),
+ )
+ );
+ }
+ }
+
+ return $output;
+}