PluginProbe
ShopBuilder – WooCommerce Builder For Elementor / 2.6.2
ShopBuilder – WooCommerce Builder For Elementor v2.6.2
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 +70 -57 3.4.12.6.2 View file →
@@ -1,10 +1,5 @@
1 1 <?php
2 -/**
3 - * Quick View Module Class.
4 - *
5 - * @package RadiusTheme\SB
6 - */
7 2
8 3 namespace RadiusTheme\SB\Modules\QuickView;
9 4
10 5 use RadiusTheme\SB\Helpers\Fns;
@@ -15,32 +10,21 @@
15 10 if ( ! defined( 'ABSPATH' ) ) {
16 11 exit( 'This script cannot be accessed directly.' );
17 12 }
18 13
19 -/**
20 - * Quick View Module Class.
21 - */
22 14 class QuickViewFrontEnd {
23 15 use SingletonTrait;
24 16
25 - /**
26 - * Asset Handle
27 - *
28 - * @var string
29 - */
30 - private $handle = 'rtsb-quick-view';
31 -
32 - /**
33 - * Class constructor.
34 - */
35 17 public function __construct() {
36 - add_action( 'wp_enqueue_scripts', [ $this, 'enqueue' ], 99 );
18 + add_action( 'wp_enqueue_scripts', [ $this, 'enqueue' ] );
37 19
38 20 // Gallery Plugin Support rtwpvg_disable_enqueue_scripts.
39 21 add_filter( 'rtwpvg_disable_enqueue_scripts', '__return_false', 11 );
40 22
41 23 // Template.
24 +
42 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.
43 27
44 28 add_action( 'rtsb/modules/quick_view/print_button', [ $this, 'print_button' ] );
45 29
46 30 // Load action for product template.
@@ -79,13 +63,8 @@
79 63 add_action( 'rtsb/wcqv/product/summary', 'woocommerce_template_single_add_to_cart', 25 );
80 64 add_action( 'rtsb/wcqv/product/summary', 'woocommerce_template_single_meta', 30 );
81 65 }
82 66
83 - /**
84 - * Quick View AJAX.
85 - *
86 - * @return void
87 - */
88 67 public function product_quick_view_ajax() {
89 68 $product_id = isset( $_REQUEST['product_id'] ) ? absint( $_REQUEST['product_id'] ) : 0; // phpcs:ignore WordPress.Security.NonceVerification.Recommended
90 69
91 70 if ( empty( $product_id ) || 'publish' !== get_post_status( $product_id ) ) {
@@ -105,8 +84,12 @@
105 84 // Remove product thumbnails gallery.
106 85 if ( defined( 'RTWPVG_VERSION' ) ) {
107 86 remove_action( 'woocommerce_product_thumbnails', 'woocommerce_show_product_thumbnails', 20 );
108 87 }
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 );
91 + }
109 92
110 93 ob_start();
111 94 Fns::load_template( 'quick-view/content' );
112 95 $html = ob_get_contents(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
@@ -121,8 +104,9 @@
121 104 * @return void
122 105 * @since 1.0.0
123 106 */
124 107 public function attach_button() {
108 +
125 109 $positions = apply_filters(
126 110 'rtsb/module/quick_view/loop_btn_position',
127 111 [
128 112
@@ -141,8 +125,9 @@
141 125 ]
142 126 );
143 127
144 128 // Add the link "Add to wishlist" in the loop.
129 +
145 130 $loop_btn_position = Fns::get_option( 'modules', 'quick_view', 'loop_btn_position', 'after_add_to_cart' );
146 131
147 132 if ( 'shortcode' !== $loop_btn_position && isset( $positions[ $loop_btn_position ]['hook'] ) ) {
148 133 add_action(
@@ -153,9 +138,9 @@
153 138 ],
154 139 isset( $positions[ $loop_btn_position ]['priority'] ) ? $positions[ $loop_btn_position ]['priority'] : ''
155 140 );
156 141 }
157 -
142 + // TODO:: Maybe this hooks is not working. Need to Check gutenberg compatibility.
158 143 // Add the link "Quick view" for Gutenberg blocks.
159 144 add_filter( 'woocommerce_blocks_product_grid_item_html', [ $this, 'add_button_for_block' ], 10, 3 );
160 145 }
161 146
@@ -163,8 +148,30 @@
163 148 * Print "Add to compare" button
164 149 *
165 150 * @return void
166 151 */
152 + public function woocommerce_product_thumbnails_before() {
153 + ?>
154 + <div class="rtsb-gallery-images-wrapper">
155 + <?php
156 + }
157 + /**
158 + * Print "Add to compare" button
159 + *
160 + * @return void
161 + */
162 + public function woocommerce_product_thumbnails_after() {
163 +
164 + ?>
165 + </div>
166 + <?php
167 + }
168 +
169 + /**
170 + * Print "Add to compare" button
171 + *
172 + * @return void
173 + */
167 174 public function button_hook() {
168 175 if ( ! apply_filters( 'rtsb/module/quick_view/show_button', true ) ) {
169 176 return;
170 177 }
@@ -175,13 +182,9 @@
175 182 }
176 183
177 184
178 185 /**
179 - * Print "Add to compare" button.
180 - *
181 - * @param int $product_id Product ID.
182 - *
183 - * @return void
186 + * @return string|void
184 187 */
185 188 public function print_button( $product_id = 0 ) {
186 189 global $product;
187 190
@@ -188,15 +191,14 @@
188 191 if ( ! $product instanceof WC_Product && $product_id ) {
189 192 $product = wc_get_product( $product_id );
190 193 }
191 194
192 - $classes = [];
193 - $button_text = Fns::get_option( 'modules', 'quick_view', 'button_text', esc_html__( 'Quick View', 'shopbuilder' ) );
194 - $has_button_text = ! empty( Fns::get_option( 'modules', 'quick_view', 'button_text', '' ) );
195 + // if ( ! $current_product instanceof WC_Product ) {
196 + // return '';
197 + // }
195 198
196 - if ( $has_button_text ) {
197 - $classes[] = 'has-text';
198 - }
199 + $classes = []; // button class.
200 + $button_text = Fns::get_option( 'modules', 'quick_view', 'button_text', esc_html__( 'Quick View', 'shopbuilder' ) );
199 201
200 202 $icon_html = '<i class="rtsb-icon rtsb-icon-eye"></i>';
201 203 // get product type.
202 204 $product_type = $product->get_type();
@@ -204,9 +206,9 @@
204 206 'classes' => $classes,
205 207 'product_id' => $product->get_id(),
206 208 'product_type' => $product_type,
207 209 'button_text' => $button_text,
208 - 'has_button_text' => $has_button_text,
210 + 'has_button_text' => ! empty( Fns::get_option( 'modules', 'quick_view', 'button_text', '' ) ),
209 211 'left_text' => apply_filters( 'rtsb/module/quick_view/button_left_text', '' ),
210 212 'right_text' => apply_filters( 'rtsb/module/quick_view/button_right_text', '' ),
211 213 ];
212 214 // let third party developer filter options.
@@ -216,51 +218,49 @@
216 218
217 219 Fns::load_template( 'quick-view/button', $atts );
218 220 }
219 221
222 +
220 223 /**
221 224 * Wishlist button Shortcode callable function
222 225 *
223 - * @return string
226 + * @param array $atts
227 + * @param string $content
228 + *
229 + * @return string [HTML]
224 230 */
225 - public function button_shortcode() {
231 + public function button_shortcode( $atts, $content = '' ) {
226 232 global $product;
227 -
228 233 if ( ! $product instanceof WC_Product ) {
229 234 return '';
230 235 }
236 + ob_start();
231 237
232 - ob_start();
233 238 do_action( 'rtsb/modules/quick_view/print_button', $product->get_id() );
234 239
235 240 return ob_get_clean();
236 241 }
237 242
238 - /**
239 - * Enqueue assets.
240 - *
241 - * @return void
242 - */
243 243 public function enqueue() {
244 +
244 245 wp_enqueue_style( 'elementor-icons-fa-regular' );
245 - wp_enqueue_style( 'elementor-icons-fa-solid' );
246 - wp_enqueue_style( 'elementor-icons-shared-0' );
247 246
247 + wp_enqueue_style( 'elementor-icons-fa-solid' );
248 + wp_enqueue_style( 'elementor-icons-shared-0' );
249 + // wp_enqueue_style( 'elementor-frontend' );
250 +
248 251 if ( ! class_exists( 'WooProductVariationGallery' ) && current_theme_supports( 'wc-product-gallery-slider' ) ) {
249 - wp_enqueue_script( 'wc-flexslider' );
252 + wp_enqueue_script( 'flexslider' );
250 253 }
251 254
252 255 wp_enqueue_script( 'wc-add-to-cart-variation' );
253 -
254 256 if ( version_compare( WC()->version, '3.0.0', '>=' ) ) {
255 257 if ( current_theme_supports( 'wc-product-gallery-zoom' ) ) {
256 - wp_enqueue_script( 'wc-zoom' );
258 + wp_enqueue_script( 'zoom' );
257 259 }
258 -
259 260 if ( current_theme_supports( 'wc-product-gallery-lightbox' ) ) {
260 - wp_enqueue_script( 'wc-photoswipe-ui-default' );
261 + wp_enqueue_script( 'photoswipe-ui-default' );
261 262 wp_enqueue_style( 'photoswipe-default-skin' );
262 -
263 263 if ( has_action( 'wp_footer', 'woocommerce_photoswipe' ) === false ) {
264 264 add_action( 'wp_footer', 'woocommerce_photoswipe', 15 );
265 265 }
266 266 }
@@ -265,10 +265,23 @@
265 265 }
266 266 }
267 267 wp_enqueue_script( 'wc-single-product' );
268 268 }
269 - // Enqueue assets.
270 - $this->handle = Fns::enqueue_module_assets( $this->handle, 'quick-view' );
269 +
270 + wp_register_style( 'rtsb-modules', rtsb()->get_assets_uri( 'modules/modules.css' ), [], RTSB_VERSION );
271 + wp_register_script(
272 + 'rtsb-quick-view',
273 + rtsb()->get_assets_uri( 'modules/quick-view.js' ),
274 + [
275 + 'jquery',
276 + 'rtsb-public',
277 + ],
278 + RTSB_VERSION,
279 + true
280 + );
281 + wp_enqueue_style( 'rtsb-modules' );
282 + wp_enqueue_script( 'rtsb-quick-view' );
283 +
271 284 // Allow user to load custom style and scripts!
272 285 do_action( 'rtsb/modules/quick_view/custom_scripts' );
273 286
274 287 $params = apply_filters(
@@ -279,9 +292,9 @@
279 292 'isLoggedIn' => is_user_logged_in(),
280 293 ]
281 294 );
282 295
283 - wp_localize_script( $this->handle, 'rtsbQvParams', $params );
296 + wp_localize_script( 'rtsb-quick-view', 'rtsbQvParams', $params );
284 297 }
285 298
286 299
287 300 /**