PluginProbe
Product Labels, Quick View, Buy Now, Pre-Orders, Frequently Bought Together & More for WooCommerce – Merchant / 1.10.2
Product Labels, Quick View, Buy Now, Pre-Orders, Frequently Bought Together & More for WooCommerce – Merchant v1.10.2
2.3.2 2.3.1 2.3.0 2.2.8 2.2.7 trunk 1.10.0 1.10.1 1.10.2 1.10.3 1.10.4 1.10.5 1.11.0 1.11.1 1.11.2 1.6 1.7 1.8 1.8.1 1.8.2 1.8.3 1.9.0 1.9.1 1.9.10 1.9.11 All 60 releases
merchant / inc / modules / side-cart / class-side-cart.php

class-side-cart.php in Product Labels, Quick View, Buy Now, Pre-Orders, Frequently Bought Together & More for WooCommerce – Merchant 1.10.2, at inc/modules/side-cart/class-side-cart.php

290 lines 10.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 /**
4 * Side Cart
5 *
6 * @package Merchant
7 */
8
9 if ( ! defined( 'ABSPATH' ) ) {
10 exit; // Exit if accessed directly
11 }
12
13 /**
14 * Side Cart Class.
15 *
16 */
17 class Merchant_Side_Cart extends Merchant_Add_Module {
18
19 /**
20 * Module ID.
21 */
22 const MODULE_ID = 'side-cart';
23
24 /**
25 * Is module preview.
26 *
27 */
28 public static $is_module_preview = false;
29
30 /**
31 * Constructor.
32 *
33 */
34 public function __construct() {
35 // Module id.
36 $this->module_id = self::MODULE_ID;
37
38 // WooCommerce only.
39 $this->wc_only = true;
40
41 // Parent construct.
42 parent::__construct();
43
44 // Module default settings.
45 $this->module_default_settings = array(
46 'show_after_add_to_cart' => 1,
47 'show_after_add_to_cart_single_product' => 0,
48 'show_on_cart_url_click' => 1,
49 );
50
51 // Module data.
52 $this->module_data = Merchant_Admin_Modules::$modules_data[ self::MODULE_ID ];
53 $this->module_data['preview_url'] = $this->set_module_preview_url( array( 'type' => 'shop' ) );
54
55 // Module section.
56 $this->module_section = $this->module_data['section'];
57
58 // Module options path.
59 $this->module_options_path = MERCHANT_DIR . 'inc/modules/' . self::MODULE_ID . '/admin/options.php';
60 if ( Merchant_Modules::is_module_active( self::MODULE_ID ) && is_admin() ) {
61 // Init translations.
62 $this->init_translations();
63 }
64 // Is module preview page.
65 if ( is_admin() && parent::is_module_settings_page() ) {
66 self::$is_module_preview = true;
67
68 // Enqueue admin styles.
69 add_action( 'admin_enqueue_scripts', array( $this, 'admin_enqueue_css' ) );
70
71 // Enqueue admin scripts.
72 add_action( 'admin_enqueue_scripts', array( $this, 'admin_enqueue_scripts' ) );
73
74 // Admin preview box.
75 add_filter( 'merchant_module_preview', array( $this, 'render_admin_preview' ), 10, 2 );
76
77 // Custom CSS.
78 add_filter( 'merchant_custom_css', array( $this, 'admin_custom_css' ) );
79 }
80 }
81
82 public function init_translations() {
83 $settings = $this->get_module_settings();
84 if ( ! empty( $settings['checkout_btn_text'] ) ) {
85 Merchant_Translator::register_string( $settings['checkout_btn_text'], esc_html__( 'Side cart checkout button text', 'merchant' ) );
86 }
87 if ( ! empty( $settings['view_cart_btn_text'] ) ) {
88 Merchant_Translator::register_string( $settings['view_cart_btn_text'], esc_html__( 'Side cart view cart button text', 'merchant' ) );
89 }
90 if ( ! empty( $settings['upsells_title'] ) ) {
91 Merchant_Translator::register_string( $settings['upsells_title'], esc_html__( 'Side cart upsells title', 'merchant' ) );
92 }
93 if ( ! empty( $settings['upsells_add_to_cart_text'] ) ) {
94 Merchant_Translator::register_string( $settings['upsells_add_to_cart_text'], esc_html__( 'Side cart upsells add to cart text', 'merchant' ) );
95 }
96 }
97
98 /**
99 * Admin enqueue CSS.
100 *
101 * @return void
102 */
103 public function admin_enqueue_css() {
104 if ( $this->is_module_settings_page() ) {
105 wp_enqueue_style( 'merchant-' . self::MODULE_ID, MERCHANT_URI . 'assets/css/modules/' . Merchant_Floating_Mini_Cart::MODULE_ID . '/floating-mini-cart.min.css', array(),
106 MERCHANT_VERSION );
107 wp_enqueue_style( 'merchant-admin-' . self::MODULE_ID,
108 MERCHANT_URI . 'assets/css/modules/' . Merchant_Floating_Mini_Cart::MODULE_ID . '/admin/preview.min.css',
109 array(),
110 MERCHANT_VERSION );
111
112 wp_enqueue_style( 'merchant-admin-preview-' . self::MODULE_ID,
113 MERCHANT_URI . 'assets/css/modules/' . self::MODULE_ID . '/admin/preview.min.css',
114 array(),
115 MERCHANT_VERSION
116 );
117 }
118 }
119
120 /**
121 * Admin Enqueue scripts.
122 *
123 * @return void
124 */
125 public function admin_enqueue_scripts() {
126 // Register and enqueue the main module script.
127 wp_enqueue_script( 'merchant-' . self::MODULE_ID,
128 MERCHANT_URI . 'assets/js/modules/' . Merchant_Floating_Mini_Cart::MODULE_ID . '/floating-mini-cart.min.js',
129 array(),
130 MERCHANT_VERSION,
131 true );
132
133 wp_enqueue_script( 'merchant-preview-' . self::MODULE_ID,
134 MERCHANT_URI . 'assets/js/modules/' . self::MODULE_ID . '/admin/preview.min.js',
135 array(),
136 MERCHANT_VERSION,
137 true );
138
139 wp_localize_script( 'merchant-preview-' . self::MODULE_ID, 'merchant_side_cart_params', array(
140 'keywords' => array(
141 'multi_categories' => esc_html__( 'Multi Categories', 'merchant' ),
142 'category_trigger' => esc_html__( 'Category Trigger:', 'merchant' ),
143 'no_cats_selected' => esc_html__( 'No Categories Selected', 'merchant' ),
144 'no_products_selected' => esc_html__( 'No Products Selected', 'merchant' ),
145 'multi_products' => esc_html__( 'Multi Products', 'merchant' ),
146 'all_products' => esc_html__( 'All Products', 'merchant' ),
147 ),
148 ) );
149 }
150
151
152 /**
153 * Render admin preview
154 *
155 * @param Merchant_Admin_Preview $preview
156 * @param string $module
157 *
158 * @return Merchant_Admin_Preview
159 */
160 public function render_admin_preview( $preview, $module ) {
161 if ( $module === self::MODULE_ID ) {
162 ob_start();
163 self::admin_preview_content();
164 $content = ob_get_clean();
165
166 // HTML.
167 $preview->set_html( $content );
168 }
169
170 return $preview;
171 }
172
173 /**
174 * Admin preview content.
175 *
176 * @return void
177 */
178 public function admin_preview_content() {
179 ?>
180
181 <div class="mrc-preview-single-product-elements">
182 <div class="mrc-preview-left-column">
183 <div class="mrc-preview-product-image-wrapper">
184 <div class="mrc-preview-product-image"></div>
185 <div class="mrc-preview-product-image-thumbs">
186 <div class="mrc-preview-product-image-thumb"></div>
187 <div class="mrc-preview-product-image-thumb"></div>
188 <div class="mrc-preview-product-image-thumb"></div>
189 </div>
190 </div>
191 </div>
192 <div class="mrc-preview-right-column">
193 <div class="mrc-preview-text-placeholder"></div>
194 <div class="mrc-preview-text-placeholder mrc-mw-70"></div>
195 <div class="mrc-preview-text-placeholder mrc-mw-30"></div>
196 <div class="mrc-preview-text-placeholder"></div>
197 <div class="mrc-preview-text-placeholder mrc-mw-70"></div>
198 <div class="mrc-preview-text-placeholder mrc-mw-30"></div>
199 <div class="mrc-preview-text-placeholder"></div>
200 <div class="mrc-preview-text-placeholder mrc-mw-70"></div>
201 <div class="mrc-preview-text-placeholder mrc-mw-30"></div>
202 <div class="mrc-preview-text-placeholder"></div>
203 <div class="mrc-preview-text-placeholder mrc-mw-70"></div>
204 <div class="mrc-preview-addtocart-placeholder"></div>
205 </div>
206 </div>
207
208 <div class="merchant-floating-side-mini-cart-show">
209 <div class="merchant-floating-side-mini-cart-overlay merchant-floating-side-mini-cart-toggle"></div>
210 <div class="merchant-floating-side-mini-cart">
211 <div class="merchant-floating-side-mini-cart-body">
212 <a href="#" class="merchant-floating-side-mini-cart-close-button merchant-floating-side-mini-cart-toggle"
213 title="<?php
214 echo esc_attr__( 'Close the side mini cart', 'merchant' ); ?>">
215 <?php
216 echo wp_kses( Merchant_SVG_Icons::get_svg_icon( 'icon-cancel' ), merchant_kses_allowed_tags( array(), false ) ); ?>
217 </a>
218
219 <div class="merchant-floating-side-mini-cart-widget">
220 <div class="merchant-floating-side-mini-cart-widget-title"><?php
221 echo esc_html__( 'Your Cart', 'merchant' ); ?></div>
222 <div class="widget_shopping_cart_content">
223 <ul class="woocommerce-mini-cart cart_list product_list_widget">
224 <li class="woocommerce-mini-cart-item mini_cart_item">
225 <a href="#" class="remove remove_from_cart_button">×</a>
226 <a href="#">
227 <span class="mrc-product-image"></span>
228 <?php
229 echo esc_html__( 'Product Sample Title', 'merchant' ); ?>
230 </a>
231 <span class="quantity">1 ×
232 <span class="woocommerce-Price-amount amount">
233 <bdi><span class="woocommerce-Price-currencySymbol">$</span>12.00 </bdi>
234 </span>
235 </span>
236 </li>
237 <li class="woocommerce-mini-cart-item mini_cart_item">
238 <a href="#" class="remove remove_from_cart_button">×</a>
239 <a href="#">
240 <span class="mrc-product-image"></span>
241 <?php
242 echo esc_html__( 'Product Sample Title', 'merchant' ); ?>
243 </a>
244 <span class="quantity">1 ×
245 <span class="woocommerce-Price-amount amount">
246 <bdi><span class="woocommerce-Price-currencySymbol">$</span>12.00 </bdi>
247 </span>
248 </span>
249 </li>
250 </ul>
251
252 <p class="woocommerce-mini-cart__total total">
253 <strong><?php
254 echo esc_html__( 'Subtotal:', 'merchant' ); ?></strong>
255 <span class="woocommerce-Price-amount amount">
256 <bdi><span class="woocommerce-Price-currencySymbol">$</span>12.00 </bdi>
257 </span>
258 </p>
259 <p class="woocommerce-mini-cart__buttons buttons">
260 <a href="#" class="button wc-forward"><?php echo esc_html__( 'View cart', 'merchant' ); ?></a>
261 <a href="#" class="button checkout wc-forward"><?php echo esc_html__( 'Checkout', 'merchant' ); ?></a>
262 </p>
263 </div>
264 </div>
265 </div>
266 </div>
267 </div>
268
269 <?php
270 }
271
272 /**
273 * Admin custom CSS.
274 *
275 * @param string $css The custom CSS.
276 *
277 * @return string $css The custom CSS.
278 */
279 public function admin_custom_css( $css ) {
280 $css .= Merchant_Floating_Mini_Cart::get_module_custom_css();
281
282 return $css;
283 }
284 }
285
286 // Initialize the module.
287 add_action( 'init', function () {
288 Merchant_Modules::create_module( new Merchant_Side_Cart() );
289 } );
290