PluginProbe ʕ •ᴥ•ʔ
ShopEngine Elementor WooCommerce Builder Addon – All in One WooCommerce Solution / trunk
ShopEngine Elementor WooCommerce Builder Addon – All in One WooCommerce Solution vtrunk
4.9.1 4.9.0 2.0.0 2.1.0 2.2.0 2.2.1 2.2.2 2.3.0 2.4.0 2.5.0 2.5.1 3.0.0 3.1.0 3.1.1 4.0.0 4.0.1 4.1.0 4.1.1 4.2.0 4.2.1 4.3.0 4.3.1 4.4.0 4.5.0 4.5.1 4.6.0 4.6.1 4.6.2 4.6.3 4.6.4 4.6.5 4.6.6 4.6.7 4.6.8 4.6.9 4.7.0 4.7.1 4.7.2 4.7.3 4.7.4 4.7.5 4.7.6 4.7.7 4.7.8 4.7.9 4.8.0 4.8.1 4.8.2 4.8.3 4.8.4 4.8.5 4.8.6 4.8.7 4.8.8 4.8.9 trunk 0.1.2-beta 0.1.3-beta 0.1.4-beta 1.0.0 1.1.0 1.1.1 1.1.2 1.1.3 1.2.0 1.2.1 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.4.0 1.4.1 1.5.0 1.5.1 1.6.0 1.6.1 1.7.0 1.8.0 1.8.1 1.9.0
shopengine / modules / quick-view / quick-view.php
shopengine / modules / quick-view Last commit date
assets 7 months ago quick-view.php 7 months ago
quick-view.php
108 lines
1 <?php
2
3 namespace ShopEngine\Modules\Quick_View;
4
5 use ShopEngine\Traits\Singleton;
6 use ShopEngine\Utils\Helper;
7 use ShopEngine\Widgets\Products;
8 /**
9 * Class Wish_List
10 *
11 * Main Module Class
12 *
13 * @since 1.0.0
14 */
15 class Quick_View
16 {
17
18 use Singleton;
19
20 /**
21 * Constructor
22 *
23 * @since 1.0.0
24 * @access public
25 */
26 public function init() {
27
28 add_filter('shopengine/page_templates', [$this, 'add_quick_view'], 1);
29
30 // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Just checking current page
31 if(!empty($_REQUEST['shopengine_quickview'])) {
32 // In quickview modal we will not show anything
33 return;
34 }
35
36 add_action('wp_enqueue_scripts', function () {
37
38 wp_enqueue_script('wc-flexslider');
39
40 // Modal Stylesheet
41 wp_enqueue_style( 'shopengine-modal-styles' );
42
43 // Modal Script
44 wp_enqueue_script(
45 'shopengine-quickview',
46 plugin_dir_url(__FILE__) . 'assets/js/script.js',
47 ['jquery', 'shopengine-modal-script']
48 );
49
50 wp_localize_script('shopengine-quickview', 'shopEngineQuickView', [
51 'rest_nonce' => wp_create_nonce('wp_rest')
52 ]);
53 });
54
55 add_filter('woocommerce_loop_add_to_cart_link', [$this, 'print_button'], 10, 3);
56
57 // Modal Wrapper
58 add_action( 'wp_footer', [$this, 'qc_modal_wrapper'] );
59 }
60
61 public function add_quick_view($list) {
62
63 $product_id = Products::instance()->get_preview_product();
64
65 // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Some other templates call it without nonce added.
66 if(isset($_GET['shopengine_product_id'])) {
67 // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Some other templates call it without nonce added.
68 $product_id = sanitize_text_field(wp_unslash($_GET['shopengine_product_id']));
69 update_option('__shopengine_preview_product_id', $product_id);
70 } elseif(get_option('__shopengine_preview_product_id')) {
71 $product_id = get_option('__shopengine_preview_product_id');
72 }
73
74 return array_merge($list, [
75 'quick_view' => [
76 'title' => esc_html__('Quick View', 'shopengine'),
77 'package' => 'free',
78 'class' => '\ShopEngine\Modules\Quick_View\Quick_View',
79 'opt_key' => 'quick_view',
80 'css' => 'quick-view',
81 'url' => get_permalink($product_id),
82 ],
83 ]);
84 }
85
86 public function qc_modal_wrapper() {
87 ?>
88 <div class="shopengine-quick-view-modal se-modal-wrapper"></div>
89 <?php
90 }
91
92 function print_button($add_to_cart_html, $product, $args = []) {
93 $eye_icon = '<i class="shopengine-icon-quick_view_1"></i>';
94 $view = esc_html__('Quick View','shopengine');
95
96 $after = ''; // Add some text or HTML here as well.
97 $before = "<a title='" . $view . "' class='shopengine-quickview-trigger se-btn'
98 data-source-url='" . get_permalink($product->get_id()) . "'
99 href='" . get_permalink($product->get_id()) . "'>
100 " . $eye_icon . "
101 </a>";
102
103 $before = apply_filters('shopengine_quick_view_button_content', $before);
104
105 return $before . $add_to_cart_html . $after;
106 }
107 }
108