Version Description
Release Date - 25 November 2020
- WordPress 5.6 support
- Discontinued support for WooCommerce 2.x, minimum requirements are WooCommerce 3.0.0
- PHP 8 support
- Improved add to wishlist button behavior when it inserted outside add to cart form
- Improved WP SHORTINIT loading for the custom AJAX endpoint
Download this release
Release Info
Developer | templateinvaders |
Plugin | WooCommerce Wishlist Plugin |
Version | 1.22.0 |
Comparing to | |
See all releases |
Code changes from version 1.21.14 to 1.22.0
- admin/base.helper.php +118 -118
- assets/css/admin-form-rtl.css +5 -5
- assets/css/admin-form-rtl.css.map +1 -1
- assets/css/admin-form-rtl.min.css +1 -1
- assets/css/admin-form.css +5 -5
- assets/css/admin-form.css.map +1 -1
- assets/css/admin-form.min.css +1 -1
- assets/css/admin-rtl.min.css +1 -1
- assets/css/admin-setup-rtl.css +2 -2
- assets/css/admin-setup-rtl.css.map +1 -1
- assets/css/admin-setup-rtl.min.css +1 -1
- assets/css/admin-setup.css +2 -2
- assets/css/admin-setup.css.map +1 -1
- assets/css/admin-setup.min.css +1 -1
- assets/css/admin.min.css +1 -1
- assets/css/public-rtl.min.css +1 -1
- assets/css/public.min.css +1 -1
- assets/css/theme-rtl.min.css +1 -1
- assets/css/theme.min.css +1 -1
- assets/fonts/tinvwl-webfont.svg +82 -45
- assets/img/money-back.svg +238 -232
- assets/js/admin.min.js +1 -1
- assets/js/bootstrap.js +1975 -1957
- assets/js/public.js +20 -9
- assets/js/public.min.js +2 -2
- includes/analytics.class.php +6 -6
- includes/api/ajax.php +225 -217
- includes/api/yoasti18n.class.php +6 -3
- includes/pluginextend.helper.php +10 -9
- includes/product.helper.php +6 -6
- includes/product/legacy.class.php +12 -12
- includes/product/local.class.php +4 -2
- integrations/hide-price-add-to-cart-button.php +429 -429
- integrations/mycred.php +313 -313
- integrations/woocommerce-gravityforms-product-addons.php +3 -3
- integrations/woocommerce-multilingual.php +2 -2
- languages/ti-woocommerce-wishlist.pot +32 -32
- public/addtowishlist.class.php +19 -23
- public/cart.class.php +8 -35
- public/tinvwl.class.php +1 -1
- public/wishlist/view.class.php +3 -3
- readme.txt +11 -2
- templates/ti-addtowishlist.php +3 -2
- templates/ti-wishlist-item-data.php +27 -25
- templates/ti-wishlist-null.php +25 -24
- ti-woocommerce-wishlist.php +4 -4
- tinv-wishlists-function.php +918 -919
- views/admin/premium-features.php +88 -88
- views/admin/templates-status.php +43 -38
- views/admin/upgrade.php +23 -23
- views/header.php +44 -44
- views/null.php +2 -2
- views/section-field-html.php +3 -1
- views/section-field.php +7 -5
- views/section-general.php +17 -13
- views/section-group-style-e.php +32 -23
- views/section-group-style.php +23 -19
- views/section-group.php +23 -19
- views/section-infoblock.php +27 -26
- views/wizard/finish.php +35 -32
- views/wizard/footer.php +22 -20
- views/wizard/header.php +46 -44
- views/wizard/intro.php +28 -27
- views/wizard/step-button.php +5 -3
- views/wizard/step-page-field.php +47 -45
- views/wizard/step-page.php +65 -57
- views/wizard/step-processing.php +6 -2
- views/wizard/step-social.php +89 -88
- wpm-config.json +37 -37
admin/base.helper.php
CHANGED
@@ -1,118 +1,118 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* Basic admin helper class
|
4 |
-
*
|
5 |
-
* @since 1.0.0
|
6 |
-
* @package TInvWishlist\Admin\Helper
|
7 |
-
*/
|
8 |
-
|
9 |
-
// If this file is called directly, abort.
|
10 |
-
if ( ! defined( 'ABSPATH' ) ) {
|
11 |
-
die;
|
12 |
-
}
|
13 |
-
|
14 |
-
/**
|
15 |
-
* Basic admin helper class
|
16 |
-
*/
|
17 |
-
abstract class TInvWL_Admin_Base {
|
18 |
-
|
19 |
-
/**
|
20 |
-
* Plugin name
|
21 |
-
*
|
22 |
-
* @var string
|
23 |
-
*/
|
24 |
-
public $_name;
|
25 |
-
/**
|
26 |
-
* Plugin version
|
27 |
-
*
|
28 |
-
* @var string
|
29 |
-
*/
|
30 |
-
public $_version;
|
31 |
-
|
32 |
-
/**
|
33 |
-
* Constructor
|
34 |
-
*
|
35 |
-
* @param string $plugin_name Plugin name.
|
36 |
-
* @param string $version Plugin version.
|
37 |
-
*/
|
38 |
-
function __construct( $plugin_name, $version ) {
|
39 |
-
$this->_name
|
40 |
-
$this->_version = $version;
|
41 |
-
$this->load_function();
|
42 |
-
}
|
43 |
-
|
44 |
-
/**
|
45 |
-
* Load function
|
46 |
-
*/
|
47 |
-
function load_function() {
|
48 |
-
|
49 |
-
}
|
50 |
-
|
51 |
-
/**
|
52 |
-
* Formatted admin url.
|
53 |
-
*
|
54 |
-
* @param string $page Page title.
|
55 |
-
* @param string $cat Category title.
|
56 |
-
* @param array
|
57 |
-
*
|
58 |
-
* @return string
|
59 |
-
*/
|
60 |
-
public function admin_url( $page, $cat = '', $arg = array() ) {
|
61 |
-
$protocol = is_ssl() ? 'https' : 'http';
|
62 |
-
$glue = '-';
|
63 |
-
$params = array(
|
64 |
-
'page' => implode( $glue, array_filter( array( $this->_name, $page ) ) ),
|
65 |
-
'cat' => $cat,
|
66 |
-
);
|
67 |
-
if ( is_array( $arg ) ) {
|
68 |
-
$params = array_merge( $params, $arg );
|
69 |
-
}
|
70 |
-
$params = array_filter( $params );
|
71 |
-
$params = http_build_query( $params );
|
72 |
-
if ( is_string( $arg ) ) {
|
73 |
-
$params = $params . '&' . $arg;
|
74 |
-
}
|
75 |
-
|
76 |
-
return admin_url( sprintf( 'admin.php?%s', $params ), $protocol );
|
77 |
-
}
|
78 |
-
|
79 |
-
/**
|
80 |
-
* Basic print admin page. By attributes page and cat, determined sub function for print
|
81 |
-
*
|
82 |
-
* @return boolean
|
83 |
-
*/
|
84 |
-
public function _print_() {
|
85 |
-
|
86 |
-
$default = 'general';
|
87 |
-
$params = filter_input_array( INPUT_GET, array(
|
88 |
-
'page' => FILTER_SANITIZE_STRING,
|
89 |
-
'cat' => FILTER_SANITIZE_STRING,
|
90 |
-
'id' => FILTER_VALIDATE_INT,
|
91 |
-
) );
|
92 |
-
extract( $params ); // @codingStandardsIgnoreLine WordPress.VIP.RestrictedFunctions.extract
|
93 |
-
|
94 |
-
$glue = '-';
|
95 |
-
$page = explode( $glue, $page );
|
96 |
-
$page_last = array_shift( $page );
|
97 |
-
if ( $this->_name != $page_last ) { // WPCS: loose comparison ok.
|
98 |
-
return false;
|
99 |
-
}
|
100 |
-
|
101 |
-
$cat = empty( $cat ) ? $default : $cat;
|
102 |
-
$glue = '_';
|
103 |
-
array_push( $page, $cat );
|
104 |
-
$cat = implode( $glue, $page );
|
105 |
-
$function_name = __FUNCTION__ . $cat;
|
106 |
-
|
107 |
-
if ( method_exists( $this, $function_name ) && __FUNCTION__ != $function_name ) { // WPCS: loose comparison ok.
|
108 |
-
return $this->$function_name();
|
109 |
-
} else {
|
110 |
-
$function_name = __FUNCTION__ . $default;
|
111 |
-
if ( method_exists( $this, $function_name ) ) {
|
112 |
-
return $this->$function_name( $cat );
|
113 |
-
}
|
114 |
-
}
|
115 |
-
|
116 |
-
return false;
|
117 |
-
}
|
118 |
-
}
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Basic admin helper class
|
4 |
+
*
|
5 |
+
* @since 1.0.0
|
6 |
+
* @package TInvWishlist\Admin\Helper
|
7 |
+
*/
|
8 |
+
|
9 |
+
// If this file is called directly, abort.
|
10 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
11 |
+
die;
|
12 |
+
}
|
13 |
+
|
14 |
+
/**
|
15 |
+
* Basic admin helper class
|
16 |
+
*/
|
17 |
+
abstract class TInvWL_Admin_Base {
|
18 |
+
|
19 |
+
/**
|
20 |
+
* Plugin name
|
21 |
+
*
|
22 |
+
* @var string
|
23 |
+
*/
|
24 |
+
public $_name;
|
25 |
+
/**
|
26 |
+
* Plugin version
|
27 |
+
*
|
28 |
+
* @var string
|
29 |
+
*/
|
30 |
+
public $_version;
|
31 |
+
|
32 |
+
/**
|
33 |
+
* Constructor
|
34 |
+
*
|
35 |
+
* @param string $plugin_name Plugin name.
|
36 |
+
* @param string $version Plugin version.
|
37 |
+
*/
|
38 |
+
function __construct( $plugin_name, $version ) {
|
39 |
+
$this->_name = $plugin_name;
|
40 |
+
$this->_version = $version;
|
41 |
+
$this->load_function();
|
42 |
+
}
|
43 |
+
|
44 |
+
/**
|
45 |
+
* Load function
|
46 |
+
*/
|
47 |
+
function load_function() {
|
48 |
+
|
49 |
+
}
|
50 |
+
|
51 |
+
/**
|
52 |
+
* Formatted admin url.
|
53 |
+
*
|
54 |
+
* @param string $page Page title.
|
55 |
+
* @param string $cat Category title.
|
56 |
+
* @param array $arg Arguments array.
|
57 |
+
*
|
58 |
+
* @return string
|
59 |
+
*/
|
60 |
+
public function admin_url( $page, $cat = '', $arg = array() ) {
|
61 |
+
$protocol = is_ssl() ? 'https' : 'http';
|
62 |
+
$glue = '-';
|
63 |
+
$params = array(
|
64 |
+
'page' => implode( $glue, array_filter( array( $this->_name, $page ) ) ),
|
65 |
+
'cat' => $cat,
|
66 |
+
);
|
67 |
+
if ( is_array( $arg ) ) {
|
68 |
+
$params = array_merge( $params, $arg );
|
69 |
+
}
|
70 |
+
$params = array_filter( $params );
|
71 |
+
$params = http_build_query( $params );
|
72 |
+
if ( is_string( $arg ) ) {
|
73 |
+
$params = $params . '&' . $arg;
|
74 |
+
}
|
75 |
+
|
76 |
+
return admin_url( sprintf( 'admin.php?%s', $params ), $protocol );
|
77 |
+
}
|
78 |
+
|
79 |
+
/**
|
80 |
+
* Basic print admin page. By attributes page and cat, determined sub function for print
|
81 |
+
*
|
82 |
+
* @return boolean
|
83 |
+
*/
|
84 |
+
public function _print_() {
|
85 |
+
|
86 |
+
$default = 'general';
|
87 |
+
$params = filter_input_array( INPUT_GET, array(
|
88 |
+
'page' => FILTER_SANITIZE_STRING,
|
89 |
+
'cat' => FILTER_SANITIZE_STRING,
|
90 |
+
'id' => FILTER_VALIDATE_INT,
|
91 |
+
) );
|
92 |
+
extract( $params ); // @codingStandardsIgnoreLine WordPress.VIP.RestrictedFunctions.extract
|
93 |
+
|
94 |
+
$glue = '-';
|
95 |
+
$page = explode( $glue, $page );
|
96 |
+
$page_last = array_shift( $page );
|
97 |
+
if ( $this->_name != $page_last ) { // WPCS: loose comparison ok.
|
98 |
+
return false;
|
99 |
+
}
|
100 |
+
|
101 |
+
$cat = empty( $cat ) ? $default : $cat;
|
102 |
+
$glue = '_';
|
103 |
+
array_push( $page, $cat );
|
104 |
+
$cat = implode( $glue, $page );
|
105 |
+
$function_name = __FUNCTION__ . $cat;
|
106 |
+
|
107 |
+
if ( method_exists( $this, $function_name ) && __FUNCTION__ != $function_name ) { // WPCS: loose comparison ok.
|
108 |
+
return $this->$function_name();
|
109 |
+
} else {
|
110 |
+
$function_name = __FUNCTION__ . $default;
|
111 |
+
if ( method_exists( $this, $function_name ) ) {
|
112 |
+
return $this->$function_name( $cat );
|
113 |
+
}
|
114 |
+
}
|
115 |
+
|
116 |
+
return false;
|
117 |
+
}
|
118 |
+
}
|
assets/css/admin-form-rtl.css
CHANGED
@@ -61,7 +61,7 @@ on off button
|
|
61 |
|
62 |
.tiwlform-onoff-container.disabled.checked {
|
63 |
/*-webkit-box-shadow: inset 0 0 0 36px rgba(0,0,0,0.4);
|
64 |
-
|
65 |
border-color: rgba(0, 0, 0, 0.4);
|
66 |
background-color: rgba(0, 0, 0, 0.4); }
|
67 |
|
@@ -70,7 +70,7 @@ on off button
|
|
70 |
|
71 |
.tiwlform-onoff-container.checked {
|
72 |
/*-webkit-box-shadow: inset 0 0 0 36px #96b100;
|
73 |
-
|
74 |
background: #96b100;
|
75 |
border-color: #96b100; }
|
76 |
|
@@ -81,9 +81,9 @@ on off button
|
|
81 |
.tiwlform-onoff-container .tiwlform-onoff-button {
|
82 |
display: inline-block;
|
83 |
/*font-size: 21px;
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
font: normal normal normal 14px/1 FontAwesome;
|
88 |
font-size: inherit;
|
89 |
text-rendering: auto;
|
61 |
|
62 |
.tiwlform-onoff-container.disabled.checked {
|
63 |
/*-webkit-box-shadow: inset 0 0 0 36px rgba(0,0,0,0.4);
|
64 |
+
box-shadow: inset 0 0 0 36px rgba(0,0,0,0.4);*/
|
65 |
border-color: rgba(0, 0, 0, 0.4);
|
66 |
background-color: rgba(0, 0, 0, 0.4); }
|
67 |
|
70 |
|
71 |
.tiwlform-onoff-container.checked {
|
72 |
/*-webkit-box-shadow: inset 0 0 0 36px #96b100;
|
73 |
+
box-shadow: inset 0 0 0 36px #96b100;*/
|
74 |
background: #96b100;
|
75 |
border-color: #96b100; }
|
76 |
|
81 |
.tiwlform-onoff-container .tiwlform-onoff-button {
|
82 |
display: inline-block;
|
83 |
/*font-size: 21px;
|
84 |
+
line-height: 21px;
|
85 |
+
font-weight: 600;
|
86 |
+
font-family: dashicons;*/
|
87 |
font: normal normal normal 14px/1 FontAwesome;
|
88 |
font-size: inherit;
|
89 |
text-rendering: auto;
|
assets/css/admin-form-rtl.css.map
CHANGED
@@ -1 +1 @@
|
|
1 |
-
{"version":3,"names":[],"mappings":"","sources":["admin-form-rtl.css"],"file":"admin-form-rtl.css","sourcesContent":["/*\nnumber input\n*/\n.tiwlform-number-container {\n display: inline-block;\n margin: 2px;\n position: relative;\n vertical-align: middle; }\n\n.tiwlform-number-container input, .tiwlform-number-container button {\n margin: 0;\n font-weight: 800;\n display: inline-block;\n font-size: 14px; }\n\n.tiwlform-number-container input[type=text] {\n width: 50px;\n height: 36px;\n text-align: left;\n border-radius: 5px;\n line-height: 26px;\n margin: 0; }\n\n.tiwlform-number-container button {\n width: 20px;\n height: 38px;\n line-height: 38px;\n text-align: center;\n border-radius: 5px;\n margin: 0 2px;\n background-color: #f1eee8;\n border: 0;\n color: #000;\n padding: 0;\n cursor: pointer; }\n\n.tiwlform-number-container button:hover {\n background-color: #96b100;\n color: #FFF; }\n\n/*\non off button\n*/\n/*.tiwlform-onoff-container input {\n display: none;\n}*/\n.tiwlform-onoff-container {\n cursor: pointer;\n position: relative;\n display: inline-block;\n height: 36px;\n width: 132px;\n margin: 0;\n border-radius: 3px;\n -webkit-box-shadow: inset -1px 1px 6px 0 rgba(170, 157, 137, 0.16);\n box-shadow: inset -1px 1px 6px 0 rgba(170, 157, 137, 0.16);\n -webkit-transition: all .3s ease-in-out;\n transition: all .3s ease-in-out;\n border: 1px solid #eae6df;\n background: #f1eee8; }\n\n.tiwlform-onoff-container.disabled.checked {\n /*-webkit-box-shadow: inset 0 0 0 36px rgba(0,0,0,0.4);\n\t\
|
1 |
+
{"version":3,"names":[],"mappings":"","sources":["admin-form-rtl.css"],"file":"admin-form-rtl.css","sourcesContent":["/*\nnumber input\n*/\n.tiwlform-number-container {\n display: inline-block;\n margin: 2px;\n position: relative;\n vertical-align: middle; }\n\n.tiwlform-number-container input, .tiwlform-number-container button {\n margin: 0;\n font-weight: 800;\n display: inline-block;\n font-size: 14px; }\n\n.tiwlform-number-container input[type=text] {\n width: 50px;\n height: 36px;\n text-align: left;\n border-radius: 5px;\n line-height: 26px;\n margin: 0; }\n\n.tiwlform-number-container button {\n width: 20px;\n height: 38px;\n line-height: 38px;\n text-align: center;\n border-radius: 5px;\n margin: 0 2px;\n background-color: #f1eee8;\n border: 0;\n color: #000;\n padding: 0;\n cursor: pointer; }\n\n.tiwlform-number-container button:hover {\n background-color: #96b100;\n color: #FFF; }\n\n/*\non off button\n*/\n/*.tiwlform-onoff-container input {\n display: none;\n}*/\n.tiwlform-onoff-container {\n cursor: pointer;\n position: relative;\n display: inline-block;\n height: 36px;\n width: 132px;\n margin: 0;\n border-radius: 3px;\n -webkit-box-shadow: inset -1px 1px 6px 0 rgba(170, 157, 137, 0.16);\n box-shadow: inset -1px 1px 6px 0 rgba(170, 157, 137, 0.16);\n -webkit-transition: all .3s ease-in-out;\n transition: all .3s ease-in-out;\n border: 1px solid #eae6df;\n background: #f1eee8; }\n\n.tiwlform-onoff-container.disabled.checked {\n /*-webkit-box-shadow: inset 0 0 0 36px rgba(0,0,0,0.4);\n\t\t box-shadow: inset 0 0 0 36px rgba(0,0,0,0.4);*/\n border-color: rgba(0, 0, 0, 0.4);\n background-color: rgba(0, 0, 0, 0.4); }\n\n.tiwlform-onoff-container.disabled .tiwlform-onoff-button {\n color: rgba(0, 0, 0, 0.4) !important; }\n\n.tiwlform-onoff-container.checked {\n /*-webkit-box-shadow: inset 0 0 0 36px #96b100;\n\t\t box-shadow: inset 0 0 0 36px #96b100;*/\n background: #96b100;\n border-color: #96b100; }\n\n.tiwlform-onoff-container.checked .tiwlform-onoff-button {\n right: 4px;\n color: #96b100; }\n\n.tiwlform-onoff-container .tiwlform-onoff-button {\n display: inline-block;\n /*font-size: 21px;\n\t\t line-height: 21px;\n\t\t font-weight: 600;\n\t\t font-family: dashicons;*/\n font: normal normal normal 14px/1 FontAwesome;\n font-size: inherit;\n text-rendering: auto;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n position: absolute;\n top: 3px;\n right: 66px;\n width: 59px;\n height: 27px;\n line-height: 18px;\n padding: 4px;\n text-align: center;\n border-radius: 3px;\n -webkit-box-shadow: -1px 1px 4px 0 rgba(2, 2, 2, 0.21);\n box-shadow: -1px 1px 4px 0 rgba(2, 2, 2, 0.21);\n -webkit-transition: all 350ms cubic-bezier(0, 0.89, 0.44, 1);\n transition: all 350ms cubic-bezier(0, 0.89, 0.44, 1);\n color: #6b625a;\n background: #fff; }\n\n.tiwlform-onoff-container .tiwlform-onoff-button:before {\n content: \"\\e905\";\n font-size: 20px;\n font-family: 'tinvwl-webfont'; }\n\n.tiwlform-onoff-container.checked .tiwlform-onoff-button:before {\n content: \"\\e91e\";\n font-size: 11px;\n font-family: 'tinvwl-webfont'; }\n\n.tiwlform-onoff-container.disabled {\n background-color: rgba(0, 0, 0, 0.4); }\n\n/*\ninput range\n*/\n.tiwlform-range-container {\n padding-top: 25px;\n height: 50px; }\n\n.tiwlform-range-container .range {\n width: 100%;\n position: relative; }\n\n.tiwlform-range-container input[type=text] {\n display: none; }\n\n.tiwlform-range-container .line {\n margin: 0 5%;\n width: 90%;\n height: 4px;\n top: -14px;\n background-color: #ede8df;\n position: absolute; }\n\n.tiwlform-range-container .line .selector {\n position: absolute;\n z-index: 100;\n width: 15px;\n height: 15px;\n background: #fff;\n border: 5px solid #96b100;\n border-radius: 50%;\n top: -10px;\n left: -12.5px;\n cursor: pointer; }\n\n.tiwlform-range-container .line-selector {\n width: 0;\n background-color: #96b100;\n height: 6px;\n top: -15px; }\n\n.tiwlform-range-container .label {\n display: -ms-flexbox;\n display: -webkit-box;\n display: flex;\n list-style: outside none none;\n padding: 0; }\n\n.tiwlform-range-container .label li {\n -moz-flex: 1 1;\n -ms-flex: 1 1;\n -webkit-box-flex: 1;\n flex: 1 1;\n position: relative;\n float: right;\n text-align: center;\n color: #000;\n padding: 10px 0;\n font-size: 14px;\n line-height: 14px;\n cursor: pointer;\n margin: 0; }\n\n.tiwlform-range-container .label li.active {\n font-weight: 600; }\n\n.tiwlform-range-container .label li.preactive::before {\n background: #96b100;\n width: 25px;\n height: 25px;\n top: -25px; }\n\n.tiwlform-range-container .label li::before {\n position: absolute;\n top: -20px;\n left: 0;\n right: 0;\n content: \"\";\n margin: 0 auto;\n width: 15px;\n height: 15px;\n background: #ede8df;\n border-radius: 50%; }\n\n/*\nmulti radio box\n*/\n.tiwlform-multirbox input {\n display: none; }\n\n.tiwlform-multirbox {\n border-radius: 3px;\n border: 1px solid #eae6df;\n -webkit-box-shadow: 0 0 10px rgba(0, 0, 0, 0.1) inset;\n box-shadow: 0 0 10px rgba(0, 0, 0, 0.1) inset;\n display: inline-block;\n margin: 2px;\n position: relative; }\n\n.tiwlform-multirbox label {\n display: inline-block;\n font-weight: normal;\n color: #948d84;\n margin: 0;\n line-height: 26px;\n vertical-align: middle;\n padding: 5px 10px;\n height: 26px; }\n\n.tiwlform-multirbox label.checked {\n -webkit-box-shadow: inset 0 0 0 36px #96b100;\n box-shadow: inset 0 0 0 36px #96b100;\n color: #FFF;\n border-radius: 3px; }\n\n.tiwlform-multirbox label .dashicons {\n line-height: 26px; }\n\n.tinvwl-multicheckbox {\n border: 1px solid #dbdbdb;\n border-radius: 3px;\n -webkit-box-shadow: 0 0 10px rgba(0, 0, 0, 0.1) inset;\n box-shadow: 0 0 10px rgba(0, 0, 0, 0.1) inset;\n margin: 2px; }\n\n.tinvwl-multicheckbox ul {\n height: 208px;\n overflow: auto;\n margin: 0;\n padding: 0 12px; }\n\n.tinvwl-multicheckbox li {\n height: 30px; }\n\n.tinvwl-multicheckbox label {\n width: 100%;\n display: inline-block;\n font-weight: normal; }\n\n.tinvwl-multicheckbox input {\n margin-left: 13px; }\n\n.tinvwl-multicheckbox > .tinvwl-before {\n background-color: #fbfaf9;\n border-bottom: 1px solid #dbdbdb;\n padding: 7px; }\n\n.tinvwl-multicheckbox > .tinvwl-after {\n background-color: #fbfaf9;\n border-top: 1px solid #dbdbdb;\n padding: 7px; }\n\n.tinvwl-targeting-box {\n display: -ms-flexbox;\n display: -webkit-box;\n display: flex;\n padding-top: 28px; }\n\n.tinvwl-targeting-box-action {\n display: none; }\n\n.tinvwl-targeting-box .selector {\n -moz-flex: 1 1 50%;\n -ms-flex: 1 1 50%;\n -webkit-box-flex: 1;\n flex: 1 1 50%;\n padding-left: 20px; }\n\n.tinvwl-targeting-box .selector div + div {\n margin-top: 6px; }\n\n.tinvwl-targeting-box .zone {\n -moz-flex: 1 1 50%;\n -ms-flex: 1 1 50%;\n -webkit-box-flex: 1;\n flex: 1 1 50%;\n background-color: #fbfaf9;\n border-radius: 3px;\n position: relative;\n margin: 2px;\n padding: 0; }\n\n.tinvwl-targeting-box .inner {\n margin: 0;\n padding: 20px;\n overflow: auto;\n border-radius: 3px;\n min-height: 42px; }\n\n.tinvwl-targeting-box .filter-field, .tinvwl-targeting-box .tinvwl-multicheckbox {\n width: 100%; }\n\n.tinvwl-targeting-box .zone > .tinvwl-after {\n background-color: #f4f2ee;\n border-top: 1px solid #fbfaf9;\n padding: 7px;\n margin: 0;\n position: absolute;\n border-radius: 0 0 3px 3px;\n bottom: 0;\n right: 0;\n left: 0; }\n\n.tinvwl-targeting-box .action-bth {\n background-color: #FFF;\n color: #000;\n border: 1px solid #dbdbdb;\n font-weight: normal;\n text-align: center; }\n\n.tinvwl-targeting-box .action-bth:hover {\n background-color: #96b100;\n color: #FFF; }\n\n.tinvwl-numberrange {\n width: 100%; }\n\n.tinvwl-numberrange .range {\n position: relative;\n width: 100%;\n height: 5px; }\n"]}
|
assets/css/admin-form-rtl.min.css
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
/**
|
2 |
* TI WooCommerce Wishlist Plugin - Allow your store guests and customers to add products to Wishlist. Add Wishlist functionality to your store for free.
|
3 |
-
* @version 1.
|
4 |
* @link https://wordpress.org/plugins/ti-woocommerce-wishlist/
|
5 |
*/
|
6 |
.tiwlform-number-container{display:inline-block;margin:2px;position:relative;vertical-align:middle}
|
1 |
/**
|
2 |
* TI WooCommerce Wishlist Plugin - Allow your store guests and customers to add products to Wishlist. Add Wishlist functionality to your store for free.
|
3 |
+
* @version 1.22.0
|
4 |
* @link https://wordpress.org/plugins/ti-woocommerce-wishlist/
|
5 |
*/
|
6 |
.tiwlform-number-container{display:inline-block;margin:2px;position:relative;vertical-align:middle}
|
assets/css/admin-form.css
CHANGED
@@ -61,7 +61,7 @@ on off button
|
|
61 |
|
62 |
.tiwlform-onoff-container.disabled.checked {
|
63 |
/*-webkit-box-shadow: inset 0 0 0 36px rgba(0,0,0,0.4);
|
64 |
-
|
65 |
border-color: rgba(0, 0, 0, 0.4);
|
66 |
background-color: rgba(0, 0, 0, 0.4); }
|
67 |
|
@@ -70,7 +70,7 @@ on off button
|
|
70 |
|
71 |
.tiwlform-onoff-container.checked {
|
72 |
/*-webkit-box-shadow: inset 0 0 0 36px #96b100;
|
73 |
-
|
74 |
background: #96b100;
|
75 |
border-color: #96b100; }
|
76 |
|
@@ -81,9 +81,9 @@ on off button
|
|
81 |
.tiwlform-onoff-container .tiwlform-onoff-button {
|
82 |
display: inline-block;
|
83 |
/*font-size: 21px;
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
font: normal normal normal 14px/1 FontAwesome;
|
88 |
font-size: inherit;
|
89 |
text-rendering: auto;
|
61 |
|
62 |
.tiwlform-onoff-container.disabled.checked {
|
63 |
/*-webkit-box-shadow: inset 0 0 0 36px rgba(0,0,0,0.4);
|
64 |
+
box-shadow: inset 0 0 0 36px rgba(0,0,0,0.4);*/
|
65 |
border-color: rgba(0, 0, 0, 0.4);
|
66 |
background-color: rgba(0, 0, 0, 0.4); }
|
67 |
|
70 |
|
71 |
.tiwlform-onoff-container.checked {
|
72 |
/*-webkit-box-shadow: inset 0 0 0 36px #96b100;
|
73 |
+
box-shadow: inset 0 0 0 36px #96b100;*/
|
74 |
background: #96b100;
|
75 |
border-color: #96b100; }
|
76 |
|
81 |
.tiwlform-onoff-container .tiwlform-onoff-button {
|
82 |
display: inline-block;
|
83 |
/*font-size: 21px;
|
84 |
+
line-height: 21px;
|
85 |
+
font-weight: 600;
|
86 |
+
font-family: dashicons;*/
|
87 |
font: normal normal normal 14px/1 FontAwesome;
|
88 |
font-size: inherit;
|
89 |
text-rendering: auto;
|
assets/css/admin-form.css.map
CHANGED
@@ -1 +1 @@
|
|
1 |
-
{"version":3,"names":[],"mappings":"","sources":["admin-form.css"],"file":"admin-form.css","sourcesContent":["/*\nnumber input\n*/\n.tiwlform-number-container {\n display: inline-block;\n margin: 2px;\n position: relative;\n vertical-align: middle; }\n\n.tiwlform-number-container input, .tiwlform-number-container button {\n margin: 0;\n font-weight: 800;\n display: inline-block;\n font-size: 14px; }\n\n.tiwlform-number-container input[type=text] {\n width: 50px;\n height: 36px;\n text-align: right;\n border-radius: 5px;\n line-height: 26px;\n margin: 0; }\n\n.tiwlform-number-container button {\n width: 20px;\n height: 38px;\n line-height: 38px;\n text-align: center;\n border-radius: 5px;\n margin: 0 2px;\n background-color: #f1eee8;\n border: 0;\n color: #000;\n padding: 0;\n cursor: pointer; }\n\n.tiwlform-number-container button:hover {\n background-color: #96b100;\n color: #FFF; }\n\n/*\non off button\n*/\n/*.tiwlform-onoff-container input {\n display: none;\n}*/\n.tiwlform-onoff-container {\n cursor: pointer;\n position: relative;\n display: inline-block;\n height: 36px;\n width: 132px;\n margin: 0;\n border-radius: 3px;\n -webkit-box-shadow: inset 1px 1px 6px 0 rgba(170, 157, 137, 0.16);\n box-shadow: inset 1px 1px 6px 0 rgba(170, 157, 137, 0.16);\n -webkit-transition: all .3s ease-in-out;\n transition: all .3s ease-in-out;\n border: 1px solid #eae6df;\n background: #f1eee8; }\n\n.tiwlform-onoff-container.disabled.checked {\n /*-webkit-box-shadow: inset 0 0 0 36px rgba(0,0,0,0.4);\n\t\
|
1 |
+
{"version":3,"names":[],"mappings":"","sources":["admin-form.css"],"file":"admin-form.css","sourcesContent":["/*\nnumber input\n*/\n.tiwlform-number-container {\n display: inline-block;\n margin: 2px;\n position: relative;\n vertical-align: middle; }\n\n.tiwlform-number-container input, .tiwlform-number-container button {\n margin: 0;\n font-weight: 800;\n display: inline-block;\n font-size: 14px; }\n\n.tiwlform-number-container input[type=text] {\n width: 50px;\n height: 36px;\n text-align: right;\n border-radius: 5px;\n line-height: 26px;\n margin: 0; }\n\n.tiwlform-number-container button {\n width: 20px;\n height: 38px;\n line-height: 38px;\n text-align: center;\n border-radius: 5px;\n margin: 0 2px;\n background-color: #f1eee8;\n border: 0;\n color: #000;\n padding: 0;\n cursor: pointer; }\n\n.tiwlform-number-container button:hover {\n background-color: #96b100;\n color: #FFF; }\n\n/*\non off button\n*/\n/*.tiwlform-onoff-container input {\n display: none;\n}*/\n.tiwlform-onoff-container {\n cursor: pointer;\n position: relative;\n display: inline-block;\n height: 36px;\n width: 132px;\n margin: 0;\n border-radius: 3px;\n -webkit-box-shadow: inset 1px 1px 6px 0 rgba(170, 157, 137, 0.16);\n box-shadow: inset 1px 1px 6px 0 rgba(170, 157, 137, 0.16);\n -webkit-transition: all .3s ease-in-out;\n transition: all .3s ease-in-out;\n border: 1px solid #eae6df;\n background: #f1eee8; }\n\n.tiwlform-onoff-container.disabled.checked {\n /*-webkit-box-shadow: inset 0 0 0 36px rgba(0,0,0,0.4);\n\t\t box-shadow: inset 0 0 0 36px rgba(0,0,0,0.4);*/\n border-color: rgba(0, 0, 0, 0.4);\n background-color: rgba(0, 0, 0, 0.4); }\n\n.tiwlform-onoff-container.disabled .tiwlform-onoff-button {\n color: rgba(0, 0, 0, 0.4) !important; }\n\n.tiwlform-onoff-container.checked {\n /*-webkit-box-shadow: inset 0 0 0 36px #96b100;\n\t\t box-shadow: inset 0 0 0 36px #96b100;*/\n background: #96b100;\n border-color: #96b100; }\n\n.tiwlform-onoff-container.checked .tiwlform-onoff-button {\n left: 4px;\n color: #96b100; }\n\n.tiwlform-onoff-container .tiwlform-onoff-button {\n display: inline-block;\n /*font-size: 21px;\n\t\t line-height: 21px;\n\t\t font-weight: 600;\n\t\t font-family: dashicons;*/\n font: normal normal normal 14px/1 FontAwesome;\n font-size: inherit;\n text-rendering: auto;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n position: absolute;\n top: 3px;\n left: 66px;\n width: 59px;\n height: 27px;\n line-height: 18px;\n padding: 4px;\n text-align: center;\n border-radius: 3px;\n -webkit-box-shadow: 1px 1px 4px 0 rgba(2, 2, 2, 0.21);\n box-shadow: 1px 1px 4px 0 rgba(2, 2, 2, 0.21);\n -webkit-transition: all 350ms cubic-bezier(0, 0.89, 0.44, 1);\n transition: all 350ms cubic-bezier(0, 0.89, 0.44, 1);\n color: #6b625a;\n background: #fff; }\n\n.tiwlform-onoff-container .tiwlform-onoff-button:before {\n content: \"\\e905\";\n font-size: 20px;\n font-family: 'tinvwl-webfont'; }\n\n.tiwlform-onoff-container.checked .tiwlform-onoff-button:before {\n content: \"\\e91e\";\n font-size: 11px;\n font-family: 'tinvwl-webfont'; }\n\n.tiwlform-onoff-container.disabled {\n background-color: rgba(0, 0, 0, 0.4); }\n\n/*\ninput range\n*/\n.tiwlform-range-container {\n padding-top: 25px;\n height: 50px; }\n\n.tiwlform-range-container .range {\n width: 100%;\n position: relative; }\n\n.tiwlform-range-container input[type=text] {\n display: none; }\n\n.tiwlform-range-container .line {\n margin: 0 5%;\n width: 90%;\n height: 4px;\n top: -14px;\n background-color: #ede8df;\n position: absolute; }\n\n.tiwlform-range-container .line .selector {\n position: absolute;\n z-index: 100;\n width: 15px;\n height: 15px;\n background: #fff;\n border: 5px solid #96b100;\n border-radius: 50%;\n top: -10px;\n right: -12.5px;\n cursor: pointer; }\n\n.tiwlform-range-container .line-selector {\n width: 0;\n background-color: #96b100;\n height: 6px;\n top: -15px; }\n\n.tiwlform-range-container .label {\n display: -ms-flexbox;\n display: -webkit-box;\n display: flex;\n list-style: outside none none;\n padding: 0; }\n\n.tiwlform-range-container .label li {\n -moz-flex: 1 1;\n -ms-flex: 1 1;\n -webkit-box-flex: 1;\n flex: 1 1;\n position: relative;\n float: left;\n text-align: center;\n color: #000;\n padding: 10px 0;\n font-size: 14px;\n line-height: 14px;\n cursor: pointer;\n margin: 0; }\n\n.tiwlform-range-container .label li.active {\n font-weight: 600; }\n\n.tiwlform-range-container .label li.preactive::before {\n background: #96b100;\n width: 25px;\n height: 25px;\n top: -25px; }\n\n.tiwlform-range-container .label li::before {\n position: absolute;\n top: -20px;\n right: 0;\n left: 0;\n content: \"\";\n margin: 0 auto;\n width: 15px;\n height: 15px;\n background: #ede8df;\n border-radius: 50%; }\n\n/*\nmulti radio box\n*/\n.tiwlform-multirbox input {\n display: none; }\n\n.tiwlform-multirbox {\n border-radius: 3px;\n border: 1px solid #eae6df;\n -webkit-box-shadow: 0 0 10px rgba(0, 0, 0, 0.1) inset;\n box-shadow: 0 0 10px rgba(0, 0, 0, 0.1) inset;\n display: inline-block;\n margin: 2px;\n position: relative; }\n\n.tiwlform-multirbox label {\n display: inline-block;\n font-weight: normal;\n color: #948d84;\n margin: 0;\n line-height: 26px;\n vertical-align: middle;\n padding: 5px 10px;\n height: 26px; }\n\n.tiwlform-multirbox label.checked {\n -webkit-box-shadow: inset 0 0 0 36px #96b100;\n box-shadow: inset 0 0 0 36px #96b100;\n color: #FFF;\n border-radius: 3px; }\n\n.tiwlform-multirbox label .dashicons {\n line-height: 26px; }\n\n.tinvwl-multicheckbox {\n border: 1px solid #dbdbdb;\n border-radius: 3px;\n -webkit-box-shadow: 0 0 10px rgba(0, 0, 0, 0.1) inset;\n box-shadow: 0 0 10px rgba(0, 0, 0, 0.1) inset;\n margin: 2px; }\n\n.tinvwl-multicheckbox ul {\n height: 208px;\n overflow: auto;\n margin: 0;\n padding: 0 12px; }\n\n.tinvwl-multicheckbox li {\n height: 30px; }\n\n.tinvwl-multicheckbox label {\n width: 100%;\n display: inline-block;\n font-weight: normal; }\n\n.tinvwl-multicheckbox input {\n margin-right: 13px; }\n\n.tinvwl-multicheckbox > .tinvwl-before {\n background-color: #fbfaf9;\n border-bottom: 1px solid #dbdbdb;\n padding: 7px; }\n\n.tinvwl-multicheckbox > .tinvwl-after {\n background-color: #fbfaf9;\n border-top: 1px solid #dbdbdb;\n padding: 7px; }\n\n.tinvwl-targeting-box {\n display: -ms-flexbox;\n display: -webkit-box;\n display: flex;\n padding-top: 28px; }\n\n.tinvwl-targeting-box-action {\n display: none; }\n\n.tinvwl-targeting-box .selector {\n -moz-flex: 1 1 50%;\n -ms-flex: 1 1 50%;\n -webkit-box-flex: 1;\n flex: 1 1 50%;\n padding-right: 20px; }\n\n.tinvwl-targeting-box .selector div + div {\n margin-top: 6px; }\n\n.tinvwl-targeting-box .zone {\n -moz-flex: 1 1 50%;\n -ms-flex: 1 1 50%;\n -webkit-box-flex: 1;\n flex: 1 1 50%;\n background-color: #fbfaf9;\n border-radius: 3px;\n position: relative;\n margin: 2px;\n padding: 0; }\n\n.tinvwl-targeting-box .inner {\n margin: 0;\n padding: 20px;\n overflow: auto;\n border-radius: 3px;\n min-height: 42px; }\n\n.tinvwl-targeting-box .filter-field, .tinvwl-targeting-box .tinvwl-multicheckbox {\n width: 100%; }\n\n.tinvwl-targeting-box .zone > .tinvwl-after {\n background-color: #f4f2ee;\n border-top: 1px solid #fbfaf9;\n padding: 7px;\n margin: 0;\n position: absolute;\n border-radius: 0 0 3px 3px;\n bottom: 0;\n left: 0;\n right: 0; }\n\n.tinvwl-targeting-box .action-bth {\n background-color: #FFF;\n color: #000;\n border: 1px solid #dbdbdb;\n font-weight: normal;\n text-align: center; }\n\n.tinvwl-targeting-box .action-bth:hover {\n background-color: #96b100;\n color: #FFF; }\n\n.tinvwl-numberrange {\n width: 100%; }\n\n.tinvwl-numberrange .range {\n position: relative;\n width: 100%;\n height: 5px; }\n"]}
|
assets/css/admin-form.min.css
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
/**
|
2 |
* TI WooCommerce Wishlist Plugin - Allow your store guests and customers to add products to Wishlist. Add Wishlist functionality to your store for free.
|
3 |
-
* @version 1.
|
4 |
* @link https://wordpress.org/plugins/ti-woocommerce-wishlist/
|
5 |
*/
|
6 |
.tiwlform-number-container{display:inline-block;margin:2px;position:relative;vertical-align:middle}
|
1 |
/**
|
2 |
* TI WooCommerce Wishlist Plugin - Allow your store guests and customers to add products to Wishlist. Add Wishlist functionality to your store for free.
|
3 |
+
* @version 1.22.0
|
4 |
* @link https://wordpress.org/plugins/ti-woocommerce-wishlist/
|
5 |
*/
|
6 |
.tiwlform-number-container{display:inline-block;margin:2px;position:relative;vertical-align:middle}
|
assets/css/admin-rtl.min.css
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
/**
|
2 |
* TI WooCommerce Wishlist Plugin - Allow your store guests and customers to add products to Wishlist. Add Wishlist functionality to your store for free.
|
3 |
-
* @version 1.
|
4 |
* @link https://wordpress.org/plugins/ti-woocommerce-wishlist/
|
5 |
*/
|
6 |
@font-face{font-family:'tinvwl-webfont';src:url("../fonts/tinvwl-webfont.eot?xu2uyi");src:url("../fonts/tinvwl-webfont.eot?xu2uyi#iefix") format("embedded-opentype"),url("../fonts/tinvwl-webfont.ttf?xu2uyi") format("truetype"),url("../fonts/tinvwl-webfont.woff?xu2uyi") format("woff"),url("../fonts/tinvwl-webfont.svg?xu2uyi#tinvwl-webfont") format("svg");font-weight:normal;font-style:normal}
|
1 |
/**
|
2 |
* TI WooCommerce Wishlist Plugin - Allow your store guests and customers to add products to Wishlist. Add Wishlist functionality to your store for free.
|
3 |
+
* @version 1.22.0
|
4 |
* @link https://wordpress.org/plugins/ti-woocommerce-wishlist/
|
5 |
*/
|
6 |
@font-face{font-family:'tinvwl-webfont';src:url("../fonts/tinvwl-webfont.eot?xu2uyi");src:url("../fonts/tinvwl-webfont.eot?xu2uyi#iefix") format("embedded-opentype"),url("../fonts/tinvwl-webfont.ttf?xu2uyi") format("truetype"),url("../fonts/tinvwl-webfont.woff?xu2uyi") format("woff"),url("../fonts/tinvwl-webfont.svg?xu2uyi#tinvwl-webfont") format("svg");font-weight:normal;font-style:normal}
|
assets/css/admin-setup-rtl.css
CHANGED
@@ -100,8 +100,8 @@ html {
|
|
100 |
margin-top: 36px;
|
101 |
border-radius: 5px;
|
102 |
background: #fff;
|
103 |
-
-webkit-box-shadow:
|
104 |
-
box-shadow:
|
105 |
|
106 |
.tinvwl-wizard .tinvwl-content .tinwl-intro.tinwl-inner {
|
107 |
padding: 40px 121px; }
|
100 |
margin-top: 36px;
|
101 |
border-radius: 5px;
|
102 |
background: #fff;
|
103 |
+
-webkit-box-shadow: 0 14px 29px 0 rgba(170, 150, 137, 0.38);
|
104 |
+
box-shadow: 0 14px 29px 0 rgba(170, 150, 137, 0.38); }
|
105 |
|
106 |
.tinvwl-wizard .tinvwl-content .tinwl-intro.tinwl-inner {
|
107 |
padding: 40px 121px; }
|
assets/css/admin-setup-rtl.css.map
CHANGED
@@ -1 +1 @@
|
|
1 |
-
{"version":3,"names":[],"mappings":"","sources":["admin-setup-rtl.css"],"file":"admin-setup-rtl.css","sourcesContent":["html {\n background: #f6f3ed; }\n\n.tinvwl-wizard {\n max-width: 886px;\n margin: 107px auto;\n padding: 0;\n -webkit-box-shadow: none;\n box-shadow: none;\n background: none; }\n\n.tinvwl-wizard .tinvwl-logo {\n text-align: center;\n margin-bottom: 10px; }\n\n.tinvwl-wizard .tinvwl-logo h2,\n.tinvwl-wizard .tinvwl-logo img {\n display: inline-block;\n vertical-align: middle; }\n\n.tinvwl-wizard .tinvwl-logo img + h2 {\n margin-right: 15px; }\n\n.tinvwl-wizard .tinvwl-logo h2 {\n font-size: 18px;\n font-weight: bold;\n text-transform: uppercase;\n line-height: 1.333;\n color: #3E3E3E; }\n\n.tinvwl-wizard .tinvwl-progress {\n text-align: center; }\n\n.tinvwl-wizard .tinvwl-progress ul {\n list-style: none;\n padding: 0;\n margin: 0; }\n\n.tinvwl-wizard .tinvwl-progress li {\n position: relative;\n display: inline-block;\n font-family: \"Open Sans\", Arial, sans-serif;\n font-size: 14px;\n font-weight: bold;\n line-height: 1.714;\n text-transform: uppercase;\n padding: 0 0 4px;\n margin-top: 20px;\n margin-left: 40px;\n color: rgba(62, 62, 62, 0.4); }\n\n.tinvwl-wizard .tinvwl-progress li:before {\n content: '';\n position: absolute;\n right: 0;\n bottom: -2px;\n width: calc(100% + 50px);\n height: 2px;\n background: #e6e6e6; }\n\n.tinvwl-wizard .tinvwl-progress li:last-child:before {\n width: 100%; }\n\n.tinvwl-wizard .tinvwl-progress li.active {\n padding-left: 40px;\n margin-left: 0;\n color: #3e3e3e; }\n\n.tinvwl-wizard .tinvwl-progress li.active.last {\n padding-left: 0;\n margin-left: 40px; }\n\n.tinvwl-wizard .tinvwl-progress li:last-child.last.active {\n color: #869a00; }\n\n.tinvwl-wizard .tinvwl-progress li.active:after {\n content: '';\n position: absolute;\n right: 0;\n bottom: -2px;\n width: calc(100% + 10px);\n height: 2px;\n background: #a9c203; }\n\n.tinvwl-wizard .tinvwl-progress li.last.active:after {\n width: 100%; }\n\n.tinvwl-wizard .tinvwl-progress li:last-child {\n padding-left: 0 !important;\n margin-left: 0 !important; }\n\n.tinvwl-wizard .tinvwl-content {\n font-family: Arial, sans-serif;\n font-size: 14px;\n line-height: 1.71428571;\n color: #4f4639; }\n\n.tinvwl-wizard .tinvwl-content .tinwl-inner {\n padding: 34px 42px 42px;\n margin-top: 36px;\n border-radius: 5px;\n background: #fff;\n -webkit-box-shadow:
|
1 |
+
{"version":3,"names":[],"mappings":"","sources":["admin-setup-rtl.css"],"file":"admin-setup-rtl.css","sourcesContent":["html {\n background: #f6f3ed; }\n\n.tinvwl-wizard {\n max-width: 886px;\n margin: 107px auto;\n padding: 0;\n -webkit-box-shadow: none;\n box-shadow: none;\n background: none; }\n\n.tinvwl-wizard .tinvwl-logo {\n text-align: center;\n margin-bottom: 10px; }\n\n.tinvwl-wizard .tinvwl-logo h2,\n.tinvwl-wizard .tinvwl-logo img {\n display: inline-block;\n vertical-align: middle; }\n\n.tinvwl-wizard .tinvwl-logo img + h2 {\n margin-right: 15px; }\n\n.tinvwl-wizard .tinvwl-logo h2 {\n font-size: 18px;\n font-weight: bold;\n text-transform: uppercase;\n line-height: 1.333;\n color: #3E3E3E; }\n\n.tinvwl-wizard .tinvwl-progress {\n text-align: center; }\n\n.tinvwl-wizard .tinvwl-progress ul {\n list-style: none;\n padding: 0;\n margin: 0; }\n\n.tinvwl-wizard .tinvwl-progress li {\n position: relative;\n display: inline-block;\n font-family: \"Open Sans\", Arial, sans-serif;\n font-size: 14px;\n font-weight: bold;\n line-height: 1.714;\n text-transform: uppercase;\n padding: 0 0 4px;\n margin-top: 20px;\n margin-left: 40px;\n color: rgba(62, 62, 62, 0.4); }\n\n.tinvwl-wizard .tinvwl-progress li:before {\n content: '';\n position: absolute;\n right: 0;\n bottom: -2px;\n width: calc(100% + 50px);\n height: 2px;\n background: #e6e6e6; }\n\n.tinvwl-wizard .tinvwl-progress li:last-child:before {\n width: 100%; }\n\n.tinvwl-wizard .tinvwl-progress li.active {\n padding-left: 40px;\n margin-left: 0;\n color: #3e3e3e; }\n\n.tinvwl-wizard .tinvwl-progress li.active.last {\n padding-left: 0;\n margin-left: 40px; }\n\n.tinvwl-wizard .tinvwl-progress li:last-child.last.active {\n color: #869a00; }\n\n.tinvwl-wizard .tinvwl-progress li.active:after {\n content: '';\n position: absolute;\n right: 0;\n bottom: -2px;\n width: calc(100% + 10px);\n height: 2px;\n background: #a9c203; }\n\n.tinvwl-wizard .tinvwl-progress li.last.active:after {\n width: 100%; }\n\n.tinvwl-wizard .tinvwl-progress li:last-child {\n padding-left: 0 !important;\n margin-left: 0 !important; }\n\n.tinvwl-wizard .tinvwl-content {\n font-family: Arial, sans-serif;\n font-size: 14px;\n line-height: 1.71428571;\n color: #4f4639; }\n\n.tinvwl-wizard .tinvwl-content .tinwl-inner {\n padding: 34px 42px 42px;\n margin-top: 36px;\n border-radius: 5px;\n background: #fff;\n -webkit-box-shadow: 0 14px 29px 0 rgba(170, 150, 137, 0.38);\n box-shadow: 0 14px 29px 0 rgba(170, 150, 137, 0.38); }\n\n.tinvwl-wizard .tinvwl-content .tinwl-intro.tinwl-inner {\n padding: 40px 121px; }\n\n.tinvwl-wizard .tinvwl-content .tinwl-finish.tinwl-inner {\n padding: 40px 100px; }\n\n.tinvwl-wizard h1 {\n font-size: 36px;\n letter-spacing: -.025em;\n text-transform: uppercase;\n color: #291C09; }\n\n.tinvwl-wizard label {\n line-height: 1.429; }\n\n@media (min-width: 992px) {\n .tinvwl-wizard .tinwl-inner:not(.tinvwl-social) .col-md-6.control-label {\n padding-top: 10px; } }\n\n.tinvwl-wizard .tinvwl-title-wrap h1 + .tinvwl-desc {\n margin-top: 12px; }\n\n.tinvwl-wizard .tinvwl-title-wrap h1 + .tinvwl-separator {\n margin-top: 20px;\n margin-bottom: 20px; }\n\n.tinvwl-wizard .tinvwl-skip {\n display: inline-block;\n font-size: 14px;\n color: rgba(75, 75, 75, 0.722);\n text-decoration: underline;\n line-height: 1.429; }\n\n.tinvwl-wizard .tinvwl-separator {\n display: block;\n width: 100%;\n height: 2px;\n margin: 24px 0;\n background: #ececec; }\n\n.tinvwl-wizard .tinvwl-separator + .form-horizontal,\n.tinvwl-wizard .form-horizontal + .tinvwl-separator {\n margin-top: 30px; }\n\n.tinvwl-wizard .row + .tinvwl-separator {\n margin-top: 0; }\n\n.tinvwl-wizard .form-group {\n margin-bottom: 20px; }\n\n.tinvwl-wizard .tinvwl-desc {\n font-family: \"Open Sans\", Arial, sans-serif;\n font-size: 16px;\n line-height: 1.875;\n margin-bottom: 24px; }\n\n.tinvwl-wizard .tinvwl-desc a {\n color: #4f4639;\n text-decoration: underline; }\n\n.tinvwl-wizard .tinvwl-desc a:hover,\n.tinvwl-wizard .tinvwl-desc a:active,\n.tinvwl-wizard .tinvwl-desc a:focus {\n color: #000; }\n\n.tinvwl-wizard .tinvwl-nav {\n margin: 30px 0 0; }\n\n.tinvwl-wizard .tinvwl-desc + .tinvwl-nav {\n margin: 55px 0 0; }\n\n.tinvwl-wizard .tinvwl-nav .tinvwl-btn {\n min-width: 147px; }\n\n.tinvwl-wizard .tinvwl-nav .tinvwl-next {\n float: left; }\n\n.tinvwl-wizard .tinvwl-nav .tinvwl-skip + .tinvwl-btn {\n margin-right: 26px; }\n\n.tinvwl-wizard .tinwl-intro,\n.tinvwl-wizard .tinwl-finish {\n text-align: center; }\n\n.tinvwl-wizard .tinwl-intro .tinvwl-title,\n.tinvwl-wizard .tinwl-finish .tinvwl-title {\n font-size: 48px;\n margin-bottom: 14px; }\n\n.tinvwl-wizard .tinwl-finish .tinvwl-title {\n margin-bottom: 33px; }\n\n.tinvwl-wizard .tinwl-intro .tinvwl-sub-title,\n.tinvwl-wizard .tinwl-finish .tinvwl-sub-title {\n font-size: 18px;\n font-weight: 600;\n text-transform: uppercase;\n line-height: 1.167;\n letter-spacing: -.025em;\n margin-bottom: 0;\n color: #B2B2B2; }\n\n.tinvwl-wizard .tinwl-intro .tinvwl-thumb {\n margin-bottom: 16px; }\n\n.tinvwl-wizard .tinwl-intro .tinvwl-desc {\n margin-bottom: 21px; }\n\n.tinvwl-wizard .tinwl-finish .tinvwl-desc {\n margin-bottom: 45px; }\n\n.tinvwl-wizard .tinwl-intro .tinvwl-skip {\n margin-top: 19px; }\n\n.tinvwl-wizard .tinwl-finish .tinvwl-more {\n display: inline-block;\n text-decoration: underline;\n margin-top: 35px;\n color: #4b4b4b; }\n\n.tinvwl-wizard .tinwl-finish .tinvwl-btn {\n margin-left: 14px;\n padding: 16px 26px; }\n\n.tinvwl-wizard .tinwl-finish .tinvwl-btn:last-child {\n margin-left: 0; }\n\n.tinvwl-error .form-control {\n border: 2px solid #ff0000; }\n\n.tinvwl-error .tinvwl-error-icon {\n position: absolute;\n top: 8px;\n right: -10px;\n color: #ff0000; }\n\n.tinvwl-error .tinvwl-error-desc {\n line-height: 1.42857143;\n margin: 10px 8px 0;\n color: #ff0000; }\n\n.tinvwl-wizard .tinvwl-return-to-dash {\n margin-top: 45px;\n text-align: center; }\n\n@media screen and (max-width: 1024px) {\n .tinvwl-wizard {\n margin: 20px auto; }\n .tinvwl-wizard .tinwl-finish .tinvwl-btn {\n display: block;\n margin: 0 auto; }\n .tinvwl-wizard .tinwl-finish .tinvwl-btn + .tinvwl-btn {\n margin-top: 15px; } }\n\n@media screen and (max-width: 782px) {\n html {\n margin: 0; }\n .tinvwl-wizard .tinvwl-content .tinwl-inner.tinwl-intro,\n .tinvwl-wizard .tinvwl-content .tinwl-inner.tinwl-finish {\n padding-right: 50px;\n padding-left: 50px; }\n .tinvwl-wizard .tinvwl-nav {\n text-align: center; }\n .tinvwl-wizard .tinvwl-nav .tinvwl-next {\n float: none;\n text-align: center; } }\n"]}
|
assets/css/admin-setup-rtl.min.css
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
/**
|
2 |
* TI WooCommerce Wishlist Plugin - Allow your store guests and customers to add products to Wishlist. Add Wishlist functionality to your store for free.
|
3 |
-
* @version 1.
|
4 |
* @link https://wordpress.org/plugins/ti-woocommerce-wishlist/
|
5 |
*/
|
6 |
html{background:#f6f3ed}
|
1 |
/**
|
2 |
* TI WooCommerce Wishlist Plugin - Allow your store guests and customers to add products to Wishlist. Add Wishlist functionality to your store for free.
|
3 |
+
* @version 1.22.0
|
4 |
* @link https://wordpress.org/plugins/ti-woocommerce-wishlist/
|
5 |
*/
|
6 |
html{background:#f6f3ed}
|
assets/css/admin-setup.css
CHANGED
@@ -100,8 +100,8 @@ html {
|
|
100 |
margin-top: 36px;
|
101 |
border-radius: 5px;
|
102 |
background: #fff;
|
103 |
-
-webkit-box-shadow:
|
104 |
-
box-shadow:
|
105 |
|
106 |
.tinvwl-wizard .tinvwl-content .tinwl-intro.tinwl-inner {
|
107 |
padding: 40px 121px; }
|
100 |
margin-top: 36px;
|
101 |
border-radius: 5px;
|
102 |
background: #fff;
|
103 |
+
-webkit-box-shadow: 0 14px 29px 0 rgba(170, 150, 137, 0.38);
|
104 |
+
box-shadow: 0 14px 29px 0 rgba(170, 150, 137, 0.38); }
|
105 |
|
106 |
.tinvwl-wizard .tinvwl-content .tinwl-intro.tinwl-inner {
|
107 |
padding: 40px 121px; }
|
assets/css/admin-setup.css.map
CHANGED
@@ -1 +1 @@
|
|
1 |
-
{"version":3,"names":[],"mappings":"","sources":["admin-setup.css"],"file":"admin-setup.css","sourcesContent":["html {\n background: #f6f3ed; }\n\n.tinvwl-wizard {\n max-width: 886px;\n margin: 107px auto;\n padding: 0;\n -webkit-box-shadow: none;\n box-shadow: none;\n background: none; }\n\n.tinvwl-wizard .tinvwl-logo {\n text-align: center;\n margin-bottom: 10px; }\n\n.tinvwl-wizard .tinvwl-logo h2,\n.tinvwl-wizard .tinvwl-logo img {\n display: inline-block;\n vertical-align: middle; }\n\n.tinvwl-wizard .tinvwl-logo img + h2 {\n margin-left: 15px; }\n\n.tinvwl-wizard .tinvwl-logo h2 {\n font-size: 18px;\n font-weight: bold;\n text-transform: uppercase;\n line-height: 1.333;\n color: #3E3E3E; }\n\n.tinvwl-wizard .tinvwl-progress {\n text-align: center; }\n\n.tinvwl-wizard .tinvwl-progress ul {\n list-style: none;\n padding: 0;\n margin: 0; }\n\n.tinvwl-wizard .tinvwl-progress li {\n position: relative;\n display: inline-block;\n font-family: \"Open Sans\", Arial, sans-serif;\n font-size: 14px;\n font-weight: bold;\n line-height: 1.714;\n text-transform: uppercase;\n padding: 0 0 4px;\n margin-top: 20px;\n margin-right: 40px;\n color: rgba(62, 62, 62, 0.4); }\n\n.tinvwl-wizard .tinvwl-progress li:before {\n content: '';\n position: absolute;\n left: 0;\n bottom: -2px;\n width: calc(100% + 50px);\n height: 2px;\n background: #e6e6e6; }\n\n.tinvwl-wizard .tinvwl-progress li:last-child:before {\n width: 100%; }\n\n.tinvwl-wizard .tinvwl-progress li.active {\n padding-right: 40px;\n margin-right: 0;\n color: #3e3e3e; }\n\n.tinvwl-wizard .tinvwl-progress li.active.last {\n padding-right: 0;\n margin-right: 40px; }\n\n.tinvwl-wizard .tinvwl-progress li:last-child.last.active {\n color: #869a00; }\n\n.tinvwl-wizard .tinvwl-progress li.active:after {\n content: '';\n position: absolute;\n left: 0;\n bottom: -2px;\n width: calc(100% + 10px);\n height: 2px;\n background: #a9c203; }\n\n.tinvwl-wizard .tinvwl-progress li.last.active:after {\n width: 100%; }\n\n.tinvwl-wizard .tinvwl-progress li:last-child {\n padding-right: 0 !important;\n margin-right: 0 !important; }\n\n.tinvwl-wizard .tinvwl-content {\n font-family: Arial, sans-serif;\n font-size: 14px;\n line-height: 1.71428571;\n color: #4f4639; }\n\n.tinvwl-wizard .tinvwl-content .tinwl-inner {\n padding: 34px 42px 42px;\n margin-top: 36px;\n border-radius: 5px;\n background: #fff;\n -webkit-box-shadow:
|
1 |
+
{"version":3,"names":[],"mappings":"","sources":["admin-setup.css"],"file":"admin-setup.css","sourcesContent":["html {\n background: #f6f3ed; }\n\n.tinvwl-wizard {\n max-width: 886px;\n margin: 107px auto;\n padding: 0;\n -webkit-box-shadow: none;\n box-shadow: none;\n background: none; }\n\n.tinvwl-wizard .tinvwl-logo {\n text-align: center;\n margin-bottom: 10px; }\n\n.tinvwl-wizard .tinvwl-logo h2,\n.tinvwl-wizard .tinvwl-logo img {\n display: inline-block;\n vertical-align: middle; }\n\n.tinvwl-wizard .tinvwl-logo img + h2 {\n margin-left: 15px; }\n\n.tinvwl-wizard .tinvwl-logo h2 {\n font-size: 18px;\n font-weight: bold;\n text-transform: uppercase;\n line-height: 1.333;\n color: #3E3E3E; }\n\n.tinvwl-wizard .tinvwl-progress {\n text-align: center; }\n\n.tinvwl-wizard .tinvwl-progress ul {\n list-style: none;\n padding: 0;\n margin: 0; }\n\n.tinvwl-wizard .tinvwl-progress li {\n position: relative;\n display: inline-block;\n font-family: \"Open Sans\", Arial, sans-serif;\n font-size: 14px;\n font-weight: bold;\n line-height: 1.714;\n text-transform: uppercase;\n padding: 0 0 4px;\n margin-top: 20px;\n margin-right: 40px;\n color: rgba(62, 62, 62, 0.4); }\n\n.tinvwl-wizard .tinvwl-progress li:before {\n content: '';\n position: absolute;\n left: 0;\n bottom: -2px;\n width: calc(100% + 50px);\n height: 2px;\n background: #e6e6e6; }\n\n.tinvwl-wizard .tinvwl-progress li:last-child:before {\n width: 100%; }\n\n.tinvwl-wizard .tinvwl-progress li.active {\n padding-right: 40px;\n margin-right: 0;\n color: #3e3e3e; }\n\n.tinvwl-wizard .tinvwl-progress li.active.last {\n padding-right: 0;\n margin-right: 40px; }\n\n.tinvwl-wizard .tinvwl-progress li:last-child.last.active {\n color: #869a00; }\n\n.tinvwl-wizard .tinvwl-progress li.active:after {\n content: '';\n position: absolute;\n left: 0;\n bottom: -2px;\n width: calc(100% + 10px);\n height: 2px;\n background: #a9c203; }\n\n.tinvwl-wizard .tinvwl-progress li.last.active:after {\n width: 100%; }\n\n.tinvwl-wizard .tinvwl-progress li:last-child {\n padding-right: 0 !important;\n margin-right: 0 !important; }\n\n.tinvwl-wizard .tinvwl-content {\n font-family: Arial, sans-serif;\n font-size: 14px;\n line-height: 1.71428571;\n color: #4f4639; }\n\n.tinvwl-wizard .tinvwl-content .tinwl-inner {\n padding: 34px 42px 42px;\n margin-top: 36px;\n border-radius: 5px;\n background: #fff;\n -webkit-box-shadow: 0 14px 29px 0 rgba(170, 150, 137, 0.38);\n box-shadow: 0 14px 29px 0 rgba(170, 150, 137, 0.38); }\n\n.tinvwl-wizard .tinvwl-content .tinwl-intro.tinwl-inner {\n padding: 40px 121px; }\n\n.tinvwl-wizard .tinvwl-content .tinwl-finish.tinwl-inner {\n padding: 40px 100px; }\n\n.tinvwl-wizard h1 {\n font-size: 36px;\n letter-spacing: -.025em;\n text-transform: uppercase;\n color: #291C09; }\n\n.tinvwl-wizard label {\n line-height: 1.429; }\n\n@media (min-width: 992px) {\n .tinvwl-wizard .tinwl-inner:not(.tinvwl-social) .col-md-6.control-label {\n padding-top: 10px; } }\n\n.tinvwl-wizard .tinvwl-title-wrap h1 + .tinvwl-desc {\n margin-top: 12px; }\n\n.tinvwl-wizard .tinvwl-title-wrap h1 + .tinvwl-separator {\n margin-top: 20px;\n margin-bottom: 20px; }\n\n.tinvwl-wizard .tinvwl-skip {\n display: inline-block;\n font-size: 14px;\n color: rgba(75, 75, 75, 0.722);\n text-decoration: underline;\n line-height: 1.429; }\n\n.tinvwl-wizard .tinvwl-separator {\n display: block;\n width: 100%;\n height: 2px;\n margin: 24px 0;\n background: #ececec; }\n\n.tinvwl-wizard .tinvwl-separator + .form-horizontal,\n.tinvwl-wizard .form-horizontal + .tinvwl-separator {\n margin-top: 30px; }\n\n.tinvwl-wizard .row + .tinvwl-separator {\n margin-top: 0; }\n\n.tinvwl-wizard .form-group {\n margin-bottom: 20px; }\n\n.tinvwl-wizard .tinvwl-desc {\n font-family: \"Open Sans\", Arial, sans-serif;\n font-size: 16px;\n line-height: 1.875;\n margin-bottom: 24px; }\n\n.tinvwl-wizard .tinvwl-desc a {\n color: #4f4639;\n text-decoration: underline; }\n\n.tinvwl-wizard .tinvwl-desc a:hover,\n.tinvwl-wizard .tinvwl-desc a:active,\n.tinvwl-wizard .tinvwl-desc a:focus {\n color: #000; }\n\n.tinvwl-wizard .tinvwl-nav {\n margin: 30px 0 0; }\n\n.tinvwl-wizard .tinvwl-desc + .tinvwl-nav {\n margin: 55px 0 0; }\n\n.tinvwl-wizard .tinvwl-nav .tinvwl-btn {\n min-width: 147px; }\n\n.tinvwl-wizard .tinvwl-nav .tinvwl-next {\n float: right; }\n\n.tinvwl-wizard .tinvwl-nav .tinvwl-skip + .tinvwl-btn {\n margin-left: 26px; }\n\n.tinvwl-wizard .tinwl-intro,\n.tinvwl-wizard .tinwl-finish {\n text-align: center; }\n\n.tinvwl-wizard .tinwl-intro .tinvwl-title,\n.tinvwl-wizard .tinwl-finish .tinvwl-title {\n font-size: 48px;\n margin-bottom: 14px; }\n\n.tinvwl-wizard .tinwl-finish .tinvwl-title {\n margin-bottom: 33px; }\n\n.tinvwl-wizard .tinwl-intro .tinvwl-sub-title,\n.tinvwl-wizard .tinwl-finish .tinvwl-sub-title {\n font-size: 18px;\n font-weight: 600;\n text-transform: uppercase;\n line-height: 1.167;\n letter-spacing: -.025em;\n margin-bottom: 0;\n color: #B2B2B2; }\n\n.tinvwl-wizard .tinwl-intro .tinvwl-thumb {\n margin-bottom: 16px; }\n\n.tinvwl-wizard .tinwl-intro .tinvwl-desc {\n margin-bottom: 21px; }\n\n.tinvwl-wizard .tinwl-finish .tinvwl-desc {\n margin-bottom: 45px; }\n\n.tinvwl-wizard .tinwl-intro .tinvwl-skip {\n margin-top: 19px; }\n\n.tinvwl-wizard .tinwl-finish .tinvwl-more {\n display: inline-block;\n text-decoration: underline;\n margin-top: 35px;\n color: #4b4b4b; }\n\n.tinvwl-wizard .tinwl-finish .tinvwl-btn {\n margin-right: 14px;\n padding: 16px 26px; }\n\n.tinvwl-wizard .tinwl-finish .tinvwl-btn:last-child {\n margin-right: 0; }\n\n.tinvwl-error .form-control {\n border: 2px solid #ff0000; }\n\n.tinvwl-error .tinvwl-error-icon {\n position: absolute;\n top: 8px;\n left: -10px;\n color: #ff0000; }\n\n.tinvwl-error .tinvwl-error-desc {\n line-height: 1.42857143;\n margin: 10px 8px 0;\n color: #ff0000; }\n\n.tinvwl-wizard .tinvwl-return-to-dash {\n margin-top: 45px;\n text-align: center; }\n\n@media screen and (max-width: 1024px) {\n .tinvwl-wizard {\n margin: 20px auto; }\n .tinvwl-wizard .tinwl-finish .tinvwl-btn {\n display: block;\n margin: 0 auto; }\n .tinvwl-wizard .tinwl-finish .tinvwl-btn + .tinvwl-btn {\n margin-top: 15px; } }\n\n@media screen and (max-width: 782px) {\n html {\n margin: 0; }\n .tinvwl-wizard .tinvwl-content .tinwl-inner.tinwl-intro,\n .tinvwl-wizard .tinvwl-content .tinwl-inner.tinwl-finish {\n padding-left: 50px;\n padding-right: 50px; }\n .tinvwl-wizard .tinvwl-nav {\n text-align: center; }\n .tinvwl-wizard .tinvwl-nav .tinvwl-next {\n float: none;\n text-align: center; } }\n"]}
|
assets/css/admin-setup.min.css
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
/**
|
2 |
* TI WooCommerce Wishlist Plugin - Allow your store guests and customers to add products to Wishlist. Add Wishlist functionality to your store for free.
|
3 |
-
* @version 1.
|
4 |
* @link https://wordpress.org/plugins/ti-woocommerce-wishlist/
|
5 |
*/
|
6 |
html{background:#f6f3ed}
|
1 |
/**
|
2 |
* TI WooCommerce Wishlist Plugin - Allow your store guests and customers to add products to Wishlist. Add Wishlist functionality to your store for free.
|
3 |
+
* @version 1.22.0
|
4 |
* @link https://wordpress.org/plugins/ti-woocommerce-wishlist/
|
5 |
*/
|
6 |
html{background:#f6f3ed}
|
assets/css/admin.min.css
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
/**
|
2 |
* TI WooCommerce Wishlist Plugin - Allow your store guests and customers to add products to Wishlist. Add Wishlist functionality to your store for free.
|
3 |
-
* @version 1.
|
4 |
* @link https://wordpress.org/plugins/ti-woocommerce-wishlist/
|
5 |
*/
|
6 |
@font-face{font-family:'tinvwl-webfont';src:url("../fonts/tinvwl-webfont.eot?xu2uyi");src:url("../fonts/tinvwl-webfont.eot?xu2uyi#iefix") format("embedded-opentype"),url("../fonts/tinvwl-webfont.ttf?xu2uyi") format("truetype"),url("../fonts/tinvwl-webfont.woff?xu2uyi") format("woff"),url("../fonts/tinvwl-webfont.svg?xu2uyi#tinvwl-webfont") format("svg");font-weight:normal;font-style:normal}
|
1 |
/**
|
2 |
* TI WooCommerce Wishlist Plugin - Allow your store guests and customers to add products to Wishlist. Add Wishlist functionality to your store for free.
|
3 |
+
* @version 1.22.0
|
4 |
* @link https://wordpress.org/plugins/ti-woocommerce-wishlist/
|
5 |
*/
|
6 |
@font-face{font-family:'tinvwl-webfont';src:url("../fonts/tinvwl-webfont.eot?xu2uyi");src:url("../fonts/tinvwl-webfont.eot?xu2uyi#iefix") format("embedded-opentype"),url("../fonts/tinvwl-webfont.ttf?xu2uyi") format("truetype"),url("../fonts/tinvwl-webfont.woff?xu2uyi") format("woff"),url("../fonts/tinvwl-webfont.svg?xu2uyi#tinvwl-webfont") format("svg");font-weight:normal;font-style:normal}
|
assets/css/public-rtl.min.css
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
/**
|
2 |
* TI WooCommerce Wishlist Plugin - Allow your store guests and customers to add products to Wishlist. Add Wishlist functionality to your store for free.
|
3 |
-
* @version 1.
|
4 |
* @link https://wordpress.org/plugins/ti-woocommerce-wishlist/
|
5 |
*/
|
6 |
@font-face{font-family:'tinvwl-webfont';src:url("../fonts/tinvwl-webfont.eot?xu2uyi");src:url("../fonts/tinvwl-webfont.eot?xu2uyi#iefix") format("embedded-opentype"),url("../fonts/tinvwl-webfont.ttf?xu2uyi") format("truetype"),url("../fonts/tinvwl-webfont.woff?xu2uyi") format("woff"),url("../fonts/tinvwl-webfont.svg?xu2uyi#tinvwl-webfont") format("svg");font-weight:normal;font-style:normal}
|
1 |
/**
|
2 |
* TI WooCommerce Wishlist Plugin - Allow your store guests and customers to add products to Wishlist. Add Wishlist functionality to your store for free.
|
3 |
+
* @version 1.22.0
|
4 |
* @link https://wordpress.org/plugins/ti-woocommerce-wishlist/
|
5 |
*/
|
6 |
@font-face{font-family:'tinvwl-webfont';src:url("../fonts/tinvwl-webfont.eot?xu2uyi");src:url("../fonts/tinvwl-webfont.eot?xu2uyi#iefix") format("embedded-opentype"),url("../fonts/tinvwl-webfont.ttf?xu2uyi") format("truetype"),url("../fonts/tinvwl-webfont.woff?xu2uyi") format("woff"),url("../fonts/tinvwl-webfont.svg?xu2uyi#tinvwl-webfont") format("svg");font-weight:normal;font-style:normal}
|
assets/css/public.min.css
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
/**
|
2 |
* TI WooCommerce Wishlist Plugin - Allow your store guests and customers to add products to Wishlist. Add Wishlist functionality to your store for free.
|
3 |
-
* @version 1.
|
4 |
* @link https://wordpress.org/plugins/ti-woocommerce-wishlist/
|
5 |
*/
|
6 |
@font-face{font-family:'tinvwl-webfont';src:url("../fonts/tinvwl-webfont.eot?xu2uyi");src:url("../fonts/tinvwl-webfont.eot?xu2uyi#iefix") format("embedded-opentype"),url("../fonts/tinvwl-webfont.ttf?xu2uyi") format("truetype"),url("../fonts/tinvwl-webfont.woff?xu2uyi") format("woff"),url("../fonts/tinvwl-webfont.svg?xu2uyi#tinvwl-webfont") format("svg");font-weight:normal;font-style:normal}
|
1 |
/**
|
2 |
* TI WooCommerce Wishlist Plugin - Allow your store guests and customers to add products to Wishlist. Add Wishlist functionality to your store for free.
|
3 |
+
* @version 1.22.0
|
4 |
* @link https://wordpress.org/plugins/ti-woocommerce-wishlist/
|
5 |
*/
|
6 |
@font-face{font-family:'tinvwl-webfont';src:url("../fonts/tinvwl-webfont.eot?xu2uyi");src:url("../fonts/tinvwl-webfont.eot?xu2uyi#iefix") format("embedded-opentype"),url("../fonts/tinvwl-webfont.ttf?xu2uyi") format("truetype"),url("../fonts/tinvwl-webfont.woff?xu2uyi") format("woff"),url("../fonts/tinvwl-webfont.svg?xu2uyi#tinvwl-webfont") format("svg");font-weight:normal;font-style:normal}
|
assets/css/theme-rtl.min.css
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
/**
|
2 |
* TI WooCommerce Wishlist Plugin - Allow your store guests and customers to add products to Wishlist. Add Wishlist functionality to your store for free.
|
3 |
-
* @version 1.
|
4 |
* @link https://wordpress.org/plugins/ti-woocommerce-wishlist/
|
5 |
*/
|
6 |
.tinv-wishlist,.tinv-wishlist input,.tinv-wishlist select,.tinv-wishlist textarea,.tinv-wishlist button,.tinv-wishlist input[type="button"],.tinv-wishlist input[type="reset"],.tinv-wishlist input[type="submit"]{font-family:Georgia,serif;font-size:14px;font-weight:400;text-transform:none;line-height:1.75}
|
1 |
/**
|
2 |
* TI WooCommerce Wishlist Plugin - Allow your store guests and customers to add products to Wishlist. Add Wishlist functionality to your store for free.
|
3 |
+
* @version 1.22.0
|
4 |
* @link https://wordpress.org/plugins/ti-woocommerce-wishlist/
|
5 |
*/
|
6 |
.tinv-wishlist,.tinv-wishlist input,.tinv-wishlist select,.tinv-wishlist textarea,.tinv-wishlist button,.tinv-wishlist input[type="button"],.tinv-wishlist input[type="reset"],.tinv-wishlist input[type="submit"]{font-family:Georgia,serif;font-size:14px;font-weight:400;text-transform:none;line-height:1.75}
|
assets/css/theme.min.css
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
/**
|
2 |
* TI WooCommerce Wishlist Plugin - Allow your store guests and customers to add products to Wishlist. Add Wishlist functionality to your store for free.
|
3 |
-
* @version 1.
|
4 |
* @link https://wordpress.org/plugins/ti-woocommerce-wishlist/
|
5 |
*/
|
6 |
.tinv-wishlist,.tinv-wishlist input,.tinv-wishlist select,.tinv-wishlist textarea,.tinv-wishlist button,.tinv-wishlist input[type="button"],.tinv-wishlist input[type="reset"],.tinv-wishlist input[type="submit"]{font-family:Georgia,serif;font-size:14px;font-weight:400;text-transform:none;line-height:1.75}
|
1 |
/**
|
2 |
* TI WooCommerce Wishlist Plugin - Allow your store guests and customers to add products to Wishlist. Add Wishlist functionality to your store for free.
|
3 |
+
* @version 1.22.0
|
4 |
* @link https://wordpress.org/plugins/ti-woocommerce-wishlist/
|
5 |
*/
|
6 |
.tinv-wishlist,.tinv-wishlist input,.tinv-wishlist select,.tinv-wishlist textarea,.tinv-wishlist button,.tinv-wishlist input[type="button"],.tinv-wishlist input[type="reset"],.tinv-wishlist input[type="submit"]{font-family:Georgia,serif;font-size:14px;font-weight:400;text-transform:none;line-height:1.75}
|
assets/fonts/tinvwl-webfont.svg
CHANGED
@@ -1,45 +1,82 @@
|
|
1 |
-
<?xml version="1.0" standalone="no"?>
|
2 |
-
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
|
3 |
-
<svg xmlns="http://www.w3.org/2000/svg">
|
4 |
-
<metadata>Generated by IcoMoon</metadata>
|
5 |
-
<defs>
|
6 |
-
<font id="tinvwl-webfont" horiz-adv-x="1024">
|
7 |
-
<font-face units-per-em="1024" ascent="960" descent="-64"
|
8 |
-
<missing-glyph horiz-adv-x="1024"
|
9 |
-
<glyph unicode=" " horiz-adv-x="512" d=""
|
10 |
-
<glyph unicode="" glyph-name="chevron-down"
|
11 |
-
|
12 |
-
<glyph unicode="&#
|
13 |
-
|
14 |
-
<glyph unicode="&#
|
15 |
-
|
16 |
-
<glyph unicode="&#
|
17 |
-
|
18 |
-
<glyph unicode="&#
|
19 |
-
|
20 |
-
<glyph unicode="&#
|
21 |
-
|
22 |
-
<glyph unicode="&#
|
23 |
-
|
24 |
-
<glyph unicode="&#
|
25 |
-
|
26 |
-
<glyph unicode="&#
|
27 |
-
|
28 |
-
<glyph unicode="&#
|
29 |
-
|
30 |
-
<glyph unicode="&#
|
31 |
-
|
32 |
-
<glyph unicode="&#
|
33 |
-
|
34 |
-
<glyph unicode="&#
|
35 |
-
|
36 |
-
<glyph unicode="&#
|
37 |
-
|
38 |
-
<glyph unicode="&#
|
39 |
-
|
40 |
-
<glyph unicode="&#
|
41 |
-
|
42 |
-
<glyph unicode="&#
|
43 |
-
|
44 |
-
<glyph unicode="&#
|
45 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0" standalone="no"?>
|
2 |
+
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
|
3 |
+
<svg xmlns="http://www.w3.org/2000/svg">
|
4 |
+
<metadata>Generated by IcoMoon</metadata>
|
5 |
+
<defs>
|
6 |
+
<font id="tinvwl-webfont" horiz-adv-x="1024">
|
7 |
+
<font-face units-per-em="1024" ascent="960" descent="-64"/>
|
8 |
+
<missing-glyph horiz-adv-x="1024"/>
|
9 |
+
<glyph unicode=" " horiz-adv-x="512" d=""/>
|
10 |
+
<glyph unicode="" glyph-name="chevron-down"
|
11 |
+
d="M838.4 662.4l-329.6-329.6-331.2 329.6-76.8-86.4 411.2-409.6 411.2 409.6z"/>
|
12 |
+
<glyph unicode="" glyph-name="chevron-right"
|
13 |
+
d="M275.2 772.8l328-329.6-328-331.2 86.4-76.8 409.6 411.2-409.6 411.2z"/>
|
14 |
+
<glyph unicode="" glyph-name="chevron-left"
|
15 |
+
d="M771.2 772.8l-328-329.6 328-331.2-84.8-76.8-411.2 411.2 409.6 411.2z"/>
|
16 |
+
<glyph unicode="" glyph-name="chevron-up"
|
17 |
+
d="M838.4 166.4l-329.6 328-331.2-328-76.8 84.8 411.2 411.2 411.2-409.6z"/>
|
18 |
+
<glyph unicode="" glyph-name="cancel"
|
19 |
+
d="M453.251 539.486l174.229-174.229-41.86-41.86-174.229 174.229 41.86 41.86zM627.486 498.749l-174.229-174.229-41.86 41.86 174.229 174.229 41.86-41.86zM520 758.4c-184 0-332.8-148.8-332.8-332.8s148.8-332.8 332.8-332.8 332.8 148.8 332.8 332.8c0 184-148.8 332.8-332.8 332.8zM524.8 153.6c-150.4 0-273.6 123.2-273.6 273.6s123.2 273.6 273.6 273.6 273.6-121.6 273.6-273.6c-1.6-152-123.2-273.6-273.6-273.6z"/>
|
20 |
+
<glyph unicode="" glyph-name="times"
|
21 |
+
d="M389.368 655.491l355.247-355.247-84.852-84.852-355.247 355.247 84.852 84.852zM743.491 570.632l-355.247-355.247-84.852 84.852 355.247 355.247 84.852-84.852z"/>
|
22 |
+
<glyph unicode="" glyph-name="heart-plus"
|
23 |
+
d="M865.6 604.8c-6.4 43.2-41.6 104-150.4 121.6-110.4 17.6-209.6-91.2-209.6-91.2s-99.2 107.2-209.6 91.2c-108.8-16-144-78.4-150.4-121.6-20.8-131.2 46.4-201.6 110.4-268.8 56-57.6 249.6-236.8 249.6-236.8s51.2 48 108.8 102.4c0 6.4 1.6 11.2 1.6 11.2l-40 41.6c-38.4-35.2-70.4-64-70.4-64s-148.8 134.4-193.6 176c-44.8 41.6-100.8 99.2-105.6 182.4-4.8 62.4 35.2 112 121.6 112 100.8 0 179.2-108.8 179.2-108.8s80 108.8 179.2 108.8c84.8 0 124.8-49.6 121.6-112-1.6-19.2-4.8-36.8-11.2-52.8l67.2-1.6c4.8 32 8 68.8 1.6 110.4zM868.8 393.6v-94.4h-113.6v-113.6h-96v113.6h-113.6v94.4h113.6v113.6h96v-113.6z"/>
|
24 |
+
<glyph unicode="" glyph-name="heart-mark-right"
|
25 |
+
d="M715.2 726.4c-110.4 17.6-209.6-91.2-209.6-91.2s-99.2 107.2-209.6 91.2c-108.8-16-144-78.4-150.4-121.6-20.8-131.2 46.4-201.6 110.4-268.8 56-57.6 249.6-236.8 249.6-236.8s44.8 41.6 97.6 91.2l-46.4 46.4c-28.8-25.6-51.2-44.8-51.2-44.8s-148.8 134.4-193.6 176c-44.8 41.6-100.8 99.2-105.6 182.4-4.8 62.4 35.2 112 121.6 112 100.8 0 179.2-108.8 179.2-108.8s80 108.8 179.2 108.8c68.8 0 108.8-33.6 118.4-78.4l54.4 48c-16 38.4-56 81.6-144 94.4zM913.6 582.4l-224-222.4-100.8 100.8-56-56 158.4-158.4 280 278.4z"/>
|
26 |
+
<glyph unicode="" glyph-name="heart2"
|
27 |
+
d="M872 572.8c0-131.2-51.2-185.6-110.4-241.6-59.2-57.6-249.6-238.4-249.6-238.4s-190.4 180.8-249.6 236.8c-59.2 56-110.4 110.4-110.4 241.6 0 56 44.8 137.6 152 153.6 120 19.2 206.4-97.6 206.4-97.6s86.4 116.8 206.4 97.6c110.4-16 155.2-96 155.2-152z"/>
|
28 |
+
<glyph unicode="" glyph-name="heart-o"
|
29 |
+
d="M865.6 604.8c-6.4 43.2-41.6 104-150.4 121.6-110.4 17.6-209.6-91.2-209.6-91.2s-99.2 107.2-209.6 91.2c-108.8-16-144-78.4-150.4-121.6-20.8-131.2 46.4-201.6 110.4-268.8 56-57.6 249.6-236.8 249.6-236.8s192 179.2 248 236.8c65.6 67.2 132.8 139.2 112 268.8zM804.8 550.4c-6.4-83.2-60.8-140.8-105.6-182.4s-193.6-176-193.6-176-148.8 134.4-193.6 176c-44.8 41.6-100.8 99.2-105.6 182.4-4.8 62.4 35.2 112 121.6 112 100.8 0 179.2-108.8 179.2-108.8s80 108.8 179.2 108.8c83.2 0 123.2-51.2 118.4-112z"/>
|
30 |
+
<glyph unicode="" glyph-name="heart-mark-left"
|
31 |
+
d="M460.8 547.2l-224-222.4-100.8 99.2-56-56 158.4-158.4 278.4 278.4zM180.8 494.4l67.2 1.6c-6.4 16-9.6 33.6-11.2 52.8-4.8 62.4 35.2 112 121.6 112 100.8 0 179.2-108.8 179.2-108.8s80 108.8 179.2 108.8c84.8 0 124.8-49.6 121.6-112-6.4-83.2-60.8-140.8-105.6-182.4s-193.6-176-193.6-176-32 28.8-70.4 64l-40-41.6c0 0 0-3.2 1.6-11.2 57.6-54.4 108.8-102.4 108.8-102.4s190.4 179.2 246.4 236.8c65.6 67.2 132.8 137.6 110.4 268.8-6.4 43.2-41.6 104-150.4 121.6-110.4 17.6-209.6-91.2-209.6-91.2s-99.2 107.2-209.6 91.2c-108.8-16-144-78.4-150.4-121.6-6.4-41.6-4.8-78.4 4.8-110.4z"/>
|
32 |
+
<glyph unicode="" glyph-name="heart-mail"
|
33 |
+
d="M883.2 526.4c1.6 22.4 1.6 48-3.2 75.2-6.4 43.2-41.6 104-150.4 121.6-110.4 17.6-209.6-91.2-209.6-91.2s-99.2 107.2-209.6 91.2c-108.8-16-144-78.4-150.4-121.6-20.8-131.2 46.4-201.6 110.4-268.8 56-57.6 249.6-236.8 249.6-236.8s51.2 48 108.8 102.4c0 6.4 1.6 11.2 1.6 11.2l-40 41.6c-38.4-35.2-70.4-64-70.4-64s-148.8 134.4-193.6 176c-44.8 41.6-100.8 99.2-105.6 182.4-4.8 62.4 35.2 112 121.6 112 100.8 0 179.2-108.8 179.2-108.8s80 108.8 179.2 108.8c84.8 0 124.8-49.6 121.6-112 0-6.4-1.6-12.8-1.6-17.6zM884.8 468.8v-8l-129.6-46.4-131.2 43.2v11.2c0 9.6 8 16 16 16h228.8c8 0 16-6.4 16-16zM753.6 380.8l129.6 46.4v-140.8c0-9.6-8-16-16-16h-228.8c-9.6 0-16 8-16 16v134.4l131.2-40z"/>
|
34 |
+
<glyph unicode="" glyph-name="heart-tinv"
|
35 |
+
d="M718.4 726.4c-120 17.6-206.4-97.6-206.4-97.6s-86.4 116.8-206.4 97.6c-108.8-16-153.6-97.6-153.6-153.6 0-131.2 51.2-185.6 110.4-241.6 59.2-57.6 249.6-238.4 249.6-238.4s190.4 180.8 249.6 236.8c59.2 56 110.4 110.4 110.4 241.6 0 57.6-44.8 137.6-153.6 155.2zM520 473.6h-40v-155.2h-76.8v155.2h-38.4v75.2h156.8v-75.2zM636.8 315.2h-76.8v233.6h76.8v-233.6z"/>
|
36 |
+
<glyph unicode="" glyph-name="key"
|
37 |
+
d="M604.8 760c-99.2 0-180.8-81.6-180.8-180.8 0-32 6.4-52.8 19.2-78.4l-220.8-235.2c0-6.4 0-88 0-88l44.8-11.2 60.8 9.6 12.8 35.2 70.4 25.6v51.2l68.8 1.6-1.6 70.4 52.8 1.6 6.4 46.4c20.8-8 43.2-12.8 67.2-12.8 99.2 0 180.8 81.6 180.8 180.8s-78.4 184-180.8 184zM680 566.4c-4.8-6.4-19.2-20.8-20.8-20.8l-92.8 83.2c0 0 11.2 14.4 16 19.2 20.8 20.8 60.8 19.2 84.8-1.6 28.8-25.6 25.6-64 12.8-80z"/>
|
38 |
+
<glyph unicode="" glyph-name="lock"
|
39 |
+
d="M732.8 459.2c-1.6 4.8-8 8-12.8 8h-30.4c0 164.8-76.8 240-169.6 240s-169.6-88-169.6-240h-28.8c-8 0-14.4-6.4-14.4-14.4v-249.6c0-8 6.4-14.4 14.4-14.4h396.8c8 0 14.4 6.4 16 14.4v249.6c0 3.2 0 4.8-1.6 6.4zM520 654.4c67.2 0 116.8-62.4 118.4-187.2h-238.4c1.6 113.6 52.8 187.2 120 187.2zM307.2 467.2h14.4c-8 0-14.4-6.4-14.4-14.4v14.4zM732.8 467.2v-8c-1.6 4.8-8 8-12.8 8h12.8z"/>
|
40 |
+
<glyph unicode="" glyph-name="hearts"
|
41 |
+
d="M857.6 598.4c-70.4 0-124.8-75.2-124.8-75.2s-56 73.6-124.8 75.2c-25.6 0-56-12.8-64-19.2 0 0-32 25.6-32 25.6 16 14.4 46.4 33.6 73.6 36.8 76.8 11.2 145.6-62.4 145.6-62.4s68.8 75.2 145.6 62.4c75.2-11.2 100.8-54.4 104-84.8 14.4-91.2-32-140.8-76.8-187.2-36.8-38.4-171.2-161.6-171.2-161.6s-91.2 84.8-128 120l32 30.4c20.8-19.2 96-86.4 96-86.4s104 92.8 134.4 123.2c32 28.8 70.4 68.8 73.6 126.4 3.2 41.6-24 76.8-83.2 76.8zM564.8 392h-171.2c-4.8 0-8 3.2-8 8v48c0 4.8 3.2 8 8 8h171.2c4.8 0 8-3.2 8-8v-48c0-4.8-3.2-8-8-8zM633.6 416l-25.6-25.6c-3.2-3.2-9.6-3.2-12.8 0l-123.2 121.6c-3.2 3.2-3.2 9.6 0 12.8l27.2 27.2c3.2 3.2 9.6 3.2 12.8 0l123.2-123.2c1.6-3.2 1.6-8-1.6-12.8zM633.6 428.8l-25.6 27.2c-3.2 3.2-9.6 3.2-12.8 0l-123.2-123.2c-3.2-3.2-3.2-9.6 0-12.8l27.2-27.2c3.2-3.2 9.6-3.2 12.8 0l123.2 123.2c1.6 4.8 1.6 9.6-1.6 12.8zM310.4 582.4c0 0-68.8 75.2-145.6 62.4-75.2-11.2-100.8-54.4-104-84.8-14.4-91.2 32-140.8 76.8-187.2 38.4-40 172.8-164.8 172.8-164.8s91.2 84.8 128 118.4l-32 30.4c-20.8-19.2-96-86.4-96-86.4s-102.4 96-134.4 124.8c-32 28.8-68.8 68.8-73.6 126.4-3.2 43.2 24 78.4 84.8 78.4 70.4 0 124.8-75.2 124.8-75.2s49.6 78.4 145.6 76.8c0 0 14.4 38.4 14.4 38.4-92.8 19.2-161.6-57.6-161.6-57.6z"/>
|
42 |
+
<glyph unicode="" glyph-name="user"
|
43 |
+
d="M625.6 614.4c0-60.089-46.562-108.8-104-108.8s-104 48.711-104 108.8c0 60.089 46.562 108.8 104 108.8s104-48.711 104-108.8zM456 467.2h128l-64-108.8zM640 446.4l64-86.4v-188.8h-368v188.8l64 84.8 123.2-144z"/>
|
44 |
+
<glyph unicode="" glyph-name="clipboard"
|
45 |
+
d="M684.8 253.257c9.6 0 16 0 22.4 3.2-9.6-3.2-16-3.2-22.4-3.2v0zM726.4 858.057h-294.4c-83.2 0-147.2-67.2-147.2-147.2v-3.2c-73.6-9.6-131.2-70.4-131.2-147.2v-393.6c0-80 67.2-147.2 147.2-147.2h294.4c83.2 0 147.2 67.2 147.2 147.2v3.2c73.6 9.6 131.2 70.4 131.2 147.2v393.6c0 83.2-67.2 147.2-147.2 147.2zM547.2 102.857h-204.8c-57.6 0-102.4 48-102.4 102.4v348.8c0 48 0 54.4 44.8 67.2v-304c0-80 67.2-147.2 147.2-147.2h220.8c-3.2-54.4-48-67.2-105.6-67.2zM784 358.857c0-41.6-25.6-76.8-60.8-96-6.4-3.2-9.6-3.2-16-6.4v0 0c0 0 0 0-3.2 0-6.4-3.2-16-3.2-19.2-3.2h-204.8c-57.6 0-105.6 48-105.6 105.6v310.4c0 3.2 0 3.2 0 6.4 3.2 54.4 48 99.2 105.6 99.2h201.6c57.6 0 105.6-48 105.6-105.6v-310.4zM710.4 256.457v0h-3.2z"/>
|
46 |
+
<glyph unicode="" glyph-name="star" horiz-adv-x="951"
|
47 |
+
d="M950.857 581.143c0-10.286-7.429-20-14.857-27.429l-207.429-202.286 49.143-285.714c0.571-4 0.571-7.429 0.571-11.429 0-14.857-6.857-28.571-23.429-28.571-8 0-16 2.857-22.857 6.857l-256.571 134.857-256.571-134.857c-7.429-4-14.857-6.857-22.857-6.857-16.571 0-24 13.714-24 28.571 0 4 0.571 7.429 1.143 11.429l49.143 285.714-208 202.286c-6.857 7.429-14.286 17.143-14.286 27.429 0 17.143 17.714 24 32 26.286l286.857 41.714 128.571 260c5.143 10.857 14.857 23.429 28 23.429s22.857-12.571 28-23.429l128.571-260 286.857-41.714c13.714-2.286 32-9.143 32-26.286z"/>
|
48 |
+
<glyph unicode="" glyph-name="shopping-cart" horiz-adv-x="951"
|
49 |
+
d="M365.714 73.143c0-40-33.143-73.143-73.143-73.143s-73.143 33.143-73.143 73.143 33.143 73.143 73.143 73.143 73.143-33.143 73.143-73.143zM877.714 73.143c0-40-33.143-73.143-73.143-73.143s-73.143 33.143-73.143 73.143 33.143 73.143 73.143 73.143 73.143-33.143 73.143-73.143zM950.857 694.857v-292.571c0-18.286-14.286-34.286-32.571-36.571l-596.571-69.714c2.857-13.143 7.429-26.286 7.429-40 0-13.143-8-25.143-13.714-36.571h525.714c20 0 36.571-16.571 36.571-36.571s-16.571-36.571-36.571-36.571h-585.143c-20 0-36.571 16.571-36.571 36.571 0 17.714 25.714 60.571 34.857 78.286l-101.143 470.286h-116.571c-20 0-36.571 16.571-36.571 36.571s16.571 36.571 36.571 36.571h146.286c38.286 0 39.429-45.714 45.143-73.143h686.286c20 0 36.571-16.571 36.571-36.571z"/>
|
50 |
+
<glyph unicode="" glyph-name="magic" horiz-adv-x="966"
|
51 |
+
d="M680 618.857l167.429 167.429-61.143 61.143-167.429-167.429zM935.429 786.286c0-9.714-3.429-18.857-10.286-25.714l-734.857-734.857c-6.857-6.857-16-10.286-25.714-10.286s-18.857 3.429-25.714 10.286l-113.143 113.143c-6.857 6.857-10.286 16-10.286 25.714s3.429 18.857 10.286 25.714l734.857 734.857c6.857 6.857 16 10.286 25.714 10.286s18.857-3.429 25.714-10.286l113.143-113.143c6.857-6.857 10.286-16 10.286-25.714zM163.429 894.857l56-17.143-56-17.143-17.143-56-17.143 56-56 17.143 56 17.143 17.143 56zM363.429 802.286l112-34.286-112-34.286-34.286-112-34.286 112-112 34.286 112 34.286 34.286 112zM894.857 529.143l56-17.143-56-17.143-17.143-56-17.143 56-56 17.143 56 17.143 17.143 56zM529.143 894.857l56-17.143-56-17.143-17.143-56-17.143 56-56 17.143 56 17.143 17.143 56z"/>
|
52 |
+
<glyph unicode="" glyph-name="info" horiz-adv-x="366"
|
53 |
+
d="M365.714 182.857v-73.143c0-20-16.571-36.571-36.571-36.571h-292.571c-20 0-36.571 16.571-36.571 36.571v73.143c0 20 16.571 36.571 36.571 36.571h36.571v219.429h-36.571c-20 0-36.571 16.571-36.571 36.571v73.143c0 20 16.571 36.571 36.571 36.571h219.429c20 0 36.571-16.571 36.571-36.571v-329.143h36.571c20 0 36.571-16.571 36.571-36.571zM292.571 841.143v-109.714c0-20-16.571-36.571-36.571-36.571h-146.286c-20 0-36.571 16.571-36.571 36.571v109.714c0 20 16.571 36.571 36.571 36.571h146.286c20 0 36.571-16.571 36.571-36.571z"/>
|
54 |
+
<glyph unicode="" glyph-name="graduation-cap" horiz-adv-x="1317"
|
55 |
+
d="M1013.714 473.143l10.286-180.571c4.571-80.571-164-146.286-365.714-146.286s-370.286 65.714-365.714 146.286l10.286 180.571 328-103.429c9.143-2.857 18.286-4 27.429-4s18.286 1.143 27.429 4zM1316.571 658.286c0-8-5.143-14.857-12.571-17.714l-640-201.143c-2.286-0.571-4-0.571-5.714-0.571s-3.429 0-5.714 0.571l-372.571 117.714c-32.571-25.714-55.429-88.571-60-165.714 21.714-12.571 36-35.429 36-62.286 0-25.714-13.143-48-33.143-61.143l33.143-247.429c0.571-5.143-1.143-10.286-4.571-14.286s-8.571-6.286-13.714-6.286h-109.714c-5.143 0-10.286 2.286-13.714 6.286s-5.143 9.143-4.571 14.286l33.143 247.429c-20 13.143-33.143 35.429-33.143 61.143 0 27.429 15.429 50.857 37.143 63.429 3.429 66.857 20.571 138.857 56 188.571l-190.286 59.429c-7.429 2.857-12.571 9.714-12.571 17.714s5.143 14.857 12.571 17.714l640 201.143c2.286 0.571 4 0.571 5.714 0.571s3.429 0 5.714-0.571l640-201.143c7.429-2.857 12.571-9.714 12.571-17.714z"/>
|
56 |
+
<glyph unicode="" glyph-name="floppy-o" horiz-adv-x="878"
|
57 |
+
d="M219.429 73.143h438.857v219.429h-438.857v-219.429zM731.429 73.143h73.143v512c0 10.857-9.714 34.286-17.143 41.714l-160.571 160.571c-8 8-30.286 17.143-41.714 17.143v-237.714c0-30.286-24.571-54.857-54.857-54.857h-329.143c-30.286 0-54.857 24.571-54.857 54.857v237.714h-73.143v-731.429h73.143v237.714c0 30.286 24.571 54.857 54.857 54.857h475.429c30.286 0 54.857-24.571 54.857-54.857v-237.714zM512 603.428v182.857c0 9.714-8.571 18.286-18.286 18.286h-109.714c-9.714 0-18.286-8.571-18.286-18.286v-182.857c0-9.714 8.571-18.286 18.286-18.286h109.714c9.714 0 18.286 8.571 18.286 18.286zM877.714 585.143v-530.286c0-30.286-24.571-54.857-54.857-54.857h-768c-30.286 0-54.857 24.571-54.857 54.857v768c0 30.286 24.571 54.857 54.857 54.857h530.286c30.286 0 72-17.143 93.714-38.857l160-160c21.714-21.714 38.857-63.429 38.857-93.714z"/>
|
58 |
+
<glyph unicode="" glyph-name="eyedropper" horiz-adv-x="1042"
|
59 |
+
d="M970.286 897.143c71.429-71.429 72-187.429 0-258.286l-128.571-127.429 59.429-59.429c7.429-7.429 7.429-18.857 0-26.286l-120-120c-7.429-7.429-18.857-7.429-26.286 0l-60 60-344.571-344.571c-13.714-13.714-32-21.143-51.429-21.143h-116l-146.286-73.143-36.571 36.571 73.143 146.286v116c0 19.429 7.429 37.714 21.143 51.429l344.571 344.571-60 60c-7.429 7.429-7.429 18.857 0 26.286l120 120c7.429 7.429 18.857 7.429 26.286 0l59.429-59.429 127.429 128.571c70.857 72 186.857 71.429 258.286 0zM292.571 109.714l329.143 329.143-109.714 109.714-329.143-329.143v-109.714h109.714z"/>
|
60 |
+
<glyph unicode="" glyph-name="exclamation-triangle"
|
61 |
+
d="M585.143 165.143v108.571c0 10.286-8 18.857-18.286 18.857h-109.714c-10.286 0-18.286-8.571-18.286-18.857v-108.571c0-10.286 8-18.857 18.286-18.857h109.714c10.286 0 18.286 8.571 18.286 18.857zM584 378.857l10.286 262.286c0 3.429-1.714 8-5.714 10.857-3.429 2.857-8.571 6.286-13.714 6.286h-125.714c-5.143 0-10.286-3.429-13.714-6.286-4-2.857-5.714-8.571-5.714-12l9.714-261.143c0-7.429 8.571-13.143 19.429-13.143h105.714c10.286 0 18.857 5.714 19.429 13.143zM576 912.571l438.857-804.571c12.571-22.286 12-49.714-1.143-72s-37.143-36-62.857-36h-877.714c-25.714 0-49.714 13.714-62.857 36s-13.714 49.714-1.143 72l438.857 804.571c12.571 23.429 37.143 38.286 64 38.286s51.429-14.857 64-38.286z"/>
|
62 |
+
<glyph unicode="" glyph-name="check"
|
63 |
+
d="M954.857 627.428c0-14.286-5.714-28.571-16-38.857l-491.429-491.429c-10.286-10.286-24.571-16-38.857-16s-28.571 5.714-38.857 16l-284.571 284.571c-10.286 10.286-16 24.571-16 38.857s5.714 28.571 16 38.857l77.714 77.714c10.286 10.286 24.571 16 38.857 16s28.571-5.714 38.857-16l168-168.571 374.857 375.429c10.286 10.286 24.571 16 38.857 16s28.571-5.714 38.857-16l77.714-77.714c10.286-10.286 16-24.571 16-38.857z"/>
|
64 |
+
<glyph unicode="" glyph-name="arrow-left" horiz-adv-x="914"
|
65 |
+
d="M877.714 438.857v-73.143c0-38.857-25.714-73.143-66.857-73.143h-402.286l167.429-168c13.714-13.143 21.714-32 21.714-51.429s-8-38.286-21.714-51.429l-42.857-43.429c-13.143-13.143-32-21.143-51.429-21.143s-38.286 8-52 21.143l-372 372.571c-13.143 13.143-21.143 32-21.143 51.429s8 38.286 21.143 52l372 371.429c13.714 13.714 32.571 21.714 52 21.714s37.714-8 51.429-21.714l42.857-42.286c13.714-13.714 21.714-32.571 21.714-52s-8-38.286-21.714-52l-167.429-167.429h402.286c41.143 0 66.857-34.286 66.857-73.143z"/>
|
66 |
+
<glyph unicode="" glyph-name="wrench" horiz-adv-x="962"
|
67 |
+
d="M219.429 109.714c0 20-16.571 36.571-36.571 36.571s-36.571-16.571-36.571-36.571 16.571-36.571 36.571-36.571 36.571 16.571 36.571 36.571zM587.429 349.714l-389.714-389.714c-13.143-13.143-32-21.143-51.429-21.143s-38.286 8-52 21.143l-60.571 61.714c-13.714 13.143-21.714 32-21.714 51.429s8 38.286 21.714 52l389.143 389.143c29.714-74.857 89.714-134.857 164.571-164.571zM949.714 598.286c0-18.857-6.857-42.286-13.143-60.571-36-101.714-133.714-172-241.714-172-141.143 0-256 114.857-256 256s114.857 256 256 256c41.714 0 96-12.571 130.857-36 5.714-4 9.143-9.143 9.143-16 0-6.286-4-12.571-9.143-16l-167.429-96.571v-128l110.286-61.143c18.857 10.857 151.429 94.286 162.857 94.286s18.286-8.571 18.286-20z"/>
|
68 |
+
<glyph unicode="" glyph-name="twitter" horiz-adv-x="951"
|
69 |
+
d="M925.714 717.714c-25.143-36.571-56.571-69.143-92.571-95.429 0.571-8 0.571-16 0.571-24 0-244-185.714-525.143-525.143-525.143-104.571 0-201.714 30.286-283.429 82.857 14.857-1.714 29.143-2.286 44.571-2.286 86.286 0 165.714 29.143 229.143 78.857-81.143 1.714-149.143 54.857-172.571 128 11.429-1.714 22.857-2.857 34.857-2.857 16.571 0 33.143 2.286 48.571 6.286-84.571 17.143-148 91.429-148 181.143v2.286c24.571-13.714 53.143-22.286 83.429-23.429-49.714 33.143-82.286 89.714-82.286 153.714 0 34.286 9.143 65.714 25.143 93.143 90.857-112 227.429-185.143 380.571-193.143-2.857 13.714-4.571 28-4.571 42.286 0 101.714 82.286 184.571 184.571 184.571 53.143 0 101.143-22.286 134.857-58.286 41.714 8 81.714 23.429 117.143 44.571-13.714-42.857-42.857-78.857-81.143-101.714 37.143 4 73.143 14.286 106.286 28.571z"/>
|
70 |
+
<glyph unicode="" glyph-name="facebook, facebook-f" horiz-adv-x="602"
|
71 |
+
d="M548 944v-150.857h-89.714c-70.286 0-83.429-33.714-83.429-82.286v-108h167.429l-22.286-169.143h-145.143v-433.714h-174.857v433.714h-145.714v169.143h145.714v124.571c0 144.571 88.571 223.429 217.714 223.429 61.714 0 114.857-4.571 130.286-6.857z"/>
|
72 |
+
<glyph unicode="" glyph-name="google-plus" horiz-adv-x="1317"
|
73 |
+
d="M821.143 429.143c0-239.429-160.571-409.143-402.286-409.143-231.429 0-418.857 187.429-418.857 418.857s187.429 418.857 418.857 418.857c113.143 0 207.429-41.143 280.571-109.714l-113.714-109.143c-30.857 29.714-85.143 64.571-166.857 64.571-142.857 0-259.429-118.286-259.429-264.571s116.571-264.571 259.429-264.571c165.714 0 228 119.429 237.714 180.571h-237.714v144h395.429c4-21.143 6.857-42.286 6.857-69.714zM1316.571 498.857v-120h-119.429v-119.429h-120v119.429h-119.429v120h119.429v119.429h120v-119.429h119.429z"/>
|
74 |
+
<glyph unicode="" glyph-name="envelope"
|
75 |
+
d="M1024 545.143v-453.714c0-50.286-41.143-91.429-91.429-91.429h-841.143c-50.286 0-91.429 41.143-91.429 91.429v453.714c17.143-18.857 36.571-35.429 57.714-49.714 94.857-64.571 190.857-129.143 284-197.143 48-35.429 107.429-78.857 169.714-78.857h1.143c62.286 0 121.714 43.429 169.714 78.857 93.143 67.429 189.143 132.571 284.571 197.143 20.571 14.286 40 30.857 57.143 49.714zM1024 713.143c0-64-47.429-121.714-97.714-156.571-89.143-61.714-178.857-123.429-267.429-185.714-37.143-25.714-100-78.286-146.286-78.286h-1.143c-46.286 0-109.143 52.571-146.286 78.286-88.571 62.286-178.286 124-266.857 185.714-40.571 27.429-98.286 92-98.286 144 0 56 30.286 104 91.429 104h841.143c49.714 0 91.429-41.143 91.429-91.429z"/>
|
76 |
+
<glyph unicode="" glyph-name="pinterest-p" horiz-adv-x="731"
|
77 |
+
d="M0 609.714c0 210.857 193.143 341.143 388.571 341.143 179.429 0 342.857-123.429 342.857-312.571 0-177.714-90.857-374.857-293.143-374.857-48 0-108.571 24-132 68.571-43.429-172-40-197.714-136-329.143l-8-2.857-5.143 5.714c-3.429 36-8.571 71.429-8.571 107.429 0 116.571 53.714 285.143 80 398.286-14.286 29.143-18.286 64.571-18.286 96.571 0 57.714 40 130.857 105.143 130.857 48 0 73.714-36.571 73.714-81.714 0-74.286-50.286-144-50.286-216 0-49.143 40.571-83.429 88-83.429 131.429 0 172 189.714 172 290.857 0 135.429-96 209.143-225.714 209.143-150.857 0-267.429-108.571-267.429-261.714 0-73.714 45.143-111.429 45.143-129.143 0-14.857-10.857-67.429-29.714-67.429-2.857 0-6.857 1.143-9.714 1.714-81.714 24.571-111.429 133.714-111.429 208.571z"/>
|
78 |
+
<glyph unicode="" glyph-name="whatsapp" horiz-adv-x="878"
|
79 |
+
d="M562.857 394.286c9.714 0 102.857-48.571 106.857-55.429 1.143-2.857 1.143-6.286 1.143-8.571 0-14.286-4.571-30.286-9.714-43.429-13.143-32-66.286-52.571-98.857-52.571-27.429 0-84 24-108.571 35.429-81.714 37.143-132.571 100.571-181.714 173.143-21.714 32-41.143 71.429-40.571 110.857v4.571c1.143 37.714 14.857 64.571 42.286 90.286 8.571 8 17.714 12.571 29.714 12.571 6.857 0 13.714-1.714 21.143-1.714 15.429 0 18.286-4.571 24-19.429 4-9.714 33.143-87.429 33.143-93.143 0-21.714-39.429-46.286-39.429-59.429 0-2.857 1.143-5.714 2.857-8.571 12.571-26.857 36.571-57.714 58.286-78.286 26.286-25.143 54.286-41.714 86.286-57.714 4-2.286 8-4 12.571-4 17.143 0 45.714 55.429 60.571 55.429zM446.857 91.428c197.714 0 358.857 161.143 358.857 358.857s-161.143 358.857-358.857 358.857-358.857-161.143-358.857-358.857c0-75.429 24-149.143 68.571-210.286l-45.143-133.143 138.286 44c58.286-38.286 127.429-59.429 197.143-59.429zM446.857 881.143c237.714 0 430.857-193.143 430.857-430.857s-193.143-430.857-430.857-430.857c-72.571 0-144.571 18.286-208.571 53.714l-238.286-76.571 77.714 231.429c-40.571 66.857-61.714 144-61.714 222.286 0 237.714 193.143 430.857 430.857 430.857z"/>
|
80 |
+
</font>
|
81 |
+
</defs>
|
82 |
+
</svg>
|
assets/img/money-back.svg
CHANGED
@@ -1,232 +1,238 @@
|
|
1 |
-
<?xml version="1.0" encoding="utf-8"?>
|
2 |
-
<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
3 |
-
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
.
|
8 |
-
.
|
9 |
-
.
|
10 |
-
|
11 |
-
|
12 |
-
<
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
c-0.
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
c-0.
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
c-0.
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
c-0.
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
c0-0.3-0.
|
59 |
-
c0
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
c0.
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
c0.
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
c0.
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
c0.
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
c0.
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
c0.
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
c0,0.3,0.
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
c0.
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
c0.
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
c0.
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
c0.2,0.2
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
c0.
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
c0.
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
c0.
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
c-0.
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
c-0.
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
c-0.
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
c-0.
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
c-0.
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
c-0.
|
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 |
-
<path class="st1"
|
196 |
-
|
197 |
-
|
198 |
-
<
|
199 |
-
<path class="st1" d="
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
<path class="st3" d="
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0" encoding="utf-8"?>
|
2 |
+
<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
3 |
+
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
|
4 |
+
y="0px"
|
5 |
+
viewBox="0 0 120 120" style="enable-background:new 0 0 120 120;" xml:space="preserve">
|
6 |
+
<style type="text/css">
|
7 |
+
.st0{fill:#FF5A3C;}
|
8 |
+
.st1{fill:#222222;}
|
9 |
+
.st2{fill:#FFFFFF;}
|
10 |
+
.st3{fill:#FAFAFA;}
|
11 |
+
</style>
|
12 |
+
<g>
|
13 |
+
<polygon class="st0" points="60,0 64.7,5.9 70.4,0.9 74.1,7.5 80.5,3.6 83,10.8 90,8 91.2,15.5 98.6,14 98.4,21.6 106,21.4
|
14 |
+
104.5,28.8 112,30 109.2,37 116.4,39.5 112.5,45.9 119.1,49.6 114.1,55.3 120,60 114.1,64.7 119.1,70.4 112.5,74.1 116.4,80.5
|
15 |
+
109.2,83 112,90 104.5,91.2 106,98.6 98.4,98.4 98.6,106 91.2,104.5 90,112 83,109.2 80.5,116.4 74.1,112.5 70.4,119.1 64.7,114.1
|
16 |
+
60,120 55.3,114.1 49.6,119.1 45.9,112.5 39.5,116.4 37,109.2 30,112 28.8,104.5 21.4,106 21.6,98.4 14,98.6 15.5,91.2 8,90
|
17 |
+
10.8,83 3.6,80.5 7.5,74.1 0.9,70.4 5.9,64.7 0,60 5.9,55.3 0.9,49.6 7.5,45.9 3.6,39.5 10.8,37 8,30 15.5,28.8 14,21.4 21.6,21.6
|
18 |
+
21.4,14 28.8,15.5 30,8 37,10.8 39.5,3.6 45.9,7.5 49.6,0.9 55.3,5.9 "/>
|
19 |
+
<path class="st1" d="M102.1,60c0,23.3-18.9,42.1-42.1,42.1S17.9,83.3,17.9,60S36.7,17.9,60,17.9S102.1,36.7,102.1,60z M60,34.6
|
20 |
+
C46,34.6,34.6,46,34.6,60S46,85.4,60,85.4S85.4,74,85.4,60S74,34.6,60,34.6z"/>
|
21 |
+
<path class="st2" d="M24.6,30L24.6,30c-0.4,0-0.7-0.3-0.7-0.6v-4c0-0.3,0.3-0.6,0.6-0.6h0.1c0.3,0,0.6,0.3,0.6,0.6v4
|
22 |
+
C25.2,29.7,25,30,24.6,30z M26.9,27.6l0.2-4c0-0.3-0.2-0.6-0.6-0.7l-0.1,0c-0.3,0-0.6,0.2-0.7,0.6l-0.2,4c0,0.3,0.2,0.6,0.6,0.7
|
23 |
+
l0.1,0C26.6,28.2,26.9,27.9,26.9,27.6z M28.6,25.9l0.4-4c0-0.3-0.2-0.6-0.6-0.7l-0.1,0c-0.3,0-0.6,0.2-0.7,0.6l-0.4,4
|
24 |
+
c0,0.3,0.2,0.6,0.6,0.7l0.1,0C28.3,26.5,28.6,26.2,28.6,25.9z M30.5,24.3l0.6-4c0.1-0.3-0.2-0.7-0.5-0.7l-0.1,0
|
25 |
+
c-0.3-0.1-0.7,0.2-0.7,0.5l-0.6,4c-0.1,0.3,0.2,0.7,0.5,0.7l0.1,0C30.1,24.9,30.4,24.6,30.5,24.3z M32.4,22.8l0.8-3.9
|
26 |
+
c0.1-0.3-0.1-0.7-0.5-0.7l-0.1,0c-0.3-0.1-0.7,0.1-0.7,0.5l-0.8,3.9c-0.1,0.3,0.1,0.7,0.5,0.7l0.1,0C32,23.3,32.3,23.1,32.4,22.8z
|
27 |
+
M34.4,21.4l1-3.9c0.1-0.3-0.1-0.7-0.4-0.8l-0.1,0c-0.3-0.1-0.7,0.1-0.8,0.4l-1,3.9c-0.1,0.3,0.1,0.7,0.4,0.8l0.1,0
|
28 |
+
C33.9,21.9,34.3,21.7,34.4,21.4z M36.4,20.1l1.2-3.8c0.1-0.3-0.1-0.7-0.4-0.8l-0.1,0c-0.3-0.1-0.7,0.1-0.8,0.4l-1.2,3.8
|
29 |
+
c-0.1,0.3,0.1,0.7,0.4,0.8l0.1,0C36,20.6,36.3,20.4,36.4,20.1z M38.5,18.9l1.4-3.8c0.1-0.3,0-0.7-0.4-0.8l-0.1,0
|
30 |
+
c-0.3-0.1-0.7,0-0.8,0.4l-1.4,3.8c-0.1,0.3,0,0.7,0.4,0.8l0.1,0C38.1,19.4,38.4,19.2,38.5,18.9z M40.7,17.9l1.6-3.7
|
31 |
+
c0.1-0.3,0-0.7-0.3-0.8l-0.1,0c-0.3-0.1-0.7,0-0.8,0.3l-1.6,3.7c-0.1,0.3,0,0.7,0.3,0.8l0.1,0C40.2,18.3,40.6,18.2,40.7,17.9z
|
32 |
+
M42.9,16.9l1.8-3.6c0.2-0.3,0-0.7-0.3-0.8l-0.1,0c-0.3-0.2-0.7,0-0.8,0.3l-1.8,3.6c-0.2,0.3,0,0.7,0.3,0.8l0.1,0
|
33 |
+
C42.4,17.3,42.8,17.2,42.9,16.9z M45.2,16.1l2-3.5c0.2-0.3,0.1-0.7-0.2-0.8l-0.1,0c-0.3-0.2-0.7-0.1-0.8,0.2l-2,3.5
|
34 |
+
c-0.2,0.3-0.1,0.7,0.2,0.8l0.1,0C44.7,16.5,45.1,16.4,45.2,16.1z M47.5,15.4l2.2-3.4c0.2-0.3,0.1-0.7-0.2-0.9l-0.1,0
|
35 |
+
c-0.3-0.2-0.7-0.1-0.9,0.2l-2.2,3.4c-0.2,0.3-0.1,0.7,0.2,0.9l0.1,0C47,15.7,47.4,15.6,47.5,15.4z M49.9,14.8l2.4-3.3
|
36 |
+
c0.2-0.3,0.1-0.7-0.1-0.9l-0.1,0c-0.3-0.2-0.7-0.1-0.9,0.1L48.8,14c-0.2,0.3-0.1,0.7,0.1,0.9l0.1,0C49.3,15.1,49.7,15,49.9,14.8z
|
37 |
+
M52.3,14.3l2.5-3.1c0.2-0.3,0.2-0.7-0.1-0.9l-0.1,0c-0.3-0.2-0.7-0.2-0.9,0.1l-2.5,3.1c-0.2,0.3-0.2,0.7,0.1,0.9l0.1,0
|
38 |
+
C51.7,14.6,52.1,14.6,52.3,14.3z M54.7,14l2.7-3c0.2-0.3,0.2-0.6,0-0.9l0,0c-0.3-0.2-0.6-0.2-0.9,0l-2.7,3c-0.2,0.3-0.2,0.6,0,0.9
|
39 |
+
l0,0C54.1,14.2,54.5,14.2,54.7,14z M57.1,13.7l2.8-2.8c0.2-0.2,0.2-0.6,0-0.9l0,0c-0.2-0.2-0.6-0.2-0.9,0l-2.8,2.8
|
40 |
+
c-0.2,0.2-0.2,0.6,0,0.9l0,0C56.5,14,56.9,14,57.1,13.7z M59.5,13.7l3-2.7c0.3-0.2,0.3-0.6,0-0.9l0,0c-0.2-0.3-0.6-0.3-0.9,0
|
41 |
+
l-3,2.7c-0.3,0.2-0.3,0.6,0,0.9l0,0C58.9,13.9,59.3,13.9,59.5,13.7z M61.9,13.7l3.1-2.5c0.3-0.2,0.3-0.6,0.1-0.9l0-0.1
|
42 |
+
c-0.2-0.3-0.6-0.3-0.9-0.1l-3.1,2.5c-0.3,0.2-0.3,0.6-0.1,0.9l0,0.1C61.3,13.9,61.7,13.9,61.9,13.7z M64.4,13.9l3.3-2.4
|
43 |
+
c0.3-0.2,0.3-0.6,0.1-0.9l0-0.1c-0.2-0.3-0.6-0.3-0.9-0.1l-3.3,2.4c-0.3,0.2-0.3,0.6-0.1,0.9l0,0.1C63.7,14,64.1,14.1,64.4,13.9z
|
44 |
+
M66.8,14.1l3.4-2.2c0.3-0.2,0.4-0.6,0.2-0.9l0-0.1c-0.2-0.3-0.6-0.4-0.9-0.2l-3.4,2.2c-0.3,0.2-0.4,0.6-0.2,0.9l0,0.1
|
45 |
+
C66.1,14.3,66.5,14.3,66.8,14.1z M69.2,14.6l3.5-2c0.3-0.2,0.4-0.5,0.2-0.8l0-0.1c-0.2-0.3-0.5-0.4-0.8-0.2l-3.5,2
|
46 |
+
c-0.3,0.2-0.4,0.5-0.2,0.8l0,0.1C68.5,14.6,68.9,14.7,69.2,14.6z M71.5,15.1l3.6-1.8c0.3-0.2,0.4-0.5,0.3-0.8l0-0.1
|
47 |
+
c-0.2-0.3-0.5-0.4-0.8-0.3l-3.6,1.8c-0.3,0.2-0.4,0.5-0.3,0.8l0,0.1C70.9,15.1,71.2,15.3,71.5,15.1z M73.9,15.8l3.7-1.6
|
48 |
+
c0.3-0.1,0.5-0.5,0.3-0.8l0-0.1c-0.1-0.3-0.5-0.5-0.8-0.3l-3.7,1.6c-0.3,0.1-0.5,0.5-0.3,0.8l0,0.1C73.2,15.8,73.6,15.9,73.9,15.8z
|
49 |
+
M76.2,16.6l3.8-1.4c0.3-0.1,0.5-0.5,0.4-0.8l0-0.1c-0.1-0.3-0.5-0.5-0.8-0.4l-3.8,1.4c-0.3,0.1-0.5,0.5-0.4,0.8l0,0.1
|
50 |
+
C75.5,16.5,75.8,16.7,76.2,16.6z M78.4,17.5l3.8-1.2c0.3-0.1,0.5-0.5,0.4-0.8l0-0.1c-0.1-0.3-0.5-0.5-0.8-0.4L78,16.2
|
51 |
+
c-0.3,0.1-0.5,0.5-0.4,0.8l0,0.1C77.7,17.4,78.1,17.6,78.4,17.5z M80.6,18.5l3.9-1c0.3-0.1,0.5-0.4,0.4-0.8l0-0.1
|
52 |
+
c-0.1-0.3-0.4-0.5-0.8-0.4l-3.9,1c-0.3,0.1-0.5,0.4-0.4,0.8l0,0.1C79.9,18.4,80.3,18.6,80.6,18.5z M82.8,19.6l3.9-0.8
|
53 |
+
c0.3-0.1,0.5-0.4,0.5-0.7l0-0.1c-0.1-0.3-0.4-0.5-0.7-0.5l-3.9,0.8c-0.3,0.1-0.5,0.4-0.5,0.7l0,0.1C82.1,19.5,82.4,19.7,82.8,19.6z
|
54 |
+
M84.8,20.9l4-0.6c0.3-0.1,0.6-0.4,0.5-0.7l0-0.1c-0.1-0.3-0.4-0.6-0.7-0.5l-4,0.6c-0.3,0.1-0.6,0.4-0.5,0.7l0,0.1
|
55 |
+
C84.2,20.7,84.5,20.9,84.8,20.9z M86.9,22.2l4-0.4c0.3,0,0.6-0.3,0.6-0.7l0-0.1c0-0.3-0.3-0.6-0.7-0.6l-4,0.4
|
56 |
+
c-0.3,0-0.6,0.3-0.6,0.7l0,0.1C86.2,22,86.5,22.3,86.9,22.2z M88.8,23.7l4-0.2c0.3,0,0.6-0.3,0.6-0.7l0-0.1c0-0.3-0.3-0.6-0.7-0.6
|
57 |
+
l-4,0.2c-0.3,0-0.6,0.3-0.6,0.7l0,0.1C88.2,23.4,88.5,23.7,88.8,23.7z M90.7,25.2h4c0.3,0,0.6-0.3,0.6-0.6v-0.1
|
58 |
+
c0-0.3-0.3-0.6-0.6-0.6h-4c-0.3,0-0.6,0.3-0.6,0.6v0.1C90,25,90.3,25.2,90.7,25.2z M92.4,26.9l4,0.2c0.3,0,0.6-0.2,0.7-0.6l0-0.1
|
59 |
+
c0-0.3-0.2-0.6-0.6-0.7l-4-0.2c-0.3,0-0.6,0.2-0.7,0.6l0,0.1C91.8,26.6,92.1,26.9,92.4,26.9z M94.1,28.6l4,0.4
|
60 |
+
c0.3,0,0.6-0.2,0.7-0.6l0-0.1c0-0.3-0.2-0.6-0.6-0.7l-4-0.4c-0.3,0-0.6,0.2-0.7,0.6l0,0.1C93.5,28.3,93.8,28.6,94.1,28.6z
|
61 |
+
M95.7,30.5l4,0.6c0.3,0.1,0.7-0.2,0.7-0.5l0-0.1c0.1-0.3-0.2-0.7-0.5-0.7l-4-0.6c-0.3-0.1-0.7,0.2-0.7,0.5l0,0.1
|
62 |
+
C95.1,30.1,95.4,30.4,95.7,30.5z M97.2,32.4l3.9,0.8c0.3,0.1,0.7-0.1,0.7-0.5l0-0.1c0.1-0.3-0.1-0.7-0.5-0.7l-3.9-0.8
|
63 |
+
c-0.3-0.1-0.7,0.1-0.7,0.5l0,0.1C96.7,32,96.9,32.3,97.2,32.4z M98.6,34.4l3.9,1c0.3,0.1,0.7-0.1,0.8-0.4l0-0.1
|
64 |
+
c0.1-0.3-0.1-0.7-0.4-0.8l-3.9-1c-0.3-0.1-0.7,0.1-0.8,0.4l0,0.1C98.1,33.9,98.3,34.3,98.6,34.4z M99.9,36.4l3.8,1.2
|
65 |
+
c0.3,0.1,0.7-0.1,0.8-0.4l0-0.1c0.1-0.3-0.1-0.7-0.4-0.8l-3.8-1.2c-0.3-0.1-0.7,0.1-0.8,0.4l0,0.1C99.4,36,99.6,36.3,99.9,36.4z
|
66 |
+
M101.1,38.5l3.8,1.4c0.3,0.1,0.7,0,0.8-0.4l0-0.1c0.1-0.3,0-0.7-0.4-0.8l-3.8-1.4c-0.3-0.1-0.7,0-0.8,0.4l0,0.1
|
67 |
+
C100.6,38.1,100.8,38.4,101.1,38.5z M102.1,40.7l3.7,1.6c0.3,0.1,0.7,0,0.8-0.3l0-0.1c0.1-0.3,0-0.7-0.3-0.8l-3.7-1.6
|
68 |
+
c-0.3-0.1-0.7,0-0.8,0.3l0,0.1C101.7,40.2,101.8,40.6,102.1,40.7z M103.1,42.9l3.6,1.8c0.3,0.2,0.7,0,0.8-0.3l0-0.1
|
69 |
+
c0.2-0.3,0-0.7-0.3-0.8l-3.6-1.8c-0.3-0.2-0.7,0-0.8,0.3l0,0.1C102.7,42.4,102.8,42.8,103.1,42.9z M103.9,45.2l3.5,2
|
70 |
+
c0.3,0.2,0.7,0.1,0.8-0.2l0-0.1c0.2-0.3,0.1-0.7-0.2-0.8l-3.5-2c-0.3-0.2-0.7-0.1-0.8,0.2l0,0.1C103.5,44.7,103.6,45.1,103.9,45.2z
|
71 |
+
M104.6,47.5l3.4,2.2c0.3,0.2,0.7,0.1,0.9-0.2l0-0.1c0.2-0.3,0.1-0.7-0.2-0.9l-3.4-2.2c-0.3-0.2-0.7-0.1-0.9,0.2l0,0.1
|
72 |
+
C104.3,47,104.4,47.4,104.6,47.5z M105.2,49.9l3.3,2.4c0.3,0.2,0.7,0.1,0.9-0.1l0-0.1c0.2-0.3,0.1-0.7-0.1-0.9l-3.3-2.4
|
73 |
+
c-0.3-0.2-0.7-0.1-0.9,0.1l0,0.1C104.9,49.3,105,49.7,105.2,49.9z M105.7,52.3l3.1,2.5c0.3,0.2,0.7,0.2,0.9-0.1l0-0.1
|
74 |
+
c0.2-0.3,0.2-0.7-0.1-0.9l-3.1-2.5c-0.3-0.2-0.7-0.2-0.9,0.1l0,0.1C105.4,51.7,105.4,52.1,105.7,52.3z M106,54.7l3,2.7
|
75 |
+
c0.3,0.2,0.6,0.2,0.9,0l0,0c0.2-0.3,0.2-0.6,0-0.9l-3-2.7c-0.3-0.2-0.6-0.2-0.9,0l0,0C105.8,54.1,105.8,54.5,106,54.7z M106.3,57.1
|
76 |
+
l2.8,2.8c0.2,0.2,0.6,0.2,0.9,0l0,0c0.2-0.2,0.2-0.6,0-0.9l-2.8-2.8c-0.2-0.2-0.6-0.2-0.9,0l0,0C106,56.5,106,56.9,106.3,57.1z
|
77 |
+
M106.3,59.5l2.7,3c0.2,0.3,0.6,0.3,0.9,0l0,0c0.3-0.2,0.3-0.6,0-0.9l-2.7-3c-0.2-0.3-0.6-0.3-0.9,0l0,0
|
78 |
+
C106.1,58.9,106.1,59.3,106.3,59.5z M106.3,61.9l2.5,3.1c0.2,0.3,0.6,0.3,0.9,0.1l0.1,0c0.3-0.2,0.3-0.6,0.1-0.9l-2.5-3.1
|
79 |
+
c-0.2-0.3-0.6-0.3-0.9-0.1l-0.1,0C106.1,61.3,106.1,61.7,106.3,61.9z M106.1,64.4l2.4,3.3c0.2,0.3,0.6,0.3,0.9,0.1l0.1,0
|
80 |
+
c0.3-0.2,0.3-0.6,0.1-0.9l-2.4-3.3c-0.2-0.3-0.6-0.3-0.9-0.1l-0.1,0C106,63.7,105.9,64.1,106.1,64.4z M105.9,66.8l2.2,3.4
|
81 |
+
c0.2,0.3,0.6,0.4,0.9,0.2l0.1,0c0.3-0.2,0.4-0.6,0.2-0.9l-2.2-3.4c-0.2-0.3-0.6-0.4-0.9-0.2l-0.1,0
|
82 |
+
C105.7,66.1,105.7,66.5,105.9,66.8z M105.4,69.2l2,3.5c0.2,0.3,0.5,0.4,0.8,0.2l0.1,0c0.3-0.2,0.4-0.5,0.2-0.8l-2-3.5
|
83 |
+
c-0.2-0.3-0.5-0.4-0.8-0.2l-0.1,0C105.4,68.5,105.3,68.9,105.4,69.2z M104.9,71.5l1.8,3.6c0.2,0.3,0.5,0.4,0.8,0.3l0.1,0
|
84 |
+
c0.3-0.2,0.4-0.5,0.3-0.8l-1.8-3.6c-0.2-0.3-0.5-0.4-0.8-0.3l-0.1,0C104.9,70.9,104.7,71.2,104.9,71.5z M104.2,73.9l1.6,3.7
|
85 |
+
c0.1,0.3,0.5,0.5,0.8,0.3l0.1,0c0.3-0.1,0.5-0.5,0.3-0.8l-1.6-3.7c-0.1-0.3-0.5-0.5-0.8-0.3l-0.1,0
|
86 |
+
C104.2,73.2,104.1,73.6,104.2,73.9z M103.4,76.2l1.4,3.8c0.1,0.3,0.5,0.5,0.8,0.4l0.1,0c0.3-0.1,0.5-0.5,0.4-0.8l-1.4-3.8
|
87 |
+
c-0.1-0.3-0.5-0.5-0.8-0.4l-0.1,0C103.5,75.5,103.3,75.8,103.4,76.2z M102.5,78.4l1.2,3.8c0.1,0.3,0.5,0.5,0.8,0.4l0.1,0
|
88 |
+
c0.3-0.1,0.5-0.5,0.4-0.8l-1.2-3.8c-0.1-0.3-0.5-0.5-0.8-0.4l-0.1,0C102.6,77.7,102.4,78.1,102.5,78.4z M101.5,80.6l1,3.9
|
89 |
+
c0.1,0.3,0.4,0.5,0.8,0.4l0.1,0c0.3-0.1,0.5-0.4,0.4-0.8l-1-3.9c-0.1-0.3-0.4-0.5-0.8-0.4l-0.1,0C101.6,79.9,101.4,80.3,101.5,80.6
|
90 |
+
z M100.4,82.8l0.8,3.9c0.1,0.3,0.4,0.5,0.7,0.5l0.1,0c0.3-0.1,0.5-0.4,0.5-0.7l-0.8-3.9c-0.1-0.3-0.4-0.5-0.7-0.5l-0.1,0
|
91 |
+
C100.5,82.1,100.3,82.4,100.4,82.8z M99.1,84.8l0.6,4c0.1,0.3,0.4,0.6,0.7,0.5l0.1,0c0.3-0.1,0.6-0.4,0.5-0.7l-0.6-4
|
92 |
+
c-0.1-0.3-0.4-0.6-0.7-0.5l-0.1,0C99.3,84.2,99.1,84.5,99.1,84.8z M97.8,86.9l0.4,4c0,0.3,0.3,0.6,0.7,0.6l0.1,0
|
93 |
+
c0.3,0,0.6-0.3,0.6-0.7l-0.4-4c0-0.3-0.3-0.6-0.7-0.6l-0.1,0C98,86.2,97.7,86.5,97.8,86.9z M96.3,88.8l0.2,4c0,0.3,0.3,0.6,0.7,0.6
|
94 |
+
l0.1,0c0.3,0,0.6-0.3,0.6-0.7l-0.2-4c0-0.3-0.3-0.6-0.7-0.6l-0.1,0C96.6,88.2,96.3,88.5,96.3,88.8z M94.8,90.7v4
|
95 |
+
c0,0.3,0.3,0.6,0.6,0.6h0.1c0.3,0,0.6-0.3,0.6-0.6v-4c0-0.3-0.3-0.6-0.6-0.6h-0.1C95,90,94.8,90.3,94.8,90.7z M93.1,92.4l-0.2,4
|
96 |
+
c0,0.3,0.2,0.6,0.6,0.7l0.1,0c0.3,0,0.6-0.2,0.7-0.6l0.2-4c0-0.3-0.2-0.6-0.6-0.7l-0.1,0C93.4,91.8,93.1,92.1,93.1,92.4z
|
97 |
+
M91.4,94.1l-0.4,4c0,0.3,0.2,0.6,0.6,0.7l0.1,0c0.3,0,0.6-0.2,0.7-0.6l0.4-4c0-0.3-0.2-0.6-0.6-0.7l-0.1,0
|
98 |
+
C91.7,93.5,91.4,93.8,91.4,94.1z M89.5,95.7l-0.6,4c-0.1,0.3,0.2,0.7,0.5,0.7l0.1,0c0.3,0.1,0.7-0.2,0.7-0.5l0.6-4
|
99 |
+
c0.1-0.3-0.2-0.7-0.5-0.7l-0.1,0C89.9,95.1,89.6,95.4,89.5,95.7z M87.6,97.2l-0.8,3.9c-0.1,0.3,0.1,0.7,0.5,0.7l0.1,0
|
100 |
+
c0.3,0.1,0.7-0.1,0.7-0.5l0.8-3.9c0.1-0.3-0.1-0.7-0.5-0.7l-0.1,0C88,96.7,87.7,96.9,87.6,97.2z M85.6,98.6l-1,3.9
|
101 |
+
c-0.1,0.3,0.1,0.7,0.4,0.8l0.1,0c0.3,0.1,0.7-0.1,0.8-0.4l1-3.9c0.1-0.3-0.1-0.7-0.4-0.8l-0.1,0C86.1,98.1,85.7,98.3,85.6,98.6z
|
102 |
+
M83.6,99.9l-1.2,3.8c-0.1,0.3,0.1,0.7,0.4,0.8l0.1,0c0.3,0.1,0.7-0.1,0.8-0.4l1.2-3.8c0.1-0.3-0.1-0.7-0.4-0.8l-0.1,0
|
103 |
+
C84,99.4,83.7,99.6,83.6,99.9z M81.5,101.1l-1.4,3.8c-0.1,0.3,0,0.7,0.4,0.8l0.1,0c0.3,0.1,0.7,0,0.8-0.4l1.4-3.8
|
104 |
+
c0.1-0.3,0-0.7-0.4-0.8l-0.1,0C81.9,100.6,81.6,100.8,81.5,101.1z M79.3,102.1l-1.6,3.7c-0.1,0.3,0,0.7,0.3,0.8l0.1,0
|
105 |
+
c0.3,0.1,0.7,0,0.8-0.3l1.6-3.7c0.1-0.3,0-0.7-0.3-0.8l-0.1,0C79.8,101.7,79.4,101.8,79.3,102.1z M77.1,103.1l-1.8,3.6
|
106 |
+
c-0.2,0.3,0,0.7,0.3,0.8l0.1,0c0.3,0.2,0.7,0,0.8-0.3l1.8-3.6c0.2-0.3,0-0.7-0.3-0.8l-0.1,0C77.6,102.7,77.2,102.8,77.1,103.1z
|
107 |
+
M74.8,103.9l-2,3.5c-0.2,0.3-0.1,0.7,0.2,0.8l0.1,0c0.3,0.2,0.7,0.1,0.8-0.2l2-3.5c0.2-0.3,0.1-0.7-0.2-0.8l-0.1,0
|
108 |
+
C75.3,103.5,74.9,103.6,74.8,103.9z M72.5,104.6l-2.2,3.4c-0.2,0.3-0.1,0.7,0.2,0.9l0.1,0c0.3,0.2,0.7,0.1,0.9-0.2l2.2-3.4
|
109 |
+
c0.2-0.3,0.1-0.7-0.2-0.9l-0.1,0C73,104.3,72.6,104.4,72.5,104.6z M70.1,105.2l-2.4,3.3c-0.2,0.3-0.1,0.7,0.1,0.9l0.1,0
|
110 |
+
c0.3,0.2,0.7,0.1,0.9-0.1l2.4-3.3c0.2-0.3,0.1-0.7-0.1-0.9l-0.1,0C70.7,104.9,70.3,105,70.1,105.2z M67.7,105.7l-2.5,3.1
|
111 |
+
c-0.2,0.3-0.2,0.7,0.1,0.9l0.1,0c0.3,0.2,0.7,0.2,0.9-0.1l2.5-3.1c0.2-0.3,0.2-0.7-0.1-0.9l-0.1,0
|
112 |
+
C68.3,105.4,67.9,105.4,67.7,105.7z M65.3,106l-2.7,3c-0.2,0.3-0.2,0.6,0,0.9l0,0c0.3,0.2,0.6,0.2,0.9,0l2.7-3
|
113 |
+
c0.2-0.3,0.2-0.6,0-0.9l0,0C65.9,105.8,65.5,105.8,65.3,106z M62.9,106.3l-2.8,2.8c-0.2,0.2-0.2,0.6,0,0.9l0,0
|
114 |
+
c0.2,0.2,0.6,0.2,0.9,0l2.8-2.8c0.2-0.2,0.2-0.6,0-0.9l0,0C63.5,106,63.1,106,62.9,106.3z M60.5,106.3l-3,2.7
|
115 |
+
c-0.3,0.2-0.3,0.6,0,0.9l0,0c0.2,0.3,0.6,0.3,0.9,0l3-2.7c0.3-0.2,0.3-0.6,0-0.9l0,0C61.1,106.1,60.7,106.1,60.5,106.3z
|
116 |
+
M58.1,106.3l-3.1,2.5c-0.3,0.2-0.3,0.6-0.1,0.9l0,0.1c0.2,0.3,0.6,0.3,0.9,0.1l3.1-2.5c0.3-0.2,0.3-0.6,0.1-0.9l0-0.1
|
117 |
+
C58.7,106.1,58.3,106.1,58.1,106.3z M55.6,106.1l-3.3,2.4c-0.3,0.2-0.3,0.6-0.1,0.9l0,0.1c0.2,0.3,0.6,0.3,0.9,0.1l3.3-2.4
|
118 |
+
c0.3-0.2,0.3-0.6,0.1-0.9l0-0.1C56.3,106,55.9,105.9,55.6,106.1z M53.2,105.9l-3.4,2.2c-0.3,0.2-0.4,0.6-0.2,0.9l0,0.1
|
119 |
+
c0.2,0.3,0.6,0.4,0.9,0.2l3.4-2.2c0.3-0.2,0.4-0.6,0.2-0.9l0-0.1C53.9,105.7,53.5,105.7,53.2,105.9z M50.8,105.4l-3.5,2
|
120 |
+
c-0.3,0.2-0.4,0.5-0.2,0.8l0,0.1c0.2,0.3,0.5,0.4,0.8,0.2l3.5-2c0.3-0.2,0.4-0.5,0.2-0.8l0-0.1C51.5,105.4,51.1,105.3,50.8,105.4z
|
121 |
+
M48.5,104.9l-3.6,1.8c-0.3,0.2-0.4,0.5-0.3,0.8l0,0.1c0.2,0.3,0.5,0.4,0.8,0.3l3.6-1.8c0.3-0.2,0.4-0.5,0.3-0.8l0-0.1
|
122 |
+
C49.1,104.9,48.8,104.7,48.5,104.9z M46.1,104.2l-3.7,1.6c-0.3,0.1-0.5,0.5-0.3,0.8l0,0.1c0.1,0.3,0.5,0.5,0.8,0.3l3.7-1.6
|
123 |
+
c0.3-0.1,0.5-0.5,0.3-0.8l0-0.1C46.8,104.2,46.4,104.1,46.1,104.2z M43.8,103.4l-3.8,1.4c-0.3,0.1-0.5,0.5-0.4,0.8l0,0.1
|
124 |
+
c0.1,0.3,0.5,0.5,0.8,0.4l3.8-1.4c0.3-0.1,0.5-0.5,0.4-0.8l0-0.1C44.5,103.5,44.2,103.3,43.8,103.4z M41.6,102.5l-3.8,1.2
|
125 |
+
c-0.3,0.1-0.5,0.5-0.4,0.8l0,0.1c0.1,0.3,0.5,0.5,0.8,0.4l3.8-1.2c0.3-0.1,0.5-0.5,0.4-0.8l0-0.1C42.3,102.6,41.9,102.4,41.6,102.5
|
126 |
+
z M39.4,101.5l-3.9,1c-0.3,0.1-0.5,0.4-0.4,0.8l0,0.1c0.1,0.3,0.4,0.5,0.8,0.4l3.9-1c0.3-0.1,0.5-0.4,0.4-0.8l0-0.1
|
127 |
+
C40.1,101.6,39.7,101.4,39.4,101.5z M37.2,100.4l-3.9,0.8c-0.3,0.1-0.5,0.4-0.5,0.7l0,0.1c0.1,0.3,0.4,0.5,0.7,0.5l3.9-0.8
|
128 |
+
c0.3-0.1,0.5-0.4,0.5-0.7l0-0.1C37.9,100.5,37.6,100.3,37.2,100.4z M35.2,99.1l-4,0.6c-0.3,0.1-0.6,0.4-0.5,0.7l0,0.1
|
129 |
+
c0.1,0.3,0.4,0.6,0.7,0.5l4-0.6c0.3-0.1,0.6-0.4,0.5-0.7l0-0.1C35.8,99.3,35.5,99.1,35.2,99.1z M33.1,97.8l-4,0.4
|
130 |
+
c-0.3,0-0.6,0.3-0.6,0.7l0,0.1c0,0.3,0.3,0.6,0.7,0.6l4-0.4c0.3,0,0.6-0.3,0.6-0.7l0-0.1C33.8,98,33.5,97.7,33.1,97.8z M31.2,96.3
|
131 |
+
l-4,0.2c-0.3,0-0.6,0.3-0.6,0.7l0,0.1c0,0.3,0.3,0.6,0.7,0.6l4-0.2c0.3,0,0.6-0.3,0.6-0.7l0-0.1C31.8,96.6,31.5,96.3,31.2,96.3z
|
132 |
+
M29.3,94.8h-4c-0.3,0-0.6,0.3-0.6,0.6v0.1c0,0.3,0.3,0.6,0.6,0.6h4c0.3,0,0.6-0.3,0.6-0.6v-0.1C30,95,29.7,94.8,29.3,94.8z
|
133 |
+
M27.6,93.1l-4-0.2c-0.3,0-0.6,0.2-0.7,0.6l0,0.1c0,0.3,0.2,0.6,0.6,0.7l4,0.2c0.3,0,0.6-0.2,0.7-0.6l0-0.1
|
134 |
+
C28.2,93.4,27.9,93.1,27.6,93.1z M25.9,91.4l-4-0.4c-0.3,0-0.6,0.2-0.7,0.6l0,0.1c0,0.3,0.2,0.6,0.6,0.7l4,0.4
|
135 |
+
c0.3,0,0.6-0.2,0.7-0.6l0-0.1C26.5,91.7,26.2,91.4,25.9,91.4z M24.3,89.5l-4-0.6c-0.3-0.1-0.7,0.2-0.7,0.5l0,0.1
|
136 |
+
c-0.1,0.3,0.2,0.7,0.5,0.7l4,0.6c0.3,0.1,0.7-0.2,0.7-0.5l0-0.1C24.9,89.9,24.6,89.6,24.3,89.5z M22.8,87.6l-3.9-0.8
|
137 |
+
c-0.3-0.1-0.7,0.1-0.7,0.5l0,0.1c-0.1,0.3,0.1,0.7,0.5,0.7l3.9,0.8c0.3,0.1,0.7-0.1,0.7-0.5l0-0.1C23.3,88,23.1,87.7,22.8,87.6z
|
138 |
+
M21.4,85.6l-3.9-1c-0.3-0.1-0.7,0.1-0.8,0.4l0,0.1c-0.1,0.3,0.1,0.7,0.4,0.8l3.9,1c0.3,0.1,0.7-0.1,0.8-0.4l0-0.1
|
139 |
+
C21.9,86.1,21.7,85.7,21.4,85.6z M20.1,83.6l-3.8-1.2c-0.3-0.1-0.7,0.1-0.8,0.4l0,0.1c-0.1,0.3,0.1,0.7,0.4,0.8l3.8,1.2
|
140 |
+
c0.3,0.1,0.7-0.1,0.8-0.4l0-0.1C20.6,84,20.4,83.7,20.1,83.6z M18.9,81.5L15.2,80c-0.3-0.1-0.7,0-0.8,0.4l0,0.1
|
141 |
+
c-0.1,0.3,0,0.7,0.4,0.8l3.8,1.4c0.3,0.1,0.7,0,0.8-0.4l0-0.1C19.4,81.9,19.2,81.6,18.9,81.5z M17.9,79.3l-3.7-1.6
|
142 |
+
c-0.3-0.1-0.7,0-0.8,0.3l0,0.1c-0.1,0.3,0,0.7,0.3,0.8l3.7,1.6c0.3,0.1,0.7,0,0.8-0.3l0-0.1C18.3,79.8,18.2,79.4,17.9,79.3z
|
143 |
+
M16.9,77.1l-3.6-1.8c-0.3-0.2-0.7,0-0.8,0.3l0,0.1c-0.2,0.3,0,0.7,0.3,0.8l3.6,1.8c0.3,0.2,0.7,0,0.8-0.3l0-0.1
|
144 |
+
C17.3,77.6,17.2,77.2,16.9,77.1z M16.1,74.8l-3.5-2c-0.3-0.2-0.7-0.1-0.8,0.2l0,0.1c-0.2,0.3-0.1,0.7,0.2,0.8l3.5,2
|
145 |
+
c0.3,0.2,0.7,0.1,0.8-0.2l0-0.1C16.5,75.3,16.4,74.9,16.1,74.8z M15.4,72.5L12,70.3c-0.3-0.2-0.7-0.1-0.9,0.2l0,0.1
|
146 |
+
c-0.2,0.3-0.1,0.7,0.2,0.9l3.4,2.2c0.3,0.2,0.7,0.1,0.9-0.2l0-0.1C15.7,73,15.6,72.6,15.4,72.5z M14.8,70.1l-3.3-2.4
|
147 |
+
c-0.3-0.2-0.7-0.1-0.9,0.1l0,0.1c-0.2,0.3-0.1,0.7,0.1,0.9l3.3,2.4c0.3,0.2,0.7,0.1,0.9-0.1l0-0.1C15.1,70.7,15,70.3,14.8,70.1z
|
148 |
+
M14.3,67.7l-3.1-2.5c-0.3-0.2-0.7-0.2-0.9,0.1l0,0.1c-0.2,0.3-0.2,0.7,0.1,0.9l3.1,2.5c0.3,0.2,0.7,0.2,0.9-0.1l0-0.1
|
149 |
+
C14.6,68.3,14.6,67.9,14.3,67.7z M14,65.3l-3-2.7c-0.3-0.2-0.6-0.2-0.9,0l0,0c-0.2,0.3-0.2,0.6,0,0.9l3,2.7c0.3,0.2,0.6,0.2,0.9,0
|
150 |
+
l0,0C14.2,65.9,14.2,65.5,14,65.3z M13.7,62.9l-2.8-2.8c-0.2-0.2-0.6-0.2-0.9,0l0,0c-0.2,0.2-0.2,0.6,0,0.9l2.8,2.8
|
151 |
+
c0.2,0.2,0.6,0.2,0.9,0l0,0C14,63.5,14,63.1,13.7,62.9z M13.7,60.5l-2.7-3c-0.2-0.3-0.6-0.3-0.9,0l0,0c-0.3,0.2-0.3,0.6,0,0.9
|
152 |
+
l2.7,3c0.2,0.3,0.6,0.3,0.9,0l0,0C13.9,61.1,13.9,60.7,13.7,60.5z M13.7,58.1l-2.5-3.1c-0.2-0.3-0.6-0.3-0.9-0.1l-0.1,0
|
153 |
+
c-0.3,0.2-0.3,0.6-0.1,0.9l2.5,3.1c0.2,0.3,0.6,0.3,0.9,0.1l0.1,0C13.9,58.7,13.9,58.3,13.7,58.1z M13.9,55.6l-2.4-3.3
|
154 |
+
c-0.2-0.3-0.6-0.3-0.9-0.1l-0.1,0c-0.3,0.2-0.3,0.6-0.1,0.9l2.4,3.3c0.2,0.3,0.6,0.3,0.9,0.1l0.1,0C14,56.3,14.1,55.9,13.9,55.6z
|
155 |
+
M14.1,53.2L12,49.9c-0.2-0.3-0.6-0.4-0.9-0.2l-0.1,0c-0.3,0.2-0.4,0.6-0.2,0.9l2.2,3.4c0.2,0.3,0.6,0.4,0.9,0.2l0.1,0
|
156 |
+
C14.3,53.9,14.3,53.5,14.1,53.2z M14.6,50.8l-2-3.5c-0.2-0.3-0.5-0.4-0.8-0.2l-0.1,0c-0.3,0.2-0.4,0.5-0.2,0.8l2,3.5
|
157 |
+
c0.2,0.3,0.5,0.4,0.8,0.2l0.1,0C14.6,51.5,14.7,51.1,14.6,50.8z M15.1,48.5l-1.8-3.6c-0.2-0.3-0.5-0.4-0.8-0.3l-0.1,0
|
158 |
+
c-0.3,0.2-0.4,0.5-0.3,0.8l1.8,3.6c0.2,0.3,0.5,0.4,0.8,0.3l0.1,0C15.1,49.1,15.3,48.8,15.1,48.5z M15.8,46.1l-1.6-3.7
|
159 |
+
c-0.1-0.3-0.5-0.5-0.8-0.3l-0.1,0c-0.3,0.1-0.5,0.5-0.3,0.8l1.6,3.7c0.1,0.3,0.5,0.5,0.8,0.3l0.1,0C15.8,46.8,15.9,46.4,15.8,46.1z
|
160 |
+
M16.6,43.8l-1.4-3.8c-0.1-0.3-0.5-0.5-0.8-0.4l-0.1,0c-0.3,0.1-0.5,0.5-0.4,0.8l1.4,3.8c0.1,0.3,0.5,0.5,0.8,0.4l0.1,0
|
161 |
+
C16.5,44.5,16.7,44.2,16.6,43.8z M17.5,41.6l-1.2-3.8c-0.1-0.3-0.5-0.5-0.8-0.4l-0.1,0c-0.3,0.1-0.5,0.5-0.4,0.8l1.2,3.8
|
162 |
+
c0.1,0.3,0.5,0.5,0.8,0.4l0.1,0C17.4,42.3,17.6,41.9,17.5,41.6z M18.5,39.4l-1-3.9c-0.1-0.3-0.4-0.5-0.8-0.4l-0.1,0
|
163 |
+
c-0.3,0.1-0.5,0.4-0.4,0.8l1,3.9c0.1,0.3,0.4,0.5,0.8,0.4l0.1,0C18.4,40.1,18.6,39.7,18.5,39.4z M19.6,37.2l-0.8-3.9
|
164 |
+
c-0.1-0.3-0.4-0.5-0.7-0.5l-0.1,0c-0.3,0.1-0.5,0.4-0.5,0.7l0.8,3.9c0.1,0.3,0.4,0.5,0.7,0.5l0.1,0C19.5,37.9,19.7,37.6,19.6,37.2z
|
165 |
+
M20.9,35.2l-0.6-4c-0.1-0.3-0.4-0.6-0.7-0.5l-0.1,0c-0.3,0.1-0.6,0.4-0.5,0.7l0.6,4c0.1,0.3,0.4,0.6,0.7,0.5l0.1,0
|
166 |
+
C20.7,35.8,20.9,35.5,20.9,35.2z M22.2,33.1l-0.4-4c0-0.3-0.3-0.6-0.7-0.6l-0.1,0c-0.3,0-0.6,0.3-0.6,0.7l0.4,4
|
167 |
+
c0,0.3,0.3,0.6,0.7,0.6l0.1,0C22,33.8,22.3,33.5,22.2,33.1z M23.7,31.2l-0.2-4c0-0.3-0.3-0.6-0.7-0.6l-0.1,0
|
168 |
+
c-0.3,0-0.6,0.3-0.6,0.7l0.2,4c0,0.3,0.3,0.6,0.7,0.6l0.1,0C23.4,31.8,23.7,31.5,23.7,31.2z"/>
|
169 |
+
<circle class="st0" cx="93.6" cy="60" r="4.8"/>
|
170 |
+
<circle class="st0" cx="26.4" cy="60" r="4.8"/>
|
171 |
+
<g>
|
172 |
+
<path class="st3" d="M23.6,47.6l1.2-2.3l6.7,0.5l-4.5-5l1.2-2.3l8.1,4l-1,2L30.5,42l3.9,4.2l-0.8,1.6l-5.8-0.6l4.9,2.4l-1,2
|
173 |
+
L23.6,47.6z"/>
|
174 |
+
<path class="st3" d="M39.4,39.7c-1.8,1.8-4.6,2-6.6,0.1c-1.9-1.9-1.8-4.7,0-6.6c1.8-1.8,4.6-2,6.5,0C41.3,35,41.2,37.9,39.4,39.7z
|
175 |
+
M38,38.3c1-1,0.9-2.4-0.2-3.5c-1.1-1.1-2.5-1.2-3.5-0.1c-1,1-1,2.4,0.2,3.6C35.5,39.3,36.9,39.3,38,38.3z"/>
|
176 |
+
<path class="st3"
|
177 |
+
d="M44.8,24.8l4.4,7.9l-1.9,1.1l-5.9-3l2.7,4.9l-1.9,1.1l-4.4-7.9l1.9-1.1l6,3.1l-2.8-4.9L44.8,24.8z"/>
|
178 |
+
<path class="st3" d="M53.6,24.1L50.3,25l0.5,1.8l2.9-0.7l0.4,1.6l-2.9,0.7l0.5,1.9l3.2-0.8l0.4,1.7l-5.4,1.4l-2.3-8.7l5.4-1.4
|
179 |
+
L53.6,24.1z"/>
|
180 |
+
<path class="st3" d="M55,22l2.5,0l1.8,3.8l1.7-3.8l2.5,0l-3,6.1l0.1,3l-2.2,0l-0.1-3L55,22z"/>
|
181 |
+
<path class="st3" d="M70,32.7l-4-1.3l2.9-8.6l3.9,1.3c1.7,0.6,2.5,1.8,2,3.2c-0.4,1-1.2,1.5-2.1,1.5c0.9,0.5,1.3,1.6,0.9,2.6
|
182 |
+
C73.2,32.8,71.8,33.4,70,32.7z M70.8,29l-1.5-0.5l-0.6,1.9l1.5,0.5c0.7,0.2,1.2,0.1,1.4-0.6C71.9,29.8,71.5,29.3,70.8,29z
|
183 |
+
M71.8,25.7l-1.4-0.5L69.9,27l1.4,0.5c0.7,0.2,1.2,0.1,1.4-0.5C72.8,26.3,72.5,25.9,71.8,25.7z"/>
|
184 |
+
<path class="st3" d="M78.5,35.5l-2.8-1.9l-1.3,1l-1.9-1.3l7.8-5.7l2.1,1.4l-2.3,9.3L78,37.1L78.5,35.5z M79.9,30.4l-2.8,2.1
|
185 |
+
l1.8,1.2L79.9,30.4z"/>
|
186 |
+
<path class="st3" d="M89.2,35.4c1.4,1.6,1.5,3.7,0.3,5.3L88,38.9c0.3-0.8,0.2-1.6-0.3-2.2c-0.9-1-2.2-1.1-3.5-0.1
|
187 |
+
c-1.2,1-1.4,2.4-0.5,3.4c0.5,0.6,1.3,0.9,2.1,0.7l1.6,1.8c-1.8,0.9-3.8,0.4-5.2-1.2c-1.7-2-1.5-4.7,0.6-6.4S87.5,33.4,89.2,35.4z"
|
188 |
+
/>
|
189 |
+
<path class="st3"
|
190 |
+
d="M89.4,44.8l-3.6,1.7l-0.9-2l8.2-3.8l0.9,2l-3.6,1.7l4.9,1.1l1.1,2.4l-5.5-1.3l-2.7,5.2L87,49.2L89.4,44.8z"/>
|
191 |
+
</g>
|
192 |
+
<g>
|
193 |
+
<g>
|
194 |
+
<path class="st1" d="M48.1,48.8H45v-5h8.8V67h-5.7V48.8z"/>
|
195 |
+
<path class="st1"
|
196 |
+
d="M67,62.8H56.3v-4.4l10-14.4h6.1v14H75v4.7h-2.6V67H67V62.8z M67.4,58.1v-8.1L62,58.1H67.4z"/>
|
197 |
+
</g>
|
198 |
+
<g>
|
199 |
+
<path class="st1" d="M54.6,73.8c0,2.1-1.5,3.6-3.8,3.6h-2.7v-7.2h2.7C53.1,70.2,54.6,71.7,54.6,73.8z M50.7,75.9
|
200 |
+
c1.3,0,2.1-0.8,2.1-2.1c0-1.3-0.8-2.1-2.1-2.1h-0.8v4.2H50.7z"/>
|
201 |
+
<path class="st1"
|
202 |
+
d="M59.4,76.2h-2.7l-0.4,1.3h-1.8l2.6-7.2h2l2.6,7.2h-1.9L59.4,76.2z M58,72.1l-0.9,2.6h1.8L58,72.1z"/>
|
203 |
+
<path class="st1" d="M60.4,70.2h2l1.4,3l1.4-3h2L64.6,75v2.4h-1.8V75L60.4,70.2z"/>
|
204 |
+
<path class="st1" d="M70,77.5c-1.6,0-2.8-0.8-2.8-2.2H69c0.1,0.6,0.4,0.8,0.9,0.8c0.5,0,0.8-0.3,0.8-0.7c0-1.3-3.6-0.6-3.6-3.2
|
205 |
+
c0-1.4,1.1-2.1,2.6-2.1c1.6,0,2.6,0.8,2.7,2.2h-1.9c0-0.5-0.4-0.7-0.8-0.8c-0.4,0-0.7,0.2-0.7,0.7c0,1.3,3.6,0.7,3.6,3.1
|
206 |
+
C72.6,76.5,71.6,77.5,70,77.5z"/>
|
207 |
+
</g>
|
208 |
+
</g>
|
209 |
+
<g>
|
210 |
+
<path class="st3" d="M35.7,82l-1.4-2c0.3-0.6,0.2-1.3-0.2-2c-0.8-1.2-2.2-1.4-3.5-0.5c-1.4,1-1.6,2.3-0.7,3.6
|
211 |
+
c0.6,0.9,1.5,1.2,2.6,0.9l-1.6-2.3l1.3-0.9l2.7,3.9l-1.7,1.2c-1.5,0.5-3.7,0.2-5-1.8c-1.5-2.2-1.1-4.9,1.2-6.4
|
212 |
+
c2.2-1.5,4.9-1.1,6.4,1.2C37,78.7,37,80.6,35.7,82z"/>
|
213 |
+
<path class="st3" d="M38.4,80.7l1.7,1.4l-3.4,4.2c-0.7,0.8-0.7,1.6,0.2,2.3c0.8,0.7,1.6,0.5,2.3-0.3l3.4-4.2l1.7,1.4l-3.4,4.2
|
214 |
+
c-1.6,1.9-3.7,1.8-5.3,0.5c-1.6-1.3-2.1-3.3-0.5-5.3L38.4,80.7z"/>
|
215 |
+
<path class="st3" d="M45.8,94.3l-3.1-1.4l-1.2,1.2l-2.1-1l6.8-6.8l2.3,1.1L47.7,97l-2.1-1L45.8,94.3z M46.4,89L44,91.6l2,0.9
|
216 |
+
L46.4,89z"/>
|
217 |
+
<path class="st3" d="M54.7,89.2c2.2,0.4,3,1.9,2.7,3.4c-0.2,1.1-1,2-2.5,2.2l1.4,3.9l-2.4-0.5l-1.2-3.7l-0.5-0.1l-0.6,3.4
|
218 |
+
l-2.2-0.4l1.7-8.9L54.7,89.2z M54.2,90.9l-1.3-0.3l-0.4,2.2l1.3,0.3c0.8,0.2,1.3-0.2,1.4-0.9C55.3,91.6,55,91.1,54.2,90.9z"/>
|
219 |
+
<path class="st3" d="M63.8,96.9l-3.4,0.2l-0.5,1.6l-2.3,0.1l2.8-9.2l2.5-0.1l3.8,8.8l-2.3,0.1L63.8,96.9z M61.8,92l-0.9,3.4
|
220 |
+
l2.2-0.1L61.8,92z"/>
|
221 |
+
<path class="st3"
|
222 |
+
d="M73.5,86.7l2.9,8.6L74.3,96L69,91.9l1.8,5.3l-2.1,0.7l-2.9-8.6l2.1-0.7l5.3,4.1l-1.8-5.3L73.5,86.7z"/>
|
223 |
+
<path class="st3" d="M73.9,86.4l5.8-4l1,1.5l-2,1.4l4.1,6L81,92.5l-4.1-6l-2,1.4L73.9,86.4z"/>
|
224 |
+
<path class="st3" d="M84.9,79.3l-2.3,2.4L84,83l2-2.2l1.2,1.2l-2,2.2l1.5,1.4l2.3-2.4l1.3,1.2l-3.8,4.1l-6.6-6.2l3.8-4.1
|
225 |
+
L84.9,79.3z"/>
|
226 |
+
<path class="st3" d="M88.4,73.7l-1.7,2.9l1.6,0.9l1.5-2.5l1.5,0.9l-1.5,2.5l1.7,1l1.7-2.9l1.5,0.9l-2.8,4.8l-7.8-4.6l2.8-4.8
|
227 |
+
L88.4,73.7z"/>
|
228 |
+
</g>
|
229 |
+
<g>
|
230 |
+
<rect x="94.5" y="57.6" class="st2" width="1.3" height="4.8"/>
|
231 |
+
<polygon class="st2" points="91.9,57.6 91,57.6 91,58.9 91.9,58.9 91.9,62.4 93.2,62.4 93.2,58.9 94.1,58.9 94.1,57.6 93.2,57.6
|
232 |
+
"/>
|
233 |
+
</g>
|
234 |
+
<path class="st3" d="M26.3,58.4c0.1,0.1,0.2,0.1,0.3,0c0.3-0.3,0.8-0.7,1.5-0.6c1,0.1,1.3,0.9,1.3,1.4c0,0.5-0.2,1-0.8,1.6
|
235 |
+
c-0.5,0.5-1.7,1.6-2.1,1.9c-0.1,0.1-0.2,0.1-0.2,0c-0.4-0.4-1.6-1.5-2.1-1.9c-0.6-0.5-0.8-1-0.8-1.6c0-0.5,0.3-1.3,1.3-1.4
|
236 |
+
C25.5,57.8,26,58.2,26.3,58.4z"/>
|
237 |
+
</g>
|
238 |
+
</svg>
|
assets/js/admin.min.js
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
/**
|
2 |
* TI WooCommerce Wishlist Plugin - Allow your store guests and customers to add products to Wishlist. Add Wishlist functionality to your store for free.
|
3 |
-
* @version 1.
|
4 |
* @link https://wordpress.org/plugins/ti-woocommerce-wishlist/
|
5 |
*/
|
6 |
"use strict";function TInvWL($,h){this.pf="tinvwl",this.g="_",this.ho=h||!1,this.n="TInvWL",this.aj_act=function(t){return[this.pf,t].join(this.g)},this._csel=function(t,n){return"{0}{1}{2}".format(n=n||".",this.pf,t)},this._tm=function(t){var n=$("script#{0}[type='text/template']".format(t));return n.length?n.html():""},this.formElm=function(){if($(this._csel("-form-onoff")).tiwl_onoff(),$("input[type=checkbox][tiwl-show], input[type=checkbox][tiwl-hide]").tiwl_onoffblock(),$("[tiwl-value][tiwl-show], [tiwl-value][tiwl-hide]").tiwl_byvalueblock(),void 0!==$.fn.wpColorPicker){var e=function(t){var n=t.substring(1),i=parseInt(n,16);return.2126*(i>>16&255)+.7152*(i>>8&255)+.0722*(i>>0&255)},n=this._csel("-form-color");$(n).each(function(){var n=$(this),t=$(this).closest(".tinvwl-color-picker"),i=t.find(".tinvwl-eyedropper");n.css("background-color",n.val()),175<e(n.val())&&n.css("color","#000000"),n.iris({mode:"hsv",target:$(this).parent().parent(),change:function(t,n){175<e(n.color.toCSS())?$(this).css("color","#000000"):$(this).css("color",""),$(this).css("background-color",n.color.toCSS())}}),t.on("click",".iris-square-value",function(t){t.preventDefault(),n.iris("toggle")}),i.on("click",function(t){t.preventDefault(),n.iris("show")}),n.on("focusin",function(){n.iris("show")})}),$(document).on("click",function(t){$(t.target).is(n+", .iris-picker, .iris-picker-inner, .iris-slider-offset, .tinvwl-eyedropper, .tinvwl-eyedropper .ftinvwl-eyedropper")?$(n).not($(t.target).closest(".tinvwl-color-picker").find(n)).iris("hide"):$(n).iris("hide")})}},this.wizard_page=function(t){$(t).find("select").change(this._wizard_page_ch),this.wizard_page_ch($(t).find("select"))},this.wizard_page_ch=function(t){var n=(t=$(t)).parent(this._csel("-page-select")),i=n.find("input[type=hidden]").val(),e=n.find(this._csel("-error-icon")),o=n.find(this._csel("-error-desc"));""!==t.val()?(n.removeClass("tinvwl-error"),e.hide(),o.hide()):0==i&&(n.addClass("tinvwl-error"),e.show(),o.show())},this.pageElm=function(){$(this._csel("-header","div.")).prependTo("#wpbody-content"),$(this._csel("-page-select")).each(this._wizard_page),$(".bulkactions [type=submit]").each(this._control_bulkactions),$(".action-search [type=submit]").each(this._control_search)},this.control_bulkactions=function(t){$(t).on("click",this._control_bulkactions_ck)},this.control_bulkactions_ck=function(t,n){var i=(t=$(t)).parents(".bulkactions").eq(0).find("[name=action]"),e=t.parents("form").eq(0);i&&("-1"!==i.val()&&e.find("input[type=checkbox]:checked").length||n.preventDefault())},this.control_search=function(t){$(t).on("click",this._control_search_ck)},this.control_search_ck=function(t,n){var i=(t=$(t)).parents(".action-search").eq(0).find("[name=s]");i&&""===i.val()&&n.preventDefault()},this.Run=function(){this.formElm(),this.pageElm()},this.cg=function(){var t=this.n;if(this.ho){var n=new Date;t=t+n.getFullYear()+n.getMonth()+n.getDate()}window[t]=this},this.cg(),String.prototype.format||(String.prototype.format=function(){var i=arguments;return this.replace(/{(\d+)}/g,function(t,n){return void 0!==i[n]?i[n]:t})}),function(o){var n=o.n,ho=o.ho,c="";for(var i in ho&&(c="t=new Date(),n=n+t.getFullYear()+t.getMonth()+t.getDate(),"),o)"function"!=typeof o[i]||"_"===i[0]||o.hasOwnProperty("_"+i)||eval("o._"+i+"=function(a,b,c,d){var n='"+n+"',"+c+"o=window[n]||null;if (o) {return o."+i+"(this,a,b,c,d);};};")}(this)}!function(s){s.fn.tiwl_onoff=function(t){var o=s.extend(!0,{},{value:{on:"",off:""},class:"tiwlform-onoff",wrap:"container",button:"button"},t);return s(this).each(function(){var n=s(this),t=s("<div>").attr({class:o.class+"-"+o.button}),i=o.class+"-"+o.wrap,e=s("<div>").attr({id:n.attr("id")+"_"+o.wrap,class:i});return n.is("input")&&(e.attr("class",e.attr("class")+" "+n.attr("class")),n.is(":disabled")&&(e.toggleClass("disabled",n.is(":disabled")),n.prop("disabled",!1)),e.toggleClass("checked",n.is(":checked")),n.hide().removeAttr("class").wrap(e).before(t),e=n.parent(),n.on("change",function(t){if(e.hasClass("disabled"))return t.preventDefault();e.toggleClass("checked",s(this).is(":checked"))}),e.on("click",function(t){if(e.hasClass("disabled"))return t.preventDefault();n.is(":enabled")&&e.hasClass("checked")===n.is(":checked")&&n.click()})),n})},s.fn.tiwl_onoffblock=function(t){var n={onEachElm:function(){},isChecked:function(){return s(this).is(":checked")}},c=s.extend(!0,{},n,t);return s(this).each(function(){function t(){function t(t,i){t=t.match(/[\w\d-\>\.\#\:\=\[\]]+/gim)||[],s.each(t,function(t,n){c.onEachElm.call(s(n).toggle(i))})}var n=s(this),i=n.attr("tiwl-show"),e=n.attr("tiwl-hide"),o=c.isChecked.call(n);return"string"==typeof i&&t(i,o),"string"==typeof e&&t(e,!o),n}var n=s(this);return n.is("input")&&"checkbox"==n.attr("type")?(s(this).on("change",t),t.call(n)):n})},s.fn.tiwl_byvalueblock=function(t){var n={onEachElm:function(){},onClick:function(){return s(this).val()==s(this).attr("tiwl-value")}},i=s.extend(!0,{},n,t);return s(this).each(function(){function t(e){function t(t,i){t=t.match(/[\w\d-\>\.\#\:\=\[\]]+/gim)||[],s.each(t,function(t,n){e.onEachElm.call(s(n).toggle(i))})}var n=s(this),i=n.attr("tiwl-show"),o=n.attr("tiwl-hide"),c=e.onClick.call(n);return"string"==typeof i&&t(i,c),"string"==typeof o&&t(o,!c),n}var n=s(this);return n.is("input")||n.is("select")?(s(this).on("change",function(){t.call(this,i)}),t.call(n,i)):n})};var n=new TInvWL(s);s(document).ready(function(){if(n.Run(),jQuery('input[name="general-show_notice"]').change(function(){var t=!jQuery(this).is(":checked"),n=jQuery('input[name="general-redirect_require_login"]');t&&!n.is(":checked")&&n.click().trigger("change"),n.closest(".tiwlform-onoff-container").toggleClass("disabled",t)}).change(),s(".tablenav").each(function(){var t=s(this);s.trim(t.find(".alignleft").html()).length||t.find(".alignleft").remove(),s.trim(t.find(".alignright").html()).length&&!t.find(".tablenav-pages").hasClass("one-page")||(t.find(".alignright").remove(),t.find(".tinv-wishlist-clear").remove()),s.trim(t.html()).length||t.remove()}),s(".tablenav .bulkactions select").addClass("tinvwl-select grey").wrap('<span class="tinvwl-select-wrap">').parent().append('<span class="tinvwl-caret"><span></span></span>'),s(".tablenav .bulkactions .button.action, .tablenav #search-submit").removeClass("button").addClass("tinvwl-btn grey"),s(".tinvwl-modal-btn").on("click",function(){s(this).next(".tinvwl-modal").addClass("tinvwl-modal-open")}),s(".tinvwl-overlay, .tinvwl-close-modal, .tinvwl_button_close").on("click",function(t){t.preventDefault(),s(this).parents(".tinvwl-modal:first").removeClass("tinvwl-modal-open")}),void 0!==s.fn.popover){var t=s(".tinvwl-help");t.popover({content:function(){return s(this).closest(".tinvwl-info-wrap").find(".tinvwl-info-desc").html()}}),t.on("click",function(){s(this).popover("toggle")}),t.on("focusout",function(){s(this).popover("hide")}),s(window).on("resize",function(){t.popover("hide")})}s("body").on("click",".tinvwl-confirm-reset",function(t){t.preventDefault(),confirm(tinvwl_comfirm.text_comfirm_reset)&&s(this).removeClass("tinvwl-confirm-reset").trigger("click")})})}(jQuery);
|
1 |
/**
|
2 |
* TI WooCommerce Wishlist Plugin - Allow your store guests and customers to add products to Wishlist. Add Wishlist functionality to your store for free.
|
3 |
+
* @version 1.22.0
|
4 |
* @link https://wordpress.org/plugins/ti-woocommerce-wishlist/
|
5 |
*/
|
6 |
"use strict";function TInvWL($,h){this.pf="tinvwl",this.g="_",this.ho=h||!1,this.n="TInvWL",this.aj_act=function(t){return[this.pf,t].join(this.g)},this._csel=function(t,n){return"{0}{1}{2}".format(n=n||".",this.pf,t)},this._tm=function(t){var n=$("script#{0}[type='text/template']".format(t));return n.length?n.html():""},this.formElm=function(){if($(this._csel("-form-onoff")).tiwl_onoff(),$("input[type=checkbox][tiwl-show], input[type=checkbox][tiwl-hide]").tiwl_onoffblock(),$("[tiwl-value][tiwl-show], [tiwl-value][tiwl-hide]").tiwl_byvalueblock(),void 0!==$.fn.wpColorPicker){var e=function(t){var n=t.substring(1),i=parseInt(n,16);return.2126*(i>>16&255)+.7152*(i>>8&255)+.0722*(i>>0&255)},n=this._csel("-form-color");$(n).each(function(){var n=$(this),t=$(this).closest(".tinvwl-color-picker"),i=t.find(".tinvwl-eyedropper");n.css("background-color",n.val()),175<e(n.val())&&n.css("color","#000000"),n.iris({mode:"hsv",target:$(this).parent().parent(),change:function(t,n){175<e(n.color.toCSS())?$(this).css("color","#000000"):$(this).css("color",""),$(this).css("background-color",n.color.toCSS())}}),t.on("click",".iris-square-value",function(t){t.preventDefault(),n.iris("toggle")}),i.on("click",function(t){t.preventDefault(),n.iris("show")}),n.on("focusin",function(){n.iris("show")})}),$(document).on("click",function(t){$(t.target).is(n+", .iris-picker, .iris-picker-inner, .iris-slider-offset, .tinvwl-eyedropper, .tinvwl-eyedropper .ftinvwl-eyedropper")?$(n).not($(t.target).closest(".tinvwl-color-picker").find(n)).iris("hide"):$(n).iris("hide")})}},this.wizard_page=function(t){$(t).find("select").change(this._wizard_page_ch),this.wizard_page_ch($(t).find("select"))},this.wizard_page_ch=function(t){var n=(t=$(t)).parent(this._csel("-page-select")),i=n.find("input[type=hidden]").val(),e=n.find(this._csel("-error-icon")),o=n.find(this._csel("-error-desc"));""!==t.val()?(n.removeClass("tinvwl-error"),e.hide(),o.hide()):0==i&&(n.addClass("tinvwl-error"),e.show(),o.show())},this.pageElm=function(){$(this._csel("-header","div.")).prependTo("#wpbody-content"),$(this._csel("-page-select")).each(this._wizard_page),$(".bulkactions [type=submit]").each(this._control_bulkactions),$(".action-search [type=submit]").each(this._control_search)},this.control_bulkactions=function(t){$(t).on("click",this._control_bulkactions_ck)},this.control_bulkactions_ck=function(t,n){var i=(t=$(t)).parents(".bulkactions").eq(0).find("[name=action]"),e=t.parents("form").eq(0);i&&("-1"!==i.val()&&e.find("input[type=checkbox]:checked").length||n.preventDefault())},this.control_search=function(t){$(t).on("click",this._control_search_ck)},this.control_search_ck=function(t,n){var i=(t=$(t)).parents(".action-search").eq(0).find("[name=s]");i&&""===i.val()&&n.preventDefault()},this.Run=function(){this.formElm(),this.pageElm()},this.cg=function(){var t=this.n;if(this.ho){var n=new Date;t=t+n.getFullYear()+n.getMonth()+n.getDate()}window[t]=this},this.cg(),String.prototype.format||(String.prototype.format=function(){var i=arguments;return this.replace(/{(\d+)}/g,function(t,n){return void 0!==i[n]?i[n]:t})}),function(o){var n=o.n,ho=o.ho,c="";for(var i in ho&&(c="t=new Date(),n=n+t.getFullYear()+t.getMonth()+t.getDate(),"),o)"function"!=typeof o[i]||"_"===i[0]||o.hasOwnProperty("_"+i)||eval("o._"+i+"=function(a,b,c,d){var n='"+n+"',"+c+"o=window[n]||null;if (o) {return o."+i+"(this,a,b,c,d);};};")}(this)}!function(s){s.fn.tiwl_onoff=function(t){var o=s.extend(!0,{},{value:{on:"",off:""},class:"tiwlform-onoff",wrap:"container",button:"button"},t);return s(this).each(function(){var n=s(this),t=s("<div>").attr({class:o.class+"-"+o.button}),i=o.class+"-"+o.wrap,e=s("<div>").attr({id:n.attr("id")+"_"+o.wrap,class:i});return n.is("input")&&(e.attr("class",e.attr("class")+" "+n.attr("class")),n.is(":disabled")&&(e.toggleClass("disabled",n.is(":disabled")),n.prop("disabled",!1)),e.toggleClass("checked",n.is(":checked")),n.hide().removeAttr("class").wrap(e).before(t),e=n.parent(),n.on("change",function(t){if(e.hasClass("disabled"))return t.preventDefault();e.toggleClass("checked",s(this).is(":checked"))}),e.on("click",function(t){if(e.hasClass("disabled"))return t.preventDefault();n.is(":enabled")&&e.hasClass("checked")===n.is(":checked")&&n.click()})),n})},s.fn.tiwl_onoffblock=function(t){var n={onEachElm:function(){},isChecked:function(){return s(this).is(":checked")}},c=s.extend(!0,{},n,t);return s(this).each(function(){function t(){function t(t,i){t=t.match(/[\w\d-\>\.\#\:\=\[\]]+/gim)||[],s.each(t,function(t,n){c.onEachElm.call(s(n).toggle(i))})}var n=s(this),i=n.attr("tiwl-show"),e=n.attr("tiwl-hide"),o=c.isChecked.call(n);return"string"==typeof i&&t(i,o),"string"==typeof e&&t(e,!o),n}var n=s(this);return n.is("input")&&"checkbox"==n.attr("type")?(s(this).on("change",t),t.call(n)):n})},s.fn.tiwl_byvalueblock=function(t){var n={onEachElm:function(){},onClick:function(){return s(this).val()==s(this).attr("tiwl-value")}},i=s.extend(!0,{},n,t);return s(this).each(function(){function t(e){function t(t,i){t=t.match(/[\w\d-\>\.\#\:\=\[\]]+/gim)||[],s.each(t,function(t,n){e.onEachElm.call(s(n).toggle(i))})}var n=s(this),i=n.attr("tiwl-show"),o=n.attr("tiwl-hide"),c=e.onClick.call(n);return"string"==typeof i&&t(i,c),"string"==typeof o&&t(o,!c),n}var n=s(this);return n.is("input")||n.is("select")?(s(this).on("change",function(){t.call(this,i)}),t.call(n,i)):n})};var n=new TInvWL(s);s(document).ready(function(){if(n.Run(),jQuery('input[name="general-show_notice"]').change(function(){var t=!jQuery(this).is(":checked"),n=jQuery('input[name="general-redirect_require_login"]');t&&!n.is(":checked")&&n.click().trigger("change"),n.closest(".tiwlform-onoff-container").toggleClass("disabled",t)}).change(),s(".tablenav").each(function(){var t=s(this);s.trim(t.find(".alignleft").html()).length||t.find(".alignleft").remove(),s.trim(t.find(".alignright").html()).length&&!t.find(".tablenav-pages").hasClass("one-page")||(t.find(".alignright").remove(),t.find(".tinv-wishlist-clear").remove()),s.trim(t.html()).length||t.remove()}),s(".tablenav .bulkactions select").addClass("tinvwl-select grey").wrap('<span class="tinvwl-select-wrap">').parent().append('<span class="tinvwl-caret"><span></span></span>'),s(".tablenav .bulkactions .button.action, .tablenav #search-submit").removeClass("button").addClass("tinvwl-btn grey"),s(".tinvwl-modal-btn").on("click",function(){s(this).next(".tinvwl-modal").addClass("tinvwl-modal-open")}),s(".tinvwl-overlay, .tinvwl-close-modal, .tinvwl_button_close").on("click",function(t){t.preventDefault(),s(this).parents(".tinvwl-modal:first").removeClass("tinvwl-modal-open")}),void 0!==s.fn.popover){var t=s(".tinvwl-help");t.popover({content:function(){return s(this).closest(".tinvwl-info-wrap").find(".tinvwl-info-desc").html()}}),t.on("click",function(){s(this).popover("toggle")}),t.on("focusout",function(){s(this).popover("hide")}),s(window).on("resize",function(){t.popover("hide")})}s("body").on("click",".tinvwl-confirm-reset",function(t){t.preventDefault(),confirm(tinvwl_comfirm.text_comfirm_reset)&&s(this).removeClass("tinvwl-confirm-reset").trigger("click")})})}(jQuery);
|
assets/js/bootstrap.js
CHANGED
@@ -5,15 +5,15 @@
|
|
5 |
*/
|
6 |
|
7 |
if (typeof jQuery === 'undefined') {
|
8 |
-
|
9 |
}
|
10 |
|
11 |
+function ($) {
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
}(jQuery);
|
18 |
|
19 |
/* ========================================================================
|
@@ -26,53 +26,57 @@ if (typeof jQuery === 'undefined') {
|
|
26 |
|
27 |
|
28 |
+function ($) {
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
|
|
|
|
|
|
|
|
76 |
|
77 |
}(jQuery);
|
78 |
|
@@ -86,88 +90,88 @@ if (typeof jQuery === 'undefined') {
|
|
86 |
|
87 |
|
88 |
+function ($) {
|
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 |
-
|
160 |
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
|
166 |
|
167 |
-
|
168 |
-
|
169 |
|
170 |
-
|
171 |
|
172 |
}(jQuery);
|
173 |
|
@@ -181,119 +185,119 @@ if (typeof jQuery === 'undefined') {
|
|
181 |
|
182 |
|
183 |
+function ($) {
|
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 |
}(jQuery);
|
299 |
|
@@ -307,231 +311,238 @@ if (typeof jQuery === 'undefined') {
|
|
307 |
|
308 |
|
309 |
+function ($) {
|
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 |
-
|
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 |
-
|
437 |
-
|
438 |
-
|
439 |
-
|
440 |
-
|
441 |
-
|
442 |
-
|
443 |
-
|
444 |
-
|
445 |
-
|
446 |
-
|
447 |
-
|
448 |
-
|
449 |
-
|
450 |
-
|
451 |
-
|
452 |
-
|
453 |
-
|
454 |
-
|
455 |
-
|
456 |
-
|
457 |
-
|
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 |
-
|
491 |
-
|
492 |
-
|
493 |
-
|
494 |
-
|
495 |
-
|
496 |
-
|
497 |
-
|
498 |
-
|
499 |
-
|
500 |
-
|
501 |
-
|
502 |
-
|
503 |
-
|
504 |
-
|
505 |
-
|
506 |
-
|
507 |
-
|
508 |
-
|
509 |
-
|
510 |
-
|
511 |
-
|
512 |
-
|
513 |
-
|
514 |
-
|
515 |
-
|
516 |
-
|
517 |
-
|
518 |
-
|
519 |
-
|
520 |
-
|
521 |
-
|
522 |
-
|
523 |
-
|
524 |
-
|
525 |
-
|
526 |
-
|
527 |
-
|
528 |
-
|
529 |
-
|
530 |
-
|
531 |
-
|
532 |
-
|
533 |
-
|
534 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
535 |
|
536 |
}(jQuery);
|
537 |
|
@@ -546,205 +557,205 @@ if (typeof jQuery === 'undefined') {
|
|
546 |
/* jshint latedef: false */
|
547 |
|
548 |
+function ($) {
|
549 |
-
|
550 |
|
551 |
-
|
552 |
-
|
553 |
|
554 |
-
|
555 |
-
|
556 |
-
|
557 |
-
|
558 |
-
|
559 |
-
|
560 |
|
561 |
-
|
562 |
-
|
563 |
-
|
564 |
-
|
565 |
-
|
566 |
|
567 |
-
|
568 |
-
|
569 |
|
570 |
-
|
571 |
|
572 |
-
|
573 |
|
574 |
-
|
575 |
-
|
576 |
-
|
577 |
|
578 |
-
|
579 |
-
|
580 |
-
|
581 |
-
|
582 |
|
583 |
-
|
584 |
-
|
585 |
|
586 |
-
|
587 |
-
|
588 |
|
589 |
-
|
590 |
-
|
591 |
-
|
592 |
-
|
593 |
-
|
594 |
-
|
595 |
-
|
596 |
-
|
597 |
-
|
598 |
-
|
599 |
-
|
600 |
-
|
601 |
-
|
602 |
|
603 |
-
|
604 |
|
605 |
-
|
606 |
-
|
607 |
-
|
608 |
-
|
609 |
|
610 |
-
|
611 |
-
|
612 |
-
|
613 |
|
614 |
-
|
615 |
|
616 |
-
|
617 |
-
|
618 |
-
|
619 |
-
|
620 |
-
|
621 |
-
|
622 |
-
|
623 |
-
|
624 |
|
625 |
-
|
626 |
|
627 |
-
|
628 |
|
629 |
-
|
630 |
-
|
631 |
-
|
632 |
-
|
633 |
|
634 |
-
|
635 |
-
|
636 |
|
637 |
-
|
638 |
-
|
639 |
-
|
640 |
|
641 |
-
|
642 |
|
643 |
-
|
644 |
|
645 |
-
|
646 |
-
|
647 |
-
|
648 |
-
|
649 |
|
650 |
-
|
651 |
-
|
652 |
-
|
653 |
|
654 |
-
|
655 |
|
656 |
-
|
657 |
-
|
658 |
-
|
659 |
-
|
660 |
-
|
661 |
-
|
662 |
-
|
663 |
|
664 |
-
|
665 |
|
666 |
-
|
667 |
-
|
668 |
-
|
669 |
-
|
670 |
-
|
671 |
|
672 |
-
|
673 |
-
|
674 |
-
|
675 |
|
676 |
-
|
677 |
-
|
678 |
-
|
679 |
-
|
680 |
-
|
681 |
-
|
682 |
-
|
683 |
-
|
684 |
-
|
685 |
|
686 |
-
|
687 |
-
|
688 |
|
689 |
-
|
690 |
-
|
691 |
-
|
692 |
-
|
693 |
-
|
694 |
|
695 |
-
|
696 |
-
|
697 |
-
|
698 |
-
|
699 |
|
700 |
-
|
701 |
-
|
702 |
|
703 |
|
704 |
-
|
705 |
-
|
706 |
|
707 |
-
|
708 |
-
|
709 |
-
|
710 |
-
|
711 |
-
|
712 |
|
713 |
-
|
714 |
-
|
715 |
-
|
716 |
-
|
717 |
-
|
718 |
|
719 |
-
|
720 |
|
721 |
-
|
722 |
-
|
723 |
|
724 |
|
725 |
-
|
726 |
-
|
727 |
|
728 |
-
|
729 |
-
|
730 |
-
|
731 |
-
|
732 |
|
733 |
|
734 |
-
|
735 |
-
|
736 |
|
737 |
-
|
738 |
-
|
739 |
|
740 |
-
|
741 |
|
742 |
-
|
743 |
-
|
744 |
-
|
745 |
|
746 |
-
|
747 |
-
|
748 |
|
749 |
}(jQuery);
|
750 |
|
@@ -758,159 +769,161 @@ if (typeof jQuery === 'undefined') {
|
|
758 |
|
759 |
|
760 |
+function ($) {
|
761 |
-
|
762 |
|
763 |
-
|
764 |
-
|
765 |
|
766 |
-
|
767 |
-
|
768 |
-
|
769 |
-
|
770 |
-
|
771 |
|
772 |
-
|
773 |
|
774 |
-
|
775 |
-
|
776 |
|
777 |
-
|
778 |
-
|
779 |
-
|
780 |
-
|
781 |
|
782 |
-
|
783 |
|
784 |
-
|
785 |
-
|
786 |
|
787 |
-
|
788 |
-
|
789 |
-
|
790 |
-
|
791 |
-
|
792 |
-
|
793 |
-
|
794 |
|
795 |
-
|
796 |
|
797 |
-
|
798 |
|
799 |
-
|
800 |
|
801 |
-
|
802 |
|
803 |
-
|
804 |
-
|
805 |
-
|
806 |
-
|
807 |
|
808 |
-
|
809 |
-
|
810 |
|
811 |
-
|
812 |
|
813 |
-
|
814 |
-
|
815 |
|
816 |
-
|
817 |
|
818 |
-
|
819 |
-
|
820 |
-
|
821 |
-
|
822 |
-
|
823 |
-
|
824 |
-
|
825 |
-
|
826 |
|
827 |
-
|
828 |
-
|
829 |
|
830 |
-
|
831 |
|
832 |
-
|
833 |
-
|
834 |
-
|
835 |
|
836 |
-
|
837 |
-
|
838 |
-
|
839 |
-
|
840 |
|
841 |
-
|
842 |
-
|
843 |
|
844 |
-
|
845 |
-
|
846 |
|
847 |
-
|
848 |
|
849 |
-
|
850 |
-
|
851 |
|
852 |
-
|
853 |
|
854 |
-
|
855 |
-
|
856 |
|
857 |
-
|
858 |
-
|
859 |
-
|
860 |
-
|
861 |
|
862 |
-
|
863 |
-
|
864 |
|
865 |
-
|
866 |
|
867 |
-
|
868 |
|
869 |
-
|
870 |
-
|
871 |
-
|
872 |
|
873 |
-
|
874 |
-
|
875 |
|
876 |
|
877 |
-
|
878 |
-
|
879 |
|
880 |
-
|
881 |
-
|
882 |
-
|
883 |
-
|
884 |
|
885 |
-
|
886 |
-
|
887 |
-
|
888 |
-
|
889 |
|
890 |
-
|
891 |
|
892 |
-
|
893 |
-
|
894 |
|
895 |
|
896 |
-
|
897 |
-
|
898 |
|
899 |
-
|
900 |
-
|
901 |
-
|
902 |
-
|
903 |
|
904 |
|
905 |
-
|
906 |
-
|
907 |
|
908 |
-
|
909 |
-
|
910 |
-
|
911 |
-
|
912 |
-
|
913 |
-
|
|
|
|
|
914 |
|
915 |
}(jQuery);
|
916 |
|
@@ -924,333 +937,333 @@ if (typeof jQuery === 'undefined') {
|
|
924 |
|
925 |
|
926 |
+function ($) {
|
927 |
-
|
928 |
|
929 |
-
|
930 |
-
|
931 |
|
932 |
-
|
933 |
-
|
934 |
-
|
935 |
-
|
936 |
-
|
937 |
-
|
938 |
-
|
939 |
-
|
940 |
-
|
941 |
-
|
942 |
|
943 |
-
|
944 |
-
|
945 |
-
|
946 |
-
|
947 |
-
|
948 |
-
|
949 |
-
|
950 |
-
|
951 |
|
952 |
-
|
953 |
|
954 |
-
|
955 |
-
|
956 |
|
957 |
-
|
958 |
-
|
959 |
-
|
960 |
-
|
961 |
-
|
962 |
|
963 |
-
|
964 |
-
|
965 |
-
|
966 |
|
967 |
-
|
968 |
-
|
969 |
-
|
970 |
|
971 |
-
|
972 |
|
973 |
-
|
974 |
-
|
975 |
-
|
976 |
|
977 |
-
|
978 |
-
|
979 |
-
|
980 |
-
|
981 |
-
|
982 |
-
|
983 |
-
|
984 |
-
|
985 |
-
|
986 |
-
|
987 |
-
|
988 |
-
|
989 |
-
|
990 |
-
|
991 |
-
|
992 |
-
|
993 |
-
|
994 |
-
|
995 |
-
|
996 |
-
|
997 |
-
|
998 |
-
|
999 |
-
|
1000 |
-
|
1001 |
-
|
1002 |
-
|
1003 |
-
|
1004 |
-
|
1005 |
-
|
1006 |
-
|
1007 |
-
|
1008 |
-
|
1009 |
-
|
1010 |
-
|
1011 |
-
|
1012 |
-
|
1013 |
-
|
1014 |
-
|
1015 |
-
|
1016 |
-
|
1017 |
-
|
1018 |
-
|
1019 |
-
|
1020 |
-
|
1021 |
-
|
1022 |
-
|
1023 |
-
|
1024 |
-
|
1025 |
-
|
1026 |
-
|
1027 |
-
|
1028 |
-
|
1029 |
-
|
1030 |
-
|
1031 |
-
|
1032 |
-
|
1033 |
-
|
1034 |
-
|
1035 |
-
|
1036 |
-
|
1037 |
-
|
1038 |
-
|
1039 |
-
|
1040 |
-
|
1041 |
-
|
1042 |
-
|
1043 |
-
|
1044 |
-
|
1045 |
-
|
1046 |
-
|
1047 |
-
|
1048 |
-
|
1049 |
-
|
1050 |
-
|
1051 |
-
|
1052 |
-
|
1053 |
-
|
1054 |
-
|
1055 |
-
|
1056 |
-
|
1057 |
-
|
1058 |
-
|
1059 |
-
|
1060 |
-
|
1061 |
-
|
1062 |
-
|
1063 |
-
|
1064 |
-
|
1065 |
-
|
1066 |
-
|
1067 |
-
|
1068 |
-
|
1069 |
-
|
1070 |
-
|
1071 |
-
|
1072 |
-
|
1073 |
-
|
1074 |
-
|
1075 |
-
|
1076 |
-
|
1077 |
-
|
1078 |
-
|
1079 |
-
|
1080 |
-
|
1081 |
-
|
1082 |
-
|
1083 |
-
|
1084 |
-
|
1085 |
-
|
1086 |
-
|
1087 |
-
|
1088 |
-
|
1089 |
-
|
1090 |
-
|
1091 |
-
|
1092 |
-
|
1093 |
-
|
1094 |
-
|
1095 |
-
|
1096 |
-
|
1097 |
-
|
1098 |
-
|
1099 |
-
|
1100 |
-
|
1101 |
-
|
1102 |
-
|
1103 |
-
|
1104 |
-
|
1105 |
-
|
1106 |
-
|
1107 |
-
|
1108 |
-
|
1109 |
-
|
1110 |
-
|
1111 |
-
|
1112 |
-
|
1113 |
-
|
1114 |
-
|
1115 |
-
|
1116 |
-
|
1117 |
-
|
1118 |
-
|
1119 |
-
|
1120 |
-
|
1121 |
-
|
1122 |
-
|
1123 |
-
|
1124 |
-
|
1125 |
-
|
1126 |
-
|
1127 |
-
|
1128 |
-
|
1129 |
-
|
1130 |
-
|
1131 |
-
|
1132 |
-
|
1133 |
-
|
1134 |
-
|
1135 |
-
|
1136 |
-
|
1137 |
-
|
1138 |
-
|
1139 |
-
|
1140 |
-
|
1141 |
-
|
1142 |
-
|
1143 |
-
|
1144 |
-
|
1145 |
-
|
1146 |
-
|
1147 |
-
|
1148 |
-
|
1149 |
-
|
1150 |
-
|
1151 |
-
|
1152 |
-
|
1153 |
-
|
1154 |
-
|
1155 |
-
|
1156 |
-
|
1157 |
-
|
1158 |
-
|
1159 |
-
|
1160 |
-
|
1161 |
-
|
1162 |
-
|
1163 |
-
|
1164 |
-
|
1165 |
-
|
1166 |
-
|
1167 |
-
|
1168 |
-
|
1169 |
-
|
1170 |
-
|
1171 |
-
|
1172 |
-
|
1173 |
-
|
1174 |
-
|
1175 |
-
|
1176 |
-
|
1177 |
-
|
1178 |
-
|
1179 |
-
|
1180 |
-
|
1181 |
-
|
1182 |
-
|
1183 |
-
|
1184 |
-
|
1185 |
-
|
1186 |
-
|
1187 |
-
|
1188 |
-
|
1189 |
-
|
1190 |
-
|
1191 |
-
|
1192 |
-
|
1193 |
-
|
1194 |
-
|
1195 |
-
|
1196 |
-
|
1197 |
-
|
1198 |
-
|
1199 |
-
|
1200 |
-
|
1201 |
-
|
1202 |
-
|
1203 |
-
|
1204 |
-
|
1205 |
-
|
1206 |
-
|
1207 |
-
|
1208 |
-
|
1209 |
-
|
1210 |
-
|
1211 |
-
|
1212 |
-
|
1213 |
-
|
1214 |
-
|
1215 |
-
|
1216 |
-
|
1217 |
-
|
1218 |
-
|
1219 |
-
|
1220 |
-
|
1221 |
-
|
1222 |
-
|
1223 |
-
|
1224 |
-
|
1225 |
-
|
1226 |
-
|
1227 |
-
|
1228 |
-
|
1229 |
-
|
1230 |
-
|
1231 |
-
|
1232 |
-
|
1233 |
-
|
1234 |
-
|
1235 |
-
|
1236 |
-
|
1237 |
-
|
1238 |
-
|
1239 |
-
|
1240 |
-
|
1241 |
-
|
1242 |
-
|
1243 |
-
|
1244 |
-
|
1245 |
-
|
1246 |
-
|
1247 |
-
|
1248 |
-
|
1249 |
-
|
1250 |
-
|
1251 |
-
|
1252 |
-
|
1253 |
-
|
1254 |
|
1255 |
}(jQuery);
|
1256 |
|
@@ -1265,513 +1278,516 @@ if (typeof jQuery === 'undefined') {
|
|
1265 |
|
1266 |
|
1267 |
+function ($) {
|
1268 |
-
|
1269 |
-
|
1270 |
-
|
1271 |
-
|
1272 |
-
|
1273 |
-
|
1274 |
-
|
1275 |
-
|
1276 |
-
|
1277 |
-
|
1278 |
-
|
1279 |
-
|
1280 |
-
|
1281 |
-
|
1282 |
-
|
1283 |
-
|
1284 |
-
|
1285 |
-
|
1286 |
-
|
1287 |
-
|
1288 |
-
|
1289 |
-
|
1290 |
-
|
1291 |
-
|
1292 |
-
|
1293 |
-
|
1294 |
-
|
1295 |
-
|
1296 |
-
|
1297 |
-
|
1298 |
-
|
1299 |
-
|
1300 |
-
|
1301 |
-
|
1302 |
-
|
1303 |
-
|
1304 |
-
|
1305 |
-
|
1306 |
-
|
1307 |
-
|
1308 |
-
|
1309 |
-
|
1310 |
-
|
1311 |
-
|
1312 |
-
|
1313 |
-
|
1314 |
-
|
1315 |
-
|
1316 |
-
|
1317 |
-
|
1318 |
-
|
1319 |
-
|
1320 |
-
|
1321 |
-
|
1322 |
-
|
1323 |
-
|
1324 |
-
|
1325 |
-
|
1326 |
-
|
1327 |
-
|
1328 |
-
|
1329 |
-
|
1330 |
-
|
1331 |
-
|
1332 |
-
|
1333 |
-
|
1334 |
-
|
1335 |
-
|
1336 |
-
|
1337 |
-
|
1338 |
-
|
1339 |
-
|
1340 |
-
|
1341 |
|
1342 |
-
|
1343 |
-
|
1344 |
|
1345 |
-
|
1346 |
-
|
1347 |
-
|
1348 |
-
|
1349 |
-
|
1350 |
-
|
1351 |
|
1352 |
-
|
1353 |
-
|
1354 |
|
1355 |
-
|
1356 |
-
|
1357 |
-
|
1358 |
|
1359 |
-
|
1360 |
-
|
1361 |
-
|
1362 |
|
1363 |
-
|
1364 |
-
|
1365 |
|
1366 |
-
|
1367 |
-
|
1368 |
-
|
1369 |
|
1370 |
-
|
1371 |
-
|
1372 |
-
|
1373 |
-
|
1374 |
|
1375 |
-
|
1376 |
-
|
1377 |
-
|
1378 |
|
1379 |
-
|
1380 |
-
|
1381 |
-
|
1382 |
-
|
1383 |
|
1384 |
-
|
1385 |
|
1386 |
-
|
1387 |
|
1388 |
-
|
1389 |
|
1390 |
-
|
1391 |
-
|
1392 |
-
|
1393 |
-
|
1394 |
|
1395 |
-
|
1396 |
-
|
1397 |
-
|
1398 |
-
|
1399 |
|
1400 |
-
|
1401 |
-
|
1402 |
|
1403 |
-
|
1404 |
-
|
1405 |
-
|
1406 |
|
1407 |
-
|
1408 |
-
|
1409 |
-
|
1410 |
-
|
1411 |
|
1412 |
-
|
1413 |
-
|
1414 |
-
|
1415 |
|
1416 |
-
|
1417 |
|
1418 |
-
|
1419 |
|
1420 |
-
|
1421 |
|
1422 |
-
|
1423 |
|
1424 |
-
|
1425 |
-
|
1426 |
-
|
1427 |
-
|
1428 |
|
1429 |
-
|
1430 |
-
|
1431 |
|
1432 |
-
|
1433 |
-
|
1434 |
|
1435 |
-
|
1436 |
-
|
1437 |
-
|
1438 |
|
1439 |
-
|
1440 |
|
1441 |
-
|
1442 |
|
1443 |
-
|
1444 |
-
|
1445 |
-
|
1446 |
|
1447 |
-
|
1448 |
|
1449 |
-
|
1450 |
-
|
1451 |
-
|
1452 |
|
1453 |
-
|
1454 |
-
|
1455 |
-
|
1456 |
|
1457 |
-
|
1458 |
-
|
1459 |
-
|
1460 |
-
|
1461 |
-
|
1462 |
|
1463 |
-
|
1464 |
-
|
1465 |
|
1466 |
-
|
1467 |
-
|
1468 |
-
|
1469 |
|
1470 |
-
|
1471 |
-
|
1472 |
-
|
1473 |
|
1474 |
-
|
1475 |
-
|
1476 |
-
|
1477 |
-
|
1478 |
-
|
1479 |
|
1480 |
-
|
1481 |
-
|
1482 |
-
|
1483 |
-
|
1484 |
|
1485 |
-
|
1486 |
|
1487 |
-
|
1488 |
|
1489 |
-
|
1490 |
-
|
1491 |
-
|
1492 |
-
|
1493 |
|
1494 |
-
|
1495 |
-
|
1496 |
|
1497 |
-
|
1498 |
-
|
1499 |
-
|
1500 |
-
|
1501 |
-
|
1502 |
-
|
1503 |
-
|
1504 |
|
1505 |
-
|
1506 |
-
|
1507 |
-
|
1508 |
-
|
1509 |
|
1510 |
-
|
1511 |
-
|
1512 |
-
|
1513 |
|
1514 |
-
|
1515 |
-
|
1516 |
-
|
1517 |
|
1518 |
-
|
1519 |
-
|
1520 |
|
1521 |
-
|
1522 |
-
|
1523 |
-
|
1524 |
-
|
1525 |
-
|
1526 |
-
|
1527 |
-
|
1528 |
-
|
1529 |
-
|
1530 |
-
|
1531 |
-
|
1532 |
-
|
1533 |
-
|
1534 |
-
|
1535 |
-
|
1536 |
-
|
1537 |
-
|
1538 |
-
|
1539 |
-
|
1540 |
-
|
1541 |
-
|
1542 |
-
|
1543 |
-
|
1544 |
-
|
1545 |
-
|
1546 |
-
|
1547 |
-
|
1548 |
-
|
1549 |
-
|
1550 |
-
|
1551 |
-
|
1552 |
-
|
1553 |
-
|
1554 |
-
|
1555 |
-
|
1556 |
-
|
1557 |
-
|
1558 |
-
|
1559 |
-
|
1560 |
-
|
1561 |
-
|
1562 |
-
|
1563 |
-
|
1564 |
-
|
1565 |
-
|
1566 |
-
|
1567 |
-
|
1568 |
-
|
1569 |
-
|
1570 |
-
|
1571 |
-
|
1572 |
-
|
1573 |
-
|
1574 |
-
|
1575 |
-
|
1576 |
-
|
1577 |
-
|
1578 |
-
|
1579 |
-
|
1580 |
-
|
1581 |
-
|
1582 |
-
|
1583 |
-
|
1584 |
-
|
1585 |
-
|
1586 |
-
|
1587 |
-
|
1588 |
-
|
1589 |
-
|
1590 |
-
|
1591 |
-
|
1592 |
-
|
1593 |
-
|
1594 |
-
|
1595 |
-
|
1596 |
-
|
1597 |
-
|
1598 |
-
|
1599 |
-
|
1600 |
-
|
1601 |
-
|
1602 |
-
|
1603 |
-
|
1604 |
-
|
1605 |
-
|
1606 |
-
|
1607 |
-
|
1608 |
-
|
1609 |
-
|
1610 |
-
|
1611 |
-
|
1612 |
-
|
1613 |
-
|
1614 |
-
|
1615 |
-
|
1616 |
-
|
1617 |
-
|
1618 |
-
|
1619 |
-
|
1620 |
-
|
1621 |
-
|
1622 |
-
|
1623 |
-
|
1624 |
-
|
1625 |
-
|
1626 |
-
|
1627 |
-
|
1628 |
-
|
1629 |
-
|
1630 |
-
|
1631 |
-
|
1632 |
-
|
1633 |
-
|
1634 |
-
|
1635 |
-
|
1636 |
-
|
1637 |
-
|
1638 |
-
|
1639 |
-
|
1640 |
-
|
1641 |
-
|
1642 |
-
|
1643 |
-
|
1644 |
-
|
1645 |
-
|
1646 |
-
|
1647 |
-
|
1648 |
-
|
1649 |
-
|
1650 |
-
|
1651 |
-
|
1652 |
-
|
1653 |
-
|
1654 |
-
|
1655 |
-
|
1656 |
-
|
1657 |
-
|
1658 |
-
|
1659 |
-
|
1660 |
-
|
1661 |
-
|
1662 |
-
|
1663 |
-
|
1664 |
-
|
1665 |
-
|
1666 |
-
|
1667 |
-
|
1668 |
-
|
1669 |
-
|
1670 |
-
|
1671 |
-
|
1672 |
-
|
1673 |
-
|
1674 |
-
|
1675 |
-
|
1676 |
-
|
1677 |
-
|
1678 |
-
|
1679 |
-
|
1680 |
-
|
1681 |
-
|
1682 |
-
|
1683 |
-
|
1684 |
-
|
1685 |
-
|
1686 |
-
|
1687 |
-
|
1688 |
-
|
1689 |
-
|
1690 |
-
|
1691 |
-
|
1692 |
-
|
1693 |
-
|
1694 |
-
|
1695 |
-
|
1696 |
-
|
1697 |
-
|
1698 |
-
|
1699 |
-
|
1700 |
-
|
1701 |
-
|
1702 |
-
|
1703 |
-
|
1704 |
-
|
1705 |
-
|
1706 |
-
|
1707 |
-
|
1708 |
-
|
1709 |
-
|
1710 |
-
|
1711 |
-
|
1712 |
-
|
1713 |
-
|
1714 |
-
|
1715 |
-
|
1716 |
-
|
1717 |
-
|
1718 |
-
|
1719 |
-
|
1720 |
-
|
1721 |
-
|
1722 |
-
|
1723 |
-
|
1724 |
-
|
1725 |
-
|
1726 |
-
|
1727 |
-
|
1728 |
-
|
1729 |
-
|
1730 |
-
|
1731 |
-
|
1732 |
-
|
1733 |
-
|
1734 |
-
|
1735 |
-
|
1736 |
-
|
1737 |
-
|
1738 |
-
|
1739 |
-
|
1740 |
-
|
1741 |
-
|
1742 |
-
|
1743 |
-
|
1744 |
-
|
1745 |
-
|
1746 |
-
|
1747 |
-
|
1748 |
-
|
1749 |
-
|
1750 |
-
|
1751 |
-
|
1752 |
-
|
1753 |
-
|
1754 |
-
|
1755 |
-
|
1756 |
-
|
1757 |
-
|
1758 |
-
|
1759 |
-
|
1760 |
-
|
1761 |
-
|
1762 |
-
|
1763 |
-
|
1764 |
-
|
1765 |
-
|
1766 |
-
|
1767 |
-
|
1768 |
-
|
1769 |
-
|
1770 |
-
|
1771 |
-
|
1772 |
-
|
1773 |
-
|
1774 |
-
|
|
|
|
|
|
|
1775 |
|
1776 |
}(jQuery);
|
1777 |
|
@@ -1785,102 +1801,102 @@ if (typeof jQuery === 'undefined') {
|
|
1785 |
|
1786 |
|
1787 |
+function ($) {
|
1788 |
-
|
1789 |
|
1790 |
-
|
1791 |
-
|
1792 |
|
1793 |
-
|
1794 |
-
|
1795 |
-
|
1796 |
|
1797 |
-
|
1798 |
|
1799 |
-
|
1800 |
|
1801 |
-
|
1802 |
-
|
1803 |
-
|
1804 |
-
|
1805 |
-
|
1806 |
-
|
1807 |
|
1808 |
|
1809 |
-
|
1810 |
-
|
1811 |
|
1812 |
-
|
1813 |
|
1814 |
-
|
1815 |
|
1816 |
-
|
1817 |
-
|
1818 |
-
|
1819 |
|
1820 |
-
|
1821 |
-
|
1822 |
-
|
1823 |
-
|
1824 |
|
1825 |
-
|
1826 |
-
|
1827 |
-
|
1828 |
-
|
1829 |
|
1830 |
-
|
1831 |
|
1832 |
-
|
1833 |
-
|
1834 |
-
|
1835 |
-
|
1836 |
|
1837 |
-
|
1838 |
-
|
1839 |
-
|
1840 |
|
1841 |
-
|
1842 |
-
|
1843 |
-
|
1844 |
|
1845 |
-
|
1846 |
-
|
1847 |
-
|
1848 |
-
|
1849 |
-
|
1850 |
|
1851 |
-
|
1852 |
-
|
1853 |
-
|
1854 |
|
1855 |
|
1856 |
-
|
1857 |
-
|
1858 |
|
1859 |
-
|
1860 |
-
|
1861 |
-
|
1862 |
-
|
1863 |
-
|
1864 |
|
1865 |
-
|
1866 |
-
|
1867 |
-
|
1868 |
-
|
1869 |
-
|
1870 |
|
1871 |
-
|
1872 |
|
1873 |
-
|
1874 |
-
|
1875 |
|
1876 |
|
1877 |
-
|
1878 |
-
|
1879 |
|
1880 |
-
|
1881 |
-
|
1882 |
-
|
1883 |
-
|
1884 |
|
1885 |
}(jQuery);
|
1886 |
|
@@ -1894,166 +1910,168 @@ if (typeof jQuery === 'undefined') {
|
|
1894 |
|
1895 |
|
1896 |
+function ($) {
|
1897 |
-
|
1898 |
-
|
1899 |
-
|
1900 |
-
|
1901 |
-
|
1902 |
-
|
1903 |
-
|
1904 |
-
|
1905 |
-
|
1906 |
-
|
1907 |
-
|
1908 |
-
|
1909 |
-
|
1910 |
-
|
1911 |
-
|
1912 |
-
|
1913 |
-
|
1914 |
-
|
1915 |
-
|
1916 |
-
|
1917 |
-
|
1918 |
-
|
1919 |
-
|
1920 |
-
|
1921 |
-
|
1922 |
-
|
1923 |
-
|
1924 |
-
|
1925 |
-
|
1926 |
-
|
1927 |
-
|
1928 |
-
|
1929 |
-
|
1930 |
-
|
1931 |
-
|
1932 |
-
|
1933 |
-
|
1934 |
-
|
1935 |
-
|
1936 |
-
|
1937 |
-
|
1938 |
-
|
1939 |
-
|
1940 |
-
|
1941 |
-
|
1942 |
-
|
1943 |
-
|
1944 |
-
|
1945 |
-
|
1946 |
-
|
1947 |
-
|
1948 |
-
|
1949 |
-
|
1950 |
-
|
1951 |
-
|
1952 |
-
|
1953 |
-
|
1954 |
-
|
1955 |
-
|
1956 |
-
|
1957 |
-
|
1958 |
-
|
1959 |
-
|
1960 |
-
|
1961 |
-
|
1962 |
-
|
1963 |
-
|
1964 |
-
|
1965 |
-
|
1966 |
-
|
1967 |
-
|
1968 |
-
|
1969 |
-
|
1970 |
-
|
1971 |
-
|
1972 |
-
|
1973 |
-
|
1974 |
-
|
1975 |
-
|
1976 |
-
|
1977 |
-
|
1978 |
-
|
1979 |
-
|
1980 |
-
|
1981 |
-
|
1982 |
-
|
1983 |
-
|
1984 |
-
|
1985 |
-
|
1986 |
-
|
1987 |
-
|
1988 |
-
|
1989 |
-
|
1990 |
-
|
1991 |
-
|
1992 |
-
|
1993 |
-
|
1994 |
-
|
1995 |
-
|
1996 |
-
|
1997 |
-
|
1998 |
-
|
1999 |
-
|
2000 |
-
|
2001 |
-
|
2002 |
-
|
2003 |
-
|
2004 |
-
|
2005 |
-
|
2006 |
-
|
2007 |
-
|
2008 |
-
|
2009 |
-
|
2010 |
-
|
2011 |
-
|
2012 |
-
|
2013 |
-
|
2014 |
-
|
2015 |
-
|
2016 |
-
|
2017 |
-
|
2018 |
-
|
2019 |
-
|
2020 |
-
|
2021 |
-
|
2022 |
-
|
2023 |
-
|
2024 |
-
|
2025 |
-
|
2026 |
-
|
2027 |
-
|
2028 |
-
|
2029 |
-
|
2030 |
-
|
2031 |
-
|
2032 |
-
|
2033 |
-
|
2034 |
-
|
2035 |
-
|
2036 |
-
|
2037 |
-
|
2038 |
-
|
2039 |
-
|
2040 |
-
|
2041 |
-
|
2042 |
-
|
2043 |
-
|
2044 |
-
|
2045 |
-
|
2046 |
-
|
2047 |
-
|
2048 |
-
|
2049 |
-
|
2050 |
-
|
2051 |
-
|
2052 |
-
|
2053 |
-
|
2054 |
-
|
2055 |
-
|
2056 |
-
|
|
|
|
|
2057 |
|
2058 |
}(jQuery);
|
2059 |
|
@@ -2067,149 +2085,149 @@ if (typeof jQuery === 'undefined') {
|
|
2067 |
|
2068 |
|
2069 |
+function ($) {
|
2070 |
-
|
2071 |
-
|
2072 |
-
|
2073 |
-
|
2074 |
-
|
2075 |
-
|
2076 |
-
|
2077 |
-
|
2078 |
-
|
2079 |
-
|
2080 |
-
|
2081 |
-
|
2082 |
-
|
2083 |
-
|
2084 |
-
|
2085 |
-
|
2086 |
-
|
2087 |
-
|
2088 |
-
|
2089 |
-
|
2090 |
-
|
2091 |
-
|
2092 |
-
|
2093 |
-
|
2094 |
-
|
2095 |
-
|
2096 |
-
|
2097 |
-
|
2098 |
-
|
2099 |
-
|
2100 |
-
|
2101 |
-
|
2102 |
-
|
2103 |
-
|
2104 |
-
|
2105 |
-
|
2106 |
-
|
2107 |
-
|
2108 |
-
|
2109 |
-
|
2110 |
-
|
2111 |
-
|
2112 |
-
|
2113 |
-
|
2114 |
-
|
2115 |
-
|
2116 |
-
|
2117 |
-
|
2118 |
-
|
2119 |
-
|
2120 |
-
|
2121 |
-
|
2122 |
-
|
2123 |
-
|
2124 |
-
|
2125 |
-
|
2126 |
-
|
2127 |
-
|
2128 |
-
|
2129 |
-
|
2130 |
-
|
2131 |
-
|
2132 |
-
|
2133 |
-
|
2134 |
-
|
2135 |
-
|
2136 |
-
|
2137 |
-
|
2138 |
-
|
2139 |
-
|
2140 |
-
|
2141 |
-
|
2142 |
-
|
2143 |
-
|
2144 |
-
|
2145 |
-
|
2146 |
-
|
2147 |
-
|
2148 |
-
|
2149 |
-
|
2150 |
-
|
2151 |
-
|
2152 |
-
|
2153 |
-
|
2154 |
-
|
2155 |
-
|
2156 |
-
|
2157 |
-
|
2158 |
-
|
2159 |
-
|
2160 |
-
|
2161 |
-
|
2162 |
-
|
2163 |
-
|
2164 |
-
|
2165 |
-
|
2166 |
-
|
2167 |
-
|
2168 |
-
|
2169 |
-
|
2170 |
-
|
2171 |
-
|
2172 |
-
|
2173 |
-
|
2174 |
-
|
2175 |
-
|
2176 |
-
|
2177 |
-
|
2178 |
-
|
2179 |
-
|
2180 |
-
|
2181 |
-
|
2182 |
-
|
2183 |
-
|
2184 |
-
|
2185 |
-
|
2186 |
-
|
2187 |
-
|
2188 |
-
|
2189 |
-
|
2190 |
-
|
2191 |
-
|
2192 |
-
|
2193 |
-
|
2194 |
-
|
2195 |
-
|
2196 |
-
|
2197 |
-
|
2198 |
-
|
2199 |
-
|
2200 |
-
|
2201 |
-
|
2202 |
-
|
2203 |
-
|
2204 |
-
|
2205 |
-
|
2206 |
-
|
2207 |
-
|
2208 |
-
|
2209 |
-
|
2210 |
-
|
2211 |
-
|
2212 |
-
|
2213 |
|
2214 |
}(jQuery);
|
2215 |
|
@@ -2223,155 +2241,155 @@ if (typeof jQuery === 'undefined') {
|
|
2223 |
|
2224 |
|
2225 |
+function ($) {
|
2226 |
-
|
2227 |
|
2228 |
-
|
2229 |
-
|
2230 |
|
2231 |
-
|
2232 |
-
|
2233 |
|
2234 |
-
|
2235 |
-
|
2236 |
-
|
2237 |
|
2238 |
-
|
2239 |
-
|
2240 |
-
|
2241 |
-
|
2242 |
|
2243 |
-
|
2244 |
-
|
2245 |
|
2246 |
-
|
2247 |
|
2248 |
-
|
2249 |
|
2250 |
-
|
2251 |
-
|
2252 |
-
|
2253 |
-
|
2254 |
|
2255 |
-
|
2256 |
-
|
2257 |
-
|
2258 |
-
|
2259 |
|
2260 |
-
|
2261 |
|
2262 |
-
|
2263 |
-
|
2264 |
-
|
2265 |
-
|
2266 |
|
2267 |
-
|
2268 |
-
|
2269 |
-
|
2270 |
|
2271 |
-
|
2272 |
-
|
2273 |
|
2274 |
-
|
2275 |
-
|
2276 |
|
2277 |
-
|
2278 |
-
|
2279 |
-
|
2280 |
-
|
2281 |
-
|
2282 |
-
|
2283 |
-
|
2284 |
|
2285 |
-
|
2286 |
-
|
2287 |
-
|
2288 |
|
2289 |
-
|
2290 |
-
|
2291 |
|
2292 |
-
|
2293 |
-
|
2294 |
-
|
2295 |
-
|
2296 |
-
|
2297 |
|
2298 |
-
|
2299 |
-
|
2300 |
-
|
2301 |
|
2302 |
-
|
2303 |
|
2304 |
-
|
2305 |
-
|
2306 |
|
2307 |
-
|
2308 |
-
|
2309 |
|
2310 |
-
|
2311 |
|
2312 |
-
|
2313 |
|
2314 |
-
|
2315 |
-
|
2316 |
|
2317 |
-
|
2318 |
-
|
2319 |
-
|
2320 |
-
|
2321 |
-
|
2322 |
|
2323 |
-
|
2324 |
-
|
2325 |
-
|
2326 |
-
|
2327 |
-
|
2328 |
-
|
2329 |
|
2330 |
|
2331 |
-
|
2332 |
-
|
2333 |
|
2334 |
-
|
2335 |
-
|
2336 |
-
|
2337 |
-
|
2338 |
-
|
2339 |
|
2340 |
-
|
2341 |
-
|
2342 |
-
|
2343 |
-
|
2344 |
|
2345 |
-
|
2346 |
|
2347 |
-
|
2348 |
-
|
2349 |
|
2350 |
|
2351 |
-
|
2352 |
-
|
2353 |
|
2354 |
-
|
2355 |
-
|
2356 |
-
|
2357 |
-
|
2358 |
|
2359 |
|
2360 |
-
|
2361 |
-
|
2362 |
|
2363 |
-
|
2364 |
-
|
2365 |
-
|
2366 |
-
|
2367 |
|
2368 |
-
|
2369 |
|
2370 |
-
|
2371 |
-
|
2372 |
|
2373 |
-
|
2374 |
-
|
2375 |
-
|
2376 |
|
2377 |
}(jQuery);
|
5 |
*/
|
6 |
|
7 |
if (typeof jQuery === 'undefined') {
|
8 |
+
throw new Error('Bootstrap\'s JavaScript requires jQuery')
|
9 |
}
|
10 |
|
11 |
+function ($) {
|
12 |
+
'use strict';
|
13 |
+
var version = $.fn.jquery.split(' ')[0].split('.')
|
14 |
+
if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] > 3)) {
|
15 |
+
throw new Error('Bootstrap\'s JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4')
|
16 |
+
}
|
17 |
}(jQuery);
|
18 |
|
19 |
/* ========================================================================
|
26 |
|
27 |
|
28 |
+function ($) {
|
29 |
+
'use strict';
|
30 |
+
|
31 |
+
// CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)
|
32 |
+
// ============================================================
|
33 |
+
|
34 |
+
function transitionEnd() {
|
35 |
+
var el = document.createElement('bootstrap')
|
36 |
+
|
37 |
+
var transEndEventNames = {
|
38 |
+
WebkitTransition: 'webkitTransitionEnd',
|
39 |
+
MozTransition: 'transitionend',
|
40 |
+
OTransition: 'oTransitionEnd otransitionend',
|
41 |
+
transition: 'transitionend'
|
42 |
+
}
|
43 |
+
|
44 |
+
for (var name in transEndEventNames) {
|
45 |
+
if (el.style[name] !== undefined) {
|
46 |
+
return {end: transEndEventNames[name]}
|
47 |
+
}
|
48 |
+
}
|
49 |
+
|
50 |
+
return false // explicit for ie8 ( ._.)
|
51 |
+
}
|
52 |
+
|
53 |
+
// http://blog.alexmaccaw.com/css-transitions
|
54 |
+
$.fn.emulateTransitionEnd = function (duration) {
|
55 |
+
var called = false
|
56 |
+
var $el = this
|
57 |
+
$(this).one('bsTransitionEnd', function () {
|
58 |
+
called = true
|
59 |
+
})
|
60 |
+
var callback = function () {
|
61 |
+
if (!called) $($el).trigger($.support.transition.end)
|
62 |
+
}
|
63 |
+
setTimeout(callback, duration)
|
64 |
+
return this
|
65 |
+
}
|
66 |
+
|
67 |
+
$(function () {
|
68 |
+
$.support.transition = transitionEnd()
|
69 |
+
|
70 |
+
if (!$.support.transition) return
|
71 |
+
|
72 |
+
$.event.special.bsTransitionEnd = {
|
73 |
+
bindType: $.support.transition.end,
|
74 |
+
delegateType: $.support.transition.end,
|
75 |
+
handle: function (e) {
|
76 |
+
if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)
|
77 |
+
}
|
78 |
+
}
|
79 |
+
})
|
80 |
|
81 |
}(jQuery);
|
82 |
|
90 |
|
91 |
|
92 |
+function ($) {
|
93 |
+
'use strict';
|
94 |
|
95 |
+
// ALERT CLASS DEFINITION
|
96 |
+
// ======================
|
97 |
|
98 |
+
var dismiss = '[data-dismiss="alert"]'
|
99 |
+
var Alert = function (el) {
|
100 |
+
$(el).on('click', dismiss, this.close)
|
101 |
+
}
|
102 |
|
103 |
+
Alert.VERSION = '3.3.7'
|
104 |
|
105 |
+
Alert.TRANSITION_DURATION = 150
|
106 |
|
107 |
+
Alert.prototype.close = function (e) {
|
108 |
+
var $this = $(this)
|
109 |
+
var selector = $this.attr('data-target')
|
110 |
|
111 |
+
if (!selector) {
|
112 |
+
selector = $this.attr('href')
|
113 |
+
selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
|
114 |
+
}
|
115 |
|
116 |
+
var $parent = $(selector === '#' ? [] : selector)
|
117 |
|
118 |
+
if (e) e.preventDefault()
|
119 |
|
120 |
+
if (!$parent.length) {
|
121 |
+
$parent = $this.closest('.alert')
|
122 |
+
}
|
123 |
|
124 |
+
$parent.trigger(e = $.Event('close.bs.alert'))
|
125 |
|
126 |
+
if (e.isDefaultPrevented()) return
|
127 |
|
128 |
+
$parent.removeClass('in')
|
129 |
|
130 |
+
function removeElement() {
|
131 |
+
// detach from parent, fire event then clean up data
|
132 |
+
$parent.detach().trigger('closed.bs.alert').remove()
|
133 |
+
}
|
134 |
|
135 |
+
$.support.transition && $parent.hasClass('fade') ?
|
136 |
+
$parent
|
137 |
+
.one('bsTransitionEnd', removeElement)
|
138 |
+
.emulateTransitionEnd(Alert.TRANSITION_DURATION) :
|
139 |
+
removeElement()
|
140 |
+
}
|
141 |
|
142 |
|
143 |
+
// ALERT PLUGIN DEFINITION
|
144 |
+
// =======================
|
145 |
|
146 |
+
function Plugin(option) {
|
147 |
+
return this.each(function () {
|
148 |
+
var $this = $(this)
|
149 |
+
var data = $this.data('bs.alert')
|
150 |
|
151 |
+
if (!data) $this.data('bs.alert', (data = new Alert(this)))
|
152 |
+
if (typeof option == 'string') data[option].call($this)
|
153 |
+
})
|
154 |
+
}
|
155 |
|
156 |
+
var old = $.fn.alert
|
157 |
|
158 |
+
$.fn.alert = Plugin
|
159 |
+
$.fn.alert.Constructor = Alert
|
160 |
|
161 |
|
162 |
+
// ALERT NO CONFLICT
|
163 |
+
// =================
|
164 |
|
165 |
+
$.fn.alert.noConflict = function () {
|
166 |
+
$.fn.alert = old
|
167 |
+
return this
|
168 |
+
}
|
169 |
|
170 |
|
171 |
+
// ALERT DATA-API
|
172 |
+
// ==============
|
173 |
|
174 |
+
$(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)
|
175 |
|
176 |
}(jQuery);
|
177 |
|
185 |
|
186 |
|
187 |
+function ($) {
|
188 |
+
'use strict';
|
189 |
+
|
190 |
+
// BUTTON PUBLIC CLASS DEFINITION
|
191 |
+
// ==============================
|
192 |
+
|
193 |
+
var Button = function (element, options) {
|
194 |
+
this.$element = $(element)
|
195 |
+
this.options = $.extend({}, Button.DEFAULTS, options)
|
196 |
+
this.isLoading = false
|
197 |
+
}
|
198 |
+
|
199 |
+
Button.VERSION = '3.3.7'
|
200 |
+
|
201 |
+
Button.DEFAULTS = {
|
202 |
+
loadingText: 'loading...'
|
203 |
+
}
|
204 |
+
|
205 |
+
Button.prototype.setState = function (state) {
|
206 |
+
var d = 'disabled'
|
207 |
+
var $el = this.$element
|
208 |
+
var val = $el.is('input') ? 'val' : 'html'
|
209 |
+
var data = $el.data()
|
210 |
+
|
211 |
+
state += 'Text'
|
212 |
+
|
213 |
+
if (data.resetText == null) $el.data('resetText', $el[val]())
|
214 |
+
|
215 |
+
// push to event loop to allow forms to submit
|
216 |
+
setTimeout($.proxy(function () {
|
217 |
+
$el[val](data[state] == null ? this.options[state] : data[state])
|
218 |
+
|
219 |
+
if (state == 'loadingText') {
|
220 |
+
this.isLoading = true
|
221 |
+
$el.addClass(d).attr(d, d).prop(d, true)
|
222 |
+
} else if (this.isLoading) {
|
223 |
+
this.isLoading = false
|
224 |
+
$el.removeClass(d).removeAttr(d).prop(d, false)
|
225 |
+
}
|
226 |
+
}, this), 0)
|
227 |
+
}
|
228 |
+
|
229 |
+
Button.prototype.toggle = function () {
|
230 |
+
var changed = true
|
231 |
+
var $parent = this.$element.closest('[data-toggle="buttons"]')
|
232 |
+
|
233 |
+
if ($parent.length) {
|
234 |
+
var $input = this.$element.find('input')
|
235 |
+
if ($input.prop('type') == 'radio') {
|
236 |
+
if ($input.prop('checked')) changed = false
|
237 |
+
$parent.find('.active').removeClass('active')
|
238 |
+
this.$element.addClass('active')
|
239 |
+
} else if ($input.prop('type') == 'checkbox') {
|
240 |
+
if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false
|
241 |
+
this.$element.toggleClass('active')
|
242 |
+
}
|
243 |
+
$input.prop('checked', this.$element.hasClass('active'))
|
244 |
+
if (changed) $input.trigger('change')
|
245 |
+
} else {
|
246 |
+
this.$element.attr('aria-pressed', !this.$element.hasClass('active'))
|
247 |
+
this.$element.toggleClass('active')
|
248 |
+
}
|
249 |
+
}
|
250 |
+
|
251 |
+
|
252 |
+
// BUTTON PLUGIN DEFINITION
|
253 |
+
// ========================
|
254 |
+
|
255 |
+
function Plugin(option) {
|
256 |
+
return this.each(function () {
|
257 |
+
var $this = $(this)
|
258 |
+
var data = $this.data('bs.button')
|
259 |
+
var options = typeof option == 'object' && option
|
260 |
+
|
261 |
+
if (!data) $this.data('bs.button', (data = new Button(this, options)))
|
262 |
+
|
263 |
+
if (option == 'toggle') data.toggle()
|
264 |
+
else if (option) data.setState(option)
|
265 |
+
})
|
266 |
+
}
|
267 |
+
|
268 |
+
var old = $.fn.button
|
269 |
+
|
270 |
+
$.fn.button = Plugin
|
271 |
+
$.fn.button.Constructor = Button
|
272 |
+
|
273 |
+
|
274 |
+
// BUTTON NO CONFLICT
|
275 |
+
// ==================
|
276 |
+
|
277 |
+
$.fn.button.noConflict = function () {
|
278 |
+
$.fn.button = old
|
279 |
+
return this
|
280 |
+
}
|
281 |
+
|
282 |
+
|
283 |
+
// BUTTON DATA-API
|
284 |
+
// ===============
|
285 |
+
|
286 |
+
$(document)
|
287 |
+
.on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) {
|
288 |
+
var $btn = $(e.target).closest('.btn')
|
289 |
+
Plugin.call($btn, 'toggle')
|
290 |
+
if (!($(e.target).is('input[type="radio"], input[type="checkbox"]'))) {
|
291 |
+
// Prevent double click on radios, and the double selections (so cancellation) on checkboxes
|
292 |
+
e.preventDefault()
|
293 |
+
// The target component still receive the focus
|
294 |
+
if ($btn.is('input,button')) $btn.trigger('focus')
|
295 |
+
else $btn.find('input:visible,button:visible').first().trigger('focus')
|
296 |
+
}
|
297 |
+
})
|
298 |
+
.on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) {
|
299 |
+
$(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))
|
300 |
+
})
|
301 |
|
302 |
}(jQuery);
|
303 |
|
311 |
|
312 |
|
313 |
+function ($) {
|
314 |
+
'use strict';
|
315 |
+
|
316 |
+
// CAROUSEL CLASS DEFINITION
|
317 |
+
// =========================
|
318 |
+
|
319 |
+
var Carousel = function (element, options) {
|
320 |
+
this.$element = $(element)
|
321 |
+
this.$indicators = this.$element.find('.carousel-indicators')
|
322 |
+
this.options = options
|
323 |
+
this.paused = null
|
324 |
+
this.sliding = null
|
325 |
+
this.interval = null
|
326 |
+
this.$active = null
|
327 |
+
this.$items = null
|
328 |
+
|
329 |
+
this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this))
|
330 |
+
|
331 |
+
this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element
|
332 |
+
.on('mouseenter.bs.carousel', $.proxy(this.pause, this))
|
333 |
+
.on('mouseleave.bs.carousel', $.proxy(this.cycle, this))
|
334 |
+
}
|
335 |
+
|
336 |
+
Carousel.VERSION = '3.3.7'
|
337 |
+
|
338 |
+
Carousel.TRANSITION_DURATION = 600
|
339 |
+
|
340 |
+
Carousel.DEFAULTS = {
|
341 |
+
interval: 5000,
|
342 |
+
pause: 'hover',
|
343 |
+
wrap: true,
|
344 |
+
keyboard: true
|
345 |
+
}
|
346 |
+
|
347 |
+
Carousel.prototype.keydown = function (e) {
|
348 |
+
if (/input|textarea/i.test(e.target.tagName)) return
|
349 |
+
switch (e.which) {
|
350 |
+
case 37:
|
351 |
+
this.prev();
|
352 |
+
break
|
353 |
+
case 39:
|
354 |
+
this.next();
|
355 |
+
break
|
356 |
+
default:
|
357 |
+
return
|
358 |
+
}
|
359 |
+
|
360 |
+
e.preventDefault()
|
361 |
+
}
|
362 |
+
|
363 |
+
Carousel.prototype.cycle = function (e) {
|
364 |
+
e || (this.paused = false)
|
365 |
+
|
366 |
+
this.interval && clearInterval(this.interval)
|
367 |
+
|
368 |
+
this.options.interval
|
369 |
+
&& !this.paused
|
370 |
+
&& (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
|
371 |
+
|
372 |
+
return this
|
373 |
+
}
|
374 |
+
|
375 |
+
Carousel.prototype.getItemIndex = function (item) {
|
376 |
+
this.$items = item.parent().children('.item')
|
377 |
+
return this.$items.index(item || this.$active)
|
378 |
+
}
|
379 |
+
|
380 |
+
Carousel.prototype.getItemForDirection = function (direction, active) {
|
381 |
+
var activeIndex = this.getItemIndex(active)
|
382 |
+
var willWrap = (direction == 'prev' && activeIndex === 0)
|
383 |
+
|| (direction == 'next' && activeIndex == (this.$items.length - 1))
|
384 |
+
if (willWrap && !this.options.wrap) return active
|
385 |
+
var delta = direction == 'prev' ? -1 : 1
|
386 |
+
var itemIndex = (activeIndex + delta) % this.$items.length
|
387 |
+
return this.$items.eq(itemIndex)
|
388 |
+
}
|
389 |
+
|
390 |
+
Carousel.prototype.to = function (pos) {
|
391 |
+
var that = this
|
392 |
+
var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active'))
|
393 |
+
|
394 |
+
if (pos > (this.$items.length - 1) || pos < 0) return
|
395 |
+
|
396 |
+
if (this.sliding) return this.$element.one('slid.bs.carousel', function () {
|
397 |
+
that.to(pos)
|
398 |
+
}) // yes, "slid"
|
399 |
+
if (activeIndex == pos) return this.pause().cycle()
|
400 |
+
|
401 |
+
return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos))
|
402 |
+
}
|
403 |
+
|
404 |
+
Carousel.prototype.pause = function (e) {
|
405 |
+
e || (this.paused = true)
|
406 |
+
|
407 |
+
if (this.$element.find('.next, .prev').length && $.support.transition) {
|
408 |
+
this.$element.trigger($.support.transition.end)
|
409 |
+
this.cycle(true)
|
410 |
+
}
|
411 |
+
|
412 |
+
this.interval = clearInterval(this.interval)
|
413 |
+
|
414 |
+
return this
|
415 |
+
}
|
416 |
+
|
417 |
+
Carousel.prototype.next = function () {
|
418 |
+
if (this.sliding) return
|
419 |
+
return this.slide('next')
|
420 |
+
}
|
421 |
+
|
422 |
+
Carousel.prototype.prev = function () {
|
423 |
+
if (this.sliding) return
|
424 |
+
return this.slide('prev')
|
425 |
+
}
|
426 |
+
|
427 |
+
Carousel.prototype.slide = function (type, next) {
|
428 |
+
var $active = this.$element.find('.item.active')
|
429 |
+
var $next = next || this.getItemForDirection(type, $active)
|
430 |
+
var isCycling = this.interval
|
431 |
+
var direction = type == 'next' ? 'left' : 'right'
|
432 |
+
var that = this
|
433 |
+
|
434 |
+
if ($next.hasClass('active')) return (this.sliding = false)
|
435 |
+
|
436 |
+
var relatedTarget = $next[0]
|
437 |
+
var slideEvent = $.Event('slide.bs.carousel', {
|
438 |
+
relatedTarget: relatedTarget,
|
439 |
+
direction: direction
|
440 |
+
})
|
441 |
+
this.$element.trigger(slideEvent)
|
442 |
+
if (slideEvent.isDefaultPrevented()) return
|
443 |
+
|
444 |
+
this.sliding = true
|
445 |
+
|
446 |
+
isCycling && this.pause()
|
447 |
+
|
448 |
+
if (this.$indicators.length) {
|
449 |
+
this.$indicators.find('.active').removeClass('active')
|
450 |
+
var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)])
|
451 |
+
$nextIndicator && $nextIndicator.addClass('active')
|
452 |
+
}
|
453 |
+
|
454 |
+
var slidEvent = $.Event('slid.bs.carousel', {relatedTarget: relatedTarget, direction: direction}) // yes, "slid"
|
455 |
+
if ($.support.transition && this.$element.hasClass('slide')) {
|
456 |
+
$next.addClass(type)
|
457 |
+
$next[0].offsetWidth // force reflow
|
458 |
+
$active.addClass(direction)
|
459 |
+
$next.addClass(direction)
|
460 |
+
$active
|
461 |
+
.one('bsTransitionEnd', function () {
|
462 |
+
$next.removeClass([type, direction].join(' ')).addClass('active')
|
463 |
+
$active.removeClass(['active', direction].join(' '))
|
464 |
+
that.sliding = false
|
465 |
+
setTimeout(function () {
|
466 |
+
that.$element.trigger(slidEvent)
|
467 |
+
}, 0)
|
468 |
+
})
|
469 |
+
.emulateTransitionEnd(Carousel.TRANSITION_DURATION)
|
470 |
+
} else {
|
471 |
+
$active.removeClass('active')
|
472 |
+
$next.addClass('active')
|
473 |
+
this.sliding = false
|
474 |
+
this.$element.trigger(slidEvent)
|
475 |
+
}
|
476 |
+
|
477 |
+
isCycling && this.cycle()
|
478 |
+
|
479 |
+
return this
|
480 |
+
}
|
481 |
+
|
482 |
+
|
483 |
+
// CAROUSEL PLUGIN DEFINITION
|
484 |
+
// ==========================
|
485 |
+
|
486 |
+
function Plugin(option) {
|
487 |
+
return this.each(function () {
|
488 |
+
var $this = $(this)
|
489 |
+
var data = $this.data('bs.carousel')
|
490 |
+
var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)
|
491 |
+
var action = typeof option == 'string' ? option : options.slide
|
492 |
+
|
493 |
+
if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))
|
494 |
+
if (typeof option == 'number') data.to(option)
|
495 |
+
else if (action) data[action]()
|
496 |
+
else if (options.interval) data.pause().cycle()
|
497 |
+
})
|
498 |
+
}
|
499 |
+
|
500 |
+
var old = $.fn.carousel
|
501 |
+
|
502 |
+
$.fn.carousel = Plugin
|
503 |
+
$.fn.carousel.Constructor = Carousel
|
504 |
+
|
505 |
+
|
506 |
+
// CAROUSEL NO CONFLICT
|
507 |
+
// ====================
|
508 |
+
|
509 |
+
$.fn.carousel.noConflict = function () {
|
510 |
+
$.fn.carousel = old
|
511 |
+
return this
|
512 |
+
}
|
513 |
+
|
514 |
+
|
515 |
+
// CAROUSEL DATA-API
|
516 |
+
// =================
|
517 |
+
|
518 |
+
var clickHandler = function (e) {
|
519 |
+
var href
|
520 |
+
var $this = $(this)
|
521 |
+
var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7
|
522 |
+
if (!$target.hasClass('carousel')) return
|
523 |
+
var options = $.extend({}, $target.data(), $this.data())
|
524 |
+
var slideIndex = $this.attr('data-slide-to')
|
525 |
+
if (slideIndex) options.interval = false
|
526 |
+
|
527 |
+
Plugin.call($target, options)
|
528 |
+
|
529 |
+
if (slideIndex) {
|
530 |
+
$target.data('bs.carousel').to(slideIndex)
|
531 |
+
}
|
532 |
+
|
533 |
+
e.preventDefault()
|
534 |
+
}
|
535 |
+
|
536 |
+
$(document)
|
537 |
+
.on('click.bs.carousel.data-api', '[data-slide]', clickHandler)
|
538 |
+
.on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler)
|
539 |
+
|
540 |
+
$(window).on('load', function () {
|
541 |
+
$('[data-ride="carousel"]').each(function () {
|
542 |
+
var $carousel = $(this)
|
543 |
+
Plugin.call($carousel, $carousel.data())
|
544 |
+
})
|
545 |
+
})
|
546 |
|
547 |
}(jQuery);
|
548 |
|
557 |
/* jshint latedef: false */
|
558 |
|
559 |
+function ($) {
|
560 |
+
'use strict';
|
561 |
|
562 |
+
// COLLAPSE PUBLIC CLASS DEFINITION
|
563 |
+
// ================================
|
564 |
|
565 |
+
var Collapse = function (element, options) {
|
566 |
+
this.$element = $(element)
|
567 |
+
this.options = $.extend({}, Collapse.DEFAULTS, options)
|
568 |
+
this.$trigger = $('[data-toggle="collapse"][href="#' + element.id + '"],' +
|
569 |
+
'[data-toggle="collapse"][data-target="#' + element.id + '"]')
|
570 |
+
this.transitioning = null
|
571 |
|
572 |
+
if (this.options.parent) {
|
573 |
+
this.$parent = this.getParent()
|
574 |
+
} else {
|
575 |
+
this.addAriaAndCollapsedClass(this.$element, this.$trigger)
|
576 |
+
}
|
577 |
|
578 |
+
if (this.options.toggle) this.toggle()
|
579 |
+
}
|
580 |
|
581 |
+
Collapse.VERSION = '3.3.7'
|
582 |
|
583 |
+
Collapse.TRANSITION_DURATION = 350
|
584 |
|
585 |
+
Collapse.DEFAULTS = {
|
586 |
+
toggle: true
|
587 |
+
}
|
588 |
|
589 |
+
Collapse.prototype.dimension = function () {
|
590 |
+
var hasWidth = this.$element.hasClass('width')
|
591 |
+
return hasWidth ? 'width' : 'height'
|
592 |
+
}
|
593 |
|
594 |
+
Collapse.prototype.show = function () {
|
595 |
+
if (this.transitioning || this.$element.hasClass('in')) return
|
596 |
|
597 |
+
var activesData
|
598 |
+
var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing')
|
599 |
|
600 |
+
if (actives && actives.length) {
|
601 |
+
activesData = actives.data('bs.collapse')
|
602 |
+
if (activesData && activesData.transitioning) return
|
603 |
+
}
|
604 |
+
|
605 |
+
var startEvent = $.Event('show.bs.collapse')
|
606 |
+
this.$element.trigger(startEvent)
|
607 |
+
if (startEvent.isDefaultPrevented()) return
|
608 |
+
|
609 |
+
if (actives && actives.length) {
|
610 |
+
Plugin.call(actives, 'hide')
|
611 |
+
activesData || actives.data('bs.collapse', null)
|
612 |
+
}
|
613 |
|
614 |
+
var dimension = this.dimension()
|
615 |
|
616 |
+
this.$element
|
617 |
+
.removeClass('collapse')
|
618 |
+
.addClass('collapsing')[dimension](0)
|
619 |
+
.attr('aria-expanded', true)
|
620 |
|
621 |
+
this.$trigger
|
622 |
+
.removeClass('collapsed')
|
623 |
+
.attr('aria-expanded', true)
|
624 |
|
625 |
+
this.transitioning = 1
|
626 |
|
627 |
+
var complete = function () {
|
628 |
+
this.$element
|
629 |
+
.removeClass('collapsing')
|
630 |
+
.addClass('collapse in')[dimension]('')
|
631 |
+
this.transitioning = 0
|
632 |
+
this.$element
|
633 |
+
.trigger('shown.bs.collapse')
|
634 |
+
}
|
635 |
|
636 |
+
if (!$.support.transition) return complete.call(this)
|
637 |
|
638 |
+
var scrollSize = $.camelCase(['scroll', dimension].join('-'))
|
639 |
|
640 |
+
this.$element
|
641 |
+
.one('bsTransitionEnd', $.proxy(complete, this))
|
642 |
+
.emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize])
|
643 |
+
}
|
644 |
|
645 |
+
Collapse.prototype.hide = function () {
|
646 |
+
if (this.transitioning || !this.$element.hasClass('in')) return
|
647 |
|
648 |
+
var startEvent = $.Event('hide.bs.collapse')
|
649 |
+
this.$element.trigger(startEvent)
|
650 |
+
if (startEvent.isDefaultPrevented()) return
|
651 |
|
652 |
+
var dimension = this.dimension()
|
653 |
|
654 |
+
this.$element[dimension](this.$element[dimension]())[0].offsetHeight
|
655 |
|
656 |
+
this.$element
|
657 |
+
.addClass('collapsing')
|
658 |
+
.removeClass('collapse in')
|
659 |
+
.attr('aria-expanded', false)
|
660 |
|
661 |
+
this.$trigger
|
662 |
+
.addClass('collapsed')
|
663 |
+
.attr('aria-expanded', false)
|
664 |
|
665 |
+
this.transitioning = 1
|
666 |
|
667 |
+
var complete = function () {
|
668 |
+
this.transitioning = 0
|
669 |
+
this.$element
|
670 |
+
.removeClass('collapsing')
|
671 |
+
.addClass('collapse')
|
672 |
+
.trigger('hidden.bs.collapse')
|
673 |
+
}
|
674 |
|
675 |
+
if (!$.support.transition) return complete.call(this)
|
676 |
|
677 |
+
this.$element
|
678 |
+
[dimension](0)
|
679 |
+
.one('bsTransitionEnd', $.proxy(complete, this))
|
680 |
+
.emulateTransitionEnd(Collapse.TRANSITION_DURATION)
|
681 |
+
}
|
682 |
|
683 |
+
Collapse.prototype.toggle = function () {
|
684 |
+
this[this.$element.hasClass('in') ? 'hide' : 'show']()
|
685 |
+
}
|
686 |
|
687 |
+
Collapse.prototype.getParent = function () {
|
688 |
+
return $(this.options.parent)
|
689 |
+
.find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]')
|
690 |
+
.each($.proxy(function (i, element) {
|
691 |
+
var $element = $(element)
|
692 |
+
this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)
|
693 |
+
}, this))
|
694 |
+
.end()
|
695 |
+
}
|
696 |
|
697 |
+
Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {
|
698 |
+
var isOpen = $element.hasClass('in')
|
699 |
|
700 |
+
$element.attr('aria-expanded', isOpen)
|
701 |
+
$trigger
|
702 |
+
.toggleClass('collapsed', !isOpen)
|
703 |
+
.attr('aria-expanded', isOpen)
|
704 |
+
}
|
705 |
|
706 |
+
function getTargetFromTrigger($trigger) {
|
707 |
+
var href
|
708 |
+
var target = $trigger.attr('data-target')
|
709 |
+
|| (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7
|
710 |
|
711 |
+
return $(target)
|
712 |
+
}
|
713 |
|
714 |
|
715 |
+
// COLLAPSE PLUGIN DEFINITION
|
716 |
+
// ==========================
|
717 |
|
718 |
+
function Plugin(option) {
|
719 |
+
return this.each(function () {
|
720 |
+
var $this = $(this)
|
721 |
+
var data = $this.data('bs.collapse')
|
722 |
+
var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)
|
723 |
|
724 |
+
if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false
|
725 |
+
if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))
|
726 |
+
if (typeof option == 'string') data[option]()
|
727 |
+
})
|
728 |
+
}
|
729 |
|
730 |
+
var old = $.fn.collapse
|
731 |
|
732 |
+
$.fn.collapse = Plugin
|
733 |
+
$.fn.collapse.Constructor = Collapse
|
734 |
|
735 |
|
736 |
+
// COLLAPSE NO CONFLICT
|
737 |
+
// ====================
|
738 |
|
739 |
+
$.fn.collapse.noConflict = function () {
|
740 |
+
$.fn.collapse = old
|
741 |
+
return this
|
742 |
+
}
|
743 |
|
744 |
|
745 |
+
// COLLAPSE DATA-API
|
746 |
+
// =================
|
747 |
|
748 |
+
$(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) {
|
749 |
+
var $this = $(this)
|
750 |
|
751 |
+
if (!$this.attr('data-target')) e.preventDefault()
|
752 |
|
753 |
+
var $target = getTargetFromTrigger($this)
|
754 |
+
var data = $target.data('bs.collapse')
|
755 |
+
var option = data ? 'toggle' : $this.data()
|
756 |
|
757 |
+
Plugin.call($target, option)
|
758 |
+
})
|
759 |
|
760 |
}(jQuery);
|
761 |
|
769 |
|
770 |
|
771 |
+function ($) {
|
772 |
+
'use strict';
|
773 |
|
774 |
+
// DROPDOWN CLASS DEFINITION
|
775 |
+
// =========================
|
776 |
|
777 |
+
var backdrop = '.dropdown-backdrop'
|
778 |
+
var toggle = '[data-toggle="dropdown"]'
|
779 |
+
var Dropdown = function (element) {
|
780 |
+
$(element).on('click.bs.dropdown', this.toggle)
|
781 |
+
}
|
782 |
|
783 |
+
Dropdown.VERSION = '3.3.7'
|
784 |
|
785 |
+
function getParent($this) {
|
786 |
+
var selector = $this.attr('data-target')
|
787 |
|
788 |
+
if (!selector) {
|
789 |
+
selector = $this.attr('href')
|
790 |
+
selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
|
791 |
+
}
|
792 |
|
793 |
+
var $parent = selector && $(selector)
|
794 |
|
795 |
+
return $parent && $parent.length ? $parent : $this.parent()
|
796 |
+
}
|
797 |
|
798 |
+
function clearMenus(e) {
|
799 |
+
if (e && e.which === 3) return
|
800 |
+
$(backdrop).remove()
|
801 |
+
$(toggle).each(function () {
|
802 |
+
var $this = $(this)
|
803 |
+
var $parent = getParent($this)
|
804 |
+
var relatedTarget = {relatedTarget: this}
|
805 |
|
806 |
+
if (!$parent.hasClass('open')) return
|
807 |
|
808 |
+
if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return
|
809 |
|
810 |
+
$parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))
|
811 |
|
812 |
+
if (e.isDefaultPrevented()) return
|
813 |
|
814 |
+
$this.attr('aria-expanded', 'false')
|
815 |
+
$parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget))
|
816 |
+
})
|
817 |
+
}
|
818 |
|
819 |
+
Dropdown.prototype.toggle = function (e) {
|
820 |
+
var $this = $(this)
|
821 |
|
822 |
+
if ($this.is('.disabled, :disabled')) return
|
823 |
|
824 |
+
var $parent = getParent($this)
|
825 |
+
var isActive = $parent.hasClass('open')
|
826 |
|
827 |
+
clearMenus()
|
828 |
|
829 |
+
if (!isActive) {
|
830 |
+
if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {
|
831 |
+
// if mobile we use a backdrop because click events don't delegate
|
832 |
+
$(document.createElement('div'))
|
833 |
+
.addClass('dropdown-backdrop')
|
834 |
+
.insertAfter($(this))
|
835 |
+
.on('click', clearMenus)
|
836 |
+
}
|
837 |
|
838 |
+
var relatedTarget = {relatedTarget: this}
|
839 |
+
$parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))
|
840 |
|
841 |
+
if (e.isDefaultPrevented()) return
|
842 |
|
843 |
+
$this
|
844 |
+
.trigger('focus')
|
845 |
+
.attr('aria-expanded', 'true')
|
846 |
|
847 |
+
$parent
|
848 |
+
.toggleClass('open')
|
849 |
+
.trigger($.Event('shown.bs.dropdown', relatedTarget))
|
850 |
+
}
|
851 |
|
852 |
+
return false
|
853 |
+
}
|
854 |
|
855 |
+
Dropdown.prototype.keydown = function (e) {
|
856 |
+
if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return
|
857 |
|
858 |
+
var $this = $(this)
|
859 |
|
860 |
+
e.preventDefault()
|
861 |
+
e.stopPropagation()
|
862 |
|
863 |
+
if ($this.is('.disabled, :disabled')) return
|
864 |
|
865 |
+
var $parent = getParent($this)
|
866 |
+
var isActive = $parent.hasClass('open')
|
867 |
|
868 |
+
if (!isActive && e.which != 27 || isActive && e.which == 27) {
|
869 |
+
if (e.which == 27) $parent.find(toggle).trigger('focus')
|
870 |
+
return $this.trigger('click')
|
871 |
+
}
|
872 |
|
873 |
+
var desc = ' li:not(.disabled):visible a'
|
874 |
+
var $items = $parent.find('.dropdown-menu' + desc)
|
875 |
|
876 |
+
if (!$items.length) return
|
877 |
|
878 |
+
var index = $items.index(e.target)
|
879 |
|
880 |
+
if (e.which == 38 && index > 0) index-- // up
|
881 |
+
if (e.which == 40 && index < $items.length - 1) index++ // down
|
882 |
+
if (!~index) index = 0
|
883 |
|
884 |
+
$items.eq(index).trigger('focus')
|
885 |
+
}
|
886 |
|
887 |
|
888 |
+
// DROPDOWN PLUGIN DEFINITION
|
889 |
+
// ==========================
|
890 |
|
891 |
+
function Plugin(option) {
|
892 |
+
return this.each(function () {
|
893 |
+
var $this = $(this)
|
894 |
+
var data = $this.data('bs.dropdown')
|
895 |
|
896 |
+
if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))
|
897 |
+
if (typeof option == 'string') data[option].call($this)
|
898 |
+
})
|
899 |
+
}
|
900 |
|
901 |
+
var old = $.fn.dropdown
|
902 |
|
903 |
+
$.fn.dropdown = Plugin
|
904 |
+
$.fn.dropdown.Constructor = Dropdown
|
905 |
|
906 |
|
907 |
+
// DROPDOWN NO CONFLICT
|
908 |
+
// ====================
|
909 |
|
910 |
+
$.fn.dropdown.noConflict = function () {
|
911 |
+
$.fn.dropdown = old
|
912 |
+
return this
|
913 |
+
}
|
914 |
|
915 |
|
916 |
+
// APPLY TO STANDARD DROPDOWN ELEMENTS
|
917 |
+
// ===================================
|
918 |
|
919 |
+
$(document)
|
920 |
+
.on('click.bs.dropdown.data-api', clearMenus)
|
921 |
+
.on('click.bs.dropdown.data-api', '.dropdown form', function (e) {
|
922 |
+
e.stopPropagation()
|
923 |
+
})
|
924 |
+
.on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)
|
925 |
+
.on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)
|
926 |
+
.on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown)
|
927 |
|
928 |
}(jQuery);
|
929 |
|
937 |
|
938 |
|
939 |
+function ($) {
|
940 |
+
'use strict';
|
941 |
|
942 |
+
// MODAL CLASS DEFINITION
|
943 |
+
// ======================
|
944 |
|
945 |
+
var Modal = function (element, options) {
|
946 |
+
this.options = options
|
947 |
+
this.$body = $(document.body)
|
948 |
+
this.$element = $(element)
|
949 |
+
this.$dialog = this.$element.find('.modal-dialog')
|
950 |
+
this.$backdrop = null
|
951 |
+
this.isShown = null
|
952 |
+
this.originalBodyPad = null
|
953 |
+
this.scrollbarWidth = 0
|
954 |
+
this.ignoreBackdropClick = false
|
955 |
|
956 |
+
if (this.options.remote) {
|
957 |
+
this.$element
|
958 |
+
.find('.modal-content')
|
959 |
+
.load(this.options.remote, $.proxy(function () {
|
960 |
+
this.$element.trigger('loaded.bs.modal')
|
961 |
+
}, this))
|
962 |
+
}
|
963 |
+
}
|
964 |
|
965 |
+
Modal.VERSION = '3.3.7'
|
966 |
|
967 |
+
Modal.TRANSITION_DURATION = 300
|
968 |
+
Modal.BACKDROP_TRANSITION_DURATION = 150
|
969 |
|
970 |
+
Modal.DEFAULTS = {
|
971 |
+
backdrop: true,
|
972 |
+
keyboard: true,
|
973 |
+
show: true
|
974 |
+
}
|
975 |
|
976 |
+
Modal.prototype.toggle = function (_relatedTarget) {
|
977 |
+
return this.isShown ? this.hide() : this.show(_relatedTarget)
|
978 |
+
}
|
979 |
|
980 |
+
Modal.prototype.show = function (_relatedTarget) {
|
981 |
+
var that = this
|
982 |
+
var e = $.Event('show.bs.modal', {relatedTarget: _relatedTarget})
|
983 |
|
984 |
+
this.$element.trigger(e)
|
985 |
|
986 |
+
if (this.isShown || e.isDefaultPrevented()) return
|
987 |
+
|
988 |
+
this.isShown = true
|
989 |
|
990 |
+
this.checkScrollbar()
|
991 |
+
this.setScrollbar()
|
992 |
+
this.$body.addClass('modal-open')
|
993 |
+
|
994 |
+
this.escape()
|
995 |
+
this.resize()
|
996 |
+
|
997 |
+
this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this))
|
998 |
+
|
999 |
+
this.$dialog.on('mousedown.dismiss.bs.modal', function () {
|
1000 |
+
that.$element.one('mouseup.dismiss.bs.modal', function (e) {
|
1001 |
+
if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true
|
1002 |
+
})
|
1003 |
+
})
|
1004 |
+
|
1005 |
+
this.backdrop(function () {
|
1006 |
+
var transition = $.support.transition && that.$element.hasClass('fade')
|
1007 |
+
|
1008 |
+
if (!that.$element.parent().length) {
|
1009 |
+
that.$element.appendTo(that.$body) // don't move modals dom position
|
1010 |
+
}
|
1011 |
+
|
1012 |
+
that.$element
|
1013 |
+
.show()
|
1014 |
+
.scrollTop(0)
|
1015 |
+
|
1016 |
+
that.adjustDialog()
|
1017 |
+
|
1018 |
+
if (transition) {
|
1019 |
+
that.$element[0].offsetWidth // force reflow
|
1020 |
+
}
|
1021 |
+
|
1022 |
+
that.$element.addClass('in')
|
1023 |
+
|
1024 |
+
that.enforceFocus()
|
1025 |
+
|
1026 |
+
var e = $.Event('shown.bs.modal', {relatedTarget: _relatedTarget})
|
1027 |
+
|
1028 |
+
transition ?
|
1029 |
+
that.$dialog // wait for modal to slide in
|
1030 |
+
.one('bsTransitionEnd', function () {
|
1031 |
+
that.$element.trigger('focus').trigger(e)
|
1032 |
+
})
|
1033 |
+
.emulateTransitionEnd(Modal.TRANSITION_DURATION) :
|
1034 |
+
that.$element.trigger('focus').trigger(e)
|
1035 |
+
})
|
1036 |
+
}
|
1037 |
+
|
1038 |
+
Modal.prototype.hide = function (e) {
|
1039 |
+
if (e) e.preventDefault()
|
1040 |
+
|
1041 |
+
e = $.Event('hide.bs.modal')
|
1042 |
+
|
1043 |
+
this.$element.trigger(e)
|
1044 |
+
|
1045 |
+
if (!this.isShown || e.isDefaultPrevented()) return
|
1046 |
+
|
1047 |
+
this.isShown = false
|
1048 |
+
|
1049 |
+
this.escape()
|
1050 |
+
this.resize()
|
1051 |
+
|
1052 |
+
$(document).off('focusin.bs.modal')
|
1053 |
+
|
1054 |
+
this.$element
|
1055 |
+
.removeClass('in')
|
1056 |
+
.off('click.dismiss.bs.modal')
|
1057 |
+
.off('mouseup.dismiss.bs.modal')
|
1058 |
+
|
1059 |
+
this.$dialog.off('mousedown.dismiss.bs.modal')
|
1060 |
+
|
1061 |
+
$.support.transition && this.$element.hasClass('fade') ?
|
1062 |
+
this.$element
|
1063 |
+
.one('bsTransitionEnd', $.proxy(this.hideModal, this))
|
1064 |
+
.emulateTransitionEnd(Modal.TRANSITION_DURATION) :
|
1065 |
+
this.hideModal()
|
1066 |
+
}
|
1067 |
+
|
1068 |
+
Modal.prototype.enforceFocus = function () {
|
1069 |
+
$(document)
|
1070 |
+
.off('focusin.bs.modal') // guard against infinite focus loop
|
1071 |
+
.on('focusin.bs.modal', $.proxy(function (e) {
|
1072 |
+
if (document !== e.target &&
|
1073 |
+
this.$element[0] !== e.target &&
|
1074 |
+
!this.$element.has(e.target).length) {
|
1075 |
+
this.$element.trigger('focus')
|
1076 |
+
}
|
1077 |
+
}, this))
|
1078 |
+
}
|
1079 |
+
|
1080 |
+
Modal.prototype.escape = function () {
|
1081 |
+
if (this.isShown && this.options.keyboard) {
|
1082 |
+
this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {
|
1083 |
+
e.which == 27 && this.hide()
|
1084 |
+
}, this))
|
1085 |
+
} else if (!this.isShown) {
|
1086 |
+
this.$element.off('keydown.dismiss.bs.modal')
|
1087 |
+
}
|
1088 |
+
}
|
1089 |
+
|
1090 |
+
Modal.prototype.resize = function () {
|
1091 |
+
if (this.isShown) {
|
1092 |
+
$(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))
|
1093 |
+
} else {
|
1094 |
+
$(window).off('resize.bs.modal')
|
1095 |
+
}
|
1096 |
+
}
|
1097 |
+
|
1098 |
+
Modal.prototype.hideModal = function () {
|
1099 |
+
var that = this
|
1100 |
+
this.$element.hide()
|
1101 |
+
this.backdrop(function () {
|
1102 |
+
that.$body.removeClass('modal-open')
|
1103 |
+
that.resetAdjustments()
|
1104 |
+
that.resetScrollbar()
|
1105 |
+
that.$element.trigger('hidden.bs.modal')
|
1106 |
+
})
|
1107 |
+
}
|
1108 |
+
|
1109 |
+
Modal.prototype.removeBackdrop = function () {
|
1110 |
+
this.$backdrop && this.$backdrop.remove()
|
1111 |
+
this.$backdrop = null
|
1112 |
+
}
|
1113 |
+
|
1114 |
+
Modal.prototype.backdrop = function (callback) {
|
1115 |
+
var that = this
|
1116 |
+
var animate = this.$element.hasClass('fade') ? 'fade' : ''
|
1117 |
+
|
1118 |
+
if (this.isShown && this.options.backdrop) {
|
1119 |
+
var doAnimate = $.support.transition && animate
|
1120 |
+
|
1121 |
+
this.$backdrop = $(document.createElement('div'))
|
1122 |
+
.addClass('modal-backdrop ' + animate)
|
1123 |
+
.appendTo(this.$body)
|
1124 |
+
|
1125 |
+
this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {
|
1126 |
+
if (this.ignoreBackdropClick) {
|
1127 |
+
this.ignoreBackdropClick = false
|
1128 |
+
return
|
1129 |
+
}
|
1130 |
+
if (e.target !== e.currentTarget) return
|
1131 |
+
this.options.backdrop == 'static'
|
1132 |
+
? this.$element[0].focus()
|
1133 |
+
: this.hide()
|
1134 |
+
}, this))
|
1135 |
+
|
1136 |
+
if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
|
1137 |
+
|
1138 |
+
this.$backdrop.addClass('in')
|
1139 |
+
|
1140 |
+
if (!callback) return
|
1141 |
+
|
1142 |
+
doAnimate ?
|
1143 |
+
this.$backdrop
|
1144 |
+
.one('bsTransitionEnd', callback)
|
1145 |
+
.emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :
|
1146 |
+
callback()
|
1147 |
+
|
1148 |
+
} else if (!this.isShown && this.$backdrop) {
|
1149 |
+
this.$backdrop.removeClass('in')
|
1150 |
+
|
1151 |
+
var callbackRemove = function () {
|
1152 |
+
that.removeBackdrop()
|
1153 |
+
callback && callback()
|
1154 |
+
}
|
1155 |
+
$.support.transition && this.$element.hasClass('fade') ?
|
1156 |
+
this.$backdrop
|
1157 |
+
.one('bsTransitionEnd', callbackRemove)
|
1158 |
+
.emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :
|
1159 |
+
callbackRemove()
|
1160 |
+
|
1161 |
+
} else if (callback) {
|
1162 |
+
callback()
|
1163 |
+
}
|
1164 |
+
}
|
1165 |
+
|
1166 |
+
// these following methods are used to handle overflowing modals
|
1167 |
+
|
1168 |
+
Modal.prototype.handleUpdate = function () {
|
1169 |
+
this.adjustDialog()
|
1170 |
+
}
|
1171 |
+
|
1172 |
+
Modal.prototype.adjustDialog = function () {
|
1173 |
+
var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight
|
1174 |
+
|
1175 |
+
this.$element.css({
|
1176 |
+
paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',
|
1177 |
+
paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''
|
1178 |
+
})
|
1179 |
+
}
|
1180 |
+
|
1181 |
+
Modal.prototype.resetAdjustments = function () {
|
1182 |
+
this.$element.css({
|
1183 |
+
paddingLeft: '',
|
1184 |
+
paddingRight: ''
|
1185 |
+
})
|
1186 |
+
}
|
1187 |
+
|
1188 |
+
Modal.prototype.checkScrollbar = function () {
|
1189 |
+
var fullWindowWidth = window.innerWidth
|
1190 |
+
if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8
|
1191 |
+
var documentElementRect = document.documentElement.getBoundingClientRect()
|
1192 |
+
fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left)
|
1193 |
+
}
|
1194 |
+
this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth
|
1195 |
+
this.scrollbarWidth = this.measureScrollbar()
|
1196 |
+
}
|
1197 |
+
|
1198 |
+
Modal.prototype.setScrollbar = function () {
|
1199 |
+
var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)
|
1200 |
+
this.originalBodyPad = document.body.style.paddingRight || ''
|
1201 |
+
if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth)
|
1202 |
+
}
|
1203 |
+
|
1204 |
+
Modal.prototype.resetScrollbar = function () {
|
1205 |
+
this.$body.css('padding-right', this.originalBodyPad)
|
1206 |
+
}
|
1207 |
+
|
1208 |
+
Modal.prototype.measureScrollbar = function () { // thx walsh
|
1209 |
+
var scrollDiv = document.createElement('div')
|
1210 |
+
scrollDiv.className = 'modal-scrollbar-measure'
|
1211 |
+
this.$body.append(scrollDiv)
|
1212 |
+
var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth
|
1213 |
+
this.$body[0].removeChild(scrollDiv)
|
1214 |
+
return scrollbarWidth
|
1215 |
+
}
|
1216 |
+
|
1217 |
+
|
1218 |
+
// MODAL PLUGIN DEFINITION
|
1219 |
+
// =======================
|
1220 |
+
|
1221 |
+
function Plugin(option, _relatedTarget) {
|
1222 |
+
return this.each(function () {
|
1223 |
+
var $this = $(this)
|
1224 |
+
var data = $this.data('bs.modal')
|
1225 |
+
var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)
|
1226 |
+
|
1227 |
+
if (!data) $this.data('bs.modal', (data = new Modal(this, options)))
|
1228 |
+
if (typeof option == 'string') data[option](_relatedTarget)
|
1229 |
+
else if (options.show) data.show(_relatedTarget)
|
1230 |
+
})
|
1231 |
+
}
|
1232 |
+
|
1233 |
+
var old = $.fn.modal
|
1234 |
+
|
1235 |
+
$.fn.modal = Plugin
|
1236 |
+
$.fn.modal.Constructor = Modal
|
1237 |
+
|
1238 |
+
|
1239 |
+
// MODAL NO CONFLICT
|
1240 |
+
// =================
|
1241 |
+
|
1242 |
+
$.fn.modal.noConflict = function () {
|
1243 |
+
$.fn.modal = old
|
1244 |
+
return this
|
1245 |
+
}
|
1246 |
+
|
1247 |
+
|
1248 |
+
// MODAL DATA-API
|
1249 |
+
// ==============
|
1250 |
+
|
1251 |
+
$(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) {
|
1252 |
+
var $this = $(this)
|
1253 |
+
var href = $this.attr('href')
|
1254 |
+
var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) // strip for ie7
|
1255 |
+
var option = $target.data('bs.modal') ? 'toggle' : $.extend({remote: !/#/.test(href) && href}, $target.data(), $this.data())
|
1256 |
+
|
1257 |
+
if ($this.is('a')) e.preventDefault()
|
1258 |
+
|
1259 |
+
$target.one('show.bs.modal', function (showEvent) {
|
1260 |
+
if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown
|
1261 |
+
$target.one('hidden.bs.modal', function () {
|
1262 |
+
$this.is(':visible') && $this.trigger('focus')
|
1263 |
+
})
|
1264 |
+
})
|
1265 |
+
Plugin.call($target, option, this)
|
1266 |
+
})
|
1267 |
|
1268 |
}(jQuery);
|
1269 |
|
1278 |
|
1279 |
|
1280 |
+function ($) {
|
1281 |
+
'use strict';
|
1282 |
+
|
1283 |
+
// TOOLTIP PUBLIC CLASS DEFINITION
|
1284 |
+
// ===============================
|
1285 |
+
|
1286 |
+
var Tooltip = function (element, options) {
|
1287 |
+
this.type = null
|
1288 |
+
this.options = null
|
1289 |
+
this.enabled = null
|
1290 |
+
this.timeout = null
|
1291 |
+
this.hoverState = null
|
1292 |
+
this.$element = null
|
1293 |
+
this.inState = null
|
1294 |
+
|
1295 |
+
this.init('tooltip', element, options)
|
1296 |
+
}
|
1297 |
+
|
1298 |
+
Tooltip.VERSION = '3.3.7'
|
1299 |
+
|
1300 |
+
Tooltip.TRANSITION_DURATION = 150
|
1301 |
+
|
1302 |
+
Tooltip.DEFAULTS = {
|
1303 |
+
animation: true,
|
1304 |
+
placement: 'top',
|
1305 |
+
selector: false,
|
1306 |
+
template: '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',
|
1307 |
+
trigger: 'hover focus',
|
1308 |
+
title: '',
|
1309 |
+
delay: 0,
|
1310 |
+
html: false,
|
1311 |
+
container: false,
|
1312 |
+
viewport: {
|
1313 |
+
selector: 'body',
|
1314 |
+
padding: 0
|
1315 |
+
}
|
1316 |
+
}
|
1317 |
+
|
1318 |
+
Tooltip.prototype.init = function (type, element, options) {
|
1319 |
+
this.enabled = true
|
1320 |
+
this.type = type
|
1321 |
+
this.$element = $(element)
|
1322 |
+
this.options = this.getOptions(options)
|
1323 |
+
this.$viewport = this.options.viewport && $($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport))
|
1324 |
+
this.inState = {click: false, hover: false, focus: false}
|
1325 |
+
|
1326 |
+
if (this.$element[0] instanceof document.constructor && !this.options.selector) {
|
1327 |
+
throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!')
|
1328 |
+
}
|
1329 |
+
|
1330 |
+
var triggers = this.options.trigger.split(' ')
|
1331 |
+
|
1332 |
+
for (var i = triggers.length; i--;) {
|
1333 |
+
var trigger = triggers[i]
|
1334 |
+
|
1335 |
+
if (trigger == 'click') {
|
1336 |
+
this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))
|
1337 |
+
} else if (trigger != 'manual') {
|
1338 |
+
var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin'
|
1339 |
+
var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'
|
1340 |
+
|
1341 |
+
this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))
|
1342 |
+
this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))
|
1343 |
+
}
|
1344 |
+
}
|
1345 |
+
|
1346 |
+
this.options.selector ?
|
1347 |
+
(this._options = $.extend({}, this.options, {trigger: 'manual', selector: ''})) :
|
1348 |
+
this.fixTitle()
|
1349 |
+
}
|
1350 |
+
|
1351 |
+
Tooltip.prototype.getDefaults = function () {
|
1352 |
+
return Tooltip.DEFAULTS
|
1353 |
+
}
|
1354 |
|
1355 |
+
Tooltip.prototype.getOptions = function (options) {
|
1356 |
+
options = $.extend({}, this.getDefaults(), this.$element.data(), options)
|
1357 |
|
1358 |
+
if (options.delay && typeof options.delay == 'number') {
|
1359 |
+
options.delay = {
|
1360 |
+
show: options.delay,
|
1361 |
+
hide: options.delay
|
1362 |
+
}
|
1363 |
+
}
|
1364 |
|
1365 |
+
return options
|
1366 |
+
}
|
1367 |
|
1368 |
+
Tooltip.prototype.getDelegateOptions = function () {
|
1369 |
+
var options = {}
|
1370 |
+
var defaults = this.getDefaults()
|
1371 |
|
1372 |
+
this._options && $.each(this._options, function (key, value) {
|
1373 |
+
if (defaults[key] != value) options[key] = value
|
1374 |
+
})
|
1375 |
|
1376 |
+
return options
|
1377 |
+
}
|
1378 |
|
1379 |
+
Tooltip.prototype.enter = function (obj) {
|
1380 |
+
var self = obj instanceof this.constructor ?
|
1381 |
+
obj : $(obj.currentTarget).data('bs.' + this.type)
|
1382 |
|
1383 |
+
if (!self) {
|
1384 |
+
self = new this.constructor(obj.currentTarget, this.getDelegateOptions())
|
1385 |
+
$(obj.currentTarget).data('bs.' + this.type, self)
|
1386 |
+
}
|
1387 |
|
1388 |
+
if (obj instanceof $.Event) {
|
1389 |
+
self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true
|
1390 |
+
}
|
1391 |
|
1392 |
+
if (self.tip().hasClass('in') || self.hoverState == 'in') {
|
1393 |
+
self.hoverState = 'in'
|
1394 |
+
return
|
1395 |
+
}
|
1396 |
|
1397 |
+
clearTimeout(self.timeout)
|
1398 |
|
1399 |
+
self.hoverState = 'in'
|
1400 |
|
1401 |
+
if (!self.options.delay || !self.options.delay.show) return self.show()
|
1402 |
|
1403 |
+
self.timeout = setTimeout(function () {
|
1404 |
+
if (self.hoverState == 'in') self.show()
|
1405 |
+
}, self.options.delay.show)
|
1406 |
+
}
|
1407 |
|
1408 |
+
Tooltip.prototype.isInStateTrue = function () {
|
1409 |
+
for (var key in this.inState) {
|
1410 |
+
if (this.inState[key]) return true
|
1411 |
+
}
|
1412 |
|
1413 |
+
return false
|
1414 |
+
}
|
1415 |
|
1416 |
+
Tooltip.prototype.leave = function (obj) {
|
1417 |
+
var self = obj instanceof this.constructor ?
|
1418 |
+
obj : $(obj.currentTarget).data('bs.' + this.type)
|
1419 |
|
1420 |
+
if (!self) {
|
1421 |
+
self = new this.constructor(obj.currentTarget, this.getDelegateOptions())
|
1422 |
+
$(obj.currentTarget).data('bs.' + this.type, self)
|
1423 |
+
}
|
1424 |
|
1425 |
+
if (obj instanceof $.Event) {
|
1426 |
+
self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false
|
1427 |
+
}
|
1428 |
|
1429 |
+
if (self.isInStateTrue()) return
|
1430 |
|
1431 |
+
clearTimeout(self.timeout)
|
1432 |
|
1433 |
+
self.hoverState = 'out'
|
1434 |
|
1435 |
+
if (!self.options.delay || !self.options.delay.hide) return self.hide()
|
1436 |
|
1437 |
+
self.timeout = setTimeout(function () {
|
1438 |
+
if (self.hoverState == 'out') self.hide()
|
1439 |
+
}, self.options.delay.hide)
|
1440 |
+
}
|
1441 |
|
1442 |
+
Tooltip.prototype.show = function () {
|
1443 |
+
var e = $.Event('show.bs.' + this.type)
|
1444 |
|
1445 |
+
if (this.hasContent() && this.enabled) {
|
1446 |
+
this.$element.trigger(e)
|
1447 |
|
1448 |
+
var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0])
|
1449 |
+
if (e.isDefaultPrevented() || !inDom) return
|
1450 |
+
var that = this
|
1451 |
|
1452 |
+
var $tip = this.tip()
|
1453 |
|
1454 |
+
var tipId = this.getUID(this.type)
|
1455 |
|
1456 |
+
this.setContent()
|
1457 |
+
$tip.attr('id', tipId)
|
1458 |
+
this.$element.attr('aria-describedby', tipId)
|
1459 |
|
1460 |
+
if (this.options.animation) $tip.addClass('fade')
|
1461 |
|
1462 |
+
var placement = typeof this.options.placement == 'function' ?
|
1463 |
+
this.options.placement.call(this, $tip[0], this.$element[0]) :
|
1464 |
+
this.options.placement
|
1465 |
|
1466 |
+
var autoToken = /\s?auto?\s?/i
|
1467 |
+
var autoPlace = autoToken.test(placement)
|
1468 |
+
if (autoPlace) placement = placement.replace(autoToken, '') || 'top'
|
1469 |
|
1470 |
+
$tip
|
1471 |
+
.detach()
|
1472 |
+
.css({top: 0, left: 0, display: 'block'})
|
1473 |
+
.addClass(placement)
|
1474 |
+
.data('bs.' + this.type, this)
|
1475 |
|
1476 |
+
this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)
|
1477 |
+
this.$element.trigger('inserted.bs.' + this.type)
|
1478 |
|
1479 |
+
var pos = this.getPosition()
|
1480 |
+
var actualWidth = $tip[0].offsetWidth
|
1481 |
+
var actualHeight = $tip[0].offsetHeight
|
1482 |
|
1483 |
+
if (autoPlace) {
|
1484 |
+
var orgPlacement = placement
|
1485 |
+
var viewportDim = this.getPosition(this.$viewport)
|
1486 |
|
1487 |
+
placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top' :
|
1488 |
+
placement == 'top' && pos.top - actualHeight < viewportDim.top ? 'bottom' :
|
1489 |
+
placement == 'right' && pos.right + actualWidth > viewportDim.width ? 'left' :
|
1490 |
+
placement == 'left' && pos.left - actualWidth < viewportDim.left ? 'right' :
|
1491 |
+
placement
|
1492 |
|
1493 |
+
$tip
|
1494 |
+
.removeClass(orgPlacement)
|
1495 |
+
.addClass(placement)
|
1496 |
+
}
|
1497 |
|
1498 |
+
var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)
|
1499 |
|
1500 |
+
this.applyPlacement(calculatedOffset, placement)
|
1501 |
|
1502 |
+
var complete = function () {
|
1503 |
+
var prevHoverState = that.hoverState
|
1504 |
+
that.$element.trigger('shown.bs.' + that.type)
|
1505 |
+
that.hoverState = null
|
1506 |
|
1507 |
+
if (prevHoverState == 'out') that.leave(that)
|
1508 |
+
}
|
1509 |
|
1510 |
+
$.support.transition && this.$tip.hasClass('fade') ?
|
1511 |
+
$tip
|
1512 |
+
.one('bsTransitionEnd', complete)
|
1513 |
+
.emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :
|
1514 |
+
complete()
|
1515 |
+
}
|
1516 |
+
}
|
1517 |
|
1518 |
+
Tooltip.prototype.applyPlacement = function (offset, placement) {
|
1519 |
+
var $tip = this.tip()
|
1520 |
+
var width = $tip[0].offsetWidth
|
1521 |
+
var height = $tip[0].offsetHeight
|
1522 |
|
1523 |
+
// manually read margins because getBoundingClientRect includes difference
|
1524 |
+
var marginTop = parseInt($tip.css('margin-top'), 10)
|
1525 |
+
var marginLeft = parseInt($tip.css('margin-left'), 10)
|
1526 |
|
1527 |
+
// we must check for NaN for ie 8/9
|
1528 |
+
if (isNaN(marginTop)) marginTop = 0
|
1529 |
+
if (isNaN(marginLeft)) marginLeft = 0
|
1530 |
|
1531 |
+
offset.top += marginTop
|
1532 |
+
offset.left += marginLeft
|
1533 |
|
1534 |
+
// $.fn.offset doesn't round pixel values
|
1535 |
+
// so we use setOffset directly with our own function B-0
|
1536 |
+
$.offset.setOffset($tip[0], $.extend({
|
1537 |
+
using: function (props) {
|
1538 |
+
$tip.css({
|
1539 |
+
top: Math.round(props.top),
|
1540 |
+
left: Math.round(props.left)
|
1541 |
+
})
|
1542 |
+
}
|
1543 |
+
}, offset), 0)
|
1544 |
+
|
1545 |
+
$tip.addClass('in')
|
1546 |
+
|
1547 |
+
// check to see if placing tip in new offset caused the tip to resize itself
|
1548 |
+
var actualWidth = $tip[0].offsetWidth
|
1549 |
+
var actualHeight = $tip[0].offsetHeight
|
1550 |
+
|
1551 |
+
if (placement == 'top' && actualHeight != height) {
|
1552 |
+
offset.top = offset.top + height - actualHeight
|
1553 |
+
}
|
1554 |
+
|
1555 |
+
var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight)
|
1556 |
+
|
1557 |
+
if (delta.left) offset.left += delta.left
|
1558 |
+
else offset.top += delta.top
|
1559 |
+
|
1560 |
+
var isVertical = /top|bottom/.test(placement)
|
1561 |
+
var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight
|
1562 |
+
var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight'
|
1563 |
+
|
1564 |
+
$tip.offset(offset)
|
1565 |
+
this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical)
|
1566 |
+
}
|
1567 |
+
|
1568 |
+
Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) {
|
1569 |
+
this.arrow()
|
1570 |
+
.css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')
|
1571 |
+
.css(isVertical ? 'top' : 'left', '')
|
1572 |
+
}
|
1573 |
+
|
1574 |
+
Tooltip.prototype.setContent = function () {
|
1575 |
+
var $tip = this.tip()
|
1576 |
+
var title = this.getTitle()
|
1577 |
+
|
1578 |
+
$tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)
|
1579 |
+
$tip.removeClass('fade in top bottom left right')
|
1580 |
+
}
|
1581 |
+
|
1582 |
+
Tooltip.prototype.hide = function (callback) {
|
1583 |
+
var that = this
|
1584 |
+
var $tip = $(this.$tip)
|
1585 |
+
var e = $.Event('hide.bs.' + this.type)
|
1586 |
+
|
1587 |
+
function complete() {
|
1588 |
+
if (that.hoverState != 'in') $tip.detach()
|
1589 |
+
if (that.$element) { // TODO: Check whether guarding this code with this `if` is really necessary.
|
1590 |
+
that.$element
|
1591 |
+
.removeAttr('aria-describedby')
|
1592 |
+
.trigger('hidden.bs.' + that.type)
|
1593 |
+
}
|
1594 |
+
callback && callback()
|
1595 |
+
}
|
1596 |
+
|
1597 |
+
this.$element.trigger(e)
|
1598 |
+
|
1599 |
+
if (e.isDefaultPrevented()) return
|
1600 |
+
|
1601 |
+
$tip.removeClass('in')
|
1602 |
+
|
1603 |
+
$.support.transition && $tip.hasClass('fade') ?
|
1604 |
+
$tip
|
1605 |
+
.one('bsTransitionEnd', complete)
|
1606 |
+
.emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :
|
1607 |
+
complete()
|
1608 |
+
|
1609 |
+
this.hoverState = null
|
1610 |
+
|
1611 |
+
return this
|
1612 |
+
}
|
1613 |
+
|
1614 |
+
Tooltip.prototype.fixTitle = function () {
|
1615 |
+
var $e = this.$element
|
1616 |
+
if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') {
|
1617 |
+
$e.attr('data-original-title', $e.attr('title') || '').attr('title', '')
|
1618 |
+
}
|
1619 |
+
}
|
1620 |
+
|
1621 |
+
Tooltip.prototype.hasContent = function () {
|
1622 |
+
return this.getTitle()
|
1623 |
+
}
|
1624 |
+
|
1625 |
+
Tooltip.prototype.getPosition = function ($element) {
|
1626 |
+
$element = $element || this.$element
|
1627 |
+
|
1628 |
+
var el = $element[0]
|
1629 |
+
var isBody = el.tagName == 'BODY'
|
1630 |
+
|
1631 |
+
var elRect = el.getBoundingClientRect()
|
1632 |
+
if (elRect.width == null) {
|
1633 |
+
// width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093
|
1634 |
+
elRect = $.extend({}, elRect, {width: elRect.right - elRect.left, height: elRect.bottom - elRect.top})
|
1635 |
+
}
|
1636 |
+
var isSvg = window.SVGElement && el instanceof window.SVGElement
|
1637 |
+
// Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3.
|
1638 |
+
// See https://github.com/twbs/bootstrap/issues/20280
|
1639 |
+
var elOffset = isBody ? {top: 0, left: 0} : (isSvg ? null : $element.offset())
|
1640 |
+
var scroll = {scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop()}
|
1641 |
+
var outerDims = isBody ? {width: $(window).width(), height: $(window).height()} : null
|
1642 |
+
|
1643 |
+
return $.extend({}, elRect, scroll, outerDims, elOffset)
|
1644 |
+
}
|
1645 |
+
|
1646 |
+
Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {
|
1647 |
+
return placement == 'bottom' ? {top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2} :
|
1648 |
+
placement == 'top' ? {top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2} :
|
1649 |
+
placement == 'left' ? {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth} :
|
1650 |
+
/* placement == 'right' */ {
|
1651 |
+
top: pos.top + pos.height / 2 - actualHeight / 2,
|
1652 |
+
left: pos.left + pos.width
|
1653 |
+
}
|
1654 |
+
|
1655 |
+
}
|
1656 |
+
|
1657 |
+
Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) {
|
1658 |
+
var delta = {top: 0, left: 0}
|
1659 |
+
if (!this.$viewport) return delta
|
1660 |
+
|
1661 |
+
var viewportPadding = this.options.viewport && this.options.viewport.padding || 0
|
1662 |
+
var viewportDimensions = this.getPosition(this.$viewport)
|
1663 |
+
|
1664 |
+
if (/right|left/.test(placement)) {
|
1665 |
+
var topEdgeOffset = pos.top - viewportPadding - viewportDimensions.scroll
|
1666 |
+
var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight
|
1667 |
+
if (topEdgeOffset < viewportDimensions.top) { // top overflow
|
1668 |
+
delta.top = viewportDimensions.top - topEdgeOffset
|
1669 |
+
} else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow
|
1670 |
+
delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset
|
1671 |
+
}
|
1672 |
+
} else {
|
1673 |
+
var leftEdgeOffset = pos.left - viewportPadding
|
1674 |
+
var rightEdgeOffset = pos.left + viewportPadding + actualWidth
|
1675 |
+
if (leftEdgeOffset < viewportDimensions.left) { // left overflow
|
1676 |
+
delta.left = viewportDimensions.left - leftEdgeOffset
|
1677 |
+
} else if (rightEdgeOffset > viewportDimensions.right) { // right overflow
|
1678 |
+
delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset
|
1679 |
+
}
|
1680 |
+
}
|
1681 |
+
|
1682 |
+
return delta
|
1683 |
+
}
|
1684 |
+
|
1685 |
+
Tooltip.prototype.getTitle = function () {
|
1686 |
+
var title
|
1687 |
+
var $e = this.$element
|
1688 |
+
var o = this.options
|
1689 |
+
|
1690 |
+
title = $e.attr('data-original-title')
|
1691 |
+
|| (typeof o.title == 'function' ? o.title.call($e[0]) : o.title)
|
1692 |
+
|
1693 |
+
return title
|
1694 |
+
}
|
1695 |
+
|
1696 |
+
Tooltip.prototype.getUID = function (prefix) {
|
1697 |
+
do prefix += ~~(Math.random() * 1000000)
|
1698 |
+
while (document.getElementById(prefix))
|
1699 |
+
return prefix
|
1700 |
+
}
|
1701 |
+
|
1702 |
+
Tooltip.prototype.tip = function () {
|
1703 |
+
if (!this.$tip) {
|
1704 |
+
this.$tip = $(this.options.template)
|
1705 |
+
if (this.$tip.length != 1) {
|
1706 |
+
throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!')
|
1707 |
+
}
|
1708 |
+
}
|
1709 |
+
return this.$tip
|
1710 |
+
}
|
1711 |
+
|
1712 |
+
Tooltip.prototype.arrow = function () {
|
1713 |
+
return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow'))
|
1714 |
+
}
|
1715 |
+
|
1716 |
+
Tooltip.prototype.enable = function () {
|
1717 |
+
this.enabled = true
|
1718 |
+
}
|
1719 |
+
|
1720 |
+
Tooltip.prototype.disable = function () {
|
1721 |
+
this.enabled = false
|
1722 |
+
}
|
1723 |
+
|
1724 |
+
Tooltip.prototype.toggleEnabled = function () {
|
1725 |
+
this.enabled = !this.enabled
|
1726 |
+
}
|
1727 |
+
|
1728 |
+
Tooltip.prototype.toggle = function (e) {
|
1729 |
+
var self = this
|
1730 |
+
if (e) {
|
1731 |
+
self = $(e.currentTarget).data('bs.' + this.type)
|
1732 |
+
if (!self) {
|
1733 |
+
self = new this.constructor(e.currentTarget, this.getDelegateOptions())
|
1734 |
+
$(e.currentTarget).data('bs.' + this.type, self)
|
1735 |
+
}
|
1736 |
+
}
|
1737 |
+
|
1738 |
+
if (e) {
|
1739 |
+
self.inState.click = !self.inState.click
|
1740 |
+
if (self.isInStateTrue()) self.enter(self)
|
1741 |
+
else self.leave(self)
|
1742 |
+
} else {
|
1743 |
+
self.tip().hasClass('in') ? self.leave(self) : self.enter(self)
|
1744 |
+
}
|
1745 |
+
}
|
1746 |
+
|
1747 |
+
Tooltip.prototype.destroy = function () {
|
1748 |
+
var that = this
|
1749 |
+
clearTimeout(this.timeout)
|
1750 |
+
this.hide(function () {
|
1751 |
+
that.$element.off('.' + that.type).removeData('bs.' + that.type)
|
1752 |
+
if (that.$tip) {
|
1753 |
+
that.$tip.detach()
|
1754 |
+
}
|
1755 |
+
that.$tip = null
|
1756 |
+
that.$arrow = null
|
1757 |
+
that.$viewport = null
|
1758 |
+
that.$element = null
|
1759 |
+
})
|
1760 |
+
}
|
1761 |
+
|
1762 |
+
|
1763 |
+
// TOOLTIP PLUGIN DEFINITION
|
1764 |
+
// =========================
|
1765 |
+
|
1766 |
+
function Plugin(option) {
|
1767 |
+
return this.each(function () {
|
1768 |
+
var $this = $(this)
|
1769 |
+
var data = $this.data('bs.tooltip')
|
1770 |
+
var options = typeof option == 'object' && option
|
1771 |
+
|
1772 |
+
if (!data && /destroy|hide/.test(option)) return
|
1773 |
+
if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))
|
1774 |
+
if (typeof option == 'string') data[option]()
|
1775 |
+
})
|
1776 |
+
}
|
1777 |
+
|
1778 |
+
var old = $.fn.tooltip
|
1779 |
+
|
1780 |
+
$.fn.tooltip = Plugin
|
1781 |
+
$.fn.tooltip.Constructor = Tooltip
|
1782 |
+
|
1783 |
+
|
1784 |
+
// TOOLTIP NO CONFLICT
|
1785 |
+
// ===================
|
1786 |
+
|
1787 |
+
$.fn.tooltip.noConflict = function () {
|
1788 |
+
$.fn.tooltip = old
|
1789 |
+
return this
|
1790 |
+
}
|
1791 |
|
1792 |
}(jQuery);
|
1793 |
|
1801 |
|
1802 |
|
1803 |
+function ($) {
|
1804 |
+
'use strict';
|
1805 |
|
1806 |
+
// POPOVER PUBLIC CLASS DEFINITION
|
1807 |
+
// ===============================
|
1808 |
|
1809 |
+
var Popover = function (element, options) {
|
1810 |
+
this.init('popover', element, options)
|
1811 |
+
}
|
1812 |
|
1813 |
+
if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')
|
1814 |
|
1815 |
+
Popover.VERSION = '3.3.7'
|
1816 |
|
1817 |
+
Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {
|
1818 |
+
placement: 'right',
|
1819 |
+
trigger: 'click',
|
1820 |
+
content: '',
|
1821 |
+
template: '<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'
|
1822 |
+
})
|
1823 |
|
1824 |
|
1825 |
+
// NOTE: POPOVER EXTENDS tooltip.js
|
1826 |
+
// ================================
|
1827 |
|
1828 |
+
Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)
|
1829 |
|
1830 |
+
Popover.prototype.constructor = Popover
|
1831 |
|
1832 |
+
Popover.prototype.getDefaults = function () {
|
1833 |
+
return Popover.DEFAULTS
|
1834 |
+
}
|
1835 |
|
1836 |
+
Popover.prototype.setContent = function () {
|
1837 |
+
var $tip = this.tip()
|
1838 |
+
var title = this.getTitle()
|
1839 |
+
var content = this.getContent()
|
1840 |
|
1841 |
+
$tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)
|
1842 |
+
$tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events
|
1843 |
+
this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text'
|
1844 |
+
](content)
|
1845 |
|
1846 |
+
$tip.removeClass('fade top bottom left right in')
|
1847 |
|
1848 |
+
// IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do
|
1849 |
+
// this manually by checking the contents.
|
1850 |
+
if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()
|
1851 |
+
}
|
1852 |
|
1853 |
+
Popover.prototype.hasContent = function () {
|
1854 |
+
return this.getTitle() || this.getContent()
|
1855 |
+
}
|
1856 |
|
1857 |
+
Popover.prototype.getContent = function () {
|
1858 |
+
var $e = this.$element
|
1859 |
+
var o = this.options
|
1860 |
|
1861 |
+
return $e.attr('data-content')
|
1862 |
+
|| (typeof o.content == 'function' ?
|
1863 |
+
o.content.call($e[0]) :
|
1864 |
+
o.content)
|
1865 |
+
}
|
1866 |
|
1867 |
+
Popover.prototype.arrow = function () {
|
1868 |
+
return (this.$arrow = this.$arrow || this.tip().find('.arrow'))
|
1869 |
+
}
|
1870 |
|
1871 |
|
1872 |
+
// POPOVER PLUGIN DEFINITION
|
1873 |
+
// =========================
|
1874 |
|
1875 |
+
function Plugin(option) {
|
1876 |
+
return this.each(function () {
|
1877 |
+
var $this = $(this)
|
1878 |
+
var data = $this.data('bs.popover')
|
1879 |
+
var options = typeof option == 'object' && option
|
1880 |
|
1881 |
+
if (!data && /destroy|hide/.test(option)) return
|
1882 |
+
if (!data) $this.data('bs.popover', (data = new Popover(this, options)))
|
1883 |
+
if (typeof option == 'string') data[option]()
|
1884 |
+
})
|
1885 |
+
}
|
1886 |
|
1887 |
+
var old = $.fn.popover
|
1888 |
|
1889 |
+
$.fn.popover = Plugin
|
1890 |
+
$.fn.popover.Constructor = Popover
|
1891 |
|
1892 |
|
1893 |
+
// POPOVER NO CONFLICT
|
1894 |
+
// ===================
|
1895 |
|
1896 |
+
$.fn.popover.noConflict = function () {
|
1897 |
+
$.fn.popover = old
|
1898 |
+
return this
|
1899 |
+
}
|
1900 |
|
1901 |
}(jQuery);
|
1902 |
|
1910 |
|
1911 |
|
1912 |
+function ($) {
|
1913 |
+
'use strict';
|
1914 |
+
|
1915 |
+
// SCROLLSPY CLASS DEFINITION
|
1916 |
+
// ==========================
|
1917 |
+
|
1918 |
+
function ScrollSpy(element, options) {
|
1919 |
+
this.$body = $(document.body)
|
1920 |
+
this.$scrollElement = $(element).is(document.body) ? $(window) : $(element)
|
1921 |
+
this.options = $.extend({}, ScrollSpy.DEFAULTS, options)
|
1922 |
+
this.selector = (this.options.target || '') + ' .nav li > a'
|
1923 |
+
this.offsets = []
|
1924 |
+
this.targets = []
|
1925 |
+
this.activeTarget = null
|
1926 |
+
this.scrollHeight = 0
|
1927 |
+
|
1928 |
+
this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this))
|
1929 |
+
this.refresh()
|
1930 |
+
this.process()
|
1931 |
+
}
|
1932 |
+
|
1933 |
+
ScrollSpy.VERSION = '3.3.7'
|
1934 |
+
|
1935 |
+
ScrollSpy.DEFAULTS = {
|
1936 |
+
offset: 10
|
1937 |
+
}
|
1938 |
+
|
1939 |
+
ScrollSpy.prototype.getScrollHeight = function () {
|
1940 |
+
return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)
|
1941 |
+
}
|
1942 |
+
|
1943 |
+
ScrollSpy.prototype.refresh = function () {
|
1944 |
+
var that = this
|
1945 |
+
var offsetMethod = 'offset'
|
1946 |
+
var offsetBase = 0
|
1947 |
+
|
1948 |
+
this.offsets = []
|
1949 |
+
this.targets = []
|
1950 |
+
this.scrollHeight = this.getScrollHeight()
|
1951 |
+
|
1952 |
+
if (!$.isWindow(this.$scrollElement[0])) {
|
1953 |
+
offsetMethod = 'position'
|
1954 |
+
offsetBase = this.$scrollElement.scrollTop()
|
1955 |
+
}
|
1956 |
+
|
1957 |
+
this.$body
|
1958 |
+
.find(this.selector)
|
1959 |
+
.map(function () {
|
1960 |
+
var $el = $(this)
|
1961 |
+
var href = $el.data('target') || $el.attr('href')
|
1962 |
+
var $href = /^#./.test(href) && $(href)
|
1963 |
+
|
1964 |
+
return ($href
|
1965 |
+
&& $href.length
|
1966 |
+
&& $href.is(':visible')
|
1967 |
+
&& [[$href[offsetMethod]().top + offsetBase, href]]) || null
|
1968 |
+
})
|
1969 |
+
.sort(function (a, b) {
|
1970 |
+
return a[0] - b[0]
|
1971 |
+
})
|
1972 |
+
.each(function () {
|
1973 |
+
that.offsets.push(this[0])
|
1974 |
+
that.targets.push(this[1])
|
1975 |
+
})
|
1976 |
+
}
|
1977 |
+
|
1978 |
+
ScrollSpy.prototype.process = function () {
|
1979 |
+
var scrollTop = this.$scrollElement.scrollTop() + this.options.offset
|
1980 |
+
var scrollHeight = this.getScrollHeight()
|
1981 |
+
var maxScroll = this.options.offset + scrollHeight - this.$scrollElement.height()
|
1982 |
+
var offsets = this.offsets
|
1983 |
+
var targets = this.targets
|
1984 |
+
var activeTarget = this.activeTarget
|
1985 |
+
var i
|
1986 |
+
|
1987 |
+
if (this.scrollHeight != scrollHeight) {
|
1988 |
+
this.refresh()
|
1989 |
+
}
|
1990 |
+
|
1991 |
+
if (scrollTop >= maxScroll) {
|
1992 |
+
return activeTarget != (i = targets[targets.length - 1]) && this.activate(i)
|
1993 |
+
}
|
1994 |
+
|
1995 |
+
if (activeTarget && scrollTop < offsets[0]) {
|
1996 |
+
this.activeTarget = null
|
1997 |
+
return this.clear()
|
1998 |
+
}
|
1999 |
+
|
2000 |
+
for (i = offsets.length; i--;) {
|
2001 |
+
activeTarget != targets[i]
|
2002 |
+
&& scrollTop >= offsets[i]
|
2003 |
+
&& (offsets[i + 1] === undefined || scrollTop < offsets[i + 1])
|
2004 |
+
&& this.activate(targets[i])
|
2005 |
+
}
|
2006 |
+
}
|
2007 |
+
|
2008 |
+
ScrollSpy.prototype.activate = function (target) {
|
2009 |
+
this.activeTarget = target
|
2010 |
+
|
2011 |
+
this.clear()
|
2012 |
+
|
2013 |
+
var selector = this.selector +
|
2014 |
+
'[data-target="' + target + '"],' +
|
2015 |
+
this.selector + '[href="' + target + '"]'
|
2016 |
+
|
2017 |
+
var active = $(selector)
|
2018 |
+
.parents('li')
|
2019 |
+
.addClass('active')
|
2020 |
+
|
2021 |
+
if (active.parent('.dropdown-menu').length) {
|
2022 |
+
active = active
|
2023 |
+
.closest('li.dropdown')
|
2024 |
+
.addClass('active')
|
2025 |
+
}
|
2026 |
+
|
2027 |
+
active.trigger('activate.bs.scrollspy')
|
2028 |
+
}
|
2029 |
+
|
2030 |
+
ScrollSpy.prototype.clear = function () {
|
2031 |
+
$(this.selector)
|
2032 |
+
.parentsUntil(this.options.target, '.active')
|
2033 |
+
.removeClass('active')
|
2034 |
+
}
|
2035 |
+
|
2036 |
+
|
2037 |
+
// SCROLLSPY PLUGIN DEFINITION
|
2038 |
+
// ===========================
|
2039 |
+
|
2040 |
+
function Plugin(option) {
|
2041 |
+
return this.each(function () {
|
2042 |
+
var $this = $(this)
|
2043 |
+
var data = $this.data('bs.scrollspy')
|
2044 |
+
var options = typeof option == 'object' && option
|
2045 |
+
|
2046 |
+
if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))
|
2047 |
+
if (typeof option == 'string') data[option]()
|
2048 |
+
})
|
2049 |
+
}
|
2050 |
+
|
2051 |
+
var old = $.fn.scrollspy
|
2052 |
+
|
2053 |
+
$.fn.scrollspy = Plugin
|
2054 |
+
$.fn.scrollspy.Constructor = ScrollSpy
|
2055 |
+
|
2056 |
+
|
2057 |
+
// SCROLLSPY NO CONFLICT
|
2058 |
+
// =====================
|
2059 |
+
|
2060 |
+
$.fn.scrollspy.noConflict = function () {
|
2061 |
+
$.fn.scrollspy = old
|
2062 |
+
return this
|
2063 |
+
}
|
2064 |
+
|
2065 |
+
|
2066 |
+
// SCROLLSPY DATA-API
|
2067 |
+
// ==================
|
2068 |
+
|
2069 |
+
$(window).on('load.bs.scrollspy.data-api', function () {
|
2070 |
+
$('[data-spy="scroll"]').each(function () {
|
2071 |
+
var $spy = $(this)
|
2072 |
+
Plugin.call($spy, $spy.data())
|
2073 |
+
})
|
2074 |
+
})
|
2075 |
|
2076 |
}(jQuery);
|
2077 |
|
2085 |
|
2086 |
|
2087 |
+function ($) {
|
2088 |
+
'use strict';
|
2089 |
+
|
2090 |
+
// TAB CLASS DEFINITION
|
2091 |
+
// ====================
|
2092 |
+
|
2093 |
+
var Tab = function (element) {
|
2094 |
+
// jscs:disable requireDollarBeforejQueryAssignment
|
2095 |
+
this.element = $(element)
|
2096 |
+
// jscs:enable requireDollarBeforejQueryAssignment
|
2097 |
+
}
|
2098 |
+
|
2099 |
+
Tab.VERSION = '3.3.7'
|
2100 |
+
|
2101 |
+
Tab.TRANSITION_DURATION = 150
|
2102 |
+
|
2103 |
+
Tab.prototype.show = function () {
|
2104 |
+
var $this = this.element
|
2105 |
+
var $ul = $this.closest('ul:not(.dropdown-menu)')
|
2106 |
+
var selector = $this.data('target')
|
2107 |
+
|
2108 |
+
if (!selector) {
|
2109 |
+
selector = $this.attr('href')
|
2110 |
+
selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
|
2111 |
+
}
|
2112 |
+
|
2113 |
+
if ($this.parent('li').hasClass('active')) return
|
2114 |
+
|
2115 |
+
var $previous = $ul.find('.active:last a')
|
2116 |
+
var hideEvent = $.Event('hide.bs.tab', {
|
2117 |
+
relatedTarget: $this[0]
|
2118 |
+
})
|
2119 |
+
var showEvent = $.Event('show.bs.tab', {
|
2120 |
+
relatedTarget: $previous[0]
|
2121 |
+
})
|
2122 |
+
|
2123 |
+
$previous.trigger(hideEvent)
|
2124 |
+
$this.trigger(showEvent)
|
2125 |
+
|
2126 |
+
if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return
|
2127 |
+
|
2128 |
+
var $target = $(selector)
|
2129 |
+
|
2130 |
+
this.activate($this.closest('li'), $ul)
|
2131 |
+
this.activate($target, $target.parent(), function () {
|
2132 |
+
$previous.trigger({
|
2133 |
+
type: 'hidden.bs.tab',
|
2134 |
+
relatedTarget: $this[0]
|
2135 |
+
})
|
2136 |
+
$this.trigger({
|
2137 |
+
type: 'shown.bs.tab',
|
2138 |
+
relatedTarget: $previous[0]
|
2139 |
+
})
|
2140 |
+
})
|
2141 |
+
}
|
2142 |
+
|
2143 |
+
Tab.prototype.activate = function (element, container, callback) {
|
2144 |
+
var $active = container.find('> .active')
|
2145 |
+
var transition = callback
|
2146 |
+
&& $.support.transition
|
2147 |
+
&& ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length)
|
2148 |
+
|
2149 |
+
function next() {
|
2150 |
+
$active
|
2151 |
+
.removeClass('active')
|
2152 |
+
.find('> .dropdown-menu > .active')
|
2153 |
+
.removeClass('active')
|
2154 |
+
.end()
|
2155 |
+
.find('[data-toggle="tab"]')
|
2156 |
+
.attr('aria-expanded', false)
|
2157 |
+
|
2158 |
+
element
|
2159 |
+
.addClass('active')
|
2160 |
+
.find('[data-toggle="tab"]')
|
2161 |
+
.attr('aria-expanded', true)
|
2162 |
+
|
2163 |
+
if (transition) {
|
2164 |
+
element[0].offsetWidth // reflow for transition
|
2165 |
+
element.addClass('in')
|
2166 |
+
} else {
|
2167 |
+
element.removeClass('fade')
|
2168 |
+
}
|
2169 |
+
|
2170 |
+
if (element.parent('.dropdown-menu').length) {
|
2171 |
+
element
|
2172 |
+
.closest('li.dropdown')
|
2173 |
+
.addClass('active')
|
2174 |
+
.end()
|
2175 |
+
.find('[data-toggle="tab"]')
|
2176 |
+
.attr('aria-expanded', true)
|
2177 |
+
}
|
2178 |
+
|
2179 |
+
callback && callback()
|
2180 |
+
}
|
2181 |
+
|
2182 |
+
$active.length && transition ?
|
2183 |
+
$active
|
2184 |
+
.one('bsTransitionEnd', next)
|
2185 |
+
.emulateTransitionEnd(Tab.TRANSITION_DURATION) :
|
2186 |
+
next()
|
2187 |
+
|
2188 |
+
$active.removeClass('in')
|
2189 |
+
}
|
2190 |
+
|
2191 |
+
|
2192 |
+
// TAB PLUGIN DEFINITION
|
2193 |
+
// =====================
|
2194 |
+
|
2195 |
+
function Plugin(option) {
|
2196 |
+
return this.each(function () {
|
2197 |
+
var $this = $(this)
|
2198 |
+
var data = $this.data('bs.tab')
|
2199 |
+
|
2200 |
+
if (!data) $this.data('bs.tab', (data = new Tab(this)))
|
2201 |
+
if (typeof option == 'string') data[option]()
|
2202 |
+
})
|
2203 |
+
}
|
2204 |
+
|
2205 |
+
var old = $.fn.tab
|
2206 |
+
|
2207 |
+
$.fn.tab = Plugin
|
2208 |
+
$.fn.tab.Constructor = Tab
|
2209 |
+
|
2210 |
+
|
2211 |
+
// TAB NO CONFLICT
|
2212 |
+
// ===============
|
2213 |
+
|
2214 |
+
$.fn.tab.noConflict = function () {
|
2215 |
+
$.fn.tab = old
|
2216 |
+
return this
|
2217 |
+
}
|
2218 |
+
|
2219 |
+
|
2220 |
+
// TAB DATA-API
|
2221 |
+
// ============
|
2222 |
+
|
2223 |
+
var clickHandler = function (e) {
|
2224 |
+
e.preventDefault()
|
2225 |
+
Plugin.call($(this), 'show')
|
2226 |
+
}
|
2227 |
+
|
2228 |
+
$(document)
|
2229 |
+
.on('click.bs.tab.data-api', '[data-toggle="tab"]', clickHandler)
|
2230 |
+
.on('click.bs.tab.data-api', '[data-toggle="pill"]', clickHandler)
|
2231 |
|
2232 |
}(jQuery);
|
2233 |
|
2241 |
|
2242 |
|
2243 |
+function ($) {
|
2244 |
+
'use strict';
|
2245 |
|
2246 |
+
// AFFIX CLASS DEFINITION
|
2247 |
+
// ======================
|
2248 |
|
2249 |
+
var Affix = function (element, options) {
|
2250 |
+
this.options = $.extend({}, Affix.DEFAULTS, options)
|
2251 |
|
2252 |
+
this.$target = $(this.options.target)
|
2253 |
+
.on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))
|
2254 |
+
.on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this))
|
2255 |
|
2256 |
+
this.$element = $(element)
|
2257 |
+
this.affixed = null
|
2258 |
+
this.unpin = null
|
2259 |
+
this.pinnedOffset = null
|
2260 |
|
2261 |
+
this.checkPosition()
|
2262 |
+
}
|
2263 |
|
2264 |
+
Affix.VERSION = '3.3.7'
|
2265 |
|
2266 |
+
Affix.RESET = 'affix affix-top affix-bottom'
|
2267 |
|
2268 |
+
Affix.DEFAULTS = {
|
2269 |
+
offset: 0,
|
2270 |
+
target: window
|
2271 |
+
}
|
2272 |
|
2273 |
+
Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) {
|
2274 |
+
var scrollTop = this.$target.scrollTop()
|
2275 |
+
var position = this.$element.offset()
|
2276 |
+
var targetHeight = this.$target.height()
|
2277 |
|
2278 |
+
if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false
|
2279 |
|
2280 |
+
if (this.affixed == 'bottom') {
|
2281 |
+
if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom'
|
2282 |
+
return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom'
|
2283 |
+
}
|
2284 |
|
2285 |
+
var initializing = this.affixed == null
|
2286 |
+
var colliderTop = initializing ? scrollTop : position.top
|
2287 |
+
var colliderHeight = initializing ? targetHeight : height
|
2288 |
|
2289 |
+
if (offsetTop != null && scrollTop <= offsetTop) return 'top'
|
2290 |
+
if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom'
|
2291 |
|
2292 |
+
return false
|
2293 |
+
}
|
2294 |
|
2295 |
+
Affix.prototype.getPinnedOffset = function () {
|
2296 |
+
if (this.pinnedOffset) return this.pinnedOffset
|
2297 |
+
this.$element.removeClass(Affix.RESET).addClass('affix')
|
2298 |
+
var scrollTop = this.$target.scrollTop()
|
2299 |
+
var position = this.$element.offset()
|
2300 |
+
return (this.pinnedOffset = position.top - scrollTop)
|
2301 |
+
}
|
2302 |
|
2303 |
+
Affix.prototype.checkPositionWithEventLoop = function () {
|
2304 |
+
setTimeout($.proxy(this.checkPosition, this), 1)
|
2305 |
+
}
|
2306 |
|
2307 |
+
Affix.prototype.checkPosition = function () {
|
2308 |
+
if (!this.$element.is(':visible')) return
|
2309 |
|
2310 |
+
var height = this.$element.height()
|
2311 |
+
var offset = this.options.offset
|
2312 |
+
var offsetTop = offset.top
|
2313 |
+
var offsetBottom = offset.bottom
|
2314 |
+
var scrollHeight = Math.max($(document).height(), $(document.body).height())
|
2315 |
|
2316 |
+
if (typeof offset != 'object') offsetBottom = offsetTop = offset
|
2317 |
+
if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element)
|
2318 |
+
if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)
|
2319 |
|
2320 |
+
var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom)
|
2321 |
|
2322 |
+
if (this.affixed != affix) {
|
2323 |
+
if (this.unpin != null) this.$element.css('top', '')
|
2324 |
|
2325 |
+
var affixType = 'affix' + (affix ? '-' + affix : '')
|
2326 |
+
var e = $.Event(affixType + '.bs.affix')
|
2327 |
|
2328 |
+
this.$element.trigger(e)
|
2329 |
|
2330 |
+
if (e.isDefaultPrevented()) return
|
2331 |
|
2332 |
+
this.affixed = affix
|
2333 |
+
this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null
|
2334 |
|
2335 |
+
this.$element
|
2336 |
+
.removeClass(Affix.RESET)
|
2337 |
+
.addClass(affixType)
|
2338 |
+
.trigger(affixType.replace('affix', 'affixed') + '.bs.affix')
|
2339 |
+
}
|
2340 |
|
2341 |
+
if (affix == 'bottom') {
|
2342 |
+
this.$element.offset({
|
2343 |
+
top: scrollHeight - height - offsetBottom
|
2344 |
+
})
|
2345 |
+
}
|
2346 |
+
}
|
2347 |
|
2348 |
|
2349 |
+
// AFFIX PLUGIN DEFINITION
|
2350 |
+
// =======================
|
2351 |
|
2352 |
+
function Plugin(option) {
|
2353 |
+
return this.each(function () {
|
2354 |
+
var $this = $(this)
|
2355 |
+
var data = $this.data('bs.affix')
|
2356 |
+
var options = typeof option == 'object' && option
|
2357 |
|
2358 |
+
if (!data) $this.data('bs.affix', (data = new Affix(this, options)))
|
2359 |
+
if (typeof option == 'string') data[option]()
|
2360 |
+
})
|
2361 |
+
}
|
2362 |
|
2363 |
+
var old = $.fn.affix
|
2364 |
|
2365 |
+
$.fn.affix = Plugin
|
2366 |
+
$.fn.affix.Constructor = Affix
|
2367 |
|
2368 |
|
2369 |
+
// AFFIX NO CONFLICT
|
2370 |
+
// =================
|
2371 |
|
2372 |
+
$.fn.affix.noConflict = function () {
|
2373 |
+
$.fn.affix = old
|
2374 |
+
return this
|
2375 |
+
}
|
2376 |
|
2377 |
|
2378 |
+
// AFFIX DATA-API
|
2379 |
+
// ==============
|
2380 |
|
2381 |
+
$(window).on('load', function () {
|
2382 |
+
$('[data-spy="affix"]').each(function () {
|
2383 |
+
var $spy = $(this)
|
2384 |
+
var data = $spy.data()
|
2385 |
|
2386 |
+
data.offset = data.offset || {}
|
2387 |
|
2388 |
+
if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom
|
2389 |
+
if (data.offsetTop != null) data.offset.top = data.offsetTop
|
2390 |
|
2391 |
+
Plugin.call($spy, data)
|
2392 |
+
})
|
2393 |
+
})
|
2394 |
|
2395 |
}(jQuery);
|
assets/js/public.js
CHANGED
@@ -166,13 +166,24 @@ function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "functi
|
|
166 |
redirect: window.location.href
|
167 |
},
|
168 |
a = this,
|
|
|
169 |
formData = new FormData();
|
170 |
|
171 |
if (tinvwl_add_to_wishlist.wpml) {
|
172 |
data['lang'] = tinvwl_add_to_wishlist.wpml;
|
173 |
}
|
174 |
|
175 |
-
$(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
176 |
var name_elm = $(this).attr('name'),
|
177 |
type_elm = $(this).attr('type'),
|
178 |
value_elm = $(this).val(),
|
@@ -330,7 +341,7 @@ function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "functi
|
|
330 |
|
331 |
if ('function' !== typeof this.tinvwl_dialog.show_list) {
|
332 |
this.tinvwl_dialog.show_list = function () {
|
333 |
-
var WList =
|
334 |
|
335 |
if (WList.length) {
|
336 |
WList = s.onPrepareList.call(WList) || WList;
|
@@ -387,7 +398,7 @@ function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "functi
|
|
387 |
}); // Disable add to wishlist button if variations not selected
|
388 |
|
389 |
$(document).on('hide_variation', '.variations_form', function (a) {
|
390 |
-
var e = $('
|
391 |
e.attr('data-tinv-wl-productvariation', 0);
|
392 |
|
393 |
if (e.length && e.attr('data-tinv-wl-list')) {
|
@@ -410,7 +421,7 @@ function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "functi
|
|
410 |
}
|
411 |
});
|
412 |
$(document).on('show_variation', '.variations_form', function (a, b, d) {
|
413 |
-
var e = $('
|
414 |
e.attr('data-tinv-wl-productvariation', b.variation_id);
|
415 |
|
416 |
if (e.length && e.attr('data-tinv-wl-list')) {
|
@@ -434,7 +445,7 @@ function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "functi
|
|
434 |
$(window).on('storage onstorage', function (e) {
|
435 |
if (hash_key === e.originalEvent.key && localStorage.getItem(hash_key) !== sessionStorage.getItem(hash_key)) {
|
436 |
if (localStorage.getItem(hash_key)) {
|
437 |
-
var data =
|
438 |
|
439 |
if (_typeof(data) === 'object' && data !== null && (data.hasOwnProperty('products') || data.hasOwnProperty('counter'))) {
|
440 |
set_hash(localStorage.getItem(hash_key));
|
@@ -511,7 +522,7 @@ function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "functi
|
|
511 |
}
|
512 |
|
513 |
if (localStorage.getItem(hash_key)) {
|
514 |
-
var data =
|
515 |
|
516 |
if (_typeof(data) === 'object' && data !== null && (data.hasOwnProperty('products') || data.hasOwnProperty('counter'))) {
|
517 |
if (!data.hasOwnProperty('lang') && !tinvwl_add_to_wishlist.wpml || tinvwl_add_to_wishlist.wpml && data.lang === tinvwl_add_to_wishlist.wpml) {
|
@@ -619,7 +630,7 @@ function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "functi
|
|
619 |
if ($supports_html5_storage) {
|
620 |
localStorage.setItem(hash_key, hash);
|
621 |
sessionStorage.setItem(hash_key, hash);
|
622 |
-
mark_products(
|
623 |
}
|
624 |
}
|
625 |
|
@@ -645,7 +656,7 @@ function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "functi
|
|
645 |
$(document).ready(function () {
|
646 |
$('#tinvwl_manage_actions, #tinvwl_product_actions').addClass('form-control').parent().wrapInner('<div class="tinvwl-input-group tinvwl-no-full">').find('button').wrap('<span class="tinvwl-input-group-btn">');
|
647 |
$('.tinv-lists-nav').each(function () {
|
648 |
-
if (
|
649 |
$(this).remove();
|
650 |
}
|
651 |
});
|
@@ -702,7 +713,7 @@ function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "functi
|
|
702 |
});
|
703 |
}
|
704 |
|
705 |
-
$('.tinv-login .showlogin').
|
706 |
e.preventDefault();
|
707 |
$(this).closest('.tinv-login').find('.login').toggle();
|
708 |
});
|
166 |
redirect: window.location.href
|
167 |
},
|
168 |
a = this,
|
169 |
+
formEl,
|
170 |
formData = new FormData();
|
171 |
|
172 |
if (tinvwl_add_to_wishlist.wpml) {
|
173 |
data['lang'] = tinvwl_add_to_wishlist.wpml;
|
174 |
}
|
175 |
|
176 |
+
formEl = $('form.cart[method=post][data-product_id="' + $(this).attr('data-tinv-wl-product') + '"], form.vtajaxform[method=post][data-product_id="' + $(this).attr('data-tinv-wl-product') + '"], .tinvwl-loop-button-wrapper[data-product_id="' + $(this).attr('data-tinv-wl-product') + '"]');
|
177 |
+
|
178 |
+
if (!formEl.length) {
|
179 |
+
formEl = $(a).closest('form.cart[method=post], form.vtajaxform[method=post], .tinvwl-loop-button-wrapper');
|
180 |
+
|
181 |
+
if (!formEl.length) {
|
182 |
+
formEl = $('form.cart[method=post]');
|
183 |
+
}
|
184 |
+
}
|
185 |
+
|
186 |
+
formEl.find('input:not(:disabled), select:not(:disabled), textarea:not(:disabled)').each(function () {
|
187 |
var name_elm = $(this).attr('name'),
|
188 |
type_elm = $(this).attr('type'),
|
189 |
value_elm = $(this).val(),
|
341 |
|
342 |
if ('function' !== typeof this.tinvwl_dialog.show_list) {
|
343 |
this.tinvwl_dialog.show_list = function () {
|
344 |
+
var WList = JSON.parse($(this).attr('data-tinv-wl-list')) || [];
|
345 |
|
346 |
if (WList.length) {
|
347 |
WList = s.onPrepareList.call(WList) || WList;
|
398 |
}); // Disable add to wishlist button if variations not selected
|
399 |
|
400 |
$(document).on('hide_variation', '.variations_form', function (a) {
|
401 |
+
var e = $('.tinvwl_add_to_wishlist_button:not(.tinvwl-loop)[data-tinv-wl-product="' + $(this).data('product_id') + '"]');
|
402 |
e.attr('data-tinv-wl-productvariation', 0);
|
403 |
|
404 |
if (e.length && e.attr('data-tinv-wl-list')) {
|
421 |
}
|
422 |
});
|
423 |
$(document).on('show_variation', '.variations_form', function (a, b, d) {
|
424 |
+
var e = $('.tinvwl_add_to_wishlist_button:not(.tinvwl-loop)[data-tinv-wl-product="' + $(this).data('product_id') + '"]');
|
425 |
e.attr('data-tinv-wl-productvariation', b.variation_id);
|
426 |
|
427 |
if (e.length && e.attr('data-tinv-wl-list')) {
|
445 |
$(window).on('storage onstorage', function (e) {
|
446 |
if (hash_key === e.originalEvent.key && localStorage.getItem(hash_key) !== sessionStorage.getItem(hash_key)) {
|
447 |
if (localStorage.getItem(hash_key)) {
|
448 |
+
var data = JSON.parse(localStorage.getItem(hash_key));
|
449 |
|
450 |
if (_typeof(data) === 'object' && data !== null && (data.hasOwnProperty('products') || data.hasOwnProperty('counter'))) {
|
451 |
set_hash(localStorage.getItem(hash_key));
|
522 |
}
|
523 |
|
524 |
if (localStorage.getItem(hash_key)) {
|
525 |
+
var data = JSON.parse(localStorage.getItem(hash_key));
|
526 |
|
527 |
if (_typeof(data) === 'object' && data !== null && (data.hasOwnProperty('products') || data.hasOwnProperty('counter'))) {
|
528 |
if (!data.hasOwnProperty('lang') && !tinvwl_add_to_wishlist.wpml || tinvwl_add_to_wishlist.wpml && data.lang === tinvwl_add_to_wishlist.wpml) {
|
630 |
if ($supports_html5_storage) {
|
631 |
localStorage.setItem(hash_key, hash);
|
632 |
sessionStorage.setItem(hash_key, hash);
|
633 |
+
mark_products(JSON.parse(hash));
|
634 |
}
|
635 |
}
|
636 |
|
656 |
$(document).ready(function () {
|
657 |
$('#tinvwl_manage_actions, #tinvwl_product_actions').addClass('form-control').parent().wrapInner('<div class="tinvwl-input-group tinvwl-no-full">').find('button').wrap('<span class="tinvwl-input-group-btn">');
|
658 |
$('.tinv-lists-nav').each(function () {
|
659 |
+
if (!$(this).html().trim().length) {
|
660 |
$(this).remove();
|
661 |
}
|
662 |
});
|
713 |
});
|
714 |
}
|
715 |
|
716 |
+
$('.tinv-login .showlogin').off("click").on('click', function (e) {
|
717 |
e.preventDefault();
|
718 |
$(this).closest('.tinv-login').find('.login').toggle();
|
719 |
});
|
assets/js/public.min.js
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
/**
|
2 |
* TI WooCommerce Wishlist Plugin - Allow your store guests and customers to add products to Wishlist. Add Wishlist functionality to your store for free.
|
3 |
-
* @version 1.
|
4 |
* @link https://wordpress.org/plugins/ti-woocommerce-wishlist/
|
5 |
*/
|
6 |
-
"use strict";function _typeof(t){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function showTooltip(t,i){t.setAttribute("class","social social-clipboard tooltipped tooltipped-s"),t.setAttribute("aria-label",i)}function clearTooltip(t){t.currentTarget.setAttribute("class","social social-clipboard "),t.currentTarget.removeAttribute("aria-label")}!function(c){c.fn.tinvwl_to_wishlist=function(t){var i={api_url:window.location.href.split("?")[0],text_create:window.tinvwl_add_to_wishlist.text_create,text_already_in:window.tinvwl_add_to_wishlist.text_already_in,class:{dialogbox:".tinvwl_add_to_select_wishlist",select:".tinvwl_wishlist",newtitle:".tinvwl_new_input",dialogbutton:".tinvwl_button_add"},redirectTimer:null,onPrepareList:function(){},onGetDialogBox:function(){},onPrepareDialogBox:function(){c("body > .tinv-wishlist").length||c("body").append(c("<div>").addClass("tinv-wishlist")),c(this).appendTo("body > .tinv-wishlist")},onCreateWishList:function(t){c(this).append(c("<option>").html(t.title).val(t.ID).toggleClass("tinv_in_wishlist",t.in))},onSelectWishList:function(){},onDialogShow:function(t){c(t).addClass("tinv-modal-open"),c(t).removeClass("ftinvwl-pulse")},onDialogHide:function(t){c(t).removeClass("tinv-modal-open"),c(t).removeClass("ftinvwl-pulse")},onInited:function(){},onClick:function(){if(c(this).is(".disabled-add-wishlist"))return!1;c(this).is(".ftinvwl-animated")&&c(this).addClass("ftinvwl-pulse"),this.tinvwl_dialog?this.tinvwl_dialog.show_list.call(this):e.onActionProduct.call(this)},onPrepareDataAction:function(t,i){c("body").trigger("tinvwl_wishlist_button_clicked",[t,i])},filterProductAlreadyIn:function(t){t=t||[];var o={};return c("form.cart[method=post], .woocommerce-variation-add-to-cart, form.vtajaxform[method=post]").find("input, select").each(function(){var t=c(this).attr("name"),i=c(this).attr("type"),n=c(this).val();("checkbox"!==i&&"radio"!==i||c(this).is(":checked"))&&(o["form"+t]=n)}),o=o.formvariation_id,t.filter(function(t){if("object"!==_typeof(t.in)||"string"!=typeof o)return t.in;var i=parseInt(o);return 0<=t.in.indexOf(i)})},onMultiProductAlreadyIn:function(t){t=t||[];t=e.onPrepareList.call(t)||t,t=e.filterProductAlreadyIn.call(this,t)||t,c(this).parent().parent().find(".already-in").remove();var n="";switch(t.length){case 0:break;default:n=c("<ul>");c.each(t,function(t,i){n.append(c("<li>").html(c("<a>").html(i.title).attr({href:i.url})).val(i.ID))})}n.length&&c(this).closest(".tinv-modal-inner").find("img").after(c("<div>").addClass("already-in").html(e.text_already_in+" ").append(n))},onAction:{redirect:function(t){e.redirectTimer&&clearTimeout(e.redirectTimer),e.redirectTimer=window.setTimeout(function(){window.location.href=t},4e3)},force_redirect:function(t){window.location.href=t},wishlists:function(){},msg:function(t){if(!t)return!1;var i=c(t).eq(0);c("body > .tinv-wishlist").length||c("body").append(c("<div>").addClass("tinv-wishlist")),c("body > .tinv-wishlist").append(i),i.on("click",".tinv-close-modal, .tinvwl_button_close, .tinv-overlay",function(t){t.preventDefault(),i.remove(),e.redirectTimer&&clearTimeout(e.redirectTimer)})},status:function(t){c("body").trigger("tinvwl_wishlist_added_status",[this,t])},removed:function(){},make_remove:function(){},wishlists_data:function(t){d(JSON.stringify(t))}}};i.onActionProduct=function(t,i){var r={form:{},tinv_wishlist_id:t||"",tinv_wishlist_name:i||"",product_type:c(this).attr("data-tinv-wl-producttype"),product_id:c(this).attr("data-tinv-wl-product")||0,product_variation:c(this).attr("data-tinv-wl-productvariation")||0,product_action:c(this).attr("data-tinv-wl-action")||"addto",redirect:window.location.href},n=this,d=new FormData;tinvwl_add_to_wishlist.wpml&&(r.lang=tinvwl_add_to_wishlist.wpml),c(n).closest("form.cart[method=post], form.vtajaxform[method=post], .tinvwl-loop-button-wrapper").find("input:not(:disabled), select:not(:disabled), textarea:not(:disabled)").each(function(){function e(t,i){if("object"!==_typeof(i))return i;for(var n in void 0===t&&(t={}),i)if(""===n){var o=-1;for(o in t)o=o;t[o=parseInt(o)+1]=e(t[n],i[n])}else t[n]=e(t[n],i[n]);return t}var t=c(this).attr("name"),i=c(this).attr("type"),n=c(this).val(),o=10;if("button"!==i&&void 0!==t){for(;/^(.+)\[([^\[\]]*?)\]$/.test(t)&&0<o;){var a=t.match(/^(.+)\[([^\[\]]*?)\]$/);if(3===a.length){var l={};l[a[2]]=n,n=l}t=a[1],o--}if("file"===i){var s=c(this)[0].files;s&&d.append(t,s[0])}"checkbox"===i||"radio"===i?c(this).is(":checked")&&(n.length||"object"===_typeof(n)||(n=!0),r.form[t]=e(r.form[t],n)):r.form[t]=e(r.form[t],n)}}),r=e.onPrepareDataAction.call(n,n,r)||r,c.each(r,function(n,t){"form"===n?c.each(t,function(t,i){"object"===_typeof(i)&&(i=JSON.stringify(i)),d.append(n+"["+t+"]",i)}):d.append(n,t)}),c.ajax({url:e.api_url,method:"POST",contentType:!1,processData:!1,data:d}).done(function(t){if(e.onDialogHide.call(n.tinvwl_dialog,n),"object"===_typeof(t))for(var i in t)"function"==typeof e.onAction[i]&&e.onAction[i].call(n,t[i]);else"function"==typeof e.onAction.msg&&e.onAction.msg.call(n,t)})};var e=c.extend(!0,{},i,t);return c(this).each(function(){if(!c(this).attr("data-tinv-wl-list"))return!1;if(e.dialogbox&&e.dialogbox.length&&(this.tinvwl_dialog=e.dialogbox),this.tinvwl_dialog||(this.tinvwl_dialog=e.onGetDialogBox.call(this)),!this.tinvwl_dialog){var t=c(this).nextAll(e.class.dialogbox).eq(0);t.length&&(this.tinvwl_dialog=t)}if(this.tinvwl_dialog){e.onPrepareDialogBox.call(this.tinvwl_dialog),"function"!=typeof this.tinvwl_dialog.update_list&&(this.tinvwl_dialog.update_list=function(t){var n=c(this).find(e.class.select).eq(0);c(this).find(e.class.newtitle).hide().val(""),n.html(""),c.each(t,function(t,i){e.onCreateWishList.call(n,i)}),e.text_create&&e.onCreateWishList.call(n,{ID:"",title:e.text_create,in:!1}),e.onMultiProductAlreadyIn.call(n,t),e.onSelectWishList.call(n,t),c(this).find(e.class.newtitle).toggle(""===n.val())}),"function"!=typeof this.tinvwl_dialog.show_list&&(this.tinvwl_dialog.show_list=function(){var t=c.parseJSON(c(this).attr("data-tinv-wl-list"))||[];t.length?(t=e.onPrepareList.call(t)||t,this.tinvwl_dialog.update_list(t),e.onDialogShow.call(this.tinvwl_dialog,this)):e.onActionProduct.call(this)});var o=this;c(this.tinvwl_dialog).find(e.class.dialogbutton).off("click").on("click",function(){var t,i=c(o.tinvwl_dialog).find(e.class.select),n=c(o.tinvwl_dialog).find(e.class.newtitle);i.val()||n.val()?e.onActionProduct.call(o,i.val(),n.val()):((t=n.is(":visible")?n:i).addClass("empty-name-wishlist"),window.setTimeout(function(){t.removeClass("empty-name-wishlist")},1e3))})}c(this).off("click").on("click",e.onClick),e.onInited.call(this,e)})},c(document).ready(function(){c("body").on("click",".tinvwl_add_to_wishlist_button",function(t){if(c(this).is(".disabled-add-wishlist"))return t.preventDefault(),void window.alert(tinvwl_add_to_wishlist.i18n_make_a_selection_text);c(this).is(".inited-add-wishlist")||c(this).tinvwl_to_wishlist({onInited:function(t){c(this).addClass("inited-add-wishlist"),t.onClick.call(this)}})}),c(document).on("hide_variation",".variations_form",function(t){var i=c("body").find('.tinvwl_add_to_wishlist_button:not(.tinvwl-loop)[data-tinv-wl-product="'+c(this).data("product_id")+'"]');if(i.attr("data-tinv-wl-productvariation",0),i.length&&i.attr("data-tinv-wl-list")){var n=JSON.parse(i.attr("data-tinv-wl-list")),o=!1,e="1"==window.tinvwl_add_to_wishlist.simple_flow;for(var a in n)n[a].hasOwnProperty("in")&&Array.isArray(n[a].in)&&-1<(n[a].in||[]).indexOf(0)&&(o=!0);i.toggleClass("tinvwl-product-in-list",o).toggleClass("tinvwl-product-make-remove",o&&e).attr("data-tinv-wl-action",o&&e?"remove":"addto")}i.length&&!tinvwl_add_to_wishlist.allow_parent_variable&&(t.preventDefault(),i.addClass("disabled-add-wishlist"))}),c(document).on("show_variation",".variations_form",function(t,i,n){var o=c("body").find('.tinvwl_add_to_wishlist_button:not(.tinvwl-loop)[data-tinv-wl-product="'+c(this).data("product_id")+'"]');if(o.attr("data-tinv-wl-productvariation",i.variation_id),o.length&&o.attr("data-tinv-wl-list")){var e=JSON.parse(o.attr("data-tinv-wl-list")),a=!1,l="1"==window.tinvwl_add_to_wishlist.simple_flow;for(var s in e)e[s].hasOwnProperty("in")&&Array.isArray(e[s].in)&&-1<(e[s].in||[]).indexOf(i.variation_id)&&(a=!0);o.toggleClass("tinvwl-product-in-list",a).toggleClass("tinvwl-product-make-remove",a&&l).attr("data-tinv-wl-action",a&&l?"remove":"addto")}t.preventDefault(),o.removeClass("disabled-add-wishlist")}),c(window).on("storage onstorage",function(t){if(s===t.originalEvent.key&&localStorage.getItem(s)!==sessionStorage.getItem(s)&&localStorage.getItem(s)){var i=c.parseJSON(localStorage.getItem(s));"object"===_typeof(i)&&null!==i&&(i.hasOwnProperty("products")||i.hasOwnProperty("counter"))&&d(localStorage.getItem(s))}});var n=[],i=!1;c("a.tinvwl_add_to_wishlist_button").each(function(){"undefined"!==c(this).data("tinv-wl-product")&&c(this).data("tinv-wl-product")&&n.push(c(this).data("tinv-wl-product"))}),c(".wishlist_products_counter_number").each(function(){i=!0});function o(){if(n.length||i){var t={};tinvwl_add_to_wishlist.wpml&&(t.lang=tinvwl_add_to_wishlist.wpml),c.ajax({url:tinvwl_add_to_wishlist.plugin_url+"includes/api/ajax.php",method:"POST",data:t,beforeSend:function(t){t.setRequestHeader("X-WP-Nonce",tinvwl_add_to_wishlist.nonce)}}).done(function(t){d(JSON.stringify(t)),r(t)}).fail(function(){!function(){if(n.length||i){var t={ids:n,counter:i,tinvwl_request:!0};tinvwl_add_to_wishlist.wpml&&(t.lang=tinvwl_add_to_wishlist.wpml),c.ajax({url:tinvwl_add_to_wishlist.rest_root+"wishlist/v1/products",method:"POST",data:t,beforeSend:function(t){t.setRequestHeader("X-WP-Nonce",tinvwl_add_to_wishlist.nonce)}}).done(function(t){d(JSON.stringify(t)),r(t)})}}()})}}function e(){if(l&&(tinvwl_add_to_wishlist.update_wishlists_data&&localStorage.setItem(s,""),localStorage.getItem(s))){var t=c.parseJSON(localStorage.getItem(s));if("object"===_typeof(t)&&null!==t&&(t.hasOwnProperty("products")||t.hasOwnProperty("counter"))&&(!t.hasOwnProperty("lang")&&!tinvwl_add_to_wishlist.wpml||tinvwl_add_to_wishlist.wpml&&t.lang===tinvwl_add_to_wishlist.wpml))return void r(t)}tinvwl_add_to_wishlist.block_ajax_wishlists_data||o()}e();var t=new MutationObserver(function(t){n=[],t.forEach(function(t){var i=t.addedNodes;null!==i&&c(i).each(function(){var t=c(this).find(".tinvwl_add_to_wishlist_button");t.length&&t.each(function(){"undefined"!==c(this).data("tinv-wl-product")&&c(this).data("tinv-wl-product")&&n.push(c(this).data("tinv-wl-product"))})})}),n.length&&e()}),a=document.body;t.observe(a,{childList:!0,subtree:!0})});var l=!0,s=tinvwl_add_to_wishlist.hash_key;try{l="sessionStorage"in window&&null!==window.sessionStorage,window.sessionStorage.setItem("ti","test"),window.sessionStorage.removeItem("ti"),window.localStorage.setItem("ti","test"),window.localStorage.removeItem("ti")}catch(t){l=!1}function r(t){var l="1"==window.tinvwl_add_to_wishlist.simple_flow;l&&c("a.tinvwl_add_to_wishlist_button").each(function(){c(this).removeClass("tinvwl-product-make-remove").removeClass("tinvwl-product-already-on-wishlist").removeClass("tinvwl-product-in-list").attr("data-tinv-wl-action","addto").attr("data-tinv-wl-list","[]")}),c.each(t.products,function(t,e){var a=t;c("a.tinvwl_add_to_wishlist_button[data-tinv-wl-product='"+a+"']").each(function(){var t=parseInt(c(this).attr("data-tinv-wl-productvariation")),i=c(this).data("tinv-wl-productvariations")||[],n=!1;for(var o in e)e[o].hasOwnProperty("in")&&Array.isArray(e[o].in)&&(-1<(e[o].in||[]).indexOf(a)||-1<(e[o].in||[]).indexOf(t)||i.some(function(t){return 0<=(e[o].in||[]).indexOf(t)}))&&(n=!0);c(this).attr("data-tinv-wl-list",JSON.stringify(e)).toggleClass("tinvwl-product-in-list",n).toggleClass("tinvwl-product-make-remove",n&&l).attr("data-tinv-wl-action",n&&l?"remove":"addto")})}),function(t){"1"==window.tinvwl_add_to_wishlist.hide_zero_counter&&0===t&&(t="false");"false"!==t?jQuery(".wishlist_products_counter_number, body.theme-woostify .wishlist-item-count").html(t):jQuery(".wishlist_products_counter_number, body.theme-woostify .wishlist-item-count").html("").closest("span.wishlist-counter-with-products").removeClass("wishlist-counter-with-products");var i=!("0"==t||"false"==t);jQuery(".wishlist_products_counter").toggleClass("wishlist-counter-with-products",i)}(t.counter)}function d(t){l&&(localStorage.setItem(s,t),sessionStorage.setItem(s,t),r(c.parseJSON(t)))}}(jQuery),function(o){o(document).ready(function(){if(o("#tinvwl_manage_actions, #tinvwl_product_actions").addClass("form-control").parent().wrapInner('<div class="tinvwl-input-group tinvwl-no-full">').find("button").wrap('<span class="tinvwl-input-group-btn">'),o(".tinv-lists-nav").each(function(){o.trim(o(this).html()).length||o(this).remove()}),o("body").on("click",".social-buttons .social:not(.social-email,.social-whatsapp,.social-clipboard)",function(t){var i=window.open(o(this).attr("href"),o(this).attr("title"),"width=420,height=320,resizable=yes,scrollbars=yes,status=yes");i&&(i.focus(),t.preventDefault())}),"undefined"!=typeof ClipboardJS){new ClipboardJS(".social-buttons .social.social-clipboard",{text:function(t){return t.getAttribute("href")}}).on("success",function(t){showTooltip(t.trigger,tinvwl_add_to_wishlist.tinvwl_clipboard)});for(var t=document.querySelectorAll(".social-buttons .social.social-clipboard"),i=0;i<t.length;i++)t[i].addEventListener("mouseleave",clearTooltip),t[i].addEventListener("blur",clearTooltip)}o("body").on("click",".social-buttons .social.social-clipboard",function(t){t.preventDefault()}),o("body").on("click",".tinv-wishlist .tinv-overlay, .tinv-wishlist .tinv-close-modal, .tinv-wishlist .tinvwl_button_close",function(t){t.preventDefault(),o(this).parents(".tinv-modal:first").removeClass("tinv-modal-open")}),o("body").on("click",".tinv-wishlist .tinvwl-btn-onclick",function(t){o(this).data("url")&&(t.preventDefault(),window.location=o(this).data("url"))});var n=o(".tinv-wishlist .navigation-button");n.length&&n.each(function(){var t=o(this).find("> li");t.length<5&&t.parent().addClass("tinvwl-btns-count-"+t.length)}),o(".tinv-login .showlogin").unbind("click").on("click",function(t){t.preventDefault(),o(this).closest(".tinv-login").find(".login").toggle()}),o(".tinv-wishlist table.tinvwl-table-manage-list tfoot td").each(function(){o(this).toggle(!!o(this).children().not(".look_in").length||!!o(this).children(".look_in").children().length)})})}(jQuery),function(o){o.fn.tinvwl_break_submit=function(t){var i={selector:"input, select, textarea",ifempty:!0,invert:!1,validate:function(){return o(this).val()},rule:function(){var t=o(this).parents("form").eq(0).find(n.selector),i=n.invert;return 0===t.length?n.ifempty:(t.each(function(){i&&!n.invert||!i&&n.invert||(i=Boolean(n.validate.call(o(this))))}),i)}},n=o.extend(!0,{},i,t);return o(this).each(function(){o(this).on("click",function(t){n.rule.call(o(this))||(alert(window.tinvwl_add_to_wishlist.tinvwl_break_submit),t.preventDefault())})})},o(document).ready(function(){o(".tinvwl-break-input").tinvwl_break_submit({selector:".tinvwl-break-input-filed"}),o(".tinvwl-break-checkbox").tinvwl_break_submit({selector:"table td input[type=checkbox]",validate:function(){return o(this).is(":checked")}}),o(".global-cb").on("click",function(){o(this).closest("table").eq(0).find(".product-cb input[type=checkbox], .wishlist-cb input[type=checkbox]").prop("checked",o(this).is(":checked"))})})}(jQuery);
|
1 |
/**
|
2 |
* TI WooCommerce Wishlist Plugin - Allow your store guests and customers to add products to Wishlist. Add Wishlist functionality to your store for free.
|
3 |
+
* @version 1.22.0
|
4 |
* @link https://wordpress.org/plugins/ti-woocommerce-wishlist/
|
5 |
*/
|
6 |
+
"use strict";function _typeof(t){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function showTooltip(t,i){t.setAttribute("class","social social-clipboard tooltipped tooltipped-s"),t.setAttribute("aria-label",i)}function clearTooltip(t){t.currentTarget.setAttribute("class","social social-clipboard "),t.currentTarget.removeAttribute("aria-label")}!function(c){c.fn.tinvwl_to_wishlist=function(t){var i={api_url:window.location.href.split("?")[0],text_create:window.tinvwl_add_to_wishlist.text_create,text_already_in:window.tinvwl_add_to_wishlist.text_already_in,class:{dialogbox:".tinvwl_add_to_select_wishlist",select:".tinvwl_wishlist",newtitle:".tinvwl_new_input",dialogbutton:".tinvwl_button_add"},redirectTimer:null,onPrepareList:function(){},onGetDialogBox:function(){},onPrepareDialogBox:function(){c("body > .tinv-wishlist").length||c("body").append(c("<div>").addClass("tinv-wishlist")),c(this).appendTo("body > .tinv-wishlist")},onCreateWishList:function(t){c(this).append(c("<option>").html(t.title).val(t.ID).toggleClass("tinv_in_wishlist",t.in))},onSelectWishList:function(){},onDialogShow:function(t){c(t).addClass("tinv-modal-open"),c(t).removeClass("ftinvwl-pulse")},onDialogHide:function(t){c(t).removeClass("tinv-modal-open"),c(t).removeClass("ftinvwl-pulse")},onInited:function(){},onClick:function(){if(c(this).is(".disabled-add-wishlist"))return!1;c(this).is(".ftinvwl-animated")&&c(this).addClass("ftinvwl-pulse"),this.tinvwl_dialog?this.tinvwl_dialog.show_list.call(this):e.onActionProduct.call(this)},onPrepareDataAction:function(t,i){c("body").trigger("tinvwl_wishlist_button_clicked",[t,i])},filterProductAlreadyIn:function(t){t=t||[];var o={};return c("form.cart[method=post], .woocommerce-variation-add-to-cart, form.vtajaxform[method=post]").find("input, select").each(function(){var t=c(this).attr("name"),i=c(this).attr("type"),n=c(this).val();("checkbox"!==i&&"radio"!==i||c(this).is(":checked"))&&(o["form"+t]=n)}),o=o.formvariation_id,t.filter(function(t){if("object"!==_typeof(t.in)||"string"!=typeof o)return t.in;var i=parseInt(o);return 0<=t.in.indexOf(i)})},onMultiProductAlreadyIn:function(t){t=t||[];t=e.onPrepareList.call(t)||t,t=e.filterProductAlreadyIn.call(this,t)||t,c(this).parent().parent().find(".already-in").remove();var n="";switch(t.length){case 0:break;default:n=c("<ul>");c.each(t,function(t,i){n.append(c("<li>").html(c("<a>").html(i.title).attr({href:i.url})).val(i.ID))})}n.length&&c(this).closest(".tinv-modal-inner").find("img").after(c("<div>").addClass("already-in").html(e.text_already_in+" ").append(n))},onAction:{redirect:function(t){e.redirectTimer&&clearTimeout(e.redirectTimer),e.redirectTimer=window.setTimeout(function(){window.location.href=t},4e3)},force_redirect:function(t){window.location.href=t},wishlists:function(){},msg:function(t){if(!t)return!1;var i=c(t).eq(0);c("body > .tinv-wishlist").length||c("body").append(c("<div>").addClass("tinv-wishlist")),c("body > .tinv-wishlist").append(i),i.on("click",".tinv-close-modal, .tinvwl_button_close, .tinv-overlay",function(t){t.preventDefault(),i.remove(),e.redirectTimer&&clearTimeout(e.redirectTimer)})},status:function(t){c("body").trigger("tinvwl_wishlist_added_status",[this,t])},removed:function(){},make_remove:function(){},wishlists_data:function(t){d(JSON.stringify(t))}}};i.onActionProduct=function(t,i){var n,r={form:{},tinv_wishlist_id:t||"",tinv_wishlist_name:i||"",product_type:c(this).attr("data-tinv-wl-producttype"),product_id:c(this).attr("data-tinv-wl-product")||0,product_variation:c(this).attr("data-tinv-wl-productvariation")||0,product_action:c(this).attr("data-tinv-wl-action")||"addto",redirect:window.location.href},o=this,d=new FormData;tinvwl_add_to_wishlist.wpml&&(r.lang=tinvwl_add_to_wishlist.wpml),(n=c('form.cart[method=post][data-product_id="'+c(this).attr("data-tinv-wl-product")+'"], form.vtajaxform[method=post][data-product_id="'+c(this).attr("data-tinv-wl-product")+'"], .tinvwl-loop-button-wrapper[data-product_id="'+c(this).attr("data-tinv-wl-product")+'"]')).length||(n=c(o).closest("form.cart[method=post], form.vtajaxform[method=post], .tinvwl-loop-button-wrapper")).length||(n=c("form.cart[method=post]")),n.find("input:not(:disabled), select:not(:disabled), textarea:not(:disabled)").each(function(){function e(t,i){if("object"!==_typeof(i))return i;for(var n in void 0===t&&(t={}),i)if(""===n){var o=-1;for(o in t)o=o;t[o=parseInt(o)+1]=e(t[n],i[n])}else t[n]=e(t[n],i[n]);return t}var t=c(this).attr("name"),i=c(this).attr("type"),n=c(this).val(),o=10;if("button"!==i&&void 0!==t){for(;/^(.+)\[([^\[\]]*?)\]$/.test(t)&&0<o;){var a=t.match(/^(.+)\[([^\[\]]*?)\]$/);if(3===a.length){var l={};l[a[2]]=n,n=l}t=a[1],o--}if("file"===i){var s=c(this)[0].files;s&&d.append(t,s[0])}"checkbox"===i||"radio"===i?c(this).is(":checked")&&(n.length||"object"===_typeof(n)||(n=!0),r.form[t]=e(r.form[t],n)):r.form[t]=e(r.form[t],n)}}),r=e.onPrepareDataAction.call(o,o,r)||r,c.each(r,function(n,t){"form"===n?c.each(t,function(t,i){"object"===_typeof(i)&&(i=JSON.stringify(i)),d.append(n+"["+t+"]",i)}):d.append(n,t)}),c.ajax({url:e.api_url,method:"POST",contentType:!1,processData:!1,data:d}).done(function(t){if(e.onDialogHide.call(o.tinvwl_dialog,o),"object"===_typeof(t))for(var i in t)"function"==typeof e.onAction[i]&&e.onAction[i].call(o,t[i]);else"function"==typeof e.onAction.msg&&e.onAction.msg.call(o,t)})};var e=c.extend(!0,{},i,t);return c(this).each(function(){if(!c(this).attr("data-tinv-wl-list"))return!1;if(e.dialogbox&&e.dialogbox.length&&(this.tinvwl_dialog=e.dialogbox),this.tinvwl_dialog||(this.tinvwl_dialog=e.onGetDialogBox.call(this)),!this.tinvwl_dialog){var t=c(this).nextAll(e.class.dialogbox).eq(0);t.length&&(this.tinvwl_dialog=t)}if(this.tinvwl_dialog){e.onPrepareDialogBox.call(this.tinvwl_dialog),"function"!=typeof this.tinvwl_dialog.update_list&&(this.tinvwl_dialog.update_list=function(t){var n=c(this).find(e.class.select).eq(0);c(this).find(e.class.newtitle).hide().val(""),n.html(""),c.each(t,function(t,i){e.onCreateWishList.call(n,i)}),e.text_create&&e.onCreateWishList.call(n,{ID:"",title:e.text_create,in:!1}),e.onMultiProductAlreadyIn.call(n,t),e.onSelectWishList.call(n,t),c(this).find(e.class.newtitle).toggle(""===n.val())}),"function"!=typeof this.tinvwl_dialog.show_list&&(this.tinvwl_dialog.show_list=function(){var t=JSON.parse(c(this).attr("data-tinv-wl-list"))||[];t.length?(t=e.onPrepareList.call(t)||t,this.tinvwl_dialog.update_list(t),e.onDialogShow.call(this.tinvwl_dialog,this)):e.onActionProduct.call(this)});var o=this;c(this.tinvwl_dialog).find(e.class.dialogbutton).off("click").on("click",function(){var t,i=c(o.tinvwl_dialog).find(e.class.select),n=c(o.tinvwl_dialog).find(e.class.newtitle);i.val()||n.val()?e.onActionProduct.call(o,i.val(),n.val()):((t=n.is(":visible")?n:i).addClass("empty-name-wishlist"),window.setTimeout(function(){t.removeClass("empty-name-wishlist")},1e3))})}c(this).off("click").on("click",e.onClick),e.onInited.call(this,e)})},c(document).ready(function(){c("body").on("click",".tinvwl_add_to_wishlist_button",function(t){if(c(this).is(".disabled-add-wishlist"))return t.preventDefault(),void window.alert(tinvwl_add_to_wishlist.i18n_make_a_selection_text);c(this).is(".inited-add-wishlist")||c(this).tinvwl_to_wishlist({onInited:function(t){c(this).addClass("inited-add-wishlist"),t.onClick.call(this)}})}),c(document).on("hide_variation",".variations_form",function(t){var i=c('.tinvwl_add_to_wishlist_button:not(.tinvwl-loop)[data-tinv-wl-product="'+c(this).data("product_id")+'"]');if(i.attr("data-tinv-wl-productvariation",0),i.length&&i.attr("data-tinv-wl-list")){var n=JSON.parse(i.attr("data-tinv-wl-list")),o=!1,e="1"==window.tinvwl_add_to_wishlist.simple_flow;for(var a in n)n[a].hasOwnProperty("in")&&Array.isArray(n[a].in)&&-1<(n[a].in||[]).indexOf(0)&&(o=!0);i.toggleClass("tinvwl-product-in-list",o).toggleClass("tinvwl-product-make-remove",o&&e).attr("data-tinv-wl-action",o&&e?"remove":"addto")}i.length&&!tinvwl_add_to_wishlist.allow_parent_variable&&(t.preventDefault(),i.addClass("disabled-add-wishlist"))}),c(document).on("show_variation",".variations_form",function(t,i,n){var o=c('.tinvwl_add_to_wishlist_button:not(.tinvwl-loop)[data-tinv-wl-product="'+c(this).data("product_id")+'"]');if(o.attr("data-tinv-wl-productvariation",i.variation_id),o.length&&o.attr("data-tinv-wl-list")){var e=JSON.parse(o.attr("data-tinv-wl-list")),a=!1,l="1"==window.tinvwl_add_to_wishlist.simple_flow;for(var s in e)e[s].hasOwnProperty("in")&&Array.isArray(e[s].in)&&-1<(e[s].in||[]).indexOf(i.variation_id)&&(a=!0);o.toggleClass("tinvwl-product-in-list",a).toggleClass("tinvwl-product-make-remove",a&&l).attr("data-tinv-wl-action",a&&l?"remove":"addto")}t.preventDefault(),o.removeClass("disabled-add-wishlist")}),c(window).on("storage onstorage",function(t){if(s===t.originalEvent.key&&localStorage.getItem(s)!==sessionStorage.getItem(s)&&localStorage.getItem(s)){var i=JSON.parse(localStorage.getItem(s));"object"===_typeof(i)&&null!==i&&(i.hasOwnProperty("products")||i.hasOwnProperty("counter"))&&d(localStorage.getItem(s))}});var n=[],i=!1;c("a.tinvwl_add_to_wishlist_button").each(function(){"undefined"!==c(this).data("tinv-wl-product")&&c(this).data("tinv-wl-product")&&n.push(c(this).data("tinv-wl-product"))}),c(".wishlist_products_counter_number").each(function(){i=!0});function o(){if(n.length||i){var t={};tinvwl_add_to_wishlist.wpml&&(t.lang=tinvwl_add_to_wishlist.wpml),c.ajax({url:tinvwl_add_to_wishlist.plugin_url+"includes/api/ajax.php",method:"POST",data:t,beforeSend:function(t){t.setRequestHeader("X-WP-Nonce",tinvwl_add_to_wishlist.nonce)}}).done(function(t){d(JSON.stringify(t)),r(t)}).fail(function(){!function(){if(n.length||i){var t={ids:n,counter:i,tinvwl_request:!0};tinvwl_add_to_wishlist.wpml&&(t.lang=tinvwl_add_to_wishlist.wpml),c.ajax({url:tinvwl_add_to_wishlist.rest_root+"wishlist/v1/products",method:"POST",data:t,beforeSend:function(t){t.setRequestHeader("X-WP-Nonce",tinvwl_add_to_wishlist.nonce)}}).done(function(t){d(JSON.stringify(t)),r(t)})}}()})}}function e(){if(l&&(tinvwl_add_to_wishlist.update_wishlists_data&&localStorage.setItem(s,""),localStorage.getItem(s))){var t=JSON.parse(localStorage.getItem(s));if("object"===_typeof(t)&&null!==t&&(t.hasOwnProperty("products")||t.hasOwnProperty("counter"))&&(!t.hasOwnProperty("lang")&&!tinvwl_add_to_wishlist.wpml||tinvwl_add_to_wishlist.wpml&&t.lang===tinvwl_add_to_wishlist.wpml))return void r(t)}tinvwl_add_to_wishlist.block_ajax_wishlists_data||o()}e();var t=new MutationObserver(function(t){n=[],t.forEach(function(t){var i=t.addedNodes;null!==i&&c(i).each(function(){var t=c(this).find(".tinvwl_add_to_wishlist_button");t.length&&t.each(function(){"undefined"!==c(this).data("tinv-wl-product")&&c(this).data("tinv-wl-product")&&n.push(c(this).data("tinv-wl-product"))})})}),n.length&&e()}),a=document.body;t.observe(a,{childList:!0,subtree:!0})});var l=!0,s=tinvwl_add_to_wishlist.hash_key;try{l="sessionStorage"in window&&null!==window.sessionStorage,window.sessionStorage.setItem("ti","test"),window.sessionStorage.removeItem("ti"),window.localStorage.setItem("ti","test"),window.localStorage.removeItem("ti")}catch(t){l=!1}function r(t){var l="1"==window.tinvwl_add_to_wishlist.simple_flow;l&&c("a.tinvwl_add_to_wishlist_button").each(function(){c(this).removeClass("tinvwl-product-make-remove").removeClass("tinvwl-product-already-on-wishlist").removeClass("tinvwl-product-in-list").attr("data-tinv-wl-action","addto").attr("data-tinv-wl-list","[]")}),c.each(t.products,function(t,e){var a=t;c("a.tinvwl_add_to_wishlist_button[data-tinv-wl-product='"+a+"']").each(function(){var t=parseInt(c(this).attr("data-tinv-wl-productvariation")),i=c(this).data("tinv-wl-productvariations")||[],n=!1;for(var o in e)e[o].hasOwnProperty("in")&&Array.isArray(e[o].in)&&(-1<(e[o].in||[]).indexOf(a)||-1<(e[o].in||[]).indexOf(t)||i.some(function(t){return 0<=(e[o].in||[]).indexOf(t)}))&&(n=!0);c(this).attr("data-tinv-wl-list",JSON.stringify(e)).toggleClass("tinvwl-product-in-list",n).toggleClass("tinvwl-product-make-remove",n&&l).attr("data-tinv-wl-action",n&&l?"remove":"addto")})}),function(t){"1"==window.tinvwl_add_to_wishlist.hide_zero_counter&&0===t&&(t="false");"false"!==t?jQuery(".wishlist_products_counter_number, body.theme-woostify .wishlist-item-count").html(t):jQuery(".wishlist_products_counter_number, body.theme-woostify .wishlist-item-count").html("").closest("span.wishlist-counter-with-products").removeClass("wishlist-counter-with-products");var i=!("0"==t||"false"==t);jQuery(".wishlist_products_counter").toggleClass("wishlist-counter-with-products",i)}(t.counter)}function d(t){l&&(localStorage.setItem(s,t),sessionStorage.setItem(s,t),r(JSON.parse(t)))}}(jQuery),function(o){o(document).ready(function(){if(o("#tinvwl_manage_actions, #tinvwl_product_actions").addClass("form-control").parent().wrapInner('<div class="tinvwl-input-group tinvwl-no-full">').find("button").wrap('<span class="tinvwl-input-group-btn">'),o(".tinv-lists-nav").each(function(){o(this).html().trim().length||o(this).remove()}),o("body").on("click",".social-buttons .social:not(.social-email,.social-whatsapp,.social-clipboard)",function(t){var i=window.open(o(this).attr("href"),o(this).attr("title"),"width=420,height=320,resizable=yes,scrollbars=yes,status=yes");i&&(i.focus(),t.preventDefault())}),"undefined"!=typeof ClipboardJS){new ClipboardJS(".social-buttons .social.social-clipboard",{text:function(t){return t.getAttribute("href")}}).on("success",function(t){showTooltip(t.trigger,tinvwl_add_to_wishlist.tinvwl_clipboard)});for(var t=document.querySelectorAll(".social-buttons .social.social-clipboard"),i=0;i<t.length;i++)t[i].addEventListener("mouseleave",clearTooltip),t[i].addEventListener("blur",clearTooltip)}o("body").on("click",".social-buttons .social.social-clipboard",function(t){t.preventDefault()}),o("body").on("click",".tinv-wishlist .tinv-overlay, .tinv-wishlist .tinv-close-modal, .tinv-wishlist .tinvwl_button_close",function(t){t.preventDefault(),o(this).parents(".tinv-modal:first").removeClass("tinv-modal-open")}),o("body").on("click",".tinv-wishlist .tinvwl-btn-onclick",function(t){o(this).data("url")&&(t.preventDefault(),window.location=o(this).data("url"))});var n=o(".tinv-wishlist .navigation-button");n.length&&n.each(function(){var t=o(this).find("> li");t.length<5&&t.parent().addClass("tinvwl-btns-count-"+t.length)}),o(".tinv-login .showlogin").off("click").on("click",function(t){t.preventDefault(),o(this).closest(".tinv-login").find(".login").toggle()}),o(".tinv-wishlist table.tinvwl-table-manage-list tfoot td").each(function(){o(this).toggle(!!o(this).children().not(".look_in").length||!!o(this).children(".look_in").children().length)})})}(jQuery),function(o){o.fn.tinvwl_break_submit=function(t){var i={selector:"input, select, textarea",ifempty:!0,invert:!1,validate:function(){return o(this).val()},rule:function(){var t=o(this).parents("form").eq(0).find(n.selector),i=n.invert;return 0===t.length?n.ifempty:(t.each(function(){i&&!n.invert||!i&&n.invert||(i=Boolean(n.validate.call(o(this))))}),i)}},n=o.extend(!0,{},i,t);return o(this).each(function(){o(this).on("click",function(t){n.rule.call(o(this))||(alert(window.tinvwl_add_to_wishlist.tinvwl_break_submit),t.preventDefault())})})},o(document).ready(function(){o(".tinvwl-break-input").tinvwl_break_submit({selector:".tinvwl-break-input-filed"}),o(".tinvwl-break-checkbox").tinvwl_break_submit({selector:"table td input[type=checkbox]",validate:function(){return o(this).is(":checked")}}),o(".global-cb").on("click",function(){o(this).closest("table").eq(0).find(".product-cb input[type=checkbox], .wishlist-cb input[type=checkbox]").prop("checked",o(this).is(":checked"))})})}(jQuery);
|
includes/analytics.class.php
CHANGED
@@ -254,8 +254,8 @@ class TInvWL_Analytics {
|
|
254 |
foreach ( $product_id as $key => $id ) {
|
255 |
$product_data = $this->product_data( $id, $variation_id[ $key ] );
|
256 |
if ( $product_data ) {
|
257 |
-
$ids['product_id'][ $key ] =
|
258 |
-
$ids['variation_id'][ $key ] =
|
259 |
}
|
260 |
}
|
261 |
if ( empty( $ids ) ) {
|
@@ -438,8 +438,8 @@ class TInvWL_Analytics {
|
|
438 |
foreach ( $products as $k => $product ) {
|
439 |
$product_data = $this->product_data( $product['variation_id'], $product['product_id'] );
|
440 |
if ( $product_data ) {
|
441 |
-
$product['product_id'] =
|
442 |
-
$product['variation_id'] =
|
443 |
}
|
444 |
$product['data'] = $product_data;
|
445 |
$products[ $k ] = $product;
|
@@ -504,8 +504,8 @@ class TInvWL_Analytics {
|
|
504 |
if ( ! empty( $product_id ) || ! empty( $variation_id ) ) {
|
505 |
$product_data = $this->product_data( $product_id, $variation_id );
|
506 |
if ( $product_data ) {
|
507 |
-
$product_id =
|
508 |
-
$variation_id =
|
509 |
} else {
|
510 |
$product_id = 0;
|
511 |
$variation_id = 0;
|
254 |
foreach ( $product_id as $key => $id ) {
|
255 |
$product_data = $this->product_data( $id, $variation_id[ $key ] );
|
256 |
if ( $product_data ) {
|
257 |
+
$ids['product_id'][ $key ] = $product_data->is_type( 'variation' ) ? $product_data->get_parent_id() : $product_data->get_id();
|
258 |
+
$ids['variation_id'][ $key ] = $product_data->is_type( 'variation' ) ? $product_data->get_id() : 0;
|
259 |
}
|
260 |
}
|
261 |
if ( empty( $ids ) ) {
|
438 |
foreach ( $products as $k => $product ) {
|
439 |
$product_data = $this->product_data( $product['variation_id'], $product['product_id'] );
|
440 |
if ( $product_data ) {
|
441 |
+
$product['product_id'] = $product_data->is_type( 'variation' ) ? $product_data->get_parent_id() : $product_data->get_id();
|
442 |
+
$product['variation_id'] = $product_data->is_type( 'variation' ) ? $product_data->get_id() : 0;
|
443 |
}
|
444 |
$product['data'] = $product_data;
|
445 |
$products[ $k ] = $product;
|
504 |
if ( ! empty( $product_id ) || ! empty( $variation_id ) ) {
|
505 |
$product_data = $this->product_data( $product_id, $variation_id );
|
506 |
if ( $product_data ) {
|
507 |
+
$product_id = $product_data->is_type( 'variation' ) ? $product_data->get_parent_id() : $product_data->get_id();
|
508 |
+
$variation_id = $product_data->is_type( 'variation' ) ? $product_data->get_id() : 0;
|
509 |
} else {
|
510 |
$product_id = 0;
|
511 |
$variation_id = 0;
|
includes/api/ajax.php
CHANGED
@@ -1,217 +1,225 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
// Init
|
4 |
-
// -----------------------------------------------------------------------
|
5 |
-
define( 'DOING_AJAX', true );
|
6 |
-
define( 'SHORTINIT', true );
|
7 |
-
|
8 |
-
// WP Load
|
9 |
-
// -----------------------------------------------------------------------
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
require_once( ABSPATH . WPINC . '/user.php' );
|
26 |
-
require_once( ABSPATH . WPINC . '/
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
require_once( ABSPATH . WPINC . '/
|
31 |
-
require_once( ABSPATH . WPINC . '/
|
32 |
-
require_once( ABSPATH . WPINC . '/
|
33 |
-
require_once( ABSPATH . WPINC . '/
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
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 |
-
$default['
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
$
|
107 |
-
}
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
JOIN {$
|
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 |
-
|
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 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
// Init
|
4 |
+
// -----------------------------------------------------------------------
|
5 |
+
define( 'DOING_AJAX', true );
|
6 |
+
define( 'SHORTINIT', true );
|
7 |
+
|
8 |
+
// WP Load
|
9 |
+
// -----------------------------------------------------------------------
|
10 |
+
|
11 |
+
$config_file = dirname( dirname( dirname( dirname( dirname( dirname( __FILE__ ) ) ) ) ) ) . '/wp-config.php';
|
12 |
+
$load_file = dirname( dirname( dirname( dirname( dirname( dirname( __FILE__ ) ) ) ) ) ) . '/wp-load.php';
|
13 |
+
|
14 |
+
if ( file_exists( $config_file ) ) {
|
15 |
+
require( $config_file );
|
16 |
+
require( ABSPATH . '/wp-load.php' );
|
17 |
+
} elseif ( file_exists( $load_file ) ) {
|
18 |
+
require( $load_file );
|
19 |
+
}
|
20 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
21 |
+
exit;
|
22 |
+
}
|
23 |
+
|
24 |
+
wp_plugin_directory_constants();
|
25 |
+
require_once( ABSPATH . WPINC . '/class-wp-user.php' );
|
26 |
+
require_once( ABSPATH . WPINC . '/class-wp-roles.php' );
|
27 |
+
require_once( ABSPATH . WPINC . '/class-wp-role.php' );
|
28 |
+
require_once( ABSPATH . WPINC . '/class-wp-session-tokens.php' );
|
29 |
+
require_once( ABSPATH . WPINC . '/class-wp-user-meta-session-tokens.php' );
|
30 |
+
require_once( ABSPATH . WPINC . '/formatting.php' );
|
31 |
+
require_once( ABSPATH . WPINC . '/capabilities.php' );
|
32 |
+
//require_once ( ABSPATH . WPINC . '/query.php' ); // - might be useful
|
33 |
+
require_once( ABSPATH . WPINC . '/user.php' );
|
34 |
+
require_once( ABSPATH . WPINC . '/meta.php' );
|
35 |
+
|
36 |
+
wp_cookie_constants();
|
37 |
+
|
38 |
+
require_once( ABSPATH . WPINC . '/vars.php' );
|
39 |
+
require_once( ABSPATH . WPINC . '/kses.php' );
|
40 |
+
require_once( ABSPATH . WPINC . '/rest-api.php' );
|
41 |
+
require_once( ABSPATH . WPINC . '/pluggable.php' );
|
42 |
+
|
43 |
+
// Get the nonce.
|
44 |
+
if ( isset( $_SERVER['HTTP_X_WP_NONCE'] ) ) {
|
45 |
+
$nonce = $_SERVER['HTTP_X_WP_NONCE'];
|
46 |
+
} else {
|
47 |
+
wp_send_json( array( 'error' => 'Forbidden: unauthorized request.' ), 403 );
|
48 |
+
}
|
49 |
+
|
50 |
+
// Check the nonce.
|
51 |
+
$result = wp_verify_nonce( $nonce, 'wp_rest' );
|
52 |
+
|
53 |
+
if ( ! $result ) {
|
54 |
+
wp_send_json( array( 'error' => 'Forbidden: wrong nonce.' ), 403 );
|
55 |
+
}
|
56 |
+
|
57 |
+
// Response headers
|
58 |
+
@header( 'X-Robots-Tag: noindex' );
|
59 |
+
send_nosniff_header();
|
60 |
+
nocache_headers();
|
61 |
+
|
62 |
+
// DB query.
|
63 |
+
global $wpdb;
|
64 |
+
|
65 |
+
$table = sprintf( '%s%s', $wpdb->prefix, 'tinvwl_items' );
|
66 |
+
$table_lists = sprintf( '%s%s', $wpdb->prefix, 'tinvwl_lists' );
|
67 |
+
$table_translations = sprintf( '%s%s', $wpdb->prefix, 'icl_translations' );
|
68 |
+
$table_languages = sprintf( '%s%s', $wpdb->prefix, 'icl_languages' );
|
69 |
+
$lang = filter_input( INPUT_POST, 'lang', FILTER_SANITIZE_STRING );
|
70 |
+
|
71 |
+
$data = $products = $wishlists = $results = array();
|
72 |
+
|
73 |
+
$share_key = false;
|
74 |
+
|
75 |
+
if ( is_user_logged_in() ) {
|
76 |
+
$data['author'] = get_current_user_id();
|
77 |
+
} else {
|
78 |
+
$share_key = filter_input( INPUT_COOKIE, 'tinv_wishlistkey' );
|
79 |
+
}
|
80 |
+
|
81 |
+
if ( ( isset( $data['author'] ) && $data['author'] ) || $share_key ) {
|
82 |
+
|
83 |
+
$default = array(
|
84 |
+
'count' => 99999,
|
85 |
+
'field' => null,
|
86 |
+
'offset' => 0,
|
87 |
+
'order' => 'DESC',
|
88 |
+
'order_by' => 'date',
|
89 |
+
'external' => true,
|
90 |
+
'sql' => '',
|
91 |
+
);
|
92 |
+
|
93 |
+
foreach ( $default as $_k => $_v ) {
|
94 |
+
if ( array_key_exists( $_k, $data ) ) {
|
95 |
+
$default[ $_k ] = $data[ $_k ];
|
96 |
+
unset( $data[ $_k ] );
|
97 |
+
}
|
98 |
+
}
|
99 |
+
|
100 |
+
$default['offset'] = absint( $default['offset'] );
|
101 |
+
$default['count'] = absint( $default['count'] );
|
102 |
+
|
103 |
+
if ( $lang ) {
|
104 |
+
$default['field'] = $table . '.ID, t.element_id AS product_id, t2.element_id AS variation_id, ' . $table . '.formdata,' . $table . '.author,' . $table . '.date,' . $table . '.quantity,' . $table . '.price,' . $table . '.in_stock,';
|
105 |
+
} else {
|
106 |
+
$default['field'] = $table . '.*, ';
|
107 |
+
}
|
108 |
+
|
109 |
+
$default['field'] .= $table_lists . '.ID as wishlist_id, ' . $table_lists . '.status as wishlist_status, ' . $table_lists . '.title as wishlist_title, ' . $table_lists . '.share_key as wishlist_share_key';
|
110 |
+
|
111 |
+
$sql = "SELECT {$default[ 'field' ]} FROM `{$table}` INNER JOIN `{$table_lists}` ON `{$table}`.`wishlist_id` = `{$table_lists}`.`ID` AND `{$table_lists}`.`type` = 'default'";
|
112 |
+
|
113 |
+
if ( $share_key ) {
|
114 |
+
$sql .= " AND `{$table_lists}`.`share_key` = '{$share_key}'";
|
115 |
+
}
|
116 |
+
if ( $lang ) {
|
117 |
+
$sql .= "LEFT JOIN {$table_translations} tr ON
|
118 |
+
{$table}.product_id = tr.element_id AND tr.element_type = 'post_product'
|
119 |
+
LEFT JOIN {$table_translations} tr2 ON
|
120 |
+
{$table}.variation_id != 0 AND {$table}.variation_id = tr2.element_id AND tr2.element_type = 'post_product_variation'
|
121 |
+
LEFT JOIN {$table_translations} t ON
|
122 |
+
tr.trid = t.trid AND t.element_type = 'post_product' AND t.language_code = '{$lang}'
|
123 |
+
LEFT JOIN {$table_translations} t2 ON
|
124 |
+
{$table}.variation_id != 0 AND tr2.trid = t2.trid AND t2.element_type = 'post_product_variation' AND t2.language_code = '{$lang}'
|
125 |
+
JOIN {$table_languages} l ON
|
126 |
+
(
|
127 |
+
t.language_code = l.code OR t2.language_code = l.code
|
128 |
+
) AND l.active = 1";
|
129 |
+
}
|
130 |
+
$where = '1';
|
131 |
+
|
132 |
+
if ( ! empty( $data ) && is_array( $data ) ) {
|
133 |
+
|
134 |
+
if ( array_key_exists( 'meta', $data ) ) {
|
135 |
+
$product_id = $variation_id = 0;
|
136 |
+
if ( array_key_exists( 'product_id', $data ) ) {
|
137 |
+
$product_id = $data['product_id'];
|
138 |
+
}
|
139 |
+
if ( array_key_exists( 'variation_id', $data ) ) {
|
140 |
+
$variation_id = $data['variation_id'];
|
141 |
+
}
|
142 |
+
$data['formdata'] = '';
|
143 |
+
unset( $data['meta'] );
|
144 |
+
}
|
145 |
+
|
146 |
+
foreach ( $data as $f => $v ) {
|
147 |
+
$s = is_array( $v ) ? ' IN ' : '=';
|
148 |
+
if ( is_array( $v ) ) {
|
149 |
+
foreach ( $v as $_f => $_v ) {
|
150 |
+
$v[ $_f ] = $wpdb->prepare( '%s', $_v );
|
151 |
+
}
|
152 |
+
$v = implode( ',', $v );
|
153 |
+
$v = "($v)";
|
154 |
+
} else {
|
155 |
+
$v = $wpdb->prepare( '%s', $v );
|
156 |
+
}
|
157 |
+
$data[ $f ] = sprintf( $table . '.' . '`%s`%s%s', $f, $s, $v );
|
158 |
+
}
|
159 |
+
|
160 |
+
$where = implode( ' AND ', $data );
|
161 |
+
|
162 |
+
$sql .= ' WHERE ' . $where;
|
163 |
+
}
|
164 |
+
|
165 |
+
$sql .= sprintf( ' ORDER BY `%s` %s LIMIT %d,%d;', $default['order_by'], $default['order'], $default['offset'], $default['count'] );
|
166 |
+
|
167 |
+
if ( ! empty( $default['sql'] ) ) {
|
168 |
+
$replacer = $replace = array();
|
169 |
+
$replace[0] = '{table}';
|
170 |
+
$replacer[0] = $table;
|
171 |
+
$replace[1] = '{where}';
|
172 |
+
$replacer[1] = $where;
|
173 |
+
|
174 |
+
foreach ( $default as $key => $value ) {
|
175 |
+
$i = count( $replace );
|
176 |
+
|
177 |
+
$replace[ $i ] = '{' . $key . '}';
|
178 |
+
$replacer[ $i ] = $value;
|
179 |
+
}
|
180 |
+
|
181 |
+
$sql = str_replace( $replace, $replacer, $default['sql'] );
|
182 |
+
}
|
183 |
+
|
184 |
+
$results = $wpdb->get_results( $sql, ARRAY_A );
|
185 |
+
|
186 |
+
if ( ! empty( $results ) ) {
|
187 |
+
foreach ( $results as $product ) {
|
188 |
+
$wishlists[ $product['wishlist_id'] ] = array(
|
189 |
+
'ID' => (int) $product['wishlist_id'],
|
190 |
+
'title' => $product['wishlist_title'],
|
191 |
+
'status' => $product['wishlist_status'],
|
192 |
+
'share_key' => $product['wishlist_share_key'],
|
193 |
+
);
|
194 |
+
|
195 |
+
}
|
196 |
+
|
197 |
+
foreach ( $wishlists as $wishlist ) {
|
198 |
+
|
199 |
+
foreach ( $results as $product ) {
|
200 |
+
if ( array_key_exists( $product['product_id'], $products ) ) {
|
201 |
+
$products[ $product['product_id'] ][ $wishlist['ID'] ]['in'][] = (int) $product['variation_id'];
|
202 |
+
} else {
|
203 |
+
$products[ $product['product_id'] ][ $wishlist['ID'] ] = $wishlist;
|
204 |
+
$products[ $product['product_id'] ][ $wishlist['ID'] ]['in'][] = (int) $product['variation_id'];
|
205 |
+
}
|
206 |
+
|
207 |
+
}
|
208 |
+
}
|
209 |
+
}
|
210 |
+
|
211 |
+
}
|
212 |
+
|
213 |
+
$count = is_array( $results ) ? array_sum( array_column( $results, 'quantity' ) ) : 0;
|
214 |
+
|
215 |
+
$response = array(
|
216 |
+
'products' => $products,
|
217 |
+
'counter' => $count,
|
218 |
+
);
|
219 |
+
|
220 |
+
if ( $lang ) {
|
221 |
+
$response['lang'] = $lang;
|
222 |
+
}
|
223 |
+
|
224 |
+
|
225 |
+
wp_send_json( $response );
|
includes/api/yoasti18n.class.php
CHANGED
@@ -44,12 +44,14 @@ class TInvWL_Includes_API_Yoasti18n {
|
|
44 |
*
|
45 |
* @param string $plugin_name Plugin name.
|
46 |
* @param string $version Plugin version.
|
|
|
47 |
* @return /TInvWL_Includes_API_Yoasti18n
|
48 |
*/
|
49 |
public static function instance( $plugin_name = '', $version = '' ) {
|
50 |
if ( is_null( self::$_instance ) ) {
|
51 |
self::$_instance = new self( $plugin_name, $version );
|
52 |
}
|
|
|
53 |
return self::$_instance;
|
54 |
}
|
55 |
|
@@ -68,11 +70,12 @@ class TInvWL_Includes_API_Yoasti18n {
|
|
68 |
public function load_i18n() {
|
69 |
if ( empty( $this->i18n ) ) {
|
70 |
$this->i18n = new TInvWL_Yoast_I18n_WordPressOrg_V2( array(
|
71 |
-
'textdomain'
|
72 |
-
'plugin_name'
|
73 |
-
'hook'
|
74 |
) );
|
75 |
}
|
|
|
76 |
return $this->i18n;
|
77 |
}
|
78 |
}
|
44 |
*
|
45 |
* @param string $plugin_name Plugin name.
|
46 |
* @param string $version Plugin version.
|
47 |
+
*
|
48 |
* @return /TInvWL_Includes_API_Yoasti18n
|
49 |
*/
|
50 |
public static function instance( $plugin_name = '', $version = '' ) {
|
51 |
if ( is_null( self::$_instance ) ) {
|
52 |
self::$_instance = new self( $plugin_name, $version );
|
53 |
}
|
54 |
+
|
55 |
return self::$_instance;
|
56 |
}
|
57 |
|
70 |
public function load_i18n() {
|
71 |
if ( empty( $this->i18n ) ) {
|
72 |
$this->i18n = new TInvWL_Yoast_I18n_WordPressOrg_V2( array(
|
73 |
+
'textdomain' => 'ti-woocommerce-wishlist',
|
74 |
+
'plugin_name' => 'WooCommerce Wishlist Plugin',
|
75 |
+
'hook' => 'tinvwl_view_header',
|
76 |
) );
|
77 |
}
|
78 |
+
|
79 |
return $this->i18n;
|
80 |
}
|
81 |
}
|
includes/pluginextend.helper.php
CHANGED
@@ -105,8 +105,8 @@ class TInvWL_PluginExtend {
|
|
105 |
foreach ( array_keys( $plugins ) as $plugin ) {
|
106 |
add_filter( 'plugin_action_links_' . $plugin, array( $this, 'plugin_action_links_maybe_deactivate' ) );
|
107 |
add_filter( 'network_admin_plugin_action_links_' . $plugin, array(
|
108 |
-
|
109 |
-
|
110 |
) );
|
111 |
}
|
112 |
|
@@ -305,7 +305,7 @@ class TInvWL_PluginExtend {
|
|
305 |
* @return boolean
|
306 |
*/
|
307 |
private function is_plugin_at_min_version( $plugin ) {
|
308 |
-
return $this->is_plugin_at_version(
|
309 |
}
|
310 |
|
311 |
/**
|
@@ -316,7 +316,7 @@ class TInvWL_PluginExtend {
|
|
316 |
* @return boolean
|
317 |
*/
|
318 |
private function is_plugin_at_max_version( $plugin ) {
|
319 |
-
return $this->is_plugin_at_version(
|
320 |
}
|
321 |
|
322 |
/**
|
@@ -327,7 +327,7 @@ class TInvWL_PluginExtend {
|
|
327 |
* @return boolean
|
328 |
*/
|
329 |
private function is_plugin_at_need_version( $plugin ) {
|
330 |
-
return $this->is_plugin_at_version(
|
331 |
}
|
332 |
|
333 |
/**
|
@@ -338,22 +338,23 @@ class TInvWL_PluginExtend {
|
|
338 |
* @return boolean
|
339 |
*/
|
340 |
private function is_plugin_at_conflict_version( $plugin ) {
|
341 |
-
return $this->is_plugin_at_version(
|
342 |
}
|
343 |
|
344 |
/**
|
345 |
* Check plugin version dependency.
|
346 |
*
|
|
|
|
|
347 |
* @param integer $i Index rules.
|
348 |
* 0 Min version.
|
349 |
* 1 Max version.
|
350 |
* 2 Need plugin verion.
|
351 |
* 3 Conflict plugin verion.
|
352 |
-
* @param string $plugin Plugin transient name.
|
353 |
*
|
354 |
* @return boolean
|
355 |
*/
|
356 |
-
private function is_plugin_at_version( $i = 0
|
357 |
|
358 |
switch ( $i ) {
|
359 |
case 3:
|
@@ -465,7 +466,7 @@ class TInvWL_PluginExtend {
|
|
465 |
?>
|
466 |
<tr class="plugin-update-tr installer-plugin-update-tr">
|
467 |
<td colspan="<?php echo $wp_list_table->get_column_count(); // WPCS: xss ok. ?>"
|
468 |
-
|
469 |
<div class="notice inline notice-warning notice-alt">
|
470 |
<p class="installer-q-icon">
|
471 |
<?php echo $this->get_messages( true ); // WPCS: xss ok. ?>
|
105 |
foreach ( array_keys( $plugins ) as $plugin ) {
|
106 |
add_filter( 'plugin_action_links_' . $plugin, array( $this, 'plugin_action_links_maybe_deactivate' ) );
|
107 |
add_filter( 'network_admin_plugin_action_links_' . $plugin, array(
|
108 |
+
$this,
|
109 |
+
'plugin_action_links_maybe_deactivate',
|
110 |
) );
|
111 |
}
|
112 |
|
305 |
* @return boolean
|
306 |
*/
|
307 |
private function is_plugin_at_min_version( $plugin ) {
|
308 |
+
return $this->is_plugin_at_version( $plugin, 0 );
|
309 |
}
|
310 |
|
311 |
/**
|
316 |
* @return boolean
|
317 |
*/
|
318 |
private function is_plugin_at_max_version( $plugin ) {
|
319 |
+
return $this->is_plugin_at_version( $plugin, 1 );
|
320 |
}
|
321 |
|
322 |
/**
|
327 |
* @return boolean
|
328 |
*/
|
329 |
private function is_plugin_at_need_version( $plugin ) {
|
330 |
+
return $this->is_plugin_at_version( $plugin, 2 );
|
331 |
}
|
332 |
|
333 |
/**
|
338 |
* @return boolean
|
339 |
*/
|
340 |
private function is_plugin_at_conflict_version( $plugin ) {
|
341 |
+
return $this->is_plugin_at_version( $plugin, 3 );
|
342 |
}
|
343 |
|
344 |
/**
|
345 |
* Check plugin version dependency.
|
346 |
*
|
347 |
+
* @param string $plugin Plugin transient name.
|
348 |
+
*
|
349 |
* @param integer $i Index rules.
|
350 |
* 0 Min version.
|
351 |
* 1 Max version.
|
352 |
* 2 Need plugin verion.
|
353 |
* 3 Conflict plugin verion.
|
|
|
354 |
*
|
355 |
* @return boolean
|
356 |
*/
|
357 |
+
private function is_plugin_at_version( $plugin, $i = 0 ) {
|
358 |
|
359 |
switch ( $i ) {
|
360 |
case 3:
|
466 |
?>
|
467 |
<tr class="plugin-update-tr installer-plugin-update-tr">
|
468 |
<td colspan="<?php echo $wp_list_table->get_column_count(); // WPCS: xss ok. ?>"
|
469 |
+
class="plugin-update colspanchange">
|
470 |
<div class="notice inline notice-warning notice-alt">
|
471 |
<p class="installer-q-icon">
|
472 |
<?php echo $this->get_messages( true ); // WPCS: xss ok. ?>
|
includes/product.helper.php
CHANGED
@@ -181,7 +181,7 @@ class TInvWL_Product {
|
|
181 |
if ( $product_data->is_type( 'variable' ) ) {
|
182 |
$data['price'] = filter_var( $product_data->get_variation_price( 'max', false ), FILTER_VALIDATE_FLOAT );
|
183 |
} else {
|
184 |
-
$data['price'] = filter_var( (
|
185 |
}
|
186 |
|
187 |
global $wpdb;
|
@@ -246,8 +246,8 @@ class TInvWL_Product {
|
|
246 |
return false;
|
247 |
}
|
248 |
|
249 |
-
$product_id =
|
250 |
-
$variation_id =
|
251 |
|
252 |
$products = $this->get( array(
|
253 |
'product_id' => $product_id,
|
@@ -447,11 +447,11 @@ class TInvWL_Product {
|
|
447 |
|
448 |
$product_data = apply_filters( 'tinvwl_product_data', wc_get_product( $variation_id ? $variation_id : $product_id ), $product_id, $variation_id );
|
449 |
|
450 |
-
if ( ! $product_data || 'trash' ===
|
451 |
return null;
|
452 |
}
|
453 |
|
454 |
-
$product_data->variation_id = absint( (
|
455 |
|
456 |
return $product_data;
|
457 |
}
|
@@ -506,7 +506,7 @@ class TInvWL_Product {
|
|
506 |
if ( $product_data->is_type( 'variable' ) ) {
|
507 |
$data['price'] = filter_var( $product_data->get_variation_price( 'max', false ), FILTER_VALIDATE_FLOAT );
|
508 |
} else {
|
509 |
-
$data['price'] = filter_var(
|
510 |
}
|
511 |
|
512 |
global $wpdb;
|
181 |
if ( $product_data->is_type( 'variable' ) ) {
|
182 |
$data['price'] = filter_var( $product_data->get_variation_price( 'max', false ), FILTER_VALIDATE_FLOAT );
|
183 |
} else {
|
184 |
+
$data['price'] = filter_var( ( $product_data->get_price() ), FILTER_VALIDATE_FLOAT );
|
185 |
}
|
186 |
|
187 |
global $wpdb;
|
246 |
return false;
|
247 |
}
|
248 |
|
249 |
+
$product_id = $product_data->is_type( 'variation' ) ? $product_data->get_parent_id() : $product_data->get_id();
|
250 |
+
$variation_id = $product_data->is_type( 'variation' ) ? $product_data->get_id() : 0;
|
251 |
|
252 |
$products = $this->get( array(
|
253 |
'product_id' => $product_id,
|
447 |
|
448 |
$product_data = apply_filters( 'tinvwl_product_data', wc_get_product( $variation_id ? $variation_id : $product_id ), $product_id, $variation_id );
|
449 |
|
450 |
+
if ( ! $product_data || 'trash' === get_post( $product_data->get_id() )->post_status ) {
|
451 |
return null;
|
452 |
}
|
453 |
|
454 |
+
$product_data->variation_id = absint( ( $product_data->is_type( 'variation' ) ? $product_data->get_id() : 0 ) );
|
455 |
|
456 |
return $product_data;
|
457 |
}
|
506 |
if ( $product_data->is_type( 'variable' ) ) {
|
507 |
$data['price'] = filter_var( $product_data->get_variation_price( 'max', false ), FILTER_VALIDATE_FLOAT );
|
508 |
} else {
|
509 |
+
$data['price'] = filter_var( $product_data->get_price(), FILTER_VALIDATE_FLOAT );
|
510 |
}
|
511 |
|
512 |
global $wpdb;
|
includes/product/legacy.class.php
CHANGED
@@ -213,8 +213,8 @@ class TInvWL_Product_Legacy {
|
|
213 |
}
|
214 |
|
215 |
$data = apply_filters( 'tinvwl_wishlist_product_add', $data );
|
216 |
-
$data['product_id'] =
|
217 |
-
$data['variation_id'] =
|
218 |
|
219 |
$this->add_cookies( $data );
|
220 |
|
@@ -251,8 +251,8 @@ class TInvWL_Product_Legacy {
|
|
251 |
}
|
252 |
|
253 |
$products = $this->get( array(
|
254 |
-
'product_id' =>
|
255 |
-
'variation_id' =>
|
256 |
'count' => 1,
|
257 |
'external' => false,
|
258 |
) );
|
@@ -330,8 +330,8 @@ class TInvWL_Product_Legacy {
|
|
330 |
if ( $default['external'] ) {
|
331 |
$product_data = $this->product_data( $product['variation_id'], $product['product_id'] );
|
332 |
if ( $product_data ) {
|
333 |
-
$product['product_id'] =
|
334 |
-
$product['variation_id'] =
|
335 |
}
|
336 |
$product['data'] = $product_data;
|
337 |
}
|
@@ -360,11 +360,11 @@ class TInvWL_Product_Legacy {
|
|
360 |
|
361 |
$product_data = wc_get_product( $variation_id ? $variation_id : $product_id );
|
362 |
|
363 |
-
if ( ! $product_data || 'trash' ===
|
364 |
return null;
|
365 |
}
|
366 |
|
367 |
-
$product_data->variation_id = absint( (
|
368 |
|
369 |
return $product_data;
|
370 |
}
|
@@ -401,8 +401,8 @@ class TInvWL_Product_Legacy {
|
|
401 |
}
|
402 |
|
403 |
$data = apply_filters( 'tinvwl_wishlist_product_update', $data );
|
404 |
-
$data['product_id'] =
|
405 |
-
$data['variation_id'] =
|
406 |
|
407 |
return $this->update_cookies( $data, array(
|
408 |
'product_id' => $data['product_id'],
|
@@ -431,7 +431,7 @@ class TInvWL_Product_Legacy {
|
|
431 |
}
|
432 |
|
433 |
foreach ( $this->products as $key => $product ) {
|
434 |
-
if ( (
|
435 |
$this->products[ $key ] = null;
|
436 |
}
|
437 |
}
|
@@ -442,7 +442,7 @@ class TInvWL_Product_Legacy {
|
|
442 |
|
443 |
if ( count( $this->products ) < $c ) {
|
444 |
$this->update_cookie();
|
445 |
-
do_action( 'tinvwl_wishlist_product_removed_from_wishlist', $wishlist_id, (
|
446 |
}
|
447 |
|
448 |
return true;
|
213 |
}
|
214 |
|
215 |
$data = apply_filters( 'tinvwl_wishlist_product_add', $data );
|
216 |
+
$data['product_id'] = $product_data->is_type( 'variation' ) ? $product_data->get_parent_id() : $product_data->get_id();
|
217 |
+
$data['variation_id'] = $product_data->is_type( 'variation' ) ? $product_data->get_id() : 0;
|
218 |
|
219 |
$this->add_cookies( $data );
|
220 |
|
251 |
}
|
252 |
|
253 |
$products = $this->get( array(
|
254 |
+
'product_id' => $product_data->is_type( 'variation' ) ? $product_data->get_parent_id() : $product_data->get_id(),
|
255 |
+
'variation_id' => $product_data->is_type( 'variation' ) ? $product_data->get_id() : 0,
|
256 |
'count' => 1,
|
257 |
'external' => false,
|
258 |
) );
|
330 |
if ( $default['external'] ) {
|
331 |
$product_data = $this->product_data( $product['variation_id'], $product['product_id'] );
|
332 |
if ( $product_data ) {
|
333 |
+
$product['product_id'] = $product_data->is_type( 'variation' ) ? $product_data->get_parent_id() : $product_data->get_id();
|
334 |
+
$product['variation_id'] = $product_data->is_type( 'variation' ) ? $product_data->get_id() : 0;
|
335 |
}
|
336 |
$product['data'] = $product_data;
|
337 |
}
|
360 |
|
361 |
$product_data = wc_get_product( $variation_id ? $variation_id : $product_id );
|
362 |
|
363 |
+
if ( ! $product_data || 'trash' === get_post( $product_data->get_id() )->post_status ) {
|
364 |
return null;
|
365 |
}
|
366 |
|
367 |
+
$product_data->variation_id = absint( ( $product_data->is_type( 'variation' ) ? $product_data->get_id() : 0 ) );
|
368 |
|
369 |
return $product_data;
|
370 |
}
|
401 |
}
|
402 |
|
403 |
$data = apply_filters( 'tinvwl_wishlist_product_update', $data );
|
404 |
+
$data['product_id'] = $product_data->is_type( 'variation' ) ? $product_data->get_parent_id() : $product_data->get_id();
|
405 |
+
$data['variation_id'] = $product_data->is_type( 'variation' ) ? $product_data->get_id() : 0;
|
406 |
|
407 |
return $this->update_cookies( $data, array(
|
408 |
'product_id' => $data['product_id'],
|
431 |
}
|
432 |
|
433 |
foreach ( $this->products as $key => $product ) {
|
434 |
+
if ( ( $product_data->is_type( 'variation' ) ? $product_data->get_parent_id() : $product_data->get_id() ) == $product['product_id'] && ( $product_data->is_type( 'variation' ) ? $product_data->get_id() : 0 ) == $product['variation_id'] ) { // WPCS: loose comparison ok.
|
435 |
$this->products[ $key ] = null;
|
436 |
}
|
437 |
}
|
442 |
|
443 |
if ( count( $this->products ) < $c ) {
|
444 |
$this->update_cookie();
|
445 |
+
do_action( 'tinvwl_wishlist_product_removed_from_wishlist', $wishlist_id, ( $product_data->is_type( 'variation' ) ? $product_data->get_parent_id() : $product_data->get_id() ), ( $product_data->is_type( 'variation' ) ? $product_data->get_id() : 0 ) );
|
446 |
}
|
447 |
|
448 |
return true;
|
includes/product/local.class.php
CHANGED
@@ -26,12 +26,14 @@ class TInvWL_Product_Local extends TInvWL_Product {
|
|
26 |
* Get this class object
|
27 |
*
|
28 |
* @param string $plugin_name Plugin name.
|
|
|
29 |
* @return \TInvWL_Product_Local
|
30 |
*/
|
31 |
public static function instance( $plugin_name = TINVWL_PREFIX ) {
|
32 |
if ( is_null( self::$_instance ) ) {
|
33 |
self::$_instance = new self( $plugin_name );
|
34 |
}
|
|
|
35 |
return self::$_instance;
|
36 |
}
|
37 |
|
@@ -41,8 +43,8 @@ class TInvWL_Product_Local extends TInvWL_Product {
|
|
41 |
* @param string $plugin_name Plugin name.
|
42 |
*/
|
43 |
function __construct( $plugin_name = TINVWL_PREFIX ) {
|
44 |
-
$wl
|
45 |
-
$wishlist
|
46 |
parent::__construct( $wishlist, $plugin_name );
|
47 |
}
|
48 |
}
|
26 |
* Get this class object
|
27 |
*
|
28 |
* @param string $plugin_name Plugin name.
|
29 |
+
*
|
30 |
* @return \TInvWL_Product_Local
|
31 |
*/
|
32 |
public static function instance( $plugin_name = TINVWL_PREFIX ) {
|
33 |
if ( is_null( self::$_instance ) ) {
|
34 |
self::$_instance = new self( $plugin_name );
|
35 |
}
|
36 |
+
|
37 |
return self::$_instance;
|
38 |
}
|
39 |
|
43 |
* @param string $plugin_name Plugin name.
|
44 |
*/
|
45 |
function __construct( $plugin_name = TINVWL_PREFIX ) {
|
46 |
+
$wl = new TInvWL_Wishlist( $plugin_name );
|
47 |
+
$wishlist = $wl->add_sharekey_default();
|
48 |
parent::__construct( $wishlist, $plugin_name );
|
49 |
}
|
50 |
}
|
integrations/hide-price-add-to-cart-button.php
CHANGED
@@ -1,429 +1,429 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* TI WooCommerce Wishlist integration with:
|
4 |
-
*
|
5 |
-
* @name Hide Price and Add to Cart Button
|
6 |
-
*
|
7 |
-
* @version 1.2.1
|
8 |
-
*
|
9 |
-
* @slug hide-price-add-to-cart-button
|
10 |
-
*
|
11 |
-
* @url https://woocommerce.com/products/hide-price-add-to-cart-button/
|
12 |
-
*
|
13 |
-
*/
|
14 |
-
|
15 |
-
// If this file is called directly, abort.
|
16 |
-
if ( ! defined( 'ABSPATH' ) ) {
|
17 |
-
die;
|
18 |
-
}
|
19 |
-
|
20 |
-
if ( class_exists( 'Addify_Woo_Hide_Price_Front' ) ) {
|
21 |
-
|
22 |
-
function tinvwl_check_class_action( $tag, $class
|
23 |
-
global $wp_filter;
|
24 |
-
if ( isset( $wp_filter[ $tag ] ) ) {
|
25 |
-
$len = strlen( $method );
|
26 |
-
|
27 |
-
foreach ( $wp_filter[ $tag ] as $_priority => $actions ) {
|
28 |
-
|
29 |
-
if ( $actions ) {
|
30 |
-
foreach ( $actions as $function_key => $data ) {
|
31 |
-
|
32 |
-
if ( $data ) {
|
33 |
-
if ( substr( $function_key, - $len ) == $method ) {
|
34 |
-
|
35 |
-
if ( $class !== '' ) {
|
36 |
-
if ( is_string( $data['function'][0] ) ) {
|
37 |
-
$_class = $data['function'][0];
|
38 |
-
} elseif ( is_object( $data['function'][0] ) ) {
|
39 |
-
$_class = get_class( $data['function'][0] );
|
40 |
-
} else {
|
41 |
-
return false;
|
42 |
-
}
|
43 |
-
|
44 |
-
if ( $_class !== '' && $_class == $class ) {
|
45 |
-
return true;
|
46 |
-
}
|
47 |
-
} else {
|
48 |
-
return true;
|
49 |
-
}
|
50 |
-
|
51 |
-
}
|
52 |
-
}
|
53 |
-
}
|
54 |
-
}
|
55 |
-
}
|
56 |
-
}
|
57 |
-
|
58 |
-
return false;
|
59 |
-
}
|
60 |
-
|
61 |
-
add_action( 'woocommerce_single_product_summary', 'tinvwl_afwhp_hooks', 31 );
|
62 |
-
add_action( 'woocommerce_single_variation', 'tinvwl_afwhp_hooks', 31 );
|
63 |
-
|
64 |
-
function tinvwl_afwhp_hooks() {
|
65 |
-
|
66 |
-
$simple = tinvwl_check_class_action( 'woocommerce_single_product_summary', 'Addify_Woo_Hide_Price_Front', 'afwhp_custom_button_replacement' );
|
67 |
-
if ( $simple ) {
|
68 |
-
add_action( 'woocommerce_single_product_summary', 'tinvwl_view_addto_html', 32 );
|
69 |
-
add_action( 'woocommerce_single_product_summary', 'tinvwl_view_addto_htmlout', 32 );
|
70 |
-
}
|
71 |
-
|
72 |
-
$variable = tinvwl_check_class_action( 'woocommerce_single_variation', 'Addify_Woo_Hide_Price_Front', 'afwhp_custom_button_replacement' );
|
73 |
-
if ( $variable ) {
|
74 |
-
add_action( 'woocommerce_single_variation', 'tinvwl_view_addto_html', 32 );
|
75 |
-
add_action( 'woocommerce_single_variation', 'tinvwl_view_addto_htmlout', 32 );
|
76 |
-
|
77 |
-
ob_start(); ?>
|
78 |
-
<script>
|
79 |
-
(function ($) {
|
80 |
-
$(document).ready(function () {
|
81 |
-
$(document).on('show_variation', '.variations_form', function (a, b, d) {
|
82 |
-
var e = $(this).find('.tinvwl_add_to_wishlist_button');
|
83 |
-
if (e.length) {
|
84 |
-
e.attr('data-tinv-wl-productvariation', b.variation_id);
|
85 |
-
}
|
86 |
-
a.preventDefault();
|
87 |
-
});
|
88 |
-
});
|
89 |
-
})(jQuery);
|
90 |
-
</script>
|
91 |
-
|
92 |
-
|
93 |
-
<?php $content = ob_get_clean();
|
94 |
-
echo $content;
|
95 |
-
}
|
96 |
-
}
|
97 |
-
|
98 |
-
//wishlist add to cart button
|
99 |
-
add_filter( 'tinvwl_wishlist_item_action_add_to_cart', 'tinvwl_product_allow_add_to_cart_afwhp', 10, 3 );
|
100 |
-
|
101 |
-
/**
|
102 |
-
* Allow show button add to cart
|
103 |
-
*
|
104 |
-
* @param boolean $allow Settings flag.
|
105 |
-
* @param array $wlproduct Wishlist Product.
|
106 |
-
* @param WC_Product $product Product.
|
107 |
-
*
|
108 |
-
* @return boolean
|
109 |
-
*/
|
110 |
-
function tinvwl_product_allow_add_to_cart_afwhp( $allow, $wlproduct, $product ) {
|
111 |
-
|
112 |
-
$args = array(
|
113 |
-
'post_type' => 'addify_whp',
|
114 |
-
'post_status' => 'publish',
|
115 |
-
'numberposts' => - 1,
|
116 |
-
'orderby' => 'menu_order',
|
117 |
-
'order' => 'ASC'
|
118 |
-
|
119 |
-
);
|
120 |
-
$rules = get_posts( $args );
|
121 |
-
foreach ( $rules as $rule ) {
|
122 |
-
|
123 |
-
$afwhp_rule_type = get_post_meta( intval( $rule->ID ), 'afwhp_rule_type', true );
|
124 |
-
$afwhp_hide_products = unserialize( get_post_meta( intval( $rule->ID ), 'afwhp_hide_products', true ) );
|
125 |
-
$afwhp_hide_categories = unserialize( get_post_meta( intval( $rule->ID ), 'afwhp_hide_categories', true ) );
|
126 |
-
$afwhp_hide_user_role = unserialize( get_post_meta( intval( $rule->ID ), 'afwhp_hide_user_role', true ) );
|
127 |
-
$afwhp_is_hide_addtocart = get_post_meta( intval( $rule->ID ), 'afwhp_is_hide_addtocart', true );
|
128 |
-
$afwhp_custom_button_text = get_post_meta( intval( $rule->ID ), 'afwhp_custom_button_text', true );
|
129 |
-
$afwhp_custom_button_link = get_post_meta( intval( $rule->ID ), 'afwhp_custom_button_link', true );
|
130 |
-
$afwhp_contact7_form = get_post_meta( intval( $rule->ID ), 'afwhp_contact7_form', true );
|
131 |
-
$afwhp_hide_for_countries = unserialize( get_post_meta( intval( $rule->ID ), 'afwhp_hide_for_countries', true ) );
|
132 |
-
|
133 |
-
if ( ! empty( $afwhp_hide_for_countries ) ) {
|
134 |
-
//country
|
135 |
-
if ( ! empty( $_SERVER['REMOTE_ADDR'] ) ) {
|
136 |
-
$ip = sanitize_meta( '', $_SERVER['REMOTE_ADDR'], '' );
|
137 |
-
} else {
|
138 |
-
$ip = '';
|
139 |
-
}
|
140 |
-
$ch = curl_init();
|
141 |
-
curl_setopt( $ch, CURLOPT_URL, 'http://www.geoplugin.net/json.gp?ip=' . $ip );
|
142 |
-
curl_setopt( $ch, CURLOPT_HEADER, 0 );
|
143 |
-
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
|
144 |
-
$ip_data_in = curl_exec( $ch ); // string
|
145 |
-
curl_close( $ch );
|
146 |
-
|
147 |
-
$ip_data = json_decode( $ip_data_in, true );
|
148 |
-
$ip_data = str_replace( '"', '"', $ip_data ); // for PHP 5.2 see stackoverflow.com/questions/3110487/
|
149 |
-
|
150 |
-
if ( $ip_data && null != $ip_data['geoplugin_countryCode'] ) {
|
151 |
-
$country = $ip_data['geoplugin_countryCode'];
|
152 |
-
}
|
153 |
-
|
154 |
-
$curr_country = $country;
|
155 |
-
} else {
|
156 |
-
$curr_country = '';
|
157 |
-
}
|
158 |
-
|
159 |
-
$istrue = false;
|
160 |
-
|
161 |
-
if ( ! empty( $afwhp_hide_for_countries ) && in_array( $curr_country, $afwhp_hide_for_countries ) ) {
|
162 |
-
|
163 |
-
$iscountry = true;
|
164 |
-
|
165 |
-
} elseif ( empty( $afwhp_hide_for_countries ) ) {
|
166 |
-
|
167 |
-
$iscountry = true;
|
168 |
-
|
169 |
-
} else {
|
170 |
-
|
171 |
-
$iscountry = false;
|
172 |
-
}
|
173 |
-
|
174 |
-
$applied_on_all_products = get_post_meta( $rule->ID, 'afwhp_apply_on_all_products', true );
|
175 |
-
|
176 |
-
|
177 |
-
//Registered Users
|
178 |
-
if ( 'afwhp_for_registered_users' == $afwhp_rule_type ) {
|
179 |
-
|
180 |
-
if ( is_user_logged_in() ) {
|
181 |
-
|
182 |
-
// get Current User Role
|
183 |
-
$curr_user = wp_get_current_user();
|
184 |
-
$user_data = get_user_meta( $curr_user->ID );
|
185 |
-
$curr_user_role = $curr_user->roles[0];
|
186 |
-
|
187 |
-
if ( 'yes' == $applied_on_all_products && empty( $afwhp_hide_user_role ) ) {
|
188 |
-
$istrue = true;
|
189 |
-
} elseif ( ( is_array( $afwhp_hide_user_role ) && in_array( $curr_user_role, $afwhp_hide_user_role ) ) && 'yes' == $applied_on_all_products ) {
|
190 |
-
$istrue = true;
|
191 |
-
} elseif ( ( is_array( $afwhp_hide_user_role ) && in_array( $curr_user_role, $afwhp_hide_user_role ) ) && ( is_array( $afwhp_hide_products ) && in_array( $product->get_id(), $afwhp_hide_products ) ) ) {
|
192 |
-
$istrue = true;
|
193 |
-
}
|
194 |
-
|
195 |
-
|
196 |
-
//Products
|
197 |
-
if ( $istrue && $iscountry ) {
|
198 |
-
|
199 |
-
if ( 'yes' == $afwhp_is_hide_addtocart ) {
|
200 |
-
|
201 |
-
if ( '' == $afwhp_custom_button_text ) {
|
202 |
-
|
203 |
-
echo '';
|
204 |
-
} else {
|
205 |
-
|
206 |
-
if ( ! empty( $afwhp_custom_button_link ) ) {
|
207 |
-
|
208 |
-
echo '<a href="' . esc_url( $afwhp_custom_button_link ) . '" rel="nofollow" class="button add_to_cart_button product_type_' . esc_attr( $product->get_type() ) . '">' . esc_attr( $afwhp_custom_button_text ) . '</a>';
|
209 |
-
} elseif ( ! empty( $afwhp_contact7_form ) ) {
|
210 |
-
|
211 |
-
$contact7 = get_post( $afwhp_contact7_form );
|
212 |
-
|
213 |
-
$form_title = $contact7->post_title;
|
214 |
-
|
215 |
-
?>
|
216 |
-
<a href="javascript:void(0)"
|
217 |
-
onclick="showPopForm('<?php echo esc_attr( $afwhp_contact7_form ) . esc_attr( $product->get_id() ); ?>')"
|
218 |
-
class="form_popup<?php echo esc_attr( $afwhp_contact7_form ) . esc_attr( $product->get_id() ); ?>_open button product_type_simple add_to_cart_button"><?php echo esc_attr( $afwhp_custom_button_text ); ?></a>
|
219 |
-
<div id="form_popup<?php echo esc_attr( $afwhp_contact7_form ) . esc_attr( $product->get_id() ); ?>"
|
220 |
-
class="form_popup">
|
221 |
-
|
222 |
-
<button class="form_popup<?php echo esc_attr( $afwhp_contact7_form ) . esc_attr( $product->get_id() ); ?>_close form_close_btn btn btn-default">
|
223 |
-
X
|
224 |
-
</button>
|
225 |
-
|
226 |
-
<?php echo do_shortcode( '[contact-form-7 id="' . $afwhp_contact7_form . '" title="' . $form_title . '" ] ' ); ?>
|
227 |
-
|
228 |
-
</div>
|
229 |
-
|
230 |
-
<?php
|
231 |
-
|
232 |
-
} else {
|
233 |
-
|
234 |
-
echo '<a href="javascript:void(0)" rel="nofollow" class="button add_to_cart_button product_type_' . esc_attr( $product->get_type() ) . '">' . esc_attr( $afwhp_custom_button_text ) . '</a>';
|
235 |
-
}
|
236 |
-
|
237 |
-
}
|
238 |
-
}
|
239 |
-
|
240 |
-
}
|
241 |
-
|
242 |
-
//Categories
|
243 |
-
|
244 |
-
if ( ! empty( $afwhp_hide_categories ) && ! $istrue && $iscountry ) {
|
245 |
-
|
246 |
-
foreach ( $afwhp_hide_categories as $cat ) {
|
247 |
-
|
248 |
-
if ( has_term( $cat, 'product_cat', $product->get_id() ) ) {
|
249 |
-
|
250 |
-
if ( in_array( $curr_user_role, $afwhp_hide_user_role ) ) {
|
251 |
-
|
252 |
-
if ( 'yes' == $afwhp_is_hide_addtocart ) {
|
253 |
-
|
254 |
-
if ( '' == $afwhp_custom_button_text ) {
|
255 |
-
|
256 |
-
echo '';
|
257 |
-
} else {
|
258 |
-
|
259 |
-
if ( ! empty( $afwhp_custom_button_link ) ) {
|
260 |
-
|
261 |
-
echo '<a href="' . esc_url( $afwhp_custom_button_link ) . '" rel="nofollow" class="button add_to_cart_button product_type_' . esc_attr( $product->get_type() ) . '">' . esc_attr( $afwhp_custom_button_text ) . '</a>';
|
262 |
-
|
263 |
-
return;
|
264 |
-
} elseif ( ! empty( $afwhp_contact7_form ) ) {
|
265 |
-
|
266 |
-
$contact7 = get_post( $afwhp_contact7_form );
|
267 |
-
|
268 |
-
|
269 |
-
$form_title = $contact7->post_title;
|
270 |
-
|
271 |
-
?>
|
272 |
-
<a href="javascript:void(0)"
|
273 |
-
onclick="showPopForm('<?php echo esc_attr( $afwhp_contact7_form ) . esc_attr( $product->get_id() ); ?>')"
|
274 |
-
class="form_popup<?php echo esc_attr( $afwhp_contact7_form ) . esc_attr( $product->get_id() ); ?>_open button product_type_simple add_to_cart_button"><?php echo esc_attr( $afwhp_custom_button_text ); ?></a>
|
275 |
-
<div id="form_popup<?php echo esc_attr( $afwhp_contact7_form ) . esc_attr( $product->get_id() ); ?>"
|
276 |
-
class="form_popup">
|
277 |
-
|
278 |
-
<button class="form_popup<?php echo esc_attr( $afwhp_contact7_form ) . esc_attr( $product->get_id() ); ?>_close form_close_btn btn btn-default">
|
279 |
-
X
|
280 |
-
</button>
|
281 |
-
|
282 |
-
<?php echo do_shortcode( '[contact-form-7 id="' . $afwhp_contact7_form . '" title="' . $form_title . '" ] ' ); ?>
|
283 |
-
|
284 |
-
</div>
|
285 |
-
|
286 |
-
<?php
|
287 |
-
return;
|
288 |
-
} else {
|
289 |
-
|
290 |
-
echo '<a href="javascript:void(0)" rel="nofollow" class="button add_to_cart_button product_type_' . esc_attr( $product->get_type() ) . '">' . esc_attr( $afwhp_custom_button_text ) . '</a>';
|
291 |
-
|
292 |
-
return;
|
293 |
-
}
|
294 |
-
|
295 |
-
}
|
296 |
-
}
|
297 |
-
|
298 |
-
}
|
299 |
-
|
300 |
-
}
|
301 |
-
|
302 |
-
}
|
303 |
-
}
|
304 |
-
|
305 |
-
|
306 |
-
}
|
307 |
-
|
308 |
-
} else {
|
309 |
-
//Guest Users
|
310 |
-
if ( ! is_user_logged_in() ) {
|
311 |
-
|
312 |
-
//Products
|
313 |
-
if ( 'yes' == $applied_on_all_products ) {
|
314 |
-
$istrue = true;
|
315 |
-
} elseif ( is_array( $afwhp_hide_products ) && in_array( $product->get_id(), $afwhp_hide_products ) ) {
|
316 |
-
$istrue = true;
|
317 |
-
}
|
318 |
-
|
319 |
-
if ( $istrue && $iscountry ) {
|
320 |
-
|
321 |
-
if ( 'yes' == $afwhp_is_hide_addtocart ) {
|
322 |
-
|
323 |
-
if ( '' == $afwhp_custom_button_text ) {
|
324 |
-
|
325 |
-
echo '';
|
326 |
-
} else {
|
327 |
-
|
328 |
-
if ( ! empty( $afwhp_custom_button_link ) ) {
|
329 |
-
|
330 |
-
echo '<a href="' . esc_url( $afwhp_custom_button_link ) . '" rel="nofollow" class="button add_to_cart_button product_type_' . esc_attr( $product->get_type() ) . '">' . esc_attr( $afwhp_custom_button_text ) . '</a>';
|
331 |
-
} elseif ( ! empty( $afwhp_contact7_form ) ) {
|
332 |
-
|
333 |
-
$contact7 = get_post( $afwhp_contact7_form );
|
334 |
-
|
335 |
-
|
336 |
-
$form_title = $contact7->post_title;
|
337 |
-
|
338 |
-
?>
|
339 |
-
<a href="javascript:void(0)"
|
340 |
-
onclick="showPopForm('<?php echo esc_attr( $afwhp_contact7_form ) . esc_attr( $product->get_id() ); ?>')"
|
341 |
-
class="form_popup<?php echo esc_attr( $afwhp_contact7_form ) . esc_attr( $product->get_id() ); ?>_open button product_type_simple add_to_cart_button"><?php echo esc_attr( $afwhp_custom_button_text ); ?></a>
|
342 |
-
<div id="form_popup<?php echo esc_attr( $afwhp_contact7_form ) . esc_attr( $product->get_id() ); ?>"
|
343 |
-
class="form_popup">
|
344 |
-
|
345 |
-
<button class="form_popup<?php echo esc_attr( $afwhp_contact7_form ) . esc_attr( $product->get_id() ); ?>_close form_close_btn btn btn-default">
|
346 |
-
X
|
347 |
-
</button>
|
348 |
-
|
349 |
-
<?php echo do_shortcode( '[contact-form-7 id="' . $afwhp_contact7_form . '" title="' . $form_title . '" ] ' ); ?>
|
350 |
-
|
351 |
-
</div>
|
352 |
-
|
353 |
-
<?php
|
354 |
-
|
355 |
-
} else {
|
356 |
-
|
357 |
-
echo '<a href="javascript:void(0)" rel="nofollow" class="button add_to_cart_button product_type_' . esc_attr( $product->get_type() ) . '">' . esc_attr( $afwhp_custom_button_text ) . '</a>';
|
358 |
-
}
|
359 |
-
|
360 |
-
}
|
361 |
-
}
|
362 |
-
|
363 |
-
}
|
364 |
-
|
365 |
-
|
366 |
-
//Categories
|
367 |
-
if ( ! empty( $afwhp_hide_categories ) && ! $istrue && $iscountry ) {
|
368 |
-
|
369 |
-
foreach ( $afwhp_hide_categories as $cat ) {
|
370 |
-
|
371 |
-
if ( has_term( $cat, 'product_cat', $product->get_id() ) ) {
|
372 |
-
|
373 |
-
if ( 'yes' == $afwhp_is_hide_addtocart ) {
|
374 |
-
|
375 |
-
if ( '' == $afwhp_custom_button_text ) {
|
376 |
-
|
377 |
-
echo '';
|
378 |
-
} else {
|
379 |
-
|
380 |
-
if ( ! empty( $afwhp_custom_button_link ) ) {
|
381 |
-
|
382 |
-
echo '<a href="' . esc_url( $afwhp_custom_button_link ) . '" rel="nofollow" class="button add_to_cart_button product_type_' . esc_attr( $product->get_type() ) . '">' . esc_attr( $afwhp_custom_button_text ) . '</a>';
|
383 |
-
|
384 |
-
return;
|
385 |
-
} elseif ( ! empty( $afwhp_contact7_form ) ) {
|
386 |
-
|
387 |
-
$contact7 = get_post( $afwhp_contact7_form );
|
388 |
-
|
389 |
-
|
390 |
-
$form_title = $contact7->post_title;
|
391 |
-
|
392 |
-
?>
|
393 |
-
<a href="javascript:void(0)"
|
394 |
-
onclick="showPopForm('<?php echo esc_attr( $afwhp_contact7_form ) . esc_attr( $product->get_id() ); ?>')"
|
395 |
-
class="form_popup<?php echo esc_attr( $afwhp_contact7_form ) . esc_attr( $product->get_id() ); ?>_open button product_type_simple add_to_cart_button"><?php echo esc_attr( $afwhp_custom_button_text ); ?></a>
|
396 |
-
<div id="form_popup<?php echo esc_attr( $afwhp_contact7_form ) . esc_attr( $product->get_id() ); ?>"
|
397 |
-
class="form_popup">
|
398 |
-
|
399 |
-
<button class="form_popup<?php echo esc_attr( $afwhp_contact7_form ) . esc_attr( $product->get_id() ); ?>_close form_close_btn btn btn-default">
|
400 |
-
X
|
401 |
-
</button>
|
402 |
-
|
403 |
-
<?php echo do_shortcode( '[contact-form-7 id="' . $afwhp_contact7_form . '" title="' . $form_title . '" ] ' ); ?>
|
404 |
-
|
405 |
-
</div>
|
406 |
-
|
407 |
-
<?php
|
408 |
-
return;
|
409 |
-
} else {
|
410 |
-
|
411 |
-
echo '<a href="javascript:void(0)" rel="nofollow" class="button add_to_cart_button product_type_' . esc_attr( $product->get_type() ) . '">' . esc_attr( $afwhp_custom_button_text ) . '</a>';
|
412 |
-
|
413 |
-
return;
|
414 |
-
}
|
415 |
-
|
416 |
-
}
|
417 |
-
}
|
418 |
-
|
419 |
-
}
|
420 |
-
|
421 |
-
}
|
422 |
-
}
|
423 |
-
|
424 |
-
}
|
425 |
-
}
|
426 |
-
|
427 |
-
}
|
428 |
-
}
|
429 |
-
}
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* TI WooCommerce Wishlist integration with:
|
4 |
+
*
|
5 |
+
* @name Hide Price and Add to Cart Button
|
6 |
+
*
|
7 |
+
* @version 1.2.1
|
8 |
+
*
|
9 |
+
* @slug hide-price-add-to-cart-button
|
10 |
+
*
|
11 |
+
* @url https://woocommerce.com/products/hide-price-add-to-cart-button/
|
12 |
+
*
|
13 |
+
*/
|
14 |
+
|
15 |
+
// If this file is called directly, abort.
|
16 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
17 |
+
die;
|
18 |
+
}
|
19 |
+
|
20 |
+
if ( class_exists( 'Addify_Woo_Hide_Price_Front' ) ) {
|
21 |
+
|
22 |
+
function tinvwl_check_class_action( $tag, $class, $method ) {
|
23 |
+
global $wp_filter;
|
24 |
+
if ( isset( $wp_filter[ $tag ] ) ) {
|
25 |
+
$len = strlen( $method );
|
26 |
+
|
27 |
+
foreach ( $wp_filter[ $tag ] as $_priority => $actions ) {
|
28 |
+
|
29 |
+
if ( $actions ) {
|
30 |
+
foreach ( $actions as $function_key => $data ) {
|
31 |
+
|
32 |
+
if ( $data ) {
|
33 |
+
if ( substr( $function_key, - $len ) == $method ) {
|
34 |
+
|
35 |
+
if ( $class !== '' ) {
|
36 |
+
if ( is_string( $data['function'][0] ) ) {
|
37 |
+
$_class = $data['function'][0];
|
38 |
+
} elseif ( is_object( $data['function'][0] ) ) {
|
39 |
+
$_class = get_class( $data['function'][0] );
|
40 |
+
} else {
|
41 |
+
return false;
|
42 |
+
}
|
43 |
+
|
44 |
+
if ( $_class !== '' && $_class == $class ) {
|
45 |
+
return true;
|
46 |
+
}
|
47 |
+
} else {
|
48 |
+
return true;
|
49 |
+
}
|
50 |
+
|
51 |
+
}
|
52 |
+
}
|
53 |
+
}
|
54 |
+
}
|
55 |
+
}
|
56 |
+
}
|
57 |
+
|
58 |
+
return false;
|
59 |
+
}
|
60 |
+
|
61 |
+
add_action( 'woocommerce_single_product_summary', 'tinvwl_afwhp_hooks', 31 );
|
62 |
+
add_action( 'woocommerce_single_variation', 'tinvwl_afwhp_hooks', 31 );
|
63 |
+
|
64 |
+
function tinvwl_afwhp_hooks() {
|
65 |
+
|
66 |
+
$simple = tinvwl_check_class_action( 'woocommerce_single_product_summary', 'Addify_Woo_Hide_Price_Front', 'afwhp_custom_button_replacement' );
|
67 |
+
if ( $simple ) {
|
68 |
+
add_action( 'woocommerce_single_product_summary', 'tinvwl_view_addto_html', 32 );
|
69 |
+
add_action( 'woocommerce_single_product_summary', 'tinvwl_view_addto_htmlout', 32 );
|
70 |
+
}
|
71 |
+
|
72 |
+
$variable = tinvwl_check_class_action( 'woocommerce_single_variation', 'Addify_Woo_Hide_Price_Front', 'afwhp_custom_button_replacement' );
|
73 |
+
if ( $variable ) {
|
74 |
+
add_action( 'woocommerce_single_variation', 'tinvwl_view_addto_html', 32 );
|
75 |
+
add_action( 'woocommerce_single_variation', 'tinvwl_view_addto_htmlout', 32 );
|
76 |
+
|
77 |
+
ob_start(); ?>
|
78 |
+
<script>
|
79 |
+
(function ($) {
|
80 |
+
$(document).ready(function () {
|
81 |
+
$(document).on('show_variation', '.variations_form', function (a, b, d) {
|
82 |
+
var e = $(this).find('.tinvwl_add_to_wishlist_button');
|
83 |
+
if (e.length) {
|
84 |
+
e.attr('data-tinv-wl-productvariation', b.variation_id);
|
85 |
+
}
|
86 |
+
a.preventDefault();
|
87 |
+
});
|
88 |
+
});
|
89 |
+
})(jQuery);
|
90 |
+
</script>
|
91 |
+
|
92 |
+
|
93 |
+
<?php $content = ob_get_clean();
|
94 |
+
echo $content;
|
95 |
+
}
|
96 |
+
}
|
97 |
+
|
98 |
+
//wishlist add to cart button
|
99 |
+
add_filter( 'tinvwl_wishlist_item_action_add_to_cart', 'tinvwl_product_allow_add_to_cart_afwhp', 10, 3 );
|
100 |
+
|
101 |
+
/**
|
102 |
+
* Allow show button add to cart
|
103 |
+
*
|
104 |
+
* @param boolean $allow Settings flag.
|
105 |
+
* @param array $wlproduct Wishlist Product.
|
106 |
+
* @param WC_Product $product Product.
|
107 |
+
*
|
108 |
+
* @return boolean
|
109 |
+
*/
|
110 |
+
function tinvwl_product_allow_add_to_cart_afwhp( $allow, $wlproduct, $product ) {
|
111 |
+
|
112 |
+
$args = array(
|
113 |
+
'post_type' => 'addify_whp',
|
114 |
+
'post_status' => 'publish',
|
115 |
+
'numberposts' => - 1,
|
116 |
+
'orderby' => 'menu_order',
|
117 |
+
'order' => 'ASC'
|
118 |
+
|
119 |
+
);
|
120 |
+
$rules = get_posts( $args );
|
121 |
+
foreach ( $rules as $rule ) {
|
122 |
+
|
123 |
+
$afwhp_rule_type = get_post_meta( intval( $rule->ID ), 'afwhp_rule_type', true );
|
124 |
+
$afwhp_hide_products = unserialize( get_post_meta( intval( $rule->ID ), 'afwhp_hide_products', true ) );
|
125 |
+
$afwhp_hide_categories = unserialize( get_post_meta( intval( $rule->ID ), 'afwhp_hide_categories', true ) );
|
126 |
+
$afwhp_hide_user_role = unserialize( get_post_meta( intval( $rule->ID ), 'afwhp_hide_user_role', true ) );
|
127 |
+
$afwhp_is_hide_addtocart = get_post_meta( intval( $rule->ID ), 'afwhp_is_hide_addtocart', true );
|
128 |
+
$afwhp_custom_button_text = get_post_meta( intval( $rule->ID ), 'afwhp_custom_button_text', true );
|
129 |
+
$afwhp_custom_button_link = get_post_meta( intval( $rule->ID ), 'afwhp_custom_button_link', true );
|
130 |
+
$afwhp_contact7_form = get_post_meta( intval( $rule->ID ), 'afwhp_contact7_form', true );
|
131 |
+
$afwhp_hide_for_countries = unserialize( get_post_meta( intval( $rule->ID ), 'afwhp_hide_for_countries', true ) );
|
132 |
+
|
133 |
+
if ( ! empty( $afwhp_hide_for_countries ) ) {
|
134 |
+
//country
|
135 |
+
if ( ! empty( $_SERVER['REMOTE_ADDR'] ) ) {
|
136 |
+
$ip = sanitize_meta( '', $_SERVER['REMOTE_ADDR'], '' );
|
137 |
+
} else {
|
138 |
+
$ip = '';
|
139 |
+
}
|
140 |
+
$ch = curl_init();
|
141 |
+
curl_setopt( $ch, CURLOPT_URL, 'http://www.geoplugin.net/json.gp?ip=' . $ip );
|
142 |
+
curl_setopt( $ch, CURLOPT_HEADER, 0 );
|
143 |
+
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
|
144 |
+
$ip_data_in = curl_exec( $ch ); // string
|
145 |
+
curl_close( $ch );
|
146 |
+
|
147 |
+
$ip_data = json_decode( $ip_data_in, true );
|
148 |
+
$ip_data = str_replace( '"', '"', $ip_data ); // for PHP 5.2 see stackoverflow.com/questions/3110487/
|
149 |
+
|
150 |
+
if ( $ip_data && null != $ip_data['geoplugin_countryCode'] ) {
|
151 |
+
$country = $ip_data['geoplugin_countryCode'];
|
152 |
+
}
|
153 |
+
|
154 |
+
$curr_country = $country;
|
155 |
+
} else {
|
156 |
+
$curr_country = '';
|
157 |
+
}
|
158 |
+
|
159 |
+
$istrue = false;
|
160 |
+
|
161 |
+
if ( ! empty( $afwhp_hide_for_countries ) && in_array( $curr_country, $afwhp_hide_for_countries ) ) {
|
162 |
+
|
163 |
+
$iscountry = true;
|
164 |
+
|
165 |
+
} elseif ( empty( $afwhp_hide_for_countries ) ) {
|
166 |
+
|
167 |
+
$iscountry = true;
|
168 |
+
|
169 |
+
} else {
|
170 |
+
|
171 |
+
$iscountry = false;
|
172 |
+
}
|
173 |
+
|
174 |
+
$applied_on_all_products = get_post_meta( $rule->ID, 'afwhp_apply_on_all_products', true );
|
175 |
+
|
176 |
+
|
177 |
+
//Registered Users
|
178 |
+
if ( 'afwhp_for_registered_users' == $afwhp_rule_type ) {
|
179 |
+
|
180 |
+
if ( is_user_logged_in() ) {
|
181 |
+
|
182 |
+
// get Current User Role
|
183 |
+
$curr_user = wp_get_current_user();
|
184 |
+
$user_data = get_user_meta( $curr_user->ID );
|
185 |
+
$curr_user_role = $curr_user->roles[0];
|
186 |
+
|
187 |
+
if ( 'yes' == $applied_on_all_products && empty( $afwhp_hide_user_role ) ) {
|
188 |
+
$istrue = true;
|
189 |
+
} elseif ( ( is_array( $afwhp_hide_user_role ) && in_array( $curr_user_role, $afwhp_hide_user_role ) ) && 'yes' == $applied_on_all_products ) {
|
190 |
+
$istrue = true;
|
191 |
+
} elseif ( ( is_array( $afwhp_hide_user_role ) && in_array( $curr_user_role, $afwhp_hide_user_role ) ) && ( is_array( $afwhp_hide_products ) && in_array( $product->get_id(), $afwhp_hide_products ) ) ) {
|
192 |
+
$istrue = true;
|
193 |
+
}
|
194 |
+
|
195 |
+
|
196 |
+
//Products
|
197 |
+
if ( $istrue && $iscountry ) {
|
198 |
+
|
199 |
+
if ( 'yes' == $afwhp_is_hide_addtocart ) {
|
200 |
+
|
201 |
+
if ( '' == $afwhp_custom_button_text ) {
|
202 |
+
|
203 |
+
echo '';
|
204 |
+
} else {
|
205 |
+
|
206 |
+
if ( ! empty( $afwhp_custom_button_link ) ) {
|
207 |
+
|
208 |
+
echo '<a href="' . esc_url( $afwhp_custom_button_link ) . '" rel="nofollow" class="button add_to_cart_button product_type_' . esc_attr( $product->get_type() ) . '">' . esc_attr( $afwhp_custom_button_text ) . '</a>';
|
209 |
+
} elseif ( ! empty( $afwhp_contact7_form ) ) {
|
210 |
+
|
211 |
+
$contact7 = get_post( $afwhp_contact7_form );
|
212 |
+
|
213 |
+
$form_title = $contact7->post_title;
|
214 |
+
|
215 |
+
?>
|
216 |
+
<a href="javascript:void(0)"
|
217 |
+
onclick="showPopForm('<?php echo esc_attr( $afwhp_contact7_form ) . esc_attr( $product->get_id() ); ?>')"
|
218 |
+
class="form_popup<?php echo esc_attr( $afwhp_contact7_form ) . esc_attr( $product->get_id() ); ?>_open button product_type_simple add_to_cart_button"><?php echo esc_attr( $afwhp_custom_button_text ); ?></a>
|
219 |
+
<div id="form_popup<?php echo esc_attr( $afwhp_contact7_form ) . esc_attr( $product->get_id() ); ?>"
|
220 |
+
class="form_popup">
|
221 |
+
|
222 |
+
<button class="form_popup<?php echo esc_attr( $afwhp_contact7_form ) . esc_attr( $product->get_id() ); ?>_close form_close_btn btn btn-default">
|
223 |
+
X
|
224 |
+
</button>
|
225 |
+
|
226 |
+
<?php echo do_shortcode( '[contact-form-7 id="' . $afwhp_contact7_form . '" title="' . $form_title . '" ] ' ); ?>
|
227 |
+
|
228 |
+
</div>
|
229 |
+
|
230 |
+
<?php
|
231 |
+
|
232 |
+
} else {
|
233 |
+
|
234 |
+
echo '<a href="javascript:void(0)" rel="nofollow" class="button add_to_cart_button product_type_' . esc_attr( $product->get_type() ) . '">' . esc_attr( $afwhp_custom_button_text ) . '</a>';
|
235 |
+
}
|
236 |
+
|
237 |
+
}
|
238 |
+
}
|
239 |
+
|
240 |
+
}
|
241 |
+
|
242 |
+
//Categories
|
243 |
+
|
244 |
+
if ( ! empty( $afwhp_hide_categories ) && ! $istrue && $iscountry ) {
|
245 |
+
|
246 |
+
foreach ( $afwhp_hide_categories as $cat ) {
|
247 |
+
|
248 |
+
if ( has_term( $cat, 'product_cat', $product->get_id() ) ) {
|
249 |
+
|
250 |
+
if ( in_array( $curr_user_role, $afwhp_hide_user_role ) ) {
|
251 |
+
|
252 |
+
if ( 'yes' == $afwhp_is_hide_addtocart ) {
|
253 |
+
|
254 |
+
if ( '' == $afwhp_custom_button_text ) {
|
255 |
+
|
256 |
+
echo '';
|
257 |
+
} else {
|
258 |
+
|
259 |
+
if ( ! empty( $afwhp_custom_button_link ) ) {
|
260 |
+
|
261 |
+
echo '<a href="' . esc_url( $afwhp_custom_button_link ) . '" rel="nofollow" class="button add_to_cart_button product_type_' . esc_attr( $product->get_type() ) . '">' . esc_attr( $afwhp_custom_button_text ) . '</a>';
|
262 |
+
|
263 |
+
return;
|
264 |
+
} elseif ( ! empty( $afwhp_contact7_form ) ) {
|
265 |
+
|
266 |
+
$contact7 = get_post( $afwhp_contact7_form );
|
267 |
+
|
268 |
+
|
269 |
+
$form_title = $contact7->post_title;
|
270 |
+
|
271 |
+
?>
|
272 |
+
<a href="javascript:void(0)"
|
273 |
+
onclick="showPopForm('<?php echo esc_attr( $afwhp_contact7_form ) . esc_attr( $product->get_id() ); ?>')"
|
274 |
+
class="form_popup<?php echo esc_attr( $afwhp_contact7_form ) . esc_attr( $product->get_id() ); ?>_open button product_type_simple add_to_cart_button"><?php echo esc_attr( $afwhp_custom_button_text ); ?></a>
|
275 |
+
<div id="form_popup<?php echo esc_attr( $afwhp_contact7_form ) . esc_attr( $product->get_id() ); ?>"
|
276 |
+
class="form_popup">
|
277 |
+
|
278 |
+
<button class="form_popup<?php echo esc_attr( $afwhp_contact7_form ) . esc_attr( $product->get_id() ); ?>_close form_close_btn btn btn-default">
|
279 |
+
X
|
280 |
+
</button>
|
281 |
+
|
282 |
+
<?php echo do_shortcode( '[contact-form-7 id="' . $afwhp_contact7_form . '" title="' . $form_title . '" ] ' ); ?>
|
283 |
+
|
284 |
+
</div>
|
285 |
+
|
286 |
+
<?php
|
287 |
+
return;
|
288 |
+
} else {
|
289 |
+
|
290 |
+
echo '<a href="javascript:void(0)" rel="nofollow" class="button add_to_cart_button product_type_' . esc_attr( $product->get_type() ) . '">' . esc_attr( $afwhp_custom_button_text ) . '</a>';
|
291 |
+
|
292 |
+
return;
|
293 |
+
}
|
294 |
+
|
295 |
+
}
|
296 |
+
}
|
297 |
+
|
298 |
+
}
|
299 |
+
|
300 |
+
}
|
301 |
+
|
302 |
+
}
|
303 |
+
}
|
304 |
+
|
305 |
+
|
306 |
+
}
|
307 |
+
|
308 |
+
} else {
|
309 |
+
//Guest Users
|
310 |
+
if ( ! is_user_logged_in() ) {
|
311 |
+
|
312 |
+
//Products
|
313 |
+
if ( 'yes' == $applied_on_all_products ) {
|
314 |
+
$istrue = true;
|
315 |
+
} elseif ( is_array( $afwhp_hide_products ) && in_array( $product->get_id(), $afwhp_hide_products ) ) {
|
316 |
+
$istrue = true;
|
317 |
+
}
|
318 |
+
|
319 |
+
if ( $istrue && $iscountry ) {
|
320 |
+
|
321 |
+
if ( 'yes' == $afwhp_is_hide_addtocart ) {
|
322 |
+
|
323 |
+
if ( '' == $afwhp_custom_button_text ) {
|
324 |
+
|
325 |
+
echo '';
|
326 |
+
} else {
|
327 |
+
|
328 |
+
if ( ! empty( $afwhp_custom_button_link ) ) {
|
329 |
+
|
330 |
+
echo '<a href="' . esc_url( $afwhp_custom_button_link ) . '" rel="nofollow" class="button add_to_cart_button product_type_' . esc_attr( $product->get_type() ) . '">' . esc_attr( $afwhp_custom_button_text ) . '</a>';
|
331 |
+
} elseif ( ! empty( $afwhp_contact7_form ) ) {
|
332 |
+
|
333 |
+
$contact7 = get_post( $afwhp_contact7_form );
|
334 |
+
|
335 |
+
|
336 |
+
$form_title = $contact7->post_title;
|
337 |
+
|
338 |
+
?>
|
339 |
+
<a href="javascript:void(0)"
|
340 |
+
onclick="showPopForm('<?php echo esc_attr( $afwhp_contact7_form ) . esc_attr( $product->get_id() ); ?>')"
|
341 |
+
class="form_popup<?php echo esc_attr( $afwhp_contact7_form ) . esc_attr( $product->get_id() ); ?>_open button product_type_simple add_to_cart_button"><?php echo esc_attr( $afwhp_custom_button_text ); ?></a>
|
342 |
+
<div id="form_popup<?php echo esc_attr( $afwhp_contact7_form ) . esc_attr( $product->get_id() ); ?>"
|
343 |
+
class="form_popup">
|
344 |
+
|
345 |
+
<button class="form_popup<?php echo esc_attr( $afwhp_contact7_form ) . esc_attr( $product->get_id() ); ?>_close form_close_btn btn btn-default">
|
346 |
+
X
|
347 |
+
</button>
|
348 |
+
|
349 |
+
<?php echo do_shortcode( '[contact-form-7 id="' . $afwhp_contact7_form . '" title="' . $form_title . '" ] ' ); ?>
|
350 |
+
|
351 |
+
</div>
|
352 |
+
|
353 |
+
<?php
|
354 |
+
|
355 |
+
} else {
|
356 |
+
|
357 |
+
echo '<a href="javascript:void(0)" rel="nofollow" class="button add_to_cart_button product_type_' . esc_attr( $product->get_type() ) . '">' . esc_attr( $afwhp_custom_button_text ) . '</a>';
|
358 |
+
}
|
359 |
+
|
360 |
+
}
|
361 |
+
}
|
362 |
+
|
363 |
+
}
|
364 |
+
|
365 |
+
|
366 |
+
//Categories
|
367 |
+
if ( ! empty( $afwhp_hide_categories ) && ! $istrue && $iscountry ) {
|
368 |
+
|
369 |
+
foreach ( $afwhp_hide_categories as $cat ) {
|
370 |
+
|
371 |
+
if ( has_term( $cat, 'product_cat', $product->get_id() ) ) {
|
372 |
+
|
373 |
+
if ( 'yes' == $afwhp_is_hide_addtocart ) {
|
374 |
+
|
375 |
+
if ( '' == $afwhp_custom_button_text ) {
|
376 |
+
|
377 |
+
echo '';
|
378 |
+
} else {
|
379 |
+
|
380 |
+
if ( ! empty( $afwhp_custom_button_link ) ) {
|
381 |
+
|
382 |
+
echo '<a href="' . esc_url( $afwhp_custom_button_link ) . '" rel="nofollow" class="button add_to_cart_button product_type_' . esc_attr( $product->get_type() ) . '">' . esc_attr( $afwhp_custom_button_text ) . '</a>';
|
383 |
+
|
384 |
+
return;
|
385 |
+
} elseif ( ! empty( $afwhp_contact7_form ) ) {
|
386 |
+
|
387 |
+
$contact7 = get_post( $afwhp_contact7_form );
|
388 |
+
|
389 |
+
|
390 |
+
$form_title = $contact7->post_title;
|
391 |
+
|
392 |
+
?>
|
393 |
+
<a href="javascript:void(0)"
|
394 |
+
onclick="showPopForm('<?php echo esc_attr( $afwhp_contact7_form ) . esc_attr( $product->get_id() ); ?>')"
|
395 |
+
class="form_popup<?php echo esc_attr( $afwhp_contact7_form ) . esc_attr( $product->get_id() ); ?>_open button product_type_simple add_to_cart_button"><?php echo esc_attr( $afwhp_custom_button_text ); ?></a>
|
396 |
+
<div id="form_popup<?php echo esc_attr( $afwhp_contact7_form ) . esc_attr( $product->get_id() ); ?>"
|
397 |
+
class="form_popup">
|
398 |
+
|
399 |
+
<button class="form_popup<?php echo esc_attr( $afwhp_contact7_form ) . esc_attr( $product->get_id() ); ?>_close form_close_btn btn btn-default">
|
400 |
+
X
|
401 |
+
</button>
|
402 |
+
|
403 |
+
<?php echo do_shortcode( '[contact-form-7 id="' . $afwhp_contact7_form . '" title="' . $form_title . '" ] ' ); ?>
|
404 |
+
|
405 |
+
</div>
|
406 |
+
|
407 |
+
<?php
|
408 |
+
return;
|
409 |
+
} else {
|
410 |
+
|
411 |
+
echo '<a href="javascript:void(0)" rel="nofollow" class="button add_to_cart_button product_type_' . esc_attr( $product->get_type() ) . '">' . esc_attr( $afwhp_custom_button_text ) . '</a>';
|
412 |
+
|
413 |
+
return;
|
414 |
+
}
|
415 |
+
|
416 |
+
}
|
417 |
+
}
|
418 |
+
|
419 |
+
}
|
420 |
+
|
421 |
+
}
|
422 |
+
}
|
423 |
+
|
424 |
+
}
|
425 |
+
}
|
426 |
+
|
427 |
+
}
|
428 |
+
}
|
429 |
+
}
|
integrations/mycred.php
CHANGED
@@ -1,313 +1,313 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* TI WooCommerce Wishlist integration with:
|
4 |
-
*
|
5 |
-
* @name myCRED
|
6 |
-
*
|
7 |
-
* @version 1.8.4.2
|
8 |
-
*
|
9 |
-
* @slug mycred
|
10 |
-
*
|
11 |
-
* @url https://wordpress.org/plugins/mycred/
|
12 |
-
*
|
13 |
-
*/
|
14 |
-
|
15 |
-
// If this file is called directly, abort.
|
16 |
-
if ( ! defined( 'ABSPATH' ) ) {
|
17 |
-
die;
|
18 |
-
}
|
19 |
-
|
20 |
-
// myCred hooks
|
21 |
-
if ( defined( 'myCRED_VERSION' ) ) {
|
22 |
-
|
23 |
-
/**
|
24 |
-
* Register Hook
|
25 |
-
*/
|
26 |
-
add_filter( 'mycred_setup_hooks', 'tinvwl_mycred_register_ti_woocommerce_wishlist_hook', 100 );
|
27 |
-
function tinvwl_mycred_register_ti_woocommerce_wishlist_hook( $installed ) {
|
28 |
-
|
29 |
-
$installed['tinvwl'] = array(
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
);
|
34 |
-
|
35 |
-
return $installed;
|
36 |
-
|
37 |
-
}
|
38 |
-
|
39 |
-
/**
|
40 |
-
* TI WooCommerce Wihslist Hook
|
41 |
-
*/
|
42 |
-
add_action( 'mycred_load_hooks', 'tinvwl_mycred_load_ti_woocommerce_wishlist_hook', 100 );
|
43 |
-
function tinvwl_mycred_load_ti_woocommerce_wishlist_hook() {
|
44 |
-
|
45 |
-
// If the hook has been replaced or if plugin is not installed, exit now
|
46 |
-
if ( class_exists( 'myCRED_Hook_TinvWL' ) ) {
|
47 |
-
return;
|
48 |
-
}
|
49 |
-
|
50 |
-
class myCRED_Hook_TinvWL extends myCRED_Hook {
|
51 |
-
|
52 |
-
/**
|
53 |
-
* Construct
|
54 |
-
*/
|
55 |
-
public function __construct( $hook_prefs, $type = MYCRED_DEFAULT_TYPE_KEY ) {
|
56 |
-
|
57 |
-
parent::__construct( array(
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
), $hook_prefs, $type );
|
72 |
-
|
73 |
-
}
|
74 |
-
|
75 |
-
/**
|
76 |
-
* Run
|
77 |
-
*/
|
78 |
-
public function run() {
|
79 |
-
add_action( 'tinvwl_product_added', array( $this, 'added' ) );
|
80 |
-
add_action( 'tinvwl_product_purchased', array( $this, 'purchased' ), 10, 3 );
|
81 |
-
}
|
82 |
-
|
83 |
-
/**
|
84 |
-
* Added product to a wishlist
|
85 |
-
*
|
86 |
-
* @param array $data product data including author and wishlist IDs.
|
87 |
-
*/
|
88 |
-
public function added( $data ) {
|
89 |
-
|
90 |
-
// Must be logged in
|
91 |
-
if ( ! is_user_logged_in() ) {
|
92 |
-
return;
|
93 |
-
}
|
94 |
-
|
95 |
-
$user_id = get_current_user_id();
|
96 |
-
|
97 |
-
// Award the user adding to wishlist
|
98 |
-
if ( $this->prefs['tinvwl_added']['creds'] != 0 && ! $this->core->exclude_user( $user_id ) ) {
|
99 |
-
|
100 |
-
// Limit
|
101 |
-
if ( ! $this->over_hook_limit( 'tinvwl_added', 'added_to_wishlist', $user_id ) ) {
|
102 |
-
|
103 |
-
// Make sure this is unique event
|
104 |
-
if ( ! $this->core->has_entry( 'added_to_wishlist', $data['product_id'], $user_id ) ) {
|
105 |
-
|
106 |
-
// Execute
|
107 |
-
$this->core->add_creds(
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
);
|
116 |
-
|
117 |
-
}
|
118 |
-
|
119 |
-
}
|
120 |
-
|
121 |
-
}
|
122 |
-
}
|
123 |
-
|
124 |
-
/**
|
125 |
-
* Purchased product from a wishlist
|
126 |
-
*
|
127 |
-
* @param WC_order $order Order object.
|
128 |
-
* @param WC_Order_Item_Product $item Order item product object.
|
129 |
-
* @param array $wishlist A wishlist data where product added from.
|
130 |
-
*/
|
131 |
-
public function purchased( $order, $item, $wishlist ) {
|
132 |
-
|
133 |
-
// Must be logged in
|
134 |
-
if ( ! is_user_logged_in() ) {
|
135 |
-
return;
|
136 |
-
}
|
137 |
-
|
138 |
-
$user_id = get_current_user_id();
|
139 |
-
|
140 |
-
// Award the user adding to wishlist
|
141 |
-
if ( $this->prefs['tinvwl_purchased']['creds'] != 0 && ! $this->core->exclude_user( $user_id ) ) {
|
142 |
-
|
143 |
-
// Limit
|
144 |
-
if ( ! $this->over_hook_limit( 'tinvwl_purchased', 'purchased_from_wishlist', $user_id ) ) {
|
145 |
-
|
146 |
-
// Make sure this is unique event
|
147 |
-
if ( ! $this->core->has_entry( 'purchased_from_wishlist', $item->get_id(), $user_id ) ) {
|
148 |
-
|
149 |
-
// Execute
|
150 |
-
$this->core->add_creds(
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
);
|
159 |
-
|
160 |
-
}
|
161 |
-
|
162 |
-
}
|
163 |
-
|
164 |
-
}
|
165 |
-
|
166 |
-
}
|
167 |
-
|
168 |
-
/**
|
169 |
-
* Preferences
|
170 |
-
*/
|
171 |
-
public function preferences() {
|
172 |
-
|
173 |
-
$prefs = $this->prefs;
|
174 |
-
|
175 |
-
?>
|
176 |
-
<div class="hook-instance">
|
177 |
-
<h3><?php _e( 'Adding Product to Wishlist', 'ti-woocommerce-wishlist' ); ?></h3>
|
178 |
-
<div class="row">
|
179 |
-
<div class="col-lg-2 col-md-6 col-sm-6 col-xs-12">
|
180 |
-
<div class="form-group">
|
181 |
-
<label
|
182 |
-
|
183 |
-
<input type="text"
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
</div>
|
189 |
-
</div>
|
190 |
-
<div class="col-lg-4 col-md-6 col-sm-6 col-xs-12">
|
191 |
-
<div class="form-group">
|
192 |
-
<label for="<?php echo $this->field_id( array(
|
193 |
-
|
194 |
-
|
195 |
-
) ); ?>"><?php _e( 'Limit', 'ti-woocommerce-wishlist' ); ?></label>
|
196 |
-
<?php echo $this->hook_limit_setting( $this->field_name( array(
|
197 |
-
|
198 |
-
|
199 |
-
) ), $this->field_id( array(
|
200 |
-
|
201 |
-
|
202 |
-
) ), $prefs['tinvwl_added']['limit'] ); ?>
|
203 |
-
</div>
|
204 |
-
</div>
|
205 |
-
<div class="col-lg-6 col-md-12 col-sm-12 col-xs-12">
|
206 |
-
<div class="form-group">
|
207 |
-
<label
|
208 |
-
|
209 |
-
<input type="text"
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
<span class="description"><?php echo $this->available_template_tags( array(
|
216 |
-
|
217 |
-
|
218 |
-
) ); ?></span>
|
219 |
-
</div>
|
220 |
-
</div>
|
221 |
-
</div>
|
222 |
-
<h3><?php _e( 'Purchasing Product from Wishlist', 'ti-woocommerce-wishlist' ); ?></h3>
|
223 |
-
<div class="row">
|
224 |
-
<div class="col-lg-2 col-md-6 col-sm-6 col-xs-12">
|
225 |
-
<div class="form-group">
|
226 |
-
<label
|
227 |
-
|
228 |
-
<input type="text"
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
</div>
|
234 |
-
</div>
|
235 |
-
<div class="col-lg-4 col-md-6 col-sm-6 col-xs-12">
|
236 |
-
<div class="form-group">
|
237 |
-
<label for="<?php echo $this->field_id( array(
|
238 |
-
|
239 |
-
|
240 |
-
) ); ?>"><?php _e( 'Limit', 'ti-woocommerce-wishlist' ); ?></label>
|
241 |
-
<?php echo $this->hook_limit_setting( $this->field_name( array(
|
242 |
-
|
243 |
-
|
244 |
-
) ), $this->field_id( array(
|
245 |
-
|
246 |
-
|
247 |
-
) ), $prefs['tinvwl_purchased']['limit'] ); ?>
|
248 |
-
</div>
|
249 |
-
</div>
|
250 |
-
<div class="col-lg-6 col-md-12 col-sm-12 col-xs-12">
|
251 |
-
<div class="form-group">
|
252 |
-
<label
|
253 |
-
|
254 |
-
<input type="text"
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
<span class="description"><?php echo $this->available_template_tags( array(
|
261 |
-
|
262 |
-
|
263 |
-
) ); ?></span>
|
264 |
-
</div>
|
265 |
-
</div>
|
266 |
-
</div>
|
267 |
-
</div>
|
268 |
-
|
269 |
-
<?php
|
270 |
-
|
271 |
-
}
|
272 |
-
|
273 |
-
/**
|
274 |
-
* Sanitise Preferences
|
275 |
-
*/
|
276 |
-
public function sanitise_preferences( $data ) {
|
277 |
-
|
278 |
-
if ( isset( $data['tinvwl_added']['limit'] ) && isset( $data['tinvwl_added']['limit_by'] ) ) {
|
279 |
-
$limit = sanitize_text_field( $data['tinvwl_added']['limit'] );
|
280 |
-
if ( $limit == '' ) {
|
281 |
-
$limit = 0;
|
282 |
-
}
|
283 |
-
$data['tinvwl_added']['limit'] = $limit . '/' . $data['tinvwl_added']['limit_by'];
|
284 |
-
unset( $data['tinvwl_added']['limit_by'] );
|
285 |
-
}
|
286 |
-
|
287 |
-
if ( isset( $data['tinvwl_purchased']['limit'] ) && isset( $data['tinvwl_purchased']['limit_by'] ) ) {
|
288 |
-
$limit = sanitize_text_field( $data['tinvwl_purchased']['limit'] );
|
289 |
-
if ( $limit == '' ) {
|
290 |
-
$limit = 0;
|
291 |
-
}
|
292 |
-
$data['tinvwl_purchased']['limit'] = $limit . '/' . $data['tinvwl_purchased']['limit_by'];
|
293 |
-
unset( $data['tinvwl_purchased']['limit_by'] );
|
294 |
-
}
|
295 |
-
|
296 |
-
return $data;
|
297 |
-
|
298 |
-
}
|
299 |
-
|
300 |
-
}
|
301 |
-
|
302 |
-
}
|
303 |
-
|
304 |
-
add_filter( 'mycred_all_references', 'tinvwl_mycred_references' );
|
305 |
-
|
306 |
-
function tinvwl_mycred_references( $references ) {
|
307 |
-
|
308 |
-
$references['purchased_from_wishlist'] = __( 'Purchased From Wishlist', 'ti-woocommerce-wishlist' );
|
309 |
-
$references['added_to_wishlist'] = __( 'Added To Wishlist', 'ti-woocommerce-wishlist' );
|
310 |
-
|
311 |
-
return $references;
|
312 |
-
}
|
313 |
-
}
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* TI WooCommerce Wishlist integration with:
|
4 |
+
*
|
5 |
+
* @name myCRED
|
6 |
+
*
|
7 |
+
* @version 1.8.4.2
|
8 |
+
*
|
9 |
+
* @slug mycred
|
10 |
+
*
|
11 |
+
* @url https://wordpress.org/plugins/mycred/
|
12 |
+
*
|
13 |
+
*/
|
14 |
+
|
15 |
+
// If this file is called directly, abort.
|
16 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
17 |
+
die;
|
18 |
+
}
|
19 |
+
|
20 |
+
// myCred hooks
|
21 |
+
if ( defined( 'myCRED_VERSION' ) ) {
|
22 |
+
|
23 |
+
/**
|
24 |
+
* Register Hook
|
25 |
+
*/
|
26 |
+
add_filter( 'mycred_setup_hooks', 'tinvwl_mycred_register_ti_woocommerce_wishlist_hook', 100 );
|
27 |
+
function tinvwl_mycred_register_ti_woocommerce_wishlist_hook( $installed ) {
|
28 |
+
|
29 |
+
$installed['tinvwl'] = array(
|
30 |
+
'title' => __( 'WooCommerce Wishlist', 'ti-woocommerce-wishlist' ),
|
31 |
+
'description' => __( 'Awards %_plural% for users adding products to their wishlist and purchased products from their wishlist.', 'ti-woocommerce-wishlist' ),
|
32 |
+
'callback' => array( 'myCRED_Hook_TinvWL' ),
|
33 |
+
);
|
34 |
+
|
35 |
+
return $installed;
|
36 |
+
|
37 |
+
}
|
38 |
+
|
39 |
+
/**
|
40 |
+
* TI WooCommerce Wihslist Hook
|
41 |
+
*/
|
42 |
+
add_action( 'mycred_load_hooks', 'tinvwl_mycred_load_ti_woocommerce_wishlist_hook', 100 );
|
43 |
+
function tinvwl_mycred_load_ti_woocommerce_wishlist_hook() {
|
44 |
+
|
45 |
+
// If the hook has been replaced or if plugin is not installed, exit now
|
46 |
+
if ( class_exists( 'myCRED_Hook_TinvWL' ) ) {
|
47 |
+
return;
|
48 |
+
}
|
49 |
+
|
50 |
+
class myCRED_Hook_TinvWL extends myCRED_Hook {
|
51 |
+
|
52 |
+
/**
|
53 |
+
* Construct
|
54 |
+
*/
|
55 |
+
public function __construct( $hook_prefs, $type = MYCRED_DEFAULT_TYPE_KEY ) {
|
56 |
+
|
57 |
+
parent::__construct( array(
|
58 |
+
'id' => 'tinvwl',
|
59 |
+
'defaults' => array(
|
60 |
+
'tinvwl_added' => array(
|
61 |
+
'creds' => 1,
|
62 |
+
'log' => '%plural% for adding a product to a wishlist',
|
63 |
+
'limit' => '0/x',
|
64 |
+
),
|
65 |
+
'tinvwl_purchased' => array(
|
66 |
+
'creds' => 1,
|
67 |
+
'log' => '%plural% for purchasing a product from a wishlist',
|
68 |
+
'limit' => '0/x',
|
69 |
+
),
|
70 |
+
),
|
71 |
+
), $hook_prefs, $type );
|
72 |
+
|
73 |
+
}
|
74 |
+
|
75 |
+
/**
|
76 |
+
* Run
|
77 |
+
*/
|
78 |
+
public function run() {
|
79 |
+
add_action( 'tinvwl_product_added', array( $this, 'added' ) );
|
80 |
+
add_action( 'tinvwl_product_purchased', array( $this, 'purchased' ), 10, 3 );
|
81 |
+
}
|
82 |
+
|
83 |
+
/**
|
84 |
+
* Added product to a wishlist
|
85 |
+
*
|
86 |
+
* @param array $data product data including author and wishlist IDs.
|
87 |
+
*/
|
88 |
+
public function added( $data ) {
|
89 |
+
|
90 |
+
// Must be logged in
|
91 |
+
if ( ! is_user_logged_in() ) {
|
92 |
+
return;
|
93 |
+
}
|
94 |
+
|
95 |
+
$user_id = get_current_user_id();
|
96 |
+
|
97 |
+
// Award the user adding to wishlist
|
98 |
+
if ( $this->prefs['tinvwl_added']['creds'] != 0 && ! $this->core->exclude_user( $user_id ) ) {
|
99 |
+
|
100 |
+
// Limit
|
101 |
+
if ( ! $this->over_hook_limit( 'tinvwl_added', 'added_to_wishlist', $user_id ) ) {
|
102 |
+
|
103 |
+
// Make sure this is unique event
|
104 |
+
if ( ! $this->core->has_entry( 'added_to_wishlist', $data['product_id'], $user_id ) ) {
|
105 |
+
|
106 |
+
// Execute
|
107 |
+
$this->core->add_creds(
|
108 |
+
'added_to_wishlist',
|
109 |
+
$user_id,
|
110 |
+
$this->prefs['tinvwl_added']['creds'],
|
111 |
+
$this->prefs['tinvwl_added']['log'],
|
112 |
+
$data['product_id'],
|
113 |
+
array( 'ref_type' => 'post' ),
|
114 |
+
$this->mycred_type
|
115 |
+
);
|
116 |
+
|
117 |
+
}
|
118 |
+
|
119 |
+
}
|
120 |
+
|
121 |
+
}
|
122 |
+
}
|
123 |
+
|
124 |
+
/**
|
125 |
+
* Purchased product from a wishlist
|
126 |
+
*
|
127 |
+
* @param WC_order $order Order object.
|
128 |
+
* @param WC_Order_Item_Product $item Order item product object.
|
129 |
+
* @param array $wishlist A wishlist data where product added from.
|
130 |
+
*/
|
131 |
+
public function purchased( $order, $item, $wishlist ) {
|
132 |
+
|
133 |
+
// Must be logged in
|
134 |
+
if ( ! is_user_logged_in() ) {
|
135 |
+
return;
|
136 |
+
}
|
137 |
+
|
138 |
+
$user_id = get_current_user_id();
|
139 |
+
|
140 |
+
// Award the user adding to wishlist
|
141 |
+
if ( $this->prefs['tinvwl_purchased']['creds'] != 0 && ! $this->core->exclude_user( $user_id ) ) {
|
142 |
+
|
143 |
+
// Limit
|
144 |
+
if ( ! $this->over_hook_limit( 'tinvwl_purchased', 'purchased_from_wishlist', $user_id ) ) {
|
145 |
+
|
146 |
+
// Make sure this is unique event
|
147 |
+
if ( ! $this->core->has_entry( 'purchased_from_wishlist', $item->get_id(), $user_id ) ) {
|
148 |
+
|
149 |
+
// Execute
|
150 |
+
$this->core->add_creds(
|
151 |
+
'purchased_from_wishlist',
|
152 |
+
$user_id,
|
153 |
+
$this->prefs['tinvwl_purchased']['creds'],
|
154 |
+
$this->prefs['tinvwl_purchased']['log'],
|
155 |
+
$item->get_id(),
|
156 |
+
array( 'ref_type' => 'post' ),
|
157 |
+
$this->mycred_type
|
158 |
+
);
|
159 |
+
|
160 |
+
}
|
161 |
+
|
162 |
+
}
|
163 |
+
|
164 |
+
}
|
165 |
+
|
166 |
+
}
|
167 |
+
|
168 |
+
/**
|
169 |
+
* Preferences
|
170 |
+
*/
|
171 |
+
public function preferences() {
|
172 |
+
|
173 |
+
$prefs = $this->prefs;
|
174 |
+
|
175 |
+
?>
|
176 |
+
<div class="hook-instance">
|
177 |
+
<h3><?php _e( 'Adding Product to Wishlist', 'ti-woocommerce-wishlist' ); ?></h3>
|
178 |
+
<div class="row">
|
179 |
+
<div class="col-lg-2 col-md-6 col-sm-6 col-xs-12">
|
180 |
+
<div class="form-group">
|
181 |
+
<label
|
182 |
+
for="<?php echo $this->field_id( array( 'tinvwl_added' => 'creds' ) ); ?>"><?php _e( 'Points', 'ti-woocommerce-wishlist' ); ?></label>
|
183 |
+
<input type="text"
|
184 |
+
name="<?php echo $this->field_name( array( 'tinvwl_added' => 'creds' ) ); ?>"
|
185 |
+
id="<?php echo $this->field_id( array( 'tinvwl_added' => 'creds' ) ); ?>"
|
186 |
+
value="<?php echo $this->core->number( $prefs['tinvwl_added']['creds'] ); ?>"
|
187 |
+
class="form-control"/>
|
188 |
+
</div>
|
189 |
+
</div>
|
190 |
+
<div class="col-lg-4 col-md-6 col-sm-6 col-xs-12">
|
191 |
+
<div class="form-group">
|
192 |
+
<label for="<?php echo $this->field_id( array(
|
193 |
+
'tinvwl_added',
|
194 |
+
'limit',
|
195 |
+
) ); ?>"><?php _e( 'Limit', 'ti-woocommerce-wishlist' ); ?></label>
|
196 |
+
<?php echo $this->hook_limit_setting( $this->field_name( array(
|
197 |
+
'tinvwl_added',
|
198 |
+
'limit',
|
199 |
+
) ), $this->field_id( array(
|
200 |
+
'tinvwl_added',
|
201 |
+
'limit',
|
202 |
+
) ), $prefs['tinvwl_added']['limit'] ); ?>
|
203 |
+
</div>
|
204 |
+
</div>
|
205 |
+
<div class="col-lg-6 col-md-12 col-sm-12 col-xs-12">
|
206 |
+
<div class="form-group">
|
207 |
+
<label
|
208 |
+
for="<?php echo $this->field_id( array( 'tinvwl_added' => 'log' ) ); ?>"><?php _e( 'Log Template', 'ti-woocommerce-wishlist' ); ?></label>
|
209 |
+
<input type="text"
|
210 |
+
name="<?php echo $this->field_name( array( 'tinvwl_added' => 'log' ) ); ?>"
|
211 |
+
id="<?php echo $this->field_id( array( 'tinvwl_added' => 'log' ) ); ?>"
|
212 |
+
placeholder="<?php _e( 'required', 'ti-woocommerce-wishlist' ); ?>"
|
213 |
+
value="<?php echo esc_attr( $prefs['tinvwl_added']['log'] ); ?>"
|
214 |
+
class="form-control"/>
|
215 |
+
<span class="description"><?php echo $this->available_template_tags( array(
|
216 |
+
'general',
|
217 |
+
'post',
|
218 |
+
) ); ?></span>
|
219 |
+
</div>
|
220 |
+
</div>
|
221 |
+
</div>
|
222 |
+
<h3><?php _e( 'Purchasing Product from Wishlist', 'ti-woocommerce-wishlist' ); ?></h3>
|
223 |
+
<div class="row">
|
224 |
+
<div class="col-lg-2 col-md-6 col-sm-6 col-xs-12">
|
225 |
+
<div class="form-group">
|
226 |
+
<label
|
227 |
+
for="<?php echo $this->field_id( array( 'tinvwl_purchased' => 'creds' ) ); ?>"><?php _e( 'Points', 'ti-woocommerce-wishlist' ); ?></label>
|
228 |
+
<input type="text"
|
229 |
+
name="<?php echo $this->field_name( array( 'tinvwl_purchased' => 'creds' ) ); ?>"
|
230 |
+
id="<?php echo $this->field_id( array( 'tinvwl_purchased' => 'creds' ) ); ?>"
|
231 |
+
value="<?php echo $this->core->number( $prefs['tinvwl_purchased']['creds'] ); ?>"
|
232 |
+
class="form-control"/>
|
233 |
+
</div>
|
234 |
+
</div>
|
235 |
+
<div class="col-lg-4 col-md-6 col-sm-6 col-xs-12">
|
236 |
+
<div class="form-group">
|
237 |
+
<label for="<?php echo $this->field_id( array(
|
238 |
+
'tinvwl_purchased',
|
239 |
+
'limit',
|
240 |
+
) ); ?>"><?php _e( 'Limit', 'ti-woocommerce-wishlist' ); ?></label>
|
241 |
+
<?php echo $this->hook_limit_setting( $this->field_name( array(
|
242 |
+
'tinvwl_purchased',
|
243 |
+
'limit',
|
244 |
+
) ), $this->field_id( array(
|
245 |
+
'tinvwl_purchased',
|
246 |
+
'limit',
|
247 |
+
) ), $prefs['tinvwl_purchased']['limit'] ); ?>
|
248 |
+
</div>
|
249 |
+
</div>
|
250 |
+
<div class="col-lg-6 col-md-12 col-sm-12 col-xs-12">
|
251 |
+
<div class="form-group">
|
252 |
+
<label
|
253 |
+
for="<?php echo $this->field_id( array( 'tinvwl_purchased' => 'log' ) ); ?>"><?php _e( 'Log Template', 'ti-woocommerce-wishlist' ); ?></label>
|
254 |
+
<input type="text"
|
255 |
+
name="<?php echo $this->field_name( array( 'tinvwl_purchased' => 'log' ) ); ?>"
|
256 |
+
id="<?php echo $this->field_id( array( 'tinvwl_purchased' => 'log' ) ); ?>"
|
257 |
+
placeholder="<?php _e( 'required', 'ti-woocommerce-wishlist' ); ?>"
|
258 |
+
value="<?php echo esc_attr( $prefs['tinvwl_purchased']['log'] ); ?>"
|
259 |
+
class="form-control"/>
|
260 |
+
<span class="description"><?php echo $this->available_template_tags( array(
|
261 |
+
'general',
|
262 |
+
'post',
|
263 |
+
) ); ?></span>
|
264 |
+
</div>
|
265 |
+
</div>
|
266 |
+
</div>
|
267 |
+
</div>
|
268 |
+
|
269 |
+
<?php
|
270 |
+
|
271 |
+
}
|
272 |
+
|
273 |
+
/**
|
274 |
+
* Sanitise Preferences
|
275 |
+
*/
|
276 |
+
public function sanitise_preferences( $data ) {
|
277 |
+
|
278 |
+
if ( isset( $data['tinvwl_added']['limit'] ) && isset( $data['tinvwl_added']['limit_by'] ) ) {
|
279 |
+
$limit = sanitize_text_field( $data['tinvwl_added']['limit'] );
|
280 |
+
if ( $limit == '' ) {
|
281 |
+
$limit = 0;
|
282 |
+
}
|
283 |
+
$data['tinvwl_added']['limit'] = $limit . '/' . $data['tinvwl_added']['limit_by'];
|
284 |
+
unset( $data['tinvwl_added']['limit_by'] );
|
285 |
+
}
|
286 |
+
|
287 |
+
if ( isset( $data['tinvwl_purchased']['limit'] ) && isset( $data['tinvwl_purchased']['limit_by'] ) ) {
|
288 |
+
$limit = sanitize_text_field( $data['tinvwl_purchased']['limit'] );
|
289 |
+
if ( $limit == '' ) {
|
290 |
+
$limit = 0;
|
291 |
+
}
|
292 |
+
$data['tinvwl_purchased']['limit'] = $limit . '/' . $data['tinvwl_purchased']['limit_by'];
|
293 |
+
unset( $data['tinvwl_purchased']['limit_by'] );
|
294 |
+
}
|
295 |
+
|
296 |
+
return $data;
|
297 |
+
|
298 |
+
}
|
299 |
+
|
300 |
+
}
|
301 |
+
|
302 |
+
}
|
303 |
+
|
304 |
+
add_filter( 'mycred_all_references', 'tinvwl_mycred_references' );
|
305 |
+
|
306 |
+
function tinvwl_mycred_references( $references ) {
|
307 |
+
|
308 |
+
$references['purchased_from_wishlist'] = __( 'Purchased From Wishlist', 'ti-woocommerce-wishlist' );
|
309 |
+
$references['added_to_wishlist'] = __( 'Added To Wishlist', 'ti-woocommerce-wishlist' );
|
310 |
+
|
311 |
+
return $references;
|
312 |
+
}
|
313 |
+
}
|
integrations/woocommerce-gravityforms-product-addons.php
CHANGED
@@ -38,7 +38,7 @@ if ( ! function_exists( 'tinvwl_gf_productaddon_support' ) ) {
|
|
38 |
* @return string
|
39 |
*/
|
40 |
function gf_productaddon_text_button( $text_add_to_cart, $wl_product, $product ) {
|
41 |
-
$gravity_form_data = get_post_meta( (
|
42 |
|
43 |
return ( $gravity_form_data ) ? __( 'Select options', 'ti-woocommerce-wishlist' ) : $text_add_to_cart;
|
44 |
}
|
@@ -57,7 +57,7 @@ if ( ! function_exists( 'tinvwl_gf_productaddon_support' ) ) {
|
|
57 |
* @return boolean
|
58 |
*/
|
59 |
function gf_productaddon_run_action_button( $need, $product ) {
|
60 |
-
$gravity_form_data = get_post_meta( (
|
61 |
|
62 |
return ( $gravity_form_data ) ? true : $need;
|
63 |
}
|
@@ -76,7 +76,7 @@ if ( ! function_exists( 'tinvwl_gf_productaddon_support' ) ) {
|
|
76 |
* @return string
|
77 |
*/
|
78 |
function gf_productaddon_action_button( $url, $product ) {
|
79 |
-
$gravity_form_data = get_post_meta( (
|
80 |
|
81 |
return ( $gravity_form_data ) ? $product->get_permalink() : $url;
|
82 |
}
|
38 |
* @return string
|
39 |
*/
|
40 |
function gf_productaddon_text_button( $text_add_to_cart, $wl_product, $product ) {
|
41 |
+
$gravity_form_data = get_post_meta( ( ( $product->is_type( 'variation' ) ? $product->get_parent_id() : $product->get_id() ) ), '_gravity_form_data', true );
|
42 |
|
43 |
return ( $gravity_form_data ) ? __( 'Select options', 'ti-woocommerce-wishlist' ) : $text_add_to_cart;
|
44 |
}
|
57 |
* @return boolean
|
58 |
*/
|
59 |
function gf_productaddon_run_action_button( $need, $product ) {
|
60 |
+
$gravity_form_data = get_post_meta( ( $product->is_type( 'variation' ) ? $product->get_parent_id() : $product->get_id() ), '_gravity_form_data', true );
|
61 |
|
62 |
return ( $gravity_form_data ) ? true : $need;
|
63 |
}
|
76 |
* @return string
|
77 |
*/
|
78 |
function gf_productaddon_action_button( $url, $product ) {
|
79 |
+
$gravity_form_data = get_post_meta( ( $product->is_type( 'variation' ) ? $product->get_parent_id() : $product->get_id() ), '_gravity_form_data', true );
|
80 |
|
81 |
return ( $gravity_form_data ) ? $product->get_permalink() : $url;
|
82 |
}
|
integrations/woocommerce-multilingual.php
CHANGED
@@ -161,8 +161,8 @@ if ( ! function_exists( 'tinvwl_wpml_addtowishlist_out_prepare_product' ) ) {
|
|
161 |
$woocommerce_wpml->products = new WCML_Products( $woocommerce_wpml, $sitepress, $wpml_post_translations, $wpdb );
|
162 |
}
|
163 |
|
164 |
-
$product_id =
|
165 |
-
$variation_id =
|
166 |
|
167 |
if ( ! empty( $product_id ) ) {
|
168 |
$product_id = $woocommerce_wpml->products->get_original_product_id( $product_id );
|
161 |
$woocommerce_wpml->products = new WCML_Products( $woocommerce_wpml, $sitepress, $wpml_post_translations, $wpdb );
|
162 |
}
|
163 |
|
164 |
+
$product_id = $product->is_type( 'variation' ) ? $product->get_parent_id() : $product->get_id();
|
165 |
+
$variation_id = $product->is_type( 'variation' ) ? $product->get_id() : 0;
|
166 |
|
167 |
if ( ! empty( $product_id ) ) {
|
168 |
$product_id = $woocommerce_wpml->products->get_original_product_id( $product_id );
|
languages/ti-woocommerce-wishlist.pot
CHANGED
@@ -1,8 +1,8 @@
|
|
1 |
-
# Copyright (C) 2020 TI WooCommerce Wishlist Plugin - 1.
|
2 |
-
# This file is distributed under the same license as the TI WooCommerce Wishlist Plugin - 1.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
-
"Project-Id-Version: TI WooCommerce Wishlist Plugin - 1.
|
6 |
"MIME-Version: 1.0\n"
|
7 |
"Content-Type: text/plain; charset=UTF-8\n"
|
8 |
"Content-Transfer-Encoding: 8bit\n"
|
@@ -56,7 +56,7 @@ msgstr ""
|
|
56 |
msgid "Wishlist page needs to be selected so the plugin knows where it is. This page should be created upon installation of the plugin, if not you will need to create it manually."
|
57 |
msgstr ""
|
58 |
|
59 |
-
#: admin/settings/general.class.php:114, views/wizard/step-page.php:
|
60 |
msgid "Default Wishlist Name"
|
61 |
msgstr ""
|
62 |
|
@@ -192,7 +192,7 @@ msgstr ""
|
|
192 |
msgid "Product page \"Add to Wishlist\" Button Settings"
|
193 |
msgstr ""
|
194 |
|
195 |
-
#: admin/settings/general.class.php:314, admin/settings/general.class.php:455, views/wizard/step-button.php:
|
196 |
msgid "Button position"
|
197 |
msgstr ""
|
198 |
|
@@ -308,7 +308,7 @@ msgstr ""
|
|
308 |
msgid "Note: if \"Custom position with code\" option is applied, the \"Add to Wishlist\" button should be added into template using <code>do_shortcode()</code> function like this:<br /><code>do_shortcode(\"[ti_wishlists_addtowishlist loop=yes]\")</code>"
|
309 |
msgstr ""
|
310 |
|
311 |
-
#: admin/settings/general.class.php:542, views/wizard/step-button.php:
|
312 |
msgid "\"Add to Wishlist\" Text"
|
313 |
msgstr ""
|
314 |
|
@@ -692,7 +692,7 @@ msgstr ""
|
|
692 |
msgid "Normal Buttons Text Hover Color"
|
693 |
msgstr ""
|
694 |
|
695 |
-
#: admin/settings/upgrade.class.php:56, admin/tinvwl.class.php:278, views/wizard/finish.php:
|
696 |
msgid "Upgrade to Premium"
|
697 |
msgstr ""
|
698 |
|
@@ -848,31 +848,31 @@ msgstr ""
|
|
848 |
msgid "Preview"
|
849 |
msgstr ""
|
850 |
|
851 |
-
#: includes/pluginextend.helper.php:
|
852 |
msgid "%2$s %3$s is required for %1$s. Deactivating %1$s."
|
853 |
msgstr ""
|
854 |
|
855 |
-
#: includes/pluginextend.helper.php:
|
856 |
msgid "%1$s is confilcted with %2$s %3$s. Deactivating %1$s."
|
857 |
msgstr ""
|
858 |
|
859 |
-
#: includes/pluginextend.helper.php:
|
860 |
msgid "%2$s %3$s is required. Please update it before activating this plugin."
|
861 |
msgstr ""
|
862 |
|
863 |
-
#: includes/pluginextend.helper.php:
|
864 |
msgid "%2$s %3$s is required. Please downgrade it before activating this plugin."
|
865 |
msgstr ""
|
866 |
|
867 |
-
#: includes/pluginextend.helper.php:
|
868 |
msgid "%2$s %3$s is required. Please activate it before activating this plugin."
|
869 |
msgstr ""
|
870 |
|
871 |
-
#: includes/pluginextend.helper.php:
|
872 |
msgid "%1$s is conflicted with %2$s %3$s. Please disable it before activating this plugin."
|
873 |
msgstr ""
|
874 |
|
875 |
-
#: includes/pluginextend.helper.php:
|
876 |
msgid "%1$s %3$s is required. Please activate it before activating this plugin."
|
877 |
msgstr ""
|
878 |
|
@@ -1221,7 +1221,7 @@ msgstr ""
|
|
1221 |
msgid "Your Wishlist is currently empty."
|
1222 |
msgstr ""
|
1223 |
|
1224 |
-
#: templates/ti-wishlist-empty.php:33, templates/ti-wishlist-null.php:
|
1225 |
msgid "Return To Shop"
|
1226 |
msgstr ""
|
1227 |
|
@@ -1349,15 +1349,15 @@ msgstr ""
|
|
1349 |
msgid "get started now"
|
1350 |
msgstr ""
|
1351 |
|
1352 |
-
#: views/admin/templates-status.php:
|
1353 |
msgid "TI WooCommerce Wishlist Templates"
|
1354 |
msgstr ""
|
1355 |
|
1356 |
-
#: views/admin/templates-status.php:
|
1357 |
msgid "This section shows the files that are overriding the default TI WooCommerce Wishlist templates."
|
1358 |
msgstr ""
|
1359 |
|
1360 |
-
#: views/admin/templates-status.php:
|
1361 |
msgid "Overrides"
|
1362 |
msgstr ""
|
1363 |
|
@@ -1397,11 +1397,11 @@ msgstr ""
|
|
1397 |
msgid "Documentation"
|
1398 |
msgstr ""
|
1399 |
|
1400 |
-
#: views/wizard/finish.php:
|
1401 |
msgid "Wishlist Settings"
|
1402 |
msgstr ""
|
1403 |
|
1404 |
-
#: views/wizard/footer.php:
|
1405 |
msgid "Return to the WordPress Dashboard"
|
1406 |
msgstr ""
|
1407 |
|
@@ -1429,7 +1429,7 @@ msgstr ""
|
|
1429 |
msgid "let’s go"
|
1430 |
msgstr ""
|
1431 |
|
1432 |
-
#: views/wizard/intro.php:
|
1433 |
msgid "Not Right Now"
|
1434 |
msgstr ""
|
1435 |
|
@@ -1441,39 +1441,39 @@ msgstr ""
|
|
1441 |
msgid "Choose where to place “Add to Wishlist” button on the product page: before or after “Add to Cart” button."
|
1442 |
msgstr ""
|
1443 |
|
1444 |
-
#: views/wizard/step-button.php:
|
1445 |
msgid "TI Wishlists > Style Options"
|
1446 |
msgstr ""
|
1447 |
|
1448 |
-
#: views/wizard/step-button.php:
|
1449 |
msgid "And set button text. You can add an icon, change button appearance and other settings in %s."
|
1450 |
msgstr ""
|
1451 |
|
1452 |
-
#: views/wizard/step-button.php:
|
1453 |
msgid " and "
|
1454 |
msgstr ""
|
1455 |
|
1456 |
-
#: views/wizard/step-button.php:
|
1457 |
msgid "You can also show “Add to Wishlist” button in Product listing. More options in %s."
|
1458 |
msgstr ""
|
1459 |
|
1460 |
-
#: views/wizard/step-button.php:
|
1461 |
msgid "Show in Product listing"
|
1462 |
msgstr ""
|
1463 |
|
1464 |
-
#: views/wizard/step-button.php:
|
1465 |
msgid "\"Add to Wishlist\" Text in Product listing"
|
1466 |
msgstr ""
|
1467 |
|
1468 |
-
#: views/wizard/step-button.php:
|
1469 |
msgid "Skip this step"
|
1470 |
msgstr ""
|
1471 |
|
1472 |
-
#: views/wizard/step-button.php:
|
1473 |
msgid "continue"
|
1474 |
msgstr ""
|
1475 |
|
1476 |
-
#: views/wizard/step-page-field.php:
|
1477 |
msgid "Page with name “%s” aready exist! Please choose another page or create a new one"
|
1478 |
msgstr ""
|
1479 |
|
@@ -1481,11 +1481,11 @@ msgstr ""
|
|
1481 |
msgid "The following page needs to be applied so the “Wishlist” knows where it is. "
|
1482 |
msgstr ""
|
1483 |
|
1484 |
-
#: views/wizard/step-page.php:
|
1485 |
msgid "Choose from existing pages or leave this field empty and the Wishlist page will be created automatically:"
|
1486 |
msgstr ""
|
1487 |
|
1488 |
-
#: views/wizard/step-page.php:
|
1489 |
msgid "Once created, this page can be managed from WordPress dashboard."
|
1490 |
msgstr ""
|
1491 |
|
1 |
+
# Copyright (C) 2020 TI WooCommerce Wishlist Plugin - 1.22.0
|
2 |
+
# This file is distributed under the same license as the TI WooCommerce Wishlist Plugin - 1.22.0 package.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
+
"Project-Id-Version: TI WooCommerce Wishlist Plugin - 1.22.0\n"
|
6 |
"MIME-Version: 1.0\n"
|
7 |
"Content-Type: text/plain; charset=UTF-8\n"
|
8 |
"Content-Transfer-Encoding: 8bit\n"
|
56 |
msgid "Wishlist page needs to be selected so the plugin knows where it is. This page should be created upon installation of the plugin, if not you will need to create it manually."
|
57 |
msgstr ""
|
58 |
|
59 |
+
#: admin/settings/general.class.php:114, views/wizard/step-page.php:28
|
60 |
msgid "Default Wishlist Name"
|
61 |
msgstr ""
|
62 |
|
192 |
msgid "Product page \"Add to Wishlist\" Button Settings"
|
193 |
msgstr ""
|
194 |
|
195 |
+
#: admin/settings/general.class.php:314, admin/settings/general.class.php:455, views/wizard/step-button.php:33
|
196 |
msgid "Button position"
|
197 |
msgstr ""
|
198 |
|
308 |
msgid "Note: if \"Custom position with code\" option is applied, the \"Add to Wishlist\" button should be added into template using <code>do_shortcode()</code> function like this:<br /><code>do_shortcode(\"[ti_wishlists_addtowishlist loop=yes]\")</code>"
|
309 |
msgstr ""
|
310 |
|
311 |
+
#: admin/settings/general.class.php:542, views/wizard/step-button.php:42
|
312 |
msgid "\"Add to Wishlist\" Text"
|
313 |
msgstr ""
|
314 |
|
692 |
msgid "Normal Buttons Text Hover Color"
|
693 |
msgstr ""
|
694 |
|
695 |
+
#: admin/settings/upgrade.class.php:56, admin/tinvwl.class.php:278, views/wizard/finish.php:33
|
696 |
msgid "Upgrade to Premium"
|
697 |
msgstr ""
|
698 |
|
848 |
msgid "Preview"
|
849 |
msgstr ""
|
850 |
|
851 |
+
#: includes/pluginextend.helper.php:512
|
852 |
msgid "%2$s %3$s is required for %1$s. Deactivating %1$s."
|
853 |
msgstr ""
|
854 |
|
855 |
+
#: includes/pluginextend.helper.php:521
|
856 |
msgid "%1$s is confilcted with %2$s %3$s. Deactivating %1$s."
|
857 |
msgstr ""
|
858 |
|
859 |
+
#: includes/pluginextend.helper.php:530
|
860 |
msgid "%2$s %3$s is required. Please update it before activating this plugin."
|
861 |
msgstr ""
|
862 |
|
863 |
+
#: includes/pluginextend.helper.php:535
|
864 |
msgid "%2$s %3$s is required. Please downgrade it before activating this plugin."
|
865 |
msgstr ""
|
866 |
|
867 |
+
#: includes/pluginextend.helper.php:539
|
868 |
msgid "%2$s %3$s is required. Please activate it before activating this plugin."
|
869 |
msgstr ""
|
870 |
|
871 |
+
#: includes/pluginextend.helper.php:543
|
872 |
msgid "%1$s is conflicted with %2$s %3$s. Please disable it before activating this plugin."
|
873 |
msgstr ""
|
874 |
|
875 |
+
#: includes/pluginextend.helper.php:547
|
876 |
msgid "%1$s %3$s is required. Please activate it before activating this plugin."
|
877 |
msgstr ""
|
878 |
|
1221 |
msgid "Your Wishlist is currently empty."
|
1222 |
msgstr ""
|
1223 |
|
1224 |
+
#: templates/ti-wishlist-empty.php:33, templates/ti-wishlist-null.php:24
|
1225 |
msgid "Return To Shop"
|
1226 |
msgstr ""
|
1227 |
|
1349 |
msgid "get started now"
|
1350 |
msgstr ""
|
1351 |
|
1352 |
+
#: views/admin/templates-status.php:17, views/admin/templates-status.php:18
|
1353 |
msgid "TI WooCommerce Wishlist Templates"
|
1354 |
msgstr ""
|
1355 |
|
1356 |
+
#: views/admin/templates-status.php:18
|
1357 |
msgid "This section shows the files that are overriding the default TI WooCommerce Wishlist templates."
|
1358 |
msgstr ""
|
1359 |
|
1360 |
+
#: views/admin/templates-status.php:34, views/admin/templates-status.php:34, views/admin/templates-status.php:27, views/admin/templates-status.php:27
|
1361 |
msgid "Overrides"
|
1362 |
msgstr ""
|
1363 |
|
1397 |
msgid "Documentation"
|
1398 |
msgstr ""
|
1399 |
|
1400 |
+
#: views/wizard/finish.php:28
|
1401 |
msgid "Wishlist Settings"
|
1402 |
msgstr ""
|
1403 |
|
1404 |
+
#: views/wizard/footer.php:18
|
1405 |
msgid "Return to the WordPress Dashboard"
|
1406 |
msgstr ""
|
1407 |
|
1429 |
msgid "let’s go"
|
1430 |
msgstr ""
|
1431 |
|
1432 |
+
#: views/wizard/intro.php:27
|
1433 |
msgid "Not Right Now"
|
1434 |
msgstr ""
|
1435 |
|
1441 |
msgid "Choose where to place “Add to Wishlist” button on the product page: before or after “Add to Cart” button."
|
1442 |
msgstr ""
|
1443 |
|
1444 |
+
#: views/wizard/step-button.php:25
|
1445 |
msgid "TI Wishlists > Style Options"
|
1446 |
msgstr ""
|
1447 |
|
1448 |
+
#: views/wizard/step-button.php:27
|
1449 |
msgid "And set button text. You can add an icon, change button appearance and other settings in %s."
|
1450 |
msgstr ""
|
1451 |
|
1452 |
+
#: views/wizard/step-button.php:27
|
1453 |
msgid " and "
|
1454 |
msgstr ""
|
1455 |
|
1456 |
+
#: views/wizard/step-button.php:52
|
1457 |
msgid "You can also show “Add to Wishlist” button in Product listing. More options in %s."
|
1458 |
msgstr ""
|
1459 |
|
1460 |
+
#: views/wizard/step-button.php:57
|
1461 |
msgid "Show in Product listing"
|
1462 |
msgstr ""
|
1463 |
|
1464 |
+
#: views/wizard/step-button.php:66
|
1465 |
msgid "\"Add to Wishlist\" Text in Product listing"
|
1466 |
msgstr ""
|
1467 |
|
1468 |
+
#: views/wizard/step-button.php:78, views/wizard/step-page.php:61, views/wizard/step-processing.php:39, views/wizard/step-social.php:85
|
1469 |
msgid "Skip this step"
|
1470 |
msgstr ""
|
1471 |
|
1472 |
+
#: views/wizard/step-button.php:79, views/wizard/step-page.php:62, views/wizard/step-processing.php:40, views/wizard/step-social.php:86
|
1473 |
msgid "continue"
|
1474 |
msgstr ""
|
1475 |
|
1476 |
+
#: views/wizard/step-page-field.php:36
|
1477 |
msgid "Page with name “%s” aready exist! Please choose another page or create a new one"
|
1478 |
msgstr ""
|
1479 |
|
1481 |
msgid "The following page needs to be applied so the “Wishlist” knows where it is. "
|
1482 |
msgstr ""
|
1483 |
|
1484 |
+
#: views/wizard/step-page.php:20
|
1485 |
msgid "Choose from existing pages or leave this field empty and the Wishlist page will be created automatically:"
|
1486 |
msgstr ""
|
1487 |
|
1488 |
+
#: views/wizard/step-page.php:54
|
1489 |
msgid "Once created, this page can be managed from WordPress dashboard."
|
1490 |
msgstr ""
|
1491 |
|
public/addtowishlist.class.php
CHANGED
@@ -577,7 +577,7 @@ JOIN {$table_languages} l ON
|
|
577 |
$product = apply_filters( 'tinvwl_addtowishlist_check_product', $product );
|
578 |
|
579 |
$this->wishlist = array();
|
580 |
-
$vproduct = in_array(
|
581 |
'variable',
|
582 |
'variation',
|
583 |
'variable-subscription',
|
@@ -604,7 +604,7 @@ JOIN {$table_languages} l ON
|
|
604 |
|
605 |
$products = array();
|
606 |
foreach ( $this->all_products as $_product ) {
|
607 |
-
if ( $_product['product_id'] ===
|
608 |
$products[] = $_product;
|
609 |
}
|
610 |
}
|
@@ -657,11 +657,11 @@ JOIN {$table_languages} l ON
|
|
657 |
|
658 |
if ( $product ) {
|
659 |
$allow = false;
|
660 |
-
if ( 'simple' ===
|
661 |
$allow = ( ( ! $product->is_purchasable() && '' == $product->get_price() ) || ( $product->is_purchasable() && ! $product->is_in_stock() ) );
|
662 |
}
|
663 |
|
664 |
-
if ( in_array(
|
665 |
'variable',
|
666 |
'variable-subscription'
|
667 |
) ) ) {
|
@@ -704,7 +704,7 @@ JOIN {$table_languages} l ON
|
|
704 |
|
705 |
$product_data = wc_get_product( $variation_id ? $variation_id : $product_id );
|
706 |
|
707 |
-
if ( $product_data && 'trash' !==
|
708 |
$this->product = apply_filters( 'tinvwl_addtowishlist_out_prepare_product', $product_data );
|
709 |
} else {
|
710 |
return '';
|
@@ -716,7 +716,7 @@ JOIN {$table_languages} l ON
|
|
716 |
|
717 |
add_action( 'tinvwl_wishlist_addtowishlist_button', array( $this, 'button' ) );
|
718 |
|
719 |
-
if ( $this->is_loop && in_array(
|
720 |
'variable',
|
721 |
'variable-subscription',
|
722 |
) ) ) {
|
@@ -737,27 +737,23 @@ JOIN {$table_languages} l ON
|
|
737 |
$this->variation_id = 0;
|
738 |
$match_attributes = array();
|
739 |
|
740 |
-
foreach (
|
741 |
$match_attributes[ 'attribute_' . sanitize_title( $attribute_name ) ] = $value;
|
742 |
}
|
743 |
|
744 |
if ( $match_attributes ) {
|
745 |
-
|
746 |
-
|
747 |
-
} else {
|
748 |
-
$data_store = WC_Data_Store::load( 'product' );
|
749 |
-
$this->variation_id = $data_store->find_matching_product_variation( $this->product, $match_attributes );
|
750 |
-
}
|
751 |
}
|
752 |
}
|
753 |
|
754 |
$data = array(
|
755 |
'class_postion' => sprintf( 'tinvwl-%s-add-to-cart', $this->is_loop ? tinv_get_option( 'add_to_wishlist_catalog', 'position' ) : $position ) . ( $this->is_loop ? ' tinvwl-loop-button-wrapper' : '' ),
|
756 |
'product' => $this->product,
|
757 |
-
'variation_id' => ( $this->is_loop && in_array( (
|
758 |
'variable',
|
759 |
'variable-subscription',
|
760 |
-
) ) ) ? $this->variation_id : (
|
761 |
'button_icon' => tinv_get_option( 'add_to_wishlist' . ( $this->is_loop ? '_catalog' : '' ), 'icon' ),
|
762 |
'add_to_wishlist' => apply_filters( 'tinvwl_added_to_wishlist_text_loop', tinv_get_option( 'add_to_wishlist' . ( $this->is_loop ? '_catalog' : '' ), 'text' ) ),
|
763 |
'browse_in_wishlist' => apply_filters( 'tinvwl_view_wishlist_text', tinv_get_option( 'general', 'text_browse' ) ),
|
@@ -819,16 +815,16 @@ JOIN {$table_languages} l ON
|
|
819 |
$content .= sprintf( '<a role="button" aria-label="%s" class="tinvwl_add_to_wishlist_button %s" data-tinv-wl-list="[]" data-tinv-wl-product="%s" data-tinv-wl-productvariation="%s" data-tinv-wl-productvariations="%s" data-tinv-wl-producttype="%s" data-tinv-wl-action="add">%s</a>',
|
820 |
$button_text,
|
821 |
$icon,
|
822 |
-
apply_filters( 'wpml_object_id', (
|
823 |
-
apply_filters( 'wpml_object_id', ( ( $this->is_loop && in_array(
|
824 |
'variable',
|
825 |
'variable-subscription',
|
826 |
-
) ) ) ? $this->variation_id : (
|
827 |
-
json_encode( ( $this->is_loop && in_array(
|
828 |
'variable',
|
829 |
'variable-subscription',
|
830 |
-
) ) ) ? $this->variation_ids : (
|
831 |
-
|
832 |
$text );
|
833 |
$content .= apply_filters( 'tinvwl_wishlist_button_after', '' );
|
834 |
|
@@ -857,8 +853,8 @@ JOIN {$table_languages} l ON
|
|
857 |
'loop' => 'no',
|
858 |
);
|
859 |
if ( $product && is_a( $product, 'WC_Product' ) ) {
|
860 |
-
$default['product_id'] =
|
861 |
-
$default['variation_id'] =
|
862 |
}
|
863 |
$atts = shortcode_atts( $default, $atts );
|
864 |
|
577 |
$product = apply_filters( 'tinvwl_addtowishlist_check_product', $product );
|
578 |
|
579 |
$this->wishlist = array();
|
580 |
+
$vproduct = in_array( $product->get_type(), array(
|
581 |
'variable',
|
582 |
'variation',
|
583 |
'variable-subscription',
|
604 |
|
605 |
$products = array();
|
606 |
foreach ( $this->all_products as $_product ) {
|
607 |
+
if ( $_product['product_id'] === $product->is_type( 'variation' ) ? $product->get_parent_id() : $product->get_id() ) {
|
608 |
$products[] = $_product;
|
609 |
}
|
610 |
}
|
657 |
|
658 |
if ( $product ) {
|
659 |
$allow = false;
|
660 |
+
if ( 'simple' === $product->get_type() ) {
|
661 |
$allow = ( ( ! $product->is_purchasable() && '' == $product->get_price() ) || ( $product->is_purchasable() && ! $product->is_in_stock() ) );
|
662 |
}
|
663 |
|
664 |
+
if ( in_array( $product->get_type(), array(
|
665 |
'variable',
|
666 |
'variable-subscription'
|
667 |
) ) ) {
|
704 |
|
705 |
$product_data = wc_get_product( $variation_id ? $variation_id : $product_id );
|
706 |
|
707 |
+
if ( $product_data && 'trash' !== get_post( $product_data->get_id() )->post_status ) {
|
708 |
$this->product = apply_filters( 'tinvwl_addtowishlist_out_prepare_product', $product_data );
|
709 |
} else {
|
710 |
return '';
|
716 |
|
717 |
add_action( 'tinvwl_wishlist_addtowishlist_button', array( $this, 'button' ) );
|
718 |
|
719 |
+
if ( $this->is_loop && in_array( $this->product->get_type(), array(
|
720 |
'variable',
|
721 |
'variable-subscription',
|
722 |
) ) ) {
|
737 |
$this->variation_id = 0;
|
738 |
$match_attributes = array();
|
739 |
|
740 |
+
foreach ( $this->product->get_default_attributes() as $attribute_name => $value ) {
|
741 |
$match_attributes[ 'attribute_' . sanitize_title( $attribute_name ) ] = $value;
|
742 |
}
|
743 |
|
744 |
if ( $match_attributes ) {
|
745 |
+
$data_store = WC_Data_Store::load( 'product' );
|
746 |
+
$this->variation_id = $data_store->find_matching_product_variation( $this->product, $match_attributes );
|
|
|
|
|
|
|
|
|
747 |
}
|
748 |
}
|
749 |
|
750 |
$data = array(
|
751 |
'class_postion' => sprintf( 'tinvwl-%s-add-to-cart', $this->is_loop ? tinv_get_option( 'add_to_wishlist_catalog', 'position' ) : $position ) . ( $this->is_loop ? ' tinvwl-loop-button-wrapper' : '' ),
|
752 |
'product' => $this->product,
|
753 |
+
'variation_id' => ( $this->is_loop && in_array( ( $this->product->get_type() ), array(
|
754 |
'variable',
|
755 |
'variable-subscription',
|
756 |
+
) ) ) ? $this->variation_id : ( $this->product->is_type( 'variation' ) ? $this->product->get_id() : 0 ),
|
757 |
'button_icon' => tinv_get_option( 'add_to_wishlist' . ( $this->is_loop ? '_catalog' : '' ), 'icon' ),
|
758 |
'add_to_wishlist' => apply_filters( 'tinvwl_added_to_wishlist_text_loop', tinv_get_option( 'add_to_wishlist' . ( $this->is_loop ? '_catalog' : '' ), 'text' ) ),
|
759 |
'browse_in_wishlist' => apply_filters( 'tinvwl_view_wishlist_text', tinv_get_option( 'general', 'text_browse' ) ),
|
815 |
$content .= sprintf( '<a role="button" aria-label="%s" class="tinvwl_add_to_wishlist_button %s" data-tinv-wl-list="[]" data-tinv-wl-product="%s" data-tinv-wl-productvariation="%s" data-tinv-wl-productvariations="%s" data-tinv-wl-producttype="%s" data-tinv-wl-action="add">%s</a>',
|
816 |
$button_text,
|
817 |
$icon,
|
818 |
+
apply_filters( 'wpml_object_id', ( $this->product->is_type( 'variation' ) ? $this->product->get_parent_id() : $this->product->get_id() ), 'product', true ),
|
819 |
+
apply_filters( 'wpml_object_id', ( ( $this->is_loop && in_array( $this->product->get_type(), array(
|
820 |
'variable',
|
821 |
'variable-subscription',
|
822 |
+
) ) ) ? $this->variation_id : ( $this->product->is_type( 'variation' ) ? $this->product->get_id() : 0 ) ), 'product', true ),
|
823 |
+
json_encode( ( $this->is_loop && in_array( $this->product->get_type(), array(
|
824 |
'variable',
|
825 |
'variable-subscription',
|
826 |
+
) ) ) ? $this->variation_ids : ( $this->product->is_type( 'variation' ) ? array( $this->product->get_id() ) : array( 0 ) ) ),
|
827 |
+
$this->product->get_type(),
|
828 |
$text );
|
829 |
$content .= apply_filters( 'tinvwl_wishlist_button_after', '' );
|
830 |
|
853 |
'loop' => 'no',
|
854 |
);
|
855 |
if ( $product && is_a( $product, 'WC_Product' ) ) {
|
856 |
+
$default['product_id'] = $product->is_type( 'variation' ) ? $product->get_parent_id() : $product->get_id();
|
857 |
+
$default['variation_id'] = $product->is_type( 'variation' ) ? $product->get_id() : 0;
|
858 |
}
|
859 |
$atts = shortcode_atts( $default, $atts );
|
860 |
|
public/cart.class.php
CHANGED
@@ -82,11 +82,9 @@ class TInvWL_Public_Cart {
|
|
82 |
} else {
|
83 |
add_action( 'woocommerce_cart_emptied', array( __CLASS__, 'remove_item_data_cart_session' ) );
|
84 |
}
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
add_action( 'woocommerce_checkout_create_order', array( $this, 'add_order_item_meta_v3' ) );
|
89 |
-
}
|
90 |
add_action( 'woocommerce_checkout_update_order_meta', array( $this, 'purchased_items' ) );
|
91 |
add_action( 'woocommerce_order_status_changed', array( $this, 'order_status_analytics' ), 9, 3 );
|
92 |
}
|
@@ -125,7 +123,7 @@ class TInvWL_Public_Cart {
|
|
125 |
$product_id = apply_filters( 'woocommerce_add_to_cart_product_id', absint( $product['product_id'] ) );
|
126 |
$quantity = empty( $wl_quantity ) ? 1 : wc_stock_amount( $wl_quantity );
|
127 |
$variation_id = $product['variation_id'];
|
128 |
-
$variations =
|
129 |
|
130 |
if ( ! empty( $variation_id ) && is_array( $variations ) ) {
|
131 |
foreach ( $variations as $name => $value ) {
|
@@ -140,7 +138,7 @@ class TInvWL_Public_Cart {
|
|
140 |
}
|
141 |
}
|
142 |
|
143 |
-
$passed_validation = $product['data']->is_purchasable() && ( $product['data']->is_in_stock() || $product['data']->backorders_allowed() ) && 'external' !==
|
144 |
$passed_validation = apply_filters( 'woocommerce_add_to_cart_validation', $passed_validation, $product_id, $quantity, $variation_id, $variations );
|
145 |
if ( $passed_validation ) {
|
146 |
$cart_item_key = WC()->cart->add_to_cart( $product_id, $quantity, $variation_id, $variations );
|
@@ -316,28 +314,12 @@ class TInvWL_Public_Cart {
|
|
316 |
}
|
317 |
}
|
318 |
|
319 |
-
|
320 |
-
/**
|
321 |
-
* Add meta data for product when created order
|
322 |
-
*
|
323 |
-
* @param string $item_id Order item id.
|
324 |
-
* @param array $values order item data.
|
325 |
-
* @param string $cart_item_key Cart product key.
|
326 |
-
*/
|
327 |
-
public function add_order_item_meta( $item_id, $values, $cart_item_key ) {
|
328 |
-
$data = self::get_item_data( $cart_item_key );
|
329 |
-
$data = apply_filters( 'tinvwl_addproduct_toorder', $data, $cart_item_key, $values );
|
330 |
-
if ( ! empty( $data ) ) {
|
331 |
-
wc_add_order_item_meta( $item_id, '_tinvwl_wishlist_cart', $data );
|
332 |
-
}
|
333 |
-
}
|
334 |
-
|
335 |
/**
|
336 |
* Add meta data for product when created order
|
337 |
*
|
338 |
* @param \WC_Order $order Order object.
|
339 |
*/
|
340 |
-
public function
|
341 |
foreach ( $order->get_items() as $item ) {
|
342 |
$data = self::get_item_data( $item->legacy_cart_item_key );
|
343 |
$data = apply_filters( 'tinvwl_addproduct_toorder', $data, $item->legacy_cart_item_key, $item->legacy_values );
|
@@ -509,18 +491,9 @@ class TInvWL_Public_Cart {
|
|
509 |
* @return mixed
|
510 |
*/
|
511 |
public static function get_order_item_meta( $item, $key ) {
|
512 |
-
if ( version_compare( WC_VERSION, '3.0.0', '<' ) ) {
|
513 |
-
//WooCommerce before 3.0
|
514 |
|
515 |
-
|
516 |
-
|
517 |
-
}
|
518 |
-
} else {
|
519 |
-
// WooCommerce 3.0
|
520 |
-
|
521 |
-
// Check if wishlist meta exists for current item order.
|
522 |
-
$value = $item->get_meta( $key );
|
523 |
-
}
|
524 |
|
525 |
return $value;
|
526 |
}
|
82 |
} else {
|
83 |
add_action( 'woocommerce_cart_emptied', array( __CLASS__, 'remove_item_data_cart_session' ) );
|
84 |
}
|
85 |
+
|
86 |
+
add_action( 'woocommerce_checkout_create_order', array( $this, 'add_order_item_meta' ) );
|
87 |
+
|
|
|
|
|
88 |
add_action( 'woocommerce_checkout_update_order_meta', array( $this, 'purchased_items' ) );
|
89 |
add_action( 'woocommerce_order_status_changed', array( $this, 'order_status_analytics' ), 9, 3 );
|
90 |
}
|
123 |
$product_id = apply_filters( 'woocommerce_add_to_cart_product_id', absint( $product['product_id'] ) );
|
124 |
$quantity = empty( $wl_quantity ) ? 1 : wc_stock_amount( $wl_quantity );
|
125 |
$variation_id = $product['variation_id'];
|
126 |
+
$variations = $product['data']->is_type( 'variation' ) ? wc_get_product_variation_attributes( $product['data']->get_id() ) : array();
|
127 |
|
128 |
if ( ! empty( $variation_id ) && is_array( $variations ) ) {
|
129 |
foreach ( $variations as $name => $value ) {
|
138 |
}
|
139 |
}
|
140 |
|
141 |
+
$passed_validation = $product['data']->is_purchasable() && ( $product['data']->is_in_stock() || $product['data']->backorders_allowed() ) && 'external' !== $product['data']->get_type();
|
142 |
$passed_validation = apply_filters( 'woocommerce_add_to_cart_validation', $passed_validation, $product_id, $quantity, $variation_id, $variations );
|
143 |
if ( $passed_validation ) {
|
144 |
$cart_item_key = WC()->cart->add_to_cart( $product_id, $quantity, $variation_id, $variations );
|
314 |
}
|
315 |
}
|
316 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
317 |
/**
|
318 |
* Add meta data for product when created order
|
319 |
*
|
320 |
* @param \WC_Order $order Order object.
|
321 |
*/
|
322 |
+
public function add_order_item_meta( $order ) {
|
323 |
foreach ( $order->get_items() as $item ) {
|
324 |
$data = self::get_item_data( $item->legacy_cart_item_key );
|
325 |
$data = apply_filters( 'tinvwl_addproduct_toorder', $data, $item->legacy_cart_item_key, $item->legacy_values );
|
491 |
* @return mixed
|
492 |
*/
|
493 |
public static function get_order_item_meta( $item, $key ) {
|
|
|
|
|
494 |
|
495 |
+
// Check if wishlist meta exists for current item order.
|
496 |
+
$value = $item->get_meta( $key );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
497 |
|
498 |
return $value;
|
499 |
}
|
public/tinvwl.class.php
CHANGED
@@ -496,7 +496,7 @@ class TInvWL_Public_TInvWL {
|
|
496 |
wp_register_script( $this->_name . '-clipboard', TINVWL_URL . 'assets/js/clipboard.min.js', array( 'jquery' ), $this->_version, true );
|
497 |
wp_register_script( $this->_name, TINVWL_URL . 'assets/js/public' . $suffix . '.js', array(
|
498 |
'jquery',
|
499 |
-
|
500 |
apply_filters( 'tinvwl_wc_cart_fragments_enabled', true ) ? 'wc-cart-fragments' : 'jquery',
|
501 |
), $this->_version, true );
|
502 |
|
496 |
wp_register_script( $this->_name . '-clipboard', TINVWL_URL . 'assets/js/clipboard.min.js', array( 'jquery' ), $this->_version, true );
|
497 |
wp_register_script( $this->_name, TINVWL_URL . 'assets/js/public' . $suffix . '.js', array(
|
498 |
'jquery',
|
499 |
+
'js-cookie',
|
500 |
apply_filters( 'tinvwl_wc_cart_fragments_enabled', true ) ? 'wc-cart-fragments' : 'jquery',
|
501 |
), $this->_version, true );
|
502 |
|
public/wishlist/view.class.php
CHANGED
@@ -175,7 +175,7 @@ class TInvWL_Public_Wishlist_View {
|
|
175 |
// override global product data.
|
176 |
$product = $_product;
|
177 |
|
178 |
-
if ( 'external' === (
|
179 |
|
180 |
$text = $product->single_add_to_cart_text();
|
181 |
|
@@ -202,7 +202,7 @@ class TInvWL_Public_Wishlist_View {
|
|
202 |
// override global product data.
|
203 |
$product = $_product;
|
204 |
if ( apply_filters( 'tinvwl_product_add_to_cart_need_redirect', false, $product, $product->get_permalink(), $wl_product )
|
205 |
-
&& in_array(
|
206 |
'variable',
|
207 |
'variable-subscription',
|
208 |
) ) ) {
|
@@ -334,7 +334,7 @@ class TInvWL_Public_Wishlist_View {
|
|
334 |
return false;
|
335 |
}
|
336 |
|
337 |
-
return ( $product->is_purchasable() || 'external' ===
|
338 |
}
|
339 |
|
340 |
/**
|
175 |
// override global product data.
|
176 |
$product = $_product;
|
177 |
|
178 |
+
if ( 'external' === ( $product->get_type() ) ) {
|
179 |
|
180 |
$text = $product->single_add_to_cart_text();
|
181 |
|
202 |
// override global product data.
|
203 |
$product = $_product;
|
204 |
if ( apply_filters( 'tinvwl_product_add_to_cart_need_redirect', false, $product, $product->get_permalink(), $wl_product )
|
205 |
+
&& in_array( $product->get_type(), array(
|
206 |
'variable',
|
207 |
'variable-subscription',
|
208 |
) ) ) {
|
334 |
return false;
|
335 |
}
|
336 |
|
337 |
+
return ( $product->is_purchasable() || 'external' === $product->get_type() ) && ( $product->is_in_stock() || $product->backorders_allowed() );
|
338 |
}
|
339 |
|
340 |
/**
|
readme.txt
CHANGED
@@ -2,8 +2,8 @@
|
|
2 |
Contributors: templateinvaders
|
3 |
Tags: woocommerce, wishlist, woocommerce wishlist, e-commerce, ecommerce
|
4 |
Requires at least: 4.7
|
5 |
-
Tested up to: 5.
|
6 |
-
Stable tag: 1.
|
7 |
License: GPLv3
|
8 |
License URI: https://www.gnu.org/licenses/gpl-3.0.html
|
9 |
Plugin URI: https://wordpress.org/plugins/ti-woocommerce-wishlist/
|
@@ -163,6 +163,15 @@ Yes, you can! Join in on our [GitHub repository](https://github.com/TemplateInva
|
|
163 |
|
164 |
|
165 |
== Changelog ==
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
166 |
= 1.21.14 =
|
167 |
*Release Date - 17 November 2020*
|
168 |
|
2 |
Contributors: templateinvaders
|
3 |
Tags: woocommerce, wishlist, woocommerce wishlist, e-commerce, ecommerce
|
4 |
Requires at least: 4.7
|
5 |
+
Tested up to: 5.6
|
6 |
+
Stable tag: 1.22.0
|
7 |
License: GPLv3
|
8 |
License URI: https://www.gnu.org/licenses/gpl-3.0.html
|
9 |
Plugin URI: https://wordpress.org/plugins/ti-woocommerce-wishlist/
|
163 |
|
164 |
|
165 |
== Changelog ==
|
166 |
+
= 1.22.0 =
|
167 |
+
*Release Date - 25 November 2020*
|
168 |
+
|
169 |
+
* WordPress 5.6 support
|
170 |
+
* Discontinued support for WooCommerce 2.x, minimum requirements are WooCommerce 3.0.0
|
171 |
+
* PHP 8 support
|
172 |
+
* Improved add to wishlist button behavior when it inserted outside add to cart form
|
173 |
+
* Improved WP SHORTINIT loading for the custom AJAX endpoint
|
174 |
+
|
175 |
= 1.21.14 =
|
176 |
*Release Date - 17 November 2020*
|
177 |
|
templates/ti-addtowishlist.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
*
|
5 |
* This template can be overridden by copying it to yourtheme/woocommerce/ti-addtowishlist.php.
|
6 |
*
|
7 |
-
* @version 1.
|
8 |
* @package TInvWishlist\Template
|
9 |
*/
|
10 |
|
@@ -13,7 +13,8 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
13 |
}
|
14 |
wp_enqueue_script( 'tinvwl' );
|
15 |
?>
|
16 |
-
<div class="tinv-wraper woocommerce tinv-wishlist <?php echo esc_attr( $class_postion ) ?>"
|
|
|
17 |
<?php do_action( 'tinvwl_wishlist_addtowishlist_button', $product, $loop ); ?>
|
18 |
<?php do_action( 'tinvwl_wishlist_addtowishlist_dialogbox' ); ?>
|
19 |
<div class="tinvwl-tooltip"><?php echo wp_kses_post( tinv_get_option( 'add_to_wishlist' . ( $loop ? '_catalog' : '' ), 'text' ) ); ?></div>
|
4 |
*
|
5 |
* This template can be overridden by copying it to yourtheme/woocommerce/ti-addtowishlist.php.
|
6 |
*
|
7 |
+
* @version 1.22.0
|
8 |
* @package TInvWishlist\Template
|
9 |
*/
|
10 |
|
13 |
}
|
14 |
wp_enqueue_script( 'tinvwl' );
|
15 |
?>
|
16 |
+
<div class="tinv-wraper woocommerce tinv-wishlist <?php echo esc_attr( $class_postion ) ?>"
|
17 |
+
data-product_id="<?php echo $product->get_id(); ?>">
|
18 |
<?php do_action( 'tinvwl_wishlist_addtowishlist_button', $product, $loop ); ?>
|
19 |
<?php do_action( 'tinvwl_wishlist_addtowishlist_dialogbox' ); ?>
|
20 |
<div class="tinvwl-tooltip"><?php echo wp_kses_post( tinv_get_option( 'add_to_wishlist' . ( $loop ? '_catalog' : '' ), 'text' ) ); ?></div>
|
templates/ti-wishlist-item-data.php
CHANGED
@@ -1,25 +1,27 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* The Template for displaying variation product data.
|
4 |
-
*
|
5 |
-
* This template can be overridden by copying it to yourtheme/woocommerce/ti-wishlist-item-data.php.
|
6 |
-
*
|
7 |
-
* @version 1.10.1
|
8 |
-
* @package TInvWishlist\Template
|
9 |
-
*/
|
10 |
-
|
11 |
-
if ( ! defined( 'ABSPATH' ) ) {
|
12 |
-
exit; // Exit if accessed directly.
|
13 |
-
}
|
14 |
-
|
15 |
-
?>
|
16 |
-
<dl class="variation">
|
17 |
-
<?php foreach ( $item_data as $data ) : ?>
|
18 |
-
<?php if ( $data['key'] ) { ?>
|
19 |
-
<dt class="variation-<?php echo sanitize_html_class( $data['key'] ); ?>"><?php echo wp_kses_post( $data['key'] );
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
<?php
|
24 |
-
|
25 |
-
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* The Template for displaying variation product data.
|
4 |
+
*
|
5 |
+
* This template can be overridden by copying it to yourtheme/woocommerce/ti-wishlist-item-data.php.
|
6 |
+
*
|
7 |
+
* @version 1.10.1
|
8 |
+
* @package TInvWishlist\Template
|
9 |
+
*/
|
10 |
+
|
11 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
12 |
+
exit; // Exit if accessed directly.
|
13 |
+
}
|
14 |
+
|
15 |
+
?>
|
16 |
+
<dl class="variation">
|
17 |
+
<?php foreach ( $item_data as $data ) : ?>
|
18 |
+
<?php if ( $data['key'] ) { ?>
|
19 |
+
<dt class="variation-<?php echo sanitize_html_class( $data['key'] ); ?>"><?php echo wp_kses_post( $data['key'] ); ?>
|
20 |
+
:
|
21 |
+
</dt>
|
22 |
+
<?php } ?>
|
23 |
+
<?php if ( $data['display'] ) { ?>
|
24 |
+
<dd class="variation-<?php echo sanitize_html_class( $data['key'] ); ?>"><?php echo wp_kses_post( $data['display'] ); ?></dd>
|
25 |
+
<?php } ?>
|
26 |
+
<?php endforeach; ?>
|
27 |
+
</dl>
|
templates/ti-wishlist-null.php
CHANGED
@@ -1,24 +1,25 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* The Template for displaying not found wishlist.
|
4 |
-
*
|
5 |
-
* This template can be overridden by copying it to yourtheme/woocommerce/ti-wishlist-null.php.
|
6 |
-
*
|
7 |
-
* @version 1.21.11
|
8 |
-
* @package TInvWishlist\Template
|
9 |
-
*/
|
10 |
-
|
11 |
-
if ( ! defined( 'ABSPATH' ) ) {
|
12 |
-
exit; // Exit if accessed directly.
|
13 |
-
}
|
14 |
-
|
15 |
-
?>
|
16 |
-
<p class="cart-empty">
|
17 |
-
<?php esc_html_e( 'Wishlist is not found!', 'ti-woocommerce-wishlist' ); ?>
|
18 |
-
</p>
|
19 |
-
|
20 |
-
<?php do_action( 'tinvwl_wishlist_is_null' ); ?>
|
21 |
-
|
22 |
-
<p class="return-to-shop">
|
23 |
-
<a class="button wc-backward"
|
24 |
-
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* The Template for displaying not found wishlist.
|
4 |
+
*
|
5 |
+
* This template can be overridden by copying it to yourtheme/woocommerce/ti-wishlist-null.php.
|
6 |
+
*
|
7 |
+
* @version 1.21.11
|
8 |
+
* @package TInvWishlist\Template
|
9 |
+
*/
|
10 |
+
|
11 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
12 |
+
exit; // Exit if accessed directly.
|
13 |
+
}
|
14 |
+
|
15 |
+
?>
|
16 |
+
<p class="cart-empty">
|
17 |
+
<?php esc_html_e( 'Wishlist is not found!', 'ti-woocommerce-wishlist' ); ?>
|
18 |
+
</p>
|
19 |
+
|
20 |
+
<?php do_action( 'tinvwl_wishlist_is_null' ); ?>
|
21 |
+
|
22 |
+
<p class="return-to-shop">
|
23 |
+
<a class="button wc-backward"
|
24 |
+
href="<?php echo esc_url( apply_filters( 'woocommerce_return_to_shop_redirect', wc_get_page_permalink( 'shop' ) ) ); ?>"><?php echo esc_html( apply_filters( 'woocommerce_return_to_shop_text', __( 'Return To Shop', 'ti-woocommerce-wishlist' ) ) ); ?></a>
|
25 |
+
</p>
|
ti-woocommerce-wishlist.php
CHANGED
@@ -4,10 +4,10 @@
|
|
4 |
* Plugin Name: TI WooCommerce Wishlist
|
5 |
* Plugin URI: https://wordpress.org/plugins/ti-woocommerce-wishlist/
|
6 |
* Description: Wishlist functionality for your WooCommerce store.
|
7 |
-
* Version: 1.
|
8 |
* Requires at least: 4.7
|
9 |
-
* Tested up to: 5.
|
10 |
-
* WC requires at least:
|
11 |
* WC tested up to: 4.7
|
12 |
* Author: TemplateInvaders
|
13 |
* Author URI: https://templateinvaders.com/
|
@@ -41,7 +41,7 @@ if ( ! defined( 'TINVWL_DOMAIN' ) ) {
|
|
41 |
}
|
42 |
|
43 |
if ( ! defined( 'TINVWL_FVERSION' ) ) {
|
44 |
-
define( 'TINVWL_FVERSION', '1.
|
45 |
}
|
46 |
|
47 |
if ( ! defined( 'TINVWL_LOAD_FREE' ) ) {
|
4 |
* Plugin Name: TI WooCommerce Wishlist
|
5 |
* Plugin URI: https://wordpress.org/plugins/ti-woocommerce-wishlist/
|
6 |
* Description: Wishlist functionality for your WooCommerce store.
|
7 |
+
* Version: 1.22.0
|
8 |
* Requires at least: 4.7
|
9 |
+
* Tested up to: 5.6
|
10 |
+
* WC requires at least: 3.0
|
11 |
* WC tested up to: 4.7
|
12 |
* Author: TemplateInvaders
|
13 |
* Author URI: https://templateinvaders.com/
|
41 |
}
|
42 |
|
43 |
if ( ! defined( 'TINVWL_FVERSION' ) ) {
|
44 |
+
define( 'TINVWL_FVERSION', '1.22.0' );
|
45 |
}
|
46 |
|
47 |
if ( ! defined( 'TINVWL_LOAD_FREE' ) ) {
|
tinv-wishlists-function.php
CHANGED
@@ -1,919 +1,918 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* Basic function for plugin
|
4 |
-
*
|
5 |
-
* @since 1.0.0
|
6 |
-
* @package TInvWishlist
|
7 |
-
*/
|
8 |
-
|
9 |
-
// If this file is called directly, abort.
|
10 |
-
if ( ! defined( 'ABSPATH' ) ) {
|
11 |
-
die;
|
12 |
-
}
|
13 |
-
|
14 |
-
|
15 |
-
if ( ! function_exists( 'tinv_get_option' ) ) {
|
16 |
-
|
17 |
-
/**
|
18 |
-
* Extract options from database or default array settings.
|
19 |
-
*
|
20 |
-
* @param string $category Name category settings.
|
21 |
-
* @param string $option Name paremetr. If is empty string, then function return array category settings.
|
22 |
-
*
|
23 |
-
* @return mixed
|
24 |
-
*/
|
25 |
-
function tinv_get_option( $category, $option = '' ) {
|
26 |
-
$prefix = TINVWL_PREFIX . '-';
|
27 |
-
$values = get_option( $prefix . $category, array() );
|
28 |
-
if ( empty( $values ) ) {
|
29 |
-
$values = tinv_get_option_defaults( $category );
|
30 |
-
}
|
31 |
-
if ( empty( $option ) ) {
|
32 |
-
return $values;
|
33 |
-
} else {
|
34 |
-
if ( array_key_exists( $option, (array) $values ) ) {
|
35 |
-
return $values[ $option ];
|
36 |
-
} else {
|
37 |
-
$values = tinv_get_option_defaults( $category );
|
38 |
-
if ( array_key_exists( $option, (array) $values ) ) {
|
39 |
-
return $values[ $option ];
|
40 |
-
}
|
41 |
-
}
|
42 |
-
}
|
43 |
-
|
44 |
-
return null;
|
45 |
-
}
|
46 |
-
}
|
47 |
-
|
48 |
-
if ( ! function_exists( 'tinv_get_option_admin' ) ) {
|
49 |
-
|
50 |
-
/**
|
51 |
-
* Extract options from database or default array settings.
|
52 |
-
*
|
53 |
-
* @param string $category Name category settings.
|
54 |
-
* @param string $option Name paremetr. If is empty string, then function return array category settings.
|
55 |
-
*
|
56 |
-
* @return mixed
|
57 |
-
*/
|
58 |
-
function tinv_get_option_admin( $category, $option = '' ) {
|
59 |
-
$prefix = TINVWL_PREFIX . '-';
|
60 |
-
$values = get_option( $prefix . $category, array() );
|
61 |
-
if ( empty( $values ) ) {
|
62 |
-
$values = array();
|
63 |
-
}
|
64 |
-
if ( empty( $option ) ) {
|
65 |
-
return $values;
|
66 |
-
} elseif ( array_key_exists( $option, $values ) ) {
|
67 |
-
return $values[ $option ];
|
68 |
-
}
|
69 |
-
|
70 |
-
return null;
|
71 |
-
}
|
72 |
-
}
|
73 |
-
|
74 |
-
if ( ! function_exists( 'tinv_style' ) ) {
|
75 |
-
|
76 |
-
/**
|
77 |
-
* Get style for custom style
|
78 |
-
*
|
79 |
-
* @param string $selector Selector style.
|
80 |
-
* @param string $element Attribute name.
|
81 |
-
*
|
82 |
-
* @return string
|
83 |
-
*/
|
84 |
-
function tinv_style( $selector = '', $element = '' ) {
|
85 |
-
$key = md5( $selector . '||' . $element );
|
86 |
-
$values = get_option( TINVWL_PREFIX . '-style_options', array() );
|
87 |
-
if ( empty( $values ) ) {
|
88 |
-
return '';
|
89 |
-
}
|
90 |
-
if ( array_key_exists( $key, $values ) ) {
|
91 |
-
return $values[ $key ];
|
92 |
-
}
|
93 |
-
|
94 |
-
return '';
|
95 |
-
}
|
96 |
-
}
|
97 |
-
|
98 |
-
if ( ! function_exists( 'tinv_update_option' ) ) {
|
99 |
-
|
100 |
-
/**
|
101 |
-
* Update options in database.
|
102 |
-
*
|
103 |
-
* @param string $category Name category settings.
|
104 |
-
* @param string $option Name paremetr. If is empty string, then function update array category settings.
|
105 |
-
* @param mixed $value Value option.
|
106 |
-
*
|
107 |
-
* @return boolean
|
108 |
-
*/
|
109 |
-
function tinv_update_option( $category, $option = '', $value = false ) {
|
110 |
-
$prefix = TINVWL_PREFIX . '-';
|
111 |
-
if ( empty( $option ) ) {
|
112 |
-
if ( is_array( $value ) ) {
|
113 |
-
update_option( $prefix . $category, $value );
|
114 |
-
|
115 |
-
return true;
|
116 |
-
}
|
117 |
-
} else {
|
118 |
-
$values = get_option( $prefix . $category, array() );
|
119 |
-
|
120 |
-
$values[ $option ] = $value;
|
121 |
-
update_option( $prefix . $category, $values );
|
122 |
-
|
123 |
-
return true;
|
124 |
-
}
|
125 |
-
|
126 |
-
return false;
|
127 |
-
}
|
128 |
-
}
|
129 |
-
|
130 |
-
if ( ! function_exists( 'tinv_wishlist_template' ) ) {
|
131 |
-
|
132 |
-
/**
|
133 |
-
* The function overwrites the method output templates woocommerce
|
134 |
-
*
|
135 |
-
* @param string $template_name Name file template.
|
136 |
-
* @param array $args Array variable in template.
|
137 |
-
* @param string $template_path Customization path.
|
138 |
-
*/
|
139 |
-
function tinv_wishlist_template( $template_name, $args = array(), $template_path = '' ) {
|
140 |
-
if ( function_exists( 'wc_get_template' ) ) {
|
141 |
-
wc_get_template( $template_name, $args, $template_path );
|
142 |
-
} else {
|
143 |
-
woocommerce_get_template( $template_name, $args, $template_path );
|
144 |
-
}
|
145 |
-
}
|
146 |
-
}
|
147 |
-
|
148 |
-
if ( ! function_exists( 'tinv_wishlist_locate_template' ) ) {
|
149 |
-
|
150 |
-
/**
|
151 |
-
* Overwrites path for email and other template
|
152 |
-
*
|
153 |
-
* @param string $template_name Requered Template file.
|
154 |
-
* @param string $template_path Template path.
|
155 |
-
* @param string $default_path Template default path.
|
156 |
-
*
|
157 |
-
* @return mixed
|
158 |
-
*/
|
159 |
-
function tinv_wishlist_locate_template( $template_name, $template_path = '', $default_path = '' ) {
|
160 |
-
$prefix = 'ti-';
|
161 |
-
|
162 |
-
if ( substr( basename( $template_name ), 0, strlen( $prefix ) ) !== $prefix ) {
|
163 |
-
return;
|
164 |
-
}
|
165 |
-
|
166 |
-
if ( ! $template_path ) {
|
167 |
-
$template_path = WC()->template_path();
|
168 |
-
}
|
169 |
-
|
170 |
-
if ( ! $default_path ) {
|
171 |
-
$default_path = TINVWL_PATH . DIRECTORY_SEPARATOR . 'templates' . DIRECTORY_SEPARATOR;
|
172 |
-
}
|
173 |
-
|
174 |
-
// Look within passed path within the theme - this is priority.
|
175 |
-
$template = locate_template( array(
|
176 |
-
trailingslashit( $template_path ) . $template_name,
|
177 |
-
$template_name,
|
178 |
-
) );
|
179 |
-
|
180 |
-
// Get default template.
|
181 |
-
if ( ! $template && file_exists( $default_path . $template_name ) ) {
|
182 |
-
$template = $default_path . $template_name;
|
183 |
-
}
|
184 |
-
|
185 |
-
// Return what we found.
|
186 |
-
return apply_filters( 'tinvwl_locate_template', $template, $template_name, $template_path );
|
187 |
-
}
|
188 |
-
} // End if().
|
189 |
-
|
190 |
-
if ( ! function_exists( 'tinv_wishlist_template_html' ) ) {
|
191 |
-
|
192 |
-
/**
|
193 |
-
* The function overwrites the method return templates woocommerce
|
194 |
-
*
|
195 |
-
* @param string $template_name Name file template.
|
196 |
-
* @param array $args Array variable in template.
|
197 |
-
* @param string $template_path Customization path.
|
198 |
-
*
|
199 |
-
* @return string
|
200 |
-
*/
|
201 |
-
function tinv_wishlist_template_html( $template_name, $args = array(), $template_path = '' ) {
|
202 |
-
ob_start();
|
203 |
-
tinv_wishlist_template( $template_name, $args, $template_path );
|
204 |
-
|
205 |
-
return ob_get_clean();
|
206 |
-
}
|
207 |
-
}
|
208 |
-
|
209 |
-
if ( ! function_exists( 'tinv_wishlist_get_item_data' ) ) {
|
210 |
-
|
211 |
-
/**
|
212 |
-
* Extract meta attributes for product
|
213 |
-
*
|
214 |
-
* @param object $product Object selected product.
|
215 |
-
* @param array $wl_product Wishlist selected product.
|
216 |
-
* @param boolean $flat Return text or template.
|
217 |
-
*
|
218 |
-
* @return string
|
219 |
-
*/
|
220 |
-
function tinv_wishlist_get_item_data( $product, $wl_product = array(), $flat = false ) {
|
221 |
-
$item_data = array();
|
222 |
-
$variation_id =
|
223 |
-
$variation_data =
|
224 |
-
if ( ! empty( $variation_id ) && is_array( $variation_data ) && is_array( $wl_product ) ) {
|
225 |
-
foreach ( $variation_data as $name => $value ) {
|
226 |
-
if ( '' === $value ) {
|
227 |
-
// Could be any value that saved to a custom meta.
|
228 |
-
if ( array_key_exists( 'meta', $wl_product ) && array_key_exists( $name, $wl_product['meta'] ) ) {
|
229 |
-
$value = $wl_product['meta'][ $name ];
|
230 |
-
} else {
|
231 |
-
continue;
|
232 |
-
}
|
233 |
-
}
|
234 |
-
|
235 |
-
$taxonomy = wc_attribute_taxonomy_name( str_replace( 'attribute_pa_', '', urldecode( $name ) ) );
|
236 |
-
|
237 |
-
// If this is a term slug, get the term's nice name.
|
238 |
-
if ( taxonomy_exists( $taxonomy ) ) {
|
239 |
-
$term = get_term_by( 'slug', $value, $taxonomy ); // @codingStandardsIgnoreLine WordPress.VIP.RestrictedFunctions.get_term_by
|
240 |
-
if ( ! is_wp_error( $term ) && $term && $term->name ) {
|
241 |
-
$value = $term->name;
|
242 |
-
}
|
243 |
-
$label = wc_attribute_label( $taxonomy );
|
244 |
-
|
245 |
-
// If this is a custom option slug, get the options name.
|
246 |
-
} else {
|
247 |
-
$value = apply_filters( 'woocommerce_variation_option_name', $value );
|
248 |
-
$product_attributes = $product->get_attributes();
|
249 |
-
$_name = str_replace( 'attribute_', '', $name );
|
250 |
-
if ( isset( $product_attributes[ $_name ] ) ) {
|
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 |
-
$item_data[ $key ]['
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
|
287 |
-
|
288 |
-
|
289 |
-
|
290 |
-
|
291 |
-
|
292 |
-
|
293 |
-
|
294 |
-
|
295 |
-
|
296 |
-
|
297 |
-
|
298 |
-
|
299 |
-
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
|
305 |
-
*
|
306 |
-
*
|
307 |
-
* @param
|
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 |
-
$wishlist
|
341 |
-
|
342 |
-
$wishlist
|
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 |
-
* @param
|
375 |
-
*
|
376 |
-
*
|
377 |
-
|
378 |
-
|
379 |
-
|
380 |
-
$paged =
|
381 |
-
$
|
382 |
-
$link
|
383 |
-
|
384 |
-
|
385 |
-
|
386 |
-
|
387 |
-
|
388 |
-
|
389 |
-
|
390 |
-
|
391 |
-
|
392 |
-
|
393 |
-
|
394 |
-
|
395 |
-
$
|
396 |
-
|
397 |
-
|
398 |
-
|
399 |
-
|
400 |
-
|
401 |
-
|
402 |
-
|
403 |
-
|
404 |
-
|
405 |
-
|
406 |
-
|
407 |
-
|
408 |
-
|
409 |
-
|
410 |
-
|
411 |
-
|
412 |
-
|
413 |
-
|
414 |
-
*
|
415 |
-
*
|
416 |
-
* @param
|
417 |
-
* @param
|
418 |
-
*
|
419 |
-
*
|
420 |
-
|
421 |
-
|
422 |
-
|
423 |
-
$
|
424 |
-
|
425 |
-
$
|
426 |
-
|
427 |
-
|
428 |
-
|
429 |
-
|
430 |
-
|
431 |
-
|
432 |
-
|
433 |
-
|
434 |
-
|
435 |
-
|
436 |
-
*
|
437 |
-
*
|
438 |
-
*
|
439 |
-
*
|
440 |
-
* @
|
441 |
-
*
|
442 |
-
*
|
443 |
-
* @global string $
|
444 |
-
|
445 |
-
|
446 |
-
|
447 |
-
|
448 |
-
|
449 |
-
|
450 |
-
|
451 |
-
|
452 |
-
|
453 |
-
|
454 |
-
|
455 |
-
|
456 |
-
|
457 |
-
|
458 |
-
|
459 |
-
|
460 |
-
$redirect
|
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 |
-
|
491 |
-
|
492 |
-
|
493 |
-
|
494 |
-
|
495 |
-
|
496 |
-
|
497 |
-
|
498 |
-
|
499 |
-
|
500 |
-
|
501 |
-
|
502 |
-
|
503 |
-
*
|
504 |
-
*
|
505 |
-
*
|
506 |
-
*
|
507 |
-
|
508 |
-
|
509 |
-
|
510 |
-
|
511 |
-
|
512 |
-
|
513 |
-
|
514 |
-
|
515 |
-
|
516 |
-
|
517 |
-
|
518 |
-
|
519 |
-
|
520 |
-
|
521 |
-
*
|
522 |
-
*
|
523 |
-
*
|
524 |
-
*
|
525 |
-
|
526 |
-
|
527 |
-
|
528 |
-
|
529 |
-
|
530 |
-
|
531 |
-
|
532 |
-
|
533 |
-
|
534 |
-
|
535 |
-
|
536 |
-
|
537 |
-
|
538 |
-
|
539 |
-
*
|
540 |
-
*
|
541 |
-
*
|
542 |
-
*
|
543 |
-
|
544 |
-
|
545 |
-
|
546 |
-
|
547 |
-
|
548 |
-
|
549 |
-
|
550 |
-
|
551 |
-
|
552 |
-
|
553 |
-
|
554 |
-
|
555 |
-
|
556 |
-
|
557 |
-
|
558 |
-
|
559 |
-
|
560 |
-
$class
|
561 |
-
|
562 |
-
|
563 |
-
|
564 |
-
|
565 |
-
|
566 |
-
|
567 |
-
|
568 |
-
|
569 |
-
|
570 |
-
|
571 |
-
$class
|
572 |
-
|
573 |
-
|
574 |
-
|
575 |
-
|
576 |
-
|
577 |
-
|
578 |
-
|
579 |
-
|
580 |
-
|
581 |
-
|
582 |
-
$class
|
583 |
-
|
584 |
-
|
585 |
-
|
586 |
-
|
587 |
-
|
588 |
-
|
589 |
-
|
590 |
-
*
|
591 |
-
*
|
592 |
-
* @param string $
|
593 |
-
*
|
594 |
-
*
|
595 |
-
|
596 |
-
|
597 |
-
|
598 |
-
|
599 |
-
|
600 |
-
|
601 |
-
|
602 |
-
|
603 |
-
|
604 |
-
|
605 |
-
*
|
606 |
-
*
|
607 |
-
* @param
|
608 |
-
* @param
|
609 |
-
*
|
610 |
-
*
|
611 |
-
|
612 |
-
|
613 |
-
|
614 |
-
|
615 |
-
|
616 |
-
|
617 |
-
|
618 |
-
|
619 |
-
|
620 |
-
|
621 |
-
|
622 |
-
|
623 |
-
'
|
624 |
-
|
625 |
-
|
626 |
-
|
627 |
-
|
628 |
-
|
629 |
-
$
|
630 |
-
|
631 |
-
|
632 |
-
global
|
633 |
-
|
634 |
-
|
635 |
-
|
636 |
-
|
637 |
-
|
638 |
-
|
639 |
-
|
640 |
-
|
641 |
-
|
642 |
-
|
643 |
-
|
644 |
-
|
645 |
-
|
646 |
-
|
647 |
-
|
648 |
-
|
649 |
-
|
650 |
-
|
651 |
-
|
652 |
-
|
653 |
-
|
654 |
-
|
655 |
-
|
656 |
-
|
657 |
-
|
658 |
-
|
659 |
-
|
660 |
-
*
|
661 |
-
*
|
662 |
-
* @param
|
663 |
-
* @param
|
664 |
-
* @param
|
665 |
-
*
|
666 |
-
*
|
667 |
-
|
668 |
-
|
669 |
-
|
670 |
-
|
671 |
-
|
672 |
-
|
673 |
-
|
674 |
-
$
|
675 |
-
$
|
676 |
-
$
|
677 |
-
$
|
678 |
-
$
|
679 |
-
|
680 |
-
|
681 |
-
|
682 |
-
|
683 |
-
|
684 |
-
$
|
685 |
-
$
|
686 |
-
$
|
687 |
-
|
688 |
-
|
689 |
-
|
690 |
-
|
691 |
-
|
692 |
-
|
693 |
-
|
694 |
-
|
695 |
-
|
696 |
-
|
697 |
-
|
698 |
-
|
699 |
-
|
700 |
-
|
701 |
-
|
702 |
-
|
703 |
-
*
|
704 |
-
*
|
705 |
-
* @param
|
706 |
-
*
|
707 |
-
*
|
708 |
-
|
709 |
-
|
710 |
-
|
711 |
-
|
712 |
-
|
713 |
-
|
714 |
-
|
715 |
-
|
716 |
-
|
717 |
-
|
718 |
-
|
719 |
-
|
720 |
-
|
721 |
-
|
722 |
-
|
723 |
-
|
724 |
-
|
725 |
-
|
726 |
-
|
727 |
-
|
728 |
-
|
729 |
-
|
730 |
-
$
|
731 |
-
|
732 |
-
|
733 |
-
|
734 |
-
'
|
735 |
-
|
736 |
-
|
737 |
-
|
738 |
-
|
739 |
-
|
740 |
-
|
741 |
-
|
742 |
-
|
743 |
-
|
744 |
-
|
745 |
-
|
746 |
-
|
747 |
-
|
748 |
-
|
749 |
-
|
750 |
-
|
751 |
-
|
752 |
-
|
753 |
-
|
754 |
-
|
755 |
-
|
756 |
-
|
757 |
-
|
758 |
-
|
759 |
-
|
760 |
-
|
761 |
-
|
762 |
-
|
763 |
-
|
764 |
-
|
765 |
-
|
766 |
-
|
767 |
-
|
768 |
-
|
769 |
-
|
770 |
-
*
|
771 |
-
*
|
772 |
-
* @param
|
773 |
-
* @param
|
774 |
-
*
|
775 |
-
*
|
776 |
-
|
777 |
-
|
778 |
-
|
779 |
-
|
780 |
-
|
781 |
-
|
782 |
-
|
783 |
-
|
784 |
-
|
785 |
-
|
786 |
-
|
787 |
-
|
788 |
-
|
789 |
-
|
790 |
-
|
791 |
-
|
792 |
-
|
793 |
-
*
|
794 |
-
*
|
795 |
-
* @param
|
796 |
-
*
|
797 |
-
*
|
798 |
-
|
799 |
-
|
800 |
-
|
801 |
-
|
802 |
-
|
803 |
-
|
804 |
-
|
805 |
-
|
806 |
-
|
807 |
-
|
808 |
-
|
809 |
-
|
810 |
-
|
811 |
-
|
812 |
-
|
813 |
-
|
814 |
-
|
815 |
-
|
816 |
-
|
817 |
-
|
818 |
-
|
819 |
-
|
820 |
-
|
821 |
-
|
822 |
-
|
823 |
-
|
824 |
-
|
825 |
-
|
826 |
-
|
827 |
-
|
828 |
-
|
829 |
-
|
830 |
-
|
831 |
-
|
832 |
-
|
833 |
-
|
834 |
-
|
835 |
-
|
836 |
-
|
837 |
-
|
838 |
-
|
839 |
-
define( '
|
840 |
-
|
841 |
-
|
842 |
-
|
843 |
-
|
844 |
-
$source
|
845 |
-
|
846 |
-
|
847 |
-
|
848 |
-
|
849 |
-
|
850 |
-
|
851 |
-
|
852 |
-
|
853 |
-
$medium
|
854 |
-
|
855 |
-
|
856 |
-
|
857 |
-
|
858 |
-
|
859 |
-
|
860 |
-
|
861 |
-
|
862 |
-
$campaign
|
863 |
-
|
864 |
-
|
865 |
-
|
866 |
-
|
867 |
-
|
868 |
-
|
869 |
-
|
870 |
-
|
871 |
-
|
872 |
-
|
873 |
-
|
874 |
-
|
875 |
-
*
|
876 |
-
*
|
877 |
-
|
878 |
-
|
879 |
-
|
880 |
-
|
881 |
-
|
882 |
-
|
883 |
-
|
884 |
-
|
885 |
-
|
886 |
-
*
|
887 |
-
*
|
888 |
-
* @param
|
889 |
-
*
|
890 |
-
*
|
891 |
-
|
892 |
-
|
893 |
-
|
894 |
-
|
895 |
-
|
896 |
-
|
897 |
-
|
898 |
-
$
|
899 |
-
|
900 |
-
|
901 |
-
|
902 |
-
|
903 |
-
|
904 |
-
|
905 |
-
|
906 |
-
|
907 |
-
|
908 |
-
|
909 |
-
|
910 |
-
|
911 |
-
|
912 |
-
|
913 |
-
|
914 |
-
|
915 |
-
|
916 |
-
|
917 |
-
|
918 |
-
|
919 |
-
} );
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Basic function for plugin
|
4 |
+
*
|
5 |
+
* @since 1.0.0
|
6 |
+
* @package TInvWishlist
|
7 |
+
*/
|
8 |
+
|
9 |
+
// If this file is called directly, abort.
|
10 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
11 |
+
die;
|
12 |
+
}
|
13 |
+
|
14 |
+
|
15 |
+
if ( ! function_exists( 'tinv_get_option' ) ) {
|
16 |
+
|
17 |
+
/**
|
18 |
+
* Extract options from database or default array settings.
|
19 |
+
*
|
20 |
+
* @param string $category Name category settings.
|
21 |
+
* @param string $option Name paremetr. If is empty string, then function return array category settings.
|
22 |
+
*
|
23 |
+
* @return mixed
|
24 |
+
*/
|
25 |
+
function tinv_get_option( $category, $option = '' ) {
|
26 |
+
$prefix = TINVWL_PREFIX . '-';
|
27 |
+
$values = get_option( $prefix . $category, array() );
|
28 |
+
if ( empty( $values ) ) {
|
29 |
+
$values = tinv_get_option_defaults( $category );
|
30 |
+
}
|
31 |
+
if ( empty( $option ) ) {
|
32 |
+
return $values;
|
33 |
+
} else {
|
34 |
+
if ( array_key_exists( $option, (array) $values ) ) {
|
35 |
+
return $values[ $option ];
|
36 |
+
} else {
|
37 |
+
$values = tinv_get_option_defaults( $category );
|
38 |
+
if ( array_key_exists( $option, (array) $values ) ) {
|
39 |
+
return $values[ $option ];
|
40 |
+
}
|
41 |
+
}
|
42 |
+
}
|
43 |
+
|
44 |
+
return null;
|
45 |
+
}
|
46 |
+
}
|
47 |
+
|
48 |
+
if ( ! function_exists( 'tinv_get_option_admin' ) ) {
|
49 |
+
|
50 |
+
/**
|
51 |
+
* Extract options from database or default array settings.
|
52 |
+
*
|
53 |
+
* @param string $category Name category settings.
|
54 |
+
* @param string $option Name paremetr. If is empty string, then function return array category settings.
|
55 |
+
*
|
56 |
+
* @return mixed
|
57 |
+
*/
|
58 |
+
function tinv_get_option_admin( $category, $option = '' ) {
|
59 |
+
$prefix = TINVWL_PREFIX . '-';
|
60 |
+
$values = get_option( $prefix . $category, array() );
|
61 |
+
if ( empty( $values ) ) {
|
62 |
+
$values = array();
|
63 |
+
}
|
64 |
+
if ( empty( $option ) ) {
|
65 |
+
return $values;
|
66 |
+
} elseif ( array_key_exists( $option, $values ) ) {
|
67 |
+
return $values[ $option ];
|
68 |
+
}
|
69 |
+
|
70 |
+
return null;
|
71 |
+
}
|
72 |
+
}
|
73 |
+
|
74 |
+
if ( ! function_exists( 'tinv_style' ) ) {
|
75 |
+
|
76 |
+
/**
|
77 |
+
* Get style for custom style
|
78 |
+
*
|
79 |
+
* @param string $selector Selector style.
|
80 |
+
* @param string $element Attribute name.
|
81 |
+
*
|
82 |
+
* @return string
|
83 |
+
*/
|
84 |
+
function tinv_style( $selector = '', $element = '' ) {
|
85 |
+
$key = md5( $selector . '||' . $element );
|
86 |
+
$values = get_option( TINVWL_PREFIX . '-style_options', array() );
|
87 |
+
if ( empty( $values ) ) {
|
88 |
+
return '';
|
89 |
+
}
|
90 |
+
if ( array_key_exists( $key, $values ) ) {
|
91 |
+
return $values[ $key ];
|
92 |
+
}
|
93 |
+
|
94 |
+
return '';
|
95 |
+
}
|
96 |
+
}
|
97 |
+
|
98 |
+
if ( ! function_exists( 'tinv_update_option' ) ) {
|
99 |
+
|
100 |
+
/**
|
101 |
+
* Update options in database.
|
102 |
+
*
|
103 |
+
* @param string $category Name category settings.
|
104 |
+
* @param string $option Name paremetr. If is empty string, then function update array category settings.
|
105 |
+
* @param mixed $value Value option.
|
106 |
+
*
|
107 |
+
* @return boolean
|
108 |
+
*/
|
109 |
+
function tinv_update_option( $category, $option = '', $value = false ) {
|
110 |
+
$prefix = TINVWL_PREFIX . '-';
|
111 |
+
if ( empty( $option ) ) {
|
112 |
+
if ( is_array( $value ) ) {
|
113 |
+
update_option( $prefix . $category, $value );
|
114 |
+
|
115 |
+
return true;
|
116 |
+
}
|
117 |
+
} else {
|
118 |
+
$values = get_option( $prefix . $category, array() );
|
119 |
+
|
120 |
+
$values[ $option ] = $value;
|
121 |
+
update_option( $prefix . $category, $values );
|
122 |
+
|
123 |
+
return true;
|
124 |
+
}
|
125 |
+
|
126 |
+
return false;
|
127 |
+
}
|
128 |
+
}
|
129 |
+
|
130 |
+
if ( ! function_exists( 'tinv_wishlist_template' ) ) {
|
131 |
+
|
132 |
+
/**
|
133 |
+
* The function overwrites the method output templates woocommerce
|
134 |
+
*
|
135 |
+
* @param string $template_name Name file template.
|
136 |
+
* @param array $args Array variable in template.
|
137 |
+
* @param string $template_path Customization path.
|
138 |
+
*/
|
139 |
+
function tinv_wishlist_template( $template_name, $args = array(), $template_path = '' ) {
|
140 |
+
if ( function_exists( 'wc_get_template' ) ) {
|
141 |
+
wc_get_template( $template_name, $args, $template_path );
|
142 |
+
} else {
|
143 |
+
woocommerce_get_template( $template_name, $args, $template_path );
|
144 |
+
}
|
145 |
+
}
|
146 |
+
}
|
147 |
+
|
148 |
+
if ( ! function_exists( 'tinv_wishlist_locate_template' ) ) {
|
149 |
+
|
150 |
+
/**
|
151 |
+
* Overwrites path for email and other template
|
152 |
+
*
|
153 |
+
* @param string $template_name Requered Template file.
|
154 |
+
* @param string $template_path Template path.
|
155 |
+
* @param string $default_path Template default path.
|
156 |
+
*
|
157 |
+
* @return mixed
|
158 |
+
*/
|
159 |
+
function tinv_wishlist_locate_template( $template_name, $template_path = '', $default_path = '' ) {
|
160 |
+
$prefix = 'ti-';
|
161 |
+
|
162 |
+
if ( substr( basename( $template_name ), 0, strlen( $prefix ) ) !== $prefix ) {
|
163 |
+
return;
|
164 |
+
}
|
165 |
+
|
166 |
+
if ( ! $template_path ) {
|
167 |
+
$template_path = WC()->template_path();
|
168 |
+
}
|
169 |
+
|
170 |
+
if ( ! $default_path ) {
|
171 |
+
$default_path = TINVWL_PATH . DIRECTORY_SEPARATOR . 'templates' . DIRECTORY_SEPARATOR;
|
172 |
+
}
|
173 |
+
|
174 |
+
// Look within passed path within the theme - this is priority.
|
175 |
+
$template = locate_template( array(
|
176 |
+
trailingslashit( $template_path ) . $template_name,
|
177 |
+
$template_name,
|
178 |
+
) );
|
179 |
+
|
180 |
+
// Get default template.
|
181 |
+
if ( ! $template && file_exists( $default_path . $template_name ) ) {
|
182 |
+
$template = $default_path . $template_name;
|
183 |
+
}
|
184 |
+
|
185 |
+
// Return what we found.
|
186 |
+
return apply_filters( 'tinvwl_locate_template', $template, $template_name, $template_path );
|
187 |
+
}
|
188 |
+
} // End if().
|
189 |
+
|
190 |
+
if ( ! function_exists( 'tinv_wishlist_template_html' ) ) {
|
191 |
+
|
192 |
+
/**
|
193 |
+
* The function overwrites the method return templates woocommerce
|
194 |
+
*
|
195 |
+
* @param string $template_name Name file template.
|
196 |
+
* @param array $args Array variable in template.
|
197 |
+
* @param string $template_path Customization path.
|
198 |
+
*
|
199 |
+
* @return string
|
200 |
+
*/
|
201 |
+
function tinv_wishlist_template_html( $template_name, $args = array(), $template_path = '' ) {
|
202 |
+
ob_start();
|
203 |
+
tinv_wishlist_template( $template_name, $args, $template_path );
|
204 |
+
|
205 |
+
return ob_get_clean();
|
206 |
+
}
|
207 |
+
}
|
208 |
+
|
209 |
+
if ( ! function_exists( 'tinv_wishlist_get_item_data' ) ) {
|
210 |
+
|
211 |
+
/**
|
212 |
+
* Extract meta attributes for product
|
213 |
+
*
|
214 |
+
* @param object $product Object selected product.
|
215 |
+
* @param array $wl_product Wishlist selected product.
|
216 |
+
* @param boolean $flat Return text or template.
|
217 |
+
*
|
218 |
+
* @return string
|
219 |
+
*/
|
220 |
+
function tinv_wishlist_get_item_data( $product, $wl_product = array(), $flat = false ) {
|
221 |
+
$item_data = array();
|
222 |
+
$variation_id = $product->is_type( 'variation' ) ? $product->get_id() : 0;
|
223 |
+
$variation_data = $product->is_type( 'variation' ) ? wc_get_product_variation_attributes( $product->get_id() ) : array();
|
224 |
+
if ( ! empty( $variation_id ) && is_array( $variation_data ) && is_array( $wl_product ) ) {
|
225 |
+
foreach ( $variation_data as $name => $value ) {
|
226 |
+
if ( '' === $value ) {
|
227 |
+
// Could be any value that saved to a custom meta.
|
228 |
+
if ( array_key_exists( 'meta', $wl_product ) && array_key_exists( $name, $wl_product['meta'] ) ) {
|
229 |
+
$value = $wl_product['meta'][ $name ];
|
230 |
+
} else {
|
231 |
+
continue;
|
232 |
+
}
|
233 |
+
}
|
234 |
+
|
235 |
+
$taxonomy = wc_attribute_taxonomy_name( str_replace( 'attribute_pa_', '', urldecode( $name ) ) );
|
236 |
+
|
237 |
+
// If this is a term slug, get the term's nice name.
|
238 |
+
if ( taxonomy_exists( $taxonomy ) ) {
|
239 |
+
$term = get_term_by( 'slug', $value, $taxonomy ); // @codingStandardsIgnoreLine WordPress.VIP.RestrictedFunctions.get_term_by
|
240 |
+
if ( ! is_wp_error( $term ) && $term && $term->name ) {
|
241 |
+
$value = $term->name;
|
242 |
+
}
|
243 |
+
$label = wc_attribute_label( $taxonomy );
|
244 |
+
|
245 |
+
// If this is a custom option slug, get the options name.
|
246 |
+
} else {
|
247 |
+
$value = apply_filters( 'woocommerce_variation_option_name', $value );
|
248 |
+
$product_attributes = $product->get_attributes();
|
249 |
+
$_name = str_replace( 'attribute_', '', $name );
|
250 |
+
if ( isset( $product_attributes[ $_name ] ) ) {
|
251 |
+
$label = wc_attribute_label( $_name, $product );
|
252 |
+
} else {
|
253 |
+
$label = $name;
|
254 |
+
}
|
255 |
+
}
|
256 |
+
if ( '' === $value || wc_is_attribute_in_product_name( $value, is_callable( array(
|
257 |
+
$product,
|
258 |
+
'get_name'
|
259 |
+
) ) ? $product->get_name() : $product->get_title() ) ) {
|
260 |
+
continue;
|
261 |
+
}
|
262 |
+
$item_data[] = array(
|
263 |
+
'key' => $label,
|
264 |
+
'value' => $value,
|
265 |
+
);
|
266 |
+
} // End foreach().
|
267 |
+
} // End if().
|
268 |
+
|
269 |
+
// Filter item data to allow 3rd parties to add more to the array.
|
270 |
+
$item_data = apply_filters( 'tinvwl_wishlist_get_item_data', $item_data, $product );
|
271 |
+
|
272 |
+
// Format item data ready to display.
|
273 |
+
foreach ( $item_data as $key => $data ) {
|
274 |
+
// Set hidden to true to not display meta on cart.
|
275 |
+
if ( ! empty( $data['hidden'] ) ) {
|
276 |
+
unset( $item_data[ $key ] );
|
277 |
+
continue;
|
278 |
+
}
|
279 |
+
$item_data[ $key ]['key'] = ! empty( $data['key'] ) ? $data['key'] : $data['name'];
|
280 |
+
$item_data[ $key ]['display'] = ! empty( $data['display'] ) ? $data['display'] : $data['value'];
|
281 |
+
}
|
282 |
+
|
283 |
+
// Output flat or in list format.
|
284 |
+
if ( 0 < count( $item_data ) ) {
|
285 |
+
ob_start();
|
286 |
+
if ( $flat ) {
|
287 |
+
foreach ( $item_data as $data ) {
|
288 |
+
echo esc_html( $data['key'] ) . ': ' . wp_kses_post( $data['display'] ) . '<br>';
|
289 |
+
}
|
290 |
+
} else {
|
291 |
+
tinv_wishlist_template( 'ti-wishlist-item-data.php', array( 'item_data' => $item_data ) );
|
292 |
+
}
|
293 |
+
|
294 |
+
return ob_get_clean();
|
295 |
+
}
|
296 |
+
|
297 |
+
return '';
|
298 |
+
}
|
299 |
+
} // End if().
|
300 |
+
|
301 |
+
if ( ! function_exists( 'tinv_wishlist_get' ) ) {
|
302 |
+
|
303 |
+
/**
|
304 |
+
* Return Wishlist by id or share key
|
305 |
+
*
|
306 |
+
* @param mixed $id Integer wishlist ID, or Share Key wishlist.
|
307 |
+
* @param boolean $toend Switches to the extract the default or guest wishlist.
|
308 |
+
*
|
309 |
+
* @return array
|
310 |
+
*/
|
311 |
+
function tinv_wishlist_get( $id = '', $toend = true ) {
|
312 |
+
$wl = new TInvWL_Wishlist();
|
313 |
+
$wishlist = null;
|
314 |
+
if ( empty( $id ) ) {
|
315 |
+
$id = get_query_var( 'tinvwlID', null );
|
316 |
+
}
|
317 |
+
|
318 |
+
if ( ! empty( $id ) ) {
|
319 |
+
if ( is_integer( $id ) ) {
|
320 |
+
$wishlist = $wl->get_by_id( $id );
|
321 |
+
}
|
322 |
+
if ( empty( $wishlist ) ) {
|
323 |
+
$wishlist = $wl->get_by_share_key( $id );
|
324 |
+
}
|
325 |
+
|
326 |
+
if ( is_array( $wishlist ) ) {
|
327 |
+
$wishlist['is_owner'] = false;
|
328 |
+
if ( is_user_logged_in() ) {
|
329 |
+
$wishlist['is_owner'] = get_current_user_id() == $wishlist['author']; // WPCS: loose comparison ok.
|
330 |
+
} else {
|
331 |
+
$wishlist['is_owner'] = $wl->get_sharekey() === $wishlist['share_key']; // WPCS: loose comparison ok.
|
332 |
+
}
|
333 |
+
}
|
334 |
+
} elseif ( is_user_logged_in() && $toend ) {
|
335 |
+
$wishlist = $wl->add_user_default();
|
336 |
+
|
337 |
+
$wishlist['is_owner'] = true;
|
338 |
+
} elseif ( $toend ) {
|
339 |
+
$wishlist = $wl->get_by_sharekey_default();
|
340 |
+
if ( ! empty( $wishlist ) ) {
|
341 |
+
$wishlist = array_shift( $wishlist );
|
342 |
+
$wishlist['is_owner'] = $wl->get_sharekey() === $wishlist['share_key'];
|
343 |
+
}
|
344 |
+
}
|
345 |
+
|
346 |
+
return $wishlist;
|
347 |
+
}
|
348 |
+
} // End if().
|
349 |
+
|
350 |
+
if ( ! function_exists( 'tinv_url_wishlist_default' ) ) {
|
351 |
+
|
352 |
+
/**
|
353 |
+
* Return the default wishlist url
|
354 |
+
*
|
355 |
+
* @return string
|
356 |
+
*/
|
357 |
+
function tinv_url_wishlist_default() {
|
358 |
+
$page = apply_filters( 'wpml_object_id', tinv_get_option( 'page', 'wishlist' ), 'page', true ); // @codingStandardsIgnoreLine WordPress.Variables.GlobalVariables.OverrideProhibited
|
359 |
+
if ( empty( $page ) ) {
|
360 |
+
return '';
|
361 |
+
}
|
362 |
+
$link = get_permalink( $page );
|
363 |
+
|
364 |
+
return $link;
|
365 |
+
}
|
366 |
+
}
|
367 |
+
|
368 |
+
if ( ! function_exists( 'tinv_url_wishlist_by_key' ) ) {
|
369 |
+
|
370 |
+
/**
|
371 |
+
* Return the wishlist url by share key
|
372 |
+
*
|
373 |
+
* @param string $share_key Share Key wishlist.
|
374 |
+
* @param integer $paged Page.
|
375 |
+
*
|
376 |
+
* @return string
|
377 |
+
*/
|
378 |
+
function tinv_url_wishlist_by_key( $share_key, $paged = 1 ) {
|
379 |
+
$paged = absint( $paged );
|
380 |
+
$paged = 1 < $paged ? $paged : 1;
|
381 |
+
$link = tinv_url_wishlist_default();
|
382 |
+
if ( empty( $link ) ) {
|
383 |
+
return $link;
|
384 |
+
}
|
385 |
+
|
386 |
+
if ( 1 < $paged ) {
|
387 |
+
$link = add_query_arg( 'wl_paged', $paged, $link );
|
388 |
+
}
|
389 |
+
|
390 |
+
if ( $share_key ) {
|
391 |
+
if ( get_option( 'permalink_structure' ) ) {
|
392 |
+
$suffix = '';
|
393 |
+
if ( preg_match( '/([^\?]+)\?*?(.*)/i', $link, $_link ) ) {
|
394 |
+
$link = $_link[1];
|
395 |
+
$suffix = $_link[2];
|
396 |
+
}
|
397 |
+
if ( ! preg_match( '/\/$/', $link ) ) {
|
398 |
+
$link .= '/';
|
399 |
+
}
|
400 |
+
$link .= $share_key . '/' . $suffix;
|
401 |
+
} else {
|
402 |
+
$link = add_query_arg( 'tinvwlID', $share_key, $link );
|
403 |
+
}
|
404 |
+
}
|
405 |
+
|
406 |
+
return $link;
|
407 |
+
}
|
408 |
+
} // End if().
|
409 |
+
|
410 |
+
if ( ! function_exists( 'tinv_url_wishlist' ) ) {
|
411 |
+
|
412 |
+
/**
|
413 |
+
* Return the wishlist url by id or share key
|
414 |
+
*
|
415 |
+
* @param mixed $id Integer wishlist ID, or Share Key wishlist.
|
416 |
+
* @param integer $paged Page.
|
417 |
+
* @param boolean $full Return full url or shroted url for logged in user.
|
418 |
+
*
|
419 |
+
* @return string
|
420 |
+
*/
|
421 |
+
function tinv_url_wishlist( $id = '', $paged = 1, $full = true ) {
|
422 |
+
$share_key = $id;
|
423 |
+
if ( ! ( is_string( $id ) && preg_match( '/^[A-Fa-f0-9]{6}$/', $id ) ) ) {
|
424 |
+
$wishlist = tinv_wishlist_get( $id, false );
|
425 |
+
$share_key = $wishlist['share_key'];
|
426 |
+
}
|
427 |
+
|
428 |
+
return tinv_url_wishlist_by_key( $share_key, $paged );
|
429 |
+
}
|
430 |
+
}
|
431 |
+
|
432 |
+
if ( ! function_exists( 'tinv_wishlist_status' ) ) {
|
433 |
+
|
434 |
+
/**
|
435 |
+
* Check status free or premium plugin and disable free
|
436 |
+
*
|
437 |
+
* @param string $transient Plugin transient name.
|
438 |
+
*
|
439 |
+
* @return string
|
440 |
+
* @global string $s
|
441 |
+
*
|
442 |
+
* @global string $status
|
443 |
+
* @global string $page
|
444 |
+
*/
|
445 |
+
function tinv_wishlist_status( $transient ) {
|
446 |
+
if ( TINVWL_LOAD_FREE === $transient ) {
|
447 |
+
TInvWL_PluginExtend::deactivate_self( TINVWL_LOAD_FREE );
|
448 |
+
|
449 |
+
return 'plugins.php';
|
450 |
+
}
|
451 |
+
if ( TINVWL_LOAD_PREMIUM === $transient ) {
|
452 |
+
if ( is_plugin_active( TINVWL_LOAD_FREE ) ) {
|
453 |
+
TInvWL_PluginExtend::deactivate_self( TINVWL_LOAD_FREE );
|
454 |
+
if ( ! function_exists( 'wp_create_nonce' ) ) {
|
455 |
+
return 'plugins.php';
|
456 |
+
}
|
457 |
+
|
458 |
+
global $status, $page, $s;
|
459 |
+
$redirect = 'plugins.php?';
|
460 |
+
$redirect .= http_build_query( array(
|
461 |
+
'action' => 'activate',
|
462 |
+
'plugin' => $transient,
|
463 |
+
'plugin_status' => $status,
|
464 |
+
'paged' => $page,
|
465 |
+
's' => $s,
|
466 |
+
) );
|
467 |
+
$redirect = esc_url_raw( add_query_arg( '_wpnonce', wp_create_nonce( 'activate-plugin_' . $transient ), $redirect ) );
|
468 |
+
|
469 |
+
return $redirect;
|
470 |
+
}
|
471 |
+
}
|
472 |
+
|
473 |
+
return false;
|
474 |
+
}
|
475 |
+
} // End if().
|
476 |
+
|
477 |
+
if ( ! function_exists( 'tinvwl_body_classes' ) ) {
|
478 |
+
|
479 |
+
/**
|
480 |
+
* Add custom class
|
481 |
+
*
|
482 |
+
* @param array $classes Current classes.
|
483 |
+
*
|
484 |
+
* @return array
|
485 |
+
*/
|
486 |
+
function tinvwl_body_classes( $classes ) {
|
487 |
+
if ( tinv_get_option( 'style', 'customstyle' ) ) {
|
488 |
+
$classes[] = 'tinvwl-theme-style';
|
489 |
+
} else {
|
490 |
+
$classes[] = 'tinvwl-custom-style';
|
491 |
+
}
|
492 |
+
|
493 |
+
return $classes;
|
494 |
+
}
|
495 |
+
|
496 |
+
add_filter( 'body_class', 'tinvwl_body_classes' );
|
497 |
+
}
|
498 |
+
|
499 |
+
if ( ! function_exists( 'tinvwl_shortcode_addtowishlist' ) ) {
|
500 |
+
|
501 |
+
/**
|
502 |
+
* Shortcode Add To Wishlist
|
503 |
+
*
|
504 |
+
* @param array $atts Array parameter from shortcode.
|
505 |
+
*
|
506 |
+
* @return string
|
507 |
+
*/
|
508 |
+
function tinvwl_shortcode_addtowishlist( $atts = array() ) {
|
509 |
+
$class = TInvWL_Public_AddToWishlist::instance();
|
510 |
+
|
511 |
+
return $class->shortcode( $atts );
|
512 |
+
}
|
513 |
+
|
514 |
+
add_shortcode( 'ti_wishlists_addtowishlist', 'tinvwl_shortcode_addtowishlist' );
|
515 |
+
}
|
516 |
+
|
517 |
+
if ( ! function_exists( 'tinvwl_shortcode_view' ) ) {
|
518 |
+
|
519 |
+
/**
|
520 |
+
* Shortcode view Wishlist
|
521 |
+
*
|
522 |
+
* @param array $atts Array parameter from shortcode.
|
523 |
+
*
|
524 |
+
* @return string
|
525 |
+
*/
|
526 |
+
function tinvwl_shortcode_view( $atts = array() ) {
|
527 |
+
$class = TInvWL_Public_Wishlist_View::instance();
|
528 |
+
|
529 |
+
return $class->shortcode( $atts );
|
530 |
+
}
|
531 |
+
|
532 |
+
add_shortcode( 'ti_wishlistsview', 'tinvwl_shortcode_view' );
|
533 |
+
}
|
534 |
+
|
535 |
+
if ( ! function_exists( 'tinvwl_shortcode_products_counter' ) ) {
|
536 |
+
|
537 |
+
/**
|
538 |
+
* Shortcode view Wishlist
|
539 |
+
*
|
540 |
+
* @param array $atts Array parameter from shortcode.
|
541 |
+
*
|
542 |
+
* @return string
|
543 |
+
*/
|
544 |
+
function tinvwl_shortcode_products_counter( $atts = array() ) {
|
545 |
+
$class = TInvWL_Public_WishlistCounter::instance();
|
546 |
+
|
547 |
+
return $class->shortcode( $atts );
|
548 |
+
}
|
549 |
+
|
550 |
+
add_shortcode( 'ti_wishlist_products_counter', 'tinvwl_shortcode_products_counter' );
|
551 |
+
}
|
552 |
+
|
553 |
+
if ( ! function_exists( 'tinvwl_view_addto_html' ) ) {
|
554 |
+
|
555 |
+
/**
|
556 |
+
* Show button Add to Wishlsit
|
557 |
+
*/
|
558 |
+
function tinvwl_view_addto_html() {
|
559 |
+
$class = TInvWL_Public_AddToWishlist::instance();
|
560 |
+
$class->htmloutput();
|
561 |
+
}
|
562 |
+
}
|
563 |
+
|
564 |
+
if ( ! function_exists( 'tinvwl_view_addto_htmlout' ) ) {
|
565 |
+
|
566 |
+
/**
|
567 |
+
* Show button Add to Wishlsit, if product is not purchasable
|
568 |
+
*/
|
569 |
+
function tinvwl_view_addto_htmlout() {
|
570 |
+
$class = TInvWL_Public_AddToWishlist::instance();
|
571 |
+
$class->htmloutput_out();
|
572 |
+
}
|
573 |
+
}
|
574 |
+
|
575 |
+
if ( ! function_exists( 'tinvwl_view_addto_htmlloop' ) ) {
|
576 |
+
|
577 |
+
/**
|
578 |
+
* Show button Add to Wishlsit, in loop
|
579 |
+
*/
|
580 |
+
function tinvwl_view_addto_htmlloop() {
|
581 |
+
$class = TInvWL_Public_AddToWishlist::instance();
|
582 |
+
$class->htmloutput_loop();
|
583 |
+
}
|
584 |
+
}
|
585 |
+
|
586 |
+
if ( ! function_exists( 'tinvwl_clean_url' ) ) {
|
587 |
+
|
588 |
+
/**
|
589 |
+
* Clear esc_url to original
|
590 |
+
*
|
591 |
+
* @param string $good_protocol_url Cleared URL.
|
592 |
+
* @param string $original_url Original URL.
|
593 |
+
*
|
594 |
+
* @return string
|
595 |
+
*/
|
596 |
+
function tinvwl_clean_url( $good_protocol_url, $original_url ) {
|
597 |
+
return $original_url;
|
598 |
+
}
|
599 |
+
}
|
600 |
+
|
601 |
+
if ( ! function_exists( 'tinvwl_add_to_cart_need_redirect' ) ) {
|
602 |
+
|
603 |
+
/**
|
604 |
+
* Check if the product is third-party, or has another link added to the cart then redirect to the product page.
|
605 |
+
*
|
606 |
+
* @param boolean $redirect Default value to redirect.
|
607 |
+
* @param \WC_Product $_product Product data.
|
608 |
+
* @param string $redirect_url Current url for redirect.
|
609 |
+
*
|
610 |
+
* @return boolean
|
611 |
+
*/
|
612 |
+
function tinvwl_add_to_cart_need_redirect( $redirect, $_product, $redirect_url ) {
|
613 |
+
if ( $redirect ) {
|
614 |
+
return true;
|
615 |
+
}
|
616 |
+
|
617 |
+
if ( 'external' === $_product->get_type() ) {
|
618 |
+
return true;
|
619 |
+
}
|
620 |
+
|
621 |
+
$need_url_data = array_merge( array(
|
622 |
+
'variation_id' => $_product->is_type( 'variation' ) ? $_product->get_id() : 0,
|
623 |
+
'add-to-cart' => $_product->is_type( 'variation' ) ? $_product->get_parent_id() : $_product->get_id(),
|
624 |
+
), array_map( 'urlencode', array() ) );
|
625 |
+
|
626 |
+
$need_url_data = array_filter( $need_url_data );
|
627 |
+
|
628 |
+
$need_url = apply_filters( 'tinvwl_product_add_to_cart_redirect_slug_original', remove_query_arg( 'added-to-cart', ( version_compare( WC_VERSION, '3.8.0', '<' ) ? add_query_arg( $need_url_data ) : add_query_arg( $need_url_data, '' ) ) ), $_product );
|
629 |
+
$need_url_full = apply_filters( 'tinvwl_product_add_to_cart_redirect_url_original', remove_query_arg( 'added-to-cart', add_query_arg( $need_url_data, $_product->get_permalink() ) ), $_product );
|
630 |
+
|
631 |
+
global $product;
|
632 |
+
// store global product data.
|
633 |
+
$_product_tmp = $product;
|
634 |
+
// override global product data.
|
635 |
+
$product = $_product;
|
636 |
+
|
637 |
+
add_filter( 'clean_url', 'tinvwl_clean_url', 10, 2 );
|
638 |
+
do_action( 'before_get_redirect_url' );
|
639 |
+
$_redirect_url = apply_filters( 'tinvwl_product_add_to_cart_redirect_url', $_product->add_to_cart_url(), $_product );
|
640 |
+
do_action( 'after_get_redirect_url' );
|
641 |
+
remove_filter( 'clean_url', 'tinvwl_clean_url', 10 );
|
642 |
+
|
643 |
+
// restore global product data.
|
644 |
+
$product = $_product_tmp;
|
645 |
+
|
646 |
+
if ( $_redirect_url !== $need_url && $_redirect_url !== $need_url_full ) {
|
647 |
+
return true;
|
648 |
+
}
|
649 |
+
|
650 |
+
return $redirect;
|
651 |
+
}
|
652 |
+
|
653 |
+
add_filter( 'tinvwl_product_add_to_cart_need_redirect', 'tinvwl_add_to_cart_need_redirect', 10, 3 );
|
654 |
+
} // End if().
|
655 |
+
|
656 |
+
if ( ! function_exists( 'tinvwl_meta_validate_cart_add' ) ) {
|
657 |
+
|
658 |
+
/**
|
659 |
+
* Checks the ability to add a product
|
660 |
+
*
|
661 |
+
* @param boolean $redirect Default value to redirect.
|
662 |
+
* @param \WC_Product $product Product data.
|
663 |
+
* @param string $redirect_url Current url for redirect.
|
664 |
+
* @param array $wl_product Wishlist Product.
|
665 |
+
*
|
666 |
+
* @return boolean
|
667 |
+
*/
|
668 |
+
function tinvwl_meta_validate_cart_add( $redirect, $product, $redirect_url, $wl_product ) {
|
669 |
+
if ( $redirect && array_key_exists( 'meta', $wl_product ) && ! empty( $wl_product['meta'] ) ) {
|
670 |
+
|
671 |
+
TInvWL_Public_Cart::prepare_post( $wl_product );
|
672 |
+
|
673 |
+
$wl_product = apply_filters( 'tinvwl_addproduct_tocart', $wl_product );
|
674 |
+
$product_id = apply_filters( 'woocommerce_add_to_cart_product_id', absint( $wl_product['product_id'] ) );
|
675 |
+
$quantity = empty( $wl_product['quantity'] ) ? 1 : wc_stock_amount( $wl_product['quantity'] );
|
676 |
+
$variation_id = $wl_product['variation_id'];
|
677 |
+
$variations = $product->is_type( 'variation' ) ? wc_get_product_variation_attributes( $product->get_id() ) : array();
|
678 |
+
$passed_validation = $product->is_purchasable() && ( $product->is_in_stock() || $product->backorders_allowed() ) && 'external' !== $product->get_type();
|
679 |
+
ob_start();
|
680 |
+
if ( function_exists( 'wc_clear_notices' ) ) {
|
681 |
+
wc_clear_notices();
|
682 |
+
}
|
683 |
+
$passed_validation = apply_filters( 'woocommerce_add_to_cart_validation', $passed_validation, $product_id, $quantity, $variation_id, $variations );
|
684 |
+
$wc_errors = wc_get_notices( 'error' );
|
685 |
+
$wc_output = ob_get_clean();
|
686 |
+
if ( $passed_validation && empty( $wc_errors ) && empty( $wc_output ) ) {
|
687 |
+
$redirect = false;
|
688 |
+
}
|
689 |
+
|
690 |
+
TInvWL_Public_Cart::unprepare_post();
|
691 |
+
}
|
692 |
+
|
693 |
+
return $redirect;
|
694 |
+
}
|
695 |
+
|
696 |
+
add_filter( 'tinvwl_product_add_to_cart_need_redirect', 'tinvwl_meta_validate_cart_add', 90, 4 );
|
697 |
+
} // End if().
|
698 |
+
|
699 |
+
if ( ! function_exists( 'tinv_wishlist_print_meta' ) ) {
|
700 |
+
|
701 |
+
/**
|
702 |
+
* Print meta data for wishlist form
|
703 |
+
*
|
704 |
+
* @param array $meta Meta Array.
|
705 |
+
* @param boolean $flat Return text or template.
|
706 |
+
*
|
707 |
+
* @return string
|
708 |
+
*/
|
709 |
+
function tinv_wishlist_print_meta( $meta = array(), $flat = false ) {
|
710 |
+
if ( ! is_array( $meta ) ) {
|
711 |
+
$meta = array();
|
712 |
+
}
|
713 |
+
$product_id = $variation_id = 0;
|
714 |
+
if ( array_key_exists( 'product_id', $meta ) ) {
|
715 |
+
$product_id = $meta['product_id'];
|
716 |
+
}
|
717 |
+
if ( array_key_exists( 'variation_id', $meta ) ) {
|
718 |
+
$variation_id = $meta['variation_id'];
|
719 |
+
}
|
720 |
+
foreach ( array( 'add-to-cart', 'product_id', 'variation_id', 'quantity', 'action', 'variation' ) as $field ) {
|
721 |
+
if ( array_key_exists( $field, $meta ) ) {
|
722 |
+
unset( $meta[ $field ] );
|
723 |
+
}
|
724 |
+
}
|
725 |
+
$meta = array_filter( $meta );
|
726 |
+
if ( empty( $meta ) ) {
|
727 |
+
return '';
|
728 |
+
}
|
729 |
+
$item_data = array();
|
730 |
+
foreach ( $meta as $key => $value ) {
|
731 |
+
if ( ! preg_match( '/^\_/', $key ) ) {
|
732 |
+
$item_data[ $key ] = array(
|
733 |
+
'key' => $key,
|
734 |
+
'display' => $value,
|
735 |
+
);
|
736 |
+
}
|
737 |
+
}
|
738 |
+
|
739 |
+
foreach ( array_keys( $item_data ) as $key ) {
|
740 |
+
if ( strpos( $key, 'attribute_' ) === 0 ) {
|
741 |
+
unset( $item_data[ $key ] );
|
742 |
+
}
|
743 |
+
}
|
744 |
+
|
745 |
+
$item_data = apply_filters( 'tinvwl_wishlist_item_meta_post', $item_data, $product_id, $variation_id );
|
746 |
+
foreach ( $item_data as $key => $data ) {
|
747 |
+
if ( is_object( $data['display'] ) || is_array( $data['display'] ) ) {
|
748 |
+
$item_data[ $key ]['display'] = json_encode( $data['display'] );
|
749 |
+
}
|
750 |
+
}
|
751 |
+
ob_start();
|
752 |
+
if ( $flat ) {
|
753 |
+
foreach ( $item_data as $data ) {
|
754 |
+
echo esc_html( $data['key'] ) . ': ' . wp_kses_post( $data['display'] ) . '<br>';
|
755 |
+
}
|
756 |
+
} else {
|
757 |
+
if ( $item_data ) {
|
758 |
+
tinv_wishlist_template( 'ti-wishlist-item-data.php', array( 'item_data' => $item_data ) );
|
759 |
+
}
|
760 |
+
}
|
761 |
+
|
762 |
+
return apply_filters( 'tinvwl_wishlist_item_meta_wishlist', ob_get_clean() );
|
763 |
+
}
|
764 |
+
} // End if().
|
765 |
+
|
766 |
+
if ( ! function_exists( 'tinv_wishlistmeta' ) ) {
|
767 |
+
|
768 |
+
/**
|
769 |
+
* Show new meta data
|
770 |
+
*
|
771 |
+
* @param string $meta Print meta.
|
772 |
+
* @param array $wl_product Wishlist product.
|
773 |
+
* @param \WC_Product $product Woocommerce product.
|
774 |
+
*
|
775 |
+
* @return string
|
776 |
+
*/
|
777 |
+
function tinv_wishlistmeta( $meta, $wl_product, $product ) {
|
778 |
+
if ( array_key_exists( 'meta', $wl_product ) ) {
|
779 |
+
$wlmeta = apply_filters( 'tinvwl_wishlist_item_meta_wishlist_output', tinv_wishlist_print_meta( $wl_product['meta'] ), $wl_product, $product );
|
780 |
+
}
|
781 |
+
$meta .= $wlmeta;
|
782 |
+
|
783 |
+
return $meta;
|
784 |
+
}
|
785 |
+
|
786 |
+
add_filter( 'tinvwl_wishlist_item_meta_data', 'tinv_wishlistmeta', 10, 3 );
|
787 |
+
}
|
788 |
+
|
789 |
+
if ( ! function_exists( 'tinvwl_add_to_cart_item_meta_post' ) ) {
|
790 |
+
|
791 |
+
/**
|
792 |
+
* Save post data to cart item
|
793 |
+
*
|
794 |
+
* @param array $cart_item_data Array with cart imet information.
|
795 |
+
* @param string $cart_item_key Cart item key.
|
796 |
+
*
|
797 |
+
* @return array
|
798 |
+
*/
|
799 |
+
function tinvwl_add_to_cart_item_meta_post( $cart_item_data, $cart_item_key ) {
|
800 |
+
$postdata = $_POST; // @codingStandardsIgnoreLine WordPress.VIP.SuperGlobalInputUsage.AccessDetected
|
801 |
+
|
802 |
+
$postdata = apply_filters( 'tinvwl_product_prepare_meta', $postdata );
|
803 |
+
if ( array_key_exists( 'variation_id', $postdata ) && ! empty( $postdata['variation_id'] ) ) {
|
804 |
+
foreach ( $postdata as $key => $field ) {
|
805 |
+
if ( preg_match( '/^attribute\_/', $key ) ) {
|
806 |
+
unset( $postdata[ $key ] );
|
807 |
+
}
|
808 |
+
}
|
809 |
+
}
|
810 |
+
foreach ( array( 'add-to-cart', 'product_id', 'variation_id', 'quantity' ) as $field ) {
|
811 |
+
if ( array_key_exists( $field, $postdata ) ) {
|
812 |
+
unset( $postdata[ $field ] );
|
813 |
+
}
|
814 |
+
}
|
815 |
+
$postdata = array_filter( $postdata );
|
816 |
+
if ( empty( $postdata ) ) {
|
817 |
+
return $cart_item_data;
|
818 |
+
}
|
819 |
+
ksort( $postdata );
|
820 |
+
|
821 |
+
$cart_item_data['tinvwl_formdata'] = $postdata;
|
822 |
+
|
823 |
+
return $cart_item_data;
|
824 |
+
}
|
825 |
+
|
826 |
+
add_action( 'woocommerce_add_cart_item', 'tinvwl_add_to_cart_item_meta_post', 10, 2 );
|
827 |
+
} // End if().
|
828 |
+
|
829 |
+
if ( ! function_exists( 'tinvwl_set_utm' ) ) {
|
830 |
+
|
831 |
+
/**
|
832 |
+
* Set UTM sources.
|
833 |
+
*/
|
834 |
+
function tinvwl_set_utm() {
|
835 |
+
|
836 |
+
// Forcing partners UTM.
|
837 |
+
if ( class_exists( 'Ocean_Extra' ) && ! defined( 'TINVWL_PARTNER' ) && ! defined( 'TINVWL_CAMPAIGN' ) ) {
|
838 |
+
define( 'TINVWL_PARTNER', 'oceanwporg' );
|
839 |
+
define( 'TINVWL_CAMPAIGN', 'oceanwp_theme' );
|
840 |
+
}
|
841 |
+
|
842 |
+
// Set a source.
|
843 |
+
$source = get_option( TINVWL_PREFIX . '_utm_source' );
|
844 |
+
if ( ! $source || $source !== defined( 'TINVWL_PARTNER' ) ) {
|
845 |
+
$source = defined( 'TINVWL_PARTNER' ) ? TINVWL_PARTNER : 'wordpress_org';
|
846 |
+
update_option( TINVWL_PREFIX . '_utm_source', $source );
|
847 |
+
}
|
848 |
+
|
849 |
+
define( 'TINVWL_UTM_SOURCE', $source );
|
850 |
+
|
851 |
+
// Set a medium.
|
852 |
+
$medium = get_option( TINVWL_PREFIX . '_utm_medium' );
|
853 |
+
if ( ! $medium || ( 'organic' === $medium && defined( 'TINVWL_PARTNER' ) ) ) {
|
854 |
+
$medium = defined( 'TINVWL_PARTNER' ) ? 'integration' : 'organic';
|
855 |
+
update_option( TINVWL_PREFIX . '_utm_medium', $medium );
|
856 |
+
}
|
857 |
+
|
858 |
+
define( 'TINVWL_UTM_MEDIUM', $medium );
|
859 |
+
|
860 |
+
// Set a campaign.
|
861 |
+
$campaign = get_option( TINVWL_PREFIX . '_utm_campaign' );
|
862 |
+
if ( ! $campaign || $campaign !== defined( 'TINVWL_CAMPAIGN' ) ) {
|
863 |
+
$campaign = defined( 'TINVWL_PARTNER' ) ? ( defined( 'TINVWL_CAMPAIGN' ) ? TINVWL_CAMPAIGN : TINVWL_PARTNER ) : 'organic';
|
864 |
+
update_option( TINVWL_PREFIX . '_utm_campaign', $campaign );
|
865 |
+
}
|
866 |
+
|
867 |
+
define( 'TINVWL_UTM_CAMPAIGN', $campaign );
|
868 |
+
}
|
869 |
+
} // End if().
|
870 |
+
|
871 |
+
if ( ! function_exists( 'is_wishlist' ) ) {
|
872 |
+
|
873 |
+
/**
|
874 |
+
* is_wishlist - Returns true when viewing the wishlist page.
|
875 |
+
*
|
876 |
+
* @return bool
|
877 |
+
*/
|
878 |
+
function is_wishlist() {
|
879 |
+
return ( is_page( apply_filters( 'wpml_object_id', tinv_get_option( 'page', 'wishlist' ), 'page', true ) ) );
|
880 |
+
}
|
881 |
+
}
|
882 |
+
|
883 |
+
if ( ! function_exists( 'tinvwl_get_wishlist_products' ) ) {
|
884 |
+
/**
|
885 |
+
* Get wishlist products for default user wishlist or by ID or SHAREKEY
|
886 |
+
*
|
887 |
+
* @param int $wishlist_id by ID or SHAREKEY, 0 = default wishlist of current user
|
888 |
+
* @param array $data query parameters for get() method of TInvWL_Product() class.
|
889 |
+
*
|
890 |
+
* @return array|bool
|
891 |
+
*/
|
892 |
+
function tinvwl_get_wishlist_products( $wishlist_id = 0, $data = array() ) {
|
893 |
+
$wishlist = tinv_wishlist_get( $wishlist_id );
|
894 |
+
if ( empty( $wishlist ) ) {
|
895 |
+
return false;
|
896 |
+
}
|
897 |
+
$wlp = new TInvWL_Product( $wishlist );
|
898 |
+
$products = $wlp->get_wishlist( $data );
|
899 |
+
|
900 |
+
if ( empty( $products ) ) {
|
901 |
+
return false;
|
902 |
+
}
|
903 |
+
|
904 |
+
return $products;
|
905 |
+
}
|
906 |
+
}
|
907 |
+
|
908 |
+
add_action( 'init', function () {
|
909 |
+
if ( ! is_user_logged_in() ) {
|
910 |
+
add_filter( 'nonce_user_logged_out', function ( $uid, $action = - 1 ) {
|
911 |
+
if ( $action === 'wp_rest' ) {
|
912 |
+
return get_current_user_id();
|
913 |
+
}
|
914 |
+
|
915 |
+
return $uid;
|
916 |
+
}, 99, 2 );
|
917 |
+
}
|
918 |
+
} );
|
|
views/admin/premium-features.php
CHANGED
@@ -1,88 +1,88 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* The Template for displaying admin premium features notice this plugin.
|
4 |
-
*
|
5 |
-
* @since 1.0.0
|
6 |
-
* @package TInvWishlist\Admin\Template
|
7 |
-
*/
|
8 |
-
|
9 |
-
if ( ! defined( 'ABSPATH' ) ) {
|
10 |
-
exit; // Exit if accessed directly.
|
11 |
-
}
|
12 |
-
|
13 |
-
?>
|
14 |
-
<section class="tinvwl-premium-feat tinvwl-panel w-shadow w-bg">
|
15 |
-
<div class="container-fluid">
|
16 |
-
<div class="row">
|
17 |
-
<div class="tinvwl-pic-col col-lg-4">
|
18 |
-
<a href="https://templateinvaders.com/product/ti-woocommerce-wishlist-wordpress-plugin/?utm_source=<?php echo TINVWL_UTM_SOURCE;// WPCS: xss ok. ?>&utm_campaign=<?php echo TINVWL_UTM_CAMPAIGN;// WPCS: xss ok. ?>&utm_medium=<?php echo TINVWL_UTM_MEDIUM;// WPCS: xss ok. ?>&utm_content=premium_explore_logo&partner=<?php echo TINVWL_UTM_SOURCE;// WPCS: xss ok. ?>">
|
19 |
-
<i class="premium_adv"></i>
|
20 |
-
</a>
|
21 |
-
<h2><?php esc_html_e( 'Premium version', 'ti-woocommerce-wishlist' ) ?></h2>
|
22 |
-
<p><?php esc_html_e( 'benefit from all the features', 'ti-woocommerce-wishlist' ) ?></p>
|
23 |
-
<a href="https://templateinvaders.com/product/ti-woocommerce-wishlist-wordpress-plugin/?utm_source=<?php echo TINVWL_UTM_SOURCE;// WPCS: xss ok. ?>&utm_campaign=<?php echo TINVWL_UTM_CAMPAIGN;// WPCS: xss ok. ?>&utm_medium=<?php echo TINVWL_UTM_MEDIUM;// WPCS: xss ok. ?>&utm_content=premium_explore&partner=<?php echo TINVWL_UTM_SOURCE;// WPCS: xss ok. ?>"
|
24 |
-
class="tinvwl-btn white round"><?php esc_html_e( 'check premium options', 'ti-woocommerce-wishlist' ) ?></a>
|
25 |
-
</div>
|
26 |
-
<div class="tinvwl-feat-col col-lg-4">
|
27 |
-
|
28 |
-
<div class="half-containers rate">
|
29 |
-
<h2>
|
30 |
-
<a href="https://wordpress.org/support/plugin/ti-woocommerce-wishlist/reviews/"><?php esc_html_e( 'Rate us please', 'ti-woocommerce-wishlist' ) ?></a>
|
31 |
-
</h2>
|
32 |
-
<p><?php esc_html_e( 'We’d really appreciate if you could spend a few minutes to', 'ti-woocommerce-wishlist' ) ?>
|
33 |
-
<br>
|
34 |
-
<a href="https://wordpress.org/support/plugin/ti-woocommerce-wishlist/reviews/"><?php esc_html_e( 'leave a review', 'ti-woocommerce-wishlist' ) ?></a>.
|
35 |
-
</p>
|
36 |
-
</div>
|
37 |
-
<div class="half-containers subscribe">
|
38 |
-
<h2><?php esc_html_e( 'We love making new friends', 'ti-woocommerce-wishlist' ) ?></h2>
|
39 |
-
<p><?php esc_html_e( 'sign up for emails to get updates and instant discount', 'ti-woocommerce-wishlist' ) ?></p>
|
40 |
-
<!-- Begin MailChimp Signup Form -->
|
41 |
-
<div id="mc_embed_signup">
|
42 |
-
<form
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
<div id="mc_embed_signup_scroll">
|
47 |
-
|
48 |
-
<div class="mc-field-group">
|
49 |
-
<input type="email" value="" name="EMAIL" class="required email" id="mce-EMAIL">
|
50 |
-
<input type="submit" value="Subscribe" name="subscribe"
|
51 |
-
|
52 |
-
</div>
|
53 |
-
<div id="mce-responses" class="clear">
|
54 |
-
<div class="response" id="mce-error-response" style="display:none"></div>
|
55 |
-
<div class="response" id="mce-success-response" style="display:none"></div>
|
56 |
-
</div>
|
57 |
-
<!-- real people should not fill this in and expect good things - do not remove this or risk form bot signups-->
|
58 |
-
<div style="position: absolute; left: -5000px;" aria-hidden="true"><input type="text"
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
</div>
|
63 |
-
|
64 |
-
</div>
|
65 |
-
</form>
|
66 |
-
</div>
|
67 |
-
|
68 |
-
<!--End mc_embed_signup-->
|
69 |
-
</div>
|
70 |
-
|
71 |
-
</div>
|
72 |
-
<div class="tinvwl-sup-col col-lg-4">
|
73 |
-
<div class="half-containers money-back">
|
74 |
-
<a href="https://templateinvaders.com/product/ti-woocommerce-wishlist-wordpress-plugin/?utm_source=<?php echo TINVWL_UTM_SOURCE;// WPCS: xss ok. ?>&utm_campaign=<?php echo TINVWL_UTM_CAMPAIGN;// WPCS: xss ok. ?>&utm_medium=<?php echo TINVWL_UTM_MEDIUM;// WPCS: xss ok. ?>&utm_content=money_back&partner=<?php echo TINVWL_UTM_SOURCE;// WPCS: xss ok. ?>">
|
75 |
-
<span>Money Back Guarantee</span>
|
76 |
-
</a>
|
77 |
-
<p><?php esc_html_e( '100% No-Risk 14-Days Money Back Guarantee', 'ti-woocommerce-wishlist' ) ?></p>
|
78 |
-
</div>
|
79 |
-
<div class="half-containers customization">
|
80 |
-
<h2><?php esc_html_e( 'Need customization?', 'ti-woocommerce-wishlist' ) ?></h2>
|
81 |
-
<p><?php esc_html_e( 'Highly skilled WordPress experts are ready to satisfy your needs', 'ti-woocommerce-wishlist' ) ?></p>
|
82 |
-
<a href="https://templateinvaders.com/customization/?utm_source=<?php echo TINVWL_UTM_SOURCE;// WPCS: xss ok. ?>&utm_campaign=<?php echo TINVWL_UTM_CAMPAIGN;// WPCS: xss ok. ?>&utm_medium=<?php echo TINVWL_UTM_MEDIUM;// WPCS: xss ok. ?>&utm_content=customization&partner=<?php echo TINVWL_UTM_SOURCE;// WPCS: xss ok. ?>"
|
83 |
-
class="tinvwl-btn gray round"><?php esc_html_e( 'get started now', 'ti-woocommerce-wishlist' ) ?></a>
|
84 |
-
</div>
|
85 |
-
</div>
|
86 |
-
</div>
|
87 |
-
</div>
|
88 |
-
</section>
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* The Template for displaying admin premium features notice this plugin.
|
4 |
+
*
|
5 |
+
* @since 1.0.0
|
6 |
+
* @package TInvWishlist\Admin\Template
|
7 |
+
*/
|
8 |
+
|
9 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
10 |
+
exit; // Exit if accessed directly.
|
11 |
+
}
|
12 |
+
|
13 |
+
?>
|
14 |
+
<section class="tinvwl-premium-feat tinvwl-panel w-shadow w-bg">
|
15 |
+
<div class="container-fluid">
|
16 |
+
<div class="row">
|
17 |
+
<div class="tinvwl-pic-col col-lg-4">
|
18 |
+
<a href="https://templateinvaders.com/product/ti-woocommerce-wishlist-wordpress-plugin/?utm_source=<?php echo TINVWL_UTM_SOURCE;// WPCS: xss ok. ?>&utm_campaign=<?php echo TINVWL_UTM_CAMPAIGN;// WPCS: xss ok. ?>&utm_medium=<?php echo TINVWL_UTM_MEDIUM;// WPCS: xss ok. ?>&utm_content=premium_explore_logo&partner=<?php echo TINVWL_UTM_SOURCE;// WPCS: xss ok. ?>">
|
19 |
+
<i class="premium_adv"></i>
|
20 |
+
</a>
|
21 |
+
<h2><?php esc_html_e( 'Premium version', 'ti-woocommerce-wishlist' ) ?></h2>
|
22 |
+
<p><?php esc_html_e( 'benefit from all the features', 'ti-woocommerce-wishlist' ) ?></p>
|
23 |
+
<a href="https://templateinvaders.com/product/ti-woocommerce-wishlist-wordpress-plugin/?utm_source=<?php echo TINVWL_UTM_SOURCE;// WPCS: xss ok. ?>&utm_campaign=<?php echo TINVWL_UTM_CAMPAIGN;// WPCS: xss ok. ?>&utm_medium=<?php echo TINVWL_UTM_MEDIUM;// WPCS: xss ok. ?>&utm_content=premium_explore&partner=<?php echo TINVWL_UTM_SOURCE;// WPCS: xss ok. ?>"
|
24 |
+
class="tinvwl-btn white round"><?php esc_html_e( 'check premium options', 'ti-woocommerce-wishlist' ) ?></a>
|
25 |
+
</div>
|
26 |
+
<div class="tinvwl-feat-col col-lg-4">
|
27 |
+
|
28 |
+
<div class="half-containers rate">
|
29 |
+
<h2>
|
30 |
+
<a href="https://wordpress.org/support/plugin/ti-woocommerce-wishlist/reviews/"><?php esc_html_e( 'Rate us please', 'ti-woocommerce-wishlist' ) ?></a>
|
31 |
+
</h2>
|
32 |
+
<p><?php esc_html_e( 'We’d really appreciate if you could spend a few minutes to', 'ti-woocommerce-wishlist' ) ?>
|
33 |
+
<br>
|
34 |
+
<a href="https://wordpress.org/support/plugin/ti-woocommerce-wishlist/reviews/"><?php esc_html_e( 'leave a review', 'ti-woocommerce-wishlist' ) ?></a>.
|
35 |
+
</p>
|
36 |
+
</div>
|
37 |
+
<div class="half-containers subscribe">
|
38 |
+
<h2><?php esc_html_e( 'We love making new friends', 'ti-woocommerce-wishlist' ) ?></h2>
|
39 |
+
<p><?php esc_html_e( 'sign up for emails to get updates and instant discount', 'ti-woocommerce-wishlist' ) ?></p>
|
40 |
+
<!-- Begin MailChimp Signup Form -->
|
41 |
+
<div id="mc_embed_signup">
|
42 |
+
<form
|
43 |
+
action="https://templateinvaders.us14.list-manage.com/subscribe/post?u=e41c4138bfe744af05e6e3e4c&id=7ef8ec2b94"
|
44 |
+
method="post" id="mc-embedded-subscribe-form" name="mc-embedded-subscribe-form"
|
45 |
+
class="validate" target="_blank" novalidate>
|
46 |
+
<div id="mc_embed_signup_scroll">
|
47 |
+
|
48 |
+
<div class="mc-field-group">
|
49 |
+
<input type="email" value="" name="EMAIL" class="required email" id="mce-EMAIL">
|
50 |
+
<input type="submit" value="Subscribe" name="subscribe"
|
51 |
+
id="mc-embedded-subscribe" class="tinvwl-btn">
|
52 |
+
</div>
|
53 |
+
<div id="mce-responses" class="clear">
|
54 |
+
<div class="response" id="mce-error-response" style="display:none"></div>
|
55 |
+
<div class="response" id="mce-success-response" style="display:none"></div>
|
56 |
+
</div>
|
57 |
+
<!-- real people should not fill this in and expect good things - do not remove this or risk form bot signups-->
|
58 |
+
<div style="position: absolute; left: -5000px;" aria-hidden="true"><input type="text"
|
59 |
+
name="b_e41c4138bfe744af05e6e3e4c_7ef8ec2b94"
|
60 |
+
tabindex="-1"
|
61 |
+
value="">
|
62 |
+
</div>
|
63 |
+
|
64 |
+
</div>
|
65 |
+
</form>
|
66 |
+
</div>
|
67 |
+
|
68 |
+
<!--End mc_embed_signup-->
|
69 |
+
</div>
|
70 |
+
|
71 |
+
</div>
|
72 |
+
<div class="tinvwl-sup-col col-lg-4">
|
73 |
+
<div class="half-containers money-back">
|
74 |
+
<a href="https://templateinvaders.com/product/ti-woocommerce-wishlist-wordpress-plugin/?utm_source=<?php echo TINVWL_UTM_SOURCE;// WPCS: xss ok. ?>&utm_campaign=<?php echo TINVWL_UTM_CAMPAIGN;// WPCS: xss ok. ?>&utm_medium=<?php echo TINVWL_UTM_MEDIUM;// WPCS: xss ok. ?>&utm_content=money_back&partner=<?php echo TINVWL_UTM_SOURCE;// WPCS: xss ok. ?>">
|
75 |
+
<span>Money Back Guarantee</span>
|
76 |
+
</a>
|
77 |
+
<p><?php esc_html_e( '100% No-Risk 14-Days Money Back Guarantee', 'ti-woocommerce-wishlist' ) ?></p>
|
78 |
+
</div>
|
79 |
+
<div class="half-containers customization">
|
80 |
+
<h2><?php esc_html_e( 'Need customization?', 'ti-woocommerce-wishlist' ) ?></h2>
|
81 |
+
<p><?php esc_html_e( 'Highly skilled WordPress experts are ready to satisfy your needs', 'ti-woocommerce-wishlist' ) ?></p>
|
82 |
+
<a href="https://templateinvaders.com/customization/?utm_source=<?php echo TINVWL_UTM_SOURCE;// WPCS: xss ok. ?>&utm_campaign=<?php echo TINVWL_UTM_CAMPAIGN;// WPCS: xss ok. ?>&utm_medium=<?php echo TINVWL_UTM_MEDIUM;// WPCS: xss ok. ?>&utm_content=customization&partner=<?php echo TINVWL_UTM_SOURCE;// WPCS: xss ok. ?>"
|
83 |
+
class="tinvwl-btn gray round"><?php esc_html_e( 'get started now', 'ti-woocommerce-wishlist' ) ?></a>
|
84 |
+
</div>
|
85 |
+
</div>
|
86 |
+
</div>
|
87 |
+
</div>
|
88 |
+
</section>
|
views/admin/templates-status.php
CHANGED
@@ -1,38 +1,43 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* The Template for displaying wishlist templates overrides status on WooCOmmerce System Status page.
|
4 |
-
*
|
5 |
-
* @since 1.2.0
|
6 |
-
* @package TInvWishlist\Admin\Template
|
7 |
-
*/
|
8 |
-
|
9 |
-
if ( ! defined( 'ABSPATH' ) ) {
|
10 |
-
exit; // Exit if accessed directly.
|
11 |
-
}
|
12 |
-
?>
|
13 |
-
<table class="wc_status_table widefat" cellspacing="0">
|
14 |
-
<thead>
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* The Template for displaying wishlist templates overrides status on WooCOmmerce System Status page.
|
4 |
+
*
|
5 |
+
* @since 1.2.0
|
6 |
+
* @package TInvWishlist\Admin\Template
|
7 |
+
*/
|
8 |
+
|
9 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
10 |
+
exit; // Exit if accessed directly.
|
11 |
+
}
|
12 |
+
?>
|
13 |
+
<table class="wc_status_table widefat" cellspacing="0">
|
14 |
+
<thead>
|
15 |
+
<tr>
|
16 |
+
<th colspan="3"
|
17 |
+
data-export-label="<?php esc_html_e( 'TI WooCommerce Wishlist Templates', 'ti-woocommerce-wishlist' ); ?>">
|
18 |
+
<h2><?php esc_html_e( 'TI WooCommerce Wishlist Templates', 'ti-woocommerce-wishlist' ); ?><?php echo wc_help_tip( __( 'This section shows the files that are overriding the default TI WooCommerce Wishlist templates.', 'ti-woocommerce-wishlist' ) ); // WPCS: xss ok. ?></h2>
|
19 |
+
</th>
|
20 |
+
</tr>
|
21 |
+
</thead>
|
22 |
+
<tbody>
|
23 |
+
<?php
|
24 |
+
if ( $found_files ) {
|
25 |
+
?>
|
26 |
+
<tr>
|
27 |
+
<td data-export-label="<?php esc_html_e( 'Overrides', 'ti-woocommerce-wishlist' ); ?>"><?php esc_html_e( 'Overrides', 'ti-woocommerce-wishlist' ); ?></td>
|
28 |
+
<td class="help"> </td>
|
29 |
+
<td><?php echo implode( ', <br/>', $found_files ); // WPCS: xss ok. ?></td>
|
30 |
+
</tr>
|
31 |
+
<?php } else {
|
32 |
+
?>
|
33 |
+
<tr>
|
34 |
+
<td data-export-label="<?php esc_html_e( 'Overrides', 'ti-woocommerce-wishlist' ); ?>"><?php esc_html_e( 'Overrides', 'ti-woocommerce-wishlist' ); ?>
|
35 |
+
:
|
36 |
+
</td>
|
37 |
+
<td class="help"> </td>
|
38 |
+
<td>–</td>
|
39 |
+
</tr>
|
40 |
+
<?php }
|
41 |
+
?>
|
42 |
+
</tbody>
|
43 |
+
</table>
|
views/admin/upgrade.php
CHANGED
@@ -1,23 +1,23 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* The Template for displaying admin premium features this plugin.
|
4 |
-
*
|
5 |
-
* @since 1.0.0
|
6 |
-
* @package TInvWishlist\Admin\Template
|
7 |
-
*/
|
8 |
-
|
9 |
-
if ( ! defined( 'ABSPATH' ) ) {
|
10 |
-
exit; // Exit if accessed directly.
|
11 |
-
}
|
12 |
-
|
13 |
-
?>
|
14 |
-
<section class="tinvwl-panel w-shadow w-bg">
|
15 |
-
<div class="container-fluid">
|
16 |
-
<div class="row">
|
17 |
-
<div style="text-align: center; padding:10px 25px;">
|
18 |
-
<a href="https://templateinvaders.com/product/ti-woocommerce-wishlist-wordpress-plugin/?utm_source=<?php echo TINVWL_UTM_SOURCE; // WPCS: xss ok. ?>&utm_campaign=<?php echo TINVWL_UTM_CAMPAIGN; // WPCS: xss ok. ?>&utm_medium=<?php echo TINVWL_UTM_MEDIUM; // WPCS: xss ok. ?>&utm_content=upgrade&partner=<?php echo TINVWL_UTM_SOURCE; // WPCS: xss ok. ?>"><img
|
19 |
-
|
20 |
-
</div>
|
21 |
-
</div>
|
22 |
-
</div>
|
23 |
-
</section>
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* The Template for displaying admin premium features this plugin.
|
4 |
+
*
|
5 |
+
* @since 1.0.0
|
6 |
+
* @package TInvWishlist\Admin\Template
|
7 |
+
*/
|
8 |
+
|
9 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
10 |
+
exit; // Exit if accessed directly.
|
11 |
+
}
|
12 |
+
|
13 |
+
?>
|
14 |
+
<section class="tinvwl-panel w-shadow w-bg">
|
15 |
+
<div class="container-fluid">
|
16 |
+
<div class="row">
|
17 |
+
<div style="text-align: center; padding:10px 25px;">
|
18 |
+
<a href="https://templateinvaders.com/product/ti-woocommerce-wishlist-wordpress-plugin/?utm_source=<?php echo TINVWL_UTM_SOURCE; // WPCS: xss ok. ?>&utm_campaign=<?php echo TINVWL_UTM_CAMPAIGN; // WPCS: xss ok. ?>&utm_medium=<?php echo TINVWL_UTM_MEDIUM; // WPCS: xss ok. ?>&utm_content=upgrade&partner=<?php echo TINVWL_UTM_SOURCE; // WPCS: xss ok. ?>"><img
|
19 |
+
src="<?php echo esc_attr( TINVWL_URL . 'assets/img/upgrade_to_pro.jpg' ); ?>"></a>
|
20 |
+
</div>
|
21 |
+
</div>
|
22 |
+
</div>
|
23 |
+
</section>
|
views/header.php
CHANGED
@@ -1,44 +1,44 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* The Template for displaying admin header this plugin.
|
4 |
-
*
|
5 |
-
* @since 1.0.0
|
6 |
-
* @package TInvWishlist\Admin\Template
|
7 |
-
*/
|
8 |
-
|
9 |
-
if ( ! defined( 'ABSPATH' ) ) {
|
10 |
-
exit; // Exit if accessed directly.
|
11 |
-
}
|
12 |
-
|
13 |
-
?>
|
14 |
-
<div class="<?php echo esc_attr( sprintf( '%s-header', self::$_name ) ); ?> tinv-wishlist-clearfix">
|
15 |
-
<div class="row">
|
16 |
-
<div class="col-lg-7">
|
17 |
-
<div class="tinwl-logo-title">
|
18 |
-
<div class="tinvwl-table auto-width">
|
19 |
-
<div class="tinwl-logo tinvwl-cell-3">
|
20 |
-
<div class="tinvwl-table">
|
21 |
-
<div class="tinvwl-cell">
|
22 |
-
<i class="logo_heart"></i>
|
23 |
-
</div>
|
24 |
-
<div class="tinvwl-cell">
|
25 |
-
<h2>Wishlist</h2>
|
26 |
-
</div>
|
27 |
-
</div>
|
28 |
-
</div>
|
29 |
-
<div class="tinvwl-cell">
|
30 |
-
<h1 class="tinvwl-title"><?php echo esc_html( $_name ); ?></h1>
|
31 |
-
</div>
|
32 |
-
</div>
|
33 |
-
</div>
|
34 |
-
</div>
|
35 |
-
<div class="col-lg-5">
|
36 |
-
<div class="tinvwl-status-panel status-panel"><?php
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
?></div>
|
41 |
-
</div>
|
42 |
-
</div>
|
43 |
-
|
44 |
-
</div>
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* The Template for displaying admin header this plugin.
|
4 |
+
*
|
5 |
+
* @since 1.0.0
|
6 |
+
* @package TInvWishlist\Admin\Template
|
7 |
+
*/
|
8 |
+
|
9 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
10 |
+
exit; // Exit if accessed directly.
|
11 |
+
}
|
12 |
+
|
13 |
+
?>
|
14 |
+
<div class="<?php echo esc_attr( sprintf( '%s-header', self::$_name ) ); ?> tinv-wishlist-clearfix">
|
15 |
+
<div class="row">
|
16 |
+
<div class="col-lg-7">
|
17 |
+
<div class="tinwl-logo-title">
|
18 |
+
<div class="tinvwl-table auto-width">
|
19 |
+
<div class="tinwl-logo tinvwl-cell-3">
|
20 |
+
<div class="tinvwl-table">
|
21 |
+
<div class="tinvwl-cell">
|
22 |
+
<i class="logo_heart"></i>
|
23 |
+
</div>
|
24 |
+
<div class="tinvwl-cell">
|
25 |
+
<h2>Wishlist</h2>
|
26 |
+
</div>
|
27 |
+
</div>
|
28 |
+
</div>
|
29 |
+
<div class="tinvwl-cell">
|
30 |
+
<h1 class="tinvwl-title"><?php echo esc_html( $_name ); ?></h1>
|
31 |
+
</div>
|
32 |
+
</div>
|
33 |
+
</div>
|
34 |
+
</div>
|
35 |
+
<div class="col-lg-5">
|
36 |
+
<div class="tinvwl-status-panel status-panel"><?php
|
37 |
+
foreach ( $status_panel as $item ) {
|
38 |
+
echo $item; // WPCS: xss ok.
|
39 |
+
}
|
40 |
+
?></div>
|
41 |
+
</div>
|
42 |
+
</div>
|
43 |
+
|
44 |
+
</div>
|
views/null.php
CHANGED
@@ -14,8 +14,8 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
14 |
?>
|
15 |
<h1><?php esc_html_e( 'Error 404', 'ti-woocommerce-wishlist' ); // WPCS: xss ok. ?></h1>
|
16 |
<h2><?php
|
17 |
-
$path
|
18 |
-
$path
|
19 |
printf( __( 'Template "%s" not found!', 'ti-woocommerce-wishlist' ), $path ); // WPCS: xss ok.
|
20 |
?></h2>
|
21 |
<!-- <?php echo self::file( @$_template_name, @$_type ); // @codingStandardsIgnoreLine Generic.PHP.NoSilencedErrors.Discouraged ?> -->
|
14 |
?>
|
15 |
<h1><?php esc_html_e( 'Error 404', 'ti-woocommerce-wishlist' ); // WPCS: xss ok. ?></h1>
|
16 |
<h2><?php
|
17 |
+
$path = array( @$_type, @$_template_name ); // @codingStandardsIgnoreLine Generic.PHP.NoSilencedErrors.Discouraged
|
18 |
+
$path = implode( DIRECTORY_SEPARATOR, $path );
|
19 |
printf( __( 'Template "%s" not found!', 'ti-woocommerce-wishlist' ), $path ); // WPCS: xss ok.
|
20 |
?></h2>
|
21 |
<!-- <?php echo self::file( @$_template_name, @$_type ); // @codingStandardsIgnoreLine Generic.PHP.NoSilencedErrors.Discouraged ?> -->
|
views/section-field-html.php
CHANGED
@@ -17,7 +17,9 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
17 |
</td>
|
18 |
<?php if ( $show_helper && $show_field_desc ) : ?>
|
19 |
<td class="tinvwl-info w-bg-grey">
|
20 |
-
<?php if ( ! empty( $desc ) ) {
|
|
|
|
|
21 |
</td>
|
22 |
<?php endif; ?>
|
23 |
</tr>
|
17 |
</td>
|
18 |
<?php if ( $show_helper && $show_field_desc ) : ?>
|
19 |
<td class="tinvwl-info w-bg-grey">
|
20 |
+
<?php if ( ! empty( $desc ) ) {
|
21 |
+
self::view( 'section-infoblock', array( 'desc' => $desc ), '' );
|
22 |
+
} ?>
|
23 |
</td>
|
24 |
<?php endif; ?>
|
25 |
</tr>
|
views/section-field.php
CHANGED
@@ -15,24 +15,26 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
15 |
<td>
|
16 |
<div class="tinvwl-inner">
|
17 |
<?php if ( $label ) { ?>
|
18 |
-
|
19 |
-
|
20 |
<div class="control-label col-lg-6">
|
21 |
<?php echo $label; // WPCS: xss ok. ?>
|
22 |
</div>
|
23 |
<div class="col-lg-6">
|
24 |
<?php echo $field; // WPCS: xss ok. ?>
|
25 |
</div>
|
|
|
26 |
</div>
|
27 |
-
</div>
|
28 |
<?php } else {
|
29 |
echo $field; // WPCS: xss ok.
|
30 |
-
} ?>
|
31 |
</div>
|
32 |
</td>
|
33 |
<?php if ( $show_helper && $show_field_desc ) : ?>
|
34 |
<td class="tinvwl-info w-bg-grey">
|
35 |
-
<?php if ( ! empty( $desc ) ) {
|
|
|
|
|
36 |
</td>
|
37 |
<?php endif; ?>
|
38 |
</tr>
|
15 |
<td>
|
16 |
<div class="tinvwl-inner">
|
17 |
<?php if ( $label ) { ?>
|
18 |
+
<div class="form-horizontal">
|
19 |
+
<div class="form-group">
|
20 |
<div class="control-label col-lg-6">
|
21 |
<?php echo $label; // WPCS: xss ok. ?>
|
22 |
</div>
|
23 |
<div class="col-lg-6">
|
24 |
<?php echo $field; // WPCS: xss ok. ?>
|
25 |
</div>
|
26 |
+
</div>
|
27 |
</div>
|
|
|
28 |
<?php } else {
|
29 |
echo $field; // WPCS: xss ok.
|
30 |
+
} ?>
|
31 |
</div>
|
32 |
</td>
|
33 |
<?php if ( $show_helper && $show_field_desc ) : ?>
|
34 |
<td class="tinvwl-info w-bg-grey">
|
35 |
+
<?php if ( ! empty( $desc ) ) {
|
36 |
+
self::view( 'section-infoblock', array( 'desc' => $desc ), '' );
|
37 |
+
} ?>
|
38 |
</td>
|
39 |
<?php endif; ?>
|
40 |
</tr>
|
views/section-general.php
CHANGED
@@ -14,26 +14,30 @@ $show_title = $show_names && $title;
|
|
14 |
?>
|
15 |
<section <?php echo $extra; // WPCS: xss ok. ?>>
|
16 |
<table class="tinvwl-table w-info">
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
<?php if ( $show_helper ) : ?>
|
27 |
<th class="tinvwl-info w-bg-grey">
|
28 |
-
<?php if ( ! empty( $desc ) ) {
|
|
|
|
|
29 |
</th>
|
30 |
<?php endif; ?>
|
31 |
-
|
32 |
-
|
33 |
<?php echo $groups; // WPCS: xss ok. ?>
|
34 |
<tfoot>
|
35 |
<tr>
|
36 |
-
<td
|
|
|
|
|
37 |
<?php if ( $show_helper ) : ?>
|
38 |
<td class="w-bg-grey"></td>
|
39 |
<?php endif; ?>
|
14 |
?>
|
15 |
<section <?php echo $extra; // WPCS: xss ok. ?>>
|
16 |
<table class="tinvwl-table w-info">
|
17 |
+
<thead <?php echo( ! $show_title ? 'class="tinwl-empty"' : '' ); ?>>
|
18 |
+
<tr>
|
19 |
+
<th>
|
20 |
+
<div class="tinvwl-inner">
|
21 |
+
<?php if ( $show_title ) : ?>
|
22 |
+
<h3><?php echo $title; // WPCS: xss ok. ?></h3>
|
23 |
+
<?php endif; ?>
|
24 |
+
</div>
|
25 |
+
</th>
|
26 |
<?php if ( $show_helper ) : ?>
|
27 |
<th class="tinvwl-info w-bg-grey">
|
28 |
+
<?php if ( ! empty( $desc ) ) {
|
29 |
+
self::view( 'section-infoblock', array( 'desc' => $desc ), '' );
|
30 |
+
} ?>
|
31 |
</th>
|
32 |
<?php endif; ?>
|
33 |
+
</tr>
|
34 |
+
</thead>
|
35 |
<?php echo $groups; // WPCS: xss ok. ?>
|
36 |
<tfoot>
|
37 |
<tr>
|
38 |
+
<td>
|
39 |
+
<div class="tinvwl-inner"></div>
|
40 |
+
</td>
|
41 |
<?php if ( $show_helper ) : ?>
|
42 |
<td class="w-bg-grey"></td>
|
43 |
<?php endif; ?>
|
views/section-group-style-e.php
CHANGED
@@ -12,30 +12,39 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
12 |
|
13 |
?>
|
14 |
<tbody <?php echo $extra; // WPCS: xss ok. ?>>
|
15 |
-
|
16 |
-
<
|
17 |
-
<
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
23 |
</td>
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
<div class="tinvwl-inner">
|
33 |
-
<div class="form-horizontal">
|
34 |
-
<div class="form-group">
|
35 |
-
<?php echo $fields; // WPCS: xss ok. ?>
|
36 |
-
</div>
|
37 |
</div>
|
38 |
</div>
|
39 |
-
</
|
40 |
-
</
|
|
|
41 |
</tbody>
|
12 |
|
13 |
?>
|
14 |
<tbody <?php echo $extra; // WPCS: xss ok. ?>>
|
15 |
+
<tr class="tinvwl-bodies-border">
|
16 |
+
<td>
|
17 |
+
<div class="tinvwl-inner"></div>
|
18 |
+
</td>
|
19 |
+
<td class="tinvwl-info w-bg-grey">
|
20 |
+
<div class="tinvwl-inner"></div>
|
21 |
+
</td>
|
22 |
+
</tr>
|
23 |
+
<tr>
|
24 |
+
<td>
|
25 |
+
<div class="tinvwl-inner">
|
26 |
+
<?php if ( $show_names && $title ) : ?>
|
27 |
+
<h2><?php echo $title; // WPCS: xss ok. ?></h2>
|
28 |
+
<?php endif; ?>
|
29 |
+
</div>
|
30 |
+
</td>
|
31 |
+
<?php if ( $show_helper ) : ?>
|
32 |
+
<td class="tinvwl-info w-bg-grey" rowspan="2">
|
33 |
+
<?php if ( ! empty( $desc ) ) {
|
34 |
+
self::view( 'section-infoblock', array( 'desc' => $desc ), '' );
|
35 |
+
} ?>
|
36 |
</td>
|
37 |
+
<?php endif; ?>
|
38 |
+
</tr>
|
39 |
+
<tr>
|
40 |
+
<td>
|
41 |
+
<div class="tinvwl-inner">
|
42 |
+
<div class="form-horizontal">
|
43 |
+
<div class="form-group">
|
44 |
+
<?php echo $fields; // WPCS: xss ok. ?>
|
|
|
|
|
|
|
|
|
|
|
45 |
</div>
|
46 |
</div>
|
47 |
+
</div>
|
48 |
+
</td>
|
49 |
+
</tr>
|
50 |
</tbody>
|
views/section-group-style.php
CHANGED
@@ -12,25 +12,29 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
12 |
|
13 |
?>
|
14 |
<tbody <?php echo $extra; // WPCS: xss ok. ?>>
|
15 |
-
|
16 |
-
<
|
17 |
-
<
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
|
|
|
|
|
|
32 |
</div>
|
33 |
</div>
|
34 |
-
</
|
35 |
-
</
|
|
|
36 |
</tbody>
|
12 |
|
13 |
?>
|
14 |
<tbody <?php echo $extra; // WPCS: xss ok. ?>>
|
15 |
+
<tr class="tinvwl-bodies-border">
|
16 |
+
<td>
|
17 |
+
<div class="tinvwl-inner"></div>
|
18 |
+
</td>
|
19 |
+
</tr>
|
20 |
+
<tr>
|
21 |
+
<td>
|
22 |
+
<div class="tinvwl-inner">
|
23 |
+
<?php if ( $show_names && $title ) : ?>
|
24 |
+
<h2><?php echo $title; // WPCS: xss ok. ?></h2>
|
25 |
+
<?php endif; ?>
|
26 |
+
</div>
|
27 |
+
</td>
|
28 |
+
</tr>
|
29 |
+
<tr>
|
30 |
+
<td>
|
31 |
+
<div class="tinvwl-inner">
|
32 |
+
<div class="form-horizontal">
|
33 |
+
<div class="form-group">
|
34 |
+
<?php echo $fields; // WPCS: xss ok. ?>
|
35 |
</div>
|
36 |
</div>
|
37 |
+
</div>
|
38 |
+
</td>
|
39 |
+
</tr>
|
40 |
</tbody>
|
views/section-group.php
CHANGED
@@ -12,25 +12,29 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
12 |
|
13 |
?>
|
14 |
<tbody <?php echo $extra; // WPCS: xss ok. ?>>
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
|
|
|
|
25 |
<h2><?php echo $title; // WPCS: xss ok. ?></h2>
|
26 |
-
|
27 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
28 |
</td>
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
</td>
|
33 |
-
<?php endif; ?>
|
34 |
-
</tr>
|
35 |
-
<?php echo $fields; // WPCS: xss ok. ?>
|
36 |
</tbody>
|
12 |
|
13 |
?>
|
14 |
<tbody <?php echo $extra; // WPCS: xss ok. ?>>
|
15 |
+
<tr class="tinvwl-bodies-border">
|
16 |
+
<td>
|
17 |
+
<div class="tinvwl-inner"></div>
|
18 |
+
</td>
|
19 |
+
<?php if ( $show_helper ) : ?>
|
20 |
+
<td class="tinvwl-info w-bg-grey"></td>
|
21 |
+
<?php endif; ?>
|
22 |
+
</tr>
|
23 |
+
<tr>
|
24 |
+
<td>
|
25 |
+
<div class="tinvwl-inner">
|
26 |
+
<?php if ( $show_names && $title ) : ?>
|
27 |
<h2><?php echo $title; // WPCS: xss ok. ?></h2>
|
28 |
+
<?php endif; ?>
|
29 |
+
</div>
|
30 |
+
</td>
|
31 |
+
<?php if ( $show_helper ) : ?>
|
32 |
+
<td class="tinvwl-info w-bg-grey" <?php echo ( $desc ) ? 'rowspan="' . $fields_count . '"' : ''; // WPCS: xss ok. ?>>
|
33 |
+
<?php if ( ! empty( $desc ) ) {
|
34 |
+
self::view( 'section-infoblock', array( 'desc' => $desc ), '' );
|
35 |
+
} ?>
|
36 |
</td>
|
37 |
+
<?php endif; ?>
|
38 |
+
</tr>
|
39 |
+
<?php echo $fields; // WPCS: xss ok. ?>
|
|
|
|
|
|
|
|
|
40 |
</tbody>
|
views/section-infoblock.php
CHANGED
@@ -1,26 +1,27 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* The Template for displaying admin section info block this plugin.
|
4 |
-
*
|
5 |
-
* @since 1.0.0
|
6 |
-
* @package TInvWishlist\Admin\Template
|
7 |
-
*/
|
8 |
-
|
9 |
-
if ( ! defined( 'ABSPATH' ) ) {
|
10 |
-
exit; // Exit if accessed directly.
|
11 |
-
}
|
12 |
-
|
13 |
-
?>
|
14 |
-
<div class="tinvwl-info-wrap tinvwl-in-section">
|
15 |
-
<div class="tinvwl-table">
|
16 |
-
<span class="tinvwl-info-sign tinvwl-cell">
|
17 |
-
<span>
|
18 |
-
<i class="ftinvwl ftinvwl-info"></i>
|
19 |
-
</span>
|
20 |
-
<a class="tinvwl-help" href="javascript:void(0)" data-container="body" data-toggle="popover"
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
</div>
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* The Template for displaying admin section info block this plugin.
|
4 |
+
*
|
5 |
+
* @since 1.0.0
|
6 |
+
* @package TInvWishlist\Admin\Template
|
7 |
+
*/
|
8 |
+
|
9 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
10 |
+
exit; // Exit if accessed directly.
|
11 |
+
}
|
12 |
+
|
13 |
+
?>
|
14 |
+
<div class="tinvwl-info-wrap tinvwl-in-section">
|
15 |
+
<div class="tinvwl-table">
|
16 |
+
<span class="tinvwl-info-sign tinvwl-cell">
|
17 |
+
<span>
|
18 |
+
<i class="ftinvwl ftinvwl-info"></i>
|
19 |
+
</span>
|
20 |
+
<a class="tinvwl-help" href="javascript:void(0)" data-container="body" data-toggle="popover"
|
21 |
+
data-trigger="manual" data-placement="left" data-html="true" rel="nofollow">
|
22 |
+
<i class="ftinvwl ftinvwl-info"></i>
|
23 |
+
</a>
|
24 |
+
</span>
|
25 |
+
<span class="tinvwl-info-desc tinvwl-cell"><?php echo $desc; // WPCS: xss ok. ?></span>
|
26 |
+
</div>
|
27 |
+
</div>
|
views/wizard/finish.php
CHANGED
@@ -1,32 +1,35 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* The Template for displaying wizard finish step.
|
4 |
-
*
|
5 |
-
* @version 1.6.1
|
6 |
-
* @package TInvWishlist\Wizard\Template
|
7 |
-
*/
|
8 |
-
|
9 |
-
if ( ! defined( 'ABSPATH' ) ) {
|
10 |
-
exit; // Exit if accessed directly.
|
11 |
-
}
|
12 |
-
|
13 |
-
?>
|
14 |
-
<div class="tinwl-inner tinwl-finish">
|
15 |
-
<h2 class="tinvwl-sub-title"><?php esc_html_e( 'Congratulations', 'ti-woocommerce-wishlist' ); ?></h2>
|
16 |
-
<h1 class="tinvwl-title"><?php esc_html_e( 'Your Wishlist is ready!', 'ti-woocommerce-wishlist' ); ?></h1>
|
17 |
-
<div class="tinvwl-desc">
|
18 |
-
<?php printf( esc_html__( 'You have set basic Wishlist settings. If you want to make more in-depth plugin setup you can make it in plugin settings page %s.', 'ti-woocommerce-wishlist' ), sprintf( '<a target="_blank" href="%s">%s</a>', esc_url( self::admin_url( '' ) ), esc_html__( 'WooCommerce Wishlist Plugin Settings', 'ti-woocommerce-wishlist' ) ) ); // WPCS: xss ok. ?>
|
19 |
-
<br/>
|
20 |
-
<?php printf( esc_html__( 'Details about WooCommerce Wishlist Plugin options can be found in our %s.', 'ti-woocommerce-wishlist' ), sprintf( '<a target="_blank" href="%s">%s</a>', 'https://templateinvaders.com/documentation/ti-woocommerce-wishlist-free/?utm_source=' . TINVWL_UTM_SOURCE . '&utm_campaign=' . TINVWL_UTM_CAMPAIGN . '&utm_medium=' . TINVWL_UTM_MEDIUM . '&utm_content=wizard_documentation&partner=' . TINVWL_UTM_SOURCE, esc_html__( 'Online Documentation', 'ti-woocommerce-wishlist' ) ) ); // WPCS: xss ok.
|
21 |
-
?>
|
22 |
-
</div>
|
23 |
-
<a class="tinvwl-btn grey w-icon xl-icon round"
|
24 |
-
href="<?php echo 'https://templateinvaders.com/documentation/ti-woocommerce-wishlist-free/?utm_source=' . TINVWL_UTM_SOURCE . '&utm_campaign=' . TINVWL_UTM_CAMPAIGN . '&utm_medium=' . TINVWL_UTM_MEDIUM . '&utm_content=wizard_documentation&partner=' . TINVWL_UTM_SOURCE; // WPCS: xss ok.
|
25 |
-
?>"><i class="ftinvwl ftinvwl-graduation-cap"></i><?php esc_html_e( 'Documentation', 'ti-woocommerce-wishlist' );
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* The Template for displaying wizard finish step.
|
4 |
+
*
|
5 |
+
* @version 1.6.1
|
6 |
+
* @package TInvWishlist\Wizard\Template
|
7 |
+
*/
|
8 |
+
|
9 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
10 |
+
exit; // Exit if accessed directly.
|
11 |
+
}
|
12 |
+
|
13 |
+
?>
|
14 |
+
<div class="tinwl-inner tinwl-finish">
|
15 |
+
<h2 class="tinvwl-sub-title"><?php esc_html_e( 'Congratulations', 'ti-woocommerce-wishlist' ); ?></h2>
|
16 |
+
<h1 class="tinvwl-title"><?php esc_html_e( 'Your Wishlist is ready!', 'ti-woocommerce-wishlist' ); ?></h1>
|
17 |
+
<div class="tinvwl-desc">
|
18 |
+
<?php printf( esc_html__( 'You have set basic Wishlist settings. If you want to make more in-depth plugin setup you can make it in plugin settings page %s.', 'ti-woocommerce-wishlist' ), sprintf( '<a target="_blank" href="%s">%s</a>', esc_url( self::admin_url( '' ) ), esc_html__( 'WooCommerce Wishlist Plugin Settings', 'ti-woocommerce-wishlist' ) ) ); // WPCS: xss ok. ?>
|
19 |
+
<br/>
|
20 |
+
<?php printf( esc_html__( 'Details about WooCommerce Wishlist Plugin options can be found in our %s.', 'ti-woocommerce-wishlist' ), sprintf( '<a target="_blank" href="%s">%s</a>', 'https://templateinvaders.com/documentation/ti-woocommerce-wishlist-free/?utm_source=' . TINVWL_UTM_SOURCE . '&utm_campaign=' . TINVWL_UTM_CAMPAIGN . '&utm_medium=' . TINVWL_UTM_MEDIUM . '&utm_content=wizard_documentation&partner=' . TINVWL_UTM_SOURCE, esc_html__( 'Online Documentation', 'ti-woocommerce-wishlist' ) ) ); // WPCS: xss ok.
|
21 |
+
?>
|
22 |
+
</div>
|
23 |
+
<a class="tinvwl-btn grey w-icon xl-icon round"
|
24 |
+
href="<?php echo 'https://templateinvaders.com/documentation/ti-woocommerce-wishlist-free/?utm_source=' . TINVWL_UTM_SOURCE . '&utm_campaign=' . TINVWL_UTM_CAMPAIGN . '&utm_medium=' . TINVWL_UTM_MEDIUM . '&utm_content=wizard_documentation&partner=' . TINVWL_UTM_SOURCE; // WPCS: xss ok.
|
25 |
+
?>"><i class="ftinvwl ftinvwl-graduation-cap"></i><?php esc_html_e( 'Documentation', 'ti-woocommerce-wishlist' ); ?>
|
26 |
+
</a>
|
27 |
+
<a class="tinvwl-btn grey w-icon xl-icon round" href="<?php echo esc_url( self::admin_url( '' ) ); ?>"><i
|
28 |
+
class="ftinvwl ftinvwl-wrench"></i><?php esc_html_e( 'Wishlist Settings', 'ti-woocommerce-wishlist' ); ?>
|
29 |
+
</a>
|
30 |
+
<div class="tinv-wishlist-clear" style="padding: 20px 0"></div>
|
31 |
+
<a class="tinvwl-btn red w-icon smaller-txt"
|
32 |
+
href="https://templateinvaders.com/?utm_source=<?php echo TINVWL_UTM_SOURCE; // WPCS: xss ok. ?>&utm_campaign=<?php echo TINVWL_UTM_CAMPAIGN; // WPCS: xss ok. ?>&utm_medium=<?php echo TINVWL_UTM_MEDIUM; // WPCS: xss ok. ?>&utm_content=wizard_upgrade&partner=<?php echo TINVWL_UTM_SOURCE; // WPCS: xss ok. ?>"><i
|
33 |
+
class="ftinvwl ftinvwl-star"></i><?php esc_html_e( 'Upgrade to Premium', 'ti-woocommerce-wishlist' ); ?>
|
34 |
+
</a>
|
35 |
+
</div>
|
views/wizard/footer.php
CHANGED
@@ -1,20 +1,22 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* The Template for displaying footer for wizard.
|
4 |
-
*
|
5 |
-
* @since 1.0.0
|
6 |
-
* @package TInvWishlist\Wizard\Template
|
7 |
-
*/
|
8 |
-
|
9 |
-
if ( ! defined( 'ABSPATH' ) ) {
|
10 |
-
exit; // Exit if accessed directly.
|
11 |
-
}
|
12 |
-
|
13 |
-
do_action( 'admin_print_footer_scripts' );
|
14 |
-
if ( 'intro' !== $page ) :
|
15 |
-
?>
|
16 |
-
<div class="tinvwl-return-to-dash">
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
</
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* The Template for displaying footer for wizard.
|
4 |
+
*
|
5 |
+
* @since 1.0.0
|
6 |
+
* @package TInvWishlist\Wizard\Template
|
7 |
+
*/
|
8 |
+
|
9 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
10 |
+
exit; // Exit if accessed directly.
|
11 |
+
}
|
12 |
+
|
13 |
+
do_action( 'admin_print_footer_scripts' );
|
14 |
+
if ( 'intro' !== $page ) :
|
15 |
+
?>
|
16 |
+
<div class="tinvwl-return-to-dash">
|
17 |
+
<a class="tinvwl-btn white w-icon md-icon round" href="<?php echo esc_url( admin_url() ); ?>"><i
|
18 |
+
class="ftinvwl ftinvwl-arrow-left"></i><?php esc_html_e( 'Return to the WordPress Dashboard', 'ti-woocommerce-wishlist' ); ?>
|
19 |
+
</a>
|
20 |
+
</div>
|
21 |
+
<?php endif; ?>
|
22 |
+
</body></html>
|
views/wizard/header.php
CHANGED
@@ -1,44 +1,46 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* The Template for displaying header for wizard.
|
4 |
-
*
|
5 |
-
* @since 1.0.0
|
6 |
-
* @package TInvWishlist\Wizard\Template
|
7 |
-
*/
|
8 |
-
|
9 |
-
if ( ! defined( 'ABSPATH' ) ) {
|
10 |
-
exit; // Exit if accessed directly.
|
11 |
-
}
|
12 |
-
|
13 |
-
?>
|
14 |
-
<!DOCTYPE html>
|
15 |
-
<html xmlns="http://www.w3.org/1999/xhtml" <?php language_attributes(); ?>>
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* The Template for displaying header for wizard.
|
4 |
+
*
|
5 |
+
* @since 1.0.0
|
6 |
+
* @package TInvWishlist\Wizard\Template
|
7 |
+
*/
|
8 |
+
|
9 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
10 |
+
exit; // Exit if accessed directly.
|
11 |
+
}
|
12 |
+
|
13 |
+
?>
|
14 |
+
<!DOCTYPE html>
|
15 |
+
<html xmlns="http://www.w3.org/1999/xhtml" <?php language_attributes(); ?>>
|
16 |
+
<head>
|
17 |
+
<meta name="viewport" content="width=device-width"/>
|
18 |
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
|
19 |
+
<title><?php echo sprintf( __( 'TI Wishlist › %s', 'ti-woocommerce-wishlist' ), $title ); // WPCS: xss ok. ?></title>
|
20 |
+
<?php do_action( 'admin_print_styles' ); ?>
|
21 |
+
<?php //do_action( 'admin_head' ); ?>
|
22 |
+
</head>
|
23 |
+
<body class="tinvwl-wizard wp-core-ui">
|
24 |
+
<div class="tinvwl-logo">
|
25 |
+
<i class="wizard_logo"></i>
|
26 |
+
<h2>ti.Wishlist</h2>
|
27 |
+
</div>
|
28 |
+
<div class="tinvwl-progress">
|
29 |
+
<ul>
|
30 |
+
<?php
|
31 |
+
$current_step = filter_input( INPUT_GET, 'step', FILTER_VALIDATE_INT, array( 'default' => 0,
|
32 |
+
'min_range' => 0
|
33 |
+
) );
|
34 |
+
foreach ( $list_steps as $step => $step_name ) {
|
35 |
+
$class = 'active';
|
36 |
+
if ( $step > $current_step ) {
|
37 |
+
$class = '';
|
38 |
+
}
|
39 |
+
if ( $step == $current_step ) { // WPCS: loose comparison ok.
|
40 |
+
$class = 'active last';
|
41 |
+
}
|
42 |
+
?>
|
43 |
+
<li class="<?php echo esc_attr( $class ); ?>"><?php echo esc_html( $step_name ); ?></li>
|
44 |
+
<?php } ?>
|
45 |
+
</ul>
|
46 |
+
</div>
|
views/wizard/intro.php
CHANGED
@@ -1,27 +1,28 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* The Template for displaying wizard intro step.
|
4 |
-
*
|
5 |
-
* @since 1.0.0
|
6 |
-
* @package TInvWishlist\Wizard\Template
|
7 |
-
*/
|
8 |
-
|
9 |
-
if ( ! defined( 'ABSPATH' ) ) {
|
10 |
-
exit; // Exit if accessed directly.
|
11 |
-
}
|
12 |
-
|
13 |
-
?>
|
14 |
-
<div class="tinwl-inner tinwl-intro">
|
15 |
-
<h2 class="tinvwl-sub-title"><?php esc_html_e( 'Setup Wizard', 'ti-woocommerce-wishlist' ); ?></h2>
|
16 |
-
<h1 class="tinvwl-title"><?php esc_html_e( 'Welcome!', 'ti-woocommerce-wishlist' ); ?></h1>
|
17 |
-
<div class="tinvwl-thumb">
|
18 |
-
<i class="wizard_setup"></i>
|
19 |
-
</div>
|
20 |
-
<div class="tinvwl-desc"><?php
|
21 |
-
esc_html_e( 'Thank you for choosing the Wishlist plugin by TemplateInvaders to enhance your WooCommerce store!', 'ti-woocommerce-wishlist' );
|
22 |
-
esc_html_e( 'This quick setup wizard will help you configure the basic settings.', 'ti-woocommerce-wishlist' );
|
23 |
-
?></div>
|
24 |
-
<?php echo TInvWL_Form::_button_submit( 'continue', '<i class="ftinvwl ftinvwl-magic"></i>' . __( 'let’s go', 'ti-woocommerce-wishlist' ), array( 'class' => 'tinvwl-btn red w-icon xl-icon round' ) ); // WPCS: xss ok. ?>
|
25 |
-
<div class="tinv-wishlist-clear"></div>
|
26 |
-
<a class="tinvwl-skip"
|
27 |
-
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* The Template for displaying wizard intro step.
|
4 |
+
*
|
5 |
+
* @since 1.0.0
|
6 |
+
* @package TInvWishlist\Wizard\Template
|
7 |
+
*/
|
8 |
+
|
9 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
10 |
+
exit; // Exit if accessed directly.
|
11 |
+
}
|
12 |
+
|
13 |
+
?>
|
14 |
+
<div class="tinwl-inner tinwl-intro">
|
15 |
+
<h2 class="tinvwl-sub-title"><?php esc_html_e( 'Setup Wizard', 'ti-woocommerce-wishlist' ); ?></h2>
|
16 |
+
<h1 class="tinvwl-title"><?php esc_html_e( 'Welcome!', 'ti-woocommerce-wishlist' ); ?></h1>
|
17 |
+
<div class="tinvwl-thumb">
|
18 |
+
<i class="wizard_setup"></i>
|
19 |
+
</div>
|
20 |
+
<div class="tinvwl-desc"><?php
|
21 |
+
esc_html_e( 'Thank you for choosing the Wishlist plugin by TemplateInvaders to enhance your WooCommerce store!', 'ti-woocommerce-wishlist' );
|
22 |
+
esc_html_e( 'This quick setup wizard will help you configure the basic settings.', 'ti-woocommerce-wishlist' );
|
23 |
+
?></div>
|
24 |
+
<?php echo TInvWL_Form::_button_submit( 'continue', '<i class="ftinvwl ftinvwl-magic"></i>' . __( 'let’s go', 'ti-woocommerce-wishlist' ), array( 'class' => 'tinvwl-btn red w-icon xl-icon round' ) ); // WPCS: xss ok. ?>
|
25 |
+
<div class="tinv-wishlist-clear"></div>
|
26 |
+
<a class="tinvwl-skip"
|
27 |
+
href="<?php echo esc_url( admin_url() ); ?>"><?php esc_html_e( 'Not Right Now', 'ti-woocommerce-wishlist' ); ?></a>
|
28 |
+
</div>
|
views/wizard/step-button.php
CHANGED
@@ -18,10 +18,11 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
18 |
</div>
|
19 |
|
20 |
<div class="tinvwl-desc">
|
21 |
-
<?php esc_html_e( 'Choose where to place “Add to Wishlist” button on the product page: before or after “Add to Cart” button.', 'ti-woocommerce-wishlist' );
|
|
|
22 |
<?php
|
23 |
$links = array(
|
24 |
-
|
25 |
);
|
26 |
printf( __( 'And set button text. You can add an icon, change button appearance and other settings in %s.', 'ti-woocommerce-wishlist' ), implode( __( ' and ', 'ti-woocommerce-wishlist' ), $links ) ); // WPCS: xss ok.
|
27 |
?>
|
@@ -73,7 +74,8 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
73 |
|
74 |
<div class="tinvwl-nav tinv-wishlist-clearfix">
|
75 |
<div class="tinvwl-next">
|
76 |
-
<a class="tinvwl-skip"
|
|
|
77 |
<?php echo TInvWL_Form::_button_submit( 'nextstep', __( 'continue', 'ti-woocommerce-wishlist' ), array( 'class' => 'tinvwl-btn red w-icon round' ) ); // WPCS: xss ok. ?>
|
78 |
</div>
|
79 |
</div>
|
18 |
</div>
|
19 |
|
20 |
<div class="tinvwl-desc">
|
21 |
+
<?php esc_html_e( 'Choose where to place “Add to Wishlist” button on the product page: before or after “Add to Cart” button.', 'ti-woocommerce-wishlist' ); ?>
|
22 |
+
<br/>
|
23 |
<?php
|
24 |
$links = array(
|
25 |
+
sprintf( '<a target="_blank" href="%s">%s</a>', esc_url( self::admin_url( 'style-settings' ) ), __( 'TI Wishlists > Style Options', 'ti-woocommerce-wishlist' ) ),
|
26 |
);
|
27 |
printf( __( 'And set button text. You can add an icon, change button appearance and other settings in %s.', 'ti-woocommerce-wishlist' ), implode( __( ' and ', 'ti-woocommerce-wishlist' ), $links ) ); // WPCS: xss ok.
|
28 |
?>
|
74 |
|
75 |
<div class="tinvwl-nav tinv-wishlist-clearfix">
|
76 |
<div class="tinvwl-next">
|
77 |
+
<a class="tinvwl-skip"
|
78 |
+
href="<?php echo esc_url( add_query_arg( 'step', absint( filter_input( INPUT_GET, 'step' ) ) + 1, set_url_scheme( ( is_ssl() ? 'https://' : 'http://' ) . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] ) ) ); // @codingStandardsIgnoreLine WordPress.VIP.SuperGlobalInputUsage.AccessDetected ?>"><?php esc_html_e( 'Skip this step', 'ti-woocommerce-wishlist' ); ?></a>
|
79 |
<?php echo TInvWL_Form::_button_submit( 'nextstep', __( 'continue', 'ti-woocommerce-wishlist' ), array( 'class' => 'tinvwl-btn red w-icon round' ) ); // WPCS: xss ok. ?>
|
80 |
</div>
|
81 |
</div>
|
views/wizard/step-page-field.php
CHANGED
@@ -1,45 +1,47 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* The Template for displaying wizard field for page step.
|
4 |
-
*
|
5 |
-
* @since 1.0.0
|
6 |
-
* @package TInvWishlist\Wizard\Template
|
7 |
-
*/
|
8 |
-
|
9 |
-
if ( ! defined( 'ABSPATH' ) ) {
|
10 |
-
exit; // Exit if accessed directly.
|
11 |
-
}
|
12 |
-
|
13 |
-
?>
|
14 |
-
<div class="form-horizontal">
|
15 |
-
<div class="form-group">
|
16 |
-
<?php echo TInvWL_Form::_label( sprintf( 'page_%s', $key ), $label, array( 'class' => 'col-md-6 control-label' ) ); // WPCS: xss ok. ?>
|
17 |
-
<div class="tinvwl-page-select <?php echo $page_field['error'] ? esc_attr( 'tinvwl-error ' ) : '' ?>col-md-6">
|
18 |
-
<?php if ( $page_field['error'] ) : ?><span class="tinvwl-error-icon"><i
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
echo TInvWL_Form::
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
</div>
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
</div>
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* The Template for displaying wizard field for page step.
|
4 |
+
*
|
5 |
+
* @since 1.0.0
|
6 |
+
* @package TInvWishlist\Wizard\Template
|
7 |
+
*/
|
8 |
+
|
9 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
10 |
+
exit; // Exit if accessed directly.
|
11 |
+
}
|
12 |
+
|
13 |
+
?>
|
14 |
+
<div class="form-horizontal">
|
15 |
+
<div class="form-group">
|
16 |
+
<?php echo TInvWL_Form::_label( sprintf( 'page_%s', $key ), $label, array( 'class' => 'col-md-6 control-label' ) ); // WPCS: xss ok. ?>
|
17 |
+
<div class="tinvwl-page-select <?php echo $page_field['error'] ? esc_attr( 'tinvwl-error ' ) : '' ?>col-md-6">
|
18 |
+
<?php if ( $page_field['error'] ) : ?><span class="tinvwl-error-icon"><i
|
19 |
+
class="ftinvwl ftinvwl-exclamation-triangle"></i></span><?php endif; ?>
|
20 |
+
<?php
|
21 |
+
$select_extra = array(
|
22 |
+
'class' => 'form-control',
|
23 |
+
'tiwl-show' => sprintf( '.tinvwl-page-%s-new', $key ),
|
24 |
+
'tiwl-value' => - 100,
|
25 |
+
);
|
26 |
+
if ( $page_field['error'] ) {
|
27 |
+
$select_extra['required'] = 'required';
|
28 |
+
}
|
29 |
+
echo TInvWL_Form::_select( sprintf( 'page_%s', $key ), $page_field['value'], $select_extra, $page_field['options'] ); // WPCS: xss ok.
|
30 |
+
echo TInvWL_Form::_text( array( // WPCS: xss ok.
|
31 |
+
'name' => sprintf( 'page_%s_auto', $key ),
|
32 |
+
'type' => 'hidden',
|
33 |
+
), $page_field['error'] ? 0 : 1 );
|
34 |
+
?>
|
35 |
+
<?php if ( $page_field['error'] ) : ?>
|
36 |
+
<div class="tinvwl-error-desc"><?php printf( __( 'Page with name “%s” aready exist! Please choose another page or create a new one', 'ti-woocommerce-wishlist' ), esc_html( $page_field['new_value'] ) ); // WPCS: xss ok. ?></div><?php endif; ?>
|
37 |
+
</div>
|
38 |
+
</div>
|
39 |
+
</div>
|
40 |
+
<div class="tinvwl-page-<?php echo esc_attr( $key ); ?>-new form-horizontal">
|
41 |
+
<div class="form-group">
|
42 |
+
<div class="col-md-6"> </div>
|
43 |
+
<div class="col-md-6">
|
44 |
+
<?php echo TInvWL_Form::_text( sprintf( 'page_%s_new', $key ), $page_field['new_value'], array( 'class' => 'form-control' ) ); // WPCS: xss ok. ?>
|
45 |
+
</div>
|
46 |
+
</div>
|
47 |
+
</div>
|
views/wizard/step-page.php
CHANGED
@@ -1,57 +1,65 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* The Template for displaying wizard page step.
|
4 |
-
*
|
5 |
-
* @since 1.0.0
|
6 |
-
* @package TInvWishlist\Wizard\Template
|
7 |
-
*/
|
8 |
-
|
9 |
-
if ( ! defined( 'ABSPATH' ) ) {
|
10 |
-
exit; // Exit if accessed directly.
|
11 |
-
}
|
12 |
-
|
13 |
-
?>
|
14 |
-
<div class="tinwl-inner">
|
15 |
-
<div class="tinvwl-title-wrap">
|
16 |
-
<h1><?php esc_html_e( 'Page Setup', 'ti-woocommerce-wishlist' ); ?></h1>
|
17 |
-
<div class="tinvwl-desc">
|
18 |
-
<?php esc_html_e( 'The following page needs to be applied so the “Wishlist” knows where it is. ', 'ti-woocommerce-wishlist' );
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
<div class="tinvwl-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
</div>
|
57 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* The Template for displaying wizard page step.
|
4 |
+
*
|
5 |
+
* @since 1.0.0
|
6 |
+
* @package TInvWishlist\Wizard\Template
|
7 |
+
*/
|
8 |
+
|
9 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
10 |
+
exit; // Exit if accessed directly.
|
11 |
+
}
|
12 |
+
|
13 |
+
?>
|
14 |
+
<div class="tinwl-inner">
|
15 |
+
<div class="tinvwl-title-wrap">
|
16 |
+
<h1><?php esc_html_e( 'Page Setup', 'ti-woocommerce-wishlist' ); ?></h1>
|
17 |
+
<div class="tinvwl-desc">
|
18 |
+
<?php esc_html_e( 'The following page needs to be applied so the “Wishlist” knows where it is. ', 'ti-woocommerce-wishlist' ); ?>
|
19 |
+
<br/>
|
20 |
+
<?php esc_html_e( 'Choose from existing pages or leave this field empty and the Wishlist page will be created automatically:', 'ti-woocommerce-wishlist' ); ?>
|
21 |
+
</div>
|
22 |
+
</div>
|
23 |
+
|
24 |
+
<div class="tinvwl-separator"></div>
|
25 |
+
|
26 |
+
<div class="form-horizontal">
|
27 |
+
<div class="form-group">
|
28 |
+
<?php echo TInvWL_Form::_label( 'general_default_title', __( 'Default Wishlist Name', 'ti-woocommerce-wishlist' ), array( 'class' => 'col-md-6 control-label' ) ); // WPCS: xss ok. ?>
|
29 |
+
<div class="col-md-6">
|
30 |
+
<?php echo TInvWL_Form::_text( 'general_default_title', $general_default_title_value, array(
|
31 |
+
'required' => 'required',
|
32 |
+
'class' => 'form-control'
|
33 |
+
) ); // WPCS: xss ok. ?>
|
34 |
+
</div>
|
35 |
+
</div>
|
36 |
+
</div>
|
37 |
+
|
38 |
+
<?php
|
39 |
+
foreach (
|
40 |
+
array(
|
41 |
+
'wishlist' => __( 'My Wishlist', 'ti-woocommerce-wishlist' ),
|
42 |
+
) as $key => $label
|
43 |
+
) {
|
44 |
+
TInvWL_View::view( 'step-page-field', array(
|
45 |
+
'key' => $key,
|
46 |
+
'label' => $label,
|
47 |
+
'page_field' => $page_pages[ $key ],
|
48 |
+
), 'wizard' );
|
49 |
+
} ?>
|
50 |
+
|
51 |
+
<div class="tinvwl-separator"></div>
|
52 |
+
|
53 |
+
<div class="tinvwl-desc">
|
54 |
+
<?php esc_html_e( 'Once created, this page can be managed from WordPress dashboard.', 'ti-woocommerce-wishlist' ); ?>
|
55 |
+
<br/>
|
56 |
+
</div>
|
57 |
+
|
58 |
+
<div class="tinvwl-nav tinv-wishlist-clearfix">
|
59 |
+
<div class="tinvwl-next">
|
60 |
+
<a class="tinvwl-skip"
|
61 |
+
href="<?php echo esc_url( add_query_arg( 'step', absint( filter_input( INPUT_GET, 'step' ) ) + 1, set_url_scheme( ( is_ssl() ? 'https://' : 'http://' ) . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] ) ) ); // @codingStandardsIgnoreLine WordPress.VIP.SuperGlobalInputUsage.AccessDetected ?>"><?php esc_html_e( 'Skip this step', 'ti-woocommerce-wishlist' ); ?></a>
|
62 |
+
<?php echo TInvWL_Form::_button_submit( 'nextstep', __( 'continue', 'ti-woocommerce-wishlist' ), array( 'class' => 'tinvwl-btn red w-icon round' ) ); // WPCS: xss ok. ?>
|
63 |
+
</div>
|
64 |
+
</div>
|
65 |
+
</div>
|
views/wizard/step-processing.php
CHANGED
@@ -23,7 +23,10 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
23 |
<div class="form-group">
|
24 |
<?php echo TInvWL_Form::_label( 'processing_autoremove', __( 'How products should be removed from Wishlist?', 'ti-woocommerce-wishlist' ), array( 'class' => 'col-md-6 control-label' ) ); // WPCS: xss ok. ?>
|
25 |
<div class="col-md-6">
|
26 |
-
<?php echo TInvWL_Form::_select( 'processing_autoremove', $processing_autoremove_value, array( 'class'
|
|
|
|
|
|
|
27 |
</div>
|
28 |
</div>
|
29 |
</div>
|
@@ -32,7 +35,8 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
32 |
|
33 |
<div class="tinvwl-nav tinv-wishlist-clearfix">
|
34 |
<div class="tinvwl-next">
|
35 |
-
<a class="tinvwl-skip"
|
|
|
36 |
<?php echo TInvWL_Form::_button_submit( 'nextstep', __( 'continue', 'ti-woocommerce-wishlist' ), array( 'class' => 'tinvwl-btn red w-icon round' ) ); // WPCS: xss ok. ?>
|
37 |
</div>
|
38 |
</div>
|
23 |
<div class="form-group">
|
24 |
<?php echo TInvWL_Form::_label( 'processing_autoremove', __( 'How products should be removed from Wishlist?', 'ti-woocommerce-wishlist' ), array( 'class' => 'col-md-6 control-label' ) ); // WPCS: xss ok. ?>
|
25 |
<div class="col-md-6">
|
26 |
+
<?php echo TInvWL_Form::_select( 'processing_autoremove', $processing_autoremove_value, array( 'class' => 'form-control',
|
27 |
+
'tiwl-show' => '.tinvwl-processing-autoremove-status',
|
28 |
+
'tiwl-value' => 'auto'
|
29 |
+
), $processing_autoremove_options ); // WPCS: xss ok. ?>
|
30 |
</div>
|
31 |
</div>
|
32 |
</div>
|
35 |
|
36 |
<div class="tinvwl-nav tinv-wishlist-clearfix">
|
37 |
<div class="tinvwl-next">
|
38 |
+
<a class="tinvwl-skip"
|
39 |
+
href="<?php echo esc_url( add_query_arg( 'step', absint( filter_input( INPUT_GET, 'step' ) ) + 1, set_url_scheme( ( is_ssl() ? 'https://' : 'http://' ) . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] ) ) ); // @codingStandardsIgnoreLine WordPress.VIP.SuperGlobalInputUsage.AccessDetected ?>"><?php esc_html_e( 'Skip this step', 'ti-woocommerce-wishlist' ); ?></a>
|
40 |
<?php echo TInvWL_Form::_button_submit( 'nextstep', __( 'continue', 'ti-woocommerce-wishlist' ), array( 'class' => 'tinvwl-btn red w-icon round' ) ); // WPCS: xss ok. ?>
|
41 |
</div>
|
42 |
</div>
|
views/wizard/step-social.php
CHANGED
@@ -1,88 +1,89 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* The Template for displaying wizard social step.
|
4 |
-
*
|
5 |
-
* @since 1.0.0
|
6 |
-
* @package TInvWishlist\Wizard\Template
|
7 |
-
*/
|
8 |
-
|
9 |
-
if ( ! defined( 'ABSPATH' ) ) {
|
10 |
-
exit; // Exit if accessed directly.
|
11 |
-
}
|
12 |
-
|
13 |
-
?>
|
14 |
-
<div class="tinwl-inner">
|
15 |
-
<div class="row">
|
16 |
-
<div>
|
17 |
-
<div class="tinvwl-title-wrap">
|
18 |
-
<h1><?php esc_html_e( 'Share', 'ti-woocommerce-wishlist' ); ?></h1>
|
19 |
-
<div class="tinvwl-separator"></div>
|
20 |
-
</div>
|
21 |
-
|
22 |
-
<div class="tinvwl-desc"><?php esc_html_e( 'Allow people to share wishlists by adding social share buttons to Wishlist page.', 'ti-woocommerce-wishlist' ); ?></div>
|
23 |
-
|
24 |
-
<div class="form-horizontal">
|
25 |
-
<div class="form-group">
|
26 |
-
<?php echo TInvWL_Form::_label( 'social_facebook', __( 'Show "Facebook" Button', 'ti-woocommerce-wishlist' ), array( 'class' => 'col-md-6 control-label' ) ); // WPCS: xss ok. ?>
|
27 |
-
<div class="col-md-6">
|
28 |
-
<?php echo TInvWL_Form::_checkboxonoff( 'social_facebook', $social_facebook_value ); // WPCS: xss ok. ?>
|
29 |
-
</div>
|
30 |
-
</div>
|
31 |
-
</div>
|
32 |
-
|
33 |
-
<div class="form-horizontal">
|
34 |
-
<div class="form-group">
|
35 |
-
<?php echo TInvWL_Form::_label( 'social_twitter', __( 'Show "Twitter" Button', 'ti-woocommerce-wishlist' ), array( 'class' => 'col-md-6 control-label' ) ); // WPCS: xss ok. ?>
|
36 |
-
<div class="col-md-6">
|
37 |
-
<?php echo TInvWL_Form::_checkboxonoff( 'social_twitter', $social_twitter_value ); // WPCS: xss ok. ?>
|
38 |
-
</div>
|
39 |
-
</div>
|
40 |
-
</div>
|
41 |
-
|
42 |
-
<div class="form-horizontal">
|
43 |
-
<div class="form-group">
|
44 |
-
<?php echo TInvWL_Form::_label( 'social_pinterest', __( 'Show "Pinterest" Button', 'ti-woocommerce-wishlist' ), array( 'class' => 'col-md-6 control-label' ) ); // WPCS: xss ok. ?>
|
45 |
-
<div class="col-md-6">
|
46 |
-
<?php echo TInvWL_Form::_checkboxonoff( 'social_pinterest', $social_pinterest_value ); // WPCS: xss ok. ?>
|
47 |
-
</div>
|
48 |
-
</div>
|
49 |
-
</div>
|
50 |
-
|
51 |
-
<div class="form-horizontal">
|
52 |
-
<div class="form-group">
|
53 |
-
<?php echo TInvWL_Form::_label( 'social_whatsapp', __( 'Show "WhatsApp" Button', 'ti-woocommerce-wishlist' ), array( 'class' => 'col-md-6 control-label' ) ); // WPCS: xss ok. ?>
|
54 |
-
<div class="col-md-6">
|
55 |
-
<?php echo TInvWL_Form::_checkboxonoff( 'social_whatsapp', $social_whatsapp_value ); // WPCS: xss ok. ?>
|
56 |
-
</div>
|
57 |
-
</div>
|
58 |
-
</div>
|
59 |
-
|
60 |
-
<div class="form-horizontal">
|
61 |
-
<div class="form-group">
|
62 |
-
<?php echo TInvWL_Form::_label( 'social_clipboard', __( 'Show "Clipboard" Button', 'ti-woocommerce-wishlist' ), array( 'class' => 'col-md-6 control-label' ) ); // WPCS: xss ok. ?>
|
63 |
-
<div class="col-md-6">
|
64 |
-
<?php echo TInvWL_Form::_checkboxonoff( 'social_clipboard', $social_clipboard_value ); // WPCS: xss ok. ?>
|
65 |
-
</div>
|
66 |
-
</div>
|
67 |
-
</div>
|
68 |
-
|
69 |
-
<div class="form-horizontal">
|
70 |
-
<div class="form-group">
|
71 |
-
<?php echo TInvWL_Form::_label( 'social_email', __( 'Show "Share by Email" Button', 'ti-woocommerce-wishlist' ), array( 'class' => 'col-md-6 control-label' ) ); // WPCS: xss ok. ?>
|
72 |
-
<div class="col-md-6">
|
73 |
-
<?php echo TInvWL_Form::_checkboxonoff( 'social_email', $social_email_value ); // WPCS: xss ok. ?>
|
74 |
-
</div>
|
75 |
-
</div>
|
76 |
-
</div>
|
77 |
-
</div>
|
78 |
-
</div>
|
79 |
-
|
80 |
-
<div class="tinvwl-separator"></div>
|
81 |
-
|
82 |
-
<div class="tinvwl-nav tinv-wishlist-clearfix">
|
83 |
-
<div class="tinvwl-next">
|
84 |
-
<a class="tinvwl-skip"
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
</div>
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* The Template for displaying wizard social step.
|
4 |
+
*
|
5 |
+
* @since 1.0.0
|
6 |
+
* @package TInvWishlist\Wizard\Template
|
7 |
+
*/
|
8 |
+
|
9 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
10 |
+
exit; // Exit if accessed directly.
|
11 |
+
}
|
12 |
+
|
13 |
+
?>
|
14 |
+
<div class="tinwl-inner">
|
15 |
+
<div class="row">
|
16 |
+
<div>
|
17 |
+
<div class="tinvwl-title-wrap">
|
18 |
+
<h1><?php esc_html_e( 'Share', 'ti-woocommerce-wishlist' ); ?></h1>
|
19 |
+
<div class="tinvwl-separator"></div>
|
20 |
+
</div>
|
21 |
+
|
22 |
+
<div class="tinvwl-desc"><?php esc_html_e( 'Allow people to share wishlists by adding social share buttons to Wishlist page.', 'ti-woocommerce-wishlist' ); ?></div>
|
23 |
+
|
24 |
+
<div class="form-horizontal">
|
25 |
+
<div class="form-group">
|
26 |
+
<?php echo TInvWL_Form::_label( 'social_facebook', __( 'Show "Facebook" Button', 'ti-woocommerce-wishlist' ), array( 'class' => 'col-md-6 control-label' ) ); // WPCS: xss ok. ?>
|
27 |
+
<div class="col-md-6">
|
28 |
+
<?php echo TInvWL_Form::_checkboxonoff( 'social_facebook', $social_facebook_value ); // WPCS: xss ok. ?>
|
29 |
+
</div>
|
30 |
+
</div>
|
31 |
+
</div>
|
32 |
+
|
33 |
+
<div class="form-horizontal">
|
34 |
+
<div class="form-group">
|
35 |
+
<?php echo TInvWL_Form::_label( 'social_twitter', __( 'Show "Twitter" Button', 'ti-woocommerce-wishlist' ), array( 'class' => 'col-md-6 control-label' ) ); // WPCS: xss ok. ?>
|
36 |
+
<div class="col-md-6">
|
37 |
+
<?php echo TInvWL_Form::_checkboxonoff( 'social_twitter', $social_twitter_value ); // WPCS: xss ok. ?>
|
38 |
+
</div>
|
39 |
+
</div>
|
40 |
+
</div>
|
41 |
+
|
42 |
+
<div class="form-horizontal">
|
43 |
+
<div class="form-group">
|
44 |
+
<?php echo TInvWL_Form::_label( 'social_pinterest', __( 'Show "Pinterest" Button', 'ti-woocommerce-wishlist' ), array( 'class' => 'col-md-6 control-label' ) ); // WPCS: xss ok. ?>
|
45 |
+
<div class="col-md-6">
|
46 |
+
<?php echo TInvWL_Form::_checkboxonoff( 'social_pinterest', $social_pinterest_value ); // WPCS: xss ok. ?>
|
47 |
+
</div>
|
48 |
+
</div>
|
49 |
+
</div>
|
50 |
+
|
51 |
+
<div class="form-horizontal">
|
52 |
+
<div class="form-group">
|
53 |
+
<?php echo TInvWL_Form::_label( 'social_whatsapp', __( 'Show "WhatsApp" Button', 'ti-woocommerce-wishlist' ), array( 'class' => 'col-md-6 control-label' ) ); // WPCS: xss ok. ?>
|
54 |
+
<div class="col-md-6">
|
55 |
+
<?php echo TInvWL_Form::_checkboxonoff( 'social_whatsapp', $social_whatsapp_value ); // WPCS: xss ok. ?>
|
56 |
+
</div>
|
57 |
+
</div>
|
58 |
+
</div>
|
59 |
+
|
60 |
+
<div class="form-horizontal">
|
61 |
+
<div class="form-group">
|
62 |
+
<?php echo TInvWL_Form::_label( 'social_clipboard', __( 'Show "Clipboard" Button', 'ti-woocommerce-wishlist' ), array( 'class' => 'col-md-6 control-label' ) ); // WPCS: xss ok. ?>
|
63 |
+
<div class="col-md-6">
|
64 |
+
<?php echo TInvWL_Form::_checkboxonoff( 'social_clipboard', $social_clipboard_value ); // WPCS: xss ok. ?>
|
65 |
+
</div>
|
66 |
+
</div>
|
67 |
+
</div>
|
68 |
+
|
69 |
+
<div class="form-horizontal">
|
70 |
+
<div class="form-group">
|
71 |
+
<?php echo TInvWL_Form::_label( 'social_email', __( 'Show "Share by Email" Button', 'ti-woocommerce-wishlist' ), array( 'class' => 'col-md-6 control-label' ) ); // WPCS: xss ok. ?>
|
72 |
+
<div class="col-md-6">
|
73 |
+
<?php echo TInvWL_Form::_checkboxonoff( 'social_email', $social_email_value ); // WPCS: xss ok. ?>
|
74 |
+
</div>
|
75 |
+
</div>
|
76 |
+
</div>
|
77 |
+
</div>
|
78 |
+
</div>
|
79 |
+
|
80 |
+
<div class="tinvwl-separator"></div>
|
81 |
+
|
82 |
+
<div class="tinvwl-nav tinv-wishlist-clearfix">
|
83 |
+
<div class="tinvwl-next">
|
84 |
+
<a class="tinvwl-skip"
|
85 |
+
href="<?php echo esc_url( add_query_arg( 'step', absint( filter_input( INPUT_GET, 'step' ) ) + 1, set_url_scheme( ( is_ssl() ? 'https://' : 'http://' ) . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] ) ) ); // @codingStandardsIgnoreLine WordPress.VIP.SuperGlobalInputUsage.AccessDetected ?>"><?php esc_html_e( 'Skip this step', 'ti-woocommerce-wishlist' ); ?></a>
|
86 |
+
<?php echo TInvWL_Form::_button_submit( 'nextstep', __( 'continue', 'ti-woocommerce-wishlist' ), array( 'class' => 'tinvwl-btn red w-icon round' ) ); // WPCS: xss ok. ?>
|
87 |
+
</div>
|
88 |
+
</div>
|
89 |
+
</div>
|
wpm-config.json
CHANGED
@@ -1,37 +1,37 @@
|
|
1 |
-
{
|
2 |
-
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
}
|
1 |
+
{
|
2 |
+
"admin_pages": [
|
3 |
+
"toplevel_page_tinvwl"
|
4 |
+
],
|
5 |
+
"options": {
|
6 |
+
"tinvwl-general": {
|
7 |
+
"default_title": {},
|
8 |
+
"text_browse": {},
|
9 |
+
"text_added_to": {},
|
10 |
+
"text_already_in": {},
|
11 |
+
"text_removed_from": {}
|
12 |
+
},
|
13 |
+
"tinvwl-add_to_wishlist": {
|
14 |
+
"text": {},
|
15 |
+
"text_remove": {},
|
16 |
+
"text_already_on": {}
|
17 |
+
},
|
18 |
+
"tinvwl-add_to_wishlist_catalog": {
|
19 |
+
"text": {},
|
20 |
+
"text_remove": {},
|
21 |
+
"text_already_on": {}
|
22 |
+
},
|
23 |
+
"tinvwl-product_table": {
|
24 |
+
"text_add_to_cart": {}
|
25 |
+
},
|
26 |
+
"tinvwl-table": {
|
27 |
+
"text_add_select_to_cart": {},
|
28 |
+
"text_add_all_to_cart": {}
|
29 |
+
},
|
30 |
+
"tinvwl-social": {
|
31 |
+
"share_on": {}
|
32 |
+
},
|
33 |
+
"tinvwl-topline": {
|
34 |
+
"text": {}
|
35 |
+
}
|
36 |
+
}
|
37 |
+
}
|