WP-Chatbot for Facebook Messenger Customer Chat - Version 4.6

Version Description

Introduced Chatbot Settings feature Bug fixes and stability

Download this release

Release Info

Developer yankovski
Plugin Icon 128x128 WP-Chatbot for Facebook Messenger Customer Chat
Version 4.6
Comparing to
See all releases

Code changes from version 4.5 to 4.6

admin/admin.php CHANGED
@@ -1,112 +1,112 @@
1
- <?php
2
- /**
3
- * Central file for admin
4
- *
5
- * @package htcc
6
- * @subpackage Admin
7
- * @since 1.0.0
8
- *
9
- * subpackage Admin loads only on wp-admin
10
- */
11
-
12
-
13
- if ( ! defined( 'ABSPATH' ) ) exit;
14
-
15
- require_once(HTCC_PLUGIN_DIR . 'inc/MobileMonkeyApi.php');
16
-
17
- require_once('class-htcc-lang.php');
18
-
19
- require_once('class-htcc-countries.php');
20
-
21
- require_once('class-htcc-admin.php');
22
-
23
-
24
- require_once('class-htcc-enqueue.php');
25
-
26
-
27
- $admin = new HTCC_Admin();
28
- $api = new MobileMonkeyApi();
29
- add_action('admin_menu', array( $admin, 'htcc_options_page') );
30
- add_action( 'admin_init', array( $admin, 'htcc_custom_settings' ) );
31
- add_action( 'admin_init', array( $admin, 'htcc_incomplete_setup' ) );
32
- add_action('admin_init', 'htcc_admin_notice');
33
- add_action('admin_notices', array( $admin, 'example_admin_notice'));
34
- add_action('admin_notices', array( $admin, 'new_leads'));
35
- add_action('admin_notices', array( $admin, 'mobile_promo'));
36
- add_action('wp_ajax_send_done', array($admin,'set_tab_done'));
37
- add_action('wp_ajax_email_section', array($admin,'email_section'));
38
- add_action('wp_ajax_get_done', array($admin,'get_tab_done'));
39
- add_action('wp_ajax_main_notice', array($admin,'banner_off'));
40
- add_action('wp_ajax_cg_notice', array($admin,'cg_off'));
41
- add_action('wp_ajax_set_current_tab', array($admin,'set_current_tab'));
42
- add_action('wp_ajax_create_subscribe', array($api,'create_subscribe'));
43
- add_action('wp_ajax_cancel_subscribe', array($api,'cancel_subscribe'));
44
- add_action('wp_ajax_csv', array($api,'csv'));
45
- add_action('wp_ajax_notice_lead', array($admin,'notice_lead_off'));
46
- add_action('wp_ajax_notice_promo', array($admin,'notice_promo_off'));
47
  add_action('wp_ajax_ht_cc_admin_sidebar__hide_mobile_app_banner', array($admin,'ht_cc_admin_sidebar__hide_mobile_app_banner'));
48
-
49
-
50
-
51
-
52
- #premium
53
- if ( 'true' == HTCC_PRO ) {
54
- include_once HTCC_PLUGIN_DIR . 'admin/pro/htcc-pro-update.php';
55
- include_once HTCC_PLUGIN_DIR . 'admin/pro/class-admin-htcc-pro.php';
56
- }
57
-
58
-
59
- function htcc_admin_notice(){
60
-
61
- if (isset($_GET['activate'])&&($_GET['activate'])) {
62
- if( version_compare( get_bloginfo('version'), HTCC_WP_MIN_VERSION, '<') ) {
63
- echo '<style>.update-nag, .updated, .error, .is-dismissible ,.settings{ display: none; }</style>';
64
- echo '<style>.settings{ display: block; }</style><div class="updated error is-dismissible" style="display: block">
65
- <p>Please update to WordPress '.HTCC_WP_MIN_VERSION.' or higher in order to be compatible with this plugin</p>
66
- </div>';
67
- deactivate_plugins(HTCC_PLUGIN_FILE);
68
- }
69
- if( version_compare(PHP_VERSION, HTCC_PHP_MIN_VERSION, '<') ) {
70
- echo '<style>.update-nag, .updated, .error, .is-dismissible ,.settings{ display: none; }</style>';
71
- echo '<style>.settings{ display: block; }</style><div class="updated error is-dismissible" style="display: block">
72
- <p>Please update to PHP '.HTCC_WP_MIN_VERSION.' or higher in order to be compatible with this plugin</p>
73
- </div>';
74
- deactivate_plugins(HTCC_PLUGIN_FILE);
75
- }
76
- }
77
- }
78
-
79
- /**
80
- * ht_cc_service_content - by default there is no option ..
81
- * so when no option exists .. so it not equal to 'hide'
82
- * so in admin sidebar the service content will display . .
83
- * if clicks on hide box ..
84
- * then an option update will happen ( create an option )
85
- *
86
- */
87
- add_action( 'wp_ajax_ht_cc_service_content', 'ht_cc_service_content_ajax' );
88
-
89
- function ht_cc_service_content_ajax() {
90
-
91
- $service_content = get_option( 'ht_cc_service_content' );
92
-
93
- // wp_localize_script can use - but this may be easy, as only one value ..
94
- echo $service_content;
95
-
96
- wp_die();
97
- }
98
-
99
-
100
-
101
- // action - ht_cc_service_content_hide
102
- // update the option ht_cc_service_content to hide
103
- add_action( 'wp_ajax_ht_cc_service_content_hide', 'ht_cc_service_content_hide_ajax' );
104
-
105
- function ht_cc_service_content_hide_ajax() {
106
-
107
- $service_content = get_option( 'ht_cc_service_content' );
108
-
109
- update_option( 'ht_cc_service_content', 'hide' );
110
-
111
- wp_die();
112
  }
1
+ <?php
2
+ /**
3
+ * Central file for admin
4
+ *
5
+ * @package htcc
6
+ * @subpackage Admin
7
+ * @since 1.0.0
8
+ *
9
+ * subpackage Admin loads only on wp-admin
10
+ */
11
+
12
+
13
+ if ( ! defined( 'ABSPATH' ) ) exit;
14
+
15
+ require_once(HTCC_PLUGIN_DIR . 'inc/MobileMonkeyApi.php');
16
+
17
+ require_once('class-htcc-lang.php');
18
+
19
+ require_once('class-htcc-countries.php');
20
+
21
+ require_once('class-htcc-admin.php');
22
+
23
+
24
+ require_once('class-htcc-enqueue.php');
25
+
26
+
27
+ $admin = new HTCC_Admin();
28
+ $api = new MobileMonkeyApi();
29
+ add_action('admin_menu', array( $admin, 'htcc_options_page') );
30
+ add_action( 'admin_init', array( $admin, 'htcc_custom_settings' ) );
31
+ add_action( 'admin_init', array( $admin, 'htcc_incomplete_setup' ) );
32
+ add_action('admin_init', 'htcc_admin_notice');
33
+ add_action('admin_notices', array( $admin, 'example_admin_notice'));
34
+ add_action('admin_notices', array( $admin, 'new_leads'));
35
+ add_action('admin_notices', array( $admin, 'mobile_promo'));
36
+ add_action('wp_ajax_send_done', array($admin,'set_tab_done'));
37
+ add_action('wp_ajax_email_section', array($admin,'email_section'));
38
+ add_action('wp_ajax_get_done', array($admin,'get_tab_done'));
39
+ add_action('wp_ajax_main_notice', array($admin,'banner_off'));
40
+ add_action('wp_ajax_cg_notice', array($admin,'cg_off'));
41
+ add_action('wp_ajax_set_current_tab', array($admin,'set_current_tab'));
42
+ add_action('wp_ajax_create_subscribe', array($api,'create_subscribe'));
43
+ add_action('wp_ajax_cancel_subscribe', array($api,'cancel_subscribe'));
44
+ add_action('wp_ajax_csv', array($api,'csv'));
45
+ add_action('wp_ajax_notice_lead', array($admin,'notice_lead_off'));
46
+ add_action('wp_ajax_notice_promo', array($admin,'notice_promo_off'));
47
  add_action('wp_ajax_ht_cc_admin_sidebar__hide_mobile_app_banner', array($admin,'ht_cc_admin_sidebar__hide_mobile_app_banner'));
48
+
49
+
50
+
51
+
52
+ #premium
53
+ if ( 'true' == HTCC_PRO ) {
54
+ include_once HTCC_PLUGIN_DIR . 'admin/pro/htcc-pro-update.php';
55
+ include_once HTCC_PLUGIN_DIR . 'admin/pro/class-admin-htcc-pro.php';
56
+ }
57
+
58
+
59
+ function htcc_admin_notice(){
60
+
61
+ if (isset($_GET['activate'])&&($_GET['activate'])) {
62
+ if( version_compare( get_bloginfo('version'), HTCC_WP_MIN_VERSION, '<') ) {
63
+ echo '<style>.update-nag, .updated, .error, .is-dismissible ,.settings{ display: none; }</style>';
64
+ echo '<style>.settings{ display: block; }</style><div class="updated error is-dismissible" style="display: block">
65
+ <p>Please update to WordPress '.HTCC_WP_MIN_VERSION.' or higher in order to be compatible with this plugin</p>
66
+ </div>';
67
+ deactivate_plugins(HTCC_PLUGIN_FILE);
68
+ }
69
+ if( version_compare(PHP_VERSION, HTCC_PHP_MIN_VERSION, '<') ) {
70
+ echo '<style>.update-nag, .updated, .error, .is-dismissible ,.settings{ display: none; }</style>';
71
+ echo '<style>.settings{ display: block; }</style><div class="updated error is-dismissible" style="display: block">
72
+ <p>Please update to PHP '.HTCC_WP_MIN_VERSION.' or higher in order to be compatible with this plugin</p>
73
+ </div>';
74
+ deactivate_plugins(HTCC_PLUGIN_FILE);
75
+ }
76
+ }
77
+ }
78
+
79
+ /**
80
+ * ht_cc_service_content - by default there is no option ..
81
+ * so when no option exists .. so it not equal to 'hide'
82
+ * so in admin sidebar the service content will display . .
83
+ * if clicks on hide box ..
84
+ * then an option update will happen ( create an option )
85
+ *
86
+ */
87
+ add_action( 'wp_ajax_ht_cc_service_content', 'ht_cc_service_content_ajax' );
88
+
89
+ function ht_cc_service_content_ajax() {
90
+
91
+ $service_content = get_option( 'ht_cc_service_content' );
92
+
93
+ // wp_localize_script can use - but this may be easy, as only one value ..
94
+ echo $service_content;
95
+
96
+ wp_die();
97
+ }
98
+
99
+
100
+
101
+ // action - ht_cc_service_content_hide
102
+ // update the option ht_cc_service_content to hide
103
+ add_action( 'wp_ajax_ht_cc_service_content_hide', 'ht_cc_service_content_hide_ajax' );
104
+
105
+ function ht_cc_service_content_hide_ajax() {
106
+
107
+ $service_content = get_option( 'ht_cc_service_content' );
108
+
109
+ update_option( 'ht_cc_service_content', 'hide' );
110
+
111
+ wp_die();
112
  }
admin/assets/css/admin-styles.css CHANGED
@@ -1,3086 +1,3092 @@
1
- /* Styles for admin page */
2
-
3
-
4
- /* Submit button */
5
- /* .options .submit { */
6
- .submit {
7
- position: sticky !important;
8
- bottom: 1px;
9
- }
10
-
11
-
12
- .display-none {
13
- display: none;
14
- }
15
-
16
- .display-block {
17
- display: block;
18
- }
19
-
20
- .mobilemonkey-big-button {
21
- padding: 20px 40px !important;
22
- line-height: 0 !important;
23
- }
24
-
25
- .connect-button {
26
- background-color: #4267b2;
27
- border-radius: 4px;
28
- color: #fff;
29
- display: block;
30
- width: 254px;
31
- height: 40px;
32
- text-decoration: none;
33
- }
34
-
35
- .connect-button:hover, .connect-button:focus {
36
- color: #fff;
37
- }
38
-
39
- .connected-page {
40
- padding: 0 15px 15px 0;
41
- }
42
-
43
- .connected-page .connected-page-title {
44
- font-size: 16px;
45
- font-weight: 700;
46
- }
47
-
48
- .connected-page .connected-page-title span {
49
- font-weight: bold;
50
- color: green;
51
- }
52
-
53
- .connected-page-settings {
54
- position: relative;
55
- float: right;
56
- }
57
-
58
- .connected-page-settings #button_disconnect_page {
59
- cursor: pointer;
60
- background-color: #ca4646;
61
- display: inline-block;
62
- padding: 3px 8px;
63
- font-size: 12px;
64
- text-decoration: none;
65
- color: #fff;
66
- border-radius: 5px;
67
- }
68
-
69
- .connected-page-settings #button_disconnect_page:hover {
70
- color: #3a3a3a;
71
- background: #e8e8e8;
72
- }
73
-
74
- .cat-checklist {
75
- padding: 15px !important;
76
- margin-bottom: 30px !important;
77
- }
78
-
79
- .connect-button span {
80
- font-family: Helvetica, Arial, sans-serif;
81
- font-size: 14px;
82
- text-align: center;
83
- display: inline-block;
84
- width: 200px;
85
- }
86
-
87
- .connect-button svg {
88
- height: 24px;
89
- margin: 8px;
90
- display: inline-block;
91
- vertical-align: middle;
92
- }
93
-
94
- .choose-page {
95
- margin-top: 10px;
96
- }
97
-
98
- .choose-page .select-page {
99
- border: 1px solid #dedede;
100
- padding: 15px;
101
- margin-top: -1px;
102
- font-size: 16px;
103
- }
104
-
105
- .choose-page .select-page + .select-page {
106
- border-bottom: none;
107
- }
108
-
109
- .choose-page .select-page:last-child {
110
- border-bottom: 1px solid #dedede;
111
- }
112
-
113
- .choose-page .select-page a {
114
- background-color: #d93;
115
- display: inline-block;
116
- float: right;
117
- padding: 3px 8px;
118
- font-size: 12px;
119
- text-decoration: none;
120
- color: #fff;
121
- border-radius: 5px;
122
- }
123
-
124
- .choose-page .select-page a:hover {
125
- color: #3a3a3a;
126
- background: #e8e8e8;
127
- }
128
-
129
- .logout-mobilemonkey {
130
- text-align: right;
131
- margin: 0 0 15px 0;
132
- overflow: hidden;
133
- }
134
-
135
- .logout-mobilemonkey a {
136
- background-color: #d93;
137
- display: inline-block;
138
- float: right;
139
- padding: 3px 8px;
140
- font-size: 12px;
141
- text-decoration: none;
142
- color: #fff;
143
- border-radius: 5px;
144
- }
145
-
146
- .logout-mobilemonkey a:hover {
147
- color: #3a3a3a;
148
- background: #e8e8e8;
149
- }
150
-
151
- .mobilemonkey-button {
152
- margin-top: 10px;
153
- position: relative;
154
- display: inline-block;
155
- }
156
-
157
- .mobilemonkey-button button {
158
- background-color: #d93;
159
- display: inline-block;
160
- padding: 3px 8px;
161
- font-size: 12px;
162
- text-decoration: none;
163
- color: #fff;
164
- border-radius: 5px;
165
- }
166
-
167
- .mobilemonkey-button .copiedtext {
168
- color: green;
169
- display: none;
170
- }
171
-
172
- .get-subscribers_block {
173
- margin-bottom: 15px;
174
- }
175
-
176
- .get-subscribers_block h3 {
177
- margin: 0 0 10px;
178
- }
179
-
180
- .get-subscribers_block .link-icon {
181
- width: 45px;
182
- display: inline-block;
183
- margin-right: 10px;
184
- vertical-align: top;
185
- }
186
-
187
- .get-subscribers_block .link-icon path {
188
- fill: #654fa5;
189
- }
190
-
191
- .get-subscribers_block .link-info {
192
- display: inline-block;
193
- }
194
-
195
- .get-subscribers_block button {
196
- background-color: #d93;
197
- display: inline-block;
198
- border: none;
199
- padding: 5px 8px;
200
- font-size: 12px;
201
- text-decoration: none;
202
- color: #fff;
203
- border-radius: 5px;
204
- }
205
-
206
- .get-subscribers_block button:hover {
207
- cursor: pointer;
208
- color: #3a3a3a;
209
- background: #e8e8e8;
210
- }
211
-
212
- .mobilemonkey-settings {
213
- display: inline-block;
214
- }
215
-
216
- .mobilemonkey-settings, .connect-page {
217
- position: relative;
218
- }
219
-
220
- .connect-page {
221
- float: right;
222
- height: 32px;
223
- }
224
-
225
- .opacity-button {
226
- opacity: 0.3;
227
- }
228
-
229
- .lazyload {
230
- display: none;
231
- position: absolute;
232
- top: 0;
233
- background: url(../img/lazyload.svg) center no-repeat;
234
- width: 100%;
235
- bottom: 0;
236
- left: 0;
237
- }
238
- .save_change{
239
- position: relative;
240
- }
241
-
242
- .connect-page .lazyload, .connected-page-settings .lazyload {
243
- top: -8px;
244
-
245
- }
246
-
247
- .active-page-info {
248
- display: flex;
249
- align-items: flex-start;
250
- flex-direction: column;
251
- }
252
- .connect_check .fa{
253
- display: inline;
254
- }
255
- .page_name__wrap{
256
- display: flex;
257
- flex-direction: row;
258
- align-items: center;
259
- }
260
- span.pro,span.free{
261
- padding: 3px 10px 3px 10px;
262
- width: 50px;
263
- height: 25px;
264
- color: #FFFFFF;
265
- font-family: "Open Sans",sans-serif;
266
- font-size: 13px;
267
- font-weight: bold;
268
- line-height: 19px;
269
- text-align: center;
270
- border-radius: 7px;
271
- margin-left: 11px;
272
- background: -webkit-gradient(linear, left top, right top, from(#db8700), to(#f0b537));
273
- background: linear-gradient(to right, #db8700 0%, #f0b537 100%);
274
- background: -webkit-linear-gradient(left, #db8700 0%, #f0b537 100%);
275
- }
276
- span.pro{
277
- background: -webkit-gradient(linear, left top, right top, from(#db8700), to(#f0b537));
278
- background: linear-gradient(to right, #db8700 0%, #f0b537 100%);
279
- background: -webkit-linear-gradient(left, #db8700 0%, #f0b537 100%);
280
- }
281
- span.free{
282
- background: none;
283
- background-color: #C8C8CE;
284
- }
285
- /* .active-page-image, .active-page-info {
286
- display: inline-block;
287
- vertical-align: middle;
288
- } */
289
-
290
- .active-page-image {
291
- max-width: 60px;
292
- margin-right: 10px;
293
- }
294
-
295
- .toplevel_page_mobilemonkey-contacts {
296
- padding-right: 20px;
297
- }
298
-
299
- /* i.mce-i-mobilemonkey-shortcode {
300
- background-image: url('../image/tinymce_icon.png');
301
- } */
302
-
303
- .get-mm-free-button {
304
- position: relative;
305
- width: 254px;
306
- height: 40px;
307
- overflow: hidden;
308
- border-radius: 3px;
309
- }
310
-
311
- .get-mm-free-button__fallback,
312
- .get-mm-free-button__fallback:hover {
313
- text-decoration: none;
314
- }
315
-
316
- /*Fallback button and iframe:before get same styles */
317
- .get-mm-free-button__fallback, .get-mm-free-button .fb-send-to-messenger.fb_iframe_widget::before {
318
- color: #fff;
319
- font-size: 19px;
320
- line-height: 29px;
321
- text-transform: uppercase;
322
- border-radius: 3px;
323
- position: absolute;
324
- top: 0;
325
- left: 0;
326
- right: 0;
327
- bottom: 0;
328
- transition: all 0.3s ease 0s;
329
- }
330
-
331
- .get-mm-free-button .fb-send-to-messenger.fb_iframe_widget::before {
332
- pointer-events: none;
333
- z-index: 2;
334
- content: 'Connect Facebook Page';
335
- font-family: Helvetica, Arial, sans-serif;
336
- background: #4267b2 url(../img/fb.svg) 8px no-repeat;
337
- background-size: 24px;
338
- font-size: 14px;
339
- text-align: right;
340
- padding-right: 13px;
341
- box-sizing: border-box;
342
- color: #fff;
343
- width: 254px;
344
- height: 40px;
345
- line-height: 40px;
346
- text-decoration: none;
347
- text-transform: uppercase;
348
- border-radius: 3px;
349
- position: absolute;
350
- top: 0;
351
- left: 0;
352
- right: 0;
353
- bottom: 0;
354
- transition: all 0.3s ease 0s;
355
- }
356
-
357
- /* Hide Facebook plugin until rendered callback from Facebook */
358
- .get-mm-free-button .fb-send-to-messenger {
359
- display: none;
360
- }
361
-
362
- /* Add class to show Facebook plugin once get rendered callback from Facebook */
363
- .get-mm-free-button .fb-send-to-messenger.fb-send-to-messenger--loaded-iframe {
364
- display: block;
365
- }
366
-
367
- .mobilemonkey-logo {
368
- background: url(../img/mobilemonkey_logo.png) left bottom no-repeat;
369
- background-size: contain;
370
- height: 70px;
371
- max-width: 330px;
372
- position: relative;
373
- }
374
-
375
- .options-subtitle {
376
- font-size: 12px;
377
- }
378
-
379
-
380
-
381
-
382
-
383
- .switch {
384
- position: relative;
385
- display: inline-block;
386
- width: 52px;
387
- height: 25px;
388
- margin: 0;
389
- margin-right: 20px;
390
- }
391
-
392
- /* Hide default HTML checkbox */
393
- .switch input {
394
- opacity: 0;
395
- width: 0;
396
- height: 0;
397
- }
398
- .qq_label{
399
- margin-top: 5px;
400
- }
401
- /* The slider */
402
- .slider {
403
- position: absolute;
404
- cursor: pointer;
405
- top: 0;
406
- left: 0;
407
- right: 0;
408
- bottom: 0;
409
- background-color: #ccc;
410
- -webkit-transition: .4s;
411
- transition: .4s;
412
- }
413
- .switch__wrap{
414
- display: flex;
415
- margin-top: 15px;
416
- }
417
- .switch__wrap p{
418
- color: #000;
419
- }
420
- .slider:before {
421
- position: absolute;
422
- content: "";
423
- height: 18px;
424
- width: 18px;
425
- left: 4px;
426
- bottom: 4px;
427
- background-color: white;
428
- -webkit-transition: .4s;
429
- transition: .4s;
430
- }
431
-
432
- input:checked + .slider {
433
- background-color: #2196F3;
434
- }
435
-
436
- input:focus + .slider {
437
- box-shadow: 0 0 1px #2196F3;
438
- }
439
-
440
- input:checked + .slider:before {
441
- -webkit-transform: translateX(26px);
442
- -ms-transform: translateX(26px);
443
- transform: translateX(26px);
444
- }
445
-
446
- /* Rounded sliders */
447
- .slider.round {
448
- border-radius: 34px;
449
- }
450
-
451
- .slider.round:before {
452
- border-radius: 50%;
453
- }
454
-
455
- .answering-service label {
456
- display: block;
457
- margin-bottom: 10px;
458
- }
459
-
460
- .toc-tab-box .answering-service .input-field {
461
- padding-left: 0;
462
- }
463
-
464
- .toc-tab-box .answering-service h6 {
465
- font-weight: bold;
466
- }
467
-
468
- .answering-service textarea {
469
- resize: none;
470
- }
471
-
472
- .as_state p {
473
- display: inline-block;
474
- color: #444;
475
- margin-left: 20px;
476
- font-size: 1rem;
477
- font-weight: bold;
478
- vertical-align: middle;
479
- }
480
-
481
- body .toc-tab-box .answering-service input {
482
- border: 1px solid #9e9e9e;
483
- padding: 0 0 0 20px;
484
- }
485
-
486
- body .toc-tab-box .button {
487
- padding: 20px;
488
- line-height: 0;
489
- }
490
-
491
- .toc-tab-box .form-table th {
492
- width: 1px;
493
- }
494
- .form-table td p{
495
- display: block;
496
- }
497
-
498
- .form-table{
499
- position: relative;
500
- }
501
- .mm_only_block{
502
- margin-top: 20px;
503
- }
504
- .mm_only_block h6 {
505
- line-height: 1.6rem;
506
- margin: 0 0 20px 0;
507
- font-weight: 600;
508
- font-size: 16px;
509
- letter-spacing: 1px;
510
- }
511
-
512
- .mm_only_block a.go_mm{
513
- height: auto;
514
- padding: 5px 15px;
515
- border-radius: 4px;
516
- color: #fff;
517
- }
518
-
519
-
520
-
521
- .mm_only_block a.go_mm{
522
- background-color: #324ef8;
523
- }
524
- .mm_only_block .but__wrap{
525
- margin-top: 20px;
526
- display: flex;
527
- flex-direction: row;
528
- }
529
-
530
- .mm_only_block a.reset_chatbot{
531
- background-color: gray;
532
- margin-right: 2rem;
533
- border-radius: 4px;
534
- color: #fff;
535
- padding: 5px 15px;
536
- }
537
-
538
-
539
- .mm_only_block a.go_mm{
540
- background-color: #324ef8;
541
- padding: 5px 15px;
542
- }
543
- .mm_only_block .but__wrap{
544
- margin-top: 20px;
545
- display: flex;
546
- flex-direction: row;
547
- }
548
-
549
- .test-bot-button {
550
- position: absolute;
551
- right: 0;
552
- }
553
-
554
-
555
- .test-bot-button__button-wrapper {
556
- height: 29px;
557
- width: 137px;
558
- margin-bottom: 10px;
559
- overflow: hidden;
560
- border-radius: 3px;
561
- position: relative;
562
- }
563
-
564
- .test-bot-button .fb_iframe_widget {
565
- position: initial;
566
- }
567
-
568
- .fb_iframe_widget {
569
- display: inline-block;
570
- position: relative;
571
- }
572
-
573
- .test-bot-button .fb-send-to-messenger.fb_iframe_widget:before {
574
- background-color: #0084ff;
575
- border-radius: 3px;
576
- color: #fff;
577
- content: "Test your ChatBot";
578
- font-size: 14px;
579
- font-weight: 500;
580
- height: 29px;
581
- line-height: 29px;
582
- pointer-events: none;
583
- position: absolute;
584
- left: 0;
585
- top: 0;
586
- width: 140px;
587
- padding-right: 0px;
588
- z-index: 2;
589
- padding-left: 8px;
590
- -webkit-transition: background-color .3s ease-in-out;
591
- transition: background-color .3s ease-in-out;
592
- cursor: pointer;
593
- font-family: "Open Sans", sans-serif;
594
- }
595
-
596
- .fb_iframe_widget span {
597
- display: inline-block;
598
- position: relative;
599
- text-align: justify;
600
- }
601
- .sp-input{
602
- text-transform: uppercase;
603
- }
604
-
605
-
606
-
607
- body {
608
- margin-top: 100px;
609
- font-family: 'Trebuchet MS', serif;
610
- line-height: 1.6;
611
- background-color: #efefef;
612
- }
613
-
614
- .step-wrapper {
615
- margin: 0 auto;
616
- background-color: #ffffff;
617
- border-radius: 10px;
618
- margin-bottom: 100px;
619
- -webkit-box-shadow: 0px 0px 5px -2px rgba(0, 0, 0, 0.75);
620
- box-shadow: 0px 0px 5px -2px rgba(0, 0, 0, 0.75);
621
- }
622
-
623
- .step-wrapper .tab_header {
624
- display: -webkit-box;
625
- display: -ms-flexbox;
626
- display: flex;
627
- -webkit-box-align: center;
628
- -ms-flex-align: center;
629
- align-items: center;
630
- background-color: #f7f8fa;
631
- }
632
- .step-wrapper .tab-link.current span.tab_header{
633
- background-color: #ffffff;
634
- }
635
-
636
- .step-wrapper ul.tabs_wrapper {
637
- margin: 0px;
638
- padding: 0px;
639
- list-style: none;
640
- border-radius: 12px;
641
-
642
- }
643
-
644
- .step-wrapper ul li {
645
- color: #222;
646
- display: -ms-inline-flexbox;
647
- display: inline-flex;
648
- -webkit-box-align: center;
649
- -ms-flex-align: center;
650
- align-items: center;
651
- padding: 0 1em;
652
- font-size: 18px;
653
- cursor: pointer;
654
- margin-bottom: 0px;
655
- height: 50px;
656
- }
657
-
658
- .step-wrapper ul li .tab_number {
659
- width: 30px;
660
- height: 30px;
661
- display: block;
662
- background-color: #fff;
663
- display: -webkit-box;
664
- display: -ms-flexbox;
665
- display: flex;
666
- -webkit-box-align: center;
667
- -ms-flex-align: center;
668
- align-items: center;
669
- -webkit-box-pack: center;
670
- -ms-flex-pack: center;
671
- justify-content: center;
672
- border-radius: 50%;
673
- color: #3c59e4;
674
- margin-right: 0.7rem;
675
- border: 2px solid #3c59e4;
676
- }
677
-
678
- .step-wrapper ul li .tab_contacts__count {
679
- margin-left: 0.5em;
680
- background-color: #1ac9b7;
681
- padding: 0.1em 0.8em;
682
- font-size: 14px;
683
- color: #fff;
684
- border-radius: 5px;
685
- }
686
-
687
- .step-wrapper ul li.current {
688
- background-color: #fff;
689
- color: #222;
690
- border: 2px solid #3c59e4;
691
- border-bottom: 0;
692
- border-top-left-radius: 5px;
693
- border-top-right-radius: 5px;
694
- height: 52px;
695
- }
696
- .step-wrapper ul li.done .tab_number{
697
- background-color: #3c59e4;
698
- color: #fff;
699
- border: 2px solid #3c59e4;
700
- }
701
- /*.step-wrapper ul li.done.incomplete{
702
- pointer-events: none;
703
- opacity: 0.6;
704
- }*/
705
- .step-wrapper ul li.current .tab_number {
706
- background-color: #3c59e4;
707
- color: #fff;
708
- border: 2px solid #3c59e4;
709
- }
710
-
711
-
712
- .tab-content {
713
- display: none;
714
- border-bottom-right-radius: 5px;
715
- border-bottom-left-radius: 5px;
716
- }
717
-
718
- .tab-content .tab-content__wrapper {
719
- background: #fff;
720
- padding: 1em 2em;
721
- border-bottom-right-radius: 10px;
722
- border-bottom-left-radius: 10px;
723
- }
724
-
725
- .tab-content.current {
726
- display: inherit;
727
- }
728
-
729
- .tab-content h1 {
730
- color: #525252;
731
- font-family: "Open Sans",sans-serif;
732
- font-size: 36px;
733
- font-weight: bold;
734
- line-height: 49px;
735
- margin: 0 0 0.7em;
736
- }
737
-
738
- .tab-content h3 {
739
- text-transform: uppercase;
740
- color: #525252;
741
- font-family: "Open Sans",sans-serif;
742
- font-size: 16px;
743
- font-weight: 800;
744
- letter-spacing: 0.15px;
745
- line-height: 22px;
746
- margin-bottom: 0;
747
- }
748
-
749
- .tab-content p {
750
- color: #949494;
751
- font-family: "Open Sans",sans-serif;
752
- font-size: 16px;
753
- line-height: 22px;
754
- margin: 0.7em 0;
755
- }
756
-
757
- .tab-content textarea, .tab-content input[type=text]:not(.browser-default) {
758
- padding: 20px;
759
- width: 100%;
760
- border: 1px solid #979797;
761
- margin: .5em 0;
762
- line-height: 20px;
763
- border-radius: 5px;
764
- font-size: 16px;
765
- -webkit-box-sizing: border-box;
766
- box-sizing: border-box;
767
- }
768
-
769
- .tab-content .input-field {
770
- display: -webkit-box;
771
- display: -ms-flexbox;
772
- display: flex;
773
- -webkit-box-orient: vertical;
774
- -webkit-box-direction: normal;
775
- -ms-flex-direction: column;
776
- flex-direction: column;
777
- width: 100%;
778
- }
779
-
780
- .tab-content .input-field__email input[type=email]:not(.browser-default) {
781
- width: 250px;
782
- padding: .5em;
783
- background-color: #e7e7e7;
784
- -webkit-box-sizing: border-box;
785
- box-sizing: border-box;
786
- }
787
-
788
- .tab-content .upgrade_button {
789
- padding: .7em;
790
- border: none;
791
- border-radius: 5px;
792
- color: #fff;
793
- background: -webkit-gradient(linear, left top, right top, from(#db8700), to(#f0b537));
794
- background: linear-gradient(to right, #db8700 0%, #f0b537 100%);
795
- background: -webkit-linear-gradient(left, #db8700 0%, #f0b537 100%);
796
- font-size: 14px;
797
- font-weight: 600;
798
- text-decoration: none;
799
- }
800
-
801
- .tab-content .tab-content__footer {
802
- margin-top: 50px;
803
- display: -webkit-box;
804
- display: -ms-flexbox;
805
- display: flex;
806
- -webkit-box-pack: end;
807
- -ms-flex-pack: end;
808
- justify-content: flex-end;
809
- }
810
-
811
- .tab-content .button-primary{
812
- padding: 10px 30px;
813
- background-color: #324ef8;
814
- border-radius: 5px;
815
- color: #fff;
816
- text-decoration: none;
817
- text-transform: uppercase;
818
- font-size: 16px;
819
- height: auto;
820
- border: none;
821
- width: auto;
822
- }
823
- p.submit{
824
- margin-top: 30px;
825
- text-align: right;
826
- width: 100%;
827
- }
828
- .tab-content .button-primary:hover,.tab-content .button-primary:active,.tab-content .button-primary:focus {
829
- opacity: 0.75;
830
- background-color: #324ef8;
831
- border: none;
832
- }
833
-
834
-
835
- .as_row {
836
- display: -webkit-box;
837
- display: -ms-flexbox;
838
- display: flex;
839
- -webkit-box-orient: horizontal;
840
- -webkit-box-direction: normal;
841
- -ms-flex-direction: row;
842
- flex-direction: row;
843
- -webkit-box-align: center;
844
- -ms-flex-align: center;
845
- align-items: center;
846
- }
847
-
848
- .as_row .switch {
849
- position: relative;
850
- display: inline-block;
851
- width: 52px;
852
- height: 27px;
853
- margin: 0;
854
- margin-right: 20px;
855
- }
856
-
857
- .as_row .switch input {
858
- opacity: 0;
859
- width: 0;
860
- height: 0;
861
- }
862
-
863
- .as_row .slider {
864
- position: absolute;
865
- cursor: pointer;
866
- top: 0;
867
- left: 0;
868
- right: 0;
869
- bottom: 0;
870
- background-color: #ccc;
871
- -webkit-transition: .4s;
872
- transition: .4s;
873
- }
874
-
875
- .as_row .slider:before {
876
- position: absolute;
877
- content: "";
878
- height: 19px;
879
- width: 19px;
880
- left: 4px;
881
- bottom: 4px;
882
- background-color: white;
883
- -webkit-transition: .4s;
884
- transition: .4s;
885
- }
886
-
887
- .as_row input:checked + .slider {
888
- background-color: #2196F3;
889
- }
890
-
891
- .as_row input:focus + .slider {
892
- -webkit-box-shadow: 0 0 1px #2196F3;
893
- box-shadow: 0 0 1px #2196F3;
894
- }
895
-
896
- .as_row input:checked + .slider:before {
897
- -webkit-transform: translateX(25px);
898
- transform: translateX(25px);
899
- }
900
-
901
- .as_row .slider.round {
902
- border-radius: 34px;
903
- }
904
-
905
- .as_row .slider.round:before {
906
- border-radius: 50%;
907
- }
908
-
909
- .customization_button__wrapper, .pro_button__wrapper {
910
- background: -webkit-gradient(linear, left top, right top, from(#3d5afe), to(#7c4dff));
911
- background: linear-gradient(to right, #3d5afe 0%, #7c4dff 100%);
912
- padding: 1em 1.5em;
913
- border-radius: 18px;
914
- -webkit-box-shadow: 0px 0px 3px 0px rgba(0, 0, 0, 0.75);
915
- box-shadow: 0px 0px 3px 0px rgba(0, 0, 0, 0.75);
916
- }
917
- .pro_button__wrapper{
918
- position: absolute;
919
- display: flex;
920
- align-items: center;
921
- top: -4px;
922
- width: 100%;
923
- /* height: 64px;*/
924
- padding: 0 1em;
925
- left: 0;
926
- }
927
-
928
- .customization_button__wrapper .customization_button__link, .pro_button__wrapper .pro_button__link {
929
- text-decoration: none;
930
- }
931
- .pro_button__wrapper .pro_button__link{
932
- width: 100%;
933
- height: 100%;
934
- }
935
- .pro_button__wrapper .pro_button__link:focus{
936
- border: 0;
937
- box-shadow: none;
938
- height: 100%;
939
- }
940
-
941
- .customization_button__wrapper .customization_button__image {
942
- background-image: url("../img/monkey_head.png");
943
- background-size: contain;
944
- width: 45px;
945
- height: 45px;
946
- display: block;
947
- background-repeat: no-repeat;
948
- background-position: center;
949
- margin: 0 0.3em;
950
- }
951
-
952
- .customization_button__wrapper .customization_button,.pro_button__wrapper .pro_button {
953
- display: -webkit-box;
954
- display: -ms-flexbox;
955
- display: flex;
956
- -webkit-box-pack: justify;
957
- -ms-flex-pack: justify;
958
- justify-content: space-between;
959
- -webkit-box-align: center;
960
- -ms-flex-align: center;
961
- align-items: center;
962
- }
963
- .pro_button__wrapper .pro_button{
964
- display: flex;
965
- justify-content: space-between;
966
- height: 100%;
967
- }
968
-
969
- .pro_button__content{
970
- flex-direction: column;
971
- height: 100%;
972
- }
973
- .pro_button__content h3,.pro_button__content p{
974
- color: #fff;
975
- padding: 0;
976
- margin: 0;
977
- }
978
- .tab-content .form-table .pro_button__content p{
979
- margin-top: 5px;
980
- margin-bottom: 7px;
981
- }
982
- .pro_button__content h3 b{
983
- color: red;
984
- text-decoration: underline;
985
- }
986
-
987
- .customization_button__wrapper .customization_button .customization_button__content,.pro_button__wrapper .pro_button .pro_button__content {
988
- display: -webkit-box;
989
- display: -ms-flexbox;
990
- display: flex;
991
- -webkit-box-align: center;
992
- -ms-flex-align: center;
993
- align-items: center;
994
- color: #fff;
995
- font-size: 22px;
996
- font-weight: bold;
997
- line-height: 30px;
998
- justify-content: center;
999
- }
1000
-
1001
- .customization_button__wrapper .customization_button__action, .pro_button__wrapper .pro_button__action{
1002
- padding: 1em 2em;
1003
- background-color: #fff;
1004
- border-radius: 10px;
1005
- display: -webkit-box;
1006
- display: -ms-flexbox;
1007
- display: flex;
1008
- -webkit-box-align: center;
1009
- -ms-flex-align: center;
1010
- align-items: center;
1011
- }
1012
- .pro_button__wrapper .pro_button__action{
1013
- padding: 0.6rem 2rem;
1014
- }
1015
- .customization_button__wrapper .customization_button__action .button_action__text , .pro_button__wrapper .pro_button_action__text{
1016
- font-size: 18px;
1017
- font-weight: 800;
1018
- line-height: 24px;
1019
- text-transform: uppercase;
1020
- color: #7e74fe;
1021
- }
1022
-
1023
- .customize_section input, .customize_section select{
1024
- width: 30%;
1025
- }
1026
- .select-1{
1027
- margin: 15px 0;
1028
- }
1029
-
1030
- .customize_section input.select_numbers, .customize_section select.select_numbers {
1031
- width: 100px;
1032
- }
1033
-
1034
- .customize_section .greeting_display__wrapper span {
1035
- color: #949494;
1036
- font-family: "Open Sans",sans-serif;
1037
- font-size: 16px;
1038
- line-height: 22px;
1039
- margin-left: 1.2em;
1040
- }
1041
-
1042
- .list_tabs__button {
1043
- display: none;
1044
-
1045
- background-size: contain;
1046
- width: 20px;
1047
- height: 20px;
1048
- background-repeat: no-repeat;
1049
- background-position: center;
1050
- }
1051
-
1052
- .list_tabs__button .list_tabs {
1053
- display: none;
1054
- }
1055
- .form-table p.description{
1056
- font-style: normal;
1057
- }
1058
- #to_pro,#unsaved_option, #pro_option,#cancel,#mm_option {
1059
- z-index: 999;
1060
- transition: all 0.5s ease;
1061
- background-color: #FFFFFF;
1062
- display: none;
1063
- position: fixed;
1064
- top: 30%;
1065
- left: 0;
1066
- right: 0;
1067
- width: 563px;
1068
- margin: 0 auto;
1069
- color: #525252;
1070
- border: 1px solid #000;
1071
- border-radius: 10px;
1072
- }
1073
-
1074
-
1075
- #to_pro .modal_close,#unsaved_option .modal_close,#pro_option .modal_close, #mm_option .modal_close,#cancel .modal_close {
1076
- background-size: contain;
1077
- width: 15px;
1078
- height: 15px;
1079
- background-repeat: no-repeat;
1080
- background-position: center;
1081
- position: absolute;
1082
- right: 12px;
1083
- top: 12px;
1084
- cursor: pointer;
1085
- z-index: 999;
1086
- }
1087
-
1088
-
1089
- #to_pro .upgrade__wrapper,#unsaved_option .unsaved__wrapper,#cancel .cancel__wrapper,#mm_option .mm__wrapper{
1090
- position: relative;
1091
- height: 302px;
1092
- padding-top: 1em;
1093
- }
1094
-
1095
- #to_pro .upgrade__content,#unsaved_option .unsaved__content,#cancel .cancel__content,#mm_option .mm__content{
1096
- padding: 1.5em;
1097
- }
1098
-
1099
-
1100
-
1101
- #to_pro .upgrade__button, #unsaved_option .unsaved__button, #mm_option .mm__button,#cancel .cancel__button{
1102
- padding: 1.5em 2em;
1103
- text-align: center;
1104
- position: absolute;
1105
- width: 100%;
1106
- max-width: 564px;
1107
- bottom: 0px;
1108
- display: flex;
1109
- justify-content: flex-end;
1110
- align-items: baseline;
1111
- }
1112
- #unsaved_option .unsaved__button{
1113
- flex-direction: row-reverse;
1114
- justify-content: flex-start;
1115
- }
1116
-
1117
- #to_pro .upgrade__button .reds,#unsaved_option .unsaved__button .reds,#cancel .cancel__button .reds{
1118
- padding: 5px 15px;
1119
- background-color: #ca4646;
1120
- border-radius: 5px;
1121
- color: #fff;
1122
- text-decoration: none;
1123
- text-transform: uppercase;
1124
- font-size: 16px;
1125
- border: none;
1126
- flex-basis: 25%;
1127
- position: relative;
1128
- margin: 0 10px;
1129
- }
1130
- #cancel .cancel__button .reds{
1131
- flex-basis: 40%;
1132
- }
1133
- .subscribe_succes_cancel{
1134
- font-size: 19px;
1135
- padding: 20px;
1136
- height: 80%;
1137
- display: flex;
1138
- align-items: center;
1139
- }
1140
- #to_pro .upgrade__button .reds:hover,#unsaved_option .unsaved__button .reds:hover,#cancel .cancel__button .reds:hover{
1141
- opacity: 0.75;
1142
- background-color: #ca4646;
1143
- border: none;
1144
- }
1145
- #unsaved_option .unsaved__button #discard_button{
1146
- background-color: #fff;
1147
- color: #ca4646;
1148
- }
1149
- #unsaved_option .unsaved__button #discard_button:hover{
1150
- text-decoration: underline;
1151
- background-color: #fff;
1152
- opacity: 1;
1153
- }
1154
- #unsaved_option .unsaved__button #discard_button:focus{
1155
- box-shadow: none;
1156
- }
1157
- .modal a.blues{
1158
- cursor: pointer;
1159
- padding: 5px 15px;
1160
- background-color: #324ef8;
1161
- border-radius: 5px;
1162
- color: #fff;
1163
- text-decoration: none;
1164
- font-size: 16px;
1165
- border: none;
1166
- margin: 0 10px;
1167
- position: relative;
1168
- }
1169
- .modal .mm__content{
1170
- color: #525252;
1171
- }
1172
- .modal a.gray{
1173
- padding: 5px 15px;
1174
- border-radius: 5px;
1175
- background-color: gray;
1176
- cursor: pointer;
1177
- color: #fff;
1178
- text-decoration: none;
1179
- font-size: 16px;
1180
- border: none;
1181
- margin: 0 10px;
1182
- position: relative;
1183
- }
1184
- .modal .mm__content{
1185
- color: #525252;
1186
- }
1187
- .modal a.gray{
1188
- padding: 5px 15px;
1189
- border-radius: 5px;
1190
- background-color: gray;
1191
- cursor: pointer;
1192
- color: #fff;
1193
- text-decoration: none;
1194
- font-size: 16px;
1195
- border: none;
1196
- margin: 0 10px;
1197
- }
1198
- .modal .upgrade__button .blues,.modal .unsaved__button .blues{
1199
- text-transform: uppercase;
1200
- flex-basis: 25%;
1201
- }
1202
- .modal a.blues:hover,.modal a.blues:hover{
1203
- opacity: 0.75;
1204
- background-color: #324ef8;
1205
- border: none;
1206
- }
1207
- .mobile_wrap .modal-overlays {
1208
- position: fixed;
1209
- margin-left: -20px;
1210
- right: 0;
1211
- height: auto;
1212
- width: auto;
1213
- background: #000;
1214
- will-change: opacity;
1215
- opacity: 0.4;
1216
- z-index: 998;
1217
- top: -25%;
1218
- left: 0;
1219
- bottom: 0;
1220
- display: none;
1221
- }
1222
- .mobile_wrap{
1223
- overflow: hidden;
1224
- width: 100%;
1225
- }
1226
-
1227
- #modal_form {
1228
- display: none;
1229
- position: fixed;
1230
- top: 5%;
1231
- right: 0;
1232
- left: 0;
1233
- width: 650px;
1234
- margin: 0 auto;
1235
- background-color: #4558fe;
1236
- font-size: 18px;
1237
- border-radius: 0.9em;
1238
- -webkit-box-shadow: 0px 0px 5px -2px rgba(0, 0, 0, 0.75);
1239
- box-shadow: 0px 0px 5px -2px rgba(0, 0, 0, 0.75);
1240
- }
1241
-
1242
- #modal_form .modal_form__wrapper {
1243
- padding: 0.5em;
1244
- }
1245
-
1246
- #modal_form .modal_form__header {
1247
- padding: 0 1.7em;
1248
- color: #fff;
1249
- }
1250
-
1251
- #modal_form .modal_form__header .customization_button__image {
1252
- background-size: contain;
1253
- width: 45px;
1254
- height: 45px;
1255
- display: block;
1256
- background-repeat: no-repeat;
1257
- background-position: center;
1258
- margin: 0 1em;
1259
- }
1260
-
1261
- #modal_form .modal_form__header .logo_header {
1262
- display: -webkit-box;
1263
- display: -ms-flexbox;
1264
- display: flex;
1265
- -webkit-box-pack: center;
1266
- -ms-flex-pack: center;
1267
- justify-content: center;
1268
- -webkit-box-align: center;
1269
- -ms-flex-align: center;
1270
- align-items: center;
1271
- color: #FFFFFF;
1272
- font-size: 20px;
1273
- font-weight: bold;
1274
- line-height: 19px;
1275
- }
1276
-
1277
- #modal_form .modal_form__header .version_name__header {
1278
- display: -webkit-box;
1279
- display: -ms-flexbox;
1280
- display: flex;
1281
- -webkit-box-orient: vertical;
1282
- -webkit-box-direction: normal;
1283
- -ms-flex-direction: column;
1284
- flex-direction: column;
1285
- -webkit-box-pack: center;
1286
- -ms-flex-pack: center;
1287
- justify-content: center;
1288
- -webkit-box-align: center;
1289
- -ms-flex-align: center;
1290
- align-items: center;
1291
- margin-bottom: 1em;
1292
- }
1293
-
1294
- #modal_form .modal_form__header .version_name__header .version_header__text {
1295
- color: #FFFFFF;
1296
- font-size: 56px;
1297
- font-weight: 800;
1298
- line-height: 77px;
1299
- }
1300
-
1301
- #modal_form .modal_form__header .version_name__header .version_header__price {
1302
- font-size: 32px;
1303
- font-weight: 800;
1304
- line-height: 43px;
1305
- text-align: right;
1306
- }
1307
-
1308
- #modal_form .modal_form__header .version_name__header .version_header__price span {
1309
- font-size: 24px;
1310
- font-weight: bold;
1311
- line-height: 32px;
1312
- }
1313
-
1314
- #modal_form .modal_form__header .header_variations {
1315
- display: -webkit-box;
1316
- display: -ms-flexbox;
1317
- display: flex;
1318
- }
1319
-
1320
- #modal_form .modal_form__header .header_variations span {
1321
- background-size: 15px;
1322
- width: 15px;
1323
- height: 15px;
1324
- padding: 0.5em;
1325
- background-repeat: no-repeat;
1326
- background-position: center;
1327
- }
1328
-
1329
- #modal_form .modal_form__header .header_variations .variation_item {
1330
- margin-right: 2em;
1331
- color: #FFFFFF;
1332
- font-size: 16px;
1333
- font-weight: 600;
1334
- line-height: 22px;
1335
- }
1336
-
1337
- #modal_form .modal_form__header .header_input {
1338
- background-color: #fff;
1339
- border-radius: 0.7em;
1340
- padding: 0.7em 1em;
1341
- display: -webkit-box;
1342
- display: -ms-flexbox;
1343
- display: flex;
1344
- -webkit-box-align: center;
1345
- -ms-flex-align: center;
1346
- align-items: center;
1347
- margin: 1em 0;
1348
- }
1349
-
1350
- #modal_form .modal_form__header .header_input .checkbox_image {
1351
- background-size: 25px;
1352
- width: 28px;
1353
- height: 28px;
1354
- padding: 0.5em;
1355
- background-repeat: no-repeat;
1356
- background-position: center;
1357
- background-color: #5455fe;
1358
- border-radius: 50%;
1359
- }
1360
-
1361
- #modal_form .modal_form__header .header_input .header_input__content {
1362
- margin-left: 3em;
1363
- }
1364
-
1365
- #modal_form .modal_form__header .header_input .header_input__name {
1366
- color: #525252;
1367
- font-size: 20px;
1368
- font-weight: bold;
1369
- line-height: 27px;
1370
- }
1371
-
1372
- #modal_form .modal_form__header .header_input .header_input__date {
1373
- color: #525252;
1374
- font-size: 14px;
1375
- line-height: 19px;
1376
- }
1377
-
1378
- #modal_form .form_row {
1379
- display: -webkit-box;
1380
- display: -ms-flexbox;
1381
- display: flex;
1382
- padding: 0.5em;
1383
- }
1384
-
1385
- #modal_form .form_input {
1386
- -webkit-box-orient: vertical;
1387
- -webkit-box-direction: normal;
1388
- -ms-flex-direction: column;
1389
- flex-direction: column;
1390
- width: 100%;
1391
- max-width: 100%;
1392
- padding: 0 1.2em;
1393
- color: #fff;
1394
- }
1395
-
1396
- #modal_form .form_input label {
1397
- color: #FFFFFF;
1398
- font-size: 16px;
1399
- font-weight: 800;
1400
- line-height: 22px;
1401
- text-transform: uppercase;
1402
- }
1403
-
1404
- #modal_form .form_input input {
1405
- padding: 0.8em 1.5em;
1406
- border-radius: 0.7em;
1407
- border: none;
1408
- font-size: 18px;
1409
- line-height: 20px;
1410
- width: 100%;
1411
- max-width: 100%;
1412
- -webkit-box-sizing: border-box;
1413
- box-sizing: border-box;
1414
- }
1415
-
1416
- #modal_form .form_input a {
1417
- color: #FFFFFF;
1418
- font-size: 14px;
1419
- font-weight: bold;
1420
- line-height: 19px;
1421
- }
1422
-
1423
- #modal_form .form_privacy {
1424
- padding: 0.5em;
1425
- }
1426
-
1427
- #modal_form .form_privacy .form_checkbox {
1428
- padding: 0 1.2em;
1429
- }
1430
-
1431
- #modal_form .form_checkbox {
1432
- color: #FFFFFF;
1433
- font-size: 14px;
1434
- line-height: 19px;
1435
- }
1436
-
1437
- #modal_form .form_checkbox a {
1438
- color: #FFFFFF;
1439
- font-size: 14px;
1440
- font-weight: bold;
1441
- line-height: 19px;
1442
- }
1443
-
1444
- #modal_form .form_submit {
1445
- display: -webkit-box;
1446
- display: -ms-flexbox;
1447
- display: flex;
1448
- -webkit-box-pack: center;
1449
- -ms-flex-pack: center;
1450
- justify-content: center;
1451
- }
1452
-
1453
- #modal_form .form_submit a {
1454
- color: #5456FF;
1455
- font-size: 30px;
1456
- font-weight: bold;
1457
- line-height: 41px;
1458
- background-color: #fff;
1459
- padding: 0.5em 1.9em;
1460
- text-decoration: none;
1461
- display: inline-block;
1462
- border-radius: 0.7em;
1463
- }
1464
- .setup_section table tbody tr:first-child th{
1465
- font-weight: 800;
1466
- letter-spacing: 0.2px;
1467
- line-height: 30px;
1468
- float: left;
1469
- padding: 10px 0;
1470
- font-size: 22px;
1471
- font-weight: 800;
1472
- }
1473
- .tab-content .tab-content__wrapper .testchat{
1474
- position: absolute;
1475
- right: 0;
1476
- background-color: #6071fb;
1477
- color: #fff;
1478
- border:none;
1479
- box-shadow: none;
1480
- width: 140px;
1481
- text-align: center;
1482
- font-family: "Open Sans", sans-serif;
1483
- font-size: 14px;
1484
- font-weight: 500;
1485
- }
1486
- .tab-content table th{
1487
- font-family: "Open Sans",sans-serif;
1488
- font-weight: bold;
1489
- color: #525252;
1490
- font-size: 14px;
1491
- letter-spacing: 0.15px;
1492
- line-height: 22px;
1493
- padding: 0;
1494
- text-transform: uppercase;
1495
- }
1496
- .tab-content label.gray{
1497
- color: #949494;
1498
- font-family: "Open Sans",sans-serif;
1499
- font-size: 16px;
1500
- line-height: 22px;
1501
- padding: 10px 0;
1502
- }
1503
- .tab-content .form-table td p{
1504
- font-family: "Open Sans",sans-serif;
1505
- margin-bottom: 10px;
1506
- margin-top: 0;
1507
- font-size: 16px;
1508
- }
1509
- .tab-content table label{
1510
- color: #525252;
1511
- font-family: "Open Sans",sans-serif;
1512
- font-size: 14px;
1513
- letter-spacing: 0.13px;
1514
- line-height: 19px;
1515
- padding-bottom: 10px;
1516
- }
1517
- .tab-content .input-field{
1518
- padding: 0;
1519
- }
1520
- .tab-content .as_state{
1521
- display: flex;
1522
- flex-direction: column;
1523
- }
1524
-
1525
- .tab-content .as h6{
1526
- font-size: 14px;
1527
- font-weight: bold;
1528
- line-height: 19px;
1529
- text-transform: uppercase;
1530
- }
1531
- .tab-content .sp-replacer{
1532
- margin-top: 20px;
1533
- background: none;
1534
- padding: 0;
1535
- }
1536
- .tab-content input[type=checkbox]{
1537
- width: auto;
1538
- }
1539
- .tab-content input[type=number]{
1540
- width: 30%!important;
1541
- }
1542
- .tab-content .sp-replacer,.sp-preview{
1543
- width: 80px;
1544
- height: 80px;
1545
- border: none;
1546
- }
1547
- .tab-content .sp-dd{
1548
- display: none;
1549
- }
1550
-
1551
- .customize_section table th, td {
1552
- margin-bottom: 10px;
1553
- }
1554
- .options table td{
1555
- margin-bottom: 15px;
1556
- vertical-align: middle;
1557
- padding: 0;
1558
- width: 80%;
1559
- }
1560
- .wrap__pro{
1561
- position: relative;
1562
- }
1563
- .customize_section table th{
1564
- font-family: "Open Sans",sans-serif;
1565
- font-weight: 800;
1566
- color: #525252;
1567
- font-size: 16px;
1568
- letter-spacing: 0.15px;
1569
- line-height: 22px;
1570
- padding: 0;
1571
- text-transform: uppercase;
1572
- }
1573
-
1574
- .setup_section th,td{
1575
- display: block;
1576
- width: auto;
1577
- }
1578
- .customize_section th,td{
1579
- display: block!important;
1580
- width: auto;
1581
- }
1582
-
1583
- .options .contact_tab table th.sortable a,.options .contact_tab table th.sorted a,.options .contact_tab table th{
1584
- display: inline-block;
1585
- padding: 0;
1586
- color: #A9A5A5;
1587
- height: 100%;
1588
- text-transform: capitalize;
1589
- }
1590
- .options .contact_tab table th.sortable a:focus,.options .contact_tab table th.sorted a:focus{
1591
- box-shadow: none;
1592
- }
1593
-
1594
- .options .contact_tab table,.options .contact_tab table tbody{
1595
- display: block;
1596
- }
1597
- .options .contact_tab table tr:first-child{
1598
- padding-bottom: 15px;
1599
- margin-bottom: 0;
1600
- box-shadow: none;
1601
- }
1602
- .options .contact_tab table tr:hover:not(:first-child){
1603
- cursor: pointer;
1604
- background-color: #f9fafb;
1605
- }
1606
- .download__wrap .pro_button__content{
1607
- text-align: center;
1608
- }
1609
- .options .contact_tab table tr{
1610
- margin-bottom: 1em;
1611
- display: grid;
1612
- grid-column: 1 / -1;
1613
- grid-template-columns: 10% 25% 10% 10% 12% 23% 10%;
1614
- padding: 1rem 25px;
1615
- box-shadow: 0 0 4px 3px rgba(242,239,237,1);
1616
- vertical-align: middle;
1617
- -ms-flex-align: center;
1618
- align-items: center;
1619
- }
1620
- .options .contact_tab table td{
1621
- margin: 0;
1622
- padding: 0;
1623
- width: 100%;
1624
- vertical-align: middle;
1625
- font-family: "Open Sans",sans-serif;
1626
- font-size: 14px;
1627
- font-weight: bold;
1628
- word-break: break-all;
1629
- }
1630
-
1631
- .options .contact_tab table td img{
1632
- vertical-align: middle;
1633
- border-radius: 50%;
1634
- min-width: 3.5rem;
1635
- }
1636
- .options .contact_tab table td.gender{
1637
- text-transform: capitalize;
1638
- }
1639
- .options .contact_tab table{
1640
- border: none;
1641
- }
1642
- .contact_tab{
1643
- padding: 20px 20px 40px 20px;
1644
- }
1645
- .contact_tab .table__wrap .displaying-num{
1646
- display: none;
1647
- }
1648
- .contact_tab .table__wrap{
1649
- padding-bottom: 5rem;
1650
- }
1651
- .tab-content .contact_head__wrap h4,.tab-content .contact_head__wrap p{
1652
- display: inline-block;
1653
- font-size: 18px;
1654
- }
1655
- .contact_head__wrap{
1656
- display: flex;
1657
- justify-content: space-between;
1658
- align-items: center;
1659
- margin-bottom: 20px;
1660
- }
1661
-
1662
- .contact_head__wrap a{
1663
- color: #324EF8;
1664
- font-family: "Open Sans",sans-serif;
1665
- font-size: 16px;
1666
- font-weight: 600;
1667
- line-height: 22px;
1668
- box-shadow: 0 0 10px #cfcfcf;
1669
- border-radius: 9px;
1670
- padding: 10px;
1671
- }
1672
- .contact_head__wrap a:active{
1673
- box-shadow: none;
1674
- }
1675
- .contact_head__wrap a>i{
1676
- color: #324EF8;
1677
- margin-right: 8px;
1678
- }
1679
- .contact_head__wrap .download__wrap{
1680
- position: relative;
1681
- width: 71%;
1682
- height: 100%;
1683
- text-align: right;
1684
- }
1685
- .contact_head__wrap .pro_button__wrapper{
1686
- display: flex;
1687
- align-items: center;
1688
- top: -35px;
1689
- width: 100%;
1690
- height: 100px;
1691
- left: 0;
1692
- position: absolute;
1693
- bottom: 0;
1694
- padding: 0;
1695
- }
1696
-
1697
- .contact_head__wrap .pro_button__wrapper .pro_button__content p{
1698
- margin-bottom: 5px;
1699
- }
1700
-
1701
- .contact_head__wrap .pro_button__wrapper a{
1702
- padding: 0.5em 1em;
1703
- }
1704
-
1705
- .contact_head__wrap .pro_button__wrapper a{
1706
- box-shadow: none;
1707
- }
1708
-
1709
-
1710
- .tab-content .contact_head__wrap h4{
1711
- margin: 0 10px 0 0;
1712
- color: #525252;
1713
- font-family: "Open Sans",sans-serif;
1714
- font-size: 36px;
1715
- font-weight: bold;
1716
- }
1717
- .table__wrap{
1718
- position: relative;
1719
- }
1720
-
1721
- .connected-page .connect_check{
1722
- display: inline-block;
1723
- margin: 10px 0 0 0;
1724
- padding: 1px 10px;
1725
- background-color: green;
1726
- border-radius: 5px;
1727
- color: #fff;
1728
- text-decoration: none;
1729
- text-transform: uppercase;
1730
- font-size: 13px;
1731
- height: auto;
1732
- border: none;
1733
- width: fit-content;
1734
-
1735
- }
1736
- .connected-page .connect_check:hover {
1737
- opacity: 0.75;
1738
- border: none;
1739
- }
1740
- .connect_check .fa-check{
1741
- margin-right: 5px;
1742
- }
1743
- .page_name{
1744
- color: #525252;
1745
- font-family: "Open Sans",sans-serif;
1746
- font-size: 26px;
1747
- font-weight: bold;
1748
- letter-spacing: 0.24px;
1749
- line-height: 32px;
1750
- margin: 0;
1751
- vertical-align: middle;
1752
-
1753
- }
1754
- #contacts_modal {
1755
- width: 65%;
1756
- -webkit-user-drag:none;
1757
- user-drag:none;
1758
- -moz-user-drag:none;
1759
- -ms-user-drag:none;
1760
- position: absolute;
1761
- padding: 1em 2em;
1762
- color: #fff;
1763
- top: 20%;
1764
- left: 0;
1765
- right: 0;
1766
- margin: 0 auto;
1767
- background: -webkit-gradient(linear, left top, right top, from(#3d5afe), to(#7c4dff));
1768
- background: linear-gradient(to right, #3d5afe 0%, #7c4dff 100%);
1769
- border-radius: 18px;
1770
- -webkit-box-shadow: 0px 0px 5px 1px rgba(0, 0, 0, 0.75);
1771
- box-shadow: 0px 0px 5px 1px rgba(0, 0, 0, 0.75);
1772
- }
1773
-
1774
- #contacts_modal .contact_modal__wrapper {
1775
- display: -webkit-box;
1776
- display: -ms-flexbox;
1777
- display: flex;
1778
- -webkit-box-pack: justify;
1779
- -ms-flex-pack: justify;
1780
- justify-content: space-between;
1781
- -webkit-box-align: center;
1782
- -ms-flex-align: center;
1783
- align-items: center;
1784
- }
1785
-
1786
- #contacts_modal .contact_modal__content {
1787
- display: -webkit-box;
1788
- display: -ms-flexbox;
1789
- display: flex;
1790
- -webkit-box-align: center;
1791
- -ms-flex-align: center;
1792
- align-items: center;
1793
- }
1794
- #contacts_modal .contact_modal__content p {
1795
- color: #FFFFFF;
1796
- font-size: 22px;
1797
- font-weight: bold;
1798
- line-height: 30px;
1799
- }
1800
- #contacts_modal .contact_modal__content .logo_name {
1801
- color: #FFFFFF;
1802
- font-family: "Open Sans",sans-serif;
1803
- font-size: 20px;
1804
- font-weight: bold;
1805
- line-height: 19px;
1806
- }
1807
-
1808
- #contacts_modal .contact_modal__button {
1809
- background-color: #fff;
1810
- padding: 0.7em 1.5em;
1811
- font-size: 18px;
1812
- font-weight: 800;
1813
- line-height: 24px;
1814
- text-transform: uppercase;
1815
- border-radius: 9px;
1816
- }
1817
-
1818
- #contacts_modal .contact_modal__button a {
1819
- text-decoration: none;
1820
- }
1821
-
1822
- #contacts_modal .customization_button__image {
1823
- background-image: url("../img/monkey_head.png");
1824
- background-size: contain;
1825
- width: 45px;
1826
- height: 45px;
1827
- background-repeat: no-repeat;
1828
- background-position: center;
1829
- margin: 0 .3em;
1830
- display: inline-block;
1831
- }
1832
- .connected-page-bottom .active-page-info{
1833
- display: block;
1834
- }
1835
- .log_out__wrapper,.disconnect_page__wrapper{
1836
- margin-top: 10px;
1837
- display: flex;
1838
- justify-content: space-between;
1839
- align-items: center;
1840
- }
1841
- .log_out__wrapper h5{
1842
- margin: 0;
1843
- padding: 0;
1844
- }
1845
- .log_out__wrapper .logout-mobilemonkey{
1846
- margin: 0;
1847
- }
1848
- .disconnect_page__wrapper{
1849
- padding: 0 20px;
1850
- background-color: #25252525;
1851
- }
1852
- .disconnect_page__wrapper p b {
1853
- color: green;
1854
- }
1855
- .disconnect_page__wrapper p {
1856
- color: #000;
1857
- }
1858
- .mm_only-state{
1859
- background-color: #000000;
1860
- }
1861
- .contact_modal__button div{
1862
- color: #5F52FE;
1863
- }
1864
- .mobilemonkey-settings h5{
1865
- color: #525252;
1866
- font-family: "Open Sans",sans-serif;
1867
- font-size: 36px;
1868
- font-weight: bold;
1869
- letter-spacing: 0.33px;
1870
- line-height: 49px;
1871
- margin: 20px 0 0 0;
1872
- }
1873
- .mobilemonkey-settings p.get_start{
1874
- color: #525252; font-family: "Open Sans",sans-serif;
1875
- font-size: 24px;
1876
- letter-spacing: 0.22px;
1877
- line-height: 33px;
1878
- margin: 0 0 30px 0;
1879
- }
1880
- .mobilemonkey-settings p{
1881
- margin-top: 15px;
1882
- }
1883
- .tab-content .form-table td .welcome_text{
1884
- margin: 5px 10px 20px 0;
1885
- }
1886
- .tab-content .form-table td .head_text{
1887
- font-size: 22px;
1888
- font-weight: 800;
1889
- line-height: 30px;
1890
- font-family: "Open Sans",sans-serif;
1891
- letter-spacing: 0.15px;
1892
- color: #525252;
1893
- text-transform: uppercase;
1894
- }
1895
-
1896
- .tab-content .form-table td .qual_p{
1897
- margin: 20px 0 30px 0;
1898
- }
1899
-
1900
- @media (max-width: 575.98px) {
1901
- #to_pro, #unsaved_option{
1902
- width: 90%;
1903
- }
1904
- .service-content {
1905
- text-align: center;
1906
- }
1907
- .service-content iframe{
1908
- width: 250px!important;
1909
- }
1910
- .contact_tab{
1911
- padding-bottom: 100px;
1912
- }
1913
- .customization_button,#contacts_modal .contact_modal__wrapper{
1914
- flex-direction: column;
1915
- }
1916
- .customization_button .customization_button__action,#contacts_modal .contact_modal__button{
1917
- margin-top: 20px;
1918
- }
1919
- #contacts_modal {
1920
- width: 100%;
1921
- }
1922
- #contacts_modal .contact_modal__content{
1923
- flex-direction: column;
1924
- text-align: center;
1925
- }
1926
- .contact_tab .table__wrap{
1927
- padding-bottom: 10rem;
1928
- }
1929
- .customization_button__wrapper .customization_button .customization_button__content{
1930
- flex-direction: column;
1931
- text-align: center;
1932
- }
1933
- }
1934
-
1935
- @media (min-width: 576px) and (max-width: 767.98px) {
1936
- .contact_tab{
1937
- padding-bottom: 100px;
1938
- }
1939
- .customization_button,#contacts_modal .contact_modal__wrapper{
1940
- flex-direction: column;
1941
- }
1942
- .customization_button .customization_button__action,#contacts_modal .contact_modal__button{
1943
- margin-top: 20px;
1944
- }
1945
- #contacts_modal {
1946
- width: 100%;
1947
- }
1948
- .download__wrap .pro_button__wrapper{
1949
- padding: 0;
1950
- }
1951
- .download__wrap .pro_button__wrapper .pro_button{
1952
- flex-direction: column;
1953
- text-align: center;
1954
- }
1955
- }
1956
-
1957
-
1958
- @media (min-width: 768px) and (max-width: 991.98px) {
1959
- .contact_tab{
1960
- padding-bottom: 100px;
1961
- }
1962
- .customization_button,#contacts_modal .contact_modal__wrapper{
1963
- flex-direction: column;
1964
- }
1965
- .customization_button .customization_button__action,#contacts_modal .contact_modal__button{
1966
- margin-top: 20px;
1967
- }
1968
- .download__wrap .pro_button__wrapper{
1969
- padding: 0;
1970
- }
1971
- .download__wrap .pro_button__wrapper .pro_button{
1972
- flex-direction: column;
1973
- text-align: center;
1974
- }
1975
- }
1976
-
1977
-
1978
- @media (min-width: 992px) and (max-width: 1199.98px) {
1979
- .customization_button,#contacts_modal .contact_modal__wrapper{
1980
- flex-direction: column;
1981
- }
1982
- .download__wrap .pro_button__wrapper{
1983
- padding: 0;
1984
- }
1985
- .download__wrap .pro_button__wrapper .pro_button{
1986
- flex-direction: column;
1987
- text-align: center;
1988
- }
1989
- }
1990
-
1991
-
1992
- @media (min-width: 1800px) {
1993
- .main-question{
1994
- width: 800px!important;
1995
- }
1996
- }
1997
-
1998
-
1999
- /*PRO modal*/
2000
-
2001
- #pro_option{
2002
- border-radius: 0;
2003
- border: 0;
2004
- background-color: transparent;
2005
- top: 10%;
2006
- max-height: 100%;
2007
- }
2008
- #pro_option .modal_close i{
2009
- color: #fff;
2010
- font-size: 20px;
2011
- }
2012
- .billing-modal-header {
2013
- width: 100%;
2014
- display: flex;
2015
- background-color: #4F57FF;
2016
- align-items: center;
2017
- flex-direction: column;
2018
- color: #fff;
2019
- border-radius: 10px 10px 0 0;
2020
- }
2021
- .billing-modal-header__plan-name {
2022
- font-size: 43px;
2023
- font-weight: 700;
2024
- text-transform: uppercase;
2025
- line-height: 45px;
2026
- text-align: center;
2027
- }
2028
- .billing-modal-header__plan-price{
2029
- text-align: center;
2030
- }
2031
- .billing-modal-header__plan-price p{
2032
- font-size: 23px;
2033
- margin: 0;
2034
- text-align: center;
2035
- font-weight: 200;
2036
- }
2037
- .billing-modal-header__plan-price .discount .disc_cross b{
2038
- font-size: 1.4em;
2039
- }
2040
- .billing-modal-header__plan-price .discount .disc_cross{
2041
- margin-right: 20px;
2042
- position: relative;
2043
- color: #fff;
2044
- font-size: 20px;
2045
- }
2046
- .billing-modal-header__plan-price .discount{
2047
- display: flex;
2048
- margin-top: 5px;
2049
- align-items: baseline;
2050
- }
2051
- .billing-modal-header__plan-price .discount p{
2052
- color: #2FF2E1;
2053
- text-decoration: none;
2054
- font-size: 20px;
2055
- }
2056
- .modal .billing-modal-header__plan-price h4{
2057
- font-weight: 600;
2058
- text-decoration: none;
2059
- color: #FF7140;
2060
- line-height: 18px;
2061
- margin: 15px 0 0;
2062
- }
2063
- .billing-modal-header__plan-price p.billed{
2064
- text-decoration: none;
2065
- color: #9095FF;
2066
- font-weight: 200;
2067
- font-size: 1.6em;
2068
- }
2069
-
2070
- .billing-modal-header__plan-price .discount .disc_cross:before {
2071
- content: "";
2072
- border-bottom: 2px solid #FF8761;
2073
- position: absolute;
2074
- height: 10px;
2075
- width: 100%;
2076
- bottom: 18px;
2077
- }
2078
- .billing-modal-header__plan-price h4 b{
2079
- font-weight: 200;
2080
- font-size: 0.7em;
2081
- }
2082
- p.billed{
2083
- color: #9095FF;
2084
- font-weight: 200;
2085
- font-size: 0.6em;
2086
- }
2087
- .billing-modal-header__logo div{
2088
- background-image: url("../img/monkey_head.png");
2089
- background-size: contain;
2090
- width: 35px;
2091
- height: 35px;
2092
- display: block;
2093
- background-repeat: no-repeat;
2094
- background-position: center;
2095
- margin: 0 0.3em;
2096
- }
2097
-
2098
- .billing-modal-header__logo{
2099
- margin: 1rem 0;
2100
- display: flex;
2101
- align-items: center;
2102
- }
2103
-
2104
- .billing-modal-header__logo span{
2105
- color: #fff;
2106
- font-size: 18px;
2107
- font-weight: bold;
2108
- }
2109
-
2110
- .billing-page-details {
2111
- width: 90%;
2112
- background-color: #fff;
2113
- display: flex;
2114
- padding: 10px 15px;
2115
- align-items: center;
2116
- justify-content: space-between;
2117
- margin-top: 10px;
2118
- border-radius: 12px;
2119
- margin-bottom: 1rem;
2120
- }
2121
-
2122
- .billing-page-details__image {
2123
- width: 50px;
2124
- height: 50px;
2125
- border-radius: 100%;
2126
- background-color: grey;
2127
- }
2128
-
2129
- .billing-page-details__name {
2130
- font-weight: 800;
2131
- font-size: 20px;
2132
- color: #525252;
2133
- margin: 5px 0;
2134
- }
2135
-
2136
- .billing-page-details__middle {
2137
- align-self: flex-start;
2138
- margin-left: 15px;
2139
- }
2140
-
2141
- .billing-page-details__check-circle {
2142
- background-color: #de8f08;
2143
- border-radius: 100%;
2144
- width: 40px;
2145
- height: 40px;
2146
- display: flex;
2147
- justify-content: center;
2148
- align-items: center;
2149
- }
2150
-
2151
-
2152
- .billing-page-details__left-section {
2153
- display: flex;
2154
- align-items: center;
2155
- }
2156
-
2157
- .billing-page-details__sends-text {
2158
- color: #de8f08;
2159
- font-size: 16px;
2160
- font-weight: 600;
2161
- }
2162
-
2163
- .billing-modal {
2164
- width: 525px;
2165
- color: #525252;
2166
- display: flex;
2167
- align-items: center;
2168
- flex-direction: column;
2169
- padding: 0;
2170
- overflow: hidden;
2171
- }
2172
- .checkout-form {
2173
- display: flex;
2174
- flex-direction: column;
2175
- align-items: center;
2176
- font-family: 'Open Sans', sans-serif;
2177
- }
2178
-
2179
- .checkout-form__name-fields {
2180
- width: 100%;
2181
- display: flex;
2182
- flex-direction: row;
2183
- justify-content: space-between;
2184
- }
2185
-
2186
- .billing-modal-body{
2187
- padding: 30px 30px 0 30px;
2188
- width: 100%;
2189
- background-color:#fff;
2190
- }
2191
- .billing_info_wrap{
2192
- display: flex;
2193
- justify-content: center;
2194
- }
2195
- .billing-modal-body .name__wrap,.billing-modal-body .card__wrap{
2196
- display: flex;
2197
- justify-content: space-between;
2198
- }
2199
- .name__wrap .firstname__wrap,.name__wrap .lastname__wrap{
2200
- width: 45%;
2201
- }
2202
- .billing-modal-body label{
2203
- font-size: 14px;
2204
- font-weight: bold;
2205
- font-family: 'Open Sans', sans-serif;
2206
- color: #666;
2207
- }
2208
- .checkout-form .billing-modal-body input[type=email]:not(.browser-default):focus:not([readonly]),
2209
- .checkout-form .billing-modal-body input[type=text]:not(.browser-default):focus:not([readonly]),
2210
- .checkout-form .billing-modal-body select:focus
2211
- {
2212
- border-bottom: 1px solid #dfdfdf;
2213
- box-shadow: none;
2214
- }
2215
- .checkout-form .billing-modal-body input[type=email],
2216
- .checkout-form .billing-modal-body input[type=text],
2217
- .checkout-form .billing-modal-body select
2218
- {
2219
- padding: 20px;
2220
- width: 100%;
2221
- border: 1px solid #dfdfdf;
2222
- margin: .5em 0;
2223
- line-height: 20px;
2224
- border-radius: 5px;
2225
- font-size: 16px;
2226
- -webkit-box-sizing: border-box;
2227
- box-sizing: border-box;
2228
- }
2229
- .checkout-form .billing-modal-body select{
2230
- padding: 0 20px;
2231
- height: 45px;
2232
- }
2233
- .billing-modal-footer {
2234
- font-family: "Open Sans", sans-serif;
2235
- border-radius: 0 0 10px 10px;
2236
- background-color: #fff;
2237
- width: 100%;
2238
- padding: 5px 30px 25px 30px;
2239
- display: flex;
2240
- flex-direction: column;
2241
- }
2242
- .billing-modal-body hr{
2243
- border-top: 1px solid #CFCFCF;
2244
- margin: 15px 0;
2245
- }
2246
- .more_info{
2247
- margin: 15px 0 0 0;
2248
- }
2249
- .billing-modal-footer input[type=checkbox]{
2250
- background: #999;
2251
- }
2252
- .billing-modal-footer input[type=checkbox]:before{
2253
- color: #fff;
2254
- }
2255
- .billing-modal-footer .term__wrap{
2256
- margin: 10px 0;
2257
- }
2258
-
2259
- .modal a.oranges,.modal button.oranges{
2260
- cursor: pointer;
2261
- padding: 13px 25px;
2262
- background-color: RGB(236,182,83);
2263
- border-radius: 10px;
2264
- color: #fff;
2265
- text-decoration: none;
2266
- font-size: 20px;
2267
- font-family: "Open Sans", sans-serif;
2268
- font-weight: 700;
2269
- border: none;
2270
- margin: 0 10px;
2271
- position: relative;
2272
- align-self: center;
2273
- }
2274
- .billing-page-details__check-circle i {
2275
- font-size: 28px;
2276
- }
2277
- .recurly-hosted-field{
2278
- height: 3.5rem;
2279
- margin-top: 0;
2280
- }
2281
-
2282
- .card__wrap input[type=text]:not(.browser-default){
2283
- border-radius: 0;
2284
- border-right: 0;
2285
- border-left: 0;
2286
- }
2287
-
2288
- .card__wrap #card_number{
2289
- width: 100%;
2290
- }
2291
- .terms-label a{
2292
- color: #525252;
2293
- font-weight: bold;
2294
- }
2295
- #pro_option{
2296
- width: 640px;
2297
- }
2298
-
2299
- .subscribe__wrap .page_name__wrap h2.subscribe_page_name{
2300
- margin: 0;
2301
- font-size: 2.5rem;
2302
- font-family: 'Open Sans',sans-serif;
2303
- }
2304
- .subscribe__wrap .page_name__wrap span.pro{
2305
- border-radius: 5px;
2306
- width: auto;
2307
- height: auto;
2308
- line-height: 22px;
2309
- align-self: center;
2310
- font-size: 1.2rem;
2311
- padding: 7px;
2312
- }
2313
- .subscribe_connect p {
2314
- color: #888;
2315
- font-size: 15px;
2316
- }
2317
- .page_info__wrap{
2318
- border: 1px solid #EFEFEF;
2319
- padding: 20px 35px 30px;
2320
- border-radius: 10px;
2321
- display: flex;
2322
- justify-content: space-between;
2323
- }
2324
-
2325
- .percentage-bar__body-wrapper {
2326
- display: -webkit-box;
2327
- display: -ms-flexbox;
2328
- display: flex;
2329
- -webkit-box-orient: horizontal;
2330
- -webkit-box-direction: normal;
2331
- -ms-flex-direction: column;
2332
- flex-direction: column;
2333
- -webkit-box-align: center;
2334
- -ms-flex-align: center;
2335
- align-items: center;
2336
- width: 80%;
2337
- margin-top: 10px;
2338
- }
2339
- .percentage-bar__card-used-number,.percentage-bar__card-max-number {
2340
- font-weight: 800;
2341
- font-size: 16px;
2342
- margin-right: -20px;
2343
- }
2344
- .number__wrap{
2345
- display: flex;
2346
- flex-direction: row;
2347
- justify-content: space-between;
2348
- width: 100%;
2349
- }
2350
- .percentage-bar__bar {
2351
- height: 9px;
2352
- }
2353
- .percentage-bar__bar {
2354
- position: relative;
2355
- background-color: #cbcbcb;
2356
- width: 100%;
2357
- height: 12px;
2358
- border-radius: 10px;
2359
- overflow: hidden;
2360
- }
2361
- .percentage-bar__used-percentage{
2362
- height: 9px;
2363
- }
2364
- .percentage-bar__used-percentage {
2365
- position: absolute;
2366
- left: 0;
2367
- background-color: #ff943f;
2368
- height: 12px;
2369
- border-radius: 10px;
2370
- }
2371
- .message_sent__wrap label{
2372
- font-size: 0.9rem;
2373
- text-transform: uppercase;
2374
- color: #555;
2375
- font-weight: bold;
2376
- }
2377
- .message_sent__wrap{
2378
- margin-top: 2rem;
2379
- }
2380
- .button_cancel,.button_edit{
2381
- padding: 5px 15px;
2382
- border-radius: 5px;
2383
- background-color: gray;
2384
- cursor: pointer;
2385
- color: #fff;
2386
- text-decoration: none;
2387
- font-size: 16px;
2388
- border: none;
2389
- margin: 0 10px;
2390
- }
2391
- a.button_cancel:hover,a.button_cancel:focus,a.button_edit:focus,a.button_edit:hover{
2392
- color: #fff;
2393
- }
2394
- .button_go{
2395
- margin-top: 20px;
2396
- height: auto;
2397
- background-color: darkgreen;
2398
- padding: 10px 15px;
2399
- border: 1px solid #000;
2400
- color: #fff;
2401
- }
2402
- .button_go:hover,.button_go:focus{
2403
- color: #fff;
2404
- }
2405
- .invoice_info_wrap a{
2406
- text-decoration: underline;
2407
- margin-right: 25px;
2408
- }
2409
- .subscribe_info__wrap,.invoice_info_wrap{
2410
- display: flex;
2411
- justify-content: space-between;
2412
- }
2413
- .button__wrap{
2414
- align-self: center;
2415
- }
2416
- .subscribe_info__wrap{
2417
- padding: 0 0 20px 0;
2418
- }
2419
- .button_update{
2420
- background-color: #324ef8;
2421
- height: auto;
2422
- padding: 12px 20px;
2423
- border-radius: 4px;
2424
- color: #fff;
2425
- font-size: 18px;
2426
- }
2427
- .button_update:focus,.button_update:hover{
2428
- color: #fff;
2429
- }
2430
- .payment_info{
2431
- background-color: #DDE3FE;
2432
- border-radius: 14px;
2433
- width: 50%;
2434
- display: flex;
2435
- flex-direction: column;
2436
- padding: 10px 24px;
2437
- margin-bottom: 20px;
2438
- }
2439
- .billed_with{
2440
- color: #ADB0B9;
2441
- }
2442
- #errors{
2443
- color: red;
2444
- text-align: center;
2445
- height: 50px;
2446
- background-color: #1111;
2447
- border-radius: 14px;
2448
- width: 50%;
2449
- display: flex;
2450
- align-self: center;
2451
- justify-content: center;
2452
- align-items: center;
2453
- margin-bottom: 30px;
2454
- display: none;
2455
- }
2456
- .row .col.s12 .questions-wrapper {
2457
- width: 100%;
2458
- margin: 0 auto;
2459
- padding: 0;
2460
- }
2461
- .question-block__wrapper {
2462
- float: left;
2463
- width: 100%;
2464
- box-shadow: 0px 0px 9px -3px rgba(0,0,0,0.75);
2465
- border-radius: 9px;
2466
- margin: 0 0 20px auto;
2467
- }
2468
- .question-button__add,.qa-button__add{
2469
- cursor: pointer;
2470
- position: relative;
2471
- margin: 1rem 0 3rem 0;
2472
- display: inline-block;
2473
- width: 100%;
2474
- }
2475
- .qa-button__add .pro_button__wrapper{
2476
- top: -15px;
2477
- }
2478
- .question-block__header {
2479
- display: flex;
2480
- justify-content: space-between;
2481
- padding: 10px 20px;
2482
- border-bottom: 1px solid #e4e4e4;
2483
- align-items: center;
2484
- }
2485
- .question-block__header .header__title {
2486
- display: flex;
2487
- flex-direction: column;
2488
- text-align: center;
2489
- }
2490
- .question-block_content .question-input__wrapper{
2491
- padding: 0;
2492
- }
2493
- .question-block_content{
2494
- display: flex;
2495
- flex-direction: column;
2496
- position: relative;
2497
- }
2498
- .question-input__wrapper,
2499
- .answer-input__wrapper {
2500
- background-color: #E5E5E5;
2501
- padding: 20px 20px 0 20px;
2502
- border-radius: 9px;
2503
- }
2504
- .question-input__wrapper{
2505
- margin: 10px 10px 10px 55px;
2506
- }
2507
- .question-input__item input[type=text]:not(.browser-default):focus:not([readonly]),
2508
- .answer-input__item input[type=text]:not(.browser-default):focus:not([readonly]){
2509
- border: none;
2510
- box-shadow: none;
2511
- }
2512
- .answer-input__wrapper{
2513
- box-shadow: 0 0 8px -1px rgba(82,82,82,1);
2514
- z-index: 9;
2515
- }
2516
- .answer-input__wrapper .answer-input__item input[type=text]:not(.browser-default){
2517
- margin:10px 10px 10px 0 ;
2518
- width: 100%;
2519
- }
2520
- .question-input__item input[type=text]:not(.browser-default),
2521
- .answer-input__item input[type=text]:not(.browser-default) {
2522
- margin: 10px 20px;
2523
- box-sizing: border-box;
2524
- padding: 10px 25px;
2525
- width: calc(100% - 40px);
2526
- border:none;
2527
- border-radius: 9px;
2528
- background: #FFFFFF;
2529
- }
2530
- .answer-input__item{
2531
- display: inline-block;
2532
- }
2533
- .tab-content .form-table td .answer-input__item p {
2534
- display: inline-block;
2535
- color: #FFFFFF;
2536
- font-family: "Open Sans",sans-serif;
2537
- font-size: 13px;
2538
- line-height: 18px;
2539
- }
2540
- .question_text {
2541
- padding: 15px 25px;
2542
- cursor: pointer;
2543
- }
2544
-
2545
- .question-input__state{
2546
- color: #525252;
2547
- }
2548
-
2549
- .answer-input__wrapper .answer-input__state{
2550
- padding: 10px 0 10px 20px;
2551
- color: #fff;
2552
- }
2553
- .tab-content .answer-input__item input[type=checkbox] {
2554
- background: transparent;
2555
- border: 2px solid #fff;
2556
- height: 20px;
2557
- width: 20px;
2558
- border-radius: 3px;
2559
- }
2560
- .tab-content .answer-input__item input[type=checkbox]:checked:before{
2561
- margin: -2px 0 0 -3px;
2562
- color: #fff;
2563
- }
2564
- .question_cancel,.answer_cancel{
2565
- font-size: 14px;
2566
- font-weight: 400;
2567
- cursor: pointer;
2568
- }
2569
-
2570
- .question-input__state,
2571
- .answer-input__state {
2572
- display: flex;
2573
- justify-content: flex-end;
2574
- padding: 10px 20px;
2575
- font-family: "Open Sans",sans-serif;
2576
- font-size: 16px;
2577
- font-weight: 800;
2578
- line-height: 22px;
2579
- cursor: pointer;
2580
- }
2581
-
2582
- .question-input__state span,
2583
- .answer-input__state span {
2584
- margin-left: 10px;
2585
- }
2586
- .answer-input__button {
2587
- margin: 0 0 10px 20px;
2588
- display: flex;
2589
- flex-wrap: wrap;
2590
- max-width: 70%;
2591
- width: 70%;
2592
- word-break: break-all;
2593
- }
2594
- .answer__bin, .qa__bin {
2595
- width: 25px;
2596
- min-width: 25px;
2597
- height: 25px;
2598
- background-color: #e4e4e4;
2599
- color: #9E9E9E;
2600
- text-align: center;
2601
- line-height: 25px;
2602
- border-radius: 50%;
2603
- margin-left: 5px;
2604
- position: relative;
2605
- }
2606
- .main-question{
2607
- padding: 5px;
2608
- }
2609
- .answer-input__block {
2610
- display: flex;
2611
- padding: 10px 0;
2612
- position: relative;
2613
- }
2614
- .answer-item__result {
2615
- display: block;
2616
- color: #fff;
2617
- border-radius: 30px;
2618
- cursor: pointer;
2619
- margin-right: 10px;
2620
- margin-bottom: 20px;
2621
- display: flex;
2622
- justify-content: center;
2623
- align-items: center;
2624
- }
2625
- .answer__result {
2626
- padding: 10px 35px;
2627
- display: block;
2628
- align-self: center;
2629
- background-color: #0e71ff;
2630
- border-radius: 30px;
2631
- }
2632
- .add__answer {
2633
- -moz-user-select: none;
2634
- -khtml-user-select: none;
2635
- user-select: none;
2636
- cursor: pointer;
2637
- padding: 10px 15px;
2638
- display: block;
2639
- border-radius: 30px;
2640
- border: 1px solid #e4e4e4;
2641
- color: #767676;
2642
- font-family: "Open Sans", sans-serif;
2643
- font-size: 16px;
2644
- line-height: 22px;
2645
- width: 150px;
2646
- }
2647
- .tab-content .form-table td .tooltip {
2648
- display: none;
2649
- position: absolute;
2650
- background-color: #FF7140;
2651
- border-radius: 5px;
2652
- padding: 10px;
2653
- font-size: 12px;
2654
- color: #fff;
2655
- top: 35px;
2656
- width: 182px;
2657
- word-break: keep-all;
2658
- z-index: 15;
2659
- }
2660
- .tab-content .form-table td .tooltip.qa{
2661
- top: 113px;
2662
- }
2663
- .tab-content .form-table td .tooltip.lq{
2664
- top: 5%;
2665
- left: 100%;
2666
- }
2667
- .tab-content .form-table td .tooltip.lq_answer{
2668
- right: 0;
2669
- top: 25px;
2670
- }
2671
- .have_qa a{
2672
- display: block;
2673
- padding: 20px;
2674
- font-size: 18px;
2675
- font-weight: bolder;
2676
- text-align: center;
2677
- background-color: #0e71ff;
2678
- font-family: "Open Sans",sans-serif;
2679
- color: #fff;
2680
- border-radius: 18px;
2681
- margin-bottom: 40px;
2682
- }
2683
- .tab-content .main-question h3{
2684
- margin: 0 1em 1em;
2685
- }
2686
- .answer-input__wrapper, .qa-input__wrapper {
2687
- display: none;
2688
- position: absolute;
2689
- width: 100%;
2690
- top: 50px;
2691
- background-color: #0e71ff;
2692
- }
2693
- .tab-content .notify_mode{
2694
- color: #525252;
2695
- font-weight: bold;
2696
- }
2697
-
2698
- .notify_radio__wrap input[type=radio]:checked:before {
2699
- width: 12px;
2700
- height: 12px;
2701
- margin: 3px 2px 2px 2px;
2702
- background-color: #324EF8;
2703
- float: none;
2704
- }
2705
- .notify_radio__wrap {
2706
- padding: 10px 0;
2707
- }
2708
- .notify_radio__wrap input[type=radio]{
2709
- border: 2px solid #324EF8;
2710
- height: 22px;
2711
- width: 22px;
2712
- vertical-align: bottom;
2713
- }
2714
- .email__wrap{
2715
- display: flex;
2716
- }
2717
- .tab-content table .email__wrap label{
2718
- width: 15%;
2719
- align-self: center;
2720
- padding: 0;
2721
- font-weight: bold;
2722
- }
2723
- .question-input__wrapper .edit,.answer-item__result .edit_answer{
2724
- display: flex;
2725
- position: absolute;
2726
- top: 21px;
2727
- left: 10px;
2728
- height: 25px;
2729
- width: 25px;
2730
- color: #9E9E9E;
2731
- align-items: center;
2732
- background-color: #E5E5E5;
2733
- border-radius: 50px;
2734
- justify-content: center;
2735
- cursor: pointer;
2736
- }
2737
- .answer-item__result .edit_answer{
2738
- position: static;
2739
- margin-left: 5px;
2740
- }
2741
- .email_block .pro_button__wrapper{
2742
- height: 100%;
2743
- }
2744
- .email_block .pro_button__wrapper .pro_button__content{
2745
- justify-content: center;
2746
- }
2747
- .tab-content .email__wrap input[type=text]:not(.browser-default){
2748
- width: 40%;
2749
- height: 32px;
2750
- font-size: 14px;
2751
- }
2752
-
2753
- .add_question, .add_qa{
2754
- user-select: none;
2755
- color: #324EF8;
2756
- box-shadow: 0px 0px 9px -3px rgba(0,0,0,0.75);
2757
- padding: 10px 30px;
2758
- border-radius: 5px;
2759
- font-family: "Open Sans",sans-serif;
2760
- font-size: 15px;
2761
- font-weight: 600;
2762
- line-height: 22px;
2763
- }
2764
- .add_question b, .add_qa b{
2765
- vertical-align: baseline;
2766
- font-weight: bold;
2767
- }
2768
- .add__answer b{
2769
- font-size: 30px;
2770
- font-weight: 400;
2771
- line-height: 4px;
2772
- vertical-align: sub;
2773
- }
2774
- .triangle {
2775
- content: "";
2776
- position: absolute;
2777
- width: 0;
2778
- height: 0;
2779
- border-left: 25px solid transparent;
2780
- border-right: 25px solid transparent;
2781
- border-bottom: 25px solid #0e71ff;
2782
- top: -19px;
2783
- left: 30px;
2784
- }
2785
- .add_as_button{
2786
- cursor: pointer;
2787
- margin: 2em 0 0 0.8em;
2788
- display: inline-block;
2789
- }
2790
- .as_item__wrap{
2791
- align-items: center;
2792
- display: flex;
2793
- position: relative;
2794
- }
2795
- .wrap__pro input[type=text]:not(.browser-default){
2796
- width: 50%;
2797
- }
2798
-
2799
- .del_as{
2800
- margin-left: 20px;
2801
- width: 25px;
2802
- min-width: 25px;
2803
- height: 25px;
2804
- background-color: #e4e4e4;
2805
- color: #9E9E9E;
2806
- text-align: center;
2807
- line-height: 25px;
2808
- border-radius: 50%;
2809
- position: absolute;
2810
- right: -40px;
2811
- cursor: pointer;
2812
- }
2813
- .add_as{
2814
- color: #324EF8;
2815
- box-shadow: 0px 0px 9px -3px rgba(0,0,0,0.75);
2816
- padding: 10px 30px;
2817
- border-radius: 5px;
2818
- font-family: "Open Sans",sans-serif;
2819
- font-size: 15px;
2820
- font-weight: 600;
2821
- line-height: 22px;
2822
- }
2823
- .answer-input__add{
2824
- margin-right: 15px;
2825
- }
2826
- .header__close{
2827
- height: 25px;
2828
- width: 25px;
2829
- background-color: #D8D8D8;
2830
- border-radius: 50px;
2831
- position: relative;
2832
- cursor: pointer;
2833
- }
2834
- .header__close:after {
2835
- position: relative;
2836
- content: "\d7";
2837
- font-size: 27px;
2838
- color: #525252;
2839
- left: 5px;
2840
- top: -5px;
2841
- }
2842
- .main-qa{
2843
- display: flex;
2844
- flex-direction: row;
2845
- background-color: #F4F6FF;
2846
- border-radius: 15px;
2847
- position: relative;
2848
- margin: 20px 0;
2849
- }
2850
- .main-qa .del_qa{
2851
- position: absolute;
2852
- right: 10px;
2853
- top: 10px;
2854
- color: #0e71ff;
2855
- font-size: 20px;
2856
- cursor: pointer;
2857
- }
2858
- .main-qa h6{
2859
- font-size: 14px;
2860
- font-weight: bold;
2861
- text-transform: uppercase;
2862
- color: #525252;
2863
- font-family: "Open Sans", sans-serif;
2864
- }
2865
- .qa-question__wrap,.qa-response{
2866
- display: flex;
2867
- padding: 1em 2em;
2868
- flex-direction: column;
2869
- width: 50%;
2870
- flex-basis: 50%;
2871
- }
2872
- .qa-question__wrap .qa-question_input,.qa-question__wrap .qa-question-block{
2873
- margin: 1em;
2874
- }
2875
- .qa-question__wrap{
2876
- padding: 0;
2877
- }
2878
- .add_qa_question{
2879
- width: 30%;
2880
- align-self: auto;
2881
- justify-content: center;
2882
- text-align: center;
2883
- display: flex;
2884
- margin: 9px;
2885
- background-color: #0e71ff;
2886
- align-items: center;
2887
- border-radius: 8px;
2888
- color: #fff;
2889
- font-size: 16px;
2890
- box-shadow: 0px 0px 9px -3px rgba(0,0,0,0.75);
2891
- cursor: pointer;
2892
- user-select: none;
2893
- }
2894
- .add_qa_question:focus,.add_qa_question:active{
2895
- box-shadow: none;
2896
- }
2897
- .fb-customerchat{
2898
- display: none;
2899
- }
2900
- .tab-content .qa-wrapper .qa_head{
2901
- font-size: 22px;
2902
- margin-bottom: 15px;
2903
- margin-top: 0;
2904
- }
2905
- .tab-content .input-field.qa-wrapper{
2906
- padding: 0;
2907
- }
2908
- .qa-response input[type=text]:not(.browser-default)::placeholder, .question_button_wrap input[type=text]:not(.browser-default)::placeholder{
2909
- color: #A7A7A7;
2910
- }
2911
- .qa-response input[type=text]:not(.browser-default), .question_button_wrap input[type=text]:not(.browser-default){
2912
- background-color: #fff;
2913
- }
2914
- .tab-content .form-table td .qa_p{
2915
- margin-bottom: 20px;
2916
- margin-top: 10px;
2917
- }
2918
- .qa-question-block-item{
2919
- color: #fff;
2920
- border-radius: 30px;
2921
- cursor: pointer;
2922
- margin-right: 10px;
2923
- margin-bottom: 20px;
2924
- display: flex;
2925
- justify-content: center;
2926
- align-items: center;
2927
- }
2928
- .qa-question-block{
2929
- margin: 10px 0 10px 0;
2930
- display: flex;
2931
- flex-wrap: wrap;
2932
- }
2933
- span.qa-question-result {
2934
- padding: 10px 35px;
2935
- display: block;
2936
- align-self: center;
2937
- background-color: #0e71ff;
2938
- border-radius: 30px;
2939
- }
2940
- .question_button_wrap{
2941
- display: flex;
2942
- }
2943
-
2944
- .qa-input__wrapper{
2945
- padding: 20px 20px 0 20px;
2946
- border-radius: 9px;
2947
- z-index: 9;
2948
- }
2949
- .qa-response{
2950
- position: relative;
2951
- }
2952
- .qa-input__state{
2953
- color: #fff;
2954
- display: flex;
2955
- justify-content: flex-end;
2956
- padding: 10px 0 20px;
2957
- font-family: "Open Sans",sans-serif;
2958
- font-size: 16px;
2959
- font-weight: 800;
2960
- line-height: 22px;
2961
- cursor: pointer;
2962
- }
2963
- .qa_submit,.qa_cancel{
2964
- margin-left: 10px;
2965
- font-size: 14px;
2966
- }
2967
- .tab-content .qa-input__item input[type=text]:not(.browser-default){
2968
- background-color: #fff;
2969
- box-sizing: border-box;
2970
- padding: 10px 25px;
2971
- width: 80%;
2972
- border: none;
2973
- border-radius: 9px;
2974
- }
2975
- .qa_cancel{
2976
- font-weight: 400;
2977
- }
2978
- .qa-response:before {
2979
- position: absolute;
2980
- left: 0;
2981
- top: 10%;
2982
- border-left: 1px solid #B0B6CD;
2983
- content: "";
2984
- height: 80%;
2985
- }
2986
- .qa_new-wrapper h3{
2987
- margin-left: 20px;
2988
- font-size: 16px;
2989
- margin-top: 0;
2990
- }
2991
- .qa-question-block-item .edit_qa{
2992
- position: static;
2993
- margin-left: 5px;
2994
- display: flex;
2995
- top: 21px;
2996
- left: 10px;
2997
- height: 25px;
2998
- width: 25px;
2999
- min-width: 25px;
3000
- color: #9E9E9E;
3001
- align-items: center;
3002
- background-color: #E5E5E5;
3003
- border-radius: 50px;
3004
- justify-content: center;
3005
- cursor: pointer;
3006
- word-break: break-all;
3007
- }
3008
- .disabled{
3009
- pointer-events: none;
3010
- opacity: 0.6;
3011
- }
3012
-
3013
- .phone{
3014
- background: url("../img/iphone_x.png");
3015
- padding: 0;
3016
- margin-top: 200px;
3017
- height: 415px;
3018
- width: 220px;
3019
- background-repeat: no-repeat;
3020
- background-position: center center;
3021
- display: flex;
3022
- margin-right: auto;
3023
- margin-left: auto;
3024
- }
3025
- @media (max-width: 720px) {
3026
- .phone{
3027
- margin-top: 0;
3028
- }
3029
- .options table td{
3030
- width: 95%;
3031
- }
3032
- .del_as{
3033
- right: -32px;
3034
- }
3035
- .answer-input__block{
3036
- flex-direction: column;
3037
- }
3038
- .answer-input__add{
3039
- display: flex;
3040
- text-align: center;
3041
- justify-content: center;
3042
- }
3043
- .add_qa_question {
3044
- width: 50%;
3045
- padding: 10px;
3046
-
3047
- }
3048
- .question_button_wrap{
3049
- flex-direction: column;
3050
- align-items: center;
3051
- }
3052
- .test-bot-button{
3053
- top: 7px;
3054
- }
3055
- .row .col.s12 .questions-wrapper{
3056
- margin-top: 20px;
3057
- }
3058
- .tab-content .email__wrap input[type=text]:not(.browser-default){
3059
- width: 85%;
3060
- }
3061
- }
3062
- @media (max-width: 520px) {
3063
- .tab-link .limit__notice_tooltip{
3064
- top: 60px;
3065
- left: 2%;
3066
- }
3067
- .tab-link .limit__notice_tooltip:after{
3068
- border-color: #FD397A transparent transparent transparent;
3069
- top: -24px;
3070
- left: 172px;
3071
- transform: rotate(180deg);
3072
- }
3073
- }
3074
-
3075
- .mobile__wrapper{
3076
- display: flex;
3077
- flex-direction: column;
3078
- justify-content: space-evenly;
3079
- margin-right: auto;
3080
- margin-left: auto;
3081
- align-items: center;
3082
- width: 170px;
3083
- }
 
 
 
 
 
 
3084
  .ht-cc-admin-sidebar__dismiss_button_container {
3085
  position: relative;
3086
  right: 36px;
@@ -3093,257 +3099,307 @@ span.qa-question-result {
3093
  font-size: 14px;
3094
  padding: 4px;
3095
  }
3096
-
3097
- .logo_promo{
3098
- background: url("../img/mmL_logo.png");
3099
- height: 76px;
3100
- width: 116px;
3101
- background-size: contain;
3102
- margin-top: 20px;
3103
- background-repeat: no-repeat;
3104
- }
3105
- .dialog_block{
3106
- background-color: #fff;
3107
- border-radius: 10px;
3108
- margin: 0 10px 0 10px;
3109
- padding: 5px 13px;
3110
- font-size: 12px;
3111
- font-weight: 600;
3112
- }
3113
- .text__wrap{
3114
- display: flex;
3115
- height: auto;
3116
- flex-direction: row;
3117
- }
3118
- .dot_icon{
3119
- width: 20px;
3120
- height: 20px;
3121
- position: relative;
3122
- }
3123
- .dot_icon .white_circle{
3124
- width: 20px;
3125
- height: 20px;
3126
- background-color: #ffff;
3127
- border-radius: 50%;
3128
- margin-left: 5px;
3129
- }
3130
- .dot_icon .green_circle{
3131
- position: absolute;
3132
- height: 10px;
3133
- width: 10px;
3134
- border-radius: 50%;
3135
- background: #9EE10E;
3136
- border: 1px solid #FFFFFF;
3137
- right: -8px;
3138
- bottom: -5px;
3139
- }
3140
- .button_download_app{
3141
- background: linear-gradient(31.47deg, #935CF7 21.84%, #586CF5 81.11%);
3142
- border-radius: 5px;
3143
- padding: 5px 15px;
3144
- color: #fff;
3145
- margin-bottom: 40px;
3146
- display: flex;
3147
- cursor: pointer;
3148
- }
3149
- .ios_code{
3150
- background: url('../img/31c07c81b2d635598c3776cfb31eb240.png');
3151
- margin-left: auto;
3152
- margin-right: auto;
3153
- height: 300px;
3154
- width: 300px;
3155
- }
3156
- .promo-app__wrapper .android_app img{
3157
- width: 270px;
3158
- }
3159
- .promo-app__wrapper .ios_app{
3160
- width: 235px;
3161
- cursor: pointer;
3162
- }
3163
- .promo-app__wrapper{
3164
- text-align: center;
3165
- margin-bottom: 25px;
3166
- }
3167
- .promo-app__wrapper a{
3168
- display: block;
3169
- }
3170
- .promo-app__wrapper a:hover,.promo-app__wrapper a:active,.promo-app__wrapper a:focus{
3171
- border: none;
3172
- box-shadow: none;
3173
- }
3174
- .ios-app__wrap p {
3175
- margin-top: 41px;
3176
- }
3177
- .ios-app__wrap{
3178
- display: none;
3179
- }
3180
- .modal-overlays {
3181
- position: fixed;
3182
- margin-left: -20px;
3183
- right: 0;
3184
- height: auto;
3185
- width: auto;
3186
- background: #000;
3187
- will-change: opacity;
3188
- opacity: 0.4;
3189
- z-index: 998;
3190
- top: -25%;
3191
- left: 0;
3192
- bottom: 0;
3193
- display: none;
3194
- }
3195
- #promo_app{
3196
- z-index: 999;
3197
- transition: all 0.5s ease;
3198
- background-color: #FFFFFF;
3199
- display: none;
3200
- position: fixed;
3201
- top: 30%;
3202
- left: 0;
3203
- right: 0;
3204
- width: 563px;
3205
- margin: 0 auto;
3206
- color: #525252;
3207
- border: 1px solid #000;
3208
- border-radius: 10px;
3209
- }
3210
- #promo_app{
3211
- border: none;
3212
- width: 400px;
3213
- height: auto;
3214
- }
3215
- #promo_app p{
3216
- font-family: "Open Sans",sans-serif;
3217
- font-style: normal;
3218
- font-weight: bold;
3219
- font-size: 18px;
3220
- line-height: 25px;
3221
- color: #525252;
3222
- text-align: center;
3223
- margin-top: 35px;
3224
- }
3225
- #promo_app .modal_close {
3226
- background-size: contain;
3227
- width: 15px;
3228
- height: 15px;
3229
- background-repeat: no-repeat;
3230
- background-position: center;
3231
- position: absolute;
3232
- right: 12px;
3233
- top: 12px;
3234
- cursor: pointer;
3235
- z-index: 999;
3236
- }
3237
- #promo_app .modal_close{
3238
- color: #A6A3A3;
3239
- }
3240
- .limit__wrapper{
3241
- background-color: #FD397A;
3242
- width: 32px;
3243
- height: 32px;
3244
- display: flex;
3245
- align-items: center;
3246
- justify-content: center;
3247
- border-radius: 50%;
3248
- margin-left: 12px;
3249
- }
3250
- .limit_notice{
3251
- height: 20px;
3252
- width: 20px;
3253
- border: 2px solid #fff;
3254
- border-radius: 50%;
3255
- display: flex;
3256
- justify-content: center;
3257
- }
3258
- .limit_notice i {
3259
- font-size: 14px;
3260
- color: #fff;
3261
- display: flex;
3262
- align-items: center;
3263
- line-height: 16px;
3264
- }
3265
- .limit__notice_tooltip{
3266
- position: absolute;
3267
- background-color: #FD397A;
3268
- left: 100%;
3269
- max-width: 300px;
3270
- min-width: 280px;
3271
- padding: 20px;
3272
- height: auto;
3273
- display: flex;
3274
- border-radius: 7px;
3275
- flex-direction: column;
3276
- font-weight: 600;
3277
- line-height: 22px;
3278
- color: #FFFFFF;
3279
- font-family: "Open Sans",sans-serif;
3280
- z-index: 9;
3281
- }
3282
- .limit__notice_tooltip p{
3283
- font-size: 16px;
3284
-
3285
- }
3286
- .limit__notice_tooltip p b{
3287
- font-size: 30px;
3288
- font-weight: 600;
3289
- line-height: 14px;
3290
- }
3291
- .limit__button{
3292
- color: #FD397A;
3293
- font-family: "Open Sans",sans-serif;
3294
- font-size: 15px;
3295
- font-weight: bold;
3296
- display: flex;
3297
- line-height: 22px;
3298
- background-color: #fff;
3299
- text-align: center;
3300
- width: 60%;
3301
- justify-content: center;
3302
- align-self: center;
3303
- margin-top: 20px;
3304
- padding: 10px;
3305
- border-radius: 5px;
3306
- }
3307
- .limit__button:hover,.limit__button:focus{
3308
- border: none;
3309
- color: #FD397A;
3310
- box-shadow:none;
3311
- }
3312
- .limit__notice_tooltip span{
3313
- border-top: 1px solid #fff;
3314
- padding-top: 10px;
3315
- font-size: 14px;
3316
- }
3317
- .limit__notice_tooltip:after {
3318
- content: "";
3319
- position: absolute;
3320
- width: 0;
3321
- height: 0;
3322
- border-width: 12px;
3323
- border-style: solid;
3324
- border-color: transparent #FD397A transparent transparent;
3325
- top: 43%;
3326
- left: -24px;
3327
- }
3328
- .limit-notify-close{
3329
- position: absolute;
3330
- right: 5px;
3331
- top: 5px;
3332
- width: 15px;
3333
- height: 14px;
3334
- cursor: pointer;
3335
- }
3336
- .limit-notify-close:before, .limit-notify-close:after{
3337
- position: absolute;
3338
- content: ' ';
3339
- right: 7px;
3340
- height: 13px;
3341
- width: 3px;
3342
- background-color: #fff;
3343
- }
3344
- .limit-notify-close:before{
3345
- transform: rotate(45deg);
3346
- }
3347
- .limit-notify-close:after{
3348
- transform: rotate(-45deg);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3349
  }
 
 
 
 
 
 
1
+ /* Styles for admin page */
2
+
3
+
4
+ /* Submit button */
5
+ /* .options .submit { */
6
+ .submit {
7
+ position: sticky !important;
8
+ bottom: 1px;
9
+ }
10
+
11
+
12
+ .display-none {
13
+ display: none;
14
+ }
15
+
16
+ .display-block {
17
+ display: block;
18
+ }
19
+
20
+ .mobilemonkey-big-button {
21
+ padding: 20px 40px !important;
22
+ line-height: 0 !important;
23
+ }
24
+
25
+ .connect-button {
26
+ background-color: #4267b2;
27
+ border-radius: 4px;
28
+ color: #fff;
29
+ display: block;
30
+ width: 254px;
31
+ height: 40px;
32
+ text-decoration: none;
33
+ }
34
+
35
+ .connect-button:hover, .connect-button:focus {
36
+ color: #fff;
37
+ }
38
+
39
+ .connected-page {
40
+ padding: 0 15px 15px 0;
41
+ }
42
+
43
+ .connected-page .connected-page-title {
44
+ font-size: 16px;
45
+ font-weight: 700;
46
+ }
47
+
48
+ .connected-page .connected-page-title span {
49
+ font-weight: bold;
50
+ color: green;
51
+ }
52
+
53
+ .connected-page-settings {
54
+ position: relative;
55
+ float: right;
56
+ }
57
+
58
+ .connected-page-settings #button_disconnect_page {
59
+ cursor: pointer;
60
+ background-color: #ca4646;
61
+ display: inline-block;
62
+ padding: 3px 8px;
63
+ font-size: 12px;
64
+ text-decoration: none;
65
+ color: #fff;
66
+ border-radius: 5px;
67
+ }
68
+
69
+ .connected-page-settings #button_disconnect_page:hover {
70
+ color: #3a3a3a;
71
+ background: #e8e8e8;
72
+ }
73
+
74
+ .cat-checklist {
75
+ padding: 15px !important;
76
+ margin-bottom: 30px !important;
77
+ }
78
+
79
+ .connect-button span {
80
+ font-family: Helvetica, Arial, sans-serif;
81
+ font-size: 14px;
82
+ text-align: center;
83
+ display: inline-block;
84
+ width: 200px;
85
+ }
86
+
87
+ .connect-button svg {
88
+ height: 24px;
89
+ margin: 8px;
90
+ display: inline-block;
91
+ vertical-align: middle;
92
+ }
93
+
94
+ .choose-page {
95
+ margin-top: 10px;
96
+ }
97
+
98
+ .choose-page .select-page {
99
+ border: 1px solid #dedede;
100
+ padding: 15px;
101
+ margin-top: -1px;
102
+ font-size: 16px;
103
+ }
104
+
105
+ .choose-page .select-page + .select-page {
106
+ border-bottom: none;
107
+ }
108
+
109
+ .choose-page .select-page:last-child {
110
+ border-bottom: 1px solid #dedede;
111
+ }
112
+
113
+ .choose-page .select-page a {
114
+ background-color: #d93;
115
+ display: inline-block;
116
+ float: right;
117
+ padding: 3px 8px;
118
+ font-size: 12px;
119
+ text-decoration: none;
120
+ color: #fff;
121
+ border-radius: 5px;
122
+ }
123
+
124
+ .choose-page .select-page a:hover {
125
+ color: #3a3a3a;
126
+ background: #e8e8e8;
127
+ }
128
+
129
+ .logout-mobilemonkey {
130
+ text-align: right;
131
+ margin: 0 0 15px 0;
132
+ overflow: hidden;
133
+ }
134
+
135
+ .logout-mobilemonkey a {
136
+ background-color: #d93;
137
+ display: inline-block;
138
+ float: right;
139
+ padding: 3px 8px;
140
+ font-size: 12px;
141
+ text-decoration: none;
142
+ color: #fff;
143
+ border-radius: 5px;
144
+ }
145
+
146
+ .logout-mobilemonkey a:hover {
147
+ color: #3a3a3a;
148
+ background: #e8e8e8;
149
+ }
150
+
151
+ .mobilemonkey-button {
152
+ margin-top: 10px;
153
+ position: relative;
154
+ display: inline-block;
155
+ }
156
+
157
+ .mobilemonkey-button button {
158
+ background-color: #d93;
159
+ display: inline-block;
160
+ padding: 3px 8px;
161
+ font-size: 12px;
162
+ text-decoration: none;
163
+ color: #fff;
164
+ border-radius: 5px;
165
+ }
166
+
167
+ .mobilemonkey-button .copiedtext {
168
+ color: green;
169
+ display: none;
170
+ }
171
+
172
+ .get-subscribers_block {
173
+ margin-bottom: 15px;
174
+ }
175
+
176
+ .get-subscribers_block h3 {
177
+ margin: 0 0 10px;
178
+ }
179
+
180
+ .get-subscribers_block .link-icon {
181
+ width: 45px;
182
+ display: inline-block;
183
+ margin-right: 10px;
184
+ vertical-align: top;
185
+ }
186
+
187
+ .get-subscribers_block .link-icon path {
188
+ fill: #654fa5;
189
+ }
190
+
191
+ .get-subscribers_block .link-info {
192
+ display: inline-block;
193
+ }
194
+
195
+ .get-subscribers_block button {
196
+ background-color: #d93;
197
+ display: inline-block;
198
+ border: none;
199
+ padding: 5px 8px;
200
+ font-size: 12px;
201
+ text-decoration: none;
202
+ color: #fff;
203
+ border-radius: 5px;
204
+ }
205
+
206
+ .get-subscribers_block button:hover {
207
+ cursor: pointer;
208
+ color: #3a3a3a;
209
+ background: #e8e8e8;
210
+ }
211
+
212
+ .mobilemonkey-settings {
213
+ display: inline-block;
214
+ }
215
+
216
+ .mobilemonkey-settings, .connect-page {
217
+ position: relative;
218
+ }
219
+
220
+ .connect-page {
221
+ float: right;
222
+ height: 32px;
223
+ }
224
+
225
+ .opacity-button {
226
+ opacity: 0.3;
227
+ }
228
+
229
+ .lazyload {
230
+ display: none;
231
+ position: absolute;
232
+ top: 0;
233
+ background: url(../img/lazyload.svg) center no-repeat;
234
+ width: 100%;
235
+ bottom: 0;
236
+ left: 0;
237
+ }
238
+ .save_change{
239
+ position: relative;
240
+ }
241
+
242
+ .connect-page .lazyload, .connected-page-settings .lazyload {
243
+ top: -8px;
244
+
245
+ }
246
+
247
+ .active-page-info {
248
+ display: flex;
249
+ align-items: flex-start;
250
+ flex-direction: column;
251
+ }
252
+ .connect_check .fa{
253
+ display: inline;
254
+ }
255
+ .page_name__wrap{
256
+ display: flex;
257
+ flex-direction: row;
258
+ align-items: center;
259
+ }
260
+ span.pro,span.free{
261
+ padding: 3px 10px 3px 10px;
262
+ width: 50px;
263
+ height: 25px;
264
+ color: #FFFFFF;
265
+ font-family: "Open Sans",sans-serif;
266
+ font-size: 13px;
267
+ font-weight: bold;
268
+ line-height: 19px;
269
+ text-align: center;
270
+ border-radius: 7px;
271
+ margin-left: 11px;
272
+ background: -webkit-gradient(linear, left top, right top, from(#db8700), to(#f0b537));
273
+ background: linear-gradient(to right, #db8700 0%, #f0b537 100%);
274
+ background: -webkit-linear-gradient(left, #db8700 0%, #f0b537 100%);
275
+ }
276
+ span.pro{
277
+ background: -webkit-gradient(linear, left top, right top, from(#db8700), to(#f0b537));
278
+ background: linear-gradient(to right, #db8700 0%, #f0b537 100%);
279
+ background: -webkit-linear-gradient(left, #db8700 0%, #f0b537 100%);
280
+ }
281
+ span.free{
282
+ background: none;
283
+ background-color: #C8C8CE;
284
+ }
285
+ /* .active-page-image, .active-page-info {
286
+ display: inline-block;
287
+ vertical-align: middle;
288
+ } */
289
+
290
+ .active-page-image {
291
+ max-width: 60px;
292
+ margin-right: 10px;
293
+ }
294
+
295
+ .toplevel_page_mobilemonkey-contacts {
296
+ padding-right: 20px;
297
+ }
298
+
299
+ /* i.mce-i-mobilemonkey-shortcode {
300
+ background-image: url('../image/tinymce_icon.png');
301
+ } */
302
+
303
+ .get-mm-free-button {
304
+ position: relative;
305
+ width: 254px;
306
+ height: 40px;
307
+ overflow: hidden;
308
+ border-radius: 3px;
309
+ }
310
+
311
+ .get-mm-free-button__fallback,
312
+ .get-mm-free-button__fallback:hover {
313
+ text-decoration: none;
314
+ }
315
+
316
+ /*Fallback button and iframe:before get same styles */
317
+ .get-mm-free-button__fallback, .get-mm-free-button .fb-send-to-messenger.fb_iframe_widget::before {
318
+ color: #fff;
319
+ font-size: 19px;
320
+ line-height: 29px;
321
+ text-transform: uppercase;
322
+ border-radius: 3px;
323
+ position: absolute;
324
+ top: 0;
325
+ left: 0;
326
+ right: 0;
327
+ bottom: 0;
328
+ transition: all 0.3s ease 0s;
329
+ }
330
+
331
+ .get-mm-free-button .fb-send-to-messenger.fb_iframe_widget::before {
332
+ pointer-events: none;
333
+ z-index: 2;
334
+ content: 'Connect Facebook Page';
335
+ font-family: Helvetica, Arial, sans-serif;
336
+ background: #4267b2 url(../img/fb.svg) 8px no-repeat;
337
+ background-size: 24px;
338
+ font-size: 14px;
339
+ text-align: right;
340
+ padding-right: 13px;
341
+ box-sizing: border-box;
342
+ color: #fff;
343
+ width: 254px;
344
+ height: 40px;
345
+ line-height: 40px;
346
+ text-decoration: none;
347
+ text-transform: uppercase;
348
+ border-radius: 3px;
349
+ position: absolute;
350
+ top: 0;
351
+ left: 0;
352
+ right: 0;
353
+ bottom: 0;
354
+ transition: all 0.3s ease 0s;
355
+ }
356
+
357
+ /* Hide Facebook plugin until rendered callback from Facebook */
358
+ .get-mm-free-button .fb-send-to-messenger {
359
+ display: none;
360
+ }
361
+
362
+ /* Add class to show Facebook plugin once get rendered callback from Facebook */
363
+ .get-mm-free-button .fb-send-to-messenger.fb-send-to-messenger--loaded-iframe {
364
+ display: block;
365
+ }
366
+
367
+ .mobilemonkey-logo {
368
+ background: url(../img/mobilemonkey_logo.png) left bottom no-repeat;
369
+ background-size: contain;
370
+ height: 70px;
371
+ max-width: 330px;
372
+ position: relative;
373
+ }
374
+
375
+ .options-subtitle {
376
+ font-size: 12px;
377
+ }
378
+
379
+
380
+
381
+
382
+
383
+ .switch {
384
+ position: relative;
385
+ display: inline-block;
386
+ width: 52px;
387
+ height: 25px;
388
+ margin: 0;
389
+ margin-right: 20px;
390
+ }
391
+
392
+ /* Hide default HTML checkbox */
393
+ .switch input {
394
+ opacity: 0;
395
+ width: 0;
396
+ height: 0;
397
+ }
398
+ .qq_label{
399
+ margin-top: 5px;
400
+ }
401
+ /* The slider */
402
+ .slider {
403
+ position: absolute;
404
+ cursor: pointer;
405
+ top: 0;
406
+ left: 0;
407
+ right: 0;
408
+ bottom: 0;
409
+ background-color: #ccc;
410
+ -webkit-transition: .4s;
411
+ transition: .4s;
412
+ }
413
+ .switch__wrap{
414
+ display: flex;
415
+ margin-top: 15px;
416
+ }
417
+ .switch__wrap p{
418
+ color: #000;
419
+ }
420
+ .slider:before {
421
+ position: absolute;
422
+ content: "";
423
+ height: 18px;
424
+ width: 18px;
425
+ left: 4px;
426
+ bottom: 4px;
427
+ background-color: white;
428
+ -webkit-transition: .4s;
429
+ transition: .4s;
430
+ }
431
+
432
+ input:checked + .slider {
433
+ background-color: #2196F3;
434
+ }
435
+
436
+ input:focus + .slider {
437
+ box-shadow: 0 0 1px #2196F3;
438
+ }
439
+
440
+ input:checked + .slider:before {
441
+ -webkit-transform: translateX(26px);
442
+ -ms-transform: translateX(26px);
443
+ transform: translateX(26px);
444
+ }
445
+
446
+ /* Rounded sliders */
447
+ .slider.round {
448
+ border-radius: 34px;
449
+ }
450
+
451
+ .slider.round:before {
452
+ border-radius: 50%;
453
+ }
454
+
455
+ .answering-service label {
456
+ display: block;
457
+ margin-bottom: 10px;
458
+ }
459
+
460
+ .toc-tab-box .answering-service .input-field {
461
+ padding-left: 0;
462
+ }
463
+
464
+ .toc-tab-box .answering-service h6 {
465
+ font-weight: bold;
466
+ }
467
+
468
+ .answering-service textarea {
469
+ resize: none;
470
+ }
471
+
472
+ .as_state p {
473
+ display: inline-block;
474
+ color: #444;
475
+ margin-left: 20px;
476
+ font-size: 1rem;
477
+ font-weight: bold;
478
+ vertical-align: middle;
479
+ }
480
+
481
+ body .toc-tab-box .answering-service input {
482
+ border: 1px solid #9e9e9e;
483
+ padding: 0 0 0 20px;
484
+ }
485
+
486
+ body .toc-tab-box .button {
487
+ padding: 20px;
488
+ line-height: 0;
489
+ }
490
+
491
+ .toc-tab-box .form-table th {
492
+ width: 1px;
493
+ }
494
+ .form-table td p{
495
+ display: block;
496
+ }
497
+
498
+ .form-table{
499
+ position: relative;
500
+ }
501
+ .mm_only_block{
502
+ margin-top: 20px;
503
+ }
504
+ .mm_only_block h6 {
505
+ line-height: 1.6rem;
506
+ margin: 0 0 20px 0;
507
+ font-weight: 600;
508
+ font-size: 16px;
509
+ letter-spacing: 1px;
510
+ }
511
+
512
+ .mm_only_block a.go_mm{
513
+ height: auto;
514
+ padding: 5px 15px;
515
+ border-radius: 4px;
516
+ color: #fff;
517
+ }
518
+
519
+
520
+
521
+ .mm_only_block a.go_mm{
522
+ background-color: #324ef8;
523
+ }
524
+ .mm_only_block .but__wrap{
525
+ margin-top: 20px;
526
+ display: flex;
527
+ flex-direction: row;
528
+ }
529
+
530
+ .mm_only_block a.reset_chatbot{
531
+ background-color: gray;
532
+ margin-right: 2rem;
533
+ border-radius: 4px;
534
+ color: #fff;
535
+ padding: 5px 15px;
536
+ }
537
+
538
+
539
+ .mm_only_block a.go_mm{
540
+ background-color: #324ef8;
541
+ padding: 5px 15px;
542
+ }
543
+ .mm_only_block .but__wrap{
544
+ margin-top: 20px;
545
+ display: flex;
546
+ flex-direction: row;
547
+ }
548
+
549
+ .test-bot-button {
550
+ position: absolute;
551
+ right: 0;
552
+ }
553
+
554
+
555
+ .test-bot-button__button-wrapper {
556
+ height: 29px;
557
+ width: 137px;
558
+ margin-bottom: 10px;
559
+ overflow: hidden;
560
+ border-radius: 3px;
561
+ position: relative;
562
+ }
563
+
564
+ .test-bot-button .fb_iframe_widget {
565
+ position: initial;
566
+ }
567
+
568
+ .fb_iframe_widget {
569
+ display: inline-block;
570
+ position: relative;
571
+ }
572
+
573
+ .test-bot-button .fb-send-to-messenger.fb_iframe_widget:before {
574
+ background-color: #0084ff;
575
+ border-radius: 3px;
576
+ color: #fff;
577
+ content: "Test your ChatBot";
578
+ font-size: 14px;
579
+ font-weight: 500;
580
+ height: 29px;
581
+ line-height: 29px;
582
+ pointer-events: none;
583
+ position: absolute;
584
+ left: 0;
585
+ top: 0;
586
+ width: 140px;
587
+ padding-right: 0px;
588
+ z-index: 2;
589
+ padding-left: 8px;
590
+ -webkit-transition: background-color .3s ease-in-out;
591
+ transition: background-color .3s ease-in-out;
592
+ cursor: pointer;
593
+ font-family: "Open Sans", sans-serif;
594
+ }
595
+
596
+ .fb_iframe_widget span {
597
+ display: inline-block;
598
+ position: relative;
599
+ text-align: justify;
600
+ }
601
+ .sp-input{
602
+ text-transform: uppercase;
603
+ }
604
+
605
+
606
+
607
+ body {
608
+ margin-top: 100px;
609
+ font-family: 'Trebuchet MS', serif;
610
+ line-height: 1.6;
611
+ background-color: #efefef;
612
+ }
613
+
614
+ .step-wrapper {
615
+ margin: 0 auto;
616
+ background-color: #ffffff;
617
+ border-radius: 10px;
618
+ margin-bottom: 100px;
619
+ -webkit-box-shadow: 0px 0px 5px -2px rgba(0, 0, 0, 0.75);
620
+ box-shadow: 0px 0px 5px -2px rgba(0, 0, 0, 0.75);
621
+ }
622
+
623
+ .step-wrapper .tab_header {
624
+ display: -webkit-box;
625
+ display: -ms-flexbox;
626
+ display: flex;
627
+ -webkit-box-align: center;
628
+ -ms-flex-align: center;
629
+ align-items: center;
630
+ background-color: #f7f8fa;
631
+ }
632
+ .step-wrapper .tab-link.current span.tab_header{
633
+ background-color: #ffffff;
634
+ }
635
+
636
+ .step-wrapper ul.tabs_wrapper {
637
+ margin: 0px;
638
+ padding: 0px;
639
+ list-style: none;
640
+ border-radius: 12px;
641
+
642
+ }
643
+
644
+ .step-wrapper ul li {
645
+ color: #222;
646
+ display: -ms-inline-flexbox;
647
+ display: inline-flex;
648
+ -webkit-box-align: center;
649
+ -ms-flex-align: center;
650
+ align-items: center;
651
+ padding: 0 1em;
652
+ font-size: 18px;
653
+ cursor: pointer;
654
+ margin-bottom: 0px;
655
+ height: 50px;
656
+ }
657
+
658
+ .step-wrapper ul li .tab_number {
659
+ width: 30px;
660
+ height: 30px;
661
+ display: block;
662
+ background-color: #fff;
663
+ display: -webkit-box;
664
+ display: -ms-flexbox;
665
+ display: flex;
666
+ -webkit-box-align: center;
667
+ -ms-flex-align: center;
668
+ align-items: center;
669
+ -webkit-box-pack: center;
670
+ -ms-flex-pack: center;
671
+ justify-content: center;
672
+ border-radius: 50%;
673
+ color: #3c59e4;
674
+ margin-right: 0.7rem;
675
+ border: 2px solid #3c59e4;
676
+ }
677
+
678
+ .step-wrapper ul li .tab_contacts__count {
679
+ margin-left: 0.5em;
680
+ background-color: #1ac9b7;
681
+ padding: 0.1em 0.8em;
682
+ font-size: 14px;
683
+ color: #fff;
684
+ border-radius: 5px;
685
+ }
686
+
687
+ .step-wrapper ul li.current {
688
+ background-color: #fff;
689
+ color: #222;
690
+ border: 2px solid #3c59e4;
691
+ border-bottom: 0;
692
+ border-top-left-radius: 5px;
693
+ border-top-right-radius: 5px;
694
+ height: 52px;
695
+ }
696
+ .step-wrapper ul li.done .tab_number{
697
+ background-color: #3c59e4;
698
+ color: #fff;
699
+ border: 2px solid #3c59e4;
700
+ }
701
+ /*.step-wrapper ul li.done.incomplete{
702
+ pointer-events: none;
703
+ opacity: 0.6;
704
+ }*/
705
+ .step-wrapper ul li.current .tab_number {
706
+ background-color: #3c59e4;
707
+ color: #fff;
708
+ border: 2px solid #3c59e4;
709
+ }
710
+
711
+
712
+ .tab-content {
713
+ display: none;
714
+ border-bottom-right-radius: 5px;
715
+ border-bottom-left-radius: 5px;
716
+ }
717
+
718
+ .tab-content .tab-content__wrapper {
719
+ background: #fff;
720
+ padding: 1em 2em;
721
+ border-bottom-right-radius: 10px;
722
+ border-bottom-left-radius: 10px;
723
+ }
724
+
725
+ .tab-content.current {
726
+ display: inherit;
727
+ }
728
+
729
+ .tab-content h1 {
730
+ color: #525252;
731
+ font-family: "Open Sans",sans-serif;
732
+ font-size: 36px;
733
+ font-weight: bold;
734
+ line-height: 49px;
735
+ margin: 0 0 0.7em;
736
+ }
737
+
738
+ .tab-content h3 {
739
+ text-transform: uppercase;
740
+ color: #525252;
741
+ font-family: "Open Sans",sans-serif;
742
+ font-size: 16px;
743
+ font-weight: 800;
744
+ letter-spacing: 0.15px;
745
+ line-height: 22px;
746
+ margin-bottom: 0;
747
+ }
748
+
749
+ .tab-content p {
750
+ color: #393E4A;
751
+ font-family: "Open Sans",sans-serif;
752
+ font-size: 16px;
753
+ line-height: 22px;
754
+ margin: 0.7em 0;
755
+ }
756
+
757
+ .tab-content textarea, .tab-content input[type=text]:not(.browser-default) {
758
+ padding: 20px;
759
+ width: 100%;
760
+ border: 1px solid #979797;
761
+ margin: .5em 0;
762
+ line-height: 20px;
763
+ border-radius: 5px;
764
+ font-size: 16px;
765
+ -webkit-box-sizing: border-box;
766
+ box-sizing: border-box;
767
+ }
768
+
769
+ .tab-content .input-field {
770
+ display: -webkit-box;
771
+ display: -ms-flexbox;
772
+ display: flex;
773
+ -webkit-box-orient: vertical;
774
+ -webkit-box-direction: normal;
775
+ -ms-flex-direction: column;
776
+ flex-direction: column;
777
+ width: 100%;
778
+ }
779
+
780
+ .tab-content .input-field__email input[type=email]:not(.browser-default) {
781
+ width: 250px;
782
+ padding: .5em;
783
+ background-color: #e7e7e7;
784
+ -webkit-box-sizing: border-box;
785
+ box-sizing: border-box;
786
+ }
787
+
788
+ .tab-content .upgrade_button {
789
+ padding: .7em;
790
+ border: none;
791
+ border-radius: 5px;
792
+ color: #fff;
793
+ background: -webkit-gradient(linear, left top, right top, from(#db8700), to(#f0b537));
794
+ background: linear-gradient(to right, #db8700 0%, #f0b537 100%);
795
+ background: -webkit-linear-gradient(left, #db8700 0%, #f0b537 100%);
796
+ font-size: 14px;
797
+ font-weight: 600;
798
+ text-decoration: none;
799
+ }
800
+
801
+ .tab-content .tab-content__footer {
802
+ margin-top: 50px;
803
+ display: -webkit-box;
804
+ display: -ms-flexbox;
805
+ display: flex;
806
+ -webkit-box-pack: end;
807
+ -ms-flex-pack: end;
808
+ justify-content: flex-end;
809
+ }
810
+
811
+ .tab-content .button-primary{
812
+ padding: 10px 30px;
813
+ background-color: #324ef8;
814
+ border-radius: 5px;
815
+ color: #fff;
816
+ text-decoration: none;
817
+ text-transform: uppercase;
818
+ font-size: 16px;
819
+ height: auto;
820
+ border: none;
821
+ width: auto;
822
+ }
823
+ p.submit{
824
+ margin-top: 30px;
825
+ text-align: right;
826
+ width: 100%;
827
+ }
828
+ .tab-content .button-primary:hover,.tab-content .button-primary:active,.tab-content .button-primary:focus {
829
+ opacity: 0.75;
830
+ background-color: #324ef8;
831
+ border: none;
832
+ }
833
+
834
+
835
+ .as_row {
836
+ display: -webkit-box;
837
+ display: -ms-flexbox;
838
+ display: flex;
839
+ -webkit-box-orient: horizontal;
840
+ -webkit-box-direction: normal;
841
+ -ms-flex-direction: row;
842
+ flex-direction: row;
843
+ -webkit-box-align: center;
844
+ -ms-flex-align: center;
845
+ align-items: center;
846
+ }
847
+
848
+ .as_row .switch {
849
+ position: relative;
850
+ display: inline-block;
851
+ width: 52px;
852
+ height: 27px;
853
+ margin: 0;
854
+ margin-right: 20px;
855
+ }
856
+
857
+ .as_row .switch input {
858
+ opacity: 0;
859
+ width: 0;
860
+ height: 0;
861
+ }
862
+
863
+ .as_row .slider {
864
+ position: absolute;
865
+ cursor: pointer;
866
+ top: 0;
867
+ left: 0;
868
+ right: 0;
869
+ bottom: 0;
870
+ background-color: #ccc;
871
+ -webkit-transition: .4s;
872
+ transition: .4s;
873
+ }
874
+
875
+ .as_row .slider:before {
876
+ position: absolute;
877
+ content: "";
878
+ height: 19px;
879
+ width: 19px;
880
+ left: 4px;
881
+ bottom: 4px;
882
+ background-color: white;
883
+ -webkit-transition: .4s;
884
+ transition: .4s;
885
+ }
886
+
887
+ .as_row input:checked + .slider {
888
+ background-color: #2196F3;
889
+ }
890
+
891
+ .as_row input:focus + .slider {
892
+ -webkit-box-shadow: 0 0 1px #2196F3;
893
+ box-shadow: 0 0 1px #2196F3;
894
+ }
895
+
896
+ .as_row input:checked + .slider:before {
897
+ -webkit-transform: translateX(25px);
898
+ transform: translateX(25px);
899
+ }
900
+
901
+ .as_row .slider.round {
902
+ border-radius: 34px;
903
+ }
904
+
905
+ .as_row .slider.round:before {
906
+ border-radius: 50%;
907
+ }
908
+
909
+ .customization_button__wrapper, .pro_button__wrapper {
910
+ background: -webkit-gradient(linear, left top, right top, from(#3d5afe), to(#7c4dff));
911
+ background: linear-gradient(to right, #3d5afe 0%, #7c4dff 100%);
912
+ padding: 1em 1.5em;
913
+ border-radius: 18px;
914
+ -webkit-box-shadow: 0px 0px 3px 0px rgba(0, 0, 0, 0.75);
915
+ box-shadow: 0px 0px 3px 0px rgba(0, 0, 0, 0.75);
916
+ }
917
+ .pro_button__wrapper{
918
+ position: absolute;
919
+ display: flex;
920
+ align-items: center;
921
+ top: -4px;
922
+ width: 100%;
923
+ /* height: 64px;*/
924
+ padding: 0 1em;
925
+ left: 0;
926
+ }
927
+
928
+ .customization_button__wrapper .customization_button__link, .pro_button__wrapper .pro_button__link {
929
+ text-decoration: none;
930
+ }
931
+ .pro_button__wrapper .pro_button__link{
932
+ width: 100%;
933
+ height: 100%;
934
+ }
935
+ .pro_button__wrapper .pro_button__link:focus{
936
+ border: 0;
937
+ box-shadow: none;
938
+ height: 100%;
939
+ }
940
+
941
+ .customization_button__wrapper .customization_button__image {
942
+ background-image: url("../img/monkey_head.png");
943
+ background-size: contain;
944
+ width: 45px;
945
+ height: 45px;
946
+ display: block;
947
+ background-repeat: no-repeat;
948
+ background-position: center;
949
+ margin: 0 0.3em;
950
+ }
951
+
952
+ .customization_button__wrapper .customization_button,.pro_button__wrapper .pro_button {
953
+ display: -webkit-box;
954
+ display: -ms-flexbox;
955
+ display: flex;
956
+ -webkit-box-pack: justify;
957
+ -ms-flex-pack: justify;
958
+ justify-content: space-between;
959
+ -webkit-box-align: center;
960
+ -ms-flex-align: center;
961
+ align-items: center;
962
+ }
963
+ .pro_button__wrapper .pro_button{
964
+ display: flex;
965
+ justify-content: space-between;
966
+ height: 100%;
967
+ }
968
+
969
+ .pro_button__content{
970
+ flex-direction: column;
971
+ height: 100%;
972
+ }
973
+ .pro_button__content h3,.pro_button__content p{
974
+ color: #fff;
975
+ padding: 0;
976
+ margin: 0;
977
+ }
978
+ .tab-content .form-table .pro_button__content p{
979
+ margin-top: 5px;
980
+ margin-bottom: 7px;
981
+ }
982
+ .pro_button__content h3 b{
983
+ color: red;
984
+ text-decoration: underline;
985
+ }
986
+
987
+ .customization_button__wrapper .customization_button .customization_button__content,.pro_button__wrapper .pro_button .pro_button__content {
988
+ display: -webkit-box;
989
+ display: -ms-flexbox;
990
+ display: flex;
991
+ -webkit-box-align: center;
992
+ -ms-flex-align: center;
993
+ align-items: center;
994
+ color: #fff;
995
+ font-size: 22px;
996
+ font-weight: bold;
997
+ line-height: 30px;
998
+ justify-content: center;
999
+ }
1000
+
1001
+ .customization_button__wrapper .customization_button__action, .pro_button__wrapper .pro_button__action{
1002
+ padding: 1em 2em;
1003
+ background-color: #fff;
1004
+ border-radius: 10px;
1005
+ display: -webkit-box;
1006
+ display: -ms-flexbox;
1007
+ display: flex;
1008
+ -webkit-box-align: center;
1009
+ -ms-flex-align: center;
1010
+ align-items: center;
1011
+ }
1012
+ .pro_button__wrapper .pro_button__action{
1013
+ padding: 0.6rem 2rem;
1014
+ }
1015
+ .customization_button__wrapper .customization_button__action .button_action__text , .pro_button__wrapper .pro_button_action__text{
1016
+ font-size: 18px;
1017
+ font-weight: 800;
1018
+ line-height: 24px;
1019
+ text-transform: uppercase;
1020
+ color: #7e74fe;
1021
+ }
1022
+
1023
+ .customize_section input, .customize_section select{
1024
+ width: 30%;
1025
+ }
1026
+ .select-1{
1027
+ margin: 15px 0;
1028
+ }
1029
+
1030
+ .customize_section input.select_numbers, .customize_section select.select_numbers {
1031
+ width: 100px;
1032
+ }
1033
+
1034
+ .customize_section .greeting_display__wrapper span {
1035
+ color: #393E4A;
1036
+ font-family: "Open Sans",sans-serif;
1037
+ font-size: 16px;
1038
+ line-height: 22px;
1039
+ margin-left: 1.2em;
1040
+ }
1041
+
1042
+ .list_tabs__button {
1043
+ display: none;
1044
+
1045
+ background-size: contain;
1046
+ width: 20px;
1047
+ height: 20px;
1048
+ background-repeat: no-repeat;
1049
+ background-position: center;
1050
+ }
1051
+
1052
+ .list_tabs__button .list_tabs {
1053
+ display: none;
1054
+ }
1055
+ .form-table p.description{
1056
+ font-style: normal;
1057
+ }
1058
+ #to_pro,#unsaved_option, #pro_option,#cancel,#mm_option {
1059
+ z-index: 999;
1060
+ transition: all 0.5s ease;
1061
+ background-color: #FFFFFF;
1062
+ display: none;
1063
+ position: fixed;
1064
+ top: 30%;
1065
+ left: 0;
1066
+ right: 0;
1067
+ width: 563px;
1068
+ margin: 0 auto;
1069
+ color: #525252;
1070
+ border: 1px solid #000;
1071
+ border-radius: 10px;
1072
+ }
1073
+
1074
+
1075
+ #to_pro .modal_close,#unsaved_option .modal_close,#pro_option .modal_close, #mm_option .modal_close,#cancel .modal_close {
1076
+ background-size: contain;
1077
+ width: 15px;
1078
+ height: 15px;
1079
+ background-repeat: no-repeat;
1080
+ background-position: center;
1081
+ position: absolute;
1082
+ right: 12px;
1083
+ top: 12px;
1084
+ cursor: pointer;
1085
+ z-index: 999;
1086
+ }
1087
+
1088
+
1089
+ #to_pro .upgrade__wrapper,#unsaved_option .unsaved__wrapper,#cancel .cancel__wrapper,#mm_option .mm__wrapper{
1090
+ position: relative;
1091
+ height: 302px;
1092
+ padding-top: 1em;
1093
+ }
1094
+
1095
+ #to_pro .upgrade__content,#unsaved_option .unsaved__content,#cancel .cancel__content,#mm_option .mm__content{
1096
+ padding: 1.5em;
1097
+ }
1098
+
1099
+
1100
+
1101
+ #to_pro .upgrade__button, #unsaved_option .unsaved__button, #mm_option .mm__button,#cancel .cancel__button{
1102
+ padding: 1.5em 2em;
1103
+ text-align: center;
1104
+ position: absolute;
1105
+ width: 100%;
1106
+ max-width: 564px;
1107
+ bottom: 0px;
1108
+ display: flex;
1109
+ justify-content: flex-end;
1110
+ align-items: baseline;
1111
+ }
1112
+ #unsaved_option .unsaved__button{
1113
+ flex-direction: row-reverse;
1114
+ justify-content: flex-start;
1115
+ }
1116
+
1117
+ #to_pro .upgrade__button .reds,#unsaved_option .unsaved__button .reds,#cancel .cancel__button .reds{
1118
+ padding: 5px 15px;
1119
+ background-color: #ca4646;
1120
+ border-radius: 5px;
1121
+ color: #fff;
1122
+ text-decoration: none;
1123
+ text-transform: uppercase;
1124
+ font-size: 16px;
1125
+ border: none;
1126
+ flex-basis: 25%;
1127
+ position: relative;
1128
+ margin: 0 10px;
1129
+ }
1130
+ #cancel .cancel__button .reds{
1131
+ flex-basis: 40%;
1132
+ }
1133
+ .subscribe_succes_cancel{
1134
+ font-size: 19px;
1135
+ padding: 20px;
1136
+ height: 80%;
1137
+ display: flex;
1138
+ align-items: center;
1139
+ }
1140
+ #to_pro .upgrade__button .reds:hover,#unsaved_option .unsaved__button .reds:hover,#cancel .cancel__button .reds:hover{
1141
+ opacity: 0.75;
1142
+ background-color: #ca4646;
1143
+ border: none;
1144
+ }
1145
+ #unsaved_option .unsaved__button #discard_button{
1146
+ background-color: #fff;
1147
+ color: #ca4646;
1148
+ }
1149
+ #unsaved_option .unsaved__button #discard_button:hover{
1150
+ text-decoration: underline;
1151
+ background-color: #fff;
1152
+ opacity: 1;
1153
+ }
1154
+ #unsaved_option .unsaved__button #discard_button:focus{
1155
+ box-shadow: none;
1156
+ }
1157
+ .modal a.blues{
1158
+ cursor: pointer;
1159
+ padding: 5px 15px;
1160
+ background-color: #324ef8;
1161
+ border-radius: 5px;
1162
+ color: #fff;
1163
+ text-decoration: none;
1164
+ font-size: 16px;
1165
+ border: none;
1166
+ margin: 0 10px;
1167
+ position: relative;
1168
+ }
1169
+ .modal .mm__content{
1170
+ color: #525252;
1171
+ }
1172
+ .modal a.gray{
1173
+ padding: 5px 15px;
1174
+ border-radius: 5px;
1175
+ background-color: gray;
1176
+ cursor: pointer;
1177
+ color: #fff;
1178
+ text-decoration: none;
1179
+ font-size: 16px;
1180
+ border: none;
1181
+ margin: 0 10px;
1182
+ position: relative;
1183
+ }
1184
+ .modal .mm__content{
1185
+ color: #525252;
1186
+ }
1187
+ .modal a.gray{
1188
+ padding: 5px 15px;
1189
+ border-radius: 5px;
1190
+ background-color: gray;
1191
+ cursor: pointer;
1192
+ color: #fff;
1193
+ text-decoration: none;
1194
+ font-size: 16px;
1195
+ border: none;
1196
+ margin: 0 10px;
1197
+ }
1198
+ .modal .upgrade__button .blues,.modal .unsaved__button .blues{
1199
+ text-transform: uppercase;
1200
+ flex-basis: 25%;
1201
+ }
1202
+ .modal a.blues:hover,.modal a.blues:hover{
1203
+ opacity: 0.75;
1204
+ background-color: #324ef8;
1205
+ border: none;
1206
+ }
1207
+ .mobile_wrap .modal-overlays {
1208
+ position: fixed;
1209
+ margin-left: -20px;
1210
+ right: 0;
1211
+ height: auto;
1212
+ width: auto;
1213
+ background: #000;
1214
+ will-change: opacity;
1215
+ opacity: 0.4;
1216
+ z-index: 998;
1217
+ top: -25%;
1218
+ left: 0;
1219
+ bottom: 0;
1220
+ display: none;
1221
+ }
1222
+ .mobile_wrap{
1223
+ overflow: hidden;
1224
+ width: 100%;
1225
+ }
1226
+
1227
+ #modal_form {
1228
+ display: none;
1229
+ position: fixed;
1230
+ top: 5%;
1231
+ right: 0;
1232
+ left: 0;
1233
+ width: 650px;
1234
+ margin: 0 auto;
1235
+ background-color: #4558fe;
1236
+ font-size: 18px;
1237
+ border-radius: 0.9em;
1238
+ -webkit-box-shadow: 0px 0px 5px -2px rgba(0, 0, 0, 0.75);
1239
+ box-shadow: 0px 0px 5px -2px rgba(0, 0, 0, 0.75);
1240
+ }
1241
+
1242
+ #modal_form .modal_form__wrapper {
1243
+ padding: 0.5em;
1244
+ }
1245
+
1246
+ #modal_form .modal_form__header {
1247
+ padding: 0 1.7em;
1248
+ color: #fff;
1249
+ }
1250
+
1251
+ #modal_form .modal_form__header .customization_button__image {
1252
+ background-size: contain;
1253
+ width: 45px;
1254
+ height: 45px;
1255
+ display: block;
1256
+ background-repeat: no-repeat;
1257
+ background-position: center;
1258
+ margin: 0 1em;
1259
+ }
1260
+
1261
+ #modal_form .modal_form__header .logo_header {
1262
+ display: -webkit-box;
1263
+ display: -ms-flexbox;
1264
+ display: flex;
1265
+ -webkit-box-pack: center;
1266
+ -ms-flex-pack: center;
1267
+ justify-content: center;
1268
+ -webkit-box-align: center;
1269
+ -ms-flex-align: center;
1270
+ align-items: center;
1271
+ color: #FFFFFF;
1272
+ font-size: 20px;
1273
+ font-weight: bold;
1274
+ line-height: 19px;
1275
+ }
1276
+
1277
+ #modal_form .modal_form__header .version_name__header {
1278
+ display: -webkit-box;
1279
+ display: -ms-flexbox;
1280
+ display: flex;
1281
+ -webkit-box-orient: vertical;
1282
+ -webkit-box-direction: normal;
1283
+ -ms-flex-direction: column;
1284
+ flex-direction: column;
1285
+ -webkit-box-pack: center;
1286
+ -ms-flex-pack: center;
1287
+ justify-content: center;
1288
+ -webkit-box-align: center;
1289
+ -ms-flex-align: center;
1290
+ align-items: center;
1291
+ margin-bottom: 1em;
1292
+ }
1293
+
1294
+ #modal_form .modal_form__header .version_name__header .version_header__text {
1295
+ color: #FFFFFF;
1296
+ font-size: 56px;
1297
+ font-weight: 800;
1298
+ line-height: 77px;
1299
+ }
1300
+
1301
+ #modal_form .modal_form__header .version_name__header .version_header__price {
1302
+ font-size: 32px;
1303
+ font-weight: 800;
1304
+ line-height: 43px;
1305
+ text-align: right;
1306
+ }
1307
+
1308
+ #modal_form .modal_form__header .version_name__header .version_header__price span {
1309
+ font-size: 24px;
1310
+ font-weight: bold;
1311
+ line-height: 32px;
1312
+ }
1313
+
1314
+ #modal_form .modal_form__header .header_variations {
1315
+ display: -webkit-box;
1316
+ display: -ms-flexbox;
1317
+ display: flex;
1318
+ }
1319
+
1320
+ #modal_form .modal_form__header .header_variations span {
1321
+ background-size: 15px;
1322
+ width: 15px;
1323
+ height: 15px;
1324
+ padding: 0.5em;
1325
+ background-repeat: no-repeat;
1326
+ background-position: center;
1327
+ }
1328
+
1329
+ #modal_form .modal_form__header .header_variations .variation_item {
1330
+ margin-right: 2em;
1331
+ color: #FFFFFF;
1332
+ font-size: 16px;
1333
+ font-weight: 600;
1334
+ line-height: 22px;
1335
+ }
1336
+
1337
+ #modal_form .modal_form__header .header_input {
1338
+ background-color: #fff;
1339
+ border-radius: 0.7em;
1340
+ padding: 0.7em 1em;
1341
+ display: -webkit-box;
1342
+ display: -ms-flexbox;
1343
+ display: flex;
1344
+ -webkit-box-align: center;
1345
+ -ms-flex-align: center;
1346
+ align-items: center;
1347
+ margin: 1em 0;
1348
+ }
1349
+
1350
+ #modal_form .modal_form__header .header_input .checkbox_image {
1351
+ background-size: 25px;
1352
+ width: 28px;
1353
+ height: 28px;
1354
+ padding: 0.5em;
1355
+ background-repeat: no-repeat;
1356
+ background-position: center;
1357
+ background-color: #5455fe;
1358
+ border-radius: 50%;
1359
+ }
1360
+
1361
+ #modal_form .modal_form__header .header_input .header_input__content {
1362
+ margin-left: 3em;
1363
+ }
1364
+
1365
+ #modal_form .modal_form__header .header_input .header_input__name {
1366
+ color: #525252;
1367
+ font-size: 20px;
1368
+ font-weight: bold;
1369
+ line-height: 27px;
1370
+ }
1371
+
1372
+ #modal_form .modal_form__header .header_input .header_input__date {
1373
+ color: #525252;
1374
+ font-size: 14px;
1375
+ line-height: 19px;
1376
+ }
1377
+
1378
+ #modal_form .form_row {
1379
+ display: -webkit-box;
1380
+ display: -ms-flexbox;
1381
+ display: flex;
1382
+ padding: 0.5em;
1383
+ }
1384
+
1385
+ #modal_form .form_input {
1386
+ -webkit-box-orient: vertical;
1387
+ -webkit-box-direction: normal;
1388
+ -ms-flex-direction: column;
1389
+ flex-direction: column;
1390
+ width: 100%;
1391
+ max-width: 100%;
1392
+ padding: 0 1.2em;
1393
+ color: #fff;
1394
+ }
1395
+
1396
+ #modal_form .form_input label {
1397
+ color: #FFFFFF;
1398
+ font-size: 16px;
1399
+ font-weight: 800;
1400
+ line-height: 22px;
1401
+ text-transform: uppercase;
1402
+ }
1403
+
1404
+ #modal_form .form_input input {
1405
+ padding: 0.8em 1.5em;
1406
+ border-radius: 0.7em;
1407
+ border: none;
1408
+ font-size: 18px;
1409
+ line-height: 20px;
1410
+ width: 100%;
1411
+ max-width: 100%;
1412
+ -webkit-box-sizing: border-box;
1413
+ box-sizing: border-box;
1414
+ }
1415
+
1416
+ #modal_form .form_input a {
1417
+ color: #FFFFFF;
1418
+ font-size: 14px;
1419
+ font-weight: bold;
1420
+ line-height: 19px;
1421
+ }
1422
+
1423
+ #modal_form .form_privacy {
1424
+ padding: 0.5em;
1425
+ }
1426
+
1427
+ #modal_form .form_privacy .form_checkbox {
1428
+ padding: 0 1.2em;
1429
+ }
1430
+
1431
+ #modal_form .form_checkbox {
1432
+ color: #FFFFFF;
1433
+ font-size: 14px;
1434
+ line-height: 19px;
1435
+ }
1436
+
1437
+ #modal_form .form_checkbox a {
1438
+ color: #FFFFFF;
1439
+ font-size: 14px;
1440
+ font-weight: bold;
1441
+ line-height: 19px;
1442
+ }
1443
+
1444
+ #modal_form .form_submit {
1445
+ display: -webkit-box;
1446
+ display: -ms-flexbox;
1447
+ display: flex;
1448
+ -webkit-box-pack: center;
1449
+ -ms-flex-pack: center;
1450
+ justify-content: center;
1451
+ }
1452
+
1453
+ #modal_form .form_submit a {
1454
+ color: #5456FF;
1455
+ font-size: 30px;
1456
+ font-weight: bold;
1457
+ line-height: 41px;
1458
+ background-color: #fff;
1459
+ padding: 0.5em 1.9em;
1460
+ text-decoration: none;
1461
+ display: inline-block;
1462
+ border-radius: 0.7em;
1463
+ }
1464
+ .setup_section table tbody tr:first-child th{
1465
+ font-weight: 800;
1466
+ letter-spacing: 0.2px;
1467
+ line-height: 30px;
1468
+ float: left;
1469
+ padding: 10px 0;
1470
+ font-size: 22px;
1471
+ font-weight: 800;
1472
+ }
1473
+ .tab-content .tab-content__wrapper .testchat{
1474
+ position: absolute;
1475
+ right: 0;
1476
+ background-color: #6071fb;
1477
+ color: #fff;
1478
+ border:none;
1479
+ box-shadow: none;
1480
+ width: 140px;
1481
+ text-align: center;
1482
+ font-family: "Open Sans", sans-serif;
1483
+ font-size: 14px;
1484
+ font-weight: 500;
1485
+ }
1486
+ .tab-content table th{
1487
+ font-family: "Open Sans",sans-serif;
1488
+ font-weight: bold;
1489
+ color: #525252;
1490
+ font-size: 14px;
1491
+ letter-spacing: 0.15px;
1492
+ line-height: 22px;
1493
+ padding: 0;
1494
+ text-transform: uppercase;
1495
+ }
1496
+ .tab-content label.gray{
1497
+ color: #949494;
1498
+ font-family: "Open Sans",sans-serif;
1499
+ font-size: 16px;
1500
+ line-height: 22px;
1501
+ padding: 10px 0;
1502
+ }
1503
+ .tab-content .form-table td p{
1504
+ font-family: "Open Sans",sans-serif;
1505
+ margin-bottom: 10px;
1506
+ margin-top: 0;
1507
+ font-size: 16px;
1508
+ }
1509
+ .tab-content table label{
1510
+ color: #525252;
1511
+ font-family: "Open Sans",sans-serif;
1512
+ font-size: 14px;
1513
+ letter-spacing: 0.13px;
1514
+ line-height: 19px;
1515
+ padding-bottom: 10px;
1516
+ }
1517
+ .tab-content .input-field{
1518
+ padding: 0;
1519
+ }
1520
+ .tab-content .as_state{
1521
+ display: flex;
1522
+ flex-direction: column;
1523
+ }
1524
+
1525
+ .tab-content .as h6{
1526
+ font-size: 14px;
1527
+ font-weight: bold;
1528
+ line-height: 19px;
1529
+ text-transform: uppercase;
1530
+ }
1531
+ .tab-content .sp-replacer{
1532
+ margin-top: 20px;
1533
+ background: none;
1534
+ padding: 0;
1535
+ }
1536
+ .tab-content input[type=checkbox]{
1537
+ width: auto;
1538
+ }
1539
+ .tab-content input[type=number]{
1540
+ width: 30%!important;
1541
+ }
1542
+ .tab-content .sp-replacer,.sp-preview{
1543
+ width: 80px;
1544
+ height: 80px;
1545
+ border: none;
1546
+ }
1547
+ .tab-content .sp-dd{
1548
+ display: none;
1549
+ }
1550
+
1551
+ .customize_section table th,
1552
+ .customize_section table td {
1553
+ margin-bottom: 10px;
1554
+ }
1555
+ .options table td{
1556
+ margin-bottom: 15px;
1557
+ vertical-align: middle;
1558
+ padding: 0;
1559
+ width: 80%;
1560
+ }
1561
+ .wrap__pro{
1562
+ position: relative;
1563
+ }
1564
+ .customize_section table th{
1565
+ font-family: "Open Sans",sans-serif;
1566
+ font-weight: 800;
1567
+ color: #525252;
1568
+ font-size: 16px;
1569
+ letter-spacing: 0.15px;
1570
+ line-height: 22px;
1571
+ padding: 0;
1572
+ text-transform: uppercase;
1573
+ }
1574
+
1575
+ .setup_section th,
1576
+ .setup_section td{
1577
+ display: block;
1578
+ width: auto;
1579
+ }
1580
+ .customize_section th,
1581
+ .customize_section td{
1582
+ display: block!important;
1583
+ width: auto;
1584
+ }
1585
+
1586
+ .options .contact_tab table th.sortable a,.options .contact_tab table th.sorted a,.options .contact_tab table th{
1587
+ display: inline-block;
1588
+ padding: 0;
1589
+ color: #A9A5A5;
1590
+ height: 100%;
1591
+ text-transform: capitalize;
1592
+ }
1593
+ .options .contact_tab table th.sortable a:focus,.options .contact_tab table th.sorted a:focus{
1594
+ box-shadow: none;
1595
+ }
1596
+
1597
+ .options .contact_tab table,.options .contact_tab table tbody{
1598
+ display: block;
1599
+ }
1600
+ .options .contact_tab table tr:first-child{
1601
+ padding-bottom: 15px;
1602
+ margin-bottom: 0;
1603
+ box-shadow: none;
1604
+ }
1605
+ .options .contact_tab table tr:hover:not(:first-child){
1606
+ cursor: pointer;
1607
+ background-color: #f9fafb;
1608
+ }
1609
+ .download__wrap .pro_button__content{
1610
+ text-align: center;
1611
+ }
1612
+ .options .contact_tab table tr{
1613
+ margin-bottom: 1em;
1614
+ display: grid;
1615
+ grid-column: 1 / -1;
1616
+ grid-template-columns: 10% 25% 10% 10% 12% 23% 10%;
1617
+ padding: 1rem 25px;
1618
+ box-shadow: 0 0 4px 3px rgba(242,239,237,1);
1619
+ vertical-align: middle;
1620
+ -ms-flex-align: center;
1621
+ align-items: center;
1622
+ }
1623
+ .options .contact_tab table td{
1624
+ margin: 0;
1625
+ padding: 0;
1626
+ width: 100%;
1627
+ vertical-align: middle;
1628
+ font-family: "Open Sans",sans-serif;
1629
+ font-size: 14px;
1630
+ font-weight: bold;
1631
+ word-break: break-all;
1632
+ }
1633
+
1634
+ .options .contact_tab table td img{
1635
+ vertical-align: middle;
1636
+ border-radius: 50%;
1637
+ min-width: 3.5rem;
1638
+ }
1639
+ .options .contact_tab table td.gender{
1640
+ text-transform: capitalize;
1641
+ }
1642
+ .options .contact_tab table{
1643
+ border: none;
1644
+ }
1645
+ .contact_tab{
1646
+ padding: 20px 20px 40px 20px;
1647
+ }
1648
+ .contact_tab .table__wrap .displaying-num{
1649
+ display: none;
1650
+ }
1651
+ .contact_tab .table__wrap{
1652
+ padding-bottom: 5rem;
1653
+ }
1654
+ .tab-content .contact_head__wrap h4,.tab-content .contact_head__wrap p{
1655
+ display: inline-block;
1656
+ font-size: 18px;
1657
+ }
1658
+ .contact_head__wrap{
1659
+ display: flex;
1660
+ justify-content: space-between;
1661
+ align-items: center;
1662
+ margin-bottom: 20px;
1663
+ }
1664
+
1665
+ .contact_head__wrap a{
1666
+ color: #324EF8;
1667
+ font-family: "Open Sans",sans-serif;
1668
+ font-size: 16px;
1669
+ font-weight: 600;
1670
+ line-height: 22px;
1671
+ box-shadow: 0 0 10px #cfcfcf;
1672
+ border-radius: 9px;
1673
+ padding: 10px;
1674
+ }
1675
+ .contact_head__wrap a:active{
1676
+ box-shadow: none;
1677
+ }
1678
+ .contact_head__wrap a>i{
1679
+ color: #324EF8;
1680
+ margin-right: 8px;
1681
+ }
1682
+ .contact_head__wrap .download__wrap{
1683
+ position: relative;
1684
+ width: 71%;
1685
+ height: 100%;
1686
+ text-align: right;
1687
+ }
1688
+ .contact_head__wrap .pro_button__wrapper{
1689
+ display: flex;
1690
+ align-items: center;
1691
+ top: -35px;
1692
+ width: 100%;
1693
+ height: 100px;
1694
+ left: 0;
1695
+ position: absolute;
1696
+ bottom: 0;
1697
+ padding: 0;
1698
+ }
1699
+
1700
+ .contact_head__wrap .pro_button__wrapper .pro_button__content p{
1701
+ margin-bottom: 5px;
1702
+ }
1703
+
1704
+ .contact_head__wrap .pro_button__wrapper a{
1705
+ padding: 0.5em 1em;
1706
+ }
1707
+
1708
+ .contact_head__wrap .pro_button__wrapper a{
1709
+ box-shadow: none;
1710
+ }
1711
+
1712
+
1713
+ .tab-content .contact_head__wrap h4{
1714
+ margin: 0 10px 0 0;
1715
+ color: #525252;
1716
+ font-family: "Open Sans",sans-serif;
1717
+ font-size: 36px;
1718
+ font-weight: bold;
1719
+ }
1720
+ .table__wrap{
1721
+ position: relative;
1722
+ }
1723
+
1724
+ .connected-page .connect_check{
1725
+ display: inline-block;
1726
+ margin: 10px 0 0 0;
1727
+ padding: 1px 10px;
1728
+ background-color: green;
1729
+ border-radius: 5px;
1730
+ color: #fff;
1731
+ text-decoration: none;
1732
+ text-transform: uppercase;
1733
+ font-size: 13px;
1734
+ height: auto;
1735
+ border: none;
1736
+ width: fit-content;
1737
+
1738
+ }
1739
+ .connected-page .connect_check:hover {
1740
+ opacity: 0.75;
1741
+ border: none;
1742
+ }
1743
+ .connect_check .fa-check{
1744
+ margin-right: 5px;
1745
+ }
1746
+ .page_name{
1747
+ color: #525252;
1748
+ font-family: "Open Sans",sans-serif;
1749
+ font-size: 26px;
1750
+ font-weight: bold;
1751
+ letter-spacing: 0.24px;
1752
+ line-height: 32px;
1753
+ margin: 0;
1754
+ vertical-align: middle;
1755
+
1756
+ }
1757
+ #contacts_modal {
1758
+ width: 65%;
1759
+ -webkit-user-drag:none;
1760
+ user-drag:none;
1761
+ -moz-user-drag:none;
1762
+ -ms-user-drag:none;
1763
+ position: absolute;
1764
+ padding: 1em 2em;
1765
+ color: #fff;
1766
+ top: 20%;
1767
+ left: 0;
1768
+ right: 0;
1769
+ margin: 0 auto;
1770
+ background: -webkit-gradient(linear, left top, right top, from(#3d5afe), to(#7c4dff));
1771
+ background: linear-gradient(to right, #3d5afe 0%, #7c4dff 100%);
1772
+ border-radius: 18px;
1773
+ -webkit-box-shadow: 0px 0px 5px 1px rgba(0, 0, 0, 0.75);
1774
+ box-shadow: 0px 0px 5px 1px rgba(0, 0, 0, 0.75);
1775
+ }
1776
+
1777
+ #contacts_modal .contact_modal__wrapper {
1778
+ display: -webkit-box;
1779
+ display: -ms-flexbox;
1780
+ display: flex;
1781
+ -webkit-box-pack: justify;
1782
+ -ms-flex-pack: justify;
1783
+ justify-content: space-between;
1784
+ -webkit-box-align: center;
1785
+ -ms-flex-align: center;
1786
+ align-items: center;
1787
+ }
1788
+
1789
+ #contacts_modal .contact_modal__content {
1790
+ display: -webkit-box;
1791
+ display: -ms-flexbox;
1792
+ display: flex;
1793
+ -webkit-box-align: center;
1794
+ -ms-flex-align: center;
1795
+ align-items: center;
1796
+ }
1797
+ #contacts_modal .contact_modal__content p {
1798
+ color: #FFFFFF;
1799
+ font-size: 22px;
1800
+ font-weight: bold;
1801
+ line-height: 30px;
1802
+ }
1803
+ #contacts_modal .contact_modal__content .logo_name {
1804
+ color: #FFFFFF;
1805
+ font-family: "Open Sans",sans-serif;
1806
+ font-size: 20px;
1807
+ font-weight: bold;
1808
+ line-height: 19px;
1809
+ }
1810
+
1811
+ #contacts_modal .contact_modal__button {
1812
+ background-color: #fff;
1813
+ padding: 0.7em 1.5em;
1814
+ font-size: 18px;
1815
+ font-weight: 800;
1816
+ line-height: 24px;
1817
+ text-transform: uppercase;
1818
+ border-radius: 9px;
1819
+ }
1820
+
1821
+ #contacts_modal .contact_modal__button a {
1822
+ text-decoration: none;
1823
+ }
1824
+
1825
+ #contacts_modal .customization_button__image {
1826
+ background-image: url("../img/monkey_head.png");
1827
+ background-size: contain;
1828
+ width: 45px;
1829
+ height: 45px;
1830
+ background-repeat: no-repeat;
1831
+ background-position: center;
1832
+ margin: 0 .3em;
1833
+ display: inline-block;
1834
+ }
1835
+ .connected-page-bottom .active-page-info{
1836
+ display: block;
1837
+ }
1838
+ .log_out__wrapper,.disconnect_page__wrapper{
1839
+ margin-top: 10px;
1840
+ display: flex;
1841
+ justify-content: space-between;
1842
+ align-items: center;
1843
+ }
1844
+ .log_out__wrapper h5{
1845
+ margin: 0;
1846
+ padding: 0;
1847
+ }
1848
+ .log_out__wrapper .logout-mobilemonkey{
1849
+ margin: 0;
1850
+ }
1851
+ .disconnect_page__wrapper{
1852
+ padding: 0 20px;
1853
+ background-color: #25252525;
1854
+ }
1855
+ .disconnect_page__wrapper p b {
1856
+ color: green;
1857
+ }
1858
+ .disconnect_page__wrapper p {
1859
+ color: #000;
1860
+ }
1861
+ .mm_only-state{
1862
+ background-color: #000000;
1863
+ }
1864
+ .contact_modal__button div{
1865
+ color: #5F52FE;
1866
+ }
1867
+ .mobilemonkey-settings h5{
1868
+ color: #525252;
1869
+ font-family: "Open Sans",sans-serif;
1870
+ font-size: 36px;
1871
+ font-weight: bold;
1872
+ letter-spacing: 0.33px;
1873
+ line-height: 49px;
1874
+ margin: 20px 0 0 0;
1875
+ }
1876
+ .mobilemonkey-settings p.get_start{
1877
+ color: #525252; font-family: "Open Sans",sans-serif;
1878
+ font-size: 24px;
1879
+ letter-spacing: 0.22px;
1880
+ line-height: 33px;
1881
+ margin: 0 0 30px 0;
1882
+ }
1883
+ .mobilemonkey-settings p{
1884
+ margin-top: 15px;
1885
+ }
1886
+ .tab-content .form-table td .welcome_text{
1887
+ margin: 5px 10px 20px 0;
1888
+ }
1889
+ .tab-content .form-table td .head_text{
1890
+ font-size: 22px;
1891
+ font-weight: 800;
1892
+ line-height: 30px;
1893
+ font-family: "Open Sans",sans-serif;
1894
+ letter-spacing: 0.15px;
1895
+ color: #525252;
1896
+ text-transform: uppercase;
1897
+ }
1898
+
1899
+ .tab-content .form-table td .qual_p{
1900
+ margin: 20px 0 30px 0;
1901
+ }
1902
+
1903
+ @media (max-width: 575.98px) {
1904
+ #to_pro, #unsaved_option{
1905
+ width: 90%;
1906
+ }
1907
+ .service-content {
1908
+ text-align: center;
1909
+ }
1910
+ .service-content iframe{
1911
+ width: 250px!important;
1912
+ }
1913
+ .contact_tab{
1914
+ padding-bottom: 100px;
1915
+ }
1916
+ .customization_button,#contacts_modal .contact_modal__wrapper{
1917
+ flex-direction: column;
1918
+ }
1919
+ .customization_button .customization_button__action,#contacts_modal .contact_modal__button{
1920
+ margin-top: 20px;
1921
+ }
1922
+ #contacts_modal {
1923
+ width: 100%;
1924
+ }
1925
+ #contacts_modal .contact_modal__content{
1926
+ flex-direction: column;
1927
+ text-align: center;
1928
+ }
1929
+ .contact_tab .table__wrap{
1930
+ padding-bottom: 10rem;
1931
+ }
1932
+ .customization_button__wrapper .customization_button .customization_button__content{
1933
+ flex-direction: column;
1934
+ text-align: center;
1935
+ }
1936
+ }
1937
+
1938
+ @media (min-width: 576px) and (max-width: 767.98px) {
1939
+ .contact_tab{
1940
+ padding-bottom: 100px;
1941
+ }
1942
+ .customization_button,#contacts_modal .contact_modal__wrapper{
1943
+ flex-direction: column;
1944
+ }
1945
+ .customization_button .customization_button__action,#contacts_modal .contact_modal__button{
1946
+ margin-top: 20px;
1947
+ }
1948
+ #contacts_modal {
1949
+ width: 100%;
1950
+ }
1951
+ .download__wrap .pro_button__wrapper{
1952
+ padding: 0;
1953
+ }
1954
+ .download__wrap .pro_button__wrapper .pro_button{
1955
+ flex-direction: column;
1956
+ text-align: center;
1957
+ }
1958
+ }
1959
+
1960
+
1961
+ @media (min-width: 768px) and (max-width: 991.98px) {
1962
+ .contact_tab{
1963
+ padding-bottom: 100px;
1964
+ }
1965
+ .customization_button,#contacts_modal .contact_modal__wrapper{
1966
+ flex-direction: column;
1967
+ }
1968
+ .customization_button .customization_button__action,#contacts_modal .contact_modal__button{
1969
+ margin-top: 20px;
1970
+ }
1971
+ .download__wrap .pro_button__wrapper{
1972
+ padding: 0;
1973
+ }
1974
+ .download__wrap .pro_button__wrapper .pro_button{
1975
+ flex-direction: column;
1976
+ text-align: center;
1977
+ }
1978
+ }
1979
+
1980
+
1981
+ @media (min-width: 992px) and (max-width: 1199.98px) {
1982
+ .customization_button,#contacts_modal .contact_modal__wrapper{
1983
+ flex-direction: column;
1984
+ }
1985
+ .download__wrap .pro_button__wrapper{
1986
+ padding: 0;
1987
+ }
1988
+ .download__wrap .pro_button__wrapper .pro_button{
1989
+ flex-direction: column;
1990
+ text-align: center;
1991
+ }
1992
+ }
1993
+
1994
+
1995
+ @media (min-width: 1800px) {
1996
+ .main-question{
1997
+ width: 800px!important;
1998
+ }
1999
+ }
2000
+
2001
+
2002
+ /*PRO modal*/
2003
+
2004
+ #pro_option{
2005
+ border-radius: 0;
2006
+ border: 0;
2007
+ background-color: transparent;
2008
+ top: 10%;
2009
+ max-height: 100%;
2010
+ }
2011
+ #pro_option .modal_close i{
2012
+ color: #fff;
2013
+ font-size: 20px;
2014
+ }
2015
+ .billing-modal-header {
2016
+ width: 100%;
2017
+ display: flex;
2018
+ background-color: #4F57FF;
2019
+ align-items: center;
2020
+ flex-direction: column;
2021
+ color: #fff;
2022
+ border-radius: 10px 10px 0 0;
2023
+ }
2024
+ .billing-modal-header__plan-name {
2025
+ font-size: 43px;
2026
+ font-weight: 700;
2027
+ text-transform: uppercase;
2028
+ line-height: 45px;
2029
+ text-align: center;
2030
+ }
2031
+ .billing-modal-header__plan-price{
2032
+ text-align: center;
2033
+ }
2034
+ .billing-modal-header__plan-price p{
2035
+ font-size: 23px;
2036
+ margin: 0;
2037
+ text-align: center;
2038
+ font-weight: 200;
2039
+ }
2040
+ .billing-modal-header__plan-price .discount .disc_cross b{
2041
+ font-size: 1.4em;
2042
+ }
2043
+ .billing-modal-header__plan-price .discount .disc_cross{
2044
+ margin-right: 20px;
2045
+ position: relative;
2046
+ color: #fff;
2047
+ font-size: 20px;
2048
+ }
2049
+ .billing-modal-header__plan-price .discount{
2050
+ display: flex;
2051
+ margin-top: 5px;
2052
+ align-items: baseline;
2053
+ }
2054
+ .billing-modal-header__plan-price .discount p{
2055
+ color: #2FF2E1;
2056
+ text-decoration: none;
2057
+ font-size: 20px;
2058
+ }
2059
+ .modal .billing-modal-header__plan-price h4{
2060
+ font-weight: 600;
2061
+ text-decoration: none;
2062
+ color: #FF7140;
2063
+ line-height: 18px;
2064
+ margin: 15px 0 0;
2065
+ }
2066
+ .billing-modal-header__plan-price p.billed{
2067
+ text-decoration: none;
2068
+ color: #9095FF;
2069
+ font-weight: 200;
2070
+ font-size: 1.6em;
2071
+ }
2072
+
2073
+ .billing-modal-header__plan-price .discount .disc_cross:before {
2074
+ content: "";
2075
+ border-bottom: 2px solid #FF8761;
2076
+ position: absolute;
2077
+ height: 10px;
2078
+ width: 100%;
2079
+ bottom: 18px;
2080
+ }
2081
+ .billing-modal-header__plan-price h4 b{
2082
+ font-weight: 200;
2083
+ font-size: 0.7em;
2084
+ }
2085
+ p.billed{
2086
+ color: #9095FF;
2087
+ font-weight: 200;
2088
+ font-size: 0.6em;
2089
+ }
2090
+ .billing-modal-header__logo div{
2091
+ background-image: url("../img/monkey_head.png");
2092
+ background-size: contain;
2093
+ width: 35px;
2094
+ height: 35px;
2095
+ display: block;
2096
+ background-repeat: no-repeat;
2097
+ background-position: center;
2098
+ margin: 0 0.3em;
2099
+ }
2100
+
2101
+ .billing-modal-header__logo{
2102
+ margin: 1rem 0;
2103
+ display: flex;
2104
+ align-items: center;
2105
+ }
2106
+
2107
+ .billing-modal-header__logo span{
2108
+ color: #fff;
2109
+ font-size: 18px;
2110
+ font-weight: bold;
2111
+ }
2112
+
2113
+ .billing-page-details {
2114
+ width: 90%;
2115
+ background-color: #fff;
2116
+ display: flex;
2117
+ padding: 10px 15px;
2118
+ align-items: center;
2119
+ justify-content: space-between;
2120
+ margin-top: 10px;
2121
+ border-radius: 12px;
2122
+ margin-bottom: 1rem;
2123
+ }
2124
+
2125
+ .billing-page-details__image {
2126
+ width: 50px;
2127
+ height: 50px;
2128
+ border-radius: 100%;
2129
+ background-color: grey;
2130
+ }
2131
+
2132
+ .billing-page-details__name {
2133
+ font-weight: 800;
2134
+ font-size: 20px;
2135
+ color: #525252;
2136
+ margin: 5px 0;
2137
+ }
2138
+
2139
+ .billing-page-details__middle {
2140
+ align-self: flex-start;
2141
+ margin-left: 15px;
2142
+ }
2143
+
2144
+ .billing-page-details__check-circle {
2145
+ background-color: #de8f08;
2146
+ border-radius: 100%;
2147
+ width: 40px;
2148
+ height: 40px;
2149
+ display: flex;
2150
+ justify-content: center;
2151
+ align-items: center;
2152
+ }
2153
+
2154
+
2155
+ .billing-page-details__left-section {
2156
+ display: flex;
2157
+ align-items: center;
2158
+ }
2159
+
2160
+ .billing-page-details__sends-text {
2161
+ color: #de8f08;
2162
+ font-size: 16px;
2163
+ font-weight: 600;
2164
+ }
2165
+
2166
+ .billing-modal {
2167
+ width: 525px;
2168
+ color: #525252;
2169
+ display: flex;
2170
+ align-items: center;
2171
+ flex-direction: column;
2172
+ padding: 0;
2173
+ overflow: hidden;
2174
+ }
2175
+ .checkout-form {
2176
+ display: flex;
2177
+ flex-direction: column;
2178
+ align-items: center;
2179
+ font-family: 'Open Sans', sans-serif;
2180
+ }
2181
+
2182
+ .checkout-form__name-fields {
2183
+ width: 100%;
2184
+ display: flex;
2185
+ flex-direction: row;
2186
+ justify-content: space-between;
2187
+ }
2188
+
2189
+ .billing-modal-body{
2190
+ padding: 30px 30px 0 30px;
2191
+ width: 100%;
2192
+ background-color:#fff;
2193
+ }
2194
+ .billing_info_wrap{
2195
+ display: flex;
2196
+ justify-content: center;
2197
+ }
2198
+ .billing-modal-body .name__wrap,.billing-modal-body .card__wrap{
2199
+ display: flex;
2200
+ justify-content: space-between;
2201
+ }
2202
+ .name__wrap .firstname__wrap,.name__wrap .lastname__wrap{
2203
+ width: 45%;
2204
+ }
2205
+ .billing-modal-body label{
2206
+ font-size: 14px;
2207
+ font-weight: bold;
2208
+ font-family: 'Open Sans', sans-serif;
2209
+ color: #666;
2210
+ }
2211
+ .checkout-form .billing-modal-body input[type=email]:not(.browser-default):focus:not([readonly]),
2212
+ .checkout-form .billing-modal-body input[type=text]:not(.browser-default):focus:not([readonly]),
2213
+ .checkout-form .billing-modal-body select:focus
2214
+ {
2215
+ border-bottom: 1px solid #dfdfdf;
2216
+ box-shadow: none;
2217
+ }
2218
+ .checkout-form .billing-modal-body input[type=email],
2219
+ .checkout-form .billing-modal-body input[type=text],
2220
+ .checkout-form .billing-modal-body select
2221
+ {
2222
+ padding: 20px;
2223
+ width: 100%;
2224
+ border: 1px solid #dfdfdf;
2225
+ margin: .5em 0;
2226
+ line-height: 20px;
2227
+ border-radius: 5px;
2228
+ font-size: 16px;
2229
+ -webkit-box-sizing: border-box;
2230
+ box-sizing: border-box;
2231
+ }
2232
+ .checkout-form .billing-modal-body select{
2233
+ padding: 0 20px;
2234
+ height: 45px;
2235
+ }
2236
+ .billing-modal-footer {
2237
+ font-family: "Open Sans", sans-serif;
2238
+ border-radius: 0 0 10px 10px;
2239
+ background-color: #fff;
2240
+ width: 100%;
2241
+ padding: 5px 30px 25px 30px;
2242
+ display: flex;
2243
+ flex-direction: column;
2244
+ }
2245
+ .billing-modal-body hr{
2246
+ border-top: 1px solid #CFCFCF;
2247
+ margin: 15px 0;
2248
+ }
2249
+ .more_info{
2250
+ margin: 15px 0 0 0;
2251
+ }
2252
+ .billing-modal-footer input[type=checkbox]{
2253
+ background: #999;
2254
+ }
2255
+ .billing-modal-footer input[type=checkbox]:before{
2256
+ color: #fff;
2257
+ }
2258
+ .billing-modal-footer .term__wrap{
2259
+ margin: 10px 0;
2260
+ }
2261
+
2262
+ .modal a.oranges,.modal button.oranges{
2263
+ cursor: pointer;
2264
+ padding: 13px 25px;
2265
+ background-color: RGB(236,182,83);
2266
+ border-radius: 10px;
2267
+ color: #fff;
2268
+ text-decoration: none;
2269
+ font-size: 20px;
2270
+ font-family: "Open Sans", sans-serif;
2271
+ font-weight: 700;
2272
+ border: none;
2273
+ margin: 0 10px;
2274
+ position: relative;
2275
+ align-self: center;
2276
+ }
2277
+ .billing-page-details__check-circle i {
2278
+ font-size: 28px;
2279
+ }
2280
+ .recurly-hosted-field{
2281
+ height: 3.5rem;
2282
+ margin-top: 0;
2283
+ }
2284
+
2285
+ .card__wrap input[type=text]:not(.browser-default){
2286
+ border-radius: 0;
2287
+ border-right: 0;
2288
+ border-left: 0;
2289
+ }
2290
+
2291
+ .card__wrap #card_number{
2292
+ width: 100%;
2293
+ }
2294
+ .terms-label a{
2295
+ color: #525252;
2296
+ font-weight: bold;
2297
+ }
2298
+ #pro_option{
2299
+ width: 640px;
2300
+ }
2301
+
2302
+ .subscribe__wrap .page_name__wrap h2.subscribe_page_name{
2303
+ margin: 0;
2304
+ font-size: 2.5rem;
2305
+ font-family: 'Open Sans',sans-serif;
2306
+ }
2307
+ .subscribe__wrap .page_name__wrap span.pro{
2308
+ border-radius: 5px;
2309
+ width: auto;
2310
+ height: auto;
2311
+ line-height: 22px;
2312
+ align-self: center;
2313
+ font-size: 1.2rem;
2314
+ padding: 7px;
2315
+ }
2316
+ .subscribe_connect p {
2317
+ color: #888;
2318
+ font-size: 15px;
2319
+ }
2320
+ .page_info__wrap{
2321
+ border: 1px solid #EFEFEF;
2322
+ padding: 20px 35px 30px;
2323
+ border-radius: 10px;
2324
+ display: flex;
2325
+ justify-content: space-between;
2326
+ }
2327
+
2328
+ .percentage-bar__body-wrapper {
2329
+ display: -webkit-box;
2330
+ display: -ms-flexbox;
2331
+ display: flex;
2332
+ -webkit-box-orient: horizontal;
2333
+ -webkit-box-direction: normal;
2334
+ -ms-flex-direction: column;
2335
+ flex-direction: column;
2336
+ -webkit-box-align: center;
2337
+ -ms-flex-align: center;
2338
+ align-items: center;
2339
+ width: 80%;
2340
+ margin-top: 10px;
2341
+ }
2342
+ .percentage-bar__card-used-number,.percentage-bar__card-max-number {
2343
+ font-weight: 800;
2344
+ font-size: 16px;
2345
+ margin-right: -20px;
2346
+ }
2347
+ .number__wrap{
2348
+ display: flex;
2349
+ flex-direction: row;
2350
+ justify-content: space-between;
2351
+ width: 100%;
2352
+ }
2353
+ .percentage-bar__bar {
2354
+ height: 9px;
2355
+ }
2356
+ .percentage-bar__bar {
2357
+ position: relative;
2358
+ background-color: #cbcbcb;
2359
+ width: 100%;
2360
+ height: 12px;
2361
+ border-radius: 10px;
2362
+ overflow: hidden;
2363
+ }
2364
+ .percentage-bar__used-percentage{
2365
+ height: 9px;
2366
+ }
2367
+ .percentage-bar__used-percentage {
2368
+ position: absolute;
2369
+ left: 0;
2370
+ background-color: #ff943f;
2371
+ height: 12px;
2372
+ border-radius: 10px;
2373
+ }
2374
+ .message_sent__wrap label{
2375
+ font-size: 0.9rem;
2376
+ text-transform: uppercase;
2377
+ color: #555;
2378
+ font-weight: bold;
2379
+ }
2380
+ .message_sent__wrap{
2381
+ margin-top: 2rem;
2382
+ }
2383
+ .button_cancel,.button_edit{
2384
+ padding: 5px 15px;
2385
+ border-radius: 5px;
2386
+ background-color: gray;
2387
+ cursor: pointer;
2388
+ color: #fff;
2389
+ text-decoration: none;
2390
+ font-size: 16px;
2391
+ border: none;
2392
+ margin: 0 10px;
2393
+ }
2394
+ a.button_cancel:hover,a.button_cancel:focus,a.button_edit:focus,a.button_edit:hover{
2395
+ color: #fff;
2396
+ }
2397
+ .button_go{
2398
+ margin-top: 20px;
2399
+ height: auto;
2400
+ background-color: darkgreen;
2401
+ padding: 10px 15px;
2402
+ border: 1px solid #000;
2403
+ color: #fff;
2404
+ }
2405
+ .button_go:hover,.button_go:focus{
2406
+ color: #fff;
2407
+ }
2408
+ .invoice_info_wrap a{
2409
+ text-decoration: underline;
2410
+ margin-right: 25px;
2411
+ }
2412
+ .subscribe_info__wrap,.invoice_info_wrap{
2413
+ display: flex;
2414
+ justify-content: space-between;
2415
+ }
2416
+ .button__wrap{
2417
+ align-self: center;
2418
+ }
2419
+ .subscribe_info__wrap{
2420
+ padding: 0 0 20px 0;
2421
+ }
2422
+ .button_update{
2423
+ background-color: #324ef8;
2424
+ height: auto;
2425
+ padding: 12px 20px;
2426
+ border-radius: 4px;
2427
+ color: #fff;
2428
+ font-size: 18px;
2429
+ }
2430
+ .button_update:focus,.button_update:hover{
2431
+ color: #fff;
2432
+ }
2433
+ .payment_info{
2434
+ background-color: #DDE3FE;
2435
+ border-radius: 14px;
2436
+ width: 50%;
2437
+ display: flex;
2438
+ flex-direction: column;
2439
+ padding: 10px 24px;
2440
+ margin-bottom: 20px;
2441
+ }
2442
+ .billed_with{
2443
+ color: #ADB0B9;
2444
+ }
2445
+ #errors{
2446
+ color: red;
2447
+ text-align: center;
2448
+ height: 50px;
2449
+ background-color: #1111;
2450
+ border-radius: 14px;
2451
+ width: 50%;
2452
+ display: flex;
2453
+ align-self: center;
2454
+ justify-content: center;
2455
+ align-items: center;
2456
+ margin-bottom: 30px;
2457
+ display: none;
2458
+ }
2459
+ .row .col.s12 .questions-wrapper {
2460
+ width: 100%;
2461
+ margin: 0 auto;
2462
+ padding: 0;
2463
+ }
2464
+ .question-block__wrapper {
2465
+ float: left;
2466
+ width: 100%;
2467
+ box-shadow: 0px 0px 9px -3px rgba(0,0,0,0.75);
2468
+ border-radius: 9px;
2469
+ margin: 0 0 20px auto;
2470
+ }
2471
+ .question-button__add,.qa-button__add{
2472
+ cursor: pointer;
2473
+ position: relative;
2474
+ margin: 1rem 0 3rem 0;
2475
+ display: inline-block;
2476
+ width: 100%;
2477
+ }
2478
+ .qa-button__add .pro_button__wrapper{
2479
+ top: -15px;
2480
+ }
2481
+ .question-block__header {
2482
+ display: flex;
2483
+ justify-content: space-between;
2484
+ padding: 10px 20px;
2485
+ border-bottom: 1px solid #e4e4e4;
2486
+ align-items: center;
2487
+ }
2488
+ .question-block__header .header__title {
2489
+ display: flex;
2490
+ flex-direction: column;
2491
+ text-align: center;
2492
+ }
2493
+ .question-block_content .question-input__wrapper{
2494
+ padding: 0;
2495
+ }
2496
+ .question-block_content{
2497
+ display: flex;
2498
+ flex-direction: column;
2499
+ position: relative;
2500
+ }
2501
+ .question-input__wrapper,
2502
+ .answer-input__wrapper {
2503
+ background-color: #E5E5E5;
2504
+ padding: 20px 20px 0 20px;
2505
+ border-radius: 9px;
2506
+ }
2507
+ .question-input__wrapper{
2508
+ margin: 10px 10px 10px 55px;
2509
+ }
2510
+ .question-input__item input[type=text]:not(.browser-default):focus:not([readonly]),
2511
+ .answer-input__item input[type=text]:not(.browser-default):focus:not([readonly]){
2512
+ border: none;
2513
+ box-shadow: none;
2514
+ }
2515
+ .answer-input__wrapper{
2516
+ box-shadow: 0 0 8px -1px rgba(82,82,82,1);
2517
+ z-index: 9;
2518
+ }
2519
+ .answer-input__wrapper .answer-input__item input[type=text]:not(.browser-default){
2520
+ margin:10px 10px 10px 0 ;
2521
+ width: 100%;
2522
+ }
2523
+ .question-input__item input[type=text]:not(.browser-default),
2524
+ .answer-input__item input[type=text]:not(.browser-default) {
2525
+ margin: 10px 20px;
2526
+ box-sizing: border-box;
2527
+ padding: 10px 25px;
2528
+ width: calc(100% - 40px);
2529
+ border:none;
2530
+ border-radius: 9px;
2531
+ background: #FFFFFF;
2532
+ }
2533
+ .answer-input__item{
2534
+ display: inline-block;
2535
+ }
2536
+ .tab-content .form-table td .answer-input__item p {
2537
+ display: inline-block;
2538
+ color: #FFFFFF;
2539
+ font-family: "Open Sans",sans-serif;
2540
+ font-size: 13px;
2541
+ line-height: 18px;
2542
+ }
2543
+ .question_text {
2544
+ padding: 15px 25px;
2545
+ cursor: pointer;
2546
+ }
2547
+
2548
+ .question-input__state{
2549
+ color: #525252;
2550
+ }
2551
+
2552
+ .answer-input__wrapper .answer-input__state{
2553
+ padding: 10px 0 10px 20px;
2554
+ color: #fff;
2555
+ }
2556
+ .tab-content .answer-input__item input[type=checkbox] {
2557
+ background: transparent;
2558
+ border: 2px solid #fff;
2559
+ height: 20px;
2560
+ width: 20px;
2561
+ border-radius: 3px;
2562
+ }
2563
+ .tab-content .answer-input__item input[type=checkbox]:checked:before{
2564
+ margin: -2px 0 0 -3px;
2565
+ color: #fff;
2566
+ }
2567
+ .question_cancel,.answer_cancel{
2568
+ font-size: 14px;
2569
+ font-weight: 400;
2570
+ cursor: pointer;
2571
+ }
2572
+
2573
+ .question-input__state,
2574
+ .answer-input__state {
2575
+ display: flex;
2576
+ justify-content: flex-end;
2577
+ padding: 10px 20px;
2578
+ font-family: "Open Sans",sans-serif;
2579
+ font-size: 16px;
2580
+ font-weight: 800;
2581
+ line-height: 22px;
2582
+ cursor: pointer;
2583
+ }
2584
+
2585
+ .question-input__state span,
2586
+ .answer-input__state span {
2587
+ margin-left: 10px;
2588
+ }
2589
+ .answer-input__button {
2590
+ margin: 0 0 10px 20px;
2591
+ display: flex;
2592
+ flex-wrap: wrap;
2593
+ max-width: 70%;
2594
+ width: 70%;
2595
+ word-break: break-all;
2596
+ }
2597
+ .answer__bin, .qa__bin {
2598
+ width: 25px;
2599
+ min-width: 25px;
2600
+ height: 25px;
2601
+ background-color: #e4e4e4;
2602
+ color: #9E9E9E;
2603
+ text-align: center;
2604
+ line-height: 25px;
2605
+ border-radius: 50%;
2606
+ margin-left: 5px;
2607
+ position: relative;
2608
+ }
2609
+ .main-question{
2610
+ padding: 5px;
2611
+ }
2612
+ .answer-input__block {
2613
+ display: flex;
2614
+ padding: 10px 0;
2615
+ position: relative;
2616
+ }
2617
+ .answer-item__result {
2618
+ display: block;
2619
+ color: #fff;
2620
+ border-radius: 30px;
2621
+ cursor: pointer;
2622
+ margin-right: 10px;
2623
+ margin-bottom: 20px;
2624
+ display: flex;
2625
+ justify-content: center;
2626
+ align-items: center;
2627
+ }
2628
+ .answer__result {
2629
+ padding: 10px 35px;
2630
+ display: block;
2631
+ align-self: center;
2632
+ background-color: #0e71ff;
2633
+ border-radius: 30px;
2634
+ }
2635
+ .add__answer {
2636
+ -moz-user-select: none;
2637
+ -khtml-user-select: none;
2638
+ user-select: none;
2639
+ cursor: pointer;
2640
+ padding: 10px 15px;
2641
+ display: block;
2642
+ border-radius: 30px;
2643
+ border: 1px solid #e4e4e4;
2644
+ color: #767676;
2645
+ font-family: "Open Sans", sans-serif;
2646
+ font-size: 16px;
2647
+ line-height: 22px;
2648
+ width: 150px;
2649
+ }
2650
+ .tab-content .form-table td .tooltip {
2651
+ display: none;
2652
+ position: absolute;
2653
+ background-color: #FF7140;
2654
+ border-radius: 5px;
2655
+ padding: 10px;
2656
+ font-size: 12px;
2657
+ color: #fff;
2658
+ top: 35px;
2659
+ width: 182px;
2660
+ word-break: keep-all;
2661
+ z-index: 15;
2662
+ }
2663
+ .tab-content .form-table td .tooltip.qa{
2664
+ top: 113px;
2665
+ }
2666
+ .tab-content .form-table td .tooltip.lq{
2667
+ top: 5%;
2668
+ left: 100%;
2669
+ }
2670
+ .tab-content .form-table td .tooltip.lq_answer{
2671
+ right: 0;
2672
+ top: 25px;
2673
+ }
2674
+ .have_qa a{
2675
+ display: block;
2676
+ padding: 20px;
2677
+ font-size: 18px;
2678
+ font-weight: bolder;
2679
+ text-align: center;
2680
+ background-color: #0e71ff;
2681
+ font-family: "Open Sans",sans-serif;
2682
+ color: #fff;
2683
+ border-radius: 18px;
2684
+ margin-bottom: 40px;
2685
+ }
2686
+ .tab-content .main-question h3{
2687
+ margin: 0 1em 1em;
2688
+ }
2689
+ .answer-input__wrapper, .qa-input__wrapper {
2690
+ display: none;
2691
+ position: absolute;
2692
+ width: 100%;
2693
+ top: 50px;
2694
+ background-color: #0e71ff;
2695
+ }
2696
+ .tab-content .notify_mode{
2697
+ color: #525252;
2698
+ font-weight: bold;
2699
+ }
2700
+
2701
+ .notify_radio__wrap input[type=radio]:checked:before {
2702
+ width: 12px;
2703
+ height: 12px;
2704
+ margin: 3px 2px 2px 2px;
2705
+ background-color: #324EF8;
2706
+ float: none;
2707
+ }
2708
+ .notify_radio__wrap {
2709
+ padding: 10px 0;
2710
+ }
2711
+ .notify_radio__wrap input[type=radio]{
2712
+ border: 2px solid #324EF8;
2713
+ height: 22px;
2714
+ width: 22px;
2715
+ vertical-align: bottom;
2716
+ }
2717
+ .email__wrap{
2718
+ display: flex;
2719
+ }
2720
+ .tab-content table .email__wrap label{
2721
+ width: 15%;
2722
+ align-self: center;
2723
+ padding: 0;
2724
+ font-weight: bold;
2725
+ }
2726
+ .question-input__wrapper .edit,.answer-item__result .edit_answer{
2727
+ display: flex;
2728
+ position: absolute;
2729
+ top: 21px;
2730
+ left: 10px;
2731
+ height: 25px;
2732
+ width: 25px;
2733
+ color: #9E9E9E;
2734
+ align-items: center;
2735
+ background-color: #E5E5E5;
2736
+ border-radius: 50px;
2737
+ justify-content: center;
2738
+ cursor: pointer;
2739
+ }
2740
+ .answer-item__result .edit_answer{
2741
+ position: static;
2742
+ margin-left: 5px;
2743
+ }
2744
+ .email_block .pro_button__wrapper{
2745
+ height: 100%;
2746
+ }
2747
+ .email_block .pro_button__wrapper .pro_button__content{
2748
+ justify-content: center;
2749
+ }
2750
+ .tab-content .email__wrap input[type=text]:not(.browser-default){
2751
+ width: 40%;
2752
+ height: 32px;
2753
+ font-size: 14px;
2754
+ }
2755
+
2756
+ .add_question, .add_qa{
2757
+ user-select: none;
2758
+ color: #324EF8;
2759
+ box-shadow: 0px 0px 9px -3px rgba(0,0,0,0.75);
2760
+ padding: 10px 30px;
2761
+ border-radius: 5px;
2762
+ font-family: "Open Sans",sans-serif;
2763
+ font-size: 15px;
2764
+ font-weight: 600;
2765
+ line-height: 22px;
2766
+ }
2767
+ .add_question b, .add_qa b{
2768
+ vertical-align: baseline;
2769
+ font-weight: bold;
2770
+ }
2771
+ .add__answer b{
2772
+ font-size: 30px;
2773
+ font-weight: 400;
2774
+ line-height: 4px;
2775
+ vertical-align: sub;
2776
+ }
2777
+ .triangle {
2778
+ content: "";
2779
+ position: absolute;
2780
+ width: 0;
2781
+ height: 0;
2782
+ border-left: 25px solid transparent;
2783
+ border-right: 25px solid transparent;
2784
+ border-bottom: 25px solid #0e71ff;
2785
+ top: -19px;
2786
+ left: 30px;
2787
+ }
2788
+ .add_as_button{
2789
+ cursor: pointer;
2790
+ margin: 2em 0 0 0.8em;
2791
+ display: inline-block;
2792
+ }
2793
+ .as_item__wrap{
2794
+ align-items: center;
2795
+ display: flex;
2796
+ position: relative;
2797
+ }
2798
+ .wrap__pro input[type=text]:not(.browser-default){
2799
+ width: 50%;
2800
+ }
2801
+
2802
+ .del_as{
2803
+ margin-left: 20px;
2804
+ width: 25px;
2805
+ min-width: 25px;
2806
+ height: 25px;
2807
+ background-color: #e4e4e4;
2808
+ color: #9E9E9E;
2809
+ text-align: center;
2810
+ line-height: 25px;
2811
+ border-radius: 50%;
2812
+ position: absolute;
2813
+ right: -40px;
2814
+ cursor: pointer;
2815
+ }
2816
+ .add_as{
2817
+ color: #324EF8;
2818
+ box-shadow: 0px 0px 9px -3px rgba(0,0,0,0.75);
2819
+ padding: 10px 30px;
2820
+ border-radius: 5px;
2821
+ font-family: "Open Sans",sans-serif;
2822
+ font-size: 15px;
2823
+ font-weight: 600;
2824
+ line-height: 22px;
2825
+ }
2826
+ .answer-input__add{
2827
+ margin-right: 15px;
2828
+ }
2829
+ .header__close{
2830
+ height: 25px;
2831
+ width: 25px;
2832
+ background-color: #D8D8D8;
2833
+ border-radius: 50px;
2834
+ position: relative;
2835
+ cursor: pointer;
2836
+ }
2837
+ .header__close:after {
2838
+ position: relative;
2839
+ content: "\d7";
2840
+ font-size: 27px;
2841
+ color: #525252;
2842
+ left: 5px;
2843
+ top: -5px;
2844
+ }
2845
+ .main-qa{
2846
+ display: flex;
2847
+ flex-direction: row;
2848
+ background-color: #F4F6FF;
2849
+ border-radius: 15px;
2850
+ position: relative;
2851
+ margin: 20px 0;
2852
+ }
2853
+ .main-qa .del_qa{
2854
+ position: absolute;
2855
+ right: 10px;
2856
+ top: 10px;
2857
+ color: #0e71ff;
2858
+ font-size: 20px;
2859
+ cursor: pointer;
2860
+ }
2861
+ .main-qa h6{
2862
+ font-size: 14px;
2863
+ font-weight: bold;
2864
+ text-transform: uppercase;
2865
+ color: #525252;
2866
+ font-family: "Open Sans", sans-serif;
2867
+ }
2868
+ .qa-question__wrap,.qa-response{
2869
+ display: flex;
2870
+ padding: 1em 2em;
2871
+ flex-direction: column;
2872
+ width: 50%;
2873
+ flex-basis: 50%;
2874
+ }
2875
+ .qa-question__wrap .qa-question_input,.qa-question__wrap .qa-question-block{
2876
+ margin: 1em;
2877
+ }
2878
+ .qa-question__wrap{
2879
+ padding: 0;
2880
+ }
2881
+ .add_qa_question{
2882
+ width: 30%;
2883
+ align-self: auto;
2884
+ justify-content: center;
2885
+ text-align: center;
2886
+ display: flex;
2887
+ margin: 9px;
2888
+ background-color: #0e71ff;
2889
+ align-items: center;
2890
+ border-radius: 8px;
2891
+ color: #fff;
2892
+ font-size: 16px;
2893
+ box-shadow: 0px 0px 9px -3px rgba(0,0,0,0.75);
2894
+ cursor: pointer;
2895
+ user-select: none;
2896
+ }
2897
+ .add_qa_question:focus,.add_qa_question:active{
2898
+ box-shadow: none;
2899
+ }
2900
+ .fb-customerchat{
2901
+ display: none;
2902
+ }
2903
+ #mm-root {
2904
+ display: none;
2905
+ }
2906
+ .tab-content .qa-wrapper .qa_head{
2907
+ font-size: 22px;
2908
+ margin-bottom: 15px;
2909
+ margin-top: 0;
2910
+ }
2911
+ .tab-content .input-field.qa-wrapper{
2912
+ padding: 0;
2913
+ }
2914
+ .qa-response input[type=text]:not(.browser-default)::placeholder, .question_button_wrap input[type=text]:not(.browser-default)::placeholder{
2915
+ color: #A7A7A7;
2916
+ }
2917
+ .qa-response input[type=text]:not(.browser-default), .question_button_wrap input[type=text]:not(.browser-default){
2918
+ background-color: #fff;
2919
+ }
2920
+ .tab-content .form-table td .qa_p{
2921
+ margin-bottom: 20px;
2922
+ margin-top: 10px;
2923
+ }
2924
+ .qa-question-block-item{
2925
+ color: #fff;
2926
+ border-radius: 30px;
2927
+ cursor: pointer;
2928
+ margin-right: 10px;
2929
+ margin-bottom: 20px;
2930
+ display: flex;
2931
+ justify-content: center;
2932
+ align-items: center;
2933
+ }
2934
+ .qa-question-block{
2935
+ margin: 10px 0 10px 0;
2936
+ display: flex;
2937
+ flex-wrap: wrap;
2938
+ }
2939
+ span.qa-question-result {
2940
+ padding: 10px 35px;
2941
+ display: block;
2942
+ align-self: center;
2943
+ background-color: #0e71ff;
2944
+ border-radius: 30px;
2945
+ }
2946
+ .question_button_wrap{
2947
+ display: flex;
2948
+ }
2949
+
2950
+ .qa-input__wrapper{
2951
+ padding: 20px 20px 0 20px;
2952
+ border-radius: 9px;
2953
+ z-index: 9;
2954
+ }
2955
+ .qa-response{
2956
+ position: relative;
2957
+ }
2958
+ .qa-input__state{
2959
+ color: #fff;
2960
+ display: flex;
2961
+ justify-content: flex-end;
2962
+ padding: 10px 0 20px;
2963
+ font-family: "Open Sans",sans-serif;
2964
+ font-size: 16px;
2965
+ font-weight: 800;
2966
+ line-height: 22px;
2967
+ cursor: pointer;
2968
+ }
2969
+ .qa_submit,.qa_cancel{
2970
+ margin-left: 10px;
2971
+ font-size: 14px;
2972
+ }
2973
+ .tab-content .qa-input__item input[type=text]:not(.browser-default){
2974
+ background-color: #fff;
2975
+ box-sizing: border-box;
2976
+ padding: 10px 25px;
2977
+ width: 80%;
2978
+ border: none;
2979
+ border-radius: 9px;
2980
+ }
2981
+ .qa_cancel{
2982
+ font-weight: 400;
2983
+ }
2984
+ .qa-response:before {
2985
+ position: absolute;
2986
+ left: 0;
2987
+ top: 10%;
2988
+ border-left: 1px solid #B0B6CD;
2989
+ content: "";
2990
+ height: 80%;
2991
+ }
2992
+ .qa_new-wrapper h3{
2993
+ margin-left: 20px;
2994
+ font-size: 16px;
2995
+ margin-top: 0;
2996
+ }
2997
+ .qa-question-block-item .edit_qa{
2998
+ position: static;
2999
+ margin-left: 5px;
3000
+ display: flex;
3001
+ top: 21px;
3002
+ left: 10px;
3003
+ height: 25px;
3004
+ width: 25px;
3005
+ min-width: 25px;
3006
+ color: #9E9E9E;
3007
+ align-items: center;
3008
+ background-color: #E5E5E5;
3009
+ border-radius: 50px;
3010
+ justify-content: center;
3011
+ cursor: pointer;
3012
+ word-break: break-all;
3013
+ }
3014
+ .disabled{
3015
+ pointer-events: none;
3016
+ opacity: 0.6;
3017
+ }
3018
+
3019
+ .phone{
3020
+ background: url("../img/iphone_x.png");
3021
+ padding: 0;
3022
+ margin-top: 200px;
3023
+ height: 415px;
3024
+ width: 220px;
3025
+ background-repeat: no-repeat;
3026
+ background-position: center center;
3027
+ display: flex;
3028
+ margin-right: auto;
3029
+ margin-left: auto;
3030
+ }
3031
+ @media (max-width: 720px) {
3032
+ .phone{
3033
+ margin-top: 0;
3034
+ }
3035
+ .options table td{
3036
+ width: 95%;
3037
+ }
3038
+ .del_as{
3039
+ right: -32px;
3040
+ }
3041
+ .answer-input__block{
3042
+ flex-direction: column;
3043
+ }
3044
+ .answer-input__add{
3045
+ display: flex;
3046
+ text-align: center;
3047
+ justify-content: center;
3048
+ }
3049
+ .add_qa_question {
3050
+ width: 50%;
3051
+ padding: 10px;
3052
+
3053
+ }
3054
+ .question_button_wrap{
3055
+ flex-direction: column;
3056
+ align-items: center;
3057
+ }
3058
+ .test-bot-button{
3059
+ top: 7px;
3060
+ }
3061
+ .row .col.s12 .questions-wrapper{
3062
+ margin-top: 20px;
3063
+ }
3064
+ .tab-content .email__wrap input[type=text]:not(.browser-default){
3065
+ width: 85%;
3066
+ }
3067
+ }
3068
+ @media (max-width: 520px) {
3069
+ .tab-link .limit__notice_tooltip{
3070
+ top: 60px;
3071
+ left: 2%;
3072
+ }
3073
+ .tab-link .limit__notice_tooltip:after{
3074
+ border-color: #FD397A transparent transparent transparent;
3075
+ top: -24px;
3076
+ left: 172px;
3077
+ transform: rotate(180deg);
3078
+ }
3079
+ }
3080
+
3081
+ .mobile__wrapper{
3082
+ display: flex;
3083
+ flex-direction: column;
3084
+ justify-content: space-evenly;
3085
+ margin-right: auto;
3086
+ margin-left: auto;
3087
+ align-items: center;
3088
+ width: 170px;
3089
+ }
3090
  .ht-cc-admin-sidebar__dismiss_button_container {
3091
  position: relative;
3092
  right: 36px;
3099
  font-size: 14px;
3100
  padding: 4px;
3101
  }
3102
+
3103
+ .logo_promo{
3104
+ background: url("../img/mmL_logo.png");
3105
+ height: 76px;
3106
+ width: 116px;
3107
+ background-size: contain;
3108
+ margin-top: 20px;
3109
+ background-repeat: no-repeat;
3110
+ }
3111
+ .dialog_block{
3112
+ background-color: #fff;
3113
+ border-radius: 10px;
3114
+ margin: 0 10px 0 10px;
3115
+ padding: 5px 13px;
3116
+ font-size: 12px;
3117
+ font-weight: 600;
3118
+ }
3119
+ .text__wrap{
3120
+ display: flex;
3121
+ height: auto;
3122
+ flex-direction: row;
3123
+ }
3124
+ .dot_icon{
3125
+ width: 20px;
3126
+ height: 20px;
3127
+ position: relative;
3128
+ }
3129
+ .dot_icon .white_circle{
3130
+ width: 20px;
3131
+ height: 20px;
3132
+ background-color: #ffff;
3133
+ border-radius: 50%;
3134
+ margin-left: 5px;
3135
+ }
3136
+ .dot_icon .green_circle{
3137
+ position: absolute;
3138
+ height: 10px;
3139
+ width: 10px;
3140
+ border-radius: 50%;
3141
+ background: #9EE10E;
3142
+ border: 1px solid #FFFFFF;
3143
+ right: -8px;
3144
+ bottom: -5px;
3145
+ }
3146
+ .button_download_app{
3147
+ background: linear-gradient(31.47deg, #935CF7 21.84%, #586CF5 81.11%);
3148
+ border-radius: 5px;
3149
+ padding: 5px 15px;
3150
+ color: #fff;
3151
+ margin-bottom: 40px;
3152
+ display: flex;
3153
+ cursor: pointer;
3154
+ }
3155
+ .ios_code{
3156
+ background: url('../img/31c07c81b2d635598c3776cfb31eb240.png');
3157
+ margin-left: auto;
3158
+ margin-right: auto;
3159
+ height: 300px;
3160
+ width: 300px;
3161
+ }
3162
+ .promo-app__wrapper .android_app img{
3163
+ width: 270px;
3164
+ }
3165
+ .promo-app__wrapper .ios_app{
3166
+ width: 235px;
3167
+ cursor: pointer;
3168
+ }
3169
+ .promo-app__wrapper{
3170
+ text-align: center;
3171
+ margin-bottom: 25px;
3172
+ }
3173
+ .promo-app__wrapper a{
3174
+ display: block;
3175
+ }
3176
+ .promo-app__wrapper a:hover,.promo-app__wrapper a:active,.promo-app__wrapper a:focus{
3177
+ border: none;
3178
+ box-shadow: none;
3179
+ }
3180
+ .ios-app__wrap p {
3181
+ margin-top: 41px;
3182
+ }
3183
+ .ios-app__wrap{
3184
+ display: none;
3185
+ }
3186
+ .modal-overlays {
3187
+ position: fixed;
3188
+ margin-left: -20px;
3189
+ right: 0;
3190
+ height: auto;
3191
+ width: auto;
3192
+ background: #000;
3193
+ will-change: opacity;
3194
+ opacity: 0.4;
3195
+ z-index: 998;
3196
+ top: -25%;
3197
+ left: 0;
3198
+ bottom: 0;
3199
+ display: none;
3200
+ }
3201
+ #promo_app{
3202
+ z-index: 999;
3203
+ transition: all 0.5s ease;
3204
+ background-color: #FFFFFF;
3205
+ display: none;
3206
+ position: fixed;
3207
+ top: 30%;
3208
+ left: 0;
3209
+ right: 0;
3210
+ width: 563px;
3211
+ margin: 0 auto;
3212
+ color: #525252;
3213
+ border: 1px solid #000;
3214
+ border-radius: 10px;
3215
+ }
3216
+ #promo_app{
3217
+ border: none;
3218
+ width: 400px;
3219
+ height: auto;
3220
+ }
3221
+ #promo_app p{
3222
+ font-family: "Open Sans",sans-serif;
3223
+ font-style: normal;
3224
+ font-weight: bold;
3225
+ font-size: 18px;
3226
+ line-height: 25px;
3227
+ color: #525252;
3228
+ text-align: center;
3229
+ margin-top: 35px;
3230
+ }
3231
+ #promo_app .modal_close {
3232
+ background-size: contain;
3233
+ width: 15px;
3234
+ height: 15px;
3235
+ background-repeat: no-repeat;
3236
+ background-position: center;
3237
+ position: absolute;
3238
+ right: 12px;
3239
+ top: 12px;
3240
+ cursor: pointer;
3241
+ z-index: 999;
3242
+ }
3243
+ #promo_app .modal_close{
3244
+ color: #A6A3A3;
3245
+ }
3246
+ .limit__wrapper{
3247
+ background-color: #FD397A;
3248
+ width: 32px;
3249
+ height: 32px;
3250
+ display: flex;
3251
+ align-items: center;
3252
+ justify-content: center;
3253
+ border-radius: 50%;
3254
+ margin-left: 12px;
3255
+ }
3256
+ .limit_notice{
3257
+ height: 20px;
3258
+ width: 20px;
3259
+ border: 2px solid #fff;
3260
+ border-radius: 50%;
3261
+ display: flex;
3262
+ justify-content: center;
3263
+ }
3264
+ .limit_notice i {
3265
+ font-size: 14px;
3266
+ color: #fff;
3267
+ display: flex;
3268
+ align-items: center;
3269
+ line-height: 16px;
3270
+ }
3271
+ .limit__notice_tooltip{
3272
+ position: absolute;
3273
+ background-color: #FD397A;
3274
+ left: 100%;
3275
+ max-width: 300px;
3276
+ min-width: 280px;
3277
+ padding: 20px;
3278
+ height: auto;
3279
+ display: flex;
3280
+ border-radius: 7px;
3281
+ flex-direction: column;
3282
+ font-weight: 600;
3283
+ line-height: 22px;
3284
+ color: #FFFFFF;
3285
+ font-family: "Open Sans",sans-serif;
3286
+ z-index: 9;
3287
+ }
3288
+ .limit__notice_tooltip p{
3289
+ font-size: 16px;
3290
+
3291
+ }
3292
+ .limit__notice_tooltip p b{
3293
+ font-size: 30px;
3294
+ font-weight: 600;
3295
+ line-height: 14px;
3296
+ }
3297
+ .limit__button{
3298
+ color: #FD397A;
3299
+ font-family: "Open Sans",sans-serif;
3300
+ font-size: 15px;
3301
+ font-weight: bold;
3302
+ display: flex;
3303
+ line-height: 22px;
3304
+ background-color: #fff;
3305
+ text-align: center;
3306
+ width: 60%;
3307
+ justify-content: center;
3308
+ align-self: center;
3309
+ margin-top: 20px;
3310
+ padding: 10px;
3311
+ border-radius: 5px;
3312
+ }
3313
+ .limit__button:hover,.limit__button:focus{
3314
+ border: none;
3315
+ color: #FD397A;
3316
+ box-shadow:none;
3317
+ }
3318
+ .limit__notice_tooltip span{
3319
+ border-top: 1px solid #fff;
3320
+ padding-top: 10px;
3321
+ font-size: 14px;
3322
+ }
3323
+ .limit__notice_tooltip:after {
3324
+ content: "";
3325
+ position: absolute;
3326
+ width: 0;
3327
+ height: 0;
3328
+ border-width: 12px;
3329
+ border-style: solid;
3330
+ border-color: transparent #FD397A transparent transparent;
3331
+ top: 43%;
3332
+ left: -24px;
3333
+ }
3334
+ .limit-notify-close{
3335
+ position: absolute;
3336
+ right: 5px;
3337
+ top: 5px;
3338
+ width: 15px;
3339
+ height: 14px;
3340
+ cursor: pointer;
3341
+ }
3342
+ .limit-notify-close:before, .limit-notify-close:after{
3343
+ position: absolute;
3344
+ content: ' ';
3345
+ right: 7px;
3346
+ height: 13px;
3347
+ width: 3px;
3348
+ background-color: #fff;
3349
+ }
3350
+ .limit-notify-close:before{
3351
+ transform: rotate(45deg);
3352
+ }
3353
+ .limit-notify-close:after{
3354
+ transform: rotate(-45deg);
3355
+ }
3356
+
3357
+ a.go-to-inbox-link {
3358
+ display: flex;
3359
+ flex-direction: row;
3360
+ align-items: center;
3361
+ justify-content: center;
3362
+ background: #3A50F3;
3363
+ border-radius: 3px;
3364
+ padding: 8px 15px;
3365
+ width: 135px;
3366
+ font-size: 14px;
3367
+ color: #fff;
3368
+ margin: 10px 0;
3369
+ }
3370
+ a.go-to-inbox-link img {
3371
+ padding-right: 8px;
3372
+ }
3373
+
3374
+ .chatbot_settings_tab__content {
3375
+ display: flex;
3376
+ flex-direction: column;
3377
+ align-items: flex-start;
3378
+ }
3379
+ .chatbot_settings_tab__content p {
3380
+ margin: 4px 0;
3381
+ }
3382
+ .go-to-chat-widget-settings-link {
3383
+ color: #000000;
3384
+ font-size: 12px;
3385
+ border: 1px solid #3555F0;
3386
+ border-radius: 2px;
3387
+ padding: 8px 15px;
3388
+ margin: 16px 0;
3389
+ }
3390
+ .chatbot_settings_tab__info-box {
3391
+ background: #DFE3FD;
3392
+ border: 1.06642px solid #3454EF;
3393
+ border-radius: 5px;
3394
+ padding: 20px 27px;
3395
+ display: flex;
3396
+ flex-direction: row;
3397
+ align-items: flex-start;
3398
+ font-size: 13px;
3399
  }
3400
+
3401
+ .chatbot_settings_tab__info-box i {
3402
+ font-size: 20px;
3403
+ color: #3F5BDC;
3404
+ margin-right: 12px;
3405
+ }
admin/assets/img/fb.svg CHANGED
@@ -1,6 +1,6 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 216 216" class="_5h0m" color="#FFFFFF"><path fill="#FFFFFF" d="
2
- M204.1 0H11.9C5.3 0 0 5.3 0 11.9v192.2c0 6.6 5.3 11.9 11.9
3
- 11.9h103.5v-83.6H87.2V99.8h28.1v-24c0-27.9 17-43.1 41.9-43.1
4
- 11.9 0 22.2.9 25.2 1.3v29.2h-17.3c-13.5 0-16.2 6.4-16.2
5
- 15.9v20.8h32.3l-4.2 32.6h-28V216h55c6.6 0 11.9-5.3
6
  11.9-11.9V11.9C216 5.3 210.7 0 204.1 0z"></path></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 216 216" class="_5h0m" color="#FFFFFF"><path fill="#FFFFFF" d="
2
+ M204.1 0H11.9C5.3 0 0 5.3 0 11.9v192.2c0 6.6 5.3 11.9 11.9
3
+ 11.9h103.5v-83.6H87.2V99.8h28.1v-24c0-27.9 17-43.1 41.9-43.1
4
+ 11.9 0 22.2.9 25.2 1.3v29.2h-17.3c-13.5 0-16.2 6.4-16.2
5
+ 15.9v20.8h32.3l-4.2 32.6h-28V216h55c6.6 0 11.9-5.3
6
  11.9-11.9V11.9C216 5.3 210.7 0 204.1 0z"></path></svg>
admin/assets/img/live-chat.png ADDED
Binary file
admin/class-htcc-admin.php CHANGED
@@ -374,7 +374,7 @@ if (!class_exists('HTCC_Admin')) :
374
  </div>
375
  <?php if ($htcc_as_options['advanced_triggers_present']){?>
376
  <div class="have_qa">
377
- <a target="_blank" href="https://app.mobilemonkey.com/chatbot-editor/" >You have more advanced Q&As created in MobileMonkey. Go to MobileMonkey to edit those Q&As</a>
378
  </div>
379
  <?php
380
  }
@@ -554,7 +554,7 @@ if (!class_exists('HTCC_Admin')) :
554
  <h6><?php _e('Looks like you made changes to the Answering Service in MobileMonkey. Please go to MobileMonkey to continue editing.', 'wp-chatbot') ?></h6>
555
  <div class="but__wrap">
556
  <a target="_blank" rel="noopener noreferrer"
557
- href='https://app.mobilemonkey.com/chatbot-editor/<?php echo $this->internal['bot_id'] ?>/build/'
558
  class="go_mm"><?php _e('Go to MobileMonkey') ?></a>
559
  </div>
560
  </div>
@@ -818,9 +818,9 @@ if (!class_exists('HTCC_Admin')) :
818
  </a>
819
  </div>
820
  </div>
821
- <p>Show - The greeting dialog will always be shown when the plugin loads.</p>
822
- <p>Fade - The greeting dialog of the plugin will be shown, then fade away and stay minimized afterwards.</p>
823
- <p>Hide - The greeting dialog of the plugin will always be minimized until a user clicks on the plugin.</p>
824
  </div>
825
  </div>
826
  <?php
374
  </div>
375
  <?php if ($htcc_as_options['advanced_triggers_present']){?>
376
  <div class="have_qa">
377
+ <a target="_blank" href="<?php echo $this->api->app_domain ?>chatbot-editor/<?php echo $this->internal['bot_id'] ?>/trigger" >You have more advanced Q&As created in MobileMonkey. Go to MobileMonkey to edit those Q&As</a>
378
  </div>
379
  <?php
380
  }
554
  <h6><?php _e('Looks like you made changes to the Answering Service in MobileMonkey. Please go to MobileMonkey to continue editing.', 'wp-chatbot') ?></h6>
555
  <div class="but__wrap">
556
  <a target="_blank" rel="noopener noreferrer"
557
+ href='<?php echo $this->api->app_domain ?>chatbot-editor/<?php echo $this->internal['bot_id'] ?>/build/'
558
  class="go_mm"><?php _e('Go to MobileMonkey') ?></a>
559
  </div>
560
  </div>
818
  </a>
819
  </div>
820
  </div>
821
+ <label class="gray">Show - The greeting dialog will always be shown when the plugin loads.</label>
822
+ <label class="gray">Fade - The greeting dialog of the plugin will be shown, then fade away and stay minimized afterwards.</label>
823
+ <label class="gray">Hide - The greeting dialog of the plugin will always be minimized until a user clicks on the plugin.</label>
824
  </div>
825
  </div>
826
  <?php
admin/class-htcc-lang.php CHANGED
@@ -1,54 +1,54 @@
1
- <?php
2
- /**
3
- * Added Languages - Messenger ..
4
- *
5
- */
6
-
7
- if (!defined('ABSPATH')) exit;
8
-
9
- if (!class_exists('HTCC_Lang')) :
10
-
11
- class HTCC_Lang
12
- {
13
- //TODO Get Lang list by API
14
- static $fb_lang = array(
15
- "Armenian",
16
- "Basque",
17
- "Bulgarian",
18
- "Catalan",
19
- "Chinese",
20
- "Czech",
21
- "Danish",
22
- "Dutch",
23
- "English",
24
- "Finnish",
25
- "French (Canada)",
26
- "French (France)",
27
- "Galician",
28
- "German",
29
- "Greek",
30
- "Hindi",
31
- "Hungarian",
32
- "Indonesian",
33
- "Irish",
34
- "Italian",
35
- "Japanese",
36
- "Korean",
37
- "Kurdish",
38
- "Norwegian",
39
- "Persian",
40
- "Portuguese",
41
- "Portuguese (Brazil)",
42
- "Romanian",
43
- "Russian",
44
- "Spanish",
45
- "Spanish (Mexico)",
46
- "Swedish",
47
- "Turkish",
48
- "Thai"
49
- );
50
-
51
-
52
- }
53
-
54
  endif; // END class_exists check
1
+ <?php
2
+ /**
3
+ * Added Languages - Messenger ..
4
+ *
5
+ */
6
+
7
+ if (!defined('ABSPATH')) exit;
8
+
9
+ if (!class_exists('HTCC_Lang')) :
10
+
11
+ class HTCC_Lang
12
+ {
13
+ //TODO Get Lang list by API
14
+ static $fb_lang = array(
15
+ "Armenian",
16
+ "Basque",
17
+ "Bulgarian",
18
+ "Catalan",
19
+ "Chinese",
20
+ "Czech",
21
+ "Danish",
22
+ "Dutch",
23
+ "English",
24
+ "Finnish",
25
+ "French (Canada)",
26
+ "French (France)",
27
+ "Galician",
28
+ "German",
29
+ "Greek",
30
+ "Hindi",
31
+ "Hungarian",
32
+ "Indonesian",
33
+ "Irish",
34
+ "Italian",
35
+ "Japanese",
36
+ "Korean",
37
+ "Kurdish",
38
+ "Norwegian",
39
+ "Persian",
40
+ "Portuguese",
41
+ "Portuguese (Brazil)",
42
+ "Romanian",
43
+ "Russian",
44
+ "Spanish",
45
+ "Spanish (Mexico)",
46
+ "Swedish",
47
+ "Turkish",
48
+ "Thai"
49
+ );
50
+
51
+
52
+ }
53
+
54
  endif; // END class_exists check
admin/commons/ht-cc-admin-comment-guard.php CHANGED
@@ -106,7 +106,7 @@ if (!defined('ABSPATH')) exit;
106
  <div class="close-guard-notify"></div>
107
  <p>Looking for more ways to generate leads? Try putting a Comment Guard on your Facebook post. We'll automatically message any user who comments on your posts to get their opt-ins.</p>
108
  <div class="trn"></div>
109
- <a class="btn-lets_go" target="_blank" href="https://app.mobilemonkey.com/chatbot-editor/<?php echo $bot_id ?>/comment-guards">Let's Go</a>
110
  </div>
111
 
112
 
106
  <div class="close-guard-notify"></div>
107
  <p>Looking for more ways to generate leads? Try putting a Comment Guard on your Facebook post. We'll automatically message any user who comments on your posts to get their opt-ins.</p>
108
  <div class="trn"></div>
109
+ <a class="btn-lets_go" target="_blank" href="<?php echo $app_domain ?>chatbot-editor/<?php echo $bot_id ?>/comment-guards">Let's Go</a>
110
  </div>
111
 
112
 
admin/commons/ht-cc-admin-fb-button-connected.php CHANGED
File without changes
admin/commons/ht-cc-admin-fb-button-select-page.php CHANGED
File without changes
admin/commons/ht-cc-admin-limit-tooltip.php CHANGED
@@ -20,7 +20,7 @@ if ($percent>=80){ ?>
20
  <?php
21
  }
22
  ?>
23
- <a target="_blank" href="https://app.mobilemonkey.com/settings/billing" class="limit__button">Learn more</a>
24
  <div class="limit-notify-close"></div>
25
  </div>
26
  <?php
20
  <?php
21
  }
22
  ?>
23
+ <a target="_blank" href="<?php echo $app_domain ?>settings/billing" class="limit__button">Learn more</a>
24
  <div class="limit-notify-close"></div>
25
  </div>
26
  <?php
admin/commons/ht-cc-admin-settings-form.php CHANGED
@@ -42,7 +42,11 @@ $tabs[$curren] .= ' current';
42
  <span class="tab_header">Leads</span>
43
  <span class="tab_contacts__count"><?php echo $table->totalItems ?></span>
44
  </li>
45
- <li class="tab-link <?php echo $tabs[4] ?>" style="position: relative;" data-tab="tab-4">
 
 
 
 
46
  <span class="tab_header">Your Subscription</span>
47
  <?php
48
 
@@ -50,7 +54,8 @@ $tabs[$curren] .= ' current';
50
  'limit' => $wp_plan_info->outgoing_messages_limit,
51
  'count' => $message_statistic->count,
52
  'is_wp'=> $page_info['is_wp_subscribe'],
53
- 'subscribe'=> $subscribe_info
 
54
  ];
55
  HT_CC::view('ht-cc-admin-limit-tooltip', $limit); ?>
56
  </li>
@@ -96,6 +101,12 @@ $tabs[$curren] .= ' current';
96
  <div id="tab-3" class="tab-content contact_tab <?php echo $tabs[3] ?>">
97
  <h1><?php _e('Leads') ?></h1>
98
 
 
 
 
 
 
 
99
  <div class="contact_head__wrap">
100
  <h4><?php
101
  $text = $table->totalItems > 1 ? 'Leads' : 'Lead';
@@ -130,7 +141,7 @@ $tabs[$curren] .= ' current';
130
  ?>
131
  </div>
132
  <div class="customization_button__wrapper">
133
- <a target="_blank" rel="noopener noreferrer" href="https://app.mobilemonkey.com/chatbot-editor/<?php echo $connected_page['bot_id']?>/bot-builder" class="customization_button__link">
134
  <div class="customization_button">
135
  <div class="customization_button__content">More chatbot customization in <span class="customization_button__image"></span> MobileMonkey</div>
136
  <div class="customization_button__action">
@@ -140,7 +151,59 @@ $tabs[$curren] .= ' current';
140
  </a>
141
  </div>
142
  </div>
143
- <div id="tab-4" class="tab-content subscribe_section <?php echo $tabs[4] ?>">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
144
  <div class="tab-content__wrapper">
145
  <?php
146
  $plan = json_decode(json_encode($wp_plan_info), True);
42
  <span class="tab_header">Leads</span>
43
  <span class="tab_contacts__count"><?php echo $table->totalItems ?></span>
44
  </li>
45
+ <li class="tab-link <?php echo $tabs[4] ?>" data-tab="tab-4">
46
+ <span class="tab_number">4</span>
47
+ <span class="tab_header">Chatbot Settings</span>
48
+ </li>
49
+ <li class="tab-link <?php echo $tabs[5] ?>" style="position: relative;" data-tab="tab-5">
50
  <span class="tab_header">Your Subscription</span>
51
  <?php
52
 
54
  'limit' => $wp_plan_info->outgoing_messages_limit,
55
  'count' => $message_statistic->count,
56
  'is_wp'=> $page_info['is_wp_subscribe'],
57
+ 'subscribe'=> $subscribe_info,
58
+ 'app_domain' => $app_domain,
59
  ];
60
  HT_CC::view('ht-cc-admin-limit-tooltip', $limit); ?>
61
  </li>
101
  <div id="tab-3" class="tab-content contact_tab <?php echo $tabs[3] ?>">
102
  <h1><?php _e('Leads') ?></h1>
103
 
104
+ <p>To chat with your website visitors, go to your MobileMonkey inbox</p>
105
+ <a target="_blank" href="<?php echo $app_domain ?>chatbot-editor/<?php echo $connected_page['bot_id']?>/live-chat" class="go-to-inbox-link">
106
+ <img src="<?php echo plugins_url('admin/assets/img/live-chat.png',HTCC_PLUGIN_FILE)?>">
107
+ Go to Inbox
108
+ </a>
109
+
110
  <div class="contact_head__wrap">
111
  <h4><?php
112
  $text = $table->totalItems > 1 ? 'Leads' : 'Lead';
141
  ?>
142
  </div>
143
  <div class="customization_button__wrapper">
144
+ <a target="_blank" rel="noopener noreferrer" href="<?php echo $app_domain ?>chatbot-editor/<?php echo $connected_page['bot_id']?>/bot-builder" class="customization_button__link">
145
  <div class="customization_button">
146
  <div class="customization_button__content">More chatbot customization in <span class="customization_button__image"></span> MobileMonkey</div>
147
  <div class="customization_button__action">
151
  </a>
152
  </div>
153
  </div>
154
+ <div id="tab-4" class="tab-content chatbot_settings_tab <?php echo $tabs[4] ?>">
155
+ <div class="tab-content__wrapper">
156
+ <h1><?php _e('Chatbot Settings') ?></h1>
157
+ <div class="chatbot_settings_tab__content">
158
+ <p>
159
+ <input
160
+ type="radio"
161
+ <?php echo $chat_widget_channel == 'omnichat' ? 'checked="checked"' : '' ?>
162
+ onclick="return false;"
163
+ />
164
+ Support both Facebook Messenger & webchat (OmniChat enabled)
165
+ <a
166
+ href="https://mobilemonkey.com/help/article/lceo0wtp0l-omni-chat"
167
+ target="_blank" rel="noopener noreferrer">
168
+ <i class="fa fa-question-circle-o"></i>
169
+ </a>
170
+ </p>
171
+ <p>
172
+ <input
173
+ type="radio"
174
+ <?php echo $chat_widget_channel == 'facebook' ? 'checked="checked"' : '' ?>
175
+ onclick="return false;"
176
+ />
177
+ Support only Facebook Messenger
178
+ </p>
179
+ <p>
180
+ <input
181
+ type="radio"
182
+ <?php echo $chat_widget_channel == 'web_chat' ? 'checked="checked"' : '' ?>
183
+ onclick="return false;"
184
+ />
185
+ Support only webchat
186
+ </p>
187
+ <a target="_blank" href="<?php echo $app_domain ?>chatbot-editor/<?php echo $connected_page['bot_id']?>/configure/customer-chat-widget" class="go-to-chat-widget-settings-link">
188
+ Edit this setting
189
+ </a>
190
+
191
+ <?php if ($chat_widget_channel == 'omnichat') { ?>
192
+ <div class="chatbot_settings_tab__info-box">
193
+ <i class="fa fa-question-circle-o"></i>
194
+ <div>
195
+ WP-Chatbot will show a Messenger chat widget if your website visitor is logged into Facebook. Otherwise, it will show a native webchat widget. Learn more about OmniChat
196
+ <a
197
+ href="https://mobilemonkey.com/help/article/lceo0wtp0l-omni-chat"
198
+ target="_blank" rel="noopener noreferrer">
199
+ here</a>.
200
+ </div>
201
+ </div>
202
+ <?php } ?>
203
+ </div>
204
+ </div>
205
+ </div>
206
+ <div id="tab-5" class="tab-content subscribe_section <?php echo $tabs[5] ?>">
207
  <div class="tab-content__wrapper">
208
  <?php
209
  $plan = json_decode(json_encode($wp_plan_info), True);
admin/commons/ht-cc-admin-sidebar.php CHANGED
@@ -1,33 +1,33 @@
1
- <?php
2
- /**
3
- * sidebar in admin area - plugin settings page.
4
- *
5
- * @uses at settings_page.php
6
- *
7
- */
8
-
9
- if ( ! defined( 'ABSPATH' ) ) exit;
10
-
11
- ?>
12
-
13
-
14
-
15
-
16
- <!-- Premium plugin Content -->
17
- <div class="service-content" style="display: block;" >
18
- <div class="row">
19
- <div class="col s12 m6">
20
- <!-- docs -->
21
- <div class="links">
22
- <p>Documentation</p>
23
- <p><a target="_blank" href="https://mobilemonkey.com/wp-chatbot/wp-chatbot-settings/?utm_source=wp-chatbot&utm_medium=admin-page">WP-Chatbot Settings</a></p>
24
- <p><a target="_blank" href="https://mobilemonkey.com/wp-chatbot/basic-troubleshooting/?utm_source=wp-chatbot&utm_medium=admin-page">Basic Troubleshooting</a></p>
25
- </div>
26
- <br>
27
- <small class="close" onclick="ht_cc_admin_hide_services_content()" style="cursor: pointer;">Hide this box</small>
28
- <div>
29
- <iframe src="https://s3.amazonaws.com/mm-prod-webinars/wp-chatbot-banner.html" style="width: 300px; height: 700px; border: 0"></iframe>
30
- </div>
31
- </div>
32
- </div>
33
- </div>
1
+ <?php
2
+ /**
3
+ * sidebar in admin area - plugin settings page.
4
+ *
5
+ * @uses at settings_page.php
6
+ *
7
+ */
8
+
9
+ if ( ! defined( 'ABSPATH' ) ) exit;
10
+
11
+ ?>
12
+
13
+
14
+
15
+
16
+ <!-- Premium plugin Content -->
17
+ <div class="service-content" style="display: block;" >
18
+ <div class="row">
19
+ <div class="col s12 m6">
20
+ <!-- docs -->
21
+ <div class="links">
22
+ <p>Documentation</p>
23
+ <p><a target="_blank" href="https://mobilemonkey.com/wp-chatbot/wp-chatbot-settings/?utm_source=wp-chatbot&utm_medium=admin-page">WP-Chatbot Settings</a></p>
24
+ <p><a target="_blank" href="https://mobilemonkey.com/wp-chatbot/basic-troubleshooting/?utm_source=wp-chatbot&utm_medium=admin-page">Basic Troubleshooting</a></p>
25
+ </div>
26
+ <br>
27
+ <small class="close" onclick="ht_cc_admin_hide_services_content()" style="cursor: pointer;">Hide this box</small>
28
+ <div>
29
+ <iframe src="https://s3.amazonaws.com/mm-prod-webinars/wp-chatbot-banner.html" style="width: 300px; height: 700px; border: 0"></iframe>
30
+ </div>
31
+ </div>
32
+ </div>
33
+ </div>
admin/settings_page.php CHANGED
@@ -1,112 +1,120 @@
1
- <?php
2
- /**
3
- * template for options page
4
- * @uses HTCC_Admin::settings_page
5
- * @since 1.0.0
6
- */
7
-
8
- if (!defined('ABSPATH')) exit;
9
- $options = get_option('htcc_options');
10
- $options_as = get_option('htcc_as_options');
11
- $options_custom = get_option('htcc_custom_options');
12
- $api = $this->getApi();
13
- $this->api->logoutMobilemonkey();
14
- $token = $this->api->connectMobileMonkey();
15
- $internal = $this->api->getActivePageId();
16
- $update = false;
17
- $cg_notice = get_transient( 'cg_notice_off' );
18
  $hide_mobile_app_banner = get_transient( 'ht_cc_admin_sidebar__hide_mobile_app_banner' );
19
  $main_css_classes = $hide_mobile_app_banner ? 'm12 x12' : 'm9 x9';
20
- ?>
21
-
22
- <!-- style="display: flex; flex-wrap: wrap;" -->
23
- <div class="wrap">
24
- <div class="row mobile_wrap">
 
 
 
 
 
25
  <div class="col s12 <?php echo $main_css_classes ?>options ht-cc-admin__main">
26
- <div class="mobilemonkey-logo">
27
- <?php
28
- if ($api->getActiveBotId()){
29
- $data_cg = [
30
- 'bot_id'=> $api->getActiveBotId()
31
- ];
32
- if (!$api->isCommentGuard()&&$cg_notice!=true){
33
- HT_CC::view('ht-cc-admin-comment-guard',$data_cg);
34
- }
35
- }
36
- ?>
37
- </div>
38
- <h6 class="options-subtitle"><?php _e('WP-Chatbot is ') ?><a href="https://mobilemonkey.com/" target="_blank"><?php _e('powered by MobileMonkey') ?></a><?php _e(': an Official Facebook Messenger Solutions Provider Partner') ?></h6>
39
- <?php
40
- if ($token) {
41
- $reset = FALSE;
42
- if ($this->api->connectPage() || $this->api->disconnectPage()) {
43
- $reset = TRUE;
44
- exit;
45
- }
46
- $this->api->getSubscribeInfo();
47
- $activePage = $this->api->getActivePage($reset);
48
- $actpage = get_option("mobilemonkey_active_page_info");
49
- if ($actpage) {
50
- if ($actpage['bot_id']){
51
- if ( isset($_REQUEST['settings-updated']) && $_REQUEST['settings-updated']){
52
- $update = true;
53
- $current_language = $this->api->getLanguage($actpage['remote_id']);
54
- if (!empty($options_custom['fb_sdk_lang']) && $options_custom['fb_sdk_lang'] !== $current_language) {
55
- $this->api->updateLanguage($options_custom['fb_sdk_lang'], $actpage['remote_id']);
56
- }
57
- }
58
- $this->api->setWidgets($options_as,$actpage['remote_id'],$update);
59
- $this->api->setCustomChatSettings($actpage['remote_id'],$options_custom,$update);
60
- }else {
61
- echo "<style>.settings-error{display: none}</style>";
62
- $this->api->renderNotice('<p class="bot_disabled">Your chatbot has been disabled in MobileMonkey. Please reactivate it before making additional edits. Go <a target="_blank" rel="noopener noreferrer" href="https://app.mobilemonkey.com/chatbot-editor/">here</a> to reactivate your chatbot</p>');
63
-
64
- }
65
- $is_pro = $this->api->GetCurrentSubscription()? true : false;
66
- $fb_connected_area_active_page_settings = [
67
- 'connected_page' => $actpage,
68
- 'is_pro' => $is_pro
69
- ];
70
- $page_subscribe_info = [
71
- 'page_info'=> $this->api->getPageInfo(),
72
- 'account_info'=> $this->api->getAccountInfo(),
73
- 'subscribe_info'=> $this->api->getCurrentSubscription(),
74
- 'wp_plan_info'=> $this->api->getWpPlan(),
75
- 'message_statistic'=> $this->api->getMessageStatistic(),
76
- 'connected_page' => $actpage,
77
- ];
78
- HT_CC::view('ht-cc-admin-fb-button-connected', $fb_connected_area_active_page_settings);
79
- HT_CC::view('ht-cc-admin-settings-form',$page_subscribe_info);
80
-
81
- } else {
82
- $pages = $this->api->getPages();
83
- if ($internal){
84
- echo "<style>.settings-error{display: none}</style>";
85
- $this->api->renderNotice('Your Facebook page has been disconnected in MobileMonkey. Please connect to a page to reactivate your chatbot.');
86
- }
87
- $fb_connected_area_pages_settings = [
88
- 'pages' => $pages,
89
- 'logout_path' => add_query_arg([
90
- 'page' => HTCC_PLUGIN_MAIN_MENU,
91
- 'logout' => true,
92
- ], admin_url('admin.php')),
93
- ];
94
- HT_CC::view('ht-cc-admin-fb-button-select-page', $fb_connected_area_pages_settings);
95
- }
96
-
97
- } else {
98
-
99
- HT_CC::view('ht-cc-admin-fb-button-not-connected', [
100
- 'options' => $options,
101
- 'path' => $this->getApi()->connectLink(),
102
- ]);
103
- }
104
-
105
- ?>
106
-
107
- </div>
 
 
 
108
  <?php if ($hide_mobile_app_banner != true) { ?>
109
-
110
  <div class="col s12 m3 x3 ht-cc-admin-sidebar">
111
  <div class="side-bar">
112
  <div class="phone">
@@ -128,8 +136,8 @@ $main_css_classes = $hide_mobile_app_banner ? 'm12 x12' : 'm9 x9';
128
  </div>
129
  </div>
130
  </div>
131
-
132
-
133
  </div>
134
  <script>
135
  jQuery(document).ready(function($){
1
+ <?php
2
+ /**
3
+ * template for options page
4
+ * @uses HTCC_Admin::settings_page
5
+ * @since 1.0.0
6
+ */
7
+
8
+ if (!defined('ABSPATH')) exit;
9
+ $options = get_option('htcc_options');
10
+ $options_as = get_option('htcc_as_options');
11
+ $options_custom = get_option('htcc_custom_options');
12
+ $api = $this->getApi();
13
+ $this->api->logoutMobilemonkey();
14
+ $token = $this->api->connectMobileMonkey();
15
+ $internal = $this->api->getActivePageId();
16
+ $update = false;
17
+ $cg_notice = get_transient( 'cg_notice_off' );
18
  $hide_mobile_app_banner = get_transient( 'ht_cc_admin_sidebar__hide_mobile_app_banner' );
19
  $main_css_classes = $hide_mobile_app_banner ? 'm12 x12' : 'm9 x9';
20
+ $chat_widget_channel = null;
21
+ if ($api->getActiveBotId()) {
22
+ $bot = $this->api->getBotRef($api->getActiveBotId());
23
+ $chat_widget_channel = $bot->chat_widget_channel;
24
+ }
25
+ ?>
26
+
27
+ <!-- style="display: flex; flex-wrap: wrap;" -->
28
+ <div class="wrap">
29
+ <div class="row mobile_wrap">
30
  <div class="col s12 <?php echo $main_css_classes ?>options ht-cc-admin__main">
31
+ <div class="mobilemonkey-logo">
32
+ <?php
33
+ if ($api->getActiveBotId()){
34
+ $data_cg = [
35
+ 'bot_id'=> $api->getActiveBotId(),
36
+ 'app_domain' => $api->app_domain,
37
+ ];
38
+ if (!$api->isCommentGuard()&&$cg_notice!=true){
39
+ HT_CC::view('ht-cc-admin-comment-guard',$data_cg);
40
+ }
41
+ }
42
+ ?>
43
+ </div>
44
+ <h6 class="options-subtitle"><?php _e('WP-Chatbot is ') ?><a href="https://mobilemonkey.com/" target="_blank"><?php _e('powered by MobileMonkey') ?></a><?php _e(': an Official Facebook Messenger Solutions Provider Partner') ?></h6>
45
+ <?php
46
+ if ($token) {
47
+ $reset = FALSE;
48
+ if ($this->api->connectPage() || $this->api->disconnectPage()) {
49
+ $reset = TRUE;
50
+ exit;
51
+ }
52
+ $this->api->getSubscribeInfo();
53
+ $activePage = $this->api->getActivePage($reset);
54
+ $actpage = get_option("mobilemonkey_active_page_info");
55
+ if ($actpage) {
56
+ if ($actpage['bot_id']){
57
+ if ( isset($_REQUEST['settings-updated']) && $_REQUEST['settings-updated']){
58
+ $update = true;
59
+ $current_language = $this->api->getLanguage($actpage['remote_id']);
60
+ if (!empty($options_custom['fb_sdk_lang']) && $options_custom['fb_sdk_lang'] !== $current_language) {
61
+ $this->api->updateLanguage($options_custom['fb_sdk_lang'], $actpage['remote_id']);
62
+ }
63
+ }
64
+ $this->api->setWidgets($options_as,$actpage['remote_id'],$update);
65
+ $this->api->setCustomChatSettings($actpage['remote_id'],$options_custom,$update);
66
+ }else {
67
+ echo "<style>.settings-error{display: none}</style>";
68
+ $this->api->renderNotice('<p class="bot_disabled">Your chatbot has been disabled in MobileMonkey. Please reactivate it before making additional edits. Go <a target="_blank" rel="noopener noreferrer" href="' . $this->api->app_domain . 'chatbot-editor/">here</a> to reactivate your chatbot</p>');
69
+
70
+ }
71
+ $is_pro = $this->api->GetCurrentSubscription()? true : false;
72
+ $fb_connected_area_active_page_settings = [
73
+ 'connected_page' => $actpage,
74
+ 'is_pro' => $is_pro
75
+ ];
76
+ $page_subscribe_info = [
77
+ 'page_info'=> $this->api->getPageInfo(),
78
+ 'account_info'=> $this->api->getAccountInfo(),
79
+ 'subscribe_info'=> $this->api->getCurrentSubscription(),
80
+ 'wp_plan_info'=> $this->api->getWpPlan(),
81
+ 'message_statistic'=> $this->api->getMessageStatistic(),
82
+ 'connected_page' => $actpage,
83
+ 'chat_widget_channel' => $chat_widget_channel,
84
+ 'app_domain' => $this->api->app_domain,
85
+ ];
86
+ HT_CC::view('ht-cc-admin-fb-button-connected', $fb_connected_area_active_page_settings);
87
+ HT_CC::view('ht-cc-admin-settings-form',$page_subscribe_info);
88
+
89
+ } else {
90
+ $pages = $this->api->getPages();
91
+ if ($internal){
92
+ echo "<style>.settings-error{display: none}</style>";
93
+ $this->api->renderNotice('Your Facebook page has been disconnected in MobileMonkey. Please connect to a page to reactivate your chatbot.');
94
+ }
95
+ $fb_connected_area_pages_settings = [
96
+ 'pages' => $pages,
97
+ 'logout_path' => add_query_arg([
98
+ 'page' => HTCC_PLUGIN_MAIN_MENU,
99
+ 'logout' => true,
100
+ ], admin_url('admin.php')),
101
+ ];
102
+ HT_CC::view('ht-cc-admin-fb-button-select-page', $fb_connected_area_pages_settings);
103
+ }
104
+
105
+ } else {
106
+
107
+ HT_CC::view('ht-cc-admin-fb-button-not-connected', [
108
+ 'options' => $options,
109
+ 'path' => $this->getApi()->connectLink(),
110
+ ]);
111
+ }
112
+
113
+ ?>
114
+
115
+ </div>
116
  <?php if ($hide_mobile_app_banner != true) { ?>
117
+
118
  <div class="col s12 m3 x3 ht-cc-admin-sidebar">
119
  <div class="side-bar">
120
  <div class="phone">
136
  </div>
137
  </div>
138
  </div>
139
+
140
+
141
  </div>
142
  <script>
143
  jQuery(document).ready(function($){
inc/MobileMonkeyApi.php CHANGED
@@ -1,1402 +1,1403 @@
1
- <?php
2
-
3
- class MobileMonkeyApi
4
- {
5
-
6
- private $option_prefix = 'mobilemonkey_';
7
- private $api_domain = 'https://api.mobilemonkey.com/';
8
- private $src = 'wordpress';
9
- private $pages = [];
10
- private $active_page = false;
11
- private $env = true;
12
- private $pagination;
13
- private $contacts;
14
- private $plugin_name = 'wp-chatbot';
15
- private $page_info;
16
- private $bot_id;
17
- public $available_company;
18
- public $as_mm = false;
19
- public $notice = false;
20
-
21
- private function getApiDomain()
22
- {
23
- return $this->api_domain;
24
- }
25
-
26
- private function getSrc()
27
- {
28
- return $this->src;
29
- }
30
-
31
- public function getOptionPrefix()
32
- {
33
- return $this->option_prefix;
34
- }
35
-
36
- private function setToken()
37
- {
38
- $token = filter_input(INPUT_GET, "auth_token", FILTER_SANITIZE_STRING);
39
- if ($token) {
40
- update_option($this->option_prefix . 'token', $token);
41
- return true;
42
- }
43
- return false;
44
- }
45
-
46
- private function getToken()
47
- {
48
- return get_option($this->option_prefix . 'token');
49
- }
50
-
51
- private function setCompanyId()
52
- {
53
- $company_id = filter_input(INPUT_GET, "company_id", FILTER_SANITIZE_STRING);
54
- if ($company_id) {
55
- update_option($this->option_prefix . 'company_id', $company_id);
56
- return true;
57
- }
58
- return false;
59
- }
60
-
61
- public function getCompanyId($connection_page_id)
62
- {
63
-
64
- if ($connection_page_id) {
65
- $pages = $this->pages;
66
- foreach ($pages as $page) {
67
- if ($page['id'] && $connection_page_id == $page['remote_id']) {
68
- if (in_array($page['company_id'], $this->available_company)){
69
- return $page['company_id'];
70
- }else return false;
71
- }
72
- }
73
- return get_option($this->option_prefix . 'company_id');
74
- }
75
- }
76
- public function getActiveRemotePageId(){
77
- $data = get_option($this->option_prefix . 'active_page_info');
78
- return $data['remote_id'];
79
- }
80
-
81
-
82
- private function getInternalPageId($connection_page_id)
83
- {
84
-
85
- if ($connection_page_id) {
86
-
87
- $pages = $this->pages;
88
- foreach ($pages as $page) {
89
- if ($page['id'] && $connection_page_id == $page['remote_id']) {
90
- return $page['id'];
91
- }
92
- }
93
- return get_option($this->option_prefix . 'fb_internal_page_id');
94
- }
95
- }
96
-
97
-
98
- public function getActiveBotId()
99
- {
100
- $data = get_option($this->option_prefix . 'active_page_info');
101
- return $data['bot_id'];
102
- }
103
-
104
-
105
- public function getActivePageId()
106
- {
107
- $data = get_option($this->option_prefix . 'active_page_info');
108
- return $data['id'];
109
- }
110
-
111
- public function getAvailableCompany(){
112
- $args = [
113
- 'timeout' => 10,
114
- 'headers' => [
115
- 'Authorization' => $this->getToken(),
116
- 'Content-Type' => 'application/json; charset=utf-8',
117
- ],
118
- 'method' => 'GET',
119
- ];
120
- $response = wp_remote_post($this->getApiDomain() . 'api/wordpress_settings/my_company_ids?v=' . HTCC_VERSION.'.2', $args);
121
- $error = $this->ErrorHandler($response,'Available Company','get');
122
- if ($error) {
123
- $connect_response = json_decode($error);
124
- return $connect_response;
125
- }
126
- }
127
-
128
- public function setAvailableCompany(){
129
- $company = $this->getAvailableCompany();
130
- update_option($this->option_prefix . 'available_company', $company);
131
- $this->available_company = $company;
132
- }
133
-
134
- public function getPages()
135
- {
136
- $args = [
137
- 'timeout' => 30,
138
- 'headers' => [
139
- 'Authorization' => $this->getToken()
140
- ],
141
- 'body' =>[
142
- 'src' => $this->getSrc()
143
- ]
144
- ];
145
- $pagesObj = NULL;
146
- $pages = [];
147
- $response = wp_remote_get($this->getApiDomain() . 'api/facebook_pages/available_options?src=' . $this->getSrc().'&limit=150&v=' . HTCC_VERSION.'.3', $args);
148
- $content = wp_remote_retrieve_body($response);
149
- if (!empty($content)) {
150
- $pagesObj = json_decode($content);
151
-
152
- if (empty($pagesObj->errors)) {
153
- if(is_array($pagesObj->data)) {
154
- foreach ($pagesObj->data as $page) {
155
- $p = [
156
- 'name' => $page->name,
157
- 'remote_id' => $page->remote_id,
158
- 'id' => $page->facebook_page_id,
159
- 'bot_id' => $page->bot_id,
160
- 'bot_kind' => $page->bot_kind,
161
- 'company_id' => $page->company_id,
162
- 'path' => add_query_arg([
163
- 'page' => $this->plugin_name,
164
- 'connect' => $page->remote_id,
165
- 'page_name' => $page->name
166
- ], admin_url('admin.php')),
167
- ];
168
-
169
- $pages[] = $p;
170
- }
171
- }
172
- }
173
- }
174
- $this->pages = $pages;
175
- return $pages;
176
- }
177
-
178
- public function getActivePage($reset = false)
179
- {
180
-
181
- if (!$reset && !empty($this->active_page)) {
182
- return $this->active_page;
183
- }
184
-
185
- $actpage = get_option("mobilemonkey_active_page_info");
186
- if ($actpage){
187
- $this->active_page = $actpage;
188
- return $actpage;
189
- }else
190
- return false;
191
- }
192
-
193
-
194
- public function getSubscribeInfo()
195
- {
196
- $args = [
197
- 'timeout' => 10,
198
- 'headers' => [
199
- 'Authorization' => $this->getToken(),
200
- 'Content-Type' => 'application/json; charset=utf-8',
201
- ],
202
- 'method' => 'GET',
203
- ];
204
- $response = wp_remote_post($this->getApiDomain() . 'api/wordpress/subscriptions/for_page?facebook_page_id=' . $this->getActiveRemotePageId().'&v=' . HTCC_VERSION.'.2', $args);
205
- $error = $this->ErrorHandler($response,'Page Subscribe Info','get');
206
- if ($error) {
207
- $connect_response = json_decode($error);
208
- $this->setAccountInfo($connect_response->account);
209
- $this->setCurrentSubscription($connect_response->subscription);
210
- $this->setWpPlan($connect_response->plan);
211
- $this->setPageInfo($connect_response);
212
- $this->setMessageStatistic($connect_response->current_outgoing_messages_statistic);
213
- }
214
- }
215
-
216
- public function isCommentGuard(){
217
- $args = [
218
- 'timeout' => 10,
219
- 'headers' => [
220
- 'Authorization' => $this->getToken(),
221
- 'Content-Type' => 'application/json; charset=utf-8',
222
- ],
223
- 'method' => 'GET',
224
- ];
225
- $bot_id = $this->getActiveBotId();
226
- if ($bot_id){
227
- $response = wp_remote_post($this->getApiDomain() . 'api/bots/'.$bot_id.'/start_bots?page=1&per_page=25&kind=comment_guard&v=' . HTCC_VERSION.'.2', $args);
228
- $content = wp_remote_retrieve_body($response);
229
- if ($content){
230
- $data = json_decode($content);
231
- if ($data->start_bots){
232
- return true;
233
- }
234
- else return false;
235
- }
236
- }
237
- }
238
-
239
- public function setPageInfo($info){
240
- $data = [
241
- 'pageName'=> $info->name,
242
- 'connected_at'=> $info->connected_at,
243
- 'is_wp_subscribe'=> $info->is_wp_subscription,
244
- ];
245
- $this->page_info = $data;
246
- update_option($this->option_prefix . 'page_info', $data);
247
- }
248
-
249
- public function getPageInfo(){
250
- return get_option($this->option_prefix . 'page_info');
251
- }
252
-
253
- public function setAccountInfo($account){
254
- update_option($this->option_prefix . 'account_info', $account);
255
- }
256
- /**
257
- * @return object
258
- */
259
- public function getAccountInfo(){
260
- return get_option($this->option_prefix . 'account_info');
261
- }
262
-
263
- public function setMessageStatistic($account){
264
- update_option($this->option_prefix . 'message_statistic', $account);
265
- }
266
- /**
267
- * @return object
268
- */
269
- public function getMessageStatistic(){
270
- return get_option($this->option_prefix . 'message_statistic');
271
- }
272
-
273
- public function setCurrentSubscription($subscribe){
274
- update_option($this->option_prefix . 'current_subscribe', $subscribe);
275
- }
276
- /**
277
- * @return object
278
- */
279
- public function getCurrentSubscription(){
280
- return get_option($this->option_prefix . 'current_subscribe');
281
- }
282
-
283
- public function setWpPlan($plan){
284
- update_option($this->option_prefix . 'wp_plan', $plan);
285
- }
286
- /**
287
- * @return object
288
- */
289
- public function getWpPlan(){
290
- return get_option($this->option_prefix . 'wp_plan');
291
- }
292
-
293
-
294
- private function default_custom_setting(){
295
- $data = array();
296
- $data['fb_logged_in_greeting'] = 'Hi! How can we help you?';
297
- $data['fb_logged_out_greeting'] = 'Hi! We\'re here to answer any questions you may have';
298
- $data['fb_color'] = '#0084FF';
299
- $data['fb_greeting_dialog_display'] = 'show';
300
- $data['fb_greeting_dialog_delay'] = 1;
301
- return($data);
302
- }
303
-
304
- public function create_subscribe(){
305
- $data = $_POST;
306
- $args = [
307
- 'timeout' => 10,
308
- 'headers' => [
309
- 'Authorization' => $this->getToken(),
310
- 'Content-Type' => 'application/json; charset=utf-8',
311
- ],
312
- 'body' => json_encode([
313
- 'facebook_page_id'=> $this->getActiveRemotePageId(),
314
- 'src' => $this->getSrc(),
315
- ]),
316
- 'method' => 'POST',
317
- ];
318
- if(isset($data['token'])){
319
- $args['body'] = json_encode([
320
- 'facebook_page_id'=> $this->getActiveRemotePageId(),
321
- 'src' => $this->getSrc(),
322
- 'token' => $data['token']
323
- ]);
324
- }
325
- $response = wp_remote_post($this->getApiDomain() . 'api/wordpress/subscriptions?v=' . HTCC_VERSION.'.2', $args);
326
- $error = $this->ErrorHandler($response,'Subscribe','create');
327
- if ($error) {
328
- $connect_response = json_decode($error);
329
- $this->setAccountInfo($connect_response->account);
330
- $this->setCurrentSubscription($connect_response->subscription);
331
- $this->setWpPlan($connect_response->plan);
332
- $this->setPageInfo($connect_response);
333
- $this->setMessageStatistic($connect_response->current_outgoing_messages_statistic);
334
- wp_send_json_success ($error);
335
- }
336
- }
337
-
338
- public function cancel_subscribe(){
339
- $args = [
340
- 'timeout' => 10,
341
- 'headers' => [
342
- 'Authorization' => $this->getToken(),
343
- 'Content-Type' => 'application/json; charset=utf-8',
344
- ],
345
- 'body' => json_encode([
346
- 'facebook_page_id'=> $this->getActiveRemotePageId(),
347
- 'src' => $this->getSrc(),
348
- ]),
349
- 'method' => 'POST',
350
- ];
351
- $response = wp_remote_post($this->getApiDomain() . 'api/wordpress/subscriptions/cancel?v=' . HTCC_VERSION.'.2', $args);
352
- $error = $this->ErrorHandler($response,'Subscribe','Cancel');
353
- if ($error) {
354
- $connect_response = json_decode($error);
355
- $this->setAccountInfo($connect_response->account);
356
- $this->setCurrentSubscription($connect_response->subscription);
357
- $this->setWpPlan($connect_response->plan);
358
- $this->setPageInfo($connect_response);
359
- $this->setMessageStatistic($connect_response->current_outgoing_messages_statistic);
360
- wp_send_json_success ($error);
361
- }
362
- }
363
-
364
-
365
- private function setEnvironment($environment)
366
- {
367
- update_option($this->option_prefix . 'environment', $environment);
368
- }
369
-
370
- public function getEnvironment()
371
- {
372
- return get_option($this->option_prefix . 'environment');
373
- }
374
-
375
- public function refreshSettingsPage()
376
- {
377
- echo "<script type='text/javascript'>
378
- var path = location.protocol + '//' + location.host + location.pathname + '?page=wp-chatbot';
379
- window.location = path;
380
-
381
- </script>";
382
- }
383
-
384
- public function connectLink()
385
- {
386
- $current_user = wp_get_current_user();
387
-
388
- if (!empty($current_user->user_email)) {
389
- $user_email = $current_user->user_email;
390
- } else {
391
- $user_email = get_option('admin_email', '');
392
- }
393
- return $this->getApiDomain() . 'wordpress/auth?callback="' . add_query_arg(['page' => $this->plugin_name], admin_url('admin.php')) . '"&email=' . $user_email . '&v=' . HTCC_VERSION.'.2';
394
- }
395
-
396
- public function connectMobileMonkey()
397
- {
398
- if ($this->setToken() && $this->setCompanyId()) {
399
-
400
- $this->getEnv();
401
-
402
- $this->sendUserEmail();
403
-
404
- $this->refreshSettingsPage();
405
- }
406
- return $this->getToken();
407
- }
408
-
409
- public function logoutMobilemonkey($reset = false)
410
- {
411
- $logout = filter_input(INPUT_GET, "logout", FILTER_SANITIZE_STRING);
412
- if ($logout || $reset) {
413
- $this->disconnectPage(get_option($this->active_page['page_id']));
414
- delete_option('htcc_fb_js_src');
415
- delete_option($this->option_prefix . 'token');
416
- $this->refreshSettingsPage();
417
- }
418
- }
419
-
420
- public function mmOnlyCheck($page_id)
421
- {
422
- $args = [
423
- 'timeout' => 10,
424
- 'headers' => [
425
- 'Authorization' => $this->getToken(),
426
- 'Content-Type' => 'application/json; charset=utf-8',
427
- ],
428
- 'method' => 'GET',
429
- ];
430
- $response = wp_remote_post($this->getApiDomain() . 'api/facebook_pages/' . $this->getInternalPageId($page_id).'?v=' . HTCC_VERSION.'.2', $args);
431
- $error = $this->ErrorHandler($response,'MM Only State','get');
432
- if ($error) {
433
- $connect_response = json_decode($error);
434
- return $connect_response->wordpress_settings->mm_only_mode;
435
- }
436
-
437
- }
438
-
439
-
440
- public function connectPage()
441
- {
442
- $pageId = filter_input(INPUT_GET, "connect", FILTER_SANITIZE_STRING);
443
- $pageName = filter_input(INPUT_GET, "page_name", FILTER_SANITIZE_STRING);
444
- if ($pageId && $pageName) {
445
- $this->setAvailableCompany();
446
- if (!$this->getCompanyId($pageId)){
447
- $this->renderError('This Facebook page has already been connected in MobileMonkey to a company that you don\'t have access to. Please contact support@mobilemonkey.com for more information on how to resolve this issue.');
448
- return false;
449
- }
450
- $args = [
451
- 'timeout' => 10,
452
- 'body' => json_encode([
453
- 'remote_id' => $pageId,
454
- 'company_id' => $this->getCompanyId($pageId),
455
- 'name' => $pageName,
456
- 'base_url' => get_site_url(),
457
- 'src' => $this->getSrc(),
458
- ]),
459
- 'headers' => [
460
- 'Authorization' => $this->getToken(),
461
- 'Content-Type' => 'application/json; charset=utf-8',
462
- ],
463
- 'method' => 'POST',
464
- ];
465
- $response = wp_remote_post($this->getApiDomain() . 'api/facebook_pages?v=' . HTCC_VERSION.'.2', $args);
466
- $content = wp_remote_retrieve_body($response);
467
- $connect_response = json_decode($content);
468
- if (json_last_error() !== JSON_ERROR_NONE) {
469
- $this->renderNotice('API communication error. Unable to connect facebook page.');
470
- } elseif (!empty($connect_response->success)) {
471
- if ($connect_response->facebook_page->remote_id) {
472
- $options = get_option('htcc_options', array());
473
- $new_opt['remote_id'] = $connect_response->facebook_page->remote_id;
474
- $new_opt['bot_id'] = $connect_response->facebook_page->active_bot_id;
475
- $new_opt['name'] = $connect_response->facebook_page->name;
476
- $new_opt['id'] = $connect_response->facebook_page->id;
477
- $new_opt['path'] =add_query_arg([
478
- 'page' => $this->plugin_name,
479
- 'disconnect' => $connect_response->facebook_page->id,
480
- ], admin_url('admin.php'));
481
- update_option($this->option_prefix.'active_page_info', $new_opt);
482
- if ($connect_response->facebook_page->active_bot_id) {
483
- set_transient( 'pre_value', true, YEAR_IN_SECONDS );
484
- $custom_settings = $this->getCustomChatSettings($connect_response->facebook_page->remote_id);
485
- $default_setting = $this->default_custom_setting();
486
- foreach ($custom_settings as $key=>$value){
487
- if ($value == '' || !isset($value)){
488
- $custom_options['fb_'.$key] = $default_setting['fb_'.$key];
489
- }else {
490
- $custom_options['fb_'.$key]=$value;
491
- }
492
- }
493
- $ref_cont = $this->getBotRef($connect_response->facebook_page->active_bot_id);
494
- $ref = stristr($ref_cont->test_link, '=');
495
- $ref_value = str_replace("=", "", $ref);
496
- update_option('htcc_fb_ref', $ref_value);
497
- update_option('htcc_fb_js_src', $custom_settings->js_src);
498
- update_option('htcc_custom_options', $custom_options);
499
- $options['fb_sdk_lang'] = $this->getLanguage($connect_response->facebook_page->remote_id);
500
- update_option('htcc_options', $options);
501
- delete_transient( 'done-tab' );
502
- delete_transient( 'current-tab' );
503
- delete_transient( 'cg_notice_off' );
504
- delete_transient( 'lead_notice_off' );
505
- $done_tab = array(
506
- '1'=>"true",
507
- '2'=>"false",
508
- '3'=>"false",
509
- );
510
- set_transient( 'done-tab', $done_tab, YEAR_IN_SECONDS );
511
- set_transient( 'current-tab', '1', YEAR_IN_SECONDS );
512
- $this->refreshSettingsPage();
513
- return true;
514
- }
515
- return true;
516
- }
517
-
518
- } elseif ($connect_response->error_code) {
519
- $this->renderNotice('Error code: ' . $connect_response->error_code);
520
- if (!empty($connect_response->errors)) {
521
- foreach ($connect_response->errors as $error) {
522
- $this->renderNotice('Error: ' . $error);
523
- }
524
- }
525
- } elseif (!empty($connect_response->errors)) {
526
- foreach ($connect_response->errors as $error) {
527
- $this->renderNotice('Error: ' . $error);
528
- }
529
- } else {
530
- $this->renderNotice('API communication error. Unable to connect facebook page.');
531
- }
532
-
533
- }
534
- return false;
535
- }
536
-
537
-
538
- public function AsStateSave($state, $fb_page_id)
539
- {
540
- $args = [
541
- 'timeout' => 10,
542
- 'headers' => [
543
- 'Authorization' => $this->getToken(),
544
- 'Content-Type' => 'application/json',
545
- ],
546
- 'body' => json_encode([
547
- 'enabled' => $state,
548
- 'fb_page_remote_id' => $fb_page_id,
549
- 'src' => $this->getSrc()
550
- ]),
551
- 'method' => 'PUT',
552
- ];
553
- $response = wp_remote_request($this->getApiDomain() . 'api/wordpress_settings/answering_service_v2?v=' . HTCC_VERSION.'.2', $args);
554
- $this->ErrorHandler($response,'AS State Save','');
555
- }
556
-
557
- public function disconnectPage($pageId='')
558
- {
559
- if (!$pageId){
560
- $pageId = filter_input(INPUT_GET, "disconnect", FILTER_SANITIZE_STRING);
561
- }
562
- if ($pageId) {
563
- $args = [
564
- 'timeout' => 10,
565
- 'body' => json_encode([
566
- 'src' => $this->getSrc(),
567
- ]),
568
- 'headers' => [
569
- 'Authorization' => $this->getToken(),
570
- 'Content-Type' => 'application/json; charset=utf-8',
571
- ],
572
- 'method' => 'DELETE',
573
- ];
574
- $response = wp_remote_request($this->getApiDomain() . '/api/facebook_pages/' . $pageId.'?v=' . HTCC_VERSION.'.2', $args);
575
- $content = wp_remote_retrieve_body($response);
576
- $connect_response = json_decode($content);
577
- if (empty($content)) {
578
- $this->active_page = false;
579
- delete_option('htcc_as_options');
580
- delete_option($this->option_prefix . 'page_info');
581
- delete_option($this->option_prefix . 'account_info');
582
- delete_option($this->option_prefix . 'current_subscribe');
583
- delete_option($this->option_prefix . 'message_statistic');
584
- delete_option($this->option_prefix . 'wp_plan');
585
- delete_option($this->option_prefix . 'active_page_info');
586
- delete_option('htcc_fb_js_src');
587
- $this->refreshSettingsPage();
588
-
589
- return true;
590
-
591
- } elseif (isset($response["response"]["code"]) && $response["response"]["code"] == 422) {
592
- $this->renderNotice('The page is not connected!');
593
- } elseif ($connect_response->error_code) {
594
- $this->renderNotice('Error code: ' . $connect_response->error_code);
595
- if (!empty($connect_response->errors)) {
596
- foreach ($connect_response->errors as $error) {
597
- $this->renderNotice('Error: ' . $error);
598
- }
599
- }
600
- } elseif (!empty($connect_response->errors)) {
601
- foreach ($connect_response->errors as $error) {
602
- $this->renderNotice('Error: ' . $error);
603
- }
604
- } else {
605
- $this->renderNotice('API communication error. Unable to disconnect facebook page.');
606
- }
607
- return false;
608
- }
609
- }
610
-
611
-
612
- public function sendUserEmail()
613
- {
614
- if (function_exists('wp_get_current_user')) {
615
- $current_user = wp_get_current_user();
616
- }
617
- if (!empty($current_user->user_email)) {
618
- $user_email = $current_user->user_email;
619
- } else {
620
- $user_email = get_option('admin_email', '');
621
- }
622
-
623
- $args = [
624
- 'timeout' => 10,
625
- 'headers' => [
626
- 'Authorization' => $this->getToken(),
627
- 'Content-Type' => 'application/json',
628
- ],
629
- 'body' => json_encode([
630
- 'user' => [
631
- "wp_email" => $user_email,
632
- ],
633
- 'src' => $this->getSrc(),
634
- ]),
635
- 'method' => 'PUT',
636
- ];
637
-
638
- $response = wp_remote_request($this->getApiDomain() . '/api/user/', $args);
639
- $this->ErrorHandler($response,'User Email','put');
640
- }
641
-
642
- public function getWelcomeMessage($remote_id)
643
- {
644
- $args = [
645
- 'timeout' => 10,
646
- 'headers' => [
647
- 'Authorization' => $this->getToken(),
648
- 'Content-Type' => 'application/json',
649
- ],
650
- 'body' => [
651
- 'src' => $this->getSrc()
652
- ]
653
- ];
654
-
655
- $response = wp_remote_get($this->getApiDomain() . 'api/wordpress_settings/welcome_message?fb_page_remote_id=' . $remote_id . '&v=' . HTCC_VERSION.'.2', $args);
656
- $error = ($this->ErrorHandler($response,'Welcome Message','get'));
657
- if ($error) {
658
- return str_replace('"', '', $error);
659
- }
660
- }
661
-
662
- public function updateWelcomeMessage($new_welcome_message, $fb_page_id)
663
- {
664
- $args = [
665
- 'timeout' => 10,
666
- 'headers' => [
667
- 'Authorization' => $this->getToken(),
668
- 'Content-Type' => 'application/json',
669
- ],
670
- 'body' => json_encode([
671
- 'body' => $new_welcome_message,
672
- 'fb_page_remote_id' => $fb_page_id,
673
- 'src' => $this->getSrc()
674
- ]),
675
- 'method' => 'PUT',
676
- ];
677
- $response = wp_remote_request($this->getApiDomain() . 'api/wordpress_settings/welcome_message?v=' . HTCC_VERSION.'.2', $args);
678
- $this->ErrorHandler($response,'Welcome Message','put');
679
-
680
-
681
- }
682
-
683
- public function updateLanguage($new_language, $fb_page_id)
684
- {
685
- $args = [
686
- 'timeout' => 10,
687
- 'headers' => [
688
- 'Authorization' => $this->getToken(),
689
- 'Content-Type' => 'application/json',
690
- ],
691
- 'body' => json_encode([
692
- 'language' => $new_language,
693
- 'fb_page_remote_id' => $fb_page_id,
694
- 'src' => $this->getSrc()
695
- ]),
696
- 'method' => 'PUT',
697
- ];
698
- $fb_lang = HTCC_Lang::$fb_lang;
699
- if (in_array($new_language, $fb_lang)){
700
- $response = wp_remote_request($this->getApiDomain() . 'api/wordpress_settings/language?v=' . HTCC_VERSION.'.2', $args);
701
- }else {
702
- $this->renderNotice('Incorrect Language Value');
703
- }
704
- $this->ErrorHandler($response,'Language','put');
705
- }
706
-
707
- public function getLanguage($remote_id)
708
- {
709
- $args = [
710
- 'timeout' => 10,
711
- 'headers' => [
712
- 'Authorization' => $this->getToken(),
713
- 'Content-Type' => 'application/json',
714
- ],
715
- 'body' => [
716
- 'src' => $this->getSrc()
717
- ]
718
- ];
719
-
720
- $response = wp_remote_get($this->getApiDomain() . 'api/wordpress_settings/language?fb_page_remote_id=' . $remote_id . '&v=' . HTCC_VERSION.'.2', $args);
721
- $error = ($this->ErrorHandler($response,'Language','get'));
722
- if ($error) {
723
- return str_replace('"', '', $error);
724
- }
725
- }
726
-
727
- public function getWidgets($remote_id)
728
- {
729
- $args = [
730
- 'timeout' => 10,
731
- 'headers' => [
732
- 'Authorization' => $this->getToken(),
733
- 'Content-Type' => 'application/json',
734
- ],
735
- 'body' => [
736
- 'src' => $this->getSrc()
737
- ]
738
- ];
739
- $response = wp_remote_get($this->getApiDomain() . 'api/wordpress_settings/answering_service_v2?fb_page_remote_id=' . $remote_id . '&v=' . HTCC_VERSION.'.2', $args);
740
- $error = $this->ErrorHandler($response,'Widget','get');
741
- if ($error) {
742
- $connect_response = json_decode($error);
743
- if (isset($connect_response->answering_service_mm_only_mode)||isset($connect_response->answering_service_not_available)){
744
- return [];
745
- }
746
- $value_new['fb_answer'] = $connect_response->questions;
747
- $i=1;
748
- foreach ($connect_response->qualifiers as $key=>$value){
749
- foreach ($value as $k=>$v){
750
- $y=1;
751
- if ($k == 'question'){
752
- $value_new['lq_'.$i]['question'] = $v;
753
- }else {
754
- foreach ($v as $kr=>$an){
755
- foreach ($an as $t=>$a){
756
- if ($t == 'answer'){
757
- $value_new['lq_'.$i]['answers'.$y]['answer'] = $a;
758
- }else {
759
- $value_new['lq_'.$i]['answers'.$y]['qualified'] = $a;
760
- }
761
- }
762
- $y++;
763
- }
764
- }
765
- }
766
- $i++;
767
- }
768
- $value_new['notify_mode'] = $connect_response->notify_mode;
769
- $value_new['fb_welcome_message'] = $this->getWelcomeMessage($remote_id);
770
- $value_new['thank_message'] = $connect_response->thank_you_message;
771
- $value_new['email'] = $connect_response->notify_email;
772
- $value_new['fb_as_state'] = $connect_response->enabled;
773
- return $value_new;
774
- } else {
775
- return false;
776
- }
777
- }
778
-
779
- public function getTriggers($remote_id)
780
- {
781
- $args = [
782
- 'timeout' => 10,
783
- 'headers' => [
784
- 'Authorization' => $this->getToken(),
785
- 'Content-Type' => 'application/json',
786
- ],
787
- 'body' => [
788
- 'src' => $this->getSrc()
789
- ]
790
- ];
791
-
792
- $response = wp_remote_get($this->getApiDomain() . 'api/wordpress_settings/triggers?fb_page_remote_id=' . $remote_id . '&v=' . HTCC_VERSION.'.2', $args);
793
- $error = $this->ErrorHandler($response,'Q&A','get');
794
- if ($error) {
795
- $connect_response = json_decode($error);
796
- $i=1;
797
- $value_new['advanced_triggers_present'] = $connect_response->advanced_triggers_present;
798
- foreach ($connect_response->triggers as $key=>$value){
799
- foreach ($value as $k=>$v){
800
- if ($k == 'bot_responses'){
801
- $value_new['qa_'.$i][$k] = $v[0];
802
- }else {
803
- foreach ($v as $kr=>$an){
804
- $value_new['qa_'.$i][$k][]=$an;
805
- }
806
- }
807
- }
808
- $i++;
809
- }
810
- return $value_new;
811
- } else {
812
- return false;
813
- }
814
- }
815
-
816
-
817
-
818
- public function setWidgets($options,$page_id,$update)
819
- {
820
- $var = true;
821
- $trig = true;
822
-
823
- if (!$update){
824
- $triggers = $this->getTriggers($page_id);
825
- $data_widget = $this->getWidgets($page_id);
826
- $this->as_mm = empty($data_widget)?true:false;
827
- $current_welcome_message = $this->getWelcomeMessage($page_id);
828
- $pre_val = get_transient( 'pre_value' );
829
- if (count($options,COUNT_NORMAL)==1 && $options['fb_welcome_message']||!$options) {
830
- if ($this->as_mm == false) {
831
- $data_widget = array_merge($data_widget, $triggers);
832
- foreach ($data_widget as $key=>$value){
833
- if (strpos($key, 'lq_')!==false){
834
- $var=false;
835
- }
836
- }
837
-
838
- if ($var){
839
- $data_widget['lq_1']['question'] = 'What is your budget?';
840
- $data_widget['lq_1']['answers1']['answer'] = '$0';
841
- $data_widget['lq_1']['answers2']['answer'] = '$1-$99';
842
- $data_widget['lq_1']['answers3']['answer'] = '$100-$500';
843
- $data_widget['lq_1']['answers4']['answer'] = '$500+';
844
- $data_widget['lq_1']['answers4']['qualified'] = '1';
845
- }
846
- if ($pre_val==true) {
847
- foreach ($data_widget as $k => $v) {
848
- if (strpos($k, 'qa_') !== false) {
849
- $trig = false;
850
- }
851
- }
852
- if ($trig) {
853
- $data_widget['qa_1']['phrases'] = '';
854
- $data_widget['qa_1']['bot_responses'] = '';
855
- }
856
- }
857
- $data_widget['answering_service_mm_only_mode'] = false;
858
- $data_widget['fb_welcome_message'] = $current_welcome_message;
859
- $data_widget['advanced_triggers_present'] = $triggers['advanced_triggers_present'];
860
- $data_widget['fb_as_state'] = 0;
861
- update_option('htcc_as_options', $data_widget);
862
- }else {
863
- if ($options){
864
- foreach ($options as $key => $value) {
865
- if (strpos($key, 'qa_') !== false) {
866
- if (!empty($value['phrases']) && !empty($value['bot_responses'])) {
867
- unset($options[$key]);
868
- }
869
- }
870
- }
871
- $data_widget = array_merge($options, $triggers);
872
- if (!$options) {
873
- foreach ($data_widget as $k => $v) {
874
- if (strpos($k, 'qa_') !== false) {
875
- $trig = false;
876
- }
877
- }
878
- if ($trig) {
879
- $data_widget['qa_1']['phrases'] = '';
880
- $data_widget['qa_1']['bot_responses'] = '';
881
- }
882
- }
883
- $data_widget['fb_welcome_message'] = $current_welcome_message;
884
- $data_widget['answering_service_mm_only_mode'] = true;
885
- $data_widget['advanced_triggers_present'] = $triggers['advanced_triggers_present'];
886
- update_option('htcc_as_options', $data_widget);
887
- }
888
- }
889
- }
890
- if ($this->as_mm == false) {
891
- $data_widget = array_merge($data_widget, $triggers);
892
- $pre_val = get_transient( 'pre_value' );
893
- foreach ($data_widget as $key=>$value){
894
- if (strpos($key, 'lq_')!==false){
895
- $var=false;
896
- }
897
- }
898
-
899
- if ($var){
900
- $data_widget['lq_1']['question'] = 'What is your budget?';
901
- $data_widget['lq_1']['answers1']['answer'] = '$0';
902
- $data_widget['lq_1']['answers2']['answer'] = '$1-$99';
903
- $data_widget['lq_1']['answers3']['answer'] = '$100-$500';
904
- $data_widget['lq_1']['answers4']['answer'] = '$500+';
905
- $data_widget['lq_1']['answers4']['qualified'] = '1';
906
- }
907
- if ($pre_val==true) {
908
- foreach ($data_widget as $k => $v) {
909
- if (strpos($k, 'qa_') !== false) {
910
- $trig = false;
911
- }
912
- }
913
- if ($trig) {
914
- $data_widget['qa_1']['phrases'] = '';
915
- $data_widget['qa_1']['bot_responses'] = '';
916
- }
917
- }
918
- $data_widget['answering_service_mm_only_mode'] = false;
919
- $data_widget['fb_welcome_message'] = $current_welcome_message;
920
- $data_widget['advanced_triggers_present'] = $triggers['advanced_triggers_present'];
921
- update_option('htcc_as_options', $data_widget);
922
- }else {
923
- if ($options){
924
- foreach ($options as $key => $value) {
925
- if (strpos($key, 'qa_') !== false) {
926
- if (!empty($value['phrases']) && !empty($value['bot_responses'])) {
927
- unset($options[$key]);
928
- }
929
- }
930
- }
931
- $data_widget['answering_service_mm_only_mode'] = empty($data_widget) ? true : '';
932
- $data_widget = array_merge($options, $triggers);
933
- }
934
- if (!$options) {
935
- foreach ($data_widget as $k => $v) {
936
- if (strpos($k, 'qa_') !== false) {
937
- $trig = false;
938
- }
939
- }
940
- if ($trig) {
941
- $data_widget['qa_1']['phrases'] = '';
942
- $data_widget['qa_1']['bot_responses'] = '';
943
- }
944
- }
945
- $data_widget['answering_service_mm_only_mode'] = true;
946
- $data_widget['advanced_triggers_present'] = $triggers['advanced_triggers_present'];
947
- update_option('htcc_as_options', $data_widget);
948
- }
949
- }else{
950
- $data_widget = $this->getWidgets($page_id);
951
- $triggers = $this->getTriggers($page_id);
952
- $this->as_mm = empty($data_widget)?true:false;
953
- $state=empty($data_widget)?true:false;
954
- if ($state==false){
955
- if ($options['fb_as_state']== null || $options['fb_as_state']==0){
956
- $value_new['enabled'] = false;
957
- } else {
958
- $value_new['enabled'] = true;
959
- }
960
-
961
- $value_new['questions'] = $options['fb_answer'];
962
- foreach ($options as $key=>$value){
963
- if (strpos($key, 'lq_')!==false){
964
- $answer = array();
965
- $question = '';
966
- foreach ($value as $k=>$v){
967
- if ($k=='question'){
968
- $question = $v;
969
- }else{
970
- if(isset($v['answer'])){
971
- if (!ctype_space($v['answer'])){
972
- $answer[]=array('answer'=>$v['answer'],'qualified'=> (bool)$v['qualified']);
973
- }
974
- }
975
- }
976
- }
977
- $value_new["qualifiers"][]=[
978
- "question"=>$question,
979
- "answers"=>$answer
980
- ];
981
-
982
- }
983
- }
984
- if (!isset($value_new["qualifiers"])){
985
- $value_new["qualifiers"]=[];
986
- }
987
- $value_new["notify_email"]= $options["email"];
988
- $value_new["notify_mode"]= $options['notify_mode'];
989
- $value_new['thank_you_message'] = $options['thank_message'];
990
- $value_new['fb_page_remote_id'] = $this->getActiveRemotePageId();
991
- $this->updateWelcomeMessage($options['fb_welcome_message'],$page_id);
992
- $this->updateWidgets($value_new);
993
-
994
- }
995
- foreach ($options as $key=>$value){
996
- if (strpos($key, 'qa_')!==false){
997
- $phrases = array();
998
- $bot_responses = array();
999
- foreach ($value as $k=>$v){
1000
- if ($k=='bot_responses'&&!empty($v)){
1001
- $bot_responses[] = $v;
1002
- }else{
1003
- if(!empty($v)){
1004
- if (!ctype_space($v)){
1005
- $phrases=$v;
1006
- }
1007
- }
1008
- }
1009
-
1010
- }
1011
- $trigger_new["triggers"][]=[
1012
- "phrases"=>$phrases,
1013
- "bot_responses"=>$bot_responses
1014
- ];
1015
- }
1016
- }
1017
- $options['advanced_triggers_present'] = $triggers['advanced_triggers_present'];
1018
- update_option('htcc_as_options', $options);
1019
- $trigger_new['fb_page_remote_id'] = $this->getActiveRemotePageId();
1020
- $this->updateTriggers($trigger_new);
1021
- }
1022
- return true;
1023
-
1024
- }
1025
-
1026
- public function updateTriggers($object)
1027
- {
1028
- $args = [
1029
- 'timeout' => 10,
1030
- 'headers' => [
1031
- 'Authorization' => $this->getToken(),
1032
- 'Content-Type' => 'application/json',
1033
- ],
1034
- 'body' => json_encode($object),
1035
- 'method' => 'PUT',
1036
- ];
1037
- $response = wp_remote_request($this->getApiDomain() . 'api/wordpress_settings/triggers', $args);
1038
- $error = ($this->ErrorHandler($response,'Triggers','put'));
1039
- if ($error) {
1040
- return $response;
1041
- }
1042
- }
1043
-
1044
- public function updateWidgets($object)
1045
- {
1046
- $args = [
1047
- 'timeout' => 10,
1048
- 'headers' => [
1049
- 'Authorization' => $this->getToken(),
1050
- 'Content-Type' => 'application/json',
1051
- ],
1052
- 'body' => json_encode($object),
1053
-
1054
- 'method' => 'PUT',
1055
- ];
1056
- $response = wp_remote_request($this->getApiDomain() . 'api/wordpress_settings/answering_service_v2', $args);
1057
- $error = ($this->ErrorHandler($response,'Widget','put'));
1058
- if ($error) {
1059
- return $error;
1060
- }
1061
- }
1062
-
1063
- public function getBotRef($bot_id)
1064
- {
1065
- $args = [
1066
- 'timeout' => 10,
1067
- 'headers' => [
1068
- 'Authorization' => $this->getToken(),
1069
- 'Content-Type' => 'application/json; charset=utf-8',
1070
- ],
1071
- 'body' => [
1072
- 'src' => $this->getSrc()
1073
- ],
1074
- 'method' => 'GET',
1075
- ];
1076
- $response = wp_remote_post($this->getApiDomain() . 'api/bots/' . $bot_id, $args);
1077
- $error = ($this->ErrorHandler($response,'Bot Ref','get'));
1078
- if ($error) {
1079
- $connect_response = json_decode($error);
1080
- return $connect_response;
1081
- }
1082
- }
1083
-
1084
-
1085
- public function getEnv()
1086
- {
1087
-
1088
- $args = [
1089
- 'timeout' => 10,
1090
- 'headers' => [
1091
- 'Authorization' => $this->getToken(),
1092
- ],
1093
- ];
1094
- $response = wp_remote_get($this->getApiDomain() . '/api/env/', $args);
1095
- $content = wp_remote_retrieve_body($response);
1096
- if (!empty($content)) {
1097
-
1098
- $env = json_decode($content);
1099
-
1100
- if (json_last_error() !== JSON_ERROR_NONE) {
1101
- $this->renderNotice('API communication error. Please try again later.');
1102
- } elseif (!empty($env->errors)) {
1103
- $this->renderNotice('API communication error. Please try again later.');
1104
- } else {
1105
- $this->env = $env;
1106
-
1107
- $options = get_option('htcc_options', array());
1108
- $options['fb_app_id'] = $this->env->fb_app_id;
1109
- update_option('htcc_options', $options);
1110
-
1111
- $this->setEnvironment($env);
1112
-
1113
- return $env;
1114
- }
1115
- }
1116
-
1117
- return false;
1118
- }
1119
-
1120
- public function renderNotice($text)
1121
- {
1122
- $setting_page_args = [
1123
- 'text' => $text,
1124
- ];
1125
- HT_CC::view('ht-cc-admin-fb-button-notice', $setting_page_args);
1126
- }
1127
- public function renderError($text)
1128
- {
1129
- $setting_page_args = [
1130
- 'text' => $text,
1131
- ];
1132
- HT_CC::view('ht-cc-admin-fb-button-error', $setting_page_args);
1133
- }
1134
-
1135
- public function settingSaveError($type)
1136
- {
1137
- $text = "";
1138
- switch ($type){
1139
- case "AS":
1140
- $text = "Changes to the Answering Service fields will not be saved if you leave the fields blank. Please include non-empty field if you wish to make a change.";
1141
- break;
1142
- case "email":
1143
- $text = "Validation failed: Invalid recipient email address(es)";
1144
- break;
1145
- case "welcome_message":
1146
- $text = "Changes to the Welcome Message field will not be saved if you leave the fields blank. Please include non-empty field if you wish to make a change";
1147
- break;
1148
- case "delay_length":
1149
- $text = "Greeting Dialog Delay shouldn't exceed 9 digits.";
1150
- break;
1151
- case "delay_0":
1152
- $text = "Greeting Dialog Delay cannot be lower than 1 second";
1153
- break;
1154
- }
1155
- add_settings_error(
1156
- 'htcc_setting_group', // setting name
1157
- '', //
1158
- __("$text", 'wp-chatbot'),
1159
- 'error' // type of notify
1160
- );
1161
- }
1162
- public function debug()
1163
- {
1164
- $options = [];
1165
- $options['token'] = get_option($this->option_prefix . 'token');
1166
- $options['environment'] = get_option($this->option_prefix . 'environment');
1167
- $options['htcc_options'] = get_option('htcc_options');
1168
- return var_dump($options);
1169
- }
1170
-
1171
- private function setContacts($data)
1172
- {
1173
- $this->contacts = $data;
1174
- }
1175
-
1176
- public function getContacts()
1177
- {
1178
- if (empty($this->contacts)) {
1179
- $this->getData();
1180
- }
1181
- return $this->contacts;
1182
- }
1183
-
1184
- private function setPagination($data)
1185
- {
1186
- $this->pagination = $data;
1187
- }
1188
-
1189
- public function getPagination()
1190
- {
1191
- if (empty($this->pagination)) {
1192
- $this->getData();
1193
- }
1194
- return $this->pagination;
1195
- }
1196
-
1197
- private function getArgs()
1198
- {
1199
- $get = [
1200
- 'page' => 1,
1201
- 'pre_page' => 25,
1202
- 'sort_column' => 'created_at',
1203
- 'sort_direction' => 'desc',
1204
- ];
1205
-
1206
- $paged = filter_input(INPUT_GET, "paged", FILTER_SANITIZE_STRING);
1207
- if (!empty($paged)) {
1208
- $get['page'] = $paged;
1209
- }
1210
-
1211
- $orderby = filter_input(INPUT_GET, "orderby", FILTER_SANITIZE_STRING);
1212
- if (!empty($orderby)) {
1213
- if($orderby=='name'){
1214
- $get['sort_column'] = 'first_name';
1215
- }else{
1216
- $get['sort_column'] = $orderby;
1217
- }
1218
- }
1219
-
1220
- $order = filter_input(INPUT_GET, "order", FILTER_SANITIZE_STRING);
1221
- if (!empty($order)) {
1222
- $get['sort_direction'] = $order;
1223
- }
1224
-
1225
- return $get;
1226
-
1227
- }
1228
-
1229
-
1230
- public function updateCustomChatSettings($new_value, $fb_page_id)
1231
- {
1232
- $args = [
1233
- 'timeout' => 10,
1234
- 'headers' => [
1235
- 'Authorization' => $this->getToken(),
1236
- 'Content-Type' => 'application/json',
1237
- ],
1238
- 'body' => json_encode(
1239
- $new_value
1240
- ),
1241
- 'method' => 'PUT',
1242
- ];
1243
- $response = wp_remote_request($this->getApiDomain() . '/api/wordpress_settings/customer_chat?fb_page_remote_id=' . $fb_page_id . '&v=' . HTCC_VERSION.'.2', $args);
1244
- $error = ($this->ErrorHandler($response,"custom settings",'put'));
1245
-
1246
- }
1247
-
1248
- public function getCustomChatSettings($remote_id)
1249
- {
1250
- $args = [
1251
- 'timeout' => 10,
1252
- 'headers' => [
1253
- 'Authorization' => $this->getToken(),
1254
- 'Content-Type' => 'application/json',
1255
- ],'method' => 'GET',
1256
- ];
1257
-
1258
- $response = wp_remote_get($this->getApiDomain() . 'api/wordpress_settings/customer_chat?fb_page_remote_id=' . $remote_id . '&v=' . HTCC_VERSION.'.2', $args);
1259
- $error = ($this->ErrorHandler($response,"custom settings",'get'));
1260
- if ($error) {
1261
- return json_decode($error);
1262
- }
1263
- }
1264
-
1265
- public function setCustomChatSettings($page_id,$options,$update){
1266
- $custom_settings = $this->getCustomChatSettings($page_id);
1267
- if (!$update){
1268
- if (!$options){
1269
- $custom_settings = $this->getCustomChatSettings($page_id);
1270
- if (!$custom_settings) {
1271
- return false;
1272
- }
1273
- $default_setting = $this->default_custom_setting();
1274
- foreach ($custom_settings as $key=>$value){
1275
- if ($value == '' || !isset($value)){
1276
- $custom_options['fb_'.$key] = $default_setting['fb_'.$key];
1277
- }else {
1278
- $custom_options['fb_'.$key]=$value;
1279
- }
1280
- }
1281
- update_option('htcc_fb_js_src', $custom_settings->js_src);
1282
- update_option('htcc_custom_options', $custom_options);
1283
- }
1284
- }
1285
- if (!$custom_settings) {
1286
- return false;
1287
- }
1288
- foreach ($custom_settings as $key=>$value){
1289
- switch ($key){
1290
- case 'js_src':
1291
- break;
1292
- case 'hide_mobile':
1293
- $options['fb_'.$key] = false;
1294
- break;
1295
- case 'hide_desktop':
1296
- $options['fb_'.$key] = false;
1297
- break;
1298
- default:
1299
- $new_value[$key] = !isset($options['fb_'.$key])?'':$options['fb_'.$key];
1300
- break;
1301
- }
1302
- }
1303
- if (!empty($new_value)){
1304
- $this->updateCustomChatSettings($new_value,$page_id);
1305
- }
1306
- return true;
1307
- }
1308
-
1309
- private function ErrorHandler($response,$point,$type){
1310
- $content = wp_remote_retrieve_body($response);
1311
- $connect_response = json_decode($content);
1312
- $code = wp_remote_retrieve_response_code( $response );
1313
- $type = "<style>#setting-error-settings_updated{display: none;}</style>";
1314
- if (isset($code) && $code == 200) {
1315
- $type ='';
1316
- return $content;
1317
- } elseif ($connect_response->error_code) {
1318
- $this->renderError('Error code: ' . $connect_response->error_code);
1319
- if (!empty($connect_response->errors)) {
1320
- foreach ($connect_response->errors as $error) {
1321
- $this->renderError('Error: ' . $error);
1322
- }
1323
- return $error;
1324
- }
1325
- } elseif (!empty($connect_response->errors)) {
1326
- foreach ($connect_response->errors as $error) {
1327
- if ($code==422||$code==401||$code==404){
1328
- if ($point!="Welcome Message") {
1329
- delete_option('mobilemonkey_active_page_info');
1330
- break;
1331
- }
1332
- }
1333
- }
1334
- }elseif ($code==404){
1335
- delete_option('mobilemonkey_active_page_info');
1336
- return false;
1337
- } else {
1338
- if ($point=="Welcome Message" && $code==422){
1339
- return true;
1340
- }else {
1341
- $this->renderError('API communication error. Unable to '.$type .' ' .$point.'');
1342
- }
1343
- }
1344
- echo $type;
1345
- }
1346
- public function csv(){
1347
- $contacts = $this->getContacts();
1348
- $header_row = array(
1349
- 'Name',
1350
- 'Email',
1351
- 'Gender',
1352
- 'Locale',
1353
- 'Time Zone',
1354
- 'Created At'
1355
- );
1356
- $data_rows = array();
1357
- foreach ( $contacts as $contact )
1358
- {
1359
- $row = array(
1360
- $contact->first_name.$contact->last_name,
1361
- $contact->email,
1362
- $contact->gender,
1363
- $contact->locale,
1364
- $contact->timezone,
1365
- $contact->created_at
1366
- );
1367
- $data_rows[] = $row;
1368
- }
1369
- header('Content-Description: File Transfer');
1370
- header('Content-Type: application/csv');
1371
- header('Content-Disposition: attachment; filename=contact.csv');
1372
- header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
1373
- $fh = fopen( 'php://output', 'w' );
1374
- fputcsv( $fh, $header_row );
1375
- foreach ( $data_rows as $data_row ) {
1376
- fputcsv( $fh, $data_row );
1377
- }
1378
- fclose($fh);
1379
- die();
1380
- }
1381
- private function getData()
1382
- {
1383
- $get = $this->getArgs();
1384
-
1385
- $args = [
1386
- 'timeout' => 10,
1387
- 'headers' => [
1388
- 'Authorization' => $this->getToken(),
1389
- ],
1390
- ];
1391
-
1392
- $activePageId = $this->getActiveRemotePageId();
1393
-
1394
- $response = wp_remote_get($this->getApiDomain() . 'api/wordpress/contacts?remote_page_id=' . $activePageId . '&page=' . $get['page'] . '&per_page=' . $get['pre_page'] . '&sort_column=' . $get['sort_column'] . '&sort_direction=' . $get['sort_direction'] . '&src=' . $this->getSrc(), $args);
1395
- $content = wp_remote_retrieve_body($response);
1396
- if (!empty($content)) {
1397
- $contacts = json_decode($content);
1398
- $this->setContacts($contacts->contacts);
1399
- $this->setPagination($contacts->pagination);
1400
- }
1401
- }
1402
- }
 
1
+ <?php
2
+
3
+ class MobileMonkeyApi
4
+ {
5
+
6
+ private $option_prefix = 'mobilemonkey_';
7
+ private $api_domain = 'https://api.mobilemonkey.com/';
8
+ private $src = 'wordpress';
9
+ private $pages = [];
10
+ private $active_page = false;
11
+ private $env = true;
12
+ private $pagination;
13
+ private $contacts;
14
+ private $plugin_name = 'wp-chatbot';
15
+ private $page_info;
16
+ private $bot_id;
17
+ public $available_company;
18
+ public $as_mm = false;
19
+ public $notice = false;
20
+ public $app_domain = 'https://app.mobilemonkey.com/';
21
+
22
+ private function getApiDomain()
23
+ {
24
+ return $this->api_domain;
25
+ }
26
+
27
+ private function getSrc()
28
+ {
29
+ return $this->src;
30
+ }
31
+
32
+ public function getOptionPrefix()
33
+ {
34
+ return $this->option_prefix;
35
+ }
36
+
37
+ private function setToken()
38
+ {
39
+ $token = filter_input(INPUT_GET, "auth_token", FILTER_SANITIZE_STRING);
40
+ if ($token) {
41
+ update_option($this->option_prefix . 'token', $token);
42
+ return true;
43
+ }
44
+ return false;
45
+ }
46
+
47
+ private function getToken()
48
+ {
49
+ return get_option($this->option_prefix . 'token');
50
+ }
51
+
52
+ private function setCompanyId()
53
+ {
54
+ $company_id = filter_input(INPUT_GET, "company_id", FILTER_SANITIZE_STRING);
55
+ if ($company_id) {
56
+ update_option($this->option_prefix . 'company_id', $company_id);
57
+ return true;
58
+ }
59
+ return false;
60
+ }
61
+
62
+ public function getCompanyId($connection_page_id)
63
+ {
64
+
65
+ if ($connection_page_id) {
66
+ $pages = $this->pages;
67
+ foreach ($pages as $page) {
68
+ if ($page['id'] && $connection_page_id == $page['remote_id']) {
69
+ if (in_array($page['company_id'], $this->available_company)){
70
+ return $page['company_id'];
71
+ }else return false;
72
+ }
73
+ }
74
+ return get_option($this->option_prefix . 'company_id');
75
+ }
76
+ }
77
+ public function getActiveRemotePageId(){
78
+ $data = get_option($this->option_prefix . 'active_page_info');
79
+ return $data['remote_id'];
80
+ }
81
+
82
+
83
+ private function getInternalPageId($connection_page_id)
84
+ {
85
+
86
+ if ($connection_page_id) {
87
+
88
+ $pages = $this->pages;
89
+ foreach ($pages as $page) {
90
+ if ($page['id'] && $connection_page_id == $page['remote_id']) {
91
+ return $page['id'];
92
+ }
93
+ }
94
+ return get_option($this->option_prefix . 'fb_internal_page_id');
95
+ }
96
+ }
97
+
98
+
99
+ public function getActiveBotId()
100
+ {
101
+ $data = get_option($this->option_prefix . 'active_page_info');
102
+ return $data['bot_id'];
103
+ }
104
+
105
+
106
+ public function getActivePageId()
107
+ {
108
+ $data = get_option($this->option_prefix . 'active_page_info');
109
+ return $data['id'];
110
+ }
111
+
112
+ public function getAvailableCompany(){
113
+ $args = [
114
+ 'timeout' => 10,
115
+ 'headers' => [
116
+ 'Authorization' => $this->getToken(),
117
+ 'Content-Type' => 'application/json; charset=utf-8',
118
+ ],
119
+ 'method' => 'GET',
120
+ ];
121
+ $response = wp_remote_post($this->getApiDomain() . 'api/wordpress_settings/my_company_ids?v=' . HTCC_VERSION.'.2', $args);
122
+ $error = $this->ErrorHandler($response,'Available Company','get');
123
+ if ($error) {
124
+ $connect_response = json_decode($error);
125
+ return $connect_response;
126
+ }
127
+ }
128
+
129
+ public function setAvailableCompany(){
130
+ $company = $this->getAvailableCompany();
131
+ update_option($this->option_prefix . 'available_company', $company);
132
+ $this->available_company = $company;
133
+ }
134
+
135
+ public function getPages()
136
+ {
137
+ $args = [
138
+ 'timeout' => 30,
139
+ 'headers' => [
140
+ 'Authorization' => $this->getToken()
141
+ ],
142
+ 'body' =>[
143
+ 'src' => $this->getSrc()
144
+ ]
145
+ ];
146
+ $pagesObj = NULL;
147
+ $pages = [];
148
+ $response = wp_remote_get($this->getApiDomain() . 'api/facebook_pages/available_options?src=' . $this->getSrc().'&limit=150&v=' . HTCC_VERSION.'.3', $args);
149
+ $content = wp_remote_retrieve_body($response);
150
+ if (!empty($content)) {
151
+ $pagesObj = json_decode($content);
152
+
153
+ if (empty($pagesObj->errors)) {
154
+ if(is_array($pagesObj->data)) {
155
+ foreach ($pagesObj->data as $page) {
156
+ $p = [
157
+ 'name' => $page->name,
158
+ 'remote_id' => $page->remote_id,
159
+ 'id' => $page->facebook_page_id,
160
+ 'bot_id' => $page->bot_id,
161
+ 'bot_kind' => $page->bot_kind,
162
+ 'company_id' => $page->company_id,
163
+ 'path' => add_query_arg([
164
+ 'page' => $this->plugin_name,
165
+ 'connect' => $page->remote_id,
166
+ 'page_name' => $page->name
167
+ ], admin_url('admin.php')),
168
+ ];
169
+
170
+ $pages[] = $p;
171
+ }
172
+ }
173
+ }
174
+ }
175
+ $this->pages = $pages;
176
+ return $pages;
177
+ }
178
+
179
+ public function getActivePage($reset = false)
180
+ {
181
+
182
+ if (!$reset && !empty($this->active_page)) {
183
+ return $this->active_page;
184
+ }
185
+
186
+ $actpage = get_option("mobilemonkey_active_page_info");
187
+ if ($actpage){
188
+ $this->active_page = $actpage;
189
+ return $actpage;
190
+ }else
191
+ return false;
192
+ }
193
+
194
+
195
+ public function getSubscribeInfo()
196
+ {
197
+ $args = [
198
+ 'timeout' => 10,
199
+ 'headers' => [
200
+ 'Authorization' => $this->getToken(),
201
+ 'Content-Type' => 'application/json; charset=utf-8',
202
+ ],
203
+ 'method' => 'GET',
204
+ ];
205
+ $response = wp_remote_post($this->getApiDomain() . 'api/wordpress/subscriptions/for_page?facebook_page_id=' . $this->getActiveRemotePageId().'&v=' . HTCC_VERSION.'.2', $args);
206
+ $error = $this->ErrorHandler($response,'Page Subscribe Info','get');
207
+ if ($error) {
208
+ $connect_response = json_decode($error);
209
+ $this->setAccountInfo($connect_response->account);
210
+ $this->setCurrentSubscription($connect_response->subscription);
211
+ $this->setWpPlan($connect_response->plan);
212
+ $this->setPageInfo($connect_response);
213
+ $this->setMessageStatistic($connect_response->current_outgoing_messages_statistic);
214
+ }
215
+ }
216
+
217
+ public function isCommentGuard(){
218
+ $args = [
219
+ 'timeout' => 10,
220
+ 'headers' => [
221
+ 'Authorization' => $this->getToken(),
222
+ 'Content-Type' => 'application/json; charset=utf-8',
223
+ ],
224
+ 'method' => 'GET',
225
+ ];
226
+ $bot_id = $this->getActiveBotId();
227
+ if ($bot_id){
228
+ $response = wp_remote_post($this->getApiDomain() . 'api/bots/'.$bot_id.'/start_bots?page=1&per_page=25&kind=comment_guard&v=' . HTCC_VERSION.'.2', $args);
229
+ $content = wp_remote_retrieve_body($response);
230
+ if ($content){
231
+ $data = json_decode($content);
232
+ if ($data->start_bots){
233
+ return true;
234
+ }
235
+ else return false;
236
+ }
237
+ }
238
+ }
239
+
240
+ public function setPageInfo($info){
241
+ $data = [
242
+ 'pageName'=> $info->name,
243
+ 'connected_at'=> $info->connected_at,
244
+ 'is_wp_subscribe'=> $info->is_wp_subscription,
245
+ ];
246
+ $this->page_info = $data;
247
+ update_option($this->option_prefix . 'page_info', $data);
248
+ }
249
+
250
+ public function getPageInfo(){
251
+ return get_option($this->option_prefix . 'page_info');
252
+ }
253
+
254
+ public function setAccountInfo($account){
255
+ update_option($this->option_prefix . 'account_info', $account);
256
+ }
257
+ /**
258
+ * @return object
259
+ */
260
+ public function getAccountInfo(){
261
+ return get_option($this->option_prefix . 'account_info');
262
+ }
263
+
264
+ public function setMessageStatistic($account){
265
+ update_option($this->option_prefix . 'message_statistic', $account);
266
+ }
267
+ /**
268
+ * @return object
269
+ */
270
+ public function getMessageStatistic(){
271
+ return get_option($this->option_prefix . 'message_statistic');
272
+ }
273
+
274
+ public function setCurrentSubscription($subscribe){
275
+ update_option($this->option_prefix . 'current_subscribe', $subscribe);
276
+ }
277
+ /**
278
+ * @return object
279
+ */
280
+ public function getCurrentSubscription(){
281
+ return get_option($this->option_prefix . 'current_subscribe');
282
+ }
283
+
284
+ public function setWpPlan($plan){
285
+ update_option($this->option_prefix . 'wp_plan', $plan);
286
+ }
287
+ /**
288
+ * @return object
289
+ */
290
+ public function getWpPlan(){
291
+ return get_option($this->option_prefix . 'wp_plan');
292
+ }
293
+
294
+
295
+ private function default_custom_setting(){
296
+ $data = array();
297
+ $data['fb_logged_in_greeting'] = 'Hi! How can we help you?';
298
+ $data['fb_logged_out_greeting'] = 'Hi! We\'re here to answer any questions you may have';
299
+ $data['fb_color'] = '#0084FF';
300
+ $data['fb_greeting_dialog_display'] = 'show';
301
+ $data['fb_greeting_dialog_delay'] = 1;
302
+ return($data);
303
+ }
304
+
305
+ public function create_subscribe(){
306
+ $data = $_POST;
307
+ $args = [
308
+ 'timeout' => 10,
309
+ 'headers' => [
310
+ 'Authorization' => $this->getToken(),
311
+ 'Content-Type' => 'application/json; charset=utf-8',
312
+ ],
313
+ 'body' => json_encode([
314
+ 'facebook_page_id'=> $this->getActiveRemotePageId(),
315
+ 'src' => $this->getSrc(),
316
+ ]),
317
+ 'method' => 'POST',
318
+ ];
319
+ if(isset($data['token'])){
320
+ $args['body'] = json_encode([
321
+ 'facebook_page_id'=> $this->getActiveRemotePageId(),
322
+ 'src' => $this->getSrc(),
323
+ 'token' => $data['token']
324
+ ]);
325
+ }
326
+ $response = wp_remote_post($this->getApiDomain() . 'api/wordpress/subscriptions?v=' . HTCC_VERSION.'.2', $args);
327
+ $error = $this->ErrorHandler($response,'Subscribe','create');
328
+ if ($error) {
329
+ $connect_response = json_decode($error);
330
+ $this->setAccountInfo($connect_response->account);
331
+ $this->setCurrentSubscription($connect_response->subscription);
332
+ $this->setWpPlan($connect_response->plan);
333
+ $this->setPageInfo($connect_response);
334
+ $this->setMessageStatistic($connect_response->current_outgoing_messages_statistic);
335
+ wp_send_json_success ($error);
336
+ }
337
+ }
338
+
339
+ public function cancel_subscribe(){
340
+ $args = [
341
+ 'timeout' => 10,
342
+ 'headers' => [
343
+ 'Authorization' => $this->getToken(),
344
+ 'Content-Type' => 'application/json; charset=utf-8',
345
+ ],
346
+ 'body' => json_encode([
347
+ 'facebook_page_id'=> $this->getActiveRemotePageId(),
348
+ 'src' => $this->getSrc(),
349
+ ]),
350
+ 'method' => 'POST',
351
+ ];
352
+ $response = wp_remote_post($this->getApiDomain() . 'api/wordpress/subscriptions/cancel?v=' . HTCC_VERSION.'.2', $args);
353
+ $error = $this->ErrorHandler($response,'Subscribe','Cancel');
354
+ if ($error) {
355
+ $connect_response = json_decode($error);
356
+ $this->setAccountInfo($connect_response->account);
357
+ $this->setCurrentSubscription($connect_response->subscription);
358
+ $this->setWpPlan($connect_response->plan);
359
+ $this->setPageInfo($connect_response);
360
+ $this->setMessageStatistic($connect_response->current_outgoing_messages_statistic);
361
+ wp_send_json_success ($error);
362
+ }
363
+ }
364
+
365
+
366
+ private function setEnvironment($environment)
367
+ {
368
+ update_option($this->option_prefix . 'environment', $environment);
369
+ }
370
+
371
+ public function getEnvironment()
372
+ {
373
+ return get_option($this->option_prefix . 'environment');
374
+ }
375
+
376
+ public function refreshSettingsPage()
377
+ {
378
+ echo "<script type='text/javascript'>
379
+ var path = location.protocol + '//' + location.host + location.pathname + '?page=wp-chatbot';
380
+ window.location = path;
381
+
382
+ </script>";
383
+ }
384
+
385
+ public function connectLink()
386
+ {
387
+ $current_user = wp_get_current_user();
388
+
389
+ if (!empty($current_user->user_email)) {
390
+ $user_email = $current_user->user_email;
391
+ } else {
392
+ $user_email = get_option('admin_email', '');
393
+ }
394
+ return $this->getApiDomain() . 'wordpress/auth?callback="' . add_query_arg(['page' => $this->plugin_name], admin_url('admin.php')) . '"&email=' . $user_email . '&v=' . HTCC_VERSION.'.2';
395
+ }
396
+
397
+ public function connectMobileMonkey()
398
+ {
399
+ if ($this->setToken() && $this->setCompanyId()) {
400
+
401
+ $this->getEnv();
402
+
403
+ $this->sendUserEmail();
404
+
405
+ $this->refreshSettingsPage();
406
+ }
407
+ return $this->getToken();
408
+ }
409
+
410
+ public function logoutMobilemonkey($reset = false)
411
+ {
412
+ $logout = filter_input(INPUT_GET, "logout", FILTER_SANITIZE_STRING);
413
+ if ($logout || $reset) {
414
+ $this->disconnectPage(get_option($this->active_page['page_id']));
415
+ delete_option('htcc_fb_js_src');
416
+ delete_option($this->option_prefix . 'token');
417
+ $this->refreshSettingsPage();
418
+ }
419
+ }
420
+
421
+ public function mmOnlyCheck($page_id)
422
+ {
423
+ $args = [
424
+ 'timeout' => 10,
425
+ 'headers' => [
426
+ 'Authorization' => $this->getToken(),
427
+ 'Content-Type' => 'application/json; charset=utf-8',
428
+ ],
429
+ 'method' => 'GET',
430
+ ];
431
+ $response = wp_remote_post($this->getApiDomain() . 'api/facebook_pages/' . $this->getInternalPageId($page_id).'?v=' . HTCC_VERSION.'.2', $args);
432
+ $error = $this->ErrorHandler($response,'MM Only State','get');
433
+ if ($error) {
434
+ $connect_response = json_decode($error);
435
+ return $connect_response->wordpress_settings->mm_only_mode;
436
+ }
437
+
438
+ }
439
+
440
+
441
+ public function connectPage()
442
+ {
443
+ $pageId = filter_input(INPUT_GET, "connect", FILTER_SANITIZE_STRING);
444
+ $pageName = filter_input(INPUT_GET, "page_name", FILTER_SANITIZE_STRING);
445
+ if ($pageId && $pageName) {
446
+ $this->setAvailableCompany();
447
+ if (!$this->getCompanyId($pageId)){
448
+ $this->renderError('This Facebook page has already been connected in MobileMonkey to a company that you don\'t have access to. Please contact support@mobilemonkey.com for more information on how to resolve this issue.');
449
+ return false;
450
+ }
451
+ $args = [
452
+ 'timeout' => 10,
453
+ 'body' => json_encode([
454
+ 'remote_id' => $pageId,
455
+ 'company_id' => $this->getCompanyId($pageId),
456
+ 'name' => $pageName,
457
+ 'base_url' => get_site_url(),
458
+ 'src' => $this->getSrc(),
459
+ ]),
460
+ 'headers' => [
461
+ 'Authorization' => $this->getToken(),
462
+ 'Content-Type' => 'application/json; charset=utf-8',
463
+ ],
464
+ 'method' => 'POST',
465
+ ];
466
+ $response = wp_remote_post($this->getApiDomain() . 'api/facebook_pages?v=' . HTCC_VERSION.'.2', $args);
467
+ $content = wp_remote_retrieve_body($response);
468
+ $connect_response = json_decode($content);
469
+ if (json_last_error() !== JSON_ERROR_NONE) {
470
+ $this->renderNotice('API communication error. Unable to connect facebook page.');
471
+ } elseif (!empty($connect_response->success)) {
472
+ if ($connect_response->facebook_page->remote_id) {
473
+ $options = get_option('htcc_options', array());
474
+ $new_opt['remote_id'] = $connect_response->facebook_page->remote_id;
475
+ $new_opt['bot_id'] = $connect_response->facebook_page->active_bot_id;
476
+ $new_opt['name'] = $connect_response->facebook_page->name;
477
+ $new_opt['id'] = $connect_response->facebook_page->id;
478
+ $new_opt['path'] =add_query_arg([
479
+ 'page' => $this->plugin_name,
480
+ 'disconnect' => $connect_response->facebook_page->id,
481
+ ], admin_url('admin.php'));
482
+ update_option($this->option_prefix.'active_page_info', $new_opt);
483
+ if ($connect_response->facebook_page->active_bot_id) {
484
+ set_transient( 'pre_value', true, YEAR_IN_SECONDS );
485
+ $custom_settings = $this->getCustomChatSettings($connect_response->facebook_page->remote_id);
486
+ $default_setting = $this->default_custom_setting();
487
+ foreach ($custom_settings as $key=>$value){
488
+ if ($value == '' || !isset($value)){
489
+ $custom_options['fb_'.$key] = $default_setting['fb_'.$key];
490
+ }else {
491
+ $custom_options['fb_'.$key]=$value;
492
+ }
493
+ }
494
+ $ref_cont = $this->getBotRef($connect_response->facebook_page->active_bot_id);
495
+ $ref = stristr($ref_cont->test_link, '=');
496
+ $ref_value = str_replace("=", "", $ref);
497
+ update_option('htcc_fb_ref', $ref_value);
498
+ update_option('htcc_fb_js_src', $custom_settings->js_src);
499
+ update_option('htcc_custom_options', $custom_options);
500
+ $options['fb_sdk_lang'] = $this->getLanguage($connect_response->facebook_page->remote_id);
501
+ update_option('htcc_options', $options);
502
+ delete_transient( 'done-tab' );
503
+ delete_transient( 'current-tab' );
504
+ delete_transient( 'cg_notice_off' );
505
+ delete_transient( 'lead_notice_off' );
506
+ $done_tab = array(
507
+ '1'=>"true",
508
+ '2'=>"false",
509
+ '3'=>"false",
510
+ );
511
+ set_transient( 'done-tab', $done_tab, YEAR_IN_SECONDS );
512
+ set_transient( 'current-tab', '1', YEAR_IN_SECONDS );
513
+ $this->refreshSettingsPage();
514
+ return true;
515
+ }
516
+ return true;
517
+ }
518
+
519
+ } elseif ($connect_response->error_code) {
520
+ $this->renderNotice('Error code: ' . $connect_response->error_code);
521
+ if (!empty($connect_response->errors)) {
522
+ foreach ($connect_response->errors as $error) {
523
+ $this->renderNotice('Error: ' . $error);
524
+ }
525
+ }
526
+ } elseif (!empty($connect_response->errors)) {
527
+ foreach ($connect_response->errors as $error) {
528
+ $this->renderNotice('Error: ' . $error);
529
+ }
530
+ } else {
531
+ $this->renderNotice('API communication error. Unable to connect facebook page.');
532
+ }
533
+
534
+ }
535
+ return false;
536
+ }
537
+
538
+
539
+ public function AsStateSave($state, $fb_page_id)
540
+ {
541
+ $args = [
542
+ 'timeout' => 10,
543
+ 'headers' => [
544
+ 'Authorization' => $this->getToken(),
545
+ 'Content-Type' => 'application/json',
546
+ ],
547
+ 'body' => json_encode([
548
+ 'enabled' => $state,
549
+ 'fb_page_remote_id' => $fb_page_id,
550
+ 'src' => $this->getSrc()
551
+ ]),
552
+ 'method' => 'PUT',
553
+ ];
554
+ $response = wp_remote_request($this->getApiDomain() . 'api/wordpress_settings/answering_service_v2?v=' . HTCC_VERSION.'.2', $args);
555
+ $this->ErrorHandler($response,'AS State Save','');
556
+ }
557
+
558
+ public function disconnectPage($pageId='')
559
+ {
560
+ if (!$pageId){
561
+ $pageId = filter_input(INPUT_GET, "disconnect", FILTER_SANITIZE_STRING);
562
+ }
563
+ if ($pageId) {
564
+ $args = [
565
+ 'timeout' => 10,
566
+ 'body' => json_encode([
567
+ 'src' => $this->getSrc(),
568
+ ]),
569
+ 'headers' => [
570
+ 'Authorization' => $this->getToken(),
571
+ 'Content-Type' => 'application/json; charset=utf-8',
572
+ ],
573
+ 'method' => 'DELETE',
574
+ ];
575
+ $response = wp_remote_request($this->getApiDomain() . '/api/facebook_pages/' . $pageId.'?v=' . HTCC_VERSION.'.2', $args);
576
+ $content = wp_remote_retrieve_body($response);
577
+ $connect_response = json_decode($content);
578
+ if (empty($content)) {
579
+ $this->active_page = false;
580
+ delete_option('htcc_as_options');
581
+ delete_option($this->option_prefix . 'page_info');
582
+ delete_option($this->option_prefix . 'account_info');
583
+ delete_option($this->option_prefix . 'current_subscribe');
584
+ delete_option($this->option_prefix . 'message_statistic');
585
+ delete_option($this->option_prefix . 'wp_plan');
586
+ delete_option($this->option_prefix . 'active_page_info');
587
+ delete_option('htcc_fb_js_src');
588
+ $this->refreshSettingsPage();
589
+
590
+ return true;
591
+
592
+ } elseif (isset($response["response"]["code"]) && $response["response"]["code"] == 422) {
593
+ $this->renderNotice('The page is not connected!');
594
+ } elseif ($connect_response->error_code) {
595
+ $this->renderNotice('Error code: ' . $connect_response->error_code);
596
+ if (!empty($connect_response->errors)) {
597
+ foreach ($connect_response->errors as $error) {
598
+ $this->renderNotice('Error: ' . $error);
599
+ }
600
+ }
601
+ } elseif (!empty($connect_response->errors)) {
602
+ foreach ($connect_response->errors as $error) {
603
+ $this->renderNotice('Error: ' . $error);
604
+ }
605
+ } else {
606
+ $this->renderNotice('API communication error. Unable to disconnect facebook page.');
607
+ }
608
+ return false;
609
+ }
610
+ }
611
+
612
+
613
+ public function sendUserEmail()
614
+ {
615
+ if (function_exists('wp_get_current_user')) {
616
+ $current_user = wp_get_current_user();
617
+ }
618
+ if (!empty($current_user->user_email)) {
619
+ $user_email = $current_user->user_email;
620
+ } else {
621
+ $user_email = get_option('admin_email', '');
622
+ }
623
+
624
+ $args = [
625
+ 'timeout' => 10,
626
+ 'headers' => [
627
+ 'Authorization' => $this->getToken(),
628
+ 'Content-Type' => 'application/json',
629
+ ],
630
+ 'body' => json_encode([
631
+ 'user' => [
632
+ "wp_email" => $user_email,
633
+ ],
634
+ 'src' => $this->getSrc(),
635
+ ]),
636
+ 'method' => 'PUT',
637
+ ];
638
+
639
+ $response = wp_remote_request($this->getApiDomain() . '/api/user/', $args);
640
+ $this->ErrorHandler($response,'User Email','put');
641
+ }
642
+
643
+ public function getWelcomeMessage($remote_id)
644
+ {
645
+ $args = [
646
+ 'timeout' => 10,
647
+ 'headers' => [
648
+ 'Authorization' => $this->getToken(),
649
+ 'Content-Type' => 'application/json',
650
+ ],
651
+ 'body' => [
652
+ 'src' => $this->getSrc()
653
+ ]
654
+ ];
655
+
656
+ $response = wp_remote_get($this->getApiDomain() . 'api/wordpress_settings/welcome_message?fb_page_remote_id=' . $remote_id . '&v=' . HTCC_VERSION.'.2', $args);
657
+ $error = ($this->ErrorHandler($response,'Welcome Message','get'));
658
+ if ($error) {
659
+ return str_replace('"', '', $error);
660
+ }
661
+ }
662
+
663
+ public function updateWelcomeMessage($new_welcome_message, $fb_page_id)
664
+ {
665
+ $args = [
666
+ 'timeout' => 10,
667
+ 'headers' => [
668
+ 'Authorization' => $this->getToken(),
669
+ 'Content-Type' => 'application/json',
670
+ ],
671
+ 'body' => json_encode([
672
+ 'body' => $new_welcome_message,
673
+ 'fb_page_remote_id' => $fb_page_id,
674
+ 'src' => $this->getSrc()
675
+ ]),
676
+ 'method' => 'PUT',
677
+ ];
678
+ $response = wp_remote_request($this->getApiDomain() . 'api/wordpress_settings/welcome_message?v=' . HTCC_VERSION.'.2', $args);
679
+ $this->ErrorHandler($response,'Welcome Message','put');
680
+
681
+
682
+ }
683
+
684
+ public function updateLanguage($new_language, $fb_page_id)
685
+ {
686
+ $args = [
687
+ 'timeout' => 10,
688
+ 'headers' => [
689
+ 'Authorization' => $this->getToken(),
690
+ 'Content-Type' => 'application/json',
691
+ ],
692
+ 'body' => json_encode([
693
+ 'language' => $new_language,
694
+ 'fb_page_remote_id' => $fb_page_id,
695
+ 'src' => $this->getSrc()
696
+ ]),
697
+ 'method' => 'PUT',
698
+ ];
699
+ $fb_lang = HTCC_Lang::$fb_lang;
700
+ if (in_array($new_language, $fb_lang)){
701
+ $response = wp_remote_request($this->getApiDomain() . 'api/wordpress_settings/language?v=' . HTCC_VERSION.'.2', $args);
702
+ }else {
703
+ $this->renderNotice('Incorrect Language Value');
704
+ }
705
+ $this->ErrorHandler($response,'Language','put');
706
+ }
707
+
708
+ public function getLanguage($remote_id)
709
+ {
710
+ $args = [
711
+ 'timeout' => 10,
712
+ 'headers' => [
713
+ 'Authorization' => $this->getToken(),
714
+ 'Content-Type' => 'application/json',
715
+ ],
716
+ 'body' => [
717
+ 'src' => $this->getSrc()
718
+ ]
719
+ ];
720
+
721
+ $response = wp_remote_get($this->getApiDomain() . 'api/wordpress_settings/language?fb_page_remote_id=' . $remote_id . '&v=' . HTCC_VERSION.'.2', $args);
722
+ $error = ($this->ErrorHandler($response,'Language','get'));
723
+ if ($error) {
724
+ return str_replace('"', '', $error);
725
+ }
726
+ }
727
+
728
+ public function getWidgets($remote_id)
729
+ {
730
+ $args = [
731
+ 'timeout' => 10,
732
+ 'headers' => [
733
+ 'Authorization' => $this->getToken(),
734
+ 'Content-Type' => 'application/json',
735
+ ],
736
+ 'body' => [
737
+ 'src' => $this->getSrc()
738
+ ]
739
+ ];
740
+ $response = wp_remote_get($this->getApiDomain() . 'api/wordpress_settings/answering_service_v2?fb_page_remote_id=' . $remote_id . '&v=' . HTCC_VERSION.'.2', $args);
741
+ $error = $this->ErrorHandler($response,'Widget','get');
742
+ if ($error) {
743
+ $connect_response = json_decode($error);
744
+ if (isset($connect_response->answering_service_mm_only_mode)||isset($connect_response->answering_service_not_available)){
745
+ return [];
746
+ }
747
+ $value_new['fb_answer'] = $connect_response->questions;
748
+ $i=1;
749
+ foreach ($connect_response->qualifiers as $key=>$value){
750
+ foreach ($value as $k=>$v){
751
+ $y=1;
752
+ if ($k == 'question'){
753
+ $value_new['lq_'.$i]['question'] = $v;
754
+ }else {
755
+ foreach ($v as $kr=>$an){
756
+ foreach ($an as $t=>$a){
757
+ if ($t == 'answer'){
758
+ $value_new['lq_'.$i]['answers'.$y]['answer'] = $a;
759
+ }else {
760
+ $value_new['lq_'.$i]['answers'.$y]['qualified'] = $a;
761
+ }
762
+ }
763
+ $y++;
764
+ }
765
+ }
766
+ }
767
+ $i++;
768
+ }
769
+ $value_new['notify_mode'] = $connect_response->notify_mode;
770
+ $value_new['fb_welcome_message'] = $this->getWelcomeMessage($remote_id);
771
+ $value_new['thank_message'] = $connect_response->thank_you_message;
772
+ $value_new['email'] = $connect_response->notify_email;
773
+ $value_new['fb_as_state'] = $connect_response->enabled;
774
+ return $value_new;
775
+ } else {
776
+ return false;
777
+ }
778
+ }
779
+
780
+ public function getTriggers($remote_id)
781
+ {
782
+ $args = [
783
+ 'timeout' => 10,
784
+ 'headers' => [
785
+ 'Authorization' => $this->getToken(),
786
+ 'Content-Type' => 'application/json',
787
+ ],
788
+ 'body' => [
789
+ 'src' => $this->getSrc()
790
+ ]
791
+ ];
792
+
793
+ $response = wp_remote_get($this->getApiDomain() . 'api/wordpress_settings/triggers?fb_page_remote_id=' . $remote_id . '&v=' . HTCC_VERSION.'.2', $args);
794
+ $error = $this->ErrorHandler($response,'Q&A','get');
795
+ if ($error) {
796
+ $connect_response = json_decode($error);
797
+ $i=1;
798
+ $value_new['advanced_triggers_present'] = $connect_response->advanced_triggers_present;
799
+ foreach ($connect_response->triggers as $key=>$value){
800
+ foreach ($value as $k=>$v){
801
+ if ($k == 'bot_responses'){
802
+ $value_new['qa_'.$i][$k] = $v[0];
803
+ }else {
804
+ foreach ($v as $kr=>$an){
805
+ $value_new['qa_'.$i][$k][]=$an;
806
+ }
807
+ }
808
+ }
809
+ $i++;
810
+ }
811
+ return $value_new;
812
+ } else {
813
+ return false;
814
+ }
815
+ }
816
+
817
+
818
+
819
+ public function setWidgets($options,$page_id,$update)
820
+ {
821
+ $var = true;
822
+ $trig = true;
823
+
824
+ if (!$update){
825
+ $triggers = $this->getTriggers($page_id);
826
+ $data_widget = $this->getWidgets($page_id);
827
+ $this->as_mm = empty($data_widget)?true:false;
828
+ $current_welcome_message = $this->getWelcomeMessage($page_id);
829
+ $pre_val = get_transient( 'pre_value' );
830
+ if (count($options,COUNT_NORMAL)==1 && $options['fb_welcome_message']||!$options) {
831
+ if ($this->as_mm == false) {
832
+ $data_widget = array_merge($data_widget, $triggers);
833
+ foreach ($data_widget as $key=>$value){
834
+ if (strpos($key, 'lq_')!==false){
835
+ $var=false;
836
+ }
837
+ }
838
+
839
+ if ($var){
840
+ $data_widget['lq_1']['question'] = 'What is your budget?';
841
+ $data_widget['lq_1']['answers1']['answer'] = '$0';
842
+ $data_widget['lq_1']['answers2']['answer'] = '$1-$99';
843
+ $data_widget['lq_1']['answers3']['answer'] = '$100-$500';
844
+ $data_widget['lq_1']['answers4']['answer'] = '$500+';
845
+ $data_widget['lq_1']['answers4']['qualified'] = '1';
846
+ }
847
+ if ($pre_val==true) {
848
+ foreach ($data_widget as $k => $v) {
849
+ if (strpos($k, 'qa_') !== false) {
850
+ $trig = false;
851
+ }
852
+ }
853
+ if ($trig) {
854
+ $data_widget['qa_1']['phrases'] = '';
855
+ $data_widget['qa_1']['bot_responses'] = '';
856
+ }
857
+ }
858
+ $data_widget['answering_service_mm_only_mode'] = false;
859
+ $data_widget['fb_welcome_message'] = $current_welcome_message;
860
+ $data_widget['advanced_triggers_present'] = $triggers['advanced_triggers_present'];
861
+ $data_widget['fb_as_state'] = 0;
862
+ update_option('htcc_as_options', $data_widget);
863
+ }else {
864
+ if ($options){
865
+ foreach ($options as $key => $value) {
866
+ if (strpos($key, 'qa_') !== false) {
867
+ if (!empty($value['phrases']) && !empty($value['bot_responses'])) {
868
+ unset($options[$key]);
869
+ }
870
+ }
871
+ }
872
+ $data_widget = array_merge($options, $triggers);
873
+ if (!$options) {
874
+ foreach ($data_widget as $k => $v) {
875
+ if (strpos($k, 'qa_') !== false) {
876
+ $trig = false;
877
+ }
878
+ }
879
+ if ($trig) {
880
+ $data_widget['qa_1']['phrases'] = '';
881
+ $data_widget['qa_1']['bot_responses'] = '';
882
+ }
883
+ }
884
+ $data_widget['fb_welcome_message'] = $current_welcome_message;
885
+ $data_widget['answering_service_mm_only_mode'] = true;
886
+ $data_widget['advanced_triggers_present'] = $triggers['advanced_triggers_present'];
887
+ update_option('htcc_as_options', $data_widget);
888
+ }
889
+ }
890
+ }
891
+ if ($this->as_mm == false) {
892
+ $data_widget = array_merge($data_widget, $triggers);
893
+ $pre_val = get_transient( 'pre_value' );
894
+ foreach ($data_widget as $key=>$value){
895
+ if (strpos($key, 'lq_')!==false){
896
+ $var=false;
897
+ }
898
+ }
899
+
900
+ if ($var){
901
+ $data_widget['lq_1']['question'] = 'What is your budget?';
902
+ $data_widget['lq_1']['answers1']['answer'] = '$0';
903
+ $data_widget['lq_1']['answers2']['answer'] = '$1-$99';
904
+ $data_widget['lq_1']['answers3']['answer'] = '$100-$500';
905
+ $data_widget['lq_1']['answers4']['answer'] = '$500+';
906
+ $data_widget['lq_1']['answers4']['qualified'] = '1';
907
+ }
908
+ if ($pre_val==true) {
909
+ foreach ($data_widget as $k => $v) {
910
+ if (strpos($k, 'qa_') !== false) {
911
+ $trig = false;
912
+ }
913
+ }
914
+ if ($trig) {
915
+ $data_widget['qa_1']['phrases'] = '';
916
+ $data_widget['qa_1']['bot_responses'] = '';
917
+ }
918
+ }
919
+ $data_widget['answering_service_mm_only_mode'] = false;
920
+ $data_widget['fb_welcome_message'] = $current_welcome_message;
921
+ $data_widget['advanced_triggers_present'] = $triggers['advanced_triggers_present'];
922
+ update_option('htcc_as_options', $data_widget);
923
+ }else {
924
+ if ($options){
925
+ foreach ($options as $key => $value) {
926
+ if (strpos($key, 'qa_') !== false) {
927
+ if (!empty($value['phrases']) && !empty($value['bot_responses'])) {
928
+ unset($options[$key]);
929
+ }
930
+ }
931
+ }
932
+ $data_widget['answering_service_mm_only_mode'] = empty($data_widget) ? true : '';
933
+ $data_widget = array_merge($options, $triggers);
934
+ }
935
+ if (!$options) {
936
+ foreach ($data_widget as $k => $v) {
937
+ if (strpos($k, 'qa_') !== false) {
938
+ $trig = false;
939
+ }
940
+ }
941
+ if ($trig) {
942
+ $data_widget['qa_1']['phrases'] = '';
943
+ $data_widget['qa_1']['bot_responses'] = '';
944
+ }
945
+ }
946
+ $data_widget['answering_service_mm_only_mode'] = true;
947
+ $data_widget['advanced_triggers_present'] = $triggers['advanced_triggers_present'];
948
+ update_option('htcc_as_options', $data_widget);
949
+ }
950
+ }else{
951
+ $data_widget = $this->getWidgets($page_id);
952
+ $triggers = $this->getTriggers($page_id);
953
+ $this->as_mm = empty($data_widget)?true:false;
954
+ $state=empty($data_widget)?true:false;
955
+ if ($state==false){
956
+ if ($options['fb_as_state']== null || $options['fb_as_state']==0){
957
+ $value_new['enabled'] = false;
958
+ } else {
959
+ $value_new['enabled'] = true;
960
+ }
961
+
962
+ $value_new['questions'] = $options['fb_answer'];
963
+ foreach ($options as $key=>$value){
964
+ if (strpos($key, 'lq_')!==false){
965
+ $answer = array();
966
+ $question = '';
967
+ foreach ($value as $k=>$v){
968
+ if ($k=='question'){
969
+ $question = $v;
970
+ }else{
971
+ if(isset($v['answer'])){
972
+ if (!ctype_space($v['answer'])){
973
+ $answer[]=array('answer'=>$v['answer'],'qualified'=> (bool)$v['qualified']);
974
+ }
975
+ }
976
+ }
977
+ }
978
+ $value_new["qualifiers"][]=[
979
+ "question"=>$question,
980
+ "answers"=>$answer
981
+ ];
982
+
983
+ }
984
+ }
985
+ if (!isset($value_new["qualifiers"])){
986
+ $value_new["qualifiers"]=[];
987
+ }
988
+ $value_new["notify_email"]= $options["email"];
989
+ $value_new["notify_mode"]= $options['notify_mode'];
990
+ $value_new['thank_you_message'] = $options['thank_message'];
991
+ $value_new['fb_page_remote_id'] = $this->getActiveRemotePageId();
992
+ $this->updateWelcomeMessage($options['fb_welcome_message'],$page_id);
993
+ $this->updateWidgets($value_new);
994
+
995
+ }
996
+ foreach ($options as $key=>$value){
997
+ if (strpos($key, 'qa_')!==false){
998
+ $phrases = array();
999
+ $bot_responses = array();
1000
+ foreach ($value as $k=>$v){
1001
+ if ($k=='bot_responses'&&!empty($v)){
1002
+ $bot_responses[] = $v;
1003
+ }else{
1004
+ if(!empty($v)){
1005
+ if (!ctype_space($v)){
1006
+ $phrases=$v;
1007
+ }
1008
+ }
1009
+ }
1010
+
1011
+ }
1012
+ $trigger_new["triggers"][]=[
1013
+ "phrases"=>$phrases,
1014
+ "bot_responses"=>$bot_responses
1015
+ ];
1016
+ }
1017
+ }
1018
+ $options['advanced_triggers_present'] = $triggers['advanced_triggers_present'];
1019
+ update_option('htcc_as_options', $options);
1020
+ $trigger_new['fb_page_remote_id'] = $this->getActiveRemotePageId();
1021
+ $this->updateTriggers($trigger_new);
1022
+ }
1023
+ return true;
1024
+
1025
+ }
1026
+
1027
+ public function updateTriggers($object)
1028
+ {
1029
+ $args = [
1030
+ 'timeout' => 10,
1031
+ 'headers' => [
1032
+ 'Authorization' => $this->getToken(),
1033
+ 'Content-Type' => 'application/json',
1034
+ ],
1035
+ 'body' => json_encode($object),
1036
+ 'method' => 'PUT',
1037
+ ];
1038
+ $response = wp_remote_request($this->getApiDomain() . 'api/wordpress_settings/triggers', $args);
1039
+ $error = ($this->ErrorHandler($response,'Triggers','put'));
1040
+ if ($error) {
1041
+ return $response;
1042
+ }
1043
+ }
1044
+
1045
+ public function updateWidgets($object)
1046
+ {
1047
+ $args = [
1048
+ 'timeout' => 10,
1049
+ 'headers' => [
1050
+ 'Authorization' => $this->getToken(),
1051
+ 'Content-Type' => 'application/json',
1052
+ ],
1053
+ 'body' => json_encode($object),
1054
+
1055
+ 'method' => 'PUT',
1056
+ ];
1057
+ $response = wp_remote_request($this->getApiDomain() . 'api/wordpress_settings/answering_service_v2', $args);
1058
+ $error = ($this->ErrorHandler($response,'Widget','put'));
1059
+ if ($error) {
1060
+ return $error;
1061
+ }
1062
+ }
1063
+
1064
+ public function getBotRef($bot_id)
1065
+ {
1066
+ $args = [
1067
+ 'timeout' => 10,
1068
+ 'headers' => [
1069
+ 'Authorization' => $this->getToken(),
1070
+ 'Content-Type' => 'application/json; charset=utf-8',
1071
+ ],
1072
+ 'body' => [
1073
+ 'src' => $this->getSrc()
1074
+ ],
1075
+ 'method' => 'GET',
1076
+ ];
1077
+ $response = wp_remote_post($this->getApiDomain() . 'api/bots/' . $bot_id, $args);
1078
+ $error = ($this->ErrorHandler($response,'Bot Ref','get'));
1079
+ if ($error) {
1080
+ $connect_response = json_decode($error);
1081
+ return $connect_response;
1082
+ }
1083
+ }
1084
+
1085
+
1086
+ public function getEnv()
1087
+ {
1088
+
1089
+ $args = [
1090
+ 'timeout' => 10,
1091
+ 'headers' => [
1092
+ 'Authorization' => $this->getToken(),
1093
+ ],
1094
+ ];
1095
+ $response = wp_remote_get($this->getApiDomain() . '/api/env/', $args);
1096
+ $content = wp_remote_retrieve_body($response);
1097
+ if (!empty($content)) {
1098
+
1099
+ $env = json_decode($content);
1100
+
1101
+ if (json_last_error() !== JSON_ERROR_NONE) {
1102
+ $this->renderNotice('API communication error. Please try again later.');
1103
+ } elseif (!empty($env->errors)) {
1104
+ $this->renderNotice('API communication error. Please try again later.');
1105
+ } else {
1106
+ $this->env = $env;
1107
+
1108
+ $options = get_option('htcc_options', array());
1109
+ $options['fb_app_id'] = $this->env->fb_app_id;
1110
+ update_option('htcc_options', $options);
1111
+
1112
+ $this->setEnvironment($env);
1113
+
1114
+ return $env;
1115
+ }
1116
+ }
1117
+
1118
+ return false;
1119
+ }
1120
+
1121
+ public function renderNotice($text)
1122
+ {
1123
+ $setting_page_args = [
1124
+ 'text' => $text,
1125
+ ];
1126
+ HT_CC::view('ht-cc-admin-fb-button-notice', $setting_page_args);
1127
+ }
1128
+ public function renderError($text)
1129
+ {
1130
+ $setting_page_args = [
1131
+ 'text' => $text,
1132
+ ];
1133
+ HT_CC::view('ht-cc-admin-fb-button-error', $setting_page_args);
1134
+ }
1135
+
1136
+ public function settingSaveError($type)
1137
+ {
1138
+ $text = "";
1139
+ switch ($type){
1140
+ case "AS":
1141
+ $text = "Changes to the Answering Service fields will not be saved if you leave the fields blank. Please include non-empty field if you wish to make a change.";
1142
+ break;
1143
+ case "email":
1144
+ $text = "Validation failed: Invalid recipient email address(es)";
1145
+ break;
1146
+ case "welcome_message":
1147
+ $text = "Changes to the Welcome Message field will not be saved if you leave the fields blank. Please include non-empty field if you wish to make a change";
1148
+ break;
1149
+ case "delay_length":
1150
+ $text = "Greeting Dialog Delay shouldn't exceed 9 digits.";
1151
+ break;
1152
+ case "delay_0":
1153
+ $text = "Greeting Dialog Delay cannot be lower than 1 second";
1154
+ break;
1155
+ }
1156
+ add_settings_error(
1157
+ 'htcc_setting_group', // setting name
1158
+ '', //
1159
+ __("$text", 'wp-chatbot'),
1160
+ 'error' // type of notify
1161
+ );
1162
+ }
1163
+ public function debug()
1164
+ {
1165
+ $options = [];
1166
+ $options['token'] = get_option($this->option_prefix . 'token');
1167
+ $options['environment'] = get_option($this->option_prefix . 'environment');
1168
+ $options['htcc_options'] = get_option('htcc_options');
1169
+ return var_dump($options);
1170
+ }
1171
+
1172
+ private function setContacts($data)
1173
+ {
1174
+ $this->contacts = $data;
1175
+ }
1176
+
1177
+ public function getContacts()
1178
+ {
1179
+ if (empty($this->contacts)) {
1180
+ $this->getData();
1181
+ }
1182
+ return $this->contacts;
1183
+ }
1184
+
1185
+ private function setPagination($data)
1186
+ {
1187
+ $this->pagination = $data;
1188
+ }
1189
+
1190
+ public function getPagination()
1191
+ {
1192
+ if (empty($this->pagination)) {
1193
+ $this->getData();
1194
+ }
1195
+ return $this->pagination;
1196
+ }
1197
+
1198
+ private function getArgs()
1199
+ {
1200
+ $get = [
1201
+ 'page' => 1,
1202
+ 'pre_page' => 25,
1203
+ 'sort_column' => 'created_at',
1204
+ 'sort_direction' => 'desc',
1205
+ ];
1206
+
1207
+ $paged = filter_input(INPUT_GET, "paged", FILTER_SANITIZE_STRING);
1208
+ if (!empty($paged)) {
1209
+ $get['page'] = $paged;
1210
+ }
1211
+
1212
+ $orderby = filter_input(INPUT_GET, "orderby", FILTER_SANITIZE_STRING);
1213
+ if (!empty($orderby)) {
1214
+ if($orderby=='name'){
1215
+ $get['sort_column'] = 'first_name';
1216
+ }else{
1217
+ $get['sort_column'] = $orderby;
1218
+ }
1219
+ }
1220
+
1221
+ $order = filter_input(INPUT_GET, "order", FILTER_SANITIZE_STRING);
1222
+ if (!empty($order)) {
1223
+ $get['sort_direction'] = $order;
1224
+ }
1225
+
1226
+ return $get;
1227
+
1228
+ }
1229
+
1230
+
1231
+ public function updateCustomChatSettings($new_value, $fb_page_id)
1232
+ {
1233
+ $args = [
1234
+ 'timeout' => 10,
1235
+ 'headers' => [
1236
+ 'Authorization' => $this->getToken(),
1237
+ 'Content-Type' => 'application/json',
1238
+ ],
1239
+ 'body' => json_encode(
1240
+ $new_value
1241
+ ),
1242
+ 'method' => 'PUT',
1243
+ ];
1244
+ $response = wp_remote_request($this->getApiDomain() . '/api/wordpress_settings/customer_chat?fb_page_remote_id=' . $fb_page_id . '&v=' . HTCC_VERSION.'.2', $args);
1245
+ $error = ($this->ErrorHandler($response,"custom settings",'put'));
1246
+
1247
+ }
1248
+
1249
+ public function getCustomChatSettings($remote_id)
1250
+ {
1251
+ $args = [
1252
+ 'timeout' => 10,
1253
+ 'headers' => [
1254
+ 'Authorization' => $this->getToken(),
1255
+ 'Content-Type' => 'application/json',
1256
+ ],'method' => 'GET',
1257
+ ];
1258
+
1259
+ $response = wp_remote_get($this->getApiDomain() . 'api/wordpress_settings/customer_chat?fb_page_remote_id=' . $remote_id . '&v=' . HTCC_VERSION.'.2', $args);
1260
+ $error = ($this->ErrorHandler($response,"custom settings",'get'));
1261
+ if ($error) {
1262
+ return json_decode($error);
1263
+ }
1264
+ }
1265
+
1266
+ public function setCustomChatSettings($page_id,$options,$update){
1267
+ $custom_settings = $this->getCustomChatSettings($page_id);
1268
+ if (!$update){
1269
+ if (!$options){
1270
+ $custom_settings = $this->getCustomChatSettings($page_id);
1271
+ if (!$custom_settings) {
1272
+ return false;
1273
+ }
1274
+ $default_setting = $this->default_custom_setting();
1275
+ foreach ($custom_settings as $key=>$value){
1276
+ if ($value == '' || !isset($value)){
1277
+ $custom_options['fb_'.$key] = $default_setting['fb_'.$key];
1278
+ }else {
1279
+ $custom_options['fb_'.$key]=$value;
1280
+ }
1281
+ }
1282
+ update_option('htcc_fb_js_src', $custom_settings->js_src);
1283
+ update_option('htcc_custom_options', $custom_options);
1284
+ }
1285
+ }
1286
+ if (!$custom_settings) {
1287
+ return false;
1288
+ }
1289
+ foreach ($custom_settings as $key=>$value){
1290
+ switch ($key){
1291
+ case 'js_src':
1292
+ break;
1293
+ case 'hide_mobile':
1294
+ $options['fb_'.$key] = false;
1295
+ break;
1296
+ case 'hide_desktop':
1297
+ $options['fb_'.$key] = false;
1298
+ break;
1299
+ default:
1300
+ $new_value[$key] = !isset($options['fb_'.$key])?'':$options['fb_'.$key];
1301
+ break;
1302
+ }
1303
+ }
1304
+ if (!empty($new_value)){
1305
+ $this->updateCustomChatSettings($new_value,$page_id);
1306
+ }
1307
+ return true;
1308
+ }
1309
+
1310
+ private function ErrorHandler($response,$point,$type){
1311
+ $content = wp_remote_retrieve_body($response);
1312
+ $connect_response = json_decode($content);
1313
+ $code = wp_remote_retrieve_response_code( $response );
1314
+ $type = "<style>#setting-error-settings_updated{display: none;}</style>";
1315
+ if (isset($code) && $code == 200) {
1316
+ $type ='';
1317
+ return $content;
1318
+ } elseif ($connect_response->error_code) {
1319
+ $this->renderError('Error code: ' . $connect_response->error_code);
1320
+ if (!empty($connect_response->errors)) {
1321
+ foreach ($connect_response->errors as $error) {
1322
+ $this->renderError('Error: ' . $error);
1323
+ }
1324
+ return $error;
1325
+ }
1326
+ } elseif (!empty($connect_response->errors)) {
1327
+ foreach ($connect_response->errors as $error) {
1328
+ if ($code==422||$code==401||$code==404){
1329
+ if ($point!="Welcome Message") {
1330
+ delete_option('mobilemonkey_active_page_info');
1331
+ break;
1332
+ }
1333
+ }
1334
+ }
1335
+ }elseif ($code==404){
1336
+ delete_option('mobilemonkey_active_page_info');
1337
+ return false;
1338
+ } else {
1339
+ if ($point=="Welcome Message" && $code==422){
1340
+ return true;
1341
+ }else {
1342
+ $this->renderError('API communication error. Unable to '.$type .' ' .$point.'');
1343
+ }
1344
+ }
1345
+ echo $type;
1346
+ }
1347
+ public function csv(){
1348
+ $contacts = $this->getContacts();
1349
+ $header_row = array(
1350
+ 'Name',
1351
+ 'Email',
1352
+ 'Gender',
1353
+ 'Locale',
1354
+ 'Time Zone',
1355
+ 'Created At'
1356
+ );
1357
+ $data_rows = array();
1358
+ foreach ( $contacts as $contact )
1359
+ {
1360
+ $row = array(
1361
+ $contact->first_name.$contact->last_name,
1362
+ $contact->email,
1363
+ $contact->gender,
1364
+ $contact->locale,
1365
+ $contact->timezone,
1366
+ $contact->created_at
1367
+ );
1368
+ $data_rows[] = $row;
1369
+ }
1370
+ header('Content-Description: File Transfer');
1371
+ header('Content-Type: application/csv');
1372
+ header('Content-Disposition: attachment; filename=contact.csv');
1373
+ header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
1374
+ $fh = fopen( 'php://output', 'w' );
1375
+ fputcsv( $fh, $header_row );
1376
+ foreach ( $data_rows as $data_row ) {
1377
+ fputcsv( $fh, $data_row );
1378
+ }
1379
+ fclose($fh);
1380
+ die();
1381
+ }
1382
+ private function getData()
1383
+ {
1384
+ $get = $this->getArgs();
1385
+
1386
+ $args = [
1387
+ 'timeout' => 10,
1388
+ 'headers' => [
1389
+ 'Authorization' => $this->getToken(),
1390
+ ],
1391
+ ];
1392
+
1393
+ $activePageId = $this->getActiveRemotePageId();
1394
+
1395
+ $response = wp_remote_get($this->getApiDomain() . 'api/wordpress/contacts?remote_page_id=' . $activePageId . '&page=' . $get['page'] . '&per_page=' . $get['pre_page'] . '&sort_column=' . $get['sort_column'] . '&sort_direction=' . $get['sort_direction'] . '&src=' . $this->getSrc(), $args);
1396
+ $content = wp_remote_retrieve_body($response);
1397
+ if (!empty($content)) {
1398
+ $contacts = json_decode($content);
1399
+ $this->setContacts($contacts->contacts);
1400
+ $this->setPagination($contacts->pagination);
1401
+ }
1402
+ }
1403
+ }
inc/class-htcc-chatbot.php CHANGED
@@ -1,236 +1,236 @@
1
- <?php
2
- /**
3
- * check condtions to display messenger or not
4
- * get app id
5
- * get page id
6
- * and add it to script, div
7
- */
8
-
9
- if ( ! defined( 'ABSPATH' ) ) exit;
10
-
11
- if ( ! class_exists( 'HTCC_Chatbot' ) ) :
12
-
13
- class HTCC_Chatbot {
14
-
15
- // if sdk is not added then dont add - customer chat html content
16
- public $sdk_added = 'no';
17
- public $sdk_added_for_shortcode = 'no';
18
- public $htcc_js_options;
19
-
20
- public $api;
21
-
22
- public function __construct()
23
- {
24
- $this->api = new MobileMonkeyApi();
25
- $this->htcc_js_options = get_option('htcc_fb_js_src');
26
- }
27
-
28
- /**
29
- * load Customer Chat SDK at header
30
- * if shortcode is used load sdk - even if hided based on other way.
31
- */
32
- public function chatbot() {
33
-
34
- $htcc_options = ht_cc()->variables->get_option;
35
- $shortcode_name = isset($htcc_options['shortcode'])?esc_attr( $htcc_options['shortcode'] ):'';
36
-
37
- $is_mobile = ht_cc()->device_type->is_mobile;
38
-
39
- /**
40
- * shortocode can add or have to work only on singular pages ..
41
- *
42
- * so check for shortocode in singular post ..
43
- * if shortocode exists - load sdk - and dont load cc code ..
44
- *
45
- * and for not singular post .. or is shortcode not exist ..
46
- * then check for other conditions ..
47
- * and load sdk, cc code ..
48
- *
49
- */
50
-
51
- // check shortcode exists only on singular post .. if yes load sdk .. and dont load cc code
52
- if ( is_singular() ) {
53
-
54
- global $post;
55
- if ( is_a( $post, 'WP_Post' ) && has_shortcode( $post->post_content, $shortcode_name ) ) {
56
- // If shortcode is added in this page - add sdk.
57
-
58
- // this will be useful at $this->customer_chat()
59
- $this->sdk_added_for_shortcode = 'yes';
60
- }
61
- }
62
-
63
-
64
- /**
65
- * if shortcode is not added .. ( in singular post ) - then check for other conditons ..
66
- * if in a singular post - shortcode is added - then no need to check other conditons
67
- * as sdk is need for shortcode ..
68
- */
69
- if ( 'yes' !== $this->sdk_added_for_shortcode ) {
70
- // check for conditions that any thing is hiding
71
- // - other then place where shortcode added in singular posts
72
-
73
- // in pro version .. hide base on device will be handle by js
74
- // not equal to true
75
- if ( 'true' !== HTCC_PRO ) {
76
- // Hide based on Devices - Mobile, Desktop
77
- if ( 'yes' == $is_mobile ) {
78
- if ( isset( $htcc_options['fb_hide_mobile'] ) ) {
79
- return;
80
- }
81
- } else {
82
- if ( isset( $htcc_options['fb_hide_desktop'] ) ) {
83
- return;
84
- }
85
- }
86
- }
87
-
88
-
89
- // single post
90
- if ( is_single() && isset( $htcc_options['hideon_posts'] ) ) {
91
- return;
92
- }
93
-
94
- // single page - but not on home page, front page
95
- if ( is_page() && isset( $htcc_options['hideon_page'] ) ) {
96
- if ( ( !is_home() ) && ( !is_front_page() ) ) {
97
- return;
98
- }
99
- }
100
-
101
- if ( is_home() && isset( $htcc_options['hideon_homepage'] ) ) {
102
- return;
103
- }
104
-
105
- if ( is_front_page() && isset( $htcc_options['hideon_frontpage'] ) ) {
106
- return;
107
- }
108
-
109
- if ( is_category() && isset( $htcc_options['hideon_category'] ) ) {
110
- return;
111
- }
112
-
113
- if ( is_archive() && isset( $htcc_options['hideon_archive'] ) ) {
114
- return;
115
- }
116
-
117
- if ( is_404() && isset( $htcc_options['hideon_404'] ) ) {
118
- return;
119
- }
120
-
121
-
122
- $this_page_id = get_the_ID();
123
- $pages_list_tohide = isset($htcc_options['list_hideon_pages'])?esc_attr( $htcc_options['list_hideon_pages'] ):'';
124
- $pages_list_tohide_array = explode(',', $pages_list_tohide);
125
-
126
- if( ( is_single() || is_page() ) && in_array( $this_page_id, $pages_list_tohide_array ) ) {
127
- return;
128
- }
129
-
130
- // Hide styles on this catergorys - list
131
- $list_hideon_cat = isset($htcc_options['list_hideon_cat'])?esc_attr( $htcc_options['list_hideon_cat'] ):'';;
132
-
133
-
134
- $activePage = $this->api->getActivePage();
135
- if (!$activePage) {
136
- delete_option('htcc_fb_js_src');
137
- $this->htcc_js_options = '';
138
- }
139
- if( $list_hideon_cat ) {
140
- // Get current post Categorys list and create an array for that..
141
- $current_categorys_array = array();
142
- $current_categorys = get_the_category();
143
- foreach ( $current_categorys as $category ) {
144
- $current_categorys_array[] = strtolower($category->name);
145
- }
146
-
147
- $list_hideon_cat_array = explode(',', $list_hideon_cat);
148
-
149
- foreach ( $list_hideon_cat_array as $category ) {
150
- $category_trim = trim($category);
151
- if ( in_array( strtolower($category_trim), $current_categorys_array ) ) {
152
- return;
153
- }
154
- }
155
- }
156
- }
157
- ?>
158
- <script async="async" src='<?php echo $this->htcc_js_options?>'></script>
159
- <?php
160
-
161
- // After sdk is added
162
- // for customer_chat(), var htcc_values
163
- $this->sdk_added = 'yes';
164
-
165
- }
166
-
167
-
168
-
169
- // cc code - customer chat code
170
- public function customer_chat() {
171
- // instead of adding the cc code in header added like this ..
172
- // can check more conditions as calling from footer .. woocommerce or so ...
173
-
174
- /**
175
- * update values for woocommerce selected pages
176
- *
177
- * placeholders .. these are final values that place in cc code ..
178
- * localize this values if need to use in js - Actions ..
179
- *
180
- */
181
- if ( 'true' == HTCC_PRO ) {
182
- include_once HTCC_PLUGIN_DIR . 'inc/pro/htcc-pro-woo.php';
183
- include_once HTCC_PLUGIN_DIR . 'inc/pro/htcc-pro-values.php';
184
- }
185
-
186
- // custom image - call this if sdk only..
187
- // call this before - checking sdk_added_for_shortcode
188
- if ( 'true' == HTCC_PRO ) {
189
- include_once HTCC_PLUGIN_DIR . 'inc/pro/htcc-pro-custom-image.php';
190
- }
191
-
192
-
193
- // make this check only after included - htcc-pro-values.php - using if statement
194
-
195
- // if sdk added for shortcode then this cc code not needed to add .. so return
196
- // cc code will added by shortocodes ..
197
- if ( 'yes' == $this->sdk_added_for_shortcode ) {
198
- return;
199
- }
200
- // if sdk added then only load this
201
- if ( 'no' == $this->sdk_added ) {
202
- return;
203
- }
204
- $activePage = $this->api->getActivePage();
205
- if (!$activePage) {
206
- delete_option('htcc_fb_js_src');
207
- $this->htcc_js_options = '';
208
- }
209
-
210
- if ( 'true' == HTCC_PRO ) {
211
- ?>
212
- <!-- Add Messenger - wp-chatbot pro - HoliThemes - https://www.holithemes.com/wp-chatbot -->
213
- <div id="htcc-messenger" class="htcc-messenger">
214
-
215
- </div>
216
- <!-- / Add Messenger - wp-chatbot pro - HoliThemes -->
217
-
218
- <?php
219
- } else {
220
- ?>
221
- <!-- Add Messenger - wp-chatbot - HoliThemes - https://www.holithemes.com/wp-chatbot -->
222
- <script async="async" src='<?php echo $this->htcc_js_options?>'></script>
223
- <!-- / Add Messenger - wp-chatbot - HoliThemes -->
224
- <?php
225
- }
226
-
227
- }
228
-
229
-
230
- }
231
-
232
- $chatbot = new HTCC_Chatbot();
233
- add_action( 'wp_head', array( $chatbot, 'chatbot' ), 1 );
234
-
235
-
236
  endif; // END class_exists check
1
+ <?php
2
+ /**
3
+ * check condtions to display messenger or not
4
+ * get app id
5
+ * get page id
6
+ * and add it to script, div
7
+ */
8
+
9
+ if ( ! defined( 'ABSPATH' ) ) exit;
10
+
11
+ if ( ! class_exists( 'HTCC_Chatbot' ) ) :
12
+
13
+ class HTCC_Chatbot {
14
+
15
+ // if sdk is not added then dont add - customer chat html content
16
+ public $sdk_added = 'no';
17
+ public $sdk_added_for_shortcode = 'no';
18
+ public $htcc_js_options;
19
+
20
+ public $api;
21
+
22
+ public function __construct()
23
+ {
24
+ $this->api = new MobileMonkeyApi();
25
+ $this->htcc_js_options = get_option('htcc_fb_js_src');
26
+ }
27
+
28
+ /**
29
+ * load Customer Chat SDK at header
30
+ * if shortcode is used load sdk - even if hided based on other way.
31
+ */
32
+ public function chatbot() {
33
+
34
+ $htcc_options = ht_cc()->variables->get_option;
35
+ $shortcode_name = isset($htcc_options['shortcode'])?esc_attr( $htcc_options['shortcode'] ):'';
36
+
37
+ $is_mobile = ht_cc()->device_type->is_mobile;
38
+
39
+ /**
40
+ * shortocode can add or have to work only on singular pages ..
41
+ *
42
+ * so check for shortocode in singular post ..
43
+ * if shortocode exists - load sdk - and dont load cc code ..
44
+ *
45
+ * and for not singular post .. or is shortcode not exist ..
46
+ * then check for other conditions ..
47
+ * and load sdk, cc code ..
48
+ *
49
+ */
50
+
51
+ // check shortcode exists only on singular post .. if yes load sdk .. and dont load cc code
52
+ if ( is_singular() ) {
53
+
54
+ global $post;
55
+ if ( is_a( $post, 'WP_Post' ) && has_shortcode( $post->post_content, $shortcode_name ) ) {
56
+ // If shortcode is added in this page - add sdk.
57
+
58
+ // this will be useful at $this->customer_chat()
59
+ $this->sdk_added_for_shortcode = 'yes';
60
+ }
61
+ }
62
+
63
+
64
+ /**
65
+ * if shortcode is not added .. ( in singular post ) - then check for other conditons ..
66
+ * if in a singular post - shortcode is added - then no need to check other conditons
67
+ * as sdk is need for shortcode ..
68
+ */
69
+ if ( 'yes' !== $this->sdk_added_for_shortcode ) {
70
+ // check for conditions that any thing is hiding
71
+ // - other then place where shortcode added in singular posts
72
+
73
+ // in pro version .. hide base on device will be handle by js
74
+ // not equal to true
75
+ if ( 'true' !== HTCC_PRO ) {
76
+ // Hide based on Devices - Mobile, Desktop
77
+ if ( 'yes' == $is_mobile ) {
78
+ if ( isset( $htcc_options['fb_hide_mobile'] ) ) {
79
+ return;
80
+ }
81
+ } else {
82
+ if ( isset( $htcc_options['fb_hide_desktop'] ) ) {
83
+ return;
84
+ }
85
+ }
86
+ }
87
+
88
+
89
+ // single post
90
+ if ( is_single() && isset( $htcc_options['hideon_posts'] ) ) {
91
+ return;
92
+ }
93
+
94
+ // single page - but not on home page, front page
95
+ if ( is_page() && isset( $htcc_options['hideon_page'] ) ) {
96
+ if ( ( !is_home() ) && ( !is_front_page() ) ) {
97
+ return;
98
+ }
99
+ }
100
+
101
+ if ( is_home() && isset( $htcc_options['hideon_homepage'] ) ) {
102
+ return;
103
+ }
104
+
105
+ if ( is_front_page() && isset( $htcc_options['hideon_frontpage'] ) ) {
106
+ return;
107
+ }
108
+
109
+ if ( is_category() && isset( $htcc_options['hideon_category'] ) ) {
110
+ return;
111
+ }
112
+
113
+ if ( is_archive() && isset( $htcc_options['hideon_archive'] ) ) {
114
+ return;
115
+ }
116
+
117
+ if ( is_404() && isset( $htcc_options['hideon_404'] ) ) {
118
+ return;
119
+ }
120
+
121
+
122
+ $this_page_id = get_the_ID();
123
+ $pages_list_tohide = isset($htcc_options['list_hideon_pages'])?esc_attr( $htcc_options['list_hideon_pages'] ):'';
124
+ $pages_list_tohide_array = explode(',', $pages_list_tohide);
125
+
126
+ if( ( is_single() || is_page() ) && in_array( $this_page_id, $pages_list_tohide_array ) ) {
127
+ return;
128
+ }
129
+
130
+ // Hide styles on this catergorys - list
131
+ $list_hideon_cat = isset($htcc_options['list_hideon_cat'])?esc_attr( $htcc_options['list_hideon_cat'] ):'';;
132
+
133
+
134
+ $activePage = $this->api->getActivePage();
135
+ if (!$activePage) {
136
+ delete_option('htcc_fb_js_src');
137
+ $this->htcc_js_options = '';
138
+ }
139
+ if( $list_hideon_cat ) {
140
+ // Get current post Categorys list and create an array for that..
141
+ $current_categorys_array = array();
142
+ $current_categorys = get_the_category();
143
+ foreach ( $current_categorys as $category ) {
144
+ $current_categorys_array[] = strtolower($category->name);
145
+ }
146
+
147
+ $list_hideon_cat_array = explode(',', $list_hideon_cat);
148
+
149
+ foreach ( $list_hideon_cat_array as $category ) {
150
+ $category_trim = trim($category);
151
+ if ( in_array( strtolower($category_trim), $current_categorys_array ) ) {
152
+ return;
153
+ }
154
+ }
155
+ }
156
+ }
157
+ ?>
158
+ <script async="async" src='<?php echo $this->htcc_js_options?>'></script>
159
+ <?php
160
+
161
+ // After sdk is added
162
+ // for customer_chat(), var htcc_values
163
+ $this->sdk_added = 'yes';
164
+
165
+ }
166
+
167
+
168
+
169
+ // cc code - customer chat code
170
+ public function customer_chat() {
171
+ // instead of adding the cc code in header added like this ..
172
+ // can check more conditions as calling from footer .. woocommerce or so ...
173
+
174
+ /**
175
+ * update values for woocommerce selected pages
176
+ *
177
+ * placeholders .. these are final values that place in cc code ..
178
+ * localize this values if need to use in js - Actions ..
179
+ *
180
+ */
181
+ if ( 'true' == HTCC_PRO ) {
182
+ include_once HTCC_PLUGIN_DIR . 'inc/pro/htcc-pro-woo.php';
183
+ include_once HTCC_PLUGIN_DIR . 'inc/pro/htcc-pro-values.php';
184
+ }
185
+
186
+ // custom image - call this if sdk only..
187
+ // call this before - checking sdk_added_for_shortcode
188
+ if ( 'true' == HTCC_PRO ) {
189
+ include_once HTCC_PLUGIN_DIR . 'inc/pro/htcc-pro-custom-image.php';
190
+ }
191
+
192
+
193
+ // make this check only after included - htcc-pro-values.php - using if statement
194
+
195
+ // if sdk added for shortcode then this cc code not needed to add .. so return
196
+ // cc code will added by shortocodes ..
197
+ if ( 'yes' == $this->sdk_added_for_shortcode ) {
198
+ return;
199
+ }
200
+ // if sdk added then only load this
201
+ if ( 'no' == $this->sdk_added ) {
202
+ return;
203
+ }
204
+ $activePage = $this->api->getActivePage();
205
+ if (!$activePage) {
206
+ delete_option('htcc_fb_js_src');
207
+ $this->htcc_js_options = '';
208
+ }
209
+
210
+ if ( 'true' == HTCC_PRO ) {
211
+ ?>
212
+ <!-- Add Messenger - wp-chatbot pro - HoliThemes - https://www.holithemes.com/wp-chatbot -->
213
+ <div id="htcc-messenger" class="htcc-messenger">
214
+
215
+ </div>
216
+ <!-- / Add Messenger - wp-chatbot pro - HoliThemes -->
217
+
218
+ <?php
219
+ } else {
220
+ ?>
221
+ <!-- Add Messenger - wp-chatbot - HoliThemes - https://www.holithemes.com/wp-chatbot -->
222
+ <script async="async" src='<?php echo $this->htcc_js_options?>'></script>
223
+ <!-- / Add Messenger - wp-chatbot - HoliThemes -->
224
+ <?php
225
+ }
226
+
227
+ }
228
+
229
+
230
+ }
231
+
232
+ $chatbot = new HTCC_Chatbot();
233
+ add_action( 'wp_head', array( $chatbot, 'chatbot' ), 1 );
234
+
235
+
236
  endif; // END class_exists check
inc/class-htcc-db.php CHANGED
@@ -1,96 +1,96 @@
1
- <?php
2
- /**
3
- * Database - values, default values ..
4
- * plugin details
5
- * plugin settings - options page
6
- */
7
-
8
- if ( ! defined( 'ABSPATH' ) ) exit;
9
-
10
- if ( ! class_exists( 'HTCC_db' ) ) :
11
-
12
- class HTCC_db {
13
-
14
-
15
- /**
16
- * Add plugin Details to db - wp_options table
17
- * Add plugin version to db - useful while updating plugin
18
- *
19
- * @uses class-htcc-register -> activate()
20
- * @return void
21
- */
22
- public static function db_plugin_details() {
23
-
24
- // plugin details
25
- $plugin_details = array(
26
- 'version' => HTCC_VERSION,
27
- );
28
-
29
- // Always use update_option - override new values .. don't preseve already existing values
30
- update_option( 'htcc_plugin_details', $plugin_details );
31
- }
32
-
33
-
34
-
35
-
36
- /**
37
- * options page - default values.
38
- *
39
- * @uses class-htcc-register -> activate()
40
- * @return void
41
- */
42
- public static function db_default_values() {
43
-
44
- /**
45
- * plugin details
46
- * name: htcc_options
47
- * @key enable - 1, means true. show the button.
48
- *
49
- * greeting_dialog_display - show, hide, fade
50
- * greeting_dialog_delay - number in seconds with in quotes
51
- *
52
- *
53
-
54
- *
55
- * checkbox
56
- * is_sdk_after_page_load - if checked sdk will load after page load
57
- * is_sdk_4_seconds - if both checked - after page loaded, load sdk after 4 seconds
58
- */
59
- $defpage_value =array (
60
- 'mobilemonkey_token' =>'',
61
- 'htcc_fb_js_src' =>''
62
- );
63
-
64
- $values = array(
65
- // 'enable' => '1', Deprecated
66
- 'fb_page_id' => '',
67
- 'fb_app_id' => '',
68
- 'log_events' => 'no',
69
- 'fb_sdk_lang' => 'English',
70
-
71
- 'fb_color' => '',
72
- 'fb_greeting_login' => '',
73
- 'fb_greeting_logout' => '',
74
-
75
- 'list_hideon_pages' => '',
76
- 'list_hideon_cat' => '',
77
- 'shortcode' => 'chatbot',
78
- 'greeting_dialog_display' => '',
79
- 'greeting_dialog_delay' => '',
80
- 'ref' => '',
81
- );
82
-
83
- $db_values = get_option( 'htcc_options', array() );
84
- $update_values = array_merge($values, $db_values);
85
- update_option('htcc_options', $update_values);
86
- foreach ($defpage_value as $key=>$value){
87
- update_option($key, $value);
88
- }
89
- }
90
-
91
-
92
-
93
-
94
- }
95
-
96
  endif; // END class_exists check
1
+ <?php
2
+ /**
3
+ * Database - values, default values ..
4
+ * plugin details
5
+ * plugin settings - options page
6
+ */
7
+
8
+ if ( ! defined( 'ABSPATH' ) ) exit;
9
+
10
+ if ( ! class_exists( 'HTCC_db' ) ) :
11
+
12
+ class HTCC_db {
13
+
14
+
15
+ /**
16
+ * Add plugin Details to db - wp_options table
17
+ * Add plugin version to db - useful while updating plugin
18
+ *
19
+ * @uses class-htcc-register -> activate()
20
+ * @return void
21
+ */
22
+ public static function db_plugin_details() {
23
+
24
+ // plugin details
25
+ $plugin_details = array(
26
+ 'version' => HTCC_VERSION,
27
+ );
28
+
29
+ // Always use update_option - override new values .. don't preseve already existing values
30
+ update_option( 'htcc_plugin_details', $plugin_details );
31
+ }
32
+
33
+
34
+
35
+
36
+ /**
37
+ * options page - default values.
38
+ *
39
+ * @uses class-htcc-register -> activate()
40
+ * @return void
41
+ */
42
+ public static function db_default_values() {
43
+
44
+ /**
45
+ * plugin details
46
+ * name: htcc_options
47
+ * @key enable - 1, means true. show the button.
48
+ *
49
+ * greeting_dialog_display - show, hide, fade
50
+ * greeting_dialog_delay - number in seconds with in quotes
51
+ *
52
+ *
53
+
54
+ *
55
+ * checkbox
56
+ * is_sdk_after_page_load - if checked sdk will load after page load
57
+ * is_sdk_4_seconds - if both checked - after page loaded, load sdk after 4 seconds
58
+ */
59
+ $defpage_value =array (
60
+ 'mobilemonkey_token' =>'',
61
+ 'htcc_fb_js_src' =>''
62
+ );
63
+
64
+ $values = array(
65
+ // 'enable' => '1', Deprecated
66
+ 'fb_page_id' => '',
67
+ 'fb_app_id' => '',
68
+ 'log_events' => 'no',
69
+ 'fb_sdk_lang' => 'English',
70
+
71
+ 'fb_color' => '',
72
+ 'fb_greeting_login' => '',
73
+ 'fb_greeting_logout' => '',
74
+
75
+ 'list_hideon_pages' => '',
76
+ 'list_hideon_cat' => '',
77
+ 'shortcode' => 'chatbot',
78
+ 'greeting_dialog_display' => '',
79
+ 'greeting_dialog_delay' => '',
80
+ 'ref' => '',
81
+ );
82
+
83
+ $db_values = get_option( 'htcc_options', array() );
84
+ $update_values = array_merge($values, $db_values);
85
+ update_option('htcc_options', $update_values);
86
+ foreach ($defpage_value as $key=>$value){
87
+ update_option($key, $value);
88
+ }
89
+ }
90
+
91
+
92
+
93
+
94
+ }
95
+
96
  endif; // END class_exists check
inc/class-htcc-register.php CHANGED
@@ -1,126 +1,126 @@
1
- <?php
2
- /**
3
- * class htcc_register
4
- *
5
- * this class have methods to run when plugin
6
- * activate, deactivate, uninstall, update
7
- *
8
- * add values to Database - wp_options table
9
- * plugin details
10
- */
11
-
12
- if ( ! defined( 'ABSPATH' ) ) exit;
13
-
14
- if ( ! class_exists( 'HTCC_Register' ) ) :
15
-
16
- class HTCC_Register {
17
-
18
- /**
19
- * When plugin activate this function will call
20
- *
21
- * Check min wp version
22
- * calls self::db_plugin_details - add plugin details to db
23
- *
24
- * @since 1.0.0
25
- * @uses register_activation_hook
26
- *
27
- * @return void
28
- */
29
- public static function activate() {
30
-
31
- require_once HTCC_PLUGIN_DIR .'inc/class-htcc-db.php';
32
-
33
- // update plugin details to wp_options table
34
- HTCC_db::db_plugin_details();
35
-
36
- // default values
37
- HTCC_db::db_default_values();
38
-
39
-
40
- // premium
41
- if ( 'true' == HTCC_PRO ) {
42
- include_once HTCC_PLUGIN_DIR . 'inc/pro/class-htcc-pro-db.php';
43
- }
44
-
45
- }
46
-
47
- /**
48
- * After plugin activate this function will call
49
- *
50
- * Redirect to setting page
51
- *
52
- * @since 1.0.0
53
- * @uses activated_plugin
54
- *
55
- * @return void
56
- */
57
- public static function activate_plugin( $plugin ){
58
- if( $plugin == plugin_basename( HTCC_PLUGIN_FILE ) ) {
59
- exit( wp_redirect( admin_url( 'admin.php?page=wp-chatbot' ) ) );
60
- }
61
- }
62
-
63
- /**
64
- * When plugin deactivate
65
- * @since 1.0.0
66
- * @uses register_deactivation_hook
67
- * @return void
68
- */
69
- public static function deactivate() {
70
- $data = get_option('mobilemonkey_active_page_info');
71
- $test = new MobileMonkeyApi();
72
- $test->disconnectPage($data['page_id']);
73
- delete_option('mobilemonkey_token');
74
- delete_option('mobilemonkey_active_page_info');
75
- }
76
-
77
- /**
78
- * When plugin uninstall ( delete )
79
- * @since 1.0.0
80
- * @uses register_uninstall_hook
81
- * @return void
82
- */
83
- public static function uninstall() {
84
- $data = get_option('mobilemonkey_active_page_info');
85
- $test = new MobileMonkeyApi();
86
- $test->disconnectPage($data['page_id']);
87
- delete_option('mobilemonkey_token');
88
- delete_option('mobilemonkey_active_page_info');
89
- }
90
-
91
-
92
- /**
93
- * @uses action hook - plugins_loaded
94
- *
95
- * compare this content version with saved version in db
96
- * If version is different then run activate function
97
- *
98
- * @since 1.0.0
99
- *
100
- * @return void
101
- */
102
- public static function plugin_update() {
103
-
104
- $htcc_plugin_details = get_option('htcc_plugin_details');
105
-
106
- if ( HTCC_VERSION !== $htcc_plugin_details['version'] ) {
107
- // to update the plugin - just like activate plugin
108
- self::activate();
109
-
110
- }
111
- }
112
-
113
-
114
- // add settings page links in plugins page - at plugin
115
- public static function plugin_action_links( $links ) {
116
- $new_links = array(
117
- 'settings' => '<a href="' . admin_url( 'admin.php?page=wp-chatbot' ) . '">' . __( 'Settings' , 'wp-chatbot' ) . '</a>',
118
- );
119
-
120
- return array_merge( $new_links, $links );
121
- }
122
-
123
-
124
- }
125
-
126
  endif; // END class_exists check
1
+ <?php
2
+ /**
3
+ * class htcc_register
4
+ *
5
+ * this class have methods to run when plugin
6
+ * activate, deactivate, uninstall, update
7
+ *
8
+ * add values to Database - wp_options table
9
+ * plugin details
10
+ */
11
+
12
+ if ( ! defined( 'ABSPATH' ) ) exit;
13
+
14
+ if ( ! class_exists( 'HTCC_Register' ) ) :
15
+
16
+ class HTCC_Register {
17
+
18
+ /**
19
+ * When plugin activate this function will call
20
+ *
21
+ * Check min wp version
22
+ * calls self::db_plugin_details - add plugin details to db
23
+ *
24
+ * @since 1.0.0
25
+ * @uses register_activation_hook
26
+ *
27
+ * @return void
28
+ */
29
+ public static function activate() {
30
+
31
+ require_once HTCC_PLUGIN_DIR .'inc/class-htcc-db.php';
32
+
33
+ // update plugin details to wp_options table
34
+ HTCC_db::db_plugin_details();
35
+
36
+ // default values
37
+ HTCC_db::db_default_values();
38
+
39
+
40
+ // premium
41
+ if ( 'true' == HTCC_PRO ) {
42
+ include_once HTCC_PLUGIN_DIR . 'inc/pro/class-htcc-pro-db.php';
43
+ }
44
+
45
+ }
46
+
47
+ /**
48
+ * After plugin activate this function will call
49
+ *
50
+ * Redirect to setting page
51
+ *
52
+ * @since 1.0.0
53
+ * @uses activated_plugin
54
+ *
55
+ * @return void
56
+ */
57
+ public static function activate_plugin( $plugin ){
58
+ if( $plugin == plugin_basename( HTCC_PLUGIN_FILE ) ) {
59
+ exit( wp_redirect( admin_url( 'admin.php?page=wp-chatbot' ) ) );
60
+ }
61
+ }
62
+
63
+ /**
64
+ * When plugin deactivate
65
+ * @since 1.0.0
66
+ * @uses register_deactivation_hook
67
+ * @return void
68
+ */
69
+ public static function deactivate() {
70
+ $data = get_option('mobilemonkey_active_page_info');
71
+ $test = new MobileMonkeyApi();
72
+ $test->disconnectPage($data['page_id']);
73
+ delete_option('mobilemonkey_token');
74
+ delete_option('mobilemonkey_active_page_info');
75
+ }
76
+
77
+ /**
78
+ * When plugin uninstall ( delete )
79
+ * @since 1.0.0
80
+ * @uses register_uninstall_hook
81
+ * @return void
82
+ */
83
+ public static function uninstall() {
84
+ $data = get_option('mobilemonkey_active_page_info');
85
+ $test = new MobileMonkeyApi();
86
+ $test->disconnectPage($data['page_id']);
87
+ delete_option('mobilemonkey_token');
88
+ delete_option('mobilemonkey_active_page_info');
89
+ }
90
+
91
+
92
+ /**
93
+ * @uses action hook - plugins_loaded
94
+ *
95
+ * compare this content version with saved version in db
96
+ * If version is different then run activate function
97
+ *
98
+ * @since 1.0.0
99
+ *
100
+ * @return void
101
+ */
102
+ public static function plugin_update() {
103
+
104
+ $htcc_plugin_details = get_option('htcc_plugin_details');
105
+
106
+ if ( HTCC_VERSION !== $htcc_plugin_details['version'] ) {
107
+ // to update the plugin - just like activate plugin
108
+ self::activate();
109
+
110
+ }
111
+ }
112
+
113
+
114
+ // add settings page links in plugins page - at plugin
115
+ public static function plugin_action_links( $links ) {
116
+ $new_links = array(
117
+ 'settings' => '<a href="' . admin_url( 'admin.php?page=wp-chatbot' ) . '">' . __( 'Settings' , 'wp-chatbot' ) . '</a>',
118
+ );
119
+
120
+ return array_merge( $new_links, $links );
121
+ }
122
+
123
+
124
+ }
125
+
126
  endif; // END class_exists check
inc/class-htcc-shortcode.php CHANGED
@@ -1,69 +1,69 @@
1
- <?php
2
- /**
3
- * shortcodes
4
- * base shorcode name is [chat]
5
- * for list of attribute support check -> shortcode_atts ( $a )
6
- *
7
- * @package ccw
8
- * @since 1.0
9
- */
10
-
11
- if ( ! defined( 'ABSPATH' ) ) exit;
12
-
13
- if ( ! class_exists( 'HTCC_Shortcode' ) ) :
14
-
15
- class HTCC_Shortcode {
16
-
17
-
18
- function shortcode($atts = [], $content = null, $shortcode = '') {
19
-
20
- // let the script add - when shortcode added
21
- // ~ any how fb won't load the sdk second time ..
22
-
23
- $htcc_js_options = get_option('htcc_fb_js_src');
24
-
25
- $is_mobile = ht_cc()->device_type->is_mobile;
26
-
27
-
28
- $a = shortcode_atts(
29
- array(
30
- 'hide_mobile' => '',
31
- 'hide_desktop' => '',
32
- ), $atts, $shortcode );
33
-
34
- // hide based on device
35
- $hide_mobile = $a["fb_hide_mobile"];
36
- $hide_desktop = $a["fb_hide_desktop"];
37
- // if set to true then hide. - here shortcode wont use main options
38
- if ( 'yes' == $is_mobile ) {
39
- if ( "true" == $hide_mobile ) {
40
- return;
41
- }
42
- } else {
43
- if ( "true" == $hide_desktop ) {
44
- return;
45
- }
46
- }
47
-
48
- $o="<script async='async' src=$htcc_js_options></script>";
49
-
50
- return $o;
51
- }
52
-
53
- // Register shortcode
54
- function htcc_shortcodes_init() {
55
-
56
- $htcc_options = get_option('htcc_options');
57
-
58
- $shortcode_name = esc_attr( $htcc_options['shortcode'] );
59
-
60
- add_shortcode( $shortcode_name, array( $this, 'shortcode' ) );
61
- }
62
-
63
- }
64
-
65
- $shortcode = new HTCC_Shortcode();
66
-
67
- add_action('init', array( $shortcode, 'htcc_shortcodes_init' ) );
68
-
69
  endif; // END class_exists check
1
+ <?php
2
+ /**
3
+ * shortcodes
4
+ * base shorcode name is [chat]
5
+ * for list of attribute support check -> shortcode_atts ( $a )
6
+ *
7
+ * @package ccw
8
+ * @since 1.0
9
+ */
10
+
11
+ if ( ! defined( 'ABSPATH' ) ) exit;
12
+
13
+ if ( ! class_exists( 'HTCC_Shortcode' ) ) :
14
+
15
+ class HTCC_Shortcode {
16
+
17
+
18
+ function shortcode($atts = [], $content = null, $shortcode = '') {
19
+
20
+ // let the script add - when shortcode added
21
+ // ~ any how fb won't load the sdk second time ..
22
+
23
+ $htcc_js_options = get_option('htcc_fb_js_src');
24
+
25
+ $is_mobile = ht_cc()->device_type->is_mobile;
26
+
27
+
28
+ $a = shortcode_atts(
29
+ array(
30
+ 'hide_mobile' => '',
31
+ 'hide_desktop' => '',
32
+ ), $atts, $shortcode );
33
+
34
+ // hide based on device
35
+ $hide_mobile = $a["fb_hide_mobile"];
36
+ $hide_desktop = $a["fb_hide_desktop"];
37
+ // if set to true then hide. - here shortcode wont use main options
38
+ if ( 'yes' == $is_mobile ) {
39
+ if ( "true" == $hide_mobile ) {
40
+ return;
41
+ }
42
+ } else {
43
+ if ( "true" == $hide_desktop ) {
44
+ return;
45
+ }
46
+ }
47
+
48
+ $o="<script async='async' src=$htcc_js_options></script>";
49
+
50
+ return $o;
51
+ }
52
+
53
+ // Register shortcode
54
+ function htcc_shortcodes_init() {
55
+
56
+ $htcc_options = get_option('htcc_options');
57
+
58
+ $shortcode_name = esc_attr( $htcc_options['shortcode'] );
59
+
60
+ add_shortcode( $shortcode_name, array( $this, 'shortcode' ) );
61
+ }
62
+
63
+ }
64
+
65
+ $shortcode = new HTCC_Shortcode();
66
+
67
+ add_action('init', array( $shortcode, 'htcc_shortcodes_init' ) );
68
+
69
  endif; // END class_exists check
inc/commons/class-ht-cc-ismobile.php CHANGED
@@ -1,99 +1,99 @@
1
- <?php
2
- /**
3
- * find mobile device or not ..
4
- *
5
- * @fix
6
- * if error realted to wp_is_mobile then
7
- * at construct - $this->is_mobile = $this->is_mobile();
8
- * and uncomment - $this->is_mobile = $this->new_is_mobile();
9
- *
10
- */
11
-
12
- if ( ! defined( 'ABSPATH' ) ) exit;
13
-
14
- if ( ! class_exists( 'HT_CC_IsMobile' ) ) :
15
-
16
- class HT_CC_IsMobile {
17
-
18
- /**
19
- * return is mobile or not
20
- * while using in condition check with 1 not with 2
21
- * @var int - if mobile : 1 ? 2
22
- */
23
- public $is_mobile;
24
-
25
- public function __construct() {
26
-
27
- // $this->is_mobile = $this->is_mobile();
28
- $this->is_mobile = $this->new_is_mobile();
29
-
30
- }
31
-
32
-
33
- /**
34
- *
35
- * Check is mobile device or not
36
- * wp_is_mobile - if true then 1, else 2
37
- */
38
- public function is_mobile() {
39
- if ( wp_is_mobile() ) {
40
- // return $this->is_mobile = 1;
41
- return $this->is_mobile = 'yes';
42
- } else {
43
- // return $this->is_mobile = 2;
44
- return $this->is_mobile = 'no';
45
- }
46
- }
47
-
48
-
49
-
50
- /**
51
- * added this - an user mention that wp_is_mobile uncauched error
52
- * so now it easy to fix incase more users repoted this issue
53
- *
54
- * Check is mobile device or not
55
- * wp_is_mobile - if true then 1, else 2
56
- */
57
- public function new_is_mobile() {
58
-
59
- if ( function_exists( 'wp_is_mobile' ) ) {
60
- if ( wp_is_mobile() ) {
61
- // return $this->is_mobile = 1;
62
- return $this->is_mobile = 'yes';
63
- } else {
64
- // return $this->is_mobile = 2;
65
- return $this->is_mobile = 'no';
66
- }
67
- } else {
68
- if ( $this->php_is_mobile() ) {
69
- // return $this->is_mobile = 1;
70
- return $this->is_mobile = 'yes';
71
- } else {
72
- // return $this->is_mobile = 2;
73
- return $this->is_mobile = 'no';
74
- }
75
- }
76
-
77
- }
78
-
79
-
80
- /**
81
- * @uses $this -> new_is_mobile
82
- *
83
- * fallback for wp_is_mobile
84
- * php way of find is mobile - but not with wordpress defined wp_is_mobile
85
- *
86
- * wp_is_mobile is more efficient
87
- * - uses if in user server it's cause Fatal error: Uncaught Error
88
- * @return boolean
89
- */
90
- public function php_is_mobile() {
91
- // return preg_match("/(android|avantgo|blackberry|bolt|boost|cricket|docomo|fone|hiptop|mini|mobi|palm|phone|pie|tablet|up\.browser|up\.link|webos|wos)/i", $_SERVER["HTTP_USER_AGENT"]);
92
- return preg_match("/(android|webos|avantgo|iphone|ipad|ipod|blackbe‌​rry|iemobile|bolt|bo‌​ost|cricket|docomo|f‌​one|hiptop|mini|oper‌​a mini|kitkat|mobi|palm|phone|pie|tablet|up\.browser|up\.link|‌​webos|wos)/i", $_SERVER["HTTP_USER_AGENT"]);
93
- }
94
-
95
-
96
-
97
- }
98
-
99
  endif; // END class_exists check
1
+ <?php
2
+ /**
3
+ * find mobile device or not ..
4
+ *
5
+ * @fix
6
+ * if error realted to wp_is_mobile then
7
+ * at construct - $this->is_mobile = $this->is_mobile();
8
+ * and uncomment - $this->is_mobile = $this->new_is_mobile();
9
+ *
10
+ */
11
+
12
+ if ( ! defined( 'ABSPATH' ) ) exit;
13
+
14
+ if ( ! class_exists( 'HT_CC_IsMobile' ) ) :
15
+
16
+ class HT_CC_IsMobile {
17
+
18
+ /**
19
+ * return is mobile or not
20
+ * while using in condition check with 1 not with 2
21
+ * @var int - if mobile : 1 ? 2
22
+ */
23
+ public $is_mobile;
24
+
25
+ public function __construct() {
26
+
27
+ // $this->is_mobile = $this->is_mobile();
28
+ $this->is_mobile = $this->new_is_mobile();
29
+
30
+ }
31
+
32
+
33
+ /**
34
+ *
35
+ * Check is mobile device or not
36
+ * wp_is_mobile - if true then 1, else 2
37
+ */
38
+ public function is_mobile() {
39
+ if ( wp_is_mobile() ) {
40
+ // return $this->is_mobile = 1;
41
+ return $this->is_mobile = 'yes';
42
+ } else {
43
+ // return $this->is_mobile = 2;
44
+ return $this->is_mobile = 'no';
45
+ }
46
+ }
47
+
48
+
49
+
50
+ /**
51
+ * added this - an user mention that wp_is_mobile uncauched error
52
+ * so now it easy to fix incase more users repoted this issue
53
+ *
54
+ * Check is mobile device or not
55
+ * wp_is_mobile - if true then 1, else 2
56
+ */
57
+ public function new_is_mobile() {
58
+
59
+ if ( function_exists( 'wp_is_mobile' ) ) {
60
+ if ( wp_is_mobile() ) {
61
+ // return $this->is_mobile = 1;
62
+ return $this->is_mobile = 'yes';
63
+ } else {
64
+ // return $this->is_mobile = 2;
65
+ return $this->is_mobile = 'no';
66
+ }
67
+ } else {
68
+ if ( $this->php_is_mobile() ) {
69
+ // return $this->is_mobile = 1;
70
+ return $this->is_mobile = 'yes';
71
+ } else {
72
+ // return $this->is_mobile = 2;
73
+ return $this->is_mobile = 'no';
74
+ }
75
+ }
76
+
77
+ }
78
+
79
+
80
+ /**
81
+ * @uses $this -> new_is_mobile
82
+ *
83
+ * fallback for wp_is_mobile
84
+ * php way of find is mobile - but not with wordpress defined wp_is_mobile
85
+ *
86
+ * wp_is_mobile is more efficient
87
+ * - uses if in user server it's cause Fatal error: Uncaught Error
88
+ * @return boolean
89
+ */
90
+ public function php_is_mobile() {
91
+ // return preg_match("/(android|avantgo|blackberry|bolt|boost|cricket|docomo|fone|hiptop|mini|mobi|palm|phone|pie|tablet|up\.browser|up\.link|webos|wos)/i", $_SERVER["HTTP_USER_AGENT"]);
92
+ return preg_match("/(android|webos|avantgo|iphone|ipad|ipod|blackbe‌​rry|iemobile|bolt|bo‌​ost|cricket|docomo|f‌​one|hiptop|mini|oper‌​a mini|kitkat|mobi|palm|phone|pie|tablet|up\.browser|up\.link|‌​webos|wos)/i", $_SERVER["HTTP_USER_AGENT"]);
93
+ }
94
+
95
+
96
+
97
+ }
98
+
99
  endif; // END class_exists check
inc/commons/class-ht-cc-variables.php CHANGED
@@ -1,53 +1,53 @@
1
- <?php
2
- /**
3
- * Varibales to use among plugin - try to avoid globals ..
4
- * replaced variables.php
5
- *
6
- * @method get_option retuns options table 'htcc_options' values
7
- *
8
- * use like ..
9
- *
10
- * ht_cc()->variables->get_option['enable'];
11
- * or
12
- * $values = ht_cc()->variables->get_option;
13
- * $values["enable"];
14
- * $values["fb_app_id"];
15
- *
16
- */
17
-
18
-
19
- if ( ! defined( 'ABSPATH' ) ) exit;
20
-
21
- if ( ! class_exists( 'HT_CC_Variables' ) ) :
22
-
23
- class HT_CC_Variables {
24
-
25
- /**
26
- * db options table - htcc_options values
27
- *
28
- * @var array get_options htcc_options
29
- *
30
- *
31
-
32
- */
33
- public $get_option;
34
-
35
-
36
- public function __construct() {
37
- $this->get_option();
38
- }
39
-
40
- public function get_option() {
41
- $this->get_option = get_option('htcc_custom_options');
42
- }
43
-
44
- // public function ccw_enable() {
45
- // $ccw_enable = esc_attr( $this->get_option['enable'] );
46
- // return $ccw_enable;
47
- // }
48
-
49
-
50
-
51
- }
52
-
53
- endif; // END class_exists check
1
+ <?php
2
+ /**
3
+ * Varibales to use among plugin - try to avoid globals ..
4
+ * replaced variables.php
5
+ *
6
+ * @method get_option retuns options table 'htcc_options' values
7
+ *
8
+ * use like ..
9
+ *
10
+ * ht_cc()->variables->get_option['enable'];
11
+ * or
12
+ * $values = ht_cc()->variables->get_option;
13
+ * $values["enable"];
14
+ * $values["fb_app_id"];
15
+ *
16
+ */
17
+
18
+
19
+ if ( ! defined( 'ABSPATH' ) ) exit;
20
+
21
+ if ( ! class_exists( 'HT_CC_Variables' ) ) :
22
+
23
+ class HT_CC_Variables {
24
+
25
+ /**
26
+ * db options table - htcc_options values
27
+ *
28
+ * @var array get_options htcc_options
29
+ *
30
+ *
31
+
32
+ */
33
+ public $get_option;
34
+
35
+
36
+ public function __construct() {
37
+ $this->get_option();
38
+ }
39
+
40
+ public function get_option() {
41
+ $this->get_option = get_option('htcc_custom_options');
42
+ }
43
+
44
+ // public function ccw_enable() {
45
+ // $ccw_enable = esc_attr( $this->get_option['enable'] );
46
+ // return $ccw_enable;
47
+ // }
48
+
49
+
50
+
51
+ }
52
+
53
+ endif; // END class_exists check
index.php CHANGED
@@ -1,2 +1,2 @@
1
- <?php
2
  // Silence is golden.
1
+ <?php
2
  // Silence is golden.
readme.txt CHANGED
@@ -1,10 +1,10 @@
1
- === WP-Chatbot for Facebook Messenger Customer Chat ===
2
  Requires at least: 4.6
3
- Tested up to: 5.2
4
  Requires PHP: 5.6
5
  Contributors: larrykim, yankovski
6
- Stable tag: 4.5
7
- Tags: messenger, customer chat plugin, customer chat, facebook customer chat, facebook chat, chatbot, messenger chatbot, messenger customer chat, facebook live chat, live chat, messenger live chat, facebook, facebook messenger, mobilemonkey
8
  License: GPLv2 or later
9
  License URI: https://www.gnu.org/licenses/gpl-2.0.html
10
 
@@ -14,28 +14,28 @@ WP-Chatbot is the fastest, simplest way to add live chat to your website. Conver
14
 
15
  https://vimeo.com/339614063
16
 
17
- WP-Chatbot adds a Facebook Messenger chat widget to your website. The Messenger widget is the fastest and simplest way to add live chat to your website, convert more leads and engage your customers, even after they’ve left your website.
18
 
19
  - One-click installation for WordPress
20
- - Livechat with visitors 24/7, even while you sleep
21
- - Single inbox for all incoming messages
22
  - Zero-hassle integration with powerful chatbot features
23
- - 100% integration with your Facebook Business page and Facebook Messenger
24
 
25
 
26
  == Screenshots ==
27
 
28
- 1. modified demo - In reality, messenger icon display's at - circle, please check demo links
29
- 2. modified demo - In reality, messenger icon display's at - circle, please check demo links
30
- 3. Setting page
31
- 4. Setting page
32
- 5. Setting page
33
- 6. Setting page
34
- 7. Shortcode
35
 
36
  == WP-Chatbot’s Explosive Results and Huge Fans ==
37
 
38
  WP-Chatbot is the most popular and powerful chatbot in the WordPress ecosystem, powering up tens of thousands of websites with live chat and web chat capabilities. Here are just a few of WP-Chatbot’s fans:
 
 
 
39
  - It is the world’s fastest growing official Facebook messenger marketing solutions provider partner (2019)
40
  - Neil Patel selected it as his chatbot of choice (2019)
41
  - Brian Dean of Backlinko endorsed it (2019)
@@ -43,63 +43,74 @@ WP-Chatbot is the most popular and powerful chatbot in the WordPress ecosystem,
43
 
44
  == Quick facts about the WP-Chatbot ==
45
 
46
- - Integrates with your Facebook Business page easily and quickly
47
- - Uses Facebook Messenger, the most powerful, widespread, and robust messaging platform in the world
48
- - Provides live chat functionality to any WordPress website
49
- - Works on any device, any size, anywhere in the world
50
- - Compatible with all versions of WordPress
51
- - Uses chatbot technology to provide constant support, even if no customer service staff are available.
52
- - The chat can be continued at any time using Messenger, even if users aren’t on your website.
53
- - It is compatible with hundreds of plugins, themes, and ecommerce platforms including WooCommerce
 
 
 
 
 
 
 
 
 
 
 
54
 
55
  ==[FACEBOOK OFFICIAL] MobileMonkey is the world’s fastest growing official Facebook messenger marketing solutions provider partner =
56
 
57
- In 2019, MobileMonkey, which owns and develops WP-Chatbot was recognized as the world’s fastest growing official Facebook messenger marketing solutions provider partner.
58
 
59
- The reason for MobileMonkey’s meteoric growth is due in large part to the popularity of the Messenger plug in.
60
 
61
- WP-Chatbot does far more than simply integrate chat on your homepage. It opens up an entirely new marketing channel complete with drip campaigns, chat blasts, RSS feeds, messenger ads, analytics tracking, and more.
62
 
63
- Facebook Messenger marketing is the hottest marketing channel available to marketers today. By using WP-Chatbot and MobileMonkey, you are gaining cutting-edge advantage of an enormously powerful tool that promises massive results for years to come. It is the world’s fastest growing official Facebook messenger marketing solutions provider partner (2019)
64
 
65
  ==Advantages of using WP-Chatbot on your website==
66
 
67
- Using a Facebook Messenger chat bot on your website opens up a new and powerful marketing channel. You can begin building a Facebook Messenger contact list, and engage these potential customers with ease and power.
68
- - Access to more than 1.3 billion Messenger users worldwide.
 
 
 
69
  - 24/7 interaction with customers. Chat with and interact with customers while you sleep.
70
  - Integration with the fastest-growing messaging platform in the world.
71
  - A single, unified inbox for website chats, Facebook page chats, or other entry points.
72
  - Keep contacts forever. Chat history is persistent regardless of when and how your users messaged you.
73
- - Teamwide access to Messenger chat. Your entire team including support personnel from around the world can access the conversations.
 
74
  - Seamless integration with other powerful chat bot tools. WP-Chatbot is fully integrated with the MobileMonkey chatbot builder.
75
 
76
  ==Customize the plugin according to your exact preferences==
77
 
78
  WP-Chatbot is designed to look and feel exactly how you want it. Here’s the level of customization that you gain when using WP-Chatbot.
79
 
80
- - Select your brand’s exact colors using a color picker or hex code.
81
  - Create a custom greeting for logged-in users when they see the chatbot
82
- - Create a different greeting for users who are not logged in to Messenger
83
- - Select where you want the chat to be located
84
  - Add chat to any or all pages on your website
85
- - Choose the Messenger language to use for chat
86
  - Hide the chatbot based on post type, post ID, categories, or device type
87
- - Add your Facebook page branding with the display photo in the chat window
88
  - Create custom dialogue flows or menus to help users navigate and get the information they need
89
  - Enable or disable Facebook analytics
90
  - Create a chatbot dialogue or use natural language processing (NLP)
91
 
92
- ==Supercharge your marketing with a single plugin.==
93
 
94
  WP-Chatbot is the ultimate small-but-mighty in the world of WordPress plugins. It’s more than just a chat feature. It’s a method of dramatically improving the number of hot and highly engaged leads for your business.
95
 
96
- Without a Messenger chatbot on your website, leads are slipping through your fingers night and day. With a Messenger chatbot, you are securing leads night and day. Ordinary live chat plugins don’t compare with the power and potential of a Facebook Messenger plugin. Why? Because such plugins do not retain the contacts in Facebook Messenger.
97
 
98
- By simply installing this Messenger chatbot plugin on your WordPress site, you are effectively gaining more leads, more engagement, and more return on your marketing investment — totally free.
99
-
100
- ==Chatbot Demo==
101
-
102
- [Here is a complete demo of all of the default capabilities and functions of the WP-Chatbot.](https://mobilemonkey.com/wp-chatbot/demo-default/)
103
 
104
  ==FAQs: WP-Chatbot Plugin Questions and Answers==
105
 
@@ -118,7 +129,7 @@ Instead of relying on live support to answer chats, you can set up a chatbot tha
118
 
119
  **Will WP-Chatbot work with any WordPress website?**
120
 
121
- Yes, WP-Chatbot is designed to work with any website built on WordPress v. 4.6 or higher. It has been tested up to WordPress version 5.2
122
 
123
  **What else do I need in order to start using WP-Chatbot?**
124
 
@@ -129,7 +140,7 @@ In the setup process, you’ll also need to add your website to the whitelisted
129
 
130
  **Is WP-Chatbot compliant with GDPR?**
131
 
132
- Yes. Consent, a requisite component of GDPR, takes place when the user clicks the button to “continue as [name].” It’s important that any chatbot dialogues you create should inform subscribers how they can unsubscribe at any time. For example, you can tell users “Just type STOP at any time to unsubscribe.” If you are using MobileMonkey, then MobileMonkey will automatically handle the unsubscribe request. If the contact wishes to have their data deleted from MobileMonkey, they can always send a message via Messenger or via email to make the request,. Once the page owner receives the deletion request, they can easily honor the request by using the delete contact action in MobileMokey.
133
 
134
  **Does WP-Chatbot come with any analytics?**
135
 
@@ -149,31 +160,30 @@ The WP-Chatbot is, of course, a marvelous customer support tool, but it has many
149
 
150
  **How does the chat process work from a user perspective?**
151
 
152
- The widget is usually persistently positioned at the lower corner of a website. You can customize the greeting message. One popular greeting is “Hi! How can we help you?” If the user is logged in, they will click the button that reads “Continue as [Name].” Instantly, they receive a message with an invitation to continue the conversation. They can continue with the chat on the website, or they can use the Facebook Messenger app to continue.
153
 
154
  **Who owns WP-Chatbot?**
155
- WP-Chatbot is owned by MobileMonkey, a Facebook Messenger marketing app and chatbot builder. LarryKim, the founder of MobileMonkey is a three-time winner of the most influential PPC marketer, a number one columnist on Search Engine Land and Search Engine Journal. He founded Wordstream, grew it to one of the world’s leading search marketing firms, and later sold it for $150m. Larry immediately founded MobileMonkey, recognizing Facebook Messenger marketing as one of the hottest marketing tactics available.
 
156
 
157
  **Do any famous people use or endorse WP-Chatbot?**
158
 
159
  Yes. Some of the world’s leading marketers and publications are active users of WP-Chatbot or its parent company, MobileMonkey. Here are some of them:
160
- - Neil Patel, a Forbes top 10 marketer, founder of Quicksprout and Neil Patel Digital
161
- - Mari Smith, Facebook designated “Small Business and Facebook Marketing Expert”
162
- - Olga Andrienko, Head of Global Marketing at SEMrush
163
- - Brian Dean, founder of Backlinko and globally recognized SEO and marketer
164
- - Cat Howell, CEO of Eight Loop Social and Creator of the Academy
165
- - Sean Ellis, founder of Growth Hackers
166
- - Andrea Vahl, Speaker, trainer and consultant, author of Facebook Ads Made Easy
167
- - Daniel Gilbert, CEO of Brainlabs
168
- - Kelly Noble Mirabella, Bot Marketing Trainer with Baby Got Bot and founder of Stellar Media Marketing
169
- - Dennis Yu, CTO of BlitzMetrics
170
- - Mandy Mcewen, CEO of Mod Girl Marketing
171
- - Andrew Warner, Founder of Bot Academy
172
- - Vasil Azarov, Founder of Growth Marketing Conference
173
 
174
  **What brands have featured WP-Chatbot or MobileMonkey?**
175
 
176
- Facebook has named MobileMonkey the fastest growing Messenger partner, due in part to the explosive growth of WP-Chatbot. Many brands and organizations are reviewing MobileMonkey, discussing the advantages of Messenger marketing tools like MobileMonkey, and providing Facebook Messenger Marketing strategies and tactics, fueled by MobileMonkey chatbots. Here are some of the publications that MobileMonkey has been seen on.
177
 
178
  - Forbes
179
  - Inc.
@@ -186,9 +196,10 @@ Facebook has named MobileMonkey the fastest growing Messenger partner, due in pa
186
 
187
  There are thousands of small businesses, entrepreneurs, in-house marketers, and freelancers using WP-Chatbot every day. The widget has more than 20,000 active installs and is growing by the dozens on a daily basis. Here are some more happy users:
188
 
 
189
  - Toyota
190
  - Century 21
191
- - SofaMania
192
  - Hush Puppies
193
  - Big Guys Pizza
194
  - Veterans United Home Loans
@@ -203,19 +214,19 @@ No. Not at all. In fact, you can even create advanced and high-impact chatbot se
203
 
204
  **Is the chat history deleted or can I save them?**
205
 
206
- All chats are automatically stored in Facebook Messenger, where they are stored indefinitely or until a user unsubscribes from your list. There’s no need to manually save chats. The user also retains a persistent record of their chat history with you.
207
 
208
  **Can I see information about contacts who opt-in to the chat?**
209
 
210
- Yes. When a user starts a chat with you, you can see their name as well as any information that they have chosen to share publicly on their Facebook profile. This may include their workplace, relationships, places they’ve lived, photos, etc.
211
 
212
  **Can anyone on your business’s support team or customer service team chat with users?**
213
 
214
- Yes. Anyone who has a page role on your Business Page (Admin, Editor, Moderator) can chat. Even if the chat is bot-driven, a human can step in at anytime to chat with the user.
215
 
216
  **How do users start a chat?**
217
 
218
- To start chatting from your website, a user clicks the Messenger button on the widget, wherever it is positioned on the page. If the user is already logged into Facebook or Facebook Messenger on their browser or mobile device, the widget can display the button message “Continue as [Name].” If the user is not logged in to Facebook Messenger, the button has the message “Log into Messenger.” The user must first log into Facebook or their Messenger account before initiating the chat.
219
 
220
  **Does WP-Chatbot provide support?**
221
 
@@ -223,29 +234,27 @@ Yes. WP-Chatbot has a large support forum with fast response and top-rated suppo
223
 
224
  **Is WP-Chatbot similar to ManyChat?**
225
 
226
- ManyChat is a great chatbot builder, but is not a WordPress plugin. WP-Chatbot makes it easy for website visitors to chat with you on Facebook Messenger. For maximum chatbot power, WP-Chatbot seamlessly integrates with MobileMonkey, a robust and full-featured chatbot builder. MobileMonkey is where you can harness the full power of Facebook Messenger chatbot marketing, creating drip sequences, lead magnets, chat blasts, and more.
227
 
228
- **How is WP-Chatbot different from other Messenger chatbot plugins?**
229
 
230
  Many plugins simply open a link to a Facebook page. WP-Chatbot integrates the chat on your website with no new tabs or links being required to continue the chat. Another distinguishing feature is WP-Chatbot’s ease of use. Installing the plugin to your site and connecting it to your Facebook Business page is simple and requires only a few minutes.
231
 
232
  **How is WP-Chatbot different from Tidio Live Chat?**
233
 
234
- Tidio Live Chat is a great chatbot for communicating with customers on your website. it is not connected with Facebook or Facebook Messenger. WP-Chatbot has the same chat functionality as Tidio Live Chat, but uses Messenger as the messaging platform. More customers are likely to use Messenger as a chat forum because it’s safe and familiar. In addition, when customers open a chat in Messenger, they become part of your Messenger contact list. Tidio is a great WordPress chabot plugin if you don’t need to integrate with Facebook Messenger.
235
 
236
  **Is WP-Chatbot similar to Collect.chat?**
237
 
238
- Collect.chat is a chatbot plugin that allows you to chat with customers on your website. Like other chatbots including Tidio, Collect.chat is a native chat application without integration to Facebook Messenger. While Colllect.chat provides useful chat functionality, it is limited in what it can offer for retaining chat users for .
239
-
240
- [DEMO](https://mobilemonkey.com/wp-chatbot/demo-default/)
241
 
242
  **Does WP-Chatbot have the same level of power as the IBM Watson Assistant?**
243
 
244
- IBM Watson is a chatbot plugin that uses IBM’s data and information to create an intelligent chatbot. It is not a Facebook Messenger chatbot, so it’s not possible to continue marketing to chatbot users on Facebook. Additionally, in order to gain the full functionality of IBM Watson, it is necessary to purchase IBM Cloud usage.
245
 
246
  **Are there are WordPress chatbot plugins that are similar to WP-Chatbot?**
247
 
248
- There are currently dozens of WordPress chatbot plugins including Cliengo, Clientity, Acobot, My Chatbot, HubSpot, Instabot, Chatbot Botnation, Chatfuel, ArtiBot, Bot Libre, GoBot, and Botsify. Most of these chatbots do not integrate with Facebook Messenger. Chatbots that do have Messenger integration may offer a single limited feature, for example, to improve an onsite shopping experience or to send newsletters.
249
 
250
  **Does WP-Chatbot work in other countries or with other languages?**
251
 
@@ -253,7 +262,7 @@ Yes, WP-Chatbot supports all Facebook languages, which is currently 142 differen
253
 
254
  **Does WP-Chatbot work in real time?**
255
 
256
- Yes, WP-Chatbot works on the Facebook Messenger platform, which transmits messages in real time.
257
 
258
  **What industries is WP-Chatbot helpful for?**
259
 
@@ -276,65 +285,64 @@ Any industry is a perfect case use for website chatting. WP-Chatbot is highly fl
276
  - Chatbots for designers
277
  - Chatbots for freelancers
278
 
279
- ==WP-Chatbot and MobileMonkey: What else can you do with the chatbot?==
280
 
281
  Integrating the plugin to your website and Facebook page is only the first step. Once you’ve done that, the marketing possibilities are endless. You can do each one of these actions using the chatbot building platform, MobileMonkey.
282
 
283
 
284
  **Customers who engage with you are contacts for life.**
285
 
286
- One of the main advantages of WP-Chatbot over ordinary chatbot plugins is that the chat takes place on Facebook Messenger. Users can access the chat on their phone or their desktop, not just on your website. In addition, they remain on your contact list until they choose to unsubscribe.
287
-
288
 
289
  **Grow your contact list.**
290
 
291
- WP-Chatbot makes it easy and effortless to amass a huge contact list of Messenger contacts. The power of chatbots goes beyond a single interaction on your website. The real power begins once you’ve gained that contact.
292
 
293
  **Send contacts chat blasts.**
294
 
295
- A chat blast is a message that you can send to your entire Messenger mailing list. A single blast can reach thousands of potential customers with any variety of marketing messages. Because you’re using Facebook Messenger as your platform, you can expect to get 80% open rates and 40% clickthrough rates within sixty minutes!
296
 
297
  **Create an RSS integration that sends new content to your mailing list.**
298
 
299
  Another powerful feature of Facebook Messenger marketing is the ability to connect your Messenger contact list with an RSS feed. Every time you publish something to the feed, it will send your mailing list a link to the content along with a custom message. All it takes is a quick thirty-second integration using MobileMonkey, and you’re set forever.
300
 
301
- **Market to your Messenger contact list using a drip campaign.**
302
 
303
- A drip campaign is a powerful way to methodically coax your users to conversion. Perhaps you want them to schedule a consultation, attend a webinar, or download a resource. Whatever it is you want them to do, you can create a drip campaign in MobileMonkey that allows you to achieve that. The drip campaign sends the user a series of messages in a live and interactive way. You can easily amass hundreds of conversions in a few minutes using a strategic drip campaign on Facebook Messenger.
304
 
305
  **Combine the power of your chatbot plugin with your Facebook Business page.**
306
 
307
- Once you install your chatbot plugin and begin building a mailing list, you can also build your mailing list using Facebook. To do so, create Click-to-Message ads on Facebook. When users convert on the ad, they are added to your Messenger mailing list. Click-to-Message ads are less expensive and more effective than conventional Facebook display ads. Plus, the user is consenting to allow you to message them again.
308
 
309
  **You have access to a huge audience.**
310
 
311
- Facebook’s messenger applications including WhatsApp and Instagram are the largest in the world, by far. 11% of the world’s total population uses one of Facebook’s messaging apps. With access to an audience this large, you are sure to increase your marketing reach and power.
312
 
313
- **Answer FAQs**
314
 
315
  One great thing about chatbots is that they can be programmed to answer the questions that users are likely to ask. Setting this up in MobileMonkey is easy, and doesn’t require any coding.
316
 
317
- **Qualify Leads**
318
 
319
  Not everyone who starts chatting on your website will turn out to be a valuable lead. A chatbot can help qualify leads by guiding them through a series of questions. Even a certain contact isn’t a lead right now, they might turn into one later. You can invite them to join a Facebook group, retain them in your contact list, or simply message them from time to time to keep them engaged.
320
 
321
- **Notify the sales team about hot leads**
322
 
323
  When a potential lead does qualify themselves through a chatbot dialogue, you can easily alert your sales team about it. They can step in for a live chat with the potential lead and close the deal.
324
 
325
- **Allow contacts to set appointments**
326
 
327
  Does your business use appointment setting? Whether you operate a dentist office, gym, or restaurant, users can make reservations, schedule appointments, make changes to their reservation, check the status of their appointment, get directions, and more.
328
 
329
  ==Technical Facts about the Chatbot Plugin==
330
 
331
- - Number of active installations: 20,000. Historic installations: 147,960
332
- - Version of WordPress: 4.6 or higher
333
- - Version of WordPress tested up to: Version 5.2
334
 
335
  ==Contributors and Developers==
336
 
337
- “WP-Chatbot for Facebook Messenger Customer Chat” is open source software. The following people have contributed to this plugin.
338
 
339
  [larrykim](https://profiles.wordpress.org/larrykim/) [yankovski](https://profiles.wordpress.org/yankovski/)
340
 
@@ -344,95 +352,94 @@ Does your business use appointment setting? Whether you operate a dentist office
344
  WP-Chatbot has exclusively five-star reviews. Check out some of the recent reviews by users of WP-Chatbot.
345
 
346
 
347
- <img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false">Really, It is the best chatbot plugin out there. The plugin works so smooth and has some advanced features also. **(@rahulbiswal)**
348
 
 
 
 
 
 
349
 
350
- **Works as expected!**<img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false">
351
  Great plugin, functions properly, easy to set up and looks great! Support is responsive as well. Would recommend! **(@jordanho)**
352
 
353
 
354
- **If 6 stars were available I would give them.**<img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false">
355
  I’ve just discovered WP-Chatbot a few days ago. It’s insanely useful. In fact, it helps me connect with my Facebook users directly from my website. As users love chatbots even more than emails, I think I’ll never uninstall this plugin. Thanks for having created it. **(@giuseppedeepakbenti)**
356
 
357
 
358
- **Great Plugin for Chat Support.**<img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false">
359
  I love this plugin, it really works with no problems with the new WordPress version. **(@jhsandy)**
360
 
361
 
362
- **Works perfectly with 5.1.1.**<img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false">
363
  I have not experienced any problems with WP 5.1.1 thank you for a great plug-in. **(@jweaver214)**
364
 
365
 
366
- **Easy to set up**<img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false">
367
  Easy to use and set up. **(@lancememan)**
368
 
369
- **Nice Plugin**<img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false">
370
  This plugin is very easy to implement. Very straight forward and support is very responsive. **(@ladykatherynstark)**
371
 
372
- **Best Chatbot Plugin**<img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false">
373
  Best plugin, easy to setup, easy to use and great support. **(@gmatters)**
374
 
375
- **Incredible Support**<img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false">
376
  The educational support and low bar of entry available for this Facebook chatbot builder are unmatched. Larry, Virginia, and the rest of the Mobile Monkey team have done a phenomenal job getting marketers acclimated with one of the most efficient ways to market your business online now. Thank you for such an incredible contribution to the digital entrepreneur community! **(@notifyneal)**
377
 
378
- **Incredible plugin!**<img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false">
379
- Simple to install, and easy to configure! This plugin is a gem for marketers! **(@kristelcuenta)**
380
-
381
- **So easy**<img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false">
382
- I’ve been procrastinating on site chat because I figured it would be a pain, but it turns out it’s a lot easier than I thought. In my industry it takes 12-18 touches to turn someone into a buyer, so every new channel I can set up is gold. **(@formido)**
383
-
384
- **Great Plugin for Chatbot**<img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false">
385
  This is a great plugin for Chatbot. Doesn’t impact pagespeed and is simple to set up. A very useful plugin to chat with current and new customers off of your WordPress website. **(@rez311)**
386
 
387
- **Great job!**<img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false">
388
- Just plug and play to have a working FB chatbot cool! **(@benpines)**
389
 
390
- **Best chatbot plugin**<img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false">
391
  Install was super easy and I’m already seeing results. Love it! WP-Chatbot really helps you grow your business, I already started connecting with my visitors and messaging them directly to get them back. **(@maxcr)**
392
 
393
- **Finally Messenger chat that’s easy**<img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false">
394
  This one works simply by putting almost all settings inside WordPress. (The only part that’s left out is connecting to Facebook. And even the button to initiate that is inside of WordPress.) **(@andrewwarner)**
395
 
396
- **Great plugin**<img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false">
397
  I started using this today. Works great so far! **(@backlinko)**
398
 
399
- **Installed and Working**<img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false">
400
  The plugin is installed and works as advertised. I’m happy :-). **(@brianjjaxn)**
401
 
402
- **What was needed**<img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false">
403
  Very handy plugin that fully performs its functions. I am pleased **(@holysheepcoder)**
404
 
405
- **Best Facebook Chat Plugin**<img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false">
406
  Perfectly streamlined for both mobile & desktop users. Most WordPress Facebook chat plugins just opens a link to the facebook page. This plugin has full API capabilities and it is completely inline. Best Facebook Chat plugin with no question. **(@avdigiovanniv)**
407
 
408
- **Amazing**<img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false">
409
  Straightforward. Works! **(@aleknovkovski)**
410
 
411
- **Excellent service and plugin**<img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false">
412
- These developers are truly passionate about this project. They’re responsive and efficient in resolving issues Would definitely recommend using this plugin. **(@dimsumdesigns)**
413
 
414
- **Good plugin, good support**<img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false">
415
  Plugin working perfectly now. Had some great support from the developer! **(@macr0ni)**
416
 
417
- **Excellent plugin, great support!!**<img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false">
418
  Every website needs to be reachable to its customers, you need this plugin! **(@rgenck)**
419
 
420
- **Simple and effective!**<img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false">
421
  Great job, thanks! **(@wstrzalkowska)**
422
 
423
- **Super Impressed and Super Easy 2 setup**<img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false">
424
  This is simply the best plugin for quick chat directly connected to your Facebook page chat. If you’re using facebook bot for the chat this is perfect! Thank you guys for your amazing work! Keep it up! So happy that I found your plugin! **(@cristianuibar)**
425
 
426
- **Better than premium support!**<img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false">
427
  I honestly use a lot of premium plugins and use their support. I have to admit that for a free plugin, your support is as good, if not better, than other companies’ premium support!! Thanks!!! **(@boulosblack)**
428
 
429
- **Best WP Messenger app**<img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false">
430
  this is a great app. Easy to install even if due do another widget I had a problem. They have a great and quick support and now everything is working great. **(@mralet)**
431
 
432
- **Excellent plugin, very easy setup**<img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false">
433
  An amazing plugin that works well and is very easy to set up. **(@thethandon)**
434
 
435
- **It works perfectly**<img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false"><img src="https://image.flaticon.com/icons/svg/291/291205.svg" width="15" height="15" draggable="false">
436
  it is very helpful! Good job!**(@duynguyen)**
437
 
438
 
@@ -478,7 +485,7 @@ WP-Chatbot is extremely flexible, versatile, and compatible. Because it works se
478
  - Woocommerce
479
 
480
 
481
- ==Solutions: Using MobileMonkey, WP-Chatbot works with all of the following chatbot integration categories:==
482
 
483
  - Accounting
484
  - Ads and Analytics
@@ -554,31 +561,35 @@ WP-Chatbot is extremely flexible, versatile, and compatible. Because it works se
554
  == Installation ==
555
 
556
  = From Dashboard ( WordPress admin ) =
557
- * plugins -> Add New
558
- * search for 'wp chatbot'
559
- * click on Install Now and then Active.
560
 
561
  = using FTP or similar =
562
- * unzip "WP-Chatbot" file and
563
- * Upload "WP-Chabot" folder to the "/wp-content/plugins/" directory.
564
- * Activate the plugin through the "Plugins" menu in WordPress.
565
 
566
 
567
  == Upgrade Notice ==
568
 
569
- = From Dashboard ( WordPress admin ) =
570
- * If plugin new version released - you can see 'update now' link at wp-admin -> plugins
571
- * click on 'update now'
572
 
573
- = using FTP or similar =
574
- * Delete wp-chatbot folder - your setting will not lost.
575
- * unzip wp-chatbot file and
576
- * Upload "wp-chatbot" folder to the "/wp-content/plugins/" directory.
577
- * Activate the plugin through the "Plugins" menu in WordPress.
578
 
579
 
580
  == Changelog ==
581
 
 
 
 
 
582
  = 4.5 =
583
  Bug fixes and stability
584
 
1
+ === WP-Chatbot for Messenger ===
2
  Requires at least: 4.6
3
+ Tested up to: 5.4.1
4
  Requires PHP: 5.6
5
  Contributors: larrykim, yankovski
6
+ Stable tag: 4.6
7
+ Tags: free live chat, facebook messenger, chatbot, live support, customer chat, web chat plugin, website chat widget, chat marketing, customer support, artificial intelligence, sms tools, mobilemonkey
8
  License: GPLv2 or later
9
  License URI: https://www.gnu.org/licenses/gpl-2.0.html
10
 
14
 
15
  https://vimeo.com/339614063
16
 
17
+ WP-Chatbot adds an OmniChat™ chat widget to your website. OmniChat by MobileMonkey is patent-pending technology for creating a single chatbot that works in multiple messaging platforms. The OmniChat widget is the fastest and simplest way to add live chat to your WordPress website, convert more leads and engage your customers, even after they’ve left your website.
18
 
19
  - One-click installation for WordPress
20
+ - Live chat with visitors 24/7, even while you sleep
21
+ - Single inbox for all incoming messages, seamlessly integrated Facebook Messenger and native web chat conversations
22
  - Zero-hassle integration with powerful chatbot features
23
+ - 100% integration with your Facebook Business Page and Facebook Messenger
24
 
25
 
26
  == Screenshots ==
27
 
28
+ 1. Demo
29
+ 2. Plugin Settings: Chatbot Setup
30
+ 3. Plugin Settings: Customize Widget
31
+ 4. View your Leads
 
 
 
32
 
33
  == WP-Chatbot’s Explosive Results and Huge Fans ==
34
 
35
  WP-Chatbot is the most popular and powerful chatbot in the WordPress ecosystem, powering up tens of thousands of websites with live chat and web chat capabilities. Here are just a few of WP-Chatbot’s fans:
36
+
37
+ - Entrepreneur named MobileMonkey the best chatbot platform (2017)
38
+ - MarTech Breakthrough Awards awarded MobileMonkey the Best Marketing Bot Platform (2019)
39
  - It is the world’s fastest growing official Facebook messenger marketing solutions provider partner (2019)
40
  - Neil Patel selected it as his chatbot of choice (2019)
41
  - Brian Dean of Backlinko endorsed it (2019)
43
 
44
  == Quick facts about the WP-Chatbot ==
45
 
46
+ - Chatbot conversations built in WP-Chatbot work for users signed into Facebook Messenger, or not!
47
+ - WP-Chatbot translates chatbot conversations to native web chat if it detects a website visitor is not signed into Facebook Messenger.
48
+ - Integrates with your Facebook Business page easily and quickly.
49
+ - Conversations from both Facebook Messenger chat and native web chat are seamlessly integrated in a unified inbox.
50
+ - Provides live chat functionality to any WordPress website.
51
+ - Works on any device, any size, anywhere in the world.
52
+ - Compatible with all versions of WordPress.
53
+ - Uses chatbot technology to provide constant and instant support, even if no customer service staff are available.
54
+ - hats conducted within Facebook messenger can be continued at any time in Messenger, even if users aren’t on your website.
55
+ - It is compatible with hundreds of plugins, themes, and ecommerce platforms including WooCommerce.
56
+ - It is compatible with MobileMonkey's full-featured marketing and customer service chatbot platform with advanced automation, lead generation, and live chat capabilities.
57
+
58
+ == OMNICHAT™ CHATBOT TECHNOLOGY HELPS WORDPRESS SITE OWNERS CHAT WITH CUSTOMERS IN THE MESSAGING APPS THEY ALREADY USE ==
59
+
60
+ WP-Chatbot features MobileMonkey OmniChat technology, a break-through in chat marketing automation that makes chatbots accessible to all businesses and all customers, on many popular chat interfaces.
61
+
62
+ Where a WordPress site owner would have to build separate chatbots that work on Facebook Messenger or webchat, intead, build one bot conversation that works on many of the chat applications customers are already using.
63
+
64
+ Conversations are all viewable to the site owner in a single, streamlined inbox. Unify your WordPress website customer chats and make it super convenient for site visitors to choose the messaging app that they want to use. That's the power of WP-Chatbot OmniChat.
65
 
66
  ==[FACEBOOK OFFICIAL] MobileMonkey is the world’s fastest growing official Facebook messenger marketing solutions provider partner =
67
 
68
+ In 2019, MobileMonkey, which owns and develops WP-Chatbot was recognized as the world’s fastest growing official Facebook Messenger marketing solutions provider partner.
69
 
70
+ The reason for MobileMonkey’s meteoric growth is due in large part to the popularity of the Messenger live chat plug in.
71
 
72
+ WP-Chatbot does far more than simply integrate chat on your homepage. It opens up an entirely new marketing channel complete with drip campaigns, chat blasts, RSS feeds, Messenger ads, analytics tracking, and more.
73
 
74
+ Chat marketing is the hottest marketing channel available to marketers today. By using WP-Chatbot and MobileMonkey, you are gaining cutting-edge advantage of an enormously powerful tool that promises massive results for years to come. It is the world’s fastest growing official Facebook Messenger marketing solutions provider partner (2019)
75
 
76
  ==Advantages of using WP-Chatbot on your website==
77
 
78
+ Using a chat bot on your website opens up a new and powerful marketing channel. You can begin building a contact list, and engage these potential customers with ease and power.
79
+
80
+ - OmniChat adapts to web visitors, serving no-login-required web chat or Facebook Messenger chat depending on the visitor
81
+ - Facebook Messenger chat gives businesses access to instant lead capture for more than 1.3 billion Facebook Messenger users worldwide.
82
+ - Ability to chat with customers who do not have a Facebook Messenger account using native web chat.
83
  - 24/7 interaction with customers. Chat with and interact with customers while you sleep.
84
  - Integration with the fastest-growing messaging platform in the world.
85
  - A single, unified inbox for website chats, Facebook page chats, or other entry points.
86
  - Keep contacts forever. Chat history is persistent regardless of when and how your users messaged you.
87
+ - Teamwide access to all chats in multiple messaging apps. Your entire team including support personnel from around the world can access the conversations.
88
+ - Available mobile app allows business owners to respond to chats while on-the-go.
89
  - Seamless integration with other powerful chat bot tools. WP-Chatbot is fully integrated with the MobileMonkey chatbot builder.
90
 
91
  ==Customize the plugin according to your exact preferences==
92
 
93
  WP-Chatbot is designed to look and feel exactly how you want it. Here’s the level of customization that you gain when using WP-Chatbot.
94
 
95
+ - Customize shape, location and color with a color picker or hex code
96
  - Create a custom greeting for logged-in users when they see the chatbot
97
+ - Create a different greeting for users who are logged in to Messenger and those who are not Facebook Messenger users
98
+ - Select the pages on your WordPres site where you want the chat to be located
99
  - Add chat to any or all pages on your website
100
+ - Choose the language to use for chat
101
  - Hide the chatbot based on post type, post ID, categories, or device type
102
+ - Add your branding with the display photo in the chat window
103
  - Create custom dialogue flows or menus to help users navigate and get the information they need
104
  - Enable or disable Facebook analytics
105
  - Create a chatbot dialogue or use natural language processing (NLP)
106
 
107
+ ==Supercharge your marketing with a single plugin==
108
 
109
  WP-Chatbot is the ultimate small-but-mighty in the world of WordPress plugins. It’s more than just a chat feature. It’s a method of dramatically improving the number of hot and highly engaged leads for your business.
110
 
111
+ Without a Messenger or native web chatbot on your website, leads are slipping through your fingers night and day. With an OmniChat chatbot, you are securing leads night and day. Ordinary live chat plugins don’t compare with the power and potential of an OmniChat chatbot plugin. Why? Because such plugins do not retain the contacts from across chat platforms in a unified inbox.
112
 
113
+ By simply installing this chatbot plugin on your WordPress site, you are effectively gaining more leads, more engagement, and more return on your marketing investment — totally free.
 
 
 
 
114
 
115
  ==FAQs: WP-Chatbot Plugin Questions and Answers==
116
 
129
 
130
  **Will WP-Chatbot work with any WordPress website?**
131
 
132
+ Yes, WP-Chatbot is designed to work with any website built on WordPress v. 4.6 or higher. It has been tested up to WordPress version 5.4.1.
133
 
134
  **What else do I need in order to start using WP-Chatbot?**
135
 
140
 
141
  **Is WP-Chatbot compliant with GDPR?**
142
 
143
+ Yes. Consent, a requisite component of GDPR, takes place when the user clicks the button to “continue as [name].” It’s important that any chatbot dialogues you create should inform subscribers how they can unsubscribe at any time. For example, you can tell users “Just type STOP at any time to unsubscribe.” If you are using MobileMonkey, then MobileMonkey will automatically handle the unsubscribe request. If the contact wishes to have their data deleted from MobileMonkey, they can always send a message via Messenger or via email to make the request,. Once the page owner receives the deletion request, they can easily honor the request by using the delete contact action in MobileMokey.
144
 
145
  **Does WP-Chatbot come with any analytics?**
146
 
160
 
161
  **How does the chat process work from a user perspective?**
162
 
163
+ The widget is usually persistently positioned at the lower corner of a website. You can customize the greeting message. One popular greeting is “Hi! How can we help you?” If the user is logged in, they will click the button that reads “Continue as [Name].” Instantly, they receive a message with an invitation to continue the conversation. They can continue with the chat on the website, or in the case that they are a Facebook Messenger user, they can use the Facebook Messenger app to continue.
164
 
165
  **Who owns WP-Chatbot?**
166
+
167
+ WP-Chatbot is owned by MobileMonkey, a chat marketing app and chatbot builder that creates chatbots for Facebook Messenger, native web chat, SMS and more. LarryKim, the founder of MobileMonkey is a three-time winner of the most influential PPC marketer, a number one columnist on Search Engine Land and Search Engine Journal. He founded Wordstream, grew it to one of the world’s leading search marketing firms, and later sold it for $150m. Larry immediately founded MobileMonkey, recognizing chat marketing as one of the hottest marketing tactics available.
168
 
169
  **Do any famous people use or endorse WP-Chatbot?**
170
 
171
  Yes. Some of the world’s leading marketers and publications are active users of WP-Chatbot or its parent company, MobileMonkey. Here are some of them:
172
+
173
+ Neil Patel, a Forbes top 10 marketer, founder of Quicksprout and Neil Patel Digital
174
+ Mari Smith, Facebook designated “Small Business and Facebook Marketing Expert”
175
+ Olga Andrienko, Head of Global Marketing at SEMrush
176
+ Brian Dean, founder of Backlinko and globally recognized SEO and marketer
177
+ Cat Howell, CEO of Eight Loop Social and Creator of the Academy
178
+ Sean Ellis, founder of Growth Hackers
179
+ Andrea Vahl, Speaker, trainer and consultant, author of Facebook Ads Made Easy
180
+ Daniel Gilbert, CEO of Brainlabs– Dennis Yu, CTO of BlitzMetrics
181
+ Mandy Mcewen, CEO of Mod Girl Marketing
182
+ Vasil Azarov, Founder of Growth Marketing Conference
 
 
183
 
184
  **What brands have featured WP-Chatbot or MobileMonkey?**
185
 
186
+ Facebook has named MobileMonkey the fastest growing Messenger partner, due in part to the explosive growth of WP-Chatbot. Many brands and organizations are reviewing MobileMonkey, discussing the advantages of Messenger and chat marketing tools like MobileMonkey, and providing chat marketing strategies and tactics, fueled by MobileMonkey chatbots. Here are some of the publications that MobileMonkey has been seen on.
187
 
188
  - Forbes
189
  - Inc.
196
 
197
  There are thousands of small businesses, entrepreneurs, in-house marketers, and freelancers using WP-Chatbot every day. The widget has more than 20,000 active installs and is growing by the dozens on a daily basis. Here are some more happy users:
198
 
199
+ - UNICEF
200
  - Toyota
201
  - Century 21
202
+ - Sofamania
203
  - Hush Puppies
204
  - Big Guys Pizza
205
  - Veterans United Home Loans
214
 
215
  **Is the chat history deleted or can I save them?**
216
 
217
+ All chats are automatically stored in your MobileMonkey inbox (in the web app or mobile app), where they are stored indefinitely or until a user unsubscribes from your list. There’s no need to manually save chats. The user also retains a persistent record of their chat history with you if the chat is conducted in Facebook Messenger.
218
 
219
  **Can I see information about contacts who opt-in to the chat?**
220
 
221
+ If they're chatting with you through Facebook Messenger, yes. In fact, when a visitor on your site chats with you as a logged in Facebook Messenger user, you can see their name as well as a good deal of information that they have chosen to share publicly on their Facebook profile. This may include their language, where they're located, and more.
222
 
223
  **Can anyone on your business’s support team or customer service team chat with users?**
224
 
225
+ Yes. Anyone who has a page role on your Business Page (Admin, Editor, Moderator) can chat. Even if the chat is bot-driven, a human can step in at any time to chat with the site visitor.
226
 
227
  **How do users start a chat?**
228
 
229
+ o start chatting from your website, a user clicks the chat graphic on the widget, wherever it is positioned on the page. If the user is already logged into Facebook or Facebook Messenger on their browser or mobile device, the widget can display the button message “Continue as [Name].” If the user is not logged in to Facebook Messenger, the button will greet the visitor as you tell it to for native web chat users.
230
 
231
  **Does WP-Chatbot provide support?**
232
 
234
 
235
  **Is WP-Chatbot similar to ManyChat?**
236
 
237
+ ManyChat is a chatbot builder, but is not a WordPress plugin. WP-Chatbot makes it easy for website visitors to chat with you on Facebook Messenger as well as outside of Messenger, which is really handy because not every site visitor is logged into Facebook. For maximum chatbot power, WP-Chatbot seamlessly integrates with MobileMonkey, a robust and full-featured chatbot builder. MobileMonkey is where you can harness the full power of chat marketing, creating drip sequences, lead magnets, chat blasts, and more.
238
 
239
+ **How is WP-Chatbot different from other WordPress chatbot plugins?**
240
 
241
  Many plugins simply open a link to a Facebook page. WP-Chatbot integrates the chat on your website with no new tabs or links being required to continue the chat. Another distinguishing feature is WP-Chatbot’s ease of use. Installing the plugin to your site and connecting it to your Facebook Business page is simple and requires only a few minutes.
242
 
243
  **How is WP-Chatbot different from Tidio Live Chat?**
244
 
245
+ Tidio Live Chat is a great chatbot for communicating with customers on your website. it is not connected with Facebook or Facebook Messenger. WP-Chatbot has the same chat functionality as Tidio Live Chat, allows businesses to connect with customers using Messenger as the messaging platform. This has lead generation benefits as customers can receive follow-up messaging from the business. And customers are likely to use Messenger as a chat forum because it’s safe and familiar. Tidio is a fitting WordPress chabot plugin if you don’t want to integrate with Facebook Messenger.
246
 
247
  **Is WP-Chatbot similar to Collect.chat?**
248
 
249
+ Collect.chat is a chatbot plugin that allows you to chat with customers on your website. Like other chatbots including Tidio, Collect.chat is a native chat application without integration to Facebook Messenger. While Colllect.chat provides useful chat functionality, it is limited in what it can offer for retaining chat users for. WP-Chatbot features native website chat and Facebook Messenger chat at the same time.
 
 
250
 
251
  **Does WP-Chatbot have the same level of power as the IBM Watson Assistant?**
252
 
253
+ IBM Watson is a chatbot plugin that uses IBM’s data and information to create an intelligent chatbot. It is not a website widget chatbot, so it’s not possible to continue marketing to chatbot users on Facebook. Additionally, in order to gain the full functionality of IBM Watson, it is necessary to purchase IBM Cloud usage.
254
 
255
  **Are there are WordPress chatbot plugins that are similar to WP-Chatbot?**
256
 
257
+ There are currently dozens of WordPress chatbot plugins including Cliengo, Clientity, Acobot, My Chatbot, HubSpot, Instabot, Chatbot Botnation, Chatfuel, ArtiBot, Bot Libre, GoBot, and Botsify. Most of these chatbots do not integrate with Facebook Messenger. And not one of them offers OmniChat™, the patent-pending technology that makes one chat marketing flow work in multiple messaging apps. Alternative WordPress chatbot plugins typically offer a single limited feature, for example, to improve an onsite shopping experience or to send newsletters.
258
 
259
  **Does WP-Chatbot work in other countries or with other languages?**
260
 
262
 
263
  **Does WP-Chatbot work in real time?**
264
 
265
+ Yes, WP-Chatbot transmits messages in real time within Facebook Messenger as well as native web chat.
266
 
267
  **What industries is WP-Chatbot helpful for?**
268
 
285
  - Chatbots for designers
286
  - Chatbots for freelancers
287
 
288
+ ==WP-Chatbot and MobileMonkey: What else can you do with the chatbot?==
289
 
290
  Integrating the plugin to your website and Facebook page is only the first step. Once you’ve done that, the marketing possibilities are endless. You can do each one of these actions using the chatbot building platform, MobileMonkey.
291
 
292
 
293
  **Customers who engage with you are contacts for life.**
294
 
295
+ One of the main advantages of WP-Chatbot over ordinary chatbot plugins is the chatbot integration with Facebook Messenger. When site visitors are logged into Facebook Messenger and start a conversation with your bot or live agent, users can access this chat and chat history on their phone or their desktop, not just on your website. In addition, they remain on your contact list until they choose to unsubscribe.
 
296
 
297
  **Grow your contact list.**
298
 
299
+ WP-Chatbot makes it easy and effortless to amass a huge contact list of messaging contacts. The power of chatbots goes beyond a single interaction on your website. The real power begins once you’ve gained that contact.
300
 
301
  **Send contacts chat blasts.**
302
 
303
+ A chat blast is a message that you can send to your entire chat mailing list. A single blast can reach thousands of potential customers with any variety of marketing messages. Within the Facebook Messenger platform, you can expect to get 80% open rates and 40% clickthrough rates within sixty minutes!
304
 
305
  **Create an RSS integration that sends new content to your mailing list.**
306
 
307
  Another powerful feature of Facebook Messenger marketing is the ability to connect your Messenger contact list with an RSS feed. Every time you publish something to the feed, it will send your mailing list a link to the content along with a custom message. All it takes is a quick thirty-second integration using MobileMonkey, and you’re set forever.
308
 
309
+ **Market to your messaging contact list using a drip campaign.**
310
 
311
+ A drip campaign is a powerful way to methodically coax your users to conversion. Perhaps you want them to schedule a consultation, attend a webinar, or download a resource. Whatever it is you want them to do, you can create a drip campaign in MobileMonkey that allows you to achieve that. The drip campaign sends the user a series of messages in a live and interactive way. You can easily amass hundreds of conversions in a few minutes using a strategic drip campaign on Facebook Messenger or other messaging platform.
312
 
313
  **Combine the power of your chatbot plugin with your Facebook Business page.**
314
 
315
+ Once you install your chatbot plugin and begin building a lead list, you can also build your lead list using Facebook. To do so, create click-to-Messenger ads on Facebook. When users convert on the ad, they are added to your Messenger mailing list. Click-to-Messenger ads are less expensive and more effective than conventional Facebook display ads. Plus, the user is consenting to allow you to message them again.
316
 
317
  **You have access to a huge audience.**
318
 
319
+ Facebook’s messaging applications including WhatsApp and Instagram are the largest in the world, by far. 11% of the world’s total population uses one of Facebook’s messaging apps. With access to an audience this large, you are sure to increase your marketing reach and power.
320
 
321
+ **Answer FAQs.**
322
 
323
  One great thing about chatbots is that they can be programmed to answer the questions that users are likely to ask. Setting this up in MobileMonkey is easy, and doesn’t require any coding.
324
 
325
+ **Qualify leads.**
326
 
327
  Not everyone who starts chatting on your website will turn out to be a valuable lead. A chatbot can help qualify leads by guiding them through a series of questions. Even a certain contact isn’t a lead right now, they might turn into one later. You can invite them to join a Facebook group, retain them in your contact list, or simply message them from time to time to keep them engaged.
328
 
329
+ **Notify the sales team about hot leads.**
330
 
331
  When a potential lead does qualify themselves through a chatbot dialogue, you can easily alert your sales team about it. They can step in for a live chat with the potential lead and close the deal.
332
 
333
+ **Allow contacts to set appointments.**
334
 
335
  Does your business use appointment setting? Whether you operate a dentist office, gym, or restaurant, users can make reservations, schedule appointments, make changes to their reservation, check the status of their appointment, get directions, and more.
336
 
337
  ==Technical Facts about the Chatbot Plugin==
338
 
339
+ - Number of active installations: 20,000. Historic installations: 315,000
340
+ - Version of WordPress: 4.6 or higher
341
+ - Version of WordPress tested up to: Version 5.4.1
342
 
343
  ==Contributors and Developers==
344
 
345
+ “WP-Chatbot for Messenger is open source software. The following people have contributed to this plugin.
346
 
347
  [larrykim](https://profiles.wordpress.org/larrykim/) [yankovski](https://profiles.wordpress.org/yankovski/)
348
 
352
  WP-Chatbot has exclusively five-star reviews. Check out some of the recent reviews by users of WP-Chatbot.
353
 
354
 
355
+ ⭐️⭐️⭐️⭐️⭐️Really, It is the best chatbot plugin out there. The plugin works so smooth and has some advanced features also. **(@rahulbiswal)**
356
 
357
+ **Incredible plugin!**⭐️⭐️⭐️⭐️⭐️
358
+ Simple to install, and easy to configure! This plugin is a gem for marketers! **(@kristelcuenta)**
359
+
360
+ **So easy**⭐️⭐️⭐️⭐️⭐️
361
+ I’ve been procrastinating on site chat because I figured it would be a pain, but it turns out it’s a lot easier than I thought. In my industry it takes 12-18 touches to turn someone into a buyer, so every new channel I can set up is gold. **(@formido)**
362
 
363
+ **Works as expected!**⭐️⭐️⭐️⭐️⭐️
364
  Great plugin, functions properly, easy to set up and looks great! Support is responsive as well. Would recommend! **(@jordanho)**
365
 
366
 
367
+ **If 6 stars were available I would give them.**⭐️⭐️⭐️⭐️⭐️
368
  I’ve just discovered WP-Chatbot a few days ago. It’s insanely useful. In fact, it helps me connect with my Facebook users directly from my website. As users love chatbots even more than emails, I think I’ll never uninstall this plugin. Thanks for having created it. **(@giuseppedeepakbenti)**
369
 
370
 
371
+ **Great Plugin for Chat Support.**⭐️⭐️⭐️⭐️⭐️
372
  I love this plugin, it really works with no problems with the new WordPress version. **(@jhsandy)**
373
 
374
 
375
+ **Works perfectly with 5.1.1.**⭐️⭐️⭐️⭐️⭐️
376
  I have not experienced any problems with WP 5.1.1 thank you for a great plug-in. **(@jweaver214)**
377
 
378
 
379
+ **Easy to set up**⭐️⭐️⭐️⭐️⭐️
380
  Easy to use and set up. **(@lancememan)**
381
 
382
+ **Nice Plugin**⭐️⭐️⭐️⭐️⭐️
383
  This plugin is very easy to implement. Very straight forward and support is very responsive. **(@ladykatherynstark)**
384
 
385
+ **Best Chatbot Plugin**⭐️⭐️⭐️⭐️⭐️
386
  Best plugin, easy to setup, easy to use and great support. **(@gmatters)**
387
 
388
+ **Incredible Support**⭐️⭐️⭐️⭐️⭐️
389
  The educational support and low bar of entry available for this Facebook chatbot builder are unmatched. Larry, Virginia, and the rest of the Mobile Monkey team have done a phenomenal job getting marketers acclimated with one of the most efficient ways to market your business online now. Thank you for such an incredible contribution to the digital entrepreneur community! **(@notifyneal)**
390
 
391
+ **Great Plugin for Chatbot**⭐️⭐️⭐️⭐️⭐️
 
 
 
 
 
 
392
  This is a great plugin for Chatbot. Doesn’t impact pagespeed and is simple to set up. A very useful plugin to chat with current and new customers off of your WordPress website. **(@rez311)**
393
 
394
+ **Great job!**⭐️⭐️⭐️⭐️⭐️
395
+ Just plug and play to have a working FB chatbot - cool! **(@benpines)**
396
 
397
+ **Best chatbot plugin**⭐️⭐️⭐️⭐️⭐️
398
  Install was super easy and I’m already seeing results. Love it! WP-Chatbot really helps you grow your business, I already started connecting with my visitors and messaging them directly to get them back. **(@maxcr)**
399
 
400
+ **Finally Messenger chat that’s easy**⭐️⭐️⭐️⭐️⭐️
401
  This one works simply by putting almost all settings inside WordPress. (The only part that’s left out is connecting to Facebook. And even the button to initiate that is inside of WordPress.) **(@andrewwarner)**
402
 
403
+ **Great plugin**⭐️⭐️⭐️⭐️⭐️
404
  I started using this today. Works great so far! **(@backlinko)**
405
 
406
+ **Installed and Working**⭐️⭐️⭐️⭐️⭐️
407
  The plugin is installed and works as advertised. I’m happy :-). **(@brianjjaxn)**
408
 
409
+ **What was needed**⭐️⭐️⭐️⭐️⭐️
410
  Very handy plugin that fully performs its functions. I am pleased **(@holysheepcoder)**
411
 
412
+ **Best Facebook Chat Plugin**⭐️⭐️⭐️⭐️⭐️
413
  Perfectly streamlined for both mobile & desktop users. Most WordPress Facebook chat plugins just opens a link to the facebook page. This plugin has full API capabilities and it is completely inline. Best Facebook Chat plugin with no question. **(@avdigiovanniv)**
414
 
415
+ **Amazing**⭐️⭐️⭐️⭐️⭐️
416
  Straightforward. Works! **(@aleknovkovski)**
417
 
418
+ **Excellent service and plugin**⭐️⭐️⭐️⭐️⭐️
419
+ These developers are truly passionate about this project. They’re responsive and efficient in resolving issues - Would definitely recommend using this plugin. **(@dimsumdesigns)**
420
 
421
+ **Good plugin, good support**⭐️⭐️⭐️⭐️⭐️
422
  Plugin working perfectly now. Had some great support from the developer! **(@macr0ni)**
423
 
424
+ **Excellent plugin, great support!!**⭐️⭐️⭐️⭐️⭐️
425
  Every website needs to be reachable to its customers, you need this plugin! **(@rgenck)**
426
 
427
+ **Simple and effective!**⭐️⭐️⭐️⭐️⭐️
428
  Great job, thanks! **(@wstrzalkowska)**
429
 
430
+ **Super Impressed and Super Easy 2 setup**⭐️⭐️⭐️⭐️⭐️
431
  This is simply the best plugin for quick chat directly connected to your Facebook page chat. If you’re using facebook bot for the chat this is perfect! Thank you guys for your amazing work! Keep it up! So happy that I found your plugin! **(@cristianuibar)**
432
 
433
+ **Better than premium support!**⭐️⭐️⭐️⭐️⭐️
434
  I honestly use a lot of premium plugins and use their support. I have to admit that for a free plugin, your support is as good, if not better, than other companies’ premium support!! Thanks!!! **(@boulosblack)**
435
 
436
+ **Best WP Messenger app**⭐️⭐️⭐️⭐️⭐️
437
  this is a great app. Easy to install even if due do another widget I had a problem. They have a great and quick support and now everything is working great. **(@mralet)**
438
 
439
+ **Excellent plugin, very easy setup**⭐️⭐️⭐️⭐️⭐️
440
  An amazing plugin that works well and is very easy to set up. **(@thethandon)**
441
 
442
+ **It works perfectly**⭐️⭐️⭐️⭐️⭐️
443
  it is very helpful! Good job!**(@duynguyen)**
444
 
445
 
485
  - Woocommerce
486
 
487
 
488
+ ==Solutions: Using MobileMonkey, WP-Chatbot works with all of the following chatbot integration categories:==
489
 
490
  - Accounting
491
  - Ads and Analytics
561
  == Installation ==
562
 
563
  = From Dashboard ( WordPress admin ) =
564
+ * Plugins > Add New
565
+ * Search for `wp chatbot`
566
+ * Click on **Install Now** and then **Activate**.
567
 
568
  = using FTP or similar =
569
+ * Unzip downloaded "wp-chatbot" file and
570
+ * Upload `wp-chatbot` folder to the `/wp-content/plugins/` directory.
571
+ * Activate the plugin via the "Plugins" menu in WordPress Admin.
572
 
573
 
574
  == Upgrade Notice ==
575
 
576
+ = From Dashboard ( WordPress Admin ) =
577
+ * If a plugin new version is released - you will see an 'update now' link at wp-admin -> plugins
578
+ * Click on 'Update Now'
579
 
580
+ = Using FTP or similar =
581
+ * Delete the existing wp-chatbot folder - your settings will not be lost.
582
+ * Unzip downloaded "wp-chatbot" file and
583
+ * Upload `wp-chatbot` folder to the `/wp-content/plugins/` directory.
584
+ * Activate the plugin via the "Plugins" menu in WordPress Admin.
585
 
586
 
587
  == Changelog ==
588
 
589
+ = 4.6 =
590
+ Introduced Chatbot Settings feature
591
+ Bug fixes and stability
592
+
593
  = 4.5 =
594
  Bug fixes and stability
595
 
wp-chatbot.php CHANGED
@@ -1,46 +1,46 @@
1
- <?php
2
- /*
3
- Plugin Name: WP Chatbot
4
- Plugin URI: https://mobilemonkey.com/wp-chatbot/
5
- Description: Add Messenger to your website, Chatbot or live Chat using Facebook Messenger
6
- Version: 4.5
7
- Author: MobileMonkey
8
- Author URI: https://mobilemonkey.com/wp-chatbot/
9
- License: GPL2
10
- License URI: https://www.gnu.org/licenses/gpl-2.0.html
11
- Text Domain: wp-chatbot
12
- */
13
-
14
-
15
- if ( ! defined( 'ABSPATH' ) ) exit;
16
-
17
-
18
- // Version - define HTCC_VERSION
19
- if ( ! defined( 'HTCC_VERSION' ) ) {
20
- define( 'HTCC_VERSION', '4.5' );
21
- }
22
-
23
-
24
- /**
25
- * if premium set to true
26
- * and change add suffix to name, version
27
- * for wp.org - remove the pro folders
28
- */
29
- if ( ! defined( 'HTCC_PRO' ) ) {
30
- define( 'HTCC_PRO', 'false' );
31
- }
32
-
33
- // define HTCC_PLUGIN_FILE
34
- if ( ! defined( 'HTCC_PLUGIN_FILE' ) ) {
35
- define( 'HTCC_PLUGIN_FILE', __FILE__ );
36
- }
37
-
38
- // include main file
39
- require_once 'inc/class-ht-cc.php';
40
-
41
- // create instance for the main file - HT_CC
42
- function ht_cc() {
43
- return HT_CC::instance();
44
- }
45
-
46
  ht_cc();
1
+ <?php
2
+ /*
3
+ Plugin Name: WP Chatbot
4
+ Plugin URI: https://mobilemonkey.com/wp-chatbot/
5
+ Description: MobileMonkey’s OmniChat™ widget is the fastest and simplest way to add live chat to your website. Enjoy hassle-free chatbot integration with advanced live agent takeover.
6
+ Version: 4.6
7
+ Author: MobileMonkey
8
+ Author URI: https://mobilemonkey.com/wp-chatbot/
9
+ License: GPL2
10
+ License URI: https://www.gnu.org/licenses/gpl-2.0.html
11
+ Text Domain: wp-chatbot
12
+ */
13
+
14
+
15
+ if ( ! defined( 'ABSPATH' ) ) exit;
16
+
17
+
18
+ // Version - define HTCC_VERSION
19
+ if ( ! defined( 'HTCC_VERSION' ) ) {
20
+ define( 'HTCC_VERSION', '4.6' );
21
+ }
22
+
23
+
24
+ /**
25
+ * if premium set to true
26
+ * and change add suffix to name, version
27
+ * for wp.org - remove the pro folders
28
+ */
29
+ if ( ! defined( 'HTCC_PRO' ) ) {
30
+ define( 'HTCC_PRO', 'false' );
31
+ }
32
+
33
+ // define HTCC_PLUGIN_FILE
34
+ if ( ! defined( 'HTCC_PLUGIN_FILE' ) ) {
35
+ define( 'HTCC_PLUGIN_FILE', __FILE__ );
36
+ }
37
+
38
+ // include main file
39
+ require_once 'inc/class-ht-cc.php';
40
+
41
+ // create instance for the main file - HT_CC
42
+ function ht_cc() {
43
+ return HT_CC::instance();
44
+ }
45
+
46
  ht_cc();