PluginProbe
ShopBuilder – WooCommerce Builder For Elementor / 2.1.13
ShopBuilder – WooCommerce Builder For Elementor v2.1.13
3.4.2 3.4.1 3.4.0 2.0.1 2.0.2 2.0.3 2.1.0 2.1.1 2.1.10 2.1.11 2.1.12 2.1.13 2.1.14 2.1.15 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 2.2.0 2.2.1 2.2.2 All 63 releases
← All changes | app/Modules/QuickView/QuickViewFrontEnd.php +49 -42 2.0.32.1.13 View file →
@@ -16,17 +16,17 @@
16 16
17 17 public function __construct() {
18 18 add_action( 'wp_enqueue_scripts', [ $this, 'enqueue' ] );
19 19
20 - // Gallery Plugin Support rtwpvg_disable_enqueue_scripts
20 + // Gallery Plugin Support rtwpvg_disable_enqueue_scripts.
21 21 add_filter( 'rtwpvg_disable_enqueue_scripts', '__return_false', 11 );
22 22
23 23 // Template.
24 24
25 - add_action( 'rtsb/modules/quick_view/frontend/display', [ $this, 'button_hook' ] );
26 - // Add do_action( 'rtsb/modules/quick_view/frontend/display' ); for display anywhere.
25 + add_action( 'rtsb/modules/quick_view/frontend/display', [ $this, 'button_hook' ] );
26 + // Add do_action( 'rtsb/modules/quick_view/frontend/display' ); for display anywhere.
27 27
28 - add_action( 'rtsb/modules/quick_view/print_button', [ $this, 'print_button' ] );
28 + add_action( 'rtsb/modules/quick_view/print_button', [ $this, 'print_button' ] );
29 29
30 30 // Load action for product template.
31 31 $this->quick_view_action_template();
32 32
@@ -38,9 +38,8 @@
38 38
39 39 add_action( 'wp_ajax_nopriv_rtsb_load_product_quick_view', [ $this, 'product_quick_view_ajax' ] );
40 40
41 41 $this->attach_button();
42 -
43 42 }
44 43
45 44
46 45 /**
@@ -62,21 +61,20 @@
62 61 add_action( 'rtsb/wcqv/product/summary', 'woocommerce_template_single_price', 15 );
63 62 add_action( 'rtsb/wcqv/product/summary', 'woocommerce_template_single_excerpt', 20 );
64 63 add_action( 'rtsb/wcqv/product/summary', 'woocommerce_template_single_add_to_cart', 25 );
65 64 add_action( 'rtsb/wcqv/product/summary', 'woocommerce_template_single_meta', 30 );
66 -
67 65 }
68 66
69 67 public function product_quick_view_ajax() {
70 - $product_id = absint( $_REQUEST['product_id'] );
68 + $product_id = isset( $_REQUEST['product_id'] ) ? absint( $_REQUEST['product_id'] ) : 0; // phpcs:ignore WordPress.Security.NonceVerification.Recommended
71 69
72 - if ( empty( $product_id ) ) {
70 + if ( empty( $product_id ) || 'publish' !== get_post_status( $product_id ) ) {
73 71 wp_send_json_error( esc_html__( 'Product Id not found', 'shopbuilder' ) );
74 72 }
75 73
76 74 global $sitepress;
77 75
78 - $lang = isset( $_REQUEST['lang'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['lang'] ) ) : '';
76 + $lang = isset( $_REQUEST['lang'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['lang'] ) ) : ''; // phpcs:ignore WordPress.Security.NonceVerification.Recommended
79 77 if ( defined( 'ICL_LANGUAGE_CODE' ) && $lang && isset( $sitepress ) ) {
80 78 $sitepress->switch_lang( $lang, true );
81 79 }
82 80
@@ -83,22 +81,16 @@
83 81 // Set the main wp query for the product.
84 82 wp( 'p=' . $product_id . '&post_type=product' );
85 83
86 84 // Remove product thumbnails gallery.
87 - if ( defined('RTWPVG_VERSION') ) {
85 + if ( defined( 'RTWPVG_VERSION' ) ) {
88 86 remove_action( 'woocommerce_product_thumbnails', 'woocommerce_show_product_thumbnails', 20 );
89 87 }
90 - if ( ! defined('RTWPVG_VERSION') ) {
91 - add_action( 'woocommerce_product_thumbnails', [ $this, 'woocommerce_product_thumbnails_before' ], 1 );
92 - add_action( 'woocommerce_product_thumbnails', [ $this, 'woocommerce_product_thumbnails_after'], 25 );
88 + if ( ! defined( 'RTWPVG_VERSION' ) ) {
89 + //add_action( 'woocommerce_product_thumbnails', [ $this, 'woocommerce_product_thumbnails_before' ], 1 );
90 + //add_action( 'woocommerce_product_thumbnails', [ $this, 'woocommerce_product_thumbnails_after' ], 25 );
93 91 }
94 - // Change template for variable products.
95 - // if ( isset( $GLOBALS['yith_wccl'] ) ) {
96 - // $GLOBALS['yith_wccl']->obj = new YITH_WCCL_Frontend();
97 - // $GLOBALS['yith_wccl']->obj->override();
98 - // } elseif ( defined( 'YITH_WCCL_PREMIUM' ) && YITH_WCCL_PREMIUM && class_exists( 'YITH_WCCL_Frontend' ) ) {
99 - // $attributes = YITH_WCCL_Frontend()->create_attributes_json( $product_id, true );
100 - // }
92 +
101 93 ob_start();
102 94 Fns::load_template( 'quick-view/content' );
103 95 $html = ob_get_contents(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
104 96 ob_end_clean();
@@ -126,9 +118,9 @@
126 118 'hook' => 'woocommerce_after_shop_loop_item',
127 119 'priority' => 15,
128 120 ],
129 121 'custom' => [
130 - 'hook' => Fns::get_option( 'modules', 'quick_view', 'loop_custom_hook_name', '' ),
122 + 'hook' => Fns::get_option( 'modules', 'quick_view', 'loop_custom_hook_name', '' ),
131 123 'priority' => Fns::get_option( 'modules', 'quick_view', 'loop_custom_hook_priority', '' ),
132 124 ],
133 125 ]
134 126 );
@@ -156,9 +148,10 @@
156 148 * Print "Add to compare" button
157 149 *
158 150 * @return void
159 151 */
160 - public function woocommerce_product_thumbnails_before() { ?>
152 + public function woocommerce_product_thumbnails_before() {
153 + ?>
161 154 <div class="rtsb-gallery-images-wrapper">
162 155 <?php
163 156 }
164 157 /**
@@ -165,9 +158,11 @@
165 158 * Print "Add to compare" button
166 159 *
167 160 * @return void
168 161 */
169 - public function woocommerce_product_thumbnails_after() { ?>
162 + public function woocommerce_product_thumbnails_after() {
163 +
164 + ?>
170 165 </div>
171 166 <?php
172 167 }
173 168
@@ -179,12 +174,13 @@
179 174 public function button_hook() {
180 175 if ( ! apply_filters( 'rtsb/module/quick_view/show_button', true ) ) {
181 176 return;
182 177 }
183 - global $product;
184 - if( $product instanceof WC_Product ) {
185 - do_action('rtsb/modules/quick_view/print_button', $product->get_id());
186 - }
178 + global $product;
179 + if ( $product instanceof WC_Product ) {
180 + do_action( 'rtsb/modules/quick_view/print_button', $product->get_id() );
181 + }
182 +
187 183 }
188 184
189 185
190 186 /**
@@ -192,25 +188,25 @@
192 188 */
193 189 public function print_button( $product_id = 0 ) {
194 190 global $product;
195 191
196 - // product object.
197 - $current_product = $product_id ? wc_get_product( $product_id ) : false;
198 - $current_product = $current_product ?: $product;
192 + if ( ! $product instanceof WC_Product && $product_id ) {
193 + $product = wc_get_product( $product_id );
194 + }
199 195
200 - if ( ! $current_product instanceof WC_Product ) {
201 - return '';
202 - }
196 + // if ( ! $current_product instanceof WC_Product ) {
197 + // return '';
198 + // }
203 199
204 200 $classes = []; // button class.
205 - $button_text = Fns::get_option( 'modules', 'quick_view', 'button_text', esc_html__( 'Quick View', 'shopbuilder' ) );
201 + $button_text = Fns::get_option( 'modules', 'quick_view', 'button_text', esc_html__( 'Quick View', 'shopbuilder' ) );
206 202
207 - $icon_html = '<i class="rtsb-icon rtsb-icon-eye"></i>';
203 + $icon_html = '<i class="rtsb-icon rtsb-icon-eye"></i>';
208 204 // get product type.
209 - $product_type = $current_product->get_type();
205 + $product_type = $product->get_type();
210 206 $params = [
211 207 'classes' => $classes,
212 - 'product_id' => $current_product->get_id(),
208 + 'product_id' => $product->get_id(),
213 209 'product_type' => $product_type,
214 210 'button_text' => $button_text,
215 211 'left_text' => apply_filters( 'rtsb/module/quick_view/button_left_text', '' ),
216 212 'right_text' => apply_filters( 'rtsb/module/quick_view/button_right_text', '' ),
@@ -233,20 +229,31 @@
233 229 * @return string [HTML]
234 230 */
235 231 public function button_shortcode( $atts, $content = '' ) {
236 232 $this->enqueue();
237 - global $product;
233 + global $product;
238 234 if ( ! $product instanceof WC_Product ) {
239 235 return '';
240 236 }
241 237 ob_start();
242 238
243 - do_action( 'rtsb/modules/quick_view/print_button', $product->get_id() );
239 + do_action( 'rtsb/modules/quick_view/print_button', $product->get_id() );
244 240
245 - return ob_get_clean();
241 + return ob_get_clean();
246 242 }
247 243
248 244 public function enqueue() {
245 +
246 + wp_enqueue_style( 'elementor-icons-fa-regular' );
247 +
248 + wp_enqueue_style( 'elementor-icons-fa-solid' );
249 + wp_enqueue_style( 'elementor-icons-shared-0' );
250 + // wp_enqueue_style( 'elementor-frontend' );
251 +
252 + if ( ! class_exists('WooProductVariationGallery') && current_theme_supports( 'wc-product-gallery-slider' ) ) {
253 + wp_enqueue_script( 'flexslider' );
254 + }
255 +
249 256 wp_enqueue_script( 'wc-add-to-cart-variation' );
250 257 if ( version_compare( WC()->version, '3.0.0', '>=' ) ) {
251 258 if ( current_theme_supports( 'wc-product-gallery-zoom' ) ) {
252 259 wp_enqueue_script( 'zoom' );
@@ -271,9 +278,9 @@
271 278 ],
272 279 RTSB_VERSION,
273 280 true
274 281 );
275 - wp_enqueue_style( 'rtsb-modules' );
282 + wp_enqueue_style( 'rtsb-modules' );
276 283 wp_enqueue_script( 'rtsb-quick-view' );
277 284
278 285 // Allow user to load custom style and scripts!
279 286 do_action( 'rtsb/modules/quick_view/custom_scripts' );
@@ -301,9 +308,9 @@
301 308 * @return string Filtered HTML.
302 309 */
303 310 public function add_button_for_block( $item_html, $data, $product ) {
304 311 // Add the link "Add to wishlist" in the loop.
305 - $shop_btn_position = Fns::get_option( 'modules', 'quick_view', 'loop_btn_position', 'after_add_to_cart' );
312 + $shop_btn_position = Fns::get_option( 'modules', 'quick_view', 'loop_btn_position', 'after_add_to_cart' );
306 313 ob_start();
307 314 $this->print_button( $product->get_id() );
308 315 $button = ob_get_clean();
309 316 $parts = [];