upgraded to 4.14

This commit is contained in:
naomi 2021-12-20 18:06:11 +00:00
parent 80f1e87db9
commit 3166bdf932
153 changed files with 5204 additions and 1003 deletions

View File

@ -1,3 +1,267 @@
version 4.14.4 ( updated 12-17-2021 )
- Fixed a conflict with SiteGround Optimizer where the Theme Customizer styles would not work when the Output Styles Inline option was enabled in Divi's Theme Options.
- Fixed a compatibility issue with SiteGround Optimizer that would cause the Divi Builder to timeout.
- Fixed order class suffix changing from _0 to _1 due to the use of do_shortcode().
* composer.json
* includes/builder/feature/dynamic-assets/class-dynamic-assets.php
* includes/builder/frontend-builder/bundle.js
* includes/builder/functions.php
* includes/builder/plugin-compat/sg-cachepress.php
* includes/builder/scripts/src/builder.js
version 4.14.3 ( updated 12-16-2021 )
- Added the all new "Product Stock" condition to Display Conditions feature.
- Added the all new "Custom Field" condition to Display Conditions feature.
- Added the all new "URL Parameter" condition to Display Conditions feature.
- Fixed various various TinyMCE editor options not working in Theme Builder in Extra theme.
- Fixed repetitive text on all Checkout modules along w/ the missing default border width for the payment methods.
- Fixed all Checkout modules that displayed errors when a Product in cart goes out of stock while Checkout.
- The margin container in the Icon Module was reassigned to the main Icon Module container.
- Fixed Fields Text size option not targeting the right elements on Checkout page.
- Fixed default pricing tables color for frequency not being properly applied in certain cases.
- Fixed an issue where preset CSS are always Loaded even when presets are not used.
- Fixed fatal error shown when Shop module, used on a page, is viewed after disabling the Woocommerce plugin.
- Fixed Checkout workflow failure when checkout page is built using Theme Builder.
- Fixed using of slashes in the Date Format option in Blog, Fullwidth Post Title and Post Title modules.
- Fixed max-height set on image module for mobile devices resulting in stretched image.
- Fixed a PHP warning that occurred when the stored Global Presets History was an array instead of an object.
- Fixed shipping address not working when Cart Totals module is used.
- Fixed inconsistent form notice's font weight in the Checkout Payment module.
- Fixed bottom content jumping issue with Sliders on Webkit based browsers.
- Fixed a PHP 8 deprecation notice in the Cross Sells Module.
- Fixed bug with removing sections from Post Content module when there is only one section inside the Body Layout.
- Fixed issue with editing page content that is nested inside the Post Content Module in Body Template in Full Site Editing mode.
- Fixed Blurb module header color transition not working with the Text Color option.
- Fixed an issue with video responsiveness and dimensions on accordion module when dynamic js lib was enabled.
- Improve SiteGround Optimizer plugin compatibility with Dynamic Assets.
- Fixed broken Column Label Option Group styles on Table & Phone modes in Cart Totals module.
- Fixed compatibility issues with Optima Express IDX Plugin.
- Improve reCaptcha compatibility with 3rd Party reCaptcha solutions.
- Fixed Cart Totals module's Table Cells Background Color option not working in Phone mode.
- Fixed Fields Focus Text color being overridden in Checkout Info module.
* composer.json
* includes/builder/autoload.php
* includes/builder/class-et-builder-module-shortcode-manager.php
* includes/builder/core.php
* includes/builder/feature/ajax-data/AjaxData.php
* includes/builder/feature/dynamic-assets/class-dynamic-assets.php
* includes/builder/feature/global-presets/History.php
* includes/builder/feature/woocommerce-modules.php
* includes/builder/framework.php
* includes/builder/frontend-builder/bundle.js
* includes/builder/frontend-builder/i18n/display-conditions.php
* includes/builder/functions.php
* includes/builder/module/Blog.php
* includes/builder/module/Blurb.php
* includes/builder/module/Icon.php
* includes/builder/module/Image.php
* includes/builder/module/field/DisplayConditions.php
* includes/builder/module/field/display-conditions/CustomField.php
* includes/builder/module/field/display-conditions/ProductStock.php
* includes/builder/module/field/display-conditions/UrlParameter.php
* includes/builder/module/woocommerce/CartNotice.php
* includes/builder/module/woocommerce/CartTotals.php
* includes/builder/module/woocommerce/CheckoutAdditionalInfo.php
* includes/builder/module/woocommerce/CheckoutBilling.php
* includes/builder/module/woocommerce/CheckoutOrderDetails.php
* includes/builder/module/woocommerce/CheckoutShipping.php
* includes/builder/module/woocommerce/CrossSells.php
* includes/builder/plugin-compat/sg-cachepress.php
* includes/builder/scripts/frontend/scripts.js
* includes/builder/scripts/frontend/woocommerce-modules.js
* includes/builder/scripts/src/builder.js
version 4.14.2 ( updated 11-30-2021 )
- Fixed issue with Divi activation upon editing Divi Layout Block in Gutenberg.
- Fixed the margin applying for the icon with the left placement in the Blurb module.
- Fixed delayed editor switching from GB to VB when activating VB by replacing waitForSave() that is based on@wordpress/data's subscribe() with evaluating state and props change that is already passed by Higher Order Component from store's state.
- Fixed break in gallery module tablet layout when item titles have different lengths.
- Added wrapper to expanded icon picker styles.
- Fixed Text alignment option not working on front-end pages.
- Fixed padding setting for modules that have buttons (including the Button module) and set an button's icon.
- Fixed issue that renders invisible text in Gutenberg editor.
- Fixed center text alignment not working for the Person module.
- Fixed console error caused by invalid srcset attributes in SVG images when "Enable Responsive Images" option is on.
- Improved Display Conditions technical implementation for rendering Tooltip contents.
- Fixed tablet/mobile (auto) width not reflecting in VB when width is assigned in responsive view for desktop only.
- Fixed the Fields default border radius value for Cart Totals and Cart Products modules.
- Fixed PHP 8 deprecation warning on Icon module.
- Fixed error when accessing background image of button module.
- Improved display of Divi icons when Dynamic Assets is turning on.
- Added loading of the Icon Modules styles on FE.
- Fixed some layout export errors in PHP 8.
- Fixed hidden sections dots appearing in page dot navigation.
- Fixed Default white link color in Footer Widgets set from Theme Customizer was not working.
* core/components/Portability.php
* includes/builder/feature/dynamic-assets/class-dynamic-assets.php
* includes/builder/feature/gutenberg/EditorTypography.php
* includes/builder/feature/icon-manager/ExtendedFontIcons.php
* includes/builder/frontend-builder/bundle.js
* includes/builder/frontend-builder/i18n/display-conditions.php
* includes/builder/functions.php
* includes/builder/module/Icon.php
* includes/builder/module/field/display-conditions/Author.php
* includes/builder/module/field/display-conditions/Browser.php
* includes/builder/module/field/display-conditions/CartContents.php
* includes/builder/module/field/display-conditions/Categories.php
* includes/builder/module/field/display-conditions/CategoryPage.php
* includes/builder/module/field/display-conditions/Cookie.php
* includes/builder/module/field/display-conditions/DateArchive.php
* includes/builder/module/field/display-conditions/DateTime.php
* includes/builder/module/field/display-conditions/DynamicPosts.php
* includes/builder/module/field/display-conditions/LoggedInStatus.php
* includes/builder/module/field/display-conditions/OperatingSystem.php
* includes/builder/module/field/display-conditions/PageVisit.php
* includes/builder/module/field/display-conditions/PostType.php
* includes/builder/module/field/display-conditions/ProductPurchase.php
* includes/builder/module/field/display-conditions/SearchResults.php
* includes/builder/module/field/display-conditions/TagPage.php
* includes/builder/module/field/display-conditions/Tags.php
* includes/builder/module/field/display-conditions/UserRole.php
* includes/builder/module/woocommerce/CartProducts.php
* includes/builder/module/woocommerce/CartTotals.php
* js/src/custom-dynamic.js
* js/src/custom.js
version 4.14.1 ( updated 11-23-2021 )
- Fixed broken styles in the Divi Builder Plugin due to missing content wrapper.
- Fixed et_get_first_section console error.
- Fixed validation when Country, whose state isn't pre-defined, is selected during Checkout.
- Fixed issue affecting Checkout when using Divi modules as well as the default WooCommerce checkout shortcode.
- Fixed "no available payment" warning showing twice.
- Fixed broken shipping fields on Checkout page when WooCommerce shortcode within Text module.
- Fixed a bug that caused generated file lock files to not delete when they should have, during the creation of dynamic css files.
- Fixed PHP error occurring when the WP Rest API is used fetch posts which include a WC Cart Notice module in their content.
- Fixed hidden quantity text in the quantity field on WooCommerce product pages.
- Fixed static CSS cache clearing not working on Windows.
* core/components/cache/Directory.php
* includes/builder/core.php
* includes/builder/feature/dynamic-assets/class-dynamic-assets.php
* includes/builder/frontend-builder/bundle.js
* includes/builder/module/woocommerce/CartNotice.php
* includes/builder/scripts/frontend/scripts.js
* includes/builder/scripts/frontend/woocommerce-modules.js
* includes/builder/scripts/src/builder.js
* js/src/custom.js
version 4.14 ( updated 11-22-2021 )
- Introduced 8 new Divi WooCommerce modules, including the ability to customize your WooCommerce cart and checkout pages.
- An additional conversion of icons values created in previous Divi versions for 3p modules was added.
- The algorithm for checking the presence of icons in the content for Dynamic Assets has been changed, now it searches for the values of icons in the content, regardless of which field they are in.
- Fixed Display Conditions feature integration with Find & Replace feature so now they work together as expected.
- Fixed bug with copying and pasting elements between different pages, and enabled copying and pasting elements from one Theme Builder area to another.
- Fixed issue with double wrappers when page has only the Body Layout created in Theme Builder.
- Added extra conversion for the case with the font_icon__hover option when the "Allowlist" mechanism is run.
- Fixed broken icon fonts that occurred when a page's CSS cache was first generated using http, and then later served using https.
- Added a fallback check that will regenerate Dynamic CSS when we identify that the cached CSS files are missing Theme Builder CSS for whatever reason.
- Changed default transparent RGBA value to mitigate the issue with how color interpolation works in Safari browser.
- Fixed pagination not working for Portfolio module when used in a Theme Builder template.
- Fixed wrong height of Full-width slider image when placed immediately after transparent primary Menu.
- Fixed an issue with Settings Options field visibility checks when field dependencies were removed.
- Fixed an edge case in the Builder where Blurb Module would break on a specific combination of Image and Scroll Effects.
- Fixed child theme's style version being ignored when it's enqueued.
- Fixed the issue when reCaptcha was enabled in some cases even if it is not used anywhere on the site.
* composer.json
* core/admin/fonts/builder.eot
* core/admin/fonts/builder.ttf
* core/admin/fonts/builder.woff
* core/components/api/spam/ReCaptcha.php
* core/components/data/Utils.php
* core/functions.php
* includes/builder/autoload.php
* includes/builder/class-et-builder-element.php
* includes/builder/class-et-builder-module-shortcode-manager.php
* includes/builder/core.php
* includes/builder/feature/AjaxCache.php
* includes/builder/feature/ajax-data/AjaxData.php
* includes/builder/feature/display-conditions/DisplayConditions.php
* includes/builder/feature/dynamic-assets/class-dynamic-assets.php
* includes/builder/feature/dynamic-assets/dynamic-assets.php
* includes/builder/feature/dynamic-content.php
* includes/builder/feature/global-presets/Settings.php
* includes/builder/feature/icon-manager/ExtendedFontIcons.php
* includes/builder/feature/woocommerce-modules.php
* includes/builder/feature/woocommerce/placeholder/WoocommerceProductSimplePlaceholder.php
* includes/builder/feature/woocommerce/templates/cart/cart-totals.php
* includes/builder/feature/woocommerce/templates/cart/cart.php
* includes/builder/feature/woocommerce/templates/cart/cross-sells.php
* includes/builder/feature/woocommerce/templates/checkout/form-login.php
* includes/builder/feature/woocommerce/templates/checkout/payment-method.php
* includes/builder/feature/woocommerce/templates/checkout/payment.php
* includes/builder/feature/woocommerce/templates/checkout/review-order.php
* includes/builder/feature/woocommerce/templates/global/form-login-fe.php
* includes/builder/feature/woocommerce/templates/global/form-login.php
* includes/builder/feature/woocommerce/templates/global/quantity-input.php
* includes/builder/framework.php
* includes/builder/frontend-builder/bundle.js
* includes/builder/frontend-builder/helpers.php
* includes/builder/frontend-builder/theme-builder/woocommerce.php
* includes/builder/functions.php
* includes/builder/module/Comments.php
* includes/builder/module/ContactForm.php
* includes/builder/module/Portfolio.php
* includes/builder/module/field/Border.php
* includes/builder/module/field/MarginPadding.php
* includes/builder/module/helpers/WoocommerceModules.php
* includes/builder/module/settings/Migration.php
* includes/builder/module/settings/migration/ContactFormUniqueID.php
* includes/builder/module/settings/migration/IconManager.php
* includes/builder/module/settings/migration/WooTextOG.php
* includes/builder/module/woocommerce/AddToCart.php
* includes/builder/module/woocommerce/AdditionalInfo.php
* includes/builder/module/woocommerce/Breadcrumb.php
* includes/builder/module/woocommerce/CartNotice.php
* includes/builder/module/woocommerce/CartProducts.php
* includes/builder/module/woocommerce/CartTotals.php
* includes/builder/module/woocommerce/CheckoutAdditionalInfo.php
* includes/builder/module/woocommerce/CheckoutBilling.php
* includes/builder/module/woocommerce/CheckoutOrderDetails.php
* includes/builder/module/woocommerce/CheckoutPaymentInfo.php
* includes/builder/module/woocommerce/CheckoutShipping.php
* includes/builder/module/woocommerce/CrossSells.php
* includes/builder/module/woocommerce/Description.php
* includes/builder/module/woocommerce/Gallery.php
* includes/builder/module/woocommerce/Images.php
* includes/builder/module/woocommerce/Meta.php
* includes/builder/module/woocommerce/Price.php
* includes/builder/module/woocommerce/Rating.php
* includes/builder/module/woocommerce/RelatedProducts.php
* includes/builder/module/woocommerce/Reviews.php
* includes/builder/module/woocommerce/Shop.php
* includes/builder/module/woocommerce/Stock.php
* includes/builder/module/woocommerce/Tabs.php
* includes/builder/module/woocommerce/Title.php
* includes/builder/module/woocommerce/Upsells.php
* includes/builder/scripts/frontend/scripts.js
* includes/builder/scripts/frontend/woocommerce-modules.js
* js/src/custom.js
version 4.13.1 ( updated 11-11-2021 )
- Fixed front end .css files being enqueued inside the Visual Builder when editing category pages using the Theme Builder Editor.
- Fixed issue with Post Content Module error inside the Specialty section.
- Fixed visual builder laggy on Initial load.
- Fixed error when double click on child module preview to open settings modal.
- Fixed Divi Placeholder block is not rendered properly on edit post admin page.
- Updated Display Conditions feature making it more robust and added specific hooks to disable/enable Display Conditions site-wide.
- Refactored Dynamic Assets for improved technical maintainability.
- Fixed error in the browser console when doing drag and drop modules.
- Introduces new action hook after contact form entry is submitted.
* includes/builder/class-et-builder-element.php
* includes/builder/feature/ajax-data/AjaxData.php
* includes/builder/feature/display-conditions/DisplayConditions.php
* includes/builder/feature/dynamic-assets/class-dynamic-assets.php
* includes/builder/feature/global-presets/Settings.php
* includes/builder/framework.php
* includes/builder/frontend-builder/bundle.js
* includes/builder/frontend-builder/theme-builder/frontend.php
* includes/builder/functions.php
* includes/builder/module/ContactForm.php
* includes/builder/module/field/DisplayConditions.php
* includes/builder/module/field/display-conditions/PageVisit.php
* includes/builder/module/settings/Migration.php
* includes/builder/module/settings/migration/ContactFormUniqueID.php
* includes/builder/plugin-compat/popup-maker.php
version 4.13 ( updated 11-04-2021 )
- Added hundreds of new icons to the Divi icon picker.
- Added expanded icon picker for easier icon browsing.

View File

@ -1,4 +1,4 @@
<?php
// Note, this will be updated automatically during grunt release task
$ET_CORE_VERSION = '4.13.0';
$ET_CORE_VERSION = '4.14.4';

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1639,6 +1639,10 @@ class ET_Core_Portability {
* @return array
*/
protected function get_data_images( $data, $force = false ) {
if ( empty( $data ) ) {
return array();
}
$images = array();
$images_src = array();
$basenames = array(
@ -1663,8 +1667,19 @@ class ET_Core_Portability {
}
foreach ( $data as $value ) {
if ( is_array( $value ) || is_object( $value ) ) {
$images = array_merge( $images, $this->get_data_images( (array) $value ) );
// If the $value is an object, but not a Post object then it's unlikely to contain any image data.
if ( is_object( $value ) && ! $value instanceof WP_Post ) {
continue;
}
if ( is_array( $value ) ) {
$images = array_merge( $images, $this->get_data_images( $value ) );
$value = implode( '|', $value );
} elseif ( $value instanceof WP_Post ) {
// If the $value is a Post object, we need only the post content.
$value = (array) $value->post_content;
$images = array_merge( $images, $this->get_data_images( $value ) );
$value = implode( '|', $value );
}
// Extract images from HTML or shortcodes.

View File

@ -67,8 +67,24 @@ class ET_Core_API_Spam_ReCaptcha extends ET_Core_API_Spam_Provider {
}
public function is_enabled() {
return isset( $this->data['site_key'], $this->data['secret_key'] )
$has_recaptcha_module = true;
if ( class_exists( 'ET_Dynamic_Assets' ) ) {
$et_dynamic_module_framework = et_builder_dynamic_module_framework();
$enabled = et_builder_is_frontend() && 'on' === $et_dynamic_module_framework;
if ( $enabled ) {
$et_dynamic_assets = ET_Dynamic_Assets::init();
$saved_shortcodes = $et_dynamic_assets->get_saved_page_shortcodes();
$recaptcha_modules = array( 'et_pb_contact_form', 'et_pb_signup' );
$has_recaptcha_module = ! empty( array_intersect( $saved_shortcodes, $recaptcha_modules ) );
}
}
$has_key = isset( $this->data['site_key'], $this->data['secret_key'] )
&& et_()->all( array( $this->data['site_key'], $this->data['secret_key'] ) );
return $has_key && $has_recaptcha_module;
}
/**

View File

@ -83,7 +83,7 @@ class ET_Core_Cache_Directory {
}
$this->can_write = $can_write || $can_create;
$this->path = $path;
$this->path = et_()->normalize_path( $path );
$this->url = $url;
$this->_maybe_adjust_path_for_multisite( $uploads_dir_info );

View File

@ -1041,6 +1041,46 @@ class ET_Core_Data_Utils {
$buffer[15]
);
}
/**
* Append/Prepend to comma separated selectors.
*
* Example:
*
* @see UtilsTest::testAppendPrependCommaSeparatedSelectors()
*
* @param string $css_selector Comma separated CSS selectors.
* @param string $value Value to append/prepend.
* @param string $prefix_suffix Values can be `prefix` or `suffix`.
* @param bool $is_space_required Is space required? // phpcs:ignore Squiz.Commenting.FunctionComment.ParamCommentFullStop -- Respecting punctuation.
*
* @return string
*/
public function append_prepend_comma_separated_selectors(
$css_selector,
$value,
$prefix_suffix,
$is_space_required = true
) {
$css_selectors = explode( ',', $css_selector );
$css_selectors_processed = array();
$is_prefix = 'prefix' === $prefix_suffix;
foreach ( $css_selectors as $selector ) {
$selector = rtrim( ltrim( $selector ) );
if ( $is_prefix && $is_space_required ) {
$css_selectors_processed[] = sprintf( '%2$s %1$s', $selector, $value );
} elseif ( $is_prefix && ! $is_space_required ) {
$css_selectors_processed[] = sprintf( '%2$s%1$s', $selector, $value );
} elseif ( ! $is_prefix && $is_space_required ) {
$css_selectors_processed[] = sprintf( '%1$s %2$s', $selector, $value );
} elseif ( ! $is_prefix && ! $is_space_required ) {
$css_selectors_processed[] = sprintf( '%1$s%2$s', $selector, $value );
}
}
return implode( ',', $css_selectors_processed );
}
}

View File

@ -265,8 +265,17 @@ function et_core_get_main_fonts() {
endif;
if ( ! function_exists( 'et_core_get_theme_info' ) ):
function et_core_get_theme_info( $key ) {
if ( ! function_exists( 'et_core_get_theme_info' ) ) :
/**
* Gets Theme Info.
*
* Gets Parent theme's info even when child theme is used.
*
* @param string $key One of WP_Theme class public properties.
*
* @returns string
*/
function et_core_get_theme_info( $key ) {
static $theme_info = null;
if ( ! $theme_info ) {
@ -278,7 +287,7 @@ function et_core_get_theme_info( $key ) {
}
return $theme_info->display( $key );
}
}
endif;
@ -875,7 +884,8 @@ if ( ! function_exists( 'et_requeue_child_theme_styles' ) ) :
foreach ( $styles->registered as $handle => $style ) {
if ( preg_match( '/' . $template_directory_uri . '.*/', $style->src ) ) {
et_core_replace_enqueued_style( $style->src, '', $theme_version, '', $style_dep, false );
$style_version = isset( $style->ver ) ? $style->ver : $theme_version;
et_core_replace_enqueued_style( $style->src, '', $style_version, '', $style_dep, false );
}
}
}

View File

@ -1,2 +1,2 @@
.footer-widget h4,#main-footer .widget_block h1,#main-footer .widget_block h2,#main-footer .widget_block h3,#main-footer .widget_block h4,#main-footer .widget_block h5,#main-footer .widget_block h6{color:#2EA3F2}.footer-widget li:before{border-color:#2EA3F2}.bottom-nav li.current-menu-item>a{color:#2EA3F2}#main-footer{background-color:#222222}#footer-widgets{padding:6% 0 0}.footer-widget{float:left;color:#fff}.last{margin-right:0}.footer-widget .fwidget:last-child{margin-bottom:0 !important}#footer-widgets .footer-widget li{padding-left:14px;position:relative}#footer-widgets .footer-widget li:before{border-radius:3px;border-style:solid;border-width:3px;content:"";left:0;position:absolute;top:9px}#footer-widgets .footer-widget li a{color:#fff;text-decoration:none}#footer-widgets .footer-widget li a:hover{color:rgba(255,255,255,0.7)}.footer-widget .widget_adsensewidget ins{min-width:160px}#footer-bottom{background-color:#1f1f1f;background-color:rgba(0,0,0,0.32);padding:15px 0 5px}#footer-bottom a{-webkit-transition:all 0.4s ease-in-out;transition:all 0.4s ease-in-out}#footer-info{text-align:left;color:#666;padding-bottom:10px;float:left}#footer-info a{font-weight:700;color:#666}#footer-info a:hover{opacity:.7}#et-footer-nav{background-color:rgba(255,255,255,0.05)}.bottom-nav{padding:15px 0}.bottom-nav li{font-weight:600;display:inline-block;font-size:14px;padding-right:22px}.bottom-nav a{color:#bbb;-webkit-transition:all 0.4s ease-in-out;transition:all 0.4s ease-in-out}.bottom-nav a:hover{opacity:.7}@media all and (max-width: 980px){.footer-widget:nth-child(n){width:46.25% !important;margin:0 7.5% 7.5% 0 !important}.et_pb_footer_columns1 .footer-widget{width:100% !important;margin:0 7.5% 7.5% 0 !important}#footer-widgets .footer-widget .fwidget{margin-bottom:16.21%}.et_pb_gutters1 .footer-widget:nth-child(n){width:50% !important;margin:0 !important}.et_pb_gutters1 #footer-widgets .footer-widget .fwidget{margin-bottom:0}#footer-widgets{padding:8% 0}#footer-widgets .footer-widget:nth-child(2n){margin-right:0 !important}#footer-widgets .footer-widget:nth-last-child(-n+2){margin-bottom:0 !important}.bottom-nav{text-align:center}#footer-info{float:none;text-align:center}}@media all and (max-width: 767px){#footer-widgets .footer-widget,.et_pb_gutters1 #footer-widgets .footer-widget{width:100% !important;margin-right:0 !important}#footer-widgets .footer-widget:nth-child(n),#footer-widgets .footer-widget .fwidget{margin-bottom:9.5% !important}.et_pb_gutters1 #footer-widgets .footer-widget:nth-child(n),.et_pb_gutters1 #footer-widgets .footer-widget .fwidget{margin-bottom:0 !important}#footer-widgets{padding:10% 0}#footer-widgets .footer-widget .fwidget:last-child{margin-bottom:0 !important}#footer-widgets .footer-widget:last-child{margin-bottom:0 !important}}@media all and (max-width: 479px){#footer-widgets .footer-widget:nth-child(n),.footer-widget .fwidget{margin-bottom:11.5% !important}#footer-widgets .footer-widget.last{margin-bottom:0 !important}.et_pb_gutters1 #footer-widgets .footer-widget:nth-child(n),.et_pb_gutters1 #footer-widgets .footer-widget .fwidget{margin-bottom:0 !important}#footer-widgets{padding:12% 0}}
.footer-widget h4,#main-footer .widget_block h1,#main-footer .widget_block h2,#main-footer .widget_block h3,#main-footer .widget_block h4,#main-footer .widget_block h5,#main-footer .widget_block h6{color:#2EA3F2}.footer-widget li:before{border-color:#2EA3F2}.bottom-nav li.current-menu-item>a{color:#2EA3F2}#main-footer{background-color:#222222}#footer-widgets{padding:6% 0 0}.footer-widget{float:left;color:#fff}.last{margin-right:0}.footer-widget .fwidget:last-child{margin-bottom:0 !important}#footer-widgets .footer-widget li{padding-left:14px;position:relative}#footer-widgets .footer-widget li:before{border-radius:3px;border-style:solid;border-width:3px;content:"";left:0;position:absolute;top:9px}#footer-widgets .footer-widget a{color:#fff}#footer-widgets .footer-widget li a{color:#fff;text-decoration:none}#footer-widgets .footer-widget li a:hover{color:rgba(255,255,255,0.7)}.footer-widget .widget_adsensewidget ins{min-width:160px}#footer-bottom{background-color:#1f1f1f;background-color:rgba(0,0,0,0.32);padding:15px 0 5px}#footer-bottom a{-webkit-transition:all 0.4s ease-in-out;transition:all 0.4s ease-in-out}#footer-info{text-align:left;color:#666;padding-bottom:10px;float:left}#footer-info a{font-weight:700;color:#666}#footer-info a:hover{opacity:.7}#et-footer-nav{background-color:rgba(255,255,255,0.05)}.bottom-nav{padding:15px 0}.bottom-nav li{font-weight:600;display:inline-block;font-size:14px;padding-right:22px}.bottom-nav a{color:#bbb;-webkit-transition:all 0.4s ease-in-out;transition:all 0.4s ease-in-out}.bottom-nav a:hover{opacity:.7}@media all and (max-width: 980px){.footer-widget:nth-child(n){width:46.25% !important;margin:0 7.5% 7.5% 0 !important}.et_pb_footer_columns1 .footer-widget{width:100% !important;margin:0 7.5% 7.5% 0 !important}#footer-widgets .footer-widget .fwidget{margin-bottom:16.21%}.et_pb_gutters1 .footer-widget:nth-child(n){width:50% !important;margin:0 !important}.et_pb_gutters1 #footer-widgets .footer-widget .fwidget{margin-bottom:0}#footer-widgets{padding:8% 0}#footer-widgets .footer-widget:nth-child(2n){margin-right:0 !important}#footer-widgets .footer-widget:nth-last-child(-n+2){margin-bottom:0 !important}.bottom-nav{text-align:center}#footer-info{float:none;text-align:center}}@media all and (max-width: 767px){#footer-widgets .footer-widget,.et_pb_gutters1 #footer-widgets .footer-widget{width:100% !important;margin-right:0 !important}#footer-widgets .footer-widget:nth-child(n),#footer-widgets .footer-widget .fwidget{margin-bottom:9.5% !important}.et_pb_gutters1 #footer-widgets .footer-widget:nth-child(n),.et_pb_gutters1 #footer-widgets .footer-widget .fwidget{margin-bottom:0 !important}#footer-widgets{padding:10% 0}#footer-widgets .footer-widget .fwidget:last-child{margin-bottom:0 !important}#footer-widgets .footer-widget:last-child{margin-bottom:0 !important}}@media all and (max-width: 479px){#footer-widgets .footer-widget:nth-child(n),.footer-widget .fwidget{margin-bottom:11.5% !important}#footer-widgets .footer-widget.last{margin-bottom:0 !important}.et_pb_gutters1 #footer-widgets .footer-widget:nth-child(n),.et_pb_gutters1 #footer-widgets .footer-widget .fwidget{margin-bottom:0 !important}#footer-widgets{padding:12% 0}}

File diff suppressed because one or more lines are too long

View File

@ -57,9 +57,11 @@ function _et_pb_autoload_types( $class ) {
* @param string $class The class name.
*/
function _et_pb_autoload_woo_modules( $class ) {
if ( et_is_woocommerce_plugin_active() ) {
// For multipart classnames.
$class = str_replace( '_', '', $class );
require_once "module/woocommerce/{$class}.php";
}
}
/**
@ -73,6 +75,14 @@ function _et_pb_autoload_modules( $class ) {
if ( file_exists( ET_BUILDER_DIR . "module/{$class}.php" ) ) {
require_once "module/{$class}.php";
} elseif ( 'Shop' === $class && et_is_woocommerce_plugin_active() &&
/*
* ET_Builder_Module_Shop class moved to "woocommerce/" directory
* as part of WooCommerce Modules v2.
*/
file_exists( ET_BUILDER_DIR . "module/woocommerce/{$class}.php" ) ) {
require_once "module/woocommerce/${class}.php";
}
}
@ -111,6 +121,8 @@ function _et_pb_autoload( $class ) {
require_once 'class-et-builder-dynamic-assets-feature.php';
} elseif ( 'ET_Builder_Module_Field_DisplayConditions' === $class ) {
require_once 'module/field/DisplayConditions.php';
} elseif ( 'ET_Builder_Woocommerce_Product_Simple_Placeholder' === $class ) {
require_once 'feature/woocommerce/placeholder/WoocommerceProductSimplePlaceholder.php';
} elseif ( strpos( $class, 'ET_Builder_Module_Helper_Motion_' ) !== false ) {
_et_pb_autoload_helpers_motion( str_replace( 'ET_Builder_Module_Helper_Motion_', '', $class ) );
} elseif ( strpos( $class, 'ET_Builder_Module_Helper_' ) !== false ) {

View File

@ -722,6 +722,17 @@ class ET_Builder_Element {
*/
public static $all_module_slugs = array();
/**
* Whether current module uses unique ID or not.
*
* The unique ID will be added once the module is added via Divi Builder.
*
* @since 4.13.1
*
* @var boolean
*/
protected $_use_unique_id = false;
/**
* ET_Builder_Element constructor.
*/
@ -975,6 +986,15 @@ class ET_Builder_Element {
// phpcs:enable
}
if ( ! isset( $i18n['help'] ) ) {
// phpcs:disable WordPress.WP.I18n.MissingTranslatorsComment -- Tests won't need translator comment.
$i18n['help'] = array(
'design_advanced_module_settings' => esc_html__( 'Design Settings and Advanced Module Settings', 'et_builder' ),
'save_load_from_library' => esc_html__( 'Saving and loading from the library', 'et_builder' ),
);
// phpcs:enable
}
$this->_add_settings_modal_toggles(
'custom_css',
array(
@ -1075,7 +1095,7 @@ class ET_Builder_Element {
// Adding next tabs (design & tab) helps.
$next_tabs_help = array(
'id' => '1iqjhnHVA9Y',
'name' => esc_html__( 'Design Settings and Advanced Module Settings', 'et_builder' ),
'name' => $i18n['help']['design_advanced_module_settings'],
);
// Adjust row name.
@ -1093,7 +1113,7 @@ class ET_Builder_Element {
// Adding Divi Library helps.
$this->help_videos[] = array(
'id' => 'boNZZ0MYU0E',
'name' => esc_html__( 'Saving and loading from the library', 'et_builder' ),
'name' => $i18n['help']['save_load_from_library'],
);
}
@ -1747,6 +1767,11 @@ class ET_Builder_Element {
// Add support for the style presets.
$fields_unprocessed['_module_preset'] = array( 'type' => 'skip' );
// Add support for unique ID. Initially added for Contact Form module.
if ( $this->_use_unique_id ) {
$fields_unprocessed['_unique_id'] = array( 'type' => 'skip' );
}
if ( function_exists( 'et_builder_definition_sort' ) ) {
et_builder_definition_sort( $fields_unprocessed );
}
@ -2736,6 +2761,30 @@ class ET_Builder_Element {
*/
$this->props = apply_filters( 'et_pb_module_shortcode_attributes', $this->props, $attrs, $render_slug, $_address, $content );
// Converting icon values for custom\3rd-party modules with 'select_icon' fields.
if ( false === $this->_is_official_module ) {
foreach ( $this->get_fields() as $_field_name => $_field_data ) {
if ( ! empty( $_field_data['type'] ) && 'select_icon' === $_field_data['type'] && ! empty( $this->props[ $_field_name ] ) ) {
$all_responsive_modes_values = et_pb_responsive_options()->get_property_values( $attrs, $_field_name );
$all_modes_values = array(
et_pb_responsive_options()->get_field_name( $_field_name ) => et_()->array_get( $all_responsive_modes_values, 'desktop', '' ),
et_pb_responsive_options()->get_field_name( $_field_name, 'tablet' ) => et_()->array_get( $all_responsive_modes_values, 'tablet', '' ),
et_pb_responsive_options()->get_field_name( $_field_name, 'phone' ) => et_()->array_get( $all_responsive_modes_values, 'phone', '' ),
et_pb_hover_options()->get_hover_field( $_field_name ) => et_builder_is_hover_enabled( $_field_name, $attrs ) ? et_pb_hover_options()->get_value( $_field_name, $attrs, '' ) : null,
et_pb_sticky_options()->get_sticky_field( $_field_name ) => et_pb_sticky_options()->is_sticky_module( $_field_name ) && et_pb_sticky_options()->is_enabled( $_field_name, $attrs ) ? et_pb_sticky_options()->get_value( $_field_name, $attrs ) : null,
);
foreach ( $all_modes_values as $font_icon_name => $font_icon_value ) {
if ( ! empty( $font_icon_value ) && et_pb_maybe_old_divi_font_icon( $font_icon_value ) ) {
$this->props[ $font_icon_name ] = et_pb_build_extended_font_icon_value( $font_icon_value, false, false, true );
}
}
}
}
}
$global_content = false;
$ab_testing_enabled = et_is_ab_testing_active( $post_id );
@ -3219,50 +3268,19 @@ class ET_Builder_Element {
$this->is_rendering = true;
$render_method = $et_fb_processing_shortcode_object ? 'render_as_builder_data' : 'render';
/**
* Process Display Conditions and decide whether to display a module or not.
*/
// Setup variables.
$is_displayable = true;
$is_display_conditions_set = isset( $this->props['display_conditions'] ) && ! empty( $this->props['display_conditions'] );
$is_display_conditions_as_base64_empty = 'W10=' === $this->props['display_conditions'];
$has_display_conditions = $is_display_conditions_set && ! $is_display_conditions_as_base64_empty;
// Check if display_conditions attribute is defined, Decode the data and check if it is displayable.
if ( $has_display_conditions ) {
$display_conditions_json = base64_decode( $this->props['display_conditions'] ); // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_decode -- The returned data is an array and necessary validation checks are performed.
}
if ( $has_display_conditions && false !== $display_conditions_json ) {
$display_conditions = json_decode( $display_conditions_json, true );
$is_displayable = ET_Builder_Module_Fields_Factory::get( 'DisplayConditions' )->is_displayable( $display_conditions );
}
// Render the module as we normally would.
$output = $this->{$render_method}( $attrs, $content, $render_slug, $parent_address, $global_parent, $global_parent_type, $parent_type, $theme_builder_area );
/**
* Check if we're rendering on frontend, Then decide whether to keep the output or erase it.
* Filters every rendered module output for processing "Display Conditions" option group.
*
* We do need to render the module first and then decide to keep it or not, This is because
* we want the styles of the module (shortcode) and any nested modules inside it to get
* registered so "Dynamic Assets" would include the styles of all modules used on the page.
* Ref: https://github.com/elegantthemes/Divi/issues/24965
* @since 4.13.1
*
* @param string $output HTML output of the rendered module.
* @param string $render_method The render method used to render the module.
* @param ET_Builder_Element $this The current instance of ET_Builder_Element.
*/
if ( 'render' === $render_method ) {
if ( wp_doing_ajax() && et_pb_is_pagebuilder_used( get_the_ID() ) ) {
// "Blog Module" in VB will be rendered like a normal frontend request not as builder data, Here we set the output
// so it will always be visible in VB ignoring Display Conditions Ref: https://github.com/elegantthemes/Divi/issues/23309.
$is_vb_ajax_nonce_valid = isset( $_POST['et_pb_process_computed_property_nonce'] ) && wp_verify_nonce( sanitize_text_field( $_POST['et_pb_process_computed_property_nonce'] ), 'et_pb_process_computed_property_nonce' );
$output = $is_vb_ajax_nonce_valid ? $output : '';
} elseif ( 'et_pb_post_content' === $this->slug && ! $is_displayable && et_core_is_fb_enabled() ) {
// When VB is loaded and "Post Content" Module is used in TB and it's not displayable, set the correct
// output so it'd be displayed in VB and TB respectively Ref: https://github.com/elegantthemes/Divi/issues/23479.
$output = $output;
} else {
// All other scenarios will fall here, Normal frontend request, AJAX frontend request, etc.
$output = ( $is_displayable ) ? $output : '';
}
}
$output = apply_filters( 'et_module_process_display_conditions', $output, $render_method, $this );
$this->is_rendering = false;
@ -3801,7 +3819,7 @@ class ET_Builder_Element {
if ( $is_include_attr ) {
// Process Icon fields with a special `icons converting\decoding`.
if ( ! empty( $fields[ $shortcode_attr_key ] ) && 'select_icon' === $fields[ $shortcode_attr_key ]['type'] && is_string( $value ) ) {
if ( ! empty( $fields[ $shortcode_attr_key ] ) && 'select_icon' === $fields[ $shortcode_attr_key ]['type'] && et_pb_maybe_extended_icon( $value ) && is_string( $value ) ) {
$attrs[ $shortcode_attr_key ] = et_pb_check_and_convert_icon_raw_value( $value );
} else {
$attrs[ $shortcode_attr_key ] = is_string( $value ) ? html_entity_decode( $value ) : $value;
@ -5516,6 +5534,20 @@ class ET_Builder_Element {
* Add display conditions option fields.
*/
protected function _add_display_conditions_fields() {
/**
* Filters "Display Conditions" option visibility to determine whether to add its field to the Visual Builder or not.
*
* Useful for displaying/hiding the option on the Visual Builder.
*
* @since 4.13.1
*
* @param boolean True to make the option visible on VB, False to make it hidden.
*/
$is_display_conditions_enabled = apply_filters( 'et_is_display_conditions_option_visible', true );
if ( ! $is_display_conditions_enabled ) {
return;
}
if ( is_array( et_()->array_get( $this->advanced_fields, 'display_conditions', array() ) ) ) {
$this->_additional_fields_options = array_merge(
$this->_additional_fields_options,
@ -5894,19 +5926,21 @@ class ET_Builder_Element {
$additional_options = array();
$hover = et_pb_hover_options();
$default_toggle_priority = 70;
foreach ( $this->advanced_fields['button'] as $option_name => $option_settings ) {
$tab_slug = isset( $option_settings['tab_slug'] ) ? $option_settings['tab_slug'] : 'advanced';
$tab_slug = self::$_->array_get( $option_settings, 'tab_slug', 'advanced' );
$toggle_disabled = isset( $option_settings['disable_toggle'] ) && $option_settings['disable_toggle'];
$toggle_slug = '';
if ( ! $toggle_disabled ) {
$toggle_slug = isset( $option_settings['toggle_slug'] ) ? $option_settings['toggle_slug'] : $option_name;
$toggle_slug = self::$_->array_get( $option_settings, 'toggle_slug', $option_name );
$toggle_priority = self::$_->array_get( $option_settings, 'toggle_priority', $default_toggle_priority );
$button_toggle = array(
$option_name => array(
'title' => esc_html( $option_settings['label'] ),
'priority' => 70,
'priority' => $toggle_priority,
),
);
@ -7607,6 +7641,18 @@ class ET_Builder_Element {
}
}
if ( isset( $child_filter['depends_show_if_not'] ) ) {
foreach ( $additional_child_options as $option => $value ) {
$additional_child_options[ $option ]['depends_show_if_not'] = $child_filter['depends_show_if_not'];
}
}
if ( isset( $child_filter['depends_on'] ) ) {
foreach ( $additional_child_options as $option => $value ) {
$additional_child_options[ $option ]['depends_on'] = $child_filter['depends_on'];
}
}
$this->_additional_fields_options = array_merge( $this->_additional_fields_options, $additional_child_options );
}
@ -7821,8 +7867,41 @@ class ET_Builder_Element {
);
}
// Alternating Background Color.
$alternating_bg_color_options = isset( $option_settings['alternating_background_color'] )
? $option_settings['alternating_background_color']
: false;
if ( $alternating_bg_color_options ) {
$alternating_bg_color_args = is_array( $alternating_bg_color_options ) ? $alternating_bg_color_options : array();
// phpcs:ignore WordPress.Arrays.ArrayKeySpacingRestrictions.NoSpacesAroundArrayKeys -- The key is not a variable.
$additional_options["{$option_name}_alternating_background_color"] = array_merge(
array(
'label' => sprintf( esc_html__( '%1$s Alternating Background Color', 'et_builder' ), $option_settings['label'] ),
'description' => sprintf( esc_html__( 'Pick a color to be used for the alternating %1$s', 'et_builder' ), $option_settings['label'] ),
'type' => 'color-alpha',
'option_category' => 'field',
'custom_color' => true,
'tab_slug' => $tab_slug,
'toggle_slug' => $toggle_slug,
'hover' => 'tabs',
'mobile_options' => true,
'sticky' => true,
),
$alternating_bg_color_args
);
}
// Text Color.
$additional_options[ "{$option_name}_text_color" ] = array(
$text_color_options = isset( $option_settings['text_color'] ) ?
$option_settings['text_color'] : true;
if ( $text_color_options ) {
$text_color_args = is_array( $text_color_options )
? $text_color_options
: array();
// phpcs:ignore WordPress.Arrays.ArrayKeySpacingRestrictions.NoSpacesAroundArrayKeys -- The key is not a variable.
$additional_options["{$option_name}_text_color"] = array_merge(
array(
'label' => sprintf( $i18n['font']['color']['label'], $option_settings['label'] ),
'description' => esc_html__( 'Pick a color to be used for the text written inside input fields.', 'et_builder' ),
'type' => 'color-alpha',
@ -7833,10 +7912,18 @@ class ET_Builder_Element {
'hover' => 'tabs',
'mobile_options' => true,
'sticky' => true,
),
$text_color_args
);
}
// Focus Background Color.
$additional_options[ "{$option_name}_focus_background_color" ] = array(
$focus_background_color_options = isset( $option_settings['focus_background_color'] )
? $option_settings['focus_background_color']
: true;
if ( $focus_background_color_options ) {
// phpcs:ignore WordPress.Arrays.ArrayKeySpacingRestrictions.NoSpacesAroundArrayKeys -- The key is not a variable.
$additional_options["{$option_name}_focus_background_color"] = array(
'label' => sprintf( esc_html__( '%1$s Focus Background Color', 'et_builder' ), $option_settings['label'] ),
'description' => esc_html__( 'When a visitor clicks into an input field, it becomes focused. You can pick a color to be used for the input field background while focused.', 'et_builder' ),
'type' => 'color-alpha',
@ -7848,9 +7935,15 @@ class ET_Builder_Element {
'mobile_options' => true,
'sticky' => true,
);
}
// Focus Text Color.
$additional_options[ "{$option_name}_focus_text_color" ] = array(
$focus_text_color_options = isset( $option_settings['focus_text_color'] )
? $option_settings['focus_text_color']
: true;
if ( $focus_text_color_options ) {
// phpcs:ignore WordPress.Arrays.ArrayKeySpacingRestrictions.NoSpacesAroundArrayKeys -- The key is not a variable.
$additional_options["{$option_name}_focus_text_color"] = array(
'label' => sprintf( esc_html__( '%1$s Focus Text Color', 'et_builder' ), $option_settings['label'] ),
'description' => esc_html__( 'When a visitor clicks into an input field, it becomes focused. You can pick a color to be used for the input text while focused.', 'et_builder' ),
'type' => 'color-alpha',
@ -7862,6 +7955,7 @@ class ET_Builder_Element {
'mobile_options' => true,
'sticky' => true,
);
}
// Font - Add current font settings into advanced fields. The font_field is basically
// combination of fonts (options group) + fields (type), but plural suffix is removed
@ -7909,8 +8003,9 @@ class ET_Builder_Element {
// Border Styles - Add current borders settings into advanced fields.
$border_style_options = self::$_->array_get( $option_settings, "border_styles.{$option_name}", array() );
$border_style_name = ! empty( $border_style_options['name'] ) ? $border_style_options['name'] : $option_name;
$border_style_settings = array_merge(
array(
$use_focus_borders = self::$_->array_get( $borders_options, "{$border_style_name}.use_focus_borders", true );
$settings = array(
'option_category' => 'field',
'tab_slug' => $tab_slug,
'toggle_slug' => $toggle_slug,
@ -7922,6 +8017,12 @@ class ET_Builder_Element {
'style' => 'solid',
),
),
);
if ( $use_focus_borders ) {
$settings = array_merge(
$settings,
array(
'fields_after' => array(
'use_focus_border_color' => array(
'label' => esc_html__( 'Use Focus Borders', 'et_builder' ),
@ -7941,9 +8042,11 @@ class ET_Builder_Element {
'default_on_front' => 'off',
),
),
),
$border_style_options
)
);
}
$border_style_settings = array_merge( $settings, $border_style_options );
self::$_->array_set( $this->advanced_fields, "borders.{$border_style_name}", $border_style_settings );
// Border Styles Focus - Add current borders focus settings into advanced fields.
@ -8989,6 +9092,7 @@ class ET_Builder_Element {
// Get tab and toggle slugs value.
$tab_slug = isset( $field['tab_slug'] ) ? $field['tab_slug'] : '';
$toggle_slug = isset( $field['toggle_slug'] ) ? $field['toggle_slug'] : '';
$priority = isset( $field['priority'] ) ? $field['priority'] : false;
foreach ( $responsive_suffixes as $responsive_suffix ) {
$responsive_field_name = "{$field_name}_{$responsive_suffix}";
@ -8998,6 +9102,10 @@ class ET_Builder_Element {
'tab_slug' => $tab_slug,
'toggle_slug' => $toggle_slug,
);
if ( false !== $priority ) {
$fields[ $responsive_field_name ]['priority'] = $priority;
}
}
}
}
@ -10222,8 +10330,8 @@ class ET_Builder_Element {
'mobile_options' => true,
'sticky' => true,
'hover' => 'tabs',
'show_if' => array(
"${baseless_prefix}parallax" => 'off',
'show_if_not' => array(
"${baseless_prefix}parallax" => 'on',
),
)
);
@ -10254,8 +10362,8 @@ class ET_Builder_Element {
'mobile_options' => true,
'sticky' => true,
'hover' => 'tabs',
'show_if' => array(
"${baseless_prefix}parallax" => 'off',
'show_if_not' => array(
"${baseless_prefix}parallax" => 'on',
),
)
);
@ -10283,8 +10391,8 @@ class ET_Builder_Element {
'mobile_options' => true,
'sticky' => true,
'hover' => 'tabs',
'show_if' => array(
"${baseless_prefix}parallax" => 'off',
'show_if_not' => array(
"${baseless_prefix}parallax" => 'on',
),
)
);
@ -10322,8 +10430,8 @@ class ET_Builder_Element {
'mobile_options' => true,
'sticky' => true,
'hover' => 'tabs',
'show_if' => array(
"${baseless_prefix}parallax" => 'off',
'show_if_not' => array(
"${baseless_prefix}parallax" => 'on',
),
)
);
@ -16828,7 +16936,7 @@ class ET_Builder_Element {
} elseif ( ! $is_dbp ) {
// Explicitly add '.et_pb_section' to the selector so selector splitting during prefixing
// does not incorrectly add third party classes before #et-boc.
$css_element_processed = "body #page-container .et_pb_section {$css_element}";
$css_element_processed = et_()->append_prepend_comma_separated_selectors( $css_element, 'body #page-container .et_pb_section', 'prefix' );
}
if ( et_builder_has_limitation( 'force_use_global_important' ) ) {
@ -17010,7 +17118,9 @@ class ET_Builder_Element {
if ( 'off' === $button_use_icon ) {
$main_element_styles_after = 'display:none !important;';
$selector = sprintf( '%1$s:before, %1$s:after', $css_element_processed );
$before_selector = et_()->append_prepend_comma_separated_selectors( $css_element_processed, ':before', 'suffix', false );
$after_selector = et_()->append_prepend_comma_separated_selectors( $css_element_processed, ':after', 'suffix', false );
$selector = sprintf( '%1$s, %2$s', $before_selector, $after_selector );
$no_icon_styles = '';
// Check button custom padding. Prepend option name to get the correct padding.
@ -17035,8 +17145,9 @@ class ET_Builder_Element {
// No need to print custom padding if custom padding setting is disabled.
if ( ! empty( $no_icon_styles ) && ! $hide_custom_padding_setting ) {
$hover_selector = et_()->append_prepend_comma_separated_selectors( $css_element_processed, ':hover', 'suffix', false );
$el_style = array(
'selector' => $css_element_processed . ',' . $css_element_processed . ':hover',
'selector' => sprintf( '%1$s, %2$s', $css_element_processed, $hover_selector ),
'declaration' => rtrim( $no_icon_styles ),
);
self::set_style( $function_name, $el_style );
@ -17086,15 +17197,18 @@ class ET_Builder_Element {
$button_icon_left_content = '' !== $button_icon_code ? 'content: attr(data-icon);' : '';
$after_selector = et_()->append_prepend_comma_separated_selectors( $css_element_processed, ':after', 'suffix', false );
$el_style = array(
'selector' => $css_element_processed . ':after',
'selector' => $after_selector,
'declaration' => 'display: none;',
);
self::set_style( $function_name, $el_style );
if ( et_builder_has_limitation( 'use_additional_limiting_styles' ) ) {
$prefixed_selector = et_()->append_prepend_comma_separated_selectors( $css_element_processed, '.et_pb_row', 'prefix', true );
$prefixed_hover_selector = et_()->append_prepend_comma_separated_selectors( $prefixed_selector, ':hover', 'suffix', false );
$el_style = array(
'selector' => '.et_pb_row ' . $css_element_processed . ':hover',
'selector' => $prefixed_hover_selector,
'declaration' => 'padding-right: 1em; padding-left: 2em;',
);
self::set_style( $function_name, $el_style );
@ -17102,8 +17216,9 @@ class ET_Builder_Element {
$button_icon_left_content .= ' font-family: ' . et_pb_get_icon_font_family( $button_icon ) . ' !important;';
$button_icon_left_content .= ' font-weight: ' . et_pb_get_icon_font_weight( $button_icon ) . ' !important;';
$before_selector = et_()->append_prepend_comma_separated_selectors( $css_element_processed, ':before', 'suffix', false );
$el_style = array(
'selector' => $css_element_processed . ':before',
'selector' => $before_selector,
'declaration' => $button_icon_left_content,
);
self::set_style( $function_name, $el_style );
@ -17129,8 +17244,10 @@ class ET_Builder_Element {
'off' !== $button_on_hover ? 'opacity: 1;' : ''
);
$hover_selector = et_()->append_prepend_comma_separated_selectors( $css_element_processed, ':hover', 'suffix', false );
$hover_btn_icon_pseudo_selector = et_()->append_prepend_comma_separated_selectors( $hover_selector, $button_icon_pseudo_selector, 'suffix', false );
$el_style = array(
'selector' => $css_element_processed . ':hover' . $button_icon_pseudo_selector,
'selector' => $hover_btn_icon_pseudo_selector,
'declaration' => rtrim( $hover_after_styles ),
);
self::set_style( $function_name, $el_style );
@ -17140,8 +17257,9 @@ class ET_Builder_Element {
$default_icons_size = '1.6em';
$custom_icon_size = $button_text_size_processed;
$btn_icon_pseudo_selector = et_()->append_prepend_comma_separated_selectors( $css_element_processed, $button_icon_pseudo_selector, 'suffix', false );
$el_style = array(
'selector' => $css_element_processed . $button_icon_pseudo_selector,
'selector' => $btn_icon_pseudo_selector,
'declaration' => sprintf( 'font-size:%1$s;', $default_icons_size ),
);
self::set_style( $function_name, $el_style );
@ -17157,8 +17275,10 @@ class ET_Builder_Element {
$default_icons_size = '1.6em';
$custom_icon_size = $button_text_size_hover_processed;
$hover_selector = et_()->append_prepend_comma_separated_selectors( $css_element_processed, ':hover', 'suffix', false );
$hover_btn_icon_pseudo_selector = et_()->append_prepend_comma_separated_selectors( $hover_selector, $button_icon_pseudo_selector, 'suffix', false );
$el_style = array(
'selector' => $css_element_processed . ':hover' . $button_icon_pseudo_selector,
'selector' => $hover_btn_icon_pseudo_selector,
'declaration' => sprintf( 'font-size:%1$s;', $default_icons_size ),
);
self::set_style( $function_name, $el_style );
@ -17170,7 +17290,7 @@ class ET_Builder_Element {
self::set_style( $function_name, $el_style );
}
$selector = $css_element_processed . $button_icon_pseudo_selector;
$selector = et_()->append_prepend_comma_separated_selectors( $css_element_processed, $button_icon_pseudo_selector, 'suffix', false );
}
if ( $button_icon ) {
$main_element_styles_after .= ' font-family: ' . et_pb_get_icon_font_family( $button_icon ) . ' !important;';
@ -17353,8 +17473,9 @@ class ET_Builder_Element {
// Responsive button hover styles.
if ( ! empty( $responsive_button_hover_declaration ) ) {
$hover_selector = et_()->append_prepend_comma_separated_selectors( $css_element_processed, ':hover', 'suffix', false );
$el_style = array(
'selector' => $css_element_processed . ':hover',
'selector' => $hover_selector,
'declaration' => $responsive_button_hover_declaration,
'media_query' => self::get_media_query( $current_media_query ),
);
@ -17398,8 +17519,9 @@ class ET_Builder_Element {
);
if ( ! empty( $responsive_button_after_declaration ) ) {
$btn_icon_pseudo_selector = et_()->append_prepend_comma_separated_selectors( $css_element_processed, $button_icon_pseudo_selector, 'suffix', false );
$el_style = array(
'selector' => $css_element_processed . $button_icon_pseudo_selector,
'selector' => $btn_icon_pseudo_selector,
'declaration' => $responsive_button_after_declaration,
'media_query' => self::get_media_query( $current_media_query ),
);
@ -17429,18 +17551,20 @@ class ET_Builder_Element {
$button_side_display = ':before';
}
$btn_side_hide_selector = et_()->append_prepend_comma_separated_selectors( $css_element_processed, $button_side_hide, 'suffix', false );
$el_style = array(
'selector' => $css_element_processed . $button_side_hide,
'selector' => $btn_side_hide_selector,
'declaration' => 'display: none;',
'media_query' => self::get_media_query( $current_media_query ),
);
self::set_style( $function_name, $el_style );
$btn_side_display_selector = et_()->append_prepend_comma_separated_selectors( $css_element_processed, $button_side_display, 'suffix', false );
$button_icon_content .= ' font-family: ' . et_pb_get_icon_font_family( $current_icon ) . ' !important;';
$button_icon_content .= ' font-weight: ' . et_pb_get_icon_font_weight( $current_icon ) . ' !important;';
$el_style = array(
'selector' => $css_element_processed . $button_side_display,
'selector' => $btn_side_display_selector,
'declaration' => $button_icon_content,
'media_query' => self::get_media_query( $current_media_query ),
);
@ -17467,8 +17591,10 @@ class ET_Builder_Element {
'off' !== $current_on_hover ? 'opacity: 1;' : ''
);
$hover_selector = et_()->append_prepend_comma_separated_selectors( $css_element_processed, ':hover', 'suffix', false );
$hover_btn_icon_pseudo_selector = et_()->append_prepend_comma_separated_selectors( $hover_selector, $button_icon_pseudo_selector, 'suffix', false );
$el_style = array(
'selector' => $css_element_processed . ':hover' . $button_icon_pseudo_selector,
'selector' => $hover_btn_icon_pseudo_selector,
'declaration' => rtrim( $hover_after_styles ),
'media_query' => self::get_media_query( $current_media_query ),
);
@ -17480,8 +17606,9 @@ class ET_Builder_Element {
$default_icons_size = '1.6em';
$custom_icon_size = $current_text_size;
$btn_icon_pseudo_selector = et_()->append_prepend_comma_separated_selectors( $css_element_processed, $button_icon_pseudo_selector, 'suffix', false );
$el_style = array(
'selector' => $css_element_processed . $button_icon_pseudo_selector,
'selector' => $btn_icon_pseudo_selector,
'declaration' => sprintf( 'font-size:%1$s;', $default_icons_size ),
'media_query' => self::get_media_query( $current_media_query ),
);
@ -17500,8 +17627,10 @@ class ET_Builder_Element {
$default_icons_size = '1.6em';
$custom_icon_size = $button_text_size_hover_processed;
$hover_selector = et_()->append_prepend_comma_separated_selectors( $css_element_processed, ':hover', 'suffix', false );
$hover_btn_icon_pseudo_selector = et_()->append_prepend_comma_separated_selectors( $hover_selector, $button_icon_pseudo_selector, 'suffix', false );
$el_style = array(
'selector' => $css_element_processed . ':hover' . $button_icon_pseudo_selector,
'selector' => $hover_btn_icon_pseudo_selector,
'declaration' => sprintf( 'font-size:%1$s;', $default_icons_size ),
'media_query' => self::get_media_query( $current_media_query ),
);
@ -17593,7 +17722,10 @@ class ET_Builder_Element {
// 1.c. Build custom form field selector.
$bg_color_selector = ! empty( $option_settings['css']['background_color'] ) ? $option_settings['css']['background_color'] : $element_selector;
$alternating_bg_color_selector = ! empty( $option_settings['css']['alternating_background_color'] ) ? $option_settings['css']['alternating_background_color'] : $element_selector;
$bg_color_hover_selector = ! empty( $option_settings['css']['background_color_hover'] ) ? $option_settings['css']['background_color_hover'] : $element_hover_selector;
$alternating_bg_color_hover_selector = ! empty( $option_settings['css']['alternating_background_color_hover'] ) ?
$option_settings['css']['alternating_background_color_hover'] : $element_hover_selector;
$bg_color_focus_selector = ! empty( $option_settings['css']['focus_background_color'] ) ? $option_settings['css']['focus_background_color'] : $element_focus_selector;
$bg_color_focus_hover_selector = ! empty( $option_settings['css']['focus_background_color_hover'] ) ? $option_settings['css']['focus_background_color_hover'] : $element_focus_hover_selector;
@ -17629,6 +17761,18 @@ class ET_Builder_Element {
et_pb_responsive_options()->generate_responsive_css( $field_bg_color_values, $bg_color_selector, 'background-color', $function_name, $field_bg_color_important, 'color' );
// 3.a.1. Field Alternating Background Color.
$is_field_alternating_bg_color_responsive = et_pb_responsive_options()->is_responsive_enabled( $this->props, "{$option_name}_alternating_background_color" );
$field_alternating_bg_color_values = array(
'desktop' => esc_attr( et_pb_responsive_options()->get_any_value( $this->props, "{$option_name}_alternating_background_color" ) ),
'tablet' => $is_field_alternating_bg_color_responsive ? esc_attr( et_pb_responsive_options()->get_any_value( $this->props, "{$option_name}_alternating_background_color_tablet" ) ) : '',
'phone' => $is_field_alternating_bg_color_responsive ? esc_attr( et_pb_responsive_options()->get_any_value( $this->props, "{$option_name}_alternating_background_color_phone" ) ) : '',
);
$field_alternating_bg_color_important = $force_global_important || in_array( 'alternating_background_color', $important_list, true ) ? ' !important;' : '';
et_pb_responsive_options()->generate_responsive_css( $field_alternating_bg_color_values, $alternating_bg_color_selector, 'background-color', $function_name, $field_alternating_bg_color_important, 'color' );
// 3.a.2. Field Background Hover Color.
$field_bg_color_hover = $this->get_hover_value( "{$option_name}_background_color" );
if ( ! empty( $field_bg_color_hover ) ) {
@ -17639,6 +17783,16 @@ class ET_Builder_Element {
self::set_style( $function_name, $el_style );
}
// 3.a.2. Field Background Hover Color.
$field_alternating_bg_color_hover = $this->get_hover_value( "{$option_name}_alternating_background_color" );
if ( ! empty( $field_alternating_bg_color_hover ) ) {
$el_style = array(
'selector' => $alternating_bg_color_hover_selector,
'declaration' => sprintf( 'background-color:%1$s%2$s;', $field_alternating_bg_color_hover, $field_alternating_bg_color_important ),
);
self::set_style( $function_name, $el_style );
}
// 3.a.3. Field Background Sticky Color
$field_bg_color_sticky = $sticky->get_value(
"{$option_name}_background_color",
@ -18378,7 +18532,9 @@ class ET_Builder_Element {
'label' => esc_attr( $module->slug ),
'is_parent' => 'child' === $module->type ? 'off' : 'on',
'is_official_module' => $module->_is_official_module,
'use_unique_id' => $module->_use_unique_id,
'vb_support' => isset( $module->vb_support ) ? $module->vb_support : 'off',
'folder_name' => isset( $module->folder_name ) ? $module->folder_name : '',
);
if ( isset( $module->fullwidth ) && $module->fullwidth ) {

View File

@ -180,9 +180,6 @@ class ET_Builder_Module_Shortcode_Manager {
'et_pb_search' => [
'classname' => 'ET_Builder_Module_Search',
],
'et_pb_shop' => [
'classname' => 'ET_Builder_Module_Shop',
],
'et_pb_sidebar' => [
'classname' => 'ET_Builder_Module_Sidebar',
],
@ -414,6 +411,33 @@ class ET_Builder_Module_Shortcode_Manager {
'et_pb_wc_upsells' => [
'classname' => 'ET_Builder_Module_Woocommerce_Upsells',
],
'et_pb_wc_cart_products' => [
'classname' => 'ET_Builder_Module_Woocommerce_Cart_Products',
],
'et_pb_wc_cross_sells' => [
'classname' => 'ET_Builder_Module_Woocommerce_Cross_Sells',
],
'et_pb_wc_cart_totals' => [
'classname' => 'ET_Builder_Module_Woocommerce_Cart_Totals',
],
'et_pb_wc_checkout_billing' => [
'classname' => 'ET_Builder_Module_Woocommerce_Checkout_Billing',
],
'et_pb_wc_checkout_shipping' => [
'classname' => 'ET_Builder_Module_Woocommerce_Checkout_Shipping',
],
'et_pb_wc_checkout_order_details' => [
'classname' => 'ET_Builder_Module_Woocommerce_Checkout_Order_Details',
],
'et_pb_wc_checkout_payment_info' => [
'classname' => 'ET_Builder_Module_Woocommerce_Checkout_Payment_Info',
],
'et_pb_wc_checkout_additional_info' => [
'classname' => 'ET_Builder_Module_Woocommerce_Checkout_Additional_Info',
],
'et_pb_shop' => [
'classname' => 'ET_Builder_Module_Shop',
],
];
/**

View File

@ -2504,6 +2504,7 @@ function et_fb_get_nonces() {
'getTags' => wp_create_nonce( 'et_builder_ajax_get_tags' ),
'searchProducts' => wp_create_nonce( 'et_builder_ajax_search_products' ),
'getDisplayConditionsStatus' => wp_create_nonce( 'et_builder_ajax_get_display_conditions_status' ),
'getPostMetaFields' => wp_create_nonce( 'et_builder_ajax_get_post_meta_fields' ),
'globalColorsSave' => wp_create_nonce( 'et_builder_global_colors_save' ),
'defaultColorsUpdate' => wp_create_nonce( 'et_builder_default_colors_update' ),
);
@ -7116,11 +7117,12 @@ function et_builder_filter_main_query_paged_for_blog_module( $query ) {
*
* @var integer
*/
global $__et_blog_module_paged;
global $__et_blog_module_paged, $__et_portfolio_module_paged;
// phpcs:ignore WordPress.Security.NonceVerification -- This function does not change any state, and is therefore not susceptible to CSRF.
if ( isset( $_GET['et_blog'] ) && $query->is_main_query() ) {
if ( ( isset( $_GET['et_blog'] ) || isset( $_GET['et_portfolio'] ) ) && $query->is_main_query() ) {
$__et_blog_module_paged = $query->get( 'paged' );
$__et_portfolio_module_paged = $query->get( 'paged' );
$query->set( 'paged', 0 );
}
}

View File

@ -276,7 +276,16 @@ class ET_Builder_Ajax_Cache {
self::$_instance = new self();
}
return self::$_instance;
/**
* Filters the cache class instance that for caches AJAX requests.
*
* @param ET_Builder_Ajax_Cache Cache Instance
*
* @see GlobalHistoryMigrationTest
*
* @since 4.14.0
*/
return apply_filters( 'et_builder_ajax_cache_instance', self::$_instance );
}
}

View File

@ -34,13 +34,14 @@ class ET_Builder_Ajax_Data {
* Registers the AJAX actions when class is constructed.
*/
public function __construct() {
add_action( 'wp_ajax_et_builder_ajax_get_post_types', array( $this, 'et_builder_ajax_get_post_types' ) );
add_action( 'wp_ajax_et_builder_ajax_get_authors', array( $this, 'et_builder_ajax_get_authors' ) );
add_action( 'wp_ajax_et_builder_ajax_get_user_roles', array( $this, 'et_builder_ajax_get_user_roles' ) );
add_action( 'wp_ajax_et_builder_ajax_get_categories', array( $this, 'et_builder_ajax_get_categories' ) );
add_action( 'wp_ajax_et_builder_ajax_get_tags', array( $this, 'et_builder_ajax_get_tags' ) );
add_action( 'wp_ajax_et_builder_ajax_search_products', array( $this, 'et_builder_ajax_search_products' ) );
add_action( 'wp_ajax_et_builder_ajax_get_display_conditions_status', array( $this, 'et_builder_ajax_get_display_conditions_status' ) );
add_action( 'wp_ajax_et_builder_ajax_get_post_types', array( $this, 'get_post_types' ) );
add_action( 'wp_ajax_et_builder_ajax_get_authors', array( $this, 'get_authors' ) );
add_action( 'wp_ajax_et_builder_ajax_get_user_roles', array( $this, 'get_user_roles' ) );
add_action( 'wp_ajax_et_builder_ajax_get_categories', array( $this, 'get_categories' ) );
add_action( 'wp_ajax_et_builder_ajax_get_tags', array( $this, 'get_tags' ) );
add_action( 'wp_ajax_et_builder_ajax_search_products', array( $this, 'search_products' ) );
add_action( 'wp_ajax_et_builder_ajax_get_display_conditions_status', array( $this, 'get_display_conditions_status' ) );
add_action( 'wp_ajax_et_builder_ajax_get_post_meta_fields', array( $this, 'get_post_meta_fields' ) );
}
/**
@ -60,9 +61,24 @@ class ET_Builder_Ajax_Data {
*
* @return void
*/
public function et_builder_ajax_get_display_conditions_status() {
public function get_display_conditions_status() {
et_core_security_check( 'edit_posts', 'et_builder_ajax_get_display_conditions_status', 'nonce', '_POST' );
/**
* Filters "Display Conditions" functionality to determine whether to enable or disable the functionality or not.
*
* Useful for disabling/enabling "Display Condition" feature site-wide.
*
* @since 4.13.1
*
* @param boolean True to enable the functionality, False to disable it.
*/
$is_display_conditions_enabled = apply_filters( 'et_is_display_conditions_functionality_enabled', true );
if ( ! $is_display_conditions_enabled ) {
wp_send_json_error();
}
// $_POST['conditions'] is a JSON so there is no effective way to sanitize it at this level.
// phpcs:ignore ET.Sniffs.ValidatedSanitizedInput -- Conditions is not stored or displayed therefore XSS safe.
$conditions = isset( $_POST['conditions'] ) ? $_POST['conditions'] : '';
@ -82,7 +98,7 @@ class ET_Builder_Ajax_Data {
*
* @return void
*/
public function et_builder_ajax_search_products() {
public function search_products() {
et_core_security_check( 'edit_posts', 'et_builder_ajax_search_products', 'nonce', '_GET' );
$current_page = isset( $_GET['page'] ) ? (int) $_GET['page'] : 0;
@ -139,7 +155,7 @@ class ET_Builder_Ajax_Data {
*
* @return void
*/
public function et_builder_ajax_get_categories() {
public function get_categories() {
et_core_security_check( 'edit_posts', 'et_builder_ajax_get_categories', 'nonce', '_GET' );
$data = [];
@ -191,7 +207,7 @@ class ET_Builder_Ajax_Data {
*
* @return void
*/
public function et_builder_ajax_get_tags() {
public function get_tags() {
et_core_security_check( 'edit_posts', 'et_builder_ajax_get_tags', 'nonce', '_GET' );
$data = [];
@ -249,7 +265,7 @@ class ET_Builder_Ajax_Data {
*
* @return void
*/
public function et_builder_ajax_get_post_types() {
public function get_post_types() {
et_core_security_check( 'edit_posts', 'et_builder_ajax_get_post_types', 'nonce', '_GET' );
$current_page = isset( $_GET['page'] ) ? (int) $_GET['page'] : 0;
@ -303,7 +319,7 @@ class ET_Builder_Ajax_Data {
*
* @return void
*/
public function et_builder_ajax_get_authors() {
public function get_authors() {
et_core_security_check( 'edit_posts', 'et_builder_ajax_get_authors', 'nonce', '_GET' );
$current_page = isset( $_GET['page'] ) ? (int) $_GET['page'] : 0;
@ -375,7 +391,7 @@ class ET_Builder_Ajax_Data {
*
* @return void
*/
public function et_builder_ajax_get_user_roles() {
public function get_user_roles() {
et_core_security_check( 'edit_posts', 'et_builder_ajax_get_user_roles', 'nonce', '_GET' );
$user_roles = [];
@ -403,6 +419,36 @@ class ET_Builder_Ajax_Data {
wp_send_json_success( $results );
}
/**
* AJAX Action for getting a list of all meta fields assigned to a post.
*
* @return void
*/
public function get_post_meta_fields() {
et_core_security_check( 'edit_posts', 'et_builder_ajax_get_post_meta_fields', 'nonce', '_GET' );
$data = [];
$post_id = isset( $_GET['postId'] ) ? sanitize_text_field( $_GET['postId'] ) : '';
$meta_fields = get_post_meta( (int) $post_id );
/**
* Filters included meta fields for `et_builder_ajax_get_post_meta_fields` ajax action.
*
* @since 4.14.3
*
* @param array $meta_fields
*/
$meta_fields = apply_filters( 'et_builder_ajax_get_post_meta_fields', $meta_fields );
$data = is_array( $meta_fields ) ? $meta_fields : [];
$results = [
'results' => $data,
];
wp_send_json_success( $results );
}
}
ET_Builder_Ajax_Data::get_instance();

View File

@ -42,13 +42,98 @@ class ET_Builder_Display_Conditions {
* Init actions and filters needed for Display Condition's functionality
*/
public function __construct() {
// No Display Conditions related Hooks if below WordPress 5.3.
if ( version_compare( get_bloginfo( 'version' ), '5.3', '>=' ) ) {
add_action( 'wp', array( $this, 'et_display_conditions_post_visit_set_cookie' ) );
add_action( 'template_redirect', array( $this, 'et_display_conditions_number_of_views_set_cookie' ) );
add_action( 'save_post', array( $this, 'et_display_conditions_save_tracking_post_ids' ), 10, 3 );
add_action( 'delete_post', array( $this, 'et_display_conditions_delete_tracking_post_ids' ), 10, 1 );
add_filter( 'et_module_process_display_conditions', array( $this, 'process_display_conditions' ), 10, 3 );
add_filter( 'et_is_display_conditions_functionality_enabled', array( $this, 'check_if_wp_version_is_sufficient' ) );
add_action( 'wp', array( $this, 'post_visit_set_cookie' ) );
add_action( 'template_redirect', array( $this, 'number_of_views_set_cookie' ) );
add_action( 'save_post', array( $this, 'save_tracking_post_ids' ), 10, 3 );
add_action( 'delete_post', array( $this, 'delete_tracking_post_ids' ), 10, 1 );
}
/**
* Processes "Display Conditions" of a module and decides whether to display a module or not.
*
* We do need to render the module first and then decide to keep it or not, This is because we want the styles of
* the module (shortcode) and any nested modules inside it to get registered so "Dynamic Assets" would include the
* styles of all modules used on the page. Ref: https://github.com/elegantthemes/Divi/issues/24965
*
* @since 4.13.1
*
* @param string $output HTML output of the rendered module.
* @param string $render_method The render method used to render the module, Typically it's either
* 'render' or 'render_as_builder_data` @see ET_Builder_Element::_render().
*
* @param ET_Builder_Element $element_instance The current instance of ET_Builder_Element.
*
* @return string HTML output of the rendered module if conditions are met, Empty otherwise.
*/
public function process_display_conditions( $output, $render_method, $element_instance ) {
/**
* Filters "Display Conditions" functionality to determine whether to enable or disable the functionality or not.
*
* Useful for disabling/enabling "Display Condition" feature site-wide.
*
* @since 4.13.1
*
* @param boolean True to enable the functionality, False to disable it.
*/
$is_display_conditions_enabled = apply_filters( 'et_is_display_conditions_functionality_enabled', true );
if ( ! $is_display_conditions_enabled ) {
return $output;
}
// Setup variables.
$is_displayable = true;
$is_display_conditions_set = isset( $element_instance->props['display_conditions'] ) && ! empty( $element_instance->props['display_conditions'] );
$is_display_conditions_as_base64_empty = 'W10=' === $element_instance->props['display_conditions'];
$has_display_conditions = $is_display_conditions_set && ! $is_display_conditions_as_base64_empty;
// Check if display_conditions attribute is defined, Decode the data and check if it is displayable.
if ( $has_display_conditions ) {
$display_conditions_json = base64_decode( $element_instance->props['display_conditions'] ); // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_decode -- The returned data is an array and necessary validation checks are performed.
}
if ( $has_display_conditions && false !== $display_conditions_json ) {
$display_conditions = json_decode( $display_conditions_json, true );
$is_displayable = \ET_Builder_Module_Fields_Factory::get( 'DisplayConditions' )->is_displayable( $display_conditions );
}
$is_vb_ajax_nonce_valid = isset( $_POST['et_pb_process_computed_property_nonce'] ) && wp_verify_nonce( sanitize_text_field( $_POST['et_pb_process_computed_property_nonce'] ), 'et_pb_process_computed_property_nonce' );
// Check if we're rendering on frontend, Then decide whether to keep the output or erase it.
if ( 'render' === $render_method ) {
if ( wp_doing_ajax() && $is_vb_ajax_nonce_valid && et_pb_is_pagebuilder_used( get_the_ID() ) ) {
// "Blog Module" in VB will be rendered like a normal frontend request not as builder data, Here we retain the output
// so it will always be visible in VB ignoring Display Conditions Ref: https://github.com/elegantthemes/Divi/issues/23309, https://github.com/elegantthemes/Divi/issues/25463.
$output = $output;
} elseif ( 'et_pb_post_content' === $element_instance->slug && ! $is_displayable && et_core_is_fb_enabled() ) {
// When VB is loaded and "Post Content" Module is used in TB and it's not displayable, set the correct
// output so it'd be displayed in VB and TB respectively Ref: https://github.com/elegantthemes/Divi/issues/23479.
$output = $output;
} else {
// All other scenarios will fall here, Normal frontend request, AJAX frontend request, etc.
$output = ( $is_displayable ) ? $output : '';
}
}
return $output;
}
/**
* Checks if WordPress version is sufficient for "Display Conditions" feature.
*
* @since 4.13.1
*
* @param boolean $is_display_conditions_enabled True if "Display Conditions" functionality is enabled, False if it's disabled.
*
* @return boolean True if WordPress version is sufficient & "Display Condition" functionality is enabled, False otherwise.
*/
public function check_if_wp_version_is_sufficient( $is_display_conditions_enabled ) {
/**
* We intentionally check `$is_display_conditions_enabled` to avoid enabling the functionality if it has been
* disabled via `add_filter()` with lower priority sooner.
*/
return version_compare( get_bloginfo( 'version' ), '5.3', '>=' ) && $is_display_conditions_enabled ? true : false;
}
/**
@ -65,7 +150,21 @@ class ET_Builder_Display_Conditions {
*
* @return void
*/
public function et_display_conditions_save_tracking_post_ids( $post_id, $post, $update ) {
public function save_tracking_post_ids( $post_id, $post, $update ) {
/**
* Filters "Display Conditions" functionality to determine whether to enable or disable the functionality or not.
*
* Useful for disabling/enabling "Display Condition" feature site-wide.
*
* @since 4.13.1
*
* @param boolean True to enable the functionality, False to disable it.
*/
$is_display_conditions_enabled = apply_filters( 'et_is_display_conditions_functionality_enabled', true );
if ( ! $is_display_conditions_enabled ) {
return;
}
/**
* Validation and Security Checks.
@ -174,7 +273,22 @@ class ET_Builder_Display_Conditions {
*
* @return void
*/
public function et_display_conditions_delete_tracking_post_ids( $post_id ) {
public function delete_tracking_post_ids( $post_id ) {
/**
* Filters "Display Conditions" functionality to determine whether to enable or disable the functionality or not.
*
* Useful for disabling/enabling "Display Condition" feature site-wide.
*
* @since 4.13.1
*
* @param boolean True to enable the functionality, False to disable it.
*/
$is_display_conditions_enabled = apply_filters( 'et_is_display_conditions_functionality_enabled', true );
if ( ! $is_display_conditions_enabled ) {
return;
}
$post = get_post( $post_id );
$wp_option = get_option( 'et_display_conditions_tracking_post_ids', null );
$is_wp_option_exist = is_array( $wp_option ) && ! empty( $wp_option );
@ -220,7 +334,22 @@ class ET_Builder_Display_Conditions {
*
* @return void
*/
public function et_display_conditions_post_visit_set_cookie() {
public function post_visit_set_cookie() {
/**
* Filters "Display Conditions" functionality to determine whether to enable or disable the functionality or not.
*
* Useful for disabling/enabling "Display Condition" feature site-wide.
*
* @since 4.13.1
*
* @param boolean True to enable the functionality, False to disable it.
*/
$is_display_conditions_enabled = apply_filters( 'et_is_display_conditions_functionality_enabled', true );
if ( ! $is_display_conditions_enabled ) {
return;
}
if ( ! is_singular() ) {
return;
}
@ -239,6 +368,9 @@ class ET_Builder_Display_Conditions {
if ( isset( $_COOKIE['divi_post_visit'] ) ) {
$new_cookie = json_decode( base64_decode( $_COOKIE['divi_post_visit'] ), true ); // phpcs:ignore ET.Sniffs.ValidatedSanitizedInput, WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_decode -- Cookie is not stored or displayed therefore XSS safe, base64_decode returned data is an array and necessary validation checks are performed.
}
if ( $new_cookie && is_array( $new_cookie ) ) {
$has_visited_page_before = array_search( $current_post_id, array_column( $new_cookie, 'id' ), true );
}
@ -258,7 +390,21 @@ class ET_Builder_Display_Conditions {
*
* @return void
*/
public function et_display_conditions_number_of_views_set_cookie() {
public function number_of_views_set_cookie() {
/**
* Filters "Display Conditions" functionality to determine whether to enable or disable the functionality or not.
*
* Useful for disabling/enabling "Display Condition" feature site-wide.
*
* @since 4.13.1
*
* @param boolean True to enable the functionality, False to disable it.
*/
$is_display_conditions_enabled = apply_filters( 'et_is_display_conditions_functionality_enabled', true );
if ( ! $is_display_conditions_enabled ) {
return;
}
// Do not run on VB itself.
if ( et_core_is_fb_enabled() ) {
@ -306,14 +452,15 @@ class ET_Builder_Display_Conditions {
*
* @since 4.11.0
*
* @param array $display_conditions_attrs Array of conditions as base64 encoded data.
* @param array $display_conditions_attrs Array of base64 encoded conditions.
*
* @return array
*/
public function number_of_views_process_conditions( $display_conditions_attrs ) {
$is_cookie_set = isset( $_COOKIE['divi_module_views'] ) ? true : false;
$is_cookie_set = isset( $_COOKIE['divi_module_views'] );
$current_datetime = current_datetime();
$cookie = $is_cookie_set ? json_decode( base64_decode( $_COOKIE['divi_module_views'] ), true ) : []; // phpcs:ignore ET.Sniffs.ValidatedSanitizedInput, WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_decode -- Cookie is not stored or displayed therefore XSS safe, The returned data is an array and necessary validation checks are performed.
$decoded_cookie = $is_cookie_set ? json_decode( base64_decode( $_COOKIE['divi_module_views'] ), true ) : []; // phpcs:ignore ET.Sniffs.ValidatedSanitizedInput, WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_decode -- Cookie is not stored or displayed therefore XSS safe, The returned data is an array and necessary validation checks are performed.
$cookie = is_array( $decoded_cookie ) ? $decoded_cookie : [];
// Decode NumberOfViews conditions one by one then set or update cookie.
foreach ( $display_conditions_attrs as $condition_base64 ) {

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
.et_pb_with_border.et_pb_comments_module .commentlist li img.avatar,.et_pb_with_border.et_pb_comments_module input,.et_pb_with_border.et_pb_comments_module textarea{border:0 solid #333}.et_pb_comments_module #comment-wrap{padding-top:0;position:relative}.et_pb_comments_module.et_pb_no_avatar .comment_avatar{display:none}.et_pb_comments_module.et_pb_no_avatar .comment-body{padding-left:0!important;min-height:0!important}.et_pb_comments_module.et_pb_no_avatar.et_pb_no_reply_button .comment-body{margin-bottom:15px!important}.et_pb_comments_module.et_pb_no_reply_button span.reply-container{display:none}.et_pb_comments_module.et_pb_no_reply_button .comment-body{padding-right:0!important}.et_pb_comments_module.et_pb_no_comments_count #comments{display:none}.et_pb_bg_layout_dark .comment_postinfo a,.et_pb_bg_layout_dark .comment_postinfo span{color:#fff}@media (min-width:480px){.et_pb_column_1_4 .et_pb_comments_module .comment_avatar img,.et_pb_column_1_5 .et_pb_comments_module .comment_avatar img,.et_pb_column_1_6 .et_pb_comments_module .comment_avatar img{max-width:50%}.et_pb_column_1_4 .et_pb_comments_module .comment-body,.et_pb_column_1_5 .et_pb_comments_module .comment-body,.et_pb_column_1_6 .et_pb_comments_module .comment-body{padding:0 0 0 50px}.et_pb_column_1_4 .et_pb_comments_module .comment .children,.et_pb_column_1_5 .et_pb_comments_module .comment .children,.et_pb_column_1_6 .et_pb_comments_module .comment .children{margin-left:0}.et_pb_column_1_4 .et_pb_comments_module .comment-reply-link,.et_pb_column_1_5 .et_pb_comments_module .comment-reply-link,.et_pb_column_1_6 .et_pb_comments_module .comment-reply-link{position:relative!important;float:right;bottom:-10px;top:auto!important}}@media (min-width:981px){.et_pb_column_1_2 .et_pb_comments_module .comment_avatar img,.et_pb_column_1_3 .et_pb_comments_module .comment_avatar img,.et_pb_column_1_4 .et_pb_comments_module .comment_avatar img,.et_pb_column_1_5 .et_pb_comments_module .comment_avatar img,.et_pb_column_1_6 .et_pb_comments_module .comment_avatar img,.et_pb_column_2_5 .et_pb_comments_module .comment_avatar img,.et_pb_column_3_5 .et_pb_comments_module .comment_avatar img{max-width:50%}.et_pb_column_1_2 .et_pb_comments_module .comment-body,.et_pb_column_1_3 .et_pb_comments_module .comment-body,.et_pb_column_1_4 .et_pb_comments_module .comment-body,.et_pb_column_1_5 .et_pb_comments_module .comment-body,.et_pb_column_1_6 .et_pb_comments_module .comment-body,.et_pb_column_2_5 .et_pb_comments_module .comment-body,.et_pb_column_3_5 .et_pb_comments_module .comment-body{padding:0 0 0 50px}.et_pb_column_1_2 .et_pb_comments_module .comment .children,.et_pb_column_1_3 .et_pb_comments_module .comment .children,.et_pb_column_1_4 .et_pb_comments_module .comment .children,.et_pb_column_1_5 .et_pb_comments_module .comment .children,.et_pb_column_1_6 .et_pb_comments_module .comment .children,.et_pb_column_2_5 .et_pb_comments_module .comment .children,.et_pb_column_3_5 .et_pb_comments_module .comment .children{margin-left:25px}.et_pb_column_1_2 .et_pb_comments_module .comment-reply-link,.et_pb_column_1_3 .et_pb_comments_module .comment-reply-link,.et_pb_column_1_4 .et_pb_comments_module .comment-reply-link,.et_pb_column_1_5 .et_pb_comments_module .comment-reply-link,.et_pb_column_1_6 .et_pb_comments_module .comment-reply-link,.et_pb_column_2_5 .et_pb_comments_module .comment-reply-link,.et_pb_column_3_5 .et_pb_comments_module .comment-reply-link{position:relative!important;float:right;bottom:-10px;top:auto!important}.et_pb_column_1_2 .et_pb_comments_module #commentform [class*=comment-form-] input,.et_pb_column_1_3 .et_pb_comments_module #commentform [class*=comment-form-] input,.et_pb_column_1_4 .et_pb_comments_module #commentform [class*=comment-form-] input,.et_pb_column_1_5 .et_pb_comments_module #commentform [class*=comment-form-] input,.et_pb_column_1_6 .et_pb_comments_module #commentform [class*=comment-form-] input,.et_pb_column_2_5 .et_pb_comments_module #commentform [class*=comment-form-] input,.et_pb_column_3_5 .et_pb_comments_module #commentform [class*=comment-form-] input{box-sizing:border-box;width:100%}}.single-project #comment-wrap{padding-top:0}
.et_pb_with_border.et_pb_comments_module .commentlist li img.avatar,.et_pb_with_border.et_pb_comments_module input,.et_pb_with_border.et_pb_comments_module textarea{border:0 solid #333}.et_pb_comments_module #comment-wrap{padding-top:0;position:relative}.et_pb_comments_module.et_pb_no_avatar .comment_avatar{display:none}.et_pb_comments_module.et_pb_no_avatar .comment-body{padding-left:0!important;min-height:0!important}.et_pb_comments_module.et_pb_no_avatar.et_pb_no_reply_button .comment-body{margin-bottom:15px!important}.et_pb_comments_module.et_pb_no_reply_button span.reply-container{display:none}.et_pb_comments_module.et_pb_no_reply_button .comment-body{padding-right:0!important}.et_pb_comments_module.et_pb_no_comments_count #comments,.et_pb_comments_module.et_pb_no_comments_meta .comment_postinfo{display:none}.et_pb_bg_layout_dark .comment_postinfo a,.et_pb_bg_layout_dark .comment_postinfo span{color:#fff}@media (min-width:480px){.et_pb_column_1_4 .et_pb_comments_module .comment_avatar img,.et_pb_column_1_5 .et_pb_comments_module .comment_avatar img,.et_pb_column_1_6 .et_pb_comments_module .comment_avatar img{max-width:50%}.et_pb_column_1_4 .et_pb_comments_module .comment-body,.et_pb_column_1_5 .et_pb_comments_module .comment-body,.et_pb_column_1_6 .et_pb_comments_module .comment-body{padding:0 0 0 50px}.et_pb_column_1_4 .et_pb_comments_module .comment .children,.et_pb_column_1_5 .et_pb_comments_module .comment .children,.et_pb_column_1_6 .et_pb_comments_module .comment .children{margin-left:0}.et_pb_column_1_4 .et_pb_comments_module .comment-reply-link,.et_pb_column_1_5 .et_pb_comments_module .comment-reply-link,.et_pb_column_1_6 .et_pb_comments_module .comment-reply-link{position:relative!important;float:right;bottom:-10px;top:auto!important}}@media (min-width:981px){.et_pb_column_1_2 .et_pb_comments_module .comment_avatar img,.et_pb_column_1_3 .et_pb_comments_module .comment_avatar img,.et_pb_column_1_4 .et_pb_comments_module .comment_avatar img,.et_pb_column_1_5 .et_pb_comments_module .comment_avatar img,.et_pb_column_1_6 .et_pb_comments_module .comment_avatar img,.et_pb_column_2_5 .et_pb_comments_module .comment_avatar img,.et_pb_column_3_5 .et_pb_comments_module .comment_avatar img{max-width:50%}.et_pb_column_1_2 .et_pb_comments_module .comment-body,.et_pb_column_1_3 .et_pb_comments_module .comment-body,.et_pb_column_1_4 .et_pb_comments_module .comment-body,.et_pb_column_1_5 .et_pb_comments_module .comment-body,.et_pb_column_1_6 .et_pb_comments_module .comment-body,.et_pb_column_2_5 .et_pb_comments_module .comment-body,.et_pb_column_3_5 .et_pb_comments_module .comment-body{padding:0 0 0 50px}.et_pb_column_1_2 .et_pb_comments_module .comment .children,.et_pb_column_1_3 .et_pb_comments_module .comment .children,.et_pb_column_1_4 .et_pb_comments_module .comment .children,.et_pb_column_1_5 .et_pb_comments_module .comment .children,.et_pb_column_1_6 .et_pb_comments_module .comment .children,.et_pb_column_2_5 .et_pb_comments_module .comment .children,.et_pb_column_3_5 .et_pb_comments_module .comment .children{margin-left:25px}.et_pb_column_1_2 .et_pb_comments_module .comment-reply-link,.et_pb_column_1_3 .et_pb_comments_module .comment-reply-link,.et_pb_column_1_4 .et_pb_comments_module .comment-reply-link,.et_pb_column_1_5 .et_pb_comments_module .comment-reply-link,.et_pb_column_1_6 .et_pb_comments_module .comment-reply-link,.et_pb_column_2_5 .et_pb_comments_module .comment-reply-link,.et_pb_column_3_5 .et_pb_comments_module .comment-reply-link{position:relative!important;float:right;bottom:-10px;top:auto!important}.et_pb_column_1_2 .et_pb_comments_module #commentform [class*=comment-form-] input,.et_pb_column_1_3 .et_pb_comments_module #commentform [class*=comment-form-] input,.et_pb_column_1_4 .et_pb_comments_module #commentform [class*=comment-form-] input,.et_pb_column_1_5 .et_pb_comments_module #commentform [class*=comment-form-] input,.et_pb_column_1_6 .et_pb_comments_module #commentform [class*=comment-form-] input,.et_pb_column_2_5 .et_pb_comments_module #commentform [class*=comment-form-] input,.et_pb_column_3_5 .et_pb_comments_module #commentform [class*=comment-form-] input{box-sizing:border-box;width:100%}}.single-project #comment-wrap{padding-top:0}

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
.et_pb_grid_item.first_in_row{clear:both}.et_pb_grid_item:not(.first_in_row){clear:none}@media (min-width:981px){.et_pb_grid_item{float:left;position:relative}}@media (max-width:980px){.et_pb_column .et_pb_grid_item{margin:0 5.5% 7.5% 0;width:29.666%;clear:none;float:left}.et_pb_column .et_pb_grid_item.last_in_row{margin-right:0}.et_pb_row_1-2_1-4_1-4>.et_pb_column.et_pb_column_1_4 .et_pb_grid_item,.et_pb_row_1-2_1-6_1-6_1-6>.et_pb_column.et_pb_column_1_6 .et_pb_grid_item,.et_pb_row_1-4_1-4>.et_pb_column.et_pb_column_1_4 .et_pb_grid_item,.et_pb_row_1-4_1-4_1-2>.et_pb_column.et_pb_column_1_4 .et_pb_grid_item,.et_pb_row_1-5_1-5_3-5>.et_pb_column.et_pb_column_1_5 .et_pb_grid_item,.et_pb_row_1-6_1-6_1-6>.et_pb_column.et_pb_column_1_6 .et_pb_grid_item,.et_pb_row_1-6_1-6_1-6_1-2>.et_pb_column.et_pb_column_1_6 .et_pb_grid_item,.et_pb_row_1-6_1-6_1-6_1-6>.et_pb_column.et_pb_column_1_6 .et_pb_grid_item,.et_pb_row_3-5_1-5_1-5>.et_pb_column.et_pb_column_1_5 .et_pb_grid_item,.et_pb_row_4col>.et_pb_column.et_pb_column_1_4 .et_pb_grid_item,.et_pb_row_5col>.et_pb_column.et_pb_column_1_5 .et_pb_grid_item,.et_pb_row_6col>.et_pb_column.et_pb_column_1_6 .et_pb_grid_item{margin:0 0 11.5%;width:100%}}@media (max-width:767px){.et_pb_column .et_pb_grid_item{margin:0 5.5% 9.5% 0;width:47.25%;clear:none;float:left}.et_pb_column .et_pb_grid_item:nth-child(3n){margin-right:5.5%}.et_pb_column .et_pb_grid_item:nth-child(3n+1){clear:none}.et_pb_column .et_pb_grid_item .last_in_row,.et_pb_column .et_pb_grid_item:nth-child(2n){margin-right:0}.et_pb_column .et_pb_grid_item .first_in_row,.et_pb_column .et_pb_grid_item:nth-child(odd){clear:both}}@media (max-width:479px){.et_pb_column .et_pb_grid_item{margin:0 0 11.5%;width:100%}.et_pb_column .et_pb_grid_item .on_last_row{margin-bottom:0}.et_pb_row_1-2_1-4_1-4>.et_pb_column.et_pb_column_1_4 .et_pb_grid_item,.et_pb_row_1-2_1-6_1-6_1-6>.et_pb_column.et_pb_column_1_6 .et_pb_grid_item,.et_pb_row_1-4_1-4>.et_pb_column.et_pb_column_1_4 .et_pb_grid_item,.et_pb_row_1-4_1-4_1-2>.et_pb_column.et_pb_column_1_4 .et_pb_grid_item,.et_pb_row_1-5_1-5_3-5>.et_pb_column.et_pb_column_1_5 .et_pb_grid_item,.et_pb_row_1-6_1-6_1-6>.et_pb_column.et_pb_column_1_6 .et_pb_grid_item,.et_pb_row_1-6_1-6_1-6_1-2>.et_pb_column.et_pb_column_1_6 .et_pb_grid_item,.et_pb_row_1-6_1-6_1-6_1-6>.et_pb_column.et_pb_column_1_6 .et_pb_grid_item,.et_pb_row_3-5_1-5_1-5>.et_pb_column.et_pb_column_1_5 .et_pb_grid_item,.et_pb_row_4col>.et_pb_column.et_pb_column_1_4 .et_pb_grid_item,.et_pb_row_5col>.et_pb_column.et_pb_column_1_5 .et_pb_grid_item,.et_pb_row_6col>.et_pb_column.et_pb_column_1_6 .et_pb_grid_item{margin:0 0 11.5%;width:100%}}
.et_pb_grid_item.first_in_row{clear:both}.et_pb_grid_item:not(.first_in_row){clear:none}.et_pb_grid_item.et_pb_gallery_item.first_in_row{clear:both}@media (min-width:981px){.et_pb_grid_item{float:left;position:relative}}@media (max-width:980px){.et_pb_column .et_pb_grid_item{margin:0 5.5% 7.5% 0;width:29.666%;clear:none;float:left}.et_pb_column .et_pb_grid_item.last_in_row{margin-right:0}.et_pb_row_1-2_1-4_1-4>.et_pb_column.et_pb_column_1_4 .et_pb_grid_item,.et_pb_row_1-2_1-6_1-6_1-6>.et_pb_column.et_pb_column_1_6 .et_pb_grid_item,.et_pb_row_1-4_1-4>.et_pb_column.et_pb_column_1_4 .et_pb_grid_item,.et_pb_row_1-4_1-4_1-2>.et_pb_column.et_pb_column_1_4 .et_pb_grid_item,.et_pb_row_1-5_1-5_3-5>.et_pb_column.et_pb_column_1_5 .et_pb_grid_item,.et_pb_row_1-6_1-6_1-6>.et_pb_column.et_pb_column_1_6 .et_pb_grid_item,.et_pb_row_1-6_1-6_1-6_1-2>.et_pb_column.et_pb_column_1_6 .et_pb_grid_item,.et_pb_row_1-6_1-6_1-6_1-6>.et_pb_column.et_pb_column_1_6 .et_pb_grid_item,.et_pb_row_3-5_1-5_1-5>.et_pb_column.et_pb_column_1_5 .et_pb_grid_item,.et_pb_row_4col>.et_pb_column.et_pb_column_1_4 .et_pb_grid_item,.et_pb_row_5col>.et_pb_column.et_pb_column_1_5 .et_pb_grid_item,.et_pb_row_6col>.et_pb_column.et_pb_column_1_6 .et_pb_grid_item{margin:0 0 11.5%;width:100%}}@media (max-width:767px){.et_pb_column .et_pb_grid_item{margin:0 5.5% 9.5% 0;width:47.25%;clear:none;float:left}.et_pb_column .et_pb_grid_item:nth-child(3n){margin-right:5.5%}.et_pb_column .et_pb_grid_item:nth-child(3n+1){clear:none}.et_pb_column .et_pb_grid_item .last_in_row,.et_pb_column .et_pb_grid_item:nth-child(2n){margin-right:0}.et_pb_column .et_pb_grid_item .first_in_row,.et_pb_column .et_pb_grid_item:nth-child(odd){clear:both}}@media (max-width:479px){.et_pb_column .et_pb_grid_item{margin:0 0 11.5%;width:100%}.et_pb_column .et_pb_grid_item .on_last_row{margin-bottom:0}.et_pb_row_1-2_1-4_1-4>.et_pb_column.et_pb_column_1_4 .et_pb_grid_item,.et_pb_row_1-2_1-6_1-6_1-6>.et_pb_column.et_pb_column_1_6 .et_pb_grid_item,.et_pb_row_1-4_1-4>.et_pb_column.et_pb_column_1_4 .et_pb_grid_item,.et_pb_row_1-4_1-4_1-2>.et_pb_column.et_pb_column_1_4 .et_pb_grid_item,.et_pb_row_1-5_1-5_3-5>.et_pb_column.et_pb_column_1_5 .et_pb_grid_item,.et_pb_row_1-6_1-6_1-6>.et_pb_column.et_pb_column_1_6 .et_pb_grid_item,.et_pb_row_1-6_1-6_1-6_1-2>.et_pb_column.et_pb_column_1_6 .et_pb_grid_item,.et_pb_row_1-6_1-6_1-6_1-6>.et_pb_column.et_pb_column_1_6 .et_pb_grid_item,.et_pb_row_3-5_1-5_1-5>.et_pb_column.et_pb_column_1_5 .et_pb_grid_item,.et_pb_row_4col>.et_pb_column.et_pb_column_1_4 .et_pb_grid_item,.et_pb_row_5col>.et_pb_column.et_pb_column_1_5 .et_pb_grid_item,.et_pb_row_6col>.et_pb_column.et_pb_column_1_6 .et_pb_grid_item{margin:0 0 11.5%;width:100%}}

View File

@ -1 +1 @@
.et-db #et-boc .et-l .et_pb_grid_item.first_in_row{clear:both}.et-db #et-boc .et-l .et_pb_grid_item:not(.first_in_row){clear:none}@media (min-width:981px){.et-db #et-boc .et-l .et_pb_grid_item{float:left;position:relative}}@media (max-width:980px){.et-db #et-boc .et-l .et_pb_column .et_pb_grid_item{margin:0 5.5% 7.5% 0;width:29.666%;clear:none;float:left}.et-db #et-boc .et-l .et_pb_column .et_pb_grid_item.last_in_row{margin-right:0}.et-db #et-boc .et-l .et_pb_row_1-2_1-4_1-4>.et_pb_column.et_pb_column_1_4 .et_pb_grid_item,.et-db #et-boc .et-l .et_pb_row_1-2_1-6_1-6_1-6>.et_pb_column.et_pb_column_1_6 .et_pb_grid_item,.et-db #et-boc .et-l .et_pb_row_1-4_1-4>.et_pb_column.et_pb_column_1_4 .et_pb_grid_item,.et-db #et-boc .et-l .et_pb_row_1-4_1-4_1-2>.et_pb_column.et_pb_column_1_4 .et_pb_grid_item,.et-db #et-boc .et-l .et_pb_row_1-5_1-5_3-5>.et_pb_column.et_pb_column_1_5 .et_pb_grid_item,.et-db #et-boc .et-l .et_pb_row_1-6_1-6_1-6>.et_pb_column.et_pb_column_1_6 .et_pb_grid_item,.et-db #et-boc .et-l .et_pb_row_1-6_1-6_1-6_1-2>.et_pb_column.et_pb_column_1_6 .et_pb_grid_item,.et-db #et-boc .et-l .et_pb_row_1-6_1-6_1-6_1-6>.et_pb_column.et_pb_column_1_6 .et_pb_grid_item,.et-db #et-boc .et-l .et_pb_row_3-5_1-5_1-5>.et_pb_column.et_pb_column_1_5 .et_pb_grid_item,.et-db #et-boc .et-l .et_pb_row_4col>.et_pb_column.et_pb_column_1_4 .et_pb_grid_item,.et-db #et-boc .et-l .et_pb_row_5col>.et_pb_column.et_pb_column_1_5 .et_pb_grid_item,.et-db #et-boc .et-l .et_pb_row_6col>.et_pb_column.et_pb_column_1_6 .et_pb_grid_item{margin:0 0 11.5%;width:100%}}@media (max-width:767px){.et-db #et-boc .et-l .et_pb_column .et_pb_grid_item{margin:0 5.5% 9.5% 0;width:47.25%;clear:none;float:left}.et-db #et-boc .et-l .et_pb_column .et_pb_grid_item:nth-child(3n){margin-right:5.5%}.et-db #et-boc .et-l .et_pb_column .et_pb_grid_item:nth-child(3n+1){clear:none}.et-db #et-boc .et-l .et_pb_column .et_pb_grid_item .last_in_row,.et-db #et-boc .et-l .et_pb_column .et_pb_grid_item:nth-child(2n){margin-right:0}.et-db #et-boc .et-l .et_pb_column .et_pb_grid_item .first_in_row,.et-db #et-boc .et-l .et_pb_column .et_pb_grid_item:nth-child(odd){clear:both}}@media (max-width:479px){.et-db #et-boc .et-l .et_pb_column .et_pb_grid_item{margin:0 0 11.5%;width:100%}.et-db #et-boc .et-l .et_pb_column .et_pb_grid_item .on_last_row{margin-bottom:0}.et-db #et-boc .et-l .et_pb_row_1-2_1-4_1-4>.et_pb_column.et_pb_column_1_4 .et_pb_grid_item,.et-db #et-boc .et-l .et_pb_row_1-2_1-6_1-6_1-6>.et_pb_column.et_pb_column_1_6 .et_pb_grid_item,.et-db #et-boc .et-l .et_pb_row_1-4_1-4>.et_pb_column.et_pb_column_1_4 .et_pb_grid_item,.et-db #et-boc .et-l .et_pb_row_1-4_1-4_1-2>.et_pb_column.et_pb_column_1_4 .et_pb_grid_item,.et-db #et-boc .et-l .et_pb_row_1-5_1-5_3-5>.et_pb_column.et_pb_column_1_5 .et_pb_grid_item,.et-db #et-boc .et-l .et_pb_row_1-6_1-6_1-6>.et_pb_column.et_pb_column_1_6 .et_pb_grid_item,.et-db #et-boc .et-l .et_pb_row_1-6_1-6_1-6_1-2>.et_pb_column.et_pb_column_1_6 .et_pb_grid_item,.et-db #et-boc .et-l .et_pb_row_1-6_1-6_1-6_1-6>.et_pb_column.et_pb_column_1_6 .et_pb_grid_item,.et-db #et-boc .et-l .et_pb_row_3-5_1-5_1-5>.et_pb_column.et_pb_column_1_5 .et_pb_grid_item,.et-db #et-boc .et-l .et_pb_row_4col>.et_pb_column.et_pb_column_1_4 .et_pb_grid_item,.et-db #et-boc .et-l .et_pb_row_5col>.et_pb_column.et_pb_column_1_5 .et_pb_grid_item,.et-db #et-boc .et-l .et_pb_row_6col>.et_pb_column.et_pb_column_1_6 .et_pb_grid_item{margin:0 0 11.5%;width:100%}}
.et-db #et-boc .et-l .et_pb_grid_item.first_in_row{clear:both}.et-db #et-boc .et-l .et_pb_grid_item:not(.first_in_row){clear:none}.et-db #et-boc .et-l .et_pb_grid_item.et_pb_gallery_item.first_in_row{clear:both}@media (min-width:981px){.et-db #et-boc .et-l .et_pb_grid_item{float:left;position:relative}}@media (max-width:980px){.et-db #et-boc .et-l .et_pb_column .et_pb_grid_item{margin:0 5.5% 7.5% 0;width:29.666%;clear:none;float:left}.et-db #et-boc .et-l .et_pb_column .et_pb_grid_item.last_in_row{margin-right:0}.et-db #et-boc .et-l .et_pb_row_1-2_1-4_1-4>.et_pb_column.et_pb_column_1_4 .et_pb_grid_item,.et-db #et-boc .et-l .et_pb_row_1-2_1-6_1-6_1-6>.et_pb_column.et_pb_column_1_6 .et_pb_grid_item,.et-db #et-boc .et-l .et_pb_row_1-4_1-4>.et_pb_column.et_pb_column_1_4 .et_pb_grid_item,.et-db #et-boc .et-l .et_pb_row_1-4_1-4_1-2>.et_pb_column.et_pb_column_1_4 .et_pb_grid_item,.et-db #et-boc .et-l .et_pb_row_1-5_1-5_3-5>.et_pb_column.et_pb_column_1_5 .et_pb_grid_item,.et-db #et-boc .et-l .et_pb_row_1-6_1-6_1-6>.et_pb_column.et_pb_column_1_6 .et_pb_grid_item,.et-db #et-boc .et-l .et_pb_row_1-6_1-6_1-6_1-2>.et_pb_column.et_pb_column_1_6 .et_pb_grid_item,.et-db #et-boc .et-l .et_pb_row_1-6_1-6_1-6_1-6>.et_pb_column.et_pb_column_1_6 .et_pb_grid_item,.et-db #et-boc .et-l .et_pb_row_3-5_1-5_1-5>.et_pb_column.et_pb_column_1_5 .et_pb_grid_item,.et-db #et-boc .et-l .et_pb_row_4col>.et_pb_column.et_pb_column_1_4 .et_pb_grid_item,.et-db #et-boc .et-l .et_pb_row_5col>.et_pb_column.et_pb_column_1_5 .et_pb_grid_item,.et-db #et-boc .et-l .et_pb_row_6col>.et_pb_column.et_pb_column_1_6 .et_pb_grid_item{margin:0 0 11.5%;width:100%}}@media (max-width:767px){.et-db #et-boc .et-l .et_pb_column .et_pb_grid_item{margin:0 5.5% 9.5% 0;width:47.25%;clear:none;float:left}.et-db #et-boc .et-l .et_pb_column .et_pb_grid_item:nth-child(3n){margin-right:5.5%}.et-db #et-boc .et-l .et_pb_column .et_pb_grid_item:nth-child(3n+1){clear:none}.et-db #et-boc .et-l .et_pb_column .et_pb_grid_item .last_in_row,.et-db #et-boc .et-l .et_pb_column .et_pb_grid_item:nth-child(2n){margin-right:0}.et-db #et-boc .et-l .et_pb_column .et_pb_grid_item .first_in_row,.et-db #et-boc .et-l .et_pb_column .et_pb_grid_item:nth-child(odd){clear:both}}@media (max-width:479px){.et-db #et-boc .et-l .et_pb_column .et_pb_grid_item{margin:0 0 11.5%;width:100%}.et-db #et-boc .et-l .et_pb_column .et_pb_grid_item .on_last_row{margin-bottom:0}.et-db #et-boc .et-l .et_pb_row_1-2_1-4_1-4>.et_pb_column.et_pb_column_1_4 .et_pb_grid_item,.et-db #et-boc .et-l .et_pb_row_1-2_1-6_1-6_1-6>.et_pb_column.et_pb_column_1_6 .et_pb_grid_item,.et-db #et-boc .et-l .et_pb_row_1-4_1-4>.et_pb_column.et_pb_column_1_4 .et_pb_grid_item,.et-db #et-boc .et-l .et_pb_row_1-4_1-4_1-2>.et_pb_column.et_pb_column_1_4 .et_pb_grid_item,.et-db #et-boc .et-l .et_pb_row_1-5_1-5_3-5>.et_pb_column.et_pb_column_1_5 .et_pb_grid_item,.et-db #et-boc .et-l .et_pb_row_1-6_1-6_1-6>.et_pb_column.et_pb_column_1_6 .et_pb_grid_item,.et-db #et-boc .et-l .et_pb_row_1-6_1-6_1-6_1-2>.et_pb_column.et_pb_column_1_6 .et_pb_grid_item,.et-db #et-boc .et-l .et_pb_row_1-6_1-6_1-6_1-6>.et_pb_column.et_pb_column_1_6 .et_pb_grid_item,.et-db #et-boc .et-l .et_pb_row_3-5_1-5_1-5>.et_pb_column.et_pb_column_1_5 .et_pb_grid_item,.et-db #et-boc .et-l .et_pb_row_4col>.et_pb_column.et_pb_column_1_4 .et_pb_grid_item,.et-db #et-boc .et-l .et_pb_row_5col>.et_pb_column.et_pb_column_1_5 .et_pb_grid_item,.et-db #et-boc .et-l .et_pb_row_6col>.et_pb_column.et_pb_column_1_6 .et_pb_grid_item{margin:0 0 11.5%;width:100%}}

View File

@ -1 +1 @@
.et_pb_with_border.et_pb_shop .et_shop_image>img,.et_pb_with_border.et_pb_shop .products li{border:0 solid #333}.et_pb_shop.et_pb_text_align_center .star-rating,.et_pb_shop.et_pb_text_align_justified .star-rating,.et_pb_shop.et_pb_text_align_right .star-rating{display:inline-block}@media (max-width:980px){.et_pb_shop ul.products.columns-1 li.product,.et_pb_shop ul.products.columns-2 li.product,.et_pb_shop ul.products.columns-3 li.product,.et_pb_shop ul.products.columns-4 li.product,.et_pb_shop ul.products.columns-5 li.product,.et_pb_shop ul.products.columns-6 li.product{width:48%!important;margin-right:4%!important}.et_pb_shop ul.products.columns-1 li:nth-child(2n+2),.et_pb_shop ul.products.columns-2 li:nth-child(2n+2),.et_pb_shop ul.products.columns-3 li:nth-child(2n+2),.et_pb_shop ul.products.columns-4 li:nth-child(2n+2),.et_pb_shop ul.products.columns-5 li:nth-child(2n+2),.et_pb_shop ul.products.columns-6 li:nth-child(2n+2){margin-right:0!important}.et_pb_shop ul.products.columns-1 li:nth-child(3n+1),.et_pb_shop ul.products.columns-2 li:nth-child(3n+1),.et_pb_shop ul.products.columns-3 li:nth-child(3n+1),.et_pb_shop ul.products.columns-4 li:nth-child(3n+1),.et_pb_shop ul.products.columns-5 li:nth-child(3n+1),.et_pb_shop ul.products.columns-6 li:nth-child(3n+1){clear:none}.et_pb_row_1-2_1-4_1-4>.et_pb_column.et_pb_column_1_4 .et_pb_shop_grid .woocommerce ul.products li.product,.et_pb_row_1-2_1-6_1-6_1-6>.et_pb_column.et_pb_column_1_6 .et_pb_shop_grid .woocommerce ul.products li.product,.et_pb_row_1-4_1-4>.et_pb_column.et_pb_column_1_4 .et_pb_shop_grid .woocommerce ul.products li.product,.et_pb_row_1-4_1-4_1-2>.et_pb_column.et_pb_column_1_4 .et_pb_shop_grid .woocommerce ul.products li.product,.et_pb_row_1-5_1-5_3-5>.et_pb_column.et_pb_column_1_5 .et_pb_shop_grid .woocommerce ul.products li.product,.et_pb_row_1-6_1-6_1-6>.et_pb_column.et_pb_column_1_6 .et_pb_shop_grid .woocommerce ul.products li.product,.et_pb_row_1-6_1-6_1-6_1-2>.et_pb_column.et_pb_column_1_6 .et_pb_shop_grid .woocommerce ul.products li.product,.et_pb_row_1-6_1-6_1-6_1-6>.et_pb_column.et_pb_column_1_6 .et_pb_shop_grid .woocommerce ul.products li.product,.et_pb_row_3-5_1-5_1-5>.et_pb_column.et_pb_column_1_5 .et_pb_shop_grid .woocommerce ul.products li.product,.et_pb_row_4col>.et_pb_column.et_pb_column_1_4 .et_pb_shop_grid .woocommerce ul.products li.product,.et_pb_row_5col>.et_pb_column.et_pb_column_1_5 .et_pb_shop_grid .woocommerce ul.products li.product,.et_pb_row_6col>.et_pb_column.et_pb_column_1_6 .et_pb_shop_grid .woocommerce ul.products li.product{margin:0 0 11.5%;width:100%}}@media (min-width:981px){.et_pb_shop_grid .woocommerce ul.products li.product{clear:none}.et_pb_shop.et_pb_text_align_center-tablet .star-rating,.et_pb_shop.et_pb_text_align_justified-tablet .star-rating,.et_pb_shop.et_pb_text_align_right-tablet .star-rating{display:inline-block}}@media (max-width:767px){.et_pb_shop.et_pb_text_align_center-phone .star-rating,.et_pb_shop.et_pb_text_align_justified-phone .star-rating,.et_pb_shop.et_pb_text_align_right-phone .star-rating{display:inline-block}}@media (max-width:479px){.et_pb_row_1-2_1-4_1-4>.et_pb_column.et_pb_column_1_4 .et_pb_shop_grid .woocommerce ul.products li.product,.et_pb_row_1-2_1-6_1-6_1-6>.et_pb_column.et_pb_column_1_6 .et_pb_shop_grid .woocommerce ul.products li.product,.et_pb_row_1-4_1-4>.et_pb_column.et_pb_column_1_4 .et_pb_shop_grid .woocommerce ul.products li.product,.et_pb_row_1-4_1-4_1-2>.et_pb_column.et_pb_column_1_4 .et_pb_shop_grid .woocommerce ul.products li.product,.et_pb_row_1-5_1-5_3-5>.et_pb_column.et_pb_column_1_5 .et_pb_shop_grid .woocommerce ul.products li.product,.et_pb_row_1-6_1-6_1-6>.et_pb_column.et_pb_column_1_6 .et_pb_shop_grid .woocommerce ul.products li.product,.et_pb_row_1-6_1-6_1-6_1-2>.et_pb_column.et_pb_column_1_6 .et_pb_shop_grid .woocommerce ul.products li.product,.et_pb_row_1-6_1-6_1-6_1-6>.et_pb_column.et_pb_column_1_6 .et_pb_shop_grid .woocommerce ul.products li.product,.et_pb_row_3-5_1-5_1-5>.et_pb_column.et_pb_column_1_5 .et_pb_shop_grid .woocommerce ul.products li.product,.et_pb_row_4col>.et_pb_column.et_pb_column_1_4 .et_pb_shop_grid .woocommerce ul.products li.product,.et_pb_row_5col>.et_pb_column.et_pb_column_1_5 .et_pb_shop_grid .woocommerce ul.products li.product,.et_pb_row_6col>.et_pb_column.et_pb_column_1_6 .et_pb_shop_grid .woocommerce ul.products li.product{margin:0 0 11.5%;width:100%}}
.et_pb_with_border.et_pb_shop .et_shop_image>img,.et_pb_with_border.et_pb_shop .products li{border:0 solid #333}.et_pb_shop.et_pb_text_align_center .star-rating,.et_pb_shop.et_pb_text_align_justified .star-rating,.et_pb_shop.et_pb_text_align_right .star-rating{display:inline-block}@media (max-width:980px){.et_pb_shop ul.products.columns-1 li.product,.et_pb_shop ul.products.columns-2 li.product,.et_pb_shop ul.products.columns-3 li.product,.et_pb_shop ul.products.columns-4 li.product,.et_pb_shop ul.products.columns-5 li.product,.et_pb_shop ul.products.columns-6 li.product{width:48%!important;margin-right:4%!important}.et_pb_shop ul.products.columns-1 li:nth-child(2n+2),.et_pb_shop ul.products.columns-2 li:nth-child(2n+2),.et_pb_shop ul.products.columns-3 li:nth-child(2n+2),.et_pb_shop ul.products.columns-4 li:nth-child(2n+2),.et_pb_shop ul.products.columns-5 li:nth-child(2n+2),.et_pb_shop ul.products.columns-6 li:nth-child(2n+2){margin-right:0!important}.et_pb_shop ul.products.columns-1 li:nth-child(3n+1),.et_pb_shop ul.products.columns-2 li:nth-child(3n+1),.et_pb_shop ul.products.columns-3 li:nth-child(3n+1),.et_pb_shop ul.products.columns-4 li:nth-child(3n+1),.et_pb_shop ul.products.columns-5 li:nth-child(3n+1),.et_pb_shop ul.products.columns-6 li:nth-child(3n+1){clear:none}.et_pb_row_1-2_1-4_1-4>.et_pb_column.et_pb_column_1_4 .et_pb_shop_grid .woocommerce ul.products li.product,.et_pb_row_1-2_1-6_1-6_1-6>.et_pb_column.et_pb_column_1_6 .et_pb_shop_grid .woocommerce ul.products li.product,.et_pb_row_1-4_1-4>.et_pb_column.et_pb_column_1_4 .et_pb_shop_grid .woocommerce ul.products li.product,.et_pb_row_1-4_1-4_1-2>.et_pb_column.et_pb_column_1_4 .et_pb_shop_grid .woocommerce ul.products li.product,.et_pb_row_1-5_1-5_3-5>.et_pb_column.et_pb_column_1_5 .et_pb_shop_grid .woocommerce ul.products li.product,.et_pb_row_1-6_1-6_1-6>.et_pb_column.et_pb_column_1_6 .et_pb_shop_grid .woocommerce ul.products li.product,.et_pb_row_1-6_1-6_1-6_1-2>.et_pb_column.et_pb_column_1_6 .et_pb_shop_grid .woocommerce ul.products li.product,.et_pb_row_1-6_1-6_1-6_1-6>.et_pb_column.et_pb_column_1_6 .et_pb_shop_grid .woocommerce ul.products li.product,.et_pb_row_3-5_1-5_1-5>.et_pb_column.et_pb_column_1_5 .et_pb_shop_grid .woocommerce ul.products li.product,.et_pb_row_4col>.et_pb_column.et_pb_column_1_4 .et_pb_shop_grid .woocommerce ul.products li.product,.et_pb_row_5col>.et_pb_column.et_pb_column_1_5 .et_pb_shop_grid .woocommerce ul.products li.product,.et_pb_row_6col>.et_pb_column.et_pb_column_1_6 .et_pb_shop_grid .woocommerce ul.products li.product{margin:0 0 11.5%;width:100%}}@media (min-width:981px){.et_pb_shop_grid .woocommerce ul.products li.product{clear:none}.et_pb_shop.et_pb_text_align_center-tablet .star-rating,.et_pb_shop.et_pb_text_align_justified-tablet .star-rating,.et_pb_shop.et_pb_text_align_right-tablet .star-rating{display:inline-block}}@media (max-width:767px){.et_pb_shop.et_pb_text_align_center-phone .star-rating,.et_pb_shop.et_pb_text_align_justified-phone .star-rating,.et_pb_shop.et_pb_text_align_right-phone .star-rating{display:inline-block}}@media (max-width:479px){.et_pb_row_1-2_1-4_1-4>.et_pb_column.et_pb_column_1_4 .et_pb_shop_grid .woocommerce ul.products li.product,.et_pb_row_1-2_1-6_1-6_1-6>.et_pb_column.et_pb_column_1_6 .et_pb_shop_grid .woocommerce ul.products li.product,.et_pb_row_1-4_1-4>.et_pb_column.et_pb_column_1_4 .et_pb_shop_grid .woocommerce ul.products li.product,.et_pb_row_1-4_1-4_1-2>.et_pb_column.et_pb_column_1_4 .et_pb_shop_grid .woocommerce ul.products li.product,.et_pb_row_1-5_1-5_3-5>.et_pb_column.et_pb_column_1_5 .et_pb_shop_grid .woocommerce ul.products li.product,.et_pb_row_1-6_1-6_1-6>.et_pb_column.et_pb_column_1_6 .et_pb_shop_grid .woocommerce ul.products li.product,.et_pb_row_1-6_1-6_1-6_1-2>.et_pb_column.et_pb_column_1_6 .et_pb_shop_grid .woocommerce ul.products li.product,.et_pb_row_1-6_1-6_1-6_1-6>.et_pb_column.et_pb_column_1_6 .et_pb_shop_grid .woocommerce ul.products li.product,.et_pb_row_3-5_1-5_1-5>.et_pb_column.et_pb_column_1_5 .et_pb_shop_grid .woocommerce ul.products li.product,.et_pb_row_4col>.et_pb_column.et_pb_column_1_4 .et_pb_shop_grid .woocommerce ul.products li.product,.et_pb_row_5col>.et_pb_column.et_pb_column_1_5 .et_pb_shop_grid .woocommerce ul.products li.product,.et_pb_row_6col>.et_pb_column.et_pb_column_1_6 .et_pb_shop_grid .woocommerce ul.products li.product{margin:0 0 11.5%;width:100%}}.et_pb_shop_no_image .et_shop_image,.et_pb_shop_no_name .woocommerce-loop-product__title,.et_pb_shop_no_price .price,.et_pb_shop_no_rating .star-rating,.et_pb_shop_no_sale_badge .onsale{display:none}.et_pb_shop span.onsale{border-style:solid}.et_pb_shop_no_price ul.products li.product .price,.et_pb_shop_no_rating .products .star-rating{display:none}

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
.et_pb_member_social_links a:hover{color:#2ea3f2}.et_pb_team_member{word-wrap:break-word}.et_pb_with_border .et_pb_team_member_image{border:0 solid #333}.et_pb_team_member_image{float:left;max-width:320px;margin-right:30px;display:table-cell;line-height:0!important;position:relative}.et_pb_column .et_pb_team_member_image.et-svg{width:320px;max-width:100%}.et_pb_team_member_description{display:table-cell;vertical-align:top;position:relative}.et_pb_team_member_no_image .et_pb_team_member_description{display:block!important}.et_pb_member_position{color:#aaa;padding-bottom:7px}.et_pb_column_1_2 .et_pb_team_member_image,.et_pb_column_1_3 .et_pb_team_member_image,.et_pb_column_1_4 .et_pb_team_member_image,.et_pb_column_1_5 .et_pb_team_member_image,.et_pb_column_1_6 .et_pb_team_member_image,.et_pb_column_2_5 .et_pb_team_member_image,.et_pb_column_3_5 .et_pb_team_member_image,.et_pb_column_3_8 .et_pb_team_member_image{float:none;display:block;width:auto;margin:0 0 12px;text-align:center}.et_pb_column_1_2 .et_pb_team_member_description,.et_pb_column_1_3 .et_pb_team_member_description,.et_pb_column_1_4 .et_pb_team_member_description,.et_pb_column_1_5 .et_pb_team_member_description,.et_pb_column_1_6 .et_pb_team_member_description,.et_pb_column_2_5 .et_pb_team_member_description,.et_pb_column_3_4 .et_pb_team_member_description,.et_pb_column_3_5 .et_pb_team_member_description,.et_pb_column_3_8 .et_pb_team_member_description{display:block}.entry-content .et_pb_member_social_links{list-style-type:none!important;margin-top:20px;padding:0}.et_pb_member_social_links li{display:inline-block;margin-right:15px}.et_pb_member_social_links a{display:inline-block;font-size:16px;position:relative;text-align:center;transition:color .3s ease 0s;color:#b2b2b2;text-decoration:none}.et_pb_facebook_icon:before{content:"\E093"}.et_pb_twitter_icon:before{content:"\E094"}.et_pb_google_icon:before{content:"\E096"}.et_pb_linkedin_icon:before{content:"\E09D"}.et_pb_member_social_links span{display:none}@media (min-width:768px) and (max-width:980px){.et_pb_column .et_pb_team_member_image{float:left;width:auto;margin:0 30px 12px 0;text-align:left}.et_pb_row_4col .et_pb_column.et_pb_column_1_4 .et_pb_team_member_image{float:none;width:auto;max-width:none;margin:0 0 12px;text-align:center}.et_pb_column .et_pb_team_member_description{display:table-cell}}@media (min-width:768px) and (max-width:980px){.et_pb_row_4col .et_pb_column.et_pb_column_1_4 .et_pb_team_member_image{float:none;width:auto;max-width:none;margin:0 0 12px;text-align:center}.et_pb_column .et_pb_team_member_description{display:table-cell}}@media (max-width:767px){.et_pb_team_member_image{float:none;width:auto;margin:0 0 12px;display:block;text-align:center}.et_pb_team_member_description{display:block}}
.et_pb_member_social_links a:hover{color:#2ea3f2}.et_pb_team_member{word-wrap:break-word}.et_pb_with_border .et_pb_team_member_image{border:0 solid #333}.et_pb_team_member_image{max-width:320px;margin-right:30px;line-height:0!important;position:relative}.et_pb_column .et_pb_team_member_image.et-svg{width:320px;max-width:100%}.et_pb_team_member_no_image .et_pb_team_member_description{display:block!important}.et_pb_member_position{color:#aaa;padding-bottom:7px}.et_pb_column_1_2 .et_pb_team_member_image,.et_pb_column_1_3 .et_pb_team_member_image,.et_pb_column_1_4 .et_pb_team_member_image,.et_pb_column_1_5 .et_pb_team_member_image,.et_pb_column_1_6 .et_pb_team_member_image,.et_pb_column_2_5 .et_pb_team_member_image,.et_pb_column_3_5 .et_pb_team_member_image,.et_pb_column_3_8 .et_pb_team_member_image{display:block;width:auto;margin:0 0 12px;text-align:center}.et_pb_column_1_2 .et_pb_team_member,.et_pb_column_1_2 .et_pb_team_member_description,.et_pb_column_1_3 .et_pb_team_member,.et_pb_column_1_3 .et_pb_team_member_description,.et_pb_column_1_4 .et_pb_team_member,.et_pb_column_1_4 .et_pb_team_member_description,.et_pb_column_1_5 .et_pb_team_member,.et_pb_column_1_5 .et_pb_team_member_description,.et_pb_column_1_6 .et_pb_team_member,.et_pb_column_1_6 .et_pb_team_member_description,.et_pb_column_2_5 .et_pb_team_member,.et_pb_column_2_5 .et_pb_team_member_description,.et_pb_column_3_4 .et_pb_team_member,.et_pb_column_3_4 .et_pb_team_member_description,.et_pb_column_3_5 .et_pb_team_member,.et_pb_column_3_5 .et_pb_team_member_description,.et_pb_column_3_8 .et_pb_team_member,.et_pb_column_3_8 .et_pb_team_member_description{display:block}.entry-content .et_pb_member_social_links{list-style-type:none!important;margin-top:20px;padding:0}.et_pb_member_social_links li{display:inline-block;margin-right:15px}.et_pb_member_social_links a{display:inline-block;font-size:16px;position:relative;text-align:center;transition:color .3s ease 0s;color:#b2b2b2;text-decoration:none}.et_pb_facebook_icon:before{content:"\E093"}.et_pb_twitter_icon:before{content:"\E094"}.et_pb_google_icon:before{content:"\E096"}.et_pb_linkedin_icon:before{content:"\E09D"}.et_pb_member_social_links span{display:none}@media (min-width:768px) and (max-width:980px){.et_pb_column .et_pb_team_member_image{width:auto;margin:0 30px 12px 0;text-align:left}}@media (min-width:768px) and (max-width:980px){.et_pb_row_4col .et_pb_column.et_pb_column_1_4 .et_pb_team_member_image{width:auto;max-width:none;margin:0 0 12px;text-align:center}}@media (max-width:767px){.et_pb_team_member_image{width:auto;margin:0 0 12px;display:block;text-align:center}.et_pb_team_member_description{display:block}}@media (min-width:768px){.et_pb_team_member_description{-ms-flex:1;flex:1}.et_pb_team_member{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start}}

View File

@ -1 +1 @@
.et-db #et-boc .et-l .et_pb_member_social_links a:hover{color:#2ea3f2}.et-db #et-boc .et-l .et_pb_team_member{word-wrap:break-word}.et-db #et-boc .et-l .et_pb_with_border .et_pb_team_member_image{border:0 solid #333}.et-db #et-boc .et-l .et_pb_team_member_image{float:left;max-width:320px;margin-right:30px;display:table-cell;line-height:0!important;position:relative}.et-db #et-boc .et-l .et_pb_column .et_pb_team_member_image.et-svg{width:320px;max-width:100%}.et-db #et-boc .et-l .et_pb_team_member_description{display:table-cell;vertical-align:top;position:relative}.et-db #et-boc .et-l .et_pb_team_member_no_image .et_pb_team_member_description{display:block!important}.et-db #et-boc .et-l .et_pb_member_position{color:#aaa;padding-bottom:7px}.et-db #et-boc .et-l .et_pb_column_1_2 .et_pb_team_member_image,.et-db #et-boc .et-l .et_pb_column_1_3 .et_pb_team_member_image,.et-db #et-boc .et-l .et_pb_column_1_4 .et_pb_team_member_image,.et-db #et-boc .et-l .et_pb_column_1_5 .et_pb_team_member_image,.et-db #et-boc .et-l .et_pb_column_1_6 .et_pb_team_member_image,.et-db #et-boc .et-l .et_pb_column_2_5 .et_pb_team_member_image,.et-db #et-boc .et-l .et_pb_column_3_5 .et_pb_team_member_image,.et-db #et-boc .et-l .et_pb_column_3_8 .et_pb_team_member_image{float:none;display:block;width:auto;margin:0 0 12px;text-align:center}.et-db #et-boc .et-l .et_pb_column_1_2 .et_pb_team_member_description,.et-db #et-boc .et-l .et_pb_column_1_3 .et_pb_team_member_description,.et-db #et-boc .et-l .et_pb_column_1_4 .et_pb_team_member_description,.et-db #et-boc .et-l .et_pb_column_1_5 .et_pb_team_member_description,.et-db #et-boc .et-l .et_pb_column_1_6 .et_pb_team_member_description,.et-db #et-boc .et-l .et_pb_column_2_5 .et_pb_team_member_description,.et-db #et-boc .et-l .et_pb_column_3_4 .et_pb_team_member_description,.et-db #et-boc .et-l .et_pb_column_3_5 .et_pb_team_member_description,.et-db #et-boc .et-l .et_pb_column_3_8 .et_pb_team_member_description{display:block}.et-db #et-boc .et-l .entry-content .et_pb_member_social_links{list-style-type:none!important;margin-top:20px;padding:0}.et-db #et-boc .et-l .et_pb_member_social_links li{display:inline-block;margin-right:15px}.et-db #et-boc .et-l .et_pb_member_social_links a{display:inline-block;font-size:16px;position:relative;text-align:center;transition:color .3s ease 0s;color:#b2b2b2;text-decoration:none}.et-db #et-boc .et-l .et_pb_facebook_icon:before{content:"\E093"}.et-db #et-boc .et-l .et_pb_twitter_icon:before{content:"\E094"}.et-db #et-boc .et-l .et_pb_google_icon:before{content:"\E096"}.et-db #et-boc .et-l .et_pb_linkedin_icon:before{content:"\E09D"}.et-db #et-boc .et-l .et_pb_member_social_links span{display:none}@media (min-width:768px) and (max-width:980px){.et-db #et-boc .et-l .et_pb_column .et_pb_team_member_image{float:left;width:auto;margin:0 30px 12px 0;text-align:left}.et-db #et-boc .et-l .et_pb_row_4col .et_pb_column.et_pb_column_1_4 .et_pb_team_member_image{float:none;width:auto;max-width:none;margin:0 0 12px;text-align:center}.et-db #et-boc .et-l .et_pb_column .et_pb_team_member_description{display:table-cell}}@media (min-width:768px) and (max-width:980px){.et-db #et-boc .et-l .et_pb_row_4col .et_pb_column.et_pb_column_1_4 .et_pb_team_member_image{float:none;width:auto;max-width:none;margin:0 0 12px;text-align:center}.et-db #et-boc .et-l .et_pb_column .et_pb_team_member_description{display:table-cell}}@media (max-width:767px){.et-db #et-boc .et-l .et_pb_team_member_image{float:none;width:auto;margin:0 0 12px;display:block;text-align:center}.et-db #et-boc .et-l .et_pb_team_member_description{display:block}}
.et-db #et-boc .et-l .et_pb_member_social_links a:hover{color:#2ea3f2}.et-db #et-boc .et-l .et_pb_team_member{word-wrap:break-word}.et-db #et-boc .et-l .et_pb_with_border .et_pb_team_member_image{border:0 solid #333}.et-db #et-boc .et-l .et_pb_team_member_image{max-width:320px;margin-right:30px;line-height:0!important;position:relative}.et-db #et-boc .et-l .et_pb_column .et_pb_team_member_image.et-svg{width:320px;max-width:100%}.et-db #et-boc .et-l .et_pb_team_member_no_image .et_pb_team_member_description{display:block!important}.et-db #et-boc .et-l .et_pb_member_position{color:#aaa;padding-bottom:7px}.et-db #et-boc .et-l .et_pb_column_1_2 .et_pb_team_member_image,.et-db #et-boc .et-l .et_pb_column_1_3 .et_pb_team_member_image,.et-db #et-boc .et-l .et_pb_column_1_4 .et_pb_team_member_image,.et-db #et-boc .et-l .et_pb_column_1_5 .et_pb_team_member_image,.et-db #et-boc .et-l .et_pb_column_1_6 .et_pb_team_member_image,.et-db #et-boc .et-l .et_pb_column_2_5 .et_pb_team_member_image,.et-db #et-boc .et-l .et_pb_column_3_5 .et_pb_team_member_image,.et-db #et-boc .et-l .et_pb_column_3_8 .et_pb_team_member_image{display:block;width:auto;margin:0 0 12px;text-align:center}.et-db #et-boc .et-l .et_pb_column_1_2 .et_pb_team_member,.et-db #et-boc .et-l .et_pb_column_1_2 .et_pb_team_member_description,.et-db #et-boc .et-l .et_pb_column_1_3 .et_pb_team_member,.et-db #et-boc .et-l .et_pb_column_1_3 .et_pb_team_member_description,.et-db #et-boc .et-l .et_pb_column_1_4 .et_pb_team_member,.et-db #et-boc .et-l .et_pb_column_1_4 .et_pb_team_member_description,.et-db #et-boc .et-l .et_pb_column_1_5 .et_pb_team_member,.et-db #et-boc .et-l .et_pb_column_1_5 .et_pb_team_member_description,.et-db #et-boc .et-l .et_pb_column_1_6 .et_pb_team_member,.et-db #et-boc .et-l .et_pb_column_1_6 .et_pb_team_member_description,.et-db #et-boc .et-l .et_pb_column_2_5 .et_pb_team_member,.et-db #et-boc .et-l .et_pb_column_2_5 .et_pb_team_member_description,.et-db #et-boc .et-l .et_pb_column_3_4 .et_pb_team_member,.et-db #et-boc .et-l .et_pb_column_3_4 .et_pb_team_member_description,.et-db #et-boc .et-l .et_pb_column_3_5 .et_pb_team_member,.et-db #et-boc .et-l .et_pb_column_3_5 .et_pb_team_member_description,.et-db #et-boc .et-l .et_pb_column_3_8 .et_pb_team_member,.et-db #et-boc .et-l .et_pb_column_3_8 .et_pb_team_member_description{display:block}.et-db #et-boc .et-l .entry-content .et_pb_member_social_links{list-style-type:none!important;margin-top:20px;padding:0}.et-db #et-boc .et-l .et_pb_member_social_links li{display:inline-block;margin-right:15px}.et-db #et-boc .et-l .et_pb_member_social_links a{display:inline-block;font-size:16px;position:relative;text-align:center;transition:color .3s ease 0s;color:#b2b2b2;text-decoration:none}.et-db #et-boc .et-l .et_pb_facebook_icon:before{content:"\E093"}.et-db #et-boc .et-l .et_pb_twitter_icon:before{content:"\E094"}.et-db #et-boc .et-l .et_pb_google_icon:before{content:"\E096"}.et-db #et-boc .et-l .et_pb_linkedin_icon:before{content:"\E09D"}.et-db #et-boc .et-l .et_pb_member_social_links span{display:none}@media (min-width:768px) and (max-width:980px){.et-db #et-boc .et-l .et_pb_column .et_pb_team_member_image{width:auto;margin:0 30px 12px 0;text-align:left}}@media (min-width:768px) and (max-width:980px){.et-db #et-boc .et-l .et_pb_row_4col .et_pb_column.et_pb_column_1_4 .et_pb_team_member_image{width:auto;max-width:none;margin:0 0 12px;text-align:center}}@media (max-width:767px){.et-db #et-boc .et-l .et_pb_team_member_image{width:auto;margin:0 0 12px;display:block;text-align:center}.et-db #et-boc .et-l .et_pb_team_member_description{display:block}}@media (min-width:768px){.et-db #et-boc .et-l .et_pb_team_member_description{-ms-flex:1;flex:1}.et-db #et-boc .et-l .et_pb_team_member{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start}}

View File

@ -1 +1 @@
.et_pb_wc_add_to_cart form.cart .button,.et_pb_wc_add_to_cart form.cart div.quantity{float:none!important;display:inline-block;vertical-align:middle}.et_pb_wc_add_to_cart form.cart{margin-top:0!important;margin-bottom:0!important}.et_pb_wc_add_to_cart form.cart .variations td .label{font-weight:700}.et_pb_wc_add_to_cart form.cart .variations td select{border-style:solid!important;border-width:0;-moz-appearance:none;-webkit-appearance:none;width:100%}.et_pb_wc_add_to_cart form.cart .variations td.value{position:relative}.et_pb_wc_add_to_cart form.cart .variations td.value span:after{border:6px solid;border-color:#666 transparent transparent;content:"";display:block;height:0;margin-top:3px;pointer-events:none;position:absolute;right:10px;transform:translateY(-145%);width:0}.et_pb_wc_add_to_cart form.cart .variations td.value .reset_variations{float:right;margin-top:1em}.et_pb_wc_add_to_cart.et_pb_hide_input_quantity .quantity,.et_pb_wc_add_to_cart.et_pb_hide_input_quantity .woocommerce-grouped-product-list-item__quantity{display:none!important}.et_pb_wc_add_to_cart.et_pb_hide_stock .stock{display:none}.et_pb_wc_add_to_cart .quantity input.qty{border:0 solid #333!important;width:auto;max-width:3.631em}.et_pb_wc_add_to_cart{word-wrap:break-word}.et-dynamic-content-woo--product_additional_information.woocommerce h2{color:inherit!important;font-family:inherit;font-weight:inherit;font-style:inherit;font-size:inherit;letter-spacing:inherit;line-height:inherit;text-align:inherit;text-shadow:inherit}
.et_pb_wc_add_to_cart form.cart .button,.et_pb_wc_add_to_cart form.cart div.quantity{float:none!important;display:inline-block;vertical-align:middle}.et_pb_wc_add_to_cart form.cart{margin-top:0!important;margin-bottom:0!important}.et_pb_wc_add_to_cart form.cart .variations td .label{font-weight:700}.et_pb_wc_add_to_cart form.cart .variations td select{border-style:solid!important;border-width:0;-moz-appearance:none;-webkit-appearance:none;width:100%}.et_pb_wc_add_to_cart form.cart .variations td.value{position:relative}.et_pb_wc_add_to_cart form.cart .variations td.value span:after{border:6px solid;border-color:#666 transparent transparent;content:"";display:block;height:0;margin-top:3px;pointer-events:none;position:absolute;right:10px;transform:translateY(-145%);width:0}.et_pb_wc_add_to_cart form.cart .variations td.value .reset_variations{float:right;margin-top:1em}.et_pb_wc_add_to_cart.et_pb_hide_input_quantity .quantity,.et_pb_wc_add_to_cart.et_pb_hide_input_quantity .woocommerce-grouped-product-list-item__quantity{display:none!important}.et_pb_wc_add_to_cart.et_pb_hide_stock .stock{display:none}.et_pb_wc_add_to_cart .quantity input.qty{border:0 solid #333!important;width:auto;max-width:4.3em}.et_pb_wc_add_to_cart.et_pb_fields_label_position_stacked form.cart .variations td{display:block}.et_pb_wc_add_to_cart.et_pb_fields_label_position_stacked form.cart .variations td.label{padding-bottom:.6em!important}.et_pb_wc_add_to_cart.et_pb_fields_label_position_stacked form.cart div.quantity{display:block;margin:0 0 20px!important}.et_pb_wc_add_to_cart{word-wrap:break-word}.et-dynamic-content-woo--product_additional_information.woocommerce h2{color:inherit!important;font-family:inherit;font-weight:inherit;font-style:inherit;font-size:inherit;letter-spacing:inherit;line-height:inherit;text-align:inherit;text-shadow:inherit}

View File

@ -1 +1 @@
.et-db #et-boc .et-l .et_pb_wc_add_to_cart form.cart .button,.et-db #et-boc .et-l .et_pb_wc_add_to_cart form.cart div.quantity{float:none!important;display:inline-block;vertical-align:middle}.et-db #et-boc .et-l .et_pb_wc_add_to_cart form.cart{margin-top:0!important;margin-bottom:0!important}.et-db #et-boc .et-l .et_pb_wc_add_to_cart form.cart .variations td .label{font-weight:700}.et-db #et-boc .et-l .et_pb_wc_add_to_cart form.cart .variations td select{border-style:solid!important;border-width:0;-moz-appearance:none;-webkit-appearance:none;width:100%}.et-db #et-boc .et-l .et_pb_wc_add_to_cart form.cart .variations td.value{position:relative}.et-db #et-boc .et-l .et_pb_wc_add_to_cart form.cart .variations td.value span:after{border:6px solid;border-color:#666 transparent transparent;content:"";display:block;height:0;margin-top:3px;pointer-events:none;position:absolute;right:10px;transform:translateY(-145%);width:0}.et-db #et-boc .et-l .et_pb_wc_add_to_cart form.cart .variations td.value .reset_variations{float:right;margin-top:1em}.et-db #et-boc .et-l .et_pb_wc_add_to_cart.et_pb_hide_input_quantity .quantity,.et-db #et-boc .et-l .et_pb_wc_add_to_cart.et_pb_hide_input_quantity .woocommerce-grouped-product-list-item__quantity{display:none!important}.et-db #et-boc .et-l .et_pb_wc_add_to_cart.et_pb_hide_stock .stock{display:none}.et-db #et-boc .et-l .et_pb_wc_add_to_cart .quantity input.qty{border:0 solid #333!important;width:auto;max-width:3.631em}.et-db #et-boc .et-l .et_pb_wc_add_to_cart{word-wrap:break-word}.et-db #et-boc .et-l .et-dynamic-content-woo--product_additional_information.woocommerce h2{color:inherit!important;font-family:inherit;font-weight:inherit;font-style:inherit;font-size:inherit;letter-spacing:inherit;line-height:inherit;text-align:inherit;text-shadow:inherit}
.et-db #et-boc .et-l .et_pb_wc_add_to_cart form.cart .button,.et-db #et-boc .et-l .et_pb_wc_add_to_cart form.cart div.quantity{float:none!important;display:inline-block;vertical-align:middle}.et-db #et-boc .et-l .et_pb_wc_add_to_cart form.cart{margin-top:0!important;margin-bottom:0!important}.et-db #et-boc .et-l .et_pb_wc_add_to_cart form.cart .variations td .label{font-weight:700}.et-db #et-boc .et-l .et_pb_wc_add_to_cart form.cart .variations td select{border-style:solid!important;border-width:0;-moz-appearance:none;-webkit-appearance:none;width:100%}.et-db #et-boc .et-l .et_pb_wc_add_to_cart form.cart .variations td.value{position:relative}.et-db #et-boc .et-l .et_pb_wc_add_to_cart form.cart .variations td.value span:after{border:6px solid;border-color:#666 transparent transparent;content:"";display:block;height:0;margin-top:3px;pointer-events:none;position:absolute;right:10px;transform:translateY(-145%);width:0}.et-db #et-boc .et-l .et_pb_wc_add_to_cart form.cart .variations td.value .reset_variations{float:right;margin-top:1em}.et-db #et-boc .et-l .et_pb_wc_add_to_cart.et_pb_hide_input_quantity .quantity,.et-db #et-boc .et-l .et_pb_wc_add_to_cart.et_pb_hide_input_quantity .woocommerce-grouped-product-list-item__quantity{display:none!important}.et-db #et-boc .et-l .et_pb_wc_add_to_cart.et_pb_hide_stock .stock{display:none}.et-db #et-boc .et-l .et_pb_wc_add_to_cart .quantity input.qty{border:0 solid #333!important;width:auto;max-width:4.3em}.et-db #et-boc .et-l .et_pb_wc_add_to_cart.et_pb_fields_label_position_stacked form.cart .variations td{display:block}.et-db #et-boc .et-l .et_pb_wc_add_to_cart.et_pb_fields_label_position_stacked form.cart .variations td.label{padding-bottom:.6em!important}.et-db #et-boc .et-l .et_pb_wc_add_to_cart.et_pb_fields_label_position_stacked form.cart div.quantity{display:block;margin:0 0 20px!important}.et-db #et-boc .et-l .et_pb_wc_add_to_cart{word-wrap:break-word}.et-db #et-boc .et-l .et-dynamic-content-woo--product_additional_information.woocommerce h2{color:inherit!important;font-family:inherit;font-weight:inherit;font-style:inherit;font-size:inherit;letter-spacing:inherit;line-height:inherit;text-align:inherit;text-shadow:inherit}

View File

@ -1 +1 @@
.et_pb_wc_additional_info.et_pb_hide_title h2{display:none}.et_pb_wc_additional_info{word-wrap:break-word}.et-dynamic-content-woo--product_additional_information.woocommerce h2{color:inherit!important;font-family:inherit;font-weight:inherit;font-style:inherit;font-size:inherit;letter-spacing:inherit;line-height:inherit;text-align:inherit;text-shadow:inherit}
.et_pb_wc_additional_info.et_pb_hide_title h2{display:none}.et_pb_wc_additional_info table.shop_attributes{border-style:dotted;border-color:rgba(0,0,0,.1);border-collapse:separate}.et_pb_wc_additional_info{word-wrap:break-word}.et-dynamic-content-woo--product_additional_information.woocommerce h2{color:inherit!important;font-family:inherit;font-weight:inherit;font-style:inherit;font-size:inherit;letter-spacing:inherit;line-height:inherit;text-align:inherit;text-shadow:inherit}

View File

@ -1 +1 @@
.et-db #et-boc .et-l .et_pb_wc_additional_info.et_pb_hide_title h2{display:none}.et-db #et-boc .et-l .et_pb_wc_additional_info{word-wrap:break-word}.et-db #et-boc .et-l .et-dynamic-content-woo--product_additional_information.woocommerce h2{color:inherit!important;font-family:inherit;font-weight:inherit;font-style:inherit;font-size:inherit;letter-spacing:inherit;line-height:inherit;text-align:inherit;text-shadow:inherit}
.et-db #et-boc .et-l .et_pb_wc_additional_info.et_pb_hide_title h2{display:none}.et-db #et-boc .et-l .et_pb_wc_additional_info table.shop_attributes{border-style:dotted;border-color:rgba(0,0,0,.1);border-collapse:separate}.et-db #et-boc .et-l .et_pb_wc_additional_info{word-wrap:break-word}.et-db #et-boc .et-l .et-dynamic-content-woo--product_additional_information.woocommerce h2{color:inherit!important;font-family:inherit;font-weight:inherit;font-style:inherit;font-size:inherit;letter-spacing:inherit;line-height:inherit;text-align:inherit;text-shadow:inherit}

View File

@ -1 +1 @@
.et_pb_wc_cart_notice .woocommerce-error{background-color:transparent;margin:0}.et_pb_wc_cart_notice .wc-forward{border-width:0;border-style:solid}.et_pb_wc_cart_notice .woocommerce-message{margin:0;border:0 solid #333!important}
.et_pb_wc_cart_notice .wc-forward{border-width:0;border-style:solid}.et_pb_wc_cart_notice .woocommerce-message{margin:0}.et_pb_wc_cart_notice .woocommerce-message .showlogin{color:#fff}.et_pb_wc_cart_notice .woocommerce-error,.et_pb_wc_cart_notice .woocommerce-info,.et_pb_wc_cart_notice .woocommerce-message{border:0 solid #333!important}.et_pb_wc_cart_notice.et_pb_bg_layout_dark{color:inherit!important}.et-fb.et_pb_wc_cart_notice .woocommerce-form-coupon,.et-fb .et_pb_wc_cart_notice .woocommerce-form-coupon,.et-fb.et_pb_wc_cart_notice .woocommerce-form-login,.et-fb .et_pb_wc_cart_notice .woocommerce-form-login,.et-tb.et_pb_wc_cart_notice .woocommerce-form-coupon,.et-tb .et_pb_wc_cart_notice .woocommerce-form-coupon,.et-tb.et_pb_wc_cart_notice .woocommerce-form-login,.et-tb .et_pb_wc_cart_notice .woocommerce-form-login{display:block!important}.et_pb_wc_cart_notice.et_pb_fields_layout_fullwidth form .form-row{width:100%;float:none}.woocommerce-order-received .et_pb_wc_cart_notice{display:none}.et_pb_wc_cart_notice .woocommerce-form-login .woocommerce-form-login__submit{float:none}.et_pb_wc_cart_notice form .form-row{padding:0;margin-bottom:12px}.et_pb_wc_cart_notice.et_pb_hide_module{display:none}@media (max-width:980px){.et_pb_wc_cart_notice.et_pb_fields_layout_2_column form .form-row{width:47%!important;float:left!important}}

View File

@ -1 +1 @@
.et-db #et-boc .et-l .et_pb_wc_cart_notice .woocommerce-error{background-color:transparent;margin:0}.et-db #et-boc .et-l .et_pb_wc_cart_notice .wc-forward{border-width:0;border-style:solid}.et-db #et-boc .et-l .et_pb_wc_cart_notice .woocommerce-message{margin:0;border:0 solid #333!important}
.et-db #et-boc .et-l .et_pb_wc_cart_notice .wc-forward{border-width:0;border-style:solid}.et-db #et-boc .et-l .et_pb_wc_cart_notice .woocommerce-message{margin:0}.et-db #et-boc .et-l .et_pb_wc_cart_notice .woocommerce-message .showlogin{color:#fff}.et-db #et-boc .et-l .et_pb_wc_cart_notice .woocommerce-error,.et-db #et-boc .et-l .et_pb_wc_cart_notice .woocommerce-info,.et-db #et-boc .et-l .et_pb_wc_cart_notice .woocommerce-message{border:0 solid #333!important}.et-db #et-boc .et-l .et_pb_wc_cart_notice.et_pb_bg_layout_dark{color:inherit!important}.et-fb.et-db #et-boc .et-l .et_pb_wc_cart_notice .woocommerce-form-coupon,.et-fb .et-db #et-boc .et-l .et_pb_wc_cart_notice .woocommerce-form-coupon,.et-fb.et-db #et-boc .et-l .et_pb_wc_cart_notice .woocommerce-form-login,.et-fb .et-db #et-boc .et-l .et_pb_wc_cart_notice .woocommerce-form-login,.et-tb.et-db #et-boc .et-l .et_pb_wc_cart_notice .woocommerce-form-coupon,.et-tb .et-db #et-boc .et-l .et_pb_wc_cart_notice .woocommerce-form-coupon,.et-tb.et-db #et-boc .et-l .et_pb_wc_cart_notice .woocommerce-form-login,.et-tb .et-db #et-boc .et-l .et_pb_wc_cart_notice .woocommerce-form-login{display:block!important}.et-db #et-boc .et-l .et_pb_wc_cart_notice.et_pb_fields_layout_fullwidth form .form-row{width:100%;float:none}.woocommerce-order-received .et-db #et-boc .et-l .et_pb_wc_cart_notice{display:none}.et-db #et-boc .et-l .et_pb_wc_cart_notice .woocommerce-form-login .woocommerce-form-login__submit{float:none}.et-db #et-boc .et-l .et_pb_wc_cart_notice form .form-row{padding:0;margin-bottom:12px}.et-db #et-boc .et-l .et_pb_wc_cart_notice.et_pb_hide_module{display:none}@media (max-width:980px){.et-db #et-boc .et-l .et_pb_wc_cart_notice.et_pb_fields_layout_2_column form .form-row{width:47%!important;float:left!important}}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
.et_pb_wc_cart_totals .select2-container--default .select2-selection--single,.et_pb_wc_cart_totals form .form-row input.input-text,.et_pb_wc_cart_totals form .form-row textarea{height:auto}.et_pb_wc_cart_totals.et_pb_wc_cart_empty{display:none}
.et_pb_wc_cart_totals form .form-row{padding:0;margin-bottom:12px}.et_pb_wc_cart_totals .select2-container--default .select2-selection--single,.et_pb_wc_cart_totals form .form-row input.input-text,.et_pb_wc_cart_totals form .form-row textarea{width:-moz-available;width:fill-available}.et_pb_wc_cart_totals table.shop_table{table-layout:fixed}.et_pb_wc_cart_totals .select2-container--default .select2-selection--single,.et_pb_wc_cart_totals form .form-row input.input-text,.et_pb_wc_cart_totals form .form-row textarea{height:auto}.et_pb_wc_cart_totals.et_pb_wc_cart_empty{display:none}@media (max-width:768px){.et_pb_wc_cart_totals span.select2-container[dir=ltr] .select2-selection__rendered{text-align:left}}

View File

@ -1 +1 @@
.et-db #et-boc .et-l .et_pb_wc_cart_totals .select2-container--default .select2-selection--single,.et-db #et-boc .et-l .et_pb_wc_cart_totals form .form-row input.input-text,.et-db #et-boc .et-l .et_pb_wc_cart_totals form .form-row textarea{height:auto}.et-db #et-boc .et-l .et_pb_wc_cart_totals.et_pb_wc_cart_empty{display:none}
.et-db #et-boc .et-l .et_pb_wc_cart_totals form .form-row{padding:0;margin-bottom:12px}.et-db #et-boc .et-l .et_pb_wc_cart_totals .select2-container--default .select2-selection--single,.et-db #et-boc .et-l .et_pb_wc_cart_totals form .form-row input.input-text,.et-db #et-boc .et-l .et_pb_wc_cart_totals form .form-row textarea{width:-moz-available;width:fill-available}.et-db #et-boc .et-l .et_pb_wc_cart_totals table.shop_table{table-layout:fixed}.et-db #et-boc .et-l .et_pb_wc_cart_totals .select2-container--default .select2-selection--single,.et-db #et-boc .et-l .et_pb_wc_cart_totals form .form-row input.input-text,.et-db #et-boc .et-l .et_pb_wc_cart_totals form .form-row textarea{height:auto}.et-db #et-boc .et-l .et_pb_wc_cart_totals.et_pb_wc_cart_empty{display:none}@media (max-width:768px){.et-db #et-boc .et-l .et_pb_wc_cart_totals span.select2-container[dir=ltr] .select2-selection__rendered{text-align:left}}

View File

@ -1 +1 @@
.et_pb_wc_checkout_billing #order_review_heading,.et_pb_wc_checkout_billing .col2-set .col-2{display:none}.et_pb_wc_checkout_billing .col2-set .col-1{width:100%}.et_pb_wc_checkout_billing.et_pb_fields_layout_fullwidth form .form-row-first,.et_pb_wc_checkout_billing.et_pb_fields_layout_fullwidth form .form-row-last{float:none;width:inherit}.et_pb_wc_checkout_billing.et_pb_fields_layout_2_column .form-row:nth-child(odd){float:left;width:47%;overflow:visible;clear:left}.et_pb_wc_checkout_billing.et_pb_fields_layout_2_column .form-row:nth-child(2n){float:right;width:47%;overflow:visible;clear:right}.et_pb_wc_checkout_billing.et_pb_fields_layout_2_column .form-row-wide{clear:none}.et_pb_wc_checkout_billing .woocommerce-error{border:0 solid #333!important}.et_pb_wc_checkout_billing.et_pb_text_align_right input.input-text{text-align:right}.et_pb_wc_checkout_billing.et_pb_text_align_center input.input-text{text-align:center}.et_pb_wc_checkout_billing .woocommerce-form-login-toggle,.et_pb_wc_checkout_billing .woocommerce-notices-wrapper{display:none}.et_pb_wc_checkout_billing .select2-container--default .select2-selection--single,.et_pb_wc_checkout_billing form .form-row input.input-text,.et_pb_wc_checkout_billing form .form-row textarea{height:auto}.et_pb_column_4_4 .et_pb_wc_checkout_billing.et_pb_fields_layout_2_column #billing_city_field{margin-bottom:1px}.et_pb_column_4_4 .et_pb_wc_checkout_billing.et_pb_fields_layout_2_column .country_select:not(.select2-hidden-accessible),.et_pb_column_4_4 .et_pb_wc_checkout_billing.et_pb_fields_layout_2_column .state_select:not(.select2-hidden-accessible){margin-bottom:20px}.et_pb_column_4_4 .et_pb_wc_checkout_billing.et_pb_fields_layout_2_column #billing_country_field{margin-bottom:9px}.et_pb_column_4_4 .et_pb_wc_checkout_billing.et_pb_fields_layout_2_column #billing_address_2_field{margin-top:26px;margin-bottom:8px}.et_pb_column_1_2 .et_pb_wc_checkout_billing.et_pb_fields_layout_2_column .country_select:not(.select2-hidden-accessible),.et_pb_column_1_2 .et_pb_wc_checkout_billing.et_pb_fields_layout_2_column .state_select:not(.select2-hidden-accessible){margin-bottom:20px}.et_pb_column_1_2 .et_pb_wc_checkout_billing.et_pb_fields_layout_2_column #billing_address_2_field{margin-top:27px;margin-bottom:8px}.et_pb_column_1_2 .et_pb_wc_checkout_billing.et_pb_fields_layout_2_column #billing_country_field{margin-bottom:10px}.et_pb_column_1_2 .et_pb_wc_checkout_billing.et_pb_fields_layout_2_column #billing_state_field{margin-bottom:9px}
.et_pb_wc_checkout_billing #order_review_heading,.et_pb_wc_checkout_billing .col2-set .col-2{display:none}.et_pb_wc_checkout_billing .col2-set .col-1{width:100%}.et_pb_wc_checkout_billing.et_pb_fields_layout_fullwidth form .form-row-first,.et_pb_wc_checkout_billing.et_pb_fields_layout_fullwidth form .form-row-last{float:none;width:inherit}.et_pb_wc_checkout_billing.et_pb_fields_layout_2_column .form-row:nth-child(odd){float:left;width:47%;overflow:visible;clear:left}.et_pb_wc_checkout_billing.et_pb_fields_layout_2_column .form-row:nth-child(2n){float:right;width:47%;overflow:visible;clear:right}.et_pb_wc_checkout_billing.et_pb_fields_layout_2_column .form-row-wide{clear:none}.et_pb_wc_checkout_billing .woocommerce-error{border:0 solid #333!important;line-height:1.7em}.et_pb_wc_checkout_billing.et_pb_text_align_right input.input-text{text-align:right}.et_pb_wc_checkout_billing.et_pb_text_align_center input.input-text{text-align:center}.et_pb_wc_checkout_billing form .form-row{padding:0;margin-bottom:12px}.et_pb_wc_checkout_billing.et_pb_hide_module,.et_pb_wc_checkout_billing .woocommerce-form-login-toggle,.et_pb_wc_checkout_billing .woocommerce-notices-wrapper{display:none}.et_pb_wc_checkout_billing .select2-container--default .select2-selection--single,.et_pb_wc_checkout_billing form .form-row input.input-text,.et_pb_wc_checkout_billing form .form-row textarea{height:auto}.et_pb_column_4_4 .et_pb_wc_checkout_billing.et_pb_fields_layout_2_column #billing_city_field{margin-bottom:12px}.et_pb_column_4_4 .et_pb_wc_checkout_billing.et_pb_fields_layout_2_column .country_select:not(.select2-hidden-accessible),.et_pb_column_4_4 .et_pb_wc_checkout_billing.et_pb_fields_layout_2_column .state_select:not(.select2-hidden-accessible){margin-bottom:20px}.et_pb_column_4_4 .et_pb_wc_checkout_billing.et_pb_fields_layout_2_column #billing_country_field{margin-bottom:12px}.et_pb_column_4_4 .et_pb_wc_checkout_billing.et_pb_fields_layout_2_column #billing_address_2_field{margin-top:27px;margin-bottom:12px}.et_pb_column_1_2 .et_pb_wc_checkout_billing.et_pb_fields_layout_2_column .country_select:not(.select2-hidden-accessible),.et_pb_column_1_2 .et_pb_wc_checkout_billing.et_pb_fields_layout_2_column .state_select:not(.select2-hidden-accessible){margin-bottom:20px}.et_pb_column_1_2 .et_pb_wc_checkout_billing.et_pb_fields_layout_2_column #billing_address_2_field{margin-top:27px;margin-bottom:12px}.et_pb_column_1_2 .et_pb_wc_checkout_billing.et_pb_fields_layout_2_column #billing_country_field,.et_pb_column_1_2 .et_pb_wc_checkout_billing.et_pb_fields_layout_2_column #billing_state_field{margin-bottom:12px}

View File

@ -1 +1 @@
.et-db #et-boc .et-l .et_pb_wc_checkout_billing #order_review_heading,.et-db #et-boc .et-l .et_pb_wc_checkout_billing .col2-set .col-2{display:none}.et-db #et-boc .et-l .et_pb_wc_checkout_billing .col2-set .col-1{width:100%}.et-db #et-boc .et-l .et_pb_wc_checkout_billing.et_pb_fields_layout_fullwidth form .form-row-first,.et-db #et-boc .et-l .et_pb_wc_checkout_billing.et_pb_fields_layout_fullwidth form .form-row-last{float:none;width:inherit}.et-db #et-boc .et-l .et_pb_wc_checkout_billing.et_pb_fields_layout_2_column .form-row:nth-child(odd){float:left;width:47%;overflow:visible;clear:left}.et-db #et-boc .et-l .et_pb_wc_checkout_billing.et_pb_fields_layout_2_column .form-row:nth-child(2n){float:right;width:47%;overflow:visible;clear:right}.et-db #et-boc .et-l .et_pb_wc_checkout_billing.et_pb_fields_layout_2_column .form-row-wide{clear:none}.et-db #et-boc .et-l .et_pb_wc_checkout_billing .woocommerce-error{border:0 solid #333!important}.et-db #et-boc .et-l .et_pb_wc_checkout_billing.et_pb_text_align_right input.input-text{text-align:right}.et-db #et-boc .et-l .et_pb_wc_checkout_billing.et_pb_text_align_center input.input-text{text-align:center}.et-db #et-boc .et-l .et_pb_wc_checkout_billing .woocommerce-form-login-toggle,.et-db #et-boc .et-l .et_pb_wc_checkout_billing .woocommerce-notices-wrapper{display:none}.et-db #et-boc .et-l .et_pb_wc_checkout_billing .select2-container--default .select2-selection--single,.et-db #et-boc .et-l .et_pb_wc_checkout_billing form .form-row input.input-text,.et-db #et-boc .et-l .et_pb_wc_checkout_billing form .form-row textarea{height:auto}.et-db #et-boc .et-l .et_pb_column_4_4 .et_pb_wc_checkout_billing.et_pb_fields_layout_2_column #billing_city_field{margin-bottom:1px}.et-db #et-boc .et-l .et_pb_column_4_4 .et_pb_wc_checkout_billing.et_pb_fields_layout_2_column .country_select:not(.select2-hidden-accessible),.et-db #et-boc .et-l .et_pb_column_4_4 .et_pb_wc_checkout_billing.et_pb_fields_layout_2_column .state_select:not(.select2-hidden-accessible){margin-bottom:20px}.et-db #et-boc .et-l .et_pb_column_4_4 .et_pb_wc_checkout_billing.et_pb_fields_layout_2_column #billing_country_field{margin-bottom:9px}.et-db #et-boc .et-l .et_pb_column_4_4 .et_pb_wc_checkout_billing.et_pb_fields_layout_2_column #billing_address_2_field{margin-top:26px;margin-bottom:8px}.et-db #et-boc .et-l .et_pb_column_1_2 .et_pb_wc_checkout_billing.et_pb_fields_layout_2_column .country_select:not(.select2-hidden-accessible),.et-db #et-boc .et-l .et_pb_column_1_2 .et_pb_wc_checkout_billing.et_pb_fields_layout_2_column .state_select:not(.select2-hidden-accessible){margin-bottom:20px}.et-db #et-boc .et-l .et_pb_column_1_2 .et_pb_wc_checkout_billing.et_pb_fields_layout_2_column #billing_address_2_field{margin-top:27px;margin-bottom:8px}.et-db #et-boc .et-l .et_pb_column_1_2 .et_pb_wc_checkout_billing.et_pb_fields_layout_2_column #billing_country_field{margin-bottom:10px}.et-db #et-boc .et-l .et_pb_column_1_2 .et_pb_wc_checkout_billing.et_pb_fields_layout_2_column #billing_state_field{margin-bottom:9px}
.et-db #et-boc .et-l .et_pb_wc_checkout_billing #order_review_heading,.et-db #et-boc .et-l .et_pb_wc_checkout_billing .col2-set .col-2{display:none}.et-db #et-boc .et-l .et_pb_wc_checkout_billing .col2-set .col-1{width:100%}.et-db #et-boc .et-l .et_pb_wc_checkout_billing.et_pb_fields_layout_fullwidth form .form-row-first,.et-db #et-boc .et-l .et_pb_wc_checkout_billing.et_pb_fields_layout_fullwidth form .form-row-last{float:none;width:inherit}.et-db #et-boc .et-l .et_pb_wc_checkout_billing.et_pb_fields_layout_2_column .form-row:nth-child(odd){float:left;width:47%;overflow:visible;clear:left}.et-db #et-boc .et-l .et_pb_wc_checkout_billing.et_pb_fields_layout_2_column .form-row:nth-child(2n){float:right;width:47%;overflow:visible;clear:right}.et-db #et-boc .et-l .et_pb_wc_checkout_billing.et_pb_fields_layout_2_column .form-row-wide{clear:none}.et-db #et-boc .et-l .et_pb_wc_checkout_billing .woocommerce-error{border:0 solid #333!important;line-height:1.7em}.et-db #et-boc .et-l .et_pb_wc_checkout_billing.et_pb_text_align_right input.input-text{text-align:right}.et-db #et-boc .et-l .et_pb_wc_checkout_billing.et_pb_text_align_center input.input-text{text-align:center}.et-db #et-boc .et-l .et_pb_wc_checkout_billing form .form-row{padding:0;margin-bottom:12px}.et-db #et-boc .et-l .et_pb_wc_checkout_billing.et_pb_hide_module,.et-db #et-boc .et-l .et_pb_wc_checkout_billing .woocommerce-form-login-toggle,.et-db #et-boc .et-l .et_pb_wc_checkout_billing .woocommerce-notices-wrapper{display:none}.et-db #et-boc .et-l .et_pb_wc_checkout_billing .select2-container--default .select2-selection--single,.et-db #et-boc .et-l .et_pb_wc_checkout_billing form .form-row input.input-text,.et-db #et-boc .et-l .et_pb_wc_checkout_billing form .form-row textarea{height:auto}.et-db #et-boc .et-l .et_pb_column_4_4 .et_pb_wc_checkout_billing.et_pb_fields_layout_2_column #billing_city_field{margin-bottom:12px}.et-db #et-boc .et-l .et_pb_column_4_4 .et_pb_wc_checkout_billing.et_pb_fields_layout_2_column .country_select:not(.select2-hidden-accessible),.et-db #et-boc .et-l .et_pb_column_4_4 .et_pb_wc_checkout_billing.et_pb_fields_layout_2_column .state_select:not(.select2-hidden-accessible){margin-bottom:20px}.et-db #et-boc .et-l .et_pb_column_4_4 .et_pb_wc_checkout_billing.et_pb_fields_layout_2_column #billing_country_field{margin-bottom:12px}.et-db #et-boc .et-l .et_pb_column_4_4 .et_pb_wc_checkout_billing.et_pb_fields_layout_2_column #billing_address_2_field{margin-top:27px;margin-bottom:12px}.et-db #et-boc .et-l .et_pb_column_1_2 .et_pb_wc_checkout_billing.et_pb_fields_layout_2_column .country_select:not(.select2-hidden-accessible),.et-db #et-boc .et-l .et_pb_column_1_2 .et_pb_wc_checkout_billing.et_pb_fields_layout_2_column .state_select:not(.select2-hidden-accessible){margin-bottom:20px}.et-db #et-boc .et-l .et_pb_column_1_2 .et_pb_wc_checkout_billing.et_pb_fields_layout_2_column #billing_address_2_field{margin-top:27px;margin-bottom:12px}.et-db #et-boc .et-l .et_pb_column_1_2 .et_pb_wc_checkout_billing.et_pb_fields_layout_2_column #billing_country_field,.et-db #et-boc .et-l .et_pb_column_1_2 .et_pb_wc_checkout_billing.et_pb_fields_layout_2_column #billing_state_field{margin-bottom:12px}

View File

@ -1 +1 @@
.woocommerce-checkout #main-content .et_pb_wc_checkout_order_details table.shop_table tr.cart-subtotal td{border-top:1px solid rgba(0,0,0,.1)}.et_pb_wc_checkout_order_details .woocommerce-form-login-toggle,.et_pb_wc_checkout_order_details .woocommerce-notices-wrapper{display:none}
.woocommerce-checkout #main-content .et_pb_wc_checkout_order_details table.shop_table tr.cart-subtotal td{border-top:1px solid rgba(0,0,0,.1)}.et_pb_wc_checkout_order_details.et_pb_hide_module,.et_pb_wc_checkout_order_details .woocommerce-form-login-toggle,.et_pb_wc_checkout_order_details .woocommerce-notices-wrapper{display:none}

View File

@ -1 +1 @@
.woocommerce-checkout #main-content .et-db #et-boc .et-l .et_pb_wc_checkout_order_details table.shop_table tr.cart-subtotal td{border-top:1px solid rgba(0,0,0,.1)}.et-db #et-boc .et-l .et_pb_wc_checkout_order_details .woocommerce-form-login-toggle,.et-db #et-boc .et-l .et_pb_wc_checkout_order_details .woocommerce-notices-wrapper{display:none}
.woocommerce-checkout #main-content .et-db #et-boc .et-l .et_pb_wc_checkout_order_details table.shop_table tr.cart-subtotal td{border-top:1px solid rgba(0,0,0,.1)}.et-db #et-boc .et-l .et_pb_wc_checkout_order_details.et_pb_hide_module,.et-db #et-boc .et-l .et_pb_wc_checkout_order_details .woocommerce-form-login-toggle,.et-db #et-boc .et-l .et_pb_wc_checkout_order_details .woocommerce-notices-wrapper{display:none}

View File

@ -1 +1 @@
.et_pb_wc_checkout_additional_info #order_review_heading,.et_pb_wc_checkout_additional_info .col2-set .col-1{display:none}.et_pb_wc_checkout_additional_info .col2-set .col-2{width:100%}.et_pb_wc_checkout_additional_info.et_pb_wc_no_title h3,.et_pb_wc_checkout_additional_info .woocommerce-additional-fields h3:not(:first-of-type),.et_pb_wc_checkout_additional_info .woocommerce-shipping-fields{display:none}.et_pb_wc_checkout_additional_info form .form-row textarea.input-text{height:auto}.et_pb_wc_checkout_additional_info .woocommerce-form-login-toggle,.et_pb_wc_checkout_additional_info .woocommerce-notices-wrapper{display:none}
.et_pb_wc_checkout_additional_info #order_review_heading,.et_pb_wc_checkout_additional_info .col2-set .col-1{display:none}.et_pb_wc_checkout_additional_info .col2-set .col-2{width:100%}.et_pb_wc_checkout_additional_info.et_pb_wc_no_title h3,.et_pb_wc_checkout_additional_info .woocommerce-additional-fields h3:not(:first-of-type),.et_pb_wc_checkout_additional_info .woocommerce-shipping-fields{display:none}.et_pb_wc_checkout_additional_info form .form-row textarea.input-text{height:auto}.et_pb_wc_checkout_additional_info.et_pb_hide_module,.et_pb_wc_checkout_additional_info .woocommerce-form-login-toggle,.et_pb_wc_checkout_additional_info .woocommerce-notices-wrapper{display:none}

View File

@ -1 +1 @@
.et-db #et-boc .et-l .et_pb_wc_checkout_additional_info #order_review_heading,.et-db #et-boc .et-l .et_pb_wc_checkout_additional_info .col2-set .col-1{display:none}.et-db #et-boc .et-l .et_pb_wc_checkout_additional_info .col2-set .col-2{width:100%}.et-db #et-boc .et-l .et_pb_wc_checkout_additional_info.et_pb_wc_no_title h3,.et-db #et-boc .et-l .et_pb_wc_checkout_additional_info .woocommerce-additional-fields h3:not(:first-of-type),.et-db #et-boc .et-l .et_pb_wc_checkout_additional_info .woocommerce-shipping-fields{display:none}.et-db #et-boc .et-l .et_pb_wc_checkout_additional_info form .form-row textarea.input-text{height:auto}.et-db #et-boc .et-l .et_pb_wc_checkout_additional_info .woocommerce-form-login-toggle,.et-db #et-boc .et-l .et_pb_wc_checkout_additional_info .woocommerce-notices-wrapper{display:none}
.et-db #et-boc .et-l .et_pb_wc_checkout_additional_info #order_review_heading,.et-db #et-boc .et-l .et_pb_wc_checkout_additional_info .col2-set .col-1{display:none}.et-db #et-boc .et-l .et_pb_wc_checkout_additional_info .col2-set .col-2{width:100%}.et-db #et-boc .et-l .et_pb_wc_checkout_additional_info.et_pb_wc_no_title h3,.et-db #et-boc .et-l .et_pb_wc_checkout_additional_info .woocommerce-additional-fields h3:not(:first-of-type),.et-db #et-boc .et-l .et_pb_wc_checkout_additional_info .woocommerce-shipping-fields{display:none}.et-db #et-boc .et-l .et_pb_wc_checkout_additional_info form .form-row textarea.input-text{height:auto}.et-db #et-boc .et-l .et_pb_wc_checkout_additional_info.et_pb_hide_module,.et-db #et-boc .et-l .et_pb_wc_checkout_additional_info .woocommerce-form-login-toggle,.et-db #et-boc .et-l .et_pb_wc_checkout_additional_info .woocommerce-notices-wrapper{display:none}

View File

@ -1 +1 @@
.et_pb_wc_checkout_payment_info #payment ul.payment_methods{border:none}.et_pb_wc_checkout_payment_info #order_review_heading{display:none}.et_pb_wc_checkout_payment_info .wc_payment_method a{font-size:14px!important;line-height:1.7em!important}.et_pb_wc_checkout_payment_info .woocommerce-checkout #payment div.form-row{padding:0}.et_pb_wc_checkout_payment_info form .form-row{margin:2em 0 0}.et_pb_wc_checkout_payment_info .woocommerce-checkout #payment ul.payment_methods{padding:0}.et_pb_wc_checkout_payment_info #payment div.payment_box{border-style:solid}.et_pb_wc_checkout_payment_info #payment div.payment_box:before{content:none}.et_pb_wc_checkout_payment_info #payment ul.payment_methods li.woocommerce-info{border-style:solid!important;border-width:0!important}.et_pb_wc_checkout_payment_info #payment ul.payment_methods li.et_fb_woocommerce-notice{margin-top:1em;border-top-color:inherit}.et_pb_wc_checkout_payment_info #payment .wc_payment_method{border-style:solid}.et_pb_wc_checkout_payment_info .woocommerce-order{border-radius:5px;border-style:solid}.et_pb_wc_checkout_payment_info.et_pb_text_align_center #payment ul.payment_methods li.woocommerce-info,.et_pb_wc_checkout_payment_info.et_pb_text_align_center #payment ul.payment_methods li p{text-align:center}.et_pb_wc_checkout_payment_info.et_pb_text_align_right #payment ul.payment_methods li.woocommerce-info,.et_pb_wc_checkout_payment_info.et_pb_text_align_right #payment ul.payment_methods li p{text-align:right}.et_pb_wc_checkout_payment_info.et_pb_text_align_justified #payment ul.payment_methods li.woocommerce-info,.et_pb_wc_checkout_payment_info.et_pb_text_align_justified #payment ul.payment_methods li p{text-align:justify}.et_pb_wc_checkout_payment_info .woocommerce-form-login-toggle,.et_pb_wc_checkout_payment_info .woocommerce-notices-wrapper{display:none}.woocommerce-order-received .et_pb_no_top_bottom_padding{padding-top:0;padding-bottom:0}
.et_pb_wc_checkout_payment_info #payment ul.payment_methods{border:none}.et_pb_wc_checkout_payment_info #order_review_heading{display:none}.et_pb_wc_checkout_payment_info .wc_payment_method a{font-size:14px!important;line-height:1.7em!important}.et_pb_wc_checkout_payment_info .woocommerce-checkout #payment div.form-row{padding:0}.et_pb_wc_checkout_payment_info form .form-row{margin:2em 0 0}.et_pb_wc_checkout_payment_info .woocommerce-checkout #payment ul.payment_methods{padding:0}.et_pb_wc_checkout_payment_info #payment div.payment_box{border-style:solid}.et_pb_wc_checkout_payment_info #payment div.payment_box:before{content:none}.et_pb_wc_checkout_payment_info #payment ul.payment_methods li.woocommerce-info{border-style:solid!important;border-width:0!important}.et_pb_wc_checkout_payment_info #payment ul.payment_methods li.woocommerce-notice{margin-top:1em;line-height:1.7em;border-top-color:inherit;font-weight:500}.et_pb_wc_checkout_payment_info #payment .wc_payment_method{border-style:solid}.et_pb_wc_checkout_payment_info .woocommerce-order{border-radius:5px;border-style:solid}.et_pb_wc_checkout_payment_info.et_pb_text_align_center #payment ul.payment_methods li.woocommerce-info,.et_pb_wc_checkout_payment_info.et_pb_text_align_center #payment ul.payment_methods li p{text-align:center}.et_pb_wc_checkout_payment_info.et_pb_text_align_right #payment ul.payment_methods li.woocommerce-info,.et_pb_wc_checkout_payment_info.et_pb_text_align_right #payment ul.payment_methods li p{text-align:right}.et_pb_wc_checkout_payment_info.et_pb_text_align_justified #payment ul.payment_methods li.woocommerce-info,.et_pb_wc_checkout_payment_info.et_pb_text_align_justified #payment ul.payment_methods li p{text-align:justify}.et_pb_wc_checkout_payment_info .woocommerce-form-login-toggle,.et_pb_wc_checkout_payment_info .woocommerce-notices-wrapper{display:none}.woocommerce-order-received .et_pb_no_top_bottom_padding{padding-top:0;padding-bottom:0}

View File

@ -1 +1 @@
.et-db #et-boc .et-l .et_pb_wc_checkout_payment_info #payment ul.payment_methods{border:none}.et-db #et-boc .et-l .et_pb_wc_checkout_payment_info #order_review_heading{display:none}.et-db #et-boc .et-l .et_pb_wc_checkout_payment_info .wc_payment_method a{font-size:14px!important;line-height:1.7em!important}.et-db #et-boc .et-l .et_pb_wc_checkout_payment_info .woocommerce-checkout #payment div.form-row{padding:0}.et-db #et-boc .et-l .et_pb_wc_checkout_payment_info form .form-row{margin:2em 0 0}.et-db #et-boc .et-l .et_pb_wc_checkout_payment_info .woocommerce-checkout #payment ul.payment_methods{padding:0}.et-db #et-boc .et-l .et_pb_wc_checkout_payment_info #payment div.payment_box{border-style:solid}.et-db #et-boc .et-l .et_pb_wc_checkout_payment_info #payment div.payment_box:before{content:none}.et-db #et-boc .et-l .et_pb_wc_checkout_payment_info #payment ul.payment_methods li.woocommerce-info{border-style:solid!important;border-width:0!important}.et-db #et-boc .et-l .et_pb_wc_checkout_payment_info #payment ul.payment_methods li.et_fb_woocommerce-notice{margin-top:1em;border-top-color:inherit}.et-db #et-boc .et-l .et_pb_wc_checkout_payment_info #payment .wc_payment_method{border-style:solid}.et-db #et-boc .et-l .et_pb_wc_checkout_payment_info .woocommerce-order{border-radius:5px;border-style:solid}.et-db #et-boc .et-l .et_pb_wc_checkout_payment_info.et_pb_text_align_center #payment ul.payment_methods li.woocommerce-info,.et-db #et-boc .et-l .et_pb_wc_checkout_payment_info.et_pb_text_align_center #payment ul.payment_methods li p{text-align:center}.et-db #et-boc .et-l .et_pb_wc_checkout_payment_info.et_pb_text_align_right #payment ul.payment_methods li.woocommerce-info,.et-db #et-boc .et-l .et_pb_wc_checkout_payment_info.et_pb_text_align_right #payment ul.payment_methods li p{text-align:right}.et-db #et-boc .et-l .et_pb_wc_checkout_payment_info.et_pb_text_align_justified #payment ul.payment_methods li.woocommerce-info,.et-db #et-boc .et-l .et_pb_wc_checkout_payment_info.et_pb_text_align_justified #payment ul.payment_methods li p{text-align:justify}.et-db #et-boc .et-l .et_pb_wc_checkout_payment_info .woocommerce-form-login-toggle,.et-db #et-boc .et-l .et_pb_wc_checkout_payment_info .woocommerce-notices-wrapper{display:none}.et-db #et-boc .et-l .woocommerce-order-received .et_pb_no_top_bottom_padding{padding-top:0;padding-bottom:0}
.et-db #et-boc .et-l .et_pb_wc_checkout_payment_info #payment ul.payment_methods{border:none}.et-db #et-boc .et-l .et_pb_wc_checkout_payment_info #order_review_heading{display:none}.et-db #et-boc .et-l .et_pb_wc_checkout_payment_info .wc_payment_method a{font-size:14px!important;line-height:1.7em!important}.et-db #et-boc .et-l .et_pb_wc_checkout_payment_info .woocommerce-checkout #payment div.form-row{padding:0}.et-db #et-boc .et-l .et_pb_wc_checkout_payment_info form .form-row{margin:2em 0 0}.et-db #et-boc .et-l .et_pb_wc_checkout_payment_info .woocommerce-checkout #payment ul.payment_methods{padding:0}.et-db #et-boc .et-l .et_pb_wc_checkout_payment_info #payment div.payment_box{border-style:solid}.et-db #et-boc .et-l .et_pb_wc_checkout_payment_info #payment div.payment_box:before{content:none}.et-db #et-boc .et-l .et_pb_wc_checkout_payment_info #payment ul.payment_methods li.woocommerce-info{border-style:solid!important;border-width:0!important}.et-db #et-boc .et-l .et_pb_wc_checkout_payment_info #payment ul.payment_methods li.woocommerce-notice{margin-top:1em;line-height:1.7em;border-top-color:inherit;font-weight:500}.et-db #et-boc .et-l .et_pb_wc_checkout_payment_info #payment .wc_payment_method{border-style:solid}.et-db #et-boc .et-l .et_pb_wc_checkout_payment_info .woocommerce-order{border-radius:5px;border-style:solid}.et-db #et-boc .et-l .et_pb_wc_checkout_payment_info.et_pb_text_align_center #payment ul.payment_methods li.woocommerce-info,.et-db #et-boc .et-l .et_pb_wc_checkout_payment_info.et_pb_text_align_center #payment ul.payment_methods li p{text-align:center}.et-db #et-boc .et-l .et_pb_wc_checkout_payment_info.et_pb_text_align_right #payment ul.payment_methods li.woocommerce-info,.et-db #et-boc .et-l .et_pb_wc_checkout_payment_info.et_pb_text_align_right #payment ul.payment_methods li p{text-align:right}.et-db #et-boc .et-l .et_pb_wc_checkout_payment_info.et_pb_text_align_justified #payment ul.payment_methods li.woocommerce-info,.et-db #et-boc .et-l .et_pb_wc_checkout_payment_info.et_pb_text_align_justified #payment ul.payment_methods li p{text-align:justify}.et-db #et-boc .et-l .et_pb_wc_checkout_payment_info .woocommerce-form-login-toggle,.et-db #et-boc .et-l .et_pb_wc_checkout_payment_info .woocommerce-notices-wrapper{display:none}.et-db #et-boc .et-l .woocommerce-order-received .et_pb_no_top_bottom_padding{padding-top:0;padding-bottom:0}

View File

@ -1 +1 @@
.et_pb_wc_checkout_shipping #order_review_heading,.et_pb_wc_checkout_shipping .col2-set .col-1{display:none}.et_pb_wc_checkout_shipping .col2-set .col-2{width:100%}.et_pb_wc_checkout_shipping .checkout .col-2 h3#ship-to-different-address{float:none}.et_pb_wc_checkout_shipping.et_pb_fields_layout_fullwidth form .form-row-first,.et_pb_wc_checkout_shipping.et_pb_fields_layout_fullwidth form .form-row-last{float:none;width:inherit}.et_pb_wc_checkout_shipping.et_pb_fields_layout_2_column .country_select:not(.select2-hidden-accessible){margin-bottom:20px}.et_pb_wc_checkout_shipping.et_pb_fields_layout_2_column .state_select:not(.select2-hidden-accessible){margin-bottom:17px}.et_pb_wc_checkout_shipping.et_pb_fields_layout_2_column #shipping_country_field{margin-bottom:9px}.et_pb_wc_checkout_shipping.et_pb_fields_layout_2_column #shipping_address_2_field{margin-top:26px;margin-bottom:9px}.et_pb_wc_checkout_shipping.et_pb_fields_layout_2_column .form-row:nth-child(odd){float:left;width:47%;overflow:visible;clear:left}.et_pb_wc_checkout_shipping.et_pb_fields_layout_2_column .form-row:nth-child(2n){float:right;width:47%;overflow:visible;clear:right}.et_pb_wc_checkout_shipping.et_pb_fields_layout_2_column .form-row-wide{clear:none}.et_pb_wc_checkout_shipping.et_pb_wc_ship_to_billing_address_only,.et_pb_wc_checkout_shipping .woocommerce-additional-fields{display:none}.et_pb_wc_checkout_shipping.et_pb_text_align_right input.input-text{text-align:right}.et_pb_wc_checkout_shipping.et_pb_text_align_center input.input-text{text-align:center}.et_pb_wc_checkout_shipping .woocommerce-form-login-toggle,.et_pb_wc_checkout_shipping .woocommerce-notices-wrapper{display:none}.et_pb_wc_checkout_shipping .select2-container--default .select2-selection--single,.et_pb_wc_checkout_shipping form .form-row input.input-text,.et_pb_wc_checkout_shipping form .form-row textarea{height:auto}.et_pb_column_4_4 .et_pb_wc_checkout_shipping.et_pb_fields_layout_2_column .state_select:not(.select2-hidden-accessible){margin-bottom:18px}.et_pb_column_4_4 .et_pb_wc_checkout_shipping.et_pb_fields_layout_2_column #shipping_city_field{margin-bottom:1px}.et_pb_column_1_2 .et_pb_wc_checkout_shipping.et_pb_fields_layout_2_column .state_select:not(.select2-hidden-accessible){margin-bottom:22px}.et_pb_column_1_2 .et_pb_wc_checkout_shipping.et_pb_fields_layout_2_column #shipping_address_2_field{margin-top:30px;margin-bottom:8px}.et_pb_column_1_2 .et_pb_wc_checkout_shipping.et_pb_fields_layout_2_column #shipping_state_field{margin-bottom:9px}
.et_pb_wc_checkout_shipping #order_review_heading,.et_pb_wc_checkout_shipping .col2-set .col-1{display:none}.et_pb_wc_checkout_shipping .col2-set .col-2{width:100%}.et_pb_wc_checkout_shipping .checkout .col-2 h3#ship-to-different-address{float:none}.et_pb_wc_checkout_shipping.et_pb_fields_layout_fullwidth form .form-row-first,.et_pb_wc_checkout_shipping.et_pb_fields_layout_fullwidth form .form-row-last{float:none;width:inherit}.et_pb_wc_checkout_shipping.et_pb_fields_layout_2_column .country_select:not(.select2-hidden-accessible){margin-bottom:20px}.et_pb_wc_checkout_shipping.et_pb_fields_layout_2_column .state_select:not(.select2-hidden-accessible){margin-bottom:17px}.et_pb_wc_checkout_shipping.et_pb_fields_layout_2_column #shipping_country_field{margin-bottom:9px}.et_pb_wc_checkout_shipping.et_pb_fields_layout_2_column #shipping_address_2_field{margin-top:26px;margin-bottom:9px}.et_pb_wc_checkout_shipping.et_pb_fields_layout_2_column .form-row:nth-child(odd){float:left;width:47%;overflow:visible;clear:left}.et_pb_wc_checkout_shipping.et_pb_fields_layout_2_column .form-row:nth-child(2n){float:right;width:47%;overflow:visible;clear:right}.et_pb_wc_checkout_shipping.et_pb_fields_layout_2_column .form-row-wide{clear:none}.et_pb_wc_checkout_shipping.et_pb_wc_ship_to_billing_address_only,.et_pb_wc_checkout_shipping .woocommerce-additional-fields{display:none}.et_pb_wc_checkout_shipping.et_pb_text_align_right input.input-text{text-align:right}.et_pb_wc_checkout_shipping.et_pb_text_align_center input.input-text{text-align:center}.et_pb_wc_checkout_shipping form .form-row{padding:0;margin-bottom:12px}.et_pb_wc_checkout_shipping.et_pb_hide_module,.et_pb_wc_checkout_shipping .woocommerce-form-login-toggle,.et_pb_wc_checkout_shipping .woocommerce-notices-wrapper{display:none}.et_pb_wc_checkout_shipping .select2-container--default .select2-selection--single,.et_pb_wc_checkout_shipping form .form-row input.input-text,.et_pb_wc_checkout_shipping form .form-row textarea{height:auto}.et_pb_column_4_4 .et_pb_wc_checkout_shipping.et_pb_fields_layout_2_column .state_select:not(.select2-hidden-accessible){margin-bottom:18px}.et_pb_column_4_4 .et_pb_wc_checkout_shipping.et_pb_fields_layout_2_column #shipping_city_field{margin-bottom:12px}.et_pb_column_1_2 .et_pb_wc_checkout_shipping.et_pb_fields_layout_2_column .state_select:not(.select2-hidden-accessible){margin-bottom:22px}.et_pb_column_1_2 .et_pb_wc_checkout_shipping.et_pb_fields_layout_2_column #shipping_address_2_field{margin-top:27px;margin-bottom:12px}.et_pb_column_1_2 .et_pb_wc_checkout_shipping.et_pb_fields_layout_2_column #shipping_state_field{margin-bottom:12px}

View File

@ -1 +1 @@
.et-db #et-boc .et-l .et_pb_wc_checkout_shipping #order_review_heading,.et-db #et-boc .et-l .et_pb_wc_checkout_shipping .col2-set .col-1{display:none}.et-db #et-boc .et-l .et_pb_wc_checkout_shipping .col2-set .col-2{width:100%}.et-db #et-boc .et-l .et_pb_wc_checkout_shipping .checkout .col-2 h3#ship-to-different-address{float:none}.et-db #et-boc .et-l .et_pb_wc_checkout_shipping.et_pb_fields_layout_fullwidth form .form-row-first,.et-db #et-boc .et-l .et_pb_wc_checkout_shipping.et_pb_fields_layout_fullwidth form .form-row-last{float:none;width:inherit}.et-db #et-boc .et-l .et_pb_wc_checkout_shipping.et_pb_fields_layout_2_column .country_select:not(.select2-hidden-accessible){margin-bottom:20px}.et-db #et-boc .et-l .et_pb_wc_checkout_shipping.et_pb_fields_layout_2_column .state_select:not(.select2-hidden-accessible){margin-bottom:17px}.et-db #et-boc .et-l .et_pb_wc_checkout_shipping.et_pb_fields_layout_2_column #shipping_country_field{margin-bottom:9px}.et-db #et-boc .et-l .et_pb_wc_checkout_shipping.et_pb_fields_layout_2_column #shipping_address_2_field{margin-top:26px;margin-bottom:9px}.et-db #et-boc .et-l .et_pb_wc_checkout_shipping.et_pb_fields_layout_2_column .form-row:nth-child(odd){float:left;width:47%;overflow:visible;clear:left}.et-db #et-boc .et-l .et_pb_wc_checkout_shipping.et_pb_fields_layout_2_column .form-row:nth-child(2n){float:right;width:47%;overflow:visible;clear:right}.et-db #et-boc .et-l .et_pb_wc_checkout_shipping.et_pb_fields_layout_2_column .form-row-wide{clear:none}.et-db #et-boc .et-l .et_pb_wc_checkout_shipping.et_pb_wc_ship_to_billing_address_only,.et-db #et-boc .et-l .et_pb_wc_checkout_shipping .woocommerce-additional-fields{display:none}.et-db #et-boc .et-l .et_pb_wc_checkout_shipping.et_pb_text_align_right input.input-text{text-align:right}.et-db #et-boc .et-l .et_pb_wc_checkout_shipping.et_pb_text_align_center input.input-text{text-align:center}.et-db #et-boc .et-l .et_pb_wc_checkout_shipping .woocommerce-form-login-toggle,.et-db #et-boc .et-l .et_pb_wc_checkout_shipping .woocommerce-notices-wrapper{display:none}.et-db #et-boc .et-l .et_pb_wc_checkout_shipping .select2-container--default .select2-selection--single,.et-db #et-boc .et-l .et_pb_wc_checkout_shipping form .form-row input.input-text,.et-db #et-boc .et-l .et_pb_wc_checkout_shipping form .form-row textarea{height:auto}.et-db #et-boc .et-l .et_pb_column_4_4 .et_pb_wc_checkout_shipping.et_pb_fields_layout_2_column .state_select:not(.select2-hidden-accessible){margin-bottom:18px}.et-db #et-boc .et-l .et_pb_column_4_4 .et_pb_wc_checkout_shipping.et_pb_fields_layout_2_column #shipping_city_field{margin-bottom:1px}.et-db #et-boc .et-l .et_pb_column_1_2 .et_pb_wc_checkout_shipping.et_pb_fields_layout_2_column .state_select:not(.select2-hidden-accessible){margin-bottom:22px}.et-db #et-boc .et-l .et_pb_column_1_2 .et_pb_wc_checkout_shipping.et_pb_fields_layout_2_column #shipping_address_2_field{margin-top:30px;margin-bottom:8px}.et-db #et-boc .et-l .et_pb_column_1_2 .et_pb_wc_checkout_shipping.et_pb_fields_layout_2_column #shipping_state_field{margin-bottom:9px}
.et-db #et-boc .et-l .et_pb_wc_checkout_shipping #order_review_heading,.et-db #et-boc .et-l .et_pb_wc_checkout_shipping .col2-set .col-1{display:none}.et-db #et-boc .et-l .et_pb_wc_checkout_shipping .col2-set .col-2{width:100%}.et-db #et-boc .et-l .et_pb_wc_checkout_shipping .checkout .col-2 h3#ship-to-different-address{float:none}.et-db #et-boc .et-l .et_pb_wc_checkout_shipping.et_pb_fields_layout_fullwidth form .form-row-first,.et-db #et-boc .et-l .et_pb_wc_checkout_shipping.et_pb_fields_layout_fullwidth form .form-row-last{float:none;width:inherit}.et-db #et-boc .et-l .et_pb_wc_checkout_shipping.et_pb_fields_layout_2_column .country_select:not(.select2-hidden-accessible){margin-bottom:20px}.et-db #et-boc .et-l .et_pb_wc_checkout_shipping.et_pb_fields_layout_2_column .state_select:not(.select2-hidden-accessible){margin-bottom:17px}.et-db #et-boc .et-l .et_pb_wc_checkout_shipping.et_pb_fields_layout_2_column #shipping_country_field{margin-bottom:9px}.et-db #et-boc .et-l .et_pb_wc_checkout_shipping.et_pb_fields_layout_2_column #shipping_address_2_field{margin-top:26px;margin-bottom:9px}.et-db #et-boc .et-l .et_pb_wc_checkout_shipping.et_pb_fields_layout_2_column .form-row:nth-child(odd){float:left;width:47%;overflow:visible;clear:left}.et-db #et-boc .et-l .et_pb_wc_checkout_shipping.et_pb_fields_layout_2_column .form-row:nth-child(2n){float:right;width:47%;overflow:visible;clear:right}.et-db #et-boc .et-l .et_pb_wc_checkout_shipping.et_pb_fields_layout_2_column .form-row-wide{clear:none}.et-db #et-boc .et-l .et_pb_wc_checkout_shipping.et_pb_wc_ship_to_billing_address_only,.et-db #et-boc .et-l .et_pb_wc_checkout_shipping .woocommerce-additional-fields{display:none}.et-db #et-boc .et-l .et_pb_wc_checkout_shipping.et_pb_text_align_right input.input-text{text-align:right}.et-db #et-boc .et-l .et_pb_wc_checkout_shipping.et_pb_text_align_center input.input-text{text-align:center}.et-db #et-boc .et-l .et_pb_wc_checkout_shipping form .form-row{padding:0;margin-bottom:12px}.et-db #et-boc .et-l .et_pb_wc_checkout_shipping.et_pb_hide_module,.et-db #et-boc .et-l .et_pb_wc_checkout_shipping .woocommerce-form-login-toggle,.et-db #et-boc .et-l .et_pb_wc_checkout_shipping .woocommerce-notices-wrapper{display:none}.et-db #et-boc .et-l .et_pb_wc_checkout_shipping .select2-container--default .select2-selection--single,.et-db #et-boc .et-l .et_pb_wc_checkout_shipping form .form-row input.input-text,.et-db #et-boc .et-l .et_pb_wc_checkout_shipping form .form-row textarea{height:auto}.et-db #et-boc .et-l .et_pb_column_4_4 .et_pb_wc_checkout_shipping.et_pb_fields_layout_2_column .state_select:not(.select2-hidden-accessible){margin-bottom:18px}.et-db #et-boc .et-l .et_pb_column_4_4 .et_pb_wc_checkout_shipping.et_pb_fields_layout_2_column #shipping_city_field{margin-bottom:12px}.et-db #et-boc .et-l .et_pb_column_1_2 .et_pb_wc_checkout_shipping.et_pb_fields_layout_2_column .state_select:not(.select2-hidden-accessible){margin-bottom:22px}.et-db #et-boc .et-l .et_pb_column_1_2 .et_pb_wc_checkout_shipping.et_pb_fields_layout_2_column #shipping_address_2_field{margin-top:27px;margin-bottom:12px}.et-db #et-boc .et-l .et_pb_column_1_2 .et_pb_wc_checkout_shipping.et_pb_fields_layout_2_column #shipping_state_field{margin-bottom:12px}

View File

@ -1 +1 @@
.et_pb_with_border.et_pb_wc_images .woocommerce-product-gallery__image{border:0 solid #333}.et_pb_wc_images .et_pb_module_inner:after{visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0}.woocommerce-page .et_builder_inner_content.product .et_pb_wc_images div.images,.woocommerce .et_builder_inner_content.product .et_pb_wc_images div.images,body.woocommerce-page #content .et_builder_inner_content.product .et_pb_wc_images div.images{width:100%}.et_pb_wc_images div.images ol.flex-control-thumbs.flex-control-nav{overflow:visible}.et_pb_wc_images div.images ol.flex-control-thumbs.flex-control-nav li{border-style:solid}.et_pb_wc_images .woocommerce-product-gallery--without-images .woocommerce-product-gallery__wrapper{border-width:0;border-style:solid}.et_pb_wc_images .woocommerce-product-gallery.images{width:100%}.et_pb_wc_images .woocommerce-product-gallery>.woocommerce-product-gallery__wrapper{border-width:0;border-style:solid}.et_pb_wc_images .flex-control-nav img,.et_pb_wc_images .flex-viewport{border-style:solid}
.et_pb_with_border.et_pb_wc_images .woocommerce-product-gallery__image{border:0 solid #333}.et_pb_wc_images .et_pb_module_inner:after{visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0}.woocommerce-page .et_builder_inner_content.product .et_pb_wc_images div.images,.woocommerce .et_builder_inner_content.product .et_pb_wc_images div.images,body.woocommerce-page #content .et_builder_inner_content.product .et_pb_wc_images div.images{width:100%}.et_pb_wc_images div.images ol.flex-control-thumbs.flex-control-nav{overflow:visible}.et_pb_wc_images div.images ol.flex-control-thumbs.flex-control-nav li{border-style:solid}.et_pb_wc_images .woocommerce-product-gallery--without-images .woocommerce-product-gallery__wrapper{border-width:0;border-style:solid}.et_pb_wc_images .woocommerce-product-gallery.images{width:100%}.et_pb_wc_images .woocommerce-product-gallery>.woocommerce-product-gallery__wrapper{border-width:0;border-style:solid}.et_pb_wc_images .flex-control-nav img,.et_pb_wc_images .flex-viewport,.et_pb_wc_images span.onsale{border-style:solid}

View File

@ -1 +1 @@
.et-db #et-boc .et-l .et_pb_with_border.et_pb_wc_images .woocommerce-product-gallery__image{border:0 solid #333}.et-db #et-boc .et-l .et_pb_wc_images .et_pb_module_inner:after{visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0}.woocommerce-page .et_builder_inner_content.product .et-db #et-boc .et-l .et_pb_wc_images div.images,.woocommerce .et_builder_inner_content.product .et-db #et-boc .et-l .et_pb_wc_images div.images,body.woocommerce-page #content .et_builder_inner_content.product .et-db #et-boc .et-l .et_pb_wc_images div.images{width:100%}.et-db #et-boc .et-l .et_pb_wc_images div.images ol.flex-control-thumbs.flex-control-nav{overflow:visible}.et-db #et-boc .et-l .et_pb_wc_images div.images ol.flex-control-thumbs.flex-control-nav li{border-style:solid}.et-db #et-boc .et-l .et_pb_wc_images .woocommerce-product-gallery--without-images .woocommerce-product-gallery__wrapper{border-width:0;border-style:solid}.et-db #et-boc .et-l .et_pb_wc_images .woocommerce-product-gallery.images{width:100%}.et-db #et-boc .et-l .et_pb_wc_images .woocommerce-product-gallery>.woocommerce-product-gallery__wrapper{border-width:0;border-style:solid}.et-db #et-boc .et-l .et_pb_wc_images .flex-control-nav img,.et-db #et-boc .et-l .et_pb_wc_images .flex-viewport{border-style:solid}
.et-db #et-boc .et-l .et_pb_with_border.et_pb_wc_images .woocommerce-product-gallery__image{border:0 solid #333}.et-db #et-boc .et-l .et_pb_wc_images .et_pb_module_inner:after{visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0}.woocommerce-page .et_builder_inner_content.product .et-db #et-boc .et-l .et_pb_wc_images div.images,.woocommerce .et_builder_inner_content.product .et-db #et-boc .et-l .et_pb_wc_images div.images,body.woocommerce-page #content .et_builder_inner_content.product .et-db #et-boc .et-l .et_pb_wc_images div.images{width:100%}.et-db #et-boc .et-l .et_pb_wc_images div.images ol.flex-control-thumbs.flex-control-nav{overflow:visible}.et-db #et-boc .et-l .et_pb_wc_images div.images ol.flex-control-thumbs.flex-control-nav li{border-style:solid}.et-db #et-boc .et-l .et_pb_wc_images .woocommerce-product-gallery--without-images .woocommerce-product-gallery__wrapper{border-width:0;border-style:solid}.et-db #et-boc .et-l .et_pb_wc_images .woocommerce-product-gallery.images{width:100%}.et-db #et-boc .et-l .et_pb_wc_images .woocommerce-product-gallery>.woocommerce-product-gallery__wrapper{border-width:0;border-style:solid}.et-db #et-boc .et-l .et_pb_wc_images .flex-control-nav img,.et-db #et-boc .et-l .et_pb_wc_images .flex-viewport,.et-db #et-boc .et-l .et_pb_wc_images span.onsale{border-style:solid}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
.et_pb_with_border.et_pb_wc_reviews #reviews #comments ol.commentlist li img.avatar{border:0 solid #333}.et_pb_wc_reviews.et_pb_no_comments_count .woocommerce-Reviews-title{display:none}.et_pb_wc_reviews.et_pb_comments_module.et_pb_no_comments_count #comments{display:block}.et_pb_wc_reviews.et_pb_module .star-rating{margin-bottom:12px!important}.et_pb_wc_reviews.et_pb_module .star-rating span:before{transition:color .3s}.et_pb_wc_reviews.et_pb_no_avatar .avatar{display:none}.et_pb_wc_reviews.et_pb_no_avatar #reviews #comments ol.commentlist li .comment-text{margin-left:0!important}.et_pb_wc_reviews .comment-reply-title{display:block}@media (min-width:480px){.et_pb_row>.et_pb_column_1_6 .et_pb_wc_reviews #reviews #comments ol.commentlist li img.avatar{float:none;position:relative;margin-bottom:10px}.et_pb_row>.et_pb_column_1_6 .et_pb_wc_reviews #reviews #comments ol.commentlist li .comment-text{margin-left:0!important}}@media (min-width:980px){.et_pb_row>.et_pb_column_1_5 .et_pb_wc_reviews #reviews #comments ol.commentlist li img.avatar,.et_pb_row_inner>.et_pb_column_1_6 .et_pb_wc_reviews #reviews #comments ol.commentlist li img.avatar,.et_pb_row_inner>.et_pb_column_2_9 .et_pb_wc_reviews #reviews #comments ol.commentlist li img.avatar{float:none;position:relative;margin-bottom:10px}.et_pb_row>.et_pb_column_1_5 .et_pb_wc_reviews #reviews #comments ol.commentlist li .comment-text,.et_pb_row_inner>.et_pb_column_1_6 .et_pb_wc_reviews #reviews #comments ol.commentlist li .comment-text,.et_pb_row_inner>.et_pb_column_2_9 .et_pb_wc_reviews #reviews #comments ol.commentlist li .comment-text{margin-left:0!important}}.et-dynamic-content-woo--product_reviews.woocommerce .comment-reply-title,.et-dynamic-content-woo--product_reviews.woocommerce .rating,.et-dynamic-content-woo--product_reviews.woocommerce ol.commentlist li .description,.et-dynamic-content-woo--product_reviews.woocommerce ol.commentlist li .meta{color:inherit!important;font-family:inherit;font-weight:inherit;font-style:inherit;font-size:inherit;letter-spacing:inherit;line-height:inherit;text-align:inherit;text-shadow:inherit}.et-dynamic-content-woo--product_reviews.woocommerce .woocommerce-Reviews-title{color:inherit;font-family:inherit;font-weight:inherit;font-style:inherit;letter-spacing:inherit;line-height:inherit;text-align:inherit;text-shadow:inherit}
.et_pb_with_border.et_pb_wc_reviews #reviews #comments ol.commentlist li img.avatar{border:0 solid #333}.et_pb_wc_reviews.et_pb_no_comments_count .woocommerce-Reviews-title{display:none}.et_pb_wc_reviews.et_pb_comments_module.et_pb_no_comments_count #comments{display:block}.et_pb_wc_reviews.et_pb_module .star-rating{margin-bottom:12px!important}.et_pb_wc_reviews.et_pb_module .star-rating span:before{transition:color .3s}.et_pb_wc_reviews.et_pb_no_avatar .avatar{display:none}.et_pb_wc_reviews.et_pb_no_avatar #reviews #comments ol.commentlist li .comment-text{margin-left:0!important}.et_pb_wc_reviews .comment-reply-title{display:block}.et_pb_wc_reviews.et_pb_no_comments_meta .meta,.et_pb_wc_reviews.et_pb_no_comments_rating .star-rating{display:none}@media (min-width:480px){.et_pb_row>.et_pb_column_1_6 .et_pb_wc_reviews #reviews #comments ol.commentlist li img.avatar{float:none;position:relative;margin-bottom:10px}.et_pb_row>.et_pb_column_1_6 .et_pb_wc_reviews #reviews #comments ol.commentlist li .comment-text{margin-left:0!important}}@media (min-width:980px){.et_pb_row>.et_pb_column_1_5 .et_pb_wc_reviews #reviews #comments ol.commentlist li img.avatar,.et_pb_row_inner>.et_pb_column_1_6 .et_pb_wc_reviews #reviews #comments ol.commentlist li img.avatar,.et_pb_row_inner>.et_pb_column_2_9 .et_pb_wc_reviews #reviews #comments ol.commentlist li img.avatar{float:none;position:relative;margin-bottom:10px}.et_pb_row>.et_pb_column_1_5 .et_pb_wc_reviews #reviews #comments ol.commentlist li .comment-text,.et_pb_row_inner>.et_pb_column_1_6 .et_pb_wc_reviews #reviews #comments ol.commentlist li .comment-text,.et_pb_row_inner>.et_pb_column_2_9 .et_pb_wc_reviews #reviews #comments ol.commentlist li .comment-text{margin-left:0!important}}.et-dynamic-content-woo--product_reviews.woocommerce .comment-reply-title,.et-dynamic-content-woo--product_reviews.woocommerce .rating,.et-dynamic-content-woo--product_reviews.woocommerce ol.commentlist li .description,.et-dynamic-content-woo--product_reviews.woocommerce ol.commentlist li .meta{color:inherit!important;font-family:inherit;font-weight:inherit;font-style:inherit;font-size:inherit;letter-spacing:inherit;line-height:inherit;text-align:inherit;text-shadow:inherit}.et-dynamic-content-woo--product_reviews.woocommerce .woocommerce-Reviews-title{color:inherit;font-family:inherit;font-weight:inherit;font-style:inherit;letter-spacing:inherit;line-height:inherit;text-align:inherit;text-shadow:inherit}

View File

@ -1 +1 @@
.et-db #et-boc .et-l .et_pb_with_border.et_pb_wc_reviews #reviews #comments ol.commentlist li img.avatar{border:0 solid #333}.et-db #et-boc .et-l .et_pb_wc_reviews.et_pb_no_comments_count .woocommerce-Reviews-title{display:none}.et-db #et-boc .et-l .et_pb_wc_reviews.et_pb_comments_module.et_pb_no_comments_count #comments{display:block}.et-db #et-boc .et-l .et_pb_wc_reviews.et_pb_module .star-rating{margin-bottom:12px!important}.et-db #et-boc .et-l .et_pb_wc_reviews.et_pb_module .star-rating span:before{transition:color .3s}.et-db #et-boc .et-l .et_pb_wc_reviews.et_pb_no_avatar .avatar{display:none}.et-db #et-boc .et-l .et_pb_wc_reviews.et_pb_no_avatar #reviews #comments ol.commentlist li .comment-text{margin-left:0!important}.et-db #et-boc .et-l .et_pb_wc_reviews .comment-reply-title{display:block}@media (min-width:480px){.et-db #et-boc .et-l .et_pb_row>.et_pb_column_1_6 .et_pb_wc_reviews #reviews #comments ol.commentlist li img.avatar{float:none;position:relative;margin-bottom:10px}.et-db #et-boc .et-l .et_pb_row>.et_pb_column_1_6 .et_pb_wc_reviews #reviews #comments ol.commentlist li .comment-text{margin-left:0!important}}@media (min-width:980px){.et-db #et-boc .et-l .et_pb_row>.et_pb_column_1_5 .et_pb_wc_reviews #reviews #comments ol.commentlist li img.avatar,.et-db #et-boc .et-l .et_pb_row_inner>.et_pb_column_1_6 .et_pb_wc_reviews #reviews #comments ol.commentlist li img.avatar,.et-db #et-boc .et-l .et_pb_row_inner>.et_pb_column_2_9 .et_pb_wc_reviews #reviews #comments ol.commentlist li img.avatar{float:none;position:relative;margin-bottom:10px}.et-db #et-boc .et-l .et_pb_row>.et_pb_column_1_5 .et_pb_wc_reviews #reviews #comments ol.commentlist li .comment-text,.et-db #et-boc .et-l .et_pb_row_inner>.et_pb_column_1_6 .et_pb_wc_reviews #reviews #comments ol.commentlist li .comment-text,.et-db #et-boc .et-l .et_pb_row_inner>.et_pb_column_2_9 .et_pb_wc_reviews #reviews #comments ol.commentlist li .comment-text{margin-left:0!important}}.et-db #et-boc .et-l .et-dynamic-content-woo--product_reviews.woocommerce .comment-reply-title,.et-db #et-boc .et-l .et-dynamic-content-woo--product_reviews.woocommerce .rating,.et-db #et-boc .et-l .et-dynamic-content-woo--product_reviews.woocommerce ol.commentlist li .description,.et-db #et-boc .et-l .et-dynamic-content-woo--product_reviews.woocommerce ol.commentlist li .meta{color:inherit!important;font-family:inherit;font-weight:inherit;font-style:inherit;font-size:inherit;letter-spacing:inherit;line-height:inherit;text-align:inherit;text-shadow:inherit}.et-db #et-boc .et-l .et-dynamic-content-woo--product_reviews.woocommerce .woocommerce-Reviews-title{color:inherit;font-family:inherit;font-weight:inherit;font-style:inherit;letter-spacing:inherit;line-height:inherit;text-align:inherit;text-shadow:inherit}
.et-db #et-boc .et-l .et_pb_with_border.et_pb_wc_reviews #reviews #comments ol.commentlist li img.avatar{border:0 solid #333}.et-db #et-boc .et-l .et_pb_wc_reviews.et_pb_no_comments_count .woocommerce-Reviews-title{display:none}.et-db #et-boc .et-l .et_pb_wc_reviews.et_pb_comments_module.et_pb_no_comments_count #comments{display:block}.et-db #et-boc .et-l .et_pb_wc_reviews.et_pb_module .star-rating{margin-bottom:12px!important}.et-db #et-boc .et-l .et_pb_wc_reviews.et_pb_module .star-rating span:before{transition:color .3s}.et-db #et-boc .et-l .et_pb_wc_reviews.et_pb_no_avatar .avatar{display:none}.et-db #et-boc .et-l .et_pb_wc_reviews.et_pb_no_avatar #reviews #comments ol.commentlist li .comment-text{margin-left:0!important}.et-db #et-boc .et-l .et_pb_wc_reviews .comment-reply-title{display:block}.et-db #et-boc .et-l .et_pb_wc_reviews.et_pb_no_comments_meta .meta,.et-db #et-boc .et-l .et_pb_wc_reviews.et_pb_no_comments_rating .star-rating{display:none}@media (min-width:480px){.et-db #et-boc .et-l .et_pb_row>.et_pb_column_1_6 .et_pb_wc_reviews #reviews #comments ol.commentlist li img.avatar{float:none;position:relative;margin-bottom:10px}.et-db #et-boc .et-l .et_pb_row>.et_pb_column_1_6 .et_pb_wc_reviews #reviews #comments ol.commentlist li .comment-text{margin-left:0!important}}@media (min-width:980px){.et-db #et-boc .et-l .et_pb_row>.et_pb_column_1_5 .et_pb_wc_reviews #reviews #comments ol.commentlist li img.avatar,.et-db #et-boc .et-l .et_pb_row_inner>.et_pb_column_1_6 .et_pb_wc_reviews #reviews #comments ol.commentlist li img.avatar,.et-db #et-boc .et-l .et_pb_row_inner>.et_pb_column_2_9 .et_pb_wc_reviews #reviews #comments ol.commentlist li img.avatar{float:none;position:relative;margin-bottom:10px}.et-db #et-boc .et-l .et_pb_row>.et_pb_column_1_5 .et_pb_wc_reviews #reviews #comments ol.commentlist li .comment-text,.et-db #et-boc .et-l .et_pb_row_inner>.et_pb_column_1_6 .et_pb_wc_reviews #reviews #comments ol.commentlist li .comment-text,.et-db #et-boc .et-l .et_pb_row_inner>.et_pb_column_2_9 .et_pb_wc_reviews #reviews #comments ol.commentlist li .comment-text{margin-left:0!important}}.et-db #et-boc .et-l .et-dynamic-content-woo--product_reviews.woocommerce .comment-reply-title,.et-db #et-boc .et-l .et-dynamic-content-woo--product_reviews.woocommerce .rating,.et-db #et-boc .et-l .et-dynamic-content-woo--product_reviews.woocommerce ol.commentlist li .description,.et-db #et-boc .et-l .et-dynamic-content-woo--product_reviews.woocommerce ol.commentlist li .meta{color:inherit!important;font-family:inherit;font-weight:inherit;font-style:inherit;font-size:inherit;letter-spacing:inherit;line-height:inherit;text-align:inherit;text-shadow:inherit}.et-db #et-boc .et-l .et-dynamic-content-woo--product_reviews.woocommerce .woocommerce-Reviews-title{color:inherit;font-family:inherit;font-weight:inherit;font-style:inherit;letter-spacing:inherit;line-height:inherit;text-align:inherit;text-shadow:inherit}

View File

@ -1 +1 @@
.product{word-wrap:break-word}@media (max-width:980px){.et_pb_woo_custom_button_icon .et_pb_custom_button_icon.et_pb_button:after{content:attr(data-icon-tablet)!important}}@media (max-width:767px){.et_pb_woo_custom_button_icon .et_pb_custom_button_icon.et_pb_button:after{content:attr(data-icon-phone)!important}}.et-dynamic-content-woo a{color:inherit!important;font-family:inherit;font-weight:inherit;font-style:inherit;font-size:inherit;letter-spacing:inherit;line-height:inherit;text-align:inherit;text-shadow:inherit}.woocommerce-page #content input.button:hover .et_pb_widget li a:hover{color:#2ea3f2}.woocommerce.et_pb_pagebuilder_layout div.product div.summary{margin-bottom:0}.et_pb_pagebuilder_layout .rfq_form_wrap:after{content:" ";display:block;visibility:hidden;clear:both;height:0;font-size:0}@media (min-width:981px){.woocommerce-page:not(.et-tb-has-template) .et_pb_shop ul.products li.product{clear:none}}@media (min-width:768px) and (max-width:980px){.woocommerce-page ul.products li.product:nth-child(n){margin:0 7.5% 7.5% 0!important;width:28.333%!important;clear:none;float:left!important}.woocommerce-page ul.products li.product:nth-child(3n){margin-right:0!important}.woocommerce-page ul.products li.product:nth-child(3n+1){clear:both}}@media (max-width:767px){.woocommerce-page ul.products li.product:nth-child(n){margin:0 9.5% 9.5% 0!important;width:45.25%!important;clear:none}.woocommerce-page ul.products li.product:nth-child(2n){margin-right:0!important}.woocommerce-page ul.products li.product:nth-child(odd){clear:both}}@media (max-width:479px){.woocommerce-page ul.products li.product:nth-child(n){margin:0 0 11.5%!important;width:100%!important}}
.product{word-wrap:break-word}@media (max-width:980px){.et_pb_woo_custom_button_icon .et_pb_custom_button_icon.et_pb_button:after{content:attr(data-icon-tablet)}}@media (max-width:767px){.et_pb_woo_custom_button_icon .et_pb_custom_button_icon.et_pb_button:after{content:attr(data-icon-phone)}}.et-dynamic-content-woo a{color:inherit!important;font-family:inherit;font-weight:inherit;font-style:inherit;font-size:inherit;letter-spacing:inherit;line-height:inherit;text-align:inherit;text-shadow:inherit}.woocommerce-page #content input.button:hover .et_pb_widget li a:hover{color:#2ea3f2}.woocommerce.et_pb_pagebuilder_layout div.product div.summary{margin-bottom:0}.et_pb_pagebuilder_layout .rfq_form_wrap:after{content:" ";display:block;visibility:hidden;clear:both;height:0;font-size:0}@media (min-width:981px){.woocommerce-page:not(.et-tb-has-template) .et_pb_shop ul.products li.product{clear:none}}@media (min-width:768px) and (max-width:980px){.woocommerce-page ul.products li.product:nth-child(n){margin:0 7.5% 7.5% 0!important;width:28.333%!important;clear:none;float:left!important}.woocommerce-page ul.products li.product:nth-child(3n){margin-right:0!important}.woocommerce-page ul.products li.product:nth-child(3n+1){clear:both}}@media (max-width:767px){.woocommerce-page ul.products li.product:nth-child(n){margin:0 9.5% 9.5% 0!important;width:45.25%!important;clear:none}.woocommerce-page ul.products li.product:nth-child(2n){margin-right:0!important}.woocommerce-page ul.products li.product:nth-child(odd){clear:both}}@media (max-width:479px){.woocommerce-page ul.products li.product:nth-child(n){margin:0 0 11.5%!important;width:100%!important}}

View File

@ -1 +1 @@
.et-db #et-boc .et-l .product{word-wrap:break-word}@media (max-width:980px){.et-db #et-boc .et-l .et_pb_woo_custom_button_icon .et_pb_custom_button_icon.et_pb_button:after{content:attr(data-icon-tablet)!important}}@media (max-width:767px){.et-db #et-boc .et-l .et_pb_woo_custom_button_icon .et_pb_custom_button_icon.et_pb_button:after{content:attr(data-icon-phone)!important}}.et-db #et-boc .et-l .et-dynamic-content-woo a{color:inherit!important;font-family:inherit;font-weight:inherit;font-style:inherit;font-size:inherit;letter-spacing:inherit;line-height:inherit;text-align:inherit;text-shadow:inherit}.woocommerce-page #content input.button:hover .et_pb_widget li a:hover{color:#2ea3f2}.woocommerce.et_pb_pagebuilder_layout div.product div.summary{margin-bottom:0}.et_pb_pagebuilder_layout .rfq_form_wrap:after{content:" ";display:block;visibility:hidden;clear:both;height:0;font-size:0}@media (min-width:981px){.woocommerce-page:not(.et-tb-has-template) .et_pb_shop ul.products li.product{clear:none}}@media (min-width:768px) and (max-width:980px){.woocommerce-page ul.products li.product:nth-child(n){margin:0 7.5% 7.5% 0!important;width:28.333%!important;clear:none;float:left!important}.woocommerce-page ul.products li.product:nth-child(3n){margin-right:0!important}.woocommerce-page ul.products li.product:nth-child(3n+1){clear:both}}@media (max-width:767px){.woocommerce-page ul.products li.product:nth-child(n){margin:0 9.5% 9.5% 0!important;width:45.25%!important;clear:none}.woocommerce-page ul.products li.product:nth-child(2n){margin-right:0!important}.woocommerce-page ul.products li.product:nth-child(odd){clear:both}}@media (max-width:479px){.woocommerce-page ul.products li.product:nth-child(n){margin:0 0 11.5%!important;width:100%!important}}
.et-db #et-boc .et-l .product{word-wrap:break-word}@media (max-width:980px){.et-db #et-boc .et-l .et_pb_woo_custom_button_icon .et_pb_custom_button_icon.et_pb_button:after{content:attr(data-icon-tablet)}}@media (max-width:767px){.et-db #et-boc .et-l .et_pb_woo_custom_button_icon .et_pb_custom_button_icon.et_pb_button:after{content:attr(data-icon-phone)}}.et-db #et-boc .et-l .et-dynamic-content-woo a{color:inherit!important;font-family:inherit;font-weight:inherit;font-style:inherit;font-size:inherit;letter-spacing:inherit;line-height:inherit;text-align:inherit;text-shadow:inherit}.woocommerce-page #content input.button:hover .et_pb_widget li a:hover{color:#2ea3f2}.woocommerce.et_pb_pagebuilder_layout div.product div.summary{margin-bottom:0}.et_pb_pagebuilder_layout .rfq_form_wrap:after{content:" ";display:block;visibility:hidden;clear:both;height:0;font-size:0}@media (min-width:981px){.woocommerce-page:not(.et-tb-has-template) .et_pb_shop ul.products li.product{clear:none}}@media (min-width:768px) and (max-width:980px){.woocommerce-page ul.products li.product:nth-child(n){margin:0 7.5% 7.5% 0!important;width:28.333%!important;clear:none;float:left!important}.woocommerce-page ul.products li.product:nth-child(3n){margin-right:0!important}.woocommerce-page ul.products li.product:nth-child(3n+1){clear:both}}@media (max-width:767px){.woocommerce-page ul.products li.product:nth-child(n){margin:0 9.5% 9.5% 0!important;width:45.25%!important;clear:none}.woocommerce-page ul.products li.product:nth-child(2n){margin-right:0!important}.woocommerce-page ul.products li.product:nth-child(odd){clear:both}}@media (max-width:479px){.woocommerce-page ul.products li.product:nth-child(n){margin:0 0 11.5%!important;width:100%!important}}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -50,14 +50,10 @@ class ET_Dynamic_Assets {
private $_object_id = null;
/**
* Post content.
* Entire page content, including TB Header, TB Body Layout, Post Content and TB Footer.
*
* @var null
*/
private $_post_content = null;
/**
* All content.
* Content is not passed through `the_content` filter, This means that `$_all_content` will include auto-embedded
* videos or expanded shortcodes, the content is considered raw.
*
* @var null
*/
@ -137,6 +133,13 @@ class ET_Dynamic_Assets {
*/
private $_rtl_suffix = null;
/**
* Prefix used for files that contain css from theme builder templates.
*
* @var null
*/
private $_tb_prefix = null;
/**
* Assets for all shortcode modules.
*
@ -471,6 +474,7 @@ class ET_Dynamic_Assets {
*/
public function initial_setup() {
// Don't do anything if it's not needed.
if ( ! $this->should_initiate() ) {
return;
}
@ -482,7 +486,7 @@ class ET_Dynamic_Assets {
$this->_object_id = intval( get_queried_object()->term_id );
} elseif ( ! empty( $post->ID ) ) {
$this->_object_id = intval( $post->ID );
} elseif ( is_search() ) {
} elseif ( is_search() || $this->is_virtual_page() ) {
$this->_object_id = -1;
}
@ -503,8 +507,8 @@ class ET_Dynamic_Assets {
$this->_post_id = ! empty( $post ) ? intval( $post->ID ) : -1;
$this->_tb_template_ids = $this->get_theme_builder_template_ids();
$this->_post_content = ! empty( $post ) ? $post->post_content : '';
$this->_all_content = $this->get_all_content();
$content_retriever = \Feature\ContentRetriever\ET_Builder_Content_Retriever::init();
$this->_all_content = $content_retriever->get_entire_page_content( $post );
$this->_cache_dir_path = et_core_cache_dir()->path;
$this->_cache_dir_url = et_core_cache_dir()->url;
$this->_product_dir = et_is_builder_plugin_active() ? ET_BUILDER_PLUGIN_URI : get_template_directory_uri();
@ -512,6 +516,8 @@ class ET_Dynamic_Assets {
$this->is_rtl = is_rtl();
$this->_rtl_suffix = $this->is_rtl ? '_rtl' : '';
$this->_page_builder_used = is_singular() ? et_pb_is_pagebuilder_used( $this->_post_id ) : false;
$this->_tb_prefix = $this->_tb_template_ids ? '-tb' : '';
$generate_assets = true;
// Create asset directory, if it does not exist.
$ds = DIRECTORY_SEPARATOR;
@ -538,10 +544,21 @@ class ET_Dynamic_Assets {
}
// If dynamic asset files do not exist, generate them.
$files = (array) glob( "{$this->_cache_dir_path}/{$this->_folder_name}/et*-dynamic*" );
$files = (array) glob( "{$this->_cache_dir_path}/{$this->_folder_name}/et*-dynamic*{$this->_tb_prefix}*" );
foreach ( $files as $file ) {
if ( ! et_()->includes( $file, '-late' ) ) {
$generate_assets = false;
break;
}
}
if ( $generate_assets ) {
// If we are regenerating early assets that are missing, we should clear the old assets as well.
if ( $files && ! $this->_need_late_generation ) {
ET_Core_PageResource::remove_static_resources( $this->_post_id, 'all', false, 'dynamic' );
}
if ( empty( $files ) ) {
$this->generate_dynamic_assets();
}
}
@ -597,8 +614,7 @@ class ET_Dynamic_Assets {
}
$dynamic_assets_files = array();
$files = (array) glob( "{$this->_cache_dir_path}/{$this->_folder_name}/et*-dynamic*" );
$files = (array) glob( "{$this->_cache_dir_path}/{$this->_folder_name}/et*-dynamic*{$this->_tb_prefix}*" );
if ( empty( $files ) ) {
return array();
@ -866,32 +882,15 @@ class ET_Dynamic_Assets {
$suffix = empty( $suffix ) ? '' : "-{$suffix}";
$file_name = "et-{$this->_owner}-dynamic{$tb_ids}{$maybe_post_id}{$late_suffix}{$suffix}.css";
$file_path = et_()->normalize_path( "{$file_dir}{$file_name}" );
$lock_file = wp_tempnam( $file_name );
if ( file_exists( $file_path ) ) {
return;
}
// Iterate over all the asset data to generate dynamic asset files.
foreach ( $assets_data as $file_type => $data ) {
$file_contents .= implode( "\n", array_unique( $data['content'] ) );
}
if ( file_exists( $file_path ) ) {
return;
}
// Try to create a temporary directory which we'll use as a pseudo file lock.
if ( file_exists( $lock_file ) ) {
$wp_filesystem->put_contents( $lock_file, '' );
// Create the static resource file.
$asset_created = $wp_filesystem->put_contents( $file_path, $file_contents, FS_CHMOD_FILE );
if ( ! $asset_created ) {
// There's no point in continuing.
return;
} else {
// Remove the temporary file.
unlink( $lock_file );
}
}
$wp_filesystem->put_contents( $file_path, $file_contents, FS_CHMOD_FILE );
}
/**
@ -1103,6 +1102,7 @@ class ET_Dynamic_Assets {
$assets_data = array();
$newly_processed_files = array();
$files_with_url = array( 'signup', 'icons_base', 'icons_base_social', 'icons_all', 'icons_fa_all' );
$no_protocol_path = str_replace( array( 'http:', 'https:' ), '', $this->_product_dir );
foreach ( $asset_list as $asset => $asset_data ) {
foreach ( $asset_data as $file_type => $files ) {
@ -1119,7 +1119,7 @@ class ET_Dynamic_Assets {
$file_content = $wp_filesystem->get_contents( $file );
if ( in_array( basename( $file, '.css' ), $files_with_url, true ) ) {
$file_content = preg_replace( '/#dynamic-product-dir/i', $this->_product_dir, $file_content );
$file_content = preg_replace( '/#dynamic-product-dir/i', $no_protocol_path, $file_content );
}
$file_content = trim( $file_content );
@ -1167,7 +1167,6 @@ class ET_Dynamic_Assets {
'et_pb_social_media_follow',
'et_pb_team_member',
);
if ( ! $this->_use_divi_icons || ! $this->_use_fa_icons ) {
if ( empty( $this->_presets_attributes ) ) {
$this->_presets_attributes = $this->get_preset_attributes( $this->_all_content );
@ -1195,7 +1194,7 @@ class ET_Dynamic_Assets {
}
}
$maybe_post_contains_divi_icon = $this->_use_divi_icons || $maybe_presets_contain_divi_icon || ( $this->check_for_dependency( et_pb_get_font_icon_modules(), $this->_processed_shortcodes ) && et_pb_check_if_post_contains_divi_font_icon( $this->_all_content ) );
$maybe_post_contains_divi_icon = $this->_use_divi_icons || $maybe_presets_contain_divi_icon || et_pb_check_if_post_contains_divi_font_icon( $this->_all_content );
// Load the icon font needed based on the icons being used.
$this->_use_divi_icons = $this->_use_divi_icons || ( 'on' !== $dynamic_icons || $maybe_post_contains_divi_icon || $this->check_if_class_exits( 'et-pb-icon', $this->_all_content ) );
@ -1601,6 +1600,11 @@ class ET_Dynamic_Assets {
"{$assets_prefix}/css/legacy_animations{$this->_cpt_suffix}.css",
),
),
'et_pb_icon' => array(
'css' => array(
"{$assets_prefix}/css/icon{$this->_cpt_suffix}.css",
),
),
'et_pb_button' => array(
'css' => array(
"{$assets_prefix}/css/button{$this->_cpt_suffix}.css",
@ -1945,9 +1949,49 @@ class ET_Dynamic_Assets {
"{$assets_prefix}/css/woo_title{$this->_cpt_suffix}.css",
),
),
'et_pb_wc_cart_totals' => array(
'css' => array(
"{$assets_prefix}/css/woo_cart_totals{$this->_cpt_suffix}.css",
),
),
'et_pb_wc_cart_products' => array(
'css' => array(
"{$assets_prefix}/css/woo_cart_products{$this->_cpt_suffix}.css",
),
),
'et_pb_wc_cross_sells' => array(
'css' => array(
"{$assets_prefix}/css/woo_cross_sells{$this->_cpt_suffix}.css",
),
),
'et_pb_wc_checkout_billing' => array(
'css' => array(
"{$assets_prefix}/css/woo_checkout_billing{$this->_cpt_suffix}.css",
),
),
'et_pb_wc_checkout_shipping' => array(
'css' => array(
"{$assets_prefix}/css/woo_checkout_shipping{$this->_cpt_suffix}.css",
),
),
'et_pb_wc_checkout_additional_info' => array(
'css' => array(
"{$assets_prefix}/css/woo_checkout_info{$this->_cpt_suffix}.css",
),
),
'et_pb_wc_checkout_order_details' => array(
'css' => array(
"{$assets_prefix}/css/woo_checkout_details{$this->_cpt_suffix}.css",
),
),
'et_pb_wc_checkout_payment_info' => array(
'css' => array(
"{$assets_prefix}/css/woo_checkout_payment{$this->_cpt_suffix}.css",
),
'et_pb_icon' => array(
'css' => "{$assets_prefix}/css/icon{$this->_cpt_suffix}.css",
),
),
);
/**
@ -2056,61 +2100,6 @@ class ET_Dynamic_Assets {
return $template_ids;
}
/**
* Get post content from Theme Builder templates.
* Combine it with the post content from the current post.
*
* @return string
* @since 4.10.0
*/
public function get_all_content() {
$all_content = '';
$tb_layouts = et_theme_builder_get_template_layouts();
$template_ids = [];
if ( ! empty( $tb_layouts ) ) {
if ( $tb_layouts[ ET_THEME_BUILDER_HEADER_LAYOUT_POST_TYPE ]['override'] ) {
if ( ! empty( $tb_layouts[ ET_THEME_BUILDER_HEADER_LAYOUT_POST_TYPE ]['enabled'] ) ) {
$template_ids[] = intval( $tb_layouts[ ET_THEME_BUILDER_HEADER_LAYOUT_POST_TYPE ]['id'] );
}
}
if ( $tb_layouts[ ET_THEME_BUILDER_BODY_LAYOUT_POST_TYPE ]['override'] ) {
if ( ! empty( $tb_layouts[ ET_THEME_BUILDER_BODY_LAYOUT_POST_TYPE ]['enabled'] ) ) {
$template_ids[] = intval( $tb_layouts[ ET_THEME_BUILDER_BODY_LAYOUT_POST_TYPE ]['id'] );
}
}
$template_ids[] = 'content';
if ( $tb_layouts[ ET_THEME_BUILDER_FOOTER_LAYOUT_POST_TYPE ]['override'] ) {
if ( ! empty( $tb_layouts[ ET_THEME_BUILDER_FOOTER_LAYOUT_POST_TYPE ]['enabled'] ) ) {
$template_ids[] = intval( $tb_layouts[ ET_THEME_BUILDER_FOOTER_LAYOUT_POST_TYPE ]['id'] );
}
}
}
// Ensure post content is always present.
$template_ids = empty( $template_ids ) ? [ 'content' ] : $template_ids;
// $template_ids will be in the following order, (assuming each are present):
// header, body, footer.
// so, as we loop through them, were intentionally appending the
// post content so that it's appended right after the body layout,
// making the final order of the $all_content as follows:
// header, body, post content, footer.
foreach ( $template_ids as $key => $template_id ) {
if ( 'content' === $template_id ) {
$all_content .= $this->_post_content;
} else {
$template = get_post( $template_id );
$all_content .= $template->post_content;
}
}
return $all_content;
}
/**
* Merge multiple arrays and returns an array with unique values.
*
@ -2136,7 +2125,7 @@ class ET_Dynamic_Assets {
* @param array $array_1 First array.
* @param array $array_2 Second array.
*
* @since ??
* @since 4.13.0
*/
public function get_new_array_values( $array_1, $array_2 ) {
$new_array_values = array();
@ -2596,6 +2585,9 @@ class ET_Dynamic_Assets {
}
foreach ( $module_presets->presets as $key => $value ) {
if ( empty( $value->settings ) ) {
continue;
}
$presets_attributes = array_merge( $presets_attributes, (array) $value->settings );
}
}
@ -2612,13 +2604,15 @@ class ET_Dynamic_Assets {
* @since 4.10.0
*/
public function check_if_attribute_exits( $attribute, $content ) {
$preset_attributes = array();
$has_attribute = preg_match( '/' . $attribute . '=".+"/', $content );
if ( ! empty( $this->_presets_attributes ) ) {
$preset_attributes = array_keys( $this->_presets_attributes );
return $has_attribute && in_array( $attribute, $preset_attributes, true );
}
return preg_match( '/' . $attribute . '=".+"/', $content ) || in_array( $attribute, $preset_attributes, true );
return $has_attribute;
}
/**
@ -2755,6 +2749,59 @@ class ET_Dynamic_Assets {
'btf' => $btf_assets,
];
}
/**
* Check if current page is virtual.
*
* @return bool
* @since 4.14.3
*/
public function is_virtual_page() {
global $wp;
$slug = $wp->request;
/**
* Valid virtual pages for which dynamic css should be enabled.
* Virtual pages are just custom enpoints or links added via rewrite hooks,
* Meaning, it's not an actual page but it does have a valid link possibly,
* custom generated by a plugin.
* Add more virtual pages slug if there are known compatibility issues.
*
* @return bool
* @since 4.14.3
*/
$valid_virtual_pages = apply_filters(
'et_builder_dynamic_css_virtual_pages',
[
'homes-for-sale-search',
'homes-for-sale-search-advanced',
]
);
if ( in_array( $slug, $valid_virtual_pages, true ) ) {
return true;
}
// Usually custom rewrite rules will return as page but will have no ID.
if ( is_page() && 0 === get_the_ID() ) {
return true;
}
return false;
}
/*
* Get a list of shortcodes used in current page.
*/
public function get_saved_page_shortcodes() {
$all_shortcodes = $this->metadata_get( '_et_dynamic_cached_shortcodes' );
if ( empty( $all_shortcodes ) ) {
return array();
}
return $all_shortcodes;
}
}
ET_Dynamic_Assets::init();

View File

@ -153,8 +153,16 @@ function et_is_dynamic_front_end_request() {
if (
// Disable for WordPress admin requests.
! is_admin()
// Disable for non-front-end requests.
&& ! wp_doing_ajax()
&& ! wp_doing_cron()
&& ! wp_is_json_request()
&& ! ( defined( 'REST_REQUEST' ) && REST_REQUEST )
&& ! ( defined( 'WP_CLI' ) && WP_CLI )
&& ! ( defined('XMLRPC_REQUEST') && XMLRPC_REQUEST )
&& ! is_trackback()
&& ! is_feed()
&& ! get_query_var( 'sitemap' )
// Disable when in preview modes.
&& ! is_customize_preview()
&& ! is_et_pb_preview()

View File

@ -41,10 +41,32 @@ function et_builder_get_product_dynamic_content_fields() {
'product_reviews' => array(
'label' => esc_html__( 'Product Reviews', 'et_builder' ),
'type' => 'text',
'fields' => array(
'enable_title' => array(
'label' => esc_html__( 'Enable Title', 'et_builder' ),
'type' => 'yes_no_button',
'options' => array(
'on' => et_builder_i18n( 'Yes' ),
'off' => et_builder_i18n( 'No' ),
),
'default' => 'on',
),
),
),
'product_additional_information' => array(
'label' => esc_html__( 'Product Additional Information', 'et_builder' ),
'type' => 'text',
'fields' => array(
'enable_title' => array(
'label' => esc_html__( 'Enable Title', 'et_builder' ),
'type' => 'yes_no_button',
'options' => array(
'on' => et_builder_i18n( 'Yes' ),
'off' => et_builder_i18n( 'No' ),
),
'default' => 'on',
),
),
),
'product_reviews_tab' => array(
'label' => esc_html__( 'Product Reviews', 'et_builder' ),
@ -1443,6 +1465,7 @@ function et_builder_filter_resolve_default_dynamic_content( $content, $name, $se
);
$no_reviews = is_array( $comments ) && count( $comments ) > 0 ? '' : $no_reviews_text;
$is_show_title = 'on' === $_->array_get( $settings, 'enable_title', 'on' );
if ( wp_doing_ajax() ) {
$page = get_query_var( 'cpage' );
@ -1474,12 +1497,14 @@ function et_builder_filter_resolve_default_dynamic_content( $content, $name, $se
);
}
$title = $is_show_title
? sprintf( '<h2 class="woocommerce-Reviews-title">%s</h2>', et_core_esc_previously( $reviews_title ) )
: '';
$content = sprintf(
'
<div id="reviews" class="woocommerce-Reviews">
<h2 class="woocommerce-Reviews-title">
%1$s
</h2>
<div id="comments">
<ol class="commentlist">
%2$s
@ -1494,11 +1519,11 @@ function et_builder_filter_resolve_default_dynamic_content( $content, $name, $se
</div>
</div>
',
et_core_esc_previously( $reviews_title ),
et_core_esc_previously( $content ),
et_core_esc_previously( $reviews_comment_form ),
et_core_esc_previously( $no_reviews ),
et_core_esc_previously( $pagination )
/* 1$s */ et_core_esc_previously( $title ),
/* 2$s */ et_core_esc_previously( $content ),
/* 3$s */ et_core_esc_previously( $reviews_comment_form ),
/* 4$s */ et_core_esc_previously( $no_reviews ),
/* 5$s */ et_core_esc_previously( $pagination )
);
$wrapped = true;
break;
@ -1509,12 +1534,14 @@ function et_builder_filter_resolve_default_dynamic_content( $content, $name, $se
}
$dynamic_product = ET_Builder_Module_Helper_Woocommerce_Modules::get_product( $post_id );
$show_title = $_->array_get( $settings, 'enable_title', 'on' );
if ( $dynamic_product ) {
$is_woo = true;
$content = ET_Builder_Module_Woocommerce_Additional_Info::get_additional_info(
array(
'product' => $dynamic_product->get_id(),
'show_title' => $show_title,
)
);
} else {

View File

@ -77,6 +77,10 @@ class ET_Builder_Global_Presets_History {
$history = json_decode( stripslashes( $_POST['history'] ) );
if ( empty( $history->history ) ) {
et_core_die( esc_html__( 'Global History data is empty.', 'et_builder' ) );
}
if ( self::sanitize_and_validate( $history ) ) {
$current_settings = $history->history[ $history->index ];
et_update_option( ET_Builder_Global_Presets_Settings::GLOBAL_PRESETS_OPTION, $current_settings->settings );
@ -265,6 +269,9 @@ class ET_Builder_Global_Presets_History {
);
}
// Ensure history is an object.
$history = is_object( $history ) ? $history : (object) $history;
$this->_apply_attribute_migrations( $history );
return $history;
@ -323,7 +330,14 @@ class ET_Builder_Global_Presets_History {
* @return void
*/
protected function _apply_attribute_migrations( $history ) {
if ( empty( $history->history ) ) {
return;
}
foreach ( $history->history as $record ) {
if ( empty( $record->settings ) ) {
continue;
}
foreach ( $record->settings as $module => $preset_structure ) {
foreach ( $preset_structure->presets as $preset_id => $preset ) {
ET_Builder_Global_Presets_Settings::migrate_settings_as_module_attributes( $preset, $module );

View File

@ -92,6 +92,7 @@ class ET_Builder_Global_Presets_Settings {
// phpcs:enable
add_action( 'et_builder_ready', array( $this, 'migrate_custom_defaults' ), 100 );
add_action( 'et_builder_ready', array( $this, 'apply_attribute_migrations' ), 101 );
}
/**
@ -395,10 +396,23 @@ class ET_Builder_Global_Presets_Settings {
et_update_option( self::CUSTOM_DEFAULTS_MIGRATED_FLAG, true );
}
/**
* Apply attribute migrations.
*
* @since 4.14.0
*/
public function apply_attribute_migrations() {
foreach ( $this->_settings as $module => $preset_structure ) {
foreach ( $preset_structure->presets as $preset_id => $preset ) {
self::migrate_settings_as_module_attributes( $preset, $module );
}
}
}
/**
* Configuring and running migration of global presets via "et_pb_module_shortcode_attributes".
*
* @since ?
* @since 4.14.0
*
* @param object $preset Global preset object.
* @param string $module_slug Module slug.
@ -444,15 +458,16 @@ class ET_Builder_Global_Presets_Settings {
/**
* Converts module type (slug).
*
* Used to separate Global Presets settings for modules sharing the same slug but having different meaning
* For example: Regular, Fullwidth and Specialty section types
*
* @since 4.5.0
*
* @param string $type - The module type (slug).
* @param array $attrs - The module attributes.
* @param string $type The module type (slug).
* @param array $attrs The module attributes.
*
* @return string - The converted module type (slug)
* @return string The converted module type (slug)
*/
public function maybe_convert_module_type( $type, $attrs ) {
if ( isset( self::$_module_types_conversion_map[ $type ] ) ) {
@ -531,7 +546,7 @@ class ET_Builder_Global_Presets_Settings {
*
* Returns FALSE when the value is an Object or an array.
*
* @since ?? Included PHPDoc description.
* @since 4.13.0 Included PHPDoc description.
* @since 4.5.0
*
* @param $value - The Global Presets setting value

View File

@ -202,33 +202,10 @@ class ET_GB_Editor_Typography {
);
}
$body_font_color = esc_html( et_get_option( 'font_color' ) );
if ( ! empty( $body_font_color ) ) {
$body_styles .= et_builder_generate_css_style(
array(
'style' => 'color',
'value' => $body_font_color,
)
);
}
if ( ! empty( $body_styles ) ) {
$body_styles = sprintf( 'body { %1$s }', $body_styles );
}
$link_color = esc_html( et_get_option( 'link_color' ) );
if ( ! empty( $link_color ) ) {
$body_styles .= et_builder_generate_css(
array(
'style' => 'color',
'value' => $link_color,
'selector' => 'a',
)
);
}
return $body_styles;
}
@ -270,17 +247,6 @@ class ET_GB_Editor_Typography {
);
}
$header_color = esc_html( et_get_option( 'header_color' ) );
if ( ! empty( $header_color ) ) {
$title_styles .= et_builder_generate_css_style(
array(
'style' => 'color',
'value' => $header_color,
)
);
}
$body_header_height = esc_html( et_get_option( 'body_header_height' ) );
if ( ! empty( $body_header_height ) && '1' !== $body_header_height ) {
@ -353,11 +319,13 @@ class ET_GB_Editor_Typography {
// Get style generated by modules.
$tb_style = ET_Builder_Element::get_style();
$have_post_content_style = preg_match( '/\.et_pb_post_content_0 { (.*) }/', $tb_style, $matches );
// Remove `color` property from theme builder style.
$tb_style = preg_replace( '/(?<=[{;\s])color:.*?;/s', '', $tb_style );
$have_post_content_style = preg_match( '/\.et_pb_post_content_0\s*{\s*(.*?)\s*}/s', $tb_style, $matches );
if ( $have_post_content_style && isset( $matches[1] ) ) {
$et_pb_post_content_styles = explode( ';', $matches[1] );
$typography_properties = array(
'color',
'font-family',
'font-size',
'font-weight',
@ -375,9 +343,9 @@ class ET_GB_Editor_Typography {
foreach ( $et_pb_post_content_styles as $et_pb_post_content_style ) {
$style = explode( ':', $et_pb_post_content_style ); // explode CSS property and value.
$css_property = trim( et_()->array_get( $style, '0' ) );
$css_property = trim( $style[0] );
if ( in_array( $css_property, $typography_properties, true ) ) {
$post_content_style .= $css_property . ':' . et_()->array_get( $style, '1' ) . ';';
$post_content_style .= $css_property . ':' . $style[1] . ';';
}
}

View File

@ -115,12 +115,54 @@ if ( ! function_exists( 'et_pb_check_and_convert_icon_raw_value' ) ) {
$icon_raw_value = et_pb_get_extended_font_icon_value( $icon, false, true );
if ( ! empty( $icon_raw_value ) && in_array( $icon_type, array( 'fa', 'divi' ), true ) && in_array( (int) $font_weight, array( 400, 900 ), true ) ) {
return $icon_raw_value . '||' . $icon_type . '||' . $font_weight;
return et_pb_build_extended_font_icon_value( $icon_raw_value, $icon_type, $font_weight );
}
return '';
}
}
if ( ! function_exists( 'et_pb_build_extended_font_icon_value' ) ) {
/**
* Create extended font icon value.
*
* @since ?
*
* @param string $icon_value icon value (if passed icon value in the old divi format it will be convertetd to unicode value).
* @param string $icon_type type of icon (divi is default).
* @param string $font_weight type of icon (400 is default).
* @param bool $decode_amp do or not ampersand decoding (&amp; -> &).
* @return string
*/
function et_pb_build_extended_font_icon_value( $icon_value, $icon_type = null, $font_weight = null, $decode_amp = false ) {
if ( et_pb_maybe_extended_icon( $icon_value ) ) {
return $icon_value;
}
if ( ! $icon_type ) {
$icon_type = 'divi';
}
if ( ! $font_weight ) {
$font_weight = et_pb_get_normal_font_weight_value();
}
if ( et_pb_maybe_old_divi_font_icon( $icon_value ) ) {
// the font icon value is saved in the following format: %%index_number%%.
$icon_index = (int) str_replace( '%', '', $icon_value );
$icon_symbols = et_pb_get_font_icon_symbols();
$icon_value = isset( $icon_symbols[ $icon_index ] ) ? $icon_symbols[ $icon_index ] : '';
}
if ( $decode_amp ) {
$icon_value = str_replace( '&amp;', '&', $icon_value );
}
return $icon_value . '||' . $icon_type . '||' . $font_weight;
}
}
if ( ! function_exists( 'et_pb_get_extended_icon_data' ) ) {
/**
* Depending on the $icon_data_type, returns string unicode icon value or icon type.
@ -405,12 +447,13 @@ if ( ! function_exists( 'et_pb_get_font_icon_names_regex' ) ) :
* @since ?
*
* @param bool $maybe_fa_icon_type define what kind of font icon we need o get regex.
* @param bool $use_only_defined_icon_fields values will be searched only in certain fields that can contain icon values (see: `et_pb_get_font_icon_field_names()`).
*
* @return string
*/
function et_pb_get_font_icon_names_regex( $maybe_fa_icon_type = false ) {
function et_pb_get_font_icon_names_regex( $maybe_fa_icon_type = false, $use_only_defined_icon_fields = false ) {
$icon_type = $maybe_fa_icon_type ? 'fa' : 'divi';
return '/(' . et_pb_get_all_font_icon_option_names_string() . ')\=\"([^"]*)\|\|(' . $icon_type . ')\|\|(400|900)\"/mi';
return ! $use_only_defined_icon_fields ? '/\=\"([^"]*)\|\|(' . $icon_type . ')\|\|(400|900)\"/mi' : '/(' . et_pb_get_all_font_icon_option_names_string() . ')\=\"([^"]*)\|\|(' . $icon_type . ')\|\|(400|900)\"/mi';
}
endif;
@ -436,13 +479,16 @@ if ( ! function_exists( 'et_pb_check_if_post_contains_divi_font_icon' ) ) :
* @since ?
*
* @param string $content post's content.
* @param bool $use_only_defined_icon_fields values will be searched only in certain fields that can contain icon values (see: `et_pb_get_font_icon_field_names()`).
*
* @return bool
*/
function et_pb_check_if_post_contains_divi_font_icon( $content ) {
function et_pb_check_if_post_contains_divi_font_icon( $content, $use_only_defined_icon_fields = false ) {
// Check the non-extended icon value.
$non_extended_icon_regex = '/(' . et_pb_get_all_font_icon_option_names_string() . ')\=\"%%([^"]*)%%\"/mi';
return ! empty( preg_match_all( et_pb_get_font_icon_names_regex(), $content ) ) || ! empty( preg_match_all( $non_extended_icon_regex, $content ) );
$old_divi_icon_regex = ! $use_only_defined_icon_fields ? '/\=\"%%([^"]*)%%\"/mi' : '/(' . et_pb_get_all_font_icon_option_names_string() . ')\=\"%%([^"]*)%%\"/mi';
$single_char_divi_icon_regex = '/(' . et_pb_get_all_font_icon_option_names_string() . ')\=\"[\s\S]\"/mi';
return ! empty( preg_match_all( et_pb_get_font_icon_names_regex(), $content ) ) || ! empty( preg_match_all( $old_divi_icon_regex, $content ) ) || ! empty( preg_match_all( $single_char_divi_icon_regex, $content ) );
}
endif;

View File

@ -26,16 +26,480 @@ if ( ! defined( 'ET_BUILDER_WC_PRODUCT_PAGE_CONTENT_STATUS_META_KEY' ) ) {
}
/**
* Returning <img> string for default image placeholder
* Handles Shipping calculator Update button click.
*
* @since 4.0.10
* `wc-form-handler` handles shipping calculator update ONLY when WooCommerce shortcode is used.
* Hence, Cart Total's shipping calculator update is handled this way.
*
* @since 4.14.3
*/
function et_builder_handle_shipping_calculator_update_btn_click() {
// phpcs:ignore WordPress.Security.NonceVerification.Missing -- Nonce verification is handled by WooCommerce plugin.
if ( ! isset( $_POST['woocommerce-shipping-calculator-nonce'] ) ) {
return;
}
// phpcs:ignore WordPress.Security.NonceVerification.Missing -- Nonce verification is handled by WooCommerce plugin.
if ( ! isset( $_POST['_wp_http_referer'] ) ) {
return;
}
// phpcs:ignore WordPress.Security.NonceVerification.Missing -- Nonce verification is handled by WooCommerce plugin.
$referrer = esc_url_raw( $_POST['_wp_http_referer'] );
$referrer_page_id = url_to_postid( $referrer );
$cart_page_id = wc_get_page_id( 'cart' );
if ( $cart_page_id !== $referrer_page_id ) {
return;
}
$post_content = get_post_field( 'post_content', $referrer_page_id );
if ( has_shortcode( $post_content, 'woocommerce_cart' ) ) {
return;
}
if ( ( ! class_exists( 'WC_Shortcodes' ) ) ||
( ! method_exists( 'WC_Shortcodes', 'cart' ) ) ) {
return;
}
WC_Shortcodes::cart();
}
/**
* Identify whether Woo v2 should replace content on Cart & Checkout pages.
*
* @param string $shortcode Post content. Builder converts empty string to shortcode string.
*
* @since 4.14.0
*
* @return bool
*/
function et_builder_wc_should_replace_content( $shortcode ) {
$default_shortcodes = array( 'et_pb_section', 'et_pb_row', 'et_pb_column', 'et_pb_text', 'woocommerce_cart', 'woocommerce_checkout' );
$should_replace_content = true;
// Get all shortcodes on the page.
preg_match_all( '@\[([^<>&/\[\]\x00-\x20=]++)@', $shortcode, $matches );
$matched_shortcodes = $matches[1];
foreach ( $matched_shortcodes as $shortcode ) {
// If a shortcode exists that is not a default shortcode, don't replace content. The user has already built a custom page.
if ( ! in_array( $shortcode, $default_shortcodes, true ) ) {
$should_replace_content = false;
break;
}
}
return $should_replace_content;
}
/**
* Stop redirecting to Cart page when enabling builder on Checkout page.
*
* @since 4.14.0
*
* @link https://github.com/elegantthemes/Divi/issues/23873
*
* @param bool $flag Flag.
*
* @return bool
*/
function et_builder_stop_cart_redirect_while_enabling_builder( $flag ) {
/*
* Don't need to check if the current page is Checkout page since this filter
* `woocommerce_checkout_redirect_empty_cart` only fires if the
* current page is a Checkout page.
*/
$post_id = get_the_ID();
if ( is_array( $_GET ) && isset( $_GET['et_fb'] ) && '1' === $_GET['et_fb'] ) {
$is_builder_activation_request = true;
} else {
// Verify if the request is a valid Builder activation request.
$is_builder_activation_request = et_core_security_check(
'',
"et_fb_activation_nonce_{$post_id}",
'et_fb_activation_nonce',
'_REQUEST',
false
);
}
return $is_builder_activation_request ? false : $flag;
}
/**
* Message to be displayed in Checkout Payment Info module in VB mode.
*
* So styling the Notice becomes easier.
*
* @since 4.14.0
*
* @return string
*/
function et_builder_wc_placeholder_img() {
function et_builder_wc_no_available_payment_methods_message() {
// Fallback.
$message = esc_html__( 'Sorry, it seems that there are no available payment methods for your state. Please contact us if you require assistance or wish to make alternate arrangements.' );
if ( ! function_exists( 'WC' ) ) {
return $message;
}
if ( ! isset( WC()->customer ) && ! method_exists( WC()->customer, 'get_billing_country' ) ) {
return $message;
}
$message = WC()->customer->get_billing_country()
? esc_html__( 'Sorry, it seems that there are no available payment methods for your state. Please contact us if you require assistance or wish to make alternate arrangements.', 'et_builder' )
: esc_html__( 'Please fill in your details above to see available payment methods.', 'et_builder' );
return apply_filters(
'woocommerce_no_available_payment_methods_message',
$message
);
}
/**
* Output the cart shipping calculator.
*
* @param string $button_text Text for the shipping calculation toggle.
*/
function et_builder_woocommerce_shipping_calculator( $button_text = '' ) {
wp_enqueue_script( 'wc-country-select' );
wc_get_template(
'cart/shipping-calculator.php',
array(
'button_text' => $button_text,
)
);
}
/**
* Gets the Checkout modules notice to be displayed on non-checkout pages.
*
* @since 4.14.0
*
* @used-by et_fb_get_static_backend_helpers()
*
* @return string
*/
function et_builder_wc_get_non_checkout_page_notice() {
return esc_html__( 'This module will not function properly on the front end of your website because this is not the assigned Checkout page.', 'et_builder' );
}
/**
* Gets the Checkout notice to be displayed on Checkout Payment Info module.
*
* @since 4.14.0
*
* @param string $woocommerce_ship_to_destination Default `shipping`.
*
* @used-by et_fb_get_static_backend_helpers()
*
* @return string
*/
function et_builder_wc_get_checkout_notice( $woocommerce_ship_to_destination = 'shipping' ) {
$settings_modal_notice = '';
if ( 'billing_only' === $woocommerce_ship_to_destination ) {
$settings_modal_notice = wp_kses(
__( '<strong>Woo Billing Address Module</strong> must be added to this page to allow users to submit orders.', 'et_builder' ),
array( 'strong' => array() )
);
} else {
$settings_modal_notice = wp_kses(
__( '<strong>Woo Billing Address Module</strong> and <strong>Woo Shipping Address Module</strong> must be added to this page to allow users to submit orders.', 'et_builder' ),
array( 'strong' => array() )
);
}
return $settings_modal_notice;
}
/**
* Stop WooCommerce from redirecting Checkout page to Cart when the cart is empty.
*
* Divi Builder stops redirection only for logged-in admins.
*
* @since 4.14.0
*/
function et_builder_wc_template_redirect() {
$checkout_page_id = wc_get_page_id( 'checkout' );
$post = get_post( $checkout_page_id );
if ( ! ( $post instanceof WP_Post ) ) {
return;
}
$is_checkout_page = $checkout_page_id === $post->ID;
if ( ! $is_checkout_page ) {
return;
}
if ( ! et_core_is_fb_enabled() ) {
return;
}
if ( ! is_user_logged_in() || ! current_user_can( 'manage_options' ) ) {
return;
}
$has_wc_shortcode = has_shortcode( $post->post_content, 'et_pb_section' );
if ( ! $has_wc_shortcode ) {
return;
}
add_filter( 'woocommerce_checkout_redirect_empty_cart', '__return_false' );
}
/**
* Sets the meta to indicate that the Divi content has been modified.
*
* This avoids setting the default WooCommerce Modules layout more than once.
*
* @link https://github.com/elegantthemes/Divi/issues/16420
*
* @since 4.14.0
*
* @param int $post_id Post ID.
*/
function et_builder_wc_set_page_content_status( $post_id ) {
if ( 0 === absint( $post_id ) ) {
return;
}
/**
* The ID page of the Checkout page set in WooCommerce Settings page.
*
* WooCommerce Settings Advanced Checkout page
*/
$checkout_page_id = wc_get_page_id( 'checkout' );
/**
* The ID page of the Cart page set in WooCommerce Settings page.
*
* WooCommerce Settings Advanced Cart page
*/
$cart_page_id = wc_get_page_id( 'cart' );
$is_cart = $post_id === $cart_page_id;
$is_checkout = $post_id === $checkout_page_id;
$is_product = 'product' === get_post_type( $post_id );
// Take action only on Product, Cart and Checkout pages. Bail early otherwise.
if ( ! ( $is_product || $is_cart || $is_checkout ) ) {
return;
}
$modified_status = 'modified';
$is_content_status_modified = get_post_meta( $post_id, ET_BUILDER_WC_PRODUCT_PAGE_CONTENT_STATUS_META_KEY, true ) === $modified_status;
if ( $is_content_status_modified ) {
return;
}
update_post_meta( $post_id, ET_BUILDER_WC_PRODUCT_PAGE_CONTENT_STATUS_META_KEY, $modified_status );
}
/**
* Gets the prefilled Cart Page content built using Divi Woo Modules.
*
* @since 4.14.0
*
* @return string
*/
function et_builder_wc_get_prefilled_cart_page_content() {
$page_title = '[et_pb_post_title meta="off" featured_image="off"][/et_pb_post_title]';
// Gets Parent theme's info in case child theme is used.
if ( 'Extra' === et_core_get_theme_info( 'Name' ) ) {
$page_title = '';
}
return '
[et_pb_section]
[et_pb_row]
[et_pb_column type="4_4"]
' . $page_title . '
[et_pb_wc_cart_notice page_type="cart"][/et_pb_wc_cart_notice]
[et_pb_wc_cart_products][/et_pb_wc_cart_products]
[/et_pb_column]
[/et_pb_row]
[et_pb_row column_structure="1_2,1_2"]
[et_pb_column type="1_2"]
[et_pb_wc_cross_sells][/et_pb_wc_cross_sells]
[/et_pb_column]
[et_pb_column type="1_2"]
[et_pb_wc_cart_totals][/et_pb_wc_cart_totals]
[/et_pb_column]
[/et_pb_row]
[/et_pb_section]
';
}
/**
* Gets the prefilled Checkout Page content built using Divi Woo Modules.
*
* @since 4.14.0
* @return string
*/
function et_builder_wc_get_prefilled_checkout_page_content() {
$page_title = '[et_pb_post_title meta="off" featured_image="off"][/et_pb_post_title]';
// Use `et_core_get_theme_info` to get Parent theme's info even when a child theme is used.
if ( 'Extra' === et_core_get_theme_info( 'Name' ) ) {
$page_title = '';
}
return '
[et_pb_section]
[et_pb_row custom_padding="||0%||false|false"]
[et_pb_column type="4_4"]
' . $page_title . '
[et_pb_wc_cart_notice page_type="checkout"][/et_pb_wc_cart_notice]
[/et_pb_column]
[/et_pb_row]
[et_pb_row column_structure="1_2,1_2"]
[et_pb_column type="1_2"]
[et_pb_wc_checkout_billing ][/et_pb_wc_checkout_billing]
[/et_pb_column]
[et_pb_column type="1_2"]
[et_pb_wc_checkout_shipping][/et_pb_wc_checkout_shipping]
[et_pb_wc_checkout_additional_info][/et_pb_wc_checkout_additional_info]
[/et_pb_column]
[/et_pb_row]
[et_pb_row]
[et_pb_column type="4_4"]
[et_pb_wc_checkout_order_details][/et_pb_wc_checkout_order_details]
[et_pb_wc_checkout_payment_info][/et_pb_wc_checkout_payment_info]
[/et_pb_column]
[/et_pb_row]
[/et_pb_section]
';
}
/**
* Sets the pre-filled Divi Woo Pages layout content.
*
* The following are the three types of WooCommerce pages that have pre-filled content.
*
* 1. WooCommerce Product page
* 2. WooCommerce Cart page
* 3. WooCommerce Checkout page
*
* @param string $maybe_shortcode_content May be shortcode content.
* @param int $post_id Post ID.
*
* @return string
*/
function et_builder_wc_set_prefilled_page_content( $maybe_shortcode_content, $post_id ) {
$post = get_post( absint( $post_id ) );
if ( ! $post ) {
return $maybe_shortcode_content;
}
/**
* The ID page of the Checkout page set in WooCommerce Settings page.
*
* WooCommerce Settings Advanced Checkout page
*/
$checkout_page_id = wc_get_page_id( 'checkout' );
/**
* The ID page of the Cart page set in WooCommerce Settings page.
*
* WooCommerce Settings Advanced Cart page
*/
$cart_page_id = wc_get_page_id( 'cart' );
$is_cart = $post_id === $cart_page_id;
$is_checkout = $post_id === $checkout_page_id;
$is_product = ( $post instanceof WP_Post ) && 'product' === $post->post_type;
// Bail early when none of the conditions are met.
if ( ! ( $is_product || $is_checkout || $is_cart ) ) {
return $maybe_shortcode_content;
}
// Bail early if the Page already has initial content set.
$is_content_status_modified = 'modified' === get_post_meta( $post_id, ET_BUILDER_WC_PRODUCT_PAGE_CONTENT_STATUS_META_KEY, true );
if ( $is_content_status_modified ) {
return $maybe_shortcode_content;
}
$should_replace_content = true;
if ( $is_cart || $is_checkout ) {
$should_replace_content = et_builder_wc_should_replace_content( $maybe_shortcode_content );
}
if ( $is_cart && $should_replace_content ) {
return et_builder_wc_get_prefilled_cart_page_content();
} elseif ( $is_checkout && $should_replace_content ) {
return et_builder_wc_get_prefilled_checkout_page_content();
} elseif ( $is_product ) {
$args = array();
$product_page_layout = et_builder_wc_get_product_layout( $post_id );
/*
* When FALSE, this means the Product doesn't use Builder at all;
* Or the Product has been using the Builder before WooCommerce Modules QF launched.
*/
if ( ! $product_page_layout ) {
$product_page_layout = et_get_option(
'et_pb_woocommerce_page_layout',
'et_build_from_scratch'
);
}
// Load default content.
if ( 'et_default_layout' === $product_page_layout ) {
return $maybe_shortcode_content;
}
$has_et_builder_shortcode = has_shortcode( $maybe_shortcode_content, 'et_pb_section' );
$is_layout_type_build_from_scratch = 'et_build_from_scratch' === $product_page_layout;
if ( $has_et_builder_shortcode && $is_layout_type_build_from_scratch ) {
$args['existing_shortcode'] = $maybe_shortcode_content;
}
return et_builder_wc_get_prefilled_product_page_content( $args );
}
return $maybe_shortcode_content;
}
/**
* Returning <img> string for default image placeholder
*
* @since 4.14.0 Added $mode param.
* @since 4.0.10
*
* @param string $mode Default ET_BUILDER_PLACEHOLDER_LANDSCAPE_IMAGE_DATA. Either Landscape or
* Portrait image mode.
*
* @return string
*/
function et_builder_wc_placeholder_img( $mode = 'portrait' ) {
$allowed_list = array(
'portrait' => ET_BUILDER_PLACEHOLDER_PORTRAIT_VARIATION_IMAGE_DATA,
'landscape' => ET_BUILDER_PLACEHOLDER_LANDSCAPE_IMAGE_DATA,
);
if ( ! in_array( $mode, array_keys( $allowed_list ), true ) ) {
$mode = 'portrait';
}
return sprintf(
'<img src="%1$s" alt="2$s" />',
et_core_esc_attr( 'placeholder', ET_BUILDER_PLACEHOLDER_LANDSCAPE_IMAGE_DATA ),
et_core_esc_attr( 'placeholder', $allowed_list[ $mode ] ),
esc_attr__( 'Product image', 'et_builder' )
);
}
@ -147,7 +611,7 @@ function et_builder_wc_add_settings( $builder_settings_fields ) {
*
* @return string
*/
function et_builder_wc_get_initial_content( $args = array() ) {
function et_builder_wc_get_prefilled_product_page_content( $args = array() ) {
/**
* Filters the Top section Background in the default WooCommerce Modules layout.
*
@ -259,7 +723,7 @@ function et_builder_wc_set_initial_content( $maybe_shortcode_content, $post_id )
$args['existing_shortcode'] = $maybe_shortcode_content;
}
return et_builder_wc_get_initial_content( $args );
return et_builder_wc_get_prefilled_product_page_content( $args );
}
/**
@ -383,6 +847,42 @@ function et_builder_wc_need_overwrite_global( $product_id = 'current' ) {
return $need_overwrite_global;
}
/**
* Gets the Product ID.
*
* @since 4.14.0
*
* @param array $args Module props.
*
* @return int $product_id
*/
function et_builder_wc_get_product_id( $args ) {
$maybe_product_id = et_()->array_get( $args, 'product', 'latest' );
$is_latest_product = 'latest' === $maybe_product_id;
$is_current_product_page = 'current' === $maybe_product_id;
if ( $is_latest_product ) {
// Dynamic filter's product_id need to be translated into correct id.
$product_id = ET_Builder_Module_Helper_Woocommerce_Modules::get_product_id( $maybe_product_id );
} elseif ( $is_current_product_page && wp_doing_ajax() && class_exists( 'ET_Builder_Element' ) ) {
/*
* $product global doesn't exist in ajax request; thus get the fallback post id
* this is likely happen in computed callback ajax request.
*/
$product_id = ET_Builder_Element::get_current_post_id();
} else {
// Besides two situation above, $product_id is current $args['product'].
if ( false !== get_post_status( $maybe_product_id ) ) {
$product_id = $maybe_product_id;
} else {
// Fallback to Latest product if saved product ID doesn't exist.
$product_id = ET_Builder_Module_Helper_Woocommerce_Modules::get_product_id( 'latest' );
}
}
return $product_id;
}
/**
* Helper to render module template for module's front end and computed callback output
*
@ -415,6 +915,9 @@ function et_builder_wc_render_module_template( $function_name, $args = array(),
'wc_print_notice',
'woocommerce_output_related_products',
'woocommerce_upsell_display',
'woocommerce_checkout_login_form',
'wc_cart_empty_template',
'woocommerce_output_all_notices',
);
if ( ! in_array( $function_name, $allowlisted_functions, true ) ) {
@ -441,25 +944,7 @@ function et_builder_wc_render_module_template( $function_name, $args = array(),
// module's template rendering uses `wp_reset_postdata()` which resets global query.
et_theme_builder_wc_set_global_objects();
} elseif ( $overwrite_global ) {
$is_latest_product = 'latest' === $args['product'];
$is_current_product_page = 'current' === $args['product'];
if ( $is_latest_product ) {
// Dynamic filter's product_id need to be translated into correct id
$product_id = ET_Builder_Module_Helper_Woocommerce_Modules::get_product_id( $args['product'] );
} elseif ( $is_current_product_page && wp_doing_ajax() && class_exists( 'ET_Builder_Element' ) ) {
// $product global doesn't exist in ajax request; thus get the fallback post id
// this is likely happen in computed callback ajax request
$product_id = ET_Builder_Element::get_current_post_id();
} else {
// Besides two situation above, $product_id is current $args['product'].
if ( false !== get_post_status( $args['product'] ) ) {
$product_id = $args['product'];
} else {
// Fallback to Latest product if saved product ID doesn't exist.
$product_id = ET_Builder_Module_Helper_Woocommerce_Modules::get_product_id( 'latest' );
}
}
$product_id = et_builder_wc_get_product_id( $args );
if ( 'product' !== get_post_type( $product_id ) ) {
// We are in a Theme Builder layout and the current post is not a product - use the latest one instead.
@ -562,8 +1047,10 @@ function et_builder_wc_render_module_template( $function_name, $args = array(),
echo wc_get_stock_html( $product ); // phpcs:ignore WordPress.Security.EscapeOutput -- `wc_get_stock_html` include woocommerce's `single-product/stock.php` template.
break;
case 'wc_print_notice':
$message = et_()->array_get( $args, 'wc_cart_message', '' );
// @phpcs:ignore Generic.PHP.ForbiddenFunctions.Found
call_user_func( $function_name, wc_add_to_cart_message( $product->get_id(), false, true ) );
call_user_func( $function_name, $message );
break;
case 'wc_print_notices':
// Save existing notices to restore them as many times as we need.
@ -577,11 +1064,41 @@ function et_builder_wc_render_module_template( $function_name, $args = array(),
WC()->session->set( 'wc_notices', $et_wc_cached_notices );
}
break;
case 'woocommerce_checkout_login_form':
if ( function_exists( 'woocommerce_checkout_login_form' ) ) {
woocommerce_checkout_login_form();
}
if ( function_exists( 'woocommerce_checkout_coupon_form' ) ) {
woocommerce_checkout_coupon_form();
}
$is_builder = et_()->array_get( $args, 'is_builder', false );
if ( $is_builder ) {
ET_Builder_Module_Woocommerce_Cart_Notice::output_coupon_error_message();
}
break;
case 'woocommerce_upsell_display':
$order = isset( $args['order'] ) ? $args['order'] : '';
// @phpcs:ignore Generic.PHP.ForbiddenFunctions.Found
call_user_func( $function_name, '', '', '', $order );
break;
case 'wc_cart_empty_template':
wc_get_template( 'cart/cart-empty.php' );
break;
case 'woocommerce_output_all_notices':
// Save existing notices to restore them as many times as we need.
$et_wc_cached_notices = WC()->session->get( 'wc_notices', array() );
if ( function_exists( $function_name ) ) {
// @phpcs:ignore Generic.PHP.ForbiddenFunctions.Found -- Using for consistency.
call_user_func( $function_name );
}
// Restore notices which were removed after wc_print_notices() executed to render multiple modules on page.
if ( ! empty( $et_wc_cached_notices ) && empty( WC()->session->get( 'wc_notices', array() ) ) ) {
WC()->session->set( 'wc_notices', $et_wc_cached_notices );
}
break;
default:
// @phpcs:ignore Generic.PHP.ForbiddenFunctions.Found
call_user_func( $function_name );
@ -784,7 +1301,7 @@ function et_builder_wc_override_default_layout() {
* Otherwise, the description would be shown in both Product Tabs and at the end of the
* default WooCommerce layout set at
*
* @see et_builder_wc_get_initial_content()
* @see et_builder_wc_get_prefilled_product_page_content()
*
* @since 3.29
*
@ -904,6 +1421,7 @@ function et_builder_wc_load_scripts() {
global $post;
$is_shop = function_exists( 'is_shop' ) && is_shop();
$is_checkout = function_exists( 'is_checkout' ) && is_checkout();
// is_product_taxonomy() is not returning TRUE for Category & Tags.
// Hence we check Category & Tag archives individually.
@ -918,6 +1436,7 @@ function et_builder_wc_load_scripts() {
&& ! $is_shop
&& ! $is_product_category
&& ! $is_product_tag
&& ! $is_checkout
) {
return;
}
@ -951,6 +1470,10 @@ function et_builder_wc_load_scripts() {
wp_enqueue_script( 'woocommerce' );
wp_enqueue_script( 'wc-cart-fragments' );
wp_enqueue_script( 'wc-checkout' );
wp_enqueue_script( 'select2' );
wp_enqueue_script( 'selectWoo' );
wp_enqueue_style( 'select2' );
// Enqueue style.
$wc_styles = WC_Frontend_Scripts::get_styles();
@ -1064,9 +1587,11 @@ function et_builder_wc_add_outer_content_class( $classes ) {
*
* They are 1) On WP Admin Publish/Update post 2) On VB Save.
*
* @param int $post_id Post id.
*
* @since 4.14.0 Remove ET_BUILDER_WC_PRODUCT_PAGE_LAYOUT_META_KEY meta key on non-product post types.
* Also move `since` section above `param` section.
* @since 3.29
*
* @param int $post_id Post ID.
*/
function et_builder_set_product_page_layout_meta( $post_id ) {
$post = get_post( $post_id );
@ -1083,6 +1608,16 @@ function et_builder_set_product_page_layout_meta( $post_id ) {
return;
}
// The meta key is to be used only on Product post types.
// Hence remove the meta if exists on other post types.
$is_non_product_post_type = 'product' !== $post->post_type;
if ( $is_non_product_post_type ) {
// Returns FALSE when no meta key is found.
delete_post_meta( $post_id, ET_BUILDER_WC_PRODUCT_PAGE_LAYOUT_META_KEY );
return;
}
// Do not update Product page layout post meta when it contains a value.
$product_page_layout = get_post_meta(
$post_id,
@ -1239,6 +1774,29 @@ function et_builder_wc_parse_description( $description ) {
return $parsed_description;
}
/**
* Deletes ET_BUILDER_WC_PRODUCT_PAGE_CONTENT_STATUS_META_KEY when Builder is OFF.
*
* The deletion allows switching between Divi Builder and the GB builder smoothly.
*
* @link https://github.com/elegantthemes/Divi/issues/22477
*
* @since 4.14.0
*
* @param WP_Post $post Post Object.
*/
function et_builder_wc_delete_post_meta( $post ) {
if ( ! ( $post instanceof WP_Post ) ) {
return;
}
if ( et_pb_is_pagebuilder_used( $post->ID ) ) {
return;
}
delete_post_meta( $post->ID, ET_BUILDER_WC_PRODUCT_PAGE_CONTENT_STATUS_META_KEY );
}
/**
* Entry point for the woocommerce-modules.php file.
*
@ -1284,12 +1842,14 @@ function et_builder_wc_init() {
// we use this additional hook `et_pb_old_content_updated`.
add_action( 'et_pb_old_content_updated', 'et_builder_wc_long_description_metabox_save', 10, 3 );
// 01. Sets the initial Content when `Use Divi Builder` button is clicked
// in the Admin dashboard.
// 02. Sets the initial Content when `Enable Visual Builder` is clicked.
/*
* 01. Sets the initial Content when `Use Divi Builder` button is clicked
* in the Admin dashboard.
* 02. Sets the initial Content when `Enable Visual Builder` is clicked.
*/
add_filter(
'et_fb_load_raw_post_content',
'et_builder_wc_set_initial_content',
'et_builder_wc_set_prefilled_page_content',
10,
2
);
@ -1302,7 +1862,7 @@ function et_builder_wc_init() {
*
* @see https://github.com/elegantthemes/Divi/issues/16420
*/
add_action( 'et_update_post', 'et_builder_set_product_content_status' );
add_action( 'et_update_post', 'et_builder_wc_set_page_content_status' );
/*
* Handle get Woocommerce tabs AJAX call initiated by Tabs checkbox in settings modal.
@ -1323,6 +1883,31 @@ function et_builder_wc_init() {
add_filter( 'et_builder_wc_description', 'et_builder_wc_parse_description' );
add_filter( 'template_redirect', 'et_builder_wc_template_redirect', 9 );
/*
* Delete `_et_pb_woo_page_content_status` post meta when Divi Builder is off
* when using GB editor.
*
* The latest value of `_et_pb_use_builder` post meta is only available in
* `rest_after_insert_page` and NOT in `rest_insert_page` hook.
*
* This action is documented in
* wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php
*/
add_action( 'rest_after_insert_page', 'et_builder_wc_delete_post_meta' );
add_filter( 'woocommerce_checkout_redirect_empty_cart', 'et_builder_stop_cart_redirect_while_enabling_builder' );
/*
* `wp_loaded` is used intentionally because
* `get_cart()` should not be called before wp_loaded hook.
*/
add_action(
'wp_loaded',
'et_builder_handle_shipping_calculator_update_btn_click'
);
/*
* In the case of dynamic module framework's shortcode manager
* we need to fire this hook on its own,
@ -1335,6 +1920,14 @@ function et_builder_wc_init() {
'disable_default_notice',
]
);
add_action(
'et_builder_module_lazy_shortcodes_registered',
[
'ET_Builder_Module_Woocommerce_Checkout_Additional_Info',
'maybe_invoke_woocommerce_hooks',
]
);
}
}

View File

@ -28,6 +28,10 @@ if ( ! defined( 'ET_BUILDER_PLACEHOLDER_PORTRAIT_IMAGE_DATA' ) ) {
define( 'ET_BUILDER_PLACEHOLDER_PORTRAIT_IMAGE_DATA', 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAwIiBoZWlnaHQ9IjUwMCIgdmlld0JveD0iMCAwIDUwMCA1MDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgICA8ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxwYXRoIGZpbGw9IiNFQkVCRUIiIGQ9Ik0wIDBoNTAwdjUwMEgweiIvPgogICAgICAgIDxyZWN0IGZpbGwtb3BhY2l0eT0iLjEiIGZpbGw9IiMwMDAiIHg9IjY4IiB5PSIzMDUiIHdpZHRoPSIzNjQiIGhlaWdodD0iNTY4IiByeD0iMTgyIi8+CiAgICAgICAgPGNpcmNsZSBmaWxsLW9wYWNpdHk9Ii4xIiBmaWxsPSIjMDAwIiBjeD0iMjQ5IiBjeT0iMTcyIiByPSIxMDAiLz4KICAgIDwvZz4KPC9zdmc+Cg==' );
}
if ( ! defined( 'ET_BUILDER_PLACEHOLDER_PORTRAIT_VARIATION_IMAGE_DATA' ) ) {
define( 'ET_BUILDER_PLACEHOLDER_PORTRAIT_VARIATION_IMAGE_DATA', 'data:image/svg+xml;base64,PHN2ZyBpZD0ibXlTdmdFbGVtZW50IiB3aWR0aD0iNTQwIiBoZWlnaHQ9IjU0MCIgdmlld0JveD0iMCAwIDU0MCA1NDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+Cgk8Zz4KCQk8cGF0aCBkPSJNMCwwaDU0MHY1NDBIMFYweiIgZmlsbD0iI0VCRUJFQiIvPgoJCTxwYXRoIGQ9Ik00NDUuNiw1NDBoLTk5bC0yMDItMjAyTDAsNDgyLjZ2LTk5bDExNi40LTExNi40YzE1LjYtMTUuNiw0MC45LTE1LjYsNTYuNiwwTDQ0NS42LDU0MEw0NDUuNiw1NDB6IiBmaWxsLW9wYWNpdHk9Ii4xIiBmaWxsPSIjMDAwIiBmaWxsLXJ1bGU9Im5vbnplcm8iLz4KCQk8Y2lyY2xlIGN4PSIzMzEiIGN5PSIxNDgiIHI9IjcwIiBmaWxsLW9wYWNpdHk9Ii4wNSIgZmlsbD0iIzAwMCIvPgoJCTxwb2x5Z29uIHBvaW50cz0iNTQwLDIxNS4yIDIxNS4yLDU0MCAzMjguMyw1NDAgNTQwLDMyOC4zIiBmaWxsLW9wYWNpdHk9Ii4yIiBmaWxsPSIjMDAwIiBmaWxsLXJ1bGU9Im5vbnplcm8iLz4KCTwvZz4KPC9zdmc+' );
}
// phpcs:ignore WordPress.Security.NonceVerification -- Only checking arg is set.
if ( isset( $_REQUEST['et_check_mod_pagespeed'] ) ) {
// This is an internal request used to check response headers, hence we exit early.
@ -123,7 +127,7 @@ function et_builder_is_critical_enabled() {
$value = et_get_option( $shortname . '_critical_css', 'on' );
}
return 'on' === $value;
return apply_filters( 'et_pb_critical_css_enabled', 'on' === $value );
}
require_once ET_BUILDER_DIR . 'compat/early.php';
@ -147,12 +151,12 @@ if ( ! (
require_once ET_BUILDER_DIR . 'feature/ClassicEditor.php';
require_once ET_BUILDER_DIR . 'feature/AjaxCache.php';
require_once ET_BUILDER_DIR . 'feature/post-content.php';
require_once ET_BUILDER_DIR . 'feature/content-retriever/ContentRetriever.php';
if ( et_builder_is_critical_enabled() ) {
require_once ET_BUILDER_DIR . 'feature/CriticalCSS.php';
}
require_once ET_BUILDER_DIR . 'feature/content-retriever/ContentRetriever.php';
require_once ET_BUILDER_DIR . 'feature/dynamic-assets/dynamic-assets.php';
require_once ET_BUILDER_DIR . 'feature/dynamic-assets/class-dynamic-assets.php';
require_once ET_BUILDER_DIR . 'feature/dynamic-content.php';

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
!function(e,t){for(var n in t)e[n]=t[n]}(window,function(e){var t={};function n(i){if(t[i])return t[i].exports;var r=t[i]={i:i,l:!1,exports:{}};return e[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(i,r,function(t){return e[t]}.bind(null,r));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/",n(n.s=1436)}({1436:function(e,t,n){"use strict";(function(e){!function(t){t("body").on("click","a",(function(e){var n=t(this).attr("href"),i=void 0!==n?n.substr(0,1):"";"#"!==i&&""!==i&&(e.preventDefault(),t(".link-disabled").addClass("active"))})),t("body").on("click",".et_pb_prompt_proceed",(function(){t(".link-disabled").removeClass("active")}));window.addEventListener("message",(function(e){var n=t('<form id="preview-data-submission" method="POST" style="display: none;"></form>'),i=e.data,r=document.documentMode;if(e.origin===et_preview_params.preview_origin){if(void 0!==r&&r<10&&(i=JSON.parse(i)),i&&i.et_pb_preview_nonce){for(var o in i){t("<textarea />",{name:o,style:"display: none; "}).val(i[o]).appendTo(n)}n.append('<input type="submit" value="submit" style="display: none;" />'),n.appendTo(".container"),t("#preview-data-submission").trigger("submit")}}else t(".et-pb-preview-loading").replaceWith(t("<h4 />",{style:"text-align: center;"}).html(et_preview_params.alert_origin_not_matched))}),!1),1!==t("#content > .content .et-pb-preview-loading").length&&"undefined"!=typeof parent&&setTimeout((function(){var n={html:t("#content > .content").html(),stylesheets:[]};e.each(window.location.search.substr(1).split("&"),(function(e,t){var i=t.split("=");void 0!==i[0]&&void 0!==i[1]&&"iframe_id"===i[0]&&(n.iframe_id=i[1])})),t('link[rel="stylesheet"]').each((function(e,i){n.stylesheets.push(t(i).attr("href"))})),parent.postMessage(n,window.location.origin)}),2e3)}(e)}).call(this,n(9))},9:function(e,t){e.exports=window.jQuery}}));
!function(e,t){for(var n in t)e[n]=t[n]}(window,function(e){var t={};function n(i){if(t[i])return t[i].exports;var r=t[i]={i:i,l:!1,exports:{}};return e[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(i,r,function(t){return e[t]}.bind(null,r));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/",n(n.s=1447)}({1447:function(e,t,n){"use strict";(function(e){!function(t){t("body").on("click","a",(function(e){var n=t(this).attr("href"),i=void 0!==n?n.substr(0,1):"";"#"!==i&&""!==i&&(e.preventDefault(),t(".link-disabled").addClass("active"))})),t("body").on("click",".et_pb_prompt_proceed",(function(){t(".link-disabled").removeClass("active")}));window.addEventListener("message",(function(e){var n=t('<form id="preview-data-submission" method="POST" style="display: none;"></form>'),i=e.data,r=document.documentMode;if(e.origin===et_preview_params.preview_origin){if(void 0!==r&&r<10&&(i=JSON.parse(i)),i&&i.et_pb_preview_nonce){for(var o in i){t("<textarea />",{name:o,style:"display: none; "}).val(i[o]).appendTo(n)}n.append('<input type="submit" value="submit" style="display: none;" />'),n.appendTo(".container"),t("#preview-data-submission").trigger("submit")}}else t(".et-pb-preview-loading").replaceWith(t("<h4 />",{style:"text-align: center;"}).html(et_preview_params.alert_origin_not_matched))}),!1),1!==t("#content > .content .et-pb-preview-loading").length&&"undefined"!=typeof parent&&setTimeout((function(){var n={html:t("#content > .content").html(),stylesheets:[]};e.each(window.location.search.substr(1).split("&"),(function(e,t){var i=t.split("=");void 0!==i[0]&&void 0!==i[1]&&"iframe_id"===i[0]&&(n.iframe_id=i[1])})),t('link[rel="stylesheet"]').each((function(e,i){n.stylesheets.push(t(i).attr("href"))})),parent.postMessage(n,window.location.origin)}),2e3)}(e)}).call(this,n(9))},9:function(e,t){e.exports=window.jQuery}}));

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -432,6 +432,13 @@ function et_fb_get_dynamic_backend_helpers() {
'registeredPostTypeOptions' => et_get_registered_post_type_options(),
);
// `class_exists` check avoids https://github.com/elegantthemes/Divi/issues/23662 error.
if ( class_exists( 'ET_Builder_Module_Helper_Woocommerce_Modules' ) ) {
$helpers['wooCommerce'] = array(
'themeBuilderCheckoutTemplatePageId' => ET_Builder_Module_Helper_Woocommerce_Modules::get_tb_template_id_by_current_page_id( $post_id ),
);
}
$helpers['css'] = array(
'wrapperPrefix' => ET_BUILDER_CSS_WRAPPER_PREFIX,
'containerPrefix' => ET_BUILDER_CSS_CONTAINER_PREFIX,
@ -509,10 +516,6 @@ function et_fb_get_static_backend_helpers( $post_type ) {
'video' => 'https://www.youtube.com/watch?v=FkQuawiGWUw',
);
$woocommerce_modules_defaults = array(
'price' => '',
);
/**
* App preferences
*/
@ -523,6 +526,8 @@ function et_fb_get_static_backend_helpers( $post_type ) {
*
* @var array $helpers
*/
// phpcs:disable WordPress.Arrays.MultipleStatementAlignment.DoubleArrowNotAligned -- Invalid warning.
// phpcs:disable WordPress.Arrays.MultipleStatementAlignment.LongIndexSpaceBeforeDoubleArrow -- Invalid warning.
$helpers = array(
'blog_id' => get_current_blog_id(),
'diviLibraryUrl' => ET_BUILDER_DIVI_LIBRARY_URL,
@ -611,7 +616,13 @@ function et_fb_get_static_backend_helpers( $post_type ) {
'modules' => $fb_modules_array,
'modulesCount' => count( $fb_modules_array ),
'modulesWithChildren' => ET_Builder_Element::get_slugs_with_children( $post_type ),
'modulesShowOnCancelDropClassname' => apply_filters( 'et_fb_modules_show_on_cancel_drop_classname', array( 'et_pb_gallery', 'et_pb_filterable_portfolio' ) ),
'modulesShowOnCancelDropClassname' => apply_filters(
'et_fb_modules_show_on_cancel_drop_classname',
array(
'et_pb_gallery',
'et_pb_filterable_portfolio',
)
),
'modulesFeaturedImageBackground' => ET_Builder_Element::get_featured_image_background_modules( $post_type ),
'modulesRowOverlappingAddNew' => $modules_row_overlapping_add_new,
'structureModules' => array(
@ -1305,7 +1316,20 @@ function et_fb_get_static_backend_helpers( $post_type ) {
'sub_toggle' => 'column_%s',
'hover' => 'tabs',
'sticky' => true,
'allowed_units' => array( '%', 'em', 'rem', 'px', 'cm', 'mm', 'in', 'pt', 'pc', 'ex', 'vh', 'vw' ),
'allowed_units' => array(
'%',
'em',
'rem',
'px',
'cm',
'mm',
'in',
'pt',
'pc',
'ex',
'vh',
'vw',
),
),
),
'css' => array(
@ -1370,6 +1394,40 @@ function et_fb_get_static_backend_helpers( $post_type ) {
'validStickyPositions' => $sticky->get_valid_sticky_positions(),
),
);
// phpcs:enable WordPress.Arrays.MultipleStatementAlignment.DoubleArrowNotAligned
// phpcs:enable WordPress.Arrays.MultipleStatementAlignment.LongIndexSpaceBeforeDoubleArrow
if ( function_exists( 'WC' ) ) {
$helpers['wooCommerce'] = array();
if ( function_exists( 'et_builder_wc_get_checkout_notice' ) ) {
$checkout_modules_notice = array(
'requiredCheckoutModulesNotice' => array(
'isBillingOnly' => 'billing_only' === get_option( 'woocommerce_ship_to_destination' ),
'isBillingOnlyNotice' => et_builder_wc_get_checkout_notice( 'billing_only' ),
'notice' => et_builder_wc_get_checkout_notice( 'shipping' ),
),
);
$helpers['wooCommerce'] = array_merge( $helpers['wooCommerce'], $checkout_modules_notice );
}
if ( function_exists( 'et_builder_wc_get_non_checkout_page_notice' ) ) {
$checkout_page_notice = array(
'nonCheckoutPageNotice' => et_builder_wc_get_non_checkout_page_notice(),
);
$helpers['wooCommerce'] = array_merge( $helpers['wooCommerce'], $checkout_page_notice );
}
$checkout_page_id = array(
'checkoutPageId' => function_exists( 'wc_get_page_id' )
? wc_get_page_id( 'checkout' )
: 0,
);
$helpers['wooCommerce'] = array_merge( $helpers['wooCommerce'], $checkout_page_id );
}
$modules_i10n = ET_Builder_Element::get_modules_i10n( $post_type );
$additional_i10n = array(

View File

@ -100,11 +100,6 @@ return array(
'Editor' => esc_html__( 'Editor', 'et_builder' ),
'Subscriber' => esc_html__( 'Subscriber', 'et_builder' ),
'Pages' => esc_html__( 'Pages', 'et_builder' ),
'Display Only If Page' => esc_html__( 'Display Only If Page', 'et_builder' ),
'Posts' => esc_html__( 'Posts', 'et_builder' ),
'Post Type' => esc_html__( 'Post Type', 'et_builder' ),
'Display Only If Post Type' => esc_html__( 'Display Only If Post Type', 'et_builder' ),
@ -148,4 +143,114 @@ return array(
'Days' => esc_html__( 'Days', 'et_builder' ),
'Minutes' => esc_html__( 'Minutes', 'et_builder' ),
'Hours' => esc_html__( 'Hours', 'et_builder' ),
'Custom Field' => esc_html__( 'Custom Field', 'et_builder' ),
'Manual Custom Field Name' => esc_html__( 'Manual Custom Field Name', 'et_builder' ),
'Manual Custom Field Value' => esc_html__( 'Manual Custom Field Value', 'et_builder' ),
'Custom Field Name' => esc_html__( 'Custom Field Name', 'et_builder' ),
'Contains' => esc_html__( 'Contains', 'et_builder' ),
'Does Not Contain' => esc_html__( 'Does Not Contain', 'et_builder' ),
'Is Any Value' => esc_html__( 'Is Any Value', 'et_builder' ),
'Has No Value' => esc_html__( 'Has No Value', 'et_builder' ),
'Is Greater Than (numeric values only)' => esc_html__( 'Is Greater Than (numeric values only)', 'et_builder' ),
'Is Less Than (numeric values only)' => esc_html__( 'Is Less Than (numeric values only)', 'et_builder' ),
'Custom Field Value' => esc_html__( 'Custom Field Value', 'et_builder' ),
'A Specific URL Parameter' => esc_html__( 'A Specific URL Parameter', 'et_builder' ),
'Any URL Parameter' => esc_html__( 'Any URL Parameter', 'et_builder' ),
'Exist' => esc_html__( 'Exist', 'et_builder' ),
'Does not Exist' => esc_html__( 'Does not Exist', 'et_builder' ),
'Equals' => esc_html__( 'Equals', 'et_builder' ),
'Does not Equal' => esc_html__( 'Does not Equal', 'et_builder' ),
'Contains' => esc_html__( 'Contains', 'et_builder' ),
'Does not Contain' => esc_html__( 'Does not Contain', 'et_builder' ),
'URL Parameter Name' => esc_html__( 'URL Parameter Name', 'et_builder' ),
'URL Parameter Value' => esc_html__( 'URL Parameter Value', 'et_builder' ),
'URL Parameter' => esc_html__( 'URL Parameter', 'et_builder' ),
'Any' => esc_html__( 'Any', 'et_builder' ),
'Product Stock' => esc_html__( 'Product Stock', 'et_builder' ),
'Display Only If a Specific Product' => esc_html__( 'Display Only If a Specific Product', 'et_builder' ),
'Is in stock' => esc_html__( 'Is in stock', 'et_builder' ),
'Is out of stock' => esc_html__( 'Is out of stock', 'et_builder' ),
'Only display if' => esc_html__( 'Only display if', 'et_builder' ),
'products are in stock' => esc_html__( 'products are in stock', 'et_builder' ),
'products are out of stock' => esc_html__( 'products are out of stock', 'et_builder' ),
'product is in stock' => esc_html__( 'product is in stock', 'et_builder' ),
'product is out of stock' => esc_html__( 'product is out of stock', 'et_builder' ),
// Logged In Status Tooltip.
'Only display to logged in visitors' => esc_html__( 'Only display to logged in visitors', 'et_builder' ),
'Only display to logged out visitors' => esc_html__( 'Only display to logged out visitors', 'et_builder' ),
// Post Type and Other Common Tooltips.
'Only display on' => esc_html__( 'Only display on', 'et_builder' ),
"Don't display on" => esc_html__( "Don't display on", 'et_builder' ),
// Author Tooltip.
'Only display on posts authored by' => esc_html__( 'Only display on posts authored by', 'et_builder' ),
"Don't display on posts authored by" => esc_html__( "Don't display on posts authored by", 'et_builder' ),
// User Role and Other Common Tooltips.
'Only display to' => esc_html__( 'Only display to', 'et_builder' ),
"Don't display to" => esc_html__( "Don't display to", 'et_builder' ),
// Date & Time Tooltip.
'Only display after' => esc_html__( 'Only display after', 'et_builder' ),
'Only display before' => esc_html__( 'Only display before', 'et_builder' ),
'Only display on first day of month' => esc_html__( 'Only display on first day of the month', 'et_builder' ),
'Only display on last day of month' => esc_html__( 'Only display on last day of the month', 'et_builder' ),
// Category Page, Tag Page, Page Visit Tooltip.
'Pages' => esc_html__( 'Pages', 'et_builder' ),
// Cart Content Tooltip.
'Cart Contents Has Products' => esc_html__( 'Only display to users with Products in their cart', 'et_builder' ),
'Cart Contents Is Empty' => esc_html__( 'Only display to users with an empty cart', 'et_builder' ),
'Only display to users with' => esc_html__( 'Only display to users with', 'et_builder' ),
'in their cart' => esc_html__( 'in their cart', 'et_builder' ),
'Only display to users without' => esc_html__( 'Only display to users without', 'et_builder' ),
// Cookie Tooltip.
'cookie' => esc_html__( 'cookie', 'et_builder' ),
'cookie with' => esc_html__( 'cookie with', 'et_builder' ),
'value' => esc_html__( 'value', 'et_builder' ),
'Only display to users who have' => esc_html__( 'Only display to users who have', 'et_builder' ),
"Don't display to users who have" => esc_html__( "Don't display to users who have", 'et_builder' ),
// Date Archive Tooltip.
'Only display on date archives after' => esc_html__( 'Only display on date archives after', 'et_builder' ),
'Only display on date archives before' => esc_html__( 'Only display on date archives before', 'et_builder' ),
// Number of Views Tooltip.
'Only display' => esc_html__( 'Only display', 'et_builder' ),
', Reset after' => esc_html__( ', Reset after', 'et_builder' ),
'times' => esc_html__( 'times', 'et_builder' ),
// Page Visit, Post Visit Tooltip.
'Only display to users visited' => esc_html__( 'Only display to users who have visited', 'et_builder' ),
"Don't display to users visited" => esc_html__( "Don't display to users who have visited", 'et_builder' ),
'Posts' => esc_html__( 'Posts', 'et_builder' ),
// Product Purchase Tooltip.
'Only display to users bought product' => esc_html__( 'Only display to users who have bought a product', 'et_builder' ),
"Don't display to users bought product" => esc_html__( "Don't display to users who have bought a product", 'et_builder' ),
'Only Display to users who bought' => esc_html__( 'Only Display to users who have bought', 'et_builder' ),
"Don't display to users who bought" => esc_html__( "Don't display to users who have bought", 'et_builder' ),
// Search Results Tooltip.
'Only display on search results for' => esc_html__( 'Only display on search results for', 'et_builder' ),
"Don't display on search results for" => esc_html__( "Don't display on search results for", 'et_builder' ),
// Custom Field Tooltip.
'Only display on posts where' => esc_html__( 'Only display on posts where', 'et_builder' ),
'custom field' => esc_html__( 'custom field', 'et_builder' ),
'is equal to' => esc_html__( 'is equal to', 'et_builder' ),
'is not equal to' => esc_html__( 'is not equal to', 'et_builder' ),
'contains' => esc_html__( 'custom field', 'et_builder' ),
'does not contain' => esc_html__( 'does not contain', 'et_builder' ),
'is any value' => esc_html__( 'is any value', 'et_builder' ),
'has no value' => esc_html__( 'has no value', 'et_builder' ),
'is greater than' => esc_html__( 'is greater than', 'et_builder' ),
'is less than' => esc_html__( 'is less than', 'et_builder' ),
);

View File

@ -135,7 +135,7 @@ function et_theme_builder_frontend_enqueue_styles( $layouts ) {
return;
}
if ( ! is_singular() || et_core_is_fb_enabled() ) {
if ( ! is_singular() && ! et_core_is_fb_enabled() ) {
// Create styles managers so they can enqueue styles early enough.
// What styles are created and how they are enqueued:
// - In FE, singular post view:

View File

@ -131,7 +131,9 @@ function et_theme_builder_wc_set_global_objects( $conditional_tags = array() ) {
// Set current post ID as product's ID. `ET_Theme_Builder_Woocommerce_Product_Variable_Placeholder`
// handles all placeholder related value but product ID need to be manually set to match current
// post's ID. This is especially needed when add-ons is used and accessing get_id() method.
if ( isset( $post->ID ) ) {
$product->set_id( $post->ID );
}
// Save modified global for later use
$tb_wc_post = $post;

View File

@ -8,7 +8,7 @@
if ( ! defined( 'ET_BUILDER_PRODUCT_VERSION' ) ) {
// Note, this will be updated automatically during grunt release task.
define( 'ET_BUILDER_PRODUCT_VERSION', '4.13.0' );
define( 'ET_BUILDER_PRODUCT_VERSION', '4.14.4' );
}
if ( ! defined( 'ET_BUILDER_VERSION' ) ) {
@ -1372,10 +1372,12 @@ function et_fb_current_page_woocommerce_components() {
*/
function et_fb_woocommerce_tabs() {
global $product, $post;
$old_product = $product;
$old_post = $post;
$is_product = isset( $product ) && is_a( $product, 'WC_Product' );
if ( ! isset( $product ) && et_is_woocommerce_plugin_active() ) {
if ( ! $is_product && et_is_woocommerce_plugin_active() ) {
$product = ET_Builder_Module_Helper_Woocommerce_Modules::get_product( 'latest' );
if ( $product ) {
@ -1899,6 +1901,17 @@ function et_fb_process_to_shortcode( $object, $options = array(), $library_item_
$value = str_replace( '\\', '%92', $value );
}
// Encode backslash for custom date format attributes.
$modules_and_attr_with_custom_date = array(
'et_pb_blog' => 'meta_date',
'et_pb_fullwidth_post_title' => 'date_format',
'et_pb_post_title' => 'date_format',
);
if ( ! empty( $modules_and_attr_with_custom_date[ $type ] ) && $modules_and_attr_with_custom_date[ $type ] === $attribute ) {
$value = str_replace( '\\', '%92', $value );
}
$attributes .= ' ' . esc_attr( $attribute ) . '="' . et_core_esc_previously( $value ) . '"';
}
}
@ -2114,6 +2127,7 @@ add_action( 'wp_ajax_et_fb_ajax_drop_autosave', 'et_fb_ajax_drop_autosave' );
* Ajax Callback :: Save layout.
*/
function et_fb_ajax_save() {
if ( ! isset( $_POST['et_fb_save_nonce'] ) || ! wp_verify_nonce( sanitize_text_field( $_POST['et_fb_save_nonce'] ), 'et_fb_save_nonce' ) ) {
wp_send_json_error();
}
@ -2166,7 +2180,9 @@ function et_fb_ajax_save() {
// Get old content and if we should return to the Default Editor.
$post_content = get_post_meta( $post_id, '_et_pb_old_content', true );
} else {
if ( ! $is_layout_block_preview ) {
update_post_meta( $post_id, '_et_pb_use_builder', 'on' );
}
$post_content = et_fb_process_to_shortcode( $shortcode_data, $options, $layout_type, true, true );
}
@ -2730,6 +2746,7 @@ function et_builder_get_acceptable_css_string_values( $property = 'all' ) {
'inherit',
'initial',
'unset',
'',
),
'max-width' => array(
'none',
@ -2769,6 +2786,9 @@ function et_builder_get_acceptable_css_string_values( $property = 'all' ) {
'z-index' => array(
'auto',
),
'line-height' => array(
'',
),
'font-size' => array( '%', 'em', 'rem', 'px', 'cm', 'mm', 'in', 'pt', 'pc', 'ex', 'vh', 'vw' ),
);
@ -5441,8 +5461,9 @@ if ( ! function_exists( 'et_pb_postinfo_meta' ) ) :
$postinfo_meta[] = ' ' . esc_html__( 'by', 'et_builder' ) . ' <span class="author vcard">' . et_pb_get_the_author_posts_link() . '</span>';
}
if ( in_array( 'date', $postinfo, true ) ) {
$postinfo_meta[] = '<span class="published">' . esc_html( get_the_time( wp_unslash( $date_format ) ) ) . '</span>';
$postinfo_meta[] = '<span class="published">' . esc_html( get_the_time( $date_format ) ) . '</span>';
}
if ( in_array( 'categories', $postinfo, true ) ) {
@ -10618,7 +10639,9 @@ function et_fb_get_builder_shortcode_object( $post_type, $post_id, $layout_type
function et_fb_generate_post_content_module_selector( array $array, $element_type ) {
global $current_section;
global $current_row;
global $current_row_inner;
global $current_column;
global $current_column_inner;
global $current_module;
global $post_content_module_selector;
@ -10648,13 +10671,36 @@ function et_fb_generate_post_content_module_selector( array $array, $element_typ
et_fb_generate_post_content_module_selector( $array[ $key ]['content'], $array[ $key ]['type'] );
}
}
} elseif ( 'et_pb_column' === $element_type ) {
} elseif ( 'et_pb_row_inner' === $element_type ) {
// Loop through columns.
foreach ( $array as $key => $value ) {
if ( isset( $array[ $key ]['content'] ) && is_array( $array[ $key ]['content'] ) ) {
$current_column_inner = $key;
et_fb_generate_post_content_module_selector( $array[ $key ]['content'], $array[ $key ]['type'] );
}
}
} elseif ( 'et_pb_column' === $element_type || 'et_pb_column_inner' === $element_type ) {
// Loop through modules.
foreach ( $array as $key => $value ) {
if ( 'et_pb_post_content' === $array[ $key ]['type'] ) {
if ( 'et_pb_row_inner' === $array[ $key ]['type'] ) {
foreach ( $array as $key => $value ) {
if ( isset( $array[ $key ]['content'] ) && is_array( $array[ $key ]['content'] ) ) {
$current_row_inner = $key;
et_fb_generate_post_content_module_selector( $array[ $key ]['content'], $array[ $key ]['type'] );
}
}
} elseif ( 'et_pb_post_content' === $array[ $key ]['type'] ) {
// If Post Content Module is Found build the selector from current Section, Row, and Column.
$current_module = $key;
$post_content_module_selector = array(
$is_column_inner = 'et_pb_column_inner' === $array[ $key ]['parent_slug'];
$post_content_module_selector = $is_column_inner ? array(
'section' => $current_section,
'row_inner' => $current_row_inner,
'column' => $current_row,
'column_inner' => $current_column_inner,
'module' => $current_module,
) : array(
'section' => $current_section,
'row' => $current_row,
'column' => $current_column,
@ -10665,7 +10711,7 @@ function et_fb_generate_post_content_module_selector( array $array, $element_typ
$current_module = $key;
$post_content_module_selector = array(
'section' => $current_section,
'fullwidth_module' => $current_module,
'module' => $current_module,
);
}
}
@ -10687,14 +10733,21 @@ function et_fb_generate_post_content_module_selector( array $array, $element_typ
* @return array
*/
function et_fb_generate_tb_body_area_with_post_content( $theme_builder_body_fields, $selector, $post_content_fields ) {
$is_full_width = isset( $selector['fullwidth_module'] );
if ( $is_full_width ) {
$original_post_content_module = $theme_builder_body_fields[ $selector['section'] ]['content'][ $selector['fullwidth_module'] ];
if ( ! isset( $selector['row'] ) && ! isset( $selector['column'] ) ) {
$original_post_content_module = $theme_builder_body_fields[ $selector['section'] ]['content'][ $selector['module'] ];
$theme_builder_body_fields[ $selector['section'] ]['attrs']['post_content_module_attrs'] = $original_post_content_module['attrs'];
$theme_builder_body_fields[ $selector['section'] ]['content'][ $selector['fullwidth_module'] ]['content'] = $post_content_fields;
$theme_builder_body_fields[ $selector['section'] ]['content'][ $selector['fullwidth_module'] ]['content'] = $post_content_fields;
$theme_builder_body_fields[ $selector['section'] ]['content'][ $selector['module'] ]['content'] = $post_content_fields;
} elseif ( null === $selector['column'] ) {
$original_post_content_module = $theme_builder_body_fields[ $selector['section'] ]['content'][ $selector['row'] ]['content'][ $selector['module'] ];
$theme_builder_body_fields[ $selector['section'] ]['content'][ $selector['row'] ]['attrs']['post_content_module_attrs'] = $original_post_content_module['attrs'];
$theme_builder_body_fields[ $selector['section'] ]['content'][ $selector['row'] ]['content'][ $selector['module'] ]['content'] = $post_content_fields;
} elseif ( isset( $selector['row_inner'] ) ) {
$original_post_content_module = $theme_builder_body_fields[ $selector['section'] ]['content'][ $selector['column'] ]['content'][ $selector['row_inner'] ]['content'][ $selector['column_inner'] ]['content'][ $selector['module'] ];
$theme_builder_body_fields[ $selector['section'] ]['content'][ $selector['column'] ]['content'][ $selector['row_inner'] ]['content'][ $selector['column_inner'] ]['attrs']['post_content_module_attrs'] = $original_post_content_module['attrs'];
$theme_builder_body_fields[ $selector['section'] ]['content'][ $selector['column'] ]['content'][ $selector['row_inner'] ]['content'][ $selector['column_inner'] ]['content'][ $selector['module'] ]['content'] = $post_content_fields;
} else {
$original_post_content_module = $theme_builder_body_fields[ $selector['section'] ]['content'][ $selector['row'] ]['content'][ $selector['column'] ]['content'][ $selector['module'] ];
@ -11122,6 +11175,11 @@ function et_fb_add_additional_attrs( $processed_attrs, $output ) {
$allowlisted_attrs[ $attr ] = $value;
}
// Extra conversion for the case with the `font_icon__hover` option.
if ( ! empty( $allowlisted_attrs['font_icon__hover'] ) && et_pb_maybe_old_divi_font_icon( $allowlisted_attrs['font_icon__hover'] ) ) {
$allowlisted_attrs['font_icon__hover'] = et_pb_build_extended_font_icon_value( $allowlisted_attrs['font_icon__hover'], null, null, true );
}
if ( $allowlisted_attrs ) {
$output['attrs'] = array_merge( $output['attrs'], $allowlisted_attrs );
}
@ -12450,6 +12508,11 @@ if ( ! function_exists( 'et_filter_wp_calculate_image_srcset' ) ) :
continue;
}
// In some SVG images, the value of `$max_width` is 0, in those cases we can set `$max_width` from `$size_array`.
if ( ! $max_width ) {
$max_width = $size_array[0];
}
$responsive_sources[ $max_width ] = array(
'url' => str_replace( basename( $image_src ), $size_data['file'], $image_src ),
'descriptor' => 'w',

View File

@ -998,9 +998,11 @@ class ET_Builder_Module_Blog extends ET_Builder_Module_Type_PostBased {
? ' | '
: '';
// phpcs:disable WordPress.WP.I18n.NoEmptyStrings -- intentionally used.
$date = 'on' === $args['show_date']
? et_get_safe_localization( sprintf( __( '%s', 'et_builder' ), '<span class="published">' . esc_html( get_the_date( $args['meta_date'] ) ) . '</span>' ) )
? et_get_safe_localization( sprintf( __( '%s', 'et_builder' ), '<span class="published">' . esc_html( get_the_date( str_replace( '\\\\', '\\', $args['meta_date'] ) ) ) . '</span>' ) )
: '';
// phpcs:enable
$date_separator = ( ( 'on' === $args['show_author'] || 'on' === $args['show_date'] ) && 'on' === $args['show_categories'] )
? ' | '

View File

@ -420,6 +420,10 @@ class ET_Builder_Module_Blurb extends ET_Builder_Module {
'background-color' => '%%order_class%% .et_pb_only_image_mode_wrap, %%order_class%% .et-pb-icon',
);
$fields['background_layout'] = array(
'color' => '%%order_class%% .et_pb_module_header, %%order_class%% .et_pb_blurb_description',
);
$fields['body_text_color'] = array(
'color' => '%%order_class%% .et_pb_blurb_description',
);

View File

@ -340,6 +340,20 @@ class ET_Builder_Module_Comments extends ET_Builder_Module {
'mobile_options' => true,
'hover' => 'tabs',
),
'show_meta' => array(
'label' => esc_html__( 'Show Meta', 'et_builder' ),
'type' => 'yes_no_button',
'option_category' => 'configuration',
'options' => array(
'on' => esc_html__( 'Yes', 'et_builder' ),
'off' => esc_html__( 'No', 'et_builder' ),
),
'default_on_front' => 'on',
'toggle_slug' => 'elements',
'description' => esc_html__( 'Turn meta on or off.', 'et_builder' ),
'mobile_options' => true,
'hover' => 'tabs',
),
);
return $fields;
@ -466,6 +480,8 @@ class ET_Builder_Module_Comments extends ET_Builder_Module {
$show_avatar = $this->props['show_avatar'];
$show_reply = $this->props['show_reply'];
$show_count = $this->props['show_count'];
$show_meta = $this->props['show_meta'];
$show_rating = et_()->array_get( $this->props, 'show_rating', '' );
$header_level = $this->props['header_level'];
$video_background = $this->video_background();
$parallax_image_background = $this->get_parallax_image_background();
@ -528,6 +544,14 @@ class ET_Builder_Module_Comments extends ET_Builder_Module {
$this->add_classname( 'et_pb_no_comments_count' );
}
if ( 'off' === $show_meta ) {
$this->add_classname( 'et_pb_no_comments_meta' );
}
if ( 'off' === $show_rating ) {
$this->add_classname( 'et_pb_no_comments_rating' );
}
// Removed automatically added classname
$this->remove_classname( $render_slug );
@ -543,6 +567,13 @@ class ET_Builder_Module_Comments extends ET_Builder_Module {
'et_pb_no_comments_count' => array(
'show_count' => 'off',
),
'et_pb_no_comments_meta' => array(
'show_meta' => 'off',
),
/* WooCommerce Reviews Module uses the following class. */
'et_pb_no_comments_rating' => array(
'show_rating' => 'off',
),
),
)
);

View File

@ -11,6 +11,7 @@ class ET_Builder_Module_Contact_Form extends ET_Builder_Module_Type_WithSpamProt
$this->vb_support = 'on';
$this->child_slug = 'et_pb_contact_field';
$this->child_item_text = esc_html__( 'Field', 'et_builder' );
$this->_use_unique_id = true;
$this->main_css_element = '%%order_class%%.et_pb_contact_form_container';
@ -660,6 +661,36 @@ class ET_Builder_Module_Contact_Form extends ET_Builder_Module_Type_WithSpamProt
$et_error_message = sprintf( '<p>%1$s</p>', et_core_esc_previously( $success_message ) );
}
// Contact form should always have the ID. Use saved ID or generate automatically.
$module_id = '' !== $this->module_id( false ) ? $this->module_id( false ) : 'et_pb_contact_form_' . $et_pb_contact_form_num;
$unique_id = self::$_->array_get( $this->props, '_unique_id' );
if ( $nonce_result ) {
// Additional info to be passed on the `et_pb_contact_form_submit` hook.
$contact_form_info = array(
'contact_form_id' => $module_id,
'contact_form_number' => $et_pb_contact_form_num,
'contact_form_unique_id' => $unique_id,
'module_slug' => $render_slug,
'post_id' => $this->get_the_ID(),
);
/**
* Fires after contact form is submitted.
*
* Use $et_contact_error variable to check whether there is an error on the form
* entry submit process or not.
*
* @since 4.13.1
*
* @param array $processed_fields_values Processed fields values.
* @param array $et_contact_error Whether there is an error on the form
* entry submit process or not.
* @param array $contact_form_info Additional contact form info.
*/
do_action( 'et_pb_contact_form_submit', $processed_fields_values, $et_contact_error, $contact_form_info );
}
$form = '';
$current_url = ( is_ssl() ? 'https://' : 'http://' ) . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
@ -728,12 +759,9 @@ class ET_Builder_Module_Contact_Form extends ET_Builder_Module_Type_WithSpamProt
// Remove automatically added classname
$this->remove_classname( $render_slug );
// Contact form should always have the ID. Use saved ID or generate automatically
$module_id = '' !== $this->module_id( false ) ? $this->module_id( false ) : 'et_pb_contact_form_' . $et_pb_contact_form_num;
$output = sprintf(
'
<div id="%4$s" class="%5$s" data-form_unique_num="%6$s"%7$s>
<div id="%4$s" class="%5$s" data-form_unique_num="%6$s" data-form_unique_id="%10$s"%7$s>
%9$s
%8$s
%1$s
@ -745,11 +773,12 @@ class ET_Builder_Module_Contact_Form extends ET_Builder_Module_Type_WithSpamProt
$et_error_message,
$form,
esc_attr( $module_id ),
$this->module_classname( $render_slug ),
$this->module_classname( $render_slug ), // #5
esc_attr( $et_pb_contact_form_num ),
'on' === $use_redirect && '' !== $redirect_url ? sprintf( ' data-redirect_url="%1$s"', esc_attr( $redirect_url ) ) : '',
$video_background,
$parallax_image_background
$parallax_image_background,
esc_attr( $unique_id ) // #10
);
return $output;

View File

@ -58,10 +58,10 @@ class ET_Builder_Module_Icon extends ET_Builder_Module {
$this->advanced_fields = array(
'margin_padding' => array(
'css' => array(
'main' => '%%order_class%% .et_pb_icon_wrap',
'hover' => '%%order_class%% .et_pb_icon_wrap:hover',
'main' => '%%order_class%%',
'padding' => '%%order_class%% .et_pb_icon_wrap',
'margin' => '%%order_class%% .et_pb_icon_wrap',
'margin' => '%%order_class%%',
'important' => 'all',
),
),
'borders' => array(
@ -267,7 +267,7 @@ class ET_Builder_Module_Icon extends ET_Builder_Module {
*
* @return string
*/
public function render( $attrs, $content = null, $render_slug ) {
public function render( $attrs, $content, $render_slug ) {
$multi_view = et_pb_multi_view_options( $this );
$title_text = $this->props['title_text'];
$url = $this->props['url'];

View File

@ -482,16 +482,25 @@ class ET_Builder_Module_Image extends ET_Builder_Module {
// Only if force fullwidth is not set.
if ( 'on' !== $force_fullwidth ) {
$responsive_width = et_pb_responsive_options()->get_property_values( $this->props, 'width' );
$responsive_height = et_pb_responsive_options()->get_property_values( $this->props, 'height' );
$responsive_max_width = et_pb_responsive_options()->get_property_values( $this->props, 'max_height' );
$image_style_width = [];
$modes = [ 'desktop', 'tablet', 'phone' ];
foreach ( $modes as $mode ) {
// Only height or max-height is set, no width set.
if ( 'auto' === $width && 'auto' !== $height || 'none' !== $max_height ) {
$el_style = array(
'selector' => '%%order_class%% .et_pb_image_wrap img',
'declaration' => 'width: auto;',
);
ET_Builder_Element::set_style( $render_slug, $el_style );
if ( 'auto' === $responsive_width[ $mode ] && 'auto' !== $responsive_height[ $mode ] || 'none' !== $responsive_max_width[ $mode ] ) {
$image_style_width[ $mode ] = [
'width' => 'auto',
];
}
}
et_pb_responsive_options()->generate_responsive_css( $image_style_width, '%%order_class%% .et_pb_image_wrap img', '', $render_slug, '', '' );
}
$image_attachment_class = et_pb_media_options()->get_image_attachment_class( $this->props, 'src' );
if ( ! empty( $image_attachment_class ) ) {

View File

@ -351,7 +351,7 @@ class ET_Builder_Module_Portfolio extends ET_Builder_Module_Type_PostBased {
* @return mixed portfolio item data
*/
static function get_portfolio_item( $args = array(), $conditional_tags = array(), $current_page = array() ) {
global $et_fb_processing_shortcode_object, $post;
global $et_fb_processing_shortcode_object, $post, $paged, $__et_portfolio_module_paged;
$global_processing_original_value = $et_fb_processing_shortcode_object;
@ -382,8 +382,13 @@ class ET_Builder_Module_Portfolio extends ET_Builder_Module_Type_PostBased {
$et_paged = $is_front_page ? get_query_var( 'page' ) : get_query_var( 'paged' );
}
if ( $__et_portfolio_module_paged > 1 ) {
$et_paged = $__et_portfolio_module_paged;
$paged = $__et_portfolio_module_paged; //phpcs:ignore WordPress.Variables.GlobalVariables.OverrideProhibited -- Override with ajax pagination.
$args['paged'] = $__et_portfolio_module_paged;
}
if ( $is_front_page ) {
global $paged;
$paged = $et_paged; // phpcs:ignore WordPress.Variables.GlobalVariables.OverrideProhibited
}
@ -764,7 +769,7 @@ class ET_Builder_Module_Portfolio extends ET_Builder_Module_Type_PostBased {
'<div class="alignleft">
<a href="%1$s">%2$s</a>
</div>',
esc_url( $portfolio->posts_next['url'] ),
add_query_arg( 'et_portfolio', '', esc_url( $portfolio->posts_next['url'] ) ),
esc_html( $portfolio->posts_next['label'] )
);
}
@ -774,7 +779,7 @@ class ET_Builder_Module_Portfolio extends ET_Builder_Module_Type_PostBased {
'<div class="alignright">
<a href="%1$s">%2$s</a>
</div>',
esc_url( $portfolio->posts_prev['url'] ),
add_query_arg( 'et_portfolio', '', esc_url( $portfolio->posts_prev['url'] ) ),
esc_html( $portfolio->posts_prev['label'] )
);
}

View File

@ -68,7 +68,9 @@ class ET_Builder_Module_Field_Border extends ET_Builder_Module_Field_Base {
'toggle_slug' => null,
'color_type' => null,
'depends_on' => null,
'depends_show_if_not' => null,
'depends_show_if' => null,
'use_radius' => null,
'sub_toggle' => null,
'defaults' => array(
'border_radii' => null,
@ -104,6 +106,7 @@ class ET_Builder_Module_Field_Border extends ET_Builder_Module_Field_Base {
'toggle_slug' => 'border',
'color_type' => 'color-alpha',
'depends_on' => null,
'depends_show_if_not' => null,
'depends_show_if' => null,
'sub_toggle' => null,
'use_radius' => true,
@ -428,6 +431,7 @@ class ET_Builder_Module_Field_Border extends ET_Builder_Module_Field_Base {
foreach ( $additional_options as &$option ) {
$option['depends_on'] = $settings['depends_on'];
$option['depends_show_if'] = $settings['depends_show_if'];
$option['depends_show_if_not'] = $settings['depends_show_if_not'];
}
}

View File

@ -36,6 +36,9 @@ require_once __DIR__ . '/display-conditions/Cookie.php';
require_once __DIR__ . '/display-conditions/CategoryPage.php';
require_once __DIR__ . '/display-conditions/TagPage.php';
require_once __DIR__ . '/display-conditions/NumberOfViews.php';
require_once __DIR__ . '/display-conditions/CustomField.php';
require_once __DIR__ . '/display-conditions/UrlParameter.php';
require_once __DIR__ . '/display-conditions/ProductStock.php';
/**
* Import class dependencies
@ -72,6 +75,9 @@ class ET_Builder_Module_Field_DisplayConditions extends ET_Builder_Module_Field_
use CategoryPageCondition;
use TagPageCondition;
use NumberOfViewsCondition;
use CustomFieldCondition;
use UrlParameterCondition;
use ProductStockCondition;
/**
* Custom current date.
@ -157,11 +163,6 @@ class ET_Builder_Module_Field_DisplayConditions extends ET_Builder_Module_Field_
* @return boolean Conditions final result.
*/
public function is_displayable( $display_conditions, $only_return_status = false ) {
// Bail out and just display the module if below WordPress 5.3.
if ( version_compare( get_bloginfo( 'version' ), '5.3', '<' ) ) {
return true;
}
// Bail out and just display the module if $display_conditions is not array.
if ( ! is_array( $display_conditions ) ) {
return true;
@ -290,6 +291,15 @@ class ET_Builder_Module_Field_DisplayConditions extends ET_Builder_Module_Field_
case 'numberOfViews':
return $this->_process_number_of_views_condition( $condition_id, $condition_settings );
case 'customField':
return $this->_process_custom_field_condition( $condition_settings );
case 'urlParameter':
return $this->_process_url_parameter_condition( $condition_settings );
case 'productStock':
return $this->_process_product_stock_condition( $condition_settings );
default:
if ( isset( $condition_settings['dynamicPosts'] ) ) {
return $this->_process_dynamic_posts_condition( $condition_settings );
@ -341,6 +351,20 @@ class ET_Builder_Module_Field_DisplayConditions extends ET_Builder_Module_Field_
break;
}
// Exception! "Custom Field" Condition can have multiple conditions.
$is_custom_field = 'customField' === $condition['condition'];
if ( $is_custom_field ) {
$is_conflicted = false;
break;
}
// Exception! "URL Parameter" Condition can have multiple conditions.
$is_url_parameter = 'urlParameter' === $condition['condition'];
if ( $is_url_parameter ) {
$is_conflicted = false;
break;
}
/**
* When operator is set to "OR/ANY" and we have more than one condition, all other conditions
* will be set as conflicted, giving the priority to the latest condition in the list.

View File

@ -241,6 +241,9 @@ class ET_Builder_Module_Field_MarginPadding extends ET_Builder_Module_Field_Base
'sub_toggle' => $sub_toggle,
'priority' => $config['priority'],
);
if ( isset( $config['depends_on'] ) && '' !== $config['depends_on'] ) {
$fields[ $custom_padding ]['depends_on'] = $config['depends_on'];
}
$fields[ $custom_padding_tablet ] = array(
'type' => 'skip',
'tab_slug' => $tab_slug,

View File

@ -30,7 +30,8 @@ trait AuthorCondition {
return false;
}
$display_rule = isset( $condition_settings['authorDisplay'] ) ? $condition_settings['authorDisplay'] : '';
$legacy_display_rule = isset( $condition_settings['authorDisplay'] ) ? $condition_settings['authorDisplay'] : 'is';
$display_rule = isset( $condition_settings['displayRule'] ) ? $condition_settings['displayRule'] : $legacy_display_rule;
$authors_raw = isset( $condition_settings['authors'] ) ? $condition_settings['authors'] : [];
$authors_ids = array_map(
function( $item ) {

View File

@ -25,7 +25,9 @@ trait BrowserCondition {
* @return boolean Condition output.
*/
protected function _process_browser_condition( $condition_settings ) {
$display_rule = isset( $condition_settings['browserDisplay'] ) ? $condition_settings['browserDisplay'] : 'is';
// Checks for additional display rule for compatibility with Conditional Display older versions which didn't use `displayRule` key.
$legacy_display_rule = isset( $condition_settings['browserDisplay'] ) ? $condition_settings['browserDisplay'] : 'is';
$display_rule = isset( $condition_settings['displayRule'] ) ? $condition_settings['displayRule'] : $legacy_display_rule;
$browsers_raw = isset( $condition_settings['browsers'] ) ? $condition_settings['browsers'] : '';
$browsers = explode( '|', $browsers_raw );
// phpcs:ignore ET.Sniffs.ValidatedSanitizedInput -- User Agent is not stored or displayed therefore XSS safe.

View File

@ -28,7 +28,10 @@ trait CartContentsCondition {
if ( ! class_exists( 'WooCommerce' ) ) {
return false;
}
$display_rule = isset( $condition_settings['cartContentsDisplay'] ) ? $condition_settings['cartContentsDisplay'] : 'hasProducts';
// Checks for additional display rule for compatibility with Conditional Display older versions which didn't use `displayRule` key.
$legacy_display_rule = isset( $condition_settings['cartContentsDisplay'] ) ? $condition_settings['cartContentsDisplay'] : 'hasProducts';
$display_rule = isset( $condition_settings['displayRule'] ) ? $condition_settings['displayRule'] : $legacy_display_rule;
$products_raw = isset( $condition_settings['products'] ) ? $condition_settings['products'] : [];
$products_ids = array_map(
function( $item ) {

View File

@ -31,8 +31,9 @@ trait CategoriesCondition {
return false;
}
// Get condition's settings.
$display_rule = isset( $condition_settings['categoriesDisplay'] ) ? $condition_settings['categoriesDisplay'] : 'is';
// Checks for additional display rule for compatibility with Conditional Display older versions which didn't use `displayRule` key.
$legacy_display_rule = isset( $condition_settings['categoriesDisplay'] ) ? $condition_settings['categoriesDisplay'] : 'is';
$display_rule = isset( $condition_settings['displayRule'] ) ? $condition_settings['displayRule'] : $legacy_display_rule;
$categories_raw = isset( $condition_settings['categories'] ) ? $condition_settings['categories'] : [];
$categories = array_map(
function( $item ) {

View File

@ -31,8 +31,9 @@ trait CategoryPageCondition {
return false;
}
// Get condition's settings.
$display_rule = isset( $condition_settings['categoryPageDisplay'] ) ? $condition_settings['categoryPageDisplay'] : 'is';
// Checks for additional display rule for compatibility with Conditional Display older versions which didn't use `displayRule` key.
$legacy_display_rule = isset( $condition_settings['categoryPageDisplay'] ) ? $condition_settings['categoryPageDisplay'] : 'is';
$display_rule = isset( $condition_settings['displayRule'] ) ? $condition_settings['displayRule'] : $legacy_display_rule;
$categories_raw = isset( $condition_settings['categories'] ) ? $condition_settings['categories'] : [];
$queried_object = get_queried_object();
$is_queried_object_valid = $queried_object instanceof \WP_Term && property_exists( $queried_object, 'taxonomy' );

View File

@ -25,7 +25,9 @@ trait CookieCondition {
* @return boolean Condition output.
*/
protected function _process_cookie_condition( $condition_settings ) {
$display_rule = isset( $condition_settings['cookieDisplay'] ) ? $condition_settings['cookieDisplay'] : 'cookieExists';
// Checks for additional display rule for compatibility with Conditional Display older versions which didn't use `displayRule` key.
$legacy_display_rule = isset( $condition_settings['cookieDisplay'] ) ? $condition_settings['cookieDisplay'] : 'cookieExists';
$display_rule = isset( $condition_settings['displayRule'] ) ? $condition_settings['displayRule'] : $legacy_display_rule;
$cookie_name = isset( $condition_settings['cookieName'] ) ? $condition_settings['cookieName'] : '';
$cookie_value = isset( $condition_settings['cookieValue'] ) ? $condition_settings['cookieValue'] : '';
$is_cookie_set = ( isset( $_COOKIE[ $cookie_name ] ) ) ? true : false;

View File

@ -22,17 +22,19 @@ trait DateArchiveCondition {
*
* @since 4.11.0
*
* @param array $all_settings Containing all settings of the condition.
* @param array $condition_settings Containing all settings of the condition.
*
* @return boolean Condition output.
*/
protected function _process_date_archive_condition( $all_settings ) {
protected function _process_date_archive_condition( $condition_settings ) {
if ( ! is_date() ) {
return false;
}
$display_rule = isset( $all_settings['dateArchiveDisplay'] ) ? $all_settings['dateArchiveDisplay'] : 'isAfter';
$date = isset( $all_settings['dateArchive'] ) ? $all_settings['dateArchive'] : '';
// Checks for additional display rule for compatibility with Conditional Display older versions which didn't use `displayRule` key.
$legacy_display_rule = isset( $condition_settings['dateArchiveDisplay'] ) ? $condition_settings['dateArchiveDisplay'] : 'isAfter';
$display_rule = isset( $condition_settings['displayRule'] ) ? $condition_settings['displayRule'] : $legacy_display_rule;
$date = isset( $condition_settings['dateArchive'] ) ? $condition_settings['dateArchive'] : '';
$year = get_query_var( 'year' );
$monthnum = get_query_var( 'monthnum' ) === 0 ? 1 : get_query_var( 'monthnum' );

View File

@ -27,7 +27,9 @@ trait DateTimeCondition {
* @return boolean Condition output.
*/
protected function _process_date_time_condition( $condition_settings ) {
$display_rule = isset( $condition_settings['dateTimeDisplay'] ) ? $condition_settings['dateTimeDisplay'] : 'isAfter';
// Checks for additional display rule for compatibility with Conditional Display older versions which didn't use `displayRule` key.
$legacy_display_rule = isset( $condition_settings['dateTimeDisplay'] ) ? $condition_settings['dateTimeDisplay'] : 'isAfter';
$display_rule = isset( $condition_settings['displayRule'] ) ? $condition_settings['displayRule'] : $legacy_display_rule;
$date = isset( $condition_settings['date'] ) ? $condition_settings['date'] : '';
$time = isset( $condition_settings['time'] ) ? $condition_settings['time'] : '';
$all_day = isset( $condition_settings['allDay'] ) ? $condition_settings['allDay'] : '';
@ -132,6 +134,9 @@ trait DateTimeCondition {
* @return boolean Condition repetition result.
*/
protected function _is_datetime_condition_repeated( $condition_settings, $is_on_specific_date, $current_datetime, $target_datetime ) {
// Checks for additional display rule for compatibility with Conditional Display older versions which didn't use `displayRule` key.
$legacy_display_rule = isset( $condition_settings['dateTimeDisplay'] ) ? $condition_settings['dateTimeDisplay'] : 'isAfter';
$display_rule = isset( $condition_settings['displayRule'] ) ? $condition_settings['displayRule'] : $legacy_display_rule;
$repeat = isset( $condition_settings['repeat'] ) ? $condition_settings['repeat'] : '';
$repeat_frequency = isset( $condition_settings['repeatFrequency'] ) ? $condition_settings['repeatFrequency'] : '';
$repeat_frequency_specific_days = isset( $condition_settings['repeatFrequencySpecificDays'] ) ? $condition_settings['repeatFrequencySpecificDays'] : '';
@ -142,7 +147,7 @@ trait DateTimeCondition {
$from_time = isset( $condition_settings['fromTime'] ) ? $condition_settings['fromTime'] : '';
$until_time = isset( $condition_settings['untilTime'] ) ? $condition_settings['untilTime'] : '';
$is_repeated = false;
$is_on_specific_days = 'isOnSpecificDays' === $condition_settings['dateTimeDisplay'];
$is_on_specific_days = 'isOnSpecificDays' === $display_rule;
if ( $is_on_specific_days || ( 'on' === $repeat && ! $is_on_specific_date ) ) {
if ( $is_on_specific_days ) {

Some files were not shown because too many files have changed in this diff Show More