Version Description
Download this release
Release Info
Developer | sandesh055 |
Plugin | Funnel Builder by CartFlows – Create High Converting Sales Funnels For WordPress |
Version | 1.1.18 |
Comparing to | |
See all releases |
Code changes from version 1.1.17 to 1.1.18
- assets/js/frontend.js +14 -13
- assets/min-js/frontend.min.js +1 -1
- cartflows.php +24 -24
- changelog.txt +3 -0
- classes/class-cartflows-admin.php +511 -490
- classes/class-cartflows-cloning.php +445 -445
- classes/class-cartflows-frontend.php +1 -1
- classes/class-cartflows-loader.php +1 -1
- languages/cartflows.pot +1442 -1442
- modules/checkout/classes/class-cartflows-checkout-markup.php +1157 -1157
- readme.txt +56 -19
assets/js/frontend.js
CHANGED
@@ -1,5 +1,19 @@
|
|
1 |
(function($){
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
// Remove css when oceanwp theme is enabled.
|
4 |
var remove_oceanwp_custom_style = function(){
|
5 |
if( 'OceanWP' == cartflows.current_theme ){
|
@@ -14,18 +28,5 @@
|
|
14 |
|
15 |
remove_oceanwp_custom_style();
|
16 |
|
17 |
-
$(document).on( 'click', 'a[href*="wcf-next-step"]', function(e) {
|
18 |
-
|
19 |
-
e.preventDefault();
|
20 |
-
|
21 |
-
if( 'undefined' !== typeof cartflows.is_pb_preview && '1' == cartflows.is_pb_preview ) {
|
22 |
-
e.stopPropagation();
|
23 |
-
return;
|
24 |
-
}
|
25 |
-
|
26 |
-
window.location.href = cartflows.next_step;
|
27 |
-
|
28 |
-
return false;
|
29 |
-
});
|
30 |
});
|
31 |
})(jQuery);
|
1 |
(function($){
|
2 |
|
3 |
+
$(document).on( 'click', 'a[href*="wcf-next-step"]', function(e) {
|
4 |
+
|
5 |
+
e.preventDefault();
|
6 |
+
|
7 |
+
if( 'undefined' !== typeof cartflows.is_pb_preview && '1' == cartflows.is_pb_preview ) {
|
8 |
+
e.stopPropagation();
|
9 |
+
return;
|
10 |
+
}
|
11 |
+
|
12 |
+
window.location.href = cartflows.next_step;
|
13 |
+
|
14 |
+
return false;
|
15 |
+
});
|
16 |
+
|
17 |
// Remove css when oceanwp theme is enabled.
|
18 |
var remove_oceanwp_custom_style = function(){
|
19 |
if( 'OceanWP' == cartflows.current_theme ){
|
28 |
|
29 |
remove_oceanwp_custom_style();
|
30 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
31 |
});
|
32 |
})(jQuery);
|
assets/min-js/frontend.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
!function(e){e(document).
|
1 |
+
!function(e){e(document).on("click",'a[href*="wcf-next-step"]',function(e){if(e.preventDefault(),void 0===cartflows.is_pb_preview||"1"!=cartflows.is_pb_preview)return window.location.href=cartflows.next_step,!1;e.stopPropagation()});e(document).ready(function(e){!function(){if("OceanWP"==cartflows.current_theme){var e=document.getElementById("oceanwp-style-css");null!=e&&e.remove()}}()})}(jQuery);
|
cartflows.php
CHANGED
@@ -1,24 +1,24 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* Plugin Name: CartFlows
|
4 |
-
* Plugin URI: https://cartflows.com/
|
5 |
-
* Description: Create beautiful checkout pages & sales flows for WooCommerce.
|
6 |
-
* Version: 1.1.
|
7 |
-
* Author: CartFlows Inc
|
8 |
-
* Author URI: https://cartflows.com/
|
9 |
-
* Text Domain: cartflows
|
10 |
-
* WC requires at least: 3.0
|
11 |
-
* WC tested up to: 3.
|
12 |
-
*
|
13 |
-
* @package CartFlows
|
14 |
-
*/
|
15 |
-
|
16 |
-
/**
|
17 |
-
* Set constants.
|
18 |
-
*/
|
19 |
-
define( 'CARTFLOWS_FILE', __FILE__ );
|
20 |
-
|
21 |
-
/**
|
22 |
-
* Loader
|
23 |
-
*/
|
24 |
-
require_once 'classes/class-cartflows-loader.php';
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Plugin Name: CartFlows
|
4 |
+
* Plugin URI: https://cartflows.com/
|
5 |
+
* Description: Create beautiful checkout pages & sales flows for WooCommerce.
|
6 |
+
* Version: 1.1.18
|
7 |
+
* Author: CartFlows Inc
|
8 |
+
* Author URI: https://cartflows.com/
|
9 |
+
* Text Domain: cartflows
|
10 |
+
* WC requires at least: 3.0
|
11 |
+
* WC tested up to: 3.6.2
|
12 |
+
*
|
13 |
+
* @package CartFlows
|
14 |
+
*/
|
15 |
+
|
16 |
+
/**
|
17 |
+
* Set constants.
|
18 |
+
*/
|
19 |
+
define( 'CARTFLOWS_FILE', __FILE__ );
|
20 |
+
|
21 |
+
/**
|
22 |
+
* Loader
|
23 |
+
*/
|
24 |
+
require_once 'classes/class-cartflows-loader.php';
|
changelog.txt
CHANGED
@@ -1,3 +1,6 @@
|
|
|
|
|
|
|
|
1 |
Version 1.1.17 - Tuesday, 30th April 2019
|
2 |
- Fix: Database connectivity error while cloning the flow.
|
3 |
|
1 |
+
Version 1.1.18 - Friday, 10th May 2019
|
2 |
+
- Fix: Sometimes, Next step link was not working.
|
3 |
+
|
4 |
Version 1.1.17 - Tuesday, 30th April 2019
|
5 |
- Fix: Database connectivity error while cloning the flow.
|
6 |
|
classes/class-cartflows-admin.php
CHANGED
@@ -1,490 +1,511 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* CartFlows Admin.
|
4 |
-
*
|
5 |
-
* @package CartFlows
|
6 |
-
*/
|
7 |
-
|
8 |
-
/**
|
9 |
-
* Class Cartflows_Admin.
|
10 |
-
*/
|
11 |
-
class Cartflows_Admin {
|
12 |
-
|
13 |
-
/**
|
14 |
-
* Calls on initialization
|
15 |
-
*
|
16 |
-
* @since 1.0.0
|
17 |
-
*/
|
18 |
-
public static function init() {
|
19 |
-
|
20 |
-
self::initialise_plugin();
|
21 |
-
self::init_hooks();
|
22 |
-
}
|
23 |
-
|
24 |
-
/**
|
25 |
-
* Init Hooks.
|
26 |
-
*
|
27 |
-
* @since 1.0.0
|
28 |
-
* @return void
|
29 |
-
*/
|
30 |
-
static public function init_hooks() {
|
31 |
-
|
32 |
-
if ( ! is_admin() ) {
|
33 |
-
return;
|
34 |
-
}
|
35 |
-
|
36 |
-
include_once CARTFLOWS_DIR . 'classes/class-cartflows-admin-fields.php';
|
37 |
-
|
38 |
-
// Add CARTFLOWS menu option to admin.
|
39 |
-
add_action( 'network_admin_menu', __CLASS__ . '::menu' );
|
40 |
-
add_action( 'admin_menu', __CLASS__ . '::menu' );
|
41 |
-
add_action( 'admin_menu', __CLASS__ . '::submenu', 999 );
|
42 |
-
|
43 |
-
add_action( 'cartflows_render_admin_content', __CLASS__ . '::render_content' );
|
44 |
-
|
45 |
-
add_action( 'init', __CLASS__ . '::settings_admin_scripts' );
|
46 |
-
|
47 |
-
/* Global Addmin Script */
|
48 |
-
add_action( 'admin_enqueue_scripts', __CLASS__ . '::global_admin_scripts', 20 );
|
49 |
-
|
50 |
-
add_action( 'admin_footer', __CLASS__ . '::global_admin_data', 9555 );
|
51 |
-
|
52 |
-
/* Add lite version class to body */
|
53 |
-
add_action( 'admin_body_class', __CLASS__ . '::add_admin_body_class' );
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
*
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
$
|
139 |
-
$
|
140 |
-
$
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
$action = '
|
160 |
-
|
161 |
-
$
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
$
|
199 |
-
|
200 |
-
)
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
$
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
$
|
242 |
-
|
243 |
-
)
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
)
|
269 |
-
|
270 |
-
|
271 |
-
}
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
*
|
277 |
-
*
|
278 |
-
* @
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
|
287 |
-
|
288 |
-
|
289 |
-
|
290 |
-
|
291 |
-
|
292 |
-
|
293 |
-
|
294 |
-
|
295 |
-
|
296 |
-
|
297 |
-
|
298 |
-
*
|
299 |
-
*
|
300 |
-
* @
|
301 |
-
*/
|
302 |
-
static public function
|
303 |
-
|
304 |
-
$
|
305 |
-
|
306 |
-
|
307 |
-
|
308 |
-
|
309 |
-
|
310 |
-
|
311 |
-
|
312 |
-
|
313 |
-
|
314 |
-
|
315 |
-
|
316 |
-
|
317 |
-
|
318 |
-
|
319 |
-
|
320 |
-
|
321 |
-
|
322 |
-
|
323 |
-
|
324 |
-
|
325 |
-
|
326 |
-
|
327 |
-
|
328 |
-
|
329 |
-
|
330 |
-
|
331 |
-
|
332 |
-
|
333 |
-
|
334 |
-
|
335 |
-
|
336 |
-
|
337 |
-
|
338 |
-
|
339 |
-
|
340 |
-
|
341 |
-
|
342 |
-
|
343 |
-
|
344 |
-
|
345 |
-
|
346 |
-
|
347 |
-
|
348 |
-
|
349 |
-
|
350 |
-
|
351 |
-
|
352 |
-
|
353 |
-
|
354 |
-
|
355 |
-
|
356 |
-
|
357 |
-
|
358 |
-
|
359 |
-
|
360 |
-
|
361 |
-
|
362 |
-
|
363 |
-
|
364 |
-
|
365 |
-
|
366 |
-
|
367 |
-
|
368 |
-
|
369 |
-
|
370 |
-
|
371 |
-
|
372 |
-
|
373 |
-
|
374 |
-
|
375 |
-
|
376 |
-
|
377 |
-
|
378 |
-
|
379 |
-
|
380 |
-
|
381 |
-
|
382 |
-
|
383 |
-
|
384 |
-
|
385 |
-
|
386 |
-
|
387 |
-
|
388 |
-
|
389 |
-
|
390 |
-
|
391 |
-
|
392 |
-
|
393 |
-
|
394 |
-
|
395 |
-
|
396 |
-
<div
|
397 |
-
<
|
398 |
-
|
399 |
-
|
400 |
-
|
401 |
-
</
|
402 |
-
|
403 |
-
|
404 |
-
|
405 |
-
|
406 |
-
|
407 |
-
|
408 |
-
|
409 |
-
|
410 |
-
|
411 |
-
|
412 |
-
|
413 |
-
|
414 |
-
|
415 |
-
|
416 |
-
|
417 |
-
|
418 |
-
|
419 |
-
|
420 |
-
|
421 |
-
|
422 |
-
|
423 |
-
|
424 |
-
|
425 |
-
|
426 |
-
|
427 |
-
|
428 |
-
|
429 |
-
|
430 |
-
|
431 |
-
|
432 |
-
|
433 |
-
|
434 |
-
*
|
435 |
-
*/
|
436 |
-
static public function
|
437 |
-
|
438 |
-
//
|
439 |
-
|
440 |
-
|
441 |
-
|
442 |
-
|
443 |
-
|
444 |
-
|
445 |
-
|
446 |
-
|
447 |
-
|
448 |
-
|
449 |
-
|
450 |
-
|
451 |
-
|
452 |
-
|
453 |
-
|
454 |
-
|
455 |
-
*
|
456 |
-
*/
|
457 |
-
static public function
|
458 |
-
|
459 |
-
|
460 |
-
|
461 |
-
|
462 |
-
|
463 |
-
|
464 |
-
|
465 |
-
|
466 |
-
|
467 |
-
|
468 |
-
|
469 |
-
|
470 |
-
|
471 |
-
|
472 |
-
|
473 |
-
|
474 |
-
|
475 |
-
*
|
476 |
-
*
|
477 |
-
|
478 |
-
|
479 |
-
|
480 |
-
|
481 |
-
|
482 |
-
|
483 |
-
|
484 |
-
|
485 |
-
|
486 |
-
|
487 |
-
|
488 |
-
|
489 |
-
|
490 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* CartFlows Admin.
|
4 |
+
*
|
5 |
+
* @package CartFlows
|
6 |
+
*/
|
7 |
+
|
8 |
+
/**
|
9 |
+
* Class Cartflows_Admin.
|
10 |
+
*/
|
11 |
+
class Cartflows_Admin {
|
12 |
+
|
13 |
+
/**
|
14 |
+
* Calls on initialization
|
15 |
+
*
|
16 |
+
* @since 1.0.0
|
17 |
+
*/
|
18 |
+
public static function init() {
|
19 |
+
|
20 |
+
self::initialise_plugin();
|
21 |
+
self::init_hooks();
|
22 |
+
}
|
23 |
+
|
24 |
+
/**
|
25 |
+
* Init Hooks.
|
26 |
+
*
|
27 |
+
* @since 1.0.0
|
28 |
+
* @return void
|
29 |
+
*/
|
30 |
+
static public function init_hooks() {
|
31 |
+
|
32 |
+
if ( ! is_admin() ) {
|
33 |
+
return;
|
34 |
+
}
|
35 |
+
|
36 |
+
include_once CARTFLOWS_DIR . 'classes/class-cartflows-admin-fields.php';
|
37 |
+
|
38 |
+
// Add CARTFLOWS menu option to admin.
|
39 |
+
add_action( 'network_admin_menu', __CLASS__ . '::menu' );
|
40 |
+
add_action( 'admin_menu', __CLASS__ . '::menu' );
|
41 |
+
add_action( 'admin_menu', __CLASS__ . '::submenu', 999 );
|
42 |
+
|
43 |
+
add_action( 'cartflows_render_admin_content', __CLASS__ . '::render_content' );
|
44 |
+
|
45 |
+
add_action( 'init', __CLASS__ . '::settings_admin_scripts' );
|
46 |
+
|
47 |
+
/* Global Addmin Script */
|
48 |
+
add_action( 'admin_enqueue_scripts', __CLASS__ . '::global_admin_scripts', 20 );
|
49 |
+
|
50 |
+
add_action( 'admin_footer', __CLASS__ . '::global_admin_data', 9555 );
|
51 |
+
|
52 |
+
/* Add lite version class to body */
|
53 |
+
add_action( 'admin_body_class', __CLASS__ . '::add_admin_body_class' );
|
54 |
+
|
55 |
+
add_filter( 'plugin_action_links_' . CARTFLOWS_BASE, __CLASS__ . '::add_action_links' );
|
56 |
+
|
57 |
+
}
|
58 |
+
|
59 |
+
/**
|
60 |
+
* Show action on plugin page.
|
61 |
+
*
|
62 |
+
* @param array $links links.
|
63 |
+
* @return array
|
64 |
+
*/
|
65 |
+
static public function add_action_links( $links ) {
|
66 |
+
$mylinks = array(
|
67 |
+
'<a href="' . admin_url( 'admin.php?page=' . CARTFLOWS_SETTINGS ) . '">Settings</a>',
|
68 |
+
'<a target="_blank" href="' . esc_url( 'https://cartflows.com/docs' ) . '">Docs</a>',
|
69 |
+
);
|
70 |
+
|
71 |
+
if ( ! _is_cartflows_pro() ) {
|
72 |
+
array_push( $mylinks, '<a style="color: #39b54a; font-weight: bold;" target="_blank" href="' . esc_url( 'https://cartflows.com/pricing/' ) . '"> Go Pro </a>' );
|
73 |
+
}
|
74 |
+
|
75 |
+
return array_merge( $links, $mylinks );
|
76 |
+
}
|
77 |
+
|
78 |
+
/**
|
79 |
+
* Initialize after Cartflows pro get loaded.
|
80 |
+
*/
|
81 |
+
static public function settings_admin_scripts() {
|
82 |
+
// Enqueue admin scripts.
|
83 |
+
if ( isset( $_REQUEST['page'] ) && CARTFLOWS_SETTINGS == $_REQUEST['page'] ) {
|
84 |
+
add_action( 'admin_enqueue_scripts', __CLASS__ . '::styles_scripts' );
|
85 |
+
|
86 |
+
self::save_settings();
|
87 |
+
}
|
88 |
+
}
|
89 |
+
/**
|
90 |
+
* Initialises the Plugin Name.
|
91 |
+
*
|
92 |
+
* @since 1.0.0
|
93 |
+
* @return void
|
94 |
+
*/
|
95 |
+
static public function initialise_plugin() {
|
96 |
+
|
97 |
+
$name = 'Cartflows';
|
98 |
+
$short_name = 'Cflows';
|
99 |
+
|
100 |
+
define( 'CARTFLOWS_PLUGIN_NAME', $name );
|
101 |
+
define( 'CARTFLOWS_PLUGIN_SHORT_NAME', $short_name );
|
102 |
+
}
|
103 |
+
|
104 |
+
/**
|
105 |
+
* Renders the admin settings menu.
|
106 |
+
*
|
107 |
+
* @since 1.0.0
|
108 |
+
* @return void
|
109 |
+
*/
|
110 |
+
static public function menu() {
|
111 |
+
|
112 |
+
if ( ! current_user_can( 'manage_options' ) ) {
|
113 |
+
return;
|
114 |
+
}
|
115 |
+
|
116 |
+
add_menu_page(
|
117 |
+
'CartFlows',
|
118 |
+
'CartFlows',
|
119 |
+
'manage_options',
|
120 |
+
CARTFLOWS_SLUG,
|
121 |
+
__CLASS__ . '::render',
|
122 |
+
'data:image/svg+xml;base64,' . base64_encode( file_get_contents( CARTFLOWS_DIR . 'assets/images/cartflows-icon.svg' ) ),
|
123 |
+
39.7
|
124 |
+
);
|
125 |
+
|
126 |
+
}
|
127 |
+
|
128 |
+
/**
|
129 |
+
* Add submenu to admin menu.
|
130 |
+
*
|
131 |
+
* @since 1.0.0
|
132 |
+
*/
|
133 |
+
static function submenu() {
|
134 |
+
|
135 |
+
$parent_slug = CARTFLOWS_SLUG;
|
136 |
+
$page_title = __( 'Settings', 'cartflows' );
|
137 |
+
$menu_title = __( 'Settings', 'cartflows' );
|
138 |
+
$capability = 'manage_options';
|
139 |
+
$menu_slug = 'cartflows_settings';
|
140 |
+
$callback = __CLASS__ . '::render';
|
141 |
+
|
142 |
+
add_submenu_page(
|
143 |
+
$parent_slug,
|
144 |
+
$page_title,
|
145 |
+
$menu_title,
|
146 |
+
$capability,
|
147 |
+
$menu_slug,
|
148 |
+
$callback
|
149 |
+
);
|
150 |
+
}
|
151 |
+
|
152 |
+
/**
|
153 |
+
* Renders the admin settings.
|
154 |
+
*
|
155 |
+
* @since 1.0.0
|
156 |
+
* @return void
|
157 |
+
*/
|
158 |
+
static public function render() {
|
159 |
+
$action = ( isset( $_GET['action'] ) ) ? sanitize_text_field( $_GET['action'] ) : '';
|
160 |
+
$action = ( ! empty( $action ) && '' != $action ) ? $action : 'general';
|
161 |
+
$action = str_replace( '_', '-', $action );
|
162 |
+
|
163 |
+
// Enable header icon filter below.
|
164 |
+
$header_wrapper_class = apply_filters( 'cartflows_header_wrapper_class', array( $action ) );
|
165 |
+
|
166 |
+
include_once CARTFLOWS_DIR . 'includes/admin/cartflows-admin.php';
|
167 |
+
}
|
168 |
+
|
169 |
+
/**
|
170 |
+
* Renders the admin settings content.
|
171 |
+
*
|
172 |
+
* @since 1.0.0
|
173 |
+
* @return void
|
174 |
+
*/
|
175 |
+
static public function render_content() {
|
176 |
+
|
177 |
+
$action = ( isset( $_GET['action'] ) ) ? sanitize_text_field( $_GET['action'] ) : '';
|
178 |
+
$action = ( ! empty( $action ) && '' != $action ) ? $action : 'general';
|
179 |
+
$action = str_replace( '_', '-', $action );
|
180 |
+
$action = 'general';
|
181 |
+
|
182 |
+
$header_wrapper_class = apply_filters( 'cartflows_header_wrapper_class', array( $action ) );
|
183 |
+
|
184 |
+
include_once CARTFLOWS_DIR . 'includes/admin/cartflows-general.php';
|
185 |
+
}
|
186 |
+
|
187 |
+
/**
|
188 |
+
* Save Global Setting options.
|
189 |
+
*
|
190 |
+
* @since 1.0.0
|
191 |
+
*/
|
192 |
+
static public function save_common_settings() {
|
193 |
+
|
194 |
+
if ( isset( $_POST['cartflows-common-settings-nonce'] ) && wp_verify_nonce( $_POST['cartflows-common-settings-nonce'], 'cartflows-common-settings' ) ) {
|
195 |
+
|
196 |
+
$url = $_SERVER['REQUEST_URI'];
|
197 |
+
$input_settings = array();
|
198 |
+
$new_settings = array();
|
199 |
+
|
200 |
+
if ( isset( $_POST['_cartflows_common'] ) ) {
|
201 |
+
|
202 |
+
$input_settings = $_POST['_cartflows_common'];
|
203 |
+
|
204 |
+
// Loop through the input and sanitize each of the values.
|
205 |
+
foreach ( $input_settings as $key => $val ) {
|
206 |
+
|
207 |
+
if ( is_array( $val ) ) {
|
208 |
+
foreach ( $val as $k => $v ) {
|
209 |
+
$new_settings[ $key ][ $k ] = ( isset( $val[ $k ] ) ) ? sanitize_text_field( $v ) : '';
|
210 |
+
}
|
211 |
+
} else {
|
212 |
+
$new_settings[ $key ] = ( isset( $input_settings[ $key ] ) ) ? sanitize_text_field( $val ) : '';
|
213 |
+
}
|
214 |
+
}
|
215 |
+
}
|
216 |
+
|
217 |
+
Cartflows_Helper::update_admin_settings_option( '_cartflows_common', $new_settings, true );
|
218 |
+
|
219 |
+
$query = array(
|
220 |
+
'message' => 'saved',
|
221 |
+
);
|
222 |
+
|
223 |
+
$redirect_to = add_query_arg( $query, $url );
|
224 |
+
|
225 |
+
wp_redirect( $redirect_to );
|
226 |
+
exit;
|
227 |
+
} // End if statement.
|
228 |
+
}
|
229 |
+
|
230 |
+
/**
|
231 |
+
* Save Debug Setting options.
|
232 |
+
*
|
233 |
+
* @since 1.1.14
|
234 |
+
*/
|
235 |
+
static public function save_debug_settings() {
|
236 |
+
|
237 |
+
if ( isset( $_POST['cartflows-debug-settings-nonce'] ) && wp_verify_nonce( $_POST['cartflows-debug-settings-nonce'], 'cartflows-debug-settings' ) ) {
|
238 |
+
|
239 |
+
$url = $_SERVER['REQUEST_URI'];
|
240 |
+
$input_settings = array();
|
241 |
+
$new_settings = array();
|
242 |
+
|
243 |
+
if ( isset( $_POST['_cartflows_debug_data'] ) ) {
|
244 |
+
|
245 |
+
$input_settings = $_POST['_cartflows_debug_data'];
|
246 |
+
|
247 |
+
// Loop through the input and sanitize each of the values.
|
248 |
+
foreach ( $input_settings as $key => $val ) {
|
249 |
+
|
250 |
+
if ( is_array( $val ) ) {
|
251 |
+
foreach ( $val as $k => $v ) {
|
252 |
+
$new_settings[ $key ][ $k ] = ( isset( $val[ $k ] ) ) ? sanitize_text_field( $v ) : '';
|
253 |
+
}
|
254 |
+
} else {
|
255 |
+
$new_settings[ $key ] = ( isset( $input_settings[ $key ] ) ) ? sanitize_text_field( $val ) : '';
|
256 |
+
}
|
257 |
+
}
|
258 |
+
}
|
259 |
+
|
260 |
+
Cartflows_Helper::update_admin_settings_option( '_cartflows_debug_data', $new_settings, true );
|
261 |
+
|
262 |
+
$query = array(
|
263 |
+
'message' => 'saved',
|
264 |
+
);
|
265 |
+
|
266 |
+
$redirect_to = add_query_arg( $query, $url );
|
267 |
+
|
268 |
+
wp_redirect( $redirect_to );
|
269 |
+
exit;
|
270 |
+
|
271 |
+
}
|
272 |
+
}
|
273 |
+
|
274 |
+
/**
|
275 |
+
* Check is cartflows admin.
|
276 |
+
*
|
277 |
+
* @since 1.0.0
|
278 |
+
* @return boolean
|
279 |
+
*/
|
280 |
+
static public function is_global_admin() {
|
281 |
+
|
282 |
+
$current_screen = get_current_screen();
|
283 |
+
|
284 |
+
if (
|
285 |
+
is_object( $current_screen ) &&
|
286 |
+
isset( $current_screen->post_type ) &&
|
287 |
+
( CARTFLOWS_FLOW_POST_TYPE === $current_screen->post_type ||
|
288 |
+
CARTFLOWS_STEP_POST_TYPE === $current_screen->post_type
|
289 |
+
)
|
290 |
+
) {
|
291 |
+
return true;
|
292 |
+
}
|
293 |
+
return false;
|
294 |
+
}
|
295 |
+
|
296 |
+
/**
|
297 |
+
* Check is flow admin.
|
298 |
+
*
|
299 |
+
* @since 1.0.0
|
300 |
+
* @return boolean
|
301 |
+
*/
|
302 |
+
static public function is_flow_edit_admin() {
|
303 |
+
|
304 |
+
$current_screen = get_current_screen();
|
305 |
+
|
306 |
+
if (
|
307 |
+
is_object( $current_screen ) &&
|
308 |
+
isset( $current_screen->post_type ) &&
|
309 |
+
( CARTFLOWS_FLOW_POST_TYPE === $current_screen->post_type ) &&
|
310 |
+
isset( $current_screen->base ) &&
|
311 |
+
( 'post' === $current_screen->base )
|
312 |
+
) {
|
313 |
+
return true;
|
314 |
+
}
|
315 |
+
return false;
|
316 |
+
}
|
317 |
+
|
318 |
+
/**
|
319 |
+
* Global Admin Scripts.
|
320 |
+
*
|
321 |
+
* @since 1.0.0
|
322 |
+
*/
|
323 |
+
static public function global_admin_scripts() {
|
324 |
+
|
325 |
+
$localize = array(
|
326 |
+
'ajaxurl' => admin_url( 'admin-ajax.php' ),
|
327 |
+
'ajax_nonce' => wp_create_nonce( 'cartflows-nonce' ),
|
328 |
+
);
|
329 |
+
|
330 |
+
wp_localize_script( 'jquery', 'cartflows_admin', apply_filters( 'cartflows_admin_js_localize', $localize ) );
|
331 |
+
|
332 |
+
if ( self::is_global_admin() ) {
|
333 |
+
|
334 |
+
// Styles.
|
335 |
+
wp_enqueue_style( 'cartflows-global-admin', CARTFLOWS_URL . 'admin/assets/css/global-admin.css', array(), CARTFLOWS_VER );
|
336 |
+
wp_style_add_data( 'cartflows-global-admin', 'rtl', 'replace' );
|
337 |
+
|
338 |
+
wp_enqueue_script(
|
339 |
+
'wcf-global-admin',
|
340 |
+
CARTFLOWS_URL . 'admin/assets/js/global-admin.js',
|
341 |
+
array( 'jquery' ),
|
342 |
+
CARTFLOWS_VER,
|
343 |
+
true
|
344 |
+
);
|
345 |
+
|
346 |
+
do_action( 'cartflows_global_admin_scripts' );
|
347 |
+
}
|
348 |
+
}
|
349 |
+
|
350 |
+
/**
|
351 |
+
* Global Admin Data.
|
352 |
+
*
|
353 |
+
* @since 1.0.0
|
354 |
+
*/
|
355 |
+
static public function global_admin_data() {
|
356 |
+
|
357 |
+
$current_screen = get_current_screen();
|
358 |
+
|
359 |
+
if ( ! $current_screen ) {
|
360 |
+
return;
|
361 |
+
}
|
362 |
+
|
363 |
+
if ( 'edit-' . CARTFLOWS_FLOW_POST_TYPE != $current_screen->id ) {
|
364 |
+
return;
|
365 |
+
}
|
366 |
+
|
367 |
+
$default_page_builder = Cartflows_Helper::get_common_setting( 'default_page_builder' );
|
368 |
+
?>
|
369 |
+
|
370 |
+
<div id="wcf-remote-flow-importer" class="wcf-templates-popup-overlay">
|
371 |
+
<div class="wcf-templates-popup-content">
|
372 |
+
<div class="spinner"></div>
|
373 |
+
<div class="wcf-templates-wrap wcf-templates-wrap-flows">
|
374 |
+
|
375 |
+
<div id="wcf-remote-flow-actions" class="wcf-template-header">
|
376 |
+
<div class="wcf-template-logo-wrap">
|
377 |
+
<span class="wcf-cartflows-logo-img">
|
378 |
+
<span class="cartflows-logo-icon"></span>
|
379 |
+
</span>
|
380 |
+
<span class="wcf-cartflows-title"><?php _e( 'Flows Library', 'cartflows' ); ?></span>
|
381 |
+
</div>
|
382 |
+
<div class="wcf-tab-wrapper">
|
383 |
+
<?php if ( 'other' !== $default_page_builder ) { ?>
|
384 |
+
<div id="wcf-get-started-steps">
|
385 |
+
<ul class="filter-links ">
|
386 |
+
<li>
|
387 |
+
<a href="#" class="current" data-slug="ready-templates" data-title="<?php _e( 'Ready Templates', 'cartflows' ); ?>"><?php _e( 'Ready Templates', 'cartflows' ); ?></a>
|
388 |
+
</li>
|
389 |
+
<li>
|
390 |
+
<a href="#" data-slug="canvas" data-title="<?php _e( 'Create Your Own', 'cartflows' ); ?>"><?php _e( 'Create Your Own', 'cartflows' ); ?></a>
|
391 |
+
</li>
|
392 |
+
</ul>
|
393 |
+
</div>
|
394 |
+
<?php } ?>
|
395 |
+
</div>
|
396 |
+
<div class="wcf-popup-close-wrap">
|
397 |
+
<span class="close-icon"><span class="wcf-cartflow-icons dashicons dashicons-no"></span></span>
|
398 |
+
</div>
|
399 |
+
</div>
|
400 |
+
<!-- <div class="wcf-search-form">
|
401 |
+
<label class="screen-reader-text" for="wp-filter-search-input"><?php _e( 'Search Sites', 'cartflows' ); ?> </label>
|
402 |
+
<input placeholder="<?php _e( 'Search Flow...', 'cartflows' ); ?>" type="text" aria-describedby="live-search-desc" class="wcf-flow-search-input">
|
403 |
+
</div> -->
|
404 |
+
|
405 |
+
<div id="wcf-remote-content">
|
406 |
+
<?php if ( 'other' !== $default_page_builder ) { ?>
|
407 |
+
<div id="wcf-ready-templates">
|
408 |
+
<div id="wcf-remote-filters">
|
409 |
+
<div id="wcf-page-builders"></div>
|
410 |
+
<div id="wcf-categories"></div>
|
411 |
+
</div>
|
412 |
+
<div class="wcf-page-builder-notice"></div>
|
413 |
+
<div id="wcf-remote-flow-list" class="wcf-remote-list wcf-template-list-wrap"><span class="spinner is-active"></span></div>
|
414 |
+
<div id="wcf-upcoming-page-builders" style="display: none;" class="wcf-remote-list wcf-template-list-wrap"></div>
|
415 |
+
</div>
|
416 |
+
<?php } ?>
|
417 |
+
<div id="wcf-start-from-scratch" style="<?php echo ( 'other' !== $default_page_builder ) ? 'display: none;' : ''; ?>">
|
418 |
+
<div class="inner">
|
419 |
+
<a href="#" class="button button-hero button-primary cartflows-flow-import-blank"><?php _e( 'Design Your Flow', 'cartflows' ); ?></a>
|
420 |
+
<p class="wcf-learn-how"><a href="https://cartflows.com/docs/cartflows-step-types/" target="_blank"><?php _e( 'Learn How', 'cartflows' ); ?> <i class="dashicons dashicons-external"></i></a></p>
|
421 |
+
</div>
|
422 |
+
</div>
|
423 |
+
</div>
|
424 |
+
</div>
|
425 |
+
</div>
|
426 |
+
</div>
|
427 |
+
|
428 |
+
<?php
|
429 |
+
}
|
430 |
+
|
431 |
+
/**
|
432 |
+
* Enqueues the needed CSS/JS for the builder's admin settings page.
|
433 |
+
*
|
434 |
+
* @since 1.0.0
|
435 |
+
*/
|
436 |
+
static public function styles_scripts() {
|
437 |
+
|
438 |
+
// Styles.
|
439 |
+
wp_enqueue_style( 'cartflows-admin-settings', CARTFLOWS_URL . 'admin/assets/css/admin-menu-settings.css', array(), CARTFLOWS_VER );
|
440 |
+
wp_style_add_data( 'cartflows-admin-settings', 'rtl', 'replace' );
|
441 |
+
|
442 |
+
// Script.
|
443 |
+
wp_enqueue_script( 'cartflows-admin-settings', CARTFLOWS_URL . 'admin/assets/js/admin-menu-settings.js', array( 'jquery', 'wp-util', 'updates' ), CARTFLOWS_VER );
|
444 |
+
|
445 |
+
$localize = array(
|
446 |
+
'ajax_nonce' => wp_create_nonce( 'cartflows-widget-nonce' ),
|
447 |
+
);
|
448 |
+
|
449 |
+
wp_localize_script( 'cartflows-admin-settings', 'cartflows', apply_filters( 'cartflows_js_localize', $localize ) );
|
450 |
+
|
451 |
+
do_action( 'cartflows_admin_settings_after_enqueue_scripts' );
|
452 |
+
}
|
453 |
+
|
454 |
+
/**
|
455 |
+
* Save All admin settings here
|
456 |
+
*/
|
457 |
+
static public function save_settings() {
|
458 |
+
|
459 |
+
// Only admins can save settings.
|
460 |
+
if ( ! current_user_can( 'manage_options' ) ) {
|
461 |
+
return;
|
462 |
+
}
|
463 |
+
|
464 |
+
self::save_common_settings();
|
465 |
+
self::save_debug_settings();
|
466 |
+
|
467 |
+
// Let extensions hook into saving.
|
468 |
+
do_action( 'cartflows_admin_settings_save' );
|
469 |
+
}
|
470 |
+
|
471 |
+
/**
|
472 |
+
* Get and return page URL
|
473 |
+
*
|
474 |
+
* @param string $menu_slug Menu name.
|
475 |
+
* @since 1.0.0
|
476 |
+
* @return string page url
|
477 |
+
*/
|
478 |
+
static public function get_page_url( $menu_slug ) {
|
479 |
+
|
480 |
+
$parent_page = self::$default_menu_position;
|
481 |
+
|
482 |
+
if ( strpos( $parent_page, '?' ) !== false ) {
|
483 |
+
$query_var = '&page=' . self::$plugin_slug;
|
484 |
+
} else {
|
485 |
+
$query_var = '?page=' . self::$plugin_slug;
|
486 |
+
}
|
487 |
+
|
488 |
+
$parent_page_url = admin_url( $parent_page . $query_var );
|
489 |
+
|
490 |
+
$url = $parent_page_url . '&action=' . $menu_slug;
|
491 |
+
|
492 |
+
return esc_url( $url );
|
493 |
+
}
|
494 |
+
|
495 |
+
/**
|
496 |
+
* Admin body classes.
|
497 |
+
*
|
498 |
+
* Body classes to be added to <body> tag in admin page
|
499 |
+
*
|
500 |
+
* @param String $classes body classes returned from the filter.
|
501 |
+
* @return String body classes to be added to <body> tag in admin page
|
502 |
+
*/
|
503 |
+
static public function add_admin_body_class( $classes ) {
|
504 |
+
|
505 |
+
$classes .= ' cartflows-' . CARTFLOWS_VER;
|
506 |
+
|
507 |
+
return $classes;
|
508 |
+
}
|
509 |
+
}
|
510 |
+
|
511 |
+
Cartflows_Admin::init();
|
classes/class-cartflows-cloning.php
CHANGED
@@ -1,445 +1,445 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* Cloning.
|
4 |
-
*
|
5 |
-
* @package cartflows-pro
|
6 |
-
*/
|
7 |
-
|
8 |
-
/**
|
9 |
-
* Initialization
|
10 |
-
*
|
11 |
-
* @since 1.0.0
|
12 |
-
*/
|
13 |
-
class Cartflows_Cloning {
|
14 |
-
|
15 |
-
|
16 |
-
/**
|
17 |
-
* Member Variable
|
18 |
-
*
|
19 |
-
* @var instance
|
20 |
-
*/
|
21 |
-
private static $instance;
|
22 |
-
|
23 |
-
/**
|
24 |
-
* Initiator
|
25 |
-
*/
|
26 |
-
public static function get_instance() {
|
27 |
-
if ( ! isset( self::$instance ) ) {
|
28 |
-
self::$instance = new self;
|
29 |
-
}
|
30 |
-
return self::$instance;
|
31 |
-
}
|
32 |
-
|
33 |
-
/**
|
34 |
-
* Constructor
|
35 |
-
*/
|
36 |
-
public function __construct() {
|
37 |
-
|
38 |
-
add_filter( 'post_row_actions', array( $this, 'clone_link' ), 99, 2 );
|
39 |
-
add_action( 'admin_action_cartflows_clone_flow', array( $this, 'clone_flow' ) );
|
40 |
-
add_action( 'admin_action_cartflows_clone_step', array( $this, 'clone_step' ) );
|
41 |
-
}
|
42 |
-
|
43 |
-
/**
|
44 |
-
* Clone flow with steps and its meta.
|
45 |
-
*/
|
46 |
-
function clone_flow() {
|
47 |
-
|
48 |
-
global $wpdb;
|
49 |
-
|
50 |
-
if ( ! ( isset( $_GET['post'] ) || isset( $_POST['post'] ) || ( isset( $_REQUEST['action'] ) && 'cartflows_clone_flow' == $_REQUEST['action'] ) ) ) {
|
51 |
-
wp_die( 'No post to duplicate has been supplied!' );
|
52 |
-
}
|
53 |
-
|
54 |
-
/*
|
55 |
-
* Nonce verification
|
56 |
-
*/
|
57 |
-
if ( ! isset( $_GET['flow_clone_nonce'] ) || ! wp_verify_nonce( $_GET['flow_clone_nonce'], basename( __FILE__ ) ) ) {
|
58 |
-
return;
|
59 |
-
}
|
60 |
-
|
61 |
-
/**
|
62 |
-
* Get the original post id
|
63 |
-
*/
|
64 |
-
$post_id = ( isset( $_GET['post'] ) ? absint( $_GET['post'] ) : absint( $_POST['post'] ) );
|
65 |
-
|
66 |
-
/**
|
67 |
-
* And all the original post data then
|
68 |
-
*/
|
69 |
-
$post = get_post( $post_id );
|
70 |
-
|
71 |
-
/**
|
72 |
-
* Assign current user to be the new post author
|
73 |
-
*/
|
74 |
-
$current_user = wp_get_current_user();
|
75 |
-
$new_post_author = $current_user->ID;
|
76 |
-
|
77 |
-
/**
|
78 |
-
* If post data exists, create the post duplicate
|
79 |
-
*/
|
80 |
-
if ( isset( $post ) && null !== $post ) {
|
81 |
-
|
82 |
-
/**
|
83 |
-
* New post data array
|
84 |
-
*/
|
85 |
-
|
86 |
-
$args = array(
|
87 |
-
'comment_status' => $post->comment_status,
|
88 |
-
'ping_status' => $post->ping_status,
|
89 |
-
'post_author' => $new_post_author,
|
90 |
-
'post_content' => $post->post_content,
|
91 |
-
'post_excerpt' => $post->post_excerpt,
|
92 |
-
'post_name' => $post->post_name,
|
93 |
-
'post_parent' => $post->post_parent,
|
94 |
-
'post_password' => $post->post_password,
|
95 |
-
'post_status' => $post->post_status,
|
96 |
-
'post_title' => $post->post_title . ' Clone',
|
97 |
-
'post_type' => $post->post_type,
|
98 |
-
'to_ping' => $post->to_ping,
|
99 |
-
'menu_order' => $post->menu_order,
|
100 |
-
);
|
101 |
-
|
102 |
-
/**
|
103 |
-
* Insert the post
|
104 |
-
*/
|
105 |
-
$new_flow_id = wp_insert_post( $args );
|
106 |
-
|
107 |
-
/**
|
108 |
-
* Get all current post terms ad set them to the new post
|
109 |
-
*/
|
110 |
-
// returns array of taxonomy names for post type, ex array("category", "post_tag");.
|
111 |
-
$taxonomies = get_object_taxonomies( $post->post_type );
|
112 |
-
|
113 |
-
foreach ( $taxonomies as $taxonomy ) {
|
114 |
-
|
115 |
-
$post_terms = wp_get_object_terms( $post_id, $taxonomy, array( 'fields' => 'slugs' ) );
|
116 |
-
|
117 |
-
wp_set_object_terms( $new_flow_id, $post_terms, $taxonomy, false );
|
118 |
-
}
|
119 |
-
|
120 |
-
/**
|
121 |
-
* Duplicate all post meta just in two SQL queries
|
122 |
-
*/
|
123 |
-
// @codingStandardsIgnoreStart
|
124 |
-
$post_meta_infos = $wpdb->get_results(
|
125 |
-
"SELECT meta_key, meta_value FROM $wpdb->postmeta WHERE post_id=$post_id"
|
126 |
-
);
|
127 |
-
// @codingStandardsIgnoreEnd
|
128 |
-
|
129 |
-
if ( ! empty( $post_meta_infos ) ) {
|
130 |
-
|
131 |
-
$sql_query = "INSERT INTO $wpdb->postmeta (post_id, meta_key, meta_value) VALUES ";
|
132 |
-
|
133 |
-
$sql_query_sel = array();
|
134 |
-
|
135 |
-
foreach ( $post_meta_infos as $meta_info ) {
|
136 |
-
|
137 |
-
$meta_key = $meta_info->meta_key;
|
138 |
-
|
139 |
-
if ( '_wp_old_slug' === $meta_key ) {
|
140 |
-
continue;
|
141 |
-
}
|
142 |
-
|
143 |
-
$meta_value = addslashes( $meta_info->meta_value );
|
144 |
-
|
145 |
-
$sql_query_sel[] = "($new_flow_id, '$meta_key', '$meta_value')";
|
146 |
-
}
|
147 |
-
|
148 |
-
$sql_query .= implode( ',', $sql_query_sel );
|
149 |
-
|
150 |
-
// @codingStandardsIgnoreStart
|
151 |
-
$wpdb->query( $sql_query );
|
152 |
-
// @codingStandardsIgnoreEnd
|
153 |
-
}
|
154 |
-
|
155 |
-
/* Steps Cloning */
|
156 |
-
$flow_steps = get_post_meta( $post_id, 'wcf-steps', true );
|
157 |
-
$new_flow_steps = array();
|
158 |
-
|
159 |
-
/* Set Steps Empty */
|
160 |
-
update_post_meta( $new_flow_id, 'wcf-steps', $new_flow_steps );
|
161 |
-
|
162 |
-
if ( is_array( $flow_steps ) && ! empty( $flow_steps ) ) {
|
163 |
-
|
164 |
-
foreach ( $flow_steps as $index => $step_data ) {
|
165 |
-
|
166 |
-
$step_id = $step_data['id'];
|
167 |
-
$step_type = get_post_meta( $step_id, 'wcf-step-type', true );
|
168 |
-
|
169 |
-
$step_object = get_post( $step_id );
|
170 |
-
|
171 |
-
/**
|
172 |
-
* New step post data array
|
173 |
-
*/
|
174 |
-
$step_args = array(
|
175 |
-
'comment_status' => $step_object->comment_status,
|
176 |
-
'ping_status' => $step_object->ping_status,
|
177 |
-
'post_author' => $new_post_author,
|
178 |
-
'post_content' => $step_object->post_content,
|
179 |
-
'post_excerpt' => $step_object->post_excerpt,
|
180 |
-
'post_name' => $step_object->post_name,
|
181 |
-
'post_parent' => $step_object->post_parent,
|
182 |
-
'post_password' => $step_object->post_password,
|
183 |
-
'post_status' => $step_object->post_status,
|
184 |
-
'post_title' => $step_object->post_title,
|
185 |
-
'post_type' => $step_object->post_type,
|
186 |
-
'to_ping' => $step_object->to_ping,
|
187 |
-
'menu_order' => $step_object->menu_order,
|
188 |
-
);
|
189 |
-
|
190 |
-
/**
|
191 |
-
* Insert the post
|
192 |
-
*/
|
193 |
-
$new_step_id = wp_insert_post( $step_args );
|
194 |
-
|
195 |
-
/**
|
196 |
-
* Duplicate all step meta
|
197 |
-
*/
|
198 |
-
// @codingStandardsIgnoreStart
|
199 |
-
$post_meta_infos = $wpdb->get_results(
|
200 |
-
"SELECT meta_key, meta_value FROM $wpdb->postmeta WHERE post_id=$step_id"
|
201 |
-
);
|
202 |
-
// @codingStandardsIgnoreEnd
|
203 |
-
|
204 |
-
if ( ! empty( $post_meta_infos ) ) {
|
205 |
-
|
206 |
-
$sql_query = "INSERT INTO $wpdb->postmeta (post_id, meta_key, meta_value) VALUES ";
|
207 |
-
|
208 |
-
$sql_query_sel = array();
|
209 |
-
|
210 |
-
foreach ( $post_meta_infos as $meta_info ) {
|
211 |
-
|
212 |
-
$meta_key = $meta_info->meta_key;
|
213 |
-
|
214 |
-
if ( '_wp_old_slug' === $meta_key ) {
|
215 |
-
continue;
|
216 |
-
}
|
217 |
-
|
218 |
-
$meta_value = addslashes( $meta_info->meta_value );
|
219 |
-
|
220 |
-
$sql_query_sel[] = "($new_step_id, '$meta_key', '$meta_value')";
|
221 |
-
}
|
222 |
-
|
223 |
-
$sql_query .= implode( ',', $sql_query_sel );
|
224 |
-
|
225 |
-
// @codingStandardsIgnoreStart
|
226 |
-
$wpdb->query( $sql_query );
|
227 |
-
// @codingStandardsIgnoreEnd
|
228 |
-
}
|
229 |
-
|
230 |
-
// insert post meta.
|
231 |
-
update_post_meta( $new_step_id, 'wcf-flow-id', $new_flow_id );
|
232 |
-
update_post_meta( $new_step_id, 'wcf-step-type', $step_type );
|
233 |
-
|
234 |
-
wp_set_object_terms( $new_step_id, $step_type, CARTFLOWS_TAXONOMY_STEP_TYPE );
|
235 |
-
wp_set_object_terms( $new_step_id, 'flow-' . $new_flow_id, CARTFLOWS_TAXONOMY_STEP_FLOW );
|
236 |
-
|
237 |
-
/* Add New Flow Steps */
|
238 |
-
$new_flow_steps[] = array(
|
239 |
-
'id' => $new_step_id,
|
240 |
-
'title' => $step_object->post_title,
|
241 |
-
'type' => $step_type,
|
242 |
-
);
|
243 |
-
}
|
244 |
-
}
|
245 |
-
|
246 |
-
/* Update New Flow Step Post Meta */
|
247 |
-
update_post_meta( $new_flow_id, 'wcf-steps', $new_flow_steps );
|
248 |
-
|
249 |
-
/* Clear Page Builder Cache */
|
250 |
-
$this->clear_cache();
|
251 |
-
|
252 |
-
/**
|
253 |
-
* Redirect to the new flow edit screen
|
254 |
-
*/
|
255 |
-
wp_redirect( admin_url( 'post.php?action=edit&post=' . $new_flow_id ) );
|
256 |
-
exit;
|
257 |
-
} else {
|
258 |
-
wp_die( 'Post creation failed, could not find original post: ' . $post_id );
|
259 |
-
}
|
260 |
-
}
|
261 |
-
|
262 |
-
/**
|
263 |
-
* Clone step with its meta.
|
264 |
-
*/
|
265 |
-
function clone_step() {
|
266 |
-
|
267 |
-
global $wpdb;
|
268 |
-
|
269 |
-
if ( ! ( isset( $_GET['post'] ) || isset( $_POST['post'] ) || ( isset( $_REQUEST['action'] ) && 'cartflows_clone_step' === $_REQUEST['action'] ) ) ) {
|
270 |
-
wp_die( 'No post to duplicate has been supplied!' );
|
271 |
-
}
|
272 |
-
|
273 |
-
/*
|
274 |
-
* Nonce verification
|
275 |
-
*/
|
276 |
-
if ( ! isset( $_GET['step_clone_nonce'] ) || ! wp_verify_nonce( $_GET['step_clone_nonce'], 'step_clone' ) ) {
|
277 |
-
return;
|
278 |
-
}
|
279 |
-
|
280 |
-
/**
|
281 |
-
* Get the original post id
|
282 |
-
*/
|
283 |
-
$post_id = ( isset( $_GET['post'] ) ? absint( $_GET['post'] ) : absint( $_POST['post'] ) );
|
284 |
-
|
285 |
-
/**
|
286 |
-
* And all the original post data then
|
287 |
-
*/
|
288 |
-
$post = get_post( $post_id );
|
289 |
-
|
290 |
-
/**
|
291 |
-
* Assign current user to be the new post author
|
292 |
-
*/
|
293 |
-
$current_user = wp_get_current_user();
|
294 |
-
$new_post_author = $current_user->ID;
|
295 |
-
|
296 |
-
/**
|
297 |
-
* If post data exists, create the post duplicate
|
298 |
-
*/
|
299 |
-
if ( isset( $post ) && null !== $post ) {
|
300 |
-
|
301 |
-
/**
|
302 |
-
* New post data array
|
303 |
-
*/
|
304 |
-
$args = array(
|
305 |
-
'comment_status' => $post->comment_status,
|
306 |
-
'ping_status' => $post->ping_status,
|
307 |
-
'post_author' => $new_post_author,
|
308 |
-
'post_content' => $post->post_content,
|
309 |
-
'post_excerpt' => $post->post_excerpt,
|
310 |
-
'post_name' => $post->post_name,
|
311 |
-
'post_parent' => $post->post_parent,
|
312 |
-
'post_password' => $post->post_password,
|
313 |
-
'post_status' => $post->post_status,
|
314 |
-
'post_title' => $post->post_title . ' Clone',
|
315 |
-
'post_type' => $post->post_type,
|
316 |
-
'to_ping' => $post->to_ping,
|
317 |
-
'menu_order' => $post->menu_order,
|
318 |
-
);
|
319 |
-
|
320 |
-
/**
|
321 |
-
* Insert the post
|
322 |
-
*/
|
323 |
-
$new_step_id = wp_insert_post( $args );
|
324 |
-
|
325 |
-
/**
|
326 |
-
* Get all current post terms ad set them to the new post
|
327 |
-
*/
|
328 |
-
// returns array of taxonomy names for post type, ex array("category", "post_tag");.
|
329 |
-
$taxonomies = get_object_taxonomies( $post->post_type );
|
330 |
-
|
331 |
-
foreach ( $taxonomies as $taxonomy ) {
|
332 |
-
|
333 |
-
$post_terms = wp_get_object_terms( $post_id, $taxonomy, array( 'fields' => 'slugs' ) );
|
334 |
-
|
335 |
-
wp_set_object_terms( $new_step_id, $post_terms, $taxonomy, false );
|
336 |
-
}
|
337 |
-
|
338 |
-
/**
|
339 |
-
* Duplicate all post meta just in two SQL queries
|
340 |
-
*/
|
341 |
-
// @codingStandardsIgnoreStart
|
342 |
-
$post_meta_infos = $wpdb->get_results(
|
343 |
-
"SELECT meta_key, meta_value FROM $wpdb->postmeta WHERE post_id=$post_id"
|
344 |
-
);
|
345 |
-
// @codingStandardsIgnoreEnd
|
346 |
-
|
347 |
-
if ( ! empty( $post_meta_infos ) ) {
|
348 |
-
|
349 |
-
$sql_query = "INSERT INTO $wpdb->postmeta (post_id, meta_key, meta_value) VALUES ";
|
350 |
-
|
351 |
-
$sql_query_sel = array();
|
352 |
-
|
353 |
-
foreach ( $post_meta_infos as $meta_info ) {
|
354 |
-
|
355 |
-
$meta_key = $meta_info->meta_key;
|
356 |
-
|
357 |
-
if ( '_wp_old_slug' === $meta_key ) {
|
358 |
-
continue;
|
359 |
-
}
|
360 |
-
|
361 |
-
$meta_value = addslashes( $meta_info->meta_value );
|
362 |
-
|
363 |
-
$sql_query_sel[] = "($new_step_id, '$meta_key', '$meta_value')";
|
364 |
-
}
|
365 |
-
|
366 |
-
$sql_query .= implode( ',', $sql_query_sel );
|
367 |
-
|
368 |
-
// @codingStandardsIgnoreStart
|
369 |
-
$wpdb->query( $sql_query );
|
370 |
-
// @codingStandardsIgnoreEnd
|
371 |
-
}
|
372 |
-
|
373 |
-
$flow_id = get_post_meta( $post_id, 'wcf-flow-id', true );
|
374 |
-
$flow_steps = get_post_meta( $flow_id, 'wcf-steps', true );
|
375 |
-
$step_type = get_post_meta( $post_id, 'wcf-step-type', true );
|
376 |
-
|
377 |
-
if ( ! is_array( $flow_steps ) ) {
|
378 |
-
$flow_steps = array();
|
379 |
-
}
|
380 |
-
|
381 |
-
$flow_steps[] = array(
|
382 |
-
'id' => $new_step_id,
|
383 |
-
'title' => $post->post_title,
|
384 |
-
'type' => $step_type,
|
385 |
-
);
|
386 |
-
|
387 |
-
update_post_meta( $flow_id, 'wcf-steps', $flow_steps );
|
388 |
-
|
389 |
-
/* Clear Page Builder Cache */
|
390 |
-
$this->clear_cache();
|
391 |
-
|
392 |
-
/**
|
393 |
-
* Redirect to the new flow edit screen
|
394 |
-
*/
|
395 |
-
$redirect_url = add_query_arg( 'highlight-step-id', $new_step_id, get_edit_post_link( $flow_id, 'default' ) );
|
396 |
-
|
397 |
-
wp_redirect( $redirect_url );
|
398 |
-
exit;
|
399 |
-
} else {
|
400 |
-
wp_die( 'Post creation failed, could not find original post: ' . $post_id );
|
401 |
-
}
|
402 |
-
}
|
403 |
-
|
404 |
-
/**
|
405 |
-
* Add the clone link to action list for flows row actions
|
406 |
-
*
|
407 |
-
* @param array $actions Actions array.
|
408 |
-
* @param object $post Post object.
|
409 |
-
*
|
410 |
-
* @return array
|
411 |
-
*/
|
412 |
-
function clone_link( $actions, $post ) {
|
413 |
-
|
414 |
-
if ( current_user_can( 'edit_posts' ) && isset( $post ) && CARTFLOWS_FLOW_POST_TYPE === $post->post_type ) {
|
415 |
-
|
416 |
-
if ( isset( $actions['duplicate'] ) ) { // Duplicate page plugin remove.
|
417 |
-
unset( $actions['duplicate'] );
|
418 |
-
}
|
419 |
-
if ( isset( $actions['edit_as_new_draft'] ) ) { // Duplicate post plugin remove.
|
420 |
-
unset( $actions['edit_as_new_draft'] );
|
421 |
-
}
|
422 |
-
|
423 |
-
$actions['clone'] = '<a href="' . wp_nonce_url( 'admin.php?action=cartflows_clone_flow&post=' . $post->ID, basename( __FILE__ ), 'flow_clone_nonce' ) . '" title="' . __( 'Clone this flow', 'cartflows' ) . '" rel="permalink">' . __( 'Clone', 'cartflows' ) . '</a>';
|
424 |
-
}
|
425 |
-
|
426 |
-
return $actions;
|
427 |
-
}
|
428 |
-
|
429 |
-
/**
|
430 |
-
* Clear Page Builder Cache
|
431 |
-
*/
|
432 |
-
function clear_cache() {
|
433 |
-
|
434 |
-
// Clear 'Elementor' file cache.
|
435 |
-
if ( class_exists( '\Elementor\Plugin' ) ) {
|
436 |
-
Elementor\Plugin::$instance->files_manager->clear_cache();
|
437 |
-
}
|
438 |
-
}
|
439 |
-
|
440 |
-
}
|
441 |
-
|
442 |
-
/**
|
443 |
-
* Kicking this off by calling 'get_instance()' method
|
444 |
-
*/
|
445 |
-
Cartflows_Cloning::get_instance();
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Cloning.
|
4 |
+
*
|
5 |
+
* @package cartflows-pro
|
6 |
+
*/
|
7 |
+
|
8 |
+
/**
|
9 |
+
* Initialization
|
10 |
+
*
|
11 |
+
* @since 1.0.0
|
12 |
+
*/
|
13 |
+
class Cartflows_Cloning {
|
14 |
+
|
15 |
+
|
16 |
+
/**
|
17 |
+
* Member Variable
|
18 |
+
*
|
19 |
+
* @var instance
|
20 |
+
*/
|
21 |
+
private static $instance;
|
22 |
+
|
23 |
+
/**
|
24 |
+
* Initiator
|
25 |
+
*/
|
26 |
+
public static function get_instance() {
|
27 |
+
if ( ! isset( self::$instance ) ) {
|
28 |
+
self::$instance = new self;
|
29 |
+
}
|
30 |
+
return self::$instance;
|
31 |
+
}
|
32 |
+
|
33 |
+
/**
|
34 |
+
* Constructor
|
35 |
+
*/
|
36 |
+
public function __construct() {
|
37 |
+
|
38 |
+
add_filter( 'post_row_actions', array( $this, 'clone_link' ), 99, 2 );
|
39 |
+
add_action( 'admin_action_cartflows_clone_flow', array( $this, 'clone_flow' ) );
|
40 |
+
add_action( 'admin_action_cartflows_clone_step', array( $this, 'clone_step' ) );
|
41 |
+
}
|
42 |
+
|
43 |
+
/**
|
44 |
+
* Clone flow with steps and its meta.
|
45 |
+
*/
|
46 |
+
function clone_flow() {
|
47 |
+
|
48 |
+
global $wpdb;
|
49 |
+
|
50 |
+
if ( ! ( isset( $_GET['post'] ) || isset( $_POST['post'] ) || ( isset( $_REQUEST['action'] ) && 'cartflows_clone_flow' == $_REQUEST['action'] ) ) ) {
|
51 |
+
wp_die( 'No post to duplicate has been supplied!' );
|
52 |
+
}
|
53 |
+
|
54 |
+
/*
|
55 |
+
* Nonce verification
|
56 |
+
*/
|
57 |
+
if ( ! isset( $_GET['flow_clone_nonce'] ) || ! wp_verify_nonce( $_GET['flow_clone_nonce'], basename( __FILE__ ) ) ) {
|
58 |
+
return;
|
59 |
+
}
|
60 |
+
|
61 |
+
/**
|
62 |
+
* Get the original post id
|
63 |
+
*/
|
64 |
+
$post_id = ( isset( $_GET['post'] ) ? absint( $_GET['post'] ) : absint( $_POST['post'] ) );
|
65 |
+
|
66 |
+
/**
|
67 |
+
* And all the original post data then
|
68 |
+
*/
|
69 |
+
$post = get_post( $post_id );
|
70 |
+
|
71 |
+
/**
|
72 |
+
* Assign current user to be the new post author
|
73 |
+
*/
|
74 |
+
$current_user = wp_get_current_user();
|
75 |
+
$new_post_author = $current_user->ID;
|
76 |
+
|
77 |
+
/**
|
78 |
+
* If post data exists, create the post duplicate
|
79 |
+
*/
|
80 |
+
if ( isset( $post ) && null !== $post ) {
|
81 |
+
|
82 |
+
/**
|
83 |
+
* New post data array
|
84 |
+
*/
|
85 |
+
|
86 |
+
$args = array(
|
87 |
+
'comment_status' => $post->comment_status,
|
88 |
+
'ping_status' => $post->ping_status,
|
89 |
+
'post_author' => $new_post_author,
|
90 |
+
'post_content' => $post->post_content,
|
91 |
+
'post_excerpt' => $post->post_excerpt,
|
92 |
+
'post_name' => $post->post_name,
|
93 |
+
'post_parent' => $post->post_parent,
|
94 |
+
'post_password' => $post->post_password,
|
95 |
+
'post_status' => $post->post_status,
|
96 |
+
'post_title' => $post->post_title . ' Clone',
|
97 |
+
'post_type' => $post->post_type,
|
98 |
+
'to_ping' => $post->to_ping,
|
99 |
+
'menu_order' => $post->menu_order,
|
100 |
+
);
|
101 |
+
|
102 |
+
/**
|
103 |
+
* Insert the post
|
104 |
+
*/
|
105 |
+
$new_flow_id = wp_insert_post( $args );
|
106 |
+
|
107 |
+
/**
|
108 |
+
* Get all current post terms ad set them to the new post
|
109 |
+
*/
|
110 |
+
// returns array of taxonomy names for post type, ex array("category", "post_tag");.
|
111 |
+
$taxonomies = get_object_taxonomies( $post->post_type );
|
112 |
+
|
113 |
+
foreach ( $taxonomies as $taxonomy ) {
|
114 |
+
|
115 |
+
$post_terms = wp_get_object_terms( $post_id, $taxonomy, array( 'fields' => 'slugs' ) );
|
116 |
+
|
117 |
+
wp_set_object_terms( $new_flow_id, $post_terms, $taxonomy, false );
|
118 |
+
}
|
119 |
+
|
120 |
+
/**
|
121 |
+
* Duplicate all post meta just in two SQL queries
|
122 |
+
*/
|
123 |
+
// @codingStandardsIgnoreStart
|
124 |
+
$post_meta_infos = $wpdb->get_results(
|
125 |
+
"SELECT meta_key, meta_value FROM $wpdb->postmeta WHERE post_id=$post_id"
|
126 |
+
);
|
127 |
+
// @codingStandardsIgnoreEnd
|
128 |
+
|
129 |
+
if ( ! empty( $post_meta_infos ) ) {
|
130 |
+
|
131 |
+
$sql_query = "INSERT INTO $wpdb->postmeta (post_id, meta_key, meta_value) VALUES ";
|
132 |
+
|
133 |
+
$sql_query_sel = array();
|
134 |
+
|
135 |
+
foreach ( $post_meta_infos as $meta_info ) {
|
136 |
+
|
137 |
+
$meta_key = $meta_info->meta_key;
|
138 |
+
|
139 |
+
if ( '_wp_old_slug' === $meta_key ) {
|
140 |
+
continue;
|
141 |
+
}
|
142 |
+
|
143 |
+
$meta_value = addslashes( $meta_info->meta_value );
|
144 |
+
|
145 |
+
$sql_query_sel[] = "($new_flow_id, '$meta_key', '$meta_value')";
|
146 |
+
}
|
147 |
+
|
148 |
+
$sql_query .= implode( ',', $sql_query_sel );
|
149 |
+
|
150 |
+
// @codingStandardsIgnoreStart
|
151 |
+
$wpdb->query( $sql_query );
|
152 |
+
// @codingStandardsIgnoreEnd
|
153 |
+
}
|
154 |
+
|
155 |
+
/* Steps Cloning */
|
156 |
+
$flow_steps = get_post_meta( $post_id, 'wcf-steps', true );
|
157 |
+
$new_flow_steps = array();
|
158 |
+
|
159 |
+
/* Set Steps Empty */
|
160 |
+
update_post_meta( $new_flow_id, 'wcf-steps', $new_flow_steps );
|
161 |
+
|
162 |
+
if ( is_array( $flow_steps ) && ! empty( $flow_steps ) ) {
|
163 |
+
|
164 |
+
foreach ( $flow_steps as $index => $step_data ) {
|
165 |
+
|
166 |
+
$step_id = $step_data['id'];
|
167 |
+
$step_type = get_post_meta( $step_id, 'wcf-step-type', true );
|
168 |
+
|
169 |
+
$step_object = get_post( $step_id );
|
170 |
+
|
171 |
+
/**
|
172 |
+
* New step post data array
|
173 |
+
*/
|
174 |
+
$step_args = array(
|
175 |
+
'comment_status' => $step_object->comment_status,
|
176 |
+
'ping_status' => $step_object->ping_status,
|
177 |
+
'post_author' => $new_post_author,
|
178 |
+
'post_content' => $step_object->post_content,
|
179 |
+
'post_excerpt' => $step_object->post_excerpt,
|
180 |
+
'post_name' => $step_object->post_name,
|
181 |
+
'post_parent' => $step_object->post_parent,
|
182 |
+
'post_password' => $step_object->post_password,
|
183 |
+
'post_status' => $step_object->post_status,
|
184 |
+
'post_title' => $step_object->post_title,
|
185 |
+
'post_type' => $step_object->post_type,
|
186 |
+
'to_ping' => $step_object->to_ping,
|
187 |
+
'menu_order' => $step_object->menu_order,
|
188 |
+
);
|
189 |
+
|
190 |
+
/**
|
191 |
+
* Insert the post
|
192 |
+
*/
|
193 |
+
$new_step_id = wp_insert_post( $step_args );
|
194 |
+
|
195 |
+
/**
|
196 |
+
* Duplicate all step meta
|
197 |
+
*/
|
198 |
+
// @codingStandardsIgnoreStart
|
199 |
+
$post_meta_infos = $wpdb->get_results(
|
200 |
+
"SELECT meta_key, meta_value FROM $wpdb->postmeta WHERE post_id=$step_id"
|
201 |
+
);
|
202 |
+
// @codingStandardsIgnoreEnd
|
203 |
+
|
204 |
+
if ( ! empty( $post_meta_infos ) ) {
|
205 |
+
|
206 |
+
$sql_query = "INSERT INTO $wpdb->postmeta (post_id, meta_key, meta_value) VALUES ";
|
207 |
+
|
208 |
+
$sql_query_sel = array();
|
209 |
+
|
210 |
+
foreach ( $post_meta_infos as $meta_info ) {
|
211 |
+
|
212 |
+
$meta_key = $meta_info->meta_key;
|
213 |
+
|
214 |
+
if ( '_wp_old_slug' === $meta_key ) {
|
215 |
+
continue;
|
216 |
+
}
|
217 |
+
|
218 |
+
$meta_value = addslashes( $meta_info->meta_value );
|
219 |
+
|
220 |
+
$sql_query_sel[] = "($new_step_id, '$meta_key', '$meta_value')";
|
221 |
+
}
|
222 |
+
|
223 |
+
$sql_query .= implode( ',', $sql_query_sel );
|
224 |
+
|
225 |
+
// @codingStandardsIgnoreStart
|
226 |
+
$wpdb->query( $sql_query );
|
227 |
+
// @codingStandardsIgnoreEnd
|
228 |
+
}
|
229 |
+
|
230 |
+
// insert post meta.
|
231 |
+
update_post_meta( $new_step_id, 'wcf-flow-id', $new_flow_id );
|
232 |
+
update_post_meta( $new_step_id, 'wcf-step-type', $step_type );
|
233 |
+
|
234 |
+
wp_set_object_terms( $new_step_id, $step_type, CARTFLOWS_TAXONOMY_STEP_TYPE );
|
235 |
+
wp_set_object_terms( $new_step_id, 'flow-' . $new_flow_id, CARTFLOWS_TAXONOMY_STEP_FLOW );
|
236 |
+
|
237 |
+
/* Add New Flow Steps */
|
238 |
+
$new_flow_steps[] = array(
|
239 |
+
'id' => $new_step_id,
|
240 |
+
'title' => $step_object->post_title,
|
241 |
+
'type' => $step_type,
|
242 |
+
);
|
243 |
+
}
|
244 |
+
}
|
245 |
+
|
246 |
+
/* Update New Flow Step Post Meta */
|
247 |
+
update_post_meta( $new_flow_id, 'wcf-steps', $new_flow_steps );
|
248 |
+
|
249 |
+
/* Clear Page Builder Cache */
|
250 |
+
$this->clear_cache();
|
251 |
+
|
252 |
+
/**
|
253 |
+
* Redirect to the new flow edit screen
|
254 |
+
*/
|
255 |
+
wp_redirect( admin_url( 'post.php?action=edit&post=' . $new_flow_id ) );
|
256 |
+
exit;
|
257 |
+
} else {
|
258 |
+
wp_die( 'Post creation failed, could not find original post: ' . $post_id );
|
259 |
+
}
|
260 |
+
}
|
261 |
+
|
262 |
+
/**
|
263 |
+
* Clone step with its meta.
|
264 |
+
*/
|
265 |
+
function clone_step() {
|
266 |
+
|
267 |
+
global $wpdb;
|
268 |
+
|
269 |
+
if ( ! ( isset( $_GET['post'] ) || isset( $_POST['post'] ) || ( isset( $_REQUEST['action'] ) && 'cartflows_clone_step' === $_REQUEST['action'] ) ) ) {
|
270 |
+
wp_die( 'No post to duplicate has been supplied!' );
|
271 |
+
}
|
272 |
+
|
273 |
+
/*
|
274 |
+
* Nonce verification
|
275 |
+
*/
|
276 |
+
if ( ! isset( $_GET['step_clone_nonce'] ) || ! wp_verify_nonce( $_GET['step_clone_nonce'], 'step_clone' ) ) {
|
277 |
+
return;
|
278 |
+
}
|
279 |
+
|
280 |
+
/**
|
281 |
+
* Get the original post id
|
282 |
+
*/
|
283 |
+
$post_id = ( isset( $_GET['post'] ) ? absint( $_GET['post'] ) : absint( $_POST['post'] ) );
|
284 |
+
|
285 |
+
/**
|
286 |
+
* And all the original post data then
|
287 |
+
*/
|
288 |
+
$post = get_post( $post_id );
|
289 |
+
|
290 |
+
/**
|
291 |
+
* Assign current user to be the new post author
|
292 |
+
*/
|
293 |
+
$current_user = wp_get_current_user();
|
294 |
+
$new_post_author = $current_user->ID;
|
295 |
+
|
296 |
+
/**
|
297 |
+
* If post data exists, create the post duplicate
|
298 |
+
*/
|
299 |
+
if ( isset( $post ) && null !== $post ) {
|
300 |
+
|
301 |
+
/**
|
302 |
+
* New post data array
|
303 |
+
*/
|
304 |
+
$args = array(
|
305 |
+
'comment_status' => $post->comment_status,
|
306 |
+
'ping_status' => $post->ping_status,
|
307 |
+
'post_author' => $new_post_author,
|
308 |
+
'post_content' => $post->post_content,
|
309 |
+
'post_excerpt' => $post->post_excerpt,
|
310 |
+
'post_name' => $post->post_name,
|
311 |
+
'post_parent' => $post->post_parent,
|
312 |
+
'post_password' => $post->post_password,
|
313 |
+
'post_status' => $post->post_status,
|
314 |
+
'post_title' => $post->post_title . ' Clone',
|
315 |
+
'post_type' => $post->post_type,
|
316 |
+
'to_ping' => $post->to_ping,
|
317 |
+
'menu_order' => $post->menu_order,
|
318 |
+
);
|
319 |
+
|
320 |
+
/**
|
321 |
+
* Insert the post
|
322 |
+
*/
|
323 |
+
$new_step_id = wp_insert_post( $args );
|
324 |
+
|
325 |
+
/**
|
326 |
+
* Get all current post terms ad set them to the new post
|
327 |
+
*/
|
328 |
+
// returns array of taxonomy names for post type, ex array("category", "post_tag");.
|
329 |
+
$taxonomies = get_object_taxonomies( $post->post_type );
|
330 |
+
|
331 |
+
foreach ( $taxonomies as $taxonomy ) {
|
332 |
+
|
333 |
+
$post_terms = wp_get_object_terms( $post_id, $taxonomy, array( 'fields' => 'slugs' ) );
|
334 |
+
|
335 |
+
wp_set_object_terms( $new_step_id, $post_terms, $taxonomy, false );
|
336 |
+
}
|
337 |
+
|
338 |
+
/**
|
339 |
+
* Duplicate all post meta just in two SQL queries
|
340 |
+
*/
|
341 |
+
// @codingStandardsIgnoreStart
|
342 |
+
$post_meta_infos = $wpdb->get_results(
|
343 |
+
"SELECT meta_key, meta_value FROM $wpdb->postmeta WHERE post_id=$post_id"
|
344 |
+
);
|
345 |
+
// @codingStandardsIgnoreEnd
|
346 |
+
|
347 |
+
if ( ! empty( $post_meta_infos ) ) {
|
348 |
+
|
349 |
+
$sql_query = "INSERT INTO $wpdb->postmeta (post_id, meta_key, meta_value) VALUES ";
|
350 |
+
|
351 |
+
$sql_query_sel = array();
|
352 |
+
|
353 |
+
foreach ( $post_meta_infos as $meta_info ) {
|
354 |
+
|
355 |
+
$meta_key = $meta_info->meta_key;
|
356 |
+
|
357 |
+
if ( '_wp_old_slug' === $meta_key ) {
|
358 |
+
continue;
|
359 |
+
}
|
360 |
+
|
361 |
+
$meta_value = addslashes( $meta_info->meta_value );
|
362 |
+
|
363 |
+
$sql_query_sel[] = "($new_step_id, '$meta_key', '$meta_value')";
|
364 |
+
}
|
365 |
+
|
366 |
+
$sql_query .= implode( ',', $sql_query_sel );
|
367 |
+
|
368 |
+
// @codingStandardsIgnoreStart
|
369 |
+
$wpdb->query( $sql_query );
|
370 |
+
// @codingStandardsIgnoreEnd
|
371 |
+
}
|
372 |
+
|
373 |
+
$flow_id = get_post_meta( $post_id, 'wcf-flow-id', true );
|
374 |
+
$flow_steps = get_post_meta( $flow_id, 'wcf-steps', true );
|
375 |
+
$step_type = get_post_meta( $post_id, 'wcf-step-type', true );
|
376 |
+
|
377 |
+
if ( ! is_array( $flow_steps ) ) {
|
378 |
+
$flow_steps = array();
|
379 |
+
}
|
380 |
+
|
381 |
+
$flow_steps[] = array(
|
382 |
+
'id' => $new_step_id,
|
383 |
+
'title' => $post->post_title,
|
384 |
+
'type' => $step_type,
|
385 |
+
);
|
386 |
+
|
387 |
+
update_post_meta( $flow_id, 'wcf-steps', $flow_steps );
|
388 |
+
|
389 |
+
/* Clear Page Builder Cache */
|
390 |
+
$this->clear_cache();
|
391 |
+
|
392 |
+
/**
|
393 |
+
* Redirect to the new flow edit screen
|
394 |
+
*/
|
395 |
+
$redirect_url = add_query_arg( 'highlight-step-id', $new_step_id, get_edit_post_link( $flow_id, 'default' ) );
|
396 |
+
|
397 |
+
wp_redirect( $redirect_url );
|
398 |
+
exit;
|
399 |
+
} else {
|
400 |
+
wp_die( 'Post creation failed, could not find original post: ' . $post_id );
|
401 |
+
}
|
402 |
+
}
|
403 |
+
|
404 |
+
/**
|
405 |
+
* Add the clone link to action list for flows row actions
|
406 |
+
*
|
407 |
+
* @param array $actions Actions array.
|
408 |
+
* @param object $post Post object.
|
409 |
+
*
|
410 |
+
* @return array
|
411 |
+
*/
|
412 |
+
function clone_link( $actions, $post ) {
|
413 |
+
|
414 |
+
if ( current_user_can( 'edit_posts' ) && isset( $post ) && CARTFLOWS_FLOW_POST_TYPE === $post->post_type ) {
|
415 |
+
|
416 |
+
if ( isset( $actions['duplicate'] ) ) { // Duplicate page plugin remove.
|
417 |
+
unset( $actions['duplicate'] );
|
418 |
+
}
|
419 |
+
if ( isset( $actions['edit_as_new_draft'] ) ) { // Duplicate post plugin remove.
|
420 |
+
unset( $actions['edit_as_new_draft'] );
|
421 |
+
}
|
422 |
+
|
423 |
+
$actions['clone'] = '<a href="' . wp_nonce_url( 'admin.php?action=cartflows_clone_flow&post=' . $post->ID, basename( __FILE__ ), 'flow_clone_nonce' ) . '" title="' . __( 'Clone this flow', 'cartflows' ) . '" rel="permalink">' . __( 'Clone', 'cartflows' ) . '</a>';
|
424 |
+
}
|
425 |
+
|
426 |
+
return $actions;
|
427 |
+
}
|
428 |
+
|
429 |
+
/**
|
430 |
+
* Clear Page Builder Cache
|
431 |
+
*/
|
432 |
+
function clear_cache() {
|
433 |
+
|
434 |
+
// Clear 'Elementor' file cache.
|
435 |
+
if ( class_exists( '\Elementor\Plugin' ) ) {
|
436 |
+
Elementor\Plugin::$instance->files_manager->clear_cache();
|
437 |
+
}
|
438 |
+
}
|
439 |
+
|
440 |
+
}
|
441 |
+
|
442 |
+
/**
|
443 |
+
* Kicking this off by calling 'get_instance()' method
|
444 |
+
*/
|
445 |
+
Cartflows_Cloning::get_instance();
|
classes/class-cartflows-frontend.php
CHANGED
@@ -366,7 +366,7 @@ class Cartflows_Frontend {
|
|
366 |
wcf()->utils->get_js_url( 'frontend' ),
|
367 |
array( 'jquery' ),
|
368 |
CARTFLOWS_VER,
|
369 |
-
|
370 |
);
|
371 |
}
|
372 |
|
366 |
wcf()->utils->get_js_url( 'frontend' ),
|
367 |
array( 'jquery' ),
|
368 |
CARTFLOWS_VER,
|
369 |
+
false
|
370 |
);
|
371 |
}
|
372 |
|
classes/class-cartflows-loader.php
CHANGED
@@ -118,7 +118,7 @@ if ( ! class_exists( 'Cartflows_Loader' ) ) {
|
|
118 |
define( 'CARTFLOWS_BASE', plugin_basename( CARTFLOWS_FILE ) );
|
119 |
define( 'CARTFLOWS_DIR', plugin_dir_path( CARTFLOWS_FILE ) );
|
120 |
define( 'CARTFLOWS_URL', plugins_url( '/', CARTFLOWS_FILE ) );
|
121 |
-
define( 'CARTFLOWS_VER', '1.1.
|
122 |
define( 'CARTFLOWS_SLUG', 'cartflows' );
|
123 |
define( 'CARTFLOWS_SETTINGS', 'cartflows_settings' );
|
124 |
|
118 |
define( 'CARTFLOWS_BASE', plugin_basename( CARTFLOWS_FILE ) );
|
119 |
define( 'CARTFLOWS_DIR', plugin_dir_path( CARTFLOWS_FILE ) );
|
120 |
define( 'CARTFLOWS_URL', plugins_url( '/', CARTFLOWS_FILE ) );
|
121 |
+
define( 'CARTFLOWS_VER', '1.1.18' );
|
122 |
define( 'CARTFLOWS_SLUG', 'cartflows' );
|
123 |
define( 'CARTFLOWS_SETTINGS', 'cartflows_settings' );
|
124 |
|
languages/cartflows.pot
CHANGED
@@ -1,1443 +1,1443 @@
|
|
1 |
-
# Copyright (C) 2019 CartFlows Inc
|
2 |
-
# This file is distributed under the same license as the CartFlows package.
|
3 |
-
msgid ""
|
4 |
-
msgstr ""
|
5 |
-
"Project-Id-Version: CartFlows 1.1.
|
6 |
-
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/cartflows\n"
|
7 |
-
"POT-Creation-Date: 2019-
|
8 |
-
"MIME-Version: 1.0\n"
|
9 |
-
"Content-Type: text/plain; charset=utf-8\n"
|
10 |
-
"Content-Transfer-Encoding: 8bit\n"
|
11 |
-
"PO-Revision-Date: 2019-MO-DA HO:MI+ZONE\n"
|
12 |
-
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
13 |
-
"Language-Team: LANGUAGE <LL@li.org>\n"
|
14 |
-
"Language: en\n"
|
15 |
-
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
16 |
-
"X-Poedit-Country: United States\n"
|
17 |
-
"X-Poedit-SourceCharset: UTF-8\n"
|
18 |
-
"X-Poedit-KeywordsList: "
|
19 |
-
"__;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_"
|
20 |
-
"attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c;\n"
|
21 |
-
"X-Poedit-Basepath: ../\n"
|
22 |
-
"X-Poedit-SearchPath-0: .\n"
|
23 |
-
"X-Poedit-Bookmarks: \n"
|
24 |
-
"X-Textdomain-Support: yes\n"
|
25 |
-
"X-Generator: grunt-wp-i18n 1.0.3\n"
|
26 |
-
|
27 |
-
#: classes/batch-process/class-cartflows-importer-elementor.php:44
|
28 |
-
msgid "Invalid content."
|
29 |
-
msgstr ""
|
30 |
-
|
31 |
-
#: classes/batch-process/class-cartflows-importer-elementor.php:52
|
32 |
-
msgid "Invalid content. Expected an array."
|
33 |
-
msgstr ""
|
34 |
-
|
35 |
-
#: classes/batch-process/helpers/class-wp-background-process.php:435
|
36 |
-
msgid "Every %d Minutes"
|
37 |
-
msgstr ""
|
38 |
-
|
39 |
-
#: classes/class-cartflows-admin-fields.php:162
|
40 |
-
msgid "Select"
|
41 |
-
msgstr ""
|
42 |
-
|
43 |
-
#: classes/class-cartflows-admin-fields.php:165
|
44 |
-
msgid "No Checkout Steps"
|
45 |
-
msgstr ""
|
46 |
-
|
47 |
-
#: classes/class-cartflows-admin-fields.php:191
|
48 |
-
#. translators: %s: link
|
49 |
-
msgid ""
|
50 |
-
"Be sure not to add any product in above selected Global Checkout step. "
|
51 |
-
"Please read information about how to set up Global Checkout %1$shere%2$s."
|
52 |
-
msgstr ""
|
53 |
-
|
54 |
-
#: classes/class-cartflows-admin.php:
|
55 |
-
#: includes/admin/cartflows-general-bck.php:34
|
56 |
-
msgid "Settings"
|
57 |
-
msgstr ""
|
58 |
-
|
59 |
-
#: classes/class-cartflows-admin.php:
|
60 |
-
msgid "Flows Library"
|
61 |
-
msgstr ""
|
62 |
-
|
63 |
-
#: classes/class-cartflows-admin.php:
|
64 |
-
#: modules/flow/view/meta-flow-steps.php:145
|
65 |
-
msgid "Ready Templates"
|
66 |
-
msgstr ""
|
67 |
-
|
68 |
-
#: classes/class-cartflows-admin.php:
|
69 |
-
#: modules/flow/view/meta-flow-steps.php:148
|
70 |
-
msgid "Create Your Own"
|
71 |
-
msgstr ""
|
72 |
-
|
73 |
-
#: classes/class-cartflows-admin.php:
|
74 |
-
#: modules/flow/view/meta-flow-steps.php:160
|
75 |
-
msgid "Search Sites"
|
76 |
-
msgstr ""
|
77 |
-
|
78 |
-
#: classes/class-cartflows-admin.php:
|
79 |
-
#: modules/flow/view/meta-flow-steps.php:161
|
80 |
-
msgid "Search Flow..."
|
81 |
-
msgstr ""
|
82 |
-
|
83 |
-
#: classes/class-cartflows-admin.php:
|
84 |
-
msgid "Design Your Flow"
|
85 |
-
msgstr ""
|
86 |
-
|
87 |
-
#: classes/class-cartflows-admin.php:
|
88 |
-
#: modules/flow/view/meta-flow-steps.php:192
|
89 |
-
msgid "Learn How"
|
90 |
-
msgstr ""
|
91 |
-
|
92 |
-
#: classes/class-cartflows-api.php:368
|
93 |
-
msgid "Request successfully processed!"
|
94 |
-
msgstr ""
|
95 |
-
|
96 |
-
#: classes/class-cartflows-cloning.php:423
|
97 |
-
msgid "Clone this flow"
|
98 |
-
msgstr ""
|
99 |
-
|
100 |
-
#: classes/class-cartflows-cloning.php:423
|
101 |
-
msgid "Clone"
|
102 |
-
msgstr ""
|
103 |
-
|
104 |
-
#: classes/class-cartflows-flow-frontend.php:52
|
105 |
-
msgid ""
|
106 |
-
"Test mode is active — which displays random products for previewing. It can "
|
107 |
-
"be deactivated from the flow settings in the admin dashboard."
|
108 |
-
msgstr ""
|
109 |
-
|
110 |
-
#: classes/class-cartflows-importer.php:80
|
111 |
-
msgid "Export this flow"
|
112 |
-
msgstr ""
|
113 |
-
|
114 |
-
#: classes/class-cartflows-importer.php:80 includes/exporter.php:18
|
115 |
-
msgid "Export"
|
116 |
-
msgstr ""
|
117 |
-
|
118 |
-
#: classes/class-cartflows-importer.php:91
|
119 |
-
msgid "Flow Export"
|
120 |
-
msgstr ""
|
121 |
-
|
122 |
-
#: classes/class-cartflows-importer.php:92
|
123 |
-
msgid "Flow Import"
|
124 |
-
msgstr ""
|
125 |
-
|
126 |
-
#: classes/class-cartflows-importer.php:103
|
127 |
-
msgid "No post to export has been supplied!"
|
128 |
-
msgstr ""
|
129 |
-
|
130 |
-
#: classes/class-cartflows-importer.php:294
|
131 |
-
msgid "Please upload a valid .json file"
|
132 |
-
msgstr ""
|
133 |
-
|
134 |
-
#: classes/class-cartflows-importer.php:300
|
135 |
-
msgid "Please upload a file to import"
|
136 |
-
msgstr ""
|
137 |
-
|
138 |
-
#: classes/class-cartflows-importer.php:438
|
139 |
-
msgid "Successfully imported flows."
|
140 |
-
msgstr ""
|
141 |
-
|
142 |
-
#: classes/class-cartflows-importer.php:470
|
143 |
-
msgid "Loading Steps"
|
144 |
-
msgstr ""
|
145 |
-
|
146 |
-
#: classes/class-cartflows-importer.php:472
|
147 |
-
msgid "Getting steps from the cloud. Please wait for the moment."
|
148 |
-
msgstr ""
|
149 |
-
|
150 |
-
#: classes/class-cartflows-importer.php:483
|
151 |
-
msgid "Searching Template.."
|
152 |
-
msgstr ""
|
153 |
-
|
154 |
-
#: classes/class-cartflows-importer.php:485
|
155 |
-
msgid "Getting templates from the cloud. Please wait for the moment."
|
156 |
-
msgstr ""
|
157 |
-
|
158 |
-
#: classes/class-cartflows-importer.php:494
|
159 |
-
msgid "Importing.."
|
160 |
-
msgstr ""
|
161 |
-
|
162 |
-
#: classes/class-cartflows-importer.php:503
|
163 |
-
#: classes/class-cartflows-importer.php:543
|
164 |
-
msgid "Imported"
|
165 |
-
msgstr ""
|
166 |
-
|
167 |
-
#: classes/class-cartflows-importer.php:504
|
168 |
-
#: classes/class-cartflows-importer.php:544
|
169 |
-
msgid "Thanks for patience"
|
170 |
-
msgstr ""
|
171 |
-
|
172 |
-
#: classes/class-cartflows-importer.php:513
|
173 |
-
#: classes/class-cartflows-importer.php:525
|
174 |
-
msgid "Coming Soon!"
|
175 |
-
msgstr ""
|
176 |
-
|
177 |
-
#: classes/class-cartflows-importer.php:544
|
178 |
-
msgid "Redirecting to the Elementor edit window."
|
179 |
-
msgstr ""
|
180 |
-
|
181 |
-
#: classes/class-cartflows-importer.php:591
|
182 |
-
#: classes/class-cartflows-importer.php:675
|
183 |
-
msgid "Pro"
|
184 |
-
msgstr ""
|
185 |
-
|
186 |
-
#: classes/class-cartflows-importer.php:614
|
187 |
-
#: classes/class-cartflows-importer.php:701
|
188 |
-
msgid "Activate License"
|
189 |
-
msgstr ""
|
190 |
-
|
191 |
-
#: classes/class-cartflows-importer.php:616
|
192 |
-
#: classes/class-cartflows-importer.php:703
|
193 |
-
msgid "Get Pro"
|
194 |
-
msgstr ""
|
195 |
-
|
196 |
-
#: classes/class-cartflows-importer.php:641
|
197 |
-
msgid "Create"
|
198 |
-
msgstr ""
|
199 |
-
|
200 |
-
#: classes/class-cartflows-importer.php:720
|
201 |
-
msgid "Under Maintenance.."
|
202 |
-
msgstr ""
|
203 |
-
|
204 |
-
#: classes/class-cartflows-importer.php:721
|
205 |
-
msgid ""
|
206 |
-
"If you are seeing this message, most likely our servers are under routine "
|
207 |
-
"maintenance and we will be back shortly."
|
208 |
-
msgstr ""
|
209 |
-
|
210 |
-
#: classes/class-cartflows-importer.php:722
|
211 |
-
msgid ""
|
212 |
-
"In rare case, it is possible your website is having trouble connecting with "
|
213 |
-
"ours. If you need help, please feel free to get in touch with us from our "
|
214 |
-
"website.."
|
215 |
-
msgstr ""
|
216 |
-
|
217 |
-
#: classes/class-cartflows-importer.php:752
|
218 |
-
#. translators: %s: Plugin string
|
219 |
-
msgid ""
|
220 |
-
"%1$s to see CartFlows templates. If you prefer another page builder tool, "
|
221 |
-
"you can <a href=\"%2$s\" target=\"blank\">select it here</a>."
|
222 |
-
msgstr ""
|
223 |
-
|
224 |
-
#: classes/class-cartflows-importer.php:767
|
225 |
-
msgid "All"
|
226 |
-
msgstr ""
|
227 |
-
|
228 |
-
#: classes/class-cartflows-importer.php:770
|
229 |
-
msgid "Select Step Type"
|
230 |
-
msgstr ""
|
231 |
-
|
232 |
-
#: classes/class-cartflows-importer.php:847
|
233 |
-
msgid "Import from Cloud"
|
234 |
-
msgstr ""
|
235 |
-
|
236 |
-
#: classes/class-cartflows-importer.php:1149
|
237 |
-
#: modules/flow/classes/class-cartflows-flow-meta.php:224
|
238 |
-
msgid "Landing Page"
|
239 |
-
msgstr ""
|
240 |
-
|
241 |
-
#: classes/class-cartflows-importer.php:1150
|
242 |
-
#: modules/flow/classes/class-cartflows-flow-meta.php:225
|
243 |
-
msgid "Checkout Page"
|
244 |
-
msgstr ""
|
245 |
-
|
246 |
-
#: classes/class-cartflows-importer.php:1151
|
247 |
-
#: modules/flow/classes/class-cartflows-flow-meta.php:226
|
248 |
-
msgid "Thank You Page"
|
249 |
-
msgstr ""
|
250 |
-
|
251 |
-
#: classes/class-cartflows-importer.php:1259
|
252 |
-
#. translators: %s: template ID
|
253 |
-
msgid "Invalid template id %1$s or post id %2$s."
|
254 |
-
msgstr ""
|
255 |
-
|
256 |
-
#: classes/class-cartflows-importer.php:1317
|
257 |
-
#. translators: %s: flow ID
|
258 |
-
msgid "Invalid flow id %1$s OR step type %2$s."
|
259 |
-
msgstr ""
|
260 |
-
|
261 |
-
#: classes/class-cartflows-importer.php:1438
|
262 |
-
msgid ""
|
263 |
-
"Elementor is not activated. Please activate plugin Elementor Page Builder "
|
264 |
-
"to import the step."
|
265 |
-
msgstr ""
|
266 |
-
|
267 |
-
#: classes/class-cartflows-importer.php:1556
|
268 |
-
msgid "Plugin Successfully Activated"
|
269 |
-
msgstr ""
|
270 |
-
|
271 |
-
#: classes/class-cartflows-loader.php:368
|
272 |
-
#. translators: %s: html tags
|
273 |
-
msgid ""
|
274 |
-
"The %1$sCartFlows%2$s plugin requires %1$sWooCommerce%2$s plugin installed "
|
275 |
-
"& activated."
|
276 |
-
msgstr ""
|
277 |
-
|
278 |
-
#: classes/class-cartflows-loader.php:378
|
279 |
-
msgid "Activate WooCommerce"
|
280 |
-
msgstr ""
|
281 |
-
|
282 |
-
#: classes/class-cartflows-loader.php:386
|
283 |
-
msgid "Install WooCommerce"
|
284 |
-
msgstr ""
|
285 |
-
|
286 |
-
#: classes/class-cartflows-meta-fields.php:86
|
287 |
-
msgid "Thin 100"
|
288 |
-
msgstr ""
|
289 |
-
|
290 |
-
#: classes/class-cartflows-meta-fields.php:87
|
291 |
-
msgid "Extra-Light 200"
|
292 |
-
msgstr ""
|
293 |
-
|
294 |
-
#: classes/class-cartflows-meta-fields.php:88
|
295 |
-
msgid "Light 300"
|
296 |
-
msgstr ""
|
297 |
-
|
298 |
-
#: classes/class-cartflows-meta-fields.php:89
|
299 |
-
msgid "Normal 400"
|
300 |
-
msgstr ""
|
301 |
-
|
302 |
-
#: classes/class-cartflows-meta-fields.php:90
|
303 |
-
msgid "Medium 500"
|
304 |
-
msgstr ""
|
305 |
-
|
306 |
-
#: classes/class-cartflows-meta-fields.php:91
|
307 |
-
msgid "Semi-Bold 600"
|
308 |
-
msgstr ""
|
309 |
-
|
310 |
-
#: classes/class-cartflows-meta-fields.php:92
|
311 |
-
msgid "Bold 700"
|
312 |
-
msgstr ""
|
313 |
-
|
314 |
-
#: classes/class-cartflows-meta-fields.php:93
|
315 |
-
msgid "Extra-Bold 800"
|
316 |
-
msgstr ""
|
317 |
-
|
318 |
-
#: classes/class-cartflows-meta-fields.php:94
|
319 |
-
msgid "Ultra-Bold 900"
|
320 |
-
msgstr ""
|
321 |
-
|
322 |
-
#: classes/class-cartflows-meta-fields.php:217
|
323 |
-
#: classes/class-cartflows-meta-fields.php:325
|
324 |
-
#: classes/class-cartflows-meta-fields.php:1417
|
325 |
-
msgid "Remove"
|
326 |
-
msgstr ""
|
327 |
-
|
328 |
-
#: classes/class-cartflows-meta-fields.php:446
|
329 |
-
msgid "Field Width"
|
330 |
-
msgstr ""
|
331 |
-
|
332 |
-
#: classes/class-cartflows-meta-fields.php:450
|
333 |
-
msgid "33%"
|
334 |
-
msgstr ""
|
335 |
-
|
336 |
-
#: classes/class-cartflows-meta-fields.php:451
|
337 |
-
msgid "50%"
|
338 |
-
msgstr ""
|
339 |
-
|
340 |
-
#: classes/class-cartflows-meta-fields.php:452
|
341 |
-
msgid "100%"
|
342 |
-
msgstr ""
|
343 |
-
|
344 |
-
#: classes/class-cartflows-meta-fields.php:463
|
345 |
-
msgid "Field Label"
|
346 |
-
msgstr ""
|
347 |
-
|
348 |
-
#: classes/class-cartflows-meta-fields.php:477
|
349 |
-
msgid "Options"
|
350 |
-
msgstr ""
|
351 |
-
|
352 |
-
#: classes/class-cartflows-meta-fields.php:492
|
353 |
-
#: classes/class-cartflows-meta-fields.php:505
|
354 |
-
#: modules/checkout/classes/class-cartflows-checkout-meta.php:459
|
355 |
-
msgid "Default"
|
356 |
-
msgstr ""
|
357 |
-
|
358 |
-
#: classes/class-cartflows-meta-fields.php:496
|
359 |
-
msgid "Checked"
|
360 |
-
msgstr ""
|
361 |
-
|
362 |
-
#: classes/class-cartflows-meta-fields.php:497
|
363 |
-
msgid "Un-Checked"
|
364 |
-
msgstr ""
|
365 |
-
|
366 |
-
#: classes/class-cartflows-meta-fields.php:518
|
367 |
-
msgid "Placeholder"
|
368 |
-
msgstr ""
|
369 |
-
|
370 |
-
#: classes/class-cartflows-meta-fields.php:530
|
371 |
-
msgid "Required"
|
372 |
-
msgstr ""
|
373 |
-
|
374 |
-
#: classes/class-cartflows-meta-fields.php:542
|
375 |
-
msgid "Enable this field"
|
376 |
-
msgstr ""
|
377 |
-
|
378 |
-
#: classes/class-cartflows-meta-fields.php:562
|
379 |
-
msgid "Label"
|
380 |
-
msgstr ""
|
381 |
-
|
382 |
-
#: classes/class-cartflows-meta-fields.php:990
|
383 |
-
#: classes/class-cartflows-meta-fields.php:1409
|
384 |
-
msgid "Search for a product…"
|
385 |
-
msgstr ""
|
386 |
-
|
387 |
-
#: classes/class-cartflows-meta-fields.php:1031
|
388 |
-
msgid "Search for a coupon…"
|
389 |
-
msgstr ""
|
390 |
-
|
391 |
-
#: classes/class-cartflows-meta.php:34
|
392 |
-
msgid "Update"
|
393 |
-
msgstr ""
|
394 |
-
|
395 |
-
#: classes/class-cartflows-meta.php:42
|
396 |
-
#: modules/flow/classes/class-cartflows-flow-meta.php:84
|
397 |
-
msgid "Back to edit Flow"
|
398 |
-
msgstr ""
|
399 |
-
|
400 |
-
#: classes/class-cartflows-meta.php:63
|
401 |
-
#: modules/checkout/classes/class-cartflows-checkout-meta.php:191
|
402 |
-
#: modules/landing/classes/class-cartflows-landing-meta.php:136
|
403 |
-
#: modules/thankyou/classes/class-cartflows-thankyou-meta.php:148
|
404 |
-
msgid "Custom Script"
|
405 |
-
msgstr ""
|
406 |
-
|
407 |
-
#: classes/class-cartflows-meta.php:66
|
408 |
-
msgid ""
|
409 |
-
"Custom script lets you add your own custom script on front end of this flow "
|
410 |
-
"page."
|
411 |
-
msgstr ""
|
412 |
-
|
413 |
-
#: classes/class-cartflows-wizard.php:45
|
414 |
-
msgid "Thanks for installing and using CartFlows!"
|
415 |
-
msgstr ""
|
416 |
-
|
417 |
-
#: classes/class-cartflows-wizard.php:46
|
418 |
-
msgid ""
|
419 |
-
"It is easy to use the CartFlows. Please use the setup wizard to quick start "
|
420 |
-
"setup."
|
421 |
-
msgstr ""
|
422 |
-
|
423 |
-
#: classes/class-cartflows-wizard.php:71
|
424 |
-
#: includes/admin/cartflows-general-bck.php:24
|
425 |
-
msgid "Welcome"
|
426 |
-
msgstr ""
|
427 |
-
|
428 |
-
#: classes/class-cartflows-wizard.php:76 classes/class-cartflows-wizard.php:259
|
429 |
-
msgid "Page Builder"
|
430 |
-
msgstr ""
|
431 |
-
|
432 |
-
#: classes/class-cartflows-wizard.php:81
|
433 |
-
msgid "Ready!"
|
434 |
-
msgstr ""
|
435 |
-
|
436 |
-
#: classes/class-cartflows-wizard.php:150
|
437 |
-
msgid "CartFlows Setup"
|
438 |
-
msgstr ""
|
439 |
-
|
440 |
-
#: classes/class-cartflows-wizard.php:176
|
441 |
-
msgid "Exit Setup Wizard"
|
442 |
-
msgstr ""
|
443 |
-
|
444 |
-
#: classes/class-cartflows-wizard.php:225
|
445 |
-
msgid "Thank you for choosing CartFlows!"
|
446 |
-
msgstr ""
|
447 |
-
|
448 |
-
#: classes/class-cartflows-wizard.php:232
|
449 |
-
msgid "Lets Go »"
|
450 |
-
msgstr ""
|
451 |
-
|
452 |
-
#: classes/class-cartflows-wizard.php:260
|
453 |
-
msgid "Select a page builder which you want to use for creating your new flows."
|
454 |
-
msgstr ""
|
455 |
-
|
456 |
-
#: classes/class-cartflows-wizard.php:265
|
457 |
-
msgid "Select Page Builder"
|
458 |
-
msgstr ""
|
459 |
-
|
460 |
-
#: classes/class-cartflows-wizard.php:266
|
461 |
-
msgid "Add locations for where this Schema should appear."
|
462 |
-
msgstr ""
|
463 |
-
|
464 |
-
#: classes/class-cartflows-wizard.php:273
|
465 |
-
#: includes/admin/cartflows-general.php:76
|
466 |
-
msgid "Elementor"
|
467 |
-
msgstr ""
|
468 |
-
|
469 |
-
#: classes/class-cartflows-wizard.php:294
|
470 |
-
msgid "The above plugin will be installed and activated for you!"
|
471 |
-
msgstr ""
|
472 |
-
|
473 |
-
#: classes/class-cartflows-wizard.php:297
|
474 |
-
msgid "« Previous"
|
475 |
-
msgstr ""
|
476 |
-
|
477 |
-
#: classes/class-cartflows-wizard.php:300
|
478 |
-
#: classes/class-cartflows-wizard.php:301
|
479 |
-
msgid "Next »"
|
480 |
-
msgstr ""
|
481 |
-
|
482 |
-
#: classes/class-cartflows-wizard.php:393
|
483 |
-
msgid "Congratulations!"
|
484 |
-
msgstr ""
|
485 |
-
|
486 |
-
#: classes/class-cartflows-wizard.php:400
|
487 |
-
msgid ""
|
488 |
-
"You've successfully completed the setup before you begin setting now you "
|
489 |
-
"can use it."
|
490 |
-
msgstr ""
|
491 |
-
|
492 |
-
#: classes/class-cartflows-wizard.php:414
|
493 |
-
msgid "Create a flow"
|
494 |
-
msgstr ""
|
495 |
-
|
496 |
-
#: includes/admin/cartflows-admin.php:19
|
497 |
-
#: includes/admin/cartflows-general.php:33
|
498 |
-
msgid "Modernizing WordPress eCommerce!"
|
499 |
-
msgstr ""
|
500 |
-
|
501 |
-
#: includes/admin/cartflows-admin.php:29
|
502 |
-
msgid "Settings saved successfully."
|
503 |
-
msgstr ""
|
504 |
-
|
505 |
-
#: includes/admin/cartflows-general-bck.php:10
|
506 |
-
msgid "Selec"
|
507 |
-
msgstr ""
|
508 |
-
|
509 |
-
#: includes/admin/cartflows-general-bck.php:22
|
510 |
-
msgid "General"
|
511 |
-
msgstr ""
|
512 |
-
|
513 |
-
#: includes/admin/cartflows-general.php:18
|
514 |
-
#: includes/admin/cartflows-general.php:41
|
515 |
-
msgid "General Settings"
|
516 |
-
msgstr ""
|
517 |
-
|
518 |
-
#: includes/admin/cartflows-general.php:25
|
519 |
-
msgid "Getting Started"
|
520 |
-
msgstr ""
|
521 |
-
|
522 |
-
#: includes/admin/cartflows-general.php:54
|
523 |
-
msgid "Disallow search engines from indexing flows"
|
524 |
-
msgstr ""
|
525 |
-
|
526 |
-
#: includes/admin/cartflows-general.php:63
|
527 |
-
#: modules/flow/view/meta-flow-steps.php:87
|
528 |
-
msgid "Global Checkout"
|
529 |
-
msgstr ""
|
530 |
-
|
531 |
-
#: includes/admin/cartflows-general.php:72
|
532 |
-
msgid "Show Templates designed with"
|
533 |
-
msgstr ""
|
534 |
-
|
535 |
-
#: includes/admin/cartflows-general.php:73
|
536 |
-
msgid ""
|
537 |
-
"CartFlows offers flow templates that can be imported in one click. These "
|
538 |
-
"templates are available in few different page builders. Please choose your "
|
539 |
-
"preferred page builder from the list so you will only see templates that "
|
540 |
-
"are made using that page builder.."
|
541 |
-
msgstr ""
|
542 |
-
|
543 |
-
#: includes/admin/cartflows-general.php:77
|
544 |
-
msgid "Beaver Builder"
|
545 |
-
msgstr ""
|
546 |
-
|
547 |
-
#: includes/admin/cartflows-general.php:78
|
548 |
-
msgid "Divi"
|
549 |
-
msgstr ""
|
550 |
-
|
551 |
-
#: includes/admin/cartflows-general.php:79
|
552 |
-
msgid "Other"
|
553 |
-
msgstr ""
|
554 |
-
|
555 |
-
#: includes/admin/cartflows-general.php:88
|
556 |
-
msgid "Save Changes"
|
557 |
-
msgstr ""
|
558 |
-
|
559 |
-
#: includes/admin/cartflows-general.php:100
|
560 |
-
msgid "Knowledge Base"
|
561 |
-
msgstr ""
|
562 |
-
|
563 |
-
#: includes/admin/cartflows-general.php:104
|
564 |
-
msgid "Not sure how something works? Take a peek at the knowledge base and learn."
|
565 |
-
msgstr ""
|
566 |
-
|
567 |
-
#: includes/admin/cartflows-general.php:107
|
568 |
-
msgid "Visit Knowledge Base »"
|
569 |
-
msgstr ""
|
570 |
-
|
571 |
-
#: includes/admin/cartflows-general.php:115
|
572 |
-
msgid "Community"
|
573 |
-
msgstr ""
|
574 |
-
|
575 |
-
#: includes/admin/cartflows-general.php:119
|
576 |
-
msgid ""
|
577 |
-
"Join the community of super helpful CartFlows users. Say hello, ask "
|
578 |
-
"questions, give feedback and help each other!"
|
579 |
-
msgstr ""
|
580 |
-
|
581 |
-
#: includes/admin/cartflows-general.php:122
|
582 |
-
msgid "Join Our Facebook Group »"
|
583 |
-
msgstr ""
|
584 |
-
|
585 |
-
#: includes/admin/cartflows-general.php:130
|
586 |
-
msgid "Five Star Support"
|
587 |
-
msgstr ""
|
588 |
-
|
589 |
-
#: includes/admin/cartflows-general.php:134
|
590 |
-
msgid "Got a question? Get in touch with CartFlows developers. We're happy to help!"
|
591 |
-
msgstr ""
|
592 |
-
|
593 |
-
#: includes/admin/cartflows-general.php:137
|
594 |
-
msgid "Submit a Ticket »"
|
595 |
-
msgstr ""
|
596 |
-
|
597 |
-
#: includes/admin/cartflows-general.php:147
|
598 |
-
msgid "Load Minified CSS"
|
599 |
-
msgstr ""
|
600 |
-
|
601 |
-
#: includes/admin/cartflows-general.php:152
|
602 |
-
msgid ""
|
603 |
-
"Load the Minified CSS from here. Just Enable it by checking the below given "
|
604 |
-
"checkbox."
|
605 |
-
msgstr ""
|
606 |
-
|
607 |
-
#: includes/admin/cartflows-general.php:159
|
608 |
-
msgid "Load minified CSS & JS Files"
|
609 |
-
msgstr ""
|
610 |
-
|
611 |
-
#: includes/admin/cartflows-general.php:164
|
612 |
-
msgid "Save"
|
613 |
-
msgstr ""
|
614 |
-
|
615 |
-
#: includes/exporter.php:12
|
616 |
-
msgid "Export Flows to a JSON file"
|
617 |
-
msgstr ""
|
618 |
-
|
619 |
-
#: includes/exporter.php:13
|
620 |
-
msgid ""
|
621 |
-
"This tool allows you to generate and download a JSON file containing a list "
|
622 |
-
"of all flows."
|
623 |
-
msgstr ""
|
624 |
-
|
625 |
-
#: includes/importer.php:12
|
626 |
-
msgid "Import Flows to a JSON file"
|
627 |
-
msgstr ""
|
628 |
-
|
629 |
-
#: includes/importer.php:13
|
630 |
-
msgid "This tool allows you to import the flows from the JSON file."
|
631 |
-
msgstr ""
|
632 |
-
|
633 |
-
#: includes/importer.php:21
|
634 |
-
msgid "Import"
|
635 |
-
msgstr ""
|
636 |
-
|
637 |
-
#: modules/checkout/classes/class-cartflows-checkout-markup.php:161
|
638 |
-
#: modules/thankyou/classes/class-cartflows-thankyou-markup.php:62
|
639 |
-
msgid ""
|
640 |
-
"WooCommerce functions not exists. If you are in iframe, please reload the "
|
641 |
-
"iframe"
|
642 |
-
msgstr ""
|
643 |
-
|
644 |
-
#: modules/checkout/classes/class-cartflows-checkout-markup.php:177
|
645 |
-
msgid "Checkout ID not found"
|
646 |
-
msgstr ""
|
647 |
-
|
648 |
-
#: modules/checkout/classes/class-cartflows-checkout-markup.php:343
|
649 |
-
msgid "Variations Not set"
|
650 |
-
msgstr ""
|
651 |
-
|
652 |
-
#: modules/checkout/classes/class-cartflows-checkout-markup.php:352
|
653 |
-
msgid "This product can't be purcahsed"
|
654 |
-
msgstr ""
|
655 |
-
|
656 |
-
#: modules/checkout/classes/class-cartflows-checkout-markup.php:948
|
657 |
-
#: modules/checkout/classes/class-cartflows-checkout-markup.php:979
|
658 |
-
msgid "Coupon Code"
|
659 |
-
msgstr ""
|
660 |
-
|
661 |
-
#: modules/checkout/classes/class-cartflows-checkout-markup.php:953
|
662 |
-
#: modules/checkout/classes/class-cartflows-checkout-markup.php:988
|
663 |
-
msgid "Apply"
|
664 |
-
msgstr ""
|
665 |
-
|
666 |
-
#: modules/checkout/classes/class-cartflows-checkout-meta.php:68
|
667 |
-
msgid "Checkout Layout"
|
668 |
-
msgstr ""
|
669 |
-
|
670 |
-
#: modules/checkout/classes/class-cartflows-checkout-meta.php:155
|
671 |
-
#: modules/landing/classes/class-cartflows-landing-meta.php:130
|
672 |
-
#: modules/thankyou/classes/class-cartflows-thankyou-meta.php:130
|
673 |
-
msgid "Shortcodes"
|
674 |
-
msgstr ""
|
675 |
-
|
676 |
-
#: modules/checkout/classes/class-cartflows-checkout-meta.php:161
|
677 |
-
msgid "Select Product"
|
678 |
-
msgstr ""
|
679 |
-
|
680 |
-
#: modules/checkout/classes/class-cartflows-checkout-meta.php:167
|
681 |
-
msgid "Order Bump"
|
682 |
-
msgstr ""
|
683 |
-
|
684 |
-
#: modules/checkout/classes/class-cartflows-checkout-meta.php:173
|
685 |
-
msgid "Checkout Design"
|
686 |
-
msgstr ""
|
687 |
-
|
688 |
-
#: modules/checkout/classes/class-cartflows-checkout-meta.php:179
|
689 |
-
msgid "Checkout Fields"
|
690 |
-
msgstr ""
|
691 |
-
|
692 |
-
#: modules/checkout/classes/class-cartflows-checkout-meta.php:185
|
693 |
-
msgid "Logo (Optional)"
|
694 |
-
msgstr ""
|
695 |
-
|
696 |
-
#: modules/checkout/classes/class-cartflows-checkout-meta.php:250
|
697 |
-
msgid "Add this shortcode to your checkout page"
|
698 |
-
msgstr ""
|
699 |
-
|
700 |
-
#: modules/checkout/classes/class-cartflows-checkout-meta.php:302
|
701 |
-
#. translators: %s: link
|
702 |
-
msgid "Upgrade to %1$sCartFlows Pro%2$s for Order Bump feature"
|
703 |
-
msgstr ""
|
704 |
-
|
705 |
-
#: modules/checkout/classes/class-cartflows-checkout-meta.php:330
|
706 |
-
#. translators: %s: link
|
707 |
-
msgid "Upgrade to %1$sCartFlows Pro%2$s for Custom Fields feature"
|
708 |
-
msgstr ""
|
709 |
-
|
710 |
-
#: modules/checkout/classes/class-cartflows-checkout-meta.php:358
|
711 |
-
msgid "One Column (Available in CartFlows Pro) "
|
712 |
-
msgstr ""
|
713 |
-
|
714 |
-
#: modules/checkout/classes/class-cartflows-checkout-meta.php:359
|
715 |
-
msgid "Two Step (Available in CartFlows Pro) "
|
716 |
-
msgstr ""
|
717 |
-
|
718 |
-
#: modules/checkout/classes/class-cartflows-checkout-meta.php:365
|
719 |
-
msgid "Checkout Skin"
|
720 |
-
msgstr ""
|
721 |
-
|
722 |
-
#: modules/checkout/classes/class-cartflows-checkout-meta.php:369
|
723 |
-
msgid "One Column"
|
724 |
-
msgstr ""
|
725 |
-
|
726 |
-
#: modules/checkout/classes/class-cartflows-checkout-meta.php:370
|
727 |
-
msgid "Two Column"
|
728 |
-
msgstr ""
|
729 |
-
|
730 |
-
#: modules/checkout/classes/class-cartflows-checkout-meta.php:371
|
731 |
-
msgid "Two Step"
|
732 |
-
msgstr ""
|
733 |
-
|
734 |
-
#: modules/checkout/classes/class-cartflows-checkout-meta.php:380
|
735 |
-
msgid "Primary Color"
|
736 |
-
msgstr ""
|
737 |
-
|
738 |
-
#: modules/checkout/classes/class-cartflows-checkout-meta.php:389
|
739 |
-
#: modules/checkout/classes/class-cartflows-checkout-meta.php:424
|
740 |
-
#: modules/checkout/classes/class-cartflows-checkout-meta.php:470
|
741 |
-
#: modules/checkout/classes/class-cartflows-checkout-meta.php:562
|
742 |
-
#: modules/thankyou/classes/class-cartflows-thankyou-meta.php:203
|
743 |
-
#: modules/thankyou/classes/class-cartflows-thankyou-meta.php:226
|
744 |
-
msgid "Font Family"
|
745 |
-
msgstr ""
|
746 |
-
|
747 |
-
#: modules/checkout/classes/class-cartflows-checkout-meta.php:397
|
748 |
-
msgid "Advance Options"
|
749 |
-
msgstr ""
|
750 |
-
|
751 |
-
#: modules/checkout/classes/class-cartflows-checkout-meta.php:409
|
752 |
-
#: modules/thankyou/classes/class-cartflows-thankyou-meta.php:211
|
753 |
-
msgid "Heading"
|
754 |
-
msgstr ""
|
755 |
-
|
756 |
-
#: modules/checkout/classes/class-cartflows-checkout-meta.php:415
|
757 |
-
msgid "Heading Color"
|
758 |
-
msgstr ""
|
759 |
-
|
760 |
-
#: modules/checkout/classes/class-cartflows-checkout-meta.php:433
|
761 |
-
#: modules/checkout/classes/class-cartflows-checkout-meta.php:479
|
762 |
-
#: modules/checkout/classes/class-cartflows-checkout-meta.php:571
|
763 |
-
#: modules/thankyou/classes/class-cartflows-thankyou-meta.php:235
|
764 |
-
msgid "Font Weight"
|
765 |
-
msgstr ""
|
766 |
-
|
767 |
-
#: modules/checkout/classes/class-cartflows-checkout-meta.php:441
|
768 |
-
msgid "Input Fields"
|
769 |
-
msgstr ""
|
770 |
-
|
771 |
-
#: modules/checkout/classes/class-cartflows-checkout-meta.php:449
|
772 |
-
msgid "Floating Labels (Available in CartFlows Pro)"
|
773 |
-
msgstr ""
|
774 |
-
|
775 |
-
#: modules/checkout/classes/class-cartflows-checkout-meta.php:455
|
776 |
-
msgid "Style"
|
777 |
-
msgstr ""
|
778 |
-
|
779 |
-
#: modules/checkout/classes/class-cartflows-checkout-meta.php:460
|
780 |
-
msgid "Floating Labels"
|
781 |
-
msgstr ""
|
782 |
-
|
783 |
-
#: modules/checkout/classes/class-cartflows-checkout-meta.php:487
|
784 |
-
#: modules/checkout/classes/class-cartflows-checkout-meta.php:579
|
785 |
-
msgid "Size"
|
786 |
-
msgstr ""
|
787 |
-
|
788 |
-
#: modules/checkout/classes/class-cartflows-checkout-meta.php:491
|
789 |
-
#: modules/checkout/classes/class-cartflows-checkout-meta.php:583
|
790 |
-
msgid "Extra Small"
|
791 |
-
msgstr ""
|
792 |
-
|
793 |
-
#: modules/checkout/classes/class-cartflows-checkout-meta.php:492
|
794 |
-
#: modules/checkout/classes/class-cartflows-checkout-meta.php:584
|
795 |
-
msgid "Small"
|
796 |
-
msgstr ""
|
797 |
-
|
798 |
-
#: modules/checkout/classes/class-cartflows-checkout-meta.php:493
|
799 |
-
#: modules/checkout/classes/class-cartflows-checkout-meta.php:585
|
800 |
-
msgid "Medium"
|
801 |
-
msgstr ""
|
802 |
-
|
803 |
-
#: modules/checkout/classes/class-cartflows-checkout-meta.php:494
|
804 |
-
#: modules/checkout/classes/class-cartflows-checkout-meta.php:586
|
805 |
-
msgid "Large"
|
806 |
-
msgstr ""
|
807 |
-
|
808 |
-
#: modules/checkout/classes/class-cartflows-checkout-meta.php:495
|
809 |
-
#: modules/checkout/classes/class-cartflows-checkout-meta.php:587
|
810 |
-
msgid "Extra Large"
|
811 |
-
msgstr ""
|
812 |
-
|
813 |
-
#: modules/checkout/classes/class-cartflows-checkout-meta.php:496
|
814 |
-
#: modules/checkout/classes/class-cartflows-checkout-meta.php:588
|
815 |
-
msgid "Custom"
|
816 |
-
msgstr ""
|
817 |
-
|
818 |
-
#: modules/checkout/classes/class-cartflows-checkout-meta.php:503
|
819 |
-
#: modules/checkout/classes/class-cartflows-checkout-meta.php:595
|
820 |
-
msgid "Top Bottom Spacing"
|
821 |
-
msgstr ""
|
822 |
-
|
823 |
-
#: modules/checkout/classes/class-cartflows-checkout-meta.php:511
|
824 |
-
#: modules/checkout/classes/class-cartflows-checkout-meta.php:603
|
825 |
-
msgid "Left Right Spacing"
|
826 |
-
msgstr ""
|
827 |
-
|
828 |
-
#: modules/checkout/classes/class-cartflows-checkout-meta.php:519
|
829 |
-
msgid "Text / Placeholder Color"
|
830 |
-
msgstr ""
|
831 |
-
|
832 |
-
#: modules/checkout/classes/class-cartflows-checkout-meta.php:527
|
833 |
-
#: modules/checkout/classes/class-cartflows-checkout-meta.php:627
|
834 |
-
msgid "Background Color"
|
835 |
-
msgstr ""
|
836 |
-
|
837 |
-
#: modules/checkout/classes/class-cartflows-checkout-meta.php:535
|
838 |
-
#: modules/checkout/classes/class-cartflows-checkout-meta.php:643
|
839 |
-
msgid "Border Color"
|
840 |
-
msgstr ""
|
841 |
-
|
842 |
-
#: modules/checkout/classes/class-cartflows-checkout-meta.php:542
|
843 |
-
msgid "Label Color"
|
844 |
-
msgstr ""
|
845 |
-
|
846 |
-
#: modules/checkout/classes/class-cartflows-checkout-meta.php:555
|
847 |
-
msgid "Buttons"
|
848 |
-
msgstr ""
|
849 |
-
|
850 |
-
#: modules/checkout/classes/class-cartflows-checkout-meta.php:611
|
851 |
-
msgid "Text Color"
|
852 |
-
msgstr ""
|
853 |
-
|
854 |
-
#: modules/checkout/classes/class-cartflows-checkout-meta.php:619
|
855 |
-
msgid "Text Hover Color"
|
856 |
-
msgstr ""
|
857 |
-
|
858 |
-
#: modules/checkout/classes/class-cartflows-checkout-meta.php:635
|
859 |
-
msgid "Background Hover Color"
|
860 |
-
msgstr ""
|
861 |
-
|
862 |
-
#: modules/checkout/classes/class-cartflows-checkout-meta.php:651
|
863 |
-
msgid "Border Hover Color"
|
864 |
-
msgstr ""
|
865 |
-
|
866 |
-
#: modules/checkout/classes/class-cartflows-checkout-meta.php:664
|
867 |
-
msgid "Sections"
|
868 |
-
msgstr ""
|
869 |
-
|
870 |
-
#: modules/checkout/classes/class-cartflows-checkout-meta.php:670
|
871 |
-
msgid "Highlight Area Background Color"
|
872 |
-
msgstr ""
|
873 |
-
|
874 |
-
#: modules/checkout/classes/class-cartflows-checkout-meta.php:709
|
875 |
-
msgid "Header Logo"
|
876 |
-
msgstr ""
|
877 |
-
|
878 |
-
#: modules/checkout/classes/class-cartflows-checkout-meta.php:717
|
879 |
-
msgid "Logo Width (In px)"
|
880 |
-
msgstr ""
|
881 |
-
|
882 |
-
#: modules/checkout/templates/embed/checkout-template-simple.php:25
|
883 |
-
#: modules/checkout/templates/wcf-template.php:36
|
884 |
-
msgid "Your cart is currently empty."
|
885 |
-
msgstr ""
|
886 |
-
|
887 |
-
#: modules/checkout/templates/wcf-template.php:46
|
888 |
-
msgid "Copyright ©"
|
889 |
-
msgstr ""
|
890 |
-
|
891 |
-
#: modules/checkout/templates/wcf-template.php:50
|
892 |
-
msgid "All Rights Reserved"
|
893 |
-
msgstr ""
|
894 |
-
|
895 |
-
#: modules/flow/classes/class-cartflows-flow-meta.php:199
|
896 |
-
#. translators: %s flow id
|
897 |
-
msgid "Steps not created for flow - %s"
|
898 |
-
msgstr ""
|
899 |
-
|
900 |
-
#: modules/flow/classes/class-cartflows-flow-meta.php:213
|
901 |
-
#. translators: %s flow id
|
902 |
-
msgid "Steps already exists. Flow - %s"
|
903 |
-
msgstr ""
|
904 |
-
|
905 |
-
#: modules/flow/classes/class-cartflows-flow-meta.php:262
|
906 |
-
#. translators: %s flow id
|
907 |
-
msgid "Steps created for flow - %s"
|
908 |
-
msgstr ""
|
909 |
-
|
910 |
-
#: modules/flow/classes/class-cartflows-flow-meta.php:333
|
911 |
-
#. translators: %s flow id
|
912 |
-
msgid "Step not deleted for flow - %s"
|
913 |
-
msgstr ""
|
914 |
-
|
915 |
-
#: modules/flow/classes/class-cartflows-flow-meta.php:364
|
916 |
-
#. translators: %s flow id
|
917 |
-
msgid "Step deleted for flow - %s"
|
918 |
-
msgstr ""
|
919 |
-
|
920 |
-
#: modules/flow/classes/class-cartflows-flow-meta.php:387
|
921 |
-
#. translators: %s flow id
|
922 |
-
msgid "Steps not sorted for flow - %s"
|
923 |
-
msgstr ""
|
924 |
-
|
925 |
-
#: modules/flow/classes/class-cartflows-flow-meta.php:410
|
926 |
-
#. translators: %s flow id
|
927 |
-
msgid "Steps sorted for flow - %s"
|
928 |
-
msgstr ""
|
929 |
-
|
930 |
-
#: modules/flow/classes/class-cartflows-flow-meta.php:521
|
931 |
-
msgid "Flow Settings"
|
932 |
-
msgstr ""
|
933 |
-
|
934 |
-
#: modules/flow/classes/class-cartflows-flow-meta.php:606
|
935 |
-
msgid "Enable Test Mode"
|
936 |
-
msgstr ""
|
937 |
-
|
938 |
-
#: modules/flow/classes/class-cartflows-flow-meta.php:613
|
939 |
-
msgid ""
|
940 |
-
"Test mode adds random products in your flow, so you can preview it easily "
|
941 |
-
"while testing."
|
942 |
-
msgstr ""
|
943 |
-
|
944 |
-
#: modules/flow/classes/class-cartflows-flow-post-type.php:57
|
945 |
-
msgid "Search Flows"
|
946 |
-
msgstr ""
|
947 |
-
|
948 |
-
#: modules/flow/classes/class-cartflows-flow-post-type.php:58
|
949 |
-
msgid "All Flows"
|
950 |
-
msgstr ""
|
951 |
-
|
952 |
-
#: modules/flow/classes/class-cartflows-flow-post-type.php:59
|
953 |
-
msgid "Edit Flow"
|
954 |
-
msgstr ""
|
955 |
-
|
956 |
-
#: modules/flow/classes/class-cartflows-flow-post-type.php:60
|
957 |
-
msgid "View Flow"
|
958 |
-
msgstr ""
|
959 |
-
|
960 |
-
#: modules/flow/classes/class-cartflows-flow-post-type.php:61
|
961 |
-
#: modules/flow/classes/class-cartflows-flow-post-type.php:63
|
962 |
-
#: modules/flow/classes/class-cartflows-step-post-type.php:150
|
963 |
-
#: modules/flow/classes/class-cartflows-step-post-type.php:152
|
964 |
-
msgid "Add New"
|
965 |
-
msgstr ""
|
966 |
-
|
967 |
-
#: modules/flow/classes/class-cartflows-flow-post-type.php:62
|
968 |
-
msgid "Update Flow"
|
969 |
-
msgstr ""
|
970 |
-
|
971 |
-
#: modules/flow/classes/class-cartflows-flow-post-type.php:64
|
972 |
-
msgid "New Flow Name"
|
973 |
-
msgstr ""
|
974 |
-
|
975 |
-
#: modules/flow/classes/class-cartflows-flow-post-type.php:123
|
976 |
-
msgid "View"
|
977 |
-
msgstr ""
|
978 |
-
|
979 |
-
#: modules/flow/classes/class-cartflows-flow-post-type.php:230
|
980 |
-
msgid "Flows"
|
981 |
-
msgstr ""
|
982 |
-
|
983 |
-
#: modules/flow/classes/class-cartflows-flow-post-type.php:252
|
984 |
-
#: modules/flow/classes/class-cartflows-flow-post-type.php:258
|
985 |
-
#: modules/flow/classes/class-cartflows-step-post-type.php:413
|
986 |
-
#: modules/flow/classes/class-cartflows-step-post-type.php:419
|
987 |
-
#. translators: %s: singular custom post type name
|
988 |
-
msgid "%s updated."
|
989 |
-
msgstr ""
|
990 |
-
|
991 |
-
#: modules/flow/classes/class-cartflows-flow-post-type.php:254
|
992 |
-
#: modules/flow/classes/class-cartflows-step-post-type.php:415
|
993 |
-
#. translators: %s: singular custom post type name
|
994 |
-
msgid "Custom %s updated."
|
995 |
-
msgstr ""
|
996 |
-
|
997 |
-
#: modules/flow/classes/class-cartflows-flow-post-type.php:256
|
998 |
-
#: modules/flow/classes/class-cartflows-step-post-type.php:417
|
999 |
-
#. translators: %s: singular custom post type name
|
1000 |
-
msgid "Custom %s deleted."
|
1001 |
-
msgstr ""
|
1002 |
-
|
1003 |
-
#: modules/flow/classes/class-cartflows-flow-post-type.php:260
|
1004 |
-
#: modules/flow/classes/class-cartflows-step-post-type.php:421
|
1005 |
-
#. translators: %1$s: singular custom post type name ,%2$s: date and time of
|
1006 |
-
#. the revision
|
1007 |
-
msgid "%1$s restored to revision from %2$s"
|
1008 |
-
msgstr ""
|
1009 |
-
|
1010 |
-
#: modules/flow/classes/class-cartflows-flow-post-type.php:262
|
1011 |
-
#: modules/flow/classes/class-cartflows-step-post-type.php:423
|
1012 |
-
#. translators: %s: singular custom post type name
|
1013 |
-
msgid "%s published."
|
1014 |
-
msgstr ""
|
1015 |
-
|
1016 |
-
#: modules/flow/classes/class-cartflows-flow-post-type.php:264
|
1017 |
-
#: modules/flow/classes/class-cartflows-step-post-type.php:425
|
1018 |
-
#. translators: %s: singular custom post type name
|
1019 |
-
msgid "%s saved."
|
1020 |
-
msgstr ""
|
1021 |
-
|
1022 |
-
#: modules/flow/classes/class-cartflows-flow-post-type.php:266
|
1023 |
-
#: modules/flow/classes/class-cartflows-step-post-type.php:427
|
1024 |
-
#. translators: %s: singular custom post type name
|
1025 |
-
msgid "%s submitted."
|
1026 |
-
msgstr ""
|
1027 |
-
|
1028 |
-
#: modules/flow/classes/class-cartflows-flow-post-type.php:268
|
1029 |
-
#: modules/flow/classes/class-cartflows-step-post-type.php:429
|
1030 |
-
#. translators: %s: singular custom post type name
|
1031 |
-
msgid "%s scheduled for."
|
1032 |
-
msgstr ""
|
1033 |
-
|
1034 |
-
#: modules/flow/classes/class-cartflows-flow-post-type.php:270
|
1035 |
-
#: modules/flow/classes/class-cartflows-step-post-type.php:431
|
1036 |
-
#. translators: %s: singular custom post type name
|
1037 |
-
msgid "%s draft updated."
|
1038 |
-
msgstr ""
|
1039 |
-
|
1040 |
-
#: modules/flow/classes/class-cartflows-flow-shortcodes.php:148
|
1041 |
-
#: modules/widgets/class-cartflows-next-step.php:79
|
1042 |
-
msgid "Next Step"
|
1043 |
-
msgstr ""
|
1044 |
-
|
1045 |
-
#: modules/flow/classes/class-cartflows-step-post-type.php:146
|
1046 |
-
msgid "Search Steps"
|
1047 |
-
msgstr ""
|
1048 |
-
|
1049 |
-
#: modules/flow/classes/class-cartflows-step-post-type.php:147
|
1050 |
-
msgid "All Steps"
|
1051 |
-
msgstr ""
|
1052 |
-
|
1053 |
-
#: modules/flow/classes/class-cartflows-step-post-type.php:148
|
1054 |
-
#: modules/flow/view/meta-flow-steps.php:99
|
1055 |
-
msgid "Edit Step"
|
1056 |
-
msgstr ""
|
1057 |
-
|
1058 |
-
#: modules/flow/classes/class-cartflows-step-post-type.php:149
|
1059 |
-
#: modules/flow/view/meta-flow-steps.php:95
|
1060 |
-
msgid "View Step"
|
1061 |
-
msgstr ""
|
1062 |
-
|
1063 |
-
#: modules/flow/classes/class-cartflows-step-post-type.php:151
|
1064 |
-
msgid "Update Step"
|
1065 |
-
msgstr ""
|
1066 |
-
|
1067 |
-
#: modules/flow/classes/class-cartflows-step-post-type.php:153
|
1068 |
-
msgid "New Step Name"
|
1069 |
-
msgstr ""
|
1070 |
-
|
1071 |
-
#: modules/flow/classes/class-cartflows-step-post-type.php:176
|
1072 |
-
msgid "Step Type"
|
1073 |
-
msgstr ""
|
1074 |
-
|
1075 |
-
#: modules/flow/classes/class-cartflows-step-post-type.php:185
|
1076 |
-
msgid "Step Flow"
|
1077 |
-
msgstr ""
|
1078 |
-
|
1079 |
-
#: modules/flow/classes/class-cartflows-step-post-type.php:202
|
1080 |
-
#: modules/flow/view/meta-flow-steps.php:11
|
1081 |
-
msgid "Landing"
|
1082 |
-
msgstr ""
|
1083 |
-
|
1084 |
-
#: modules/flow/classes/class-cartflows-step-post-type.php:208
|
1085 |
-
#: modules/flow/view/meta-flow-steps.php:12
|
1086 |
-
msgid "Checkout"
|
1087 |
-
msgstr ""
|
1088 |
-
|
1089 |
-
#: modules/flow/classes/class-cartflows-step-post-type.php:214
|
1090 |
-
#: modules/flow/view/meta-flow-steps.php:13
|
1091 |
-
msgid "Thank You"
|
1092 |
-
msgstr ""
|
1093 |
-
|
1094 |
-
#: modules/flow/classes/class-cartflows-step-post-type.php:220
|
1095 |
-
#: modules/flow/view/meta-flow-steps.php:14
|
1096 |
-
msgid "Upsell"
|
1097 |
-
msgstr ""
|
1098 |
-
|
1099 |
-
#: modules/flow/classes/class-cartflows-step-post-type.php:226
|
1100 |
-
#: modules/flow/view/meta-flow-steps.php:15
|
1101 |
-
msgid "Downsell"
|
1102 |
-
msgstr ""
|
1103 |
-
|
1104 |
-
#: modules/flow/view/meta-flow-steps.php:79
|
1105 |
-
msgid "No Product Assigned"
|
1106 |
-
msgstr ""
|
1107 |
-
|
1108 |
-
#: modules/flow/view/meta-flow-steps.php:83
|
1109 |
-
msgid "Global Checkout - Remove selected checkout product"
|
1110 |
-
msgstr ""
|
1111 |
-
|
1112 |
-
#: modules/flow/view/meta-flow-steps.php:103
|
1113 |
-
msgid "Clone Step"
|
1114 |
-
msgstr ""
|
1115 |
-
|
1116 |
-
#: modules/flow/view/meta-flow-steps.php:107
|
1117 |
-
msgid "Delete Step"
|
1118 |
-
msgstr ""
|
1119 |
-
|
1120 |
-
#: modules/flow/view/meta-flow-steps.php:122
|
1121 |
-
msgid "Add New Step"
|
1122 |
-
msgstr ""
|
1123 |
-
|
1124 |
-
#: modules/flow/view/meta-flow-steps.php:138
|
1125 |
-
msgid "Steps Library"
|
1126 |
-
msgstr ""
|
1127 |
-
|
1128 |
-
#: modules/flow/view/meta-flow-steps.php:188
|
1129 |
-
msgid "Create Step"
|
1130 |
-
msgstr ""
|
1131 |
-
|
1132 |
-
#: modules/flow/view/meta-flow-steps.php:190
|
1133 |
-
msgid "You need a Cartflows Pro version to import Upsell / Downsell"
|
1134 |
-
msgstr ""
|
1135 |
-
|
1136 |
-
#: modules/landing/classes/class-cartflows-landing-meta.php:66
|
1137 |
-
msgid "Landing Page Settings"
|
1138 |
-
msgstr ""
|
1139 |
-
|
1140 |
-
#: modules/landing/classes/class-cartflows-landing-meta.php:169
|
1141 |
-
msgid "Next Step Link"
|
1142 |
-
msgstr ""
|
1143 |
-
|
1144 |
-
#: modules/thankyou/classes/class-cartflows-thankyou-meta.php:65
|
1145 |
-
msgid "Thank You Page Settings"
|
1146 |
-
msgstr ""
|
1147 |
-
|
1148 |
-
#: modules/thankyou/classes/class-cartflows-thankyou-meta.php:136
|
1149 |
-
msgid "Thank You Design"
|
1150 |
-
msgstr ""
|
1151 |
-
|
1152 |
-
#: modules/thankyou/classes/class-cartflows-thankyou-meta.php:142
|
1153 |
-
msgid "Thank You Fields"
|
1154 |
-
msgstr ""
|
1155 |
-
|
1156 |
-
#: modules/thankyou/classes/class-cartflows-thankyou-meta.php:176
|
1157 |
-
msgid "Order Details"
|
1158 |
-
msgstr ""
|
1159 |
-
|
1160 |
-
#: modules/thankyou/classes/class-cartflows-thankyou-meta.php:188
|
1161 |
-
msgid "Text"
|
1162 |
-
msgstr ""
|
1163 |
-
|
1164 |
-
#: modules/thankyou/classes/class-cartflows-thankyou-meta.php:194
|
1165 |
-
#: modules/thankyou/classes/class-cartflows-thankyou-meta.php:217
|
1166 |
-
msgid "Color"
|
1167 |
-
msgstr ""
|
1168 |
-
|
1169 |
-
#: modules/thankyou/classes/class-cartflows-thankyou-meta.php:243
|
1170 |
-
msgid "Advanced Options"
|
1171 |
-
msgstr ""
|
1172 |
-
|
1173 |
-
#: modules/thankyou/classes/class-cartflows-thankyou-meta.php:253
|
1174 |
-
msgid "Container Width (In px)"
|
1175 |
-
msgstr ""
|
1176 |
-
|
1177 |
-
#: modules/thankyou/classes/class-cartflows-thankyou-meta.php:261
|
1178 |
-
msgid "Section Background Color"
|
1179 |
-
msgstr ""
|
1180 |
-
|
1181 |
-
#: modules/thankyou/classes/class-cartflows-thankyou-meta.php:275
|
1182 |
-
msgid "Enable Order Overview "
|
1183 |
-
msgstr ""
|
1184 |
-
|
1185 |
-
#: modules/thankyou/classes/class-cartflows-thankyou-meta.php:283
|
1186 |
-
msgid "Enable Order Details "
|
1187 |
-
msgstr ""
|
1188 |
-
|
1189 |
-
#: modules/thankyou/classes/class-cartflows-thankyou-meta.php:291
|
1190 |
-
msgid "Enable Billing Details "
|
1191 |
-
msgstr ""
|
1192 |
-
|
1193 |
-
#: modules/thankyou/classes/class-cartflows-thankyou-meta.php:299
|
1194 |
-
msgid "Enable Shipping Details "
|
1195 |
-
msgstr ""
|
1196 |
-
|
1197 |
-
#: modules/widgets/class-cartflows-next-step.php:25
|
1198 |
-
msgid "CartFlows Next Step"
|
1199 |
-
msgstr ""
|
1200 |
-
|
1201 |
-
#: modules/widgets/class-cartflows-next-step.php:27
|
1202 |
-
msgid "Next Step Widgets"
|
1203 |
-
msgstr ""
|
1204 |
-
|
1205 |
-
#: modules/widgets/class-cartflows-next-step.php:107
|
1206 |
-
msgid "New title"
|
1207 |
-
msgstr ""
|
1208 |
-
|
1209 |
-
#: modules/widgets/class-cartflows-next-step.php:124
|
1210 |
-
msgid "Title:"
|
1211 |
-
msgstr ""
|
1212 |
-
|
1213 |
-
#: modules/widgets/class-cartflows-next-step.php:128
|
1214 |
-
msgid "Flow ID:"
|
1215 |
-
msgstr ""
|
1216 |
-
|
1217 |
-
#: modules/widgets/class-cartflows-next-step.php:132
|
1218 |
-
msgid "Step ID:"
|
1219 |
-
msgstr ""
|
1220 |
-
|
1221 |
-
#: woocommerce/template/cart/cart-shipping.php:51
|
1222 |
-
#. Translators: $s shipping destination.
|
1223 |
-
msgid "Estimate for %s."
|
1224 |
-
msgstr ""
|
1225 |
-
|
1226 |
-
#: woocommerce/template/cart/cart-shipping.php:52
|
1227 |
-
msgid "Change address"
|
1228 |
-
msgstr ""
|
1229 |
-
|
1230 |
-
#: woocommerce/template/cart/cart-shipping.php:54
|
1231 |
-
msgid "This is only an estimate. Prices will be updated during checkout."
|
1232 |
-
msgstr ""
|
1233 |
-
|
1234 |
-
#: woocommerce/template/cart/cart-shipping.php:61
|
1235 |
-
msgid "Enter your address to view shipping options."
|
1236 |
-
msgstr ""
|
1237 |
-
|
1238 |
-
#: woocommerce/template/cart/cart-shipping.php:63
|
1239 |
-
msgid ""
|
1240 |
-
"There are no shipping methods available. Please ensure that your address "
|
1241 |
-
"has been entered correctly, or contact us if you need any help."
|
1242 |
-
msgstr ""
|
1243 |
-
|
1244 |
-
#: woocommerce/template/cart/cart-shipping.php:66
|
1245 |
-
#. Translators: $s shipping destination.
|
1246 |
-
msgid "No shipping options were found for %s."
|
1247 |
-
msgstr ""
|
1248 |
-
|
1249 |
-
#: woocommerce/template/cart/cart-shipping.php:67
|
1250 |
-
msgid "Enter a different address"
|
1251 |
-
msgstr ""
|
1252 |
-
|
1253 |
-
#: woocommerce/template/checkout/form-billing.php:27
|
1254 |
-
msgid "Billing & Shipping"
|
1255 |
-
msgstr ""
|
1256 |
-
|
1257 |
-
#: woocommerce/template/checkout/form-billing.php:31
|
1258 |
-
msgid "Billing details"
|
1259 |
-
msgstr ""
|
1260 |
-
|
1261 |
-
#: woocommerce/template/checkout/form-billing.php:59
|
1262 |
-
msgid "Create an account?"
|
1263 |
-
msgstr ""
|
1264 |
-
|
1265 |
-
#: woocommerce/template/checkout/form-checkout.php:26
|
1266 |
-
msgid "You must be logged in to checkout."
|
1267 |
-
msgstr ""
|
1268 |
-
|
1269 |
-
#: woocommerce/template/checkout/form-checkout.php:52
|
1270 |
-
msgid "Your order"
|
1271 |
-
msgstr ""
|
1272 |
-
|
1273 |
-
#: woocommerce/template/checkout/form-coupon.php:26
|
1274 |
-
msgid "Have a coupon?"
|
1275 |
-
msgstr ""
|
1276 |
-
|
1277 |
-
#: woocommerce/template/checkout/form-coupon.php:26
|
1278 |
-
msgid "Click here to enter your code"
|
1279 |
-
msgstr ""
|
1280 |
-
|
1281 |
-
#: woocommerce/template/checkout/form-coupon.php:31
|
1282 |
-
msgid "If you have a coupon code, please apply it below."
|
1283 |
-
msgstr ""
|
1284 |
-
|
1285 |
-
#: woocommerce/template/checkout/form-coupon.php:34
|
1286 |
-
msgid "Coupon code"
|
1287 |
-
msgstr ""
|
1288 |
-
|
1289 |
-
#: woocommerce/template/checkout/form-coupon.php:38
|
1290 |
-
msgid "Apply coupon"
|
1291 |
-
msgstr ""
|
1292 |
-
|
1293 |
-
#: woocommerce/template/checkout/form-login.php:26
|
1294 |
-
msgid "Returning customer?"
|
1295 |
-
msgstr ""
|
1296 |
-
|
1297 |
-
#: woocommerce/template/checkout/form-login.php:26
|
1298 |
-
msgid "Click here to login"
|
1299 |
-
msgstr ""
|
1300 |
-
|
1301 |
-
#: woocommerce/template/checkout/form-login.php:32
|
1302 |
-
msgid ""
|
1303 |
-
"If you have shopped with us before, please enter your details below. If you "
|
1304 |
-
"are a new customer, please proceed to the Billing & Shipping section."
|
1305 |
-
msgstr ""
|
1306 |
-
|
1307 |
-
#: woocommerce/template/checkout/payment.php:33
|
1308 |
-
msgid ""
|
1309 |
-
"Sorry, it seems that there are no available payment methods for your state. "
|
1310 |
-
"Please contact us if you require assistance or wish to make alternate "
|
1311 |
-
"arrangements."
|
1312 |
-
msgstr ""
|
1313 |
-
|
1314 |
-
#: woocommerce/template/checkout/payment.php:33
|
1315 |
-
msgid "Please fill in your details above to see available payment methods."
|
1316 |
-
msgstr ""
|
1317 |
-
|
1318 |
-
#: woocommerce/template/checkout/payment.php:42
|
1319 |
-
#. translators: $1 and $2 opening and closing emphasis tags respectively
|
1320 |
-
msgid ""
|
1321 |
-
"Since your browser does not support JavaScript, or it is disabled, please "
|
1322 |
-
"ensure you click the %1$sUpdate Totals%2$s button before placing your "
|
1323 |
-
"order. You may be charged more than the amount stated above if you fail to "
|
1324 |
-
"do so."
|
1325 |
-
msgstr ""
|
1326 |
-
|
1327 |
-
#: woocommerce/template/checkout/payment.php:44
|
1328 |
-
msgid "Update totals"
|
1329 |
-
msgstr ""
|
1330 |
-
|
1331 |
-
#: woocommerce/template/checkout/review-order.php:26
|
1332 |
-
msgid "Product"
|
1333 |
-
msgstr ""
|
1334 |
-
|
1335 |
-
#: woocommerce/template/checkout/review-order.php:27
|
1336 |
-
#: woocommerce/template/checkout/review-order.php:106
|
1337 |
-
msgid "Total"
|
1338 |
-
msgstr ""
|
1339 |
-
|
1340 |
-
#: woocommerce/template/checkout/review-order.php:59
|
1341 |
-
msgid "Subtotal"
|
1342 |
-
msgstr ""
|
1343 |
-
|
1344 |
-
#: woocommerce/template/checkout/thankyou.php:30
|
1345 |
-
msgid ""
|
1346 |
-
"Unfortunately your order cannot be processed as the originating "
|
1347 |
-
"bank/merchant has declined your transaction. Please attempt your purchase "
|
1348 |
-
"again."
|
1349 |
-
msgstr ""
|
1350 |
-
|
1351 |
-
#: woocommerce/template/checkout/thankyou.php:33
|
1352 |
-
msgid "Pay"
|
1353 |
-
msgstr ""
|
1354 |
-
|
1355 |
-
#: woocommerce/template/checkout/thankyou.php:35
|
1356 |
-
msgid "My account"
|
1357 |
-
msgstr ""
|
1358 |
-
|
1359 |
-
#: woocommerce/template/checkout/thankyou.php:41
|
1360 |
-
#: woocommerce/template/checkout/thankyou.php:83
|
1361 |
-
msgid "Thank you. Your order has been received."
|
1362 |
-
msgstr ""
|
1363 |
-
|
1364 |
-
#: woocommerce/template/checkout/thankyou.php:46
|
1365 |
-
msgid "Order number:"
|
1366 |
-
msgstr ""
|
1367 |
-
|
1368 |
-
#: woocommerce/template/checkout/thankyou.php:51
|
1369 |
-
msgid "Date:"
|
1370 |
-
msgstr ""
|
1371 |
-
|
1372 |
-
#: woocommerce/template/checkout/thankyou.php:57
|
1373 |
-
msgid "Email:"
|
1374 |
-
msgstr ""
|
1375 |
-
|
1376 |
-
#: woocommerce/template/checkout/thankyou.php:63
|
1377 |
-
msgid "Total:"
|
1378 |
-
msgstr ""
|
1379 |
-
|
1380 |
-
#: woocommerce/template/checkout/thankyou.php:69
|
1381 |
-
msgid "Payment method:"
|
1382 |
-
msgstr ""
|
1383 |
-
|
1384 |
-
#: woocommerce/template/global/form-login.php:34
|
1385 |
-
msgid "Username or email"
|
1386 |
-
msgstr ""
|
1387 |
-
|
1388 |
-
#: woocommerce/template/global/form-login.php:38
|
1389 |
-
msgid "Password"
|
1390 |
-
msgstr ""
|
1391 |
-
|
1392 |
-
#: woocommerce/template/global/form-login.php:48
|
1393 |
-
msgid "Login"
|
1394 |
-
msgstr ""
|
1395 |
-
|
1396 |
-
#: woocommerce/template/global/form-login.php:53
|
1397 |
-
msgid "Remember me"
|
1398 |
-
msgstr ""
|
1399 |
-
|
1400 |
-
#: woocommerce/template/global/form-login.php:57
|
1401 |
-
msgid "Lost your password?"
|
1402 |
-
msgstr ""
|
1403 |
-
|
1404 |
-
#. Plugin Name of the plugin/theme
|
1405 |
-
msgid "CartFlows"
|
1406 |
-
msgstr ""
|
1407 |
-
|
1408 |
-
#. Author URI of the plugin/theme
|
1409 |
-
msgid "https://cartflows.com/"
|
1410 |
-
msgstr ""
|
1411 |
-
|
1412 |
-
#. Description of the plugin/theme
|
1413 |
-
msgid "Create beautiful checkout pages & sales flows for WooCommerce."
|
1414 |
-
msgstr ""
|
1415 |
-
|
1416 |
-
#. Author of the plugin/theme
|
1417 |
-
msgid "CartFlows Inc"
|
1418 |
-
msgstr ""
|
1419 |
-
|
1420 |
-
#: modules/flow/classes/class-cartflows-flow-post-type.php:55
|
1421 |
-
msgctxt "flow general name"
|
1422 |
-
msgid "Flows"
|
1423 |
-
msgstr ""
|
1424 |
-
|
1425 |
-
#: modules/flow/classes/class-cartflows-flow-post-type.php:56
|
1426 |
-
msgctxt "flow singular name"
|
1427 |
-
msgid "Flow"
|
1428 |
-
msgstr ""
|
1429 |
-
|
1430 |
-
#: modules/flow/classes/class-cartflows-step-post-type.php:144
|
1431 |
-
msgctxt "flow step general name"
|
1432 |
-
msgid "Steps"
|
1433 |
-
msgstr ""
|
1434 |
-
|
1435 |
-
#: modules/flow/classes/class-cartflows-step-post-type.php:145
|
1436 |
-
msgctxt "flow step singular name"
|
1437 |
-
msgid "Step"
|
1438 |
-
msgstr ""
|
1439 |
-
|
1440 |
-
#: modules/flow/classes/class-cartflows-step-post-type.php:264
|
1441 |
-
msgctxt "cartflows"
|
1442 |
-
msgid "Template for Page Builders"
|
1443 |
msgstr ""
|
1 |
+
# Copyright (C) 2019 CartFlows Inc
|
2 |
+
# This file is distributed under the same license as the CartFlows package.
|
3 |
+
msgid ""
|
4 |
+
msgstr ""
|
5 |
+
"Project-Id-Version: CartFlows 1.1.18\n"
|
6 |
+
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/cartflows\n"
|
7 |
+
"POT-Creation-Date: 2019-05-10 10:29:04+00:00\n"
|
8 |
+
"MIME-Version: 1.0\n"
|
9 |
+
"Content-Type: text/plain; charset=utf-8\n"
|
10 |
+
"Content-Transfer-Encoding: 8bit\n"
|
11 |
+
"PO-Revision-Date: 2019-MO-DA HO:MI+ZONE\n"
|
12 |
+
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
13 |
+
"Language-Team: LANGUAGE <LL@li.org>\n"
|
14 |
+
"Language: en\n"
|
15 |
+
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
16 |
+
"X-Poedit-Country: United States\n"
|
17 |
+
"X-Poedit-SourceCharset: UTF-8\n"
|
18 |
+
"X-Poedit-KeywordsList: "
|
19 |
+
"__;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_"
|
20 |
+
"attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c;\n"
|
21 |
+
"X-Poedit-Basepath: ../\n"
|
22 |
+
"X-Poedit-SearchPath-0: .\n"
|
23 |
+
"X-Poedit-Bookmarks: \n"
|
24 |
+
"X-Textdomain-Support: yes\n"
|
25 |
+
"X-Generator: grunt-wp-i18n 1.0.3\n"
|
26 |
+
|
27 |
+
#: classes/batch-process/class-cartflows-importer-elementor.php:44
|
28 |
+
msgid "Invalid content."
|
29 |
+
msgstr ""
|
30 |
+
|
31 |
+
#: classes/batch-process/class-cartflows-importer-elementor.php:52
|
32 |
+
msgid "Invalid content. Expected an array."
|
33 |
+
msgstr ""
|
34 |
+
|
35 |
+
#: classes/batch-process/helpers/class-wp-background-process.php:435
|
36 |
+
msgid "Every %d Minutes"
|
37 |
+
msgstr ""
|
38 |
+
|
39 |
+
#: classes/class-cartflows-admin-fields.php:162
|
40 |
+
msgid "Select"
|
41 |
+
msgstr ""
|
42 |
+
|
43 |
+
#: classes/class-cartflows-admin-fields.php:165
|
44 |
+
msgid "No Checkout Steps"
|
45 |
+
msgstr ""
|
46 |
+
|
47 |
+
#: classes/class-cartflows-admin-fields.php:191
|
48 |
+
#. translators: %s: link
|
49 |
+
msgid ""
|
50 |
+
"Be sure not to add any product in above selected Global Checkout step. "
|
51 |
+
"Please read information about how to set up Global Checkout %1$shere%2$s."
|
52 |
+
msgstr ""
|
53 |
+
|
54 |
+
#: classes/class-cartflows-admin.php:136 classes/class-cartflows-admin.php:137
|
55 |
+
#: includes/admin/cartflows-general-bck.php:34
|
56 |
+
msgid "Settings"
|
57 |
+
msgstr ""
|
58 |
+
|
59 |
+
#: classes/class-cartflows-admin.php:380
|
60 |
+
msgid "Flows Library"
|
61 |
+
msgstr ""
|
62 |
+
|
63 |
+
#: classes/class-cartflows-admin.php:387
|
64 |
+
#: modules/flow/view/meta-flow-steps.php:145
|
65 |
+
msgid "Ready Templates"
|
66 |
+
msgstr ""
|
67 |
+
|
68 |
+
#: classes/class-cartflows-admin.php:390
|
69 |
+
#: modules/flow/view/meta-flow-steps.php:148
|
70 |
+
msgid "Create Your Own"
|
71 |
+
msgstr ""
|
72 |
+
|
73 |
+
#: classes/class-cartflows-admin.php:401
|
74 |
+
#: modules/flow/view/meta-flow-steps.php:160
|
75 |
+
msgid "Search Sites"
|
76 |
+
msgstr ""
|
77 |
+
|
78 |
+
#: classes/class-cartflows-admin.php:402
|
79 |
+
#: modules/flow/view/meta-flow-steps.php:161
|
80 |
+
msgid "Search Flow..."
|
81 |
+
msgstr ""
|
82 |
+
|
83 |
+
#: classes/class-cartflows-admin.php:419
|
84 |
+
msgid "Design Your Flow"
|
85 |
+
msgstr ""
|
86 |
+
|
87 |
+
#: classes/class-cartflows-admin.php:420
|
88 |
+
#: modules/flow/view/meta-flow-steps.php:192
|
89 |
+
msgid "Learn How"
|
90 |
+
msgstr ""
|
91 |
+
|
92 |
+
#: classes/class-cartflows-api.php:368
|
93 |
+
msgid "Request successfully processed!"
|
94 |
+
msgstr ""
|
95 |
+
|
96 |
+
#: classes/class-cartflows-cloning.php:423
|
97 |
+
msgid "Clone this flow"
|
98 |
+
msgstr ""
|
99 |
+
|
100 |
+
#: classes/class-cartflows-cloning.php:423
|
101 |
+
msgid "Clone"
|
102 |
+
msgstr ""
|
103 |
+
|
104 |
+
#: classes/class-cartflows-flow-frontend.php:52
|
105 |
+
msgid ""
|
106 |
+
"Test mode is active — which displays random products for previewing. It can "
|
107 |
+
"be deactivated from the flow settings in the admin dashboard."
|
108 |
+
msgstr ""
|
109 |
+
|
110 |
+
#: classes/class-cartflows-importer.php:80
|
111 |
+
msgid "Export this flow"
|
112 |
+
msgstr ""
|
113 |
+
|
114 |
+
#: classes/class-cartflows-importer.php:80 includes/exporter.php:18
|
115 |
+
msgid "Export"
|
116 |
+
msgstr ""
|
117 |
+
|
118 |
+
#: classes/class-cartflows-importer.php:91
|
119 |
+
msgid "Flow Export"
|
120 |
+
msgstr ""
|
121 |
+
|
122 |
+
#: classes/class-cartflows-importer.php:92
|
123 |
+
msgid "Flow Import"
|
124 |
+
msgstr ""
|
125 |
+
|
126 |
+
#: classes/class-cartflows-importer.php:103
|
127 |
+
msgid "No post to export has been supplied!"
|
128 |
+
msgstr ""
|
129 |
+
|
130 |
+
#: classes/class-cartflows-importer.php:294
|
131 |
+
msgid "Please upload a valid .json file"
|
132 |
+
msgstr ""
|
133 |
+
|
134 |
+
#: classes/class-cartflows-importer.php:300
|
135 |
+
msgid "Please upload a file to import"
|
136 |
+
msgstr ""
|
137 |
+
|
138 |
+
#: classes/class-cartflows-importer.php:438
|
139 |
+
msgid "Successfully imported flows."
|
140 |
+
msgstr ""
|
141 |
+
|
142 |
+
#: classes/class-cartflows-importer.php:470
|
143 |
+
msgid "Loading Steps"
|
144 |
+
msgstr ""
|
145 |
+
|
146 |
+
#: classes/class-cartflows-importer.php:472
|
147 |
+
msgid "Getting steps from the cloud. Please wait for the moment."
|
148 |
+
msgstr ""
|
149 |
+
|
150 |
+
#: classes/class-cartflows-importer.php:483
|
151 |
+
msgid "Searching Template.."
|
152 |
+
msgstr ""
|
153 |
+
|
154 |
+
#: classes/class-cartflows-importer.php:485
|
155 |
+
msgid "Getting templates from the cloud. Please wait for the moment."
|
156 |
+
msgstr ""
|
157 |
+
|
158 |
+
#: classes/class-cartflows-importer.php:494
|
159 |
+
msgid "Importing.."
|
160 |
+
msgstr ""
|
161 |
+
|
162 |
+
#: classes/class-cartflows-importer.php:503
|
163 |
+
#: classes/class-cartflows-importer.php:543
|
164 |
+
msgid "Imported"
|
165 |
+
msgstr ""
|
166 |
+
|
167 |
+
#: classes/class-cartflows-importer.php:504
|
168 |
+
#: classes/class-cartflows-importer.php:544
|
169 |
+
msgid "Thanks for patience"
|
170 |
+
msgstr ""
|
171 |
+
|
172 |
+
#: classes/class-cartflows-importer.php:513
|
173 |
+
#: classes/class-cartflows-importer.php:525
|
174 |
+
msgid "Coming Soon!"
|
175 |
+
msgstr ""
|
176 |
+
|
177 |
+
#: classes/class-cartflows-importer.php:544
|
178 |
+
msgid "Redirecting to the Elementor edit window."
|
179 |
+
msgstr ""
|
180 |
+
|
181 |
+
#: classes/class-cartflows-importer.php:591
|
182 |
+
#: classes/class-cartflows-importer.php:675
|
183 |
+
msgid "Pro"
|
184 |
+
msgstr ""
|
185 |
+
|
186 |
+
#: classes/class-cartflows-importer.php:614
|
187 |
+
#: classes/class-cartflows-importer.php:701
|
188 |
+
msgid "Activate License"
|
189 |
+
msgstr ""
|
190 |
+
|
191 |
+
#: classes/class-cartflows-importer.php:616
|
192 |
+
#: classes/class-cartflows-importer.php:703
|
193 |
+
msgid "Get Pro"
|
194 |
+
msgstr ""
|
195 |
+
|
196 |
+
#: classes/class-cartflows-importer.php:641
|
197 |
+
msgid "Create"
|
198 |
+
msgstr ""
|
199 |
+
|
200 |
+
#: classes/class-cartflows-importer.php:720
|
201 |
+
msgid "Under Maintenance.."
|
202 |
+
msgstr ""
|
203 |
+
|
204 |
+
#: classes/class-cartflows-importer.php:721
|
205 |
+
msgid ""
|
206 |
+
"If you are seeing this message, most likely our servers are under routine "
|
207 |
+
"maintenance and we will be back shortly."
|
208 |
+
msgstr ""
|
209 |
+
|
210 |
+
#: classes/class-cartflows-importer.php:722
|
211 |
+
msgid ""
|
212 |
+
"In rare case, it is possible your website is having trouble connecting with "
|
213 |
+
"ours. If you need help, please feel free to get in touch with us from our "
|
214 |
+
"website.."
|
215 |
+
msgstr ""
|
216 |
+
|
217 |
+
#: classes/class-cartflows-importer.php:752
|
218 |
+
#. translators: %s: Plugin string
|
219 |
+
msgid ""
|
220 |
+
"%1$s to see CartFlows templates. If you prefer another page builder tool, "
|
221 |
+
"you can <a href=\"%2$s\" target=\"blank\">select it here</a>."
|
222 |
+
msgstr ""
|
223 |
+
|
224 |
+
#: classes/class-cartflows-importer.php:767
|
225 |
+
msgid "All"
|
226 |
+
msgstr ""
|
227 |
+
|
228 |
+
#: classes/class-cartflows-importer.php:770
|
229 |
+
msgid "Select Step Type"
|
230 |
+
msgstr ""
|
231 |
+
|
232 |
+
#: classes/class-cartflows-importer.php:847
|
233 |
+
msgid "Import from Cloud"
|
234 |
+
msgstr ""
|
235 |
+
|
236 |
+
#: classes/class-cartflows-importer.php:1149
|
237 |
+
#: modules/flow/classes/class-cartflows-flow-meta.php:224
|
238 |
+
msgid "Landing Page"
|
239 |
+
msgstr ""
|
240 |
+
|
241 |
+
#: classes/class-cartflows-importer.php:1150
|
242 |
+
#: modules/flow/classes/class-cartflows-flow-meta.php:225
|
243 |
+
msgid "Checkout Page"
|
244 |
+
msgstr ""
|
245 |
+
|
246 |
+
#: classes/class-cartflows-importer.php:1151
|
247 |
+
#: modules/flow/classes/class-cartflows-flow-meta.php:226
|
248 |
+
msgid "Thank You Page"
|
249 |
+
msgstr ""
|
250 |
+
|
251 |
+
#: classes/class-cartflows-importer.php:1259
|
252 |
+
#. translators: %s: template ID
|
253 |
+
msgid "Invalid template id %1$s or post id %2$s."
|
254 |
+
msgstr ""
|
255 |
+
|
256 |
+
#: classes/class-cartflows-importer.php:1317
|
257 |
+
#. translators: %s: flow ID
|
258 |
+
msgid "Invalid flow id %1$s OR step type %2$s."
|
259 |
+
msgstr ""
|
260 |
+
|
261 |
+
#: classes/class-cartflows-importer.php:1438
|
262 |
+
msgid ""
|
263 |
+
"Elementor is not activated. Please activate plugin Elementor Page Builder "
|
264 |
+
"to import the step."
|
265 |
+
msgstr ""
|
266 |
+
|
267 |
+
#: classes/class-cartflows-importer.php:1556
|
268 |
+
msgid "Plugin Successfully Activated"
|
269 |
+
msgstr ""
|
270 |
+
|
271 |
+
#: classes/class-cartflows-loader.php:368
|
272 |
+
#. translators: %s: html tags
|
273 |
+
msgid ""
|
274 |
+
"The %1$sCartFlows%2$s plugin requires %1$sWooCommerce%2$s plugin installed "
|
275 |
+
"& activated."
|
276 |
+
msgstr ""
|
277 |
+
|
278 |
+
#: classes/class-cartflows-loader.php:378
|
279 |
+
msgid "Activate WooCommerce"
|
280 |
+
msgstr ""
|
281 |
+
|
282 |
+
#: classes/class-cartflows-loader.php:386
|
283 |
+
msgid "Install WooCommerce"
|
284 |
+
msgstr ""
|
285 |
+
|
286 |
+
#: classes/class-cartflows-meta-fields.php:86
|
287 |
+
msgid "Thin 100"
|
288 |
+
msgstr ""
|
289 |
+
|
290 |
+
#: classes/class-cartflows-meta-fields.php:87
|
291 |
+
msgid "Extra-Light 200"
|
292 |
+
msgstr ""
|
293 |
+
|
294 |
+
#: classes/class-cartflows-meta-fields.php:88
|
295 |
+
msgid "Light 300"
|
296 |
+
msgstr ""
|
297 |
+
|
298 |
+
#: classes/class-cartflows-meta-fields.php:89
|
299 |
+
msgid "Normal 400"
|
300 |
+
msgstr ""
|
301 |
+
|
302 |
+
#: classes/class-cartflows-meta-fields.php:90
|
303 |
+
msgid "Medium 500"
|
304 |
+
msgstr ""
|
305 |
+
|
306 |
+
#: classes/class-cartflows-meta-fields.php:91
|
307 |
+
msgid "Semi-Bold 600"
|
308 |
+
msgstr ""
|
309 |
+
|
310 |
+
#: classes/class-cartflows-meta-fields.php:92
|
311 |
+
msgid "Bold 700"
|
312 |
+
msgstr ""
|
313 |
+
|
314 |
+
#: classes/class-cartflows-meta-fields.php:93
|
315 |
+
msgid "Extra-Bold 800"
|
316 |
+
msgstr ""
|
317 |
+
|
318 |
+
#: classes/class-cartflows-meta-fields.php:94
|
319 |
+
msgid "Ultra-Bold 900"
|
320 |
+
msgstr ""
|
321 |
+
|
322 |
+
#: classes/class-cartflows-meta-fields.php:217
|
323 |
+
#: classes/class-cartflows-meta-fields.php:325
|
324 |
+
#: classes/class-cartflows-meta-fields.php:1417
|
325 |
+
msgid "Remove"
|
326 |
+
msgstr ""
|
327 |
+
|
328 |
+
#: classes/class-cartflows-meta-fields.php:446
|
329 |
+
msgid "Field Width"
|
330 |
+
msgstr ""
|
331 |
+
|
332 |
+
#: classes/class-cartflows-meta-fields.php:450
|
333 |
+
msgid "33%"
|
334 |
+
msgstr ""
|
335 |
+
|
336 |
+
#: classes/class-cartflows-meta-fields.php:451
|
337 |
+
msgid "50%"
|
338 |
+
msgstr ""
|
339 |
+
|
340 |
+
#: classes/class-cartflows-meta-fields.php:452
|
341 |
+
msgid "100%"
|
342 |
+
msgstr ""
|
343 |
+
|
344 |
+
#: classes/class-cartflows-meta-fields.php:463
|
345 |
+
msgid "Field Label"
|
346 |
+
msgstr ""
|
347 |
+
|
348 |
+
#: classes/class-cartflows-meta-fields.php:477
|
349 |
+
msgid "Options"
|
350 |
+
msgstr ""
|
351 |
+
|
352 |
+
#: classes/class-cartflows-meta-fields.php:492
|
353 |
+
#: classes/class-cartflows-meta-fields.php:505
|
354 |
+
#: modules/checkout/classes/class-cartflows-checkout-meta.php:459
|
355 |
+
msgid "Default"
|
356 |
+
msgstr ""
|
357 |
+
|
358 |
+
#: classes/class-cartflows-meta-fields.php:496
|
359 |
+
msgid "Checked"
|
360 |
+
msgstr ""
|
361 |
+
|
362 |
+
#: classes/class-cartflows-meta-fields.php:497
|
363 |
+
msgid "Un-Checked"
|
364 |
+
msgstr ""
|
365 |
+
|
366 |
+
#: classes/class-cartflows-meta-fields.php:518
|
367 |
+
msgid "Placeholder"
|
368 |
+
msgstr ""
|
369 |
+
|
370 |
+
#: classes/class-cartflows-meta-fields.php:530
|
371 |
+
msgid "Required"
|
372 |
+
msgstr ""
|
373 |
+
|
374 |
+
#: classes/class-cartflows-meta-fields.php:542
|
375 |
+
msgid "Enable this field"
|
376 |
+
msgstr ""
|
377 |
+
|
378 |
+
#: classes/class-cartflows-meta-fields.php:562
|
379 |
+
msgid "Label"
|
380 |
+
msgstr ""
|
381 |
+
|
382 |
+
#: classes/class-cartflows-meta-fields.php:990
|
383 |
+
#: classes/class-cartflows-meta-fields.php:1409
|
384 |
+
msgid "Search for a product…"
|
385 |
+
msgstr ""
|
386 |
+
|
387 |
+
#: classes/class-cartflows-meta-fields.php:1031
|
388 |
+
msgid "Search for a coupon…"
|
389 |
+
msgstr ""
|
390 |
+
|
391 |
+
#: classes/class-cartflows-meta.php:34
|
392 |
+
msgid "Update"
|
393 |
+
msgstr ""
|
394 |
+
|
395 |
+
#: classes/class-cartflows-meta.php:42
|
396 |
+
#: modules/flow/classes/class-cartflows-flow-meta.php:84
|
397 |
+
msgid "Back to edit Flow"
|
398 |
+
msgstr ""
|
399 |
+
|
400 |
+
#: classes/class-cartflows-meta.php:63
|
401 |
+
#: modules/checkout/classes/class-cartflows-checkout-meta.php:191
|
402 |
+
#: modules/landing/classes/class-cartflows-landing-meta.php:136
|
403 |
+
#: modules/thankyou/classes/class-cartflows-thankyou-meta.php:148
|
404 |
+
msgid "Custom Script"
|
405 |
+
msgstr ""
|
406 |
+
|
407 |
+
#: classes/class-cartflows-meta.php:66
|
408 |
+
msgid ""
|
409 |
+
"Custom script lets you add your own custom script on front end of this flow "
|
410 |
+
"page."
|
411 |
+
msgstr ""
|
412 |
+
|
413 |
+
#: classes/class-cartflows-wizard.php:45
|
414 |
+
msgid "Thanks for installing and using CartFlows!"
|
415 |
+
msgstr ""
|
416 |
+
|
417 |
+
#: classes/class-cartflows-wizard.php:46
|
418 |
+
msgid ""
|
419 |
+
"It is easy to use the CartFlows. Please use the setup wizard to quick start "
|
420 |
+
"setup."
|
421 |
+
msgstr ""
|
422 |
+
|
423 |
+
#: classes/class-cartflows-wizard.php:71
|
424 |
+
#: includes/admin/cartflows-general-bck.php:24
|
425 |
+
msgid "Welcome"
|
426 |
+
msgstr ""
|
427 |
+
|
428 |
+
#: classes/class-cartflows-wizard.php:76 classes/class-cartflows-wizard.php:259
|
429 |
+
msgid "Page Builder"
|
430 |
+
msgstr ""
|
431 |
+
|
432 |
+
#: classes/class-cartflows-wizard.php:81
|
433 |
+
msgid "Ready!"
|
434 |
+
msgstr ""
|
435 |
+
|
436 |
+
#: classes/class-cartflows-wizard.php:150
|
437 |
+
msgid "CartFlows Setup"
|
438 |
+
msgstr ""
|
439 |
+
|
440 |
+
#: classes/class-cartflows-wizard.php:176
|
441 |
+
msgid "Exit Setup Wizard"
|
442 |
+
msgstr ""
|
443 |
+
|
444 |
+
#: classes/class-cartflows-wizard.php:225
|
445 |
+
msgid "Thank you for choosing CartFlows!"
|
446 |
+
msgstr ""
|
447 |
+
|
448 |
+
#: classes/class-cartflows-wizard.php:232
|
449 |
+
msgid "Lets Go »"
|
450 |
+
msgstr ""
|
451 |
+
|
452 |
+
#: classes/class-cartflows-wizard.php:260
|
453 |
+
msgid "Select a page builder which you want to use for creating your new flows."
|
454 |
+
msgstr ""
|
455 |
+
|
456 |
+
#: classes/class-cartflows-wizard.php:265
|
457 |
+
msgid "Select Page Builder"
|
458 |
+
msgstr ""
|
459 |
+
|
460 |
+
#: classes/class-cartflows-wizard.php:266
|
461 |
+
msgid "Add locations for where this Schema should appear."
|
462 |
+
msgstr ""
|
463 |
+
|
464 |
+
#: classes/class-cartflows-wizard.php:273
|
465 |
+
#: includes/admin/cartflows-general.php:76
|
466 |
+
msgid "Elementor"
|
467 |
+
msgstr ""
|
468 |
+
|
469 |
+
#: classes/class-cartflows-wizard.php:294
|
470 |
+
msgid "The above plugin will be installed and activated for you!"
|
471 |
+
msgstr ""
|
472 |
+
|
473 |
+
#: classes/class-cartflows-wizard.php:297
|
474 |
+
msgid "« Previous"
|
475 |
+
msgstr ""
|
476 |
+
|
477 |
+
#: classes/class-cartflows-wizard.php:300
|
478 |
+
#: classes/class-cartflows-wizard.php:301
|
479 |
+
msgid "Next »"
|
480 |
+
msgstr ""
|
481 |
+
|
482 |
+
#: classes/class-cartflows-wizard.php:393
|
483 |
+
msgid "Congratulations!"
|
484 |
+
msgstr ""
|
485 |
+
|
486 |
+
#: classes/class-cartflows-wizard.php:400
|
487 |
+
msgid ""
|
488 |
+
"You've successfully completed the setup before you begin setting now you "
|
489 |
+
"can use it."
|
490 |
+
msgstr ""
|
491 |
+
|
492 |
+
#: classes/class-cartflows-wizard.php:414
|
493 |
+
msgid "Create a flow"
|
494 |
+
msgstr ""
|
495 |
+
|
496 |
+
#: includes/admin/cartflows-admin.php:19
|
497 |
+
#: includes/admin/cartflows-general.php:33
|
498 |
+
msgid "Modernizing WordPress eCommerce!"
|
499 |
+
msgstr ""
|
500 |
+
|
501 |
+
#: includes/admin/cartflows-admin.php:29
|
502 |
+
msgid "Settings saved successfully."
|
503 |
+
msgstr ""
|
504 |
+
|
505 |
+
#: includes/admin/cartflows-general-bck.php:10
|
506 |
+
msgid "Selec"
|
507 |
+
msgstr ""
|
508 |
+
|
509 |
+
#: includes/admin/cartflows-general-bck.php:22
|
510 |
+
msgid "General"
|
511 |
+
msgstr ""
|
512 |
+
|
513 |
+
#: includes/admin/cartflows-general.php:18
|
514 |
+
#: includes/admin/cartflows-general.php:41
|
515 |
+
msgid "General Settings"
|
516 |
+
msgstr ""
|
517 |
+
|
518 |
+
#: includes/admin/cartflows-general.php:25
|
519 |
+
msgid "Getting Started"
|
520 |
+
msgstr ""
|
521 |
+
|
522 |
+
#: includes/admin/cartflows-general.php:54
|
523 |
+
msgid "Disallow search engines from indexing flows"
|
524 |
+
msgstr ""
|
525 |
+
|
526 |
+
#: includes/admin/cartflows-general.php:63
|
527 |
+
#: modules/flow/view/meta-flow-steps.php:87
|
528 |
+
msgid "Global Checkout"
|
529 |
+
msgstr ""
|
530 |
+
|
531 |
+
#: includes/admin/cartflows-general.php:72
|
532 |
+
msgid "Show Templates designed with"
|
533 |
+
msgstr ""
|
534 |
+
|
535 |
+
#: includes/admin/cartflows-general.php:73
|
536 |
+
msgid ""
|
537 |
+
"CartFlows offers flow templates that can be imported in one click. These "
|
538 |
+
"templates are available in few different page builders. Please choose your "
|
539 |
+
"preferred page builder from the list so you will only see templates that "
|
540 |
+
"are made using that page builder.."
|
541 |
+
msgstr ""
|
542 |
+
|
543 |
+
#: includes/admin/cartflows-general.php:77
|
544 |
+
msgid "Beaver Builder"
|
545 |
+
msgstr ""
|
546 |
+
|
547 |
+
#: includes/admin/cartflows-general.php:78
|
548 |
+
msgid "Divi"
|
549 |
+
msgstr ""
|
550 |
+
|
551 |
+
#: includes/admin/cartflows-general.php:79
|
552 |
+
msgid "Other"
|
553 |
+
msgstr ""
|
554 |
+
|
555 |
+
#: includes/admin/cartflows-general.php:88
|
556 |
+
msgid "Save Changes"
|
557 |
+
msgstr ""
|
558 |
+
|
559 |
+
#: includes/admin/cartflows-general.php:100
|
560 |
+
msgid "Knowledge Base"
|
561 |
+
msgstr ""
|
562 |
+
|
563 |
+
#: includes/admin/cartflows-general.php:104
|
564 |
+
msgid "Not sure how something works? Take a peek at the knowledge base and learn."
|
565 |
+
msgstr ""
|
566 |
+
|
567 |
+
#: includes/admin/cartflows-general.php:107
|
568 |
+
msgid "Visit Knowledge Base »"
|
569 |
+
msgstr ""
|
570 |
+
|
571 |
+
#: includes/admin/cartflows-general.php:115
|
572 |
+
msgid "Community"
|
573 |
+
msgstr ""
|
574 |
+
|
575 |
+
#: includes/admin/cartflows-general.php:119
|
576 |
+
msgid ""
|
577 |
+
"Join the community of super helpful CartFlows users. Say hello, ask "
|
578 |
+
"questions, give feedback and help each other!"
|
579 |
+
msgstr ""
|
580 |
+
|
581 |
+
#: includes/admin/cartflows-general.php:122
|
582 |
+
msgid "Join Our Facebook Group »"
|
583 |
+
msgstr ""
|
584 |
+
|
585 |
+
#: includes/admin/cartflows-general.php:130
|
586 |
+
msgid "Five Star Support"
|
587 |
+
msgstr ""
|
588 |
+
|
589 |
+
#: includes/admin/cartflows-general.php:134
|
590 |
+
msgid "Got a question? Get in touch with CartFlows developers. We're happy to help!"
|
591 |
+
msgstr ""
|
592 |
+
|
593 |
+
#: includes/admin/cartflows-general.php:137
|
594 |
+
msgid "Submit a Ticket »"
|
595 |
+
msgstr ""
|
596 |
+
|
597 |
+
#: includes/admin/cartflows-general.php:147
|
598 |
+
msgid "Load Minified CSS"
|
599 |
+
msgstr ""
|
600 |
+
|
601 |
+
#: includes/admin/cartflows-general.php:152
|
602 |
+
msgid ""
|
603 |
+
"Load the Minified CSS from here. Just Enable it by checking the below given "
|
604 |
+
"checkbox."
|
605 |
+
msgstr ""
|
606 |
+
|
607 |
+
#: includes/admin/cartflows-general.php:159
|
608 |
+
msgid "Load minified CSS & JS Files"
|
609 |
+
msgstr ""
|
610 |
+
|
611 |
+
#: includes/admin/cartflows-general.php:164
|
612 |
+
msgid "Save"
|
613 |
+
msgstr ""
|
614 |
+
|
615 |
+
#: includes/exporter.php:12
|
616 |
+
msgid "Export Flows to a JSON file"
|
617 |
+
msgstr ""
|
618 |
+
|
619 |
+
#: includes/exporter.php:13
|
620 |
+
msgid ""
|
621 |
+
"This tool allows you to generate and download a JSON file containing a list "
|
622 |
+
"of all flows."
|
623 |
+
msgstr ""
|
624 |
+
|
625 |
+
#: includes/importer.php:12
|
626 |
+
msgid "Import Flows to a JSON file"
|
627 |
+
msgstr ""
|
628 |
+
|
629 |
+
#: includes/importer.php:13
|
630 |
+
msgid "This tool allows you to import the flows from the JSON file."
|
631 |
+
msgstr ""
|
632 |
+
|
633 |
+
#: includes/importer.php:21
|
634 |
+
msgid "Import"
|
635 |
+
msgstr ""
|
636 |
+
|
637 |
+
#: modules/checkout/classes/class-cartflows-checkout-markup.php:161
|
638 |
+
#: modules/thankyou/classes/class-cartflows-thankyou-markup.php:62
|
639 |
+
msgid ""
|
640 |
+
"WooCommerce functions not exists. If you are in iframe, please reload the "
|
641 |
+
"iframe"
|
642 |
+
msgstr ""
|
643 |
+
|
644 |
+
#: modules/checkout/classes/class-cartflows-checkout-markup.php:177
|
645 |
+
msgid "Checkout ID not found"
|
646 |
+
msgstr ""
|
647 |
+
|
648 |
+
#: modules/checkout/classes/class-cartflows-checkout-markup.php:343
|
649 |
+
msgid "Variations Not set"
|
650 |
+
msgstr ""
|
651 |
+
|
652 |
+
#: modules/checkout/classes/class-cartflows-checkout-markup.php:352
|
653 |
+
msgid "This product can't be purcahsed"
|
654 |
+
msgstr ""
|
655 |
+
|
656 |
+
#: modules/checkout/classes/class-cartflows-checkout-markup.php:948
|
657 |
+
#: modules/checkout/classes/class-cartflows-checkout-markup.php:979
|
658 |
+
msgid "Coupon Code"
|
659 |
+
msgstr ""
|
660 |
+
|
661 |
+
#: modules/checkout/classes/class-cartflows-checkout-markup.php:953
|
662 |
+
#: modules/checkout/classes/class-cartflows-checkout-markup.php:988
|
663 |
+
msgid "Apply"
|
664 |
+
msgstr ""
|
665 |
+
|
666 |
+
#: modules/checkout/classes/class-cartflows-checkout-meta.php:68
|
667 |
+
msgid "Checkout Layout"
|
668 |
+
msgstr ""
|
669 |
+
|
670 |
+
#: modules/checkout/classes/class-cartflows-checkout-meta.php:155
|
671 |
+
#: modules/landing/classes/class-cartflows-landing-meta.php:130
|
672 |
+
#: modules/thankyou/classes/class-cartflows-thankyou-meta.php:130
|
673 |
+
msgid "Shortcodes"
|
674 |
+
msgstr ""
|
675 |
+
|
676 |
+
#: modules/checkout/classes/class-cartflows-checkout-meta.php:161
|
677 |
+
msgid "Select Product"
|
678 |
+
msgstr ""
|
679 |
+
|
680 |
+
#: modules/checkout/classes/class-cartflows-checkout-meta.php:167
|
681 |
+
msgid "Order Bump"
|
682 |
+
msgstr ""
|
683 |
+
|
684 |
+
#: modules/checkout/classes/class-cartflows-checkout-meta.php:173
|
685 |
+
msgid "Checkout Design"
|
686 |
+
msgstr ""
|
687 |
+
|
688 |
+
#: modules/checkout/classes/class-cartflows-checkout-meta.php:179
|
689 |
+
msgid "Checkout Fields"
|
690 |
+
msgstr ""
|
691 |
+
|
692 |
+
#: modules/checkout/classes/class-cartflows-checkout-meta.php:185
|
693 |
+
msgid "Logo (Optional)"
|
694 |
+
msgstr ""
|
695 |
+
|
696 |
+
#: modules/checkout/classes/class-cartflows-checkout-meta.php:250
|
697 |
+
msgid "Add this shortcode to your checkout page"
|
698 |
+
msgstr ""
|
699 |
+
|
700 |
+
#: modules/checkout/classes/class-cartflows-checkout-meta.php:302
|
701 |
+
#. translators: %s: link
|
702 |
+
msgid "Upgrade to %1$sCartFlows Pro%2$s for Order Bump feature"
|
703 |
+
msgstr ""
|
704 |
+
|
705 |
+
#: modules/checkout/classes/class-cartflows-checkout-meta.php:330
|
706 |
+
#. translators: %s: link
|
707 |
+
msgid "Upgrade to %1$sCartFlows Pro%2$s for Custom Fields feature"
|
708 |
+
msgstr ""
|
709 |
+
|
710 |
+
#: modules/checkout/classes/class-cartflows-checkout-meta.php:358
|
711 |
+
msgid "One Column (Available in CartFlows Pro) "
|
712 |
+
msgstr ""
|
713 |
+
|
714 |
+
#: modules/checkout/classes/class-cartflows-checkout-meta.php:359
|
715 |
+
msgid "Two Step (Available in CartFlows Pro) "
|
716 |
+
msgstr ""
|
717 |
+
|
718 |
+
#: modules/checkout/classes/class-cartflows-checkout-meta.php:365
|
719 |
+
msgid "Checkout Skin"
|
720 |
+
msgstr ""
|
721 |
+
|
722 |
+
#: modules/checkout/classes/class-cartflows-checkout-meta.php:369
|
723 |
+
msgid "One Column"
|
724 |
+
msgstr ""
|
725 |
+
|
726 |
+
#: modules/checkout/classes/class-cartflows-checkout-meta.php:370
|
727 |
+
msgid "Two Column"
|
728 |
+
msgstr ""
|
729 |
+
|
730 |
+
#: modules/checkout/classes/class-cartflows-checkout-meta.php:371
|
731 |
+
msgid "Two Step"
|
732 |
+
msgstr ""
|
733 |
+
|
734 |
+
#: modules/checkout/classes/class-cartflows-checkout-meta.php:380
|
735 |
+
msgid "Primary Color"
|
736 |
+
msgstr ""
|
737 |
+
|
738 |
+
#: modules/checkout/classes/class-cartflows-checkout-meta.php:389
|
739 |
+
#: modules/checkout/classes/class-cartflows-checkout-meta.php:424
|
740 |
+
#: modules/checkout/classes/class-cartflows-checkout-meta.php:470
|
741 |
+
#: modules/checkout/classes/class-cartflows-checkout-meta.php:562
|
742 |
+
#: modules/thankyou/classes/class-cartflows-thankyou-meta.php:203
|
743 |
+
#: modules/thankyou/classes/class-cartflows-thankyou-meta.php:226
|
744 |
+
msgid "Font Family"
|
745 |
+
msgstr ""
|
746 |
+
|
747 |
+
#: modules/checkout/classes/class-cartflows-checkout-meta.php:397
|
748 |
+
msgid "Advance Options"
|
749 |
+
msgstr ""
|
750 |
+
|
751 |
+
#: modules/checkout/classes/class-cartflows-checkout-meta.php:409
|
752 |
+
#: modules/thankyou/classes/class-cartflows-thankyou-meta.php:211
|
753 |
+
msgid "Heading"
|
754 |
+
msgstr ""
|
755 |
+
|
756 |
+
#: modules/checkout/classes/class-cartflows-checkout-meta.php:415
|
757 |
+
msgid "Heading Color"
|
758 |
+
msgstr ""
|
759 |
+
|
760 |
+
#: modules/checkout/classes/class-cartflows-checkout-meta.php:433
|
761 |
+
#: modules/checkout/classes/class-cartflows-checkout-meta.php:479
|
762 |
+
#: modules/checkout/classes/class-cartflows-checkout-meta.php:571
|
763 |
+
#: modules/thankyou/classes/class-cartflows-thankyou-meta.php:235
|
764 |
+
msgid "Font Weight"
|
765 |
+
msgstr ""
|
766 |
+
|
767 |
+
#: modules/checkout/classes/class-cartflows-checkout-meta.php:441
|
768 |
+
msgid "Input Fields"
|
769 |
+
msgstr ""
|
770 |
+
|
771 |
+
#: modules/checkout/classes/class-cartflows-checkout-meta.php:449
|
772 |
+
msgid "Floating Labels (Available in CartFlows Pro)"
|
773 |
+
msgstr ""
|
774 |
+
|
775 |
+
#: modules/checkout/classes/class-cartflows-checkout-meta.php:455
|
776 |
+
msgid "Style"
|
777 |
+
msgstr ""
|
778 |
+
|
779 |
+
#: modules/checkout/classes/class-cartflows-checkout-meta.php:460
|
780 |
+
msgid "Floating Labels"
|
781 |
+
msgstr ""
|
782 |
+
|
783 |
+
#: modules/checkout/classes/class-cartflows-checkout-meta.php:487
|
784 |
+
#: modules/checkout/classes/class-cartflows-checkout-meta.php:579
|
785 |
+
msgid "Size"
|
786 |
+
msgstr ""
|
787 |
+
|
788 |
+
#: modules/checkout/classes/class-cartflows-checkout-meta.php:491
|
789 |
+
#: modules/checkout/classes/class-cartflows-checkout-meta.php:583
|
790 |
+
msgid "Extra Small"
|
791 |
+
msgstr ""
|
792 |
+
|
793 |
+
#: modules/checkout/classes/class-cartflows-checkout-meta.php:492
|
794 |
+
#: modules/checkout/classes/class-cartflows-checkout-meta.php:584
|
795 |
+
msgid "Small"
|
796 |
+
msgstr ""
|
797 |
+
|
798 |
+
#: modules/checkout/classes/class-cartflows-checkout-meta.php:493
|
799 |
+
#: modules/checkout/classes/class-cartflows-checkout-meta.php:585
|
800 |
+
msgid "Medium"
|
801 |
+
msgstr ""
|
802 |
+
|
803 |
+
#: modules/checkout/classes/class-cartflows-checkout-meta.php:494
|
804 |
+
#: modules/checkout/classes/class-cartflows-checkout-meta.php:586
|
805 |
+
msgid "Large"
|
806 |
+
msgstr ""
|
807 |
+
|
808 |
+
#: modules/checkout/classes/class-cartflows-checkout-meta.php:495
|
809 |
+
#: modules/checkout/classes/class-cartflows-checkout-meta.php:587
|
810 |
+
msgid "Extra Large"
|
811 |
+
msgstr ""
|
812 |
+
|
813 |
+
#: modules/checkout/classes/class-cartflows-checkout-meta.php:496
|
814 |
+
#: modules/checkout/classes/class-cartflows-checkout-meta.php:588
|
815 |
+
msgid "Custom"
|
816 |
+
msgstr ""
|
817 |
+
|
818 |
+
#: modules/checkout/classes/class-cartflows-checkout-meta.php:503
|
819 |
+
#: modules/checkout/classes/class-cartflows-checkout-meta.php:595
|
820 |
+
msgid "Top Bottom Spacing"
|
821 |
+
msgstr ""
|
822 |
+
|
823 |
+
#: modules/checkout/classes/class-cartflows-checkout-meta.php:511
|
824 |
+
#: modules/checkout/classes/class-cartflows-checkout-meta.php:603
|
825 |
+
msgid "Left Right Spacing"
|
826 |
+
msgstr ""
|
827 |
+
|
828 |
+
#: modules/checkout/classes/class-cartflows-checkout-meta.php:519
|
829 |
+
msgid "Text / Placeholder Color"
|
830 |
+
msgstr ""
|
831 |
+
|
832 |
+
#: modules/checkout/classes/class-cartflows-checkout-meta.php:527
|
833 |
+
#: modules/checkout/classes/class-cartflows-checkout-meta.php:627
|
834 |
+
msgid "Background Color"
|
835 |
+
msgstr ""
|
836 |
+
|
837 |
+
#: modules/checkout/classes/class-cartflows-checkout-meta.php:535
|
838 |
+
#: modules/checkout/classes/class-cartflows-checkout-meta.php:643
|
839 |
+
msgid "Border Color"
|
840 |
+
msgstr ""
|
841 |
+
|
842 |
+
#: modules/checkout/classes/class-cartflows-checkout-meta.php:542
|
843 |
+
msgid "Label Color"
|
844 |
+
msgstr ""
|
845 |
+
|
846 |
+
#: modules/checkout/classes/class-cartflows-checkout-meta.php:555
|
847 |
+
msgid "Buttons"
|
848 |
+
msgstr ""
|
849 |
+
|
850 |
+
#: modules/checkout/classes/class-cartflows-checkout-meta.php:611
|
851 |
+
msgid "Text Color"
|
852 |
+
msgstr ""
|
853 |
+
|
854 |
+
#: modules/checkout/classes/class-cartflows-checkout-meta.php:619
|
855 |
+
msgid "Text Hover Color"
|
856 |
+
msgstr ""
|
857 |
+
|
858 |
+
#: modules/checkout/classes/class-cartflows-checkout-meta.php:635
|
859 |
+
msgid "Background Hover Color"
|
860 |
+
msgstr ""
|
861 |
+
|
862 |
+
#: modules/checkout/classes/class-cartflows-checkout-meta.php:651
|
863 |
+
msgid "Border Hover Color"
|
864 |
+
msgstr ""
|
865 |
+
|
866 |
+
#: modules/checkout/classes/class-cartflows-checkout-meta.php:664
|
867 |
+
msgid "Sections"
|
868 |
+
msgstr ""
|
869 |
+
|
870 |
+
#: modules/checkout/classes/class-cartflows-checkout-meta.php:670
|
871 |
+
msgid "Highlight Area Background Color"
|
872 |
+
msgstr ""
|
873 |
+
|
874 |
+
#: modules/checkout/classes/class-cartflows-checkout-meta.php:709
|
875 |
+
msgid "Header Logo"
|
876 |
+
msgstr ""
|
877 |
+
|
878 |
+
#: modules/checkout/classes/class-cartflows-checkout-meta.php:717
|
879 |
+
msgid "Logo Width (In px)"
|
880 |
+
msgstr ""
|
881 |
+
|
882 |
+
#: modules/checkout/templates/embed/checkout-template-simple.php:25
|
883 |
+
#: modules/checkout/templates/wcf-template.php:36
|
884 |
+
msgid "Your cart is currently empty."
|
885 |
+
msgstr ""
|
886 |
+
|
887 |
+
#: modules/checkout/templates/wcf-template.php:46
|
888 |
+
msgid "Copyright ©"
|
889 |
+
msgstr ""
|
890 |
+
|
891 |
+
#: modules/checkout/templates/wcf-template.php:50
|
892 |
+
msgid "All Rights Reserved"
|
893 |
+
msgstr ""
|
894 |
+
|
895 |
+
#: modules/flow/classes/class-cartflows-flow-meta.php:199
|
896 |
+
#. translators: %s flow id
|
897 |
+
msgid "Steps not created for flow - %s"
|
898 |
+
msgstr ""
|
899 |
+
|
900 |
+
#: modules/flow/classes/class-cartflows-flow-meta.php:213
|
901 |
+
#. translators: %s flow id
|
902 |
+
msgid "Steps already exists. Flow - %s"
|
903 |
+
msgstr ""
|
904 |
+
|
905 |
+
#: modules/flow/classes/class-cartflows-flow-meta.php:262
|
906 |
+
#. translators: %s flow id
|
907 |
+
msgid "Steps created for flow - %s"
|
908 |
+
msgstr ""
|
909 |
+
|
910 |
+
#: modules/flow/classes/class-cartflows-flow-meta.php:333
|
911 |
+
#. translators: %s flow id
|
912 |
+
msgid "Step not deleted for flow - %s"
|
913 |
+
msgstr ""
|
914 |
+
|
915 |
+
#: modules/flow/classes/class-cartflows-flow-meta.php:364
|
916 |
+
#. translators: %s flow id
|
917 |
+
msgid "Step deleted for flow - %s"
|
918 |
+
msgstr ""
|
919 |
+
|
920 |
+
#: modules/flow/classes/class-cartflows-flow-meta.php:387
|
921 |
+
#. translators: %s flow id
|
922 |
+
msgid "Steps not sorted for flow - %s"
|
923 |
+
msgstr ""
|
924 |
+
|
925 |
+
#: modules/flow/classes/class-cartflows-flow-meta.php:410
|
926 |
+
#. translators: %s flow id
|
927 |
+
msgid "Steps sorted for flow - %s"
|
928 |
+
msgstr ""
|
929 |
+
|
930 |
+
#: modules/flow/classes/class-cartflows-flow-meta.php:521
|
931 |
+
msgid "Flow Settings"
|
932 |
+
msgstr ""
|
933 |
+
|
934 |
+
#: modules/flow/classes/class-cartflows-flow-meta.php:606
|
935 |
+
msgid "Enable Test Mode"
|
936 |
+
msgstr ""
|
937 |
+
|
938 |
+
#: modules/flow/classes/class-cartflows-flow-meta.php:613
|
939 |
+
msgid ""
|
940 |
+
"Test mode adds random products in your flow, so you can preview it easily "
|
941 |
+
"while testing."
|
942 |
+
msgstr ""
|
943 |
+
|
944 |
+
#: modules/flow/classes/class-cartflows-flow-post-type.php:57
|
945 |
+
msgid "Search Flows"
|
946 |
+
msgstr ""
|
947 |
+
|
948 |
+
#: modules/flow/classes/class-cartflows-flow-post-type.php:58
|
949 |
+
msgid "All Flows"
|
950 |
+
msgstr ""
|
951 |
+
|
952 |
+
#: modules/flow/classes/class-cartflows-flow-post-type.php:59
|
953 |
+
msgid "Edit Flow"
|
954 |
+
msgstr ""
|
955 |
+
|
956 |
+
#: modules/flow/classes/class-cartflows-flow-post-type.php:60
|
957 |
+
msgid "View Flow"
|
958 |
+
msgstr ""
|
959 |
+
|
960 |
+
#: modules/flow/classes/class-cartflows-flow-post-type.php:61
|
961 |
+
#: modules/flow/classes/class-cartflows-flow-post-type.php:63
|
962 |
+
#: modules/flow/classes/class-cartflows-step-post-type.php:150
|
963 |
+
#: modules/flow/classes/class-cartflows-step-post-type.php:152
|
964 |
+
msgid "Add New"
|
965 |
+
msgstr ""
|
966 |
+
|
967 |
+
#: modules/flow/classes/class-cartflows-flow-post-type.php:62
|
968 |
+
msgid "Update Flow"
|
969 |
+
msgstr ""
|
970 |
+
|
971 |
+
#: modules/flow/classes/class-cartflows-flow-post-type.php:64
|
972 |
+
msgid "New Flow Name"
|
973 |
+
msgstr ""
|
974 |
+
|
975 |
+
#: modules/flow/classes/class-cartflows-flow-post-type.php:123
|
976 |
+
msgid "View"
|
977 |
+
msgstr ""
|
978 |
+
|
979 |
+
#: modules/flow/classes/class-cartflows-flow-post-type.php:230
|
980 |
+
msgid "Flows"
|
981 |
+
msgstr ""
|
982 |
+
|
983 |
+
#: modules/flow/classes/class-cartflows-flow-post-type.php:252
|
984 |
+
#: modules/flow/classes/class-cartflows-flow-post-type.php:258
|
985 |
+
#: modules/flow/classes/class-cartflows-step-post-type.php:413
|
986 |
+
#: modules/flow/classes/class-cartflows-step-post-type.php:419
|
987 |
+
#. translators: %s: singular custom post type name
|
988 |
+
msgid "%s updated."
|
989 |
+
msgstr ""
|
990 |
+
|
991 |
+
#: modules/flow/classes/class-cartflows-flow-post-type.php:254
|
992 |
+
#: modules/flow/classes/class-cartflows-step-post-type.php:415
|
993 |
+
#. translators: %s: singular custom post type name
|
994 |
+
msgid "Custom %s updated."
|
995 |
+
msgstr ""
|
996 |
+
|
997 |
+
#: modules/flow/classes/class-cartflows-flow-post-type.php:256
|
998 |
+
#: modules/flow/classes/class-cartflows-step-post-type.php:417
|
999 |
+
#. translators: %s: singular custom post type name
|
1000 |
+
msgid "Custom %s deleted."
|
1001 |
+
msgstr ""
|
1002 |
+
|
1003 |
+
#: modules/flow/classes/class-cartflows-flow-post-type.php:260
|
1004 |
+
#: modules/flow/classes/class-cartflows-step-post-type.php:421
|
1005 |
+
#. translators: %1$s: singular custom post type name ,%2$s: date and time of
|
1006 |
+
#. the revision
|
1007 |
+
msgid "%1$s restored to revision from %2$s"
|
1008 |
+
msgstr ""
|
1009 |
+
|
1010 |
+
#: modules/flow/classes/class-cartflows-flow-post-type.php:262
|
1011 |
+
#: modules/flow/classes/class-cartflows-step-post-type.php:423
|
1012 |
+
#. translators: %s: singular custom post type name
|
1013 |
+
msgid "%s published."
|
1014 |
+
msgstr ""
|
1015 |
+
|
1016 |
+
#: modules/flow/classes/class-cartflows-flow-post-type.php:264
|
1017 |
+
#: modules/flow/classes/class-cartflows-step-post-type.php:425
|
1018 |
+
#. translators: %s: singular custom post type name
|
1019 |
+
msgid "%s saved."
|
1020 |
+
msgstr ""
|
1021 |
+
|
1022 |
+
#: modules/flow/classes/class-cartflows-flow-post-type.php:266
|
1023 |
+
#: modules/flow/classes/class-cartflows-step-post-type.php:427
|
1024 |
+
#. translators: %s: singular custom post type name
|
1025 |
+
msgid "%s submitted."
|
1026 |
+
msgstr ""
|
1027 |
+
|
1028 |
+
#: modules/flow/classes/class-cartflows-flow-post-type.php:268
|
1029 |
+
#: modules/flow/classes/class-cartflows-step-post-type.php:429
|
1030 |
+
#. translators: %s: singular custom post type name
|
1031 |
+
msgid "%s scheduled for."
|
1032 |
+
msgstr ""
|
1033 |
+
|
1034 |
+
#: modules/flow/classes/class-cartflows-flow-post-type.php:270
|
1035 |
+
#: modules/flow/classes/class-cartflows-step-post-type.php:431
|
1036 |
+
#. translators: %s: singular custom post type name
|
1037 |
+
msgid "%s draft updated."
|
1038 |
+
msgstr ""
|
1039 |
+
|
1040 |
+
#: modules/flow/classes/class-cartflows-flow-shortcodes.php:148
|
1041 |
+
#: modules/widgets/class-cartflows-next-step.php:79
|
1042 |
+
msgid "Next Step"
|
1043 |
+
msgstr ""
|
1044 |
+
|
1045 |
+
#: modules/flow/classes/class-cartflows-step-post-type.php:146
|
1046 |
+
msgid "Search Steps"
|
1047 |
+
msgstr ""
|
1048 |
+
|
1049 |
+
#: modules/flow/classes/class-cartflows-step-post-type.php:147
|
1050 |
+
msgid "All Steps"
|
1051 |
+
msgstr ""
|
1052 |
+
|
1053 |
+
#: modules/flow/classes/class-cartflows-step-post-type.php:148
|
1054 |
+
#: modules/flow/view/meta-flow-steps.php:99
|
1055 |
+
msgid "Edit Step"
|
1056 |
+
msgstr ""
|
1057 |
+
|
1058 |
+
#: modules/flow/classes/class-cartflows-step-post-type.php:149
|
1059 |
+
#: modules/flow/view/meta-flow-steps.php:95
|
1060 |
+
msgid "View Step"
|
1061 |
+
msgstr ""
|
1062 |
+
|
1063 |
+
#: modules/flow/classes/class-cartflows-step-post-type.php:151
|
1064 |
+
msgid "Update Step"
|
1065 |
+
msgstr ""
|
1066 |
+
|
1067 |
+
#: modules/flow/classes/class-cartflows-step-post-type.php:153
|
1068 |
+
msgid "New Step Name"
|
1069 |
+
msgstr ""
|
1070 |
+
|
1071 |
+
#: modules/flow/classes/class-cartflows-step-post-type.php:176
|
1072 |
+
msgid "Step Type"
|
1073 |
+
msgstr ""
|
1074 |
+
|
1075 |
+
#: modules/flow/classes/class-cartflows-step-post-type.php:185
|
1076 |
+
msgid "Step Flow"
|
1077 |
+
msgstr ""
|
1078 |
+
|
1079 |
+
#: modules/flow/classes/class-cartflows-step-post-type.php:202
|
1080 |
+
#: modules/flow/view/meta-flow-steps.php:11
|
1081 |
+
msgid "Landing"
|
1082 |
+
msgstr ""
|
1083 |
+
|
1084 |
+
#: modules/flow/classes/class-cartflows-step-post-type.php:208
|
1085 |
+
#: modules/flow/view/meta-flow-steps.php:12
|
1086 |
+
msgid "Checkout"
|
1087 |
+
msgstr ""
|
1088 |
+
|
1089 |
+
#: modules/flow/classes/class-cartflows-step-post-type.php:214
|
1090 |
+
#: modules/flow/view/meta-flow-steps.php:13
|
1091 |
+
msgid "Thank You"
|
1092 |
+
msgstr ""
|
1093 |
+
|
1094 |
+
#: modules/flow/classes/class-cartflows-step-post-type.php:220
|
1095 |
+
#: modules/flow/view/meta-flow-steps.php:14
|
1096 |
+
msgid "Upsell"
|
1097 |
+
msgstr ""
|
1098 |
+
|
1099 |
+
#: modules/flow/classes/class-cartflows-step-post-type.php:226
|
1100 |
+
#: modules/flow/view/meta-flow-steps.php:15
|
1101 |
+
msgid "Downsell"
|
1102 |
+
msgstr ""
|
1103 |
+
|
1104 |
+
#: modules/flow/view/meta-flow-steps.php:79
|
1105 |
+
msgid "No Product Assigned"
|
1106 |
+
msgstr ""
|
1107 |
+
|
1108 |
+
#: modules/flow/view/meta-flow-steps.php:83
|
1109 |
+
msgid "Global Checkout - Remove selected checkout product"
|
1110 |
+
msgstr ""
|
1111 |
+
|
1112 |
+
#: modules/flow/view/meta-flow-steps.php:103
|
1113 |
+
msgid "Clone Step"
|
1114 |
+
msgstr ""
|
1115 |
+
|
1116 |
+
#: modules/flow/view/meta-flow-steps.php:107
|
1117 |
+
msgid "Delete Step"
|
1118 |
+
msgstr ""
|
1119 |
+
|
1120 |
+
#: modules/flow/view/meta-flow-steps.php:122
|
1121 |
+
msgid "Add New Step"
|
1122 |
+
msgstr ""
|
1123 |
+
|
1124 |
+
#: modules/flow/view/meta-flow-steps.php:138
|
1125 |
+
msgid "Steps Library"
|
1126 |
+
msgstr ""
|
1127 |
+
|
1128 |
+
#: modules/flow/view/meta-flow-steps.php:188
|
1129 |
+
msgid "Create Step"
|
1130 |
+
msgstr ""
|
1131 |
+
|
1132 |
+
#: modules/flow/view/meta-flow-steps.php:190
|
1133 |
+
msgid "You need a Cartflows Pro version to import Upsell / Downsell"
|
1134 |
+
msgstr ""
|
1135 |
+
|
1136 |
+
#: modules/landing/classes/class-cartflows-landing-meta.php:66
|
1137 |
+
msgid "Landing Page Settings"
|
1138 |
+
msgstr ""
|
1139 |
+
|
1140 |
+
#: modules/landing/classes/class-cartflows-landing-meta.php:169
|
1141 |
+
msgid "Next Step Link"
|
1142 |
+
msgstr ""
|
1143 |
+
|
1144 |
+
#: modules/thankyou/classes/class-cartflows-thankyou-meta.php:65
|
1145 |
+
msgid "Thank You Page Settings"
|
1146 |
+
msgstr ""
|
1147 |
+
|
1148 |
+
#: modules/thankyou/classes/class-cartflows-thankyou-meta.php:136
|
1149 |
+
msgid "Thank You Design"
|
1150 |
+
msgstr ""
|
1151 |
+
|
1152 |
+
#: modules/thankyou/classes/class-cartflows-thankyou-meta.php:142
|
1153 |
+
msgid "Thank You Fields"
|
1154 |
+
msgstr ""
|
1155 |
+
|
1156 |
+
#: modules/thankyou/classes/class-cartflows-thankyou-meta.php:176
|
1157 |
+
msgid "Order Details"
|
1158 |
+
msgstr ""
|
1159 |
+
|
1160 |
+
#: modules/thankyou/classes/class-cartflows-thankyou-meta.php:188
|
1161 |
+
msgid "Text"
|
1162 |
+
msgstr ""
|
1163 |
+
|
1164 |
+
#: modules/thankyou/classes/class-cartflows-thankyou-meta.php:194
|
1165 |
+
#: modules/thankyou/classes/class-cartflows-thankyou-meta.php:217
|
1166 |
+
msgid "Color"
|
1167 |
+
msgstr ""
|
1168 |
+
|
1169 |
+
#: modules/thankyou/classes/class-cartflows-thankyou-meta.php:243
|
1170 |
+
msgid "Advanced Options"
|
1171 |
+
msgstr ""
|
1172 |
+
|
1173 |
+
#: modules/thankyou/classes/class-cartflows-thankyou-meta.php:253
|
1174 |
+
msgid "Container Width (In px)"
|
1175 |
+
msgstr ""
|
1176 |
+
|
1177 |
+
#: modules/thankyou/classes/class-cartflows-thankyou-meta.php:261
|
1178 |
+
msgid "Section Background Color"
|
1179 |
+
msgstr ""
|
1180 |
+
|
1181 |
+
#: modules/thankyou/classes/class-cartflows-thankyou-meta.php:275
|
1182 |
+
msgid "Enable Order Overview "
|
1183 |
+
msgstr ""
|
1184 |
+
|
1185 |
+
#: modules/thankyou/classes/class-cartflows-thankyou-meta.php:283
|
1186 |
+
msgid "Enable Order Details "
|
1187 |
+
msgstr ""
|
1188 |
+
|
1189 |
+
#: modules/thankyou/classes/class-cartflows-thankyou-meta.php:291
|
1190 |
+
msgid "Enable Billing Details "
|
1191 |
+
msgstr ""
|
1192 |
+
|
1193 |
+
#: modules/thankyou/classes/class-cartflows-thankyou-meta.php:299
|
1194 |
+
msgid "Enable Shipping Details "
|
1195 |
+
msgstr ""
|
1196 |
+
|
1197 |
+
#: modules/widgets/class-cartflows-next-step.php:25
|
1198 |
+
msgid "CartFlows Next Step"
|
1199 |
+
msgstr ""
|
1200 |
+
|
1201 |
+
#: modules/widgets/class-cartflows-next-step.php:27
|
1202 |
+
msgid "Next Step Widgets"
|
1203 |
+
msgstr ""
|
1204 |
+
|
1205 |
+
#: modules/widgets/class-cartflows-next-step.php:107
|
1206 |
+
msgid "New title"
|
1207 |
+
msgstr ""
|
1208 |
+
|
1209 |
+
#: modules/widgets/class-cartflows-next-step.php:124
|
1210 |
+
msgid "Title:"
|
1211 |
+
msgstr ""
|
1212 |
+
|
1213 |
+
#: modules/widgets/class-cartflows-next-step.php:128
|
1214 |
+
msgid "Flow ID:"
|
1215 |
+
msgstr ""
|
1216 |
+
|
1217 |
+
#: modules/widgets/class-cartflows-next-step.php:132
|
1218 |
+
msgid "Step ID:"
|
1219 |
+
msgstr ""
|
1220 |
+
|
1221 |
+
#: woocommerce/template/cart/cart-shipping.php:51
|
1222 |
+
#. Translators: $s shipping destination.
|
1223 |
+
msgid "Estimate for %s."
|
1224 |
+
msgstr ""
|
1225 |
+
|
1226 |
+
#: woocommerce/template/cart/cart-shipping.php:52
|
1227 |
+
msgid "Change address"
|
1228 |
+
msgstr ""
|
1229 |
+
|
1230 |
+
#: woocommerce/template/cart/cart-shipping.php:54
|
1231 |
+
msgid "This is only an estimate. Prices will be updated during checkout."
|
1232 |
+
msgstr ""
|
1233 |
+
|
1234 |
+
#: woocommerce/template/cart/cart-shipping.php:61
|
1235 |
+
msgid "Enter your address to view shipping options."
|
1236 |
+
msgstr ""
|
1237 |
+
|
1238 |
+
#: woocommerce/template/cart/cart-shipping.php:63
|
1239 |
+
msgid ""
|
1240 |
+
"There are no shipping methods available. Please ensure that your address "
|
1241 |
+
"has been entered correctly, or contact us if you need any help."
|
1242 |
+
msgstr ""
|
1243 |
+
|
1244 |
+
#: woocommerce/template/cart/cart-shipping.php:66
|
1245 |
+
#. Translators: $s shipping destination.
|
1246 |
+
msgid "No shipping options were found for %s."
|
1247 |
+
msgstr ""
|
1248 |
+
|
1249 |
+
#: woocommerce/template/cart/cart-shipping.php:67
|
1250 |
+
msgid "Enter a different address"
|
1251 |
+
msgstr ""
|
1252 |
+
|
1253 |
+
#: woocommerce/template/checkout/form-billing.php:27
|
1254 |
+
msgid "Billing & Shipping"
|
1255 |
+
msgstr ""
|
1256 |
+
|
1257 |
+
#: woocommerce/template/checkout/form-billing.php:31
|
1258 |
+
msgid "Billing details"
|
1259 |
+
msgstr ""
|
1260 |
+
|
1261 |
+
#: woocommerce/template/checkout/form-billing.php:59
|
1262 |
+
msgid "Create an account?"
|
1263 |
+
msgstr ""
|
1264 |
+
|
1265 |
+
#: woocommerce/template/checkout/form-checkout.php:26
|
1266 |
+
msgid "You must be logged in to checkout."
|
1267 |
+
msgstr ""
|
1268 |
+
|
1269 |
+
#: woocommerce/template/checkout/form-checkout.php:52
|
1270 |
+
msgid "Your order"
|
1271 |
+
msgstr ""
|
1272 |
+
|
1273 |
+
#: woocommerce/template/checkout/form-coupon.php:26
|
1274 |
+
msgid "Have a coupon?"
|
1275 |
+
msgstr ""
|
1276 |
+
|
1277 |
+
#: woocommerce/template/checkout/form-coupon.php:26
|
1278 |
+
msgid "Click here to enter your code"
|
1279 |
+
msgstr ""
|
1280 |
+
|
1281 |
+
#: woocommerce/template/checkout/form-coupon.php:31
|
1282 |
+
msgid "If you have a coupon code, please apply it below."
|
1283 |
+
msgstr ""
|
1284 |
+
|
1285 |
+
#: woocommerce/template/checkout/form-coupon.php:34
|
1286 |
+
msgid "Coupon code"
|
1287 |
+
msgstr ""
|
1288 |
+
|
1289 |
+
#: woocommerce/template/checkout/form-coupon.php:38
|
1290 |
+
msgid "Apply coupon"
|
1291 |
+
msgstr ""
|
1292 |
+
|
1293 |
+
#: woocommerce/template/checkout/form-login.php:26
|
1294 |
+
msgid "Returning customer?"
|
1295 |
+
msgstr ""
|
1296 |
+
|
1297 |
+
#: woocommerce/template/checkout/form-login.php:26
|
1298 |
+
msgid "Click here to login"
|
1299 |
+
msgstr ""
|
1300 |
+
|
1301 |
+
#: woocommerce/template/checkout/form-login.php:32
|
1302 |
+
msgid ""
|
1303 |
+
"If you have shopped with us before, please enter your details below. If you "
|
1304 |
+
"are a new customer, please proceed to the Billing & Shipping section."
|
1305 |
+
msgstr ""
|
1306 |
+
|
1307 |
+
#: woocommerce/template/checkout/payment.php:33
|
1308 |
+
msgid ""
|
1309 |
+
"Sorry, it seems that there are no available payment methods for your state. "
|
1310 |
+
"Please contact us if you require assistance or wish to make alternate "
|
1311 |
+
"arrangements."
|
1312 |
+
msgstr ""
|
1313 |
+
|
1314 |
+
#: woocommerce/template/checkout/payment.php:33
|
1315 |
+
msgid "Please fill in your details above to see available payment methods."
|
1316 |
+
msgstr ""
|
1317 |
+
|
1318 |
+
#: woocommerce/template/checkout/payment.php:42
|
1319 |
+
#. translators: $1 and $2 opening and closing emphasis tags respectively
|
1320 |
+
msgid ""
|
1321 |
+
"Since your browser does not support JavaScript, or it is disabled, please "
|
1322 |
+
"ensure you click the %1$sUpdate Totals%2$s button before placing your "
|
1323 |
+
"order. You may be charged more than the amount stated above if you fail to "
|
1324 |
+
"do so."
|
1325 |
+
msgstr ""
|
1326 |
+
|
1327 |
+
#: woocommerce/template/checkout/payment.php:44
|
1328 |
+
msgid "Update totals"
|
1329 |
+
msgstr ""
|
1330 |
+
|
1331 |
+
#: woocommerce/template/checkout/review-order.php:26
|
1332 |
+
msgid "Product"
|
1333 |
+
msgstr ""
|
1334 |
+
|
1335 |
+
#: woocommerce/template/checkout/review-order.php:27
|
1336 |
+
#: woocommerce/template/checkout/review-order.php:106
|
1337 |
+
msgid "Total"
|
1338 |
+
msgstr ""
|
1339 |
+
|
1340 |
+
#: woocommerce/template/checkout/review-order.php:59
|
1341 |
+
msgid "Subtotal"
|
1342 |
+
msgstr ""
|
1343 |
+
|
1344 |
+
#: woocommerce/template/checkout/thankyou.php:30
|
1345 |
+
msgid ""
|
1346 |
+
"Unfortunately your order cannot be processed as the originating "
|
1347 |
+
"bank/merchant has declined your transaction. Please attempt your purchase "
|
1348 |
+
"again."
|
1349 |
+
msgstr ""
|
1350 |
+
|
1351 |
+
#: woocommerce/template/checkout/thankyou.php:33
|
1352 |
+
msgid "Pay"
|
1353 |
+
msgstr ""
|
1354 |
+
|
1355 |
+
#: woocommerce/template/checkout/thankyou.php:35
|
1356 |
+
msgid "My account"
|
1357 |
+
msgstr ""
|
1358 |
+
|
1359 |
+
#: woocommerce/template/checkout/thankyou.php:41
|
1360 |
+
#: woocommerce/template/checkout/thankyou.php:83
|
1361 |
+
msgid "Thank you. Your order has been received."
|
1362 |
+
msgstr ""
|
1363 |
+
|
1364 |
+
#: woocommerce/template/checkout/thankyou.php:46
|
1365 |
+
msgid "Order number:"
|
1366 |
+
msgstr ""
|
1367 |
+
|
1368 |
+
#: woocommerce/template/checkout/thankyou.php:51
|
1369 |
+
msgid "Date:"
|
1370 |
+
msgstr ""
|
1371 |
+
|
1372 |
+
#: woocommerce/template/checkout/thankyou.php:57
|
1373 |
+
msgid "Email:"
|
1374 |
+
msgstr ""
|
1375 |
+
|
1376 |
+
#: woocommerce/template/checkout/thankyou.php:63
|
1377 |
+
msgid "Total:"
|
1378 |
+
msgstr ""
|
1379 |
+
|
1380 |
+
#: woocommerce/template/checkout/thankyou.php:69
|
1381 |
+
msgid "Payment method:"
|
1382 |
+
msgstr ""
|
1383 |
+
|
1384 |
+
#: woocommerce/template/global/form-login.php:34
|
1385 |
+
msgid "Username or email"
|
1386 |
+
msgstr ""
|
1387 |
+
|
1388 |
+
#: woocommerce/template/global/form-login.php:38
|
1389 |
+
msgid "Password"
|
1390 |
+
msgstr ""
|
1391 |
+
|
1392 |
+
#: woocommerce/template/global/form-login.php:48
|
1393 |
+
msgid "Login"
|
1394 |
+
msgstr ""
|
1395 |
+
|
1396 |
+
#: woocommerce/template/global/form-login.php:53
|
1397 |
+
msgid "Remember me"
|
1398 |
+
msgstr ""
|
1399 |
+
|
1400 |
+
#: woocommerce/template/global/form-login.php:57
|
1401 |
+
msgid "Lost your password?"
|
1402 |
+
msgstr ""
|
1403 |
+
|
1404 |
+
#. Plugin Name of the plugin/theme
|
1405 |
+
msgid "CartFlows"
|
1406 |
+
msgstr ""
|
1407 |
+
|
1408 |
+
#. Author URI of the plugin/theme
|
1409 |
+
msgid "https://cartflows.com/"
|
1410 |
+
msgstr ""
|
1411 |
+
|
1412 |
+
#. Description of the plugin/theme
|
1413 |
+
msgid "Create beautiful checkout pages & sales flows for WooCommerce."
|
1414 |
+
msgstr ""
|
1415 |
+
|
1416 |
+
#. Author of the plugin/theme
|
1417 |
+
msgid "CartFlows Inc"
|
1418 |
+
msgstr ""
|
1419 |
+
|
1420 |
+
#: modules/flow/classes/class-cartflows-flow-post-type.php:55
|
1421 |
+
msgctxt "flow general name"
|
1422 |
+
msgid "Flows"
|
1423 |
+
msgstr ""
|
1424 |
+
|
1425 |
+
#: modules/flow/classes/class-cartflows-flow-post-type.php:56
|
1426 |
+
msgctxt "flow singular name"
|
1427 |
+
msgid "Flow"
|
1428 |
+
msgstr ""
|
1429 |
+
|
1430 |
+
#: modules/flow/classes/class-cartflows-step-post-type.php:144
|
1431 |
+
msgctxt "flow step general name"
|
1432 |
+
msgid "Steps"
|
1433 |
+
msgstr ""
|
1434 |
+
|
1435 |
+
#: modules/flow/classes/class-cartflows-step-post-type.php:145
|
1436 |
+
msgctxt "flow step singular name"
|
1437 |
+
msgid "Step"
|
1438 |
+
msgstr ""
|
1439 |
+
|
1440 |
+
#: modules/flow/classes/class-cartflows-step-post-type.php:264
|
1441 |
+
msgctxt "cartflows"
|
1442 |
+
msgid "Template for Page Builders"
|
1443 |
msgstr ""
|
modules/checkout/classes/class-cartflows-checkout-markup.php
CHANGED
@@ -1,1157 +1,1157 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* Checkout markup.
|
4 |
-
*
|
5 |
-
* @package CartFlows
|
6 |
-
*/
|
7 |
-
|
8 |
-
/**
|
9 |
-
* Checkout Markup
|
10 |
-
*
|
11 |
-
* @since 1.0.0
|
12 |
-
*/
|
13 |
-
class Cartflows_Checkout_Markup {
|
14 |
-
|
15 |
-
/**
|
16 |
-
* Member Variable
|
17 |
-
*
|
18 |
-
* @var object instance
|
19 |
-
*/
|
20 |
-
private static $instance;
|
21 |
-
|
22 |
-
/**
|
23 |
-
* Initiator
|
24 |
-
*/
|
25 |
-
public static function get_instance() {
|
26 |
-
if ( ! isset( self::$instance ) ) {
|
27 |
-
self::$instance = new self;
|
28 |
-
}
|
29 |
-
return self::$instance;
|
30 |
-
}
|
31 |
-
|
32 |
-
/**
|
33 |
-
* Constructor
|
34 |
-
*/
|
35 |
-
public function __construct() {
|
36 |
-
|
37 |
-
/* Set is checkout flag */
|
38 |
-
add_filter( 'woocommerce_is_checkout', array( $this, 'woo_checkout_flag' ), 9999 );
|
39 |
-
|
40 |
-
add_action( 'woocommerce_checkout_update_order_meta', array( $this, 'save_checkout_fields' ), 10, 2 );
|
41 |
-
|
42 |
-
/* Show notice if cart is empty */
|
43 |
-
add_action( 'cartflows_checkout_cart_empty', array( $this, 'display_woo_notices' ) );
|
44 |
-
|
45 |
-
/* Checkout Shortcode */
|
46 |
-
add_shortcode( 'cartflows_checkout', array( $this, 'checkout_shortcode_markup' ) );
|
47 |
-
|
48 |
-
/* Preconfigured cart data */
|
49 |
-
add_action( 'wp', array( $this, 'preconfigured_cart_data' ), 1 );
|
50 |
-
|
51 |
-
/* Embed Checkout */
|
52 |
-
add_action( 'wp', array( $this, 'shortcode_load_data' ), 999 );
|
53 |
-
|
54 |
-
/* Ajax Endpoint */
|
55 |
-
add_filter( 'woocommerce_ajax_get_endpoint', array( $this, 'get_ajax_endpoint' ) );
|
56 |
-
|
57 |
-
add_filter( 'cartflows_add_before_main_section', array( $this, 'enable_logo_in_header' ) );
|
58 |
-
|
59 |
-
add_filter( 'cartflows_primary_container_bottom', array( $this, 'show_cartflows_copyright_message' ) );
|
60 |
-
|
61 |
-
add_filter( 'woocommerce_login_redirect', array( $this, 'after_login_redirect' ), 10, 2 );
|
62 |
-
|
63 |
-
add_action( 'wp_ajax_wcf_woo_apply_coupon', array( $this, 'apply_coupon' ) );
|
64 |
-
add_action( 'wp_ajax_nopriv_wcf_woo_apply_coupon', array( $this, 'apply_coupon' ) );
|
65 |
-
|
66 |
-
add_filter( 'global_cartflows_js_localize', array( $this, 'add_localize_vars' ) );
|
67 |
-
|
68 |
-
/* Global Checkout */
|
69 |
-
add_action( 'template_redirect', array( $this, 'global_checkout_template_redirect' ), 1 );
|
70 |
-
|
71 |
-
add_action( 'wp_ajax_wcf_woo_remove_coupon', array( $this, 'remove_coupon' ) );
|
72 |
-
add_action( 'wp_ajax_nopriv_wcf_woo_remove_coupon', array( $this, 'remove_coupon' ) );
|
73 |
-
|
74 |
-
}
|
75 |
-
|
76 |
-
/**
|
77 |
-
* Display all WooCommerce notices.
|
78 |
-
*
|
79 |
-
* @since 1.1.5
|
80 |
-
*/
|
81 |
-
function display_woo_notices() {
|
82 |
-
|
83 |
-
if ( null != WC()->session && function_exists( 'woocommerce_output_all_notices' ) ) {
|
84 |
-
woocommerce_output_all_notices();
|
85 |
-
}
|
86 |
-
}
|
87 |
-
|
88 |
-
|
89 |
-
/**
|
90 |
-
* Redirect from default to the global checkout page
|
91 |
-
*
|
92 |
-
* @since 1.0.0
|
93 |
-
*/
|
94 |
-
function global_checkout_template_redirect() {
|
95 |
-
|
96 |
-
if ( ! is_checkout() ) {
|
97 |
-
return;
|
98 |
-
}
|
99 |
-
|
100 |
-
if ( _is_wcf_checkout_type() || _is_wcf_checkout_shortcode() ) {
|
101 |
-
return;
|
102 |
-
}
|
103 |
-
|
104 |
-
// redirect only for cartflows checkout pages.
|
105 |
-
$order_pay_endpoint = get_option( 'woocommerce_checkout_pay_endpoint', 'order-pay' );
|
106 |
-
$order_received_endpoint = get_option( 'woocommerce_checkout_order_received_endpoint', 'order-received' );
|
107 |
-
|
108 |
-
$common = Cartflows_Helper::get_common_settings();
|
109 |
-
|
110 |
-
$global_checkout = $common['global_checkout'];
|
111 |
-
|
112 |
-
if (
|
113 |
-
// ignore on order-pay.
|
114 |
-
false === mb_strpos( $_SERVER['REQUEST_URI'], '/' . $order_pay_endpoint . '/' ) &&
|
115 |
-
// ignore on TY page.
|
116 |
-
false === mb_strpos( $_SERVER['REQUEST_URI'], '/' . $order_received_endpoint . '/' )
|
117 |
-
) {
|
118 |
-
|
119 |
-
if ( '' !== $global_checkout ) {
|
120 |
-
|
121 |
-
$link = get_permalink( $global_checkout );
|
122 |
-
|
123 |
-
if ( ! empty( $link ) ) {
|
124 |
-
|
125 |
-
wp_redirect( $link );
|
126 |
-
die();
|
127 |
-
}
|
128 |
-
}
|
129 |
-
}
|
130 |
-
}
|
131 |
-
|
132 |
-
/**
|
133 |
-
* Check for checkout flag
|
134 |
-
*
|
135 |
-
* @param bool $is_checkout is checkout.
|
136 |
-
*
|
137 |
-
* @return bool
|
138 |
-
*/
|
139 |
-
function woo_checkout_flag( $is_checkout ) {
|
140 |
-
|
141 |
-
if ( ! is_admin() ) {
|
142 |
-
|
143 |
-
if ( _is_wcf_checkout_type() || _is_wcf_checkout_shortcode() ) {
|
144 |
-
|
145 |
-
$is_checkout = true;
|
146 |
-
}
|
147 |
-
}
|
148 |
-
|
149 |
-
return $is_checkout;
|
150 |
-
}
|
151 |
-
|
152 |
-
/**
|
153 |
-
* Render checkout shortcode markup.
|
154 |
-
*
|
155 |
-
* @param array $atts attributes.
|
156 |
-
* @return string
|
157 |
-
*/
|
158 |
-
function checkout_shortcode_markup( $atts ) {
|
159 |
-
|
160 |
-
if ( ! function_exists( 'wc_print_notices' ) ) {
|
161 |
-
return '<p class="woocommerce-notice">' . __( 'WooCommerce functions not exists. If you are in iframe, please reload the iframe', 'cartflows' ) . '</p>';
|
162 |
-
}
|
163 |
-
|
164 |
-
$atts = shortcode_atts(
|
165 |
-
array(
|
166 |
-
'id' => 0,
|
167 |
-
),
|
168 |
-
$atts
|
169 |
-
);
|
170 |
-
|
171 |
-
$checkout_id = intval( $atts['id'] );
|
172 |
-
|
173 |
-
if ( empty( $checkout_id ) ) {
|
174 |
-
|
175 |
-
if ( ! _is_wcf_checkout_type() ) {
|
176 |
-
|
177 |
-
return '<h4>' . __( 'Checkout ID not found', 'cartflows' ) . '</h4>';
|
178 |
-
}
|
179 |
-
|
180 |
-
global $post;
|
181 |
-
|
182 |
-
$checkout_id = intval( $post->ID );
|
183 |
-
}
|
184 |
-
|
185 |
-
$output = '';
|
186 |
-
|
187 |
-
ob_start();
|
188 |
-
|
189 |
-
do_action( 'cartflows_checkout_form_before', $checkout_id );
|
190 |
-
|
191 |
-
$checkout_layout = wcf()->options->get_checkout_meta_value( $checkout_id, 'wcf-checkout-layout' );
|
192 |
-
|
193 |
-
$template_default = CARTFLOWS_CHECKOUT_DIR . 'templates/embed/checkout-template-simple.php';
|
194 |
-
|
195 |
-
$template_layout = apply_filters( 'cartflows_checkout_layout_template', $checkout_layout );
|
196 |
-
|
197 |
-
if ( file_exists( $template_layout ) ) {
|
198 |
-
include $template_layout;
|
199 |
-
} else {
|
200 |
-
include $template_default;
|
201 |
-
}
|
202 |
-
|
203 |
-
$output .= ob_get_clean();
|
204 |
-
|
205 |
-
return $output;
|
206 |
-
}
|
207 |
-
|
208 |
-
/**
|
209 |
-
* Configure Cart Data.
|
210 |
-
*
|
211 |
-
* @since 1.0.0
|
212 |
-
*
|
213 |
-
* @return void
|
214 |
-
*/
|
215 |
-
function preconfigured_cart_data() {
|
216 |
-
|
217 |
-
if ( is_admin() ) {
|
218 |
-
return;
|
219 |
-
}
|
220 |
-
|
221 |
-
global $post;
|
222 |
-
|
223 |
-
if ( _is_wcf_checkout_type() || _is_wcf_checkout_shortcode() ) {
|
224 |
-
|
225 |
-
if ( wp_doing_ajax() ) {
|
226 |
-
|
227 |
-
return;
|
228 |
-
} else {
|
229 |
-
|
230 |
-
if ( _is_wcf_checkout_type() ) {
|
231 |
-
$checkout_id = $post->ID;
|
232 |
-
} else {
|
233 |
-
$checkout_id = _get_wcf_checkout_id_from_shortcode( $post->post_content );
|
234 |
-
}
|
235 |
-
|
236 |
-
do_action( 'cartflows_checkout_before_configure_cart', $checkout_id );
|
237 |
-
|
238 |
-
$flow_id = wcf()->utils->get_flow_id_from_step_id( $checkout_id );
|
239 |
-
|
240 |
-
if ( wcf()->flow->is_flow_testmode( $flow_id ) ) {
|
241 |
-
$products = wcf()->options->get_checkout_meta_value( $checkout_id, 'wcf-checkout-products', 'dummy' );
|
242 |
-
} else {
|
243 |
-
$products = wcf()->options->get_checkout_meta_value( $checkout_id, 'wcf-checkout-products' );
|
244 |
-
}
|
245 |
-
|
246 |
-
if ( ! is_array( $products ) ) {
|
247 |
-
|
248 |
-
if ( 'dummy' === $products ) {
|
249 |
-
|
250 |
-
$args = array(
|
251 |
-
'posts_per_page' => 1,
|
252 |
-
'orderby' => 'rand',
|
253 |
-
'post_type' => 'product',
|
254 |
-
'meta_query' => array(
|
255 |
-
// Exclude out of stock products.
|
256 |
-
array(
|
257 |
-
'key' => '_stock_status',
|
258 |
-
'value' => 'outofstock',
|
259 |
-
'compare' => 'NOT IN',
|
260 |
-
),
|
261 |
-
),
|
262 |
-
'tax_query' => array(
|
263 |
-
array(
|
264 |
-
'taxonomy' => 'product_type',
|
265 |
-
'field' => 'slug',
|
266 |
-
'terms' => 'simple',
|
267 |
-
),
|
268 |
-
),
|
269 |
-
);
|
270 |
-
|
271 |
-
$random_product = get_posts( $args );
|
272 |
-
|
273 |
-
if ( isset( $random_product[0]->ID ) ) {
|
274 |
-
$products = array(
|
275 |
-
array(
|
276 |
-
'product' => $random_product[0]->ID,
|
277 |
-
),
|
278 |
-
);
|
279 |
-
} else {
|
280 |
-
return;
|
281 |
-
}
|
282 |
-
} else {
|
283 |
-
return;
|
284 |
-
}
|
285 |
-
}
|
286 |
-
|
287 |
-
if ( is_array( $products ) && count( $products ) < 1 ) {
|
288 |
-
|
289 |
-
return;
|
290 |
-
}
|
291 |
-
/* Empty the current cart */
|
292 |
-
WC()->cart->empty_cart();
|
293 |
-
|
294 |
-
/* Set customer session if not set */
|
295 |
-
if ( ! is_user_logged_in() && WC()->cart->is_empty() ) {
|
296 |
-
WC()->session->set_customer_session_cookie( true );
|
297 |
-
}
|
298 |
-
|
299 |
-
$cart_product_count = 0;
|
300 |
-
|
301 |
-
foreach ( $products as $index => $data ) {
|
302 |
-
|
303 |
-
if ( ! isset( $data['product'] ) ) {
|
304 |
-
return;
|
305 |
-
}
|
306 |
-
|
307 |
-
if ( apply_filters( 'cartflows_skip_other_products', false, $cart_product_count ) ) {
|
308 |
-
break;
|
309 |
-
}
|
310 |
-
|
311 |
-
$product_id = $data['product'];
|
312 |
-
$_product = wc_get_product( $product_id );
|
313 |
-
|
314 |
-
if ( ! empty( $_product ) ) {
|
315 |
-
|
316 |
-
$quantity = 1;
|
317 |
-
|
318 |
-
if ( ! $_product->is_type( 'grouped' ) && ! $_product->is_type( 'external' ) ) {
|
319 |
-
|
320 |
-
if ( $_product->is_type( 'variable' ) ) {
|
321 |
-
|
322 |
-
$default_attributes = $_product->get_default_attributes();
|
323 |
-
|
324 |
-
if ( ! empty( $default_attributes ) ) {
|
325 |
-
|
326 |
-
foreach ( $_product->get_children() as $variation_id ) {
|
327 |
-
|
328 |
-
$single_variation = new WC_Product_Variation( $variation_id );
|
329 |
-
|
330 |
-
if ( $default_attributes == $single_variation->get_attributes() ) {
|
331 |
-
WC()->cart->add_to_cart( $variation_id, $quantity );
|
332 |
-
$cart_product_count++;
|
333 |
-
}
|
334 |
-
}
|
335 |
-
} else {
|
336 |
-
|
337 |
-
$product_childrens = $_product->get_children();
|
338 |
-
|
339 |
-
if ( isset( $product_childrens[0] ) ) {
|
340 |
-
WC()->cart->add_to_cart( $product_childrens[0], $quantity );
|
341 |
-
$cart_product_count++;
|
342 |
-
} else {
|
343 |
-
echo '<p>' . __( 'Variations Not set', 'cartflows' ) . '</p>';
|
344 |
-
}
|
345 |
-
}
|
346 |
-
} else {
|
347 |
-
WC()->cart->add_to_cart( $product_id, $quantity );
|
348 |
-
$cart_product_count++;
|
349 |
-
}
|
350 |
-
} else {
|
351 |
-
|
352 |
-
echo '<p>' . __( 'This product can\'t be purcahsed', 'cartflows' ) . '</p>';
|
353 |
-
// WC()->cart->add_to_cart( $product_id, $quantity );.
|
354 |
-
}
|
355 |
-
}
|
356 |
-
}
|
357 |
-
|
358 |
-
do_action( 'cartflows_checkout_aftet_configure_cart', $checkout_id );
|
359 |
-
do_action( 'cartflows_checkout_after_configure_cart', $checkout_id );
|
360 |
-
}
|
361 |
-
}
|
362 |
-
}
|
363 |
-
|
364 |
-
/**
|
365 |
-
* Load shortcode data.
|
366 |
-
*
|
367 |
-
* @return void
|
368 |
-
*/
|
369 |
-
function shortcode_load_data() {
|
370 |
-
|
371 |
-
if ( _is_wcf_checkout_type() || _is_wcf_checkout_shortcode() ) {
|
372 |
-
|
373 |
-
add_action( 'wp_enqueue_scripts', array( $this, 'shortcode_scripts' ), 21 );
|
374 |
-
|
375 |
-
add_action( 'wp_enqueue_scripts', array( $this, 'compatibility_scripts' ), 101 );
|
376 |
-
|
377 |
-
/* Show notices if cart has errors */
|
378 |
-
add_action( 'woocommerce_cart_has_errors', 'woocommerce_output_all_notices' );
|
379 |
-
|
380 |
-
add_action( 'woocommerce_checkout_after_customer_details', array( $this, 'order_wrap_div_start' ), 99 );
|
381 |
-
|
382 |
-
add_action( 'woocommerce_checkout_after_order_review', array( $this, 'order_wrap_div_end' ), 99 );
|
383 |
-
|
384 |
-
// Outputting the hidden field in checkout page.
|
385 |
-
add_action( 'woocommerce_after_order_notes', array( $this, 'checkout_shortcode_post_id' ), 99 );
|
386 |
-
add_action( 'woocommerce_login_form_end', array( $this, 'checkout_shortcode_post_id' ), 99 );
|
387 |
-
|
388 |
-
remove_all_actions( 'woocommerce_checkout_billing' );
|
389 |
-
remove_all_actions( 'woocommerce_checkout_shipping' );
|
390 |
-
|
391 |
-
// Hook in actions once.
|
392 |
-
add_action( 'woocommerce_checkout_billing', array( WC()->checkout, 'checkout_form_billing' ) );
|
393 |
-
add_action( 'woocommerce_checkout_shipping', array( WC()->checkout, 'checkout_form_shipping' ) );
|
394 |
-
|
395 |
-
remove_action( 'woocommerce_before_checkout_form', 'woocommerce_checkout_coupon_form' );
|
396 |
-
|
397 |
-
add_action( 'woocommerce_checkout_order_review', array( $this, 'display_custom_coupon_field' ) );
|
398 |
-
|
399 |
-
add_filter( 'woocommerce_checkout_fields', array( $this, 'add_three_column_layout_fields' ) );
|
400 |
-
|
401 |
-
add_filter( 'woocommerce_cart_totals_coupon_html', array( $this, 'remove_coupon_text' ) );
|
402 |
-
global $post;
|
403 |
-
|
404 |
-
if ( _is_wcf_checkout_type() ) {
|
405 |
-
$checkout_id = $post->ID;
|
406 |
-
} else {
|
407 |
-
$checkout_id = _get_wcf_checkout_id_from_shortcode( $post->post_content );
|
408 |
-
}
|
409 |
-
|
410 |
-
do_action( 'cartflows_checkout_before_shortcode', $checkout_id );
|
411 |
-
}
|
412 |
-
}
|
413 |
-
|
414 |
-
/**
|
415 |
-
* Render checkout ID hidden field.
|
416 |
-
*
|
417 |
-
* @param array $checkout checkout session data.
|
418 |
-
* @return void
|
419 |
-
*/
|
420 |
-
function checkout_shortcode_post_id( $checkout ) {
|
421 |
-
|
422 |
-
global $post;
|
423 |
-
|
424 |
-
if ( _is_wcf_checkout_type() ) {
|
425 |
-
$checkout_id = $post->ID;
|
426 |
-
} else {
|
427 |
-
$checkout_id = _get_wcf_checkout_id_from_shortcode( $post->post_content );
|
428 |
-
}
|
429 |
-
|
430 |
-
$flow_id = get_post_meta( $checkout_id, 'wcf-flow-id', true );
|
431 |
-
|
432 |
-
echo '<input type="hidden" class="input-hidden _wcf_flow_id" name="_wcf_flow_id" value="' . intval( $flow_id ) . '">';
|
433 |
-
echo '<input type="hidden" class="input-hidden _wcf_checkout_id" name="_wcf_checkout_id" value="' . intval( $checkout_id ) . '">';
|
434 |
-
}
|
435 |
-
|
436 |
-
/**
|
437 |
-
* Load shortcode scripts.
|
438 |
-
*
|
439 |
-
* @return void
|
440 |
-
*/
|
441 |
-
function shortcode_scripts() {
|
442 |
-
|
443 |
-
wp_enqueue_style( 'wcf-checkout-template', wcf()->utils->get_css_url( 'checkout-template' ), '', CARTFLOWS_VER );
|
444 |
-
|
445 |
-
wp_enqueue_script(
|
446 |
-
'wcf-checkout-template',
|
447 |
-
wcf()->utils->get_js_url( 'checkout-template' ),
|
448 |
-
array( 'jquery' ),
|
449 |
-
CARTFLOWS_VER,
|
450 |
-
true
|
451 |
-
);
|
452 |
-
|
453 |
-
do_action( 'cartflows_checkout_scripts' );
|
454 |
-
|
455 |
-
$style = $this->generate_style();
|
456 |
-
|
457 |
-
wp_add_inline_style( 'wcf-checkout-template', $style );
|
458 |
-
|
459 |
-
}
|
460 |
-
|
461 |
-
/**
|
462 |
-
* Load compatibility scripts.
|
463 |
-
*
|
464 |
-
* @return void
|
465 |
-
*/
|
466 |
-
function compatibility_scripts() {
|
467 |
-
|
468 |
-
global $post;
|
469 |
-
|
470 |
-
if ( _is_wcf_checkout_type() ) {
|
471 |
-
$checkout_id = $post->ID;
|
472 |
-
} else {
|
473 |
-
$checkout_id = _get_wcf_checkout_id_from_shortcode( $post->post_content );
|
474 |
-
}
|
475 |
-
|
476 |
-
// Add DIVI Compatibility css if DIVI theme is enabled.
|
477 |
-
if ( Cartflows_Compatibility::get_instance()->is_divi_enabled() ||
|
478 |
-
Cartflows_Compatibility::get_instance()->is_divi_builder_enabled( $checkout_id )
|
479 |
-
) {
|
480 |
-
wp_enqueue_style( 'wcf-checkout-template-divi', wcf()->utils->get_css_url( 'checkout-template-divi' ), '', CARTFLOWS_VER );
|
481 |
-
}
|
482 |
-
|
483 |
-
// Add Flatsome Compatibility css if Flatsome theme is enabled.
|
484 |
-
if ( Cartflows_Compatibility::get_instance()->is_flatsome_enabled() ) {
|
485 |
-
wp_enqueue_style( 'wcf-checkout-template-flatsome', wcf()->utils->get_css_url( 'checkout-template-flatsome' ), '', CARTFLOWS_VER );
|
486 |
-
}
|
487 |
-
|
488 |
-
// Add The7 Compatibility css if The7 theme is enabled.
|
489 |
-
if ( Cartflows_Compatibility::get_instance()->is_the_seven_enabled() ) {
|
490 |
-
wp_enqueue_style( 'wcf-checkout-template-the-seven', wcf()->utils->get_css_url( 'checkout-template-the-seven' ), '', CARTFLOWS_VER );
|
491 |
-
}
|
492 |
-
}
|
493 |
-
|
494 |
-
/**
|
495 |
-
* Generate styles.
|
496 |
-
*
|
497 |
-
* @return string
|
498 |
-
*/
|
499 |
-
function generate_style() {
|
500 |
-
|
501 |
-
global $post;
|
502 |
-
|
503 |
-
if ( _is_wcf_checkout_type() ) {
|
504 |
-
$checkout_id = $post->ID;
|
505 |
-
} else {
|
506 |
-
$checkout_id = _get_wcf_checkout_id_from_shortcode( $post->post_content );
|
507 |
-
}
|
508 |
-
|
509 |
-
CartFlows_Font_Families::render_fonts( $checkout_id );
|
510 |
-
|
511 |
-
$primary_color = wcf()->options->get_checkout_meta_value( $checkout_id, 'wcf-primary-color' );
|
512 |
-
|
513 |
-
$base_font_family = wcf()->options->get_checkout_meta_value( $checkout_id, 'wcf-base-font-family' );
|
514 |
-
|
515 |
-
$header_logo_width = wcf()->options->get_checkout_meta_value( $checkout_id, 'wcf-header-logo-width' );
|
516 |
-
|
517 |
-
/*$base_font_weight = wcf()->options->get_checkout_meta_value( $checkout_id, 'wcf-base-font-weight' );*/
|
518 |
-
$r = '';
|
519 |
-
$g = '';
|
520 |
-
$b = '';
|
521 |
-
|
522 |
-
$field_tb_padding = '';
|
523 |
-
$field_lr_padding = '';
|
524 |
-
|
525 |
-
$field_heading_color = '';
|
526 |
-
$field_color = '';
|
527 |
-
$field_bg_color = '';
|
528 |
-
$field_border_color = '';
|
529 |
-
$field_label_color = '';
|
530 |
-
$submit_tb_padding = '';
|
531 |
-
$submit_lr_padding = '';
|
532 |
-
$hl_bg_color = '';
|
533 |
-
$field_input_size = '';
|
534 |
-
$box_border_color = '';
|
535 |
-
$section_bg_color = '';
|
536 |
-
$submit_button_height = '';
|
537 |
-
$submit_color = '';
|
538 |
-
$submit_bg_color = $primary_color;
|
539 |
-
$submit_border_color = $primary_color;
|
540 |
-
|
541 |
-
$submit_hover_color = '';
|
542 |
-
$submit_bg_hover_color = $primary_color;
|
543 |
-
$submit_border_hover_color = $primary_color;
|
544 |
-
|
545 |
-
$section_heading_color = '';
|
546 |
-
|
547 |
-
$is_advance_option = wcf()->options->get_checkout_meta_value( $checkout_id, 'wcf-advance-options-fields' );
|
548 |
-
|
549 |
-
$button_font_family = '';
|
550 |
-
$button_font_weight = '';
|
551 |
-
$input_font_family = '';
|
552 |
-
$input_font_weight = '';
|
553 |
-
$heading_font_family = '';
|
554 |
-
$heading_font_weight = '';
|
555 |
-
$base_font_family = $base_font_family;
|
556 |
-
/*$base_font_weight = $base_font_weight;*/
|
557 |
-
|
558 |
-
if ( 'yes' == $is_advance_option ) {
|
559 |
-
|
560 |
-
/**
|
561 |
-
* Get Font Family and Font Weight weight values
|
562 |
-
*/
|
563 |
-
$section_bg_color = wcf()->options->get_checkout_meta_value( $checkout_id, 'wcf-section-bg-color' );
|
564 |
-
|
565 |
-
$heading_font_family = wcf()->options->get_checkout_meta_value( $checkout_id, 'wcf-heading-font-family' );
|
566 |
-
$heading_font_weight = wcf()->options->get_checkout_meta_value( $checkout_id, 'wcf-heading-font-weight' );
|
567 |
-
$section_heading_color = wcf()->options->get_checkout_meta_value( $checkout_id, 'wcf-heading-color' );
|
568 |
-
$button_font_family = wcf()->options->get_checkout_meta_value( $checkout_id, 'wcf-button-font-family' );
|
569 |
-
$button_font_weight = wcf()->options->get_checkout_meta_value( $checkout_id, 'wcf-button-font-weight' );
|
570 |
-
$input_font_family = wcf()->options->get_checkout_meta_value( $checkout_id, 'wcf-input-font-family' );
|
571 |
-
$input_font_weight = wcf()->options->get_checkout_meta_value( $checkout_id, 'wcf-input-font-weight' );
|
572 |
-
$field_tb_padding = wcf()->options->get_checkout_meta_value( $checkout_id, 'wcf-field-tb-padding' );
|
573 |
-
$field_lr_padding = wcf()->options->get_checkout_meta_value( $checkout_id, 'wcf-field-lr-padding' );
|
574 |
-
$field_input_size = wcf()->options->get_checkout_meta_value( $checkout_id, 'wcf-input-field-size' );
|
575 |
-
|
576 |
-
$field_heading_color = wcf()->options->get_checkout_meta_value( $checkout_id, 'wcf-field-heading-color' );
|
577 |
-
|
578 |
-
$field_color = wcf()->options->get_checkout_meta_value( $checkout_id, 'wcf-field-color' );
|
579 |
-
|
580 |
-
$field_bg_color = wcf()->options->get_checkout_meta_value( $checkout_id, 'wcf-field-bg-color' );
|
581 |
-
|
582 |
-
$field_border_color = wcf()->options->get_checkout_meta_value( $checkout_id, 'wcf-field-border-color' );
|
583 |
-
|
584 |
-
$field_label_color = wcf()->options->get_checkout_meta_value( $checkout_id, 'wcf-field-label-color' );
|
585 |
-
|
586 |
-
$submit_tb_padding = wcf()->options->get_checkout_meta_value( $checkout_id, 'wcf-submit-tb-padding' );
|
587 |
-
|
588 |
-
$submit_lr_padding = wcf()->options->get_checkout_meta_value( $checkout_id, 'wcf-submit-lr-padding' );
|
589 |
-
|
590 |
-
$submit_color = wcf()->options->get_checkout_meta_value( $checkout_id, 'wcf-submit-color' );
|
591 |
-
|
592 |
-
$submit_bg_color = wcf()->options->get_checkout_meta_value( $checkout_id, 'wcf-submit-bg-color', $primary_color );
|
593 |
-
|
594 |
-
$submit_border_color = wcf()->options->get_checkout_meta_value( $checkout_id, 'wcf-submit-border-color', $primary_color );
|
595 |
-
|
596 |
-
$submit_border_hover_color = wcf()->options->get_checkout_meta_value( $checkout_id, 'wcf-submit-border-hover-color', $primary_color );
|
597 |
-
|
598 |
-
$submit_hover_color = wcf()->options->get_checkout_meta_value( $checkout_id, 'wcf-submit-hover-color' );
|
599 |
-
|
600 |
-
$submit_bg_hover_color = wcf()->options->get_checkout_meta_value( $checkout_id, 'wcf-submit-bg-hover-color', $primary_color );
|
601 |
-
|
602 |
-
$hl_bg_color = wcf()->options->get_checkout_meta_value( $checkout_id, 'wcf-hl-bg-color' );
|
603 |
-
|
604 |
-
$box_border_color = wcf()->options->get_checkout_meta_value( $checkout_id, 'wcf-box-border-color' );
|
605 |
-
|
606 |
-
$submit_button_height = wcf()->options->get_checkout_meta_value( $checkout_id, 'wcf-input-button-size' );
|
607 |
-
|
608 |
-
/**
|
609 |
-
* Get font values
|
610 |
-
*/
|
611 |
-
|
612 |
-
if ( 'custom' == $submit_button_height ) {
|
613 |
-
$submit_button_height = '38px';
|
614 |
-
}
|
615 |
-
|
616 |
-
if ( 'custom' == $field_input_size ) {
|
617 |
-
$field_input_size = '38px';
|
618 |
-
}
|
619 |
-
}
|
620 |
-
if ( isset( $primary_color ) ) {
|
621 |
-
|
622 |
-
list($r, $g, $b) = sscanf( $primary_color, '#%02x%02x%02x' );
|
623 |
-
}
|
624 |
-
$output = "
|
625 |
-
.wcf-embed-checkout-form .wcf-checkout-header-image img{
|
626 |
-
width: {$header_logo_width}px;
|
627 |
-
}
|
628 |
-
.wcf-embed-checkout-form .woocommerce #payment input[type=checkbox]:checked:before,
|
629 |
-
.wcf-embed-checkout-form .woocommerce .woocommerce-shipping-fields [type='checkbox']:checked:before{
|
630 |
-
color: {$primary_color};
|
631 |
-
}
|
632 |
-
.wcf-embed-checkout-form .woocommerce #payment input[type=radio]:checked:before{
|
633 |
-
background-color: {$primary_color};
|
634 |
-
}
|
635 |
-
.wcf-embed-checkout-form .woocommerce #payment input[type=checkbox]:focus,
|
636 |
-
.wcf-embed-checkout-form .woocommerce .woocommerce-shipping-fields [type='checkbox']:focus,
|
637 |
-
.wcf-embed-checkout-form .woocommerce #payment input[type=radio]:checked:focus,
|
638 |
-
.wcf-embed-checkout-form .woocommerce #payment input[type=radio]:not(:checked):focus{
|
639 |
-
border-color: {$primary_color};
|
640 |
-
box-shadow: 0 0 2px rgba( " . $r . ',' . $g . ',' . $b . ", .8);
|
641 |
-
}
|
642 |
-
.wcf-embed-checkout-form .woocommerce-checkout label{
|
643 |
-
color: {$field_label_color};
|
644 |
-
}
|
645 |
-
.wcf-embed-checkout-form .woocommerce-checkout #payment div.payment_box{
|
646 |
-
background-color: {$hl_bg_color};
|
647 |
-
font-family: {$input_font_family};
|
648 |
-
font-weight: {$input_font_weight};
|
649 |
-
}
|
650 |
-
|
651 |
-
.wcf-embed-checkout-form #add_payment_method #payment div.payment_box::before,
|
652 |
-
.wcf-embed-checkout-form .woocommerce-cart #payment div.payment_box::before,
|
653 |
-
.wcf-embed-checkout-form .woocommerce-checkout #payment div.payment_box::before
|
654 |
-
{
|
655 |
-
border-bottom-color: {$hl_bg_color};
|
656 |
-
border-right-color: transparent;
|
657 |
-
border-left-color: transparent;
|
658 |
-
border-top-color: transparent;
|
659 |
-
position: absolute;
|
660 |
-
}
|
661 |
-
|
662 |
-
.wcf-embed-checkout-form .woocommerce #payment [type='radio']:checked + label,
|
663 |
-
.wcf-embed-checkout-form .woocommerce #payment [type='radio']:not(:checked) + label{
|
664 |
-
font-family: {$input_font_family};
|
665 |
-
font-weight: {$input_font_weight};
|
666 |
-
}
|
667 |
-
|
668 |
-
.wcf-embed-checkout-form #order_review .wcf-custom-coupon-field input[type='text'],
|
669 |
-
.wcf-embed-checkout-form .woocommerce form .form-row input.input-text,
|
670 |
-
.wcf-embed-checkout-form .woocommerce form .form-row textarea,
|
671 |
-
.wcf-embed-checkout-form .select2-container--default .select2-selection--single {
|
672 |
-
color: {$field_color};
|
673 |
-
background: {$field_bg_color};
|
674 |
-
border-color: {$field_border_color};
|
675 |
-
padding-top: {$field_tb_padding}px;
|
676 |
-
padding-bottom: {$field_tb_padding}px;
|
677 |
-
padding-left: {$field_lr_padding}px;
|
678 |
-
padding-right: {$field_lr_padding}px;
|
679 |
-
min-height: {$field_input_size};
|
680 |
-
font-family: {$input_font_family};
|
681 |
-
font-weight: {$input_font_weight};
|
682 |
-
}
|
683 |
-
|
684 |
-
.wcf-embed-checkout-form .woocommerce .col2-set .col-1,
|
685 |
-
.wcf-embed-checkout-form .woocommerce .col2-set .col-2,
|
686 |
-
.wcf-embed-checkout-form .woocommerce-checkout .shop_table,
|
687 |
-
.wcf-embed-checkout-form .woocommerce-checkout #order_review_heading,
|
688 |
-
.wcf-embed-checkout-form .woocommerce-checkout #payment,
|
689 |
-
.wcf-embed-checkout-form .woocommerce form.checkout_coupon
|
690 |
-
{
|
691 |
-
background-color: {$section_bg_color};
|
692 |
-
border-color: {$box_border_color};
|
693 |
-
font-family: {$input_font_family};
|
694 |
-
font-weight: {$input_font_weight};
|
695 |
-
}
|
696 |
-
|
697 |
-
.woocommerce table.shop_table th{
|
698 |
-
color: {$field_label_color};
|
699 |
-
}
|
700 |
-
/*.wcf-embed-checkout-form .woocommerce .woocommerce-info,
|
701 |
-
.wcf-embed-checkout-form .woocommerce-message{
|
702 |
-
border-top-color: {$primary_color};
|
703 |
-
background-color: {$hl_bg_color};
|
704 |
-
}*/
|
705 |
-
.wcf-embed-checkout-form .woocommerce a{
|
706 |
-
color: {$primary_color};
|
707 |
-
}
|
708 |
-
.wcf-embed-checkout-form .select2-container--default .select2-selection--single .select2-selection__rendered {
|
709 |
-
color: {$field_color};
|
710 |
-
}
|
711 |
-
.wcf-embed-checkout-form ::-webkit-input-placeholder { /* Chrome/Opera/Safari */
|
712 |
-
color: {$field_color};
|
713 |
-
}
|
714 |
-
.wcf-embed-checkout-form ::-moz-placeholder { /* Firefox 19+ */
|
715 |
-
color: {$field_color};
|
716 |
-
}
|
717 |
-
.wcf-embed-checkout-form :-ms-input-placeholder { /* IE 10+ */
|
718 |
-
color: {$field_color};
|
719 |
-
}
|
720 |
-
.wcf-embed-checkout-form :-moz-placeholder { /* Firefox 18- */
|
721 |
-
color: {$field_color};
|
722 |
-
}
|
723 |
-
.wcf-embed-checkout-form .woocommerce form p.form-row label {
|
724 |
-
color: {$field_label_color};
|
725 |
-
font-family: {$input_font_family};
|
726 |
-
font-weight: {$input_font_weight};
|
727 |
-
}
|
728 |
-
.wcf-embed-checkout-form .woocommerce #order_review button,
|
729 |
-
.wcf-embed-checkout-form .woocommerce form.woocommerce-form-login .form-row button,
|
730 |
-
.wcf-embed-checkout-form .woocommerce #order_review button.wcf-btn-small {
|
731 |
-
color: {$submit_color};
|
732 |
-
background: {$submit_bg_color};
|
733 |
-
padding-top: {$submit_tb_padding}px;
|
734 |
-
padding-bottom: {$submit_tb_padding}px;
|
735 |
-
padding-left: {$submit_lr_padding}px;
|
736 |
-
padding-right: {$submit_lr_padding}px;
|
737 |
-
border-color: {$submit_border_color};
|
738 |
-
min-height: {$submit_button_height};
|
739 |
-
font-family: {$button_font_family};
|
740 |
-
font-weight: {$button_font_weight};
|
741 |
-
}
|
742 |
-
.wcf-embed-checkout-form .woocommerce-checkout form.woocommerce-form-login .button,
|
743 |
-
.wcf-embed-checkout-form .woocommerce-checkout form.checkout_coupon .button{
|
744 |
-
background: {$submit_bg_color};
|
745 |
-
border: 1px {$submit_border_color} solid;
|
746 |
-
color: {$submit_color};
|
747 |
-
min-height: {$submit_button_height};
|
748 |
-
font-family: {$button_font_family};
|
749 |
-
font-weight: {$button_font_weight};
|
750 |
-
}
|
751 |
-
.wcf-embed-checkout-form .woocommerce-checkout form.login .button:hover,
|
752 |
-
.wcf-embed-checkout-form .woocommerce-checkout form.checkout_coupon .button:hover,
|
753 |
-
.wcf-embed-checkout-form .woocommerce #payment #place_order:hover,
|
754 |
-
.wcf-embed-checkout-form .woocommerce #order_review button.wcf-btn-small:hover{
|
755 |
-
color: {$submit_hover_color};
|
756 |
-
background-color: {$submit_bg_hover_color};
|
757 |
-
border-color: {$submit_border_hover_color};
|
758 |
-
}
|
759 |
-
.wcf-embed-checkout-form .woocommerce h3,
|
760 |
-
.wcf-embed-checkout-form .woocommerce h3 span,
|
761 |
-
.wcf-embed-checkout-form .woocommerce-checkout #order_review_heading{
|
762 |
-
color: {$section_heading_color};
|
763 |
-
font-family: {$heading_font_family};
|
764 |
-
font-weight: {$heading_font_weight};
|
765 |
-
}
|
766 |
-
.wcf-embed-checkout-form .woocommerce-info::before,
|
767 |
-
.wcf-embed-checkout-form .woocommerce-message::before{
|
768 |
-
color: {$primary_color};
|
769 |
-
}
|
770 |
-
.wcf-embed-checkout-form{
|
771 |
-
font-family: {$base_font_family};
|
772 |
-
}
|
773 |
-
img.emoji, img.wp-smiley {}";
|
774 |
-
|
775 |
-
return $output;
|
776 |
-
}
|
777 |
-
|
778 |
-
/**
|
779 |
-
* Get ajax end points.
|
780 |
-
*
|
781 |
-
* @param string $endpoint_url end point URL.
|
782 |
-
* @return string
|
783 |
-
*/
|
784 |
-
function get_ajax_endpoint( $endpoint_url ) {
|
785 |
-
|
786 |
-
global $post;
|
787 |
-
|
788 |
-
if ( ! empty( $post ) && ! empty( $_SERVER['REQUEST_URI'] ) ) {
|
789 |
-
|
790 |
-
if ( _is_wcf_checkout_type() || _is_wcf_checkout_shortcode() ) {
|
791 |
-
|
792 |
-
if ( mb_strpos( $endpoint_url, 'checkout' ) === false ) {
|
793 |
-
|
794 |
-
$query_args = array(
|
795 |
-
'wc-ajax' => '%%endpoint%%',
|
796 |
-
);
|
797 |
-
|
798 |
-
$uri = explode( '?', $_SERVER['REQUEST_URI'], 2 );
|
799 |
-
$uri = $uri[0];
|
800 |
-
|
801 |
-
$endpoint_url = esc_url( add_query_arg( $query_args, $uri ) );
|
802 |
-
}
|
803 |
-
}
|
804 |
-
}
|
805 |
-
|
806 |
-
return $endpoint_url;
|
807 |
-
}
|
808 |
-
|
809 |
-
|
810 |
-
/**
|
811 |
-
* Save checkout fields.
|
812 |
-
*
|
813 |
-
* @param int $order_id order id.
|
814 |
-
* @param array $posted posted data.
|
815 |
-
* @return void
|
816 |
-
*/
|
817 |
-
function save_checkout_fields( $order_id, $posted ) {
|
818 |
-
|
819 |
-
if ( isset( $_POST['_wcf_checkout_id'] ) ) {
|
820 |
-
|
821 |
-
$checkout_id = wc_clean( $_POST['_wcf_checkout_id'] );
|
822 |
-
|
823 |
-
update_post_meta( $order_id, '_wcf_checkout_id', $checkout_id );
|
824 |
-
|
825 |
-
/*
|
826 |
-
Custom Field To Do
|
827 |
-
$custom_fields = get_post_meta( $checkout_id, 'wcf-custom-checkout-fields', true );
|
828 |
-
|
829 |
-
if ( 'yes' === $custom_fields ) {
|
830 |
-
|
831 |
-
$billing_fields = get_post_meta( $checkout_id, 'wcf_fields_billing', true );
|
832 |
-
|
833 |
-
foreach ( $billing_fields as $field => $data ) {
|
834 |
-
|
835 |
-
if ( isset( $data['custom'] ) && $data['custom'] ) {
|
836 |
-
|
837 |
-
if ( isset( $_POST[ $field ] ) ) {
|
838 |
-
update_post_meta( $order_id, $field, wc_clean( $_POST[ $field ] ) );
|
839 |
-
}
|
840 |
-
}
|
841 |
-
}
|
842 |
-
|
843 |
-
$shipping_fields = get_post_meta( $checkout_id, 'wcf_fields_shipping', true );
|
844 |
-
|
845 |
-
foreach ( $shipping_fields as $field => $data ) {
|
846 |
-
|
847 |
-
if ( isset( $data['custom'] ) && $data['custom'] ) {
|
848 |
-
|
849 |
-
if ( isset( $_POST[ $field ] ) ) {
|
850 |
-
update_post_meta( $order_id, $field, wc_clean( $_POST[ $field ] ) );
|
851 |
-
}
|
852 |
-
}
|
853 |
-
}
|
854 |
-
}
|
855 |
-
*/
|
856 |
-
if ( isset( $_POST['_wcf_flow_id'] ) ) {
|
857 |
-
|
858 |
-
$checkout_id = wc_clean( $_POST['_wcf_flow_id'] );
|
859 |
-
|
860 |
-
update_post_meta( $order_id, '_wcf_flow_id', $checkout_id );
|
861 |
-
}
|
862 |
-
}
|
863 |
-
|
864 |
-
}
|
865 |
-
|
866 |
-
/**
|
867 |
-
* Enable Logo In Header Of Checkout Page
|
868 |
-
*
|
869 |
-
* @return void
|
870 |
-
*/
|
871 |
-
function enable_logo_in_header() {
|
872 |
-
global $post;
|
873 |
-
|
874 |
-
if ( _is_wcf_checkout_type() ) {
|
875 |
-
$checkout_id = $post->ID;
|
876 |
-
} else {
|
877 |
-
$checkout_id = _get_wcf_checkout_id_from_shortcode( $post->post_content );
|
878 |
-
}
|
879 |
-
|
880 |
-
$header_logo_image = wcf()->options->get_checkout_meta_value( $checkout_id, 'wcf-header-logo-image' );
|
881 |
-
$add_image_markup = '';
|
882 |
-
|
883 |
-
if ( isset( $header_logo_image ) && ! empty( $header_logo_image ) ) {
|
884 |
-
$add_image_markup = '<div class="wcf-checkout-header-image">';
|
885 |
-
$add_image_markup .= '<img src="' . $header_logo_image . '" />';
|
886 |
-
$add_image_markup .= '</div>';
|
887 |
-
}
|
888 |
-
|
889 |
-
echo $add_image_markup;
|
890 |
-
}
|
891 |
-
|
892 |
-
/**
|
893 |
-
* Add text to the bootom of the checkout page.
|
894 |
-
*
|
895 |
-
* @return void
|
896 |
-
*/
|
897 |
-
function show_cartflows_copyright_message() {
|
898 |
-
$output_string = '';
|
899 |
-
|
900 |
-
$output_string .= '<div class="wcf-footer-primary">';
|
901 |
-
$output_string .= '<div class="wcf-footer-content">';
|
902 |
-
$output_string .= '<p class="wcf-footer-message">';
|
903 |
-
$output_string .= 'Checkout powered by CartFlows';
|
904 |
-
$output_string .= '</p>';
|
905 |
-
$output_string .= '</div>';
|
906 |
-
$output_string .= '</div>';
|
907 |
-
|
908 |
-
echo $output_string;
|
909 |
-
}
|
910 |
-
|
911 |
-
/**
|
912 |
-
* Redirect users to our checkout if hidden param
|
913 |
-
*
|
914 |
-
* @param string $redirect redirect url.
|
915 |
-
* @param object $user user.
|
916 |
-
* @return string
|
917 |
-
*/
|
918 |
-
function after_login_redirect( $redirect, $user ) {
|
919 |
-
|
920 |
-
if ( isset( $_POST['_wcf_checkout_id'] ) ) {
|
921 |
-
|
922 |
-
$checkout_id = intval( $_POST['_wcf_checkout_id'] );
|
923 |
-
|
924 |
-
$redirect = get_permalink( $checkout_id );
|
925 |
-
}
|
926 |
-
|
927 |
-
return $redirect;
|
928 |
-
}
|
929 |
-
|
930 |
-
/**
|
931 |
-
* Display coupon code field after review order fields.
|
932 |
-
*/
|
933 |
-
function display_custom_coupon_field() {
|
934 |
-
|
935 |
-
$coupon_enabled = apply_filters( 'woocommerce_coupons_enabled', true );
|
936 |
-
$show_coupon = apply_filters( 'cartflows_show_coupon_field', true );
|
937 |
-
|
938 |
-
if ( ! ( $coupon_enabled && $show_coupon ) ) {
|
939 |
-
return;
|
940 |
-
|
941 |
-
}
|
942 |
-
|
943 |
-
ob_start();
|
944 |
-
?>
|
945 |
-
<div class="wcf-custom-coupon-field">
|
946 |
-
<div class="wcf-coupon-col-1">
|
947 |
-
<span>
|
948 |
-
<input type="text" name="coupon_code" class="input-text wcf-coupon-code-input" placeholder="<?php _e( 'Coupon Code', 'cartflows' ); ?>" id="coupon_code" value="">
|
949 |
-
</span>
|
950 |
-
</div>
|
951 |
-
<div class="wcf-coupon-col-2">
|
952 |
-
<span>
|
953 |
-
<button type="button" class="button wcf-submit-coupon wcf-btn-small" name="apply_coupon" value="Apply"><?php _e( 'Apply', 'cartflows' ); ?></button>
|
954 |
-
</span>
|
955 |
-
</div>
|
956 |
-
</div>
|
957 |
-
<?php
|
958 |
-
echo ob_get_clean();
|
959 |
-
}
|
960 |
-
|
961 |
-
/**
|
962 |
-
* Apply filter to change class of remove coupon field.
|
963 |
-
*
|
964 |
-
* @param string $coupon coupon.
|
965 |
-
* @return string
|
966 |
-
*/
|
967 |
-
function remove_coupon_text( $coupon ) {
|
968 |
-
|
969 |
-
$coupon = str_replace( 'woocommerce-remove-coupon', 'wcf-remove-coupon', $coupon );
|
970 |
-
return $coupon;
|
971 |
-
|
972 |
-
}
|
973 |
-
/**
|
974 |
-
* Apply filter to change the placeholder text of coupon field.
|
975 |
-
*
|
976 |
-
* @return string
|
977 |
-
*/
|
978 |
-
function coupon_field_placeholder() {
|
979 |
-
return apply_filters( 'cartflows_coupon_field_placeholder', __( 'Coupon Code', 'cartflows' ) );
|
980 |
-
}
|
981 |
-
|
982 |
-
/**
|
983 |
-
* Apply filter to change the button text of coupon field.
|
984 |
-
*
|
985 |
-
* @return string
|
986 |
-
*/
|
987 |
-
function coupon_button_text() {
|
988 |
-
return apply_filters( 'cartflows_coupon_button_text', __( 'Apply', 'cartflows' ) );
|
989 |
-
}
|
990 |
-
|
991 |
-
/**
|
992 |
-
* Apply coupon on submit of custom coupon form.
|
993 |
-
*/
|
994 |
-
function apply_coupon() {
|
995 |
-
|
996 |
-
$response = '';
|
997 |
-
|
998 |
-
check_ajax_referer( 'wcf-apply-coupon', 'security' );
|
999 |
-
if ( ! empty( $_POST['coupon_code'] ) ) {
|
1000 |
-
$result = WC()->cart->add_discount( sanitize_text_field( $_POST['coupon_code'] ) );
|
1001 |
-
} else {
|
1002 |
-
wc_add_notice( WC_Coupon::get_generic_coupon_error( WC_Coupon::E_WC_COUPON_PLEASE_ENTER ), 'error' );
|
1003 |
-
}
|
1004 |
-
|
1005 |
-
$response = array(
|
1006 |
-
'status' => $result,
|
1007 |
-
'msg' => wc_print_notices( true ),
|
1008 |
-
);
|
1009 |
-
|
1010 |
-
echo json_encode( $response );
|
1011 |
-
|
1012 |
-
die();
|
1013 |
-
}
|
1014 |
-
|
1015 |
-
|
1016 |
-
/**
|
1017 |
-
* Added ajax nonce to localize variable.
|
1018 |
-
*
|
1019 |
-
* @param array $vars localize variables.
|
1020 |
-
*/
|
1021 |
-
function add_localize_vars( $vars ) {
|
1022 |
-
|
1023 |
-
$vars['wcf_validate_coupon_nonce'] = wp_create_nonce( 'wcf-apply-coupon' );
|
1024 |
-
|
1025 |
-
$vars['wcf_validate_remove_coupon_nonce'] = wp_create_nonce( 'wcf-remove-coupon' );
|
1026 |
-
|
1027 |
-
$vars['allow_persistance'] = apply_filters( 'cartflows_allow_persistace', 'yes' );
|
1028 |
-
|
1029 |
-
return $vars;
|
1030 |
-
}
|
1031 |
-
|
1032 |
-
/**
|
1033 |
-
* Add custom class to the fields to change the UI to three column.
|
1034 |
-
*
|
1035 |
-
* @param array $fields fields.
|
1036 |
-
*/
|
1037 |
-
function add_three_column_layout_fields( $fields ) {
|
1038 |
-
|
1039 |
-
if ( empty( $fields['billing']['billing_address_2'] ) ) {
|
1040 |
-
|
1041 |
-
if ( isset( $fields['billing']['billing_address_1'] ) && is_array( $fields['billing']['billing_address_1'] ) ) {
|
1042 |
-
$fields['billing']['billing_address_1']['class'][] = 'form-row-full';
|
1043 |
-
}
|
1044 |
-
}
|
1045 |
-
|
1046 |
-
if ( ! empty( $fields['billing']['billing_company'] ) ) {
|
1047 |
-
|
1048 |
-
if ( isset( $fields['billing']['billing_company'] ) && is_array( $fields['billing']['billing_company'] ) ) {
|
1049 |
-
$fields['billing']['billing_company']['class'][] = 'form-row-full';
|
1050 |
-
}
|
1051 |
-
}
|
1052 |
-
|
1053 |
-
if ( ! empty( $fields['shipping']['shipping_company'] ) ) {
|
1054 |
-
|
1055 |
-
if ( isset( $fields['shipping']['shipping_company'] ) && is_array( $fields['shipping']['shipping_company'] ) ) {
|
1056 |
-
$fields['shipping']['shipping_company']['class'][] = 'form-row-full';
|
1057 |
-
}
|
1058 |
-
}
|
1059 |
-
|
1060 |
-
if ( ! empty( $fields['billing']['billing_country'] ) ) {
|
1061 |
-
|
1062 |
-
if ( isset( $fields['billing']['billing_country'] ) && is_array( $fields['billing']['billing_country'] ) ) {
|
1063 |
-
$fields['billing']['billing_country']['class'][] = 'form-row-full';
|
1064 |
-
}
|
1065 |
-
}
|
1066 |
-
|
1067 |
-
if ( ! empty( $fields['shipping']['shipping_country'] ) ) {
|
1068 |
-
|
1069 |
-
if ( isset( $fields['shipping']['shipping_country'] ) && is_array( $fields['shipping']['shipping_country'] ) ) {
|
1070 |
-
$fields['shipping']['shipping_country']['class'][] = 'form-row-full';
|
1071 |
-
}
|
1072 |
-
}
|
1073 |
-
|
1074 |
-
if ( ! empty( $fields['billing']['billing_phone'] ) ) {
|
1075 |
-
|
1076 |
-
if ( isset( $fields['billing']['billing_phone'] ) && is_array( $fields['billing']['billing_phone'] ) ) {
|
1077 |
-
$fields['billing']['billing_phone']['class'][] = 'form-row-full';
|
1078 |
-
}
|
1079 |
-
}
|
1080 |
-
|
1081 |
-
if ( ! empty( $fields['billing']['billing_email'] ) ) {
|
1082 |
-
|
1083 |
-
if ( isset( $fields['billing']['billing_email'] ) && is_array( $fields['billing']['billing_email'] ) ) {
|
1084 |
-
$fields['billing']['billing_email']['class'][] = 'form-row-full';
|
1085 |
-
}
|
1086 |
-
}
|
1087 |
-
|
1088 |
-
if ( empty( $fields['shipping']['shipping_address_2'] ) ) {
|
1089 |
-
|
1090 |
-
if ( isset( $fields['shipping']['shipping_address_1'] ) && is_array( $fields['shipping']['shipping_address_1'] ) ) {
|
1091 |
-
$fields['shipping']['shipping_address_1']['class'][] = 'form-row-full';
|
1092 |
-
}
|
1093 |
-
}
|
1094 |
-
|
1095 |
-
if ( isset( $fields['billing']['billing_city'] ) &&
|
1096 |
-
isset( $fields['billing']['billing_state'] ) && isset( $fields['billing']['billing_postcode'] ) ) {
|
1097 |
-
|
1098 |
-
$fields['billing']['billing_city']['class'][] = 'wcf-column-33';
|
1099 |
-
$fields['billing']['billing_state']['class'][] = 'wcf-column-33';
|
1100 |
-
$fields['billing']['billing_postcode']['class'][] = 'wcf-column-33';
|
1101 |
-
}
|
1102 |
-
|
1103 |
-
if ( isset( $fields['shipping']['shipping_city'] ) &&
|
1104 |
-
isset( $fields['shipping']['shipping_state'] ) && isset( $fields['shipping']['shipping_postcode'] ) ) {
|
1105 |
-
|
1106 |
-
$fields['shipping']['shipping_city']['class'][] = 'wcf-column-33';
|
1107 |
-
$fields['shipping']['shipping_state']['class'][] = 'wcf-column-33';
|
1108 |
-
$fields['shipping']['shipping_postcode']['class'][] = 'wcf-column-33';
|
1109 |
-
}
|
1110 |
-
|
1111 |
-
return $fields;
|
1112 |
-
}
|
1113 |
-
|
1114 |
-
/**
|
1115 |
-
* Add opening dev
|
1116 |
-
*
|
1117 |
-
* @since 1.0.0
|
1118 |
-
*/
|
1119 |
-
function order_wrap_div_start() {
|
1120 |
-
|
1121 |
-
echo "<div class='wcf-order-wrap'> ";
|
1122 |
-
}
|
1123 |
-
|
1124 |
-
/**
|
1125 |
-
* Add closing dev
|
1126 |
-
*
|
1127 |
-
* @since 1.0.0
|
1128 |
-
*/
|
1129 |
-
function order_wrap_div_end() {
|
1130 |
-
|
1131 |
-
echo '</div> ';
|
1132 |
-
}
|
1133 |
-
|
1134 |
-
/**
|
1135 |
-
* Remove coupon.
|
1136 |
-
*/
|
1137 |
-
function remove_coupon() {
|
1138 |
-
|
1139 |
-
check_ajax_referer( 'wcf-remove-coupon', 'security' );
|
1140 |
-
$coupon = isset( $_POST['coupon_code'] ) ? wc_clean( $_POST['coupon_code'] ) : false;
|
1141 |
-
|
1142 |
-
if ( empty( $coupon ) ) {
|
1143 |
-
echo "<div class='woocommerce-error'>Sorry there was a problem removing this coupon.";
|
1144 |
-
} else {
|
1145 |
-
WC()->cart->remove_coupon( $coupon );
|
1146 |
-
echo "<div class='woocommerce-error'>Coupon has been removed.</div>";
|
1147 |
-
}
|
1148 |
-
wc_print_notices();
|
1149 |
-
wp_die();
|
1150 |
-
}
|
1151 |
-
|
1152 |
-
}
|
1153 |
-
|
1154 |
-
/**
|
1155 |
-
* Kicking this off by calling 'get_instance()' method
|
1156 |
-
*/
|
1157 |
-
Cartflows_Checkout_Markup::get_instance();
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Checkout markup.
|
4 |
+
*
|
5 |
+
* @package CartFlows
|
6 |
+
*/
|
7 |
+
|
8 |
+
/**
|
9 |
+
* Checkout Markup
|
10 |
+
*
|
11 |
+
* @since 1.0.0
|
12 |
+
*/
|
13 |
+
class Cartflows_Checkout_Markup {
|
14 |
+
|
15 |
+
/**
|
16 |
+
* Member Variable
|
17 |
+
*
|
18 |
+
* @var object instance
|
19 |
+
*/
|
20 |
+
private static $instance;
|
21 |
+
|
22 |
+
/**
|
23 |
+
* Initiator
|
24 |
+
*/
|
25 |
+
public static function get_instance() {
|
26 |
+
if ( ! isset( self::$instance ) ) {
|
27 |
+
self::$instance = new self;
|
28 |
+
}
|
29 |
+
return self::$instance;
|
30 |
+
}
|
31 |
+
|
32 |
+
/**
|
33 |
+
* Constructor
|
34 |
+
*/
|
35 |
+
public function __construct() {
|
36 |
+
|
37 |
+
/* Set is checkout flag */
|
38 |
+
add_filter( 'woocommerce_is_checkout', array( $this, 'woo_checkout_flag' ), 9999 );
|
39 |
+
|
40 |
+
add_action( 'woocommerce_checkout_update_order_meta', array( $this, 'save_checkout_fields' ), 10, 2 );
|
41 |
+
|
42 |
+
/* Show notice if cart is empty */
|
43 |
+
add_action( 'cartflows_checkout_cart_empty', array( $this, 'display_woo_notices' ) );
|
44 |
+
|
45 |
+
/* Checkout Shortcode */
|
46 |
+
add_shortcode( 'cartflows_checkout', array( $this, 'checkout_shortcode_markup' ) );
|
47 |
+
|
48 |
+
/* Preconfigured cart data */
|
49 |
+
add_action( 'wp', array( $this, 'preconfigured_cart_data' ), 1 );
|
50 |
+
|
51 |
+
/* Embed Checkout */
|
52 |
+
add_action( 'wp', array( $this, 'shortcode_load_data' ), 999 );
|
53 |
+
|
54 |
+
/* Ajax Endpoint */
|
55 |
+
add_filter( 'woocommerce_ajax_get_endpoint', array( $this, 'get_ajax_endpoint' ) );
|
56 |
+
|
57 |
+
add_filter( 'cartflows_add_before_main_section', array( $this, 'enable_logo_in_header' ) );
|
58 |
+
|
59 |
+
add_filter( 'cartflows_primary_container_bottom', array( $this, 'show_cartflows_copyright_message' ) );
|
60 |
+
|
61 |
+
add_filter( 'woocommerce_login_redirect', array( $this, 'after_login_redirect' ), 10, 2 );
|
62 |
+
|
63 |
+
add_action( 'wp_ajax_wcf_woo_apply_coupon', array( $this, 'apply_coupon' ) );
|
64 |
+
add_action( 'wp_ajax_nopriv_wcf_woo_apply_coupon', array( $this, 'apply_coupon' ) );
|
65 |
+
|
66 |
+
add_filter( 'global_cartflows_js_localize', array( $this, 'add_localize_vars' ) );
|
67 |
+
|
68 |
+
/* Global Checkout */
|
69 |
+
add_action( 'template_redirect', array( $this, 'global_checkout_template_redirect' ), 1 );
|
70 |
+
|
71 |
+
add_action( 'wp_ajax_wcf_woo_remove_coupon', array( $this, 'remove_coupon' ) );
|
72 |
+
add_action( 'wp_ajax_nopriv_wcf_woo_remove_coupon', array( $this, 'remove_coupon' ) );
|
73 |
+
|
74 |
+
}
|
75 |
+
|
76 |
+
/**
|
77 |
+
* Display all WooCommerce notices.
|
78 |
+
*
|
79 |
+
* @since 1.1.5
|
80 |
+
*/
|
81 |
+
function display_woo_notices() {
|
82 |
+
|
83 |
+
if ( null != WC()->session && function_exists( 'woocommerce_output_all_notices' ) ) {
|
84 |
+
woocommerce_output_all_notices();
|
85 |
+
}
|
86 |
+
}
|
87 |
+
|
88 |
+
|
89 |
+
/**
|
90 |
+
* Redirect from default to the global checkout page
|
91 |
+
*
|
92 |
+
* @since 1.0.0
|
93 |
+
*/
|
94 |
+
function global_checkout_template_redirect() {
|
95 |
+
|
96 |
+
if ( ! is_checkout() ) {
|
97 |
+
return;
|
98 |
+
}
|
99 |
+
|
100 |
+
if ( _is_wcf_checkout_type() || _is_wcf_checkout_shortcode() ) {
|
101 |
+
return;
|
102 |
+
}
|
103 |
+
|
104 |
+
// redirect only for cartflows checkout pages.
|
105 |
+
$order_pay_endpoint = get_option( 'woocommerce_checkout_pay_endpoint', 'order-pay' );
|
106 |
+
$order_received_endpoint = get_option( 'woocommerce_checkout_order_received_endpoint', 'order-received' );
|
107 |
+
|
108 |
+
$common = Cartflows_Helper::get_common_settings();
|
109 |
+
|
110 |
+
$global_checkout = $common['global_checkout'];
|
111 |
+
|
112 |
+
if (
|
113 |
+
// ignore on order-pay.
|
114 |
+
false === mb_strpos( $_SERVER['REQUEST_URI'], '/' . $order_pay_endpoint . '/' ) &&
|
115 |
+
// ignore on TY page.
|
116 |
+
false === mb_strpos( $_SERVER['REQUEST_URI'], '/' . $order_received_endpoint . '/' )
|
117 |
+
) {
|
118 |
+
|
119 |
+
if ( '' !== $global_checkout ) {
|
120 |
+
|
121 |
+
$link = get_permalink( $global_checkout );
|
122 |
+
|
123 |
+
if ( ! empty( $link ) ) {
|
124 |
+
|
125 |
+
wp_redirect( $link );
|
126 |
+
die();
|
127 |
+
}
|
128 |
+
}
|
129 |
+
}
|
130 |
+
}
|
131 |
+
|
132 |
+
/**
|
133 |
+
* Check for checkout flag
|
134 |
+
*
|
135 |
+
* @param bool $is_checkout is checkout.
|
136 |
+
*
|
137 |
+
* @return bool
|
138 |
+
*/
|
139 |
+
function woo_checkout_flag( $is_checkout ) {
|
140 |
+
|
141 |
+
if ( ! is_admin() ) {
|
142 |
+
|
143 |
+
if ( _is_wcf_checkout_type() || _is_wcf_checkout_shortcode() ) {
|
144 |
+
|
145 |
+
$is_checkout = true;
|
146 |
+
}
|
147 |
+
}
|
148 |
+
|
149 |
+
return $is_checkout;
|
150 |
+
}
|
151 |
+
|
152 |
+
/**
|
153 |
+
* Render checkout shortcode markup.
|
154 |
+
*
|
155 |
+
* @param array $atts attributes.
|
156 |
+
* @return string
|
157 |
+
*/
|
158 |
+
function checkout_shortcode_markup( $atts ) {
|
159 |
+
|
160 |
+
if ( ! function_exists( 'wc_print_notices' ) ) {
|
161 |
+
return '<p class="woocommerce-notice">' . __( 'WooCommerce functions not exists. If you are in iframe, please reload the iframe', 'cartflows' ) . '</p>';
|
162 |
+
}
|
163 |
+
|
164 |
+
$atts = shortcode_atts(
|
165 |
+
array(
|
166 |
+
'id' => 0,
|
167 |
+
),
|
168 |
+
$atts
|
169 |
+
);
|
170 |
+
|
171 |
+
$checkout_id = intval( $atts['id'] );
|
172 |
+
|
173 |
+
if ( empty( $checkout_id ) ) {
|
174 |
+
|
175 |
+
if ( ! _is_wcf_checkout_type() ) {
|
176 |
+
|
177 |
+
return '<h4>' . __( 'Checkout ID not found', 'cartflows' ) . '</h4>';
|
178 |
+
}
|
179 |
+
|
180 |
+
global $post;
|
181 |
+
|
182 |
+
$checkout_id = intval( $post->ID );
|
183 |
+
}
|
184 |
+
|
185 |
+
$output = '';
|
186 |
+
|
187 |
+
ob_start();
|
188 |
+
|
189 |
+
do_action( 'cartflows_checkout_form_before', $checkout_id );
|
190 |
+
|
191 |
+
$checkout_layout = wcf()->options->get_checkout_meta_value( $checkout_id, 'wcf-checkout-layout' );
|
192 |
+
|
193 |
+
$template_default = CARTFLOWS_CHECKOUT_DIR . 'templates/embed/checkout-template-simple.php';
|
194 |
+
|
195 |
+
$template_layout = apply_filters( 'cartflows_checkout_layout_template', $checkout_layout );
|
196 |
+
|
197 |
+
if ( file_exists( $template_layout ) ) {
|
198 |
+
include $template_layout;
|
199 |
+
} else {
|
200 |
+
include $template_default;
|
201 |
+
}
|
202 |
+
|
203 |
+
$output .= ob_get_clean();
|
204 |
+
|
205 |
+
return $output;
|
206 |
+
}
|
207 |
+
|
208 |
+
/**
|
209 |
+
* Configure Cart Data.
|
210 |
+
*
|
211 |
+
* @since 1.0.0
|
212 |
+
*
|
213 |
+
* @return void
|
214 |
+
*/
|
215 |
+
function preconfigured_cart_data() {
|
216 |
+
|
217 |
+
if ( is_admin() ) {
|
218 |
+
return;
|
219 |
+
}
|
220 |
+
|
221 |
+
global $post;
|
222 |
+
|
223 |
+
if ( _is_wcf_checkout_type() || _is_wcf_checkout_shortcode() ) {
|
224 |
+
|
225 |
+
if ( wp_doing_ajax() ) {
|
226 |
+
|
227 |
+
return;
|
228 |
+
} else {
|
229 |
+
|
230 |
+
if ( _is_wcf_checkout_type() ) {
|
231 |
+
$checkout_id = $post->ID;
|
232 |
+
} else {
|
233 |
+
$checkout_id = _get_wcf_checkout_id_from_shortcode( $post->post_content );
|
234 |
+
}
|
235 |
+
|
236 |
+
do_action( 'cartflows_checkout_before_configure_cart', $checkout_id );
|
237 |
+
|
238 |
+
$flow_id = wcf()->utils->get_flow_id_from_step_id( $checkout_id );
|
239 |
+
|
240 |
+
if ( wcf()->flow->is_flow_testmode( $flow_id ) ) {
|
241 |
+
$products = wcf()->options->get_checkout_meta_value( $checkout_id, 'wcf-checkout-products', 'dummy' );
|
242 |
+
} else {
|
243 |
+
$products = wcf()->options->get_checkout_meta_value( $checkout_id, 'wcf-checkout-products' );
|
244 |
+
}
|
245 |
+
|
246 |
+
if ( ! is_array( $products ) ) {
|
247 |
+
|
248 |
+
if ( 'dummy' === $products ) {
|
249 |
+
|
250 |
+
$args = array(
|
251 |
+
'posts_per_page' => 1,
|
252 |
+
'orderby' => 'rand',
|
253 |
+
'post_type' => 'product',
|
254 |
+
'meta_query' => array(
|
255 |
+
// Exclude out of stock products.
|
256 |
+
array(
|
257 |
+
'key' => '_stock_status',
|
258 |
+
'value' => 'outofstock',
|
259 |
+
'compare' => 'NOT IN',
|
260 |
+
),
|
261 |
+
),
|
262 |
+
'tax_query' => array(
|
263 |
+
array(
|
264 |
+
'taxonomy' => 'product_type',
|
265 |
+
'field' => 'slug',
|
266 |
+
'terms' => 'simple',
|
267 |
+
),
|
268 |
+
),
|
269 |
+
);
|
270 |
+
|
271 |
+
$random_product = get_posts( $args );
|
272 |
+
|
273 |
+
if ( isset( $random_product[0]->ID ) ) {
|
274 |
+
$products = array(
|
275 |
+
array(
|
276 |
+
'product' => $random_product[0]->ID,
|
277 |
+
),
|
278 |
+
);
|
279 |
+
} else {
|
280 |
+
return;
|
281 |
+
}
|
282 |
+
} else {
|
283 |
+
return;
|
284 |
+
}
|
285 |
+
}
|
286 |
+
|
287 |
+
if ( is_array( $products ) && count( $products ) < 1 ) {
|
288 |
+
|
289 |
+
return;
|
290 |
+
}
|
291 |
+
/* Empty the current cart */
|
292 |
+
WC()->cart->empty_cart();
|
293 |
+
|
294 |
+
/* Set customer session if not set */
|
295 |
+
if ( ! is_user_logged_in() && WC()->cart->is_empty() ) {
|
296 |
+
WC()->session->set_customer_session_cookie( true );
|
297 |
+
}
|
298 |
+
|
299 |
+
$cart_product_count = 0;
|
300 |
+
|
301 |
+
foreach ( $products as $index => $data ) {
|
302 |
+
|
303 |
+
if ( ! isset( $data['product'] ) ) {
|
304 |
+
return;
|
305 |
+
}
|
306 |
+
|
307 |
+
if ( apply_filters( 'cartflows_skip_other_products', false, $cart_product_count ) ) {
|
308 |
+
break;
|
309 |
+
}
|
310 |
+
|
311 |
+
$product_id = $data['product'];
|
312 |
+
$_product = wc_get_product( $product_id );
|
313 |
+
|
314 |
+
if ( ! empty( $_product ) ) {
|
315 |
+
|
316 |
+
$quantity = 1;
|
317 |
+
|
318 |
+
if ( ! $_product->is_type( 'grouped' ) && ! $_product->is_type( 'external' ) ) {
|
319 |
+
|
320 |
+
if ( $_product->is_type( 'variable' ) ) {
|
321 |
+
|
322 |
+
$default_attributes = $_product->get_default_attributes();
|
323 |
+
|
324 |
+
if ( ! empty( $default_attributes ) ) {
|
325 |
+
|
326 |
+
foreach ( $_product->get_children() as $variation_id ) {
|
327 |
+
|
328 |
+
$single_variation = new WC_Product_Variation( $variation_id );
|
329 |
+
|
330 |
+
if ( $default_attributes == $single_variation->get_attributes() ) {
|
331 |
+
WC()->cart->add_to_cart( $variation_id, $quantity );
|
332 |
+
$cart_product_count++;
|
333 |
+
}
|
334 |
+
}
|
335 |
+
} else {
|
336 |
+
|
337 |
+
$product_childrens = $_product->get_children();
|
338 |
+
|
339 |
+
if ( isset( $product_childrens[0] ) ) {
|
340 |
+
WC()->cart->add_to_cart( $product_childrens[0], $quantity );
|
341 |
+
$cart_product_count++;
|
342 |
+
} else {
|
343 |
+
echo '<p>' . __( 'Variations Not set', 'cartflows' ) . '</p>';
|
344 |
+
}
|
345 |
+
}
|
346 |
+
} else {
|
347 |
+
WC()->cart->add_to_cart( $product_id, $quantity );
|
348 |
+
$cart_product_count++;
|
349 |
+
}
|
350 |
+
} else {
|
351 |
+
|
352 |
+
echo '<p>' . __( 'This product can\'t be purcahsed', 'cartflows' ) . '</p>';
|
353 |
+
// WC()->cart->add_to_cart( $product_id, $quantity );.
|
354 |
+
}
|
355 |
+
}
|
356 |
+
}
|
357 |
+
|
358 |
+
do_action( 'cartflows_checkout_aftet_configure_cart', $checkout_id );
|
359 |
+
do_action( 'cartflows_checkout_after_configure_cart', $checkout_id );
|
360 |
+
}
|
361 |
+
}
|
362 |
+
}
|
363 |
+
|
364 |
+
/**
|
365 |
+
* Load shortcode data.
|
366 |
+
*
|
367 |
+
* @return void
|
368 |
+
*/
|
369 |
+
function shortcode_load_data() {
|
370 |
+
|
371 |
+
if ( _is_wcf_checkout_type() || _is_wcf_checkout_shortcode() ) {
|
372 |
+
|
373 |
+
add_action( 'wp_enqueue_scripts', array( $this, 'shortcode_scripts' ), 21 );
|
374 |
+
|
375 |
+
add_action( 'wp_enqueue_scripts', array( $this, 'compatibility_scripts' ), 101 );
|
376 |
+
|
377 |
+
/* Show notices if cart has errors */
|
378 |
+
add_action( 'woocommerce_cart_has_errors', 'woocommerce_output_all_notices' );
|
379 |
+
|
380 |
+
add_action( 'woocommerce_checkout_after_customer_details', array( $this, 'order_wrap_div_start' ), 99 );
|
381 |
+
|
382 |
+
add_action( 'woocommerce_checkout_after_order_review', array( $this, 'order_wrap_div_end' ), 99 );
|
383 |
+
|
384 |
+
// Outputting the hidden field in checkout page.
|
385 |
+
add_action( 'woocommerce_after_order_notes', array( $this, 'checkout_shortcode_post_id' ), 99 );
|
386 |
+
add_action( 'woocommerce_login_form_end', array( $this, 'checkout_shortcode_post_id' ), 99 );
|
387 |
+
|
388 |
+
remove_all_actions( 'woocommerce_checkout_billing' );
|
389 |
+
remove_all_actions( 'woocommerce_checkout_shipping' );
|
390 |
+
|
391 |
+
// Hook in actions once.
|
392 |
+
add_action( 'woocommerce_checkout_billing', array( WC()->checkout, 'checkout_form_billing' ) );
|
393 |
+
add_action( 'woocommerce_checkout_shipping', array( WC()->checkout, 'checkout_form_shipping' ) );
|
394 |
+
|
395 |
+
remove_action( 'woocommerce_before_checkout_form', 'woocommerce_checkout_coupon_form' );
|
396 |
+
|
397 |
+
add_action( 'woocommerce_checkout_order_review', array( $this, 'display_custom_coupon_field' ) );
|
398 |
+
|
399 |
+
add_filter( 'woocommerce_checkout_fields', array( $this, 'add_three_column_layout_fields' ) );
|
400 |
+
|
401 |
+
add_filter( 'woocommerce_cart_totals_coupon_html', array( $this, 'remove_coupon_text' ) );
|
402 |
+
global $post;
|
403 |
+
|
404 |
+
if ( _is_wcf_checkout_type() ) {
|
405 |
+
$checkout_id = $post->ID;
|
406 |
+
} else {
|
407 |
+
$checkout_id = _get_wcf_checkout_id_from_shortcode( $post->post_content );
|
408 |
+
}
|
409 |
+
|
410 |
+
do_action( 'cartflows_checkout_before_shortcode', $checkout_id );
|
411 |
+
}
|
412 |
+
}
|
413 |
+
|
414 |
+
/**
|
415 |
+
* Render checkout ID hidden field.
|
416 |
+
*
|
417 |
+
* @param array $checkout checkout session data.
|
418 |
+
* @return void
|
419 |
+
*/
|
420 |
+
function checkout_shortcode_post_id( $checkout ) {
|
421 |
+
|
422 |
+
global $post;
|
423 |
+
|
424 |
+
if ( _is_wcf_checkout_type() ) {
|
425 |
+
$checkout_id = $post->ID;
|
426 |
+
} else {
|
427 |
+
$checkout_id = _get_wcf_checkout_id_from_shortcode( $post->post_content );
|
428 |
+
}
|
429 |
+
|
430 |
+
$flow_id = get_post_meta( $checkout_id, 'wcf-flow-id', true );
|
431 |
+
|
432 |
+
echo '<input type="hidden" class="input-hidden _wcf_flow_id" name="_wcf_flow_id" value="' . intval( $flow_id ) . '">';
|
433 |
+
echo '<input type="hidden" class="input-hidden _wcf_checkout_id" name="_wcf_checkout_id" value="' . intval( $checkout_id ) . '">';
|
434 |
+
}
|
435 |
+
|
436 |
+
/**
|
437 |
+
* Load shortcode scripts.
|
438 |
+
*
|
439 |
+
* @return void
|
440 |
+
*/
|
441 |
+
function shortcode_scripts() {
|
442 |
+
|
443 |
+
wp_enqueue_style( 'wcf-checkout-template', wcf()->utils->get_css_url( 'checkout-template' ), '', CARTFLOWS_VER );
|
444 |
+
|
445 |
+
wp_enqueue_script(
|
446 |
+
'wcf-checkout-template',
|
447 |
+
wcf()->utils->get_js_url( 'checkout-template' ),
|
448 |
+
array( 'jquery' ),
|
449 |
+
CARTFLOWS_VER,
|
450 |
+
true
|
451 |
+
);
|
452 |
+
|
453 |
+
do_action( 'cartflows_checkout_scripts' );
|
454 |
+
|
455 |
+
$style = $this->generate_style();
|
456 |
+
|
457 |
+
wp_add_inline_style( 'wcf-checkout-template', $style );
|
458 |
+
|
459 |
+
}
|
460 |
+
|
461 |
+
/**
|
462 |
+
* Load compatibility scripts.
|
463 |
+
*
|
464 |
+
* @return void
|
465 |
+
*/
|
466 |
+
function compatibility_scripts() {
|
467 |
+
|
468 |
+
global $post;
|
469 |
+
|
470 |
+
if ( _is_wcf_checkout_type() ) {
|
471 |
+
$checkout_id = $post->ID;
|
472 |
+
} else {
|
473 |
+
$checkout_id = _get_wcf_checkout_id_from_shortcode( $post->post_content );
|
474 |
+
}
|
475 |
+
|
476 |
+
// Add DIVI Compatibility css if DIVI theme is enabled.
|
477 |
+
if ( Cartflows_Compatibility::get_instance()->is_divi_enabled() ||
|
478 |
+
Cartflows_Compatibility::get_instance()->is_divi_builder_enabled( $checkout_id )
|
479 |
+
) {
|
480 |
+
wp_enqueue_style( 'wcf-checkout-template-divi', wcf()->utils->get_css_url( 'checkout-template-divi' ), '', CARTFLOWS_VER );
|
481 |
+
}
|
482 |
+
|
483 |
+
// Add Flatsome Compatibility css if Flatsome theme is enabled.
|
484 |
+
if ( Cartflows_Compatibility::get_instance()->is_flatsome_enabled() ) {
|
485 |
+
wp_enqueue_style( 'wcf-checkout-template-flatsome', wcf()->utils->get_css_url( 'checkout-template-flatsome' ), '', CARTFLOWS_VER );
|
486 |
+
}
|
487 |
+
|
488 |
+
// Add The7 Compatibility css if The7 theme is enabled.
|
489 |
+
if ( Cartflows_Compatibility::get_instance()->is_the_seven_enabled() ) {
|
490 |
+
wp_enqueue_style( 'wcf-checkout-template-the-seven', wcf()->utils->get_css_url( 'checkout-template-the-seven' ), '', CARTFLOWS_VER );
|
491 |
+
}
|
492 |
+
}
|
493 |
+
|
494 |
+
/**
|
495 |
+
* Generate styles.
|
496 |
+
*
|
497 |
+
* @return string
|
498 |
+
*/
|
499 |
+
function generate_style() {
|
500 |
+
|
501 |
+
global $post;
|
502 |
+
|
503 |
+
if ( _is_wcf_checkout_type() ) {
|
504 |
+
$checkout_id = $post->ID;
|
505 |
+
} else {
|
506 |
+
$checkout_id = _get_wcf_checkout_id_from_shortcode( $post->post_content );
|
507 |
+
}
|
508 |
+
|
509 |
+
CartFlows_Font_Families::render_fonts( $checkout_id );
|
510 |
+
|
511 |
+
$primary_color = wcf()->options->get_checkout_meta_value( $checkout_id, 'wcf-primary-color' );
|
512 |
+
|
513 |
+
$base_font_family = wcf()->options->get_checkout_meta_value( $checkout_id, 'wcf-base-font-family' );
|
514 |
+
|
515 |
+
$header_logo_width = wcf()->options->get_checkout_meta_value( $checkout_id, 'wcf-header-logo-width' );
|
516 |
+
|
517 |
+
/*$base_font_weight = wcf()->options->get_checkout_meta_value( $checkout_id, 'wcf-base-font-weight' );*/
|
518 |
+
$r = '';
|
519 |
+
$g = '';
|
520 |
+
$b = '';
|
521 |
+
|
522 |
+
$field_tb_padding = '';
|
523 |
+
$field_lr_padding = '';
|
524 |
+
|
525 |
+
$field_heading_color = '';
|
526 |
+
$field_color = '';
|
527 |
+
$field_bg_color = '';
|
528 |
+
$field_border_color = '';
|
529 |
+
$field_label_color = '';
|
530 |
+
$submit_tb_padding = '';
|
531 |
+
$submit_lr_padding = '';
|
532 |
+
$hl_bg_color = '';
|
533 |
+
$field_input_size = '';
|
534 |
+
$box_border_color = '';
|
535 |
+
$section_bg_color = '';
|
536 |
+
$submit_button_height = '';
|
537 |
+
$submit_color = '';
|
538 |
+
$submit_bg_color = $primary_color;
|
539 |
+
$submit_border_color = $primary_color;
|
540 |
+
|
541 |
+
$submit_hover_color = '';
|
542 |
+
$submit_bg_hover_color = $primary_color;
|
543 |
+
$submit_border_hover_color = $primary_color;
|
544 |
+
|
545 |
+
$section_heading_color = '';
|
546 |
+
|
547 |
+
$is_advance_option = wcf()->options->get_checkout_meta_value( $checkout_id, 'wcf-advance-options-fields' );
|
548 |
+
|
549 |
+
$button_font_family = '';
|
550 |
+
$button_font_weight = '';
|
551 |
+
$input_font_family = '';
|
552 |
+
$input_font_weight = '';
|
553 |
+
$heading_font_family = '';
|
554 |
+
$heading_font_weight = '';
|
555 |
+
$base_font_family = $base_font_family;
|
556 |
+
/*$base_font_weight = $base_font_weight;*/
|
557 |
+
|
558 |
+
if ( 'yes' == $is_advance_option ) {
|
559 |
+
|
560 |
+
/**
|
561 |
+
* Get Font Family and Font Weight weight values
|
562 |
+
*/
|
563 |
+
$section_bg_color = wcf()->options->get_checkout_meta_value( $checkout_id, 'wcf-section-bg-color' );
|
564 |
+
|
565 |
+
$heading_font_family = wcf()->options->get_checkout_meta_value( $checkout_id, 'wcf-heading-font-family' );
|
566 |
+
$heading_font_weight = wcf()->options->get_checkout_meta_value( $checkout_id, 'wcf-heading-font-weight' );
|
567 |
+
$section_heading_color = wcf()->options->get_checkout_meta_value( $checkout_id, 'wcf-heading-color' );
|
568 |
+
$button_font_family = wcf()->options->get_checkout_meta_value( $checkout_id, 'wcf-button-font-family' );
|
569 |
+
$button_font_weight = wcf()->options->get_checkout_meta_value( $checkout_id, 'wcf-button-font-weight' );
|
570 |
+
$input_font_family = wcf()->options->get_checkout_meta_value( $checkout_id, 'wcf-input-font-family' );
|
571 |
+
$input_font_weight = wcf()->options->get_checkout_meta_value( $checkout_id, 'wcf-input-font-weight' );
|
572 |
+
$field_tb_padding = wcf()->options->get_checkout_meta_value( $checkout_id, 'wcf-field-tb-padding' );
|
573 |
+
$field_lr_padding = wcf()->options->get_checkout_meta_value( $checkout_id, 'wcf-field-lr-padding' );
|
574 |
+
$field_input_size = wcf()->options->get_checkout_meta_value( $checkout_id, 'wcf-input-field-size' );
|
575 |
+
|
576 |
+
$field_heading_color = wcf()->options->get_checkout_meta_value( $checkout_id, 'wcf-field-heading-color' );
|
577 |
+
|
578 |
+
$field_color = wcf()->options->get_checkout_meta_value( $checkout_id, 'wcf-field-color' );
|
579 |
+
|
580 |
+
$field_bg_color = wcf()->options->get_checkout_meta_value( $checkout_id, 'wcf-field-bg-color' );
|
581 |
+
|
582 |
+
$field_border_color = wcf()->options->get_checkout_meta_value( $checkout_id, 'wcf-field-border-color' );
|
583 |
+
|
584 |
+
$field_label_color = wcf()->options->get_checkout_meta_value( $checkout_id, 'wcf-field-label-color' );
|
585 |
+
|
586 |
+
$submit_tb_padding = wcf()->options->get_checkout_meta_value( $checkout_id, 'wcf-submit-tb-padding' );
|
587 |
+
|
588 |
+
$submit_lr_padding = wcf()->options->get_checkout_meta_value( $checkout_id, 'wcf-submit-lr-padding' );
|
589 |
+
|
590 |
+
$submit_color = wcf()->options->get_checkout_meta_value( $checkout_id, 'wcf-submit-color' );
|
591 |
+
|
592 |
+
$submit_bg_color = wcf()->options->get_checkout_meta_value( $checkout_id, 'wcf-submit-bg-color', $primary_color );
|
593 |
+
|
594 |
+
$submit_border_color = wcf()->options->get_checkout_meta_value( $checkout_id, 'wcf-submit-border-color', $primary_color );
|
595 |
+
|
596 |
+
$submit_border_hover_color = wcf()->options->get_checkout_meta_value( $checkout_id, 'wcf-submit-border-hover-color', $primary_color );
|
597 |
+
|
598 |
+
$submit_hover_color = wcf()->options->get_checkout_meta_value( $checkout_id, 'wcf-submit-hover-color' );
|
599 |
+
|
600 |
+
$submit_bg_hover_color = wcf()->options->get_checkout_meta_value( $checkout_id, 'wcf-submit-bg-hover-color', $primary_color );
|
601 |
+
|
602 |
+
$hl_bg_color = wcf()->options->get_checkout_meta_value( $checkout_id, 'wcf-hl-bg-color' );
|
603 |
+
|
604 |
+
$box_border_color = wcf()->options->get_checkout_meta_value( $checkout_id, 'wcf-box-border-color' );
|
605 |
+
|
606 |
+
$submit_button_height = wcf()->options->get_checkout_meta_value( $checkout_id, 'wcf-input-button-size' );
|
607 |
+
|
608 |
+
/**
|
609 |
+
* Get font values
|
610 |
+
*/
|
611 |
+
|
612 |
+
if ( 'custom' == $submit_button_height ) {
|
613 |
+
$submit_button_height = '38px';
|
614 |
+
}
|
615 |
+
|
616 |
+
if ( 'custom' == $field_input_size ) {
|
617 |
+
$field_input_size = '38px';
|
618 |
+
}
|
619 |
+
}
|
620 |
+
if ( isset( $primary_color ) ) {
|
621 |
+
|
622 |
+
list($r, $g, $b) = sscanf( $primary_color, '#%02x%02x%02x' );
|
623 |
+
}
|
624 |
+
$output = "
|
625 |
+
.wcf-embed-checkout-form .wcf-checkout-header-image img{
|
626 |
+
width: {$header_logo_width}px;
|
627 |
+
}
|
628 |
+
.wcf-embed-checkout-form .woocommerce #payment input[type=checkbox]:checked:before,
|
629 |
+
.wcf-embed-checkout-form .woocommerce .woocommerce-shipping-fields [type='checkbox']:checked:before{
|
630 |
+
color: {$primary_color};
|
631 |
+
}
|
632 |
+
.wcf-embed-checkout-form .woocommerce #payment input[type=radio]:checked:before{
|
633 |
+
background-color: {$primary_color};
|
634 |
+
}
|
635 |
+
.wcf-embed-checkout-form .woocommerce #payment input[type=checkbox]:focus,
|
636 |
+
.wcf-embed-checkout-form .woocommerce .woocommerce-shipping-fields [type='checkbox']:focus,
|
637 |
+
.wcf-embed-checkout-form .woocommerce #payment input[type=radio]:checked:focus,
|
638 |
+
.wcf-embed-checkout-form .woocommerce #payment input[type=radio]:not(:checked):focus{
|
639 |
+
border-color: {$primary_color};
|
640 |
+
box-shadow: 0 0 2px rgba( " . $r . ',' . $g . ',' . $b . ", .8);
|
641 |
+
}
|
642 |
+
.wcf-embed-checkout-form .woocommerce-checkout label{
|
643 |
+
color: {$field_label_color};
|
644 |
+
}
|
645 |
+
.wcf-embed-checkout-form .woocommerce-checkout #payment div.payment_box{
|
646 |
+
background-color: {$hl_bg_color};
|
647 |
+
font-family: {$input_font_family};
|
648 |
+
font-weight: {$input_font_weight};
|
649 |
+
}
|
650 |
+
|
651 |
+
.wcf-embed-checkout-form #add_payment_method #payment div.payment_box::before,
|
652 |
+
.wcf-embed-checkout-form .woocommerce-cart #payment div.payment_box::before,
|
653 |
+
.wcf-embed-checkout-form .woocommerce-checkout #payment div.payment_box::before
|
654 |
+
{
|
655 |
+
border-bottom-color: {$hl_bg_color};
|
656 |
+
border-right-color: transparent;
|
657 |
+
border-left-color: transparent;
|
658 |
+
border-top-color: transparent;
|
659 |
+
position: absolute;
|
660 |
+
}
|
661 |
+
|
662 |
+
.wcf-embed-checkout-form .woocommerce #payment [type='radio']:checked + label,
|
663 |
+
.wcf-embed-checkout-form .woocommerce #payment [type='radio']:not(:checked) + label{
|
664 |
+
font-family: {$input_font_family};
|
665 |
+
font-weight: {$input_font_weight};
|
666 |
+
}
|
667 |
+
|
668 |
+
.wcf-embed-checkout-form #order_review .wcf-custom-coupon-field input[type='text'],
|
669 |
+
.wcf-embed-checkout-form .woocommerce form .form-row input.input-text,
|
670 |
+
.wcf-embed-checkout-form .woocommerce form .form-row textarea,
|
671 |
+
.wcf-embed-checkout-form .select2-container--default .select2-selection--single {
|
672 |
+
color: {$field_color};
|
673 |
+
background: {$field_bg_color};
|
674 |
+
border-color: {$field_border_color};
|
675 |
+
padding-top: {$field_tb_padding}px;
|
676 |
+
padding-bottom: {$field_tb_padding}px;
|
677 |
+
padding-left: {$field_lr_padding}px;
|
678 |
+
padding-right: {$field_lr_padding}px;
|
679 |
+
min-height: {$field_input_size};
|
680 |
+
font-family: {$input_font_family};
|
681 |
+
font-weight: {$input_font_weight};
|
682 |
+
}
|
683 |
+
|
684 |
+
.wcf-embed-checkout-form .woocommerce .col2-set .col-1,
|
685 |
+
.wcf-embed-checkout-form .woocommerce .col2-set .col-2,
|
686 |
+
.wcf-embed-checkout-form .woocommerce-checkout .shop_table,
|
687 |
+
.wcf-embed-checkout-form .woocommerce-checkout #order_review_heading,
|
688 |
+
.wcf-embed-checkout-form .woocommerce-checkout #payment,
|
689 |
+
.wcf-embed-checkout-form .woocommerce form.checkout_coupon
|
690 |
+
{
|
691 |
+
background-color: {$section_bg_color};
|
692 |
+
border-color: {$box_border_color};
|
693 |
+
font-family: {$input_font_family};
|
694 |
+
font-weight: {$input_font_weight};
|
695 |
+
}
|
696 |
+
|
697 |
+
.woocommerce table.shop_table th{
|
698 |
+
color: {$field_label_color};
|
699 |
+
}
|
700 |
+
/*.wcf-embed-checkout-form .woocommerce .woocommerce-info,
|
701 |
+
.wcf-embed-checkout-form .woocommerce-message{
|
702 |
+
border-top-color: {$primary_color};
|
703 |
+
background-color: {$hl_bg_color};
|
704 |
+
}*/
|
705 |
+
.wcf-embed-checkout-form .woocommerce a{
|
706 |
+
color: {$primary_color};
|
707 |
+
}
|
708 |
+
.wcf-embed-checkout-form .select2-container--default .select2-selection--single .select2-selection__rendered {
|
709 |
+
color: {$field_color};
|
710 |
+
}
|
711 |
+
.wcf-embed-checkout-form ::-webkit-input-placeholder { /* Chrome/Opera/Safari */
|
712 |
+
color: {$field_color};
|
713 |
+
}
|
714 |
+
.wcf-embed-checkout-form ::-moz-placeholder { /* Firefox 19+ */
|
715 |
+
color: {$field_color};
|
716 |
+
}
|
717 |
+
.wcf-embed-checkout-form :-ms-input-placeholder { /* IE 10+ */
|
718 |
+
color: {$field_color};
|
719 |
+
}
|
720 |
+
.wcf-embed-checkout-form :-moz-placeholder { /* Firefox 18- */
|
721 |
+
color: {$field_color};
|
722 |
+
}
|
723 |
+
.wcf-embed-checkout-form .woocommerce form p.form-row label {
|
724 |
+
color: {$field_label_color};
|
725 |
+
font-family: {$input_font_family};
|
726 |
+
font-weight: {$input_font_weight};
|
727 |
+
}
|
728 |
+
.wcf-embed-checkout-form .woocommerce #order_review button,
|
729 |
+
.wcf-embed-checkout-form .woocommerce form.woocommerce-form-login .form-row button,
|
730 |
+
.wcf-embed-checkout-form .woocommerce #order_review button.wcf-btn-small {
|
731 |
+
color: {$submit_color};
|
732 |
+
background: {$submit_bg_color};
|
733 |
+
padding-top: {$submit_tb_padding}px;
|
734 |
+
padding-bottom: {$submit_tb_padding}px;
|
735 |
+
padding-left: {$submit_lr_padding}px;
|
736 |
+
padding-right: {$submit_lr_padding}px;
|
737 |
+
border-color: {$submit_border_color};
|
738 |
+
min-height: {$submit_button_height};
|
739 |
+
font-family: {$button_font_family};
|
740 |
+
font-weight: {$button_font_weight};
|
741 |
+
}
|
742 |
+
.wcf-embed-checkout-form .woocommerce-checkout form.woocommerce-form-login .button,
|
743 |
+
.wcf-embed-checkout-form .woocommerce-checkout form.checkout_coupon .button{
|
744 |
+
background: {$submit_bg_color};
|
745 |
+
border: 1px {$submit_border_color} solid;
|
746 |
+
color: {$submit_color};
|
747 |
+
min-height: {$submit_button_height};
|
748 |
+
font-family: {$button_font_family};
|
749 |
+
font-weight: {$button_font_weight};
|
750 |
+
}
|
751 |
+
.wcf-embed-checkout-form .woocommerce-checkout form.login .button:hover,
|
752 |
+
.wcf-embed-checkout-form .woocommerce-checkout form.checkout_coupon .button:hover,
|
753 |
+
.wcf-embed-checkout-form .woocommerce #payment #place_order:hover,
|
754 |
+
.wcf-embed-checkout-form .woocommerce #order_review button.wcf-btn-small:hover{
|
755 |
+
color: {$submit_hover_color};
|
756 |
+
background-color: {$submit_bg_hover_color};
|
757 |
+
border-color: {$submit_border_hover_color};
|
758 |
+
}
|
759 |
+
.wcf-embed-checkout-form .woocommerce h3,
|
760 |
+
.wcf-embed-checkout-form .woocommerce h3 span,
|
761 |
+
.wcf-embed-checkout-form .woocommerce-checkout #order_review_heading{
|
762 |
+
color: {$section_heading_color};
|
763 |
+
font-family: {$heading_font_family};
|
764 |
+
font-weight: {$heading_font_weight};
|
765 |
+
}
|
766 |
+
.wcf-embed-checkout-form .woocommerce-info::before,
|
767 |
+
.wcf-embed-checkout-form .woocommerce-message::before{
|
768 |
+
color: {$primary_color};
|
769 |
+
}
|
770 |
+
.wcf-embed-checkout-form{
|
771 |
+
font-family: {$base_font_family};
|
772 |
+
}
|
773 |
+
img.emoji, img.wp-smiley {}";
|
774 |
+
|
775 |
+
return $output;
|
776 |
+
}
|
777 |
+
|
778 |
+
/**
|
779 |
+
* Get ajax end points.
|
780 |
+
*
|
781 |
+
* @param string $endpoint_url end point URL.
|
782 |
+
* @return string
|
783 |
+
*/
|
784 |
+
function get_ajax_endpoint( $endpoint_url ) {
|
785 |
+
|
786 |
+
global $post;
|
787 |
+
|
788 |
+
if ( ! empty( $post ) && ! empty( $_SERVER['REQUEST_URI'] ) ) {
|
789 |
+
|
790 |
+
if ( _is_wcf_checkout_type() || _is_wcf_checkout_shortcode() ) {
|
791 |
+
|
792 |
+
if ( mb_strpos( $endpoint_url, 'checkout' ) === false ) {
|
793 |
+
|
794 |
+
$query_args = array(
|
795 |
+
'wc-ajax' => '%%endpoint%%',
|
796 |
+
);
|
797 |
+
|
798 |
+
$uri = explode( '?', $_SERVER['REQUEST_URI'], 2 );
|
799 |
+
$uri = $uri[0];
|
800 |
+
|
801 |
+
$endpoint_url = esc_url( add_query_arg( $query_args, $uri ) );
|
802 |
+
}
|
803 |
+
}
|
804 |
+
}
|
805 |
+
|
806 |
+
return $endpoint_url;
|
807 |
+
}
|
808 |
+
|
809 |
+
|
810 |
+
/**
|
811 |
+
* Save checkout fields.
|
812 |
+
*
|
813 |
+
* @param int $order_id order id.
|
814 |
+
* @param array $posted posted data.
|
815 |
+
* @return void
|
816 |
+
*/
|
817 |
+
function save_checkout_fields( $order_id, $posted ) {
|
818 |
+
|
819 |
+
if ( isset( $_POST['_wcf_checkout_id'] ) ) {
|
820 |
+
|
821 |
+
$checkout_id = wc_clean( $_POST['_wcf_checkout_id'] );
|
822 |
+
|
823 |
+
update_post_meta( $order_id, '_wcf_checkout_id', $checkout_id );
|
824 |
+
|
825 |
+
/*
|
826 |
+
Custom Field To Do
|
827 |
+
$custom_fields = get_post_meta( $checkout_id, 'wcf-custom-checkout-fields', true );
|
828 |
+
|
829 |
+
if ( 'yes' === $custom_fields ) {
|
830 |
+
|
831 |
+
$billing_fields = get_post_meta( $checkout_id, 'wcf_fields_billing', true );
|
832 |
+
|
833 |
+
foreach ( $billing_fields as $field => $data ) {
|
834 |
+
|
835 |
+
if ( isset( $data['custom'] ) && $data['custom'] ) {
|
836 |
+
|
837 |
+
if ( isset( $_POST[ $field ] ) ) {
|
838 |
+
update_post_meta( $order_id, $field, wc_clean( $_POST[ $field ] ) );
|
839 |
+
}
|
840 |
+
}
|
841 |
+
}
|
842 |
+
|
843 |
+
$shipping_fields = get_post_meta( $checkout_id, 'wcf_fields_shipping', true );
|
844 |
+
|
845 |
+
foreach ( $shipping_fields as $field => $data ) {
|
846 |
+
|
847 |
+
if ( isset( $data['custom'] ) && $data['custom'] ) {
|
848 |
+
|
849 |
+
if ( isset( $_POST[ $field ] ) ) {
|
850 |
+
update_post_meta( $order_id, $field, wc_clean( $_POST[ $field ] ) );
|
851 |
+
}
|
852 |
+
}
|
853 |
+
}
|
854 |
+
}
|
855 |
+
*/
|
856 |
+
if ( isset( $_POST['_wcf_flow_id'] ) ) {
|
857 |
+
|
858 |
+
$checkout_id = wc_clean( $_POST['_wcf_flow_id'] );
|
859 |
+
|
860 |
+
update_post_meta( $order_id, '_wcf_flow_id', $checkout_id );
|
861 |
+
}
|
862 |
+
}
|
863 |
+
|
864 |
+
}
|
865 |
+
|
866 |
+
/**
|
867 |
+
* Enable Logo In Header Of Checkout Page
|
868 |
+
*
|
869 |
+
* @return void
|
870 |
+
*/
|
871 |
+
function enable_logo_in_header() {
|
872 |
+
global $post;
|
873 |
+
|
874 |
+
if ( _is_wcf_checkout_type() ) {
|
875 |
+
$checkout_id = $post->ID;
|
876 |
+
} else {
|
877 |
+
$checkout_id = _get_wcf_checkout_id_from_shortcode( $post->post_content );
|
878 |
+
}
|
879 |
+
|
880 |
+
$header_logo_image = wcf()->options->get_checkout_meta_value( $checkout_id, 'wcf-header-logo-image' );
|
881 |
+
$add_image_markup = '';
|
882 |
+
|
883 |
+
if ( isset( $header_logo_image ) && ! empty( $header_logo_image ) ) {
|
884 |
+
$add_image_markup = '<div class="wcf-checkout-header-image">';
|
885 |
+
$add_image_markup .= '<img src="' . $header_logo_image . '" />';
|
886 |
+
$add_image_markup .= '</div>';
|
887 |
+
}
|
888 |
+
|
889 |
+
echo $add_image_markup;
|
890 |
+
}
|
891 |
+
|
892 |
+
/**
|
893 |
+
* Add text to the bootom of the checkout page.
|
894 |
+
*
|
895 |
+
* @return void
|
896 |
+
*/
|
897 |
+
function show_cartflows_copyright_message() {
|
898 |
+
$output_string = '';
|
899 |
+
|
900 |
+
$output_string .= '<div class="wcf-footer-primary">';
|
901 |
+
$output_string .= '<div class="wcf-footer-content">';
|
902 |
+
$output_string .= '<p class="wcf-footer-message">';
|
903 |
+
$output_string .= 'Checkout powered by CartFlows';
|
904 |
+
$output_string .= '</p>';
|
905 |
+
$output_string .= '</div>';
|
906 |
+
$output_string .= '</div>';
|
907 |
+
|
908 |
+
echo $output_string;
|
909 |
+
}
|
910 |
+
|
911 |
+
/**
|
912 |
+
* Redirect users to our checkout if hidden param
|
913 |
+
*
|
914 |
+
* @param string $redirect redirect url.
|
915 |
+
* @param object $user user.
|
916 |
+
* @return string
|
917 |
+
*/
|
918 |
+
function after_login_redirect( $redirect, $user ) {
|
919 |
+
|
920 |
+
if ( isset( $_POST['_wcf_checkout_id'] ) ) {
|
921 |
+
|
922 |
+
$checkout_id = intval( $_POST['_wcf_checkout_id'] );
|
923 |
+
|
924 |
+
$redirect = get_permalink( $checkout_id );
|
925 |
+
}
|
926 |
+
|
927 |
+
return $redirect;
|
928 |
+
}
|
929 |
+
|
930 |
+
/**
|
931 |
+
* Display coupon code field after review order fields.
|
932 |
+
*/
|
933 |
+
function display_custom_coupon_field() {
|
934 |
+
|
935 |
+
$coupon_enabled = apply_filters( 'woocommerce_coupons_enabled', true );
|
936 |
+
$show_coupon = apply_filters( 'cartflows_show_coupon_field', true );
|
937 |
+
|
938 |
+
if ( ! ( $coupon_enabled && $show_coupon ) ) {
|
939 |
+
return;
|
940 |
+
|
941 |
+
}
|
942 |
+
|
943 |
+
ob_start();
|
944 |
+
?>
|
945 |
+
<div class="wcf-custom-coupon-field">
|
946 |
+
<div class="wcf-coupon-col-1">
|
947 |
+
<span>
|
948 |
+
<input type="text" name="coupon_code" class="input-text wcf-coupon-code-input" placeholder="<?php _e( 'Coupon Code', 'cartflows' ); ?>" id="coupon_code" value="">
|
949 |
+
</span>
|
950 |
+
</div>
|
951 |
+
<div class="wcf-coupon-col-2">
|
952 |
+
<span>
|
953 |
+
<button type="button" class="button wcf-submit-coupon wcf-btn-small" name="apply_coupon" value="Apply"><?php _e( 'Apply', 'cartflows' ); ?></button>
|
954 |
+
</span>
|
955 |
+
</div>
|
956 |
+
</div>
|
957 |
+
<?php
|
958 |
+
echo ob_get_clean();
|
959 |
+
}
|
960 |
+
|
961 |
+
/**
|
962 |
+
* Apply filter to change class of remove coupon field.
|
963 |
+
*
|
964 |
+
* @param string $coupon coupon.
|
965 |
+
* @return string
|
966 |
+
*/
|
967 |
+
function remove_coupon_text( $coupon ) {
|
968 |
+
|
969 |
+
$coupon = str_replace( 'woocommerce-remove-coupon', 'wcf-remove-coupon', $coupon );
|
970 |
+
return $coupon;
|
971 |
+
|
972 |
+
}
|
973 |
+
/**
|
974 |
+
* Apply filter to change the placeholder text of coupon field.
|
975 |
+
*
|
976 |
+
* @return string
|
977 |
+
*/
|
978 |
+
function coupon_field_placeholder() {
|
979 |
+
return apply_filters( 'cartflows_coupon_field_placeholder', __( 'Coupon Code', 'cartflows' ) );
|
980 |
+
}
|
981 |
+
|
982 |
+
/**
|
983 |
+
* Apply filter to change the button text of coupon field.
|
984 |
+
*
|
985 |
+
* @return string
|
986 |
+
*/
|
987 |
+
function coupon_button_text() {
|
988 |
+
return apply_filters( 'cartflows_coupon_button_text', __( 'Apply', 'cartflows' ) );
|
989 |
+
}
|
990 |
+
|
991 |
+
/**
|
992 |
+
* Apply coupon on submit of custom coupon form.
|
993 |
+
*/
|
994 |
+
function apply_coupon() {
|
995 |
+
|
996 |
+
$response = '';
|
997 |
+
|
998 |
+
check_ajax_referer( 'wcf-apply-coupon', 'security' );
|
999 |
+
if ( ! empty( $_POST['coupon_code'] ) ) {
|
1000 |
+
$result = WC()->cart->add_discount( sanitize_text_field( $_POST['coupon_code'] ) );
|
1001 |
+
} else {
|
1002 |
+
wc_add_notice( WC_Coupon::get_generic_coupon_error( WC_Coupon::E_WC_COUPON_PLEASE_ENTER ), 'error' );
|
1003 |
+
}
|
1004 |
+
|
1005 |
+
$response = array(
|
1006 |
+
'status' => $result,
|
1007 |
+
'msg' => wc_print_notices( true ),
|
1008 |
+
);
|
1009 |
+
|
1010 |
+
echo json_encode( $response );
|
1011 |
+
|
1012 |
+
die();
|
1013 |
+
}
|
1014 |
+
|
1015 |
+
|
1016 |
+
/**
|
1017 |
+
* Added ajax nonce to localize variable.
|
1018 |
+
*
|
1019 |
+
* @param array $vars localize variables.
|
1020 |
+
*/
|
1021 |
+
function add_localize_vars( $vars ) {
|
1022 |
+
|
1023 |
+
$vars['wcf_validate_coupon_nonce'] = wp_create_nonce( 'wcf-apply-coupon' );
|
1024 |
+
|
1025 |
+
$vars['wcf_validate_remove_coupon_nonce'] = wp_create_nonce( 'wcf-remove-coupon' );
|
1026 |
+
|
1027 |
+
$vars['allow_persistance'] = apply_filters( 'cartflows_allow_persistace', 'yes' );
|
1028 |
+
|
1029 |
+
return $vars;
|
1030 |
+
}
|
1031 |
+
|
1032 |
+
/**
|
1033 |
+
* Add custom class to the fields to change the UI to three column.
|
1034 |
+
*
|
1035 |
+
* @param array $fields fields.
|
1036 |
+
*/
|
1037 |
+
function add_three_column_layout_fields( $fields ) {
|
1038 |
+
|
1039 |
+
if ( empty( $fields['billing']['billing_address_2'] ) ) {
|
1040 |
+
|
1041 |
+
if ( isset( $fields['billing']['billing_address_1'] ) && is_array( $fields['billing']['billing_address_1'] ) ) {
|
1042 |
+
$fields['billing']['billing_address_1']['class'][] = 'form-row-full';
|
1043 |
+
}
|
1044 |
+
}
|
1045 |
+
|
1046 |
+
if ( ! empty( $fields['billing']['billing_company'] ) ) {
|
1047 |
+
|
1048 |
+
if ( isset( $fields['billing']['billing_company'] ) && is_array( $fields['billing']['billing_company'] ) ) {
|
1049 |
+
$fields['billing']['billing_company']['class'][] = 'form-row-full';
|
1050 |
+
}
|
1051 |
+
}
|
1052 |
+
|
1053 |
+
if ( ! empty( $fields['shipping']['shipping_company'] ) ) {
|
1054 |
+
|
1055 |
+
if ( isset( $fields['shipping']['shipping_company'] ) && is_array( $fields['shipping']['shipping_company'] ) ) {
|
1056 |
+
$fields['shipping']['shipping_company']['class'][] = 'form-row-full';
|
1057 |
+
}
|
1058 |
+
}
|
1059 |
+
|
1060 |
+
if ( ! empty( $fields['billing']['billing_country'] ) ) {
|
1061 |
+
|
1062 |
+
if ( isset( $fields['billing']['billing_country'] ) && is_array( $fields['billing']['billing_country'] ) ) {
|
1063 |
+
$fields['billing']['billing_country']['class'][] = 'form-row-full';
|
1064 |
+
}
|
1065 |
+
}
|
1066 |
+
|
1067 |
+
if ( ! empty( $fields['shipping']['shipping_country'] ) ) {
|
1068 |
+
|
1069 |
+
if ( isset( $fields['shipping']['shipping_country'] ) && is_array( $fields['shipping']['shipping_country'] ) ) {
|
1070 |
+
$fields['shipping']['shipping_country']['class'][] = 'form-row-full';
|
1071 |
+
}
|
1072 |
+
}
|
1073 |
+
|
1074 |
+
if ( ! empty( $fields['billing']['billing_phone'] ) ) {
|
1075 |
+
|
1076 |
+
if ( isset( $fields['billing']['billing_phone'] ) && is_array( $fields['billing']['billing_phone'] ) ) {
|
1077 |
+
$fields['billing']['billing_phone']['class'][] = 'form-row-full';
|
1078 |
+
}
|
1079 |
+
}
|
1080 |
+
|
1081 |
+
if ( ! empty( $fields['billing']['billing_email'] ) ) {
|
1082 |
+
|
1083 |
+
if ( isset( $fields['billing']['billing_email'] ) && is_array( $fields['billing']['billing_email'] ) ) {
|
1084 |
+
$fields['billing']['billing_email']['class'][] = 'form-row-full';
|
1085 |
+
}
|
1086 |
+
}
|
1087 |
+
|
1088 |
+
if ( empty( $fields['shipping']['shipping_address_2'] ) ) {
|
1089 |
+
|
1090 |
+
if ( isset( $fields['shipping']['shipping_address_1'] ) && is_array( $fields['shipping']['shipping_address_1'] ) ) {
|
1091 |
+
$fields['shipping']['shipping_address_1']['class'][] = 'form-row-full';
|
1092 |
+
}
|
1093 |
+
}
|
1094 |
+
|
1095 |
+
if ( isset( $fields['billing']['billing_city'] ) &&
|
1096 |
+
isset( $fields['billing']['billing_state'] ) && isset( $fields['billing']['billing_postcode'] ) ) {
|
1097 |
+
|
1098 |
+
$fields['billing']['billing_city']['class'][] = 'wcf-column-33';
|
1099 |
+
$fields['billing']['billing_state']['class'][] = 'wcf-column-33';
|
1100 |
+
$fields['billing']['billing_postcode']['class'][] = 'wcf-column-33';
|
1101 |
+
}
|
1102 |
+
|
1103 |
+
if ( isset( $fields['shipping']['shipping_city'] ) &&
|
1104 |
+
isset( $fields['shipping']['shipping_state'] ) && isset( $fields['shipping']['shipping_postcode'] ) ) {
|
1105 |
+
|
1106 |
+
$fields['shipping']['shipping_city']['class'][] = 'wcf-column-33';
|
1107 |
+
$fields['shipping']['shipping_state']['class'][] = 'wcf-column-33';
|
1108 |
+
$fields['shipping']['shipping_postcode']['class'][] = 'wcf-column-33';
|
1109 |
+
}
|
1110 |
+
|
1111 |
+
return $fields;
|
1112 |
+
}
|
1113 |
+
|
1114 |
+
/**
|
1115 |
+
* Add opening dev
|
1116 |
+
*
|
1117 |
+
* @since 1.0.0
|
1118 |
+
*/
|
1119 |
+
function order_wrap_div_start() {
|
1120 |
+
|
1121 |
+
echo "<div class='wcf-order-wrap'> ";
|
1122 |
+
}
|
1123 |
+
|
1124 |
+
/**
|
1125 |
+
* Add closing dev
|
1126 |
+
*
|
1127 |
+
* @since 1.0.0
|
1128 |
+
*/
|
1129 |
+
function order_wrap_div_end() {
|
1130 |
+
|
1131 |
+
echo '</div> ';
|
1132 |
+
}
|
1133 |
+
|
1134 |
+
/**
|
1135 |
+
* Remove coupon.
|
1136 |
+
*/
|
1137 |
+
function remove_coupon() {
|
1138 |
+
|
1139 |
+
check_ajax_referer( 'wcf-remove-coupon', 'security' );
|
1140 |
+
$coupon = isset( $_POST['coupon_code'] ) ? wc_clean( $_POST['coupon_code'] ) : false;
|
1141 |
+
|
1142 |
+
if ( empty( $coupon ) ) {
|
1143 |
+
echo "<div class='woocommerce-error'>Sorry there was a problem removing this coupon.";
|
1144 |
+
} else {
|
1145 |
+
WC()->cart->remove_coupon( $coupon );
|
1146 |
+
echo "<div class='woocommerce-error'>Coupon has been removed.</div>";
|
1147 |
+
}
|
1148 |
+
wc_print_notices();
|
1149 |
+
wp_die();
|
1150 |
+
}
|
1151 |
+
|
1152 |
+
}
|
1153 |
+
|
1154 |
+
/**
|
1155 |
+
* Kicking this off by calling 'get_instance()' method
|
1156 |
+
*/
|
1157 |
+
Cartflows_Checkout_Markup::get_instance();
|
readme.txt
CHANGED
@@ -1,11 +1,11 @@
|
|
1 |
=== Funnel Builder by CartFlows - Create High Converting Sales Funnels For WordPress ===
|
2 |
Contributors: brainstormforce, wpcrafter
|
3 |
Donate link: https://www.paypal.me/BrainstormForce
|
4 |
-
Tags: woocommerce,
|
5 |
Requires at least: 4.4
|
|
|
|
|
6 |
Requires PHP: 5.6
|
7 |
-
Tested up to: 5.1
|
8 |
-
Stable tag: 1.1.17
|
9 |
License: GPLv2 or later
|
10 |
License URI: https://www.gnu.org/licenses/gpl-2.0.html
|
11 |
|
@@ -16,13 +16,13 @@ Create beautiful checkout pages & sales flows for WooCommerce.
|
|
16 |
**#1 Funnel Builder For WordPress**
|
17 |
★★★★★<br>
|
18 |
|
19 |
-
**Funnels are the most effective way to sell products & services.** We created <a href="https://cartflows.com" target="_blank">**
|
20 |
|
21 |
-
[youtube https://www.youtube.com/watch?v=
|
22 |
|
23 |
Turn your WooCommerce website into a selling machine using one-click sales funnels with frictionless checkout, custom thank you pages, global checkout replacement, and more…
|
24 |
|
25 |
-
CartFlows is the best and easiest way to sell
|
26 |
|
27 |
## CARTFLOWS IS PERFECT FOR ##
|
28 |
|
@@ -43,27 +43,27 @@ See the features that make CartFlows the **Best Funnel Builder for WordPress**.
|
|
43 |
* **Ready to Import Templates:**
|
44 |
Choose from a wide variety of high converting templates. You can add a professionally crafted, multistep funnel, with one mouse click or you can build your own funnel and choose individual templates.
|
45 |
|
46 |
-
* **Use Your Page Builder
|
47 |
-
CartFlows will work with all popular page builders
|
48 |
|
49 |
* **Conversion Tested Checkout:**
|
50 |
CartFlows replaces your complicated checkout process with our optimized checkout that instantly increases conversions, making you more money.
|
51 |
|
52 |
* **Custom Next Step Thank You Pages:**
|
53 |
-
Your
|
54 |
|
55 |
* **WooCommerce Checkout Page Replacement**
|
56 |
-
Say
|
57 |
|
58 |
### Why is CartFlows such a game-changer? ###
|
59 |
|
60 |
-
* **Sales Funnel Tools Are Expensive** — Most sales funnel tools carry a hefty monthly fee from $97 - $297 per month and they are worth every penny because funnels work. With CartFlows you can unleash the power of funnels for free.
|
61 |
|
62 |
-
* **Sales Funnel Tools Are Complicated** — Most sales funnel tools are frustrating to use. You are stuck using their clunky page
|
63 |
|
64 |
-
* **Sales Funnel Tools Are Closed** — Perhaps the worst part of using other funnel builder tools is they are based on a closed platform
|
65 |
|
66 |
-
* **Sales Funnel Tools Lock You In** — We believe in using a platform where everything is on your domain and you control all your data. CartFlows puts you in control and in the
|
67 |
|
68 |
### Who Can Benefit From CartFlows? ###
|
69 |
|
@@ -84,20 +84,55 @@ Say goodby to using the same ridgid checkout page that everyone else is using. C
|
|
84 |
|
85 |
## JOIN THE CARTFLOWS INNER CIRCLE ##
|
86 |
|
87 |
-
**<a href="https://www.facebook.com/groups/cartflows/" target="_blank">JOIN OUR FACEBOOK GROUP COMMUNITY</a>**: Learn the tactics and techniques that other CartFlows users are doing to grow their businesses. Also get exciting insider information on upcoming feature releases.
|
88 |
|
89 |
== Installation ==
|
90 |
|
91 |
1. Upload `cartflows.zip` to the `/wp-content/plugins/` directory
|
92 |
2. Activate the plugin through the 'Plugins' menu in WordPress
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
93 |
|
94 |
== Changelog ==
|
95 |
|
|
|
|
|
|
|
96 |
= Version 1.1.17 - Tuesday, 30th April 2019 =
|
97 |
* Fix: Database connectivity error while cloning the flow.
|
98 |
|
99 |
= Version 1.1.16 - Thursday, 25th April 2019 =
|
100 |
-
* Improvement: Added compatibility for the Cartflows Pro plugin update for
|
101 |
|
102 |
= Version 1.1.15 - Wednesday, 24th April 2019 =
|
103 |
* Fix: WooCommerce dependency issue.
|
@@ -128,7 +163,7 @@ Say goodby to using the same ridgid checkout page that everyone else is using. C
|
|
128 |
* Fix: Divi builder next step link issue.
|
129 |
|
130 |
= Version 1.1.9 - Tuesday, 5th March 2019 =
|
131 |
-
* Fix: Divi builder fails to open if the page is set as home page.
|
132 |
* Fix: Checkout field's width issue on mobile devices in Divi.
|
133 |
|
134 |
= Version 1.1.8 - Wednesday, 27th February 2019 =
|
@@ -147,7 +182,7 @@ Say goodby to using the same ridgid checkout page that everyone else is using. C
|
|
147 |
* Improvement: Added compatibility for a future release of CartFlows Pro's checkout field editor.
|
148 |
* Fix: Permalink conflict with listing theme.
|
149 |
* Fix: Thrive architect template popup conflict.
|
150 |
-
* Fix: Coupon code not applied in case of multiple
|
151 |
|
152 |
= Version 1.1.5 - Wednesday, 23rd January 2019 =
|
153 |
* Fix: Beaver Builder Pro version conflict while installing templates.
|
@@ -206,4 +241,6 @@ Say goodby to using the same ridgid checkout page that everyone else is using. C
|
|
206 |
* Fix: Unwanted fields on checkout page.
|
207 |
|
208 |
= Version 1.0.0 - Monday, 19th November 2018 =
|
209 |
-
* Initial Release
|
|
|
|
1 |
=== Funnel Builder by CartFlows - Create High Converting Sales Funnels For WordPress ===
|
2 |
Contributors: brainstormforce, wpcrafter
|
3 |
Donate link: https://www.paypal.me/BrainstormForce
|
4 |
+
Tags: woocommerce, funnel builder, sales funnels
|
5 |
Requires at least: 4.4
|
6 |
+
Tested up to: 5.2
|
7 |
+
Stable tag: 1.1.18
|
8 |
Requires PHP: 5.6
|
|
|
|
|
9 |
License: GPLv2 or later
|
10 |
License URI: https://www.gnu.org/licenses/gpl-2.0.html
|
11 |
|
16 |
**#1 Funnel Builder For WordPress**
|
17 |
★★★★★<br>
|
18 |
|
19 |
+
**Funnels are the most effective way to sell products & services.** We created CartFlows, a <a href="https://cartflows.com" target="_blank">**WordPress Funnel Builder**</a>, to help every website owner get more leads, increase conversions, & maximize profits.
|
20 |
|
21 |
+
[youtube https://www.youtube.com/watch?v=N2ZEGu9A2e4]
|
22 |
|
23 |
Turn your WooCommerce website into a selling machine using one-click sales funnels with frictionless checkout, custom thank you pages, global checkout replacement, and more…
|
24 |
|
25 |
+
CartFlows is the best and easiest way to sell products and services on your website. With our library of done for you, one-click sales funnels, that literally sell your products and services for you.
|
26 |
|
27 |
## CARTFLOWS IS PERFECT FOR ##
|
28 |
|
43 |
* **Ready to Import Templates:**
|
44 |
Choose from a wide variety of high converting templates. You can add a professionally crafted, multistep funnel, with one mouse click or you can build your own funnel and choose individual templates.
|
45 |
|
46 |
+
* **Use Your Page Builder:**
|
47 |
+
CartFlows will work with all popular page builders, and soon Gutenberg. We will offer templates for Beaver Builder, Elementor, Divi, & Thrive Architect. However, you can use CartFlows with your own templates and your own builder.
|
48 |
|
49 |
* **Conversion Tested Checkout:**
|
50 |
CartFlows replaces your complicated checkout process with our optimized checkout that instantly increases conversions, making you more money.
|
51 |
|
52 |
* **Custom Next Step Thank You Pages:**
|
53 |
+
Your buyer's journey doesn't end after checkout. With CartFlows and our custom thank you page feature, you can guild your new customer on their next steps.
|
54 |
|
55 |
* **WooCommerce Checkout Page Replacement**
|
56 |
+
Say goodbye to using the same ridged checkout page that everyone else is using. Create the perfect WooCommerce checkout page and assign it to be the default WooCommerce checkout template.
|
57 |
|
58 |
### Why is CartFlows such a game-changer? ###
|
59 |
|
60 |
+
* **Sales Funnel Tools Are Expensive** — Most sales funnel tools carry a hefty monthly fee from $97 - $297 per month, and they are worth every penny because funnels work. With CartFlows you can unleash the power of funnels for free.
|
61 |
|
62 |
+
* **Sales Funnel Tools Are Complicated** — Most sales funnel tools are frustrating to use. You are stuck using their clunky page builder and have to go through an entirely new learning curve. Who has time for that? With CartFlows you will feel right at home.
|
63 |
|
64 |
+
* **Sales Funnel Tools Are Closed** — Perhaps the worst part of using other funnel builder tools is they are based on a closed platform that limits you in every way. CartFlows is open and sits on top of WordPress and WooCommerce.
|
65 |
|
66 |
+
* **Sales Funnel Tools Lock You In** — We believe in using a platform where everything is on your domain, and you control all your data. CartFlows puts you in control and in the driver's seat.
|
67 |
|
68 |
### Who Can Benefit From CartFlows? ###
|
69 |
|
84 |
|
85 |
## JOIN THE CARTFLOWS INNER CIRCLE ##
|
86 |
|
87 |
+
**<a href="https://www.facebook.com/groups/cartflows/" target="_blank">JOIN OUR FACEBOOK GROUP COMMUNITY</a>**: Learn the tactics and techniques that other CartFlows users are doing to grow their businesses. Also, get exciting insider information on upcoming feature releases.
|
88 |
|
89 |
== Installation ==
|
90 |
|
91 |
1. Upload `cartflows.zip` to the `/wp-content/plugins/` directory
|
92 |
2. Activate the plugin through the 'Plugins' menu in WordPress
|
93 |
+
3. Make sure to disable caching on your checkout and thank you steps
|
94 |
+
|
95 |
+
== Frequently Asked Questions ==
|
96 |
+
|
97 |
+
= Does CartFlows work with my theme? =
|
98 |
+
|
99 |
+
Great question. While we haven't tested every WordPress theme, CartFlows was designed to work with all themes because we disable the header and footer on all funnel steps. If you do run into any issues with your particulate theme, our support will be happy to get it resolved for you.
|
100 |
+
|
101 |
+
= Does CartFlows work with my page builder? =
|
102 |
+
|
103 |
+
CartFlows should work with all page builders. We do provide templates for the most popular page builders, but you can just as easily use your own designs with your favorite page builder.
|
104 |
+
|
105 |
+
= Does CartFlows work with the Facebook pixel? =
|
106 |
+
|
107 |
+
Each step has an area to add any custom script. CartFlows also integrates with the free Pixel Caffeine and PixelYourSitePro.
|
108 |
+
|
109 |
+
= Does CartFlows work with my payment gateway? =
|
110 |
+
|
111 |
+
A good rule of thumb is, if it works with WooCommerce, it will work with CartFlows.
|
112 |
+
|
113 |
+
= Is there a Pro version of CartFlows? =
|
114 |
+
|
115 |
+
Glad you asked! CartFlows Pro is an optional add-on to CartFlows that adds additional checkout styles, checkout field control, order bumps, one-click upsells / downsells, quantity changer, variable product selector, pro templates, training, and more.
|
116 |
+
|
117 |
+
|
118 |
+
== Screenshots ==
|
119 |
+
|
120 |
+
1. Add "done for you" funnels to your website with 1 click.
|
121 |
+
2. Drag and drop interface to reorder your funnel steps.
|
122 |
+
3. Add products to the checkout form and choose your color and fonts.
|
123 |
+
4. Beautiful, on brand, checkout pages that eliminate distractions and increase conversions.
|
124 |
+
5. Easily edit anything with your page builder.
|
125 |
|
126 |
== Changelog ==
|
127 |
|
128 |
+
= Version 1.1.18 - Friday, 10th May 2019 =
|
129 |
+
* Fix: Sometimes, Next step link was not working.
|
130 |
+
|
131 |
= Version 1.1.17 - Tuesday, 30th April 2019 =
|
132 |
* Fix: Database connectivity error while cloning the flow.
|
133 |
|
134 |
= Version 1.1.16 - Thursday, 25th April 2019 =
|
135 |
+
* Improvement: Added compatibility for the Cartflows Pro plugin update for older versions.
|
136 |
|
137 |
= Version 1.1.15 - Wednesday, 24th April 2019 =
|
138 |
* Fix: WooCommerce dependency issue.
|
163 |
* Fix: Divi builder next step link issue.
|
164 |
|
165 |
= Version 1.1.9 - Tuesday, 5th March 2019 =
|
166 |
+
* Fix: Divi builder fails to open if the page is set as a home page.
|
167 |
* Fix: Checkout field's width issue on mobile devices in Divi.
|
168 |
|
169 |
= Version 1.1.8 - Wednesday, 27th February 2019 =
|
182 |
* Improvement: Added compatibility for a future release of CartFlows Pro's checkout field editor.
|
183 |
* Fix: Permalink conflict with listing theme.
|
184 |
* Fix: Thrive architect template popup conflict.
|
185 |
+
* Fix: Coupon code not applied in case of multiple product selection option is selected.
|
186 |
|
187 |
= Version 1.1.5 - Wednesday, 23rd January 2019 =
|
188 |
* Fix: Beaver Builder Pro version conflict while installing templates.
|
241 |
* Fix: Unwanted fields on checkout page.
|
242 |
|
243 |
= Version 1.0.0 - Monday, 19th November 2018 =
|
244 |
+
* Initial Release
|
245 |
+
|
246 |
+
== Upgrade Notice ==
|