Constant Contact Forms - Version 1.11.0

Version Description

  • Updated: New admin styling to update the overall look and feel of the plugin in the WordPress admin.
  • Updated: Amend honeypot field input for accessibility purposes.
  • Added: Plugin setting to disable the loading on Constant Contact plugin CSS on the frontend.
  • Added: Native browser validation for phone number (tel) field input type.
  • Fixed: Amended admin notification for Bad Request results.
Download this release

Release Info

Developer constantcontact
Plugin Icon 128x128 Constant Contact Forms
Version 1.11.0
Comparing to
See all releases

Code changes from version 1.10.1 to 1.11.0

Files changed (90) hide show
  1. assets/css/admin-debug.css +7 -0
  2. assets/css/admin-style.css +646 -692
  3. assets/css/style.css +93 -6
  4. assets/css/style.min.css +2 -2
  5. assets/images/check_circle.svg +0 -0
  6. assets/images/constant-contact-logo.png +0 -0
  7. assets/images/ctct-admin-notice-logo.png +0 -0
  8. assets/images/ctct-icon-2x.png +0 -0
  9. assets/images/ctct-icon.png +0 -0
  10. assets/images/error.svg +0 -0
  11. assets/js/ctct-plugin-admin.js +12 -1
  12. assets/js/ctct-plugin-admin.min.js +1 -1
  13. assets/js/ctct-plugin-admin.min.js.map +1 -1
  14. assets/js/ctct-plugin-admin/clipboard.js +85 -0
  15. assets/js/ctct-plugin-admin/index.js +2 -1
  16. assets/js/ctct-plugin-frontend.min.js +1 -1
  17. assets/js/ctct-plugin-frontend.min.js.map +1 -1
  18. assets/js/ctct-plugin-gutenberg.min.js +1 -1
  19. assets/js/ctct-plugin-gutenberg.min.js.map +1 -1
  20. assets/js/ctct-plugin-recaptcha-v2.min.js +1 -1
  21. assets/js/ctct-plugin-recaptcha-v2.min.js.map +1 -1
  22. assets/js/ctct-plugin-recaptcha.min.js +1 -1
  23. assets/js/ctct-plugin-recaptcha.min.js.map +1 -1
  24. assets/sass/_admin-about.scss +106 -0
  25. assets/sass/_admin-connect.scss +309 -0
  26. assets/sass/_admin-debug.scss +11 -0
  27. assets/sass/_admin-forms.scss +14 -8
  28. assets/sass/_admin-global-no-connection.scss +0 -302
  29. assets/sass/_admin-gutenberg.scss +4 -0
  30. assets/sass/_admin-notices.scss +4 -3
  31. assets/sass/_admin-pages.scss +110 -278
  32. assets/sass/_admin-toolbar.scss +152 -0
  33. assets/sass/_compatibility.scss +143 -1
  34. assets/sass/_forms.scss +2 -1
  35. assets/sass/_global.scss +1 -0
  36. assets/sass/_inputs.scss +8 -6
  37. assets/sass/_layout.scss +1 -0
  38. assets/sass/_mixins.scss +1 -1
  39. assets/sass/_modal.scss +22 -22
  40. assets/sass/_oath.scss +0 -84
  41. assets/sass/_variables.scss +11 -3
  42. assets/sass/admin-style.scss +4 -2
  43. constant-contact-forms.php +7 -2
  44. includes/cc-modules/form/includes/frontend.php +1 -1
  45. includes/class-admin-pages.php +133 -181
  46. includes/class-admin.php +145 -30
  47. includes/class-api.php +2 -2
  48. includes/class-beaver-builder.php +6 -6
  49. includes/class-connect.php +122 -121
  50. includes/class-cpts.php +2 -2
  51. includes/class-display.php +12 -5
  52. includes/class-elementor.php +6 -6
  53. includes/class-logging.php +49 -50
  54. includes/class-settings.php +31 -4
  55. includes/widgets/elementor-widget.php +9 -9
  56. languages/constant-contact-forms.pot +302 -274
  57. readme.txt +38 -16
  58. vendor/autoload.php +1 -1
  59. vendor/cmb2/cmb2/CHANGELOG.md +0 -765
  60. vendor/composer/ClassLoader.php +1 -1
  61. vendor/composer/autoload_classmap.php +0 -303
  62. vendor/composer/autoload_real.php +17 -8
  63. vendor/composer/autoload_static.php +4 -311
  64. vendor/constantcontact/constantcontact/.travis.yml +0 -20
  65. vendor/constantcontact/constantcontact/composer.json +0 -28
  66. vendor/defuse/php-encryption/composer.json +0 -35
  67. vendor/google/recaptcha/.travis.yml +0 -33
  68. vendor/google/recaptcha/composer.json +0 -39
  69. vendor/google/recaptcha/phpunit.xml.dist +0 -20
  70. vendor/guzzlehttp/guzzle/.travis.yml +0 -52
  71. vendor/guzzlehttp/guzzle/CHANGELOG.md +0 -1071
  72. vendor/guzzlehttp/guzzle/composer.json +0 -38
  73. vendor/guzzlehttp/ringphp/.editorconfig +0 -12
  74. vendor/guzzlehttp/ringphp/.travis.yml +0 -43
  75. vendor/guzzlehttp/ringphp/CHANGELOG.md +0 -118
  76. vendor/guzzlehttp/ringphp/composer.json +0 -43
  77. vendor/guzzlehttp/ringphp/phpunit.xml.dist +0 -14
  78. vendor/guzzlehttp/streams/.travis.yml +0 -17
  79. vendor/guzzlehttp/streams/composer.json +0 -28
  80. vendor/guzzlehttp/streams/phpunit.xml.dist +0 -17
  81. vendor/monolog/monolog/CHANGELOG.md +0 -370
  82. vendor/monolog/monolog/composer.json +0 -66
  83. vendor/monolog/monolog/phpunit.xml.dist +0 -19
  84. vendor/paragonie/random_compat/composer.json +0 -34
  85. vendor/paragonie/random_compat/lib/random.php +32 -0
  86. vendor/psr/log/composer.json +0 -26
  87. vendor/react/promise/.travis.yml +0 -28
  88. vendor/react/promise/CHANGELOG.md +0 -135
  89. vendor/react/promise/composer.json +0 -29
  90. vendor/react/promise/phpunit.xml.dist +0 -28
assets/css/admin-debug.css ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ .ctct_options_logging #ctct_error_logs {
2
+ height: 400px;
3
+ resize: vertical;
4
+ width: 100%;
5
+ padding: 25px;
6
+ margin: 15px 0 25px;
7
+ }
assets/css/admin-style.css CHANGED
@@ -26,6 +26,11 @@
26
  margin: 0;
27
  }
28
 
 
 
 
 
 
29
  .ctct-modal h3 {
30
  color: #005990;
31
  font-size: 18px;
@@ -80,11 +85,12 @@
80
  }
81
 
82
  .ctct-modal .ctct-modal-content .ctct-modal-header {
83
- background: #88c5e2 url("../images/cc-modal-bg.png") 50% 50% no-repeat;
84
  border-top-left-radius: 8px;
85
  border-top-right-radius: 8px;
86
- padding: 65px 20px 40px;
87
  text-align: center;
 
88
  }
89
 
90
  .ctct-modal .ctct-modal-content .ctct-modal-header p {
@@ -97,23 +103,22 @@
97
  color: #333;
98
  }
99
 
100
- .ctct-modal .ctct-modal-content .ctct-modal-header .ctct-logo img {
101
- max-width: 75%;
102
- }
103
-
104
  .ctct-modal .ctct-modal-content .ctct-modal-header .ctct-modal-close {
105
- color: #fff;
106
  cursor: pointer;
107
  font-size: 26px;
108
- height: 16px;
109
  line-height: 0;
110
  margin: 0;
111
  padding: 0;
112
  position: absolute;
113
- right: 10px;
 
114
  text-decoration: none;
115
- top: 18px;
116
- width: 16px;
 
 
 
117
  }
118
 
119
  .ctct-modal .ctct-modal-content .ctct-modal-header .ctct-modal-close::after {
@@ -123,11 +128,11 @@
123
  }
124
 
125
  .ctct-modal .ctct-modal-content .ctct-modal-footer {
126
- background-color: #efefee;
127
  border-bottom-left-radius: 8px;
128
  border-bottom-right-radius: 8px;
129
- border-top: 3px solid #fff;
130
- padding: 15px 15px 18px;
131
  text-align: center;
132
  }
133
 
@@ -169,6 +174,7 @@
169
  border: none;
170
  box-shadow: none;
171
  color: #0078c3;
 
172
  }
173
 
174
  .ctct-modal .ctct-modal-content .ctct-modal-footer .button.button-orange {
@@ -202,7 +208,7 @@
202
 
203
  .ctct-modal .ctct-modal-content .ctct-modal-body.ctct-privacy-modal-body {
204
  height: 350px;
205
- overflow: scroll;
206
  }
207
 
208
  .ctct-modal .ctct-modal-content .ctct-modal-body .ctct-modal-left,
@@ -285,10 +291,6 @@
285
  padding: 15px;
286
  }
287
 
288
- .ctct-modal .ctct-modal-content .ctct-modal-body.ctct-custom-textarea .ctct-modal-right img {
289
- max-width: 100%;
290
- }
291
-
292
  .ctct-modal .ctct-modal-content .ctct-modal-body .button {
293
  border-radius: 4px;
294
  color: #fff;
@@ -323,1024 +325,976 @@
323
  color: #555;
324
  }
325
 
326
- .post-type-ctct_forms .misc-pub-section.misc-pub-visibility, .post-type-ctct_forms .misc-pub-section.misc-pub-curtime {
327
  display: none;
 
 
328
  }
329
 
330
- body.post-type-ctct_lists .misc-pub-post-status {
331
- display: none;
 
 
 
 
 
 
 
 
332
  }
333
 
334
- body.post-type-ctct_forms #titlediv #title {
335
- height: 2.7em;
 
 
 
 
 
 
336
  }
337
 
338
- .ctct-admin-title-details {
339
- display: block;
340
- font-size: 0.6rem;
341
- line-height: 2rem;
342
  }
343
 
344
- #cmb2-metabox-ctct_1_optin_metabox .cmb2-id--ctct-opt-in-instructions,
345
- #cmb2-metabox-ctct_1_optin_metabox .cmb2-id--ctct-opt-in {
346
- display: none;
 
 
 
 
347
  }
348
 
349
- #ctct_0_list_metabox .cmb-row,
350
- #ctct_1_custom_form_css_metabox .cmb-row,
351
- #ctct_1_custom_input_css_metabox .cmb-row {
352
- padding-bottom: 0;
353
  }
354
 
355
- #cmb2-metabox-ctct_2_fields_metabox .cmb2-id--ctct-title {
356
- padding: 0.8rem 0 1rem;
 
 
 
357
  }
358
 
359
- #ctct_1_custom_form_css_metabox .cmb2-id-form-title-title {
360
- padding: 0.8rem 0 1rem;
 
361
  }
362
 
363
- #ctct_0_description_metabox #custom_fields_group_repeat .cmb-field-list .cmb-row:not(:last-of-type),
364
- #ctct_1_optin_metabox #custom_fields_group_repeat .cmb-field-list .cmb-row:not(:last-of-type),
365
- #ctct_2_fields_metabox #custom_fields_group_repeat .cmb-field-list .cmb-row:not(:last-of-type) {
366
- border-bottom: none;
367
- padding-bottom: 0.1em;
 
 
 
 
368
  }
369
 
370
- #ctct_0_description_metabox #custom_fields_group_repeat .required,
371
- #ctct_1_optin_metabox #custom_fields_group_repeat .required,
372
- #ctct_2_fields_metabox #custom_fields_group_repeat .required {
373
- padding-bottom: 0.1em;
374
- padding-top: 0.1em;
375
  }
376
 
377
- #ctct_0_description_metabox #default_fields_group_repeat .cmb-field-list > .cmb-row,
378
- #ctct_1_optin_metabox #default_fields_group_repeat .cmb-field-list > .cmb-row,
379
- #ctct_2_fields_metabox #default_fields_group_repeat .cmb-field-list > .cmb-row {
380
- padding-top: 0.5em;
 
381
  }
382
 
383
- #ctct_0_description_metabox #default_fields_group_repeat .cmb-field-list > .cmb-row:not(:last-of-type),
384
- #ctct_1_optin_metabox #default_fields_group_repeat .cmb-field-list > .cmb-row:not(:last-of-type),
385
- #ctct_2_fields_metabox #default_fields_group_repeat .cmb-field-list > .cmb-row:not(:last-of-type) {
386
- border-bottom: 1px solid #e9e9e9;
387
- padding-bottom: 0.1rem;
 
 
388
  }
389
 
390
- #ctct_0_description_metabox .cmb-repeat-group-wrap,
391
- #ctct_1_optin_metabox .cmb-repeat-group-wrap,
392
- #ctct_2_fields_metabox .cmb-repeat-group-wrap {
393
- padding: 0;
394
  }
395
 
396
- #ctct_0_description_metabox .cmb-repeat-group-wrap .cmb-repeatable-grouping,
397
- #ctct_1_optin_metabox .cmb-repeat-group-wrap .cmb-repeatable-grouping,
398
- #ctct_2_fields_metabox .cmb-repeat-group-wrap .cmb-repeatable-grouping {
399
- margin: 0 0 1.5rem 0;
400
  }
401
 
402
- #ctct_0_description_metabox .cmb-repeat-group-wrap .cmb-repeatable-grouping .cmb-row,
403
- #ctct_1_optin_metabox .cmb-repeat-group-wrap .cmb-repeatable-grouping .cmb-row,
404
- #ctct_2_fields_metabox .cmb-repeat-group-wrap .cmb-repeatable-grouping .cmb-row {
405
- margin: 0 0 0 0.3rem;
406
  }
407
 
408
- #ctct_0_description_metabox .cmb-repeat-group-wrap .cmb-repeat-group-field,
409
- #ctct_1_optin_metabox .cmb-repeat-group-wrap .cmb-repeat-group-field,
410
- #ctct_2_fields_metabox .cmb-repeat-group-wrap .cmb-repeat-group-field {
411
- padding-top: 0.2em;
 
 
 
 
 
 
412
  }
413
 
414
- #ctct_0_description_metabox .postbox-container .cmb-remove-field-row,
415
- #ctct_1_optin_metabox .postbox-container .cmb-remove-field-row,
416
- #ctct_2_fields_metabox .postbox-container .cmb-remove-field-row {
417
- padding-bottom: 0.8em;
418
- padding-top: 0.8em;
419
  }
420
 
421
- #ctct_0_description_metabox button.cmb-add-group-row,
422
- #ctct_1_optin_metabox button.cmb-add-group-row,
423
- #ctct_2_fields_metabox button.cmb-add-group-row {
424
- background: #008ec2 !important;
425
- border-color: #006799 !important;
426
- color: #fff !important;
427
  }
428
 
429
- #ctct_0_description_metabox button.cmb-remove-group-row,
430
- #ctct_1_optin_metabox button.cmb-remove-group-row,
431
- #ctct_2_fields_metabox button.cmb-remove-group-row {
432
- background: #ffdfa3 !important;
433
- display: none;
434
  }
435
 
436
- #ctct_0_description_metabox .cmb2-metabox button.dashicons-before.dashicons-no-alt.cmb-remove-group-row,
437
- #ctct_1_optin_metabox .cmb2-metabox button.dashicons-before.dashicons-no-alt.cmb-remove-group-row,
438
- #ctct_2_fields_metabox .cmb2-metabox button.dashicons-before.dashicons-no-alt.cmb-remove-group-row {
439
- top: 0.3rem;
 
 
 
 
 
440
  }
441
 
442
- #ctct_0_description_metabox h3.cmb-group-title.cmbhandle-title,
443
- #ctct_1_optin_metabox h3.cmb-group-title.cmbhandle-title,
444
- #ctct_2_fields_metabox h3.cmb-group-title.cmbhandle-title {
445
- padding-left: 1em;
446
  }
447
 
448
- #ctct_1_optin_metabox .cmb-row {
449
- border-bottom: none;
450
- padding: 0.5rem 0;
451
  }
452
 
453
- #ctct_1_optin_metabox .cmb2-id--ctct-list {
454
- padding-bottom: 0.5em;
 
 
 
 
 
 
 
 
 
 
455
  }
456
 
457
- #ctct_1_optin_metabox .cmb-th {
458
- width: 25%;
459
  }
460
 
461
- #ctct_1_optin_metabox .cmb-th + .cmb-td {
462
- width: 70%;
 
 
463
  }
464
 
465
- #ctct_option_metabox_settings span.cmb2-metabox-description {
466
- color: #444444;
467
  }
468
 
469
- #cmb2-metabox-email_settings .cmb-row,
470
- #cmb2-metabox-ctct_2_generated_metabox .cmb-row,
471
- #cmb2-metabox-ctct_1_custom_input_css_metabox .cmb-row {
472
- padding-bottom: 0 !important;
 
 
 
 
 
 
 
 
 
473
  }
474
 
475
- #side-sortables #ctct_1_custom_form_css_metabox .cmb-row {
476
- padding: 0.5rem 0 0 0;
 
 
 
477
  }
478
 
479
- #side-sortables #ctct_1_custom_form_css_metabox .cmb-th {
480
- padding-bottom: 0;
 
 
 
481
  }
482
 
483
- #side-sortables #ctct_1_custom_form_css_metabox .cmb-type-title {
484
- border-bottom: none;
 
 
 
 
 
 
 
485
  }
486
 
487
- #side-sortables #ctct_1_custom_form_css_metabox .cmb2-id--ctct-form-title-font-size,
488
- #side-sortables #ctct_1_custom_form_css_metabox .cmb2-id--ctct-form-description-font-size {
489
- border-bottom: none;
490
- margin-bottom: 0;
491
  }
492
 
493
- #side-sortables #ctct_1_custom_input_css_metabox .cmb2-id-form-padding-title {
494
- border-bottom: 0;
495
- padding-bottom: 0;
 
 
496
  }
497
 
498
- #side-sortables #ctct_1_custom_input_css_metabox .cmb2-id--ctct-input-margin-top,
499
- #side-sortables #ctct_1_custom_input_css_metabox .cmb2-id--ctct-input-margin-right {
500
- margin-bottom: 0;
501
- margin-top: 0;
502
- padding-bottom: 0;
503
- padding-top: 0;
 
 
 
 
 
504
  }
505
 
506
- #side-sortables #ctct_1_custom_input_css_metabox .cmb2-id--ctct-form-label-placement {
507
- margin-bottom: 0;
508
- padding-bottom: 0;
 
509
  }
510
 
511
- #side-sortables #ctct_1_custom_input_css_metabox .cmb-type-text-small {
512
- border-bottom: none;
513
- float: left;
514
- width: 50%;
515
  }
516
 
517
- #side-sortables #ctct_1_custom_input_css_metabox .cmb-type-text-small .cmb-th {
518
- padding-bottom: 0;
 
519
  }
520
 
521
- #side-sortables .cmb2-id--ctct-generated-shortcode > .cmb-th {
522
- display: none;
523
  }
524
 
525
- .cmb2-id--ctct-list .cmb2-list {
526
- background: linear-gradient(#fff 33%, transparent), linear-gradient(transparent, #fff 66%) 0 100%, radial-gradient(farthest-side at 50% 0, rgba(0, 0, 0, 0.5), transparent), radial-gradient(farthest-side at 50% 100%, rgba(0, 0, 0, 0.5), transparent) 0 100%;
527
- background-attachment: local, local, scroll, scroll;
528
- background-color: #fff;
529
- background-repeat: no-repeat;
530
- background-size: 100% 30px, 100% 30px, 100% 10px, 100% 10px;
531
- max-height: 10rem;
532
- overflow-y: auto;
533
  }
534
 
535
- .ui-dialog .cmb-type-checkbox.cmb2-id--ctct-show-title .cmb-th {
536
- width: 90px;
537
  }
538
 
539
- #adminmenu .wp-submenu a[href='edit.php?post_type=ctct_forms&page=ctct_options_connect'] {
540
- color: #3ad182;
 
 
541
  }
542
 
543
- .ctct_options_connect {
544
- box-sizing: border-box;
545
- padding: 70px;
546
- text-align: center;
547
- width: 100%;
548
  }
549
 
550
- .ctct_options_connect hr {
551
- margin-bottom: 45px;
 
 
552
  }
553
 
554
- @media screen and (max-width: 782px) {
555
- .ctct_options_connect {
556
- margin-left: -10px;
557
- padding: 30px 30px 0;
558
- }
 
 
559
  }
560
 
561
- .ctct_options_connect .ctct-call-to-action {
562
- margin-bottom: 45px;
563
- overflow: hidden;
564
- text-align: left;
 
 
 
 
 
 
 
 
 
 
 
565
  width: 100%;
 
566
  }
567
 
568
- .ctct_options_connect .ctct-call-to-action p {
569
- float: left;
570
- margin: 0;
 
571
  }
572
 
573
- .ctct_options_connect .ctct-call-to-action a {
574
- float: right;
575
- text-align: center;
576
  }
577
 
578
- .ctct_options_connect .ctct-call-to-action a:focus {
579
- outline: 1px dotted #000;
 
 
580
  }
581
 
582
- @media screen and (max-width: 782px) {
583
- .ctct_options_connect .ctct-call-to-action a {
584
- float: none;
585
- }
586
  }
587
 
588
- .ctct_options_connect .ctct-call-to-action .ctct-call-to-action-text a {
589
- float: none;
 
 
590
  }
591
 
592
- .ctct_options_connect .ctct-call-to-action .ctct-call-to-action-text a:focus {
593
- outline: 1px dotted #000;
 
 
 
 
 
 
594
  }
595
 
596
- .ctct_options_connect .ctct-call-to-action .ctct-call-to-action-text small {
597
- line-height: 1.2px;
 
598
  }
599
 
600
- .ctct_options_connect .ctct-call-to-action #subbox {
601
- height: 40px;
602
- margin: 15px 0;
603
- width: 50%;
604
  }
605
 
606
- .ctct_options_connect .ctct-call-to-action #subbutton {
607
- color: #0078c3;
608
- float: right;
 
609
  }
610
 
611
- @media screen and (max-width: 782px) {
612
- .ctct_options_connect .ctct-call-to-action #subbutton {
613
- float: none;
614
- }
615
  }
616
 
617
- .ctct_options_connect img {
618
- height: auto;
619
- max-width: 400px;
 
 
 
620
  width: 100%;
621
  }
622
 
623
- .ctct_options_connect h3 {
624
- color: #005990;
625
- font-size: 20px;
626
- line-height: 1.2;
627
- margin-bottom: 10px;
628
- margin-top: 10px;
629
  }
630
 
631
- .ctct_options_connect p {
632
- color: #606d78;
633
- font-size: 14.7px;
634
- margin: 0;
635
  }
636
 
637
- .ctct_options_connect p.ctct-description {
638
- font-size: 16px;
639
- margin-bottom: 50px;
640
- margin-top: 5px;
641
  }
642
 
643
- .ctct_options_connect p.small {
644
- color: #747e88;
645
- font-size: 13.3px;
646
- margin: 15px auto 0;
647
  }
648
 
649
- @media screen and (max-width: 782px) {
650
- .ctct_options_connect p.small {
651
- max-width: 100%;
 
652
  }
653
  }
654
 
655
- .ctct_options_connect .ctct-body {
656
- margin: 0 auto;
657
- max-width: 75%;
658
- overflow-y: hidden;
659
- position: relative;
660
  }
661
 
662
- .ctct_options_connect .ctct-body::after {
663
- clear: both;
664
- content: '';
665
- display: table;
666
  }
667
 
668
- .ctct_options_connect .ctct-body .ctct-call-to-action-text {
669
- float: left;
670
- width: 75%;
 
671
  }
672
 
673
- @media screen and (max-width: 782px) {
674
- .ctct_options_connect .ctct-body .ctct-call-to-action-text {
675
- width: 100%;
676
- }
677
  }
678
 
679
- .ctct_options_connect .ctct-body .ctct-call-to-action-text h3 {
680
- margin-top: 0;
 
 
 
 
 
 
681
  }
682
 
683
- .ctct_options_connect .ctct-body .clear {
684
- clear: both;
685
- height: 0;
686
- width: 100%;
687
  }
688
 
689
- .ctct_options_connect .ctct-body .left,
690
- .ctct_options_connect .ctct-body .right {
691
- box-sizing: border-box;
692
- float: left;
693
- margin-bottom: -500px;
694
- padding: 15px 0 520px;
695
- text-align: center;
696
- width: 50%;
697
  }
698
 
699
- @media screen and (max-width: 782px) {
700
- .ctct_options_connect .ctct-body .left,
701
- .ctct_options_connect .ctct-body .right {
702
- float: none;
703
- margin-bottom: 0;
704
- padding: 15px 0;
705
- width: 100%;
706
- }
707
  }
708
 
709
- .ctct_options_connect .ctct-body .left img.flare,
710
- .ctct_options_connect .ctct-body .left svg.flare,
711
- .ctct_options_connect .ctct-body .right img.flare,
712
- .ctct_options_connect .ctct-body .right svg.flare {
713
- height: auto;
714
- width: 180px;
715
  }
716
 
717
- .ctct_options_connect .ctct-body .left {
718
- border-right: 1px solid #ddd;
719
- padding-right: 70px;
 
 
 
 
 
 
 
720
  }
721
 
722
- @media screen and (max-width: 782px) {
723
- .ctct_options_connect .ctct-body .left {
724
- border-bottom: 1px solid #ddd;
725
- border-right: 0;
726
- padding-bottom: 30px;
727
- padding-right: 0;
728
  }
729
  }
730
 
731
- .ctct_options_connect .ctct-body .left p {
732
- margin: 0 auto 25px;
733
- max-width: 220px;
734
  }
735
 
736
- @media screen and (max-width: 782px) {
737
- .ctct_options_connect .ctct-body .left p {
738
- max-width: 100%;
739
- }
 
740
  }
741
 
742
- .ctct_options_connect .ctct-body .right {
743
- padding-left: 70px;
744
  }
745
 
746
- @media screen and (max-width: 782px) {
747
- .ctct_options_connect .ctct-body .right {
748
- padding-left: 0;
749
- padding-top: 30px;
750
- }
751
  }
752
 
753
- .ctct_options_connect .ctct-body .right p {
754
- display: block;
755
- margin: 0 auto 25px;
756
- max-width: 350px;
757
  }
758
 
759
- @media screen and (max-width: 782px) {
760
- .ctct_options_connect .ctct-body .right p {
761
- max-width: 100%;
762
- }
 
 
 
763
  }
764
 
765
- .ctct_options_connect .ctct-body .button {
766
  border-radius: 4px;
767
  color: #fff;
768
  font-size: 16px;
769
  font-weight: 600;
770
  height: auto;
771
  line-height: 1;
772
- margin-bottom: 10px;
773
  min-width: 180px;
774
  padding: 14px 30px;
 
775
  }
776
 
777
- .ctct_options_connect .ctct-body .button.button-orange {
778
  background-color: #ffa901;
779
  border: 1px solid #cd8800;
780
  }
781
 
782
- .ctct_options_connect .ctct-body .button.button-orange:hover, .ctct_options_connect .ctct-body .button.button-orange:focus {
783
  background-color: #cd8800;
784
  }
785
 
786
- .ctct_options_connect .ctct-body .button.button-blue {
787
  background-color: #0078c3;
788
  border: 1px solid #005990;
789
  }
790
 
791
- .ctct_options_connect .ctct-body .button.button-blue:hover, .ctct_options_connect .ctct-body .button.button-blue:focus {
792
  background-color: #005990;
793
  }
794
 
795
- .ctct_options_connect .ctct-body .ctct-connected .ctct-connected-next-step {
796
- margin-bottom: 40px;
 
 
797
  }
798
 
799
- .ctct_options_connect .ctct-body .ctct-connected .ctct-connected-next-step h3 {
800
- color: #2ecc40;
801
  }
802
 
803
- .ctct_options_connect .ctct-body .ctct-connected .ctct-disconnect-text {
804
- float: left;
805
- margin-bottom: 50px;
806
- overflow: hidden;
807
- text-align: left;
808
  }
809
 
810
- .ctct_options_connect .ctct-body .ctct-connected form {
811
- float: right;
812
  }
813
 
814
- .ctct_options_connect .ctct-body .ctct-connected .button {
815
- color: #0078c3;
816
  }
817
 
818
- .ctct_options_connect .ctct-body .ctct-connected .button.button-blue {
819
- color: #fff;
820
  }
821
 
822
- .ctct_options_connect .ctct-body .ctct-connected .ctct-connected-next-step {
823
- clear: both;
 
 
824
  }
825
 
826
- .ctct_options_connect .ctct-body .ctct-connected .ctct-connect-ga-optin {
827
- margin-top: 15px;
 
828
  }
829
 
830
- @media screen and (max-width: 782px) {
831
- .ctct_options_connect .ctct-body .ctct-connected .ctct-disconnect-text {
832
- float: none;
833
- text-align: center;
834
- }
835
- .ctct_options_connect .ctct-body .ctct-connected form {
836
- float: none;
837
- }
838
  }
839
 
840
- .ctct-error {
841
- background: none !important;
842
- border: 1px solid #ff4136;
843
- border-radius: 3px;
844
- box-shadow: none !important;
845
- display: inline-block;
846
- margin: 0 0 20px 0 !important;
847
  }
848
 
849
- .ctct-error p {
850
- color: #ff4136 !important;
851
  }
852
 
853
- .updated.ctct-admin-notice,
854
- .error.ctct-admin-notice {
855
- padding: 1rem 38px 1rem 1rem;
856
- position: relative;
 
857
  }
858
 
859
- a.ctct-notice-dismiss {
860
- text-decoration: none;
 
 
 
861
  }
862
 
863
- #ctct-admin-notice-activation {
864
- padding: 1rem 1rem 0 1rem;
 
 
865
  }
866
 
867
- #ctct-admin-notice-activation .ctct-notice-intro {
868
- line-height: 1.5rem;
869
- max-width: 600px;
 
 
870
  }
871
 
872
- #ctct-admin-notice-activation .ctct-notice-button,
873
- #ctct-admin-notice-activation .ctct-notice-button:active {
874
- margin: 0.5rem;
875
- vertical-align: middle;
876
  }
877
 
878
- .ctct-admin-notice {
879
- overflow: hidden;
 
 
880
  }
881
 
882
- .ctct-admin-notice.updated {
883
- border-left-color: #1a5285;
 
 
884
  }
885
 
886
- .ctct-admin-notice > div {
887
- float: left;
 
 
888
  }
889
 
890
- .ctct-admin-notice .admin-notice-message {
891
- margin-left: 15px;
892
- width: 80%;
 
 
893
  }
894
 
895
- .ctct-admin-notice .admin-notice-message h4 {
896
- color: #1a5285;
897
- margin: 0 0 10px;
 
 
 
898
  }
899
 
900
- .ctct-admin-notice .admin-notice-message > div {
901
- float: left;
 
 
 
902
  }
903
 
904
- .constant-contact-about {
905
- padding: 15px;
 
 
906
  }
907
 
908
- @media screen and (max-width: 782px) {
909
- .constant-contact-about {
910
- padding: 0;
911
- }
912
  }
913
 
914
- .constant-contact-about .ctct-section {
915
- margin-bottom: 50px;
 
916
  }
917
 
918
- .constant-contact-about h1.about-header {
919
- color: #1a5285;
920
- font-size: 26px;
921
- margin: 0 0 15px 0;
922
  }
923
 
924
- .constant-contact-about h3 {
925
- padding: 20px 0;
926
  }
927
 
928
- .constant-contact-about p {
929
- color: #333;
930
- font-size: 16px;
931
- font-weight: 300;
932
  }
933
 
934
- .constant-contact-about .clear {
935
- clear: both;
936
- height: 0;
937
- width: 100%;
938
  }
939
 
940
- .constant-contact-about .button {
941
- border-radius: 4px;
942
- color: #fff;
943
- font-size: 16px;
944
- font-weight: 600;
945
- height: auto;
946
- line-height: 1;
947
- margin-bottom: 10px;
948
- min-width: 180px;
949
- padding: 14px 30px;
950
- text-align: center;
951
  }
952
 
953
- .constant-contact-about .button.button-orange {
954
- background-color: #ffa901;
955
- border: 1px solid #cd8800;
956
  }
957
 
958
- .constant-contact-about .button.button-orange:hover, .constant-contact-about .button.button-orange:focus {
959
- background-color: #cd8800;
960
  }
961
 
962
- .constant-contact-about .button.button-blue {
963
- background-color: #0078c3;
964
- border: 1px solid #005990;
965
  }
966
 
967
- .constant-contact-about .button.button-blue:hover, .constant-contact-about .button.button-blue:focus {
968
- background-color: #005990;
 
 
969
  }
970
 
971
- .constant-contact-about .about-text {
972
- margin: 0 50px 0 0;
 
973
  }
974
 
975
- @media screen and (max-width: 482px) {
976
- .constant-contact-about .about-text {
977
- margin: 0;
978
- }
 
 
979
  }
980
 
981
- .constant-contact-about .feature-section.two-col > div {
982
- float: left;
983
- width: 49%;
984
  }
985
 
986
- .constant-contact-about .headline-feature {
987
- max-width: 90%;
 
 
988
  }
989
 
990
- @media screen and (max-width: 782px) {
991
- .constant-contact-about .headline-feature {
992
- max-width: 100%;
993
- }
994
  }
995
 
996
- .constant-contact-about .headline-feature p {
997
- margin-bottom: 0;
998
  }
999
 
1000
- .constant-contact-about .headline-feature h5 {
1001
- color: #747e88;
1002
- font-style: italic;
1003
- font-weight: 300;
 
 
 
 
1004
  }
1005
 
1006
- .constant-contact-about .headline-title,
1007
- .constant-contact-about .c-text {
1008
- text-align: center;
1009
  }
1010
 
1011
- .constant-contact-about .featured-image {
1012
- min-height: 150px;
 
1013
  position: relative;
1014
  }
1015
 
1016
- .constant-contact-about .fff-img {
1017
- height: 315px;
1018
- margin: 20px;
1019
- max-width: 720px;
1020
- overflow: hidden;
1021
- }
1022
-
1023
- .constant-contact-about .introduction {
1024
- padding: 20px 0;
1025
- }
1026
-
1027
- .constant-contact-about .featured-title {
1028
- color: #fff;
1029
- font-size: 2rem;
1030
- font-weight: bold;
1031
- margin: 0 auto;
1032
- position: absolute;
1033
- text-align: center;
1034
- text-shadow: 0 0 15px #000;
1035
- top: 80px;
1036
- width: 100%;
1037
  }
1038
 
1039
- @media screen and (max-width: 482px) {
1040
- .constant-contact-about .featured-title {
1041
- color: #1a5285;
1042
- font-size: 26px;
1043
- line-height: 28px;
1044
- margin-top: 15px;
1045
- position: relative;
1046
- text-shadow: none;
1047
- top: 0;
1048
- }
1049
  }
1050
 
1051
- .constant-contact-about .featured-introduction {
1052
- color: #fff;
1053
- font-size: 1.2rem;
1054
- margin: 0 auto;
1055
- position: absolute;
1056
- text-align: center;
1057
- text-shadow: 0 0 15px #000;
1058
- top: 120px;
1059
- width: 100%;
1060
  }
1061
 
1062
- @media screen and (max-width: 482px) {
1063
- .constant-contact-about .featured-introduction {
1064
- color: #1a5285;
1065
- line-height: 1;
1066
- margin-top: 15px;
1067
- position: relative;
1068
- text-shadow: none;
1069
- top: 0;
1070
- }
1071
  }
1072
 
1073
- .constant-contact-about .hide-overflow {
1074
  overflow: hidden;
1075
- position: relative;
1076
  }
1077
 
1078
- .constant-contact-about .hide-overflow hr {
1079
- margin-top: 30px;
1080
- }
1081
-
1082
- .constant-contact-about .hide-overflow h2 {
1083
- color: #1a5285;
1084
- font-size: 16px;
1085
- font-weight: 400;
1086
- margin-top: 30px;
1087
- text-align: left;
1088
  }
1089
 
1090
- .constant-contact-about .left-side {
1091
- box-sizing: border-box;
1092
  float: left;
1093
- padding-right: 160px;
1094
- }
1095
-
1096
- @media screen and (max-width: 482px) {
1097
- .constant-contact-about .left-side {
1098
- padding-right: 0;
1099
- }
1100
- }
1101
-
1102
- .constant-contact-about .plugin-badge {
1103
- float: right;
1104
- margin-left: 40px;
1105
- max-height: 180px;
1106
- max-width: 160px;
1107
- }
1108
-
1109
- @media screen and (max-width: 482px) {
1110
- .constant-contact-about .plugin-badge {
1111
- display: none;
1112
- }
1113
- }
1114
-
1115
- .constant-contact-about .feature-image {
1116
- text-align: center;
1117
- }
1118
-
1119
- .cc-a-block {
1120
- margin: 0 auto;
1121
- max-width: 90%;
1122
- padding: 50px 0;
1123
- text-align: center;
1124
- }
1125
-
1126
- .cc-a-block::after {
1127
- clear: both;
1128
- content: '';
1129
- display: table;
1130
  }
1131
 
1132
- @media screen and (max-width: 482px) {
1133
- .cc-a-block {
1134
- padding: 25px 0;
1135
- }
1136
  }
1137
 
1138
- .cc-a-block h3 {
1139
  color: #1a5285;
1140
- font-size: 21px;
1141
- font-weight: 300;
1142
- height: 63px;
1143
- margin: 0 auto;
1144
- max-width: 70%;
1145
- }
1146
-
1147
- @media screen and (max-width: 782px) {
1148
- .cc-a-block h3 {
1149
- height: auto;
1150
- max-width: 100%;
1151
- }
1152
  }
1153
 
1154
- .cc-a-block .left,
1155
- .cc-a-block .right {
1156
  float: left;
1157
- width: 50%;
1158
  }
1159
 
1160
- .cc-a-block .left::after,
1161
- .cc-a-block .right::after {
1162
- clear: both;
1163
- content: '';
1164
- display: table;
1165
  }
1166
 
1167
- @media screen and (max-width: 482px) {
1168
- .cc-a-block .left,
1169
- .cc-a-block .right {
1170
- float: none;
1171
- width: 100%;
1172
- }
1173
  }
1174
 
1175
- .cc-a-block .left .ad-1,
1176
- .cc-a-block .left .ad-2,
1177
- .cc-a-block .right .ad-1,
1178
- .cc-a-block .right .ad-2 {
1179
- width: 90%;
1180
  }
1181
 
1182
- @media screen and (max-width: 482px) {
1183
- .cc-a-block .left .ad-1,
1184
- .cc-a-block .left .ad-2,
1185
- .cc-a-block .right .ad-1,
1186
- .cc-a-block .right .ad-2 {
1187
- float: none;
1188
- width: 100%;
1189
  }
1190
  }
1191
 
1192
- .cc-a-block .left .ad-1 img,
1193
- .cc-a-block .left .ad-2 img,
1194
- .cc-a-block .right .ad-1 img,
1195
- .cc-a-block .right .ad-2 img {
1196
- height: auto;
1197
- width: 100%;
1198
- }
1199
-
1200
- .cc-a-block .left .ad-1,
1201
- .cc-a-block .right .ad-1 {
1202
- float: left;
1203
  }
1204
 
1205
- .cc-a-block .left .ad-1 h3,
1206
- .cc-a-block .right .ad-1 h3 {
1207
- height: 47px;
1208
- padding-top: 35px;
1209
  }
1210
 
1211
- .cc-a-block .left .ad-2,
1212
- .cc-a-block .right .ad-2 {
1213
- float: right;
1214
  }
1215
 
1216
- .ctct-bonus-points {
1217
- color: #2b5e8c;
1218
  font-size: 16px;
1219
- font-weight: 300;
1220
- list-style: circle;
1221
- padding-left: 50px;
1222
  }
1223
 
1224
- .section-try-us .ctct-bonus-points {
1225
- margin-bottom: 50px;
1226
  }
1227
 
1228
- .section-try-us a.button {
1229
- margin-right: 40px;
1230
  }
1231
 
1232
- .section-try-us a.ctct-connect {
1233
- font-weight: bold;
 
 
 
1234
  }
1235
 
1236
- .section-try-us a:focus {
1237
- outline: 1px dotted #000;
 
 
 
 
 
1238
  }
1239
 
1240
- .section-marketing-tips #subbox {
1241
- height: 40px;
1242
- width: 50%;
1243
  }
1244
 
1245
- #cmb2-metabox-ctct_option_metabox_settings .regular-text {
1246
- width: 500px;
1247
- }
1248
-
1249
- .cmb2-options-page[class*="option-ctct_options_settings_"] .cmb2-metabox > .cmb-row {
1250
- background: transparent;
1251
- border: none;
1252
- box-shadow: none;
1253
  }
1254
 
1255
- .ctct-body #ctct_error_logs {
1256
- height: 400px;
1257
- resize: vertical;
1258
- width: 100%;
1259
  }
1260
 
1261
- .ctct-logo {
1262
- max-width: 400px;
 
1263
  }
1264
 
1265
- .ctct_options_connect {
1266
- box-sizing: border-box;
1267
- padding: 70px;
1268
- text-align: center;
1269
- width: 100%;
1270
  }
1271
 
1272
- @media screen and (max-width: 782px) {
1273
- .ctct_options_connect {
1274
- margin-left: -10px;
1275
- padding: 30px 30px 0;
1276
- }
1277
  }
1278
 
1279
- .ctct_options_connect img {
1280
- height: auto;
1281
- max-width: 400px;
1282
  width: 100%;
 
 
 
 
 
1283
  }
1284
 
1285
- .ctct_options_connect p {
1286
- color: #606d78;
1287
- font-size: 16px;
1288
- }
1289
-
1290
- .ctct_options_connect .ctct-description {
1291
- text-align: left;
1292
  }
1293
 
1294
- .ctct_options_connect .ctct-body {
1295
- margin: 0 auto;
1296
- max-width: 75%;
1297
- overflow-y: hidden;
1298
- padding: 0 15px;
1299
- position: relative;
1300
  }
1301
 
1302
- .ctct_options_connect .ctct-body::after {
1303
- clear: both;
1304
- content: '';
1305
- display: table;
 
 
 
 
 
 
 
1306
  }
1307
 
1308
- .ctct_options_connect .ctct-body .notice {
1309
- background: none;
1310
- border-left: none;
1311
  box-shadow: none;
1312
- margin: 0 0 20px 0;
1313
- padding: 0;
1314
  }
1315
 
1316
- .ctct_options_connect .ctct-body .button {
1317
  border-radius: 4px;
1318
- color: #fff;
1319
- font-size: 16px;
1320
- font-weight: 600;
1321
- height: auto;
1322
- line-height: 1;
1323
- margin-bottom: 10px;
1324
- min-width: 180px;
1325
- padding: 14px 30px;
1326
- }
1327
-
1328
- .ctct_options_connect .ctct-body .button.button-orange {
1329
- background-color: #ffa901;
1330
- border: 1px solid #cd8800;
1331
- }
1332
-
1333
- .ctct_options_connect .ctct-body .button.button-orange:hover, .ctct_options_connect .ctct-body .button.button-orange:focus {
1334
- background-color: #cd8800;
1335
- }
1336
-
1337
- .ctct_options_connect .ctct-body .button.button-blue {
1338
- background-color: #0078c3;
1339
- border: 1px solid #005990;
1340
- }
1341
-
1342
- .ctct_options_connect .ctct-body .button.button-blue:hover, .ctct_options_connect .ctct-body .button.button-blue:focus {
1343
- background-color: #005990;
1344
  }
1345
 
1346
  .ctct-block-title {
26
  margin: 0;
27
  }
28
 
29
+ .ctct-modal h2 img {
30
+ display: block;
31
+ max-width: 300px;
32
+ }
33
+
34
  .ctct-modal h3 {
35
  color: #005990;
36
  font-size: 18px;
85
  }
86
 
87
  .ctct-modal .ctct-modal-content .ctct-modal-header {
88
+ background: #f7f7f7;
89
  border-top-left-radius: 8px;
90
  border-top-right-radius: 8px;
91
+ padding: 30px;
92
  text-align: center;
93
+ border-bottom: 1px solid #fff;
94
  }
95
 
96
  .ctct-modal .ctct-modal-content .ctct-modal-header p {
103
  color: #333;
104
  }
105
 
 
 
 
 
106
  .ctct-modal .ctct-modal-content .ctct-modal-header .ctct-modal-close {
107
+ color: #000;
108
  cursor: pointer;
109
  font-size: 26px;
 
110
  line-height: 0;
111
  margin: 0;
112
  padding: 0;
113
  position: absolute;
114
+ right: 15px;
115
+ top: 15px;
116
  text-decoration: none;
117
+ width: 24px;
118
+ height: 24px;
119
+ display: flex;
120
+ align-items: center;
121
+ justify-content: center;
122
  }
123
 
124
  .ctct-modal .ctct-modal-content .ctct-modal-header .ctct-modal-close::after {
128
  }
129
 
130
  .ctct-modal .ctct-modal-content .ctct-modal-footer {
131
+ background-color: #f7f7f7;
132
  border-bottom-left-radius: 8px;
133
  border-bottom-right-radius: 8px;
134
+ border-top: 1px solid #fff;
135
+ padding: 20px;
136
  text-align: center;
137
  }
138
 
174
  border: none;
175
  box-shadow: none;
176
  color: #0078c3;
177
+ background-color: #fff;
178
  }
179
 
180
  .ctct-modal .ctct-modal-content .ctct-modal-footer .button.button-orange {
208
 
209
  .ctct-modal .ctct-modal-content .ctct-modal-body.ctct-privacy-modal-body {
210
  height: 350px;
211
+ overflow-y: auto;
212
  }
213
 
214
  .ctct-modal .ctct-modal-content .ctct-modal-body .ctct-modal-left,
291
  padding: 15px;
292
  }
293
 
 
 
 
 
294
  .ctct-modal .ctct-modal-content .ctct-modal-body .button {
295
  border-radius: 4px;
296
  color: #fff;
325
  color: #555;
326
  }
327
 
328
+ .ctct-header {
329
  display: none;
330
+ position: relative;
331
+ z-index: 2;
332
  }
333
 
334
+ @media (min-width: 599px) {
335
+ .ctct-header {
336
+ margin: 0 0 0 -20px;
337
+ padding: 0 0 0 20px;
338
+ background-color: #fff;
339
+ border-bottom: 1px solid #c3c4c7;
340
+ display: flex;
341
+ width: 100%;
342
+ align-items: center;
343
+ }
344
  }
345
 
346
+ .ctct-header h2 {
347
+ margin: 0;
348
+ padding: 0 0 0 39px;
349
+ min-height: 32px;
350
+ line-height: 32px;
351
+ background: #fff url(../images/ctct-icon-2x.png) no-repeat 0 48%;
352
+ background-size: 32px 32px;
353
+ text-indent: -9999px;
354
  }
355
 
356
+ @media (min-width: 767px) {
357
+ .ctct-header h2 {
358
+ text-indent: 0;
359
+ }
360
  }
361
 
362
+ .ctct-header ul {
363
+ padding: 0 0 0 20px;
364
+ margin: 0;
365
+ flex: 1;
366
+ display: flex;
367
+ align-items: center;
368
+ width: 100%;
369
  }
370
 
371
+ .ctct-header ul li {
372
+ margin: 0 15px 0 0;
373
+ padding: 0;
 
374
  }
375
 
376
+ .ctct-header ul li a {
377
+ padding: 20px 5px;
378
+ display: block;
379
+ text-decoration: none;
380
+ position: relative;
381
  }
382
 
383
+ .ctct-header ul li a.is-active {
384
+ font-weight: 600;
385
+ text-decoration: underline;
386
  }
387
 
388
+ .ctct-header ul li a.is-active::after, .ctct-header ul li a.is-active::before {
389
+ top: 100%;
390
+ left: 50%;
391
+ border: solid transparent;
392
+ content: "";
393
+ height: 0;
394
+ width: 0;
395
+ position: absolute;
396
+ pointer-events: none;
397
  }
398
 
399
+ .ctct-header ul li a.is-active::after {
400
+ border-color: rgba(255, 255, 255, 0);
401
+ border-top-color: #fff;
402
+ border-width: 7px;
403
+ margin-left: -7px;
404
  }
405
 
406
+ .ctct-header ul li a.is-active::before {
407
+ border-color: rgba(195, 196, 199, 0);
408
+ border-top-color: #c3c4c7;
409
+ border-width: 8px;
410
+ margin-left: -8px;
411
  }
412
 
413
+ .ctct-header ul li a.ctct-connect-btn {
414
+ color: #fff;
415
+ background-color: #1856ed;
416
+ border: 1px solid #2a57d5;
417
+ padding: 8px;
418
+ border-radius: 3px;
419
+ font-weight: 500;
420
  }
421
 
422
+ .ctct-header ul li a.ctct-connect-btn:hover, .ctct-header ul li a.ctct-connect-btn:focus {
423
+ background-color: #2a57d5;
 
 
424
  }
425
 
426
+ .ctct-header ul li a.ctct-disconnect a {
427
+ background-color: #ff9500;
428
+ border: 1px solid #e38400;
 
429
  }
430
 
431
+ .ctct-header ul li a.ctct-disconnect a:hover, .ctct-header ul li a.ctct-disconnect a:focus {
432
+ background-color: #e38400;
 
 
433
  }
434
 
435
+ .ctct-header .ctct-status {
436
+ display: none;
437
+ align-items: center;
438
+ margin-right: 20px;
439
+ font-weight: 500;
440
+ padding: 7px 10px;
441
+ border: 1px solid #fff;
442
+ border-radius: 4px;
443
+ text-decoration: none;
444
+ color: #646970;
445
  }
446
 
447
+ @media (min-width: 992px) {
448
+ .ctct-header .ctct-status {
449
+ display: flex;
450
+ }
 
451
  }
452
 
453
+ .ctct-header .ctct-status:hover, .ctct-header .ctct-status:focus {
454
+ color: #000;
455
+ border-color: #ddd;
456
+ box-shadow: 0 1px 5px rgba(0, 0, 0, 0.055);
 
 
457
  }
458
 
459
+ .ctct-header .ctct-status:focus {
460
+ background-color: #f7f7f7;
461
+ color: #000;
462
+ box-shadow: none;
 
463
  }
464
 
465
+ .ctct-header .ctct-status::before {
466
+ content: '';
467
+ display: block;
468
+ width: 10px;
469
+ height: 10px;
470
+ border-radius: 100%;
471
+ background-color: #ff4136;
472
+ margin-right: 7px;
473
+ box-shadow: 0 0 5px rgba(0, 0, 0, 0.2);
474
  }
475
 
476
+ .ctct-header .ctct-status.ctct-connected::before {
477
+ background-color: #2ecc40;
 
 
478
  }
479
 
480
+ #adminmenu .wp-submenu a[href='edit.php?post_type=ctct_forms&page=ctct_options_connect'] {
481
+ color: #3ad182;
 
482
  }
483
 
484
+ .wrap.ctct_options_connect {
485
+ box-sizing: border-box;
486
+ margin: 35px auto 0;
487
+ padding: 35px;
488
+ max-width: 850px;
489
+ position: relative;
490
+ background-color: #fff;
491
+ border: 1px solid #ddd;
492
+ border-radius: 8px;
493
+ box-shadow: 0 4px 10px rgba(0, 0, 0, 0.065);
494
+ text-align: center;
495
+ z-index: 1;
496
  }
497
 
498
+ .wrap.ctct_options_connect * {
499
+ box-sizing: border-box;
500
  }
501
 
502
+ @media (min-width: 767px) {
503
+ .wrap.ctct_options_connect {
504
+ margin: 55px auto 0;
505
+ }
506
  }
507
 
508
+ .wrap.ctct_options_connect.text-left {
509
+ text-align: left;
510
  }
511
 
512
+ .wrap.ctct_options_connect::before {
513
+ width: 46px;
514
+ height: 46px;
515
+ position: absolute;
516
+ left: 50%;
517
+ top: -23px;
518
+ margin-left: -23px;
519
+ display: block;
520
+ border-radius: 100%;
521
+ content: '';
522
+ z-index: -1;
523
+ border-top: 1px solid #ddd;
524
+ background: #fff url(../images/ctct-icon-2x.png) no-repeat center 45%;
525
  }
526
 
527
+ .wrap.ctct_options_connect h2 {
528
+ font-size: 24px;
529
+ font-weight: 700;
530
+ margin: 0 0 15px;
531
+ padding: 0;
532
  }
533
 
534
+ .wrap.ctct_options_connect h2 + p {
535
+ font-size: 16px;
536
+ margin: 0 0 25px;
537
+ padding: 0 10% 25px;
538
+ position: relative;
539
  }
540
 
541
+ .wrap.ctct_options_connect h2 + p::after {
542
+ position: absolute;
543
+ content: '';
544
+ height: 1px;
545
+ width: 50px;
546
+ left: 50%;
547
+ bottom: 0;
548
+ margin-left: -25px;
549
+ background-color: #ddd;
550
  }
551
 
552
+ .wrap.ctct_options_connect .ctct-connected-wrap {
553
+ padding: 45px 35px;
554
+ background-color: #f7f7f7;
555
+ border-radius: 4px;
556
  }
557
 
558
+ .wrap.ctct_options_connect .ctct-call-to-actions {
559
+ display: flex;
560
+ flex-wrap: wrap;
561
+ width: 100%;
562
+ justify-content: space-between;
563
  }
564
 
565
+ .wrap.ctct_options_connect .ctct-call-to-actions--item {
566
+ width: 100%;
567
+ margin: 0 0 25px;
568
+ padding: 30px 25px 25px;
569
+ background-color: #f7f7f7;
570
+ display: flex;
571
+ justify-content: center;
572
+ flex-wrap: wrap;
573
+ border-radius: 6px;
574
+ border: 1px solid #e9e9e9;
575
+ transition: all 0.15s ease;
576
  }
577
 
578
+ @media (min-width: 767px) {
579
+ .wrap.ctct_options_connect .ctct-call-to-actions--item {
580
+ width: calc(50% - 5px);
581
+ }
582
  }
583
 
584
+ .wrap.ctct_options_connect .ctct-call-to-actions--item:hover {
585
+ box-shadow: 0 4px 10px rgba(0, 0, 0, 0.065);
 
 
586
  }
587
 
588
+ .wrap.ctct_options_connect .ctct-call-to-actions--item.connect-account {
589
+ border-color: #d1dfe8;
590
+ background-color: #f5faff;
591
  }
592
 
593
+ .wrap.ctct_options_connect .ctct-call-to-actions--item.connect-account:hover {
594
+ border-color: #90afc3;
595
  }
596
 
597
+ .wrap.ctct_options_connect .ctct-call-to-actions--item.no-account {
598
+ border-color: #e2d9c4;
599
+ background-color: #fff8e9;
 
 
 
 
 
600
  }
601
 
602
+ .wrap.ctct_options_connect .ctct-call-to-actions--item.no-account:hover {
603
+ border-color: #c7ba9a;
604
  }
605
 
606
+ .wrap.ctct_options_connect .ctct-call-to-actions--item p {
607
+ margin-bottom: 15px;
608
+ line-height: 1.6;
609
+ padding: 0 5px;
610
  }
611
 
612
+ .wrap.ctct_options_connect h3 {
613
+ font-size: 16px;
614
+ font-weight: 700;
615
+ line-height: 1.55;
616
+ margin: 0 0 10px;
617
  }
618
 
619
+ .wrap.ctct_options_connect p {
620
+ color: #646970;
621
+ font-size: 14px;
622
+ margin-top: 0;
623
  }
624
 
625
+ .wrap.ctct_options_connect p.small {
626
+ color: #747e88;
627
+ font-size: 12px;
628
+ margin: 0 auto;
629
+ padding: 0 10%;
630
+ line-height: 1.75;
631
+ text-align: center;
632
  }
633
 
634
+ .wrap.ctct_options_connect hr {
635
+ margin: 35px 0;
636
+ }
637
+
638
+ .wrap.ctct_options_connect .button.ctct-button {
639
+ border-radius: 4px;
640
+ color: #0078c3;
641
+ font-size: 16px;
642
+ font-weight: 600;
643
+ height: auto;
644
+ line-height: 1;
645
+ margin: 25px 0 0;
646
+ min-width: 180px;
647
+ padding: 14px 30px;
648
+ align-self: flex-end;
649
  width: 100%;
650
+ transition: all 0.15s ease;
651
  }
652
 
653
+ .wrap.ctct_options_connect .button.ctct-button.button-orange {
654
+ background-color: #ffa901;
655
+ border: 1px solid #cd8800;
656
+ color: #fff;
657
  }
658
 
659
+ .wrap.ctct_options_connect .button.ctct-button.button-orange:hover, .wrap.ctct_options_connect .button.ctct-button.button-orange:focus {
660
+ color: #fff;
661
+ background-color: #ffba34;
662
  }
663
 
664
+ .wrap.ctct_options_connect .button.ctct-button.button-blue {
665
+ background-color: #0078c3;
666
+ border: 1px solid #005990;
667
+ color: #fff;
668
  }
669
 
670
+ .wrap.ctct_options_connect .button.ctct-button.button-blue:hover, .wrap.ctct_options_connect .button.ctct-button.button-blue:focus {
671
+ color: #fff;
672
+ background-color: #0097f6;
 
673
  }
674
 
675
+ .ctct-connected-wrap .ctct-connection-details {
676
+ display: flex;
677
+ text-align: left;
678
+ margin: 10px 0 0;
679
  }
680
 
681
+ .ctct-connected-wrap .ctct-connection-details > p,
682
+ .ctct-connected-wrap .ctct-connection-details form {
683
+ padding: 0 10px;
684
+ width: 50%;
685
+ text-align: left;
686
+ display: flex;
687
+ align-items: center;
688
+ margin: 0;
689
  }
690
 
691
+ .ctct-connected-wrap .ctct-connection-details > p:not(form):first-of-type,
692
+ .ctct-connected-wrap .ctct-connection-details form:not(form):first-of-type {
693
+ text-align: right;
694
  }
695
 
696
+ .ctct-connected-wrap .ctct-connection-details > p input,
697
+ .ctct-connected-wrap .ctct-connection-details form input {
698
+ position: relative;
699
+ top: 2px;
700
  }
701
 
702
+ .ctct-connected-wrap .ctct-connection-details p {
703
+ overflow: hidden;
704
+ white-space: nowrap;
705
+ text-overflow: ellipsis;
706
  }
707
 
708
+ .ctct-connected-wrap .ctct-connection-details p.ctct-label {
709
+ justify-content: flex-end;
 
 
710
  }
711
 
712
+ .ctct-connected-next-step {
713
+ text-align: left;
714
+ display: flex;
715
+ flex-wrap: wrap;
716
+ justify-content: space-between;
717
+ align-items: center;
718
  width: 100%;
719
  }
720
 
721
+ .ctct-connected-next-step p {
722
+ margin: 0 0 15px;
 
 
 
 
723
  }
724
 
725
+ .ctct-connected-next-step > div {
726
+ width: 100%;
 
 
727
  }
728
 
729
+ @media (min-width: 767px) {
730
+ .ctct-connected-next-step > div {
731
+ width: calc(50% - 10px);
732
+ }
733
  }
734
 
735
+ .ctct-connected-next-step .ctct-video {
736
+ margin-bottom: 15px;
 
 
737
  }
738
 
739
+ @media (min-width: 767px) {
740
+ .ctct-connected-next-step .ctct-video {
741
+ margin-bottom: 0;
742
+ padding-right: 5px;
743
  }
744
  }
745
 
746
+ .ctct-connected-next-step .ctct-video .wistia_embed {
747
+ max-width: 100%;
748
+ border-radius: 4px;
749
+ overflow: hidden;
 
750
  }
751
 
752
+ .ctct-connected-opt-in {
753
+ display: none;
754
+ width: 100%;
755
+ text-align: left;
756
  }
757
 
758
+ .ctct-connected-opt-in .ctct-connect-ga-optin {
759
+ display: flex;
760
+ flex-wrap: nowrap;
761
+ padding: 15px 0 0;
762
  }
763
 
764
+ .ctct-connected-opt-in .ctct-connect-ga-optin .button {
765
+ text-align: center;
766
+ margin: 0 10px 0 0;
767
+ width: auto;
768
  }
769
 
770
+ .ctct-error {
771
+ background: none !important;
772
+ border: 1px solid #ff4136;
773
+ border-radius: 4px;
774
+ box-shadow: none !important;
775
+ display: inline-block;
776
+ padding: 15px;
777
+ margin: 0 0 25px 0 !important;
778
  }
779
 
780
+ .ctct-error p {
781
+ color: #ff4136 !important;
 
 
782
  }
783
 
784
+ .ctct_options_logging #ctct_error_logs {
785
+ height: 400px;
786
+ resize: vertical;
787
+ width: 100%;
788
+ padding: 20px;
789
+ margin: 10px 0 20px;
790
+ background-color: #fff;
 
791
  }
792
 
793
+ .constant-contact-about .ctct-section {
794
+ margin: 0 0 30px;
 
 
 
 
 
 
795
  }
796
 
797
+ .constant-contact-about .ctct-video-cta {
798
+ padding: 0;
 
 
 
 
799
  }
800
 
801
+ @media (min-width: 767px) {
802
+ .constant-contact-about .ctct-video-cta {
803
+ display: flex;
804
+ align-items: center;
805
+ justify-content: space-between;
806
+ width: 100%;
807
+ }
808
+ .constant-contact-about .ctct-video-cta > div {
809
+ width: calc(50% - 15px);
810
+ }
811
  }
812
 
813
+ @media (min-width: 767px) {
814
+ .constant-contact-about .ctct-video-cta h3 {
815
+ margin: 0 0 15px;
 
 
 
816
  }
817
  }
818
 
819
+ .constant-contact-about ul {
820
+ list-style: disc;
821
+ padding-left: 24px;
822
  }
823
 
824
+ .constant-contact-about .section-try-us {
825
+ padding: 20px;
826
+ border-radius: 4px;
827
+ background-color: #fff;
828
+ border: 1px solid #ddd;
829
  }
830
 
831
+ .constant-contact-about .section-try-us h2, .constant-contact-about .section-try-us p {
832
+ margin: 0 0 15px;
833
  }
834
 
835
+ .constant-contact-about .section-try-us hr {
836
+ margin: 20px 0;
 
 
 
837
  }
838
 
839
+ .constant-contact-about .section-try-us .ctct-try-us-cta {
840
+ display: flex;
841
+ align-items: center;
 
842
  }
843
 
844
+ .constant-contact-about .section-try-us .ctct-try-us-cta p {
845
+ margin: 0;
846
+ }
847
+
848
+ .constant-contact-about .section-try-us .ctct-try-us-cta .item {
849
+ margin: 0 15px 0 0;
850
+ font-size: 14px;
851
  }
852
 
853
+ .constant-contact-about .section-try-us .button {
854
  border-radius: 4px;
855
  color: #fff;
856
  font-size: 16px;
857
  font-weight: 600;
858
  height: auto;
859
  line-height: 1;
 
860
  min-width: 180px;
861
  padding: 14px 30px;
862
+ text-align: center;
863
  }
864
 
865
+ .constant-contact-about .section-try-us .button.button-orange {
866
  background-color: #ffa901;
867
  border: 1px solid #cd8800;
868
  }
869
 
870
+ .constant-contact-about .section-try-us .button.button-orange:hover, .constant-contact-about .section-try-us .button.button-orange:focus {
871
  background-color: #cd8800;
872
  }
873
 
874
+ .constant-contact-about .section-try-us .button.button-blue {
875
  background-color: #0078c3;
876
  border: 1px solid #005990;
877
  }
878
 
879
+ .constant-contact-about .section-try-us .button.button-blue:hover, .constant-contact-about .section-try-us .button.button-blue:focus {
880
  background-color: #005990;
881
  }
882
 
883
+ .constant-contact-about .ctct-license {
884
+ margin-top: 30px;
885
+ padding: 20px 0 0;
886
+ border-top: 1px solid #ddd;
887
  }
888
 
889
+ .constant-contact-about .small-text {
890
+ max-width: 800px;
891
  }
892
 
893
+ .post-type-ctct_forms img {
894
+ max-width: 100%;
 
 
 
895
  }
896
 
897
+ .post-type-ctct_forms .misc-pub-section.misc-pub-visibility, .post-type-ctct_forms .misc-pub-section.misc-pub-curtime {
898
+ display: none;
899
  }
900
 
901
+ body.post-type-ctct_lists .misc-pub-post-status {
902
+ display: none;
903
  }
904
 
905
+ body.post-type-ctct_forms #titlediv #title {
906
+ height: 2.7em;
907
  }
908
 
909
+ .ctct-admin-title-details {
910
+ display: block;
911
+ font-size: 0.6rem;
912
+ line-height: 2;
913
  }
914
 
915
+ #cmb2-metabox-ctct_1_optin_metabox .cmb2-id--ctct-opt-in-instructions,
916
+ #cmb2-metabox-ctct_1_optin_metabox .cmb2-id--ctct-opt-in {
917
+ display: none;
918
  }
919
 
920
+ #ctct_0_list_metabox .cmb-row,
921
+ #ctct_1_custom_form_css_metabox .cmb-row,
922
+ #ctct_1_custom_input_css_metabox .cmb-row {
923
+ padding-bottom: 0;
 
 
 
 
924
  }
925
 
926
+ #cmb2-metabox-ctct_2_fields_metabox .cmb2-id--ctct-title {
927
+ padding: 0.8rem 0 1rem;
 
 
 
 
 
928
  }
929
 
930
+ #ctct_1_custom_form_css_metabox .cmb2-id-form-title-title {
931
+ padding: 0.8rem 0 1rem;
932
  }
933
 
934
+ #ctct_0_description_metabox #custom_fields_group_repeat .cmb-field-list .cmb-row:not(:last-of-type),
935
+ #ctct_1_optin_metabox #custom_fields_group_repeat .cmb-field-list .cmb-row:not(:last-of-type),
936
+ #ctct_2_fields_metabox #custom_fields_group_repeat .cmb-field-list .cmb-row:not(:last-of-type) {
937
+ border-bottom: none;
938
+ padding-bottom: 0.1em;
939
  }
940
 
941
+ #ctct_0_description_metabox #custom_fields_group_repeat .required,
942
+ #ctct_1_optin_metabox #custom_fields_group_repeat .required,
943
+ #ctct_2_fields_metabox #custom_fields_group_repeat .required {
944
+ padding-bottom: 0.1em;
945
+ padding-top: 0.1em;
946
  }
947
 
948
+ #ctct_0_description_metabox #default_fields_group_repeat .cmb-field-list > .cmb-row,
949
+ #ctct_1_optin_metabox #default_fields_group_repeat .cmb-field-list > .cmb-row,
950
+ #ctct_2_fields_metabox #default_fields_group_repeat .cmb-field-list > .cmb-row {
951
+ padding-top: 0.5em;
952
  }
953
 
954
+ #ctct_0_description_metabox #default_fields_group_repeat .cmb-field-list > .cmb-row:not(:last-of-type),
955
+ #ctct_1_optin_metabox #default_fields_group_repeat .cmb-field-list > .cmb-row:not(:last-of-type),
956
+ #ctct_2_fields_metabox #default_fields_group_repeat .cmb-field-list > .cmb-row:not(:last-of-type) {
957
+ border-bottom: 1px solid #e9e9e9;
958
+ padding-bottom: 0.1rem;
959
  }
960
 
961
+ #ctct_0_description_metabox .cmb-repeat-group-wrap,
962
+ #ctct_1_optin_metabox .cmb-repeat-group-wrap,
963
+ #ctct_2_fields_metabox .cmb-repeat-group-wrap {
964
+ padding: 0;
965
  }
966
 
967
+ #ctct_0_description_metabox .cmb-repeat-group-wrap .cmb-repeatable-grouping,
968
+ #ctct_1_optin_metabox .cmb-repeat-group-wrap .cmb-repeatable-grouping,
969
+ #ctct_2_fields_metabox .cmb-repeat-group-wrap .cmb-repeatable-grouping {
970
+ margin: 0 0 1.5rem 0;
971
  }
972
 
973
+ #ctct_0_description_metabox .cmb-repeat-group-wrap .cmb-repeatable-grouping .cmb-row,
974
+ #ctct_1_optin_metabox .cmb-repeat-group-wrap .cmb-repeatable-grouping .cmb-row,
975
+ #ctct_2_fields_metabox .cmb-repeat-group-wrap .cmb-repeatable-grouping .cmb-row {
976
+ margin: 0 0 0 0.3rem;
977
  }
978
 
979
+ #ctct_0_description_metabox .cmb-repeat-group-wrap .cmb-repeat-group-field,
980
+ #ctct_1_optin_metabox .cmb-repeat-group-wrap .cmb-repeat-group-field,
981
+ #ctct_2_fields_metabox .cmb-repeat-group-wrap .cmb-repeat-group-field {
982
+ padding-top: 0.2em;
983
  }
984
 
985
+ #ctct_0_description_metabox .postbox-container .cmb-remove-field-row,
986
+ #ctct_1_optin_metabox .postbox-container .cmb-remove-field-row,
987
+ #ctct_2_fields_metabox .postbox-container .cmb-remove-field-row {
988
+ padding-bottom: 0.8em;
989
+ padding-top: 0.8em;
990
  }
991
 
992
+ #ctct_0_description_metabox button.cmb-add-group-row,
993
+ #ctct_1_optin_metabox button.cmb-add-group-row,
994
+ #ctct_2_fields_metabox button.cmb-add-group-row {
995
+ background: #008ec2 !important;
996
+ border-color: #006799 !important;
997
+ color: #fff !important;
998
  }
999
 
1000
+ #ctct_0_description_metabox button.cmb-remove-group-row,
1001
+ #ctct_1_optin_metabox button.cmb-remove-group-row,
1002
+ #ctct_2_fields_metabox button.cmb-remove-group-row {
1003
+ background: #ffdfa3 !important;
1004
+ display: none;
1005
  }
1006
 
1007
+ #ctct_0_description_metabox .cmb2-metabox button.dashicons-before.dashicons-no-alt.cmb-remove-group-row,
1008
+ #ctct_1_optin_metabox .cmb2-metabox button.dashicons-before.dashicons-no-alt.cmb-remove-group-row,
1009
+ #ctct_2_fields_metabox .cmb2-metabox button.dashicons-before.dashicons-no-alt.cmb-remove-group-row {
1010
+ top: 0.3rem;
1011
  }
1012
 
1013
+ #ctct_0_description_metabox h3.cmb-group-title.cmbhandle-title,
1014
+ #ctct_1_optin_metabox h3.cmb-group-title.cmbhandle-title,
1015
+ #ctct_2_fields_metabox h3.cmb-group-title.cmbhandle-title {
1016
+ padding-left: 1em;
1017
  }
1018
 
1019
+ #ctct_1_optin_metabox .cmb-row {
1020
+ border-bottom: none;
1021
+ padding: 0.5rem 0;
1022
  }
1023
 
1024
+ #ctct_1_optin_metabox .cmb2-id--ctct-list {
1025
+ padding-bottom: 0.5em;
 
 
1026
  }
1027
 
1028
+ #ctct_1_optin_metabox .cmb-th {
1029
+ width: 25%;
1030
  }
1031
 
1032
+ #ctct_1_optin_metabox .cmb-th + .cmb-td {
1033
+ width: 70%;
 
 
1034
  }
1035
 
1036
+ #ctct_option_metabox_settings span.cmb2-metabox-description {
1037
+ color: #444444;
 
 
1038
  }
1039
 
1040
+ #cmb2-metabox-email_settings .cmb-row,
1041
+ #cmb2-metabox-ctct_2_generated_metabox .cmb-row,
1042
+ #cmb2-metabox-ctct_1_custom_input_css_metabox .cmb-row {
1043
+ padding-bottom: 0 !important;
 
 
 
 
 
 
 
1044
  }
1045
 
1046
+ #side-sortables #ctct_1_custom_form_css_metabox .cmb-row {
1047
+ padding: 0.5rem 0 0 0;
 
1048
  }
1049
 
1050
+ #side-sortables #ctct_1_custom_form_css_metabox .cmb-th {
1051
+ padding-bottom: 0;
1052
  }
1053
 
1054
+ #side-sortables #ctct_1_custom_form_css_metabox .cmb-type-title {
1055
+ border-bottom: none;
 
1056
  }
1057
 
1058
+ #side-sortables #ctct_1_custom_form_css_metabox .cmb2-id--ctct-form-title-font-size,
1059
+ #side-sortables #ctct_1_custom_form_css_metabox .cmb2-id--ctct-form-description-font-size {
1060
+ border-bottom: none;
1061
+ margin-bottom: 0;
1062
  }
1063
 
1064
+ #side-sortables #ctct_1_custom_input_css_metabox .cmb2-id-form-padding-title {
1065
+ border-bottom: 0;
1066
+ padding-bottom: 0;
1067
  }
1068
 
1069
+ #side-sortables #ctct_1_custom_input_css_metabox .cmb2-id--ctct-input-margin-top,
1070
+ #side-sortables #ctct_1_custom_input_css_metabox .cmb2-id--ctct-input-margin-right {
1071
+ margin-bottom: 0;
1072
+ margin-top: 0;
1073
+ padding-bottom: 0;
1074
+ padding-top: 0;
1075
  }
1076
 
1077
+ #side-sortables #ctct_1_custom_input_css_metabox .cmb2-id--ctct-form-label-placement {
1078
+ margin-bottom: 0;
1079
+ padding-bottom: 0;
1080
  }
1081
 
1082
+ #side-sortables #ctct_1_custom_input_css_metabox .cmb-type-text-small {
1083
+ border-bottom: none;
1084
+ float: left;
1085
+ width: 50%;
1086
  }
1087
 
1088
+ #side-sortables #ctct_1_custom_input_css_metabox .cmb-type-text-small .cmb-th {
1089
+ padding-bottom: 0;
 
 
1090
  }
1091
 
1092
+ #side-sortables .cmb2-id--ctct-generated-shortcode > .cmb-th {
1093
+ display: none;
1094
  }
1095
 
1096
+ .cmb2-id--ctct-list .cmb2-list {
1097
+ background: linear-gradient(#fff 33%, transparent), linear-gradient(transparent, #fff 66%) 0 100%, radial-gradient(farthest-side at 50% 0, rgba(0, 0, 0, 0.5), transparent), radial-gradient(farthest-side at 50% 100%, rgba(0, 0, 0, 0.5), transparent) 0 100%;
1098
+ background-attachment: local, local, scroll, scroll;
1099
+ background-color: #fff;
1100
+ background-repeat: no-repeat;
1101
+ background-size: 100% 30px, 100% 30px, 100% 10px, 100% 10px;
1102
+ max-height: 10rem;
1103
+ overflow-y: auto;
1104
  }
1105
 
1106
+ .ui-dialog .cmb-type-checkbox.cmb2-id--ctct-show-title .cmb-th {
1107
+ width: 90px;
 
1108
  }
1109
 
1110
+ .updated.ctct-admin-notice,
1111
+ .error.ctct-admin-notice {
1112
+ padding: 1rem 38px 1rem 1rem;
1113
  position: relative;
1114
  }
1115
 
1116
+ a.ctct-notice-dismiss {
1117
+ text-decoration: none;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1118
  }
1119
 
1120
+ #ctct-admin-notice-activation {
1121
+ padding: 1rem 1rem 0 1rem;
 
 
 
 
 
 
 
 
1122
  }
1123
 
1124
+ #ctct-admin-notice-activation .ctct-notice-intro {
1125
+ line-height: 1.5;
1126
+ max-width: 600px;
 
 
 
 
 
 
1127
  }
1128
 
1129
+ #ctct-admin-notice-activation .ctct-notice-button,
1130
+ #ctct-admin-notice-activation .ctct-notice-button:active {
1131
+ margin: 0.5rem;
1132
+ vertical-align: middle;
 
 
 
 
 
1133
  }
1134
 
1135
+ .ctct-admin-notice {
1136
  overflow: hidden;
 
1137
  }
1138
 
1139
+ .ctct-admin-notice.updated {
1140
+ border-left-color: #1a5285;
 
 
 
 
 
 
 
 
1141
  }
1142
 
1143
+ .ctct-admin-notice > div {
 
1144
  float: left;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1145
  }
1146
 
1147
+ .ctct-admin-notice .admin-notice-message {
1148
+ margin-left: 15px;
1149
+ width: 80%;
 
1150
  }
1151
 
1152
+ .ctct-admin-notice .admin-notice-message h4 {
1153
  color: #1a5285;
1154
+ margin: 0 0 10px;
 
 
 
 
 
 
 
 
 
 
 
1155
  }
1156
 
1157
+ .ctct-admin-notice .admin-notice-message > div {
 
1158
  float: left;
 
1159
  }
1160
 
1161
+ .cmb2-options-page[class*="option-ctct_options_settings_"] .cmb2-metabox > .cmb-row {
1162
+ background: transparent;
1163
+ border: none;
1164
+ box-shadow: none;
 
1165
  }
1166
 
1167
+ .cmb2-options-page[class*="option-ctct_options_settings_"] .regular-text {
1168
+ width: 500px;
 
 
 
 
1169
  }
1170
 
1171
+ .wp-admin .wrap.ctct-page-wrap {
1172
+ max-width: 1000px;
1173
+ margin: 0;
1174
+ padding: 20px 10px 0 2px;
 
1175
  }
1176
 
1177
+ @media (min-width: 767px) {
1178
+ .wp-admin .wrap.ctct-page-wrap {
1179
+ padding-right: 20px;
 
 
 
 
1180
  }
1181
  }
1182
 
1183
+ .wp-admin .wrap.ctct-page-wrap > h2 {
1184
+ font-size: 24px;
1185
+ font-weight: 700;
1186
+ margin: 0 0 20px;
1187
+ padding: 0;
 
 
 
 
 
 
1188
  }
1189
 
1190
+ .wp-admin .wrap.ctct-page-wrap p, .wp-admin .wrap.ctct-page-wrap li {
1191
+ font-size: 14px;
1192
+ line-height: 1.65;
 
1193
  }
1194
 
1195
+ .wp-admin .wrap.ctct-page-wrap p.small-text, .wp-admin .wrap.ctct-page-wrap li.small-text {
1196
+ font-size: 12px;
 
1197
  }
1198
 
1199
+ .wp-admin .wrap.ctct-page-wrap p.large-text, .wp-admin .wrap.ctct-page-wrap li.large-text {
 
1200
  font-size: 16px;
 
 
 
1201
  }
1202
 
1203
+ .wp-admin .wrap.ctct-page-wrap p.xlarge-text, .wp-admin .wrap.ctct-page-wrap li.xlarge-text {
1204
+ font-size: 18px;
1205
  }
1206
 
1207
+ .wp-admin .wrap.ctct-page-wrap .text-centered {
1208
+ text-align: center;
1209
  }
1210
 
1211
+ .wp-admin .wrap.ctct-page-wrap .iframe-wrap {
1212
+ position: relative;
1213
+ padding-bottom: 56.25%;
1214
+ /* 16:9 */
1215
+ height: 0;
1216
  }
1217
 
1218
+ .wp-admin .wrap.ctct-page-wrap .iframe-wrap iframe {
1219
+ position: absolute;
1220
+ top: 0;
1221
+ left: 0;
1222
+ width: 100%;
1223
+ height: 100%;
1224
+ border-radius: 4px;
1225
  }
1226
 
1227
+ .wp-admin hr {
1228
+ border-top: none;
1229
+ border-color: #ddd;
1230
  }
1231
 
1232
+ .wp-admin form.cmb-form h2 {
1233
+ margin: 0;
1234
+ padding: 14px;
 
 
 
 
 
1235
  }
1236
 
1237
+ .wp-admin form.cmb-form .description,
1238
+ .wp-admin form.cmb-form p.submit {
1239
+ padding: 0 14px;
1240
+ margin-bottom: 10px;
1241
  }
1242
 
1243
+ .wp-admin form.cmb-form .cmb-th,
1244
+ .wp-admin form.cmb-form .cmb-th label {
1245
+ font-weight: 600;
1246
  }
1247
 
1248
+ .wp-admin .ctct-button-actions {
1249
+ display: flex;
1250
+ justify-content: flex-start;
 
 
1251
  }
1252
 
1253
+ .wp-admin .ctct-button-actions a {
1254
+ align-self: flex-start;
1255
+ margin: 0 10px 0 0;
 
 
1256
  }
1257
 
1258
+ .wp-admin .ctct-shortcode-wrap {
1259
+ display: flex;
 
1260
  width: 100%;
1261
+ background-color: #fff;
1262
+ border: 1px solid #ddd;
1263
+ border-radius: 4px;
1264
+ padding: 3px;
1265
+ position: relative;
1266
  }
1267
 
1268
+ .wp-admin .ctct-shortcode-wrap:focus-within {
1269
+ border-color: #747e88;
 
 
 
 
 
1270
  }
1271
 
1272
+ .wp-admin .ctct-shortcode-wrap input, .wp-admin .ctct-shortcode-wrap button {
1273
+ min-height: auto;
1274
+ height: 30px;
1275
+ font-size: 12px;
 
 
1276
  }
1277
 
1278
+ .wp-admin .ctct-shortcode-wrap input {
1279
+ background-color: transparent;
1280
+ border: none;
1281
+ font-size: 12px;
1282
+ padding: 0 10px 0 5px;
1283
+ margin: 0;
1284
+ flex: 1;
1285
+ box-shadow: none;
1286
+ overflow: hidden;
1287
+ text-overflow: ellipsis;
1288
+ white-space: nowrap;
1289
  }
1290
 
1291
+ .wp-admin .ctct-shortcode-wrap input:focus {
 
 
1292
  box-shadow: none;
 
 
1293
  }
1294
 
1295
+ .wp-admin .ctct-shortcode-wrap button {
1296
  border-radius: 4px;
1297
+ z-index: 1;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1298
  }
1299
 
1300
  .ctct-block-title {
assets/css/style.css CHANGED
@@ -36,7 +36,7 @@
36
  }
37
 
38
  .ctct-form-wrapper input[type='text']:required:valid, .ctct-form-wrapper input[type='email']:required:valid, .ctct-form-wrapper input[type='password']:required:valid, .ctct-form-wrapper input[type='tel']:required:valid, .ctct-form-wrapper input[type='number']:required:valid {
39
- background-image: url("../images/check_circle.svg");
40
  background-position: 8px 50%;
41
  background-repeat: no-repeat;
42
  background-size: 18px;
@@ -45,7 +45,7 @@
45
  }
46
 
47
  .ctct-form-wrapper input[type='text']:required.ctct-invalid, .ctct-form-wrapper input[type='text'].ctct-invalid, .ctct-form-wrapper input[type='email']:required.ctct-invalid, .ctct-form-wrapper input[type='email'].ctct-invalid, .ctct-form-wrapper input[type='password']:required.ctct-invalid, .ctct-form-wrapper input[type='password'].ctct-invalid, .ctct-form-wrapper input[type='tel']:required.ctct-invalid, .ctct-form-wrapper input[type='tel'].ctct-invalid, .ctct-form-wrapper input[type='number']:required.ctct-invalid, .ctct-form-wrapper input[type='number'].ctct-invalid {
48
- background: #fff url("../images/error.svg") no-repeat;
49
  background-color: rgba(255, 65, 54, 0.02);
50
  background-position: 8px 50%;
51
  background-size: 24px;
@@ -59,7 +59,7 @@
59
  }
60
 
61
  .ctct-form-wrapper input.ctct-invalid {
62
- background: #fff url("../images/error.svg") no-repeat;
63
  background-color: rgba(255, 65, 54, 0.02);
64
  background-position: 8px 50%;
65
  background-size: 24px;
@@ -114,7 +114,7 @@
114
  }
115
 
116
  .ctct-form-wrapper .no-recaptcha .ctct-submitted:disabled {
117
- background-image: url("../images/oval.min.svg");
118
  background-position: center;
119
  background-repeat: no-repeat;
120
  color: transparent;
@@ -171,7 +171,88 @@
171
  padding: 0;
172
  }
173
 
174
- .ctct-twentyfourteen .ctct-form-field input {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
175
  width: 100%;
176
  }
177
 
@@ -202,4 +283,10 @@
202
  }
203
  }
204
 
205
- /*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0eWxlLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLGlCQUFpQjtBQUNuQjs7QUFFQTtFQUNFLGlCQUFpQjtFQUNqQixZQUFZO0FBQ2Q7O0FBRUE7RUFDRSx5Q0FBeUM7RUFDekMscUJBQXFCO0VBQ3JCLGNBQWM7QUFDaEI7O0FBRUE7RUFDRSx5Q0FBeUM7RUFDekMscUJBQXFCO0VBQ3JCLGNBQWM7QUFDaEI7O0FBRUE7RUFDRSxrQkFBa0I7RUFDbEIsWUFBWTtFQUNaLGNBQWM7RUFDZCxxQkFBcUI7RUFDckIscUJBQXFCO0FBQ3ZCOztBQUVBO0VBQ0UsZ0JBQWdCO0FBQ2xCOztBQUVBO0VBQ0UscUJBQXFCO0FBQ3ZCOztBQW1DQTtFQUNFLG1EQUFtRDtFQUNuRCw0QkFBNEI7RUFDNUIsNEJBQTRCO0VBQzVCLHFCQUFxQjtFQUNyQixxQkFBcUI7RUFDckIsa0JBQWtCO0FBQ3BCOztBQUVBO0VBQ0UscURBQXFEO0VBQ3JELHlDQUF5QztFQUN6Qyw0QkFBNEI7RUFDNUIscUJBQXFCO0VBQ3JCLHFCQUFxQjtFQUNyQixrQkFBa0I7QUFDcEI7O0FBRUE7RUFDRSxrQkFBa0I7RUFDbEIsa0JBQWtCO0FBQ3BCOztBQUVBO0VBQ0UscURBQXFEO0VBQ3JELHlDQUF5QztFQUN6Qyw0QkFBNEI7RUFDNUIscUJBQXFCO0VBQ3JCLHFCQUFxQjtFQUNyQixrQkFBa0I7QUFDcEI7O0FBRUE7O0VBRUUscUJBQXFCO0VBQ3JCLFVBQVU7QUFDWjs7QUFFQTtFQUNFLHFCQUFxQjtFQUNyQixnQkFBZ0I7RUFDaEIsVUFBVTtBQUNaOztBQUVBOztFQUVFLHFCQUFxQjtFQUNyQixnQkFBZ0I7RUFDaEIsVUFBVTtBQUNaOztBQUVBOztFQUVFLFdBQVc7QUFDYjs7QUFFQTtFQUNFLHFCQUFxQjtFQUNyQixVQUFVO0FBQ1o7O0FBRUE7RUFDRSx3QkFBd0I7RUFDeEIsNkJBQTZCO0VBQzdCLHVCQUF1QjtBQUN6Qjs7QUFFQTtFQUNFLGNBQWM7RUFDZCxzQkFBc0I7RUFDdEIsV0FBVztFQUNYLFlBQVk7RUFDWixnQkFBZ0I7RUFDaEIsVUFBVTtFQUNWLGtCQUFrQjtFQUNsQixVQUFVO0FBQ1o7O0FBRUE7RUFDRSwrQ0FBK0M7RUFDL0MsMkJBQTJCO0VBQzNCLDRCQUE0QjtFQUM1QixrQkFBa0I7RUFDbEIsWUFBWTtFQUNaLFlBQVk7QUFDZDs7QUFFQTtFQUNFLG1CQUFtQjtBQUNyQjs7QUFFQTtFQUNFLFdBQVc7RUFDWCxXQUFXO0VBQ1gsY0FBYztBQUNoQjs7QUFFQTs7RUFFRSxjQUFjO0FBQ2hCOztBQUVBOztFQUVFLHFCQUFxQjtBQUN2Qjs7QUFFQTtFQUNFLFlBQVk7RUFDWixjQUFjO0VBQ2QsaUJBQWlCO0FBQ25COztBQUVBO0VBQ0UsV0FBVztFQUNYLGlCQUFpQjtBQUNuQjs7QUFFQTtFQUNFLGNBQWM7QUFDaEI7O0FBRUE7RUFDRSxlQUFlO0FBQ2pCOztBQUVBO0VBQ0UsWUFBWTtFQUNaLFVBQVU7QUFDWjs7QUFFQTtFQUNFLG1CQUFtQjtFQUNuQixVQUFVO0FBQ1o7O0FBRUE7RUFDRSxXQUFXO0FBQ2I7O0FBM0tBO0VBQ0U7SUFDRSxXQUFXO0lBQ1gsZ0JBQWdCO0lBQ2hCLFVBQVU7RUFDWjtFQUNBO0lBQ0UsZUFBZTtFQUNqQjtFQUlBO0lBQ0UsV0FBVztJQUNYLGdCQUFnQjtJQUNoQixVQUFVO0VBQ1o7RUFDQTtJQUNFLGVBQWU7RUFDakI7RUFJQTtJQUNFLFdBQVc7SUFDWCxnQkFBZ0I7SUFDaEIsVUFBVTtFQUNaO0VBQ0E7SUFDRSxlQUFlO0VBQ2pCO0FBckJGIiwiZmlsZSI6InN0eWxlLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1idXR0b24ge1xuICBmb250LXNpemU6IDAuOXJlbTtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LW1lc3NhZ2Uge1xuICBib3JkZXI6IDFweCBzb2xpZDtcbiAgcGFkZGluZzogMWVtO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtbWVzc2FnZS5jdGN0LWVycm9yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDY1LCA1NCwgMC4wMik7XG4gIGJvcmRlci1jb2xvcjogI2ZmNDEzNjtcbiAgY29sb3I6ICNjZjBiMDA7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1tZXNzYWdlLmN0Y3Qtc3VjY2VzcyB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoNDYsIDIwNCwgNjQsIDAuMDIpO1xuICBib3JkZXItY29sb3I6ICMyZWNjNDA7XG4gIGNvbG9yOiAjMWI3OTI2O1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtbWVzc2FnZSAuY3RjdC1kaXNtaXNzLWFqYXgtbm90aWNlIHtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBmbG9hdDogcmlnaHQ7XG4gIGxpbmUtaGVpZ2h0OiAxO1xuICBwYWRkaW5nOiAwLjg1cmVtIDFyZW07XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZvcm0tZmllbGQge1xuICBtYXJnaW46IDAgMCAxcmVtO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZmllbGQtaW5saW5lIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHtcbiAgLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZpZWxkLWhhbGYge1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIG1hcmdpbi1yaWdodDogMiU7XG4gICAgd2lkdGg6IDQ4JTtcbiAgfVxuICAuY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZmllbGQtaGFsZjpsYXN0LW9mLXR5cGUge1xuICAgIG1hcmdpbi1yaWdodDogMDtcbiAgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHtcbiAgLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZpZWxkLXRoaXJkIHtcbiAgICBmbG9hdDogbGVmdDtcbiAgICBtYXJnaW4tcmlnaHQ6IDIlO1xuICAgIHdpZHRoOiAzMiU7XG4gIH1cbiAgLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZpZWxkLXRoaXJkOmxhc3Qtb2YtdHlwZSB7XG4gICAgbWFyZ2luLXJpZ2h0OiAwO1xuICB9XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkge1xuICAuY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZmllbGQtZm91cnRoIHtcbiAgICBmbG9hdDogbGVmdDtcbiAgICBtYXJnaW4tcmlnaHQ6IDIlO1xuICAgIHdpZHRoOiAyNCU7XG4gIH1cbiAgLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZpZWxkLWZvdXJ0aDpsYXN0LW9mLXR5cGUge1xuICAgIG1hcmdpbi1yaWdodDogMDtcbiAgfVxufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0ndGV4dCddOnJlcXVpcmVkOnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0nZW1haWwnXTpyZXF1aXJlZDp2YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J3Bhc3N3b3JkJ106cmVxdWlyZWQ6dmFsaWQsIC5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSd0ZWwnXTpyZXF1aXJlZDp2YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J251bWJlciddOnJlcXVpcmVkOnZhbGlkIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiLi4vaW1hZ2VzL2NoZWNrX2NpcmNsZS5zdmdcIik7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IDhweCA1MCU7XG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtc2l6ZTogMThweDtcbiAgYm9yZGVyLWNvbG9yOiAjMmVjYzQwO1xuICBwYWRkaW5nLWxlZnQ6IDMycHg7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSd0ZXh0J106cmVxdWlyZWQuY3RjdC1pbnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0ndGV4dCddLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J2VtYWlsJ106cmVxdWlyZWQuY3RjdC1pbnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0nZW1haWwnXS5jdGN0LWludmFsaWQsIC5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSdwYXNzd29yZCddOnJlcXVpcmVkLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J3Bhc3N3b3JkJ10uY3RjdC1pbnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0ndGVsJ106cmVxdWlyZWQuY3RjdC1pbnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0ndGVsJ10uY3RjdC1pbnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0nbnVtYmVyJ106cmVxdWlyZWQuY3RjdC1pbnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0nbnVtYmVyJ10uY3RjdC1pbnZhbGlkIHtcbiAgYmFja2dyb3VuZDogI2ZmZiB1cmwoXCIuLi9pbWFnZXMvZXJyb3Iuc3ZnXCIpIG5vLXJlcGVhdDtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDY1LCA1NCwgMC4wMik7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IDhweCA1MCU7XG4gIGJhY2tncm91bmQtc2l6ZTogMjRweDtcbiAgYm9yZGVyLWNvbG9yOiAjZmY0MTM2O1xuICBwYWRkaW5nLWxlZnQ6IDQwcHg7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1maWVsZC1lcnJvciB7XG4gIGZvbnQtc2l6ZTogMC44NXJlbTtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXQuY3RjdC1pbnZhbGlkIHtcbiAgYmFja2dyb3VuZDogI2ZmZiB1cmwoXCIuLi9pbWFnZXMvZXJyb3Iuc3ZnXCIpIG5vLXJlcGVhdDtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDY1LCA1NCwgMC4wMik7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IDhweCA1MCU7XG4gIGJhY2tncm91bmQtc2l6ZTogMjRweDtcbiAgYm9yZGVyLWNvbG9yOiAjZmY0MTM2O1xuICBwYWRkaW5nLWxlZnQ6IDQwcHg7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciBpbnB1dC5jdGN0LWxhYmVsLWxlZnQsXG4uY3RjdC1mb3JtLXdyYXBwZXIgdGV4dGFyZWEuY3RjdC1sYWJlbC1sZWZ0IHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB3aWR0aDogNzUlO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgc3Bhbi5jdGN0LWxhYmVsLWxlZnQge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG1hcmdpbi1yaWdodDogNSU7XG4gIHdpZHRoOiAyMCU7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciBpbnB1dC5jdGN0LWxhYmVsLXJpZ2h0LFxuLmN0Y3QtZm9ybS13cmFwcGVyIHRleHRhcmVhLmN0Y3QtbGFiZWwtcmlnaHQge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG1hcmdpbi1yaWdodDogNSU7XG4gIHdpZHRoOiA3NSU7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciBpbnB1dC5jdGN0LWxhYmVsLXJpZ2h0W3R5cGU9XCJjaGVja2JveFwiXSxcbi5jdGN0LWZvcm0td3JhcHBlciB0ZXh0YXJlYS5jdGN0LWxhYmVsLXJpZ2h0W3R5cGU9XCJjaGVja2JveFwiXSB7XG4gIHdpZHRoOiBhdXRvO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgc3Bhbi5jdGN0LWxhYmVsLXJpZ2h0IHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB3aWR0aDogMjAlO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgc3Bhbi5jdGN0LWxhYmVsLWhpZGRlbiB7XG4gIGxlZnQ6IC05OTk5cHggIWltcG9ydGFudDtcbiAgcG9zaXRpb246IGFic29sdXRlICFpbXBvcnRhbnQ7XG4gIHRvcDogLTk5OTlweCAhaW1wb3J0YW50O1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3RfdXNhZ2Uge1xuICBib3JkZXI6IDAgbm9uZTtcbiAgY2xpcDogcmVjdCgwLCAwLCAwLCAwKTtcbiAgaGVpZ2h0OiAxcHg7XG4gIG1hcmdpbjogLTFweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcGFkZGluZzogMDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMXB4O1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLm5vLXJlY2FwdGNoYSAuY3RjdC1zdWJtaXR0ZWQ6ZGlzYWJsZWQge1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCIuLi9pbWFnZXMvb3ZhbC5taW4uc3ZnXCIpO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGNvbG9yOiB0cmFuc3BhcmVudDtcbiAgY3Vyc29yOiB3YWl0O1xuICBvcGFjaXR5OiAwLjM7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuaGFzLXJlY2FwdGNoYSAuY3RjdC1zdWJtaXR0ZWQ6ZGlzYWJsZWQge1xuICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZm9ybTo6YWZ0ZXIge1xuICBjbGVhcjogYm90aDtcbiAgY29udGVudDogJyc7XG4gIGRpc3BsYXk6IHRhYmxlO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZm9ybSAuY3RjdC1sYWJlbC10b3AgbGFiZWwsXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZm9ybSAuY3RjdC1sYWJlbC1ib3R0b20gbGFiZWwge1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZvcm0gLmN0Y3QtbGFiZWwtbGVmdCBsYWJlbCxcbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1mb3JtIC5jdGN0LWxhYmVsLXJpZ2h0IGxhYmVsIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZm9ybSBhYmJyIHtcbiAgYm9yZGVyOiBub25lO1xuICBjb2xvcjogI2ZmNDEzNjtcbiAgZm9udC1zaXplOiAwLjlyZW07XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1pbnB1dC1jb250YWluZXIgbGFiZWwge1xuICBjb2xvcjogI2FhYTtcbiAgZm9udC1zaXplOiAwLjhyZW07XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1maWVsZC1lcnJvciB7XG4gIGNvbG9yOiAjZmY0MTM2O1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3Qtc3VibWl0IHtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZm9ybS1maWVsZC1jaGVja2JveCBmaWVsZHNldCB7XG4gIGJvcmRlcjogbm9uZTtcbiAgcGFkZGluZzogMDtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZvcm0tZmllbGQtY2hlY2tib3ggZmllbGRzZXQgbGVnZW5kIHtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgcGFkZGluZzogMDtcbn1cblxuLmN0Y3QtdHdlbnR5Zm91cnRlZW4gLmN0Y3QtZm9ybS1maWVsZCBpbnB1dCB7XG4gIHdpZHRoOiAxMDAlO1xufVxuIl19 */
 
 
 
 
 
 
36
  }
37
 
38
  .ctct-form-wrapper input[type='text']:required:valid, .ctct-form-wrapper input[type='email']:required:valid, .ctct-form-wrapper input[type='password']:required:valid, .ctct-form-wrapper input[type='tel']:required:valid, .ctct-form-wrapper input[type='number']:required:valid {
39
+ background-image: url(../images/check_circle.svg);
40
  background-position: 8px 50%;
41
  background-repeat: no-repeat;
42
  background-size: 18px;
45
  }
46
 
47
  .ctct-form-wrapper input[type='text']:required.ctct-invalid, .ctct-form-wrapper input[type='text'].ctct-invalid, .ctct-form-wrapper input[type='email']:required.ctct-invalid, .ctct-form-wrapper input[type='email'].ctct-invalid, .ctct-form-wrapper input[type='password']:required.ctct-invalid, .ctct-form-wrapper input[type='password'].ctct-invalid, .ctct-form-wrapper input[type='tel']:required.ctct-invalid, .ctct-form-wrapper input[type='tel'].ctct-invalid, .ctct-form-wrapper input[type='number']:required.ctct-invalid, .ctct-form-wrapper input[type='number'].ctct-invalid {
48
+ background: #fff url(../images/error.svg) no-repeat;
49
  background-color: rgba(255, 65, 54, 0.02);
50
  background-position: 8px 50%;
51
  background-size: 24px;
59
  }
60
 
61
  .ctct-form-wrapper input.ctct-invalid {
62
+ background: #fff url(../images/error.svg) no-repeat;
63
  background-color: rgba(255, 65, 54, 0.02);
64
  background-position: 8px 50%;
65
  background-size: 24px;
114
  }
115
 
116
  .ctct-form-wrapper .no-recaptcha .ctct-submitted:disabled {
117
+ background-image: url(../images/oval.min.svg);
118
  background-position: center;
119
  background-repeat: no-repeat;
120
  color: transparent;
171
  padding: 0;
172
  }
173
 
174
+ .ctct-twentyfourteen .ctct-form-description ~ .ctct-button {
175
+ display: inline-block;
176
+ font-size: 1rem;
177
+ margin-bottom: 25px;
178
+ }
179
+
180
+ .ctct-twentyfourteen .ctct-form-field input:not(.ctct-checkbox) {
181
+ width: 100%;
182
+ }
183
+
184
+ .ctct-twentyfifteen .ctct-form-description ~ .ctct-button {
185
+ display: inline-block;
186
+ font-size: 1rem;
187
+ margin-bottom: 25px;
188
+ }
189
+
190
+ .ctct-twentyfifteen .ctct-form-field input[type="tel"] {
191
+ padding: 0.5278em;
192
+ width: 100%;
193
+ }
194
+
195
+ .ctct-twentyfifteen .ctct-form-wrapper .ctct-input-container label {
196
+ font-size: 75%;
197
+ }
198
+
199
+ .ctct-twentysixteen .ctct-form-description ~ .ctct-button {
200
+ display: inline-block;
201
+ margin-bottom: 25px;
202
+ }
203
+
204
+ .ctct-twentysixteen .ctct-form-wrapper span.ctct-label-right {
205
+ width: 80%;
206
+ }
207
+
208
+ .ctct-twentyseventeen .ctct-form-description ~ .ctct-button {
209
+ display: inline-block;
210
+ margin-bottom: 25px;
211
+ }
212
+
213
+ .ctct-twentyseventeen .ctct-form-wrapper .ctct-input-container label {
214
+ display: inline;
215
+ }
216
+
217
+ .ctct-twentyseventeen .ctct-form-wrapper span.ctct-label-right {
218
+ width: 80%;
219
+ }
220
+
221
+ .ctct-twentynineteen .ctct-form-description ~ .ctct-button {
222
+ margin-bottom: 25px;
223
+ }
224
+
225
+ .ctct-twentynineteen .ctct-address {
226
+ margin-bottom: 1rem;
227
+ }
228
+
229
+ .ctct-twentynineteen .ctct-form-field input[type="text"],
230
+ .ctct-twentynineteen .ctct-form-field input[type="email"],
231
+ .ctct-twentynineteen .ctct-form-field input[type="url"],
232
+ .ctct-twentynineteen .ctct-form-field input[type="tel"] {
233
+ width: 100%;
234
+ }
235
+
236
+ .ctct-twentytwenty .ctct-form-description ~ .ctct-button {
237
+ margin-bottom: 25px;
238
+ }
239
+
240
+ .ctct-twentytwenty .ctct-form-wrapper .ctct-form abbr {
241
+ font-size: 1.6rem;
242
+ }
243
+
244
+ .ctct-twentytwenty .ctct-form-wrapper .ctct-input-container label {
245
+ font-size: 1.6rem;
246
+ }
247
+
248
+ .ctct-twentytwentyone .ctct-button {
249
+ padding: 0 !important;
250
+ }
251
+
252
+ .ctct-twentytwentyone .ctct-form-field input[type="text"],
253
+ .ctct-twentytwentyone .ctct-form-field input[type="email"],
254
+ .ctct-twentytwentyone .ctct-form-field input[type="url"],
255
+ .ctct-twentytwentyone .ctct-form-field input[type="tel"] {
256
  width: 100%;
257
  }
258
 
283
  }
284
  }
285
 
286
+ @media screen and (max-width: 414px) {
287
+ .ctct-twentynineteen .ctct-form-wrapper span.ctct-label-right {
288
+ width: 80%;
289
+ }
290
+ }
291
+
292
+ /*# sourceMappingURL=data:application/json;charset=utf8;base64,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aUI7QUFDbkI7O0FBRUE7RUFDRSxxQkFBcUI7QUFDdkI7O0FBRUE7Ozs7RUFJRSxXQUFXO0FBQ2I7O0FBbFFBO0VBQ0U7SUFDRSxXQUFXO0lBQ1gsZ0JBQWdCO0lBQ2hCLFVBQVU7RUFDWjtFQUNBO0lBQ0UsZUFBZTtFQUNqQjtFQUlBO0lBQ0UsV0FBVztJQUNYLGdCQUFnQjtJQUNoQixVQUFVO0VBQ1o7RUFDQTtJQUNFLGVBQWU7RUFDakI7RUFJQTtJQUNFLFdBQVc7SUFDWCxnQkFBZ0I7SUFDaEIsVUFBVTtFQUNaO0VBQ0E7SUFDRSxlQUFlO0VBQ2pCO0FBckJGOztBQThOQTtFQUNFO0lBQ0UsVUFBVTtFQUNaO0FBQ0YiLCJmaWxlIjoic3R5bGUuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWJ1dHRvbiB7XG4gIGZvbnQtc2l6ZTogMC45cmVtO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtbWVzc2FnZSB7XG4gIGJvcmRlcjogMXB4IHNvbGlkO1xuICBwYWRkaW5nOiAxZW07XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1tZXNzYWdlLmN0Y3QtZXJyb3Ige1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgNjUsIDU0LCAwLjAyKTtcbiAgYm9yZGVyLWNvbG9yOiAjZmY0MTM2O1xuICBjb2xvcjogI2NmMGIwMDtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LW1lc3NhZ2UuY3RjdC1zdWNjZXNzIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSg0NiwgMjA0LCA2NCwgMC4wMik7XG4gIGJvcmRlci1jb2xvcjogIzJlY2M0MDtcbiAgY29sb3I6ICMxYjc5MjY7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1tZXNzYWdlIC5jdGN0LWRpc21pc3MtYWpheC1ub3RpY2Uge1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGZsb2F0OiByaWdodDtcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIHBhZGRpbmc6IDAuODVyZW0gMXJlbTtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZm9ybS1maWVsZCB7XG4gIG1hcmdpbjogMCAwIDFyZW07XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1maWVsZC1pbmxpbmUge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkge1xuICAuY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZmllbGQtaGFsZiB7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgbWFyZ2luLXJpZ2h0OiAyJTtcbiAgICB3aWR0aDogNDglO1xuICB9XG4gIC5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1maWVsZC1oYWxmOmxhc3Qtb2YtdHlwZSB7XG4gICAgbWFyZ2luLXJpZ2h0OiAwO1xuICB9XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkge1xuICAuY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZmllbGQtdGhpcmQge1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIG1hcmdpbi1yaWdodDogMiU7XG4gICAgd2lkdGg6IDMyJTtcbiAgfVxuICAuY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZmllbGQtdGhpcmQ6bGFzdC1vZi10eXBlIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gIH1cbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7XG4gIC5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1maWVsZC1mb3VydGgge1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIG1hcmdpbi1yaWdodDogMiU7XG4gICAgd2lkdGg6IDI0JTtcbiAgfVxuICAuY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZmllbGQtZm91cnRoOmxhc3Qtb2YtdHlwZSB7XG4gICAgbWFyZ2luLXJpZ2h0OiAwO1xuICB9XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSd0ZXh0J106cmVxdWlyZWQ6dmFsaWQsIC5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSdlbWFpbCddOnJlcXVpcmVkOnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0ncGFzc3dvcmQnXTpyZXF1aXJlZDp2YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J3RlbCddOnJlcXVpcmVkOnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0nbnVtYmVyJ106cmVxdWlyZWQ6dmFsaWQge1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vaW1hZ2VzL2NoZWNrX2NpcmNsZS5zdmcpO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA4cHggNTAlO1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICBiYWNrZ3JvdW5kLXNpemU6IDE4cHg7XG4gIGJvcmRlci1jb2xvcjogIzJlY2M0MDtcbiAgcGFkZGluZy1sZWZ0OiAzMnB4O1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0ndGV4dCddOnJlcXVpcmVkLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J3RleHQnXS5jdGN0LWludmFsaWQsIC5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSdlbWFpbCddOnJlcXVpcmVkLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J2VtYWlsJ10uY3RjdC1pbnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0ncGFzc3dvcmQnXTpyZXF1aXJlZC5jdGN0LWludmFsaWQsIC5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSdwYXNzd29yZCddLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J3RlbCddOnJlcXVpcmVkLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J3RlbCddLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J251bWJlciddOnJlcXVpcmVkLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J251bWJlciddLmN0Y3QtaW52YWxpZCB7XG4gIGJhY2tncm91bmQ6ICNmZmYgdXJsKC4uL2ltYWdlcy9lcnJvci5zdmcpIG5vLXJlcGVhdDtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDY1LCA1NCwgMC4wMik7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IDhweCA1MCU7XG4gIGJhY2tncm91bmQtc2l6ZTogMjRweDtcbiAgYm9yZGVyLWNvbG9yOiAjZmY0MTM2O1xuICBwYWRkaW5nLWxlZnQ6IDQwcHg7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1maWVsZC1lcnJvciB7XG4gIGZvbnQtc2l6ZTogMC44NXJlbTtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXQuY3RjdC1pbnZhbGlkIHtcbiAgYmFja2dyb3VuZDogI2ZmZiB1cmwoLi4vaW1hZ2VzL2Vycm9yLnN2Zykgbm8tcmVwZWF0O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgNjUsIDU0LCAwLjAyKTtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogOHB4IDUwJTtcbiAgYmFja2dyb3VuZC1zaXplOiAyNHB4O1xuICBib3JkZXItY29sb3I6ICNmZjQxMzY7XG4gIHBhZGRpbmctbGVmdDogNDBweDtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0LmN0Y3QtbGFiZWwtbGVmdCxcbi5jdGN0LWZvcm0td3JhcHBlciB0ZXh0YXJlYS5jdGN0LWxhYmVsLWxlZnQge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHdpZHRoOiA3NSU7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciBzcGFuLmN0Y3QtbGFiZWwtbGVmdCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWFyZ2luLXJpZ2h0OiA1JTtcbiAgd2lkdGg6IDIwJTtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0LmN0Y3QtbGFiZWwtcmlnaHQsXG4uY3RjdC1mb3JtLXdyYXBwZXIgdGV4dGFyZWEuY3RjdC1sYWJlbC1yaWdodCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWFyZ2luLXJpZ2h0OiA1JTtcbiAgd2lkdGg6IDc1JTtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0LmN0Y3QtbGFiZWwtcmlnaHRbdHlwZT1cImNoZWNrYm94XCJdLFxuLmN0Y3QtZm9ybS13cmFwcGVyIHRleHRhcmVhLmN0Y3QtbGFiZWwtcmlnaHRbdHlwZT1cImNoZWNrYm94XCJdIHtcbiAgd2lkdGg6IGF1dG87XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciBzcGFuLmN0Y3QtbGFiZWwtcmlnaHQge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHdpZHRoOiAyMCU7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciBzcGFuLmN0Y3QtbGFiZWwtaGlkZGVuIHtcbiAgbGVmdDogLTk5OTlweCAhaW1wb3J0YW50O1xuICBwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDtcbiAgdG9wOiAtOTk5OXB4ICFpbXBvcnRhbnQ7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdF91c2FnZSB7XG4gIGJvcmRlcjogMCBub25lO1xuICBjbGlwOiByZWN0KDAsIDAsIDAsIDApO1xuICBoZWlnaHQ6IDFweDtcbiAgbWFyZ2luOiAtMXB4O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwYWRkaW5nOiAwO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAxcHg7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAubm8tcmVjYXB0Y2hhIC5jdGN0LXN1Ym1pdHRlZDpkaXNhYmxlZCB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi9pbWFnZXMvb3ZhbC5taW4uc3ZnKTtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICBjb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGN1cnNvcjogd2FpdDtcbiAgb3BhY2l0eTogMC4zO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmhhcy1yZWNhcHRjaGEgLmN0Y3Qtc3VibWl0dGVkOmRpc2FibGVkIHtcbiAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZvcm06OmFmdGVyIHtcbiAgY2xlYXI6IGJvdGg7XG4gIGNvbnRlbnQ6ICcnO1xuICBkaXNwbGF5OiB0YWJsZTtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZvcm0gLmN0Y3QtbGFiZWwtdG9wIGxhYmVsLFxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZvcm0gLmN0Y3QtbGFiZWwtYm90dG9tIGxhYmVsIHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1mb3JtIC5jdGN0LWxhYmVsLWxlZnQgbGFiZWwsXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZm9ybSAuY3RjdC1sYWJlbC1yaWdodCBsYWJlbCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZvcm0gYWJiciB7XG4gIGJvcmRlcjogbm9uZTtcbiAgY29sb3I6ICNmZjQxMzY7XG4gIGZvbnQtc2l6ZTogMC45cmVtO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtaW5wdXQtY29udGFpbmVyIGxhYmVsIHtcbiAgY29sb3I6ICNhYWE7XG4gIGZvbnQtc2l6ZTogMC44cmVtO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZmllbGQtZXJyb3Ige1xuICBjb2xvcjogI2ZmNDEzNjtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LXN1Ym1pdCB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZvcm0tZmllbGQtY2hlY2tib3ggZmllbGRzZXQge1xuICBib3JkZXI6IG5vbmU7XG4gIHBhZGRpbmc6IDA7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1mb3JtLWZpZWxkLWNoZWNrYm94IGZpZWxkc2V0IGxlZ2VuZCB7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIHBhZGRpbmc6IDA7XG59XG5cbi5jdGN0LXR3ZW50eWZvdXJ0ZWVuIC5jdGN0LWZvcm0tZGVzY3JpcHRpb24gfiAuY3RjdC1idXR0b24ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGZvbnQtc2l6ZTogMXJlbTtcbiAgbWFyZ2luLWJvdHRvbTogMjVweDtcbn1cblxuLmN0Y3QtdHdlbnR5Zm91cnRlZW4gLmN0Y3QtZm9ybS1maWVsZCBpbnB1dDpub3QoLmN0Y3QtY2hlY2tib3gpIHtcbiAgd2lkdGg6IDEwMCU7XG59XG5cbi5jdGN0LXR3ZW50eWZpZnRlZW4gLmN0Y3QtZm9ybS1kZXNjcmlwdGlvbiB+IC5jdGN0LWJ1dHRvbiB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgZm9udC1zaXplOiAxcmVtO1xuICBtYXJnaW4tYm90dG9tOiAyNXB4O1xufVxuXG4uY3RjdC10d2VudHlmaWZ0ZWVuIC5jdGN0LWZvcm0tZmllbGQgaW5wdXRbdHlwZT1cInRlbFwiXSB7XG4gIHBhZGRpbmc6IDAuNTI3OGVtO1xuICB3aWR0aDogMTAwJTtcbn1cblxuLmN0Y3QtdHdlbnR5ZmlmdGVlbiAuY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtaW5wdXQtY29udGFpbmVyIGxhYmVsIHtcbiAgZm9udC1zaXplOiA3NSU7XG59XG5cbi5jdGN0LXR3ZW50eXNpeHRlZW4gLmN0Y3QtZm9ybS1kZXNjcmlwdGlvbiB+IC5jdGN0LWJ1dHRvbiB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWFyZ2luLWJvdHRvbTogMjVweDtcbn1cblxuLmN0Y3QtdHdlbnR5c2l4dGVlbiAuY3RjdC1mb3JtLXdyYXBwZXIgc3Bhbi5jdGN0LWxhYmVsLXJpZ2h0IHtcbiAgd2lkdGg6IDgwJTtcbn1cblxuLmN0Y3QtdHdlbnR5c2V2ZW50ZWVuIC5jdGN0LWZvcm0tZGVzY3JpcHRpb24gfiAuY3RjdC1idXR0b24ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG1hcmdpbi1ib3R0b206IDI1cHg7XG59XG5cbi5jdGN0LXR3ZW50eXNldmVudGVlbiAuY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtaW5wdXQtY29udGFpbmVyIGxhYmVsIHtcbiAgZGlzcGxheTogaW5saW5lO1xufVxuXG4uY3RjdC10d2VudHlzZXZlbnRlZW4gLmN0Y3QtZm9ybS13cmFwcGVyIHNwYW4uY3RjdC1sYWJlbC1yaWdodCB7XG4gIHdpZHRoOiA4MCU7XG59XG5cbi5jdGN0LXR3ZW50eW5pbmV0ZWVuIC5jdGN0LWZvcm0tZGVzY3JpcHRpb24gfiAuY3RjdC1idXR0b24ge1xuICBtYXJnaW4tYm90dG9tOiAyNXB4O1xufVxuXG4uY3RjdC10d2VudHluaW5ldGVlbiAuY3RjdC1hZGRyZXNzIHtcbiAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbn1cblxuLmN0Y3QtdHdlbnR5bmluZXRlZW4gLmN0Y3QtZm9ybS1maWVsZCBpbnB1dFt0eXBlPVwidGV4dFwiXSxcbi5jdGN0LXR3ZW50eW5pbmV0ZWVuIC5jdGN0LWZvcm0tZmllbGQgaW5wdXRbdHlwZT1cImVtYWlsXCJdLFxuLmN0Y3QtdHdlbnR5bmluZXRlZW4gLmN0Y3QtZm9ybS1maWVsZCBpbnB1dFt0eXBlPVwidXJsXCJdLFxuLmN0Y3QtdHdlbnR5bmluZXRlZW4gLmN0Y3QtZm9ybS1maWVsZCBpbnB1dFt0eXBlPVwidGVsXCJdIHtcbiAgd2lkdGg6IDEwMCU7XG59XG5cbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDQxNHB4KSB7XG4gIC5jdGN0LXR3ZW50eW5pbmV0ZWVuIC5jdGN0LWZvcm0td3JhcHBlciBzcGFuLmN0Y3QtbGFiZWwtcmlnaHQge1xuICAgIHdpZHRoOiA4MCU7XG4gIH1cbn1cblxuLmN0Y3QtdHdlbnR5dHdlbnR5IC5jdGN0LWZvcm0tZGVzY3JpcHRpb24gfiAuY3RjdC1idXR0b24ge1xuICBtYXJnaW4tYm90dG9tOiAyNXB4O1xufVxuXG4uY3RjdC10d2VudHl0d2VudHkgLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZvcm0gYWJiciB7XG4gIGZvbnQtc2l6ZTogMS42cmVtO1xufVxuXG4uY3RjdC10d2VudHl0d2VudHkgLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWlucHV0LWNvbnRhaW5lciBsYWJlbCB7XG4gIGZvbnQtc2l6ZTogMS42cmVtO1xufVxuXG4uY3RjdC10d2VudHl0d2VudHlvbmUgLmN0Y3QtYnV0dG9uIHtcbiAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xufVxuXG4uY3RjdC10d2VudHl0d2VudHlvbmUgLmN0Y3QtZm9ybS1maWVsZCBpbnB1dFt0eXBlPVwidGV4dFwiXSxcbi5jdGN0LXR3ZW50eXR3ZW50eW9uZSAuY3RjdC1mb3JtLWZpZWxkIGlucHV0W3R5cGU9XCJlbWFpbFwiXSxcbi5jdGN0LXR3ZW50eXR3ZW50eW9uZSAuY3RjdC1mb3JtLWZpZWxkIGlucHV0W3R5cGU9XCJ1cmxcIl0sXG4uY3RjdC10d2VudHl0d2VudHlvbmUgLmN0Y3QtZm9ybS1maWVsZCBpbnB1dFt0eXBlPVwidGVsXCJdIHtcbiAgd2lkdGg6IDEwMCU7XG59XG4iXX0= */
assets/css/style.min.css CHANGED
@@ -1,2 +1,2 @@
1
- .ctct-form-wrapper .ctct-button{font-size:.9rem}.ctct-form-wrapper .ctct-message{border:1px solid;padding:1em}.ctct-form-wrapper .ctct-message.ctct-error{background-color:rgba(255,65,54,.02);border-color:#ff4136;color:#cf0b00}.ctct-form-wrapper .ctct-message.ctct-success{background-color:rgba(46,204,64,.02);border-color:#2ecc40;color:#1b7926}.ctct-form-wrapper .ctct-message .ctct-dismiss-ajax-notice{border-radius:50%;float:right;line-height:1;padding:.85rem 1rem;text-decoration:none}.ctct-form-wrapper .ctct-form-field{margin:0 0 1rem}.ctct-form-wrapper .ctct-field-inline{display:inline-block}.ctct-form-wrapper input[type=email]:required:valid,.ctct-form-wrapper input[type=number]:required:valid,.ctct-form-wrapper input[type=password]:required:valid,.ctct-form-wrapper input[type=tel]:required:valid,.ctct-form-wrapper input[type=text]:required:valid{background-image:url(../images/check_circle.svg);background-position:8px 50%;background-repeat:no-repeat;background-size:18px;border-color:#2ecc40;padding-left:32px}.ctct-form-wrapper input[type=email].ctct-invalid,.ctct-form-wrapper input[type=email]:required.ctct-invalid,.ctct-form-wrapper input[type=number].ctct-invalid,.ctct-form-wrapper input[type=number]:required.ctct-invalid,.ctct-form-wrapper input[type=password].ctct-invalid,.ctct-form-wrapper input[type=password]:required.ctct-invalid,.ctct-form-wrapper input[type=tel].ctct-invalid,.ctct-form-wrapper input[type=tel]:required.ctct-invalid,.ctct-form-wrapper input[type=text].ctct-invalid,.ctct-form-wrapper input[type=text]:required.ctct-invalid{background:#fff url(../images/error.svg) no-repeat;background-color:rgba(255,65,54,.02);background-position:8px 50%;background-size:24px;border-color:#ff4136;padding-left:40px}.ctct-form-wrapper .ctct-field-error{font-size:.85rem;font-style:italic}.ctct-form-wrapper input.ctct-invalid{background:#fff url(../images/error.svg) no-repeat;background-color:rgba(255,65,54,.02);background-position:8px 50%;background-size:24px;border-color:#ff4136;padding-left:40px}.ctct-form-wrapper input.ctct-label-left,.ctct-form-wrapper textarea.ctct-label-left{display:inline-block;width:75%}.ctct-form-wrapper span.ctct-label-left{display:inline-block;margin-right:5%;width:20%}.ctct-form-wrapper input.ctct-label-right,.ctct-form-wrapper textarea.ctct-label-right{display:inline-block;margin-right:5%;width:75%}.ctct-form-wrapper input.ctct-label-right[type=checkbox],.ctct-form-wrapper textarea.ctct-label-right[type=checkbox]{width:auto}.ctct-form-wrapper span.ctct-label-right{display:inline-block;width:20%}.ctct-form-wrapper span.ctct-label-hidden{left:-9999px!important;position:absolute!important;top:-9999px!important}.ctct-form-wrapper .ctct_usage{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ctct-form-wrapper .no-recaptcha .ctct-submitted:disabled{background-image:url(../images/oval.min.svg);background-position:50%;background-repeat:no-repeat;color:transparent;cursor:wait;opacity:.3}.ctct-form-wrapper .has-recaptcha .ctct-submitted:disabled{cursor:not-allowed}.ctct-form-wrapper .ctct-form:after{clear:both;content:"";display:table}.ctct-form-wrapper .ctct-form .ctct-label-bottom label,.ctct-form-wrapper .ctct-form .ctct-label-top label{display:block}.ctct-form-wrapper .ctct-form .ctct-label-left label,.ctct-form-wrapper .ctct-form .ctct-label-right label{display:inline-block}.ctct-form-wrapper .ctct-form abbr{border:none;color:#ff4136;font-size:.9rem}.ctct-form-wrapper .ctct-input-container label{color:#aaa;font-size:.8rem}.ctct-form-wrapper .ctct-field-error{color:#ff4136}.ctct-form-wrapper .ctct-submit{cursor:pointer}.ctct-form-wrapper .ctct-form-field-checkbox fieldset{border:none;padding:0}.ctct-form-wrapper .ctct-form-field-checkbox fieldset legend{font-weight:400;padding:0}.ctct-twentyfourteen .ctct-form-field input{width:100%}@media (min-width:992px){.ctct-form-wrapper .ctct-field-half{float:left;margin-right:2%;width:48%}.ctct-form-wrapper .ctct-field-half:last-of-type{margin-right:0}.ctct-form-wrapper .ctct-field-third{float:left;margin-right:2%;width:32%}.ctct-form-wrapper .ctct-field-third:last-of-type{margin-right:0}.ctct-form-wrapper .ctct-field-fourth{float:left;margin-right:2%;width:24%}.ctct-form-wrapper .ctct-field-fourth:last-of-type{margin-right:0}}
2
- /*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0eWxlLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxnQ0FDRSxlQUNGLENBRUEsaUNBQ0UsZ0JBQWlCLENBQ2pCLFdBQ0YsQ0FFQSw0Q0FDRSxvQ0FBeUMsQ0FDekMsb0JBQXFCLENBQ3JCLGFBQ0YsQ0FFQSw4Q0FDRSxvQ0FBeUMsQ0FDekMsb0JBQXFCLENBQ3JCLGFBQ0YsQ0FFQSwyREFDRSxpQkFBa0IsQ0FDbEIsV0FBWSxDQUNaLGFBQWMsQ0FDZCxtQkFBcUIsQ0FDckIsb0JBQ0YsQ0FFQSxvQ0FDRSxlQUNGLENBRUEsc0NBQ0Usb0JBQ0YsQ0FtQ0EscVFBQ0UsZ0RBQW1ELENBQ25ELDJCQUE0QixDQUM1QiwyQkFBNEIsQ0FDNUIsb0JBQXFCLENBQ3JCLG9CQUFxQixDQUNyQixpQkFDRixDQUVBLG1pQkFDRSxrREFBcUQsQ0FDckQsb0NBQXlDLENBQ3pDLDJCQUE0QixDQUM1QixvQkFBcUIsQ0FDckIsb0JBQXFCLENBQ3JCLGlCQUNGLENBRUEscUNBQ0UsZ0JBQWtCLENBQ2xCLGlCQUNGLENBRUEsc0NBQ0Usa0RBQXFELENBQ3JELG9DQUF5QyxDQUN6QywyQkFBNEIsQ0FDNUIsb0JBQXFCLENBQ3JCLG9CQUFxQixDQUNyQixpQkFDRixDQUVBLHFGQUVFLG9CQUFxQixDQUNyQixTQUNGLENBRUEsd0NBQ0Usb0JBQXFCLENBQ3JCLGVBQWdCLENBQ2hCLFNBQ0YsQ0FFQSx1RkFFRSxvQkFBcUIsQ0FDckIsZUFBZ0IsQ0FDaEIsU0FDRixDQUVBLHFIQUVFLFVBQ0YsQ0FFQSx5Q0FDRSxvQkFBcUIsQ0FDckIsU0FDRixDQUVBLDBDQUNFLHNCQUF3QixDQUN4QiwyQkFBNkIsQ0FDN0IscUJBQ0YsQ0FFQSwrQkFDRSxRQUFjLENBQ2Qsa0JBQXNCLENBQ3RCLFVBQVcsQ0FDWCxXQUFZLENBQ1osZUFBZ0IsQ0FDaEIsU0FBVSxDQUNWLGlCQUFrQixDQUNsQixTQUNGLENBRUEsMERBQ0UsNENBQStDLENBQy9DLHVCQUEyQixDQUMzQiwyQkFBNEIsQ0FDNUIsaUJBQWtCLENBQ2xCLFdBQVksQ0FDWixVQUNGLENBRUEsMkRBQ0Usa0JBQ0YsQ0FFQSxvQ0FDRSxVQUFXLENBQ1gsVUFBVyxDQUNYLGFBQ0YsQ0FFQSwyR0FFRSxhQUNGLENBRUEsMkdBRUUsb0JBQ0YsQ0FFQSxtQ0FDRSxXQUFZLENBQ1osYUFBYyxDQUNkLGVBQ0YsQ0FFQSwrQ0FDRSxVQUFXLENBQ1gsZUFDRixDQUVBLHFDQUNFLGFBQ0YsQ0FFQSxnQ0FDRSxjQUNGLENBRUEsc0RBQ0UsV0FBWSxDQUNaLFNBQ0YsQ0FFQSw2REFDRSxlQUFtQixDQUNuQixTQUNGLENBRUEsNENBQ0UsVUFDRixDQTNLQSx5QkFDRSxvQ0FDRSxVQUFXLENBQ1gsZUFBZ0IsQ0FDaEIsU0FDRixDQUNBLGlEQUNFLGNBQ0YsQ0FJQSxxQ0FDRSxVQUFXLENBQ1gsZUFBZ0IsQ0FDaEIsU0FDRixDQUNBLGtEQUNFLGNBQ0YsQ0FJQSxzQ0FDRSxVQUFXLENBQ1gsZUFBZ0IsQ0FDaEIsU0FDRixDQUNBLG1EQUNFLGNBQ0YsQ0FyQkYiLCJmaWxlIjoic3R5bGUubWluLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1idXR0b24ge1xuICBmb250LXNpemU6IDAuOXJlbTtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LW1lc3NhZ2Uge1xuICBib3JkZXI6IDFweCBzb2xpZDtcbiAgcGFkZGluZzogMWVtO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtbWVzc2FnZS5jdGN0LWVycm9yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDY1LCA1NCwgMC4wMik7XG4gIGJvcmRlci1jb2xvcjogI2ZmNDEzNjtcbiAgY29sb3I6ICNjZjBiMDA7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1tZXNzYWdlLmN0Y3Qtc3VjY2VzcyB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoNDYsIDIwNCwgNjQsIDAuMDIpO1xuICBib3JkZXItY29sb3I6ICMyZWNjNDA7XG4gIGNvbG9yOiAjMWI3OTI2O1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtbWVzc2FnZSAuY3RjdC1kaXNtaXNzLWFqYXgtbm90aWNlIHtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBmbG9hdDogcmlnaHQ7XG4gIGxpbmUtaGVpZ2h0OiAxO1xuICBwYWRkaW5nOiAwLjg1cmVtIDFyZW07XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZvcm0tZmllbGQge1xuICBtYXJnaW46IDAgMCAxcmVtO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZmllbGQtaW5saW5lIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHtcbiAgLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZpZWxkLWhhbGYge1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIG1hcmdpbi1yaWdodDogMiU7XG4gICAgd2lkdGg6IDQ4JTtcbiAgfVxuICAuY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZmllbGQtaGFsZjpsYXN0LW9mLXR5cGUge1xuICAgIG1hcmdpbi1yaWdodDogMDtcbiAgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHtcbiAgLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZpZWxkLXRoaXJkIHtcbiAgICBmbG9hdDogbGVmdDtcbiAgICBtYXJnaW4tcmlnaHQ6IDIlO1xuICAgIHdpZHRoOiAzMiU7XG4gIH1cbiAgLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZpZWxkLXRoaXJkOmxhc3Qtb2YtdHlwZSB7XG4gICAgbWFyZ2luLXJpZ2h0OiAwO1xuICB9XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkge1xuICAuY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZmllbGQtZm91cnRoIHtcbiAgICBmbG9hdDogbGVmdDtcbiAgICBtYXJnaW4tcmlnaHQ6IDIlO1xuICAgIHdpZHRoOiAyNCU7XG4gIH1cbiAgLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZpZWxkLWZvdXJ0aDpsYXN0LW9mLXR5cGUge1xuICAgIG1hcmdpbi1yaWdodDogMDtcbiAgfVxufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0ndGV4dCddOnJlcXVpcmVkOnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0nZW1haWwnXTpyZXF1aXJlZDp2YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J3Bhc3N3b3JkJ106cmVxdWlyZWQ6dmFsaWQsIC5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSd0ZWwnXTpyZXF1aXJlZDp2YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J251bWJlciddOnJlcXVpcmVkOnZhbGlkIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiLi4vaW1hZ2VzL2NoZWNrX2NpcmNsZS5zdmdcIik7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IDhweCA1MCU7XG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtc2l6ZTogMThweDtcbiAgYm9yZGVyLWNvbG9yOiAjMmVjYzQwO1xuICBwYWRkaW5nLWxlZnQ6IDMycHg7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSd0ZXh0J106cmVxdWlyZWQuY3RjdC1pbnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0ndGV4dCddLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J2VtYWlsJ106cmVxdWlyZWQuY3RjdC1pbnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0nZW1haWwnXS5jdGN0LWludmFsaWQsIC5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSdwYXNzd29yZCddOnJlcXVpcmVkLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J3Bhc3N3b3JkJ10uY3RjdC1pbnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0ndGVsJ106cmVxdWlyZWQuY3RjdC1pbnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0ndGVsJ10uY3RjdC1pbnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0nbnVtYmVyJ106cmVxdWlyZWQuY3RjdC1pbnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0nbnVtYmVyJ10uY3RjdC1pbnZhbGlkIHtcbiAgYmFja2dyb3VuZDogI2ZmZiB1cmwoXCIuLi9pbWFnZXMvZXJyb3Iuc3ZnXCIpIG5vLXJlcGVhdDtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDY1LCA1NCwgMC4wMik7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IDhweCA1MCU7XG4gIGJhY2tncm91bmQtc2l6ZTogMjRweDtcbiAgYm9yZGVyLWNvbG9yOiAjZmY0MTM2O1xuICBwYWRkaW5nLWxlZnQ6IDQwcHg7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1maWVsZC1lcnJvciB7XG4gIGZvbnQtc2l6ZTogMC44NXJlbTtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXQuY3RjdC1pbnZhbGlkIHtcbiAgYmFja2dyb3VuZDogI2ZmZiB1cmwoXCIuLi9pbWFnZXMvZXJyb3Iuc3ZnXCIpIG5vLXJlcGVhdDtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDY1LCA1NCwgMC4wMik7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IDhweCA1MCU7XG4gIGJhY2tncm91bmQtc2l6ZTogMjRweDtcbiAgYm9yZGVyLWNvbG9yOiAjZmY0MTM2O1xuICBwYWRkaW5nLWxlZnQ6IDQwcHg7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciBpbnB1dC5jdGN0LWxhYmVsLWxlZnQsXG4uY3RjdC1mb3JtLXdyYXBwZXIgdGV4dGFyZWEuY3RjdC1sYWJlbC1sZWZ0IHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB3aWR0aDogNzUlO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgc3Bhbi5jdGN0LWxhYmVsLWxlZnQge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG1hcmdpbi1yaWdodDogNSU7XG4gIHdpZHRoOiAyMCU7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciBpbnB1dC5jdGN0LWxhYmVsLXJpZ2h0LFxuLmN0Y3QtZm9ybS13cmFwcGVyIHRleHRhcmVhLmN0Y3QtbGFiZWwtcmlnaHQge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG1hcmdpbi1yaWdodDogNSU7XG4gIHdpZHRoOiA3NSU7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciBpbnB1dC5jdGN0LWxhYmVsLXJpZ2h0W3R5cGU9XCJjaGVja2JveFwiXSxcbi5jdGN0LWZvcm0td3JhcHBlciB0ZXh0YXJlYS5jdGN0LWxhYmVsLXJpZ2h0W3R5cGU9XCJjaGVja2JveFwiXSB7XG4gIHdpZHRoOiBhdXRvO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgc3Bhbi5jdGN0LWxhYmVsLXJpZ2h0IHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB3aWR0aDogMjAlO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgc3Bhbi5jdGN0LWxhYmVsLWhpZGRlbiB7XG4gIGxlZnQ6IC05OTk5cHggIWltcG9ydGFudDtcbiAgcG9zaXRpb246IGFic29sdXRlICFpbXBvcnRhbnQ7XG4gIHRvcDogLTk5OTlweCAhaW1wb3J0YW50O1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3RfdXNhZ2Uge1xuICBib3JkZXI6IDAgbm9uZTtcbiAgY2xpcDogcmVjdCgwLCAwLCAwLCAwKTtcbiAgaGVpZ2h0OiAxcHg7XG4gIG1hcmdpbjogLTFweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcGFkZGluZzogMDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMXB4O1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLm5vLXJlY2FwdGNoYSAuY3RjdC1zdWJtaXR0ZWQ6ZGlzYWJsZWQge1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCIuLi9pbWFnZXMvb3ZhbC5taW4uc3ZnXCIpO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGNvbG9yOiB0cmFuc3BhcmVudDtcbiAgY3Vyc29yOiB3YWl0O1xuICBvcGFjaXR5OiAwLjM7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuaGFzLXJlY2FwdGNoYSAuY3RjdC1zdWJtaXR0ZWQ6ZGlzYWJsZWQge1xuICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZm9ybTo6YWZ0ZXIge1xuICBjbGVhcjogYm90aDtcbiAgY29udGVudDogJyc7XG4gIGRpc3BsYXk6IHRhYmxlO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZm9ybSAuY3RjdC1sYWJlbC10b3AgbGFiZWwsXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZm9ybSAuY3RjdC1sYWJlbC1ib3R0b20gbGFiZWwge1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZvcm0gLmN0Y3QtbGFiZWwtbGVmdCBsYWJlbCxcbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1mb3JtIC5jdGN0LWxhYmVsLXJpZ2h0IGxhYmVsIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZm9ybSBhYmJyIHtcbiAgYm9yZGVyOiBub25lO1xuICBjb2xvcjogI2ZmNDEzNjtcbiAgZm9udC1zaXplOiAwLjlyZW07XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1pbnB1dC1jb250YWluZXIgbGFiZWwge1xuICBjb2xvcjogI2FhYTtcbiAgZm9udC1zaXplOiAwLjhyZW07XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1maWVsZC1lcnJvciB7XG4gIGNvbG9yOiAjZmY0MTM2O1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3Qtc3VibWl0IHtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZm9ybS1maWVsZC1jaGVja2JveCBmaWVsZHNldCB7XG4gIGJvcmRlcjogbm9uZTtcbiAgcGFkZGluZzogMDtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZvcm0tZmllbGQtY2hlY2tib3ggZmllbGRzZXQgbGVnZW5kIHtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgcGFkZGluZzogMDtcbn1cblxuLmN0Y3QtdHdlbnR5Zm91cnRlZW4gLmN0Y3QtZm9ybS1maWVsZCBpbnB1dCB7XG4gIHdpZHRoOiAxMDAlO1xufVxuIl19 */
1
+ .ctct-form-wrapper .ctct-button{font-size:.9rem}.ctct-form-wrapper .ctct-message{border:1px solid;padding:1em}.ctct-form-wrapper .ctct-message.ctct-error{background-color:rgba(255,65,54,.02);border-color:#ff4136;color:#cf0b00}.ctct-form-wrapper .ctct-message.ctct-success{background-color:rgba(46,204,64,.02);border-color:#2ecc40;color:#1b7926}.ctct-form-wrapper .ctct-message .ctct-dismiss-ajax-notice{border-radius:50%;float:right;line-height:1;padding:.85rem 1rem;text-decoration:none}.ctct-form-wrapper .ctct-form-field{margin:0 0 1rem}.ctct-form-wrapper .ctct-field-inline{display:inline-block}.ctct-form-wrapper input[type=email]:required:valid,.ctct-form-wrapper input[type=number]:required:valid,.ctct-form-wrapper input[type=password]:required:valid,.ctct-form-wrapper input[type=tel]:required:valid,.ctct-form-wrapper input[type=text]:required:valid{background-image:url(../images/check_circle.svg);background-position:8px 50%;background-repeat:no-repeat;background-size:18px;border-color:#2ecc40;padding-left:32px}.ctct-form-wrapper input[type=email].ctct-invalid,.ctct-form-wrapper input[type=email]:required.ctct-invalid,.ctct-form-wrapper input[type=number].ctct-invalid,.ctct-form-wrapper input[type=number]:required.ctct-invalid,.ctct-form-wrapper input[type=password].ctct-invalid,.ctct-form-wrapper input[type=password]:required.ctct-invalid,.ctct-form-wrapper input[type=tel].ctct-invalid,.ctct-form-wrapper input[type=tel]:required.ctct-invalid,.ctct-form-wrapper input[type=text].ctct-invalid,.ctct-form-wrapper input[type=text]:required.ctct-invalid{background:#fff url(../images/error.svg) no-repeat;background-color:rgba(255,65,54,.02);background-position:8px 50%;background-size:24px;border-color:#ff4136;padding-left:40px}.ctct-form-wrapper .ctct-field-error{font-size:.85rem;font-style:italic}.ctct-form-wrapper input.ctct-invalid{background:#fff url(../images/error.svg) no-repeat;background-color:rgba(255,65,54,.02);background-position:8px 50%;background-size:24px;border-color:#ff4136;padding-left:40px}.ctct-form-wrapper input.ctct-label-left,.ctct-form-wrapper textarea.ctct-label-left{display:inline-block;width:75%}.ctct-form-wrapper span.ctct-label-left{display:inline-block;margin-right:5%;width:20%}.ctct-form-wrapper input.ctct-label-right,.ctct-form-wrapper textarea.ctct-label-right{display:inline-block;margin-right:5%;width:75%}.ctct-form-wrapper input.ctct-label-right[type=checkbox],.ctct-form-wrapper textarea.ctct-label-right[type=checkbox]{width:auto}.ctct-form-wrapper span.ctct-label-right{display:inline-block;width:20%}.ctct-form-wrapper span.ctct-label-hidden{left:-9999px!important;position:absolute!important;top:-9999px!important}.ctct-form-wrapper .ctct_usage{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ctct-form-wrapper .no-recaptcha .ctct-submitted:disabled{background-image:url(../images/oval.min.svg);background-position:50%;background-repeat:no-repeat;color:transparent;cursor:wait;opacity:.3}.ctct-form-wrapper .has-recaptcha .ctct-submitted:disabled{cursor:not-allowed}.ctct-form-wrapper .ctct-form:after{clear:both;content:"";display:table}.ctct-form-wrapper .ctct-form .ctct-label-bottom label,.ctct-form-wrapper .ctct-form .ctct-label-top label{display:block}.ctct-form-wrapper .ctct-form .ctct-label-left label,.ctct-form-wrapper .ctct-form .ctct-label-right label{display:inline-block}.ctct-form-wrapper .ctct-form abbr{border:none;color:#ff4136;font-size:.9rem}.ctct-form-wrapper .ctct-input-container label{color:#aaa;font-size:.8rem}.ctct-form-wrapper .ctct-field-error{color:#ff4136}.ctct-form-wrapper .ctct-submit{cursor:pointer}.ctct-form-wrapper .ctct-form-field-checkbox fieldset{border:none;padding:0}.ctct-form-wrapper .ctct-form-field-checkbox fieldset legend{font-weight:400;padding:0}.ctct-twentyfourteen .ctct-form-description~.ctct-button{display:inline-block;font-size:1rem;margin-bottom:25px}.ctct-twentyfourteen .ctct-form-field input:not(.ctct-checkbox){width:100%}.ctct-twentyfifteen .ctct-form-description~.ctct-button{display:inline-block;font-size:1rem;margin-bottom:25px}.ctct-twentyfifteen .ctct-form-field input[type=tel]{padding:.5278em;width:100%}.ctct-twentyfifteen .ctct-form-wrapper .ctct-input-container label{font-size:75%}.ctct-twentysixteen .ctct-form-description~.ctct-button{display:inline-block;margin-bottom:25px}.ctct-twentysixteen .ctct-form-wrapper span.ctct-label-right{width:80%}.ctct-twentyseventeen .ctct-form-description~.ctct-button{display:inline-block;margin-bottom:25px}.ctct-twentyseventeen .ctct-form-wrapper .ctct-input-container label{display:inline}.ctct-twentyseventeen .ctct-form-wrapper span.ctct-label-right{width:80%}.ctct-twentynineteen .ctct-form-description~.ctct-button{margin-bottom:25px}.ctct-twentynineteen .ctct-address{margin-bottom:1rem}.ctct-twentynineteen .ctct-form-field input[type=email],.ctct-twentynineteen .ctct-form-field input[type=tel],.ctct-twentynineteen .ctct-form-field input[type=text],.ctct-twentynineteen .ctct-form-field input[type=url]{width:100%}.ctct-twentytwenty .ctct-form-description~.ctct-button{margin-bottom:25px}.ctct-twentytwenty .ctct-form-wrapper .ctct-form abbr,.ctct-twentytwenty .ctct-form-wrapper .ctct-input-container label{font-size:1.6rem}.ctct-twentytwentyone .ctct-button{padding:0!important}.ctct-twentytwentyone .ctct-form-field input[type=email],.ctct-twentytwentyone .ctct-form-field input[type=tel],.ctct-twentytwentyone .ctct-form-field input[type=text],.ctct-twentytwentyone .ctct-form-field input[type=url]{width:100%}@media (min-width:992px){.ctct-form-wrapper .ctct-field-half{float:left;margin-right:2%;width:48%}.ctct-form-wrapper .ctct-field-half:last-of-type{margin-right:0}.ctct-form-wrapper .ctct-field-third{float:left;margin-right:2%;width:32%}.ctct-form-wrapper .ctct-field-third:last-of-type{margin-right:0}.ctct-form-wrapper .ctct-field-fourth{float:left;margin-right:2%;width:24%}.ctct-form-wrapper .ctct-field-fourth:last-of-type{margin-right:0}}@media screen and (max-width:414px){.ctct-twentynineteen .ctct-form-wrapper span.ctct-label-right{width:80%}}
2
+ /*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0eWxlLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxnQ0FDRSxlQUNGLENBRUEsaUNBQ0UsZ0JBQWlCLENBQ2pCLFdBQ0YsQ0FFQSw0Q0FDRSxvQ0FBeUMsQ0FDekMsb0JBQXFCLENBQ3JCLGFBQ0YsQ0FFQSw4Q0FDRSxvQ0FBeUMsQ0FDekMsb0JBQXFCLENBQ3JCLGFBQ0YsQ0FFQSwyREFDRSxpQkFBa0IsQ0FDbEIsV0FBWSxDQUNaLGFBQWMsQ0FDZCxtQkFBcUIsQ0FDckIsb0JBQ0YsQ0FFQSxvQ0FDRSxlQUNGLENBRUEsc0NBQ0Usb0JBQ0YsQ0FtQ0EscVFBQ0UsZ0RBQWlELENBQ2pELDJCQUE0QixDQUM1QiwyQkFBNEIsQ0FDNUIsb0JBQXFCLENBQ3JCLG9CQUFxQixDQUNyQixpQkFDRixDQUVBLG1pQkFDRSxrREFBbUQsQ0FDbkQsb0NBQXlDLENBQ3pDLDJCQUE0QixDQUM1QixvQkFBcUIsQ0FDckIsb0JBQXFCLENBQ3JCLGlCQUNGLENBRUEscUNBQ0UsZ0JBQWtCLENBQ2xCLGlCQUNGLENBRUEsc0NBQ0Usa0RBQW1ELENBQ25ELG9DQUF5QyxDQUN6QywyQkFBNEIsQ0FDNUIsb0JBQXFCLENBQ3JCLG9CQUFxQixDQUNyQixpQkFDRixDQUVBLHFGQUVFLG9CQUFxQixDQUNyQixTQUNGLENBRUEsd0NBQ0Usb0JBQXFCLENBQ3JCLGVBQWdCLENBQ2hCLFNBQ0YsQ0FFQSx1RkFFRSxvQkFBcUIsQ0FDckIsZUFBZ0IsQ0FDaEIsU0FDRixDQUVBLHFIQUVFLFVBQ0YsQ0FFQSx5Q0FDRSxvQkFBcUIsQ0FDckIsU0FDRixDQUVBLDBDQUNFLHNCQUF3QixDQUN4QiwyQkFBNkIsQ0FDN0IscUJBQ0YsQ0FFQSwrQkFDRSxRQUFjLENBQ2Qsa0JBQXNCLENBQ3RCLFVBQVcsQ0FDWCxXQUFZLENBQ1osZUFBZ0IsQ0FDaEIsU0FBVSxDQUNWLGlCQUFrQixDQUNsQixTQUNGLENBRUEsMERBQ0UsNENBQTZDLENBQzdDLHVCQUEyQixDQUMzQiwyQkFBNEIsQ0FDNUIsaUJBQWtCLENBQ2xCLFdBQVksQ0FDWixVQUNGLENBRUEsMkRBQ0Usa0JBQ0YsQ0FFQSxvQ0FDRSxVQUFXLENBQ1gsVUFBVyxDQUNYLGFBQ0YsQ0FFQSwyR0FFRSxhQUNGLENBRUEsMkdBRUUsb0JBQ0YsQ0FFQSxtQ0FDRSxXQUFZLENBQ1osYUFBYyxDQUNkLGVBQ0YsQ0FFQSwrQ0FDRSxVQUFXLENBQ1gsZUFDRixDQUVBLHFDQUNFLGFBQ0YsQ0FFQSxnQ0FDRSxjQUNGLENBRUEsc0RBQ0UsV0FBWSxDQUNaLFNBQ0YsQ0FFQSw2REFDRSxlQUFtQixDQUNuQixTQUNGLENBRUEseURBQ0Usb0JBQXFCLENBQ3JCLGNBQWUsQ0FDZixrQkFDRixDQUVBLGdFQUNFLFVBQ0YsQ0FFQSx3REFDRSxvQkFBcUIsQ0FDckIsY0FBZSxDQUNmLGtCQUNGLENBRUEscURBQ0UsZUFBaUIsQ0FDakIsVUFDRixDQUVBLG1FQUNFLGFBQ0YsQ0FFQSx3REFDRSxvQkFBcUIsQ0FDckIsa0JBQ0YsQ0FFQSw2REFDRSxTQUNGLENBRUEsMERBQ0Usb0JBQXFCLENBQ3JCLGtCQUNGLENBRUEscUVBQ0UsY0FDRixDQUVBLCtEQUNFLFNBQ0YsQ0FFQSx5REFDRSxrQkFDRixDQUVBLG1DQUNFLGtCQUNGLENBRUEsMk5BSUUsVUFDRixDQVFBLHVEQUNFLGtCQUNGLENBTUEsd0hBQ0UsZ0JBQ0YsQ0FFQSxtQ0FDRSxtQkFDRixDQUVBLCtOQUlFLFVBQ0YsQ0FsUUEseUJBQ0Usb0NBQ0UsVUFBVyxDQUNYLGVBQWdCLENBQ2hCLFNBQ0YsQ0FDQSxpREFDRSxjQUNGLENBSUEscUNBQ0UsVUFBVyxDQUNYLGVBQWdCLENBQ2hCLFNBQ0YsQ0FDQSxrREFDRSxjQUNGLENBSUEsc0NBQ0UsVUFBVyxDQUNYLGVBQWdCLENBQ2hCLFNBQ0YsQ0FDQSxtREFDRSxjQUNGLENBckJGLENBOE5BLG9DQUNFLDhEQUNFLFNBQ0YsQ0FDRiIsImZpbGUiOiJzdHlsZS5taW4uY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWJ1dHRvbiB7XG4gIGZvbnQtc2l6ZTogMC45cmVtO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtbWVzc2FnZSB7XG4gIGJvcmRlcjogMXB4IHNvbGlkO1xuICBwYWRkaW5nOiAxZW07XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1tZXNzYWdlLmN0Y3QtZXJyb3Ige1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgNjUsIDU0LCAwLjAyKTtcbiAgYm9yZGVyLWNvbG9yOiAjZmY0MTM2O1xuICBjb2xvcjogI2NmMGIwMDtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LW1lc3NhZ2UuY3RjdC1zdWNjZXNzIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSg0NiwgMjA0LCA2NCwgMC4wMik7XG4gIGJvcmRlci1jb2xvcjogIzJlY2M0MDtcbiAgY29sb3I6ICMxYjc5MjY7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1tZXNzYWdlIC5jdGN0LWRpc21pc3MtYWpheC1ub3RpY2Uge1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGZsb2F0OiByaWdodDtcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIHBhZGRpbmc6IDAuODVyZW0gMXJlbTtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZm9ybS1maWVsZCB7XG4gIG1hcmdpbjogMCAwIDFyZW07XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1maWVsZC1pbmxpbmUge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkge1xuICAuY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZmllbGQtaGFsZiB7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgbWFyZ2luLXJpZ2h0OiAyJTtcbiAgICB3aWR0aDogNDglO1xuICB9XG4gIC5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1maWVsZC1oYWxmOmxhc3Qtb2YtdHlwZSB7XG4gICAgbWFyZ2luLXJpZ2h0OiAwO1xuICB9XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkge1xuICAuY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZmllbGQtdGhpcmQge1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIG1hcmdpbi1yaWdodDogMiU7XG4gICAgd2lkdGg6IDMyJTtcbiAgfVxuICAuY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZmllbGQtdGhpcmQ6bGFzdC1vZi10eXBlIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gIH1cbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7XG4gIC5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1maWVsZC1mb3VydGgge1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIG1hcmdpbi1yaWdodDogMiU7XG4gICAgd2lkdGg6IDI0JTtcbiAgfVxuICAuY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZmllbGQtZm91cnRoOmxhc3Qtb2YtdHlwZSB7XG4gICAgbWFyZ2luLXJpZ2h0OiAwO1xuICB9XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSd0ZXh0J106cmVxdWlyZWQ6dmFsaWQsIC5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSdlbWFpbCddOnJlcXVpcmVkOnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0ncGFzc3dvcmQnXTpyZXF1aXJlZDp2YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J3RlbCddOnJlcXVpcmVkOnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0nbnVtYmVyJ106cmVxdWlyZWQ6dmFsaWQge1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vaW1hZ2VzL2NoZWNrX2NpcmNsZS5zdmcpO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA4cHggNTAlO1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICBiYWNrZ3JvdW5kLXNpemU6IDE4cHg7XG4gIGJvcmRlci1jb2xvcjogIzJlY2M0MDtcbiAgcGFkZGluZy1sZWZ0OiAzMnB4O1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0ndGV4dCddOnJlcXVpcmVkLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J3RleHQnXS5jdGN0LWludmFsaWQsIC5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSdlbWFpbCddOnJlcXVpcmVkLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J2VtYWlsJ10uY3RjdC1pbnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0ncGFzc3dvcmQnXTpyZXF1aXJlZC5jdGN0LWludmFsaWQsIC5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSdwYXNzd29yZCddLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J3RlbCddOnJlcXVpcmVkLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J3RlbCddLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J251bWJlciddOnJlcXVpcmVkLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J251bWJlciddLmN0Y3QtaW52YWxpZCB7XG4gIGJhY2tncm91bmQ6ICNmZmYgdXJsKC4uL2ltYWdlcy9lcnJvci5zdmcpIG5vLXJlcGVhdDtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDY1LCA1NCwgMC4wMik7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IDhweCA1MCU7XG4gIGJhY2tncm91bmQtc2l6ZTogMjRweDtcbiAgYm9yZGVyLWNvbG9yOiAjZmY0MTM2O1xuICBwYWRkaW5nLWxlZnQ6IDQwcHg7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1maWVsZC1lcnJvciB7XG4gIGZvbnQtc2l6ZTogMC44NXJlbTtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXQuY3RjdC1pbnZhbGlkIHtcbiAgYmFja2dyb3VuZDogI2ZmZiB1cmwoLi4vaW1hZ2VzL2Vycm9yLnN2Zykgbm8tcmVwZWF0O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgNjUsIDU0LCAwLjAyKTtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogOHB4IDUwJTtcbiAgYmFja2dyb3VuZC1zaXplOiAyNHB4O1xuICBib3JkZXItY29sb3I6ICNmZjQxMzY7XG4gIHBhZGRpbmctbGVmdDogNDBweDtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0LmN0Y3QtbGFiZWwtbGVmdCxcbi5jdGN0LWZvcm0td3JhcHBlciB0ZXh0YXJlYS5jdGN0LWxhYmVsLWxlZnQge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHdpZHRoOiA3NSU7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciBzcGFuLmN0Y3QtbGFiZWwtbGVmdCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWFyZ2luLXJpZ2h0OiA1JTtcbiAgd2lkdGg6IDIwJTtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0LmN0Y3QtbGFiZWwtcmlnaHQsXG4uY3RjdC1mb3JtLXdyYXBwZXIgdGV4dGFyZWEuY3RjdC1sYWJlbC1yaWdodCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWFyZ2luLXJpZ2h0OiA1JTtcbiAgd2lkdGg6IDc1JTtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0LmN0Y3QtbGFiZWwtcmlnaHRbdHlwZT1cImNoZWNrYm94XCJdLFxuLmN0Y3QtZm9ybS13cmFwcGVyIHRleHRhcmVhLmN0Y3QtbGFiZWwtcmlnaHRbdHlwZT1cImNoZWNrYm94XCJdIHtcbiAgd2lkdGg6IGF1dG87XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciBzcGFuLmN0Y3QtbGFiZWwtcmlnaHQge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHdpZHRoOiAyMCU7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciBzcGFuLmN0Y3QtbGFiZWwtaGlkZGVuIHtcbiAgbGVmdDogLTk5OTlweCAhaW1wb3J0YW50O1xuICBwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDtcbiAgdG9wOiAtOTk5OXB4ICFpbXBvcnRhbnQ7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdF91c2FnZSB7XG4gIGJvcmRlcjogMCBub25lO1xuICBjbGlwOiByZWN0KDAsIDAsIDAsIDApO1xuICBoZWlnaHQ6IDFweDtcbiAgbWFyZ2luOiAtMXB4O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwYWRkaW5nOiAwO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAxcHg7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAubm8tcmVjYXB0Y2hhIC5jdGN0LXN1Ym1pdHRlZDpkaXNhYmxlZCB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi9pbWFnZXMvb3ZhbC5taW4uc3ZnKTtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICBjb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGN1cnNvcjogd2FpdDtcbiAgb3BhY2l0eTogMC4zO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmhhcy1yZWNhcHRjaGEgLmN0Y3Qtc3VibWl0dGVkOmRpc2FibGVkIHtcbiAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZvcm06OmFmdGVyIHtcbiAgY2xlYXI6IGJvdGg7XG4gIGNvbnRlbnQ6ICcnO1xuICBkaXNwbGF5OiB0YWJsZTtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZvcm0gLmN0Y3QtbGFiZWwtdG9wIGxhYmVsLFxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZvcm0gLmN0Y3QtbGFiZWwtYm90dG9tIGxhYmVsIHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1mb3JtIC5jdGN0LWxhYmVsLWxlZnQgbGFiZWwsXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZm9ybSAuY3RjdC1sYWJlbC1yaWdodCBsYWJlbCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZvcm0gYWJiciB7XG4gIGJvcmRlcjogbm9uZTtcbiAgY29sb3I6ICNmZjQxMzY7XG4gIGZvbnQtc2l6ZTogMC45cmVtO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtaW5wdXQtY29udGFpbmVyIGxhYmVsIHtcbiAgY29sb3I6ICNhYWE7XG4gIGZvbnQtc2l6ZTogMC44cmVtO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZmllbGQtZXJyb3Ige1xuICBjb2xvcjogI2ZmNDEzNjtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LXN1Ym1pdCB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZvcm0tZmllbGQtY2hlY2tib3ggZmllbGRzZXQge1xuICBib3JkZXI6IG5vbmU7XG4gIHBhZGRpbmc6IDA7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1mb3JtLWZpZWxkLWNoZWNrYm94IGZpZWxkc2V0IGxlZ2VuZCB7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIHBhZGRpbmc6IDA7XG59XG5cbi5jdGN0LXR3ZW50eWZvdXJ0ZWVuIC5jdGN0LWZvcm0tZGVzY3JpcHRpb24gfiAuY3RjdC1idXR0b24ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGZvbnQtc2l6ZTogMXJlbTtcbiAgbWFyZ2luLWJvdHRvbTogMjVweDtcbn1cblxuLmN0Y3QtdHdlbnR5Zm91cnRlZW4gLmN0Y3QtZm9ybS1maWVsZCBpbnB1dDpub3QoLmN0Y3QtY2hlY2tib3gpIHtcbiAgd2lkdGg6IDEwMCU7XG59XG5cbi5jdGN0LXR3ZW50eWZpZnRlZW4gLmN0Y3QtZm9ybS1kZXNjcmlwdGlvbiB+IC5jdGN0LWJ1dHRvbiB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgZm9udC1zaXplOiAxcmVtO1xuICBtYXJnaW4tYm90dG9tOiAyNXB4O1xufVxuXG4uY3RjdC10d2VudHlmaWZ0ZWVuIC5jdGN0LWZvcm0tZmllbGQgaW5wdXRbdHlwZT1cInRlbFwiXSB7XG4gIHBhZGRpbmc6IDAuNTI3OGVtO1xuICB3aWR0aDogMTAwJTtcbn1cblxuLmN0Y3QtdHdlbnR5ZmlmdGVlbiAuY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtaW5wdXQtY29udGFpbmVyIGxhYmVsIHtcbiAgZm9udC1zaXplOiA3NSU7XG59XG5cbi5jdGN0LXR3ZW50eXNpeHRlZW4gLmN0Y3QtZm9ybS1kZXNjcmlwdGlvbiB+IC5jdGN0LWJ1dHRvbiB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWFyZ2luLWJvdHRvbTogMjVweDtcbn1cblxuLmN0Y3QtdHdlbnR5c2l4dGVlbiAuY3RjdC1mb3JtLXdyYXBwZXIgc3Bhbi5jdGN0LWxhYmVsLXJpZ2h0IHtcbiAgd2lkdGg6IDgwJTtcbn1cblxuLmN0Y3QtdHdlbnR5c2V2ZW50ZWVuIC5jdGN0LWZvcm0tZGVzY3JpcHRpb24gfiAuY3RjdC1idXR0b24ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG1hcmdpbi1ib3R0b206IDI1cHg7XG59XG5cbi5jdGN0LXR3ZW50eXNldmVudGVlbiAuY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtaW5wdXQtY29udGFpbmVyIGxhYmVsIHtcbiAgZGlzcGxheTogaW5saW5lO1xufVxuXG4uY3RjdC10d2VudHlzZXZlbnRlZW4gLmN0Y3QtZm9ybS13cmFwcGVyIHNwYW4uY3RjdC1sYWJlbC1yaWdodCB7XG4gIHdpZHRoOiA4MCU7XG59XG5cbi5jdGN0LXR3ZW50eW5pbmV0ZWVuIC5jdGN0LWZvcm0tZGVzY3JpcHRpb24gfiAuY3RjdC1idXR0b24ge1xuICBtYXJnaW4tYm90dG9tOiAyNXB4O1xufVxuXG4uY3RjdC10d2VudHluaW5ldGVlbiAuY3RjdC1hZGRyZXNzIHtcbiAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbn1cblxuLmN0Y3QtdHdlbnR5bmluZXRlZW4gLmN0Y3QtZm9ybS1maWVsZCBpbnB1dFt0eXBlPVwidGV4dFwiXSxcbi5jdGN0LXR3ZW50eW5pbmV0ZWVuIC5jdGN0LWZvcm0tZmllbGQgaW5wdXRbdHlwZT1cImVtYWlsXCJdLFxuLmN0Y3QtdHdlbnR5bmluZXRlZW4gLmN0Y3QtZm9ybS1maWVsZCBpbnB1dFt0eXBlPVwidXJsXCJdLFxuLmN0Y3QtdHdlbnR5bmluZXRlZW4gLmN0Y3QtZm9ybS1maWVsZCBpbnB1dFt0eXBlPVwidGVsXCJdIHtcbiAgd2lkdGg6IDEwMCU7XG59XG5cbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDQxNHB4KSB7XG4gIC5jdGN0LXR3ZW50eW5pbmV0ZWVuIC5jdGN0LWZvcm0td3JhcHBlciBzcGFuLmN0Y3QtbGFiZWwtcmlnaHQge1xuICAgIHdpZHRoOiA4MCU7XG4gIH1cbn1cblxuLmN0Y3QtdHdlbnR5dHdlbnR5IC5jdGN0LWZvcm0tZGVzY3JpcHRpb24gfiAuY3RjdC1idXR0b24ge1xuICBtYXJnaW4tYm90dG9tOiAyNXB4O1xufVxuXG4uY3RjdC10d2VudHl0d2VudHkgLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZvcm0gYWJiciB7XG4gIGZvbnQtc2l6ZTogMS42cmVtO1xufVxuXG4uY3RjdC10d2VudHl0d2VudHkgLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWlucHV0LWNvbnRhaW5lciBsYWJlbCB7XG4gIGZvbnQtc2l6ZTogMS42cmVtO1xufVxuXG4uY3RjdC10d2VudHl0d2VudHlvbmUgLmN0Y3QtYnV0dG9uIHtcbiAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xufVxuXG4uY3RjdC10d2VudHl0d2VudHlvbmUgLmN0Y3QtZm9ybS1maWVsZCBpbnB1dFt0eXBlPVwidGV4dFwiXSxcbi5jdGN0LXR3ZW50eXR3ZW50eW9uZSAuY3RjdC1mb3JtLWZpZWxkIGlucHV0W3R5cGU9XCJlbWFpbFwiXSxcbi5jdGN0LXR3ZW50eXR3ZW50eW9uZSAuY3RjdC1mb3JtLWZpZWxkIGlucHV0W3R5cGU9XCJ1cmxcIl0sXG4uY3RjdC10d2VudHl0d2VudHlvbmUgLmN0Y3QtZm9ybS1maWVsZCBpbnB1dFt0eXBlPVwidGVsXCJdIHtcbiAgd2lkdGg6IDEwMCU7XG59XG4iXX0= */
assets/images/check_circle.svg CHANGED
File without changes
assets/images/constant-contact-logo.png CHANGED
Binary file
assets/images/ctct-admin-notice-logo.png CHANGED
Binary file
assets/images/ctct-icon-2x.png CHANGED
Binary file
assets/images/ctct-icon.png CHANGED
Binary file
assets/images/error.svg CHANGED
File without changes
assets/js/ctct-plugin-admin.js CHANGED
@@ -108,6 +108,17 @@ eval("window.CTCTBuilder = {};\n\n(function (window, $, that) {\n /**\n * @co
108
 
109
  /***/ }),
110
 
 
 
 
 
 
 
 
 
 
 
 
111
  /***/ "./assets/js/ctct-plugin-admin/forms.js":
112
  /*!**********************************************!*\
113
  !*** ./assets/js/ctct-plugin-admin/forms.js ***!
@@ -127,7 +138,7 @@ eval("window.CTCTForms = {};\n\n(function (window, $, that) {\n /**\n * @cons
127
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
128
 
129
  "use strict";
130
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _ajax__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ajax */ \"./assets/js/ctct-plugin-admin/ajax.js\");\n/* harmony import */ var _ajax__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_ajax__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _builder__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./builder */ \"./assets/js/ctct-plugin-admin/builder.js\");\n/* harmony import */ var _builder__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_builder__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _forms__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./forms */ \"./assets/js/ctct-plugin-admin/forms.js\");\n/* harmony import */ var _forms__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_forms__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _modal__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./modal */ \"./assets/js/ctct-plugin-admin/modal.js\");\n/* harmony import */ var _modal__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_modal__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _newsletter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./newsletter */ \"./assets/js/ctct-plugin-admin/newsletter.js\");\n/* harmony import */ var _newsletter__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_newsletter__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _optins__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./optins */ \"./assets/js/ctct-plugin-admin/optins.js\");\n/* harmony import */ var _optins__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_optins__WEBPACK_IMPORTED_MODULE_5__);\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9hc3NldHMvanMvY3RjdC1wbHVnaW4tYWRtaW4vaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9hc3NldHMvanMvY3RjdC1wbHVnaW4tYWRtaW4vaW5kZXguanM/OTI5YSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJy4vYWpheCc7XG5pbXBvcnQgJy4vYnVpbGRlcic7XG5pbXBvcnQgJy4vZm9ybXMnO1xuaW1wb3J0ICcuL21vZGFsJztcbmltcG9ydCAnLi9uZXdzbGV0dGVyJztcbmltcG9ydCAnLi9vcHRpbnMnO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./assets/js/ctct-plugin-admin/index.js\n");
131
 
132
  /***/ }),
133
 
108
 
109
  /***/ }),
110
 
111
+ /***/ "./assets/js/ctct-plugin-admin/clipboard.js":
112
+ /*!**************************************************!*\
113
+ !*** ./assets/js/ctct-plugin-admin/clipboard.js ***!
114
+ \**************************************************/
115
+ /*! no static exports found */
116
+ /***/ (function(module, exports) {
117
+
118
+ eval("window.CTCTClipboard = {};\n\n(function (window, $, app) {\n /**\n * @constructor\n *\n * @author Constant Contact\n * @since 1.0.0\n */\n app.init = function () {\n app.cache();\n app.bindEvents();\n };\n /**\n * Cache DOM elements.\n *\n * @author Constant Contact\n * @since 1.11.0\n */\n\n\n app.cache = function () {\n app.$c = {\n window: $(window),\n copyshortcode: $('.ctct-shortcode-wrap')\n };\n };\n /**\n * Copy to clipboard click event.\n *\n * @param {object} e The clicked element.\n * @param {HTMLElement} input The input element.\n * @author Constant Contact\n * @since 1.11.0\n */\n\n\n app.copyClick = function (button, input) {\n if (!button || !input) {\n return;\n } // Select the input.\n\n\n input.select();\n input.setSelectionRange(0, 99999); // For mobile devices.\n // Copy the text inside the text field.\n\n document.execCommand(\"copy\");\n var reset = button.innerHTML;\n button.innerHTML = button.dataset.copied; // Reset button text.\n\n setTimeout(function () {\n button.innerHTML = reset;\n }, 3000);\n };\n /**\n * Attach callbacks to events.\n *\n * @author Constant Contact\n * @since 1.11.0\n */\n\n\n app.bindEvents = function () {\n // Add click event for copy buttons.\n if (app.$c.copyshortcode) {\n app.$c.copyshortcode.each(function (index, element) {\n var input = element.querySelector('input');\n var button = element.querySelector('button');\n\n if (input && button) {\n button.addEventListener('click', function (e) {\n e.preventDefault();\n app.copyClick(this, input);\n });\n }\n });\n }\n };\n\n app.init();\n})(window, jQuery, window.CTCTClipboard);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9hc3NldHMvanMvY3RjdC1wbHVnaW4tYWRtaW4vY2xpcGJvYXJkLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2pzL2N0Y3QtcGx1Z2luLWFkbWluL2NsaXBib2FyZC5qcz9jMDNjIl0sInNvdXJjZXNDb250ZW50IjpbIndpbmRvdy5DVENUQ2xpcGJvYXJkID0ge307XG5cbiggZnVuY3Rpb24oIHdpbmRvdywgJCwgYXBwICkge1xuXG5cdC8qKlxuXHQgKiBAY29uc3RydWN0b3Jcblx0ICpcblx0ICogQGF1dGhvciBDb25zdGFudCBDb250YWN0XG5cdCAqIEBzaW5jZSAxLjAuMFxuXHQgKi9cblx0IGFwcC5pbml0ID0gKCkgPT4ge1xuXHRcdGFwcC5jYWNoZSgpO1xuXHRcdGFwcC5iaW5kRXZlbnRzKCk7XG5cdH07XG5cblx0LyoqXG5cdCAqIENhY2hlIERPTSBlbGVtZW50cy5cblx0ICpcblx0ICogQGF1dGhvciBDb25zdGFudCBDb250YWN0XG5cdCAqIEBzaW5jZSBORVhUXG5cdCAqL1xuXHQgYXBwLmNhY2hlID0gKCkgPT4ge1xuXHRcdGFwcC4kYyA9IHtcblx0XHRcdHdpbmRvdzogJCggd2luZG93ICksXG5cdFx0XHRjb3B5c2hvcnRjb2RlOiAkKCAnLmN0Y3Qtc2hvcnRjb2RlLXdyYXAnIClcblx0XHR9O1xuXHR9O1xuXG5cdC8qKlxuXHQgKiBDb3B5IHRvIGNsaXBib2FyZCBjbGljayBldmVudC5cblx0ICpcblx0ICogQHBhcmFtIHtvYmplY3R9IGUgVGhlIGNsaWNrZWQgZWxlbWVudC5cblx0ICogQHBhcmFtIHtIVE1MRWxlbWVudH0gaW5wdXQgVGhlIGlucHV0IGVsZW1lbnQuXG5cdCAqIEBhdXRob3IgQ29uc3RhbnQgQ29udGFjdFxuXHQgKiBAc2luY2UgTkVYVFxuXHQgKi9cblx0YXBwLmNvcHlDbGljayA9IChidXR0b24sIGlucHV0KSA9PiB7XG5cblx0XHRpZighYnV0dG9uIHx8ICFpbnB1dCl7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gU2VsZWN0IHRoZSBpbnB1dC5cblx0XHRpbnB1dC5zZWxlY3QoKTtcblx0XHRpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgwLCA5OTk5OSk7IC8vIEZvciBtb2JpbGUgZGV2aWNlcy5cblx0IFxuXHRcdC8vIENvcHkgdGhlIHRleHQgaW5zaWRlIHRoZSB0ZXh0IGZpZWxkLlxuXHRcdGRvY3VtZW50LmV4ZWNDb21tYW5kKFwiY29weVwiKTtcblx0XHR2YXIgcmVzZXQgPSBidXR0b24uaW5uZXJIVE1MO1xuXHRcdGJ1dHRvbi5pbm5lckhUTUwgPSBidXR0b24uZGF0YXNldC5jb3BpZWQ7XG5cblx0XHQvLyBSZXNldCBidXR0b24gdGV4dC5cblx0XHRzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7XG5cdFx0XHRidXR0b24uaW5uZXJIVE1MID0gcmVzZXQ7XG5cdFx0fSwgMzAwMCk7XG5cblx0fVxuXG5cdC8qKlxuXHQgKiBBdHRhY2ggY2FsbGJhY2tzIHRvIGV2ZW50cy5cblx0ICpcblx0ICogQGF1dGhvciBDb25zdGFudCBDb250YWN0XG5cdCAqIEBzaW5jZSBORVhUXG5cdCAqL1xuXHQgYXBwLmJpbmRFdmVudHMgPSAoKSA9PiB7XG5cblx0XHQvLyBBZGQgY2xpY2sgZXZlbnQgZm9yIGNvcHkgYnV0dG9ucy5cblx0XHRpZihhcHAuJGMuY29weXNob3J0Y29kZSl7XG5cdFx0XHRhcHAuJGMuY29weXNob3J0Y29kZS5lYWNoKGZ1bmN0aW9uKGluZGV4LCBlbGVtZW50KSB7XG5cdFx0XHRcdHZhciBpbnB1dCA9IGVsZW1lbnQucXVlcnlTZWxlY3RvcignaW5wdXQnKTtcblx0XHRcdFx0dmFyIGJ1dHRvbiA9IGVsZW1lbnQucXVlcnlTZWxlY3RvcignYnV0dG9uJyk7XG5cdFx0XHRcdGlmKGlucHV0ICYmIGJ1dHRvbil7XG5cdFx0XHRcdFx0YnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oIGUgKXtcblx0XHRcdFx0XHRcdGUucHJldmVudERlZmF1bHQoKTtcblx0XHRcdFx0XHRcdGFwcC5jb3B5Q2xpY2soIHRoaXMsIGlucHV0KTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fSlcblx0XHR9XG5cdH07XG5cblx0YXBwLmluaXQoKTtcblxufSAoIHdpbmRvdywgalF1ZXJ5LCB3aW5kb3cuQ1RDVENsaXBib2FyZCApICk7XG5cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBRUE7Ozs7OztBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBRUE7Ozs7Ozs7O0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBRUE7Ozs7Ozs7Ozs7QUFRQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFFQTs7Ozs7Ozs7QUFNQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./assets/js/ctct-plugin-admin/clipboard.js\n");
119
+
120
+ /***/ }),
121
+
122
  /***/ "./assets/js/ctct-plugin-admin/forms.js":
123
  /*!**********************************************!*\
124
  !*** ./assets/js/ctct-plugin-admin/forms.js ***!
138
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
139
 
140
  "use strict";
141
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _ajax__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ajax */ \"./assets/js/ctct-plugin-admin/ajax.js\");\n/* harmony import */ var _ajax__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_ajax__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _builder__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./builder */ \"./assets/js/ctct-plugin-admin/builder.js\");\n/* harmony import */ var _builder__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_builder__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _forms__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./forms */ \"./assets/js/ctct-plugin-admin/forms.js\");\n/* harmony import */ var _forms__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_forms__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _modal__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./modal */ \"./assets/js/ctct-plugin-admin/modal.js\");\n/* harmony import */ var _modal__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_modal__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _newsletter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./newsletter */ \"./assets/js/ctct-plugin-admin/newsletter.js\");\n/* harmony import */ var _newsletter__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_newsletter__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _optins__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./optins */ \"./assets/js/ctct-plugin-admin/optins.js\");\n/* harmony import */ var _optins__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_optins__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _clipboard__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./clipboard */ \"./assets/js/ctct-plugin-admin/clipboard.js\");\n/* harmony import */ var _clipboard__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_clipboard__WEBPACK_IMPORTED_MODULE_6__);\n\n\n\n\n\n\n;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9hc3NldHMvanMvY3RjdC1wbHVnaW4tYWRtaW4vaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9hc3NldHMvanMvY3RjdC1wbHVnaW4tYWRtaW4vaW5kZXguanM/OTI5YSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJy4vYWpheCc7XG5pbXBvcnQgJy4vYnVpbGRlcic7XG5pbXBvcnQgJy4vZm9ybXMnO1xuaW1wb3J0ICcuL21vZGFsJztcbmltcG9ydCAnLi9uZXdzbGV0dGVyJztcbmltcG9ydCAnLi9vcHRpbnMnOztcbmltcG9ydCAnLi9jbGlwYm9hcmQnOyBcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./assets/js/ctct-plugin-admin/index.js\n");
142
 
143
  /***/ }),
144
 
assets/js/ctct-plugin-admin.min.js CHANGED
@@ -1,2 +1,2 @@
1
- !function(t){var e={};function n(c){if(e[c])return e[c].exports;var o=e[c]={i:c,l:!1,exports:{}};return t[c].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=t,n.c=e,n.d=function(t,e,c){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:c})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var c=Object.create(null);if(n.r(c),Object.defineProperty(c,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(c,o,function(e){return t[e]}.bind(null,o));return c},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="https://testing.test/wp-content/plugins/constant-contact-forms/assets/js/",n(n.s=0)}([function(t,e,n){t.exports=n(1)},function(t,e,n){"use strict";n.r(e);n(2),n(3),n(4),n(5),n(6),n(7)},function(t,e){window.CTCTAJAX={},function(t,e,n){var c=this;n.init=function(){n.handleOptinAJAX(),n.handleReviewAJAX()},n.handleOptinAJAX=function(){e("#ctct_admin_notice_tracking_optin").on("click",(function(n){var o={action:"constant_contact_optin_ajax_handler",optin:e(c).is(":checked")?"on":"off"};e.ajax({url:t.ajaxurl,data:o,dataType:"json",success:function(t){e(document.getElementById("ctct-admin-notice-optin_admin_notice")).remove()},error:function(e,n,c){t.console&&console.log([n,c])}}),e("#ctct-privacy-modal").toggleClass("ctct-modal-open")})),e("#ctct-connect-ga-optin a").on("click",(function(n){var o={action:"constant_contact_optin_ajax_handler",optin:e(c).attr("data-allow")};e.ajax({url:t.ajaxurl,data:o,dataType:"json",success:function(t){e(".ctct-connected-opt-in").hide()},error:function(e,n,c){t.console&&console.log([n,c])}})})),e("#_ctct_data_tracking").on("click",(function(t){e("#ctct-privacy-modal").toggleClass("ctct-modal-open")})),e(".ctct-modal-close").on("click",(function(t){var n=e("#_ctct_data_tracking");n.is(":checked")&&n.attr("checked",!1)})),e("#ctct-modal-footer-privacy a").on("click",(function(n){var o={action:"constant_contact_privacy_ajax_handler",privacy_agree:e(c).attr("data-agree")};e.ajax({url:t.ajaxurl,data:o,dataType:"json",success:function(t){if(e("#ctct-privacy-modal").toggleClass("ctct-modal-open"),"false"===o.privacy_agree){var n=e("#_ctct_data_tracking");n.is(":checked")&&n.attr("checked",!1)}},error:function(e,n,c){t.console&&console.log([n,c])}})}))},n.handleReviewAJAX=function(){e("#ctct-admin-notice-review_request").on("click","a",(function(n){var o="dismissed";e(c).hasClass("ctct-review")&&(o="reviewed");var i={action:"constant_contact_review_ajax_handler","ctct-review-action":o};e.ajax({url:t.ajaxurl,data:i,dataType:"json",success:function(c){t.console&&console.log(c),n.preventDefault(),e("#ctct-admin-notice-review_request").hide()},error:function(e,n,c){t.console&&console.log([n,c])}})}))},e(n.init)}(window,jQuery,window.CTCTAJAX)},function(t,e){window.CTCTBuilder={},function(t,e,n){n.init=function(){e('#cmb2-metabox-ctct_2_fields_metabox option[value="email"]:selected').length&&e("#ctct-no-email-error").remove(),n.cache(),n.bindEvents(),n.selectBinds(),n.modifyFields(),e("#ctct_0_description_metabox h2.hndle").removeClass("ui-sortable-handle, hndle"),e("head").append('<style> #cmb2-metabox-ctct_2_fields_metabox a.move-up::after { content: "'+t.ctctTexts.move_up+'" } #cmb2-metabox-ctct_2_fields_metabox a.move-down::after { content: "'+t.ctctTexts.move_down+'" }</style>')},n.cache=function(){n.$c={window:e(t),body:e("body")},n.isLeaveWarningBound=!1},n.bindLeaveWarning=function(){n.isLeaveWarningBound||(e(t).bind("beforeunload",(function(){return t.ctctTexts.leavewarning})),n.isLeaveWarningBound=!0)},n.unbindLeaveWarning=function(){e(t).unbind("beforeunload")},n.bindEvents=function(){e("#post").submit((function(){e(".ctct-email-disabled").removeClass("disabled").prop("disabled",!1),n.unbindLeaveWarning()})),e(".cmb2-wrap input, .cmb2-wrap textarea").on("input",(function(){"undefined"!=typeof tinyMCE&&n.bindLeaveWarning()})),e(document).on("cmb2_shift_rows_complete",(function(){n.modifyFields(),n.bindLeaveWarning(),n.removeDuplicateMappings()})),e(document).on("cmb2_add_row",(function(t){e("#custom_fields_group_repeat .postbox").last().find(".map select").val("none"),n.modifyFields(),n.selectBinds(),n.removeDuplicateMappings()})),n.removeDuplicateMappings(),e("#ctct-reset-css").on("click",(function(t){t.preventDefault();var n=["#_ctct_form_description_font_size","#_ctct_form_submit_button_font_size","#_ctct_form_label_placement"],c=["#_ctct_form_padding_top","#_ctct_form_padding_bottom","#_ctct_form_padding_left","#_ctct_form_padding_right","#_ctct_input_custom_classes"];e(".wp-picker-clear").each((function(){e(this).click()}));for(var o=n.length;o--;){var i=e(n[o]).children("option").first();e(n[o]).val(i.val())}for(o=c.length;o--;)e(c[o]).val("")}))},n.selectBinds=function(){e("#cmb2-metabox-ctct_2_fields_metabox .cmb2_select").change((function(){n.modifyFields(),n.removeDuplicateMappings(),n.bindLeaveWarning()}))},n.modifyFields=function(){var n=!1;e("#cmb2-metabox-ctct_2_fields_metabox #custom_fields_group_repeat .cmb-repeatable-grouping").each((function(c,o){var i=e(this).find(".cmb-field-list"),a=e(i).find(".cmb-remove-group-row"),l=e(i).find(".required input[type=checkbox]"),s=l.closest(".cmb-row"),r=e(i).find(".map select option:selected"),d=r.text(),u=e(this).find("h3"),f=e(this).find('input[name*="_ctct_field_label"]'),p=e(this).find('input[name*="_ctct_field_desc"]');if(u.text(d),0===f.val().length?f.val(d).addClass("ctct-label-filled"):f.addClass("ctct-label-filled"),n||"email"!==e(r).val()?(e(o).find("select").removeClass("disabled ctct-email-disabled").prop("disabled",!1),s.show(),a.show()):(n=!0,l.prop("checked",!0),e(o).find("select").addClass("disabled ctct-email-disabled").prop("disabled",!0),s.hide(),a.hide()),t.ctct_admin_placeholders){var _=t.ctct_admin_placeholders[e(o).find("select").val()];_&&_.length&&p.length?p.attr("placeholder","Example: "+_):t.ctct_admin_placeholders.default&&p.attr("placeholder",t.ctct_admin_placeholders.default)}}))},n.removeDuplicateMappings=function(){var t=[],n="#cmb2-metabox-ctct_2_fields_metabox #custom_fields_group_repeat .cmb-repeatable-grouping select",c=e(n);c.each((function(n,c){t.push(e(c).val())})),c.children().show(),t.forEach((function(t){"custom_text_area"!==t&&"custom"!==t&&e(n+" option[value="+t+"]:not( :selected )").hide()}))},e(n.init)}(window,jQuery,window.CTCTBuilder)},function(t,e){window.CTCTForms={},function(t,e,n){n.init=function(){n.cache(),n.bindEvents()},n.cache=function(){n.$c={window:e(t),body:e("body"),disconnect:".ctct-disconnect"}},n.bindEvents=function(){e(n.$c.disconnect).on("click",(function(e){confirm(t.ctctTexts.disconnectconfirm)}))},e(n.init)}(window,jQuery,window.CTCTForms)},function(t,e){window.CTCTModal={},function(t,e,n){n.init=function(){n.cache(),n.bindEvents()},n.cache=function(){n.$c={window:e(t),modalSelector:e(".ctct-modal"),modalClose:e(".ctct-modal-close"),textareaModal:e("#ctct-custom-textarea-modal"),textareaLink:e("#ctct-open-textarea-info"),deleteLogLink:e("#deletelog")}},n.bindEvents=function(){n.$c.modalClose.on("click",(function(){n.$c.modalSelector.removeClass("ctct-modal-open"),n.$c.modalSelector.hasClass("ctct-custom-textarea-modal")||e.ajax({type:"post",dataType:"json",url:t.ajaxurl,data:{action:"ctct_dismiss_first_modal",ctct_is_dismissed:"true"}})})),n.$c.textareaLink.on("click",(function(){n.$c.textareaModal.addClass("ctct-modal-open")})),n.$c.deleteLogLink.on("click",(function(n){n.preventDefault();var c=e(n.currentTarget).attr("href");e("#confirmdelete").dialog({resizable:!1,height:"auto",width:400,modal:!0,buttons:{Yes:function(){t.location.replace(c)},Cancel:function(){e("#confirmdelete").closest(".ui-dialog-content").dialog("close")}}})}))},e(n.init)}(window,jQuery,window.CTCTModal)},function(t,e){var n,c;window.CTCTNewsletter={},window,n=jQuery,(c=window.CTCTNewsletter).init=function(){c.submitNewsletter()},c.submitNewsletter=function(){n(".ctct-body #subscribe").on("submit",(function(t){t.preventDefault();var e=n("#subscribe .ctct-call-to-action"),c=n(".ctct-body #subscribe")[0],o=n('.ctct-call-to-action input[type="text"]')[0],i=t.target.action;!0===o.validity.valid?(n("<iframe>",{src:i+"?"+n(c).serialize(),height:0,width:0,style:"display: none;"}).appendTo(e),n("#subbutton").val("Thanks for signing up").css({"background-color":"rgb(1, 128, 0)",color:"rgb(255,255,255)"}),n("#subscribe .ctct-call-to-action-text").css({width:"70%"})):n("#subbutton").val("Error occurred")})),n(".ctct-section #subscribe").on("submit",(function(t){t.preventDefault();var e=n(".section-marketing-tips"),c=n(".ctct-section #subscribe")[0],o=n('.ctct-section #subscribe input[type="text"]')[0],i=t.target.action;!0===o.validity.valid?(n("<iframe>",{src:i+"?"+n(c).serialize(),height:0,width:0,style:"display: none;"}).appendTo(e),n("#subbutton").val("Thanks for signing up").css({"background-color":"rgb(1, 128, 0)"})):n("#subbutton").val("Error occurred")}))},n(c.init)},function(t,e){var n,c;window.CTCT_OptIns={},window,n=jQuery,(c=window.CTCT_OptIns).init=function(){c.cache(),c.bindEvents()},c.cache=function(){c.$c={optinNoConn:n("#cmb2-metabox-ctct_1_optin_metabox #_ctct_opt_in_not_connected"),list:n('#cmb2-metabox-ctct_0_list_metabox [name="_ctct_list[]"]'),title:n("#cmb2-metabox-ctct_1_optin_metabox .cmb2-id-email-optin-title"),optin:n("#cmb2-metabox-ctct_1_optin_metabox .cmb2-id--ctct-opt-in"),instruct:n("#cmb2-metabox-ctct_1_optin_metabox .cmb2-id--ctct-opt-in-instructions")}},c.bindEvents=function(){c.$c.optinNoConn.length&&(c.toggleNoConnectionFields(),c.$c.optinNoConn.change((function(){c.toggleNoConnectionFields()}))),c.$c.list.length&&(c.toggleConnectionFields(),c.$c.list.change((function(){c.toggleConnectionFields()})))},c.toggleNoConnectionFields=function(){c.$c.optinNoConn.prop("checked")?c.$c.instruct.slideDown():c.$c.instruct.slideUp()},c.toggleConnectionFields=function(){""!==c.$c.list.val()?(c.$c.title.slideDown(),c.$c.optin.slideDown(),c.$c.instruct.slideDown()):(c.$c.title.slideUp(),c.$c.optin.slideUp(),c.$c.instruct.slideUp())},n(c.init)}]);
2
  //# sourceMappingURL=ctct-plugin-admin.min.js.map
1
+ !function(t){var e={};function n(c){if(e[c])return e[c].exports;var o=e[c]={i:c,l:!1,exports:{}};return t[c].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=t,n.c=e,n.d=function(t,e,c){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:c})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var c=Object.create(null);if(n.r(c),Object.defineProperty(c,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(c,o,function(e){return t[e]}.bind(null,o));return c},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="https://testing.test/wp-content/plugins/constant-contact-forms/assets/js/",n(n.s=0)}([function(t,e,n){t.exports=n(1)},function(t,e,n){"use strict";n.r(e);n(2),n(3),n(4),n(5),n(6),n(7),n(8)},function(t,e){window.CTCTAJAX={},function(t,e,n){var c=this;n.init=function(){n.handleOptinAJAX(),n.handleReviewAJAX()},n.handleOptinAJAX=function(){e("#ctct_admin_notice_tracking_optin").on("click",(function(n){var o={action:"constant_contact_optin_ajax_handler",optin:e(c).is(":checked")?"on":"off"};e.ajax({url:t.ajaxurl,data:o,dataType:"json",success:function(t){e(document.getElementById("ctct-admin-notice-optin_admin_notice")).remove()},error:function(e,n,c){t.console&&console.log([n,c])}}),e("#ctct-privacy-modal").toggleClass("ctct-modal-open")})),e("#ctct-connect-ga-optin a").on("click",(function(n){var o={action:"constant_contact_optin_ajax_handler",optin:e(c).attr("data-allow")};e.ajax({url:t.ajaxurl,data:o,dataType:"json",success:function(t){e(".ctct-connected-opt-in").hide()},error:function(e,n,c){t.console&&console.log([n,c])}})})),e("#_ctct_data_tracking").on("click",(function(t){e("#ctct-privacy-modal").toggleClass("ctct-modal-open")})),e(".ctct-modal-close").on("click",(function(t){var n=e("#_ctct_data_tracking");n.is(":checked")&&n.attr("checked",!1)})),e("#ctct-modal-footer-privacy a").on("click",(function(n){var o={action:"constant_contact_privacy_ajax_handler",privacy_agree:e(c).attr("data-agree")};e.ajax({url:t.ajaxurl,data:o,dataType:"json",success:function(t){if(e("#ctct-privacy-modal").toggleClass("ctct-modal-open"),"false"===o.privacy_agree){var n=e("#_ctct_data_tracking");n.is(":checked")&&n.attr("checked",!1)}},error:function(e,n,c){t.console&&console.log([n,c])}})}))},n.handleReviewAJAX=function(){e("#ctct-admin-notice-review_request").on("click","a",(function(n){var o="dismissed";e(c).hasClass("ctct-review")&&(o="reviewed");var i={action:"constant_contact_review_ajax_handler","ctct-review-action":o};e.ajax({url:t.ajaxurl,data:i,dataType:"json",success:function(c){t.console&&console.log(c),n.preventDefault(),e("#ctct-admin-notice-review_request").hide()},error:function(e,n,c){t.console&&console.log([n,c])}})}))},e(n.init)}(window,jQuery,window.CTCTAJAX)},function(t,e){window.CTCTBuilder={},function(t,e,n){n.init=function(){e('#cmb2-metabox-ctct_2_fields_metabox option[value="email"]:selected').length&&e("#ctct-no-email-error").remove(),n.cache(),n.bindEvents(),n.selectBinds(),n.modifyFields(),e("#ctct_0_description_metabox h2.hndle").removeClass("ui-sortable-handle, hndle"),e("head").append('<style> #cmb2-metabox-ctct_2_fields_metabox a.move-up::after { content: "'+t.ctctTexts.move_up+'" } #cmb2-metabox-ctct_2_fields_metabox a.move-down::after { content: "'+t.ctctTexts.move_down+'" }</style>')},n.cache=function(){n.$c={window:e(t),body:e("body")},n.isLeaveWarningBound=!1},n.bindLeaveWarning=function(){n.isLeaveWarningBound||(e(t).bind("beforeunload",(function(){return t.ctctTexts.leavewarning})),n.isLeaveWarningBound=!0)},n.unbindLeaveWarning=function(){e(t).unbind("beforeunload")},n.bindEvents=function(){e("#post").submit((function(){e(".ctct-email-disabled").removeClass("disabled").prop("disabled",!1),n.unbindLeaveWarning()})),e(".cmb2-wrap input, .cmb2-wrap textarea").on("input",(function(){"undefined"!=typeof tinyMCE&&n.bindLeaveWarning()})),e(document).on("cmb2_shift_rows_complete",(function(){n.modifyFields(),n.bindLeaveWarning(),n.removeDuplicateMappings()})),e(document).on("cmb2_add_row",(function(t){e("#custom_fields_group_repeat .postbox").last().find(".map select").val("none"),n.modifyFields(),n.selectBinds(),n.removeDuplicateMappings()})),n.removeDuplicateMappings(),e("#ctct-reset-css").on("click",(function(t){t.preventDefault();var n=["#_ctct_form_description_font_size","#_ctct_form_submit_button_font_size","#_ctct_form_label_placement"],c=["#_ctct_form_padding_top","#_ctct_form_padding_bottom","#_ctct_form_padding_left","#_ctct_form_padding_right","#_ctct_input_custom_classes"];e(".wp-picker-clear").each((function(){e(this).click()}));for(var o=n.length;o--;){var i=e(n[o]).children("option").first();e(n[o]).val(i.val())}for(o=c.length;o--;)e(c[o]).val("")}))},n.selectBinds=function(){e("#cmb2-metabox-ctct_2_fields_metabox .cmb2_select").change((function(){n.modifyFields(),n.removeDuplicateMappings(),n.bindLeaveWarning()}))},n.modifyFields=function(){var n=!1;e("#cmb2-metabox-ctct_2_fields_metabox #custom_fields_group_repeat .cmb-repeatable-grouping").each((function(c,o){var i=e(this).find(".cmb-field-list"),a=e(i).find(".cmb-remove-group-row"),l=e(i).find(".required input[type=checkbox]"),r=l.closest(".cmb-row"),s=e(i).find(".map select option:selected"),d=s.text(),u=e(this).find("h3"),f=e(this).find('input[name*="_ctct_field_label"]'),p=e(this).find('input[name*="_ctct_field_desc"]');if(u.text(d),0===f.val().length?f.val(d).addClass("ctct-label-filled"):f.addClass("ctct-label-filled"),n||"email"!==e(s).val()?(e(o).find("select").removeClass("disabled ctct-email-disabled").prop("disabled",!1),r.show(),a.show()):(n=!0,l.prop("checked",!0),e(o).find("select").addClass("disabled ctct-email-disabled").prop("disabled",!0),r.hide(),a.hide()),t.ctct_admin_placeholders){var m=t.ctct_admin_placeholders[e(o).find("select").val()];m&&m.length&&p.length?p.attr("placeholder","Example: "+m):t.ctct_admin_placeholders.default&&p.attr("placeholder",t.ctct_admin_placeholders.default)}}))},n.removeDuplicateMappings=function(){var t=[],n="#cmb2-metabox-ctct_2_fields_metabox #custom_fields_group_repeat .cmb-repeatable-grouping select",c=e(n);c.each((function(n,c){t.push(e(c).val())})),c.children().show(),t.forEach((function(t){"custom_text_area"!==t&&"custom"!==t&&e(n+" option[value="+t+"]:not( :selected )").hide()}))},e(n.init)}(window,jQuery,window.CTCTBuilder)},function(t,e){window.CTCTForms={},function(t,e,n){n.init=function(){n.cache(),n.bindEvents()},n.cache=function(){n.$c={window:e(t),body:e("body"),disconnect:".ctct-disconnect"}},n.bindEvents=function(){e(n.$c.disconnect).on("click",(function(e){confirm(t.ctctTexts.disconnectconfirm)}))},e(n.init)}(window,jQuery,window.CTCTForms)},function(t,e){window.CTCTModal={},function(t,e,n){n.init=function(){n.cache(),n.bindEvents()},n.cache=function(){n.$c={window:e(t),modalSelector:e(".ctct-modal"),modalClose:e(".ctct-modal-close"),textareaModal:e("#ctct-custom-textarea-modal"),textareaLink:e("#ctct-open-textarea-info"),deleteLogLink:e("#deletelog")}},n.bindEvents=function(){n.$c.modalClose.on("click",(function(){n.$c.modalSelector.removeClass("ctct-modal-open"),n.$c.modalSelector.hasClass("ctct-custom-textarea-modal")||e.ajax({type:"post",dataType:"json",url:t.ajaxurl,data:{action:"ctct_dismiss_first_modal",ctct_is_dismissed:"true"}})})),n.$c.textareaLink.on("click",(function(){n.$c.textareaModal.addClass("ctct-modal-open")})),n.$c.deleteLogLink.on("click",(function(n){n.preventDefault();var c=e(n.currentTarget).attr("href");e("#confirmdelete").dialog({resizable:!1,height:"auto",width:400,modal:!0,buttons:{Yes:function(){t.location.replace(c)},Cancel:function(){e("#confirmdelete").closest(".ui-dialog-content").dialog("close")}}})}))},e(n.init)}(window,jQuery,window.CTCTModal)},function(t,e){var n,c;window.CTCTNewsletter={},window,n=jQuery,(c=window.CTCTNewsletter).init=function(){c.submitNewsletter()},c.submitNewsletter=function(){n(".ctct-body #subscribe").on("submit",(function(t){t.preventDefault();var e=n("#subscribe .ctct-call-to-action"),c=n(".ctct-body #subscribe")[0],o=n('.ctct-call-to-action input[type="text"]')[0],i=t.target.action;!0===o.validity.valid?(n("<iframe>",{src:i+"?"+n(c).serialize(),height:0,width:0,style:"display: none;"}).appendTo(e),n("#subbutton").val("Thanks for signing up").css({"background-color":"rgb(1, 128, 0)",color:"rgb(255,255,255)"}),n("#subscribe .ctct-call-to-action-text").css({width:"70%"})):n("#subbutton").val("Error occurred")})),n(".ctct-section #subscribe").on("submit",(function(t){t.preventDefault();var e=n(".section-marketing-tips"),c=n(".ctct-section #subscribe")[0],o=n('.ctct-section #subscribe input[type="text"]')[0],i=t.target.action;!0===o.validity.valid?(n("<iframe>",{src:i+"?"+n(c).serialize(),height:0,width:0,style:"display: none;"}).appendTo(e),n("#subbutton").val("Thanks for signing up").css({"background-color":"rgb(1, 128, 0)"})):n("#subbutton").val("Error occurred")}))},n(c.init)},function(t,e){var n,c;window.CTCT_OptIns={},window,n=jQuery,(c=window.CTCT_OptIns).init=function(){c.cache(),c.bindEvents()},c.cache=function(){c.$c={optinNoConn:n("#cmb2-metabox-ctct_1_optin_metabox #_ctct_opt_in_not_connected"),list:n('#cmb2-metabox-ctct_0_list_metabox [name="_ctct_list[]"]'),title:n("#cmb2-metabox-ctct_1_optin_metabox .cmb2-id-email-optin-title"),optin:n("#cmb2-metabox-ctct_1_optin_metabox .cmb2-id--ctct-opt-in"),instruct:n("#cmb2-metabox-ctct_1_optin_metabox .cmb2-id--ctct-opt-in-instructions")}},c.bindEvents=function(){c.$c.optinNoConn.length&&(c.toggleNoConnectionFields(),c.$c.optinNoConn.change((function(){c.toggleNoConnectionFields()}))),c.$c.list.length&&(c.toggleConnectionFields(),c.$c.list.change((function(){c.toggleConnectionFields()})))},c.toggleNoConnectionFields=function(){c.$c.optinNoConn.prop("checked")?c.$c.instruct.slideDown():c.$c.instruct.slideUp()},c.toggleConnectionFields=function(){""!==c.$c.list.val()?(c.$c.title.slideDown(),c.$c.optin.slideDown(),c.$c.instruct.slideDown()):(c.$c.title.slideUp(),c.$c.optin.slideUp(),c.$c.instruct.slideUp())},n(c.init)},function(t,e){window.CTCTClipboard={},function(t,e,n){n.init=function(){n.cache(),n.bindEvents()},n.cache=function(){n.$c={window:e(t),copyshortcode:e(".ctct-shortcode-wrap")}},n.copyClick=function(t,e){if(t&&e){e.select(),e.setSelectionRange(0,99999),document.execCommand("copy");var n=t.innerHTML;t.innerHTML=t.dataset.copied,setTimeout((function(){t.innerHTML=n}),3e3)}},n.bindEvents=function(){n.$c.copyshortcode&&n.$c.copyshortcode.each((function(t,e){var c=e.querySelector("input"),o=e.querySelector("button");c&&o&&o.addEventListener("click",(function(t){t.preventDefault(),n.copyClick(this,c)}))}))},n.init()}(window,jQuery,window.CTCTClipboard)}]);
2
  //# sourceMappingURL=ctct-plugin-admin.min.js.map
assets/js/ctct-plugin-admin.min.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./assets/js/ctct-plugin-admin/index.js","webpack:///./assets/js/ctct-plugin-admin/ajax.js","webpack:///./assets/js/ctct-plugin-admin/builder.js","webpack:///./assets/js/ctct-plugin-admin/forms.js","webpack:///./assets/js/ctct-plugin-admin/modal.js","webpack:///./assets/js/ctct-plugin-admin/newsletter.js","webpack:///./assets/js/ctct-plugin-admin/optins.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","window","CTCTAJAX","$","that","init","handleOptinAJAX","handleReviewAJAX","on","e","ctctOptinAjax","is","ajax","url","ajaxurl","data","dataType","success","response","document","getElementById","remove","error","x","console","log","toggleClass","attr","hide","$checkbox","ctctPrivacyAjax","privacy_agree","ctctAction","hasClass","ctctReviewAjax","resp","preventDefault","jQuery","CTCTBuilder","length","cache","bindEvents","selectBinds","modifyFields","removeClass","append","ctctTexts","move_up","move_down","$c","body","isLeaveWarningBound","bindLeaveWarning","leavewarning","unbindLeaveWarning","unbind","submit","prop","tinyMCE","removeDuplicateMappings","newRow","last","find","val","event","selectFields","textFields","each","this","click","firstOption","children","first","change","foundEmail","$fieldParent","$button","$required","$requiredRow","closest","$map","$mapName","text","$fieldTitle","$labelField","$descField","addClass","show","ctct_admin_placeholders","placeholder","default","usedMappings","dropdowns","$dropdowns","push","forEach","CTCTForms","disconnect","confirm","disconnectconfirm","CTCTModal","app","modalSelector","modalClose","textareaModal","textareaLink","deleteLogLink","type","action","currentTarget","dialog","resizable","height","width","modal","buttons","location","replace","CTCTNewsletter","submitNewsletter","$ctctNewsWrapper","ctctNewsForm","ctctEmailField","subscribeEndpoint","target","validity","valid","serialize","appendTo","css","CTCT_OptIns","optinNoConn","list","title","optin","instruct","toggleNoConnectionFields","toggleConnectionFields","slideDown","slideUp"],"mappings":"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","file":"ctct-plugin-admin.min.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"https://testing.test/wp-content/plugins/constant-contact-forms/assets/js/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","import './ajax';\nimport './builder';\nimport './forms';\nimport './modal';\nimport './newsletter';\nimport './optins';\n","window.CTCTAJAX = {};\n\n( function( window, $, that ) {\n\n\t/**\n\t * @constructor\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tthat.init = () => {\n\n\t\t// Trigger any field modifications we need to do.\n\t\tthat.handleOptinAJAX();\n\t\tthat.handleReviewAJAX();\n\t};\n\n\t/**\n\t * We need to manipulate our form builder a bit. We do this here.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tthat.handleOptinAJAX = () => {\n\n\t\t// eslint-disable-next-line no-unused-vars\n\t\t$( '#ctct_admin_notice_tracking_optin' ).on( 'click', ( e ) => {\n\n\t\t\tvar ctctOptinAjax = {\n\t\t\t\t'action': 'constant_contact_optin_ajax_handler',\n\t\t\t\t'optin': ( $( this ).is( ':checked' ) ) ? 'on' : 'off'\n\t\t\t};\n\n\t\t\t$.ajax( {\n\t\t\t\turl: window.ajaxurl,\n\t\t\t\tdata: ctctOptinAjax,\n\t\t\t\tdataType: 'json',\n\t\t\t\tsuccess: ( response ) => {\n\t\t\t\t\t$( document.getElementById( 'ctct-admin-notice-optin_admin_notice' ) ).remove();\n\t\t\t\t},\n\t\t\t\terror: ( x, t, m ) => {\n\t\t\t\t\tif ( window.console ) {\n\t\t\t\t\t\tconsole.log( [ t, m ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\t$( '#ctct-privacy-modal' ).toggleClass( 'ctct-modal-open' );\n\t\t} );\n\n\t\t// Opens the privacy modal once clicking on the checkbox to opt in via the admin notice.\n\t\t// eslint-disable-next-line no-unused-vars\n\t\t$( '#ctct-connect-ga-optin a' ).on( 'click', ( e ) => {\n\t\t\tvar ctctOptinAjax = {\n\t\t\t\t'action': 'constant_contact_optin_ajax_handler',\n\t\t\t\t'optin': $( this ).attr( 'data-allow' )\n\t\t\t};\n\n\t\t\t$.ajax( {\n\t\t\t\turl: window.ajaxurl,\n\t\t\t\tdata: ctctOptinAjax,\n\t\t\t\tdataType: 'json',\n\t\t\t\tsuccess: ( response ) => { // eslint-disable-line no-unused-vars\n\t\t\t\t\t$( '.ctct-connected-opt-in' ).hide();\n\t\t\t\t},\n\t\t\t\terror: ( x, t, m ) => {\n\t\t\t\t\tif ( window.console ) {\n\t\t\t\t\t\tconsole.log( [ t, m ] ); // eslint-disable-line no-console\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\n\t\t// eslint-disable-next-line no-unused-vars\n\t\t$( '#_ctct_data_tracking' ).on( 'click', ( e ) => {\n\t\t\t$( '#ctct-privacy-modal' ).toggleClass( 'ctct-modal-open' );\n\t\t} );\n\n\t\t// Unchecks the value if they have closed the privacy modal without agreeing/disagreeing.\n\t\t// eslint-disable-next-line no-unused-vars\n\t\t$( '.ctct-modal-close' ).on( 'click', ( e ) => {\n\t\t\tvar $checkbox = $( '#_ctct_data_tracking' );\n\t\t\tif ( $checkbox.is( ':checked' ) ) {\n\t\t\t\t$checkbox.attr( 'checked', false );\n\t\t\t}\n\t\t} );\n\n\t\t// Handle the agreeing or disagreeing regarding privacy modal.\n\t\t// eslint-disable-next-line no-unused-vars\n\t\t$( '#ctct-modal-footer-privacy a' ).on( 'click', ( e ) => {\n\t\t\tvar ctctPrivacyAjax = {\n\t\t\t\t'action': 'constant_contact_privacy_ajax_handler',\n\t\t\t\t'privacy_agree': $( this ).attr( 'data-agree' )\n\t\t\t};\n\n\t\t\t$.ajax( {\n\t\t\t\turl: window.ajaxurl,\n\t\t\t\tdata: ctctPrivacyAjax,\n\t\t\t\tdataType: 'json',\n\t\t\t\tsuccess: ( response ) => { // eslint-disable-line no-unused-vars\n\t\t\t\t\t$( '#ctct-privacy-modal' ).toggleClass( 'ctct-modal-open' );\n\t\t\t\t\tif ( 'false' === ctctPrivacyAjax.privacy_agree ) {\n\t\t\t\t\t\tvar $checkbox = $( '#_ctct_data_tracking' );\n\t\t\t\t\t\tif ( $checkbox.is( ':checked' ) ) {\n\t\t\t\t\t\t\t$checkbox.attr( 'checked', false );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\terror: ( x, t, m ) => {\n\t\t\t\t\tif ( window.console ) {\n\t\t\t\t\t\tconsole.log( [ t, m ] ); // eslint-disable-line no-console\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t};\n\n\t// Handle saving the decision regarding the review prompt admin notice.\n\tthat.handleReviewAJAX = () => {\n\t\t$( '#ctct-admin-notice-review_request' ).on( 'click', 'a', ( e ) => {\n\n\t\t\tvar ctctAction = 'dismissed';\n\n\t\t\tif ( $( this ).hasClass( 'ctct-review' ) ) {\n\t\t\t\tctctAction = 'reviewed';\n\t\t\t}\n\n\t\t\tvar ctctReviewAjax = {\n\t\t\t\t'action': 'constant_contact_review_ajax_handler',\n\t\t\t\t'ctct-review-action': ctctAction\n\t\t\t};\n\n\t\t\t$.ajax( {\n\t\t\t\turl: window.ajaxurl,\n\t\t\t\tdata: ctctReviewAjax,\n\t\t\t\tdataType: 'json',\n\t\t\t\tsuccess: ( resp ) => {\n\t\t\t\t\tif ( window.console ) {\n\t\t\t\t\t\tconsole.log( resp ); // eslint-disable-line no-console\n\t\t\t\t\t}\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\t$( '#ctct-admin-notice-review_request' ).hide();\n\t\t\t\t},\n\t\t\t\terror: ( x, t, m ) => {\n\t\t\t\t\tif ( window.console ) {\n\t\t\t\t\t\tconsole.log( [ t, m ] ); // eslint-disable-line no-console\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t};\n\n\t$( that.init );\n\n} ( window, jQuery, window.CTCTAJAX ) );\n","window.CTCTBuilder = {};\n\n( function( window, $, that ) {\n\n\t/**\n\t * @constructor\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tthat.init = () => {\n\n\t\t// If we do actually have an email field set, then remove our error.\n\t\tif ( $( '#cmb2-metabox-ctct_2_fields_metabox option[value=\"email\"]:selected' ).length ) {\n\t\t\t$( '#ctct-no-email-error' ).remove();\n\t\t}\n\n\t\t// Cache it all.\n\t\tthat.cache();\n\n\t\t// Bind our events.\n\t\tthat.bindEvents();\n\n\t\t// Bind our select dropdown events.\n\t\tthat.selectBinds();\n\n\t\t// Trigger any field modifications we need to do.\n\t\tthat.modifyFields();\n\n\t\t// Make description non-draggable, so we don't run into weird cmb2 issues.\n\t\t$( '#ctct_0_description_metabox h2.hndle' ).removeClass( 'ui-sortable-handle, hndle' );\n\n\t\t// Inject our new labels for the up/down CMB2 buttons, so they can be properly localized.\n\t\t// Because we're using :after, we can't use .css() to do this, we need to inject a style tag.\n\t\t$( 'head' ).append( '<style> #cmb2-metabox-ctct_2_fields_metabox a.move-up::after { content: \"' + window.ctctTexts.move_up + '\" } #cmb2-metabox-ctct_2_fields_metabox a.move-down::after { content: \"' + window.ctctTexts.move_down + '\" }</style>' );\n\t};\n\n\t/**\n\t * Cache DOM elements.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tthat.cache = () => {\n\n\t\tthat.$c = {\n\t\t\twindow: $( window ),\n\t\t\tbody: $( 'body' )\n\t\t};\n\n\t\tthat.isLeaveWarningBound = false;\n\t};\n\n\t// Triggers our leave warning if we modify things in the form.\n\tthat.bindLeaveWarning = () => {\n\n\t\t// Don't double-bind it.\n\t\tif ( ! that.isLeaveWarningBound ) {\n\n\t\t\t// Bind our error that displays before leaving page.\n\t\t\t$( window ).bind( 'beforeunload', () => {\n\t\t\t\treturn window.ctctTexts.leavewarning;\n\t\t\t} );\n\n\t\t\t// Save our state.\n\t\t\tthat.isLeaveWarningBound = true;\n\t\t}\n\t};\n\n\t/**\n\t * Removes our binding of our leave warning.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tthat.unbindLeaveWarning = () => {\n\t\t$( window ).unbind( 'beforeunload' );\n\t};\n\n\t/**\n\t * Attach callbacks to events.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tthat.bindEvents = () => {\n\n\t\t$( '#post' ).submit( () => {\n\n\t\t\t// Make sure our email dropdown reverts from disbled, as CMB2 doesn't save those values.\n\t\t\t$( '.ctct-email-disabled' ).removeClass( 'disabled' ).prop( 'disabled', false );\n\n\t\t\tthat.unbindLeaveWarning();\n\t\t} );\n\n\t\t$( '.cmb2-wrap input, .cmb2-wrap textarea' ).on( 'input', () => {\n\t\t\tif ( 'undefined' !== typeof( tinyMCE ) ) {\n\t\t\t\tthat.bindLeaveWarning();\n\t\t\t}\n\t\t} );\n\n\t\t// Disable email options on row change trigger.\n\t\t$( document ).on( 'cmb2_shift_rows_complete', () => {\n\t\t\tthat.modifyFields();\n\t\t\tthat.bindLeaveWarning();\n\t\t\tthat.removeDuplicateMappings();\n\t\t} );\n\n\t\t// If we get a row added, then do our stuff.\n\t\t$( document ).on( 'cmb2_add_row', ( newRow ) => { // eslint-disable-line no-unused-vars\n\n\t\t\t// Automatically set new rows to be 'custom' field type.\n\t\t\t$( '#custom_fields_group_repeat .postbox' ).last().find( '.map select' ).val( 'none' );\n\n\t\t\tthat.modifyFields();\n\t\t\tthat.selectBinds();\n\t\t\tthat.removeDuplicateMappings();\n\t\t} );\n\n\t\tthat.removeDuplicateMappings();\n\n\t\t$( '#ctct-reset-css' ).on( 'click', ( event ) => {\n\t\t\tevent.preventDefault();\n\n\t\t\tvar selectFields = [\n\t\t\t\t'#_ctct_form_description_font_size',\n\t\t\t\t'#_ctct_form_submit_button_font_size',\n\t\t\t\t'#_ctct_form_label_placement'\n\t\t\t];\n\n\t\t\tvar textFields = [\n\t\t\t\t'#_ctct_form_padding_top',\n\t\t\t\t'#_ctct_form_padding_bottom',\n\t\t\t\t'#_ctct_form_padding_left',\n\t\t\t\t'#_ctct_form_padding_right',\n\t\t\t\t'#_ctct_input_custom_classes'\n\t\t\t];\n\n\t\t\t// Reset color pickers.\n\t\t\t$( '.wp-picker-clear' ).each( function() {\n\t\t\t\t$( this ).click();\n\t\t\t} );\n\n\t\t\tfor ( var i = selectFields.length; i--; ) {\n\t\t\t\tvar firstOption = $( selectFields[i] ).children( 'option' ).first();\n\t\t\t\t$( selectFields[i] ).val( firstOption.val() );\n\t\t\t}\n\n\t\t\tfor ( var i = textFields.length; i--; ) {\n\t\t\t\t$( textFields[i] ).val( '' );\n\t\t\t}\n\t\t} );\n\t};\n\n\t/**\n\t * When .cmb2_select <selects> get changed, do some actions.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tthat.selectBinds = () => {\n\n\t\t// For each fields select.\n\t\t$( '#cmb2-metabox-ctct_2_fields_metabox .cmb2_select' ).change( () => {\n\n\t\t\t// Modify our fields.\n\t\t\tthat.modifyFields();\n\n\t\t\t// Don't allow duplicate mappings in form.\n\t\t\tthat.removeDuplicateMappings();\n\n\t\t\t// Bind our leave warning.\n\t\t\tthat.bindLeaveWarning();\n\t\t} );\n\t};\n\n\t/**\n\t * We need to manipulate our form builder a bit. We do this here.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tthat.modifyFields = () => {\n\n\t\t// Set that we haven't found an email.\n\t\tvar foundEmail = false;\n\n\t\t// Loop through all fields to modify them.\n\t\t$( '#cmb2-metabox-ctct_2_fields_metabox #custom_fields_group_repeat .cmb-repeatable-grouping' ).each( function( key, value ) {\n\n\t\t\t// Set some of our helper paramaters.\n\t\t\tvar $fieldParent = $( this ).find( '.cmb-field-list' );\n\t\t\tvar $button = $( $fieldParent ).find( '.cmb-remove-group-row' );\n\t\t\tvar $required = $( $fieldParent ).find( '.required input[type=checkbox]' );\n\t\t\tvar $requiredRow = $required.closest( '.cmb-row' );\n\t\t\tvar $map = $( $fieldParent ).find( '.map select option:selected' );\n\t\t\tvar $mapName = $map.text();\n\t\t\tvar $fieldTitle = $( this ).find( 'h3' );\n\t\t\tvar $labelField = $( this ).find( 'input[name*=\"_ctct_field_label\"]' );\n\t\t\tvar $descField = $( this ).find( 'input[name*=\"_ctct_field_desc\"]' );\n\n\t\t\t// Set our field row to be the name of the selected option.\n\t\t\t$fieldTitle.text( $mapName );\n\n\t\t\t// If we have a blank field label, then use the name of the field to fill it in.\n\t\t\tif ( 0 === $labelField.val().length ) {\n\t\t\t\t$labelField.val( $mapName ).addClass( 'ctct-label-filled' );\n\t\t\t} else {\n\t\t\t\t$labelField.addClass( 'ctct-label-filled' );\n\t\t\t}\n\n\t\t\t// If we haven't yet found an email field, and this is our email field.\n\t\t\tif ( ! foundEmail && ( 'email' === $( $map ).val() ) ) {\n\n\t\t\t\t// Set that we found an email field.\n\t\t\t\tfoundEmail = true;\n\n\t\t\t\t// Make it required.\n\t\t\t\t$required.prop( 'checked', true );\n\n\t\t\t\t// Set it to be 'disabled'.\n\t\t\t\t$( value ).find( 'select' ).addClass( 'disabled ctct-email-disabled' ).prop( 'disabled', true );\n\n\t\t\t\t// Hide the required row.\n\t\t\t\t$requiredRow.hide();\n\n\t\t\t\t// Hide the remove row button.\n\t\t\t\t$button.hide();\n\n\t\t\t} else {\n\n\t\t\t\t// Verify its not disabled.\n\t\t\t\t$( value ).find( 'select' ).removeClass( 'disabled ctct-email-disabled' ).prop( 'disabled', false );\n\n\t\t\t\t// If we're not an email field, reshow the required field.\n\t\t\t\t$requiredRow.show();\n\n\t\t\t\t// and the remove button.\n\t\t\t\t$button.show();\n\t\t\t}\n\n\t\t\t// Set the placeholder text if there's something to set.\n\t\t\tif ( window.ctct_admin_placeholders ) {\n\t\t\t\tvar placeholder = window.ctct_admin_placeholders[ $( value ).find( 'select' ).val() ];\n\n\t\t\t\t// If we have a valid placeholder, display it or try the fallback.\n\t\t\t\tif ( placeholder && placeholder.length && $descField.length ) {\n\t\t\t\t\t$descField.attr( 'placeholder', 'Example: ' + placeholder );\n\t\t\t\t} else if ( window.ctct_admin_placeholders.default ) {\n\t\t\t\t\t$descField.attr( 'placeholder', window.ctct_admin_placeholders.default );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t};\n\n\t/**\n\t * Go through all dropdowns, and remove used options.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tthat.removeDuplicateMappings = () => {\n\n\t\tvar usedMappings = [];\n\t\tvar dropdowns = '#cmb2-metabox-ctct_2_fields_metabox #custom_fields_group_repeat .cmb-repeatable-grouping select';\n\t\tvar $dropdowns = $( dropdowns );\n\n\t\t// For each dropdown, build up our array of used values.\n\t\t$dropdowns.each( function( key, value ) {\n\t\t\tusedMappings.push( $( value ).val() );\n\t\t} );\n\n\t\t// Re-show all the children options we may have hidden.\n\t\t$dropdowns.children().show();\n\n\t\t// For each of our mappings that we already have, remove them from all selects.\n\t\tusedMappings.forEach( function( value ) {\n\n\t\t\t// But only do it if the value isn't one of our custom ones.\n\t\t\tif ( ( 'custom_text_area' !== value ) && ( 'custom' !== value ) ) {\n\n\t\t\t\t// Remove all options from our dropdowns with the value.\n\t\t\t\t$( dropdowns + ' option[value=' + value + ']:not( :selected )' ).hide();\n\t\t\t}\n\t\t} );\n\t};\n\n\t$( that.init );\n\n} ( window, jQuery, window.CTCTBuilder ) );\n","window.CTCTForms = {};\n\n( function( window, $, that ) {\n\n\t/**\n\t * @constructor\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tthat.init = () => {\n\t\tthat.cache();\n\t\tthat.bindEvents();\n\t};\n\n\t/**\n\t * Cache DOM elements.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tthat.cache = () => {\n\t\tthat.$c = {\n\t\t\twindow: $( window ),\n\t\t\tbody: $( 'body' ),\n\t\t\tdisconnect: '.ctct-disconnect'\n\t\t};\n\t};\n\n\t/**\n\t * Attach callbacks to events.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tthat.bindEvents = () => {\n\n\t\t$( that.$c.disconnect ).on( 'click', ( e ) => { // eslint-disable-line no-unused-vars\n\t\t\tconfirm( window.ctctTexts.disconnectconfirm );\n\t\t} );\n\t};\n\n\t$( that.init );\n\n} ( window, jQuery, window.CTCTForms ) );\n","window.CTCTModal = {};\n\n( function( window, $, app ) {\n\n\t/**\n\t * @constructor\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tapp.init = () => {\n\t\tapp.cache();\n\t\tapp.bindEvents();\n\t};\n\n\t/**\n\t * Cache DOM elements.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tapp.cache = () => {\n\t\tapp.$c = {\n\t\t\twindow: $( window ),\n\t\t\tmodalSelector: $( '.ctct-modal' ),\n\t\t\tmodalClose: $( '.ctct-modal-close' ),\n\t\t\ttextareaModal: $( '#ctct-custom-textarea-modal' ),\n\t\t\ttextareaLink: $( '#ctct-open-textarea-info' ),\n\t\t\tdeleteLogLink: $( '#deletelog' )\n\t\t};\n\t};\n\n\t/**\n\t * Attach callbacks to events.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tapp.bindEvents = () => {\n\n\t\tapp.$c.modalClose.on( 'click', () => {\n\n\t\t\tapp.$c.modalSelector.removeClass( 'ctct-modal-open' );\n\n\t\t\tif ( app.$c.modalSelector.hasClass( 'ctct-custom-textarea-modal' ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t$.ajax( {\n\t\t\t\ttype: 'post',\n\t\t\t\tdataType: 'json',\n\t\t\t\turl: window.ajaxurl,\n\t\t\t\tdata: {\n\t\t\t\t\taction: 'ctct_dismiss_first_modal',\n\t\t\t\t\t'ctct_is_dismissed': 'true'\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\n\t\tapp.$c.textareaLink.on( 'click', () => {\n\t\t\tapp.$c.textareaModal.addClass( 'ctct-modal-open' );\n\t\t} );\n\n\t\tapp.$c.deleteLogLink.on( 'click', ( event ) => {\n\t\t\tevent.preventDefault();\n\n\t\t\t// Get the link that was clicked on so we can redirect to it if the user confirms.\n\t\t\tvar deleteLogLink = $( event.currentTarget ).attr( 'href' );\n\n\t\t\t$( '#confirmdelete' ).dialog( {\n\t\t\t\tresizable: false,\n\t\t\t\theight: 'auto',\n\t\t\t\twidth: 400,\n\t\t\t\tmodal: true,\n\t\t\t\tbuttons: {\n\t\t\t\t\t'Yes': () => {\n\n\t\t\t\t\t\t// If the user confirms the action, redirect them to the deletion page.\n\t\t\t\t\t\twindow.location.replace( deleteLogLink );\n\t\t\t\t\t},\n\t\t\t\t\t'Cancel': () => {\n\t\t\t\t\t\t$( '#confirmdelete' ).closest( '.ui-dialog-content' ).dialog( 'close' );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t};\n\n\t$( app.init );\n\n} ( window, jQuery, window.CTCTModal ) );\n","window.CTCTNewsletter = {};\n\n( function( window, $, app ) {\n\n\t/**\n\t * @constructor\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tapp.init = () => {\n\t\tapp.submitNewsletter();\n\t};\n\n\t/**\n\t * Handle newsletter signups on the \"Connect\" and \"About\" pages.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tapp.submitNewsletter = () => {\n\n\t\t// Connect page.\n\t\t$( '.ctct-body #subscribe' ).on( 'submit', ( event ) => {\n\t\t\tevent.preventDefault();\n\n\t\t\tvar $ctctNewsWrapper = $( '#subscribe .ctct-call-to-action' );\n\t\t\tvar ctctNewsForm = $( '.ctct-body #subscribe' )[0];\n\t\t\tvar ctctEmailField = $( '.ctct-call-to-action input[type=\"text\"]' )[0];\n\t\t\tvar subscribeEndpoint = event.target.action;\n\n\t\t\tif ( true === ctctEmailField.validity.valid ) {\n\t\t\t\t$( '<iframe>', {\n\t\t\t\t\t'src': subscribeEndpoint + '?' + $( ctctNewsForm ).serialize(),\n\t\t\t\t\t'height': 0,\n\t\t\t\t\t'width': 0,\n\t\t\t\t\t'style': 'display: none;'\n\t\t\t\t} ).appendTo( $ctctNewsWrapper );\n\n\t\t\t\t$( '#subbutton' ).val( 'Thanks for signing up' ).css( { 'background-color': 'rgb(1, 128, 0)', 'color': 'rgb(255,255,255)' } );\n\t\t\t\t$( '#subscribe .ctct-call-to-action-text' ).css( { 'width': '70%' } );\n\t\t\t} else {\n\t\t\t\t$( '#subbutton' ).val( 'Error occurred' );\n\t\t\t}\n\t\t} );\n\n\t\t// About page.\n\t\t$( '.ctct-section #subscribe' ).on( 'submit', ( event ) => {\n\t\t\tevent.preventDefault();\n\n\t\t\tvar $ctctNewsWrapper = $( '.section-marketing-tips' );\n\t\t\tvar ctctNewsForm = $( '.ctct-section #subscribe' )[0];\n\t\t\tvar ctctEmailField = $( '.ctct-section #subscribe input[type=\"text\"]' )[0];\n\t\t\tvar subscribeEndpoint = event.target.action;\n\n\t\t\tif ( true === ctctEmailField.validity.valid ) {\n\t\t\t\t$( '<iframe>', {\n\t\t\t\t\t'src': subscribeEndpoint + '?' + $( ctctNewsForm ).serialize(),\n\t\t\t\t\t'height': 0,\n\t\t\t\t\t'width': 0,\n\t\t\t\t\t'style': 'display: none;'\n\t\t\t\t} ).appendTo( $ctctNewsWrapper );\n\t\t\t\t$( '#subbutton' ).val( 'Thanks for signing up' ).css( { 'background-color': 'rgb(1, 128, 0)' } );\n\t\t\t} else {\n\t\t\t\t$( '#subbutton' ).val( 'Error occurred' );\n\t\t\t}\n\t\t} );\n\t};\n\n\t$( app.init );\n\n} ( window, jQuery, window.CTCTNewsletter ) );\n","window.CTCT_OptIns = {};\n\n( function( window, $, app ) {\n\n\t/**\n\t * @constructor\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tapp.init = () => {\n\t\tapp.cache();\n\t\tapp.bindEvents();\n\t};\n\n\t/**\n\t * Cache DOM elements.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tapp.cache = () => {\n\t\tapp.$c = {\n\t\t\toptinNoConn: $( '#cmb2-metabox-ctct_1_optin_metabox #_ctct_opt_in_not_connected' ),\n\t\t\tlist: $( '#cmb2-metabox-ctct_0_list_metabox [name=\"_ctct_list[]\"]' ),\n\t\t\ttitle: $( '#cmb2-metabox-ctct_1_optin_metabox .cmb2-id-email-optin-title' ),\n\t\t\toptin: $( '#cmb2-metabox-ctct_1_optin_metabox .cmb2-id--ctct-opt-in' ),\n\t\t\tinstruct: $( '#cmb2-metabox-ctct_1_optin_metabox .cmb2-id--ctct-opt-in-instructions' )\n\t\t};\n\t};\n\n\t/**\n\t * Attach callbacks to events.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tapp.bindEvents = () => {\n\n\t\t// Only fire show/hide if we have the normal checkbox.\n\t\tif ( app.$c.optinNoConn.length ) {\n\n\t\t\t// Fire once to get our loaded state set up.\n\t\t\tapp.toggleNoConnectionFields();\n\n\t\t\t// Bind to fire when needed.\n\t\t\tapp.$c.optinNoConn.change( () => {\n\t\t\t\tapp.toggleNoConnectionFields();\n\t\t\t} );\n\t\t}\n\n\t\t// Only fire show/hide if we have the normal checkbox.\n\t\tif ( app.$c.list.length ) {\n\n\t\t\t// Fire once to get our loaded state set up.\n\t\t\tapp.toggleConnectionFields();\n\n\t\t\t// Bind to fire when needed.\n\t\t\tapp.$c.list.change( () => {\n\t\t\t\tapp.toggleConnectionFields();\n\t\t\t} );\n\t\t}\n\t};\n\n\t/**\n\t * Toggle unnecessary, unconnected optin fields if we're not showing the opt-in.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tapp.toggleNoConnectionFields = () => {\n\n\t\tif ( app.$c.optinNoConn.prop( 'checked' ) ) {\n\t\t\tapp.$c.instruct.slideDown();\n\t\t} else {\n\t\t\tapp.$c.instruct.slideUp();\n\t\t}\n\t};\n\n\t/**\n\t * Toggle unnecessary, *connected* optin fields if we're not showing the opt-in.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tapp.toggleConnectionFields = () => {\n\n\t\t// If checked, show them, else hide it.\n\t\tif ( '' !== app.$c.list.val() ) {\n\t\t\tapp.$c.title.slideDown();\n\t\t\tapp.$c.optin.slideDown();\n\t\t\tapp.$c.instruct.slideDown();\n\t\t} else {\n\t\t\tapp.$c.title.slideUp();\n\t\t\tapp.$c.optin.slideUp();\n\t\t\tapp.$c.instruct.slideUp();\n\t\t}\n\t};\n\n\t$( app.init );\n\n} ( window, jQuery, window.CTCT_OptIns ) );\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./assets/js/ctct-plugin-admin/index.js","webpack:///./assets/js/ctct-plugin-admin/ajax.js","webpack:///./assets/js/ctct-plugin-admin/builder.js","webpack:///./assets/js/ctct-plugin-admin/forms.js","webpack:///./assets/js/ctct-plugin-admin/modal.js","webpack:///./assets/js/ctct-plugin-admin/newsletter.js","webpack:///./assets/js/ctct-plugin-admin/optins.js","webpack:///./assets/js/ctct-plugin-admin/clipboard.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","window","CTCTAJAX","$","that","init","handleOptinAJAX","handleReviewAJAX","on","e","ctctOptinAjax","is","ajax","url","ajaxurl","data","dataType","success","response","document","getElementById","remove","error","x","console","log","toggleClass","attr","hide","$checkbox","ctctPrivacyAjax","privacy_agree","ctctAction","hasClass","ctctReviewAjax","resp","preventDefault","jQuery","CTCTBuilder","length","cache","bindEvents","selectBinds","modifyFields","removeClass","append","ctctTexts","move_up","move_down","$c","body","isLeaveWarningBound","bindLeaveWarning","leavewarning","unbindLeaveWarning","unbind","submit","prop","tinyMCE","removeDuplicateMappings","newRow","last","find","val","event","selectFields","textFields","each","this","click","firstOption","children","first","change","foundEmail","$fieldParent","$button","$required","$requiredRow","closest","$map","$mapName","text","$fieldTitle","$labelField","$descField","addClass","show","ctct_admin_placeholders","placeholder","default","usedMappings","dropdowns","$dropdowns","push","forEach","CTCTForms","disconnect","confirm","disconnectconfirm","CTCTModal","app","modalSelector","modalClose","textareaModal","textareaLink","deleteLogLink","type","action","currentTarget","dialog","resizable","height","width","modal","buttons","location","replace","CTCTNewsletter","submitNewsletter","$ctctNewsWrapper","ctctNewsForm","ctctEmailField","subscribeEndpoint","target","validity","valid","serialize","appendTo","css","CTCT_OptIns","optinNoConn","list","title","optin","instruct","toggleNoConnectionFields","toggleConnectionFields","slideDown","slideUp","CTCTClipboard","copyshortcode","copyClick","button","input","select","setSelectionRange","execCommand","reset","innerHTML","dataset","copied","setTimeout","index","element","querySelector","addEventListener"],"mappings":"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","file":"ctct-plugin-admin.min.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"https://testing.test/wp-content/plugins/constant-contact-forms/assets/js/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","import './ajax';\nimport './builder';\nimport './forms';\nimport './modal';\nimport './newsletter';\nimport './optins';;\nimport './clipboard'; \n","window.CTCTAJAX = {};\n\n( function( window, $, that ) {\n\n\t/**\n\t * @constructor\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tthat.init = () => {\n\n\t\t// Trigger any field modifications we need to do.\n\t\tthat.handleOptinAJAX();\n\t\tthat.handleReviewAJAX();\n\t};\n\n\t/**\n\t * We need to manipulate our form builder a bit. We do this here.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tthat.handleOptinAJAX = () => {\n\n\t\t// eslint-disable-next-line no-unused-vars\n\t\t$( '#ctct_admin_notice_tracking_optin' ).on( 'click', ( e ) => {\n\n\t\t\tvar ctctOptinAjax = {\n\t\t\t\t'action': 'constant_contact_optin_ajax_handler',\n\t\t\t\t'optin': ( $( this ).is( ':checked' ) ) ? 'on' : 'off'\n\t\t\t};\n\n\t\t\t$.ajax( {\n\t\t\t\turl: window.ajaxurl,\n\t\t\t\tdata: ctctOptinAjax,\n\t\t\t\tdataType: 'json',\n\t\t\t\tsuccess: ( response ) => {\n\t\t\t\t\t$( document.getElementById( 'ctct-admin-notice-optin_admin_notice' ) ).remove();\n\t\t\t\t},\n\t\t\t\terror: ( x, t, m ) => {\n\t\t\t\t\tif ( window.console ) {\n\t\t\t\t\t\tconsole.log( [ t, m ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\t$( '#ctct-privacy-modal' ).toggleClass( 'ctct-modal-open' );\n\t\t} );\n\n\t\t// Opens the privacy modal once clicking on the checkbox to opt in via the admin notice.\n\t\t// eslint-disable-next-line no-unused-vars\n\t\t$( '#ctct-connect-ga-optin a' ).on( 'click', ( e ) => {\n\t\t\tvar ctctOptinAjax = {\n\t\t\t\t'action': 'constant_contact_optin_ajax_handler',\n\t\t\t\t'optin': $( this ).attr( 'data-allow' )\n\t\t\t};\n\n\t\t\t$.ajax( {\n\t\t\t\turl: window.ajaxurl,\n\t\t\t\tdata: ctctOptinAjax,\n\t\t\t\tdataType: 'json',\n\t\t\t\tsuccess: ( response ) => { // eslint-disable-line no-unused-vars\n\t\t\t\t\t$( '.ctct-connected-opt-in' ).hide();\n\t\t\t\t},\n\t\t\t\terror: ( x, t, m ) => {\n\t\t\t\t\tif ( window.console ) {\n\t\t\t\t\t\tconsole.log( [ t, m ] ); // eslint-disable-line no-console\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\n\t\t// eslint-disable-next-line no-unused-vars\n\t\t$( '#_ctct_data_tracking' ).on( 'click', ( e ) => {\n\t\t\t$( '#ctct-privacy-modal' ).toggleClass( 'ctct-modal-open' );\n\t\t} );\n\n\t\t// Unchecks the value if they have closed the privacy modal without agreeing/disagreeing.\n\t\t// eslint-disable-next-line no-unused-vars\n\t\t$( '.ctct-modal-close' ).on( 'click', ( e ) => {\n\t\t\tvar $checkbox = $( '#_ctct_data_tracking' );\n\t\t\tif ( $checkbox.is( ':checked' ) ) {\n\t\t\t\t$checkbox.attr( 'checked', false );\n\t\t\t}\n\t\t} );\n\n\t\t// Handle the agreeing or disagreeing regarding privacy modal.\n\t\t// eslint-disable-next-line no-unused-vars\n\t\t$( '#ctct-modal-footer-privacy a' ).on( 'click', ( e ) => {\n\t\t\tvar ctctPrivacyAjax = {\n\t\t\t\t'action': 'constant_contact_privacy_ajax_handler',\n\t\t\t\t'privacy_agree': $( this ).attr( 'data-agree' )\n\t\t\t};\n\n\t\t\t$.ajax( {\n\t\t\t\turl: window.ajaxurl,\n\t\t\t\tdata: ctctPrivacyAjax,\n\t\t\t\tdataType: 'json',\n\t\t\t\tsuccess: ( response ) => { // eslint-disable-line no-unused-vars\n\t\t\t\t\t$( '#ctct-privacy-modal' ).toggleClass( 'ctct-modal-open' );\n\t\t\t\t\tif ( 'false' === ctctPrivacyAjax.privacy_agree ) {\n\t\t\t\t\t\tvar $checkbox = $( '#_ctct_data_tracking' );\n\t\t\t\t\t\tif ( $checkbox.is( ':checked' ) ) {\n\t\t\t\t\t\t\t$checkbox.attr( 'checked', false );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\terror: ( x, t, m ) => {\n\t\t\t\t\tif ( window.console ) {\n\t\t\t\t\t\tconsole.log( [ t, m ] ); // eslint-disable-line no-console\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t};\n\n\t// Handle saving the decision regarding the review prompt admin notice.\n\tthat.handleReviewAJAX = () => {\n\t\t$( '#ctct-admin-notice-review_request' ).on( 'click', 'a', ( e ) => {\n\n\t\t\tvar ctctAction = 'dismissed';\n\n\t\t\tif ( $( this ).hasClass( 'ctct-review' ) ) {\n\t\t\t\tctctAction = 'reviewed';\n\t\t\t}\n\n\t\t\tvar ctctReviewAjax = {\n\t\t\t\t'action': 'constant_contact_review_ajax_handler',\n\t\t\t\t'ctct-review-action': ctctAction\n\t\t\t};\n\n\t\t\t$.ajax( {\n\t\t\t\turl: window.ajaxurl,\n\t\t\t\tdata: ctctReviewAjax,\n\t\t\t\tdataType: 'json',\n\t\t\t\tsuccess: ( resp ) => {\n\t\t\t\t\tif ( window.console ) {\n\t\t\t\t\t\tconsole.log( resp ); // eslint-disable-line no-console\n\t\t\t\t\t}\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\t$( '#ctct-admin-notice-review_request' ).hide();\n\t\t\t\t},\n\t\t\t\terror: ( x, t, m ) => {\n\t\t\t\t\tif ( window.console ) {\n\t\t\t\t\t\tconsole.log( [ t, m ] ); // eslint-disable-line no-console\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t};\n\n\t$( that.init );\n\n} ( window, jQuery, window.CTCTAJAX ) );\n","window.CTCTBuilder = {};\n\n( function( window, $, that ) {\n\n\t/**\n\t * @constructor\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tthat.init = () => {\n\n\t\t// If we do actually have an email field set, then remove our error.\n\t\tif ( $( '#cmb2-metabox-ctct_2_fields_metabox option[value=\"email\"]:selected' ).length ) {\n\t\t\t$( '#ctct-no-email-error' ).remove();\n\t\t}\n\n\t\t// Cache it all.\n\t\tthat.cache();\n\n\t\t// Bind our events.\n\t\tthat.bindEvents();\n\n\t\t// Bind our select dropdown events.\n\t\tthat.selectBinds();\n\n\t\t// Trigger any field modifications we need to do.\n\t\tthat.modifyFields();\n\n\t\t// Make description non-draggable, so we don't run into weird cmb2 issues.\n\t\t$( '#ctct_0_description_metabox h2.hndle' ).removeClass( 'ui-sortable-handle, hndle' );\n\n\t\t// Inject our new labels for the up/down CMB2 buttons, so they can be properly localized.\n\t\t// Because we're using :after, we can't use .css() to do this, we need to inject a style tag.\n\t\t$( 'head' ).append( '<style> #cmb2-metabox-ctct_2_fields_metabox a.move-up::after { content: \"' + window.ctctTexts.move_up + '\" } #cmb2-metabox-ctct_2_fields_metabox a.move-down::after { content: \"' + window.ctctTexts.move_down + '\" }</style>' );\n\t};\n\n\t/**\n\t * Cache DOM elements.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tthat.cache = () => {\n\n\t\tthat.$c = {\n\t\t\twindow: $( window ),\n\t\t\tbody: $( 'body' )\n\t\t};\n\n\t\tthat.isLeaveWarningBound = false;\n\t};\n\n\t// Triggers our leave warning if we modify things in the form.\n\tthat.bindLeaveWarning = () => {\n\n\t\t// Don't double-bind it.\n\t\tif ( ! that.isLeaveWarningBound ) {\n\n\t\t\t// Bind our error that displays before leaving page.\n\t\t\t$( window ).bind( 'beforeunload', () => {\n\t\t\t\treturn window.ctctTexts.leavewarning;\n\t\t\t} );\n\n\t\t\t// Save our state.\n\t\t\tthat.isLeaveWarningBound = true;\n\t\t}\n\t};\n\n\t/**\n\t * Removes our binding of our leave warning.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tthat.unbindLeaveWarning = () => {\n\t\t$( window ).unbind( 'beforeunload' );\n\t};\n\n\t/**\n\t * Attach callbacks to events.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tthat.bindEvents = () => {\n\n\t\t$( '#post' ).submit( () => {\n\n\t\t\t// Make sure our email dropdown reverts from disbled, as CMB2 doesn't save those values.\n\t\t\t$( '.ctct-email-disabled' ).removeClass( 'disabled' ).prop( 'disabled', false );\n\n\t\t\tthat.unbindLeaveWarning();\n\t\t} );\n\n\t\t$( '.cmb2-wrap input, .cmb2-wrap textarea' ).on( 'input', () => {\n\t\t\tif ( 'undefined' !== typeof( tinyMCE ) ) {\n\t\t\t\tthat.bindLeaveWarning();\n\t\t\t}\n\t\t} );\n\n\t\t// Disable email options on row change trigger.\n\t\t$( document ).on( 'cmb2_shift_rows_complete', () => {\n\t\t\tthat.modifyFields();\n\t\t\tthat.bindLeaveWarning();\n\t\t\tthat.removeDuplicateMappings();\n\t\t} );\n\n\t\t// If we get a row added, then do our stuff.\n\t\t$( document ).on( 'cmb2_add_row', ( newRow ) => { // eslint-disable-line no-unused-vars\n\n\t\t\t// Automatically set new rows to be 'custom' field type.\n\t\t\t$( '#custom_fields_group_repeat .postbox' ).last().find( '.map select' ).val( 'none' );\n\n\t\t\tthat.modifyFields();\n\t\t\tthat.selectBinds();\n\t\t\tthat.removeDuplicateMappings();\n\t\t} );\n\n\t\tthat.removeDuplicateMappings();\n\n\t\t$( '#ctct-reset-css' ).on( 'click', ( event ) => {\n\t\t\tevent.preventDefault();\n\n\t\t\tvar selectFields = [\n\t\t\t\t'#_ctct_form_description_font_size',\n\t\t\t\t'#_ctct_form_submit_button_font_size',\n\t\t\t\t'#_ctct_form_label_placement'\n\t\t\t];\n\n\t\t\tvar textFields = [\n\t\t\t\t'#_ctct_form_padding_top',\n\t\t\t\t'#_ctct_form_padding_bottom',\n\t\t\t\t'#_ctct_form_padding_left',\n\t\t\t\t'#_ctct_form_padding_right',\n\t\t\t\t'#_ctct_input_custom_classes'\n\t\t\t];\n\n\t\t\t// Reset color pickers.\n\t\t\t$( '.wp-picker-clear' ).each( function() {\n\t\t\t\t$( this ).click();\n\t\t\t} );\n\n\t\t\tfor ( var i = selectFields.length; i--; ) {\n\t\t\t\tvar firstOption = $( selectFields[i] ).children( 'option' ).first();\n\t\t\t\t$( selectFields[i] ).val( firstOption.val() );\n\t\t\t}\n\n\t\t\tfor ( var i = textFields.length; i--; ) {\n\t\t\t\t$( textFields[i] ).val( '' );\n\t\t\t}\n\t\t} );\n\t};\n\n\t/**\n\t * When .cmb2_select <selects> get changed, do some actions.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tthat.selectBinds = () => {\n\n\t\t// For each fields select.\n\t\t$( '#cmb2-metabox-ctct_2_fields_metabox .cmb2_select' ).change( () => {\n\n\t\t\t// Modify our fields.\n\t\t\tthat.modifyFields();\n\n\t\t\t// Don't allow duplicate mappings in form.\n\t\t\tthat.removeDuplicateMappings();\n\n\t\t\t// Bind our leave warning.\n\t\t\tthat.bindLeaveWarning();\n\t\t} );\n\t};\n\n\t/**\n\t * We need to manipulate our form builder a bit. We do this here.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tthat.modifyFields = () => {\n\n\t\t// Set that we haven't found an email.\n\t\tvar foundEmail = false;\n\n\t\t// Loop through all fields to modify them.\n\t\t$( '#cmb2-metabox-ctct_2_fields_metabox #custom_fields_group_repeat .cmb-repeatable-grouping' ).each( function( key, value ) {\n\n\t\t\t// Set some of our helper paramaters.\n\t\t\tvar $fieldParent = $( this ).find( '.cmb-field-list' );\n\t\t\tvar $button = $( $fieldParent ).find( '.cmb-remove-group-row' );\n\t\t\tvar $required = $( $fieldParent ).find( '.required input[type=checkbox]' );\n\t\t\tvar $requiredRow = $required.closest( '.cmb-row' );\n\t\t\tvar $map = $( $fieldParent ).find( '.map select option:selected' );\n\t\t\tvar $mapName = $map.text();\n\t\t\tvar $fieldTitle = $( this ).find( 'h3' );\n\t\t\tvar $labelField = $( this ).find( 'input[name*=\"_ctct_field_label\"]' );\n\t\t\tvar $descField = $( this ).find( 'input[name*=\"_ctct_field_desc\"]' );\n\n\t\t\t// Set our field row to be the name of the selected option.\n\t\t\t$fieldTitle.text( $mapName );\n\n\t\t\t// If we have a blank field label, then use the name of the field to fill it in.\n\t\t\tif ( 0 === $labelField.val().length ) {\n\t\t\t\t$labelField.val( $mapName ).addClass( 'ctct-label-filled' );\n\t\t\t} else {\n\t\t\t\t$labelField.addClass( 'ctct-label-filled' );\n\t\t\t}\n\n\t\t\t// If we haven't yet found an email field, and this is our email field.\n\t\t\tif ( ! foundEmail && ( 'email' === $( $map ).val() ) ) {\n\n\t\t\t\t// Set that we found an email field.\n\t\t\t\tfoundEmail = true;\n\n\t\t\t\t// Make it required.\n\t\t\t\t$required.prop( 'checked', true );\n\n\t\t\t\t// Set it to be 'disabled'.\n\t\t\t\t$( value ).find( 'select' ).addClass( 'disabled ctct-email-disabled' ).prop( 'disabled', true );\n\n\t\t\t\t// Hide the required row.\n\t\t\t\t$requiredRow.hide();\n\n\t\t\t\t// Hide the remove row button.\n\t\t\t\t$button.hide();\n\n\t\t\t} else {\n\n\t\t\t\t// Verify its not disabled.\n\t\t\t\t$( value ).find( 'select' ).removeClass( 'disabled ctct-email-disabled' ).prop( 'disabled', false );\n\n\t\t\t\t// If we're not an email field, reshow the required field.\n\t\t\t\t$requiredRow.show();\n\n\t\t\t\t// and the remove button.\n\t\t\t\t$button.show();\n\t\t\t}\n\n\t\t\t// Set the placeholder text if there's something to set.\n\t\t\tif ( window.ctct_admin_placeholders ) {\n\t\t\t\tvar placeholder = window.ctct_admin_placeholders[ $( value ).find( 'select' ).val() ];\n\n\t\t\t\t// If we have a valid placeholder, display it or try the fallback.\n\t\t\t\tif ( placeholder && placeholder.length && $descField.length ) {\n\t\t\t\t\t$descField.attr( 'placeholder', 'Example: ' + placeholder );\n\t\t\t\t} else if ( window.ctct_admin_placeholders.default ) {\n\t\t\t\t\t$descField.attr( 'placeholder', window.ctct_admin_placeholders.default );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t};\n\n\t/**\n\t * Go through all dropdowns, and remove used options.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tthat.removeDuplicateMappings = () => {\n\n\t\tvar usedMappings = [];\n\t\tvar dropdowns = '#cmb2-metabox-ctct_2_fields_metabox #custom_fields_group_repeat .cmb-repeatable-grouping select';\n\t\tvar $dropdowns = $( dropdowns );\n\n\t\t// For each dropdown, build up our array of used values.\n\t\t$dropdowns.each( function( key, value ) {\n\t\t\tusedMappings.push( $( value ).val() );\n\t\t} );\n\n\t\t// Re-show all the children options we may have hidden.\n\t\t$dropdowns.children().show();\n\n\t\t// For each of our mappings that we already have, remove them from all selects.\n\t\tusedMappings.forEach( function( value ) {\n\n\t\t\t// But only do it if the value isn't one of our custom ones.\n\t\t\tif ( ( 'custom_text_area' !== value ) && ( 'custom' !== value ) ) {\n\n\t\t\t\t// Remove all options from our dropdowns with the value.\n\t\t\t\t$( dropdowns + ' option[value=' + value + ']:not( :selected )' ).hide();\n\t\t\t}\n\t\t} );\n\t};\n\n\t$( that.init );\n\n} ( window, jQuery, window.CTCTBuilder ) );\n","window.CTCTForms = {};\n\n( function( window, $, that ) {\n\n\t/**\n\t * @constructor\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tthat.init = () => {\n\t\tthat.cache();\n\t\tthat.bindEvents();\n\t};\n\n\t/**\n\t * Cache DOM elements.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tthat.cache = () => {\n\t\tthat.$c = {\n\t\t\twindow: $( window ),\n\t\t\tbody: $( 'body' ),\n\t\t\tdisconnect: '.ctct-disconnect'\n\t\t};\n\t};\n\n\t/**\n\t * Attach callbacks to events.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tthat.bindEvents = () => {\n\n\t\t$( that.$c.disconnect ).on( 'click', ( e ) => { // eslint-disable-line no-unused-vars\n\t\t\tconfirm( window.ctctTexts.disconnectconfirm );\n\t\t} );\n\t};\n\n\t$( that.init );\n\n} ( window, jQuery, window.CTCTForms ) );\n","window.CTCTModal = {};\n\n( function( window, $, app ) {\n\n\t/**\n\t * @constructor\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tapp.init = () => {\n\t\tapp.cache();\n\t\tapp.bindEvents();\n\t};\n\n\t/**\n\t * Cache DOM elements.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tapp.cache = () => {\n\t\tapp.$c = {\n\t\t\twindow: $( window ),\n\t\t\tmodalSelector: $( '.ctct-modal' ),\n\t\t\tmodalClose: $( '.ctct-modal-close' ),\n\t\t\ttextareaModal: $( '#ctct-custom-textarea-modal' ),\n\t\t\ttextareaLink: $( '#ctct-open-textarea-info' ),\n\t\t\tdeleteLogLink: $( '#deletelog' )\n\t\t};\n\t};\n\n\t/**\n\t * Attach callbacks to events.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tapp.bindEvents = () => {\n\n\t\tapp.$c.modalClose.on( 'click', () => {\n\n\t\t\tapp.$c.modalSelector.removeClass( 'ctct-modal-open' );\n\n\t\t\tif ( app.$c.modalSelector.hasClass( 'ctct-custom-textarea-modal' ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t$.ajax( {\n\t\t\t\ttype: 'post',\n\t\t\t\tdataType: 'json',\n\t\t\t\turl: window.ajaxurl,\n\t\t\t\tdata: {\n\t\t\t\t\taction: 'ctct_dismiss_first_modal',\n\t\t\t\t\t'ctct_is_dismissed': 'true'\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\n\t\tapp.$c.textareaLink.on( 'click', () => {\n\t\t\tapp.$c.textareaModal.addClass( 'ctct-modal-open' );\n\t\t} );\n\n\t\tapp.$c.deleteLogLink.on( 'click', ( event ) => {\n\t\t\tevent.preventDefault();\n\n\t\t\t// Get the link that was clicked on so we can redirect to it if the user confirms.\n\t\t\tvar deleteLogLink = $( event.currentTarget ).attr( 'href' );\n\n\t\t\t$( '#confirmdelete' ).dialog( {\n\t\t\t\tresizable: false,\n\t\t\t\theight: 'auto',\n\t\t\t\twidth: 400,\n\t\t\t\tmodal: true,\n\t\t\t\tbuttons: {\n\t\t\t\t\t'Yes': () => {\n\n\t\t\t\t\t\t// If the user confirms the action, redirect them to the deletion page.\n\t\t\t\t\t\twindow.location.replace( deleteLogLink );\n\t\t\t\t\t},\n\t\t\t\t\t'Cancel': () => {\n\t\t\t\t\t\t$( '#confirmdelete' ).closest( '.ui-dialog-content' ).dialog( 'close' );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t};\n\n\t$( app.init );\n\n} ( window, jQuery, window.CTCTModal ) );\n","window.CTCTNewsletter = {};\n\n( function( window, $, app ) {\n\n\t/**\n\t * @constructor\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tapp.init = () => {\n\t\tapp.submitNewsletter();\n\t};\n\n\t/**\n\t * Handle newsletter signups on the \"Connect\" and \"About\" pages.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tapp.submitNewsletter = () => {\n\n\t\t// Connect page.\n\t\t$( '.ctct-body #subscribe' ).on( 'submit', ( event ) => {\n\t\t\tevent.preventDefault();\n\n\t\t\tvar $ctctNewsWrapper = $( '#subscribe .ctct-call-to-action' );\n\t\t\tvar ctctNewsForm = $( '.ctct-body #subscribe' )[0];\n\t\t\tvar ctctEmailField = $( '.ctct-call-to-action input[type=\"text\"]' )[0];\n\t\t\tvar subscribeEndpoint = event.target.action;\n\n\t\t\tif ( true === ctctEmailField.validity.valid ) {\n\t\t\t\t$( '<iframe>', {\n\t\t\t\t\t'src': subscribeEndpoint + '?' + $( ctctNewsForm ).serialize(),\n\t\t\t\t\t'height': 0,\n\t\t\t\t\t'width': 0,\n\t\t\t\t\t'style': 'display: none;'\n\t\t\t\t} ).appendTo( $ctctNewsWrapper );\n\n\t\t\t\t$( '#subbutton' ).val( 'Thanks for signing up' ).css( { 'background-color': 'rgb(1, 128, 0)', 'color': 'rgb(255,255,255)' } );\n\t\t\t\t$( '#subscribe .ctct-call-to-action-text' ).css( { 'width': '70%' } );\n\t\t\t} else {\n\t\t\t\t$( '#subbutton' ).val( 'Error occurred' );\n\t\t\t}\n\t\t} );\n\n\t\t// About page.\n\t\t$( '.ctct-section #subscribe' ).on( 'submit', ( event ) => {\n\t\t\tevent.preventDefault();\n\n\t\t\tvar $ctctNewsWrapper = $( '.section-marketing-tips' );\n\t\t\tvar ctctNewsForm = $( '.ctct-section #subscribe' )[0];\n\t\t\tvar ctctEmailField = $( '.ctct-section #subscribe input[type=\"text\"]' )[0];\n\t\t\tvar subscribeEndpoint = event.target.action;\n\n\t\t\tif ( true === ctctEmailField.validity.valid ) {\n\t\t\t\t$( '<iframe>', {\n\t\t\t\t\t'src': subscribeEndpoint + '?' + $( ctctNewsForm ).serialize(),\n\t\t\t\t\t'height': 0,\n\t\t\t\t\t'width': 0,\n\t\t\t\t\t'style': 'display: none;'\n\t\t\t\t} ).appendTo( $ctctNewsWrapper );\n\t\t\t\t$( '#subbutton' ).val( 'Thanks for signing up' ).css( { 'background-color': 'rgb(1, 128, 0)' } );\n\t\t\t} else {\n\t\t\t\t$( '#subbutton' ).val( 'Error occurred' );\n\t\t\t}\n\t\t} );\n\t};\n\n\t$( app.init );\n\n} ( window, jQuery, window.CTCTNewsletter ) );\n","window.CTCT_OptIns = {};\n\n( function( window, $, app ) {\n\n\t/**\n\t * @constructor\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tapp.init = () => {\n\t\tapp.cache();\n\t\tapp.bindEvents();\n\t};\n\n\t/**\n\t * Cache DOM elements.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tapp.cache = () => {\n\t\tapp.$c = {\n\t\t\toptinNoConn: $( '#cmb2-metabox-ctct_1_optin_metabox #_ctct_opt_in_not_connected' ),\n\t\t\tlist: $( '#cmb2-metabox-ctct_0_list_metabox [name=\"_ctct_list[]\"]' ),\n\t\t\ttitle: $( '#cmb2-metabox-ctct_1_optin_metabox .cmb2-id-email-optin-title' ),\n\t\t\toptin: $( '#cmb2-metabox-ctct_1_optin_metabox .cmb2-id--ctct-opt-in' ),\n\t\t\tinstruct: $( '#cmb2-metabox-ctct_1_optin_metabox .cmb2-id--ctct-opt-in-instructions' )\n\t\t};\n\t};\n\n\t/**\n\t * Attach callbacks to events.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tapp.bindEvents = () => {\n\n\t\t// Only fire show/hide if we have the normal checkbox.\n\t\tif ( app.$c.optinNoConn.length ) {\n\n\t\t\t// Fire once to get our loaded state set up.\n\t\t\tapp.toggleNoConnectionFields();\n\n\t\t\t// Bind to fire when needed.\n\t\t\tapp.$c.optinNoConn.change( () => {\n\t\t\t\tapp.toggleNoConnectionFields();\n\t\t\t} );\n\t\t}\n\n\t\t// Only fire show/hide if we have the normal checkbox.\n\t\tif ( app.$c.list.length ) {\n\n\t\t\t// Fire once to get our loaded state set up.\n\t\t\tapp.toggleConnectionFields();\n\n\t\t\t// Bind to fire when needed.\n\t\t\tapp.$c.list.change( () => {\n\t\t\t\tapp.toggleConnectionFields();\n\t\t\t} );\n\t\t}\n\t};\n\n\t/**\n\t * Toggle unnecessary, unconnected optin fields if we're not showing the opt-in.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tapp.toggleNoConnectionFields = () => {\n\n\t\tif ( app.$c.optinNoConn.prop( 'checked' ) ) {\n\t\t\tapp.$c.instruct.slideDown();\n\t\t} else {\n\t\t\tapp.$c.instruct.slideUp();\n\t\t}\n\t};\n\n\t/**\n\t * Toggle unnecessary, *connected* optin fields if we're not showing the opt-in.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tapp.toggleConnectionFields = () => {\n\n\t\t// If checked, show them, else hide it.\n\t\tif ( '' !== app.$c.list.val() ) {\n\t\t\tapp.$c.title.slideDown();\n\t\t\tapp.$c.optin.slideDown();\n\t\t\tapp.$c.instruct.slideDown();\n\t\t} else {\n\t\t\tapp.$c.title.slideUp();\n\t\t\tapp.$c.optin.slideUp();\n\t\t\tapp.$c.instruct.slideUp();\n\t\t}\n\t};\n\n\t$( app.init );\n\n} ( window, jQuery, window.CTCT_OptIns ) );\n","window.CTCTClipboard = {};\n\n( function( window, $, app ) {\n\n\t/**\n\t * @constructor\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\t app.init = () => {\n\t\tapp.cache();\n\t\tapp.bindEvents();\n\t};\n\n\t/**\n\t * Cache DOM elements.\n\t *\n\t * @author Constant Contact\n\t * @since 1.11.0\n\t */\n\t app.cache = () => {\n\t\tapp.$c = {\n\t\t\twindow: $( window ),\n\t\t\tcopyshortcode: $( '.ctct-shortcode-wrap' )\n\t\t};\n\t};\n\n\t/**\n\t * Copy to clipboard click event.\n\t *\n\t * @param {object} e The clicked element.\n\t * @param {HTMLElement} input The input element.\n\t * @author Constant Contact\n\t * @since 1.11.0\n\t */\n\tapp.copyClick = (button, input) => {\n\n\t\tif(!button || !input){\n\t\t\treturn;\n\t\t}\n\n\t\t// Select the input.\n\t\tinput.select();\n\t\tinput.setSelectionRange(0, 99999); // For mobile devices.\n\t \n\t\t// Copy the text inside the text field.\n\t\tdocument.execCommand(\"copy\");\n\t\tvar reset = button.innerHTML;\n\t\tbutton.innerHTML = button.dataset.copied;\n\n\t\t// Reset button text.\n\t\tsetTimeout(function(){\n\t\t\tbutton.innerHTML = reset;\n\t\t}, 3000);\n\n\t}\n\n\t/**\n\t * Attach callbacks to events.\n\t *\n\t * @author Constant Contact\n\t * @since 1.11.0\n\t */\n\t app.bindEvents = () => {\n\n\t\t// Add click event for copy buttons.\n\t\tif(app.$c.copyshortcode){\n\t\t\tapp.$c.copyshortcode.each(function(index, element) {\n\t\t\t\tvar input = element.querySelector('input');\n\t\t\t\tvar button = element.querySelector('button');\n\t\t\t\tif(input && button){\n\t\t\t\t\tbutton.addEventListener('click', function( e ){\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tapp.copyClick( this, input);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\t};\n\n\tapp.init();\n\n} ( window, jQuery, window.CTCTClipboard ) );\n\n"],"sourceRoot":""}
assets/js/ctct-plugin-admin/clipboard.js ADDED
@@ -0,0 +1,85 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ window.CTCTClipboard = {};
2
+
3
+ ( function( window, $, app ) {
4
+
5
+ /**
6
+ * @constructor
7
+ *
8
+ * @author Constant Contact
9
+ * @since 1.0.0
10
+ */
11
+ app.init = () => {
12
+ app.cache();
13
+ app.bindEvents();
14
+ };
15
+
16
+ /**
17
+ * Cache DOM elements.
18
+ *
19
+ * @author Constant Contact
20
+ * @since 1.11.0
21
+ */
22
+ app.cache = () => {
23
+ app.$c = {
24
+ window: $( window ),
25
+ copyshortcode: $( '.ctct-shortcode-wrap' )
26
+ };
27
+ };
28
+
29
+ /**
30
+ * Copy to clipboard click event.
31
+ *
32
+ * @param {object} e The clicked element.
33
+ * @param {HTMLElement} input The input element.
34
+ * @author Constant Contact
35
+ * @since 1.11.0
36
+ */
37
+ app.copyClick = (button, input) => {
38
+
39
+ if(!button || !input){
40
+ return;
41
+ }
42
+
43
+ // Select the input.
44
+ input.select();
45
+ input.setSelectionRange(0, 99999); // For mobile devices.
46
+
47
+ // Copy the text inside the text field.
48
+ document.execCommand("copy");
49
+ var reset = button.innerHTML;
50
+ button.innerHTML = button.dataset.copied;
51
+
52
+ // Reset button text.
53
+ setTimeout(function(){
54
+ button.innerHTML = reset;
55
+ }, 3000);
56
+
57
+ }
58
+
59
+ /**
60
+ * Attach callbacks to events.
61
+ *
62
+ * @author Constant Contact
63
+ * @since 1.11.0
64
+ */
65
+ app.bindEvents = () => {
66
+
67
+ // Add click event for copy buttons.
68
+ if(app.$c.copyshortcode){
69
+ app.$c.copyshortcode.each(function(index, element) {
70
+ var input = element.querySelector('input');
71
+ var button = element.querySelector('button');
72
+ if(input && button){
73
+ button.addEventListener('click', function( e ){
74
+ e.preventDefault();
75
+ app.copyClick( this, input);
76
+ });
77
+ }
78
+ })
79
+ }
80
+ };
81
+
82
+ app.init();
83
+
84
+ } ( window, jQuery, window.CTCTClipboard ) );
85
+
assets/js/ctct-plugin-admin/index.js CHANGED
@@ -3,4 +3,5 @@ import './builder';
3
  import './forms';
4
  import './modal';
5
  import './newsletter';
6
- import './optins';
 
3
  import './forms';
4
  import './modal';
5
  import './newsletter';
6
+ import './optins';;
7
+ import './clipboard';
assets/js/ctct-plugin-frontend.min.js CHANGED
@@ -1,2 +1,2 @@
1
- !function(t){var e={};function n(o){if(e[o])return e[o].exports;var c=e[o]={i:o,l:!1,exports:{}};return t[o].call(c.exports,c,c.exports,n),c.l=!0,c.exports}n.m=t,n.c=e,n.d=function(t,e,o){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:o})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var c in t)n.d(o,c,function(e){return t[e]}.bind(null,c));return o},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="https://testing.test/wp-content/plugins/constant-contact-forms/assets/js/",n(n.s=9)}([,,,,,,,,,function(t,e,n){t.exports=n(10)},function(t,e,n){"use strict";n.r(e);n(11),n(12)},function(t,e){!function(t,e){function n(){return e(".ctct-submitted").attr("disabled",null)}e(document).ready((function(){e(".ctct-submitted").on("click",(function(){setTimeout((function(){e(".ctct-submitted").attr("disabled","disabled"),setTimeout(n,3e3)}),100)}))}))}(window,jQuery)},function(t,e){window.CTCTSupport={},function(t,e,n){var o=this;n.init=function(){n.cache(),n.bindEvents(),n.removePlaceholder()},n.removePlaceholder=function(){e(".ctct-form-field input, textarea").focus((function(){e(o).data("placeholder",e(o).attr("placeholder")).attr("placeholder","")})).blur((function(){e(o).attr("placeholder",e(o).data("placeholder"))}))},n.cache=function(){n.$c={$forms:[]},e(".ctct-form-wrapper").each((function(t,o){n.$c.$forms.push(e(o).find("form"))})),e.each(n.$c.$forms,(function(t,o){var c=e(o);n.$c.$forms[t].$honeypot=c.find(".ctct_usage_field"),n.$c.$forms[t].$submitButton=c.find("input[type=submit]"),n.$c.$forms[t].$recaptcha=c.find(".g-recaptcha")})),n.timeout=null},n.setAllInputsValid=function(){e(n.$c.$form+" .ctct-invalid").removeClass("ctct-invalid")},n.processError=function(t){void 0!==t.id&&e("#"+t.id).addClass("ctct-invalid")},n.checkHoneypot=function(t,e,n){0<e.val().length?n.attr("disabled","disabled"):n.attr("disabled",!1)},n.validateSubmission=function(t){return"on"===t.attr("data-doajax")&&(e.each(t.find("[required]"),(function(t,e){if(!1===e.checkValidity())return!1})),!0)},n.showMessage=function(t,n){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",c=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"log",i=t.parents(".ctct-form-wrapper");i.find("p.ctct-message").remove();var r=e("<p />",{class:"ctct-message "+o,text:n,role:c}).prepend(e("<button />",{class:"button button-secondary ctct-dismiss ctct-dismiss-ajax-notice",html:"&#10005;","aria-label":"Dismiss Notification"}));r.insertBefore(t).fadeIn(200),i.find(".ctct-dismiss-ajax-notice").on("click",(function(){e(this).parents(".ctct-message").remove()}))},n.submitForm=function(o){o.find(".ctct-submitted").prop("disabled",!0);var c={action:"ctct_process_form",data:o.serialize()};e.post(t.ajaxurl,c,(function(t){return o.find(".ctct-submitted").prop("disabled",!1),void 0!==t.status&&("success"!==t.status?(void 0!==t.errors?(n.setAllInputsValid(),t.errors.forEach(n.processError)):n.showMessage(o,t.message,"ctct-error","alert"),!1):(n.showMessage(o,t.message,"ctct-success","status"),void o[0].reset()))}))},n.handleSubmission=function(t,e){if(!n.validateSubmission(e))return!1;t.preventDefault(),clearTimeout(n.timeout),n.timeout=setTimeout(n.submitForm,500,e)},n.bindEvents=function(){e.each(n.$c.$forms,(function(t,e){n.$c.$forms[t].on("click","input[type=submit]",(function(e){n.handleSubmission(e,n.$c.$forms[t])})),n.$c.$forms[t].$honeypot.on("change keyup",(function(e){n.checkHoneypot(e,n.$c.$forms[t].$honeypot,n.$c.$forms[t].$submitButton)})),0<n.$c.$forms[t].$recaptcha.length&&n.$c.$forms[t].$submitButton.attr("disabled","disabled")}))},e(n.init)}(window,jQuery,window.CTCTSupport)}]);
2
  //# sourceMappingURL=ctct-plugin-frontend.min.js.map
1
+ !function(t){var e={};function n(o){if(e[o])return e[o].exports;var c=e[o]={i:o,l:!1,exports:{}};return t[o].call(c.exports,c,c.exports,n),c.l=!0,c.exports}n.m=t,n.c=e,n.d=function(t,e,o){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:o})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var c in t)n.d(o,c,function(e){return t[e]}.bind(null,c));return o},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="https://testing.test/wp-content/plugins/constant-contact-forms/assets/js/",n(n.s=10)}([,,,,,,,,,,function(t,e,n){t.exports=n(11)},function(t,e,n){"use strict";n.r(e);n(12),n(13)},function(t,e){!function(t,e){function n(){return e(".ctct-submitted").attr("disabled",null)}e(document).ready((function(){e(".ctct-submitted").on("click",(function(){setTimeout((function(){e(".ctct-submitted").attr("disabled","disabled"),setTimeout(n,3e3)}),100)}))}))}(window,jQuery)},function(t,e){window.CTCTSupport={},function(t,e,n){var o=this;n.init=function(){n.cache(),n.bindEvents(),n.removePlaceholder()},n.removePlaceholder=function(){e(".ctct-form-field input, textarea").focus((function(){e(o).data("placeholder",e(o).attr("placeholder")).attr("placeholder","")})).blur((function(){e(o).attr("placeholder",e(o).data("placeholder"))}))},n.cache=function(){n.$c={$forms:[]},e(".ctct-form-wrapper").each((function(t,o){n.$c.$forms.push(e(o).find("form"))})),e.each(n.$c.$forms,(function(t,o){var c=e(o);n.$c.$forms[t].$honeypot=c.find(".ctct_usage_field"),n.$c.$forms[t].$submitButton=c.find("input[type=submit]"),n.$c.$forms[t].$recaptcha=c.find(".g-recaptcha")})),n.timeout=null},n.setAllInputsValid=function(){e(n.$c.$form+" .ctct-invalid").removeClass("ctct-invalid")},n.processError=function(t){void 0!==t.id&&e("#"+t.id).addClass("ctct-invalid")},n.checkHoneypot=function(t,e,n){0<e.val().length?n.attr("disabled","disabled"):n.attr("disabled",!1)},n.validateSubmission=function(t){return"on"===t.attr("data-doajax")&&(e.each(t.find("[required]"),(function(t,e){if(!1===e.checkValidity())return!1})),!0)},n.showMessage=function(t,n){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",c=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"log",i=t.parents(".ctct-form-wrapper");i.find("p.ctct-message").remove();var r=e("<p />",{class:"ctct-message "+o,text:n,role:c}).prepend(e("<button />",{class:"button button-secondary ctct-dismiss ctct-dismiss-ajax-notice",html:"&#10005;","aria-label":"Dismiss Notification"}));r.insertBefore(t).fadeIn(200),i.find(".ctct-dismiss-ajax-notice").on("click",(function(){e(this).parents(".ctct-message").remove()}))},n.submitForm=function(o){o.find(".ctct-submitted").prop("disabled",!0);var c={action:"ctct_process_form",data:o.serialize()};e.post(t.ajaxurl,c,(function(t){return o.find(".ctct-submitted").prop("disabled",!1),void 0!==t.status&&("success"!==t.status?(void 0!==t.errors?(n.setAllInputsValid(),t.errors.forEach(n.processError)):n.showMessage(o,t.message,"ctct-error","alert"),!1):(n.showMessage(o,t.message,"ctct-success","status"),void o[0].reset()))}))},n.handleSubmission=function(t,e){if(!n.validateSubmission(e))return!1;t.preventDefault(),clearTimeout(n.timeout),n.timeout=setTimeout(n.submitForm,500,e)},n.bindEvents=function(){e.each(n.$c.$forms,(function(t,e){n.$c.$forms[t].on("click","input[type=submit]",(function(e){n.handleSubmission(e,n.$c.$forms[t])})),n.$c.$forms[t].$honeypot.on("change keyup",(function(e){n.checkHoneypot(e,n.$c.$forms[t].$honeypot,n.$c.$forms[t].$submitButton)})),0<n.$c.$forms[t].$recaptcha.length&&n.$c.$forms[t].$submitButton.attr("disabled","disabled")}))},e(n.init)}(window,jQuery,window.CTCTSupport)}]);
2
  //# sourceMappingURL=ctct-plugin-frontend.min.js.map
assets/js/ctct-plugin-frontend.min.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./assets/js/ctct-plugin-frontend/index.js","webpack:///./assets/js/ctct-plugin-frontend/util.js","webpack:///./assets/js/ctct-plugin-frontend/validation.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","global","$","enableSendButton","attr","document","ready","on","setTimeout","window","jQuery","CTCTSupport","app","init","cache","bindEvents","removePlaceholder","focus","data","blur","$c","$forms","each","formWrapper","push","find","form","$form","$honeypot","$submitButton","$recaptcha","timeout","setAllInputsValid","removeClass","processError","error","id","addClass","checkHoneypot","e","$honeyPot","val","length","validateSubmission","field","checkValidity","showMessage","message","classes","role","$wrapper","parents","remove","$p","prepend","insertBefore","fadeIn","this","submitForm","prop","ajaxData","serialize","post","ajaxurl","response","status","errors","forEach","reset","handleSubmission","preventDefault","clearTimeout"],"mappings":"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","file":"ctct-plugin-frontend.min.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"https://testing.test/wp-content/plugins/constant-contact-forms/assets/js/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 9);\n","import './util';\nimport './validation';\n","/**\n * General-purpose utility stuff for CC plugin.\n */\n( function( global, $ ) {\n\n\t/**\n\t * Temporarily prevent the submit button from being clicked.\n\t */\n\t$( document ).ready( () => {\n\n\t\t$( '.ctct-submitted' ).on( 'click', () => {\n\t\t\tsetTimeout( () => {\n\t\t\t\tdisableSendButton();\n\t\t\t\tsetTimeout( enableSendButton, 3000 );\n\t\t\t}, 100 );\n\t\t} );\n\t} );\n\n\t/**\n\t * Disable form submit button.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t *\n\t * @return {mixed} jQuery if attribute is set, undefined if not.\n\t */\n\tfunction disableSendButton() {\n\t\treturn $( '.ctct-submitted' ).attr( 'disabled', 'disabled' );\n\t}\n\n\t/**\n\t * Re-enable form submit buttons.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t *\n\t * @return {mixed} jQuery if attribute is set, undefined if not.\n\t */\n\tfunction enableSendButton() {\n\t\treturn $( '.ctct-submitted' ).attr( 'disabled', null );\n\t}\n\n} ( window, jQuery ) );\n","/**\n * Front-end form validation.\n *\n * @since 1.0.0\n */\n\n window.CTCTSupport = {};\n\n( function( window, $, app ) {\n\n\t/**\n\t * @constructor\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tapp.init = () => {\n\t\tapp.cache();\n\t\tapp.bindEvents();\n\t\tapp.removePlaceholder();\n\t};\n\n\t/**\n\t * Remove placeholder text values.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tapp.removePlaceholder = () => {\n\t\t$( '.ctct-form-field input, textarea' ).focus( () => {\n\t\t\t$( this ).data( 'placeholder', $( this ).attr( 'placeholder' ) ).attr( 'placeholder', '' );\n\t\t} ).blur( () => {\n\t\t\t$( this ).attr( 'placeholder', $( this ).data( 'placeholder' ) );\n\t\t} );\n\t};\n\n\t/**\n\t * Cache DOM elements.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tapp.cache = () => {\n\n\t\tapp.$c = {\n\t\t\t$forms: []\n\t\t};\n\n\t\t// Cache each form on the page.\n\t\t$( '.ctct-form-wrapper' ).each( function( i, formWrapper ) {\n\t\t\tapp.$c.$forms.push( $( formWrapper ).find( 'form' ) );\n\t\t} );\n\n\t\t// For each form, cache its common elements.\n\t\t$.each( app.$c.$forms, function( i, form ) {\n\n\t\t\tvar $form = $( form );\n\n\t\t\tapp.$c.$forms[ i ].$honeypot = $form.find( '.ctct_usage_field' );\n\t\t\tapp.$c.$forms[ i ].$submitButton = $form.find( 'input[type=submit]' );\n\t\t\tapp.$c.$forms[ i ].$recaptcha = $form.find( '.g-recaptcha' );\n\t\t} );\n\n\t\tapp.timeout = null;\n\t};\n\n\t/**\n\t * Remove the ctct-invalid class from elements that have it.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tapp.setAllInputsValid = () => {\n\t\t$( app.$c.$form + ' .ctct-invalid' ).removeClass( 'ctct-invalid' );\n\t};\n\n\t/**\n\t * Adds .ctct-invalid HTML class to inputs whose values are invalid.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t *\n\t * @param {object} error AJAX response error object.\n\t */\n\tapp.processError = ( error ) => {\n\n\t\t// If we have an id property set.\n\t\tif ( 'undefined' !== typeof( error.id ) ) {\n\t\t\t$( '#' + error.id ).addClass( 'ctct-invalid' );\n\t\t}\n\t};\n\n\t/**\n\t * Check the value of the hidden honeypot field; disable form submission button if anything in it.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t *\n\t * @param {object} e The change or keyup event triggering this callback.\n\t * @param {object} $honeyPot The jQuery object for the actual input field being checked.\n\t * @param {object} $submitButton The jQuery object for the submit button in the same form as the honeypot field.\n\t */\n\tapp.checkHoneypot = ( e, $honeyPot, $submitButton ) => {\n\n\t\t// If there is text in the honeypot, disable the submit button\n\t\tif ( 0 < $honeyPot.val().length ) {\n\t\t\t$submitButton.attr( 'disabled', 'disabled' );\n\t\t} else {\n\t\t\t$submitButton.attr( 'disabled', false );\n\t\t}\n\t};\n\n\t/**\n\t * Ensures that we should use AJAX to process the specified form, and that all required fields are not empty.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t *\n\t * @param {object} $form jQuery object for the form being validated.\n\t * @return {boolean} False if AJAX processing is disabled for this form or if a required field is empty.\n\t */\n\tapp.validateSubmission = ( $form ) => {\n\n\t\tif ( 'on' !== $form.attr( 'data-doajax' ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Ensure all required fields in this form are valid.\n\t\t$.each( $form.find( '[required]' ), function( i, field ) {\n\n\t\t\tif ( false === field.checkValidity() ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} );\n\n\t\treturn true;\n\t};\n\n\t/**\n\t * Prepends form with a message that fades out in 5 seconds.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t *\n\t * @param {object} $form jQuery object for the form a message is being displayed for.\n\t * @param {string} message The message content.\n\t * @param {string} classes Optional. HTML classes to add to the message wrapper.\n\t */\n\tapp.showMessage = ( $form, message, classes = '', role = 'log' ) => {\n\n\t\tconst $wrapper = $form.parents( '.ctct-form-wrapper' );\n\n\t\t$wrapper.find( 'p.ctct-message' ).remove();\n\n\t\tvar $p = $( '<p />', {\n\t\t\t'class': 'ctct-message ' + classes,\n\t\t\t'text': message,\n\t\t\t'role': role\n\t\t} ).prepend( $( '<button />', {\n\t\t\t'class': 'button button-secondary ctct-dismiss ctct-dismiss-ajax-notice',\n\t\t\t'html': '&#10005;',\n\t\t\t'aria-label': 'Dismiss Notification'\n\t\t} ) );\n\n\t\t$p.insertBefore( $form ).fadeIn( 200 );\n\n\t\t$wrapper.find( '.ctct-dismiss-ajax-notice' ).on( 'click', function() {\n\t\t\t$( this ).parents( '.ctct-message' ).remove();\n\t\t} );\n\t};\n\n\t/**\n\t * Submits the actual form via AJAX.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t *\n\t * @param {object} $form jQuery object for the form being submitted.\n\t */\n\tapp.submitForm = ( $form ) => {\n\n\t\t$form.find( '.ctct-submitted' ).prop( 'disabled', true );\n\n\t\tvar ajaxData = {\n\t\t\t'action': 'ctct_process_form',\n\t\t\t'data': $form.serialize()\n\t\t};\n\n\t\t$.post( window.ajaxurl, ajaxData, ( response ) => {\n\n\t\t\t$form.find( '.ctct-submitted' ).prop( 'disabled', false );\n\n\t\t\tif ( 'undefined' === typeof( response.status ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Here we'll want to disable the submit button and add some error classes.\n\t\t\tif ( 'success' !== response.status ) {\n\n\t\t\t\tif ( 'undefined' !== typeof( response.errors ) ) {\n\t\t\t\t\tapp.setAllInputsValid();\n\t\t\t\t\tresponse.errors.forEach( app.processError );\n\t\t\t\t} else {\n\t\t\t\t\tapp.showMessage( $form, response.message, 'ctct-error', 'alert' );\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// If we're here, the submission was a success; show message and reset form fields.\n\t\t\tapp.showMessage( $form, response.message, 'ctct-success', 'status' );\n\t\t\t$form[0].reset();\n\t\t} );\n\t};\n\n\t/**\n\t * Handle the form submission.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t *\n\t * @param {object} e The submit event.\n\t * @param {object} $form jQuery object for the current form being handled.\n\t * @return {boolean} False if unable to validate the form.\n\t */\n\tapp.handleSubmission = ( e, $form ) => {\n\n\t\tif ( ! app.validateSubmission( $form ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\te.preventDefault();\n\n\t\tclearTimeout( app.timeout );\n\n\t\tapp.timeout = setTimeout( app.submitForm, 500, $form );\n\t};\n\n\t/**\n\t * Set up event bindings and callbacks.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tapp.bindEvents = () => {\n\n\t\t// eslint-disable-next-line no-unused-vars\n\t\t$.each( app.$c.$forms, function( i, form ) {\n\n\t\t\t// Attach submission handler to each form's Submit button.\n\t\t\tapp.$c.$forms[ i ].on( 'click', 'input[type=submit]', ( e ) => {\n\t\t\t\tapp.handleSubmission( e, app.$c.$forms[ i ] );\n\t\t\t} );\n\n\t\t\t// Ensure each form's honeypot is checked.\n\t\t\tapp.$c.$forms[ i ].$honeypot.on( 'change keyup', ( e ) => {\n\n\t\t\t\tapp.checkHoneypot(\n\t\t\t\t\te,\n\t\t\t\t\tapp.$c.$forms[ i ].$honeypot,\n\t\t\t\t\tapp.$c.$forms[ i ].$submitButton\n\t\t\t\t);\n\t\t\t} );\n\n\t\t\t// Disable the submit button by default until the captcha is passed (if captcha exists).\n\t\t\tif ( 0 < app.$c.$forms[ i ].$recaptcha.length ) {\n\t\t\t\tapp.$c.$forms[ i ].$submitButton.attr( 'disabled', 'disabled' );\n\t\t\t}\n\n\t\t} );\n\t};\n\n\t$( app.init );\n\n} ( window, jQuery, window.CTCTSupport ) );\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./assets/js/ctct-plugin-frontend/index.js","webpack:///./assets/js/ctct-plugin-frontend/util.js","webpack:///./assets/js/ctct-plugin-frontend/validation.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","global","$","enableSendButton","attr","document","ready","on","setTimeout","window","jQuery","CTCTSupport","app","init","cache","bindEvents","removePlaceholder","focus","data","blur","$c","$forms","each","formWrapper","push","find","form","$form","$honeypot","$submitButton","$recaptcha","timeout","setAllInputsValid","removeClass","processError","error","id","addClass","checkHoneypot","e","$honeyPot","val","length","validateSubmission","field","checkValidity","showMessage","message","classes","role","$wrapper","parents","remove","$p","prepend","insertBefore","fadeIn","this","submitForm","prop","ajaxData","serialize","post","ajaxurl","response","status","errors","forEach","reset","handleSubmission","preventDefault","clearTimeout"],"mappings":"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","file":"ctct-plugin-frontend.min.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"https://testing.test/wp-content/plugins/constant-contact-forms/assets/js/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 10);\n","import './util';\nimport './validation';\n","/**\n * General-purpose utility stuff for CC plugin.\n */\n( function( global, $ ) {\n\n\t/**\n\t * Temporarily prevent the submit button from being clicked.\n\t */\n\t$( document ).ready( () => {\n\n\t\t$( '.ctct-submitted' ).on( 'click', () => {\n\t\t\tsetTimeout( () => {\n\t\t\t\tdisableSendButton();\n\t\t\t\tsetTimeout( enableSendButton, 3000 );\n\t\t\t}, 100 );\n\t\t} );\n\t} );\n\n\t/**\n\t * Disable form submit button.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t *\n\t * @return {mixed} jQuery if attribute is set, undefined if not.\n\t */\n\tfunction disableSendButton() {\n\t\treturn $( '.ctct-submitted' ).attr( 'disabled', 'disabled' );\n\t}\n\n\t/**\n\t * Re-enable form submit buttons.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t *\n\t * @return {mixed} jQuery if attribute is set, undefined if not.\n\t */\n\tfunction enableSendButton() {\n\t\treturn $( '.ctct-submitted' ).attr( 'disabled', null );\n\t}\n\n} ( window, jQuery ) );\n","/**\n * Front-end form validation.\n *\n * @since 1.0.0\n */\n\n window.CTCTSupport = {};\n\n( function( window, $, app ) {\n\n\t/**\n\t * @constructor\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tapp.init = () => {\n\t\tapp.cache();\n\t\tapp.bindEvents();\n\t\tapp.removePlaceholder();\n\t};\n\n\t/**\n\t * Remove placeholder text values.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tapp.removePlaceholder = () => {\n\t\t$( '.ctct-form-field input, textarea' ).focus( () => {\n\t\t\t$( this ).data( 'placeholder', $( this ).attr( 'placeholder' ) ).attr( 'placeholder', '' );\n\t\t} ).blur( () => {\n\t\t\t$( this ).attr( 'placeholder', $( this ).data( 'placeholder' ) );\n\t\t} );\n\t};\n\n\t/**\n\t * Cache DOM elements.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tapp.cache = () => {\n\n\t\tapp.$c = {\n\t\t\t$forms: []\n\t\t};\n\n\t\t// Cache each form on the page.\n\t\t$( '.ctct-form-wrapper' ).each( function( i, formWrapper ) {\n\t\t\tapp.$c.$forms.push( $( formWrapper ).find( 'form' ) );\n\t\t} );\n\n\t\t// For each form, cache its common elements.\n\t\t$.each( app.$c.$forms, function( i, form ) {\n\n\t\t\tvar $form = $( form );\n\n\t\t\tapp.$c.$forms[ i ].$honeypot = $form.find( '.ctct_usage_field' );\n\t\t\tapp.$c.$forms[ i ].$submitButton = $form.find( 'input[type=submit]' );\n\t\t\tapp.$c.$forms[ i ].$recaptcha = $form.find( '.g-recaptcha' );\n\t\t} );\n\n\t\tapp.timeout = null;\n\t};\n\n\t/**\n\t * Remove the ctct-invalid class from elements that have it.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tapp.setAllInputsValid = () => {\n\t\t$( app.$c.$form + ' .ctct-invalid' ).removeClass( 'ctct-invalid' );\n\t};\n\n\t/**\n\t * Adds .ctct-invalid HTML class to inputs whose values are invalid.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t *\n\t * @param {object} error AJAX response error object.\n\t */\n\tapp.processError = ( error ) => {\n\n\t\t// If we have an id property set.\n\t\tif ( 'undefined' !== typeof( error.id ) ) {\n\t\t\t$( '#' + error.id ).addClass( 'ctct-invalid' );\n\t\t}\n\t};\n\n\t/**\n\t * Check the value of the hidden honeypot field; disable form submission button if anything in it.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t *\n\t * @param {object} e The change or keyup event triggering this callback.\n\t * @param {object} $honeyPot The jQuery object for the actual input field being checked.\n\t * @param {object} $submitButton The jQuery object for the submit button in the same form as the honeypot field.\n\t */\n\tapp.checkHoneypot = ( e, $honeyPot, $submitButton ) => {\n\n\t\t// If there is text in the honeypot, disable the submit button\n\t\tif ( 0 < $honeyPot.val().length ) {\n\t\t\t$submitButton.attr( 'disabled', 'disabled' );\n\t\t} else {\n\t\t\t$submitButton.attr( 'disabled', false );\n\t\t}\n\t};\n\n\t/**\n\t * Ensures that we should use AJAX to process the specified form, and that all required fields are not empty.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t *\n\t * @param {object} $form jQuery object for the form being validated.\n\t * @return {boolean} False if AJAX processing is disabled for this form or if a required field is empty.\n\t */\n\tapp.validateSubmission = ( $form ) => {\n\n\t\tif ( 'on' !== $form.attr( 'data-doajax' ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Ensure all required fields in this form are valid.\n\t\t$.each( $form.find( '[required]' ), function( i, field ) {\n\n\t\t\tif ( false === field.checkValidity() ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} );\n\n\t\treturn true;\n\t};\n\n\t/**\n\t * Prepends form with a message that fades out in 5 seconds.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t *\n\t * @param {object} $form jQuery object for the form a message is being displayed for.\n\t * @param {string} message The message content.\n\t * @param {string} classes Optional. HTML classes to add to the message wrapper.\n\t */\n\tapp.showMessage = ( $form, message, classes = '', role = 'log' ) => {\n\n\t\tconst $wrapper = $form.parents( '.ctct-form-wrapper' );\n\n\t\t$wrapper.find( 'p.ctct-message' ).remove();\n\n\t\tvar $p = $( '<p />', {\n\t\t\t'class': 'ctct-message ' + classes,\n\t\t\t'text': message,\n\t\t\t'role': role\n\t\t} ).prepend( $( '<button />', {\n\t\t\t'class': 'button button-secondary ctct-dismiss ctct-dismiss-ajax-notice',\n\t\t\t'html': '&#10005;',\n\t\t\t'aria-label': 'Dismiss Notification'\n\t\t} ) );\n\n\t\t$p.insertBefore( $form ).fadeIn( 200 );\n\n\t\t$wrapper.find( '.ctct-dismiss-ajax-notice' ).on( 'click', function() {\n\t\t\t$( this ).parents( '.ctct-message' ).remove();\n\t\t} );\n\t};\n\n\t/**\n\t * Submits the actual form via AJAX.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t *\n\t * @param {object} $form jQuery object for the form being submitted.\n\t */\n\tapp.submitForm = ( $form ) => {\n\n\t\t$form.find( '.ctct-submitted' ).prop( 'disabled', true );\n\n\t\tvar ajaxData = {\n\t\t\t'action': 'ctct_process_form',\n\t\t\t'data': $form.serialize()\n\t\t};\n\n\t\t$.post( window.ajaxurl, ajaxData, ( response ) => {\n\n\t\t\t$form.find( '.ctct-submitted' ).prop( 'disabled', false );\n\n\t\t\tif ( 'undefined' === typeof( response.status ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Here we'll want to disable the submit button and add some error classes.\n\t\t\tif ( 'success' !== response.status ) {\n\n\t\t\t\tif ( 'undefined' !== typeof( response.errors ) ) {\n\t\t\t\t\tapp.setAllInputsValid();\n\t\t\t\t\tresponse.errors.forEach( app.processError );\n\t\t\t\t} else {\n\t\t\t\t\tapp.showMessage( $form, response.message, 'ctct-error', 'alert' );\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// If we're here, the submission was a success; show message and reset form fields.\n\t\t\tapp.showMessage( $form, response.message, 'ctct-success', 'status' );\n\t\t\t$form[0].reset();\n\t\t} );\n\t};\n\n\t/**\n\t * Handle the form submission.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t *\n\t * @param {object} e The submit event.\n\t * @param {object} $form jQuery object for the current form being handled.\n\t * @return {boolean} False if unable to validate the form.\n\t */\n\tapp.handleSubmission = ( e, $form ) => {\n\n\t\tif ( ! app.validateSubmission( $form ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\te.preventDefault();\n\n\t\tclearTimeout( app.timeout );\n\n\t\tapp.timeout = setTimeout( app.submitForm, 500, $form );\n\t};\n\n\t/**\n\t * Set up event bindings and callbacks.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tapp.bindEvents = () => {\n\n\t\t// eslint-disable-next-line no-unused-vars\n\t\t$.each( app.$c.$forms, function( i, form ) {\n\n\t\t\t// Attach submission handler to each form's Submit button.\n\t\t\tapp.$c.$forms[ i ].on( 'click', 'input[type=submit]', ( e ) => {\n\t\t\t\tapp.handleSubmission( e, app.$c.$forms[ i ] );\n\t\t\t} );\n\n\t\t\t// Ensure each form's honeypot is checked.\n\t\t\tapp.$c.$forms[ i ].$honeypot.on( 'change keyup', ( e ) => {\n\n\t\t\t\tapp.checkHoneypot(\n\t\t\t\t\te,\n\t\t\t\t\tapp.$c.$forms[ i ].$honeypot,\n\t\t\t\t\tapp.$c.$forms[ i ].$submitButton\n\t\t\t\t);\n\t\t\t} );\n\n\t\t\t// Disable the submit button by default until the captcha is passed (if captcha exists).\n\t\t\tif ( 0 < app.$c.$forms[ i ].$recaptcha.length ) {\n\t\t\t\tapp.$c.$forms[ i ].$submitButton.attr( 'disabled', 'disabled' );\n\t\t\t}\n\n\t\t} );\n\t};\n\n\t$( app.init );\n\n} ( window, jQuery, window.CTCTSupport ) );\n"],"sourceRoot":""}
assets/js/ctct-plugin-gutenberg.min.js CHANGED
@@ -1,2 +1,2 @@
1
- !function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="https://testing.test/wp-content/plugins/constant-contact-forms/assets/js/",n(n.s=8)}({19:function(t,e,n){"use strict";function r(t){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function o(t){return function(t){if(Array.isArray(t)){for(var e=0,n=new Array(t.length);e<t.length;e++)n[e]=t[e];return n}}(t)||function(t){if(Symbol.iterator in Object(t)||"[object Arguments]"===Object.prototype.toString.call(t))return Array.from(t)}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance")}()}function c(t,e,n,r,o,c,a){try{var i=t[c](a),l=i.value}catch(t){return void n(t)}i.done?e(l):Promise.resolve(l).then(r,o)}function a(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function i(t,e){return!e||"object"!==r(e)&&"function"!=typeof e?function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t):e}function l(t){return(l=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function s(t,e){return(s=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}n.r(e);var u=wp,f=u.components.SelectControl,p=u.apiFetch,m=u.element.Component,y=u.i18n.__,b=function(t){function e(t){var n;return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),(n=i(this,l(e).call(this,t))).state={forms:[{label:y("Select a form","constant-contact"),value:0}],displayTitle:[{label:y("Display Title","constant-contact"),value:!0},{label:y("Hide Title","constant-contact"),value:!1}]},n}var n,r,u,m,b;return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&s(t,e)}(e,t),n=e,(r=[{key:"componentDidMount",value:(m=regeneratorRuntime.mark((function t(){var e,n;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,p({path:"/?rest_route=/wp/v2/ctct_forms"});case 3:e=t.sent,n=e.map((function(t){return{label:t.title.rendered,value:t.id}})),this.setState({forms:[].concat(o(this.state.forms),o(n))}),t.next=11;break;case 8:t.prev=8,t.t0=t.catch(0),console.error("ERROR: ",t.t0.message);case 11:case"end":return t.stop()}}),t,this,[[0,8]])})),b=function(){var t=this,e=arguments;return new Promise((function(n,r){var o=m.apply(t,e);function a(t){c(o,n,r,a,i,"next",t)}function i(t){c(o,n,r,a,i,"throw",t)}a(void 0)}))},function(){return b.apply(this,arguments)})},{key:"render",value:function(){var t=this,e=this.props.attributes,n=e.selectedForm,r=e.displayTitle;return React.createElement("div",{className:"ctct-block-container"},React.createElement("div",{className:"ctct-block-container--header"},React.createElement("img",{alt:"Constant Contact Forms",src:"https://images.ctfassets.net/t21gix3kzulv/78gf1S3CjPrnl9rURf6Q8w/3c20fb510dd4d4653feddf86ece35e1a/ctct_ripple_logo_horizontal_white_orange.svg"})),React.createElement("div",{className:"ctct-block-container--selection"},React.createElement("small",null,y("Choose the form to display with the dropdown below.","constant-contact")),React.createElement("div",{className:"ctct-block-container--component"},React.createElement(f,{value:n,options:this.state.forms,onChange:function(e){return t.props.setAttributes({selectedForm:e})}}))),React.createElement("div",{className:"ctct-block-container--selection"},React.createElement("small",null,y("Display Form Title","constant-contact")),React.createElement("div",{className:"ctct-block-container--component"},React.createElement(f,{value:r,options:this.state.displayTitle,onChange:function(e){return t.props.setAttributes({displayTitle:e})}}))))}}])&&a(n.prototype,r),u&&a(n,u),e}(m),d=wp.i18n.__;(0,wp.blocks.registerBlockType)("constant-contact/single-contact-form",{title:d("Constant Contact: Single Form","constant-contact"),icon:"index-card",category:"layout",attributes:{selectedForm:{type:"string"},displayTitle:{type:"boolean"}},edit:b,save:function(){return null}})},8:function(t,e,n){t.exports=n(19)}});
2
  //# sourceMappingURL=ctct-plugin-gutenberg.min.js.map
1
+ !function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="https://testing.test/wp-content/plugins/constant-contact-forms/assets/js/",n(n.s=9)}({20:function(t,e,n){"use strict";function r(t){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function o(t){return function(t){if(Array.isArray(t)){for(var e=0,n=new Array(t.length);e<t.length;e++)n[e]=t[e];return n}}(t)||function(t){if(Symbol.iterator in Object(t)||"[object Arguments]"===Object.prototype.toString.call(t))return Array.from(t)}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance")}()}function c(t,e,n,r,o,c,a){try{var i=t[c](a),l=i.value}catch(t){return void n(t)}i.done?e(l):Promise.resolve(l).then(r,o)}function a(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function i(t,e){return!e||"object"!==r(e)&&"function"!=typeof e?function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t):e}function l(t){return(l=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function s(t,e){return(s=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}n.r(e);var u=wp,f=u.components.SelectControl,p=u.apiFetch,m=u.element.Component,y=u.i18n.__,b=function(t){function e(t){var n;return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),(n=i(this,l(e).call(this,t))).state={forms:[{label:y("Select a form","constant-contact"),value:0}],displayTitle:[{label:y("Display Title","constant-contact"),value:!0},{label:y("Hide Title","constant-contact"),value:!1}]},n}var n,r,u,m,b;return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&s(t,e)}(e,t),n=e,(r=[{key:"componentDidMount",value:(m=regeneratorRuntime.mark((function t(){var e,n;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,p({path:"/?rest_route=/wp/v2/ctct_forms"});case 3:e=t.sent,n=e.map((function(t){return{label:t.title.rendered,value:t.id}})),this.setState({forms:[].concat(o(this.state.forms),o(n))}),t.next=11;break;case 8:t.prev=8,t.t0=t.catch(0),console.error("ERROR: ",t.t0.message);case 11:case"end":return t.stop()}}),t,this,[[0,8]])})),b=function(){var t=this,e=arguments;return new Promise((function(n,r){var o=m.apply(t,e);function a(t){c(o,n,r,a,i,"next",t)}function i(t){c(o,n,r,a,i,"throw",t)}a(void 0)}))},function(){return b.apply(this,arguments)})},{key:"render",value:function(){var t=this,e=this.props.attributes,n=e.selectedForm,r=e.displayTitle;return React.createElement("div",{className:"ctct-block-container"},React.createElement("div",{className:"ctct-block-container--header"},React.createElement("img",{alt:"Constant Contact Forms",src:"https://images.ctfassets.net/t21gix3kzulv/78gf1S3CjPrnl9rURf6Q8w/3c20fb510dd4d4653feddf86ece35e1a/ctct_ripple_logo_horizontal_white_orange.svg"})),React.createElement("div",{className:"ctct-block-container--selection"},React.createElement("small",null,y("Display Form Title","constant-contact")),React.createElement("div",{className:"ctct-block-container--component"},React.createElement(f,{value:r,options:this.state.displayTitle,onChange:function(e){return t.props.setAttributes({displayTitle:e})}}))),React.createElement("div",{className:"ctct-block-container--selection"},React.createElement("small",null,y("Choose the form to display with the dropdown below.","constant-contact")),React.createElement("div",{className:"ctct-block-container--component"},React.createElement(f,{value:n,options:this.state.forms,onChange:function(e){return t.props.setAttributes({selectedForm:e})}}))))}}])&&a(n.prototype,r),u&&a(n,u),e}(m),d=wp.i18n.__;(0,wp.blocks.registerBlockType)("constant-contact/single-contact-form",{title:d("Constant Contact: Single Form","constant-contact"),icon:"index-card",category:"layout",attributes:{selectedForm:{type:"string"},displayTitle:{type:"boolean"}},edit:b,save:function(){return null}})},9:function(t,e,n){t.exports=n(20)}});
2
  //# sourceMappingURL=ctct-plugin-gutenberg.min.js.map
assets/js/ctct-plugin-gutenberg.min.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./assets/js/ctct-plugin-gutenberg/components/single-form-select.js","webpack:///./assets/js/ctct-plugin-gutenberg/blocks/contact-form.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","wp","SelectControl","components","apiFetch","Component","element","__","i18n","SingleFormSelect","props","state","forms","label","displayTitle","path","results","map","result","title","rendered","id","this","setState","console","error","message","attributes","selectedForm","className","alt","src","options","onChange","setAttributes","registerBlockType","blocks","icon","category","type","edit","save"],"mappings":"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","file":"ctct-plugin-gutenberg.min.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"https://testing.test/wp-content/plugins/constant-contact-forms/assets/js/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 8);\n","const {\n components: { SelectControl },\n apiFetch,\n element: { Component },\n i18n: { __ },\n} = wp;\n\nclass SingleFormSelect extends Component {\n /**\n * Constructor\n * @param props\n */\n constructor(props) {\n super(props);\n\n // Set the initial state of the component.\n this.state = {\n forms: [{ label: __(\"Select a form\", \"constant-contact\"), value: 0 }],\n displayTitle: [\n { label: __(\"Display Title\", \"constant-contact\"), value: true },\n { label: __(\"Hide Title\", \"constant-contact\"), value: false },\n ],\n };\n }\n\n /**\n * After the component mounts, retrieve the forms and add them to the local component state.\n */\n async componentDidMount() {\n try {\n const results = await apiFetch({ path: \"/?rest_route=/wp/v2/ctct_forms\" });\n const forms = results.map((result) => ({ label: result.title.rendered, value: result.id }));\n this.setState({ forms: [...this.state.forms, ...forms] });\n } catch (e) {\n console.error(\"ERROR: \", e.message);\n }\n }\n\n /**\n * Render the Gutenberg block in the admin area.\n */\n render() {\n // Destructure the selectedFrom from props.\n let { selectedForm, displayTitle } = this.props.attributes;\n\n return (\n <div className=\"ctct-block-container\">\n <div className=\"ctct-block-container--header\">\n <img\n alt=\"Constant Contact Forms\"\n src=\"https://images.ctfassets.net/t21gix3kzulv/78gf1S3CjPrnl9rURf6Q8w/3c20fb510dd4d4653feddf86ece35e1a/ctct_ripple_logo_horizontal_white_orange.svg\"\n />\n </div>\n <div className=\"ctct-block-container--selection\">\n <small>{__(\"Choose the form to display with the dropdown below.\", \"constant-contact\")}</small>\n <div className=\"ctct-block-container--component\">\n <SelectControl value={selectedForm} options={this.state.forms} onChange={(value) => this.props.setAttributes({ selectedForm: value })} />\n </div>\n </div>\n <div className=\"ctct-block-container--selection\">\n <small>{__(\"Display Form Title\", \"constant-contact\")}</small>\n <div className=\"ctct-block-container--component\">\n <SelectControl value={displayTitle} options={this.state.displayTitle} onChange={(value) => this.props.setAttributes({ displayTitle: value })} />\n </div>\n </div>\n </div>\n );\n }\n}\n\nexport default SingleFormSelect;\n","const { __ } = wp.i18n;\nconst {\n\tregisterBlockType,\n} = wp.blocks;\n\nimport SingleFormSelect from '../components/single-form-select';\n\n/**\n * Register the block.\n */\nexport default registerBlockType( 'constant-contact/single-contact-form', {\n\ttitle: __( 'Constant Contact: Single Form', 'constant-contact' ),\n\ticon: 'index-card',\n\tcategory: 'layout',\n\tattributes: {\n\t\tselectedForm: {\n\t\t\ttype: 'string',\n\t\t},\n\t\tdisplayTitle: {\n\t\t\ttype: 'boolean',\n\t\t}\n\t},\n\tedit: SingleFormSelect,\n\tsave: () => null // PHP will be used to render the block on the frontend.\n});\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./assets/js/ctct-plugin-gutenberg/components/single-form-select.js","webpack:///./assets/js/ctct-plugin-gutenberg/blocks/contact-form.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","wp","SelectControl","components","apiFetch","Component","element","__","i18n","SingleFormSelect","props","state","forms","label","displayTitle","path","results","map","result","title","rendered","id","this","setState","console","error","message","attributes","selectedForm","className","alt","src","options","onChange","setAttributes","registerBlockType","blocks","icon","category","type","edit","save"],"mappings":"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","file":"ctct-plugin-gutenberg.min.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"https://testing.test/wp-content/plugins/constant-contact-forms/assets/js/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 9);\n","const {\n components: { SelectControl },\n apiFetch,\n element: { Component },\n i18n: { __ },\n} = wp;\n\nclass SingleFormSelect extends Component {\n /**\n * Constructor\n * @param props\n */\n constructor(props) {\n super(props);\n\n // Set the initial state of the component.\n this.state = {\n forms: [{ label: __(\"Select a form\", \"constant-contact\"), value: 0 }],\n displayTitle: [\n { label: __(\"Display Title\", \"constant-contact\"), value: true },\n { label: __(\"Hide Title\", \"constant-contact\"), value: false },\n ],\n };\n }\n\n /**\n * After the component mounts, retrieve the forms and add them to the local component state.\n */\n async componentDidMount() {\n try {\n const results = await apiFetch({ path: \"/?rest_route=/wp/v2/ctct_forms\" });\n const forms = results.map((result) => ({ label: result.title.rendered, value: result.id }));\n this.setState({ forms: [...this.state.forms, ...forms] });\n } catch (e) {\n console.error(\"ERROR: \", e.message);\n }\n }\n\n /**\n * Render the Gutenberg block in the admin area.\n */\n render() {\n // Destructure the selectedFrom from props.\n let { selectedForm, displayTitle } = this.props.attributes;\n\n return (\n <div className=\"ctct-block-container\">\n <div className=\"ctct-block-container--header\">\n <img\n alt=\"Constant Contact Forms\"\n src=\"https://images.ctfassets.net/t21gix3kzulv/78gf1S3CjPrnl9rURf6Q8w/3c20fb510dd4d4653feddf86ece35e1a/ctct_ripple_logo_horizontal_white_orange.svg\"\n />\n </div>\n <div className=\"ctct-block-container--selection\">\n <small>{__(\"Display Form Title\", \"constant-contact\")}</small>\n <div className=\"ctct-block-container--component\">\n <SelectControl value={displayTitle} options={this.state.displayTitle} onChange={(value) => this.props.setAttributes({ displayTitle: value })} />\n </div>\n </div>\n <div className=\"ctct-block-container--selection\">\n <small>{__(\"Choose the form to display with the dropdown below.\", \"constant-contact\")}</small>\n <div className=\"ctct-block-container--component\">\n <SelectControl value={selectedForm} options={this.state.forms} onChange={(value) => this.props.setAttributes({ selectedForm: value })} />\n </div>\n </div>\n </div>\n );\n }\n}\n\nexport default SingleFormSelect;\n","const { __ } = wp.i18n;\nconst {\n\tregisterBlockType,\n} = wp.blocks;\n\nimport SingleFormSelect from '../components/single-form-select';\n\n/**\n * Register the block.\n */\nexport default registerBlockType( 'constant-contact/single-contact-form', {\n\ttitle: __( 'Constant Contact: Single Form', 'constant-contact' ),\n\ticon: 'index-card',\n\tcategory: 'layout',\n\tattributes: {\n\t\tselectedForm: {\n\t\t\ttype: 'string',\n\t\t},\n\t\tdisplayTitle: {\n\t\t\ttype: 'boolean',\n\t\t}\n\t},\n\tedit: SingleFormSelect,\n\tsave: () => null // PHP will be used to render the block on the frontend.\n});\n"],"sourceRoot":""}
assets/js/ctct-plugin-recaptcha-v2.min.js CHANGED
@@ -1,2 +1,2 @@
1
- !function(t){var e={};function n(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)n.d(r,i,function(e){return t[e]}.bind(null,i));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="https://testing.test/wp-content/plugins/constant-contact-forms/assets/js/",n(n.s=16)}({16:function(t,e,n){t.exports=n(17)},17:function(t,e,n){"use strict";n.r(e);n(18)},18:function(t,e){window.ctctEnableBtn=function(t){jQuery(t).attr("disabled",!1)};window.ctctDisableBtn=function(t){jQuery(t).attr("disabled","disabled")};window.renderReCaptcha=function(){jQuery(".g-recaptcha").each((function(t,e){var n=jQuery(e).siblings(".ctct-form-field-submit").find(".ctct-submit");grecaptcha.render(e,{sitekey:jQuery(e).attr("data-sitekey"),size:jQuery(e).attr("data-size"),tabindex:jQuery(e).attr("data-tabindex"),callback:function(){window.ctctEnableBtn(n)},"expired-callback":function(){window.ctctDisableBtn(n)},isolated:!0})}))}}});
2
  //# sourceMappingURL=ctct-plugin-recaptcha-v2.min.js.map
1
+ !function(t){var e={};function n(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)n.d(r,i,function(e){return t[e]}.bind(null,i));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="https://testing.test/wp-content/plugins/constant-contact-forms/assets/js/",n(n.s=17)}({17:function(t,e,n){t.exports=n(18)},18:function(t,e,n){"use strict";n.r(e);n(19)},19:function(t,e){window.ctctEnableBtn=function(t){jQuery(t).attr("disabled",!1)};window.ctctDisableBtn=function(t){jQuery(t).attr("disabled","disabled")};window.renderReCaptcha=function(){jQuery(".g-recaptcha").each((function(t,e){var n=jQuery(e).siblings(".ctct-form-field-submit").find(".ctct-submit");grecaptcha.render(e,{sitekey:jQuery(e).attr("data-sitekey"),size:jQuery(e).attr("data-size"),tabindex:jQuery(e).attr("data-tabindex"),callback:function(){window.ctctEnableBtn(n)},"expired-callback":function(){window.ctctDisableBtn(n)},isolated:!0})}))}}});
2
  //# sourceMappingURL=ctct-plugin-recaptcha-v2.min.js.map
assets/js/ctct-plugin-recaptcha-v2.min.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./assets/js/ctct-plugin-recaptcha-v2/index.js","webpack:///./assets/js/ctct-plugin-recaptcha-v2/recaptcha.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","window","ctctEnableBtn","submitBtn","jQuery","attr","ctctDisableBtn","renderReCaptcha","each","index","el","siblings","find","grecaptcha","render"],"mappings":"aACE,IAAIA,EAAmB,GAGvB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUC,QAGnC,IAAIC,EAASJ,EAAiBE,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,IAUV,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAASF,GAG/DG,EAAOE,GAAI,EAGJF,EAAOD,QAKfF,EAAoBQ,EAAIF,EAGxBN,EAAoBS,EAAIV,EAGxBC,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3CZ,EAAoBa,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,KAKhEZ,EAAoBkB,EAAI,SAAShB,GACX,oBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,KAQvDrB,EAAoBsB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQrB,EAAoBqB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,iBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA1B,EAAoBkB,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOrB,EAAoBU,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIRzB,EAAoB6B,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADAH,EAAoBU,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRZ,EAAoBa,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,IAGzG/B,EAAoBkC,EAAI,4EAIjBlC,EAAoBA,EAAoBmC,EAAI,I,sEClFrD,c,iBCWAC,OAAOC,cAHa,SAAUC,GAC1BC,OAAQD,GAAYE,KAAM,YAAY,IAe1CJ,OAAOK,eAHc,SAAUH,GAC3BC,OAAQD,GAAYE,KAAM,WAAY,aAsB1CJ,OAAOM,gBAlBe,WAClBH,OAAQ,gBAAiBI,MAAM,SAAUC,EAAOC,GAC5C,IAAMP,EAAYC,OAAQM,GAAKC,SAAU,2BAA4BC,KAAM,gBAE3EC,WAAWC,OAAQJ,EAAI,CACnB,QAAWN,OAAQM,GAAKL,KAAM,gBAC9B,KAAQD,OAAQM,GAAKL,KAAM,aAC3B,SAAYD,OAAQM,GAAKL,KAAM,iBAC/B,SAAY,WACRJ,OAAOC,cAAeC,IAE1B,mBAAoB,WAChBF,OAAOK,eAAgBH,IAE3B,UAAY","file":"ctct-plugin-recaptcha-v2.min.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"https://testing.test/wp-content/plugins/constant-contact-forms/assets/js/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 16);\n","// This is the entry point for reCAPTCHA v2 JS. Add JavaScript imports here.\nimport './recaptcha';\n","/**\n * Enable submit button.\n *\n * @author Rebekah Van Epps <rebekah.vanepps@webdevstudios.com>\n * @since 1.8.3\n *\n * @param {Object} submitBtn Submit DOM element.\n */\nvar ctctEnableBtn = function( submitBtn ) {\n jQuery( submitBtn ).attr( \"disabled\", false );\n}\nwindow.ctctEnableBtn = ctctEnableBtn;\n\n/**\n * Disable submit button.\n *\n * @author Rebekah Van Epps <rebekah.vanepps@webdevstudios.com>\n * @since 1.8.3\n *\n * @param {Object} submitBtn Submit DOM element.\n */\nvar ctctDisableBtn = function( submitBtn ) {\n jQuery( submitBtn ).attr( \"disabled\", \"disabled\" );\n}\nwindow.ctctDisableBtn = ctctDisableBtn;\n\nvar renderReCaptcha = function() {\n jQuery( '.g-recaptcha' ).each( function( index, el ) {\n const submitBtn = jQuery( el ).siblings( '.ctct-form-field-submit' ).find( '.ctct-submit' );\n\n grecaptcha.render( el, {\n 'sitekey': jQuery( el ).attr( 'data-sitekey' ),\n 'size': jQuery( el ).attr( 'data-size' ),\n 'tabindex': jQuery( el ).attr( 'data-tabindex' ),\n 'callback': function() {\n window.ctctEnableBtn( submitBtn );\n },\n 'expired-callback': function() {\n window.ctctDisableBtn( submitBtn );\n },\n 'isolated': true,\n } );\n } );\n};\nwindow.renderReCaptcha = renderReCaptcha;\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./assets/js/ctct-plugin-recaptcha-v2/index.js","webpack:///./assets/js/ctct-plugin-recaptcha-v2/recaptcha.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","window","ctctEnableBtn","submitBtn","jQuery","attr","ctctDisableBtn","renderReCaptcha","each","index","el","siblings","find","grecaptcha","render"],"mappings":"aACE,IAAIA,EAAmB,GAGvB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUC,QAGnC,IAAIC,EAASJ,EAAiBE,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,IAUV,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAASF,GAG/DG,EAAOE,GAAI,EAGJF,EAAOD,QAKfF,EAAoBQ,EAAIF,EAGxBN,EAAoBS,EAAIV,EAGxBC,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3CZ,EAAoBa,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,KAKhEZ,EAAoBkB,EAAI,SAAShB,GACX,oBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,KAQvDrB,EAAoBsB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQrB,EAAoBqB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,iBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA1B,EAAoBkB,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOrB,EAAoBU,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIRzB,EAAoB6B,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADAH,EAAoBU,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRZ,EAAoBa,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,IAGzG/B,EAAoBkC,EAAI,4EAIjBlC,EAAoBA,EAAoBmC,EAAI,I,sEClFrD,c,iBCWAC,OAAOC,cAHa,SAAUC,GAC1BC,OAAQD,GAAYE,KAAM,YAAY,IAe1CJ,OAAOK,eAHc,SAAUH,GAC3BC,OAAQD,GAAYE,KAAM,WAAY,aAsB1CJ,OAAOM,gBAlBe,WAClBH,OAAQ,gBAAiBI,MAAM,SAAUC,EAAOC,GAC5C,IAAMP,EAAYC,OAAQM,GAAKC,SAAU,2BAA4BC,KAAM,gBAE3EC,WAAWC,OAAQJ,EAAI,CACnB,QAAWN,OAAQM,GAAKL,KAAM,gBAC9B,KAAQD,OAAQM,GAAKL,KAAM,aAC3B,SAAYD,OAAQM,GAAKL,KAAM,iBAC/B,SAAY,WACRJ,OAAOC,cAAeC,IAE1B,mBAAoB,WAChBF,OAAOK,eAAgBH,IAE3B,UAAY","file":"ctct-plugin-recaptcha-v2.min.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"https://testing.test/wp-content/plugins/constant-contact-forms/assets/js/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 17);\n","// This is the entry point for reCAPTCHA v2 JS. Add JavaScript imports here.\nimport './recaptcha';\n","/**\n * Enable submit button.\n *\n * @author Rebekah Van Epps <rebekah.vanepps@webdevstudios.com>\n * @since 1.8.3\n *\n * @param {Object} submitBtn Submit DOM element.\n */\nvar ctctEnableBtn = function( submitBtn ) {\n jQuery( submitBtn ).attr( \"disabled\", false );\n}\nwindow.ctctEnableBtn = ctctEnableBtn;\n\n/**\n * Disable submit button.\n *\n * @author Rebekah Van Epps <rebekah.vanepps@webdevstudios.com>\n * @since 1.8.3\n *\n * @param {Object} submitBtn Submit DOM element.\n */\nvar ctctDisableBtn = function( submitBtn ) {\n jQuery( submitBtn ).attr( \"disabled\", \"disabled\" );\n}\nwindow.ctctDisableBtn = ctctDisableBtn;\n\nvar renderReCaptcha = function() {\n jQuery( '.g-recaptcha' ).each( function( index, el ) {\n const submitBtn = jQuery( el ).siblings( '.ctct-form-field-submit' ).find( '.ctct-submit' );\n\n grecaptcha.render( el, {\n 'sitekey': jQuery( el ).attr( 'data-sitekey' ),\n 'size': jQuery( el ).attr( 'data-size' ),\n 'tabindex': jQuery( el ).attr( 'data-tabindex' ),\n 'callback': function() {\n window.ctctEnableBtn( submitBtn );\n },\n 'expired-callback': function() {\n window.ctctDisableBtn( submitBtn );\n },\n 'isolated': true,\n } );\n } );\n};\nwindow.renderReCaptcha = renderReCaptcha;\n"],"sourceRoot":""}
assets/js/ctct-plugin-recaptcha.min.js CHANGED
@@ -1,2 +1,2 @@
1
- !function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="https://testing.test/wp-content/plugins/constant-contact-forms/assets/js/",n(n.s=13)}({13:function(t,e,n){t.exports=n(14)},14:function(t,e,n){"use strict";n.r(e);n(15)},15:function(t,e){grecaptcha.ready((function(){grecaptcha.execute(recaptchav3.site_key,{action:"constantcontactsubmit"}).then((function(t){jQuery(".ctct-form-wrapper form").append('<input type="hidden" name="g-recaptcha-response" value="'+t+'">')}))}))}});
2
  //# sourceMappingURL=ctct-plugin-recaptcha.min.js.map
1
+ !function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="https://testing.test/wp-content/plugins/constant-contact-forms/assets/js/",n(n.s=14)}({14:function(t,e,n){t.exports=n(15)},15:function(t,e,n){"use strict";n.r(e);n(16)},16:function(t,e){grecaptcha.ready((function(){grecaptcha.execute(recaptchav3.site_key,{action:"constantcontactsubmit"}).then((function(t){jQuery(".ctct-form-wrapper form").append('<input type="hidden" name="g-recaptcha-response" value="'+t+'">')}))}))}});
2
  //# sourceMappingURL=ctct-plugin-recaptcha.min.js.map
assets/js/ctct-plugin-recaptcha.min.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./assets/js/ctct-plugin-recaptcha/index.js","webpack:///./assets/js/ctct-plugin-recaptcha/recaptcha.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","grecaptcha","ready","execute","recaptchav3","site_key","action","then","token","jQuery","append"],"mappings":"aACE,IAAIA,EAAmB,GAGvB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUC,QAGnC,IAAIC,EAASJ,EAAiBE,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,IAUV,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAASF,GAG/DG,EAAOE,GAAI,EAGJF,EAAOD,QAKfF,EAAoBQ,EAAIF,EAGxBN,EAAoBS,EAAIV,EAGxBC,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3CZ,EAAoBa,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,KAKhEZ,EAAoBkB,EAAI,SAAShB,GACX,oBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,KAQvDrB,EAAoBsB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQrB,EAAoBqB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,iBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA1B,EAAoBkB,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOrB,EAAoBU,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIRzB,EAAoB6B,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADAH,EAAoBU,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRZ,EAAoBa,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,IAGzG/B,EAAoBkC,EAAI,4EAIjBlC,EAAoBA,EAAoBmC,EAAI,I,sEClFrD,c,iBCAAC,WAAWC,OAAM,WAChBD,WAAWE,QAASC,YAAYC,SAAU,CAACC,OAAQ,0BAA2BC,MAAM,SAAWC,GAC9FC,OAAQ,2BAA4BC,OAAQ,2DAA6DF,EAAQ","file":"ctct-plugin-recaptcha.min.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"https://testing.test/wp-content/plugins/constant-contact-forms/assets/js/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 13);\n","// This is the entry point for reCAPTCHA JS. Add JavaScript imports here.\nimport './recaptcha';\n","grecaptcha.ready(function () {\n\tgrecaptcha.execute( recaptchav3.site_key, {action: 'constantcontactsubmit'} ).then( function ( token ) {\n\t\tjQuery( '.ctct-form-wrapper form' ).append( '<input type=\"hidden\" name=\"g-recaptcha-response\" value=\"' + token + '\">' );\n\t});\n});\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./assets/js/ctct-plugin-recaptcha/index.js","webpack:///./assets/js/ctct-plugin-recaptcha/recaptcha.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","grecaptcha","ready","execute","recaptchav3","site_key","action","then","token","jQuery","append"],"mappings":"aACE,IAAIA,EAAmB,GAGvB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUC,QAGnC,IAAIC,EAASJ,EAAiBE,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,IAUV,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAASF,GAG/DG,EAAOE,GAAI,EAGJF,EAAOD,QAKfF,EAAoBQ,EAAIF,EAGxBN,EAAoBS,EAAIV,EAGxBC,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3CZ,EAAoBa,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,KAKhEZ,EAAoBkB,EAAI,SAAShB,GACX,oBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,KAQvDrB,EAAoBsB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQrB,EAAoBqB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,iBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA1B,EAAoBkB,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOrB,EAAoBU,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIRzB,EAAoB6B,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADAH,EAAoBU,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRZ,EAAoBa,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,IAGzG/B,EAAoBkC,EAAI,4EAIjBlC,EAAoBA,EAAoBmC,EAAI,I,sEClFrD,c,iBCAAC,WAAWC,OAAM,WAChBD,WAAWE,QAASC,YAAYC,SAAU,CAACC,OAAQ,0BAA2BC,MAAM,SAAWC,GAC9FC,OAAQ,2BAA4BC,OAAQ,2DAA6DF,EAAQ","file":"ctct-plugin-recaptcha.min.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"https://testing.test/wp-content/plugins/constant-contact-forms/assets/js/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 14);\n","// This is the entry point for reCAPTCHA JS. Add JavaScript imports here.\nimport './recaptcha';\n","grecaptcha.ready(function () {\n\tgrecaptcha.execute( recaptchav3.site_key, {action: 'constantcontactsubmit'} ).then( function ( token ) {\n\t\tjQuery( '.ctct-form-wrapper form' ).append( '<input type=\"hidden\" name=\"g-recaptcha-response\" value=\"' + token + '\">' );\n\t});\n});\n"],"sourceRoot":""}
assets/sass/_admin-about.scss ADDED
@@ -0,0 +1,106 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //--------------------------------------------------------------
2
+ // About Page
3
+ //--------------------------------------------------------------
4
+
5
+ .constant-contact-about {
6
+
7
+ .ctct-section{
8
+ margin: 0 0 30px;
9
+ }
10
+
11
+ .ctct-video-cta{
12
+ padding: 0;
13
+ @include wider-than('small') {
14
+ display: flex;
15
+ align-items: center;
16
+ justify-content: space-between;
17
+ width: 100%;
18
+
19
+ > div{
20
+ width: calc(50% - 15px);
21
+ }
22
+ }
23
+
24
+ h3{
25
+ @include wider-than('small') {
26
+ margin: 0 0 15px;
27
+ }
28
+ }
29
+ }
30
+
31
+ ul {
32
+ list-style: disc;
33
+ padding-left: 24px;
34
+ }
35
+
36
+ .section-try-us{
37
+ padding: 20px;
38
+ border-radius: $radius;
39
+ background-color: $color-white;
40
+ border: 1px solid $color-silver;
41
+
42
+ h2, p{
43
+ margin: 0 0 15px;
44
+ }
45
+
46
+ hr{
47
+ margin: 20px 0;
48
+ }
49
+
50
+ .ctct-try-us-cta{
51
+ display: flex;
52
+ align-items: center;
53
+
54
+ p{
55
+ margin: 0;
56
+ }
57
+
58
+ .item{
59
+ margin: 0 15px 0 0;
60
+ font-size: 14px;
61
+ }
62
+ }
63
+
64
+ .button {
65
+ border-radius: 4px;
66
+ color: $color-white;
67
+ font-size: 16px;
68
+ font-weight: 600;
69
+ height: auto;
70
+ line-height: 1;
71
+ min-width: 180px;
72
+ padding: 14px 30px;
73
+ text-align: center;
74
+
75
+ &.button-orange {
76
+ background-color: $color-chrome-yellow;
77
+ border: 1px solid darken($color-chrome-yellow, 10%);
78
+
79
+ &:hover,
80
+ &:focus {
81
+ background-color: darken($color-chrome-yellow, 10%);
82
+ }
83
+ }
84
+
85
+ &.button-blue {
86
+ background-color: $color-prussian-blue;
87
+ border: 1px solid darken($color-prussian-blue, 10%);
88
+
89
+ &:hover,
90
+ &:focus {
91
+ background-color: darken($color-prussian-blue, 10%);
92
+ }
93
+ }
94
+ }
95
+ }
96
+
97
+ .ctct-license{
98
+ margin-top: 30px;
99
+ padding: 20px 0 0;
100
+ border-top: 1px solid $color-silver;
101
+ }
102
+
103
+ .small-text{
104
+ max-width: 800px;
105
+ }
106
+ }
assets/sass/_admin-connect.scss ADDED
@@ -0,0 +1,309 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // sass-lint:disable class-name-format no-qualifying-elements id-name-format
2
+
3
+ #adminmenu .wp-submenu a[href='edit.php?post_type=ctct_forms&page=ctct_options_connect'] {
4
+ color: $color-light-green;
5
+ }
6
+
7
+ //--------------------------------------------------------------
8
+ // Connect/Disconnect Page
9
+ //--------------------------------------------------------------
10
+
11
+ .wrap.ctct_options_connect {
12
+ box-sizing: border-box;
13
+
14
+ * {
15
+ box-sizing: border-box;
16
+ }
17
+ margin: 35px auto 0;
18
+ padding: 35px;
19
+ @include wider-than('small') {
20
+ margin: 55px auto 0;
21
+ }
22
+ max-width: 850px;
23
+ position: relative;
24
+ background-color: $color-white;
25
+ border: 1px solid $color-silver;
26
+ border-radius: 8px;
27
+ box-shadow: $shadow_lg;
28
+ text-align: center;
29
+ z-index: 1;
30
+
31
+ &.text-left{
32
+ text-align: left;
33
+ }
34
+
35
+ &::before{
36
+ width: 46px;
37
+ height: 46px;
38
+ position: absolute;
39
+ left: 50%;
40
+ top: -23px;
41
+ margin-left: -23px;
42
+ display: block;
43
+ border-radius: 100%;
44
+ content: '';
45
+ z-index: -1;
46
+ border-top: 1px solid $color-silver;
47
+ background: $color-white url( ../images/ctct-icon-2x.png ) no-repeat center 45%;
48
+ }
49
+
50
+ h2{
51
+ font-size: 24px;
52
+ font-weight: 700;
53
+ margin: 0 0 15px;
54
+ padding: 0;
55
+
56
+ + p {
57
+ font-size: 16px;
58
+ margin: 0 0 25px;
59
+ padding: 0 10% 25px;
60
+ position: relative;
61
+
62
+ &::after{
63
+ position: absolute;
64
+ content: '';
65
+ height: 1px;
66
+ width: 50px;
67
+ left: 50%;
68
+ bottom: 0;
69
+ margin-left: -25px;
70
+ background-color: $color-silver;
71
+ }
72
+ }
73
+ }
74
+
75
+ .ctct-connected-wrap{
76
+ padding: 45px 35px;
77
+ background-color: $color-lighter-gray;
78
+ border-radius: $radius;
79
+ }
80
+
81
+ .ctct-call-to-actions{
82
+ display: flex;
83
+ flex-wrap: wrap;
84
+ width: 100%;
85
+ justify-content: space-between;
86
+
87
+ &--item {
88
+ width: 100%;
89
+ margin: 0 0 25px;
90
+ @include wider-than('small') {
91
+ width: calc(50% - 5px);
92
+ }
93
+ padding: 30px 25px 25px;
94
+ background-color: $color-lighter-gray;
95
+ display: flex;
96
+ justify-content: center;
97
+ flex-wrap: wrap;
98
+ border-radius: 6px;
99
+ border: 1px solid $color-light-gray;
100
+ transition: all 0.15s ease;
101
+
102
+ &:hover{
103
+ box-shadow: $shadow_lg;
104
+ }
105
+
106
+ &.connect-account{
107
+ border-color: #d1dfe8;
108
+ background-color:#f5faff;
109
+
110
+ &:hover{
111
+ border-color: #90afc3;
112
+ }
113
+ }
114
+
115
+ &.no-account{
116
+ border-color: #e2d9c4;
117
+ background-color:#fff8e9;
118
+
119
+ &:hover{
120
+ border-color: #c7ba9a;
121
+ }
122
+ }
123
+
124
+ p{
125
+ margin-bottom: 15px;
126
+ line-height: 1.6;
127
+ padding: 0 5px;
128
+ }
129
+ }
130
+ }
131
+
132
+ h3 {
133
+ font-size: 16px;
134
+ font-weight: 700;
135
+ line-height: 1.55;
136
+ margin: 0 0 10px;
137
+ }
138
+
139
+ p {
140
+ color: $color-modal-alt-text;
141
+ font-size: 14px;
142
+ margin-top: 0;
143
+
144
+ &.small {
145
+ color: $color-light-silver;
146
+ font-size: 12px;
147
+ margin: 0 auto;
148
+ padding: 0 10%;
149
+ line-height: 1.75;
150
+ text-align: center;
151
+ }
152
+ }
153
+
154
+ hr{
155
+ margin: 35px 0;
156
+ }
157
+
158
+ .button.ctct-button {
159
+ border-radius: 4px;
160
+ color: $color-prussian-blue;
161
+ font-size: 16px;
162
+ font-weight: 600;
163
+ height: auto;
164
+ line-height: 1;
165
+ margin: 25px 0 0;
166
+ min-width: 180px;
167
+ padding: 14px 30px;
168
+ align-self: flex-end;
169
+ width: 100%;
170
+ transition: all 0.15s ease;
171
+
172
+ &.button-orange {
173
+ background-color: $color-chrome-yellow;
174
+ border: 1px solid darken($color-chrome-yellow, 10%);
175
+ color: $color-white;
176
+
177
+ &:hover,
178
+ &:focus {
179
+ color: $color-white;
180
+ background-color: lighten($color-chrome-yellow, 10%);
181
+ }
182
+ }
183
+
184
+ &.button-blue {
185
+ background-color: $color-prussian-blue;
186
+ border: 1px solid darken($color-prussian-blue, 10%);
187
+ color: $color-white;
188
+
189
+ &:hover,
190
+ &:focus {
191
+ color: $color-white;
192
+ background-color: lighten($color-prussian-blue, 10%);
193
+ }
194
+ }
195
+ }
196
+ }
197
+
198
+
199
+ // Connection Details
200
+
201
+ .ctct-connected-wrap{
202
+
203
+ .ctct-connection-details{
204
+ display: flex;
205
+ text-align: left;
206
+ margin: 10px 0 0;
207
+
208
+ > p,
209
+ form{
210
+ padding: 0 10px;
211
+ width: 50%;
212
+ text-align: left;
213
+ display: flex;
214
+ align-items: center;
215
+ margin: 0;
216
+
217
+ &:not(form):first-of-type{
218
+ text-align: right;
219
+ }
220
+
221
+ input{
222
+ position: relative;
223
+ top: 2px;
224
+ }
225
+ }
226
+
227
+ p{
228
+ overflow: hidden;
229
+ white-space: nowrap;
230
+ text-overflow: ellipsis;
231
+
232
+ &.ctct-label{
233
+ justify-content: flex-end;
234
+ }
235
+ }
236
+ }
237
+ }
238
+
239
+ // Getting Started/ Next Steps
240
+
241
+ .ctct-connected-next-step{
242
+ text-align: left;
243
+ display: flex;
244
+ flex-wrap: wrap;
245
+ justify-content: space-between;
246
+ align-items: center;
247
+ width: 100%;
248
+
249
+ p{
250
+ margin: 0 0 15px;
251
+ }
252
+
253
+ > div{
254
+ width: 100%;
255
+ @include wider-than('small') {
256
+ width: calc(50% - 10px);
257
+ }
258
+ }
259
+
260
+ .ctct-video{
261
+ margin-bottom: 15px;
262
+ @include wider-than('small') {
263
+ margin-bottom: 0;
264
+ padding-right: 5px;
265
+ }
266
+
267
+ .wistia_embed{
268
+ max-width: 100%;
269
+ border-radius: $radius;
270
+ overflow: hidden;
271
+ }
272
+ }
273
+ }
274
+
275
+
276
+ // Connect to GA
277
+
278
+ .ctct-connected-opt-in{
279
+ display: none;
280
+ width: 100%;
281
+ text-align: left;
282
+
283
+ .ctct-connect-ga-optin{
284
+ display: flex;
285
+ flex-wrap: nowrap;
286
+ padding: 15px 0 0;
287
+
288
+ .button{
289
+ text-align: center;
290
+ margin: 0 10px 0 0;
291
+ width: auto;
292
+ }
293
+ }
294
+ }
295
+
296
+ .ctct-error {
297
+ background: none !important;
298
+ border: 1px solid $color-red;
299
+ border-radius: $radius;
300
+ box-shadow: none !important;
301
+ display: inline-block;
302
+ padding: 15px;
303
+ margin: 0 0 25px 0 !important;
304
+
305
+ p {
306
+ color: $color-red !important;
307
+ }
308
+
309
+ }
assets/sass/_admin-debug.scss ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ .ctct_options_logging {
2
+
3
+ #ctct_error_logs {
4
+ height: 400px;
5
+ resize: vertical;
6
+ width: 100%;
7
+ padding: 20px;
8
+ margin: 10px 0 20px;
9
+ background-color: $color-white;
10
+ }
11
+ }
assets/sass/_admin-forms.scss CHANGED
@@ -1,6 +1,11 @@
1
  // sass-lint:disable class-name-format no-qualifying-elements id-name-format
 
2
  .post-type-ctct_forms {
3
 
 
 
 
 
4
  .misc-pub-section {
5
 
6
  &.misc-pub-visibility,
@@ -11,8 +16,8 @@
11
  }
12
 
13
  body.post-type-ctct_lists .misc-pub-post-status {
14
- display: none;
15
- }
16
 
17
  body.post-type-ctct_forms #titlediv #title {
18
  height: 2.7em;
@@ -21,7 +26,7 @@ body.post-type-ctct_forms #titlediv #title {
21
  .ctct-admin-title-details {
22
  display: block;
23
  font-size: 0.6rem;
24
- line-height: 2rem;
25
  }
26
 
27
  #cmb2-metabox-ctct_1_optin_metabox {
@@ -69,21 +74,21 @@ body.post-type-ctct_forms #titlediv #title {
69
  .required {
70
  padding-bottom: 0.1em;
71
  padding-top: 0.1em;
72
- }
73
- }
74
 
75
  #default_fields_group_repeat {
76
 
77
  .cmb-field-list {
78
 
79
- & > .cmb-row {
80
  padding-top: 0.5em;
81
 
82
  &:not(:last-of-type) {
83
  border-bottom: 1px solid $color-light-gray;
84
  padding-bottom: 0.1rem;
85
  }
86
- }
87
  }
88
  }
89
 
@@ -98,7 +103,7 @@ body.post-type-ctct_forms #titlediv #title {
98
  }
99
  }
100
 
101
- .cmb-repeat-group-field {
102
  padding-top: 0.2em;
103
  }
104
  }
@@ -250,6 +255,7 @@ body.post-type-ctct_forms #titlediv #title {
250
  //--------------------------------------------------------------
251
  // TinyMCE Tweaks
252
  //--------------------------------------------------------------
 
253
  .ui-dialog .cmb-type-checkbox {
254
 
255
  &.cmb2-id--ctct-show-title {
1
  // sass-lint:disable class-name-format no-qualifying-elements id-name-format
2
+
3
  .post-type-ctct_forms {
4
 
5
+ img {
6
+ max-width: 100%;
7
+ }
8
+
9
  .misc-pub-section {
10
 
11
  &.misc-pub-visibility,
16
  }
17
 
18
  body.post-type-ctct_lists .misc-pub-post-status {
19
+ display: none;
20
+ }
21
 
22
  body.post-type-ctct_forms #titlediv #title {
23
  height: 2.7em;
26
  .ctct-admin-title-details {
27
  display: block;
28
  font-size: 0.6rem;
29
+ line-height: 2;
30
  }
31
 
32
  #cmb2-metabox-ctct_1_optin_metabox {
74
  .required {
75
  padding-bottom: 0.1em;
76
  padding-top: 0.1em;
77
+ }
78
+ }
79
 
80
  #default_fields_group_repeat {
81
 
82
  .cmb-field-list {
83
 
84
+ > .cmb-row {
85
  padding-top: 0.5em;
86
 
87
  &:not(:last-of-type) {
88
  border-bottom: 1px solid $color-light-gray;
89
  padding-bottom: 0.1rem;
90
  }
91
+ }
92
  }
93
  }
94
 
103
  }
104
  }
105
 
106
+ .cmb-repeat-group-field {
107
  padding-top: 0.2em;
108
  }
109
  }
255
  //--------------------------------------------------------------
256
  // TinyMCE Tweaks
257
  //--------------------------------------------------------------
258
+
259
  .ui-dialog .cmb-type-checkbox {
260
 
261
  &.cmb2-id--ctct-show-title {
assets/sass/_admin-global-no-connection.scss DELETED
@@ -1,302 +0,0 @@
1
- // sass-lint:disable class-name-format no-qualifying-elements id-name-format
2
- #adminmenu .wp-submenu a[href='edit.php?post_type=ctct_forms&page=ctct_options_connect'] {
3
- color: $color-light-green;
4
- }
5
-
6
- //--------------------------------------------------------------
7
- // Connect Page
8
- //--------------------------------------------------------------
9
- .ctct_options_connect {
10
- box-sizing: border-box;
11
- padding: 70px;
12
- text-align: center;
13
- width: 100%;
14
-
15
- hr {
16
- margin-bottom: 45px;
17
- }
18
-
19
- @media screen and (max-width: 782px) {
20
- margin-left: -10px;
21
- padding: 30px 30px 0;
22
- }
23
-
24
- .ctct-call-to-action {
25
- margin-bottom: 45px;
26
- overflow: hidden;
27
- text-align: left;
28
- width: 100%;
29
-
30
- p {
31
- float: left;
32
- margin: 0;
33
- }
34
-
35
- a {
36
- float: right;
37
- text-align: center;
38
-
39
- &:focus {
40
- outline: 1px dotted $color-black;
41
- }
42
-
43
- @media screen and (max-width: 782px) {
44
- float: none;
45
- }
46
- }
47
-
48
- .ctct-call-to-action-text {
49
-
50
- a {
51
- float: none;
52
-
53
- &:focus {
54
- outline: 1px dotted $color-black;
55
- }
56
- }
57
-
58
- small {
59
- line-height: 1.2px;
60
- }
61
- }
62
-
63
- #subbox {
64
- height: 40px;
65
- margin: 15px 0;
66
- width: 50%;
67
- }
68
-
69
- #subbutton {
70
- color: $color-prussian-blue;
71
- float: right;
72
-
73
- @media screen and (max-width: 782px) {
74
- float: none;
75
- }
76
- }
77
- }
78
-
79
- img {
80
- height: auto;
81
- max-width: 400px;
82
- width: 100%;
83
- }
84
-
85
- h3 {
86
- color: darken($color-prussian-blue, 10%);
87
- font-size: 20px;
88
- line-height: 1.2;
89
- margin-bottom: 10px;
90
- margin-top: 10px;
91
- }
92
-
93
- p {
94
- color: $color-modal-alt-text;
95
- font-size: 14.7px;
96
- margin: 0;
97
-
98
- &.ctct-description {
99
- font-size: 16px;
100
- margin-bottom: 50px;
101
- margin-top: 5px;
102
- }
103
-
104
- &.small {
105
- color: $color-light-silver;
106
- font-size: 13.3px;
107
- margin: 15px auto 0;
108
-
109
- @media screen and (max-width: 782px) {
110
- max-width: 100%;
111
- }
112
- }
113
- }
114
-
115
- .ctct-body {
116
- @include clearfix;
117
- margin: 0 auto;
118
- max-width: 75%;
119
- overflow-y: hidden;
120
- position: relative;
121
-
122
- .ctct-call-to-action-text {
123
- float: left;
124
- width: 75%;
125
-
126
- @media screen and (max-width: 782px) {
127
- width: 100%;
128
- }
129
-
130
- h3 {
131
- margin-top: 0;
132
- }
133
- }
134
-
135
- .clear {
136
- clear: both;
137
- height: 0;
138
- width: 100%;
139
- }
140
-
141
- .left,
142
- .right {
143
- box-sizing: border-box;
144
- float: left;
145
- margin-bottom: -500px;
146
- padding: 15px 0 520px;
147
- text-align: center;
148
- width: 50%;
149
-
150
- @media screen and (max-width: 782px) {
151
- float: none;
152
- margin-bottom: 0;
153
- padding: 15px 0;
154
- width: 100%;
155
- }
156
-
157
- img,
158
- svg {
159
- &.flare {
160
- height: auto;
161
- width: 180px;
162
- }
163
- }
164
- }
165
-
166
- .left {
167
- border-right: 1px solid $color-silver;
168
- padding-right: 70px;
169
-
170
- @media screen and (max-width: 782px) {
171
- border-bottom: 1px solid $color-silver;
172
- border-right: 0;
173
- padding-bottom: 30px;
174
- padding-right: 0;
175
- }
176
-
177
- p {
178
- margin: 0 auto 25px;
179
- max-width: 220px;
180
-
181
- @media screen and (max-width: 782px) {
182
- max-width: 100%;
183
- }
184
- }
185
- }
186
-
187
- .right {
188
- padding-left: 70px;
189
-
190
- @media screen and (max-width: 782px) {
191
- padding-left: 0;
192
- padding-top: 30px;
193
- }
194
-
195
- p {
196
- display: block;
197
- margin: 0 auto 25px;
198
- max-width: 350px;
199
-
200
- @media screen and (max-width: 782px) {
201
- max-width: 100%;
202
- }
203
- }
204
- }
205
-
206
- .button {
207
- border-radius: 4px;
208
- color: $color-white;
209
- font-size: 16px;
210
- font-weight: 600;
211
- height: auto;
212
- line-height: 1;
213
- margin-bottom: 10px;
214
- min-width: 180px;
215
- padding: 14px 30px;
216
-
217
- &.button-orange {
218
- background-color: $color-chrome-yellow;
219
- border: 1px solid darken($color-chrome-yellow, 10%);
220
-
221
- &:hover,
222
- &:focus {
223
- background-color: darken($color-chrome-yellow, 10%);
224
- }
225
- }
226
-
227
- &.button-blue {
228
- background-color: $color-prussian-blue;
229
- border: 1px solid darken($color-prussian-blue, 10%);
230
-
231
- &:hover,
232
- &:focus {
233
- background-color: darken($color-prussian-blue, 10%);
234
- }
235
- }
236
- }
237
-
238
- .ctct-connected {
239
-
240
- .ctct-connected-next-step {
241
- margin-bottom: 40px;
242
-
243
- h3 {
244
- color: $color-green;
245
- }
246
- }
247
-
248
- .ctct-disconnect-text {
249
- float: left;
250
- margin-bottom: 50px;
251
- overflow: hidden;
252
- text-align: left;
253
- }
254
-
255
- form {
256
- float: right;
257
- }
258
-
259
- .button {
260
- color: $color-prussian-blue;
261
-
262
- &.button-blue {
263
- color: $color-white;
264
- }
265
- }
266
-
267
- .ctct-connected-next-step {
268
- clear: both;
269
- }
270
-
271
- .ctct-connect-ga-optin {
272
- margin-top: 15px;
273
- }
274
-
275
- @media screen and (max-width: 782px) {
276
-
277
- .ctct-disconnect-text {
278
- float: none;
279
- text-align: center;
280
- }
281
-
282
- form {
283
- float: none;
284
- }
285
- }
286
- }
287
- }
288
- }
289
-
290
- .ctct-error {
291
- background: none !important;
292
- border: 1px solid $color-red;
293
- border-radius: 3px;
294
- box-shadow: none !important;
295
- display: inline-block;
296
- margin: 0 0 20px 0 !important;
297
-
298
- p {
299
- color: $color-red !important;
300
- }
301
-
302
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/sass/_admin-gutenberg.scss CHANGED
@@ -2,6 +2,7 @@
2
  //--------------------------------------------------------------
3
  // Gutenberg Admin
4
  //--------------------------------------------------------------
 
5
  .ctct-block-title {
6
  margin: 0;
7
  }
@@ -27,6 +28,7 @@
27
 
28
  &--header {
29
  margin: 0 0 10px;
 
30
  img {
31
  max-width: 280px;
32
  display: block;
@@ -38,6 +40,7 @@
38
  background-color: rgba(255, 255, 255, 0.1);
39
  border-radius: 4px;
40
  margin: 20px 0 0;
 
41
  small {
42
  opacity: 0.8;
43
  font-size: 14px;
@@ -46,6 +49,7 @@
46
  display: block;
47
  }
48
  }
 
49
  &--component {
50
  max-width: 400px;
51
  width: 100%;
2
  //--------------------------------------------------------------
3
  // Gutenberg Admin
4
  //--------------------------------------------------------------
5
+
6
  .ctct-block-title {
7
  margin: 0;
8
  }
28
 
29
  &--header {
30
  margin: 0 0 10px;
31
+
32
  img {
33
  max-width: 280px;
34
  display: block;
40
  background-color: rgba(255, 255, 255, 0.1);
41
  border-radius: 4px;
42
  margin: 20px 0 0;
43
+
44
  small {
45
  opacity: 0.8;
46
  font-size: 14px;
49
  display: block;
50
  }
51
  }
52
+
53
  &--component {
54
  max-width: 400px;
55
  width: 100%;
assets/sass/_admin-notices.scss CHANGED
@@ -1,4 +1,5 @@
1
  // sass-lint:disable class-name-format no-qualifying-elements id-name-format
 
2
  .updated.ctct-admin-notice,
3
  .error.ctct-admin-notice {
4
  padding: 1rem 38px 1rem 1rem;
@@ -9,12 +10,12 @@ a.ctct-notice-dismiss {
9
  text-decoration: none;
10
  }
11
 
12
- #ctct-admin-notice-activation {
13
  padding: 1rem 1rem 0 1rem;
14
 
15
  .ctct-notice-intro {
16
- line-height: 1.5rem;
17
- max-width: 600px;
18
  }
19
 
20
  .ctct-notice-button,
1
  // sass-lint:disable class-name-format no-qualifying-elements id-name-format
2
+
3
  .updated.ctct-admin-notice,
4
  .error.ctct-admin-notice {
5
  padding: 1rem 38px 1rem 1rem;
10
  text-decoration: none;
11
  }
12
 
13
+ #ctct-admin-notice-activation {
14
  padding: 1rem 1rem 0 1rem;
15
 
16
  .ctct-notice-intro {
17
+ line-height: 1.5;
18
+ max-width: 600px;
19
  }
20
 
21
  .ctct-notice-button,
assets/sass/_admin-pages.scss CHANGED
@@ -1,332 +1,164 @@
1
  // sass-lint:disable class-name-format no-qualifying-elements id-name-format
2
- //--------------------------------------------------------------
3
- // About Page
4
- //--------------------------------------------------------------
5
- .constant-contact-about {
6
- padding: 15px;
7
-
8
- @media screen and (max-width: 782px) {
9
- padding: 0;
10
- }
11
-
12
- .ctct-section {
13
- margin-bottom: 50px;
14
- }
15
 
16
- h1.about-header {
17
- color: $color-cc-blue;
18
- font-size: 26px;
19
- margin: 0 0 15px 0;
20
- }
21
 
22
- h3 {
23
- padding: 20px 0;
24
- }
25
-
26
- p {
27
- color: $color-modal-header;
28
- font-size: 16px;
29
- font-weight: 300;
30
- }
31
 
32
- .clear {
33
- clear: both;
34
- height: 0;
35
- width: 100%;
36
- }
37
 
38
- .button {
39
- border-radius: 4px;
40
- color: $color-white;
41
- font-size: 16px;
42
- font-weight: 600;
43
- height: auto;
44
- line-height: 1;
45
- margin-bottom: 10px;
46
- min-width: 180px;
47
- padding: 14px 30px;
48
- text-align: center;
49
-
50
- &.button-orange {
51
- background-color: $color-chrome-yellow;
52
- border: 1px solid darken($color-chrome-yellow, 10%);
53
-
54
- &:hover,
55
- &:focus {
56
- background-color: darken($color-chrome-yellow, 10%);
57
- }
58
  }
 
59
 
60
- &.button-blue {
61
- background-color: $color-prussian-blue;
62
- border: 1px solid darken($color-prussian-blue, 10%);
63
-
64
- &:hover,
65
- &:focus {
66
- background-color: darken($color-prussian-blue, 10%);
67
- }
68
  }
69
  }
 
70
 
71
- .about-text {
72
- margin: 0 50px 0 0;
73
-
74
- @media screen and (max-width: 482px) {
75
- margin: 0;
76
- }
77
- }
78
 
79
- .feature-section.two-col > div {
80
- float: left;
81
- width: 49%;
82
- }
83
 
84
- .headline-feature {
85
- max-width: 90%;
86
 
87
- @media screen and (max-width: 782px) {
88
- max-width: 100%;
 
 
 
 
89
  }
90
 
91
- p {
92
- margin-bottom: 0;
 
 
 
93
  }
94
 
95
- h5 {
96
- color: $color-light-silver;
97
- font-style: italic;
98
- font-weight: 300;
99
- }
100
- }
101
 
102
- .headline-title,
103
- .c-text {
104
- text-align: center;
105
- }
106
 
107
- .featured-image {
108
- min-height: 150px;
109
- position: relative;
110
- }
111
 
112
- .fff-img {
113
- height: 315px;
114
- margin: 20px;
115
- max-width: 720px;
116
- overflow: hidden;
117
- }
118
 
119
- .introduction {
120
- padding: 20px 0;
121
- }
 
 
 
 
 
122
 
123
- .featured-title {
124
- color: $color-white;
125
- font-size: 2rem;
126
- font-weight: bold;
127
- margin: 0 auto;
128
- position: absolute;
129
- text-align: center;
130
- text-shadow: 0 0 15px $color-black;
131
- top: 80px;
132
- width: 100%;
133
 
134
- @media screen and (max-width: 482px) {
135
- color: $color-cc-blue;
136
- font-size: 26px;
137
- line-height: 28px;
138
- margin-top: 15px;
139
- position: relative;
140
- text-shadow: none;
141
- top: 0;
142
  }
143
  }
144
 
145
- .featured-introduction {
146
- color: $color-white;
147
- font-size: 1.2rem;
148
- margin: 0 auto;
149
- position: absolute;
150
- text-align: center;
151
- text-shadow: 0 0 15px $color-black;
152
- top: 120px;
153
- width: 100%;
154
-
155
- @media screen and (max-width: 482px) {
156
- color: $color-cc-blue;
157
- line-height: 1;
158
- margin-top: 15px;
159
- position: relative;
160
- text-shadow: none;
161
- top: 0;
162
- }
163
  }
164
 
165
- .hide-overflow {
166
- overflow: hidden;
167
- position: relative;
168
 
169
- hr {
170
- margin-top: 30px;
171
- }
172
 
173
- h2 {
174
- color: $color-cc-blue;
175
- font-size: 16px;
176
- font-weight: 400;
177
- margin-top: 30px;
178
- text-align: left;
179
  }
180
- }
181
-
182
- .left-side {
183
- box-sizing: border-box;
184
- float: left;
185
- padding-right: 160px;
186
 
187
- @media screen and (max-width: 482px) {
188
- padding-right: 0;
 
 
189
  }
190
- }
191
-
192
- .plugin-badge {
193
- float: right;
194
- margin-left: 40px;
195
- max-height: 180px;
196
- max-width: 160px;
197
 
198
- @media screen and (max-width: 482px) {
199
- display: none;
 
200
  }
201
- }
202
 
203
- .feature-image {
204
- text-align: center;
205
  }
206
- }
207
- .cc-a-block {
208
- @include clearfix;
209
 
210
- margin: 0 auto;
211
- max-width: 90%;
212
- padding: 50px 0;
213
- text-align: center;
214
 
215
- @media screen and (max-width: 482px) {
216
- padding: 25px 0;
217
- }
218
 
219
- h3 {
220
- color: $color-cc-blue;
221
- font-size: 21px;
222
- font-weight: 300;
223
- height: 63px;
224
- margin: 0 auto;
225
- max-width: 70%;
226
-
227
- @media screen and (max-width: 782px) {
228
- height: auto;
229
- max-width: 100%;
230
  }
231
  }
232
 
233
- .left,
234
- .right {
235
- @include clearfix;
236
-
237
- float: left;
238
- width: 50%;
239
 
240
- @media screen and (max-width: 482px) {
241
- float: none;
242
- width: 100%;
243
- }
244
-
245
- .ad-1,
246
- .ad-2 {
247
- width: 90%;
248
-
249
- @media screen and (max-width: 482px) {
250
- float: none;
251
- width: 100%;
252
- }
253
-
254
- img {
255
- height: auto;
256
- width: 100%;
257
- }
258
- }
259
-
260
- .ad-1 {
261
- float: left;
262
-
263
- h3 {
264
- height: 47px;
265
- padding-top: 35px;
266
- }
267
- }
268
 
269
- .ad-2 {
270
- float: right;
271
  }
272
- }
273
- }
274
-
275
- .ctct-bonus-points {
276
- color: #2b5e8c;
277
- font-size: 16px;
278
- font-weight: 300;
279
- list-style: circle;
280
- padding-left: 50px;
281
- }
282
 
283
- .section-try-us {
284
- .ctct-bonus-points {
285
- margin-bottom: 50px;
286
- }
 
287
 
288
- a {
289
- &.button {
290
- margin-right: 40px;
291
- }
 
 
 
 
 
 
 
292
 
293
- &.ctct-connect {
294
- font-weight: bold;
 
295
  }
296
 
297
- &:focus {
298
- outline: 1px dotted $color-black;
 
299
  }
300
  }
301
- }
302
 
303
- .section-marketing-tips {
304
- #subbox {
305
- height: 40px;
306
- width: 50%;
307
- }
308
- }
309
-
310
- #cmb2-metabox-ctct_option_metabox_settings {
311
- .regular-text {
312
- width: 500px;
313
- }
314
- }
315
-
316
- .cmb2-options-page {
317
- &[class*="option-ctct_options_settings_"] {
318
- .cmb2-metabox > .cmb-row {
319
- background: transparent;
320
- border: none;
321
- box-shadow: none;
322
- }
323
- }
324
- }
325
-
326
- .ctct-body {
327
- #ctct_error_logs {
328
- height: 400px;
329
- resize: vertical;
330
- width: 100%;
331
- }
332
- }
1
  // sass-lint:disable class-name-format no-qualifying-elements id-name-format
 
 
 
 
 
 
 
 
 
 
 
 
 
2
 
3
+ // Settings form table.
 
 
 
 
4
 
5
+ .cmb2-options-page {
 
 
 
 
 
 
 
 
6
 
7
+ &[class*="option-ctct_options_settings_"] {
 
 
 
 
8
 
9
+ .cmb2-metabox > .cmb-row {
10
+ background: transparent;
11
+ border: none;
12
+ box-shadow: none;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13
  }
14
+ // Text input
15
 
16
+ .regular-text {
17
+ width: 500px;
 
 
 
 
 
 
18
  }
19
  }
20
+ }
21
 
22
+ // Global admin styles.
 
 
 
 
 
 
23
 
24
+ .wp-admin{
 
 
 
25
 
26
+ // Settings/Debug/About Page.
 
27
 
28
+ .wrap.ctct-page-wrap{
29
+ max-width: 1000px;
30
+ margin: 0;
31
+ padding: 20px 10px 0 2px;
32
+ @include wider-than('small') {
33
+ padding-right: 20px;
34
  }
35
 
36
+ > h2{
37
+ font-size: 24px;
38
+ font-weight: 700;
39
+ margin: 0 0 20px;
40
+ padding: 0;
41
  }
42
 
43
+ p, li{
44
+ font-size: 14px;
45
+ line-height: 1.65;
 
 
 
46
 
47
+ &.small-text{
48
+ font-size: 12px;
49
+ }
 
50
 
51
+ &.large-text{
52
+ font-size: 16px;
53
+ }
 
54
 
55
+ &.xlarge-text{
56
+ font-size: 18px;
57
+ }
58
+ }
 
 
59
 
60
+ .text-centered{
61
+ text-align: center;
62
+ }
63
+
64
+ .iframe-wrap{
65
+ position: relative;
66
+ padding-bottom: 56.25%; /* 16:9 */
67
+ height: 0;
68
 
69
+ iframe{
70
+ position: absolute;
71
+ top: 0;
72
+ left: 0;
73
+ width: 100%;
74
+ height: 100%;
75
+ border-radius: $radius;
76
+ }
 
 
77
 
 
 
 
 
 
 
 
 
78
  }
79
  }
80
 
81
+ hr{
82
+ border-top: none;
83
+ border-color: $color-silver;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
84
  }
85
 
86
+ // Align elements in settings form tables.
 
 
87
 
88
+ form.cmb-form{
 
 
89
 
90
+ h2{
91
+ margin: 0;
92
+ padding: 14px;
 
 
 
93
  }
 
 
 
 
 
 
94
 
95
+ .description,
96
+ p.submit{
97
+ padding: 0 14px;
98
+ margin-bottom: 10px;
99
  }
 
 
 
 
 
 
 
100
 
101
+ .cmb-th,
102
+ .cmb-th label{
103
+ font-weight: 600;
104
  }
 
105
 
 
 
106
  }
 
 
 
107
 
108
+ // Align buttons in flex row
 
 
 
109
 
110
+ .ctct-button-actions{
111
+ display: flex;
112
+ justify-content: flex-start;
113
 
114
+ a {
115
+ align-self: flex-start;
116
+ margin: 0 10px 0 0;
 
 
 
 
 
 
 
 
117
  }
118
  }
119
 
120
+ // Copy shortcode on form listing.
 
 
 
 
 
121
 
122
+ .ctct-shortcode-wrap{
123
+ display: flex;
124
+ width: 100%;
125
+ background-color: $color-white;
126
+ border: 1px solid $color-silver;
127
+ border-radius: $radius;
128
+ padding: 3px;
129
+ position: relative;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
130
 
131
+ &:focus-within{
132
+ border-color: $color-light-silver;
133
  }
 
 
 
 
 
 
 
 
 
 
134
 
135
+ input, button{
136
+ min-height: auto;
137
+ height: 30px;
138
+ font-size: 12px;
139
+ }
140
 
141
+ input{
142
+ background-color: transparent;
143
+ border: none;
144
+ font-size: 12px;
145
+ padding: 0 10px 0 5px;
146
+ margin: 0;
147
+ flex: 1;
148
+ box-shadow: none;
149
+ overflow: hidden;
150
+ text-overflow: ellipsis;
151
+ white-space: nowrap;
152
 
153
+ &:focus{
154
+ box-shadow: none;
155
+ }
156
  }
157
 
158
+ button{
159
+ border-radius: $radius;
160
+ z-index: 1;
161
  }
162
  }
 
163
 
164
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/sass/_admin-toolbar.scss ADDED
@@ -0,0 +1,152 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .ctct-header{
2
+ display: none;
3
+ position: relative;
4
+ z-index: 2;
5
+ @include wider-than('xsmall') {
6
+ margin: 0 0 0 -20px;
7
+ padding: 0 0 0 20px;
8
+ background-color: $color-white;
9
+ border-bottom: 1px solid #c3c4c7;
10
+ display: flex;
11
+ width: 100%;
12
+ align-items: center;
13
+ }
14
+
15
+ h2{
16
+ margin: 0;
17
+ padding: 0 0 0 39px;
18
+ min-height: 32px;
19
+ line-height: 32px;
20
+ background: $color-white url( ../images/ctct-icon-2x.png ) no-repeat 0 48%;
21
+ background-size: 32px 32px;
22
+ text-indent: -9999px;
23
+ @include wider-than('small') {
24
+ text-indent: 0;
25
+ }
26
+ }
27
+
28
+ ul{
29
+ padding: 0 0 0 20px;
30
+ margin: 0;
31
+ flex: 1;
32
+ display: flex;
33
+ align-items: center;
34
+ width: 100%;
35
+
36
+ li{
37
+ margin: 0 15px 0 0;
38
+ padding: 0;
39
+
40
+ a{
41
+ padding: 20px 5px;
42
+ display: block;
43
+ text-decoration: none;
44
+ position: relative;
45
+
46
+ &.is-active{
47
+ font-weight: 600;
48
+ text-decoration: underline;
49
+
50
+ &::after,
51
+ &::before {
52
+ top: 100%;
53
+ left: 50%;
54
+ border: solid transparent;
55
+ content: "";
56
+ height: 0;
57
+ width: 0;
58
+ position: absolute;
59
+ pointer-events: none;
60
+ }
61
+
62
+ &::after {
63
+ border-color: rgba(255, 255, 255, 0);
64
+ border-top-color: $color-white;
65
+ border-width: 7px;
66
+ margin-left: -7px;
67
+ }
68
+
69
+ &::before {
70
+ border-color: rgba( #c3c4c7, 0);
71
+ border-top-color: #c3c4c7;
72
+ border-width: 8px;
73
+ margin-left: -8px;
74
+ }
75
+ }
76
+
77
+ &.ctct-connect-btn{
78
+ color: $color-white;
79
+ background-color: $color-blue;
80
+ border: 1px solid $color-blue-alt;
81
+ padding: 8px;
82
+ border-radius: 3px;
83
+ font-weight: 500;
84
+
85
+ &:hover,
86
+ &:focus{
87
+ background-color: $color-blue-alt;
88
+ }
89
+ }
90
+
91
+ &.ctct-disconnect{
92
+
93
+ a{
94
+ background-color: $color-orange;
95
+ border: 1px solid $color-orange-alt;
96
+
97
+ &:hover,
98
+ &:focus{
99
+ background-color: $color-orange-alt;
100
+ }
101
+ }
102
+ }
103
+ }
104
+ }
105
+ }
106
+
107
+ .ctct-status{
108
+ display: none;
109
+ @include wider-than('medium') {
110
+ display: flex;
111
+ }
112
+ align-items: center;
113
+ margin-right: 20px;
114
+ font-weight: 500;
115
+ padding: 7px 10px;
116
+ border: 1px solid $color-white;
117
+ border-radius: $radius;
118
+ text-decoration: none;
119
+ color: $color-modal-alt-text;
120
+
121
+ &:hover,
122
+ &:focus{
123
+ color: $color-black;
124
+ border-color: $color-silver;
125
+ box-shadow: $shadow;
126
+ }
127
+
128
+ &:focus{
129
+ background-color: $color-lighter-gray;
130
+ color: $color-black;
131
+ box-shadow: none;
132
+ }
133
+
134
+ &::before{
135
+ content: '';
136
+ display: block;
137
+ width: 10px;
138
+ height: 10px;
139
+ border-radius: 100%;
140
+ background-color: $color-red;
141
+ margin-right: 7px;
142
+ box-shadow: 0 0 5px rgba(0, 0, 0, 0.2);
143
+ }
144
+
145
+ &.ctct-connected{
146
+
147
+ &::before{
148
+ background-color: $color-green;;
149
+ }
150
+ }
151
+ }
152
+ }
assets/sass/_compatibility.scss CHANGED
@@ -1,7 +1,149 @@
1
  // sass-lint:disable class-name-format no-qualifying-elements id-name-format
 
2
  .ctct-twentyfourteen {
3
 
4
- .ctct-form-field input {
 
 
 
 
 
 
5
  width: 100%;
6
  }
7
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  // sass-lint:disable class-name-format no-qualifying-elements id-name-format
2
+
3
  .ctct-twentyfourteen {
4
 
5
+ .ctct-form-description ~ .ctct-button {
6
+ display: inline-block;
7
+ font-size: 1rem;
8
+ margin-bottom: 25px;
9
+ }
10
+
11
+ .ctct-form-field input:not(.ctct-checkbox) {
12
  width: 100%;
13
  }
14
  }
15
+
16
+ .ctct-twentyfifteen {
17
+
18
+ .ctct-form-description ~ .ctct-button {
19
+ display: inline-block;
20
+ font-size: 1rem;
21
+ margin-bottom: 25px;
22
+ }
23
+
24
+ .ctct-form-field {
25
+
26
+ input[type="tel"] {
27
+ padding: 0.5278em;
28
+ width: 100%;
29
+ }
30
+ }
31
+
32
+ .ctct-form-wrapper {
33
+
34
+ .ctct-input-container {
35
+
36
+ label {
37
+ font-size: 75%;
38
+ }
39
+ }
40
+ }
41
+ }
42
+
43
+ .ctct-twentysixteen {
44
+
45
+ .ctct-form-description ~ .ctct-button {
46
+ display: inline-block;
47
+ margin-bottom: 25px;
48
+ }
49
+
50
+ .ctct-form-wrapper {
51
+
52
+ span.ctct-label-right {
53
+ width: 80%;
54
+ }
55
+ }
56
+ }
57
+
58
+ .ctct-twentyseventeen {
59
+
60
+ .ctct-form-description ~ .ctct-button {
61
+ display: inline-block;
62
+ margin-bottom: 25px;
63
+ }
64
+
65
+ .ctct-form-wrapper {
66
+
67
+ .ctct-input-container {
68
+
69
+ label {
70
+ display: inline;
71
+ }
72
+ }
73
+
74
+ span.ctct-label-right {
75
+ width: 80%;
76
+ }
77
+ }
78
+ }
79
+
80
+ .ctct-twentynineteen {
81
+
82
+ .ctct-form-description ~ .ctct-button {
83
+ margin-bottom: 25px;
84
+ }
85
+
86
+ .ctct-address {
87
+ margin-bottom: 1rem;
88
+ }
89
+
90
+ .ctct-form-field {
91
+
92
+ input[type="text"],
93
+ input[type="email"],
94
+ input[type="url"],
95
+ input[type="tel"] {
96
+ width: 100%;
97
+ }
98
+ }
99
+ @media screen and (max-width: 414px) {
100
+
101
+ .ctct-form-wrapper {
102
+
103
+ span.ctct-label-right {
104
+ width: 80%;
105
+ }
106
+ }
107
+ }
108
+ }
109
+
110
+ .ctct-twentytwenty {
111
+
112
+ .ctct-form-description ~ .ctct-button {
113
+ margin-bottom: 25px;
114
+ }
115
+
116
+ .ctct-form-wrapper {
117
+
118
+ .ctct-form {
119
+
120
+ abbr {
121
+ font-size: 1.6rem;
122
+ }
123
+ }
124
+
125
+ .ctct-input-container {
126
+
127
+ label {
128
+ font-size: 1.6rem;
129
+ }
130
+ }
131
+ }
132
+ }
133
+
134
+ .ctct-twentytwentyone {
135
+
136
+ .ctct-button{
137
+ padding: 0 !important;
138
+ }
139
+
140
+ .ctct-form-field {
141
+
142
+ input[type="text"],
143
+ input[type="email"],
144
+ input[type="url"],
145
+ input[type="tel"] {
146
+ width: 100%;
147
+ }
148
+ }
149
+ }
assets/sass/_forms.scss CHANGED
@@ -2,6 +2,7 @@
2
  //--------------------------------------------------------------
3
  // FORMS
4
  //--------------------------------------------------------------
 
5
  .ctct-form-wrapper {
6
 
7
  .ctct-form {
@@ -52,5 +53,5 @@
52
  padding: 0;
53
  }
54
  }
55
- }
56
  }
2
  //--------------------------------------------------------------
3
  // FORMS
4
  //--------------------------------------------------------------
5
+
6
  .ctct-form-wrapper {
7
 
8
  .ctct-form {
53
  padding: 0;
54
  }
55
  }
56
+ }
57
  }
assets/sass/_global.scss CHANGED
@@ -2,6 +2,7 @@
2
  //--------------------------------------------------------------
3
  // Global styling goes here
4
  //--------------------------------------------------------------
 
5
  .ctct-form-wrapper {
6
 
7
  .ctct-button {
2
  //--------------------------------------------------------------
3
  // Global styling goes here
4
  //--------------------------------------------------------------
5
+
6
  .ctct-form-wrapper {
7
 
8
  .ctct-button {
assets/sass/_inputs.scss CHANGED
@@ -2,9 +2,11 @@
2
  //--------------------------------------------------------------
3
  // INPUTS
4
  //--------------------------------------------------------------
 
5
  .ctct-form-wrapper {
6
 
7
  input {
 
8
  &[type='text'],
9
  &[type='email'],
10
  &[type='password'],
@@ -12,7 +14,7 @@
12
  &[type='number'] {
13
 
14
  &:required:valid {
15
- background-image: url( '../images/check_circle.svg' );
16
  background-position: 8px 50%;
17
  background-repeat: no-repeat;
18
  background-size: 18px;
@@ -22,7 +24,7 @@
22
 
23
  &:required.ctct-invalid,
24
  &.ctct-invalid {
25
- background: $color-white url( '../images/error.svg' ) no-repeat;
26
  background-color: fade-out($color-error, 0.98);
27
  background-position: 8px 50%;
28
  background-size: 24px;
@@ -39,7 +41,7 @@
39
  }
40
 
41
  input.ctct-invalid {
42
- background: $color-white url( '../images/error.svg' ) no-repeat;
43
  background-color: fade-out($color-error, 0.98);
44
  background-position: 8px 50%;
45
  background-size: 24px;
@@ -93,7 +95,7 @@
93
  }
94
 
95
  .no-recaptcha .ctct-submitted:disabled {
96
- background-image: url('../images/oval.min.svg');
97
  background-position: center;
98
  background-repeat: no-repeat;
99
  color: transparent;
@@ -103,5 +105,5 @@
103
 
104
  .has-recaptcha .ctct-submitted:disabled {
105
  cursor: not-allowed;
106
- }
107
- }
2
  //--------------------------------------------------------------
3
  // INPUTS
4
  //--------------------------------------------------------------
5
+
6
  .ctct-form-wrapper {
7
 
8
  input {
9
+
10
  &[type='text'],
11
  &[type='email'],
12
  &[type='password'],
14
  &[type='number'] {
15
 
16
  &:required:valid {
17
+ background-image: url( ../images/check_circle.svg );
18
  background-position: 8px 50%;
19
  background-repeat: no-repeat;
20
  background-size: 18px;
24
 
25
  &:required.ctct-invalid,
26
  &.ctct-invalid {
27
+ background: $color-white url( ../images/error.svg ) no-repeat;
28
  background-color: fade-out($color-error, 0.98);
29
  background-position: 8px 50%;
30
  background-size: 24px;
41
  }
42
 
43
  input.ctct-invalid {
44
+ background: $color-white url( ../images/error.svg ) no-repeat;
45
  background-color: fade-out($color-error, 0.98);
46
  background-position: 8px 50%;
47
  background-size: 24px;
95
  }
96
 
97
  .no-recaptcha .ctct-submitted:disabled {
98
+ background-image: url( ../images/oval.min.svg );
99
  background-position: center;
100
  background-repeat: no-repeat;
101
  color: transparent;
105
 
106
  .has-recaptcha .ctct-submitted:disabled {
107
  cursor: not-allowed;
108
+ }
109
+ }
assets/sass/_layout.scss CHANGED
@@ -2,6 +2,7 @@
2
  //--------------------------------------------------------------
3
  // Layout helpers
4
  //--------------------------------------------------------------
 
5
  .ctct-form-wrapper {
6
 
7
  .ctct-form-field {
2
  //--------------------------------------------------------------
3
  // Layout helpers
4
  //--------------------------------------------------------------
5
+
6
  .ctct-form-wrapper {
7
 
8
  .ctct-form-field {
assets/sass/_mixins.scss CHANGED
@@ -11,7 +11,7 @@
11
  @mixin wider-than( $breakpoint ) {
12
 
13
  @if map-has-key( $breakpoints, $breakpoint ) {
14
- @media ( min-width: map-get( $breakpoints, $breakpoint ) ) {
15
  @content;
16
  }
17
  } @else {
11
  @mixin wider-than( $breakpoint ) {
12
 
13
  @if map-has-key( $breakpoints, $breakpoint ) {
14
+ @media (min-width: map-get($breakpoints, $breakpoint)) {
15
  @content;
16
  }
17
  } @else {
assets/sass/_modal.scss CHANGED
@@ -22,6 +22,11 @@
22
  font-weight: 400;
23
  line-height: 1.2;
24
  margin: 0;
 
 
 
 
 
25
  }
26
 
27
  h3 {
@@ -70,14 +75,15 @@
70
  border-radius: 8px;
71
  box-shadow: 0 0 15px 0 $color-modal-background;
72
  padding: 0;
73
- position: relative;
74
 
75
  .ctct-modal-header {
76
- background: $color-sky-blue url('../images/cc-modal-bg.png') 50% 50% no-repeat;
77
  border-top-left-radius: 8px;
78
  border-top-right-radius: 8px;
79
- padding: 65px 20px 40px;
80
  text-align: center;
 
81
 
82
  p {
83
  color: $color-white;
@@ -89,35 +95,32 @@
89
  }
90
  }
91
 
92
- .ctct-logo {
93
- img {
94
- max-width: 75%;
95
- }
96
- }
97
-
98
  .ctct-modal-close {
99
  @include clearfix;
100
- color: $color-white;
101
  cursor: pointer;
102
  font-size: 26px;
103
- height: 16px;
104
  line-height: 0;
105
  margin: 0;
106
  padding: 0;
107
  position: absolute;
108
- right: 10px;
 
109
  text-decoration: none;
110
- top: 18px;
111
- width: 16px;
 
 
 
112
  }
113
  }
114
 
115
  .ctct-modal-footer {
116
- background-color: $color-alt-silver;
117
  border-bottom-left-radius: 8px;
118
  border-bottom-right-radius: 8px;
119
- border-top: 3px solid $color-white;
120
- padding: 15px 15px 18px;
121
  text-align: center;
122
 
123
  p {
@@ -157,6 +160,7 @@
157
  border: none;
158
  box-shadow: none;
159
  color: $color-prussian-blue;
 
160
  }
161
 
162
  &.button-orange {
@@ -188,7 +192,7 @@
188
 
189
  &.ctct-privacy-modal-body {
190
  height: 350px;
191
- overflow: scroll;
192
  }
193
 
194
  .ctct-modal-left,
@@ -262,10 +266,6 @@
262
  .ctct-modal-right {
263
  border: none;
264
  padding: 15px;
265
-
266
- img {
267
- max-width: 100%;
268
- }
269
  }
270
  }
271
 
22
  font-weight: 400;
23
  line-height: 1.2;
24
  margin: 0;
25
+
26
+ img {
27
+ display: block;
28
+ max-width: 300px;
29
+ }
30
  }
31
 
32
  h3 {
75
  border-radius: 8px;
76
  box-shadow: 0 0 15px 0 $color-modal-background;
77
  padding: 0;
78
+ position: relative;
79
 
80
  .ctct-modal-header {
81
+ background: $color-lighter-gray;
82
  border-top-left-radius: 8px;
83
  border-top-right-radius: 8px;
84
+ padding: 30px;
85
  text-align: center;
86
+ border-bottom: 1px solid $color-white;
87
 
88
  p {
89
  color: $color-white;
95
  }
96
  }
97
 
 
 
 
 
 
 
98
  .ctct-modal-close {
99
  @include clearfix;
100
+ color: $color-black;
101
  cursor: pointer;
102
  font-size: 26px;
 
103
  line-height: 0;
104
  margin: 0;
105
  padding: 0;
106
  position: absolute;
107
+ right: 15px;
108
+ top: 15px;
109
  text-decoration: none;
110
+ width: 24px;
111
+ height: 24px;
112
+ display: flex;
113
+ align-items: center;
114
+ justify-content: center;
115
  }
116
  }
117
 
118
  .ctct-modal-footer {
119
+ background-color: $color-lighter-gray;
120
  border-bottom-left-radius: 8px;
121
  border-bottom-right-radius: 8px;
122
+ border-top: 1px solid $color-white;
123
+ padding: 20px;
124
  text-align: center;
125
 
126
  p {
160
  border: none;
161
  box-shadow: none;
162
  color: $color-prussian-blue;
163
+ background-color: $color-white;
164
  }
165
 
166
  &.button-orange {
192
 
193
  &.ctct-privacy-modal-body {
194
  height: 350px;
195
+ overflow-y: auto;
196
  }
197
 
198
  .ctct-modal-left,
266
  .ctct-modal-right {
267
  border: none;
268
  padding: 15px;
 
 
 
 
269
  }
270
  }
271
 
assets/sass/_oath.scss DELETED
@@ -1,84 +0,0 @@
1
- // sass-lint:disable class-name-format no-qualifying-elements id-name-format
2
- //--------------------------------------------------------------
3
- // Disconnect Page
4
- //--------------------------------------------------------------
5
- .ctct-logo {
6
- max-width: 400px;
7
- }
8
-
9
- .ctct_options_connect {
10
- box-sizing: border-box;
11
- padding: 70px;
12
- text-align: center;
13
- width: 100%;
14
-
15
- @media screen and (max-width: 782px) {
16
- margin-left: -10px;
17
- padding: 30px 30px 0;
18
- }
19
-
20
- img {
21
- height: auto;
22
- max-width: 400px;
23
- width: 100%;
24
- }
25
-
26
- p {
27
- color: $color-modal-alt-text;
28
- font-size: 16px;
29
- }
30
-
31
- .ctct-description {
32
- text-align: left;
33
- }
34
-
35
- .ctct-body {
36
- @include clearfix;
37
- margin: 0 auto;
38
- max-width: 75%;
39
- overflow-y: hidden;
40
- padding: 0 15px;
41
- position: relative;
42
-
43
- .notice {
44
- background: none;
45
- border-left: none;
46
- box-shadow: none;
47
- margin: 0 0 20px 0;
48
- padding: 0;
49
- }
50
-
51
- .button {
52
- border-radius: 4px;
53
- color: $color-white;
54
- font-size: 16px;
55
- font-weight: 600;
56
- height: auto;
57
- line-height: 1;
58
- margin-bottom: 10px;
59
- min-width: 180px;
60
- padding: 14px 30px;
61
-
62
- &.button-orange {
63
- background-color: $color-chrome-yellow;
64
- border: 1px solid darken($color-chrome-yellow, 10%);
65
-
66
- &:hover,
67
- &:focus {
68
- background-color: darken($color-chrome-yellow, 10%);
69
- }
70
- }
71
-
72
- &.button-blue {
73
- background-color: $color-prussian-blue;
74
- border: 1px solid darken($color-prussian-blue, 10%);
75
-
76
- &:hover,
77
- &:focus {
78
- background-color: darken($color-prussian-blue, 10%);
79
- }
80
- }
81
- }
82
- }
83
- }
84
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/sass/_variables.scss CHANGED
@@ -4,18 +4,22 @@
4
  //--------------------------------------------------------------
5
 
6
  // Primary palette
7
- $color-blue: #0074d9;
 
8
  $color-green: #2ecc40;
9
  $color-light-green: rgb(58, 209, 130);
10
  $color-red: #ff4136;
 
 
11
 
12
  // Grayscale
13
  $color-black: #000;
14
  $color-gray: #aaa;
15
  $color-silver: #ddd;
16
  $color-light-gray: #e9e9e9;
 
17
  $color-white: #fff;
18
- $color-black-translucent: rgba(0,0,0, 0.5);
19
 
20
  // Theming
21
  $color-error: $color-red;
@@ -29,13 +33,16 @@ $color-cc-blue: #1a5285;
29
  $color-alt-silver: #efefee;
30
 
31
  // text
32
- $color-modal-alt-text: #606d78;
33
  $color-modal-header: #333;
34
  $color-modal-text: #555;
35
  $color-light-silver: #747e88;
36
 
37
  // box model
38
  $padding: 1em;
 
 
 
39
 
40
  // CMB Buttons
41
  $color-cmb-button-light-blue: #008ec2;
@@ -48,6 +55,7 @@ $color-modal-background: rgba( 0, 0, 0, 0.3 );
48
 
49
  // Breakpoints
50
  $breakpoints: (
 
51
  'small': 767px,
52
  'medium': 992px,
53
  'large': 1200px
4
  //--------------------------------------------------------------
5
 
6
  // Primary palette
7
+ $color-blue: #1856ed; // #265ae5;
8
+ $color-blue-alt: #2a57d5;
9
  $color-green: #2ecc40;
10
  $color-light-green: rgb(58, 209, 130);
11
  $color-red: #ff4136;
12
+ $color-orange: #ff9500;
13
+ $color-orange-alt: #e38400;
14
 
15
  // Grayscale
16
  $color-black: #000;
17
  $color-gray: #aaa;
18
  $color-silver: #ddd;
19
  $color-light-gray: #e9e9e9;
20
+ $color-lighter-gray: #f7f7f7;
21
  $color-white: #fff;
22
+ $color-black-translucent: rgba(0,0,0, 0.5);
23
 
24
  // Theming
25
  $color-error: $color-red;
33
  $color-alt-silver: #efefee;
34
 
35
  // text
36
+ $color-modal-alt-text: #646970;
37
  $color-modal-header: #333;
38
  $color-modal-text: #555;
39
  $color-light-silver: #747e88;
40
 
41
  // box model
42
  $padding: 1em;
43
+ $radius: 4px;
44
+ $shadow: 0 1px 5px rgba(0, 0, 0, 0.055);
45
+ $shadow_lg: 0 4px 10px rgba(0, 0, 0, 0.065);
46
 
47
  // CMB Buttons
48
  $color-cmb-button-light-blue: #008ec2;
55
 
56
  // Breakpoints
57
  $breakpoints: (
58
+ 'xsmall': 599px,
59
  'small': 767px,
60
  'medium': 992px,
61
  'large': 1200px
assets/sass/admin-style.scss CHANGED
@@ -7,9 +7,11 @@
7
  @import 'mixins';
8
  @import 'modal';
9
 
 
 
 
 
10
  @import 'admin-forms';
11
- @import 'admin-global-no-connection';
12
  @import 'admin-notices';
13
  @import 'admin-pages';
14
- @import 'oath';
15
  @import 'admin-gutenberg';
7
  @import 'mixins';
8
  @import 'modal';
9
 
10
+ @import 'admin-toolbar';
11
+ @import 'admin-connect';
12
+ @import 'admin-debug';
13
+ @import 'admin-about';
14
  @import 'admin-forms';
 
15
  @import 'admin-notices';
16
  @import 'admin-pages';
 
17
  @import 'admin-gutenberg';
constant-contact-forms.php CHANGED
@@ -12,7 +12,7 @@
12
  * Plugin Name: Constant Contact Forms for WordPress
13
  * Plugin URI: https://www.constantcontact.com
14
  * Description: Be a better marketer. All it takes is Constant Contact email marketing.
15
- * Version: 1.10.1
16
  * Author: Constant Contact
17
  * Author URI: https://www.constantcontact.com/index?pn=miwordpress
18
  * License: GPLv3
@@ -72,7 +72,7 @@ class Constant_Contact {
72
  * @since 1.0.0
73
  * @var string
74
  */
75
- const VERSION = '1.10.1';
76
 
77
  /**
78
  * URL of plugin directory.
@@ -801,6 +801,11 @@ class Constant_Contact {
801
  * @since 1.4.0
802
  */
803
  public function register_front_assets() {
 
 
 
 
 
804
  wp_register_style(
805
  'ctct_form_styles',
806
  self::url() . 'assets/css/style.css',
12
  * Plugin Name: Constant Contact Forms for WordPress
13
  * Plugin URI: https://www.constantcontact.com
14
  * Description: Be a better marketer. All it takes is Constant Contact email marketing.
15
+ * Version: 1.11.0
16
  * Author: Constant Contact
17
  * Author URI: https://www.constantcontact.com/index?pn=miwordpress
18
  * License: GPLv3
72
  * @since 1.0.0
73
  * @var string
74
  */
75
+ const VERSION = '1.11.0';
76
 
77
  /**
78
  * URL of plugin directory.
801
  * @since 1.4.0
802
  */
803
  public function register_front_assets() {
804
+
805
+ if ( disable_frontend_css() ) {
806
+ return;
807
+ }
808
+
809
  wp_register_style(
810
  'ctct_form_styles',
811
  self::url() . 'assets/css/style.css',
includes/cc-modules/form/includes/frontend.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Beaver Builder Module to Display Form
4
  *
5
- * @since NEXT
6
  */
7
 
8
  if ( empty( $settings->cc_form ) ) {
2
  /**
3
  * Beaver Builder Module to Display Form
4
  *
5
+ * @since 1.10.0
6
  */
7
 
8
  if ( empty( $settings->cc_form ) ) {
includes/class-admin-pages.php CHANGED
@@ -118,72 +118,72 @@ class ConstantContact_Admin_Pages {
118
  */
119
  public function help_page() {
120
  ?>
121
- <h1>
122
  <?php esc_attr_e( 'Help / FAQ', 'constant-contact-forms' ); ?>
123
- </h1>
124
  <div class="ctct-wrap wrap">
125
  <table id="ctct-support" class="ctct-form-table">
126
- <tr>
127
- <td class="outer outer-first">
128
- <h2>
129
- <?php esc_html_e( 'Help', 'constant-contact-forms' ); ?>
130
- </h2>
131
- <ol id="help_ctct">
132
- <?php
133
- $helps = $this->get_help_texts();
134
 
135
- if ( is_array( $helps ) ) {
136
 
137
- foreach ( $helps as $help ) {
138
- if ( ! isset( $help['title'] ) || ! isset( $help['content'] ) ) {
139
- continue;
 
 
 
 
 
 
 
 
 
 
 
140
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
141
  ?>
142
  <li>
143
  <span class="question" aria-controls="q1" aria-expanded="false">
144
- <?php echo esc_html( $help['title'] ); ?>
145
  </span>
146
  <div class="answer">
147
- <?php echo esc_html( $help['content'] ); ?>
148
  </div>
149
  </li>
150
  <?php
151
- }
152
- }
153
- ?>
154
- </ol>
155
- </td>
156
- <td class="outter">
157
- <h2>
158
- <?php esc_html_e( 'FAQ', 'constant-contact-forms' ); ?>
159
- </h2>
160
- <ol id="faq_ctct">
161
- <?php
162
- $faqs = $this->get_faq_texts();
163
-
164
- if ( is_array( $faqs ) ) {
165
-
166
- foreach ( $faqs as $faq ) {
167
- if ( ! isset( $faq['title'] ) || ! isset( $faq['content'] ) ) {
168
- continue;
169
  }
170
- ?>
171
- <li>
172
- <span class="question" aria-controls="q1" aria-expanded="false">
173
- <?php echo esc_html( $faq['title'] ); ?>
174
- </span>
175
- <div class="answer">
176
- <?php echo esc_html( $faq['content'] ); ?>
177
- </div>
178
- </li>
179
- <?php
180
  }
181
- }
182
- ?>
183
- </ol>
184
- </td>
185
- </tr>
186
- </table
187
  </div>
188
  <?php
189
  }
@@ -206,145 +206,101 @@ class ConstantContact_Admin_Pages {
206
  $auth_link = add_query_arg( [ 'rmc' => 'wp_about_connect' ], $auth_link );
207
  }
208
 
209
- ?>
210
- <div class="wrap about-wrap constant-contact-about">
211
- <div class="hide-overflow">
212
- <div class="ctct-section section-about">
213
- <span class="plugin-badge">
214
- <img alt="<?php echo esc_attr_x( 'Constant Contact Logo', 'img alt text', 'constant-contact-forms' ); ?>" src="<?php echo esc_url_raw( $this->plugin->url . 'assets/images/icon.jpg' ); ?>">
215
- </span>
216
- <h1 class="about-header"><?php esc_html_e( 'Constant Contact Forms', 'constant-contact-forms' ); ?></h1>
217
- <p>
218
- <?php echo wp_kses_post( __( "This plugin makes it fast and easy to capture all kinds of visitor information right from your WordPress site—even if you don't have a Constant Contact account.", 'constant-contact-forms' ) ); ?>
219
- </p>
220
- <p>
221
- <?php esc_attr_e( "Whether you're looking to collect email addresses, contact info, or visitor feedback, you can customize your forms with data fields that work best for you.", 'constant-contact-forms' ); ?>
222
- </p>
223
- <ul class="ctct-bonus-points">
224
- <li> <?php esc_attr_e( 'Quickly create different types of forms that are clear, simple, and mobile-optimized.', 'constant-contact-forms' ); ?></li>
225
- <li> <?php esc_attr_e( 'Choose forms that automatically select the theme and style of your WordPress site.', 'constant-contact-forms' ); ?></li>
226
- <li> <?php esc_attr_e( 'Customize the form data fields, so you can tailor the type of information you collect.', 'constant-contact-forms' ); ?></li>
227
- </ul>
 
 
 
 
 
 
 
 
 
228
  </div>
 
229
 
230
- <div class="ctct-section section-try-us">
231
- <?php // phpcs:disable WordPress.Security.EscapeOutput -- OK instance of echoing without escaping. ?>
232
- <div style="float: right;" class="ctct-video"><?php echo wp_oembed_get( 'https://www.youtube.com/watch?v=MhxtAlpZzJw', [ 'width' => 400 ] ); ?></div>
233
- <?php // phpcs:enable WordPress.Security.EscapeOutput ?>
234
- <h1 class="about-header">
235
- <?php esc_html_e( 'Collecting email addresses with the plugin?', 'constant-contact-forms' ); ?>
236
- <br /><?php esc_html_e( 'Turn those contacts into customers.', 'constant-contact-forms' ); ?>
237
- </h1>
238
- <p>
239
- <?php esc_html_e( "Nurture your new contacts with a Constant Contact email marketing account even after they've left your website. Sign up for a 60-day trial account* and you can:", 'constant-contact-forms' ); ?>
240
- </p>
241
- <ul class="ctct-bonus-points">
242
- <li><?php esc_html_e( 'Seamlessly add new contacts to mailing lists.', 'constant-contact-forms' ); ?></li>
243
- <li><?php esc_html_e( 'Create and send professional emails.', 'constant-contact-forms' ); ?></li>
244
- <li><?php esc_html_e( 'Get expert marketing help and support.', 'constant-contact-forms' ); ?></li>
245
- </ul>
246
 
247
- <p>
248
- <?php if ( $new_link ) { ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
249
  <a href="<?php echo esc_url_raw( $new_link ); ?>" target="_blank" class="button button-orange" title="<?php esc_attr_e( 'Try us Free', 'constant-contact-forms' ); ?>"><?php esc_attr_e( 'Try us Free', 'constant-contact-forms' ); ?></a>
250
- <?php } ?>
251
- <?php if ( $auth_link ) { ?>
252
- <?php esc_attr_e( 'Already have a Constant Contact account?', 'constant-contact-forms' ); ?>
253
- <a href="<?php echo esc_url_raw( $auth_link ); ?>" class="ctct-connect">
254
- <?php esc_html_e( 'Connect the plugin.', 'constant-contact-forms' ); ?>
255
- </a>
256
- <?php } ?>
257
- </p>
258
- <p><?php esc_html_e( 'NOTE: You can use the Constant Contact Form plugin without a Constant Contact account. All information collected by the forms will be individually emailed to your site admin.', 'constant-contact-forms' ); ?></p>
259
- <hr>
 
 
 
260
  </div>
 
261
 
262
- <div class="ctct-section section-marketing-tips">
263
- <?php /* @todo Move to its own function/method. */ ?>
264
- <form id="subscribe" accept-charset="utf-8" action="https://cloud.c.constantcontact.com/jmmlsubscriptions/coi_verify" method="get" target="_blank">
265
- <input class="button button-blue right" id="subbutton" type="submit" value="<?php esc_attr_e( 'Sign Up', 'constant-contact-forms' ); ?>">
266
- <h1 class="about-header"><?php esc_html_e( 'Email marketing tips delivered to your inbox.', 'constant-contact-forms' ); ?></h1>
267
- <p><?php esc_html_e( 'Ready to grow with email marketing? Subscribe now for the latest tips and industry best practices to create great-looking emails that work.', 'constant-contact-forms' ); ?></p>
268
- <p><input id="subbox" maxlength="255" name="email" type="text" placeholder="<?php esc_attr_e( 'Enter your email address', 'constant-contact-forms' ); ?>">
269
- </p>
270
- <input name="sub" type="hidden" value="3" />
271
- <input name="method" type="hidden" value="JMML" />
272
- <input name="page" type="hidden" value="Sub3_Prospect" />
273
 
274
- </form>
275
- <small>
276
- <?php
277
- printf(
278
- /* Translators: Placholder is a link to Constant Contact homepage. */
279
- esc_html__( 'By submitting this form, you agree to receive periodic product announcements and account notifications from Constant Contact. Cancel these communications at any time by clicking the unsubscribe link in the footer of the actual email. Constant Contact, Inc, 1601 Trapelo Road, Waltham, MA 02451, %1$s', 'constant-contact-forms' ),
280
- '<a href="https://www.constantcontact.com">www.constantcontact.com</a>'
281
- );
282
- ?>
283
- </small>
284
- <hr>
285
- </div>
286
 
287
- <div class="clear"></div>
288
- </div>
289
- <div class="headline-feature">
290
- <div class="featured-image">
291
- <?php // Empty alt tag OK; decorative image. ?>
292
- <img alt="" src="<?php echo esc_url_raw( $this->plugin->url . 'assets/images/coffee-hero.jpg' ); ?>">
293
- <p class="featured-title c-text">
294
- <?php esc_attr_e( 'Powerful Email Marketing, Made Simple.', 'constant-contact-forms' ); ?>
295
- </p>
296
- <p class="featured-introduction c-text">
297
- <?php esc_attr_e( 'Create professional emails that bring customers to your door', 'constant-contact-forms' ); ?>
298
- </p>
299
  </div>
300
- <p class="introduction c-text">
301
- <?php esc_attr_e( "Email marketing is good for your business. $44-back-for-every-$1-spent kind of good.* And with the Constant Contact for WordPress plugin, you can easily add sign-up forms to your site so you can stay connected with visitors long after they've left.", 'constant-contact-forms' ); ?>
302
- </p>
303
- <?php
304
- $license_link = $this->plugin->admin->get_admin_link( __( 'GPLv3 license', 'constant-contact-forms' ), 'license' );
305
- if ( $license_link ) :
306
- ?>
307
- <p class="c-text">
 
308
  <?php
309
  /* Translators: Placholder here is a link to the license. */
310
  $license_message = sprintf( __( 'This software is released under a modified %s.', 'constant-contact-forms' ), $license_link );
311
  echo wp_kses_post( $license_message );
312
  ?>
313
  </p>
314
- <?php endif; ?>
315
- <h5>
316
- <?php esc_attr_e( '*Direct Marketing Association 2013 Statistical Fact Book', 'constant-contact-forms' ); ?>
317
- </h5>
318
- <div class="clear"></div>
319
- </div>
320
- <hr>
321
- <div class="cc-a-block">
322
- <div class="left">
323
- <div class="ad-1">
324
- <h3><?php esc_html_e( 'Easily Add Forms', 'constant-contact-forms' ); ?></h3>
325
- <img
326
- src="<?php echo esc_url_raw( $this->plugin->url . 'assets/images/add-forms.png' ); ?>"
327
- alt="<?php echo esc_attr_x( 'Example embedded Constant Contact form', 'img alt text', 'constant-contact-forms' ); ?>"
328
- />
329
- <p>
330
- <?php esc_html_e( 'Create forms that automatically select the theme and styling of your WordPress site for a perfect match. ', 'constant-contact-forms' ); ?>
331
- </p>
332
- </div>
333
  </div>
334
- <div class="right">
335
- <div class="ad-2">
336
- <h3><?php esc_html_e( 'Stay Connected With Your WordPress Visitors', 'constant-contact-forms' ); ?></h3>
337
- <img
338
- src="<?php echo esc_url_raw( $this->plugin->url . 'assets/images/stay-connected.png' ); ?>"
339
- alt="<?php echo esc_attr_x( 'Constant Contact list management UI', 'img alt text', 'constant-contact-forms' ); ?>"
340
- />
341
- <p>
342
- <?php esc_html_e( 'Form completions from site visitors are conveniently added to your Constant Contact email list.', 'constant-contact-forms' ); ?>
343
- </p>
344
- </div>
345
- </div>
346
- </div>
347
- </div>
348
  <?php
349
  }
350
 
@@ -356,14 +312,10 @@ class ConstantContact_Admin_Pages {
356
  public function license_page() {
357
  $license_text = $this->plugin->get_license_text();
358
  ?>
359
- <div class="wrap license-wrap constant-contact-license">
360
- <div class="hide-overflow">
361
- <div class="left-side">
362
- <h1 class="license-header"><?php esc_attr_e( 'Constant Contact Forms - License', 'constant-contact-forms' ); ?></h1>
363
- <div class="license-text">
364
- <pre><?php echo wp_kses_post( $license_text ); ?></pre>
365
- </div>
366
- </div>
367
  </div>
368
  </div>
369
  <?php
118
  */
119
  public function help_page() {
120
  ?>
121
+ <h2>
122
  <?php esc_attr_e( 'Help / FAQ', 'constant-contact-forms' ); ?>
123
+ </h2>
124
  <div class="ctct-wrap wrap">
125
  <table id="ctct-support" class="ctct-form-table">
126
+ <tr>
127
+ <td class="outer outer-first">
128
+ <h2>
129
+ <?php esc_html_e( 'Help', 'constant-contact-forms' ); ?>
130
+ </h2>
131
+ <ol id="help_ctct">
132
+ <?php
133
+ $helps = $this->get_help_texts();
134
 
135
+ if ( is_array( $helps ) ) {
136
 
137
+ foreach ( $helps as $help ) {
138
+ if ( ! isset( $help['title'] ) || ! isset( $help['content'] ) ) {
139
+ continue;
140
+ }
141
+ ?>
142
+ <li>
143
+ <span class="question" aria-controls="q1" aria-expanded="false">
144
+ <?php echo esc_html( $help['title'] ); ?>
145
+ </span>
146
+ <div class="answer">
147
+ <?php echo esc_html( $help['content'] ); ?>
148
+ </div>
149
+ </li>
150
+ <?php
151
  }
152
+ }
153
+ ?>
154
+ </ol>
155
+ </td>
156
+ <td class="outter">
157
+ <h2>
158
+ <?php esc_html_e( 'FAQ', 'constant-contact-forms' ); ?>
159
+ </h2>
160
+ <ol id="faq_ctct">
161
+ <?php
162
+ $faqs = $this->get_faq_texts();
163
+
164
+ if ( is_array( $faqs ) ) {
165
+
166
+ foreach ( $faqs as $faq ) {
167
+ if ( ! isset( $faq['title'] ) || ! isset( $faq['content'] ) ) {
168
+ continue;
169
+ }
170
  ?>
171
  <li>
172
  <span class="question" aria-controls="q1" aria-expanded="false">
173
+ <?php echo esc_html( $faq['title'] ); ?>
174
  </span>
175
  <div class="answer">
176
+ <?php echo esc_html( $faq['content'] ); ?>
177
  </div>
178
  </li>
179
  <?php
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
180
  }
 
 
 
 
 
 
 
 
 
 
181
  }
182
+ ?>
183
+ </ol>
184
+ </td>
185
+ </tr>
186
+ </table>
 
187
  </div>
188
  <?php
189
  }
206
  $auth_link = add_query_arg( [ 'rmc' => 'wp_about_connect' ], $auth_link );
207
  }
208
 
209
+ ?>
210
+
211
+ <h2><?php esc_html_e( 'About Constant Contact Forms', 'constant-contact-forms' ); ?></h2>
212
+
213
+ <div class="constant-contact-about">
214
+
215
+ <div class="ctct-section section-about">
216
+ <p class="large-text">
217
+ <?php echo wp_kses_post( __( "This plugin makes it fast and easy to capture all kinds of visitor information right from your WordPress site—even if you don't have a Constant Contact account.", 'constant-contact-forms' ) ); ?>
218
+ </p>
219
+ </div>
220
+ <div class="ctct-section ctct-features">
221
+ <div class="ctct-video-cta">
222
+ <div>
223
+ <div class="iframe-wrap">
224
+ <iframe src="https://www.youtube.com/embed/Qqb0_zcRKnM" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
225
+ </div>
226
+ </div>
227
+ <div>
228
+ <p>
229
+ <?php esc_attr_e( "Whether you're looking to collect email addresses, contact info, or visitor feedback, you can customize your forms with data fields that work best for you.", 'constant-contact-forms' ); ?>
230
+ </p>
231
+ <ul class="ctct-bonus-points">
232
+ <li> <?php esc_attr_e( 'Quickly create different types of forms that are clear, simple, and mobile-optimized.', 'constant-contact-forms' ); ?></li>
233
+ <li> <?php esc_attr_e( 'Choose forms that automatically select the theme and style of your WordPress site.', 'constant-contact-forms' ); ?></li>
234
+ <li> <?php esc_attr_e( 'Customize the form data fields, so you can tailor the type of information you collect.', 'constant-contact-forms' ); ?></li>
235
+ </ul>
236
+ </div>
237
  </div>
238
+ </div>
239
 
240
+ <?php if ( $new_link || $auth_link ) { ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
241
 
242
+ <div class="ctct-section section-try-us">
243
+ <h2>
244
+ <?php esc_html_e( 'Turn Contacts into Customers.', 'constant-contact-forms' ); ?>
245
+ </h2>
246
+ <p>
247
+ <?php esc_html_e( "Nurture your new contacts with a Constant Contact email marketing account even after they've left your website. Sign up for a 60-day trial account* and you can:", 'constant-contact-forms' ); ?>
248
+ </p>
249
+ <ul class="ctct-bonus-points">
250
+ <li><?php esc_html_e( 'Seamlessly add new contacts to mailing lists.', 'constant-contact-forms' ); ?></li>
251
+ <li><?php esc_html_e( 'Create and send professional emails.', 'constant-contact-forms' ); ?></li>
252
+ <li><?php esc_html_e( 'Get expert marketing help and support.', 'constant-contact-forms' ); ?></li>
253
+ </ul>
254
+ <hr />
255
+ <div class="ctct-try-us-cta">
256
+ <?php if ( $new_link ) { ?>
257
+ <div class="item">
258
  <a href="<?php echo esc_url_raw( $new_link ); ?>" target="_blank" class="button button-orange" title="<?php esc_attr_e( 'Try us Free', 'constant-contact-forms' ); ?>"><?php esc_attr_e( 'Try us Free', 'constant-contact-forms' ); ?></a>
259
+ </div>
260
+ <?php } ?>
261
+ <?php if ( $auth_link ) { ?>
262
+ <div class="item">
263
+ <p><?php esc_attr_e( 'Already have a Constant Contact account?', 'constant-contact-forms' ); ?>
264
+ <strong>
265
+ <a href="<?php echo esc_url_raw( $auth_link ); ?>" class="ctct-connect">
266
+ <?php esc_html_e( 'Connect the Plugin', 'constant-contact-forms' ); ?>
267
+ </a>
268
+ </strong>
269
+ </p>
270
+ </div>
271
+ <?php } ?>
272
  </div>
273
+ </div>
274
 
275
+ <p class="small-text"><strong><?php esc_html_e( 'NOTE:', 'constant-contact-forms' ); ?></strong> <?php esc_html_e( 'You can use the Constant Contact Form plugin without a Constant Contact account. All information collected by the forms will be individually emailed to your site admin.', 'constant-contact-forms' ); ?></p>
 
 
 
 
 
 
 
 
 
 
276
 
277
+ <?php } else { ?>
 
 
 
 
 
 
 
 
 
 
 
278
 
279
+ <div class="ctct-section">
280
+ <div class="ctct-button-actions">
281
+ <a href="post-new.php?post_type=ctct_forms" class="button button-primary"><?php esc_html_e( 'Add Contact Form', 'constant-contact-forms' ); ?></a>
282
+ <a href="edit.php?post_type=ctct_lists" class="button"><?php esc_html_e( 'View Lists', 'constant-contact-forms' ); ?></a>
283
+ </div>
 
 
 
 
 
 
 
284
  </div>
285
+
286
+ <?php } ?>
287
+
288
+ <?php
289
+ $license_link = $this->plugin->admin->get_admin_link( __( 'GPLv3 license', 'constant-contact-forms' ), 'license' );
290
+ if ( $license_link ) :
291
+ ?>
292
+ <div class="ctct-license">
293
+ <p class="small-text">
294
  <?php
295
  /* Translators: Placholder here is a link to the license. */
296
  $license_message = sprintf( __( 'This software is released under a modified %s.', 'constant-contact-forms' ), $license_link );
297
  echo wp_kses_post( $license_message );
298
  ?>
299
  </p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
300
  </div>
301
+ <?php endif; ?>
302
+
303
+ </div>
 
 
 
 
 
 
 
 
 
 
 
304
  <?php
305
  }
306
 
312
  public function license_page() {
313
  $license_text = $this->plugin->get_license_text();
314
  ?>
315
+ <h2><?php esc_attr_e( 'Constant Contact Forms - License', 'constant-contact-forms' ); ?></h2>
316
+ <div class="constant-contact-license">
317
+ <div class="license-text">
318
+ <pre><?php echo wp_kses_post( $license_text ); ?></pre>
 
 
 
 
319
  </div>
320
  </div>
321
  <?php
includes/class-admin.php CHANGED
@@ -93,6 +93,8 @@ class ConstantContact_Admin {
93
  * @since 1.0.0
94
  */
95
  public function hooks() {
 
 
96
  add_action( 'admin_init', [ $this, 'init' ] );
97
  add_action( 'admin_menu', [ $this, 'add_options_page' ], 999 );
98
 
@@ -107,6 +109,114 @@ class ConstantContact_Admin {
107
  add_action( 'admin_enqueue_scripts', [ $this, 'scripts' ] );
108
  }
109
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
110
 
111
  /**
112
  * Register our setting to WordPress.
@@ -146,6 +256,7 @@ class ConstantContact_Admin {
146
 
147
  // Include CMB CSS in the head to avoid FOUC.
148
  add_action( "admin_print_styles-{$this->options_page}", [ 'CMB2_hookup', 'enqueue_cmb_css' ] );
 
149
  }
150
 
151
  /**
@@ -163,37 +274,35 @@ class ConstantContact_Admin {
163
  do_action( 'constant_contact_admin_before' );
164
 
165
  ?>
166
- <div class="wrap cmb2-options-page <?php echo esc_attr( $this->key ); ?>">
167
-
168
- <div id="options-wrap">
169
- <?php
170
-
171
- $page = [];
172
- // phpcs:disable WordPress.Security.NonceVerification -- OK accessing of $_GET values.
173
- if ( isset( $_GET['page'] ) ) {
174
- $page_key = sanitize_text_field( wp_unslash( $_GET['page'] ) );
175
- $page = explode( $this->key . '_', $page_key );
176
- }
177
- // phpcs:enable WordPress.Security.NonceVerification
178
-
179
- if ( isset( $page[1] ) && $page[1] ) {
180
-
181
- switch ( esc_attr( $page[1] ) ) {
182
- case 'about':
183
- constant_contact()->admin_pages->about_page();
184
- break;
185
- case 'help':
186
- constant_contact()->admin_pages->help_page();
187
- break;
188
- case 'license':
189
- constant_contact()->admin_pages->license_page();
190
- break;
191
- }
192
- } else {
193
- cmb2_metabox_form( $this->metabox_id, $this->key );
194
  }
195
- ?>
196
- </div>
 
 
197
  </div>
198
  <?php
199
 
@@ -289,7 +398,13 @@ class ConstantContact_Admin {
289
 
290
  switch ( $column ) {
291
  case 'shortcodes':
 
292
  echo esc_html( '[ctct form="' . $post_id . '" show_title="false"]' );
 
 
 
 
 
293
  break;
294
  case 'description':
295
  echo wp_kses_post( wpautop( get_post_meta( $post_id, '_ctct_description', true ) ) );
93
  * @since 1.0.0
94
  */
95
  public function hooks() {
96
+
97
+ add_action( 'current_screen', [ $this, 'current_screen' ] );
98
  add_action( 'admin_init', [ $this, 'init' ] );
99
  add_action( 'admin_menu', [ $this, 'add_options_page' ], 999 );
100
 
109
  add_action( 'admin_enqueue_scripts', [ $this, 'scripts' ] );
110
  }
111
 
112
+ /**
113
+ * Adds functionality to Constant Contact admin screen.
114
+ *
115
+ * @param array $screen Details on the current admin screen.
116
+ * @return void
117
+ * @since 1.11.0
118
+ * @author Darren Cooney <darren.cooney@webdevstudios.com>
119
+ */
120
+ public function current_screen( $screen ) {
121
+
122
+ $post_type_array = [ 'ctct_forms', 'ctct_lists' ];
123
+
124
+ // Determine if the current page being viewed is Constant Contact.
125
+ if ( constant_contact()->is_constant_contact() ) {
126
+ add_action( 'in_admin_header', [ $this, 'admin_page_toolbar' ] );
127
+ }
128
+ }
129
+
130
+
131
+ /**
132
+ * Build the Constant Contact header toolbar.
133
+ *
134
+ * @return void
135
+ * @since 1.11.0
136
+ * @author Darren Cooney <darren.cooney@webdevstudios.com>
137
+ */
138
+ public function admin_page_toolbar(){
139
+
140
+ global $submenu, $submenu_file, $plugin_page, $pagenow;
141
+
142
+ // Vars.
143
+ $cpt_slug = "ctct_forms";
144
+ $parent_slug = "edit.php?post_type=$cpt_slug";
145
+
146
+ // Generate array of menu items.
147
+ $tabs = array();
148
+
149
+ if ( isset( $submenu[ $parent_slug ] ) ) {
150
+ foreach ( $submenu[ $parent_slug ] as $i => $sub_item ) {
151
+
152
+ // Check user can access page.
153
+ if ( ! current_user_can( $sub_item[1] ) ) {
154
+ continue;
155
+ }
156
+
157
+ // Ignore "Add New".
158
+ if( $i === 10 ) {
159
+ continue;
160
+ }
161
+
162
+ // Define tab.
163
+ $tab = array(
164
+ 'text' => $sub_item[0],
165
+ 'url' => $sub_item[2]
166
+ );
167
+
168
+ // Convert submenu slug to "$parent_slug&page=test".
169
+ if( !strpos($sub_item[2], '.php') ) {
170
+ $tab['url'] = add_query_arg( array( 'page' => $sub_item[2] ), $parent_slug );
171
+ }
172
+
173
+ // Detect active state.
174
+ if( $submenu_file === $sub_item[2] || $plugin_page === $sub_item[2] ) {
175
+ $tab['is_active'] = true;
176
+ }
177
+
178
+ // Special case for "Add New" page.
179
+ if( $i === 5 && $submenu_file === "post-new.php?post_type=$cpt_slug" ) {
180
+ $tab['is_active'] = true;
181
+ }
182
+
183
+ $tabs[] = $tab;
184
+ }
185
+ }
186
+
187
+ $connect_title = esc_html__( 'Connected', 'constant-contact-forms' );
188
+ $connect_alt = esc_html__( 'Your Constant Contact account is connected!', 'constant-contact-forms' );
189
+ $api_status = esc_html( 'connected' );
190
+ if ( ! constant_contact()->api->is_connected() ) {
191
+ $connect_title = esc_html__( 'Disconnected', 'constant-contact-forms' );
192
+ $connect_alt = esc_html__( 'Your Constant Contact account is not connected.', 'constant-contact-forms' );
193
+ $api_status = esc_html( 'disconnected' );
194
+ }
195
+ ?>
196
+ <div class="ctct-header">
197
+ <h2><?php esc_html_e( 'Constant Contact', 'constant-contact-forms' ); ?></h2>
198
+ <?php
199
+ if ( $tabs ) {
200
+ echo wp_kses( '<ul>', [ 'ul' => [] ] );
201
+ foreach( $tabs as $tab ) {
202
+ echo wp_kses( '<li>', [ 'li' => [] ] );
203
+ printf(
204
+ '<a class="ctct-item%s" href="%s">%s</a>',
205
+ ! empty( $tab['is_active'] ) ? ' is-active' : '',
206
+ esc_url( $tab['url'] ),
207
+ esc_html( $tab['text'] )
208
+ );
209
+ echo wp_kses( '</li>', [ 'li' => [] ] );
210
+ }
211
+ echo wp_kses( '</ul>', [ 'ul' => [] ] );
212
+ }
213
+ ?>
214
+ <a href="edit.php?post_type=ctct_forms&page=ctct_options_connect" class="ctct-status ctct-<?php echo $api_status; ?>" title="<?php echo $connect_alt; ?>">
215
+ <?php echo $connect_title; ?>
216
+ </a>
217
+ </div>
218
+ <?php
219
+ }
220
 
221
  /**
222
  * Register our setting to WordPress.
256
 
257
  // Include CMB CSS in the head to avoid FOUC.
258
  add_action( "admin_print_styles-{$this->options_page}", [ 'CMB2_hookup', 'enqueue_cmb_css' ] );
259
+
260
  }
261
 
262
  /**
274
  do_action( 'constant_contact_admin_before' );
275
 
276
  ?>
277
+ <div class="wrap cmb2-options-page <?php echo esc_attr( $this->key ); ?> ctct-page-wrap">
278
+
279
+ <?php
280
+
281
+ $page = [];
282
+ // phpcs:disable WordPress.Security.NonceVerification -- OK accessing of $_GET values.
283
+ if ( isset( $_GET['page'] ) ) {
284
+ $page_key = sanitize_text_field( wp_unslash( $_GET['page'] ) );
285
+ $page = explode( $this->key . '_', $page_key );
286
+ }
287
+ // phpcs:enable WordPress.Security.NonceVerification
288
+
289
+ if ( isset( $page[1] ) && $page[1] ) {
290
+
291
+ switch ( esc_attr( $page[1] ) ) {
292
+ case 'about':
293
+ constant_contact()->admin_pages->about_page();
294
+ break;
295
+ case 'help':
296
+ constant_contact()->admin_pages->help_page();
297
+ break;
298
+ case 'license':
299
+ constant_contact()->admin_pages->license_page();
300
+ break;
 
 
 
 
301
  }
302
+ } else {
303
+ cmb2_metabox_form( $this->metabox_id, $this->key );
304
+ }
305
+ ?>
306
  </div>
307
  <?php
308
 
398
 
399
  switch ( $column ) {
400
  case 'shortcodes':
401
+ echo '<div class="ctct-shortcode-wrap"><input class="ctct-shortcode" type="text" value="';
402
  echo esc_html( '[ctct form="' . $post_id . '" show_title="false"]' );
403
+ echo '" readonly="readonly">';
404
+ echo '<button type="button" class="button" data-copied="' . esc_html( 'Copied!', 'constant-contact-forms' ) . '">';
405
+ echo esc_html__( 'Copy', 'constant-contact-forms' );
406
+ echo '</button>';
407
+ echo '</div>';
408
  break;
409
  case 'description':
410
  echo wp_kses_post( wpautop( get_post_meta( $post_id, '_ctct_description', true ) ) );
includes/class-api.php CHANGED
@@ -528,7 +528,7 @@ class ConstantContact_API {
528
  $errors = $ex->getErrors();
529
  $our_errors[] = $extra . ' - ' . $errors[0]->error_key . ' - ' . $errors[0]->error_message;
530
  $this->log_errors( $our_errors );
531
- if ( 400 !== $ex->getCode() || false === strpos( $ex->getMessage(), 'Bad request' ) ) {
532
  constant_contact_set_has_exceptions();
533
  }
534
  } catch ( Exception $ex ) {
@@ -537,7 +537,7 @@ class ConstantContact_API {
537
  $error->error_message = $ex->getMessage();
538
 
539
  add_filter( 'constant_contact_force_logging', '__return_true' );
540
- if ( 400 !== $ex->getCode() || false === strpos( $ex->getMessage(), 'Bad request' ) ) {
541
  constant_contact_set_has_exceptions();
542
  }
543
 
528
  $errors = $ex->getErrors();
529
  $our_errors[] = $extra . ' - ' . $errors[0]->error_key . ' - ' . $errors[0]->error_message;
530
  $this->log_errors( $our_errors );
531
+ if ( 400 !== $ex->getCode() || false !== strpos( $ex->getMessage(), 'Bad request' ) ) {
532
  constant_contact_set_has_exceptions();
533
  }
534
  } catch ( Exception $ex ) {
537
  $error->error_message = $ex->getMessage();
538
 
539
  add_filter( 'constant_contact_force_logging', '__return_true' );
540
+ if ( 400 !== $ex->getCode() || false !== strpos( $ex->getMessage(), 'Bad request' ) ) {
541
  constant_contact_set_has_exceptions();
542
  }
543
 
includes/class-beaver-builder.php CHANGED
@@ -5,7 +5,7 @@
5
  * @package ConstantContact
6
  * @subpackage Beaver Builder
7
  * @author Constant Contact
8
- * @since NEXT
9
  *
10
  * phpcs:disable WebDevStudios.All.RequireAuthor -- Don't require author tag in docblocks.
11
  */
@@ -13,14 +13,14 @@
13
  /**
14
  * This class get's everything up an running for Beaver Builder support.
15
  *
16
- * @since NEXT
17
  */
18
  class ConstantContact_Beaver_Builder {
19
 
20
  /**
21
  * Parent plugin class.
22
  *
23
- * @since NEXT
24
  * @var object
25
  */
26
  protected $plugin;
@@ -28,7 +28,7 @@ class ConstantContact_Beaver_Builder {
28
  /**
29
  * Constructor.
30
  *
31
- * @since NEXT
32
  *
33
  * @param object $plugin Parent plugin.
34
  */
@@ -42,7 +42,7 @@ class ConstantContact_Beaver_Builder {
42
  /**
43
  * Registers Beaver Builder Modules
44
  *
45
- * @since NEXT
46
  */
47
  public function register_bb_modules() {
48
  FLBuilder::register_module( 'CCForm', array(
@@ -76,7 +76,7 @@ class ConstantContact_Beaver_Builder {
76
  /**
77
  * Provides all Constant Contact Forms current Published.
78
  *
79
- * @since NEXT
80
  */
81
  private function get_form_options () {
82
 
5
  * @package ConstantContact
6
  * @subpackage Beaver Builder
7
  * @author Constant Contact
8
+ * @since 1.11.0
9
  *
10
  * phpcs:disable WebDevStudios.All.RequireAuthor -- Don't require author tag in docblocks.
11
  */
13
  /**
14
  * This class get's everything up an running for Beaver Builder support.
15
  *
16
+ * @since 1.11.0
17
  */
18
  class ConstantContact_Beaver_Builder {
19
 
20
  /**
21
  * Parent plugin class.
22
  *
23
+ * @since 1.11.0
24
  * @var object
25
  */
26
  protected $plugin;
28
  /**
29
  * Constructor.
30
  *
31
+ * @since 1.11.0
32
  *
33
  * @param object $plugin Parent plugin.
34
  */
42
  /**
43
  * Registers Beaver Builder Modules
44
  *
45
+ * @since 1.10.0
46
  */
47
  public function register_bb_modules() {
48
  FLBuilder::register_module( 'CCForm', array(
76
  /**
77
  * Provides all Constant Contact Forms current Published.
78
  *
79
+ * @since 1.10.0
80
  */
81
  private function get_form_options () {
82
 
includes/class-connect.php CHANGED
@@ -165,97 +165,129 @@ class ConstantContact_Connect {
165
 
166
  wp_enqueue_script( 'ctct_form' );
167
  ?>
168
- <div class="wrap cmb2-options-page <?php echo esc_attr( $this->key ); ?>">
169
- <img class="ctct-logo" src="<?php echo esc_url( constant_contact()->url . 'assets/images/constant-contact-logo.png' ); ?>" alt="<?php echo esc_attr_x( 'Constant Contact logo', 'img alt text', 'constant-contact-forms' ); ?>">
170
- <div class="ctct-body">
171
  <?php if ( constantcontact_api()->get_api_token() ) : ?>
172
 
173
- <div class="ctct-connected">
174
- <div class="ctct-disconnect-wrap">
175
- <div class="ctct-disconnect-text">
176
- <h3><?php esc_html_e( 'Account connected.', 'constant-contact-forms' ); ?></h3>
177
- <p>
178
- <?php esc_html_e( 'Plugin connected to Constant Contact.', 'constant-contact-forms' ); ?>
179
- </p>
180
- <p>
181
- <?php
182
- $token = constant_contact()->api->get_api_token();
183
- try {
184
- $account = constant_contact()->api->cc()->accountService->getAccountInfo( $token );
185
- if ( $account ) {
186
- echo esc_html( $account->first_name . ' ' . $account->last_name . ' (' . $account->email . ')' );
187
- }
188
- } catch ( CtctException $ex ) {
189
- esc_html_e( 'There was an issue with retrieving connected account information. Please try again.', 'constant-contact-forms' );
190
  }
191
- ?>
192
- </p>
193
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
194
  <form method="post" action="<?php echo esc_url( $this->redirect_url ); ?>">
195
  <?php wp_nonce_field( 'ctct-admin-disconnect', 'ctct-admin-disconnect' ); ?>
196
  <input type="hidden" id="ctct-disconnect" name="ctct-disconnect" value="true">
197
- <input type="submit" class="button ctct-disconnect" value="<?php esc_html_e( 'Disconnect', 'constant-contact-forms' ); ?>">
198
  </form>
199
  </div>
 
200
 
201
- <?php if ( ! constant_contact_has_forms() ) : ?>
202
-
203
- <?php // phpcs:disable WordPress.WP.EnqueuedResources -- Ok use of inline scripts. ?>
204
- <div class="ctct-connected-next-step">
205
- <h3><?php esc_html_e( 'Your account is connected! Now, add a new form.', 'constant-contact-forms' ); ?></h3>
206
- <div class="ctct-video">
207
- <script src="https://fast.wistia.com/embed/medias/xix7jf8p55.jsonp" async></script>
208
- <script src="https://fast.wistia.com/assets/external/E-v1.js" async></script>
209
- <div class="wistia_embed wistia_async_xix7jf8p55 seo=false" style="height:225px;width:400px;margin:0 auto;">&nbsp;</div>
210
- </div>
211
- </div>
212
- <?php // phpcs:enable WordPress.WP.EnqueuedResources ?>
213
-
214
- <div class="ctct-connected-opt-in">
215
- <h3><?php esc_html_e( 'Please help to improve this plugin.', 'constant-contact-forms' ); ?></h3>
216
- <p>
217
- <?php
218
- printf(
219
- /* Translators: Placeholder will hold link to Constant Contact privacy statement. */
220
- esc_html__( 'Allow Constant Contact to use Google Analytics&trade; to track your usage across the Constant Contact Forms plugin. You can opt-out within the Settings page. See our %1$s.', 'constant-contact-forms' ),
221
- sprintf(
222
- '<a href="https://www.constantcontact.com/legal/privacy-statement">%1$s</a>',
223
- esc_html__( 'Privacy Statement', 'constant-contact-forms' )
224
- )
225
- );
226
- ?>
227
- </p>
228
-
229
- <div id="ctct-connect-ga-optin" class="ctct-connect-ga-optin">
230
- <a class="button button-blue ctct-connect" data-allow="on"><?php esc_html_e( 'Allow', 'constant-contact-forms' ); ?></a>
231
- <a class="button no-bg" data-allow="off"><?php esc_html_e( 'Dismiss', 'constant-contact-forms' ); ?></a>
232
- </div>
233
- </div>
234
 
235
- <?php endif; ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
236
  </div>
237
 
238
- <?php else : ?>
239
-
240
- <?php
241
- // phpcs:disable WordPress.Security.NonceVerification -- OK direct-accessing of $_GET.
242
- if ( isset( $_GET['ctct_connect_error'] ) ) :
243
- ?>
244
- <div id="message" class="ctct-error"><p>
245
- <?php esc_html_e( 'There was an error connecting your account. Please try again.', 'constant-contact-forms' ); ?>
246
- </p></div>
247
- <?php
248
- endif;
249
- // phpcs:enable WordPress.Security.NonceVerification
250
- ?>
251
- <p class="ctct-description">
252
- <?php esc_html_e( "Get the most out of this plugin &mdash; use it with an active Constant Contact account. By connecting to an account, you'll be able to engage visitors through email marketing and turn more of them into customers.", 'constant-contact-forms' ); ?>
253
- </p>
254
-
255
- <div class="ctct-call-to-action">
256
- <div class="ctct-call-to-action-text">
257
- <h3><?php esc_html_e( 'Connect your Constant Contact account.', 'constant-contact-forms' ); ?></h3>
258
- <p><?php esc_html_e( 'By connecting, you authorize this plugin to access your account.', 'constant-contact-forms' ); ?></p>
 
 
 
 
 
 
259
  </div>
260
  <?php
261
 
@@ -265,56 +297,25 @@ class ConstantContact_Connect {
265
 
266
  if ( $auth_link ) :
267
  ?>
268
- <a href="<?php echo esc_url_raw( $auth_link ); ?>" class="button button-blue ctct-connect">
269
  <?php esc_html_e( 'Connect Plugin', 'constant-contact-forms' ); ?>
270
  </a>
271
  <?php endif; ?>
272
  </div>
273
 
274
- <hr />
275
-
276
- <div class="ctct-call-to-action">
277
- <div class="ctct-call-to-action-text">
278
- <h3><?php esc_html_e( 'No Constant Contact account? Try us out.', 'constant-contact-forms' ); ?></h3>
279
- <p><?php esc_html_e( 'Create professional emails so you can nurture great relationships with new contacts even after they leave your website. Sign up for a free 60-day trial.', 'constant-contact-forms' ); ?></p>
280
  </div>
281
- <a class="button button-orange" href="<?php echo esc_url_raw( add_query_arg( [ 'rmc' => 'wp_connect_try' ], constant_contact()->api->get_signup_link() ) ); ?>"><?php esc_attr_e( 'Try us Free', 'constant-contact-forms' ); ?></a>
282
- </div>
283
-
284
- <form id="subscribe" accept-charset="utf-8" action="https://cloud.c.constantcontact.com/jmmlsubscriptions/coi_verify" method="get" target="_blank">
285
- <div class="ctct-call-to-action">
286
-
287
- <div class="ctct-call-to-action-text">
288
- <h3><?php esc_html_e( 'Email marketing tips delivered to your inbox.', 'constant-contact-forms' ); ?></h3>
289
- <p><?php esc_html_e( 'Ready to grow with email marketing? Subscribe now for the latest tips and industry best practices to create great-looking emails that work.', 'constant-contact-forms' ); ?></p>
290
-
291
- <input id="subbox" maxlength="255" name="email" type="text" placeholder="<?php esc_attr_e( 'Enter your email address', 'constant-contact-forms' ); ?>">
292
- <input name="sub" type="hidden" value="3" />
293
- <input name="method" type="hidden" value="JMML" />
294
- <input name="page" type="hidden" value="Sub3_Prospect" />
295
-
296
- <p>
297
- <small>
298
- <?php
299
- printf(
300
- // translators: placeholder will hold ConstantContact.com link.
301
- esc_html__( 'By submitting this form, you agree to receive periodic product announcements and account notifications from Constant Contact. Cancel these communications at any time by clicking the unsubscribe link in the footer of the actual email. Constant Contact, Inc, 1601 Trapelo Road, Waltham, MA 02451, %1$s', 'constant-contact-forms' ),
302
- '<a href="https://www.constantcontact.com">www.constantcontact.com</a>'
303
- );
304
- ?>
305
- </small>
306
- </p>
307
- </div>
308
-
309
- <input class="button" id="subbutton" type="submit" value="<?php esc_attr_e( 'Sign Up', 'constant-contact-forms' ); ?>">
310
  </div>
311
- </form>
312
 
313
- <p class="ctct-description small">
314
- <strong><?php esc_html_e( 'NOTE: ', 'constant-contact-forms' ); ?></strong><?php esc_html_e( "It's possible to use the plugin without connecting to a Constant Contact account. In this case, all information collected by the forms will be individually emailed to the Site Admin.", 'constant-contact-forms' ); ?>
315
- </p>
316
- <?php endif; ?>
317
- </div>
318
  <?php
319
  return true;
320
  }
165
 
166
  wp_enqueue_script( 'ctct_form' );
167
  ?>
168
+ <div class="wrap <?php echo esc_attr( $this->key ); ?>">
169
+
 
170
  <?php if ( constantcontact_api()->get_api_token() ) : ?>
171
 
172
+ <div class="ctct-connected">
173
+ <div class="ctct-connected-wrap">
174
+ <h2><?php esc_html_e( 'Account Connected!', 'constant-contact-forms' ); ?></h2>
175
+ <p class="ctct-description">
176
+ <?php esc_html_e( 'You are connected to your Constant Contact account.', 'constant-contact-forms' ); ?>
177
+ </p>
178
+ <div class="ctct-connection-details">
179
+ <p class="ctct-label">
180
+ <strong><?php esc_html_e( 'Account Name:', 'constant-contact-forms' ); ?></strong>
181
+ </p>
182
+ <p>
183
+ <?php
184
+ $token = constant_contact()->api->get_api_token();
185
+ try {
186
+ $account = constant_contact()->api->cc()->accountService->getAccountInfo( $token );
187
+ if ( $account ) {
188
+ echo esc_html( $account->first_name . ' ' . $account->last_name );
189
  }
190
+ } catch ( CtctException $ex ) {
191
+ esc_html_e( 'There was an issue with retrieving connected account information. Please try again.', 'constant-contact-forms' );
192
+ }
193
+ ?>
194
+ </p>
195
+ </div>
196
+ <div class="ctct-connection-details">
197
+ <p class="ctct-label">
198
+ <strong><?php esc_html_e( 'Email Address:', 'constant-contact-forms' ); ?></strong>
199
+ </p>
200
+ <p>
201
+ <?php
202
+ if ( $account ) {
203
+ echo '<a href="mailto:' . esc_html( $account->email ) . '">' . esc_html( $account->email ) . '</a>';
204
+ }
205
+ ?>
206
+ </p>
207
+ </div>
208
+ <div class="ctct-connection-details">
209
+ <p class="ctct-label">
210
+ <strong><?php esc_html_e( 'Status:', 'constant-contact-forms' ); ?></strong>
211
+ </p>
212
  <form method="post" action="<?php echo esc_url( $this->redirect_url ); ?>">
213
  <?php wp_nonce_field( 'ctct-admin-disconnect', 'ctct-admin-disconnect' ); ?>
214
  <input type="hidden" id="ctct-disconnect" name="ctct-disconnect" value="true">
215
+ <input type="submit" class="button button-primary ctct-disconnect" value="<?php esc_html_e( 'Disconnect', 'constant-contact-forms' ); ?>">
216
  </form>
217
  </div>
218
+ </div>
219
 
220
+ <?php //if ( ! constant_contact_has_forms() ) : ?>
221
+
222
+ <hr />
223
+
224
+ <?php // phpcs:disable WordPress.WP.EnqueuedResources -- Ok use of inline scripts. ?>
225
+
226
+ <div class="ctct-connected-next-step">
227
+ <div class="ctct-video">
228
+ <script src="https://fast.wistia.com/embed/medias/xix7jf8p55.jsonp" async></script>
229
+ <script src="https://fast.wistia.com/assets/external/E-v1.js" async></script>
230
+ <div class="wistia_embed wistia_async_xix7jf8p55 seo=false" style="height:225px;width:400px;margin:0 auto;">&nbsp;</div>
231
+ </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
232
 
233
+ <div>
234
+ <h3><?php esc_html_e( 'Turn Contacts into Customers!', 'constant-contact-forms' ); ?></h3>
235
+ <p><?php esc_html_e( 'You site is connected to Constant Contact and ready to start collecting visitor information. ', 'constant-contact-forms' ); ?></p>
236
+ <p><?php esc_html_e( 'Get started by watching our introduction video to get the most out of the plugin.', 'constant-contact-forms' ); ?></p>
237
+ <a href="post-new.php?post_type=ctct_forms" class="button"><?php esc_html_e( 'Add Form', 'constant-contact-forms' ); ?></a>
238
+ </div>
239
+ </div>
240
+ <?php // phpcs:enable WordPress.WP.EnqueuedResources ?>
241
+
242
+ <div class="ctct-connected-opt-in">
243
+ <div>
244
+ <h3><?php esc_html_e( 'Please Help to Improve this Plugin', 'constant-contact-forms' ); ?></h3>
245
+ <p>
246
+ <?php
247
+ printf(
248
+ /* Translators: Placeholder will hold link to Constant Contact privacy statement. */
249
+ esc_html__( 'Allow Constant Contact to use Google Analytics&trade; to track your usage across the Constant Contact Forms plugin. You can opt-out within the Settings page. See our %1$s.', 'constant-contact-forms' ),
250
+ sprintf(
251
+ '<a href="https://www.constantcontact.com/legal/privacy-statement">%1$s</a>',
252
+ esc_html__( 'Privacy Statement', 'constant-contact-forms' )
253
+ )
254
+ );
255
+ ?>
256
+ </p>
257
+ </div>
258
+ <div id="ctct-connect-ga-optin" class="ctct-connect-ga-optin">
259
+ <a class="button button-primary ctct-connect" data-allow="on"><?php esc_html_e( 'Allow', 'constant-contact-forms' ); ?></a>
260
+ <a class="button" data-allow="off"><?php esc_html_e( 'Dismiss', 'constant-contact-forms' ); ?></a>
261
+ </div>
262
  </div>
263
 
264
+ <?php // endif; ?>
265
+ </div>
266
+
267
+ <?php else : ?>
268
+
269
+ <?php
270
+ // phpcs:disable WordPress.Security.NonceVerification -- OK direct-accessing of $_GET.
271
+ if ( isset( $_GET['ctct_connect_error'] ) ) :
272
+ ?>
273
+ <div id="message" class="ctct-error"><p>
274
+ <?php esc_html_e( 'There was an error connecting your account. Please try again.', 'constant-contact-forms' ); ?>
275
+ </p></div>
276
+ <?php
277
+ endif;
278
+ // phpcs:enable WordPress.Security.NonceVerification
279
+ ?>
280
+
281
+ <h2><?php esc_html_e( 'Connect Now', 'constant-contact-forms' ); ?></h2>
282
+ <p class="ctct-description">
283
+ <?php esc_html_e( "Get the most out of this plugin &mdash; use it with an active Constant Contact account. By connecting to an account, you'll be able to engage visitors through email marketing and turn more of them into customers.", 'constant-contact-forms' ); ?>
284
+ </p>
285
+
286
+ <div class="ctct-call-to-actions">
287
+ <div class="ctct-call-to-actions--item connect-account">
288
+ <div>
289
+ <h3><?php esc_html_e( 'Connect to Constant Contact', 'constant-contact-forms' ); ?></h3>
290
+ <p><?php esc_html_e( 'By connecting to Constant Contact, you authorize this plugin to access your account.', 'constant-contact-forms' ); ?></p>
291
  </div>
292
  <?php
293
 
297
 
298
  if ( $auth_link ) :
299
  ?>
300
+ <a href="<?php echo esc_url_raw( $auth_link ); ?>" class="button ctct-button button-blue ctct-connect">
301
  <?php esc_html_e( 'Connect Plugin', 'constant-contact-forms' ); ?>
302
  </a>
303
  <?php endif; ?>
304
  </div>
305
 
306
+ <div class="ctct-call-to-actions--item no-account">
307
+ <div>
308
+ <h3><?php esc_html_e( 'No Constant Contact Account?', 'constant-contact-forms' ); ?></h3>
309
+ <p><?php esc_html_e( 'Create professional emails to nurture relationships with contacts even after they leave your website. Sign up for a free 60-day trial.', 'constant-contact-forms' ); ?></p>
 
 
310
  </div>
311
+ <a class="button ctct-button button-orange" href="<?php echo esc_url_raw( add_query_arg( [ 'rmc' => 'wp_connect_try' ], constant_contact()->api->get_signup_link() ) ); ?>"><?php esc_attr_e( 'Try Us Free', 'constant-contact-forms' ); ?></a>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
312
  </div>
313
+ </div>
314
 
315
+ <p class="small">
316
+ <strong><?php esc_html_e( 'NOTE: ', 'constant-contact-forms' ); ?></strong><?php esc_html_e( "It's possible to use the plugin without connecting to a Constant Contact account. In this case, all information collected by the forms will be individually emailed to the Site Admin.", 'constant-contact-forms' ); ?>
317
+ </p>
318
+ <?php endif; ?>
 
319
  <?php
320
  return true;
321
  }
includes/class-cpts.php CHANGED
@@ -65,9 +65,9 @@ class ConstantContact_CPTS {
65
  'name_admin_bar' => __( 'Contact Form', 'constant-contact-forms' ),
66
  'archives' => __( 'Form Archives', 'constant-contact-forms' ),
67
  'parent_item_colon' => __( 'Parent Form:', 'constant-contact-forms' ),
68
- 'all_items' => __( 'All Forms', 'constant-contact-forms' ),
69
  'add_new_item' => __( 'Add New Form', 'constant-contact-forms' ),
70
- 'add_new' => __( 'Add New Form', 'constant-contact-forms' ),
71
  'new_item' => __( 'New Form', 'constant-contact-forms' ),
72
  'edit_item' => __( 'Edit Form', 'constant-contact-forms' ),
73
  'update_item' => __( 'Update Form', 'constant-contact-forms' ),
65
  'name_admin_bar' => __( 'Contact Form', 'constant-contact-forms' ),
66
  'archives' => __( 'Form Archives', 'constant-contact-forms' ),
67
  'parent_item_colon' => __( 'Parent Form:', 'constant-contact-forms' ),
68
+ 'all_items' => __( 'Forms', 'constant-contact-forms' ),
69
  'add_new_item' => __( 'Add New Form', 'constant-contact-forms' ),
70
+ 'add_new' => __( 'Add Form', 'constant-contact-forms' ),
71
  'new_item' => __( 'New Form', 'constant-contact-forms' ),
72
  'edit_item' => __( 'Edit Form', 'constant-contact-forms' ),
73
  'update_item' => __( 'Update Form', 'constant-contact-forms' ),
includes/class-display.php CHANGED
@@ -540,8 +540,7 @@ class ConstantContact_Display {
540
  */
541
  public function build_honeypot_field() {
542
  return sprintf(
543
- '<div class="ctct_usage"><label for="ctct_usage_field">%s</label><input type="text" value="" name="ctct_usage_field" class="ctct_usage_field" tabindex="-1" /></div>',
544
- esc_html__( 'Constant Contact Use.', 'constant-contact-forms' )
545
  );
546
  }
547
 
@@ -995,6 +994,7 @@ class ConstantContact_Display {
995
  $field_key = sanitize_title( $id );
996
  $field_id = "{$field_key}_{$instance}_{$id_salt}";
997
  $input_inline_styles = '';
 
998
  $label_placement_class = 'ctct-label-' . $label_placement;
999
  $specific_form_styles = $this->specific_form_styles;
1000
  $inline_font_styles = $this->get_inline_font_color();
@@ -1003,6 +1003,10 @@ class ConstantContact_Display {
1003
  $input_inline_styles = $this->get_submit_inline_styles();
1004
  }
1005
 
 
 
 
 
1006
  $type = sanitize_text_field( $type );
1007
  $value = sanitize_text_field( $value );
1008
  $label = esc_html( sanitize_text_field( $label ) );
@@ -1070,8 +1074,10 @@ class ConstantContact_Display {
1070
  $class_attr = 'class="' . implode( ' ', $classes ) . '"';
1071
  }
1072
 
1073
- /* translators: 1: Required text, 2: Field type, 3: Field name, 4: Inline styles, 5: Field value, 6: Max length, 7: Placeholder, 8: Field class(es), 9: Field ID. */
1074
- $field = '<input %1$s type="%2$s" name="%3$s" %4$s value="%5$s" %6$s %7$s %8$s %9$s />';
 
 
1075
  $markup .= sprintf(
1076
  $field,
1077
  $req_text,
@@ -1082,7 +1088,8 @@ class ConstantContact_Display {
1082
  $max_length,
1083
  "placeholder=\"{$label}\"",
1084
  $class_attr,
1085
- "id=\"{$field_id}\""
 
1086
  );
1087
 
1088
  // Reassign because if we want "field only", like for hidden inputs, we need to still pass a value that went through sprintf().
540
  */
541
  public function build_honeypot_field() {
542
  return sprintf(
543
+ '<div class="ctct_usage"><label for="ctct_usage_field">%s</label><input type="text" value="" id="ctct_usage_field" name="ctct_usage_field" class="ctct_usage_field" tabindex="-1" /></div>', esc_html__( 'Constant Contact Use. Please leave this field blank.', 'constant-contact-forms' )
 
544
  );
545
  }
546
 
994
  $field_key = sanitize_title( $id );
995
  $field_id = "{$field_key}_{$instance}_{$id_salt}";
996
  $input_inline_styles = '';
997
+ $tel_regex_pattern = '';
998
  $label_placement_class = 'ctct-label-' . $label_placement;
999
  $specific_form_styles = $this->specific_form_styles;
1000
  $inline_font_styles = $this->get_inline_font_color();
1003
  $input_inline_styles = $this->get_submit_inline_styles();
1004
  }
1005
 
1006
+ if ( 'tel' === $type ) {
1007
+ $tel_regex_pattern = '^[0-9\-\+\.()]*';
1008
+ }
1009
+
1010
  $type = sanitize_text_field( $type );
1011
  $value = sanitize_text_field( $value );
1012
  $label = esc_html( sanitize_text_field( $label ) );
1074
  $class_attr = 'class="' . implode( ' ', $classes ) . '"';
1075
  }
1076
 
1077
+ $tel_pattern_title = apply_filters( 'constant_contact_tel_pattern_title', esc_html__( 'numbers, dashes, pluses, periods, and parentheses', 'constant-contact-forms' ) );
1078
+
1079
+ /* translators: 1: Required text, 2: Field type, 3: Field name, 4: Inline styles, 5: Field value, 6: Max length, 7: Placeholder, 8: Field class(es), 9: Field ID., 10: Tel Regex Pattern. */
1080
+ $field = '<input %1$s type="%2$s" name="%3$s" %4$s value="%5$s" %6$s %7$s %8$s %9$s %10$s />';
1081
  $markup .= sprintf(
1082
  $field,
1083
  $req_text,
1088
  $max_length,
1089
  "placeholder=\"{$label}\"",
1090
  $class_attr,
1091
+ "id=\"{$field_id}\"",
1092
+ $tel_regex_pattern ? "pattern=\"{$tel_regex_pattern}\" title=\"{$tel_pattern_title}\"" : ''
1093
  );
1094
 
1095
  // Reassign because if we want "field only", like for hidden inputs, we need to still pass a value that went through sprintf().
includes/class-elementor.php CHANGED
@@ -5,7 +5,7 @@
5
  * @package ConstantContact
6
  * @subpackage Elementor
7
  * @author Constant Contact
8
- * @since NEXT
9
  *
10
  * phpcs:disable WebDevStudios.All.RequireAuthor -- Don't require author tag in docblocks.
11
  */
@@ -13,14 +13,14 @@
13
  /**
14
  * This class get's everything up an running for Elementor support.
15
  *
16
- * @since NEXT
17
  */
18
  class ConstantContact_Elementor {
19
 
20
  /**
21
  * Parent plugin class.
22
  *
23
- * @since NEXT
24
  * @var object
25
  */
26
  protected $plugin;
@@ -28,7 +28,7 @@ class ConstantContact_Elementor {
28
  /**
29
  * Constructor.
30
  *
31
- * @since NEXT
32
  *
33
  * @param object $plugin Parent plugin.
34
  */
@@ -40,7 +40,7 @@ class ConstantContact_Elementor {
40
  /**
41
  * Register Hooks
42
  *
43
- * @since NEXT
44
  */
45
  private function hooks() {
46
  add_action( 'elementor/widgets/widgets_registered', [ $this, 'register_widget' ] );
@@ -49,7 +49,7 @@ class ConstantContact_Elementor {
49
  /**
50
  * Registers all Elementor Widgets
51
  *
52
- * @since NEXT
53
  */
54
  public function register_widget() {
55
  require_once( __DIR__ . '/widgets/elementor-widget.php' );
5
  * @package ConstantContact
6
  * @subpackage Elementor
7
  * @author Constant Contact
8
+ * @since 1.11.0
9
  *
10
  * phpcs:disable WebDevStudios.All.RequireAuthor -- Don't require author tag in docblocks.
11
  */
13
  /**
14
  * This class get's everything up an running for Elementor support.
15
  *
16
+ * @since 1.11.0
17
  */
18
  class ConstantContact_Elementor {
19
 
20
  /**
21
  * Parent plugin class.
22
  *
23
+ * @since 1.11.0
24
  * @var object
25
  */
26
  protected $plugin;
28
  /**
29
  * Constructor.
30
  *
31
+ * @since 1.11.0
32
  *
33
  * @param object $plugin Parent plugin.
34
  */
40
  /**
41
  * Register Hooks
42
  *
43
+ * @since 1.10.0
44
  */
45
  private function hooks() {
46
  add_action( 'elementor/widgets/widgets_registered', [ $this, 'register_widget' ] );
49
  /**
50
  * Registers all Elementor Widgets
51
  *
52
+ * @since 1.10.0
53
  */
54
  public function register_widget() {
55
  require_once( __DIR__ . '/widgets/elementor-widget.php' );
includes/class-logging.php CHANGED
@@ -172,7 +172,7 @@ class ConstantContact_Logging {
172
  return;
173
  }
174
 
175
- $connect_title = esc_html__( 'Debug logs', 'constant-contact-forms' );
176
  $connect_link = 'edit.php?post_type=ctct_forms';
177
 
178
  $this->options_page = add_submenu_page(
@@ -212,65 +212,64 @@ class ConstantContact_Logging {
212
  wp_enqueue_style( 'constant-contact-forms-admin' );
213
 
214
  ?>
215
- <div class="wrap <?php echo esc_attr( $this->key ); ?>">
216
- <img class="ctct-logo" src="<?php echo esc_url( constant_contact()->url . 'assets/images/constant-contact-logo.png' ); ?>" alt="<?php echo esc_attr_x( 'Constant Contact logo', 'img alt text', 'constant-contact-forms' ); ?>">
217
- <div class="ctct-body">
218
- <?php
 
 
219
 
220
- $contents = '';
 
 
221
 
222
- if ( ! file_exists( $this->log_location_file ) ) {
223
- $contents .= esc_html__( 'No error log exists', 'constant-contact-forms' );
224
- }
 
 
 
 
225
 
226
- if ( ! is_writable( $this->log_location_file ) ) {
227
- $contents .= sprintf(
228
- /* Translators: placeholder holds the log location. */
229
- esc_html__( 'We are not able to write to the %s file.', 'constant-contact-forms' ),
230
- constant_contact()->logger_location
231
- );
232
- }
233
 
234
- if ( is_file( $this->log_location_file ) && is_readable( $this->log_location_file ) ) {
235
- $contents .= file_get_contents( $this->log_location_file ); // phpcs:ignore WordPress.WP.AlternativeFunctions.file_get_contents_file_get_contents -- Not reading over network, it's on the filesystem.
236
- }
 
 
237
 
 
238
  ?>
239
- <p><?php esc_html_e( 'Error log below can be used with support requests to help identify issues with Constant Contact Forms.', 'constant-contact-forms' ); ?></p>
240
- <p><?php esc_html_e( 'When available, you can share information by copying and pasting the content in the textarea, or by using the "Download logs" link at the end. Logs can be cleared by using the "Delete logs" link.', 'constant-contact-forms' ); ?></p>
241
- <textarea name="ctct_error_logs" id="ctct_error_logs" cols="80" rows="40" onclick="this.focus();this.select();" onfocus="this.focus();this.select();" readonly="readonly" aria-readonly="true"><?php echo esc_html( $contents ); ?></textarea>
242
  <?php
 
243
 
244
- if ( is_file( $this->log_location_file ) && ! is_readable( $this->log_location_file ) ) {
245
- ?>
246
- <p><?php esc_html_e( 'Error log may still have content, even if an error is shown above. Please use the download link below.', 'constant-contact-forms' ); ?></p>
247
  <?php
248
- }
249
-
250
- if ( file_exists( $this->log_location_file ) ) {
 
 
 
 
 
 
 
 
 
 
251
  ?>
252
- <p>
253
- <?php
254
- printf(
255
- '<p><a href="%s" download>%s</a></p><p><a href="%s" id="deletelog">%s</a></p>',
256
- esc_attr( $this->log_location_url ),
257
- esc_html__( 'Download logs', 'constant-contact-forms' ),
258
- esc_attr(
259
- wp_nonce_url(
260
- $this->options_url,
261
- 'ctct_delete_log',
262
- 'ctct_delete_log'
263
- )
264
- ),
265
- esc_html__( 'Delete logs', 'constant-contact-forms' )
266
- );
267
- ?>
268
- </p>
269
- <?php
270
- }
271
- // @TODO Remind to turn off debugging setting when not needed.
272
- ?>
273
- </div>
274
  </div>
275
  <?php
276
  return true;
172
  return;
173
  }
174
 
175
+ $connect_title = esc_html__( 'Debug Logs', 'constant-contact-forms' );
176
  $connect_link = 'edit.php?post_type=ctct_forms';
177
 
178
  $this->options_page = add_submenu_page(
212
  wp_enqueue_style( 'constant-contact-forms-admin' );
213
 
214
  ?>
215
+ <div class="wrap ctct-page-wrap <?php echo esc_attr( $this->key ); ?>">
216
+ <h2><?php esc_html_e( 'Debug Logs', 'constant-contact-forms' ); ?></h2>
217
+
218
+ <?php
219
+
220
+ $contents = esc_html__( 'No errors exists.', 'constant-contact-forms' );
221
 
222
+ if ( ! file_exists( $this->log_location_file ) ) {
223
+ $contents = esc_html__( 'No error log exists.', 'constant-contact-forms' );
224
+ }
225
 
226
+ if ( ! is_writable( $this->log_location_file ) ) {
227
+ $contents = sprintf(
228
+ /* Translators: placeholder holds the log location. */
229
+ esc_html__( 'We are not able to write to the %s file.', 'constant-contact-forms' ),
230
+ constant_contact()->logger_location
231
+ );
232
+ }
233
 
234
+ if ( is_file( $this->log_location_file ) && is_readable( $this->log_location_file ) ) {
235
+ $contents = file_get_contents( $this->log_location_file ); // phpcs:ignore WordPress.WP.AlternativeFunctions.file_get_contents_file_get_contents -- Not reading over network, it's on the filesystem.
236
+ }
 
 
 
 
237
 
238
+ ?>
239
+ <p class="large-text"><?php esc_html_e( 'The error log below can be used with support requests to help identify issues with Constant Contact Forms.', 'constant-contact-forms' ); ?></p>
240
+ <p><?php esc_html_e( 'When available, you can share information by copying and pasting the content in the textarea, or by using the "Download logs" link below. Logs can be cleared by using the "Delete logs" link.', 'constant-contact-forms' ); ?></p>
241
+ <textarea name="ctct_error_logs" id="ctct_error_logs" cols="80" rows="40" onclick="this.focus();this.select();" onfocus="this.focus();this.select();" readonly="readonly" aria-readonly="true"><?php echo esc_html( $contents ); ?></textarea>
242
+ <?php
243
 
244
+ if ( is_file( $this->log_location_file ) && ! is_readable( $this->log_location_file ) ) {
245
  ?>
246
+ <p><?php esc_html_e( 'Error log may still have content, even if an error is shown above. Please use the download link below.', 'constant-contact-forms' ); ?></p>
 
 
247
  <?php
248
+ }
249
 
250
+ if ( file_exists( $this->log_location_file ) ) {
251
+ ?>
252
+ <div class="ctct-button-actions">
253
  <?php
254
+ printf(
255
+ '<a class="button button-primary" href="%s" download>%s</a> <a class="button" href="%s" id="deletelog">%s</a>',
256
+ esc_attr( $this->log_location_url ),
257
+ esc_html__( 'Download logs', 'constant-contact-forms' ),
258
+ esc_attr(
259
+ wp_nonce_url(
260
+ $this->options_url,
261
+ 'ctct_delete_log',
262
+ 'ctct_delete_log'
263
+ )
264
+ ),
265
+ esc_html__( 'Delete logs', 'constant-contact-forms' )
266
+ );
267
  ?>
268
+ </div>
269
+ <?php
270
+ }
271
+ // @TODO Remind to turn off debugging setting when not needed.
272
+ ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
273
  </div>
274
  <?php
275
  return true;
includes/class-settings.php CHANGED
@@ -234,7 +234,7 @@ class ConstantContact_Settings {
234
  $tabs = $this->get_option_tabs( $cmb_options );
235
  $current = $this->get_current_tab();
236
  ?>
237
- <div class="wrap cmb2-options-page option-<?php echo esc_attr( $cmb_options->option_key ); ?>">
238
  <?php if ( get_admin_page_title() ) : ?>
239
  <h2><?php echo wp_kses_post( get_admin_page_title() ); ?></h2>
240
  <?php endif; ?>
@@ -323,7 +323,7 @@ class ConstantContact_Settings {
323
  protected function get_cmb_args( $cmb_id ) {
324
  return [
325
  'id' => "{$this->metabox_id}_{$cmb_id}",
326
- 'title' => esc_html__( 'Constant Contact Forms Settings', 'constant-contact-forms' ),
327
  'menu_title' => esc_html__( 'Settings', 'constant-contact-forms' ),
328
  'object_types' => [ 'options-page' ],
329
  'option_key' => "{$this->key}_{$cmb_id}",
@@ -343,12 +343,20 @@ class ConstantContact_Settings {
343
  protected function register_fields_general() {
344
  $cmb = new_cmb2_box( $this->get_cmb_args( 'general' ) );
345
 
 
 
 
 
 
 
 
346
  $cmb->add_field( [
347
  'name' => esc_html__( 'Google Analytics&trade; tracking opt-in.', 'constant-contact-forms' ),
348
  'id' => '_ctct_data_tracking',
349
  'type' => 'checkbox',
350
  'desc' => __( 'Allow Constant Contact to use Google Analytics&trade; to track your usage across the Constant Contact Forms plugin.<br/> NOTE &mdash; Your website and users will not be tracked. See our <a href="https://www.endurance.com/privacy"> Privacy Statement</a> information about what is and is not tracked.', 'constant-contact-forms' ),
351
- ] );
 
352
 
353
  if ( constant_contact()->api->is_connected() ) {
354
 
@@ -476,6 +484,14 @@ class ConstantContact_Settings {
476
  'constant-contact-forms'
477
  ),
478
  ] );
 
 
 
 
 
 
 
 
479
  }
480
 
481
  /**
@@ -493,7 +509,7 @@ class ConstantContact_Settings {
493
  '<h2>',
494
  esc_html__( 'Google reCAPTCHA', 'constant-contact-forms' ),
495
  '</h2>',
496
- '<div class="discover-recaptcha">',
497
  esc_html__( 'Learn more and get an ', 'constant-contact-forms' ),
498
  '<a href="https://www.google.com/recaptcha/intro/" target="_blank">',
499
  esc_html__( 'API site key', 'constant-contact-forms' ),
@@ -1068,3 +1084,14 @@ function constant_contact_get_option( $key = '', $default = null ) {
1068
 
1069
  return $value;
1070
  }
 
 
 
 
 
 
 
 
 
 
 
234
  $tabs = $this->get_option_tabs( $cmb_options );
235
  $current = $this->get_current_tab();
236
  ?>
237
+ <div class="wrap cmb2-options-page ctct-page-wrap option-<?php echo esc_attr( $cmb_options->option_key ); ?>">
238
  <?php if ( get_admin_page_title() ) : ?>
239
  <h2><?php echo wp_kses_post( get_admin_page_title() ); ?></h2>
240
  <?php endif; ?>
323
  protected function get_cmb_args( $cmb_id ) {
324
  return [
325
  'id' => "{$this->metabox_id}_{$cmb_id}",
326
+ 'title' => esc_html__( 'Settings', 'constant-contact-forms' ),
327
  'menu_title' => esc_html__( 'Settings', 'constant-contact-forms' ),
328
  'object_types' => [ 'options-page' ],
329
  'option_key' => "{$this->key}_{$cmb_id}",
343
  protected function register_fields_general() {
344
  $cmb = new_cmb2_box( $this->get_cmb_args( 'general' ) );
345
 
346
+ $before_analytics = sprintf(
347
+ /* translators: 1: Opening heading tag, 2: opt-in section heading, 3: closing heading tag */
348
+ '%1$s%2$s%3$s',
349
+ '<h2>',
350
+ esc_html__( 'General Settings', 'constant-contact-forms' ),
351
+ '</h2>'
352
+ );
353
  $cmb->add_field( [
354
  'name' => esc_html__( 'Google Analytics&trade; tracking opt-in.', 'constant-contact-forms' ),
355
  'id' => '_ctct_data_tracking',
356
  'type' => 'checkbox',
357
  'desc' => __( 'Allow Constant Contact to use Google Analytics&trade; to track your usage across the Constant Contact Forms plugin.<br/> NOTE &mdash; Your website and users will not be tracked. See our <a href="https://www.endurance.com/privacy"> Privacy Statement</a> information about what is and is not tracked.', 'constant-contact-forms' ),
358
+ 'before_row' => $before_analytics,
359
+ ] );
360
 
361
  if ( constant_contact()->api->is_connected() ) {
362
 
484
  'constant-contact-forms'
485
  ),
486
  ] );
487
+
488
+ $cmb->add_field( [
489
+ 'name' => esc_html__( 'Disable Constant Contact CSS', 'constant-contact-forms' ),
490
+ 'desc' => esc_html__( 'Disables Constant Contact stylesheets from loading on the frontend. Note you may need to clear server and client cache to see changes go into effect.', 'constant-contact-forms' ),
491
+ 'id' => '_ctct_disable_css',
492
+ 'type' => 'checkbox',
493
+ ] );
494
+
495
  }
496
 
497
  /**
509
  '<h2>',
510
  esc_html__( 'Google reCAPTCHA', 'constant-contact-forms' ),
511
  '</h2>',
512
+ '<div class="description">',
513
  esc_html__( 'Learn more and get an ', 'constant-contact-forms' ),
514
  '<a href="https://www.google.com/recaptcha/intro/" target="_blank">',
515
  esc_html__( 'API site key', 'constant-contact-forms' ),
1084
 
1085
  return $value;
1086
  }
1087
+
1088
+ /**
1089
+ * Returns whether frontend css should be disabled or not.
1090
+ *
1091
+ * @author Scott Anderson <scott.anderson@webdevstudios.com>
1092
+ * @since 1.10.0
1093
+ * @return bool
1094
+ */
1095
+ function disable_frontend_css() {
1096
+ return 'on' === constant_contact_get_option( '_ctct_disable_css' );
1097
+ }
includes/widgets/elementor-widget.php CHANGED
@@ -5,7 +5,7 @@
5
  * @package ConstantContact
6
  * @subpackage Elementor
7
  * @author Constant Contact
8
- * @since NEXT
9
  *
10
  * phpcs:disable WebDevStudios.All.RequireAuthor -- Don't require author tag in docblocks.
11
  */
@@ -13,14 +13,14 @@
13
  /**
14
  * This class get's everything up an running for Elementor Widget.
15
  *
16
- * @since NEXT
17
  */
18
  class ConstantContact_Elementor_Widget extends \Elementor\Widget_Base {
19
 
20
  /**
21
  * Widgets Name
22
  *
23
- * @since NEXT
24
  */
25
  public function get_name() {
26
  return 'constant-contact';
@@ -29,7 +29,7 @@ class ConstantContact_Elementor_Widget extends \Elementor\Widget_Base {
29
  /**
30
  * Widgets Title
31
  *
32
- * @since NEXT
33
  */
34
  public function get_title() {
35
  return 'Constant Contact Form';
@@ -38,7 +38,7 @@ class ConstantContact_Elementor_Widget extends \Elementor\Widget_Base {
38
  /**
39
  * Widgets Icon
40
  *
41
- * @since NEXT
42
  */
43
  public function get_icon() {
44
  return 'eicon-form-horizontal';
@@ -47,7 +47,7 @@ class ConstantContact_Elementor_Widget extends \Elementor\Widget_Base {
47
  /**
48
  * Widgets Category
49
  *
50
- * @since NEXT
51
  */
52
  public function get_categories() {
53
  return [ 'basic' ];
@@ -56,7 +56,7 @@ class ConstantContact_Elementor_Widget extends \Elementor\Widget_Base {
56
  /**
57
  * Displays Widget Controls.
58
  *
59
- * @since NEXT
60
  */
61
  protected function _register_controls() {
62
 
@@ -94,7 +94,7 @@ class ConstantContact_Elementor_Widget extends \Elementor\Widget_Base {
94
  /**
95
  * Provides all Constant Contact Forms current Published.
96
  *
97
- * @since NEXT
98
  */
99
  private function get_form_options () {
100
 
@@ -122,7 +122,7 @@ class ConstantContact_Elementor_Widget extends \Elementor\Widget_Base {
122
  /**
123
  * Displays Widget
124
  *
125
- * @since NEXT
126
  */
127
  protected function render() {
128
  $settings = $this->get_settings_for_display();
5
  * @package ConstantContact
6
  * @subpackage Elementor
7
  * @author Constant Contact
8
+ * @since 1.11.0
9
  *
10
  * phpcs:disable WebDevStudios.All.RequireAuthor -- Don't require author tag in docblocks.
11
  */
13
  /**
14
  * This class get's everything up an running for Elementor Widget.
15
  *
16
+ * @since 1.11.0
17
  */
18
  class ConstantContact_Elementor_Widget extends \Elementor\Widget_Base {
19
 
20
  /**
21
  * Widgets Name
22
  *
23
+ * @since 1.10.0
24
  */
25
  public function get_name() {
26
  return 'constant-contact';
29
  /**
30
  * Widgets Title
31
  *
32
+ * @since 1.10.0
33
  */
34
  public function get_title() {
35
  return 'Constant Contact Form';
38
  /**
39
  * Widgets Icon
40
  *
41
+ * @since 1.10.0
42
  */
43
  public function get_icon() {
44
  return 'eicon-form-horizontal';
47
  /**
48
  * Widgets Category
49
  *
50
+ * @since 1.10.0
51
  */
52
  public function get_categories() {
53
  return [ 'basic' ];
56
  /**
57
  * Displays Widget Controls.
58
  *
59
+ * @since 1.10.0
60
  */
61
  protected function _register_controls() {
62
 
94
  /**
95
  * Provides all Constant Contact Forms current Published.
96
  *
97
+ * @since 1.10.0
98
  */
99
  private function get_form_options () {
100
 
122
  /**
123
  * Displays Widget
124
  *
125
+ * @since 1.10.0
126
  */
127
  protected function render() {
128
  $settings = $this->get_settings_for_display();
languages/constant-contact-forms.pot CHANGED
@@ -1,4 +1,4 @@
1
- # Copyright (C) 2020 Constant Contact Forms
2
  # This file is distributed under the same license as the Constant Contact Forms package.
3
  msgid ""
4
  msgstr ""
@@ -13,15 +13,15 @@ msgstr ""
13
  "X-Poedit-SourceCharset: UTF-8\n"
14
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
15
 
16
- #: constant-contact-forms.php:375, includes/class-cpts.php:89, includes/class-cpts.php:148
17
  msgid "Constant Contact"
18
  msgstr ""
19
 
20
- #: constant-contact-forms.php:410
21
  msgid "Constant Contact Forms requires PHP 5.4 or higher. Your hosting provider or website administrator should be able to assist in updating your PHP version."
22
  msgstr ""
23
 
24
- #: constant-contact-forms.php:714
25
  msgid "Error loading license."
26
  msgstr ""
27
 
@@ -69,200 +69,152 @@ msgstr ""
69
  msgid "FAQ"
70
  msgstr ""
71
 
72
- #: includes/class-admin-pages.php:214
73
- msgctxt "img alt text"
74
- msgid "Constant Contact Logo"
75
- msgstr ""
76
-
77
- #: includes/class-admin-pages.php:216, includes/class-notification-content.php:58
78
- msgid "Constant Contact Forms"
79
  msgstr ""
80
 
81
- #: includes/class-admin-pages.php:218
82
  msgid "This plugin makes it fast and easy to capture all kinds of visitor information right from your WordPress site—even if you don't have a Constant Contact account."
83
  msgstr ""
84
 
85
- #: includes/class-admin-pages.php:221
86
  msgid "Whether you're looking to collect email addresses, contact info, or visitor feedback, you can customize your forms with data fields that work best for you."
87
  msgstr ""
88
 
89
- #: includes/class-admin-pages.php:224
90
  msgid "Quickly create different types of forms that are clear, simple, and mobile-optimized."
91
  msgstr ""
92
 
93
- #: includes/class-admin-pages.php:225
94
  msgid "Choose forms that automatically select the theme and style of your WordPress site."
95
  msgstr ""
96
 
97
- #: includes/class-admin-pages.php:226
98
  msgid "Customize the form data fields, so you can tailor the type of information you collect."
99
  msgstr ""
100
 
101
- #: includes/class-admin-pages.php:235
102
- msgid "Collecting email addresses with the plugin?"
103
- msgstr ""
104
-
105
- #: includes/class-admin-pages.php:236
106
- msgid "Turn those contacts into customers."
107
  msgstr ""
108
 
109
- #: includes/class-admin-pages.php:239
110
  msgid "Nurture your new contacts with a Constant Contact email marketing account even after they've left your website. Sign up for a 60-day trial account* and you can:"
111
  msgstr ""
112
 
113
- #: includes/class-admin-pages.php:242
114
  msgid "Seamlessly add new contacts to mailing lists."
115
  msgstr ""
116
 
117
- #: includes/class-admin-pages.php:243
118
  msgid "Create and send professional emails."
119
  msgstr ""
120
 
121
- #: includes/class-admin-pages.php:244
122
  msgid "Get expert marketing help and support."
123
  msgstr ""
124
 
125
- #: includes/class-admin-pages.php:249, includes/class-admin-pages.php:249
126
  msgid "Try us Free"
127
  msgstr ""
128
 
129
- #: includes/class-admin-pages.php:252
130
  msgid "Already have a Constant Contact account?"
131
  msgstr ""
132
 
133
- #: includes/class-admin-pages.php:254
134
- msgid "Connect the plugin."
135
- msgstr ""
136
-
137
- #: includes/class-admin-pages.php:258
138
- msgid "NOTE: You can use the Constant Contact Form plugin without a Constant Contact account. All information collected by the forms will be individually emailed to your site admin."
139
- msgstr ""
140
-
141
- #: includes/class-admin-pages.php:265
142
- msgid "Sign Up"
143
- msgstr ""
144
-
145
  #: includes/class-admin-pages.php:266
146
- msgid "Email marketing tips delivered to your inbox."
147
  msgstr ""
148
 
149
- #: includes/class-admin-pages.php:267
150
- msgid "Ready to grow with email marketing? Subscribe now for the latest tips and industry best practices to create great-looking emails that work."
151
  msgstr ""
152
 
153
- #: includes/class-admin-pages.php:268
154
- msgid "Enter your email address"
155
  msgstr ""
156
 
157
- #. translators: Placholder is a link to Constant Contact homepage.
158
- #: includes/class-admin-pages.php:279
159
- msgid "By submitting this form, you agree to receive periodic product announcements and account notifications from Constant Contact. Cancel these communications at any time by clicking the unsubscribe link in the footer of the actual email. Constant Contact, Inc, 1601 Trapelo Road, Waltham, MA 02451, %1$s"
160
- msgstr ""
161
-
162
- #: includes/class-admin-pages.php:294
163
- msgid "Powerful Email Marketing, Made Simple."
164
- msgstr ""
165
-
166
- #: includes/class-admin-pages.php:297
167
- msgid "Create professional emails that bring customers to your door"
168
- msgstr ""
169
-
170
- #: includes/class-admin-pages.php:301
171
- msgid "Email marketing is good for your business. $44-back-for-every-$1-spent kind of good.* And with the Constant Contact for WordPress plugin, you can easily add sign-up forms to your site so you can stay connected with visitors long after they've left."
172
- msgstr ""
173
-
174
- #: includes/class-admin-pages.php:304
175
  msgid "GPLv3 license"
176
  msgstr ""
177
 
178
  #. translators: Placholder here is a link to the license.
179
- #: includes/class-admin-pages.php:310
180
  msgid "This software is released under a modified %s."
181
  msgstr ""
182
 
183
- #: includes/class-admin-pages.php:316
184
- msgid "*Direct Marketing Association 2013 Statistical Fact Book"
185
- msgstr ""
186
-
187
- #: includes/class-admin-pages.php:324
188
- msgid "Easily Add Forms"
189
- msgstr ""
190
-
191
- #: includes/class-admin-pages.php:327
192
- msgctxt "img alt text"
193
- msgid "Example embedded Constant Contact form"
194
- msgstr ""
195
-
196
- #: includes/class-admin-pages.php:330
197
- msgid "Create forms that automatically select the theme and styling of your WordPress site for a perfect match. "
198
  msgstr ""
199
 
200
- #: includes/class-admin-pages.php:336
201
- msgid "Stay Connected With Your WordPress Visitors"
202
  msgstr ""
203
 
204
- #: includes/class-admin-pages.php:339
205
- msgctxt "img alt text"
206
- msgid "Constant Contact list management UI"
207
  msgstr ""
208
 
209
- #: includes/class-admin-pages.php:342
210
- msgid "Form completions from site visitors are conveniently added to your Constant Contact email list."
211
  msgstr ""
212
 
213
- #: includes/class-admin-pages.php:362
214
- msgid "Constant Contact Forms - License"
215
  msgstr ""
216
 
217
- #: includes/class-admin.php:129, includes/class-admin.php:130, includes/class-admin.php:390
218
  msgid "About"
219
  msgstr ""
220
 
221
- #: includes/class-admin.php:138, includes/class-admin.php:139, includes/class-admin.php:391
222
  msgid "License"
223
  msgstr ""
224
 
225
- #: includes/class-admin.php:224, includes/class-settings.php:870
226
  msgid "Settings updated."
227
  msgstr ""
228
 
229
- #: includes/class-admin.php:261
230
  msgid "Description"
231
  msgstr ""
232
 
233
- #: includes/class-admin.php:262, includes/class-builder-fields.php:705
234
  msgid "Shortcode"
235
  msgstr ""
236
 
237
- #: includes/class-admin.php:263
238
  msgid "Associated List"
239
  msgstr ""
240
 
241
- #: includes/class-admin.php:313
 
 
 
 
242
  msgid "No associated list"
243
  msgstr ""
244
 
245
- #: includes/class-admin.php:332
246
  msgid "Contact Count"
247
  msgstr ""
248
 
249
- #: includes/class-admin.php:388
250
  msgid "Check out the official WordPress plugin from @constantcontact:"
251
  msgstr ""
252
 
253
- #: includes/class-admin.php:402
254
  msgid "Spread the word!"
255
  msgstr ""
256
 
257
- #: includes/class-admin.php:484
258
  msgid "You have unsaved changes."
259
  msgstr ""
260
 
261
- #: includes/class-admin.php:485
262
  msgid "move up"
263
  msgstr ""
264
 
265
- #: includes/class-admin.php:486
266
  msgid "move down"
267
  msgstr ""
268
 
@@ -274,6 +226,39 @@ msgstr ""
274
  msgid "Your API access token is invalid. Reconnect to Constant Contact to receive a new token."
275
  msgstr ""
276
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
277
  #: includes/class-builder-fields.php:123
278
  msgid "Email (required)"
279
  msgstr ""
@@ -363,305 +348,313 @@ msgid "Constant Contact List"
363
  msgstr ""
364
 
365
  #: includes/class-builder-fields.php:222
366
- msgid "Allow subscribers to select from lists"
367
  msgstr ""
368
 
369
- #: includes/class-builder-fields.php:240
 
 
 
 
 
 
 
 
370
  msgid "Form Description"
371
  msgstr ""
372
 
373
- #: includes/class-builder-fields.php:248
374
  msgid "This message will display above the form fields, so use it as an opportunity to pitch your email list. Tell visitors why they should subscribe to your emails, focusing on benefits like insider tips, discounts, subscriber coupons, and more."
375
  msgstr ""
376
 
377
- #: includes/class-builder-fields.php:268
378
  msgid "Form Options"
379
  msgstr ""
380
 
381
- #: includes/class-builder-fields.php:276
382
  msgid "Button text"
383
  msgstr ""
384
 
385
- #: includes/class-builder-fields.php:279
386
  msgid "Sign up"
387
  msgstr ""
388
 
389
- #: includes/class-builder-fields.php:283
390
  msgid "Success message"
391
  msgstr ""
392
 
393
- #: includes/class-builder-fields.php:286
394
  msgid "Your information has been submitted"
395
  msgstr ""
396
 
397
- #: includes/class-builder-fields.php:290
398
  msgid "Submission behavior"
399
  msgstr ""
400
 
401
- #: includes/class-builder-fields.php:297
402
  msgid "Redirect URL"
403
  msgstr ""
404
 
405
  #. translators: 1: basic field info, 2: warning about invalid values, 3: recommended field value
406
- #: includes/class-builder-fields.php:303
407
  msgid "Leave blank to keep users on the current page."
408
  msgstr ""
409
 
410
- #: includes/class-builder-fields.php:304
411
  msgid "NOTE: This URL must be within the current site and may not be a direct link to a media file (e.g., a PDF document). Providing a Redirect URL that is outside the current site or is a media file will cause issues with Constant Constact functionality, including contacts not being added to lists successfully."
412
  msgstr ""
413
 
414
- #: includes/class-builder-fields.php:305
415
  msgid "It is recommended to leave this field blank or provide a URL to a page that contains any external or media links within the page content."
416
  msgstr ""
417
 
418
- #: includes/class-builder-fields.php:311
419
  msgid "No page refresh"
420
  msgstr ""
421
 
422
- #: includes/class-builder-fields.php:314
423
  msgid "Enable form submission without a page refresh. This option overrides the Redirect URL choice above."
424
  msgstr ""
425
 
426
- #: includes/class-builder-fields.php:319
427
  msgid "Disable Google reCAPTCHA for this form?"
428
  msgstr ""
429
 
430
- #: includes/class-builder-fields.php:322
431
  msgid "Checking will disable Google's reCAPTCHA output for this form. Only valid if using Google reCAPTCHA version 2"
432
  msgstr ""
433
 
434
- #: includes/class-builder-fields.php:327
435
  msgid "Spam notice"
436
  msgstr ""
437
 
438
- #: includes/class-builder-fields.php:334
439
  msgid "Spam Error Message"
440
  msgstr ""
441
 
442
- #: includes/class-builder-fields.php:337
443
  msgid "Set the spam error message displayed for this form."
444
  msgstr ""
445
 
446
- #: includes/class-builder-fields.php:353
447
  msgid "Form Design"
448
  msgstr ""
449
 
450
- #: includes/class-builder-fields.php:360, includes/class-builder-fields.php:422
451
  msgid "Background Color"
452
  msgstr ""
453
 
454
- #: includes/class-builder-fields.php:363
455
  msgid "Applies to the whole form."
456
  msgstr ""
457
 
458
- #: includes/class-builder-fields.php:370
459
  msgid "Form Fonts"
460
  msgstr ""
461
 
462
- #: includes/class-builder-fields.php:376, includes/class-builder-fields.php:404
463
  msgid "Font Size"
464
  msgstr ""
465
 
466
- #: includes/class-builder-fields.php:381
467
  msgid "Only applies to the form description."
468
  msgstr ""
469
 
470
- #: includes/class-builder-fields.php:388, includes/class-builder-fields.php:412
471
  msgid "Font Color"
472
  msgstr ""
473
 
474
- #: includes/class-builder-fields.php:391
475
  msgid "Applies to the form description, input labels, and disclosure text."
476
  msgstr ""
477
 
478
- #: includes/class-builder-fields.php:398
479
  msgid "Form Submit Button"
480
  msgstr ""
481
 
482
- #: includes/class-builder-fields.php:415
483
  msgid "Choose a color for the submit button text."
484
  msgstr ""
485
 
486
- #: includes/class-builder-fields.php:425
487
  msgid "Choose a color for the submit button background."
488
  msgstr ""
489
 
490
- #: includes/class-builder-fields.php:440
491
  msgid "Input Design"
492
  msgstr ""
493
 
494
- #: includes/class-builder-fields.php:447
495
  msgid "Form Padding"
496
  msgstr ""
497
 
498
- #: includes/class-builder-fields.php:450
499
  msgid "Enter padding values in number of pixels. Padding will be applied to four sides of the form."
500
  msgstr ""
501
 
502
- #: includes/class-builder-fields.php:456, includes/class-builder-fields.php:511, includes/class-settings.php:468
503
  msgid "Top"
504
  msgstr ""
505
 
506
- #: includes/class-builder-fields.php:466, includes/class-builder-fields.php:514, includes/class-settings.php:470
507
  msgid "Right"
508
  msgstr ""
509
 
510
- #: includes/class-builder-fields.php:476, includes/class-builder-fields.php:513, includes/class-settings.php:471
511
  msgid "Bottom"
512
  msgstr ""
513
 
514
- #: includes/class-builder-fields.php:486, includes/class-builder-fields.php:512, includes/class-settings.php:469
515
  msgid "Left"
516
  msgstr ""
517
 
518
- #: includes/class-builder-fields.php:496
519
  msgid "Custom Classes"
520
  msgstr ""
521
 
522
- #: includes/class-builder-fields.php:499
523
  msgid "Set custom CSS class(es) for inputs. Separate multiple classes with spaces."
524
  msgstr ""
525
 
526
- #: includes/class-builder-fields.php:506, includes/class-settings.php:462
527
  msgid "Label Placement"
528
  msgstr ""
529
 
530
- #: includes/class-builder-fields.php:509
531
  msgid "Global"
532
  msgstr ""
533
 
534
- #: includes/class-builder-fields.php:515, includes/class-settings.php:472
535
  msgid "Hidden"
536
  msgstr ""
537
 
538
- #: includes/class-builder-fields.php:517
539
  msgid "Set the position for labels for inputs."
540
  msgstr ""
541
 
542
- #: includes/class-builder-fields.php:535
543
  msgid "Enabling this option will require users to check a box to be added to your list."
544
  msgstr ""
545
 
546
- #: includes/class-builder-fields.php:542
547
  msgid "Learn more"
548
  msgstr ""
549
 
550
- #: includes/class-builder-fields.php:547
551
  msgid "Email opt-in"
552
  msgstr ""
553
 
554
- #: includes/class-builder-fields.php:567
555
  msgid "Enable email subscriber opt-in"
556
  msgstr ""
557
 
558
- #: includes/class-builder-fields.php:569
559
  msgid "Adds an opt-in to the bottom of your form."
560
  msgstr ""
561
 
562
- #: includes/class-builder-fields.php:588
563
  msgid "Add a checkbox so subscribers can opt-in to your email list."
564
  msgstr ""
565
 
566
- #: includes/class-builder-fields.php:590
567
  msgid "(For use with Contact Us form)"
568
  msgstr ""
569
 
570
- #: includes/class-builder-fields.php:593
571
  msgid "Opt-in checkbox"
572
  msgstr ""
573
 
574
- #: includes/class-builder-fields.php:613, includes/class-settings.php:415
575
  msgid "Opt-in Affirmation"
576
  msgstr ""
577
 
578
  #. translators: placeholder has a business name from Constant Contact.
579
- #: includes/class-builder-fields.php:617
580
  msgid "Example: Yes, I would like to receive emails from %s. (You can unsubscribe anytime)"
581
  msgstr ""
582
 
583
- #: includes/class-builder-fields.php:630
584
  msgid "Form Fields"
585
  msgstr ""
586
 
587
- #: includes/class-builder-fields.php:638
588
  msgid "Add Fields"
589
  msgstr ""
590
 
591
- #: includes/class-builder-fields.php:645
592
  msgid "Create a field for each piece of information you want to collect. Good basics include email address, first name, and last name."
593
  msgstr ""
594
 
595
- #: includes/class-builder-fields.php:655
596
  msgid "Field {#}"
597
  msgstr ""
598
 
599
- #: includes/class-builder-fields.php:656
600
  msgid "Add Another Field"
601
  msgstr ""
602
 
603
- #: includes/class-builder-fields.php:657
604
  msgid "Remove Field"
605
  msgstr ""
606
 
607
- #: includes/class-builder-fields.php:663
608
  msgid "Select a Field"
609
  msgstr ""
610
 
611
- #: includes/class-builder-fields.php:673
612
  msgid "Field Label"
613
  msgstr ""
614
 
615
- #: includes/class-builder-fields.php:680
616
  msgid "Field Description"
617
  msgstr ""
618
 
619
- #: includes/class-builder-fields.php:684
620
  msgid "Ex: Enter email address"
621
  msgstr ""
622
 
623
- #: includes/class-builder-fields.php:689
624
  msgid "Required"
625
  msgstr ""
626
 
627
- #: includes/class-builder-fields.php:713
628
  msgid "Shortcode to use"
629
  msgstr ""
630
 
631
  #. translators: Placeholders here represent `<em>` and `<strong>` HTML tags.
632
- #: includes/class-builder-fields.php:718
633
  msgid "Shortcode to embed — %1$s%2$sYou can copy and paste this in a post to display your form.%3$s%4$s"
634
  msgstr ""
635
 
636
- #: includes/class-builder-fields.php:740
637
  msgid "Email settings"
638
  msgstr ""
639
 
640
- #: includes/class-builder-fields.php:747
641
  msgid "Email destination"
642
  msgstr ""
643
 
644
- #: includes/class-builder-fields.php:748
645
  msgid "Who should receive email notifications for this form. Separate multiple emails by a comma. Leave blank to default to admin email."
646
  msgstr ""
647
 
648
- #: includes/class-builder-fields.php:754
649
  msgid "Disable email notifications for this form?"
650
  msgstr ""
651
 
652
- #: includes/class-builder-fields.php:755
653
  msgid "Check this option to disable emails for this Constant Contact Forms form."
654
  msgstr ""
655
 
656
- #: includes/class-builder-fields.php:771
657
  msgid "Reset Styles"
658
  msgstr ""
659
 
660
- #: includes/class-builder-fields.php:782, includes/class-builder-fields.php:800
661
  msgid "Reset"
662
  msgstr ""
663
 
664
- #: includes/class-builder-fields.php:783
665
  msgid "Reset the styles for this Form."
666
  msgstr ""
667
 
@@ -773,7 +766,7 @@ msgstr ""
773
  msgid "Cron spawn ok"
774
  msgstr ""
775
 
776
- #: includes/class-connect.php:132, includes/class-connect.php:197
777
  msgid "Disconnect"
778
  msgstr ""
779
 
@@ -785,45 +778,64 @@ msgstr ""
785
  msgid "Are you sure you want to disconnect?"
786
  msgstr ""
787
 
788
- #: includes/class-connect.php:169, includes/class-logging.php:216, includes/class-notification-content.php:111, includes/class-notification-content.php:148, includes/class-optin.php:129, includes/class-settings.php:950
789
- msgctxt "img alt text"
790
- msgid "Constant Contact logo"
791
  msgstr ""
792
 
793
  #: includes/class-connect.php:176
794
- msgid "Account connected."
795
  msgstr ""
796
 
797
- #: includes/class-connect.php:178
798
- msgid "Plugin connected to Constant Contact."
799
  msgstr ""
800
 
801
- #: includes/class-connect.php:189
802
  msgid "There was an issue with retrieving connected account information. Please try again."
803
  msgstr ""
804
 
805
- #: includes/class-connect.php:205
806
- msgid "Your account is connected! Now, add a new form."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
807
  msgstr ""
808
 
809
- #: includes/class-connect.php:215
810
- msgid "Please help to improve this plugin."
811
  msgstr ""
812
 
813
  #. translators: Placeholder will hold link to Constant Contact privacy statement.
814
- #: includes/class-connect.php:220
815
  msgid "Allow Constant Contact to use Google Analytics&trade; to track your usage across the Constant Contact Forms plugin. You can opt-out within the Settings page. See our %1$s."
816
  msgstr ""
817
 
818
- #: includes/class-connect.php:223
819
  msgid "Privacy Statement"
820
  msgstr ""
821
 
822
- #: includes/class-connect.php:230
823
  msgid "Allow"
824
  msgstr ""
825
 
826
- #: includes/class-connect.php:231, includes/class-notification-content.php:164
827
  msgid "Dismiss"
828
  msgstr ""
829
 
@@ -850,10 +862,10 @@ msgid "Parent Form:"
850
  msgstr ""
851
 
852
  #: includes/class-cpts.php:68
853
- msgid "All Forms"
854
  msgstr ""
855
 
856
- #: includes/class-cpts.php:69, includes/class-cpts.php:70
857
  msgid "Add New Form"
858
  msgstr ""
859
 
@@ -861,7 +873,7 @@ msgstr ""
861
  msgid "New Form"
862
  msgstr ""
863
 
864
- #: includes/class-cpts.php:72, includes/class-display.php:861
865
  msgid "Edit Form"
866
  msgstr ""
867
 
@@ -1079,100 +1091,104 @@ msgstr ""
1079
  msgid "Select list(s) to subscribe to"
1080
  msgstr ""
1081
 
1082
- #: includes/class-display.php:544
1083
- msgid "Constant Contact Use."
1084
  msgstr ""
1085
 
1086
- #: includes/class-display.php:699, includes/class-display.php:1800
1087
  msgid "Error: Please correct your entry."
1088
  msgstr ""
1089
 
1090
- #: includes/class-display.php:1373
 
 
 
 
1091
  msgid "Street Address"
1092
  msgstr ""
1093
 
1094
- #: includes/class-display.php:1374
1095
  msgid "Address Line 2"
1096
  msgstr ""
1097
 
1098
- #: includes/class-display.php:1375
1099
  msgid "City"
1100
  msgstr ""
1101
 
1102
- #: includes/class-display.php:1376
1103
  msgid "State"
1104
  msgstr ""
1105
 
1106
- #: includes/class-display.php:1377
1107
  msgid "ZIP Code"
1108
  msgstr ""
1109
 
1110
- #: includes/class-display.php:1567
1111
  msgid "Month"
1112
  msgstr ""
1113
 
1114
- #: includes/class-display.php:1568
1115
  msgid "Day"
1116
  msgstr ""
1117
 
1118
- #: includes/class-display.php:1569
1119
  msgid "Year"
1120
  msgstr ""
1121
 
1122
- #: includes/class-display.php:1685
1123
  msgid "January"
1124
  msgstr ""
1125
 
1126
- #: includes/class-display.php:1686
1127
  msgid "February"
1128
  msgstr ""
1129
 
1130
- #: includes/class-display.php:1687
1131
  msgid "March"
1132
  msgstr ""
1133
 
1134
- #: includes/class-display.php:1688
1135
  msgid "April"
1136
  msgstr ""
1137
 
1138
- #: includes/class-display.php:1689
1139
  msgid "May"
1140
  msgstr ""
1141
 
1142
- #: includes/class-display.php:1690
1143
  msgid "June"
1144
  msgstr ""
1145
 
1146
- #: includes/class-display.php:1691
1147
  msgid "July "
1148
  msgstr ""
1149
 
1150
- #: includes/class-display.php:1692
1151
  msgid "August"
1152
  msgstr ""
1153
 
1154
- #: includes/class-display.php:1693
1155
  msgid "September"
1156
  msgstr ""
1157
 
1158
- #: includes/class-display.php:1694
1159
  msgid "October"
1160
  msgstr ""
1161
 
1162
- #: includes/class-display.php:1695
1163
  msgid "November"
1164
  msgstr ""
1165
 
1166
- #: includes/class-display.php:1696
1167
  msgid "December"
1168
  msgstr ""
1169
 
1170
  #. translators: placeholder will hold company info for site owner.
1171
- #: includes/class-display.php:1871
1172
  msgid "By submitting this form, you are consenting to receive marketing emails from: %1$s. You can revoke your consent to receive emails at any time by using the SafeUnsubscribe&reg; link, found at the bottom of every email. %2$s"
1173
  msgstr ""
1174
 
1175
- #: includes/class-display.php:1878
1176
  msgid "Emails are serviced by Constant Contact"
1177
  msgstr ""
1178
 
@@ -1196,12 +1212,16 @@ msgstr ""
1196
  msgid "Are you sure you want to delete current logs?"
1197
  msgstr ""
1198
 
1199
- #: includes/class-logging.php:175
1200
- msgid "Debug logs"
 
 
 
 
1201
  msgstr ""
1202
 
1203
  #: includes/class-logging.php:223
1204
- msgid "No error log exists"
1205
  msgstr ""
1206
 
1207
  #. translators: placeholder holds the log location.
@@ -1210,11 +1230,11 @@ msgid "We are not able to write to the %s file."
1210
  msgstr ""
1211
 
1212
  #: includes/class-logging.php:239
1213
- msgid "Error log below can be used with support requests to help identify issues with Constant Contact Forms."
1214
  msgstr ""
1215
 
1216
  #: includes/class-logging.php:240
1217
- msgid "When available, you can share information by copying and pasting the content in the textarea, or by using the \"Download logs\" link at the end. Logs can be cleared by using the \"Delete logs\" link."
1218
  msgstr ""
1219
 
1220
  #: includes/class-logging.php:246
@@ -1230,7 +1250,7 @@ msgid "Delete logs"
1230
  msgstr ""
1231
 
1232
  #. translators: placeholder wil have error message.
1233
- #: includes/class-logging.php:326
1234
  msgid "Log display error: %s"
1235
  msgstr ""
1236
 
@@ -1286,6 +1306,10 @@ msgstr ""
1286
  msgid "Get the most out of the %s plugin &mdash; use it with an active Constant Contact account."
1287
  msgstr ""
1288
 
 
 
 
 
1289
  #: includes/class-notification-content.php:65
1290
  msgid "Connect your account"
1291
  msgstr ""
@@ -1299,6 +1323,11 @@ msgstr ""
1299
  msgid "You currently have a large number of lists in your Constant Contact account. You may experience some issues with syncing them."
1300
  msgstr ""
1301
 
 
 
 
 
 
1302
  #: includes/class-notification-content.php:115
1303
  msgid "Constant Contact Forms for WordPress data tracking opt-in"
1304
  msgstr ""
@@ -1326,20 +1355,15 @@ msgstr ""
1326
  msgid "References to one or more deleted Constant Contact forms are still present on your site. Please review the list below and update or remove the references to avoid issues on your site:"
1327
  msgstr ""
1328
 
1329
- #. translators: 1: label for form ID, 2: form ID, 3: references to specified form.
1330
- #: includes/class-notification-content.php:226
1331
- msgid "Form"
1332
- msgstr ""
1333
-
1334
  #: includes/class-notifications.php:418
1335
  msgid "Dismiss this notice."
1336
  msgstr ""
1337
 
1338
- #: includes/class-optin.php:137, includes/class-settings.php:956
1339
  msgid "Agree"
1340
  msgstr ""
1341
 
1342
- #: includes/class-optin.php:138, includes/class-settings.php:957
1343
  msgid "Disagree"
1344
  msgstr ""
1345
 
@@ -1395,152 +1419,156 @@ msgstr ""
1395
  msgid "Spam Control"
1396
  msgstr ""
1397
 
1398
- #: includes/class-settings.php:66, includes/class-settings.php:570
1399
  msgid "Support"
1400
  msgstr ""
1401
 
1402
- #: includes/class-settings.php:326
1403
- msgid "Constant Contact Forms Settings"
1404
- msgstr ""
1405
-
1406
- #: includes/class-settings.php:327
1407
- msgid "Settings"
1408
  msgstr ""
1409
 
1410
- #: includes/class-settings.php:347
1411
  msgid "Google Analytics&trade; tracking opt-in."
1412
  msgstr ""
1413
 
1414
- #: includes/class-settings.php:350
1415
  msgid "Allow Constant Contact to use Google Analytics&trade; to track your usage across the Constant Contact Forms plugin.<br/> NOTE &mdash; Your website and users will not be tracked. See our <a href=\"https://www.endurance.com/privacy\"> Privacy Statement</a> information about what is and is not tracked."
1416
  msgstr ""
1417
 
1418
- #: includes/class-settings.php:356
1419
  msgid "Disable E-mail Notifications"
1420
  msgstr ""
1421
 
1422
  #. translators: Placeholder is for a <br /> HTML tag.
1423
- #: includes/class-settings.php:359
1424
  msgid "This option will disable e-mail notifications for forms with a selected list and successfully submit to Constant Contact.%s Notifications are sent to the email address listed under Wordpress \"General Settings\"."
1425
  msgstr ""
1426
 
1427
- #: includes/class-settings.php:367
1428
  msgid "Bypass Constant Contact cron scheduling"
1429
  msgstr ""
1430
 
1431
- #: includes/class-settings.php:368
1432
  msgid "This option will send form entries to Constant Contact right away instead of holding for one minute delay."
1433
  msgstr ""
1434
 
1435
- #: includes/class-settings.php:382
1436
  msgid "Advanced Opt-in"
1437
  msgstr ""
1438
 
1439
- #: includes/class-settings.php:387
1440
  msgid "Opt-in Location"
1441
  msgstr ""
1442
 
1443
- #: includes/class-settings.php:394, includes/class-settings.php:401
1444
  msgid "Select a list"
1445
  msgstr ""
1446
 
1447
- #: includes/class-settings.php:397
1448
  msgid "Add subscribers to"
1449
  msgstr ""
1450
 
1451
  #. translators: placeholder will hold site owner's business name.
1452
- #: includes/class-settings.php:419
1453
  msgid "Yes, I would like to receive emails from %s. Sign me up!"
1454
  msgstr ""
1455
 
1456
- #: includes/class-settings.php:424
1457
  msgid "Disclosure Name"
1458
  msgstr ""
1459
 
1460
- #: includes/class-settings.php:432
1461
  msgid "Disclosure Address"
1462
  msgstr ""
1463
 
1464
- #: includes/class-settings.php:446
1465
  msgid "Global Form CSS Settings"
1466
  msgstr ""
1467
 
1468
- #: includes/class-settings.php:451
1469
  msgid "CSS Classes"
1470
  msgstr ""
1471
 
1472
- #: includes/class-settings.php:454
1473
  msgid "Provide custom classes for the form separated by a single space."
1474
  msgstr ""
1475
 
1476
- #: includes/class-settings.php:474
1477
  msgid "Choose the position for the labels of the form elements."
1478
  msgstr ""
1479
 
1480
- #: includes/class-settings.php:494
 
 
 
 
 
 
 
 
1481
  msgid "Google reCAPTCHA"
1482
  msgstr ""
1483
 
1484
- #: includes/class-settings.php:497
1485
  msgid "Learn more and get an "
1486
  msgstr ""
1487
 
1488
- #: includes/class-settings.php:499
1489
  msgid "API site key"
1490
  msgstr ""
1491
 
1492
- #: includes/class-settings.php:504
1493
  msgid "Version"
1494
  msgstr ""
1495
 
1496
- #: includes/class-settings.php:510
1497
  msgid "Version 2"
1498
  msgstr ""
1499
 
1500
- #: includes/class-settings.php:511
1501
  msgid "Version 3"
1502
  msgstr ""
1503
 
1504
- #: includes/class-settings.php:516
1505
  msgid "Site Key"
1506
  msgstr ""
1507
 
1508
- #: includes/class-settings.php:526
1509
  msgid "Secret Key"
1510
  msgstr ""
1511
 
1512
- #: includes/class-settings.php:539
1513
  msgid "Suspected Bot Error Message"
1514
  msgstr ""
1515
 
1516
- #: includes/class-settings.php:542
1517
  msgid "This message displays when the plugin detects spam data. Note that this message may be overriden on a per-post basis."
1518
  msgstr ""
1519
 
1520
- #: includes/class-settings.php:548
1521
  msgid "Error Message"
1522
  msgstr ""
1523
 
1524
- #: includes/class-settings.php:574
1525
  msgid "Enable logging for debugging purposes."
1526
  msgstr ""
1527
 
1528
- #: includes/class-settings.php:575
1529
  msgid "This option will turn on some logging functionality that can be used to deduce sources of issues with the use of Constant Contact Forms plugin."
1530
  msgstr ""
1531
 
1532
- #: includes/class-settings.php:592
1533
  msgid "Add a checkbox to the comment field in your posts"
1534
  msgstr ""
1535
 
1536
- #: includes/class-settings.php:593
1537
  msgid "Add a checkbox to the main WordPress login page"
1538
  msgstr ""
1539
 
1540
- #: includes/class-settings.php:597
1541
  msgid "Add a checkbox to the WordPress user registration page"
1542
  msgstr ""
1543
 
1544
- #: includes/class-settings.php:1039
1545
  msgid "We do not think you are human"
1546
  msgstr ""
1
+ # Copyright (C) 2021 Constant Contact Forms
2
  # This file is distributed under the same license as the Constant Contact Forms package.
3
  msgid ""
4
  msgstr ""
13
  "X-Poedit-SourceCharset: UTF-8\n"
14
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
15
 
16
+ #: constant-contact-forms.php:391, includes/class-admin.php:197, includes/class-beaver-builder.php:112, includes/class-cpts.php:89, includes/class-cpts.php:148
17
  msgid "Constant Contact"
18
  msgstr ""
19
 
20
+ #: constant-contact-forms.php:426
21
  msgid "Constant Contact Forms requires PHP 5.4 or higher. Your hosting provider or website administrator should be able to assist in updating your PHP version."
22
  msgstr ""
23
 
24
+ #: constant-contact-forms.php:740
25
  msgid "Error loading license."
26
  msgstr ""
27
 
69
  msgid "FAQ"
70
  msgstr ""
71
 
72
+ #: includes/class-admin-pages.php:211
73
+ msgid "About Constant Contact Forms"
 
 
 
 
 
74
  msgstr ""
75
 
76
+ #: includes/class-admin-pages.php:217
77
  msgid "This plugin makes it fast and easy to capture all kinds of visitor information right from your WordPress site—even if you don't have a Constant Contact account."
78
  msgstr ""
79
 
80
+ #: includes/class-admin-pages.php:229
81
  msgid "Whether you're looking to collect email addresses, contact info, or visitor feedback, you can customize your forms with data fields that work best for you."
82
  msgstr ""
83
 
84
+ #: includes/class-admin-pages.php:232
85
  msgid "Quickly create different types of forms that are clear, simple, and mobile-optimized."
86
  msgstr ""
87
 
88
+ #: includes/class-admin-pages.php:233
89
  msgid "Choose forms that automatically select the theme and style of your WordPress site."
90
  msgstr ""
91
 
92
+ #: includes/class-admin-pages.php:234
93
  msgid "Customize the form data fields, so you can tailor the type of information you collect."
94
  msgstr ""
95
 
96
+ #: includes/class-admin-pages.php:244
97
+ msgid "Turn Contacts into Customers."
 
 
 
 
98
  msgstr ""
99
 
100
+ #: includes/class-admin-pages.php:247
101
  msgid "Nurture your new contacts with a Constant Contact email marketing account even after they've left your website. Sign up for a 60-day trial account* and you can:"
102
  msgstr ""
103
 
104
+ #: includes/class-admin-pages.php:250
105
  msgid "Seamlessly add new contacts to mailing lists."
106
  msgstr ""
107
 
108
+ #: includes/class-admin-pages.php:251
109
  msgid "Create and send professional emails."
110
  msgstr ""
111
 
112
+ #: includes/class-admin-pages.php:252
113
  msgid "Get expert marketing help and support."
114
  msgstr ""
115
 
116
+ #: includes/class-admin-pages.php:258, includes/class-admin-pages.php:258
117
  msgid "Try us Free"
118
  msgstr ""
119
 
120
+ #: includes/class-admin-pages.php:263
121
  msgid "Already have a Constant Contact account?"
122
  msgstr ""
123
 
 
 
 
 
 
 
 
 
 
 
 
 
124
  #: includes/class-admin-pages.php:266
125
+ msgid "Connect the Plugin"
126
  msgstr ""
127
 
128
+ #: includes/class-admin-pages.php:275
129
+ msgid "NOTE:"
130
  msgstr ""
131
 
132
+ #: includes/class-admin-pages.php:275
133
+ msgid "You can use the Constant Contact Form plugin without a Constant Contact account. All information collected by the forms will be individually emailed to your site admin."
134
  msgstr ""
135
 
136
+ #: includes/class-admin-pages.php:289
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
137
  msgid "GPLv3 license"
138
  msgstr ""
139
 
140
  #. translators: Placholder here is a link to the license.
141
+ #: includes/class-admin-pages.php:296
142
  msgid "This software is released under a modified %s."
143
  msgstr ""
144
 
145
+ #: includes/class-admin-pages.php:315
146
+ msgid "Constant Contact Forms - License"
 
 
 
 
 
 
 
 
 
 
 
 
 
147
  msgstr ""
148
 
149
+ #: includes/class-admin.php:187
150
+ msgid "Connected"
151
  msgstr ""
152
 
153
+ #: includes/class-admin.php:188
154
+ msgid "Your Constant Contact account is connected!"
 
155
  msgstr ""
156
 
157
+ #: includes/class-admin.php:191
158
+ msgid "Disconnected"
159
  msgstr ""
160
 
161
+ #: includes/class-admin.php:192
162
+ msgid "Your Constant Contact account is not connected."
163
  msgstr ""
164
 
165
+ #: includes/class-admin.php:239, includes/class-admin.php:240, includes/class-admin.php:505
166
  msgid "About"
167
  msgstr ""
168
 
169
+ #: includes/class-admin.php:248, includes/class-admin.php:249, includes/class-admin.php:506
170
  msgid "License"
171
  msgstr ""
172
 
173
+ #: includes/class-admin.php:333, includes/class-settings.php:886
174
  msgid "Settings updated."
175
  msgstr ""
176
 
177
+ #: includes/class-admin.php:370
178
  msgid "Description"
179
  msgstr ""
180
 
181
+ #: includes/class-admin.php:371, includes/class-builder-fields.php:714
182
  msgid "Shortcode"
183
  msgstr ""
184
 
185
+ #: includes/class-admin.php:372
186
  msgid "Associated List"
187
  msgstr ""
188
 
189
+ #: includes/class-admin.php:405
190
+ msgid "Copy"
191
+ msgstr ""
192
+
193
+ #: includes/class-admin.php:428
194
  msgid "No associated list"
195
  msgstr ""
196
 
197
+ #: includes/class-admin.php:447
198
  msgid "Contact Count"
199
  msgstr ""
200
 
201
+ #: includes/class-admin.php:503
202
  msgid "Check out the official WordPress plugin from @constantcontact:"
203
  msgstr ""
204
 
205
+ #: includes/class-admin.php:517
206
  msgid "Spread the word!"
207
  msgstr ""
208
 
209
+ #: includes/class-admin.php:599
210
  msgid "You have unsaved changes."
211
  msgstr ""
212
 
213
+ #: includes/class-admin.php:600
214
  msgid "move up"
215
  msgstr ""
216
 
217
+ #: includes/class-admin.php:601
218
  msgid "move down"
219
  msgstr ""
220
 
226
  msgid "Your API access token is invalid. Reconnect to Constant Contact to receive a new token."
227
  msgstr ""
228
 
229
+ #: includes/class-beaver-builder.php:50, includes/class-beaver-builder.php:53, includes/class-settings.php:326, includes/class-settings.php:327
230
+ msgid "Settings"
231
+ msgstr ""
232
+
233
+ #: includes/class-beaver-builder.php:57
234
+ msgid "Title"
235
+ msgstr ""
236
+
237
+ #: includes/class-beaver-builder.php:60
238
+ msgid "Display"
239
+ msgstr ""
240
+
241
+ #: includes/class-beaver-builder.php:61
242
+ msgid "Hide"
243
+ msgstr ""
244
+
245
+ #. translators: 1: label for form ID, 2: form ID, 3: references to specified form.
246
+ #: includes/class-beaver-builder.php:66, includes/class-notification-content.php:226
247
+ msgid "Form"
248
+ msgstr ""
249
+
250
+ #: includes/class-beaver-builder.php:98
251
+ msgid "No forms currently published."
252
+ msgstr ""
253
+
254
+ #: includes/class-beaver-builder.php:110
255
+ msgid "Constant Contact Form"
256
+ msgstr ""
257
+
258
+ #: includes/class-beaver-builder.php:111
259
+ msgid "Display a Constant Contact Form"
260
+ msgstr ""
261
+
262
  #: includes/class-builder-fields.php:123
263
  msgid "Email (required)"
264
  msgstr ""
348
  msgstr ""
349
 
350
  #: includes/class-builder-fields.php:222
351
+ msgid "No Lists Found"
352
  msgstr ""
353
 
354
+ #: includes/class-builder-fields.php:223
355
+ msgid "Create a List"
356
+ msgstr ""
357
+
358
+ #: includes/class-builder-fields.php:231
359
+ msgid "Allow subscribers to select from lists. ( Select at least one )"
360
+ msgstr ""
361
+
362
+ #: includes/class-builder-fields.php:249
363
  msgid "Form Description"
364
  msgstr ""
365
 
366
+ #: includes/class-builder-fields.php:257
367
  msgid "This message will display above the form fields, so use it as an opportunity to pitch your email list. Tell visitors why they should subscribe to your emails, focusing on benefits like insider tips, discounts, subscriber coupons, and more."
368
  msgstr ""
369
 
370
+ #: includes/class-builder-fields.php:277
371
  msgid "Form Options"
372
  msgstr ""
373
 
374
+ #: includes/class-builder-fields.php:285
375
  msgid "Button text"
376
  msgstr ""
377
 
378
+ #: includes/class-builder-fields.php:288
379
  msgid "Sign up"
380
  msgstr ""
381
 
382
+ #: includes/class-builder-fields.php:292
383
  msgid "Success message"
384
  msgstr ""
385
 
386
+ #: includes/class-builder-fields.php:295
387
  msgid "Your information has been submitted"
388
  msgstr ""
389
 
390
+ #: includes/class-builder-fields.php:299
391
  msgid "Submission behavior"
392
  msgstr ""
393
 
394
+ #: includes/class-builder-fields.php:306
395
  msgid "Redirect URL"
396
  msgstr ""
397
 
398
  #. translators: 1: basic field info, 2: warning about invalid values, 3: recommended field value
399
+ #: includes/class-builder-fields.php:312
400
  msgid "Leave blank to keep users on the current page."
401
  msgstr ""
402
 
403
+ #: includes/class-builder-fields.php:313
404
  msgid "NOTE: This URL must be within the current site and may not be a direct link to a media file (e.g., a PDF document). Providing a Redirect URL that is outside the current site or is a media file will cause issues with Constant Constact functionality, including contacts not being added to lists successfully."
405
  msgstr ""
406
 
407
+ #: includes/class-builder-fields.php:314
408
  msgid "It is recommended to leave this field blank or provide a URL to a page that contains any external or media links within the page content."
409
  msgstr ""
410
 
411
+ #: includes/class-builder-fields.php:320
412
  msgid "No page refresh"
413
  msgstr ""
414
 
415
+ #: includes/class-builder-fields.php:323
416
  msgid "Enable form submission without a page refresh. This option overrides the Redirect URL choice above."
417
  msgstr ""
418
 
419
+ #: includes/class-builder-fields.php:328
420
  msgid "Disable Google reCAPTCHA for this form?"
421
  msgstr ""
422
 
423
+ #: includes/class-builder-fields.php:331
424
  msgid "Checking will disable Google's reCAPTCHA output for this form. Only valid if using Google reCAPTCHA version 2"
425
  msgstr ""
426
 
427
+ #: includes/class-builder-fields.php:336
428
  msgid "Spam notice"
429
  msgstr ""
430
 
431
+ #: includes/class-builder-fields.php:343
432
  msgid "Spam Error Message"
433
  msgstr ""
434
 
435
+ #: includes/class-builder-fields.php:346
436
  msgid "Set the spam error message displayed for this form."
437
  msgstr ""
438
 
439
+ #: includes/class-builder-fields.php:362
440
  msgid "Form Design"
441
  msgstr ""
442
 
443
+ #: includes/class-builder-fields.php:369, includes/class-builder-fields.php:431
444
  msgid "Background Color"
445
  msgstr ""
446
 
447
+ #: includes/class-builder-fields.php:372
448
  msgid "Applies to the whole form."
449
  msgstr ""
450
 
451
+ #: includes/class-builder-fields.php:379
452
  msgid "Form Fonts"
453
  msgstr ""
454
 
455
+ #: includes/class-builder-fields.php:385, includes/class-builder-fields.php:413
456
  msgid "Font Size"
457
  msgstr ""
458
 
459
+ #: includes/class-builder-fields.php:390
460
  msgid "Only applies to the form description."
461
  msgstr ""
462
 
463
+ #: includes/class-builder-fields.php:397, includes/class-builder-fields.php:421
464
  msgid "Font Color"
465
  msgstr ""
466
 
467
+ #: includes/class-builder-fields.php:400
468
  msgid "Applies to the form description, input labels, and disclosure text."
469
  msgstr ""
470
 
471
+ #: includes/class-builder-fields.php:407
472
  msgid "Form Submit Button"
473
  msgstr ""
474
 
475
+ #: includes/class-builder-fields.php:424
476
  msgid "Choose a color for the submit button text."
477
  msgstr ""
478
 
479
+ #: includes/class-builder-fields.php:434
480
  msgid "Choose a color for the submit button background."
481
  msgstr ""
482
 
483
+ #: includes/class-builder-fields.php:449
484
  msgid "Input Design"
485
  msgstr ""
486
 
487
+ #: includes/class-builder-fields.php:456
488
  msgid "Form Padding"
489
  msgstr ""
490
 
491
+ #: includes/class-builder-fields.php:459
492
  msgid "Enter padding values in number of pixels. Padding will be applied to four sides of the form."
493
  msgstr ""
494
 
495
+ #: includes/class-builder-fields.php:465, includes/class-builder-fields.php:520, includes/class-settings.php:476
496
  msgid "Top"
497
  msgstr ""
498
 
499
+ #: includes/class-builder-fields.php:475, includes/class-builder-fields.php:523, includes/class-settings.php:478
500
  msgid "Right"
501
  msgstr ""
502
 
503
+ #: includes/class-builder-fields.php:485, includes/class-builder-fields.php:522, includes/class-settings.php:479
504
  msgid "Bottom"
505
  msgstr ""
506
 
507
+ #: includes/class-builder-fields.php:495, includes/class-builder-fields.php:521, includes/class-settings.php:477
508
  msgid "Left"
509
  msgstr ""
510
 
511
+ #: includes/class-builder-fields.php:505
512
  msgid "Custom Classes"
513
  msgstr ""
514
 
515
+ #: includes/class-builder-fields.php:508
516
  msgid "Set custom CSS class(es) for inputs. Separate multiple classes with spaces."
517
  msgstr ""
518
 
519
+ #: includes/class-builder-fields.php:515, includes/class-settings.php:470
520
  msgid "Label Placement"
521
  msgstr ""
522
 
523
+ #: includes/class-builder-fields.php:518
524
  msgid "Global"
525
  msgstr ""
526
 
527
+ #: includes/class-builder-fields.php:524, includes/class-settings.php:480
528
  msgid "Hidden"
529
  msgstr ""
530
 
531
+ #: includes/class-builder-fields.php:526
532
  msgid "Set the position for labels for inputs."
533
  msgstr ""
534
 
535
+ #: includes/class-builder-fields.php:544
536
  msgid "Enabling this option will require users to check a box to be added to your list."
537
  msgstr ""
538
 
539
+ #: includes/class-builder-fields.php:551
540
  msgid "Learn more"
541
  msgstr ""
542
 
543
+ #: includes/class-builder-fields.php:556
544
  msgid "Email opt-in"
545
  msgstr ""
546
 
547
+ #: includes/class-builder-fields.php:576
548
  msgid "Enable email subscriber opt-in"
549
  msgstr ""
550
 
551
+ #: includes/class-builder-fields.php:578
552
  msgid "Adds an opt-in to the bottom of your form."
553
  msgstr ""
554
 
555
+ #: includes/class-builder-fields.php:597
556
  msgid "Add a checkbox so subscribers can opt-in to your email list."
557
  msgstr ""
558
 
559
+ #: includes/class-builder-fields.php:599
560
  msgid "(For use with Contact Us form)"
561
  msgstr ""
562
 
563
+ #: includes/class-builder-fields.php:602
564
  msgid "Opt-in checkbox"
565
  msgstr ""
566
 
567
+ #: includes/class-builder-fields.php:622, includes/class-settings.php:423
568
  msgid "Opt-in Affirmation"
569
  msgstr ""
570
 
571
  #. translators: placeholder has a business name from Constant Contact.
572
+ #: includes/class-builder-fields.php:626
573
  msgid "Example: Yes, I would like to receive emails from %s. (You can unsubscribe anytime)"
574
  msgstr ""
575
 
576
+ #: includes/class-builder-fields.php:639
577
  msgid "Form Fields"
578
  msgstr ""
579
 
580
+ #: includes/class-builder-fields.php:647
581
  msgid "Add Fields"
582
  msgstr ""
583
 
584
+ #: includes/class-builder-fields.php:654
585
  msgid "Create a field for each piece of information you want to collect. Good basics include email address, first name, and last name."
586
  msgstr ""
587
 
588
+ #: includes/class-builder-fields.php:664
589
  msgid "Field {#}"
590
  msgstr ""
591
 
592
+ #: includes/class-builder-fields.php:665
593
  msgid "Add Another Field"
594
  msgstr ""
595
 
596
+ #: includes/class-builder-fields.php:666
597
  msgid "Remove Field"
598
  msgstr ""
599
 
600
+ #: includes/class-builder-fields.php:672
601
  msgid "Select a Field"
602
  msgstr ""
603
 
604
+ #: includes/class-builder-fields.php:682
605
  msgid "Field Label"
606
  msgstr ""
607
 
608
+ #: includes/class-builder-fields.php:689
609
  msgid "Field Description"
610
  msgstr ""
611
 
612
+ #: includes/class-builder-fields.php:693
613
  msgid "Ex: Enter email address"
614
  msgstr ""
615
 
616
+ #: includes/class-builder-fields.php:698
617
  msgid "Required"
618
  msgstr ""
619
 
620
+ #: includes/class-builder-fields.php:722
621
  msgid "Shortcode to use"
622
  msgstr ""
623
 
624
  #. translators: Placeholders here represent `<em>` and `<strong>` HTML tags.
625
+ #: includes/class-builder-fields.php:727
626
  msgid "Shortcode to embed — %1$s%2$sYou can copy and paste this in a post to display your form.%3$s%4$s"
627
  msgstr ""
628
 
629
+ #: includes/class-builder-fields.php:749
630
  msgid "Email settings"
631
  msgstr ""
632
 
633
+ #: includes/class-builder-fields.php:756
634
  msgid "Email destination"
635
  msgstr ""
636
 
637
+ #: includes/class-builder-fields.php:757
638
  msgid "Who should receive email notifications for this form. Separate multiple emails by a comma. Leave blank to default to admin email."
639
  msgstr ""
640
 
641
+ #: includes/class-builder-fields.php:763
642
  msgid "Disable email notifications for this form?"
643
  msgstr ""
644
 
645
+ #: includes/class-builder-fields.php:764
646
  msgid "Check this option to disable emails for this Constant Contact Forms form."
647
  msgstr ""
648
 
649
+ #: includes/class-builder-fields.php:780
650
  msgid "Reset Styles"
651
  msgstr ""
652
 
653
+ #: includes/class-builder-fields.php:791, includes/class-builder-fields.php:809
654
  msgid "Reset"
655
  msgstr ""
656
 
657
+ #: includes/class-builder-fields.php:792
658
  msgid "Reset the styles for this Form."
659
  msgstr ""
660
 
766
  msgid "Cron spawn ok"
767
  msgstr ""
768
 
769
+ #: includes/class-connect.php:132, includes/class-connect.php:215
770
  msgid "Disconnect"
771
  msgstr ""
772
 
778
  msgid "Are you sure you want to disconnect?"
779
  msgstr ""
780
 
781
+ #: includes/class-connect.php:174
782
+ msgid "Account Connected!"
 
783
  msgstr ""
784
 
785
  #: includes/class-connect.php:176
786
+ msgid "You are connected to your Constant Contact account."
787
  msgstr ""
788
 
789
+ #: includes/class-connect.php:180
790
+ msgid "Account Name:"
791
  msgstr ""
792
 
793
+ #: includes/class-connect.php:191
794
  msgid "There was an issue with retrieving connected account information. Please try again."
795
  msgstr ""
796
 
797
+ #: includes/class-connect.php:198
798
+ msgid "Email Address:"
799
+ msgstr ""
800
+
801
+ #: includes/class-connect.php:210
802
+ msgid "Status:"
803
+ msgstr ""
804
+
805
+ #: includes/class-connect.php:234
806
+ msgid "Turn Contacts into Customers!"
807
+ msgstr ""
808
+
809
+ #: includes/class-connect.php:235
810
+ msgid "You site is connected to Constant Contact and ready to start collecting visitor information. "
811
+ msgstr ""
812
+
813
+ #: includes/class-connect.php:236
814
+ msgid "Get started by watching our introduction video to get the most out of the plugin."
815
+ msgstr ""
816
+
817
+ #: includes/class-connect.php:237, includes/class-cpts.php:70
818
+ msgid "Add Form"
819
  msgstr ""
820
 
821
+ #: includes/class-connect.php:244
822
+ msgid "Please Help to Improve this Plugin"
823
  msgstr ""
824
 
825
  #. translators: Placeholder will hold link to Constant Contact privacy statement.
826
+ #: includes/class-connect.php:249
827
  msgid "Allow Constant Contact to use Google Analytics&trade; to track your usage across the Constant Contact Forms plugin. You can opt-out within the Settings page. See our %1$s."
828
  msgstr ""
829
 
830
+ #: includes/class-connect.php:252
831
  msgid "Privacy Statement"
832
  msgstr ""
833
 
834
+ #: includes/class-connect.php:259
835
  msgid "Allow"
836
  msgstr ""
837
 
838
+ #: includes/class-connect.php:260, includes/class-notification-content.php:164
839
  msgid "Dismiss"
840
  msgstr ""
841
 
862
  msgstr ""
863
 
864
  #: includes/class-cpts.php:68
865
+ msgid "Forms"
866
  msgstr ""
867
 
868
+ #: includes/class-cpts.php:69
869
  msgid "Add New Form"
870
  msgstr ""
871
 
873
  msgid "New Form"
874
  msgstr ""
875
 
876
+ #: includes/class-cpts.php:72, includes/class-display.php:860
877
  msgid "Edit Form"
878
  msgstr ""
879
 
1091
  msgid "Select list(s) to subscribe to"
1092
  msgstr ""
1093
 
1094
+ #: includes/class-display.php:543
1095
+ msgid "Constant Contact Use. Please leave this field blank."
1096
  msgstr ""
1097
 
1098
+ #: includes/class-display.php:698, includes/class-display.php:1807
1099
  msgid "Error: Please correct your entry."
1100
  msgstr ""
1101
 
1102
+ #: includes/class-display.php:1077
1103
+ msgid "numbers, dashes, pluses, periods, and parentheses"
1104
+ msgstr ""
1105
+
1106
+ #: includes/class-display.php:1380
1107
  msgid "Street Address"
1108
  msgstr ""
1109
 
1110
+ #: includes/class-display.php:1381
1111
  msgid "Address Line 2"
1112
  msgstr ""
1113
 
1114
+ #: includes/class-display.php:1382
1115
  msgid "City"
1116
  msgstr ""
1117
 
1118
+ #: includes/class-display.php:1383
1119
  msgid "State"
1120
  msgstr ""
1121
 
1122
+ #: includes/class-display.php:1384
1123
  msgid "ZIP Code"
1124
  msgstr ""
1125
 
1126
+ #: includes/class-display.php:1574
1127
  msgid "Month"
1128
  msgstr ""
1129
 
1130
+ #: includes/class-display.php:1575
1131
  msgid "Day"
1132
  msgstr ""
1133
 
1134
+ #: includes/class-display.php:1576
1135
  msgid "Year"
1136
  msgstr ""
1137
 
1138
+ #: includes/class-display.php:1692
1139
  msgid "January"
1140
  msgstr ""
1141
 
1142
+ #: includes/class-display.php:1693
1143
  msgid "February"
1144
  msgstr ""
1145
 
1146
+ #: includes/class-display.php:1694
1147
  msgid "March"
1148
  msgstr ""
1149
 
1150
+ #: includes/class-display.php:1695
1151
  msgid "April"
1152
  msgstr ""
1153
 
1154
+ #: includes/class-display.php:1696
1155
  msgid "May"
1156
  msgstr ""
1157
 
1158
+ #: includes/class-display.php:1697
1159
  msgid "June"
1160
  msgstr ""
1161
 
1162
+ #: includes/class-display.php:1698
1163
  msgid "July "
1164
  msgstr ""
1165
 
1166
+ #: includes/class-display.php:1699
1167
  msgid "August"
1168
  msgstr ""
1169
 
1170
+ #: includes/class-display.php:1700
1171
  msgid "September"
1172
  msgstr ""
1173
 
1174
+ #: includes/class-display.php:1701
1175
  msgid "October"
1176
  msgstr ""
1177
 
1178
+ #: includes/class-display.php:1702
1179
  msgid "November"
1180
  msgstr ""
1181
 
1182
+ #: includes/class-display.php:1703
1183
  msgid "December"
1184
  msgstr ""
1185
 
1186
  #. translators: placeholder will hold company info for site owner.
1187
+ #: includes/class-display.php:1878
1188
  msgid "By submitting this form, you are consenting to receive marketing emails from: %1$s. You can revoke your consent to receive emails at any time by using the SafeUnsubscribe&reg; link, found at the bottom of every email. %2$s"
1189
  msgstr ""
1190
 
1191
+ #: includes/class-display.php:1885
1192
  msgid "Emails are serviced by Constant Contact"
1193
  msgstr ""
1194
 
1212
  msgid "Are you sure you want to delete current logs?"
1213
  msgstr ""
1214
 
1215
+ #: includes/class-logging.php:175, includes/class-logging.php:216
1216
+ msgid "Debug Logs"
1217
+ msgstr ""
1218
+
1219
+ #: includes/class-logging.php:220
1220
+ msgid "No errors exists."
1221
  msgstr ""
1222
 
1223
  #: includes/class-logging.php:223
1224
+ msgid "No error log exists."
1225
  msgstr ""
1226
 
1227
  #. translators: placeholder holds the log location.
1230
  msgstr ""
1231
 
1232
  #: includes/class-logging.php:239
1233
+ msgid "The error log below can be used with support requests to help identify issues with Constant Contact Forms."
1234
  msgstr ""
1235
 
1236
  #: includes/class-logging.php:240
1237
+ msgid "When available, you can share information by copying and pasting the content in the textarea, or by using the \"Download logs\" link below. Logs can be cleared by using the \"Delete logs\" link."
1238
  msgstr ""
1239
 
1240
  #: includes/class-logging.php:246
1250
  msgstr ""
1251
 
1252
  #. translators: placeholder wil have error message.
1253
+ #: includes/class-logging.php:325
1254
  msgid "Log display error: %s"
1255
  msgstr ""
1256
 
1306
  msgid "Get the most out of the %s plugin &mdash; use it with an active Constant Contact account."
1307
  msgstr ""
1308
 
1309
+ #: includes/class-notification-content.php:58
1310
+ msgid "Constant Contact Forms"
1311
+ msgstr ""
1312
+
1313
  #: includes/class-notification-content.php:65
1314
  msgid "Connect your account"
1315
  msgstr ""
1323
  msgid "You currently have a large number of lists in your Constant Contact account. You may experience some issues with syncing them."
1324
  msgstr ""
1325
 
1326
+ #: includes/class-notification-content.php:111, includes/class-notification-content.php:148, includes/class-optin.php:129, includes/class-settings.php:966
1327
+ msgctxt "img alt text"
1328
+ msgid "Constant Contact logo"
1329
+ msgstr ""
1330
+
1331
  #: includes/class-notification-content.php:115
1332
  msgid "Constant Contact Forms for WordPress data tracking opt-in"
1333
  msgstr ""
1355
  msgid "References to one or more deleted Constant Contact forms are still present on your site. Please review the list below and update or remove the references to avoid issues on your site:"
1356
  msgstr ""
1357
 
 
 
 
 
 
1358
  #: includes/class-notifications.php:418
1359
  msgid "Dismiss this notice."
1360
  msgstr ""
1361
 
1362
+ #: includes/class-optin.php:137, includes/class-settings.php:972
1363
  msgid "Agree"
1364
  msgstr ""
1365
 
1366
+ #: includes/class-optin.php:138, includes/class-settings.php:973
1367
  msgid "Disagree"
1368
  msgstr ""
1369
 
1419
  msgid "Spam Control"
1420
  msgstr ""
1421
 
1422
+ #: includes/class-settings.php:66, includes/class-settings.php:586
1423
  msgid "Support"
1424
  msgstr ""
1425
 
1426
+ #: includes/class-settings.php:350
1427
+ msgid "General Settings"
 
 
 
 
1428
  msgstr ""
1429
 
1430
+ #: includes/class-settings.php:354
1431
  msgid "Google Analytics&trade; tracking opt-in."
1432
  msgstr ""
1433
 
1434
+ #: includes/class-settings.php:357
1435
  msgid "Allow Constant Contact to use Google Analytics&trade; to track your usage across the Constant Contact Forms plugin.<br/> NOTE &mdash; Your website and users will not be tracked. See our <a href=\"https://www.endurance.com/privacy\"> Privacy Statement</a> information about what is and is not tracked."
1436
  msgstr ""
1437
 
1438
+ #: includes/class-settings.php:364
1439
  msgid "Disable E-mail Notifications"
1440
  msgstr ""
1441
 
1442
  #. translators: Placeholder is for a <br /> HTML tag.
1443
+ #: includes/class-settings.php:367
1444
  msgid "This option will disable e-mail notifications for forms with a selected list and successfully submit to Constant Contact.%s Notifications are sent to the email address listed under Wordpress \"General Settings\"."
1445
  msgstr ""
1446
 
1447
+ #: includes/class-settings.php:375
1448
  msgid "Bypass Constant Contact cron scheduling"
1449
  msgstr ""
1450
 
1451
+ #: includes/class-settings.php:376
1452
  msgid "This option will send form entries to Constant Contact right away instead of holding for one minute delay."
1453
  msgstr ""
1454
 
1455
+ #: includes/class-settings.php:390
1456
  msgid "Advanced Opt-in"
1457
  msgstr ""
1458
 
1459
+ #: includes/class-settings.php:395
1460
  msgid "Opt-in Location"
1461
  msgstr ""
1462
 
1463
+ #: includes/class-settings.php:402, includes/class-settings.php:409
1464
  msgid "Select a list"
1465
  msgstr ""
1466
 
1467
+ #: includes/class-settings.php:405
1468
  msgid "Add subscribers to"
1469
  msgstr ""
1470
 
1471
  #. translators: placeholder will hold site owner's business name.
1472
+ #: includes/class-settings.php:427
1473
  msgid "Yes, I would like to receive emails from %s. Sign me up!"
1474
  msgstr ""
1475
 
1476
+ #: includes/class-settings.php:432
1477
  msgid "Disclosure Name"
1478
  msgstr ""
1479
 
1480
+ #: includes/class-settings.php:440
1481
  msgid "Disclosure Address"
1482
  msgstr ""
1483
 
1484
+ #: includes/class-settings.php:454
1485
  msgid "Global Form CSS Settings"
1486
  msgstr ""
1487
 
1488
+ #: includes/class-settings.php:459
1489
  msgid "CSS Classes"
1490
  msgstr ""
1491
 
1492
+ #: includes/class-settings.php:462
1493
  msgid "Provide custom classes for the form separated by a single space."
1494
  msgstr ""
1495
 
1496
+ #: includes/class-settings.php:482
1497
  msgid "Choose the position for the labels of the form elements."
1498
  msgstr ""
1499
 
1500
+ #: includes/class-settings.php:489
1501
+ msgid "Disable Constant Contact CSS"
1502
+ msgstr ""
1503
+
1504
+ #: includes/class-settings.php:490
1505
+ msgid "Disables Constant Contact stylesheets from loading on the frontend. Note you may need to clear server and client cache to see changes go into effect."
1506
+ msgstr ""
1507
+
1508
+ #: includes/class-settings.php:510
1509
  msgid "Google reCAPTCHA"
1510
  msgstr ""
1511
 
1512
+ #: includes/class-settings.php:513
1513
  msgid "Learn more and get an "
1514
  msgstr ""
1515
 
1516
+ #: includes/class-settings.php:515
1517
  msgid "API site key"
1518
  msgstr ""
1519
 
1520
+ #: includes/class-settings.php:520
1521
  msgid "Version"
1522
  msgstr ""
1523
 
1524
+ #: includes/class-settings.php:526
1525
  msgid "Version 2"
1526
  msgstr ""
1527
 
1528
+ #: includes/class-settings.php:527
1529
  msgid "Version 3"
1530
  msgstr ""
1531
 
1532
+ #: includes/class-settings.php:532
1533
  msgid "Site Key"
1534
  msgstr ""
1535
 
1536
+ #: includes/class-settings.php:542
1537
  msgid "Secret Key"
1538
  msgstr ""
1539
 
1540
+ #: includes/class-settings.php:555
1541
  msgid "Suspected Bot Error Message"
1542
  msgstr ""
1543
 
1544
+ #: includes/class-settings.php:558
1545
  msgid "This message displays when the plugin detects spam data. Note that this message may be overriden on a per-post basis."
1546
  msgstr ""
1547
 
1548
+ #: includes/class-settings.php:564
1549
  msgid "Error Message"
1550
  msgstr ""
1551
 
1552
+ #: includes/class-settings.php:590
1553
  msgid "Enable logging for debugging purposes."
1554
  msgstr ""
1555
 
1556
+ #: includes/class-settings.php:591
1557
  msgid "This option will turn on some logging functionality that can be used to deduce sources of issues with the use of Constant Contact Forms plugin."
1558
  msgstr ""
1559
 
1560
+ #: includes/class-settings.php:608
1561
  msgid "Add a checkbox to the comment field in your posts"
1562
  msgstr ""
1563
 
1564
+ #: includes/class-settings.php:609
1565
  msgid "Add a checkbox to the main WordPress login page"
1566
  msgstr ""
1567
 
1568
+ #: includes/class-settings.php:613
1569
  msgid "Add a checkbox to the WordPress user registration page"
1570
  msgstr ""
1571
 
1572
+ #: includes/class-settings.php:1055
1573
  msgid "We do not think you are human"
1574
  msgstr ""
readme.txt CHANGED
@@ -1,9 +1,9 @@
1
  === Constant Contact Forms ===
2
- Contributors: constantcontact, webdevstudios, tw2113, znowebdev, ggwicz, ravedev
3
  Tags: capture, contacts, constant contact, constant contact form, constant contact newsletter, constant contact official, contact forms, email, form, forms, marketing, mobile, newsletter, opt-in, plugin, signup, subscribe, subscription, widget
4
  Requires at least: 5.2.0
5
- Tested up to: 5.6.0
6
- Stable tag: 1.10.1
7
  License: GPLv3
8
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
9
  Requires PHP: 5.6
@@ -12,19 +12,27 @@ The official Constant Contact plugin adds a contact form to your WordPress site
12
 
13
  == Description ==
14
 
15
- **Constant Contact Forms** makes it fast and easy to capture visitor information right from your WordPress site. Whether you’re looking to collect email addresses, contact info, or visitor feedback, you can customize your forms with data fields that work best for you. Best of all, this plugin is available to all WordPress users, even if you don’t have a Constant Contact account.
 
16
 
17
  https://www.youtube.com/watch?v=Qqb0_zcRKnM
18
 
19
- **Constant Contact Forms** allows you to:
20
 
21
- * Create forms that are clear, simple, and mobile-optimized for every device.
22
- * Choose forms that automatically select the theme and style of your WordPress site.
23
- * Customize data fields, so you can tailor the type of information you collect.
24
 
25
- BONUS: If you have a Constant Contact account, all new email addresses that you capture will be automatically added to the Constant Contact email lists of your choosing. Not a Constant Contact customer? Sign up for a [Free Trial](http://www.constantcontact.com/index?pn=miwordpress) right from the plugin.
26
 
27
- **Constant Contact Forms** requires a PHP version of 5.6 or higher. You will not be able to use if on a lower version. Talk to your system administrator or hosting company if you are not sure what version you are on.
 
 
 
 
 
 
 
28
 
29
  == Screenshots ==
30
  1. Adding a New form when connected to Constant Contact account.
@@ -35,6 +43,13 @@ BONUS: If you have a Constant Contact account, all new email addresses that you
35
 
36
  == Changelog ==
37
 
 
 
 
 
 
 
 
38
  = 1.10.1 =
39
  * Fixed: Removed accidental extra parentheses on a function call.
40
 
@@ -104,25 +119,32 @@ BONUS: If you have a Constant Contact account, all new email addresses that you
104
  == Frequently Asked Questions ==
105
 
106
  #### Installation and Setup
107
- [https://knowledgebase.constantcontact.com/articles/KnowledgeBase/10054-WordPress-Integration-with-Constant-Contact](https://knowledgebase.constantcontact.com/articles/KnowledgeBase/10054-WordPress-Integration-with-Constant-Contact)
108
 
109
  #### Constant Contact Forms Options
110
- [http://knowledgebase.constantcontact.com/articles/KnowledgeBase/18260-WordPress-Constant-Contact-Forms-Options](http://knowledgebase.constantcontact.com/articles/KnowledgeBase/18260-WordPress-Constant-Contact-Forms-Options)
111
 
112
  #### Frequently Asked Questions
113
- [https://knowledgebase.constantcontact.com/articles/KnowledgeBase/18491-Enable-Logging-in-the-Constant-Contact-Forms-for-WordPress-Plugin](https://knowledgebase.constantcontact.com/articles/KnowledgeBase/18491-Enable-Logging-in-the-Constant-Contact-Forms-for-WordPress-Plugin)
114
 
115
  #### Constant Contact List Addition Issues
116
- [https://knowledgebase.constantcontact.com/articles/KnowledgeBase/18539-WordPress-Constant-Contact-List-Addition-Issues](https://knowledgebase.constantcontact.com/articles/KnowledgeBase/18539-WordPress-Constant-Contact-List-Addition-Issues)
117
 
118
  #### cURL error 60: SSL certificate problem
119
- [https://knowledgebase.constantcontact.com/articles/KnowledgeBase/18159-WordPress-Error-60](https://knowledgebase.constantcontact.com/articles/KnowledgeBase/18159-WordPress-Error-60)
120
 
121
  #### Add Google reCAPTCHA to Constant Contact Forms
122
- [http://knowledgebase.constantcontact.com/articles/KnowledgeBase/17880](http://knowledgebase.constantcontact.com/articles/KnowledgeBase/17880)
123
 
124
  #### How do I include which custom fields labels are which custom field values in my Constant Contact Account?
125
  You can add this to your active theme or custom plugin: `add_filter( 'constant_contact_include_custom_field_label', '__return_true' );`. Note: custom fields have a max length of 50 characters. Including the labels will subtract from the 50 character total available.
126
 
127
  #### Which account level access is needed to connect my WordPress account to Constant Contact?
128
  You will need to make the connection to Constant Contact using the credentials of the account owner. Campaign manager credentials will not have enough access.
 
 
 
 
 
 
 
1
  === Constant Contact Forms ===
2
+ Contributors: constantcontact, webdevstudios, tw2113, znowebdev, ggwicz, ravedev, oceas, dcooney
3
  Tags: capture, contacts, constant contact, constant contact form, constant contact newsletter, constant contact official, contact forms, email, form, forms, marketing, mobile, newsletter, opt-in, plugin, signup, subscribe, subscription, widget
4
  Requires at least: 5.2.0
5
+ Tested up to: 5.8.0
6
+ Stable tag: 1.11.0
7
  License: GPLv3
8
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
9
  Requires PHP: 5.6
12
 
13
  == Description ==
14
 
15
+ ##Work smarter, not harder. The Constant Contact Way
16
+ Create branded emails, build a website, sell online, and make it easy for people to find you—all from one place.
17
 
18
  https://www.youtube.com/watch?v=Qqb0_zcRKnM
19
 
20
+ **Constant Contact Forms** is the easiest way to connect your WordPress website with your Constant Contact account.
21
 
22
+ - Effortlessly create sign-up forms to convert your site visitors into mailing list contacts.
23
+ - Customize data fields, so you can tailor the type of information you collect from your users.
24
+ - Captured email addresses will be automatically added to the Constant Contact email lists of your choosing.
25
 
26
+ **BONUS**: If you have a Constant Contact account, all new email addresses that you capture will be automatically added to the Constant Contact email lists of your choosing. Not a Constant Contact customer? Sign up for a [Free Trial](https://go.constantcontact.com/signup.jsp) right from the plugin.
27
 
28
+
29
+ ##How To Get Started.
30
+
31
+ 1. Signup for a [Free Trial](http://www.constantcontact.com/index?pn=miwordpress). ( Existing Constant Contact users can skip this step).
32
+ 2. Follow [first-time setup instructions](https://knowledgebase.constantcontact.com/articles/KnowledgeBase/10054-WordPress-Integration-with-Constant-Contact).
33
+ 3. [Create your first form](https://knowledgebase.constantcontact.com/articles/KnowledgeBase/18059-Create-a-Wordpress-Form?q=create%20a%20form%20wordpress&pnx=1&lang).
34
+ 4. [Add a form anywhere on your website](https://knowledgebase.constantcontact.com/articles/KnowledgeBase/30850-Add-a-Form-Created-with-the-Constant-Contact-Plugin-to-a-WordPress-Page-or-Blog-Post?lang).
35
+ 5. Watch as your visitors turn into lifetime contacts!
36
 
37
  == Screenshots ==
38
  1. Adding a New form when connected to Constant Contact account.
43
 
44
  == Changelog ==
45
 
46
+ = 1.11.0 =
47
+ - Updated: New admin styling to update the overall look and feel of the plugin in the WordPress admin.
48
+ - Updated: Amend honeypot field input for accessibility purposes.
49
+ - Added: Plugin setting to disable the loading on Constant Contact plugin CSS on the frontend.
50
+ - Added: Native browser validation for phone number (tel) field input type.
51
+ - Fixed: Amended admin notification for Bad Request results.
52
+
53
  = 1.10.1 =
54
  * Fixed: Removed accidental extra parentheses on a function call.
55
 
119
  == Frequently Asked Questions ==
120
 
121
  #### Installation and Setup
122
+ [HELP: Install the Constant Contact Forms Plugin for WordPress to Gather Sign-Ups and Feedback](https://knowledgebase.constantcontact.com/articles/KnowledgeBase/10054-WordPress-Integration-with-Constant-Contact)
123
 
124
  #### Constant Contact Forms Options
125
+ [HELP: Add email opt-in to a WordPress Form created with the Constant Contact plugin](http://knowledgebase.constantcontact.com/articles/KnowledgeBase/18260-WordPress-Constant-Contact-Forms-Options)
126
 
127
  #### Frequently Asked Questions
128
+ [HELP: Enable Logging in the Constant Contact Forms for WordPress Plugin](https://knowledgebase.constantcontact.com/articles/KnowledgeBase/18491-Enable-Logging-in-the-Constant-Contact-Forms-for-WordPress-Plugin)
129
 
130
  #### Constant Contact List Addition Issues
131
+ [HELP: Troubleshooting List Addition Issues in the Constant Contact Forms Plugin for WordPress](https://knowledgebase.constantcontact.com/articles/KnowledgeBase/18539-WordPress-Constant-Contact-List-Addition-Issues)
132
 
133
  #### cURL error 60: SSL certificate problem
134
+ [HELP: WordPress cURL Error 60: SSL Certificate Problem](https://knowledgebase.constantcontact.com/articles/KnowledgeBase/18159-WordPress-Error-60)
135
 
136
  #### Add Google reCAPTCHA to Constant Contact Forms
137
+ [HELP: Add Google reCAPTCHA to Your WordPress Sign-up Form to Prevent Spam Entries](http://knowledgebase.constantcontact.com/articles/KnowledgeBase/17880)
138
 
139
  #### How do I include which custom fields labels are which custom field values in my Constant Contact Account?
140
  You can add this to your active theme or custom plugin: `add_filter( 'constant_contact_include_custom_field_label', '__return_true' );`. Note: custom fields have a max length of 50 characters. Including the labels will subtract from the 50 character total available.
141
 
142
  #### Which account level access is needed to connect my WordPress account to Constant Contact?
143
  You will need to make the connection to Constant Contact using the credentials of the account owner. Campaign manager credentials will not have enough access.
144
+
145
+ ### Error: Please select at least one list to subscribe to.
146
+ Some users are experiencing errors when upgrading from an older version of the plugin. If you are receiving an error "Please select at least one list to subscribe to" on your form submissions we recommend "Sync Lists with Constant Contact", this can be found in your admin dashboard Contact Form > Lists. If problem still persists we recommend recreating the form from scratch.
147
+
148
+
149
+ == Upgrade Notice ==
150
+ - None
vendor/autoload.php CHANGED
@@ -4,4 +4,4 @@
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
- return ComposerAutoloaderInitb96901d3471276ce8fb7d93b66af66b6::getLoader();
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
+ return ComposerAutoloaderInitf2903cb4a158f118c169e3c417a0d958::getLoader();
vendor/cmb2/cmb2/CHANGELOG.md DELETED
@@ -1,765 +0,0 @@
1
- # Changelog
2
- All notable changes to this project will be documented in this file.
3
-
4
- ## Unreleased
5
- ### Enhancements
6
- ### Bug Fixes
7
-
8
- ## [2.5.1 - 2018-12-10](https://github.com/CMB2/CMB2/releases/tag/v2.5.1)
9
-
10
- ### Bug Fixes
11
- * Fix issue when the `core/editor` object does not exist (is undefined), causing incompatibility issues with Yoast and likely others. Fixes [#1197](https://github.com/CMB2/CMB2/issues/1197)
12
-
13
- ## [2.5.0 - 2018-12-08](https://github.com/CMB2/CMB2/releases/tag/v2.5.0)
14
-
15
- ### Enhancements
16
-
17
- * Repeatable fields are now drag-sortable. Props [@lipemat](https://github.com/lipemat) ([#1142](https://github.com/CMB2/CMB2/pull/1142)).
18
- * Update the `sv_SE` translation. Props [@edvind](https://github.com/edvind) ([#370](https://github.com/CMB2/CMB2/pull/370)).
19
- * QA/PHPCS cleanup. Props [@tw2113](https://github.com/tw2113) ([#1179](https://github.com/CMB2/CMB2/pull/1179)).
20
- * Add optional `'mb_callback_args'` CMB2 box property which allows defining the `$callback_args` passed into `add_meta_box()`. This allows using defining the new [Gutenberg/block-editor compatibility parameters](https://wordpress.org/gutenberg/handbook/extensibility/meta-box/). Fixes [#1191](https://github.com/CMB2/CMB2/issues/1191)
21
- * Support any type of markup when customizing repeating group row. Props [@lipemat](https://github.com/lipemat) ([#1187](https://github.com/CMB2/CMB2/pull/1187)).
22
- * Add `cmb_init_pickers` and `cmb_init_code_editors` Javascript events for allowing just-in-time configuration for pickers/editors.
23
- * Fix field descriptions color contrast ratio for better accessibility. h/t [@rianrietveld](https://github.com/rianrietveld). Fixes [#1193](https://github.com/CMB2/CMB2/issues/1193).
24
- * Add `CMB2_Field::get_rest_value()` method for sending value through several filters (`'cmb2_get_rest_value'`, `"cmb2_get_rest_value_{$field_type}"`, `"cmb2_get_rest_value_for_{$field_id}"` ) before sending to REST request.
25
-
26
- ### Bug Fixes
27
-
28
- * Fix the options page errors when using CMB2 in WordPress prior to 4.7. Props [@manzoorwanijk](https://github.com/manzoorwanijk) ([#1166](https://github.com/CMB2/CMB2/pull/1166)).
29
- * Fix occasonal fatal errors that can occur by using callback functions directly vs `call_user_func`. Props [@manzoorwanijk](https://github.com/manzoorwanijk) ([#1177](https://github.com/CMB2/CMB2/pull/1177)).
30
- * Fix issue where `wysiwyg` fields' visual tab wouldn't save content on Gutenberg/block-editor posts. Props [@staurand](https://github.com/staurand) ([#1190](https://github.com/CMB2/CMB2/pull/1190) fixes [#1156](https://github.com/CMB2/CMB2/issues/1156)).
31
- * Fix issue when `remove_default` wouldn't actually remove the default taxonomy metabox when box registration used an alternate box context. Props [@lipemat](https://github.com/lipemat) ([#1147](https://github.com/CMB2/CMB2/pull/1147)).
32
-
33
- ## [2.4.2 - 2018-05-25](https://github.com/CMB2/CMB2/releases/tag/v2.4.2)
34
-
35
- ### Bug Fixes
36
-
37
- * Do not enqueue/register WordPress code editor JS if there are no `textarea_code` fields registered on the page. Fixes [#1110](https://github.com/CMB2/CMB2/issues/1110).
38
- * Do not set repeated `wysiwyg` field values to string "false" when boolean false. Fixes [#1138](https://github.com/CMB2/CMB2/issues/1138) (again!).
39
-
40
- ## [2.4.1 - 2018-05-25](https://github.com/CMB2/CMB2/releases/tag/v2.4.1)
41
-
42
- ### Bug Fixes
43
-
44
- * Do not set repeated field values to string "false" when boolean false. Fixes [#1138](https://github.com/CMB2/CMB2/issues/1138).
45
-
46
- ## [2.4.0 - 2018-05-24](https://github.com/CMB2/CMB2/releases/tag/v2.4.0)
47
-
48
- ### Enhancements
49
-
50
- * Enable linking options pages via tabbed-navigation. Will output tabbed navigation for options-pages which share the same `'tab_group'` CMB2 box property. [This snippet](https://github.com/CMB2/CMB2-Snippet-Library/blob/master/options-and-settings-pages/options-pages-with-tabs-and-submenus.php) demonstrates how to create a top-level menu options page with multiple submenu pages, each with the tabbed navigation. To specify a different tab title than the options-page title, set the `'tab_title'` CMB2 box property. See [#301](https://github.com/CMB2/CMB2/issues/301), [#627](https://github.com/CMB2/CMB2/issues/627).
51
- * Complete the `zh-CN` translation. Props [@uicestone](https://github.com/uicestone) ([#1089](https://github.com/CMB2/CMB2/pull/1089)).
52
- * Update the `nl_NL` translation. Props [@tammohaannl](https://github.com/tammohaannl) ([#1101](https://github.com/CMB2/CMB2/pull/1101)).
53
- * Better display for white over transparent images (e.g. logos) by using a checkered background for images. ([#1103](https://github.com/CMB2/CMB2/issues/1103))
54
- * Ability to disable the options [autoload parameter](https://codex.wordpress.org/Function_Reference/add_option#Parameters) via filter (`"cmb2_should_autoload_{$options_key}"`) or via a box parameter for `'options-page'` box registrations (`'autoload' => false,`). ([#1093](https://github.com/CMB2/CMB2/issues/1093))
55
- * `'textarea_code'` field type now uses CodeMirror that is [used by WordPress](https://make.wordpress.org/core/2017/10/22/code-editing-improvements-in-wordpress-4-9/) ([#1096](https://github.com/CMB2/CMB2/issues/1096)). A field can opt-out to return to the previous behavior by specifying an `'options'` parameter:
56
- `'options' => array( 'disable_codemirror' => true )`
57
- As with the other javascript-enabled fields, the code-editor defaults can be overridden via a `data-codeeditor` attribute. E.g:
58
-
59
- ```php
60
- 'attributes' => array(
61
- 'data-codeeditor' => json_encode( array(
62
- 'codemirror' => array(
63
- 'mode' => 'css',
64
- ),
65
- ) ),
66
- ),
67
- ```
68
- * Improve/add comment info banners at top of CMB2 CSS files.
69
- * Added `resetBoxes`/`resetBox` Javascript methods for resetting CMB2 box forms.
70
- * Improved styles for fields in the new-term form.
71
- * New `CMB2_Boxes` methods for filtering instances of `CMB2`, `CMB2_Boxes::get_by( $property, $optional_compare )` and `CMB2_Boxes::filter_by( $property, $to_ignore = null )`.
72
-
73
- ### Bug Fixes
74
-
75
- * Fix the `'taxonomy_*'` fields when used for term fields/meta. Save the value to term-meta.
76
- * Clear the CMB2 fields when a term is added. Fixes [#794](https://github.com/CMB2/CMB2/issues/794).
77
- * Repeated fields now use registered field defaults for values. Fixes [#1137](https://github.com/CMB2/CMB2/issues/1137).
78
- * Fixed the formatting for deprecated messages in the log.
79
- * Prevent opening of media modal when clicking the file "Download" link. Fixes [#1130](https://github.com/CMB2/CMB2/issues/1130).
80
-
81
- ## [2.3.0 - 2017-12-20](https://github.com/CMB2/CMB2/releases/tag/v2.3.0)
82
-
83
- ### Enhancements
84
-
85
- * Updated Italian translation. Props [@Mte90](https://github.com/Mte90) ([#1067](https://github.com/CMB2/CMB2/issues/1067)).
86
- * Starting with this release, we are fully switching to the more communicative and standard [Semantic Versioning](https://semver.org/). ([#1061](https://github.com/CMB2/CMB2/issues/1061)).
87
-
88
- ### Bug Fixes
89
-
90
- * Update for compatibility with PHP 7.2 (e.g. fixes `Fatal error: Declaration of CMB2_Type_Colorpicker::render() must be compatible with CMB2_Type_Text::render($args = Array)...`). ([#1070](https://github.com/CMB2/CMB2/issues/1070), [#1074](https://github.com/CMB2/CMB2/issues/1074), [#1075](https://github.com/CMB2/CMB2/issues/1075)).
91
-
92
- ## [2.2.6.2 - 2017-11-24](https://github.com/CMB2/CMB2/releases/tag/v2.2.6.2)
93
-
94
- ### Bug Fixes
95
-
96
- * Fix another issue (introduced in 2.2.6) with repeatable fields not being able to save additional fields. Props [@anhskohbo](https://github.com/anhskohbo) ([#1059](https://github.com/CMB2/CMB2/pull/1059), [#1058](https://github.com/CMB2/CMB2/issues/1058)).
97
- * Only dequeue `jw-cmb2-rgba-picker-js` script (and enqueue our `wp-color-picker-alpha`) if it is actually found.
98
-
99
- ## [2.2.6.1 - 2017-11-24](https://github.com/CMB2/CMB2/releases/tag/v2.2.6.1)
100
-
101
- ### Enhancements
102
-
103
- * Merge in the [CMB2 RGBa Colorpicker](https://github.com/JayWood/CMB2_RGBa_Picker) field type functionality to the CMB2 colopicker field type. Adds the ability to add an alpha (transparency) slider to the colorpicker by adding the `'alpha'` option [to the field options array](https://github.com/CMB2/CMB2/blob/6fce2e7ba8f41345a23bc2064e30433bdb11c16c/example-functions.php#L263-L265). Thank you to [JayWood](https://github.com/JayWood) for his work on his custom field type.
104
-
105
- ### Bug Fixes
106
-
107
- * Fix issue (introduced in 2.2.6) with complex fields set as repeatable not being able to save additional fields. Fixes [#1054](https://github.com/CMB2/CMB2/issues/1054).
108
-
109
- ## [2.2.6 - 2017-11-14](https://github.com/CMB2/CMB2/releases/tag/v2.2.6)
110
-
111
- ### Enhancements
112
-
113
- * Move the fetching of group label and description to _after_ calling `'before_group'` parameter.
114
- * Allow using the `'render_row_cb'` param for group fields. Fixes [#1041](https://github.com/CMB2/CMB2/issues/1041).
115
- * Allow resetting cached CMB2 field objects (new 3rd parameter to `CMB2::get_field()`).
116
- * Allow resetting cached callback results (`CMB2_Base::unset_param_callback_cache()`).
117
- * Persian translation provided by [@reza-irdev](https://github.com/reza-irdev) ([#1046](https://github.com/CMB2/CMB2/issues/1046)).
118
- * Added a `'message_cb'` box property, which allows defining a custom callback for adding options-save messages on `options-page` boxes. An example has been added to [example-functions.php](https://github.com/CMB2/CMB2/commit/43d513c135e52c327bafa06309821c29323ae2dd#diff-378c74d0ffffc1759b8779a135476777).
119
- * Updated many the oembed-related unit tests to more reliably test the relevant parts, and not so much the actual success of the WordPress functions.
120
- * Updated travis config to Install PHP5.2/5.3 on trusty for unit tests. Stolen from [gutenberg/pull/2049](https://github.com/WordPress/gutenberg/pull/2049). Intended to compensate for Travis removing support for PHP 5.2/5.3.
121
-
122
- ### Bug Fixes
123
-
124
- * Ensure `'file'` field type ID is removed from the database if the `'file'` field type's value is empty ([Support thread](https://wordpress.org/support/topic/bug-field-of-type-file-does-not-delete-postmeta-properly/)).
125
- * Fix JS errors when `user_can_richedit()` is false ("Disable the visual editor when writing" user option is checked, or various unsupported browsers). See [#1031](https://github.com/CMB2/CMB2/pull/1031).
126
- * Fix issue where some European date formats (e.g. `F j, Y`) would not properly translate into jQuery UI date formats. [Support thread](https://wordpress.org/support/topic/using-wordpresss-date-time-format-settings)
127
- * Fix repeating fields within repeating groups having the values/indexes incorrectly associated. Props [@daggerhart](https://github.com/daggerhart) ([#1047](https://github.com/CMB2/CMB2/pull/1047)). Fixes [#1035](https://github.com/CMB2/CMB2/issues/1035), [#348](https://github.com/CMB2/CMB2/issues/348).
128
- * Fixed multiple update messages on settings pages when CMB2 option pages were registered ([#1049](https://github.com/CMB2/CMB2/issues/1049)).
129
- * Fix issue where using multiple oembed fields could cause incorrectly cached arguments to be used.
130
- * Fix bug where `'select_all_button' => false` was not working for `'taxonomy_multicheck'` field type ([#1005](https://github.com/CMB2/CMB2/issues/1005)).
131
-
132
- ## [2.2.5.3 - 2017-08-22](https://github.com/CMB2/CMB2/releases/tag/v2.2.5.3)
133
-
134
- ### Enhancements
135
-
136
- * Update to instead initate CMB2 hookup via `"cmb2_init_hookup_{$cmb_id}"` hook. Allows plugins to unhook/rehook/etc.
137
-
138
- ### Bug Fixes
139
-
140
- * Spelling/Grammar fixes. Props [@garrett-eclipse](https://github.com/garrett-eclipse) ([#1012](https://github.com/CMB2/CMB2/pull/1012)).
141
- * Fix "PHP Strict Standards: Static function should not be abstract" notice.
142
- * Add `CMB2_Utils::normalize_if_numeric()` to address problems when using floats as select/radio values. Fixes [#869](https://github.com/CMB2/CMB2/issues/869). See [#1013](https://github.com/CMB2/CMB2/pull/1013).
143
- * Fix issues with apostrophes in money values. (e.g. in Swiss German the thousand separator is an apostrophe). Props [@ocean90](https://github.com/ocean90) ([#1014](https://github.com/CMB2/CMB2/issues/1014), [#1015](https://github.com/CMB2/CMB2/pull/1015)).
144
- * Provide public access to the `CMB2_Options_Hookup::$option_key` property.
145
- * Change the updated-settings notice query variable so that WordPress does not auto-add settings notices on top of ours.
146
- * For settings pages, only output settings errors if WordPress does not do it by default (for sub-pages of `options-general.php`), and if the errors are not disabled via the `'disable_settings_errors'` box property.
147
-
148
- ## [2.2.5.2 - 2017-08-08](https://github.com/CMB2/CMB2/releases/tag/v2.2.5.2)
149
-
150
- ### Bug Fixes
151
-
152
- * Fix issue in 2.2.5 with non-sortable repeatable groups not having new groups values be emptied on creation/clone. [Support thread](https://wordpress.org/support/topic/the-default-parameter-dont-work-in-group-fields/page/2/)
153
- * Fix issue in 2.2.5 with options pages not saving when `'parent_slug'` box property was used. Fixes [#1008](https://github.com/CMB2/CMB2/issues/1008).
154
-
155
- ## [2.2.5.1 - 2017-08-07](https://github.com/CMB2/CMB2/releases/tag/v2.2.5.1)
156
-
157
- ### Bug Fixes
158
-
159
- * Fix issue in 2.2.5 which caused empty repeatable groups having the buttons set to have a disabled "Remove Group" button. [Support thread](https://wordpress.org/support/topic/the-default-parameter-dont-work-in-group-fields/)
160
-
161
- ## [2.2.5 - 2017-08-07](https://github.com/CMB2/CMB2/releases/tag/v2.2.5)
162
-
163
- ### Enhancements
164
-
165
- * Options pages are now first-class CMB2 citizens, and registering a box to show on an options page will automatically register the menu page and output the form on the page. [See example](https://github.com/CMB2/CMB2/blob/v2.2.5/example-functions.php#L640-L683). (The [snippets](https://github.com/CMB2/CMB2-Snippet-Library/tree/master/options-and-settings-pages) in the snippet library will be updated to reflect this change)
166
- * Improved Options Page styling. Props [@anhskohbo](https://github.com/anhskohbo) ([#1006](https://github.com/CMB2/CMB2/pull/1006)).
167
- * Improved cohesive styles for repeatable fields. Props [@anhskohbo](https://github.com/anhskohbo) ([#819](https://github.com/CMB2/CMB2/pull/819)).
168
- * New field types, `'taxonomy_radio_hierarchical'`, and `'taxonomy_multicheck_hierarchical'`, for displaying taxonomy options in a hierarchial layout. Props to [eriktelepovsky](https://github.com/eriktelepovsky) for the [working code](https://github.com/CMB2/CMB2/issues/640#issuecomment-246938690). ([#640](https://github.com/CMB2/CMB2/issues/640))
169
- * Removing last repeat item row (and repeat group row) is now somewhat allowed in that the "remove" button simply resets the last item to empty. Fixes [#312](https://github.com/CMB2/CMB2/issues/312).
170
- * Enable the additional media library modal filters. Fixes [#873](https://github.com/CMB2/CMB2/issues/873).
171
- * Sanitize the attributes added via the `cmb2_group_wrap_attributes` filter.
172
- * New field parameter, `'query_args'`, which can be used by the `'taxonomy_*'` fields. Provides ability to override the arguments passed to `get_terms()`.
173
- * The `cmb2_can_save` filter now passes the CMB2 object as the 2nd parameter. Props [@Arno33](https://github.com/Arno33) ([#994](https://github.com/CMB2/CMB2/pull/994)).
174
- * Update the file field type to work properly within a custom field context by allowing the passing of override arguments to `CMB2_Types::file()` method.
175
- * Many WordPress Code Standards improvements/updates. Props [@bradp](https://github.com/bradp)
176
- * Include absolute paths when including the core php files. Props [@anhskohbo](https://github.com/anhskohbo) ([#998](https://github.com/CMB2/CMB2/pull/998)).
177
- * Change language throught to reflect CMB2's move to its own organization.
178
- * Break `CMB2_Field:options()` method apart to allow re-setting options from field params. Related: [reaktivstudios/cmb2-flexible-content/pull/8](https://github.com/reaktivstudios/cmb2-flexible-content/pull/8).
179
- * New `CMB2:box_types()` method for getting the array of registered `'object_types'` for a box. Ensures the return is an array.
180
- * Improved inline hooks documentation.
181
- * Updated several CMB2 methods to return the CMB2 object (for method chaining). Methods include:
182
- * `CMB2::show_form()`
183
- * `CMB2::render_form_open()`
184
- * `CMB2::render_form_close()`
185
- * `CMB2::render_group_row()`
186
- * `CMB2::render_hidden_fields()`
187
- * `CMB2::save_fields()`
188
- * `CMB2::process_fields()`
189
- * `CMB2::process_field()`
190
- * `CMB2::pre_process()`
191
- * `CMB2::after_save()`
192
- * `CMB2::add_fields()`
193
-
194
- ### Bug Fixes
195
-
196
- * Update for `file`/`file_list` fields to properly show a preview for SVG images. Fixes [#874](https://github.com/CMB2/CMB2/pull/874).
197
- * Fix and standardize inconsistent button classes. Update all buttons to use the `.button-secondary` class instead of the `.button` class. This alleviates some front-end issues for themes which target the `.button` class. _This is a backwards-compatibility break._ If your theme or plugin targets the `.button` class within CMB2, you will need to update to use `.button-secondary`.
198
- * Correct the before/after form hooks order. For more details see ([#954](https://github.com/CMB2/CMB2/pull/954)).
199
- * Fix regression with custom fields not properly repeating. Props [@desrosj](https://github.com/desrosj) ([#969](https://github.com/CMB2/CMB2/pull/969)). Fixes [#901](https://github.com/CMB2/CMB2/issues/901).
200
- * Fix "Illegal string offset" notices when `CMB2_Option` methods are called when the option value is empty, as well as additional unit tests for the `CMB2_Option` class. Props [@anhskohbo](https://github.com/anhskohbo) ([#993](https://github.com/CMB2/CMB2/pull/993)).
201
- * Fix bug where select fields or checkbox fields occasionally would retain previous group's value when adding new groups. Fixes [#853](https://github.com/CMB2/CMB2/issues/853).
202
- * Fix JS to prevent meta keys with `|` or `/` from breaking file fields. Props [@lipemat](https://github.com/lipemat) ([#1003](https://github.com/CMB2/CMB2/pull/1003)).
203
- * Fix jQuery Migrate's `jQuery.fn.attr('value', val) no longer sets properties` warning.
204
- * Fix issue with CMB2 being too aggressive with stripping slashes from values. Fixes [#981](https://github.com/CMB2/CMB2/issues/981).
205
-
206
- ## [2.2.4 - 2017-02-27](https://github.com/CMB2/CMB2/releases/tag/v2.2.4)
207
-
208
- ### Enhancements
209
-
210
- * Modify `'taxonomy_*'` fields to return stored terms for non-post objects.
211
- * Modify `CMB2::get_sanitized_values()` to return the sanitized `'taxonomy_*'` field values. Also added `"cmb2_return_taxonomy_values_{$cmb_id}"` filter to modify if `'taxonomy_*'` field values are returned. Fixes [#538](https://github.com/CMB2/CMB2/issues/538).
212
- * Allow outputting CMB2 boxes/fields in additional locations in the post-editor.
213
-
214
- **The new locations are:** [`form_top`](https://developer.wordpress.org/reference/hooks/edit_form_top/), [`before_permalink`](https://developer.wordpress.org/reference/hooks/edit_form_before_permalink/), [`after_title`](https://developer.wordpress.org/reference/hooks/edit_form_after_title/), and [`after_editor`](https://developer.wordpress.org/reference/hooks/edit_form_after_editor/)
215
-
216
- These would be defined by setting the `context` property for your box:
217
-
218
- ```php
219
- $cmb_demo = new_cmb2_box( array(
220
- ...
221
- 'context' => 'before_permalink',
222
- ) );
223
- ```
224
-
225
- If it is preferred that the fields are output without the metabox, then omit the `'title'` property from the metabox registration array, and instead add ` 'remove_box_wrap' => true,`.
226
-
227
- Props [@norcross](https://github.com/norcross) ([#836](https://github.com/CMB2/CMB2/pull/836)).
228
- * New field parameter, `'render_class'`, allowing you to override the default `'CMB2_Type_Base'` class that is used when rendering the field. This provides interesting object-oriented ways to override default CMB2 behavior by subclassing the default class and overriding methods. The render class can also be overridden with the `"cmb2_render_class_{$fieldtype}"` filter, which is passed the default render class name as well as the `CMB2_Types` object, but this should be used sparingly, and within the context of your project's boxes/fields or you could break other plugins'/themes' CMB2 fields.
229
- * Improvements to the `file`/`file_list` fields javascript APIs, including using undersore templates.
230
- * Small improvements to the styling for the `file_list` field type.
231
- * New action hook, `cmb2_footer_enqueue`, which occurs after CMB2 enqueues its assets.
232
- * Example functions clean up. Props [@PavelK27](https://github.com/PavelK27) ([#866](https://github.com/CMB2/CMB2/pull/866)).
233
- * New `CMB2_Utils` methods, `get_available_image_sizes()` and `get_named_size()`. Props [@Cai333](https://github.com/Cai333).
234
-
235
- ### Bug Fixes
236
-
237
- * Fix datepicker month/year dropdown text color. On windows, the option text was showing as white (invisible). Fixes [#770](https://github.com/CMB2/CMB2/issues/770).
238
- * Repeatable WYSIWYG no longer breaks if `'quicktags'` param is set to false. Props [@timburden](https://github.com/timburden) ([#797](https://github.com/CMB2/CMB2/pull/797), [#796](https://github.com/CMB2/CMB2/issues/796)).
239
- * Do not process title fields during group field save process.
240
- * Fix issue where term-meta values were not being displayed for some users. Props [@sbussetti](https://github.com/sbussetti) ([#763](https://github.com/CMB2/CMB2/pull/763), [#700](https://github.com/CMB2/CMB2/issues/700)).
241
- * Fix issue where term meta would not be applied when using the new term form if multiple object types were specified. Props [@ADC07](https://github.com/ADC07) ([#842](https://github.com/CMB2/CMB2/pull/842), [#841](https://github.com/CMB2/CMB2/issues/841)).
242
- * Fix WordPress spinner styling when boxes/fields used on the frontend.
243
- * Fix issue where clicking to remove a `file_list` item could occasionally remove the field row. ([#828](https://github.com/CMB2/CMB2/pull/828)).
244
- * Fix issue where empty file field in group would still cause non-empty values to store to database. ([#721](https://github.com/CMB2/CMB2/issues/721)).
245
- * Make `file`/`file_list` field preview images work with named sizes. Props [@Cai333](https://github.com/Cai333) ([#848](https://github.com/CMB2/CMB2/pull/848), [#844](https://github.com/CMB2/CMB2/issues/844)).
246
- * Fix incorrect text-domain. ([#798](https://github.com/CMB2/CMB2/issues/798))
247
- * Do not silence notices/errors in `CMB2_Utils::get_file_ext()`.
248
- * If `title` field type has no name value, then only output a span element (instead of a header element).
249
-
250
- ## [2.2.3.1 - 2016-11-08](https://github.com/CMB2/CMB2/releases/tag/v2.2.3.1)
251
-
252
- ### Enhancements
253
-
254
- * Better styling for disabled group "X" buttons, and add title attr. Fixes [#773](https://github.com/CMB2/CMB2/issues/773).
255
-
256
- ### Bug Fixes
257
-
258
- * Use quotes for `label[for=""]` selector. Fixed `Syntax error, unrecognized expression`. Props [@anhskohbo](https://github.com/anhskohbo) ([#789](https://github.com/CMB2/CMB2/pull/789)).
259
- * Fix `ReferenceError: tinyMCE is not defined` javascript errors (happening when trying to remove a repeatable field/group). Fixes [#790](https://github.com/CMB2/CMB2/issues/790), and [#730](https://github.com/CMB2/CMB2/issues/730).
260
- * Fix REST API `'show_in_rest'` examples in `example-functions.php`. Any REST API boxes/fields must use the `'cmb2_init'` hook (as opposed to the `'cmb2_admin_init'` hook).
261
-
262
- ## [2.2.3 - 2016-10-25](https://github.com/CMB2/CMB2/releases/tag/v2.2.3)
263
-
264
- ### Enhancements
265
-
266
- * CMB2 REST API! CMB2 now has WP REST API endpoints for displaying your boxes and fields data, as well as registers rest fields in the existing post, user, term, and comment endpoints (in the cmb2 namespace). Enabling the REST API for your boxes/fields is opt-in, meaning it will not be automatically enabled. For more info, [check out the wiki](https://github.com/CMB2/CMB2/wiki/REST-API).
267
- * Small string improvement, move a period inside the translatable string. Props [@pedro-mendonca](https://github.com/pedro-mendonca) ([#672](https://github.com/CMB2/CMB2/pull/672)).
268
- * Introduce the `'save_field'` boolean field parameter for disabling the saving of a field. Useful if you want to display the value of another field, or use a disabled/read-only field. Props [@jamesgol](https://github.com/jamesgol) ([#674](https://github.com/CMB2/CMB2/pull/674), [#346](https://github.com/CMB2/CMB2/issues/346), [#500](https://github.com/CMB2/CMB2/issues/500)).
269
- * Update docblocks for `CMB2_Field::save_field_from_data()` and `CMB2_Field::save_field()`. Props [@jamesgol](https://github.com/jamesgol) ([#675](https://github.com/CMB2/CMB2/pull/675)).
270
- * More javascript events tied to the media modal actions (related to the `'file'` and '`file_list'` fields). `'cmb_media_modal_init'`, `'cmb_media_modal_open'`, and `'cmb_media_modal_select'`.
271
- * All CMB2 JS events now also get the CMB2 JS object passed in the list of arguments.
272
- * CMB2 JS object is now instantiated without stomping existing object, to enable extending.
273
- * New field parameter for taxonomy fields, `'remove_default'` which allows disabling the default taxonomy metabox. Props [@c3mdigital](https://github.com/c3mdigital) ([#593](https://github.com/CMB2/CMB2/pull/593)).
274
- * Change `'row_classes'` to just `'classes'`, to mirror the metabox `'classes'` property. Also now accepts a `'classes_cb'` parameter for specifying a callback which returns a string or array. The callback will receive `$field_args` as the first argument, and the CMB2_Field `$field` object as the second argument. (`'row_classes'` will continue to work, but is deprecated)
275
- * Make wysiwyg editors work in the repeatable groups context. A standard repeatable (non-group) wysiwyg field is not supported (but will possibly be included in a future update). Props [@johnsonpaul1014](https://github.com/johnsonpaul1014) ([#26](https://github.com/CMB2/CMB2/pull/26), [#99](https://github.com/CMB2/CMB2/pull/99), [#260](https://github.com/CMB2/CMB2/pull/260), [#264](https://github.com/CMB2/CMB2/pull/264), [#356](https://github.com/CMB2/CMB2/pull/356), [#431](https://github.com/CMB2/CMB2/pull/431), [#462](https://github.com/CMB2/CMB2/pull/462), [#657](https://github.com/CMB2/CMB2/pull/657), [#693](https://github.com/CMB2/CMB2/pull/693)).
276
- * Add an id to the heading tag in the title field. This allows linking to a particular title using the id.
277
- * Internationalization improvements. Props [ramiy](https://github.com/ramiy) ([#696](https://github.com/CMB2/CMB2/pull/696)).
278
- * Ensure that saving does not happen during a switch-to-blog session, as data would be saved to the wrong object. [See more](https://wordpress.org/support/topic/bug-in-lastest-version?replies=2).
279
- * Add `'cmb2_group_wrap_attributes'` filter to modifying the group wrap div's attributes. Filter gets passed an array of attributes and expects the return to be an array. Props [jrfnl](https://github.com/jrfnl) ([#582](https://github.com/CMB2/CMB2/pull/582)).
280
- * Update the unit-tests README and inline docs. Props [bobbingwide](https://github.com/bobbingwide) ([#714](https://github.com/CMB2/CMB2/pull/714), [#715](https://github.com/CMB2/CMB2/pull/715)).
281
- * Minor update to make naming-conventions consistent. Props [ramiy](https://github.com/ramiy) ([#718](https://github.com/CMB2/CMB2/pull/718)).
282
- * Update files to be compatible with PHP7 CodeSniffer standards. Props [ryanshoover](https://github.com/ryanshoover) ([#719](https://github.com/CMB2/CMB2/pull/719), [#720](https://github.com/CMB2/CMB2/pull/720)).
283
- * Make exception message translatable. Props [ramiy](https://github.com/ramiy) ([#724](https://github.com/CMB2/CMB2/pull/724)).
284
- * Portuguese translation provided by [@alvarogois](https://github.com/alvarogois) and [@pedro-mendonca](https://github.com/pedro-mendonca) - [#709](https://github.com/CMB2/CMB2/pull/709), [#727](https://github.com/CMB2/CMB2/pull/727).
285
- * Stop using `$wp_version` global. Props [ramiy](https://github.com/ramiy) ([#731](https://github.com/CMB2/CMB2/pull/731)).
286
- * Closures (anonymous functions) are now supported for any box/field `'*_cb'` parameters. E.g.
287
- ```php
288
- ...
289
- 'show_on_cb' => function( $cmb ) { return has_tag( 'cats', $cmb->object_id ); },
290
- ...
291
- ```
292
-
293
- ### Bug Fixes
294
-
295
- * If custom field types use a method and the Type object has not been instantiated, Try to guess the Type object and instantiate.
296
- * Normalize WordPress root path (`ABSPATH`) and theme rooth path (`get_theme_root()`). Props [@rianbotha](https://github.com/rianbotha) ([#677](https://github.com/CMB2/CMB2/pull/677), [#676](https://github.com/CMB2/CMB2/pull/676)).
297
- * Fix issue with `'cmb2_remove_row'` Javascript callback for non-group row removal. Fixes [#729](https://github.com/CMB2/CMB2/pull/729)).
298
- * Fix issue with missing assignment of variable (undefined variable). Props [@anhskohbo](https://github.com/anhskohbo) ([#779](https://github.com/CMB2/CMB2/pull/779)).
299
-
300
- ## 2.2.2.1 - 2016-06-27
301
-
302
- ### Bug Fixes
303
-
304
- * Fix issue that kept CMB2 stylesheet from being enqueued when using the [options-page snippets](https://github.com/CMB2/CMB2-Snippet-Library/tree/master/options-and-settings-pages).
305
- * Fix issue which caused the CMB2 column display styles to be enqueued in the wrong pages. Now only enqueues on admin pages with columns.
306
-
307
- ## 2.2.2 - 2016-06-27
308
-
309
- ### Enhancements
310
-
311
- * You can now set admin post-listing columns with an extra field parameter, `'column' => true,`. If you want to dictate what position the column is, use `'column' => array( 'position' => 2 ),`. If you want to dictate the column title (instead of using the field `'name'` value), use `'column' => array( 'name' => 'My Column' ),`. If you need to specify the column display callback, set the `'display_cb'` parameter to [a callback function](https://github.com/CMB2/CMB2/wiki/Field-Parameters#render_row_cb). Columns work for post (all post-types), comment, user, and term object types.
312
- * Updated Datepicker styles using JJJ's "jQuery UI Datepicker CSS for WordPress", so props Props [@stuttter](https://github.com/stuttter), [@johnjamesjacoby](https://github.com/johnjamesjacoby). Also cleaned up the timepicker styles (specifically the buttons) to more closely align with the datepicker and WordPress styles.
313
- * CMB2 is now a lot more intelligent about where it is located in your installation. This update should solve almost all of the reasons to use the `'cmb2_meta_box_url'` filter (thought it will continue to work as expected). ([#27](https://github.com/CMB2/CMB2/issues/27), [#118](https://github.com/CMB2/CMB2/issues/118), [#432](https://github.com/CMB2/CMB2/issues/432), [related wiki item](https://github.com/CMB2/CMB2/wiki/Troubleshooting#cmb2-urls-issues))
314
- * Implement CMB2_Ajax as a singleton. Props [jrfnl](https://github.com/jrfnl) ([#602](https://github.com/CMB2/CMB2/pull/602)).
315
- * Add `classes` and `classes_cb` CMB2 box params which allows you to add additional classes to the cmb-wrap. The `classes` parameter can take a string or array, and the `classes_cb` takes a callback which returns a string or array. The callback will receive `$cmb` as an argument. These classes are also passed through a new filter, `'cmb2_wrap_classes'`, which receives the array of classes as the first argument, and the CMB2 object as the second. Reported/requested in [#364](https://github.com/CMB2/CMB2/issues/364#issuecomment-213223692).
316
- * Make the `'title'` field type accept extra arguments. Props [@vladolaru](https://github.com/vladolaru), [@pixelgrade](https://github.com/pixelgrade) ([#656](https://github.com/CMB2/CMB2/pull/656)).
317
- * Updated `cmb2_get_oembed()` function to NOT return the "remove" link, as it's intended for outputting the oembed only. **This is a backwards-compatibility concern.** If you were depending on the "remove" link, use `cmb2_ajax()->get_oembed( $args )` instead.
318
- * New function, `cmb2_do_oembed()`', which is hooked to `'cmb2_do_oembed'`, so you can use `do_action( 'cmb2_do_oembed', $args )` in your themes without `function_exists()` checks.
319
- * New method, `CMB2:set_prop( $property, $value )`, for setting a CMB2 metabox object property.
320
- * The `CMB2_Field` object instances will now have a `cmb_id` property and a `get_cmb` method to enable access to the field's `CMB2` parent object's instance, in places like field callbacks and filters (e.g. `$cmb = $field->get_cmb();`).
321
- * Add a `data-fieldtype` attribute to the field rows for simpler identification in Javascript.
322
- * Moved each type in `CMB2_Types` to it's own class so that each field type can handle it's own field display, and added the infrastructure to maintainn back-compatibility.
323
- * New `CMB2_Utils` methods, `notempty()` and `filter_empty()`, both of which consider `null`, `''` and `false` as empty, but allow `0` (for saving `0` as a field value).
324
- * New `CMB2_Utils` public methods, `get_url_from_dir()`, `get_file_ext()`, `get_file_name_from_path()`, and `wp_at_least()`.
325
- * Add a `cmb_pre_init` Javascript event to allow overriding CMB2 defaults via JS.
326
-
327
- ### Bug Fixes
328
- * Fix issue with 'default' callback not being applied in all instances. Introduced new `CMB2_Field::get_default()` method, and `'default_cb'` field parameter. Using the `'default'` field parameter with a callback will be deprecated in the next few releases. ([#572](https://github.com/CMB2/CMB2/issues/572)).
329
- * Be sure to call `CMB2_Field::row_classes()` for group field rows. Also, update CSS to use the "cmb-type-group" classname instead of "cmb-repeat-group-wrap".
330
- * Introduce new `'text'` and `'text_cb'` field parameters for overriding CMB2 text strings instead of using the `'options'` array. ([#630](https://github.com/CMB2/CMB2/pull/630))
331
- * Fix bug where the value of '0' could not be saved in group fields.
332
- * Fix bug where a serialized empty array value in the database for a repeatable field would output as "Array".
333
- * Allow for optional/empty money field. Props [@jrfnl](https://github.com/jrfnl) ([#577](https://github.com/CMB2/CMB2/pull/577)).
334
- * The `CMB2::$updated` parameter (which contains field ids for all fields updated during a save) now also correctly adds group field ids to the array.
335
-
336
- ## 2.2.1 - 2016-02-29
337
-
338
- ### Bug Fixes
339
-
340
- * Fixes back-compatibility issue which could allow multiple CMB2 instances to load (causing fatal errors). ([#520](https://github.com/CMB2/CMB2/pull/520))
341
-
342
- ## 2.2.0 - 2016-02-27
343
-
344
- ### Enhancements
345
-
346
- * Term Meta! As of WordPress 4.4, [WordPress will have the ability to use term metadata](https://make.wordpress.org/core/2015/10/23/4-4-taxonomy-roundup/). CMB2 will work with term meta out of the box. To do so, see the example cmb registration in the `yourprefix_register_taxonomy_metabox` function in [example-functions.php](https://github.com/CMB2/CMB2/blob/master/example-functions.php).
347
- * New hooks which hook in after save field action: `'cmb2_save_field'` and `"cmb2_save_field_{$field_id}"`. Props [wpsmith](https://github.com/wpsmith) ([#475](https://github.com/CMB2/CMB2/pull/475)).
348
- * The "cmb2_sanitize_{$field_type}" hook now runs for every field type (not just custom types) so you can override the sanitization for all field types via a filter.
349
- * `CMB2::show_form()` is now composed of 3 smaller methods, `CMB2::render_form_open()`, `CMB2::render_field()`, `CMB2::render_form_close()` ([#506](https://github.com/CMB2/CMB2/pull/506)).
350
- * RTL Style generated. Props [@devinsays](https://github.com/devinsays) ([#510](https://github.com/CMB2/CMB2/pull/510)).
351
- * Properly scope date/time-pickers styling by adding a class to only cmb2 picker instances. ([#527](https://github.com/CMB2/CMB2/pull/527))
352
- * Allow per-field overrides for the date/time/color picker options (wiki documentation: [Modify Field Date, Time, or Color Picker options](https://github.com/CMB2/CMB2/wiki/Tips-&-Tricks#modify-field-date-time-or-color-picker-options))
353
- * Fix some inline documentation issues. Props [@jrfnl](https://github.com/jrfnl) ([#579](https://github.com/CMB2/CMB2/pull/579)).
354
- * Include `.gitattributes` file for excluding development resources when using Composer. Props [@benoitchantre](https://github.com/benoitchantre) ([#575](https://github.com/CMB2/CMB2/pull/575), [#53](https://github.com/CMB2/CMB2/pull/53)).
355
-
356
- ### Bug Fixes
357
-
358
- * Fixed issue with `'taxonomy_select'` field type where a term which evaluated falsey would not be displayed properly. Props [adamcapriola](https://github.com/adamcapriola) ([#477](https://github.com/CMB2/CMB2/pull/477)).
359
- * Fix issue with colorpickers not changing when sorting groups.
360
- * `'show_option_none'` field parameter now works on taxonomy fields when explicitly setting to false.
361
- * Fix so the date/time-picker javascript respects the `'date_format'` and `'time_format'` field parameters. Props [@yivi](https://github.com/yivi) ([#39](https://github.com/CMB2/CMB2/pull/39), [#282](https://github.com/CMB2/CMB2/pull/282), [#300](https://github.com/CMB2/CMB2/pull/300), [#318](https://github.com/CMB2/CMB2/pull/318), [#330](https://github.com/CMB2/CMB2/pull/330), [#446](https://github.com/CMB2/CMB2/pull/446), [#498](https://github.com/CMB2/CMB2/pull/498)).
362
- * Fix a sometimes-broken unit test. Props [JPry](https://github.com/JPry) ([#539](https://github.com/CMB2/CMB2/pull/539)).
363
- * Fix issue with oembed fields not working correctly on options pages. ([#542](https://github.com/CMB2/CMB2/pull/542)).
364
- * Fix issue with repeatable field <button> elements stealing focus from "submit" button.
365
-
366
- ## 2.1.2 - 2015-10-01
367
-
368
- ### Bug Fixes
369
-
370
- * Fixes back-compatibility issue when adding fields array to the metabox registration. ([#472](https://github.com/CMB2/CMB2/pull/472))
371
-
372
- ## 2.1.1 - 2015-09-30
373
-
374
- ### Enhancements
375
-
376
- * Make all CMB2::save_fields arguments optional to fall-back to `$_POST` data. Props [JPry](https://github.com/JPry).
377
- * New filter, `cmb2_non_repeatable_fields` for adding additional fields to the blacklist of repeatable field-types. Props [JPry](https://github.com/JPry) ([#430](https://github.com/CMB2/CMB2/pull/430)).
378
- * New recommended hook for adding metaboxes, `cmb2_admin_init`. Most metabox registration only needs to happen if in wp-admin, so there is no reason to register them when loading the front-end (and increase the memory usage). `cmb2_init` still exists to register metaboxes that will be used on the front-end or used on both the front and back-end. Instances of `cmb2_init` in example-functions.php have been switched to `cmb2_admin_init`.
379
- * Add `'render_row_cb'` field parameter for overriding the field render method.
380
- * Add `'label_cb'` field parameter for overriding the field label render method.
381
- * Allow `CMB2_Types::checkbox()` method to be more flexible for extending by taking an args array and an `$is_checked` second argument.
382
- * More thorough unit tests. Props [pglewis](https://github.com/pglewis), ([#447](https://github.com/CMB2/CMB2/pull/447),[#448](https://github.com/CMB2/CMB2/pull/448)).
383
- * Update `CMB2_Utils::image_id_from_url` to be more reliable. Props [wpscholar](https://github.com/wpscholar), ([#453](https://github.com/CMB2/CMB2/pull/453)).
384
- * `cmb2_get_option` now takes a default fallback value as a third parameter.
385
-
386
- ### Bug Fixes
387
-
388
- * Address issue where `'file'` and `'file_list'` field results were getting mixed. Props [augustuswm](https://github.com/augustuswm) ([#382](https://github.com/CMB2/CMB2/pull/382), [#250](https://github.com/CMB2/CMB2/pull/250), [#296](https://github.com/CMB2/CMB2/pull/296)).
389
- * Fix long-standing issues with radio and multicheck fields in repeatable groups losing their values when new rows are added. ([#341](https://github.com/CMB2/CMB2/pull/341), [#304](https://github.com/CMB2/CMB2/pull/304), [#263](https://github.com/CMB2/CMB2/pull/263), [#246](https://github.com/CMB2/CMB2/pull/246), [#150](https://github.com/CMB2/CMB2/pull/150))
390
- * Fixes issue where currently logged-in user's profile data would display in the "Add New User" screen fields. ([#427](https://github.com/CMB2/CMB2/pull/427))
391
- * Fixes issue where radio values/selections would not always properly transfer when shifting rows (up/down). Props [jamiechong](https://github.com/jamiechong) ([#429](https://github.com/CMB2/CMB2/pull/429), [#152](https://github.com/CMB2/CMB2/pull/152)).
392
- * Fixes issue where repeatable groups display "Array" as the field values if group is left completely empty. ([#332](https://github.com/CMB2/CMB2/pull/332),[#390](https://github.com/CMB2/CMB2/pull/390)).
393
- * Fixes issue with `'file_list'` fields not saving properly when in repeatable groups display. Props [jamiechong](https://github.com/jamiechong) ([#433](https://github.com/CMB2/CMB2/pull/433),[#187](https://github.com/CMB2/CMB2/pull/187)).
394
- * Update `'taxonomy_radio_inline'` and `'taxonomy_multicheck_inline'` fields sanitization method to use the same method as the non-inline versions. Props [superfreund](https://github.com/superfreund) ([#454](https://github.com/CMB2/CMB2/pull/454)).
395
-
396
- ## 2.1.0 - 2015-08-05
397
-
398
- ### Bug Fixes
399
-
400
- * Fix user fields not saving. Props [achavez](https://github.com/achavez), ([#417](https://github.com/CMB2/CMB2/pull/417)).
401
-
402
- ## 2.0.9 - 2015-07-28
403
-
404
- ### Enhancements
405
-
406
- * Updated/Added many translations. Props [fxbenard](https://github.com/fxbenard), ([#203](https://github.com/CMB2/CMB2/pull/344)) and [Mte90](https://github.com/Mte90) for the Italian translation.
407
- * Updated `'file_list'` field type to have a more intuitive selection in the media library, and updated the 'Use file' text in the button. Props [SteveHoneyNZ](https://github.com/SteveHoneyNZ) ([#357](https://github.com/CMB2/CMB2/pull/357), [#358](https://github.com/CMB2/CMB2/pull/358)).
408
- * `'closed'` group field option parameter introduced in order to set the groups as collapsed by default. Requested in [#391](https://github.com/CMB2/CMB2/issues/391).
409
- * Added `"cmb2_{$object_type}_process_fields_{$cmb_id}"` hook for hooking in and modifying the metabox or fields before the fields are processed/sanitized for saving.
410
- * Added Comment Metabox support. Props [GregLancaster71](https://github.com/GregLancaster71) ([#238](https://github.com/CMB2/CMB2/pull/238), [#244](https://github.com/CMB2/CMB2/pull/244)).
411
- * New `"cmb2_{$field_id}_is_valid_img_ext"`` filter for determining if a field value has a valid image file-type extension.
412
-
413
- ### Bug Fixes
414
-
415
- * `'multicheck_inline'`, `'taxonomy_radio_inline'`, and `'taxonomy_multicheck_inline'` field types were not outputting anything since it's value was not being returned. Props [ediamin](https://github.com/ediamin), ([#367](https://github.com/CMB2/CMB2/pull/367), ([#405](https://github.com/CMB2/CMB2/pull/405)).
416
- * `'hidden'` type fields were not honoring the `'show_on_cb'` callback. Props [JPry](https://github.com/JPry), ([commits](https://github.com/CMB2/CMB2/compare/5a4146eec546089fbe1a1c859d680dfda3a86ee2...1ef5ef1e3b2260ab381090c4abe9dc7234cfa0a6)).
417
- * Fixed: There was no minified cmb2-front.min.css file.
418
- * Fallback for fatal error with invalid timezone. Props [ryanduff](https://github.com/ryanduff) ([#385](https://github.com/CMB2/CMB2/pull/385)).
419
- * Fix issues with deleting a row from repeatable group. Props [yuks](https://github.com/yuks) ([#387](https://github.com/CMB2/CMB2/pull/387)).
420
- * Ensure value passed to `strtotime` in `make_valid_time_stamp` is cast to a string. Props [vajrasar](https://github.com/vajrasar) ([#389](https://github.com/CMB2/CMB2/pull/389)).
421
- * Fixed issue with Windows IIS and bundling CMB2 in the theme. Props [DevinWalker](https://github.com/DevinWalker), ([#400](https://github.com/CMB2/CMB2/pull/400), [#401](https://github.com/CMB2/CMB2/pull/401))
422
-
423
- ## 2.0.8 - 2015-06-01
424
-
425
- ### Bug Fixes
426
-
427
- * Fix color-picker field not enqueueing the colorpicker script. ([#333](https://github.com/CMB2/CMB2/issues/333))
428
-
429
- ## 2.0.7 - 2015-05-28
430
-
431
- ### Enhancements
432
-
433
- * Ability to use non-repeatable group fields by setting the `'repeatable'` field param to `false` when registering a group field type. Props [marcusbattle](https://github.com/marcusbattle), ([#159](https://github.com/CMB2/CMB2/pull/159)).
434
- * Add and enqeueue a front-end specific CSS file which adds additional styles which are typically covered by wp-admin css. ([#311](https://github.com/CMB2/CMB2/issues/311))
435
- * Better handling of the CMB2 javascript (and CSS) required dependencies array. Dependencies are now only added conditionally based on the field types that are actually visible. ([#136](https://github.com/CMB2/CMB2/issues/136))
436
- * **THIS IS A BREAKING CHANGE:** The `group` field type's `'show_on_cb'` parameter now receives the `CMB2_Field` object instance as an argument instead of the `CMB2` instance. If you're using the `'show_on_cb'` parameter for a `group` field, please adjust accordingly. _note: you can still retrieve the `CMB2` instance via the `cmb2_get_metabox` helper function._
437
- * New dynamic hook, `"cmb2_save_{$object_type}_fields_{$this->cmb_id}"`, to complement the existing `"cmb2_save_{$object_type}_fields"` hook.
438
- * New CMB2 parameter, `enqueue_js`, to disable the enqueueing of the CMB2 Javascript.
439
- * German translation provided by Friedhelm Jost.
440
-
441
- ### Bug Fixes
442
-
443
- * Fix incorrect repeatable group title number. ([#310](https://github.com/CMB2/CMB2/pull/310))
444
- * Fix obscure bug which prevented group field arguments from being passed to the sub-fields (like `show_names` and `context`).
445
- * Fixed occasional issue when adding a group row, the previous row's content would be cloned. ([#257](https://github.com/CMB2/CMB2/pull/257))
446
-
447
- ## 2.0.6 - 2015-04-30
448
-
449
- ### Enhancements
450
-
451
- * New metabox/form parameter, `show_on_cb`, allows you to conditionally display a cmb metabox/form via a callback. The `$cmb` object gets passed as a parameter to the callback. This complements the `'show_on_cb'` parameter that already exists for individual fields. Using this callback is similar to using the `'cmb2_show_on'` filter, but only applies to that specific metabox and it is recommended to use this callback instead as it minimizes th risk that your filter will affect other metaboxes.
452
- * Taxonomy types no longer save a value. The value getting saved was causing confusion and is not meant to be used. To use the saved taxonomy data, you need to use the WordPress term api, `get_the_terms `, `get_the_term_list`, etc.
453
- * Add `'multiple'` field parameter to store values in individual rows instead of serialized array. Will only work if field is not repeatable or a repeatable group. Props [JohnyGoerend](https://github.com/JohnyGoerend). ([#262](https://github.com/CMB2/CMB2/pull/262), [#206](https://github.com/CMB2/CMB2/issues/206), [#45](https://github.com/CMB2/CMB2/issues/45)).
454
- * Portuguese (Brazil) translation provided by [@lucascdsilva](https://github.com/lucascdsilva) - [#293](https://github.com/CMB2/CMB2/pull/293).
455
- * Spanish (Spain) translation updated by [@yivi](https://github.com/yivi) - [#272](https://github.com/CMB2/CMB2/pull/272).
456
- * Added group field callback parameters, `'before_group'`, `'before_group_row'`, `'after_group_row'`, `'after_group'` to complement the `'before_row'`, `'before'`, `'after'`, `'after_row'` field parameters.
457
- * Better styling for `title` fields and `title` descriptions on options pages.
458
- * Add a `sanitization_cb` field parameter check for the `group` field type.
459
- * Better function/file doc-blocks to provide better documentation for automated documentation tools. See: [cmb2.io/api](http://cmb2.io/api/).
460
- * `cmb2_print_metabox_form`, `cmb2_metabox_form`, and `cmb2_get_metabox_form` helper functions now accept two new parameters:
461
- * an `'object_type'` parameter to explictly set that in the `$cmb` object.
462
- * an `'enqueue_js'` parameter to explicitly disable the CMB JS enqueue. This is handy if you're not planning on using any of the fields which require JS (like color/date pickers, wysiwyg, file, etc).
463
-
464
- ### Bug Fixes
465
-
466
- * Fix issue with oembed fields in repeatable groups where changing video changed it for all fields in a group.
467
- * Fix empty arrays (like in the group field) saving as a value.
468
- * Move `'cmb2_override_meta_value'` and `"cmb2_override_{$field_id}_meta_value"` filters to the `CMB2_Field::get_data()` method so that the filters are applied every time the data is requested. **THIS IS A BREAKING CHANGE:** The parameters for those filters have changed a bit. Previously, the filters accepted 5 arguments, `$value`, `$object_id`, `$field_args`, `$object_type`, `$field`. They have changed to accept 4 arguments instead, `$value`, `$object_id`, `$args`, `$field`, where `$args` is an array that contains the following:
469
- * @type string $type The current object type
470
- * @type int $id The current object ID
471
- * @type string $field_id The ID of the field being requested
472
- * @type bool $repeat Whether current field is repeatable
473
- * @type bool $single Whether current field is a single database row
474
-
475
-
476
- ## 2.0.5 - 2015-03-17
477
-
478
- ### Bug Fixes
479
-
480
- * Fix grouped fields display (first field was being repeated), broken in 2.0.3.
481
-
482
- ## 2.0.4 - 2015-03-16
483
-
484
- ### Enhancements
485
-
486
- * `select`, `radio`, `radio_inline` field types now all accept the `'show_option_none'` field parameter. This parameter allows you to set the text to display for showing a 'no selection' option. Default will be `false`, which means a 'none' option will not be added. Set to `true` to use the default text, 'None', or specify another value, i.e. 'No selection'.
487
-
488
- ### Bug Fixes
489
-
490
- * Fix back-compatibility when adding group field sub-fields via old array method (vs using the `CMB2:add_group_field()` method). Thanks to [norcross](https://github.com/norcross) for reporting.
491
- * Fix occasional jQuery issues with group-field indexes.
492
-
493
- ## 2.0.3 - 2015-03-15
494
-
495
- ### Enhancements
496
-
497
- * New constant, `CMB2_DIR`, which stores the file-path to the CMB2 directory.
498
- * `text_date`, `text_time`, `text_date_timestamp`, `text_datetime_timestamp`, and ` text_datetime_timestamp_timezone` field types now take an arguments array so they can be extended by custom field types.
499
- * Removed auto-scroll when adding groups. To re-add the feature, use the [snippet/plugin here](https://github.com/CMB2/CMB2-Snippet-Library/blob/master/javascript/cmb2-auto-scroll-to-new-group.php). ([#205](https://github.com/CMB2/CMB2/issues/205))
500
- * Updated Timepicker utilizing the [@trentrichardson](https://github.com/trentrichardson) jQuery Timepicker add-on (https://github.com/trentrichardson/jQuery-Timepicker-Addon), and updated Datepicker styles. Props [JonMasterson](https://github.com/JonMasterson). ([#204](https://github.com/CMB2/CMB2/issues/204), [#206](https://github.com/CMB2/CMB2/issues/206), [#45](https://github.com/CMB2/CMB2/issues/45)).
501
- * Added a callback option for the field default value. The callback gets passed an array of all the field parameters as the first argument, and the field object as the second argument. (which means you can get the post id using `$field->object_id`). ([#233](https://github.com/CMB2/CMB2/issues/233)).
502
- * New `CMB2::get_field()` method and `cmb2_get_field` helper function for retrieving a `CMB2_Field` object from the array of registered fields for a metabox.
503
- * New `CMB2::get_sanitized_values()` method and `cmb2_get_metabox_sanitized_values` helper function for retrieving sanitized values from an array of values (usually `$_POST` data).
504
- * New `'save_fields'` metabox parameter that can be used to disable (by setting `'save_fields' => false`) the automatic saving of the fields when the form is submitted. These can be useful when you want to handle the saving of the fields yourself, or want to use submitted data for other purposes like generating new posts, or sending emails, etc.
505
-
506
- ### Bug Fixes
507
-
508
- * Fix commented out text_datetime_timestamp_timezone field registration example in `example-functions.php`. Props [cliffordp](https://github.com/cliffordp), ([#203](https://github.com/CMB2/CMB2/pull/203)).
509
- * Fix sidebar styling for money fields and fields with textareas. ([#234](https://github.com/CMB2/CMB2/issues/234))
510
- * Fix `CMB2_Sanitize` class to properly use the stripslashed value (which was added in [#162](https://github.com/CMB2/CMB2/pull/162) but never used). Props [dustyf](https://github.com/dustyf), ([#241](https://github.com/CMB2/CMB2/pull/241)).
511
-
512
- ## 2.0.2 - 2015-02-15
513
-
514
- ### Enhancements
515
-
516
- * Use the more appropriate `add_meta_boxes` hook for hooking in metaboxes to post-edit screen. Thanks [@inspiraaz](https://github.com/inspiraaz) for reporting. ([#161](https://github.com/CMB2/CMB2/issues/161))
517
- * Add a `row_classes` field param which allows you to add additional classes to the cmb-row wrap. This parameter can take a string, or array, or can take a callback that returns a string or array. The callback will receive `$field_args` as the first argument, and the CMB2_Field `$field` object as the second argument. Reported/requested in [#68](https://github.com/CMB2/CMB2/issues/68).
518
- * New constant, `CMB2_LOADED`, which you can use to check if CMB2 is loaded for your plugins/themes with CMB2 dependency.
519
- * New hooks, [`cmb2_init_before_hookup` and `cmb2_after_init`](https://github.com/CMB2/CMB2-Snippet-Library/blob/master/filters-and-actions).
520
- * New API for adding metaboxes and fields, demonstrated in [`example-functions.php`](https://github.com/CMB2/CMB2/blob/master/example-functions.php). In keeping with backwards-compatibility, the `cmb2_meta_boxes` filter method will still work, but is not recommended. New API includes `new_cmb2_box` helper function to generate a new metabox, and returns a `$cmb` object to add new fields (via the `CMB2::add_field()` and `CMB2::add_group_field()` methods).
521
- * New CMB2 method, [`CMB2::remove_field()`](https://github.com/CMB2/CMB2-Snippet-Library/blob/master/filters-and-actions/cmb2_init_%24cmb_id-remove-field.php).
522
- * New CMB2_Boxes method, [`CMB2_Boxes::remove()`](https://github.com/CMB2/CMB2-Snippet-Library/blob/master/filters-and-actions/cmb2_init_before_hookup-remove-cmb2-metabox.php).
523
- * When clicking on a file/image in the `file`, or `file_list` type, the media modal will open with that image selected. Props [johnsonpaul1014](https://github.com/johnsonpaul1014), ([#120](https://github.com/CMB2/CMB2/pull/120)).
524
-
525
-
526
- ## 2.0.1 - 2015-02-02
527
-
528
- 2.0.1 is the official version after beta, and includes all the changes from 2.0.0 (beta).
529
-
530
- ## 2.0.0(beta) - 2014-08-16
531
-
532
- 2.0.0 is the official version number for the transition to CMB2, and 2.0.1 is the official version after beta. It is a complete rewrite. Improvements and fixes are listed below. __Note: This release requires WordPress 3.8+__
533
-
534
- ### Enhancements
535
-
536
- * Converted `<table>` markup to more generic `<div>` markup to be more extensible and allow easier styling.
537
- * Much better handling and display of repeatable groups.
538
- * Entirely translation-ready [with full translations](http://wp-translations.org/project/cmb2/) in Spanish, French (Props [@fredserva](https://github.com/fredserva) - [#127](https://github.com/CMB2/CMB2/pull/127)), Finnish (Props [@onnimonni](https://github.com/onnimonni) - [#108](https://github.com/CMB2/CMB2/pull/108)), Swedish (Props [@EyesX](https://github.com/EyesX) - [#141](https://github.com/CMB2/CMB2/pull/141)), and English.
539
- * Add cmb fields to new user page. Props [GioSensation](https://github.com/GioSensation), ([#645](https://github.com/WebDevStudios/Custom-Metaboxes-and-Fields-for-WordPress/pull/645)).
540
- * Improved and additional [helper-functions](https://github.com/CMB2/CMB2/blob/master/includes/helper-functions.php).
541
- * Added new features and translation for datepicker. Props [kalicki](https://github.com/kalicki), ([#657](https://github.com/WebDevStudios/Custom-Metaboxes-and-Fields-for-WordPress/pull/657)).
542
- * General code standards cleanup. Props [gregrickaby](https://github.com/gregrickaby), ([#17](https://github.com/CMB2/CMB2/pull/17) & others).
543
- * Use SASS for development. Props [gregrickaby](https://github.com/gregrickaby), ([#18](https://github.com/CMB2/CMB2/pull/18)).
544
- * New `hidden` field type.
545
- * [Ability to override text strings in fields via field options parameter](https://github.com/CMB2/CMB2/wiki/Tips-&-Tricks#override-text-strings-in-field).
546
- * Added composer.json. Props [nlemoine](https://github.com/nlemoine), ([#19](https://github.com/CMB2/CMB2/pull/19)).
547
- * New field 'hooks' can take [static text/html](https://github.com/CMB2/CMB2/wiki/Tips-&-Tricks#inject-static-content-in-a-field) or a [callback](https://github.com/CMB2/CMB2/wiki/Tips-&-Tricks#inject-dynamic-content-in-a-field-via-a-callback).
548
- * New `preview_size` parameter for `file` field type. Takes an array or named image size.
549
- * Empty index.php file to all folders (for more security). Props [brunoramalho](https://github.com/brunoramalho), ([#41](https://github.com/CMB2/CMB2/pull/41)).
550
- * Clean up styling. Props [brunoramalho](https://github.com/brunoramalho), ([#43](https://github.com/CMB2/CMB2/pull/43)) and [senicar](https://github.com/senicar).
551
- * Collapsible field groups. Props [cluke009](https://github.com/cluke009), ([#59](https://github.com/CMB2/CMB2/pull/59)).
552
- * Allow for override of update/remove for CMB2_Field. Props [sc0ttkclark](https://github.com/sc0ttkclark), ([#65](https://github.com/CMB2/CMB2/pull/65)).
553
- * Use class button-disabled instead of disabled="disabled" for <a> buttons. Props [sc0ttkclark](https://github.com/sc0ttkclark), ([#66](https://github.com/CMB2/CMB2/pull/66)).
554
- * [New before/after dynamic form hooks](https://github.com/CMB2/CMB2/wiki/Tips-&-Tricks#using-the-dynamic-beforeafter-form-hooks).
555
- * Larger unit test coverage. Props to [@pmgarman](https://github.com/pmgarman) for assistance. ([#90](https://github.com/CMB2/CMB2/pull/90) and [#91](https://github.com/CMB2/CMB2/pull/91))
556
- * Added helper function to update an option. Props [mAAdhaTTah](https://github.com/mAAdhaTTah), ([#110](https://github.com/CMB2/CMB2/pull/110)).
557
- * More JS hooks during repeat group shifting. Props [AlchemyUnited](https://github.com/AlchemyUnited), ([#125](https://github.com/CMB2/CMB2/pull/125)).
558
- * [New metabox config option for defaulting to closed](https://github.com/CMB2/CMB2/wiki/Tips-&-Tricks#setting-a-metabox-to-closed-by-default).
559
- * New hooks, [`cmb2_init`](https://github.com/CMB2/CMB2/wiki/Tips-&-Tricks#using-cmb2-helper-functions-and-cmb2_init) and `cmb2_init_{$cmb_id}`.
560
-
561
- ### Bug Fixes
562
-
563
- * New mechanism to ensure CMB2 only loads the most recent version of CMB2 in your system. This fixes the issue where another bundled version could conflict or take precendent over your up-to-date version.
564
- * Fix issue with field labels being hidden. Props [mustardBees](https://github.com/mustardBees), ([#48](https://github.com/CMB2/CMB2/pull/48)).
565
- * Address issues with autoloading before autoloader is setup. Props [JPry](https://github.com/JPry), ([#56](https://github.com/CMB2/CMB2/pull/56)).
566
- * Fixed 'show_on_cb' for field groups. Props [marcusbattle](https://github.com/marcusbattle), ([#98](https://github.com/CMB2/CMB2/pull/98)).
567
- * Make get_object_terms work with and without object caching. Props [joshlevinson](https://github.com/joshlevinson), ([#105](https://github.com/CMB2/CMB2/pull/105)).
568
- * Don't use `__DIR__` in example-functions.php to ensure PHP 5.2 compatibility. Props [bryceadams](https://github.com/bryceadams), ([#129](https://github.com/CMB2/CMB2/pull/129)).
569
- * Added support for radio input swapping in repeatable fields. Props [DevinWalker](https://github.com/DevinWalker), ([#138](https://github.com/CMB2/CMB2/pull/138), [#149](https://github.com/CMB2/CMB2/pull/149)).
570
- * Fix metabox form not being returned to caller. Props [akshayagarwal](https://github.com/akshayagarwal), ([#145](https://github.com/CMB2/CMB2/pull/145)).
571
- * Run stripslashes before saving data, since WordPress forces magic quotes. Props [clifgriffin](https://github.com/clifgriffin), ([#162](https://github.com/CMB2/CMB2/pull/162)).
572
-
573
- ## 1.3.0 - (never released, merged into CMB2)
574
-
575
- ### Enhancements
576
-
577
- * Localize Date, Time, and Color picker defaults so that they can be overridden via the `cmb_localized_data` filter. ([#528](https://github.com/WebDevStudios/Custom-Metaboxes-and-Fields-for-WordPress/issues/528))
578
- * Change third parameter for 'cmb_metabox_form' to be an args array. Optional arguments include `echo`, `form_format`, and `save_button`.
579
- * Add support for `show_option_none` argument for `taxonomy_select` and `taxonomy_radio` field types. Also adds the following filters: `cmb_all_or_nothing_types`, `cmb_taxonomy_select_default_value`, `cmb_taxonomy_select_{$this->_id()}_default_value`, `cmb_taxonomy_radio_{$this->_id()}_default_value`, `cmb_taxonomy_radio_default_value`. Props [@pmgarman](https://github.com/pmgarman), ([#569](https://github.com/WebDevStudios/Custom-Metaboxes-and-Fields-for-WordPress/pull/569)).
580
- * Make the list items in the `file_list` field type drag & drop sortable. Props [twoelevenjay](https://github.com/twoelevenjay), ([#603](https://github.com/WebDevStudios/Custom-Metaboxes-and-Fields-for-WordPress/pull/603)).
581
-
582
- ### Bug Fixes
583
-
584
- * Fixed typo in closing `</th>` tag. Props [@CivicImages](https://github.com/CivicImages). ([#616](https://github.com/WebDevStudios/Custom-Metaboxes-and-Fields-for-WordPress/issues/616))
585
-
586
- ## 1.2.0 - 2014-05-03
587
-
588
- ### Enhancements
589
-
590
- * Add support for custom date/time formats. Props [@Scrent](https://github.com/Scrent). ([#506](https://github.com/WebDevStudios/Custom-Metaboxes-and-Fields-for-WordPress/pull/506))
591
- * Simplify `wysiwyg` escaping and allow it to be overridden via the `escape_cb` parameter. ([#491](https://github.com/WebDevStudios/Custom-Metaboxes-and-Fields-for-WordPress/pull/491))
592
- * Add a 'Select/Deselect all' button for the `multicheck` field type.
593
- * Add title option for [repeatable groups](https://github.com/CMB2/CMB2/wiki/Field-Types#group). Title field takes an optional replacement hash, "{#}" that will be replaced by the row number.
594
- * New field parameter, `show_on_cb`, allows you to conditionally display a field via a callback. ([#47](https://github.com/WebDevStudios/Custom-Metaboxes-and-Fields-for-WordPress/issues/47))
595
- * Unit testing (the beginning). Props [@brichards](https://github.com/brichards) and [@camdensegal](https://github.com/camdensegal).
596
-
597
- ### Bug Fixes
598
-
599
- * Fixed issue where remove file button wouldn't clear the url field. ([#514](https://github.com/WebDevStudios/Custom-Metaboxes-and-Fields-for-WordPress/issues/514))
600
- * `wysiwyg` fields now allow underscores. Fixes some wysiwyg display issues in WordPress 3.8. Props [@lswilson](https://github.com/lswilson). ([#491](https://github.com/WebDevStudios/Custom-Metaboxes-and-Fields-for-WordPress/issues/491))
601
- * Nonce field should only be added once per page. ([#521](https://github.com/WebDevStudios/Custom-Metaboxes-and-Fields-for-WordPress/issues/521))
602
- * Fix `in_array` issue when a post does not have any saved terms for a taxonomy multicheck. ([#527](https://github.com/WebDevStudios/Custom-Metaboxes-and-Fields-for-WordPress/issues/527))
603
- * Fixed error: 'Uninitialized string offset: 0 in cmb_Meta_Box_field.php...`. Props [@DevinWalker](https://github.com/DevinWalker). ([#539](https://github.com/WebDevStudios/Custom-Metaboxes-and-Fields-for-WordPress/issues/539), [#549](https://github.com/WebDevStudios/Custom-Metaboxes-and-Fields-for-WordPress/issues/549)))
604
- * Fix missing `file` field description. ([#543](https://github.com/WebDevStudios/Custom-Metaboxes-and-Fields-for-WordPress/issues/543), [#547](https://github.com/WebDevStudios/Custom-Metaboxes-and-Fields-for-WordPress/issues/547))
605
-
606
-
607
-
608
- ## 1.1.3 - 2014-04-07
609
-
610
- ### Bug Fixes
611
-
612
- * Update `cmb_get_field_value` function as it was passing the parameters to `cmb_get_field` in the wrong order.
613
- * Fix repeating fields not working correctly if meta key or prefix contained an integer. ([#503](https://github.com/WebDevStudios/Custom-Metaboxes-and-Fields-for-WordPress/issues/503))
614
-
615
- ## 1.1.2 - 2014-04-05
616
-
617
- ### Bug Fixes
618
-
619
- * Fix issue with `cmb_Meta_Box_types.php` calling a missing method, `image_id_from_url`. ([#502](https://github.com/WebDevStudios/Custom-Metaboxes-and-Fields-for-WordPress/pull/502))
620
-
621
-
622
- ## 1.1.1 - 2014-04-03
623
-
624
- ### Bug Fixes
625
-
626
- * Radio button values were not showing saved value. ([#500](https://github.com/WebDevStudios/Custom-Metaboxes-and-Fields-for-WordPress/issues/500))
627
-
628
- ## 1.1.0 - 2014-04-02
629
-
630
- ### Enhancements
631
-
632
- * [Repeatable groups](https://github.com/CMB2/CMB2/wiki/Field-Types#group)
633
- * Support for more fields to be repeatable, including oEmbed field, and date, time, and color picker fields, etc.
634
- * Codebase has been revamped to be more modular and object-oriented.
635
- * New filter, `"cmb_{$element}_attributes" ` for modifying an element's attributes.
636
- * Every field now supports an `attributes` parameter that takes an array of attributes. [Read more](https://github.com/CMB2/CMB2/wiki/Field-Types#attributes).
637
- * Removed `cmb_std_filter` in favor of `cmb_default_filter`. **THIS IS A BREAKING CHANGE**
638
- * Better handling of labels in sidebar. They are now placed on top of the input rather than adjacent.
639
- * Added i18n compatibility to text_money. props [@ArchCarrier](https://github.com/ArchCarrier), ([#485](https://github.com/WebDevStudios/Custom-Metaboxes-and-Fields-for-WordPress/pull/485))
640
- * New helper functions: `cmb_get_field` and `cmb_get_field_value` for getting access to CMB's field object and/or value.
641
- * New JavaScript events, `cmb_add_row` and `cmb_remove_row` for hooking in and manipulating the new row's data.
642
- * New filter, `cmb_localized_data`, for modifiying localized data passed to the CMB JS.
643
-
644
- ### Bug Fixes
645
- * Resolved occasional issue where only the first character of the label/value was diplayed. props [@mustardBees](https://github.com/mustardBees), ([#486](https://github.com/WebDevStudios/Custom-Metaboxes-and-Fields-for-WordPress/pull/486))
646
-
647
-
648
- ## 1.0.2 - 2014-03-03
649
-
650
- ### Enhancements
651
-
652
- * Change the way the `'cmb_validate_{$field['type']}'` filter works.
653
- It is now passed a null value vs saved value. If null is returned, default sanitization will follow. **THIS IS A BREAKING CHANGE**. If you're already using this filter, take note.
654
- * All field types that take an option array have been simplified to take `key => value` pairs (vs `array( 'name' => 'value', 'value' => 'key', )`). This effects the 'select', 'radio', 'radio_inline' field types. The 'multicheck' field type was already using the `key => value` format. Backwards compatibility has been maintained for those using the older style.
655
- * Added default value option for `taxonomy_select` field type. props [@darlantc](https://github.com/darlantc), ([#473](https://github.com/WebDevStudios/Custom-Metaboxes-and-Fields-for-WordPress/pull/473))
656
- * Added `preview_size` parameter for `file_list` field type. props [@IgorCode](https://github.com/IgorCode), ([#471](https://github.com/WebDevStudios/Custom-Metaboxes-and-Fields-for-WordPress/pull/471))
657
- * Updated `file_list` images to be displayed horizontally instead of vertically. props [@IgorCode](https://github.com/IgorCode), ([#467](https://github.com/WebDevStudios/Custom-Metaboxes-and-Fields-for-WordPress/pull/467))
658
- * Use `get_the_terms` where possible since the data is cached.
659
-
660
- ### Bug Fixes
661
-
662
- * Fixed wysiwyg escaping slashes. props [@gregrickaby](https://github.com/gregrickaby), ([#465](https://github.com/WebDevStudios/Custom-Metaboxes-and-Fields-for-WordPress/pull/465))
663
- * Replaced `__DIR__`, as `dirname( __FILE__ )` is easier to maintain back-compatibility.
664
- * Fixed missing table styling on new posts. props [@mustardBees](https://github.com/mustardBees), ([#438](https://github.com/WebDevStudios/Custom-Metaboxes-and-Fields-for-WordPress/pull/438))
665
- * Fix undeclared JS variable. [@veelen](https://github.com/veelen), ([#451](https://github.com/WebDevStudios/Custom-Metaboxes-and-Fields-for-WordPress/pull/451))
666
- * Fix `file_list` errors when removing all files and saving.
667
- * Set correct `object_id` to be used later in `cmb_show_on` filter. [@lauravaq](https://github.com/lauravaq), ([#445](https://github.com/WebDevStudios/Custom-Metaboxes-and-Fields-for-WordPress/pull/445))
668
- * Fix sanitization recursion memeory issues.
669
-
670
- ## 1.0.1 - 2014-01-24
671
-
672
- ### Enhancements
673
-
674
- * Now works with option pages and site settings. ([view example in wiki](https://github.com/CMB2/CMB2/wiki/Using-CMB-to-create-an-Admin-Theme-Options-Page))
675
- * two filters to override the setting and getting of options, `cmb_override_option_get_$option_key` and `cmb_override_option_save_$option_key` respectively. Handy for using plugins like [WP Large Options](https://github.com/voceconnect/wp-large-options/) ([also here](http://vip.wordpress.com/plugins/wp-large-options/)).
676
- * Improved styling on taxonomy (\*tease\*) and options pages and for new 3.8 admin UI.
677
- * New sanitization class to sanitize data when saved.
678
- * New callback field parameter, `sanitization_cb`, for performing your own sanitization.
679
- * new `cmb_Meta_Box_types::esc()` method that handles escaping data for display.
680
- * New callback field parameter, `escape_cb`, for performing your own data escaping, as well as a new filter, `'cmb_types_esc_'. $field['type']`.
681
-
682
- ### Bug Fixes
683
-
684
- * Fixed wysiwyg editor button padding. props [@corvannoorloos](https://github.com/corvannoorloos), ([#391](https://github.com/WebDevStudios/Custom-Metaboxes-and-Fields-for-WordPress/pull/391))
685
- * A few php < 5.3 errors were addressed.
686
- * Fields with quotation marks no longer break the input/textarea fields.
687
- * metaboxes for Attachment pages now save correctly. Thanks [@nciske](https://github.com/nciske) for reporting. ([#412](https://github.com/WebDevStudios/Custom-Metaboxes-and-Fields-for-WordPress/issues/412))
688
- * Occasionally fields wouldn't save because of the admin show_on filter.
689
- * Smaller images loaded to the file field type will no longer be blown up larger than their dimensions.
690
-
691
- ## 1.0.0 - 2013-11-30
692
-
693
- * Added `text_datetime_timestamp_timezone` type, a datetime combo field with an additional timezone drop down, props [@dessibelle](https://github.com/dessibelle)
694
- * Added `select_timezone` type, a standalone time zone select dropdown. The time zone select can be used with standalone `text_datetime_timestamp` if desired. Props [@dessibelle](https://github.com/dessibelle)
695
- * Added `text_url` type, a basic url field. Props [@dessibelle](https://github.com/dessibelle)
696
- * Added `text_email` type, a basic email field. Props [@dessibelle](https://github.com/dessibelle)
697
- * Added ability to display metabox fields in frontend. Default is true, but can be overriden using the `cmb_allow_frontend filter`. If set to true, an entire metabox form can be output with the `cmb_metabox_form( $meta_box, $object_id, $echo )` function. Props [@dessibelle](https://github.com/dessibelle), [@messenlehner](https://github.com/messenlehner) & [@jtsternberg](https://github.com/jtsternberg).
698
- * Added hook `cmb_after_table` after all metabox output. Props [@wpsmith](https://github.com/wpsmith)
699
- * `file_list` now works like a repeatable field. Add as many files as you want. Props [@coreymcollins](https://github.com/coreymcollins)
700
- * `text`, `text_small`, `text_medium`, `text_url`, `text_email`, & `text_money` fields now all have the option to be repeatable. Props [@jtsternberg](https://github.com/jtsternberg)
701
- * Custom metaboxes can now be added for user meta. Add them on the user add/edit screen, or in a custom user profile edit page on the front-end. Props [@tw2113](https://github.com/tw2113), [@jtsternberg](https://github.com/jtsternberg)
702
-
703
- ## 0.9.4
704
-
705
- * Added field "before" and "after" options for each field. Solves issue with '$' not being the desired text_money monetary symbol, props [@GaryJones](https://github.com/GaryJones)
706
- * Added filter for 'std' default fallback value, props [@messenlehner](https://github.com/messenlehner)
707
- * Ensure oEmbed videos fit in their respective metaboxes, props [@jtsternberg](https://github.com/jtsternberg)
708
- * Fixed issue where an upload field with 'show_names' disabled wouldn't have the correct button label, props [@jtsternberg](https://github.com/jtsternberg)
709
- * Better file-extension check for images, props [@GhostToast](https://github.com/GhostToast)
710
- * New filter, `cmb_valid_img_types`, for whitelisted image file-extensions, props [@jtsternberg](https://github.com/jtsternberg)
711
-
712
- ## 0.9.3
713
- * Added field type and field id classes to each cmb table row, props [@jtsternberg](https://github.com/jtsternberg)
714
-
715
- ## 0.9.2
716
- * Added post type comparison to prevent storing null values for taxonomy selectors, props [@norcross](https://github.com/norcross)
717
-
718
- ## 0.9.1
719
- * Added `oEmbed` field type with ajax display, props [@jtsternberg](https://github.com/jtsternberg)
720
-
721
- ## 0.9
722
- * __Note: This release requires WordPress 3.3+__
723
- * Cleaned up scripts being queued, props [@jaredatch](https://github.com/jaredatch)
724
- * Cleaned up and reorganized jQuery, props [@GaryJones](https://github.com/GaryJones)
725
- * Use $pagenow instead of custom $current_page, props [@jaredatch](https://github.com/jaredatch)
726
- * Fixed CSS, removed inline styles, now all in style.css, props [@jaredatch](https://github.com/jaredatch)
727
- * Fixed multicheck issues (issue #48), props [@jaredatch](https://github.com/jaredatch)
728
- * Fixed jQuery UI datepicker CSS conflicting with WordPress UI elements, props [@jaredatch](https://github.com/jaredatch)
729
- * Fixed zeros not saving in fields, props [@GaryJones](https://github.com/GaryJones)
730
- * Fixed improper labels on radio and multicheck fields, props [@jaredatch](https://github.com/jaredatch)
731
- * Fixed fields not rendering properly when in sidebar, props [@jaredatch](https://github.com/jaredatch)
732
- * Fixed bug where datepicker triggers extra space after footer in Firefox (issue #14), props [@jaredatch](https://github.com/jaredatch)
733
- * Added jQuery UI datepicker packaged with 3.3 core, props [@jaredatch](https://github.com/jaredatch)
734
- * Added date time combo picker, props [@jaredatch](https://github.com/jaredatch)
735
- * Added color picker, props [@jaredatch](https://github.com/jaredatch)
736
- * Added readme.md markdown file, props [@jaredatch](https://github.com/jaredatch)
737
-
738
- ## 0.8 - 2012-01-19
739
- * Added jQuery timepicker, props [@norcross](https://github.com/norcross)
740
- * Added 'raw' textarea to convert special HTML entities back to characters, props [@norcross](https://github.com/norcross)
741
- * Added missing examples on example-functions.php, props [@norcross](https://github.com/norcross)
742
-
743
- ## 0.7
744
- * Added the new wp_editor() function for the WYSIWYG dialog box, props [@jcpry](https://github.com/jcpry)
745
- * Created 'cmb_show_on' filter to define your own Show On Filters, props [@billerickson](https://github.com/billerickson)
746
- * Added page template show_on filter, props [@billerickson](https://github.com/billerickson)
747
- * Improvements to the 'file' field type, props [@randyhoyt](https://github.com/randyhoyt)
748
- * Allow for default values on 'radio' and 'radio_inline' field types, props [@billerickson](https://github.com/billerickson)
749
-
750
- ## 0.6.1
751
- * Enabled the ability to define your own custom field types (issue #28). props [@randyhoyt](https://github.com/randyhoyt)
752
-
753
- ## 0.6
754
- * Added the ability to limit metaboxes to certain posts by id. props [@billerickson](https://github.com/billerickson)
755
-
756
- ## 0.5
757
- * Fixed define to prevent notices. props [@destos](https://github.com/destos)
758
- * Added text_date_timestap option. props [@andrewyno](https://github.com/andrewyno)
759
- * Fixed WYSIWYG paragraph breaking/spacing bug. props [@wpsmith](https://github.com/wpsmith)
760
- * Added taxonomy_radio and taxonomies_select options. props [@c3mdigital](https://github.com/c3mdigital)
761
- * Fixed script causing the dashboard widgets to not be collapsible.
762
- * Fixed various spacing and whitespace inconsistencies
763
-
764
- ## 0.4
765
- * Think we have a release that is mostly working. We'll say the initial release :)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/ClassLoader.php CHANGED
@@ -60,7 +60,7 @@ class ClassLoader
60
  public function getPrefixes()
61
  {
62
  if (!empty($this->prefixesPsr0)) {
63
- return call_user_func_array('array_merge', $this->prefixesPsr0);
64
  }
65
 
66
  return array();
60
  public function getPrefixes()
61
  {
62
  if (!empty($this->prefixesPsr0)) {
63
+ return call_user_func_array('array_merge', array_values($this->prefixesPsr0));
64
  }
65
 
66
  return array();
vendor/composer/autoload_classmap.php CHANGED
@@ -6,307 +6,4 @@ $vendorDir = dirname(dirname(__FILE__));
6
  $baseDir = dirname($vendorDir);
7
 
8
  return array(
9
- 'Ctct\\Auth\\CtctDataStore' => $vendorDir . '/constantcontact/constantcontact/src/Ctct/Auth/CtctDataStore.php',
10
- 'Ctct\\Auth\\CtctOAuth2' => $vendorDir . '/constantcontact/constantcontact/src/Ctct/Auth/CtctOAuth2.php',
11
- 'Ctct\\Auth\\SessionDataStore' => $vendorDir . '/constantcontact/constantcontact/src/Ctct/Auth/SessionDataStore.php',
12
- 'Ctct\\Components\\Account\\AccountInfo' => $vendorDir . '/constantcontact/constantcontact/src/Ctct/Components/Account/AccountInfo.php',
13
- 'Ctct\\Components\\Account\\VerifiedEmailAddress' => $vendorDir . '/constantcontact/constantcontact/src/Ctct/Components/Account/VerifiedEmailAddress.php',
14
- 'Ctct\\Components\\Activities\\Activity' => $vendorDir . '/constantcontact/constantcontact/src/Ctct/Components/Activities/Activity.php',
15
- 'Ctct\\Components\\Activities\\ActivityError' => $vendorDir . '/constantcontact/constantcontact/src/Ctct/Components/Activities/ActivityError.php',
16
- 'Ctct\\Components\\Activities\\AddContacts' => $vendorDir . '/constantcontact/constantcontact/src/Ctct/Components/Activities/AddContacts.php',
17
- 'Ctct\\Components\\Activities\\AddContactsImportData' => $vendorDir . '/constantcontact/constantcontact/src/Ctct/Components/Activities/AddContactsImportData.php',
18
- 'Ctct\\Components\\Activities\\ExportContacts' => $vendorDir . '/constantcontact/constantcontact/src/Ctct/Components/Activities/ExportContacts.php',
19
- 'Ctct\\Components\\Component' => $vendorDir . '/constantcontact/constantcontact/src/Ctct/Components/Component.php',
20
- 'Ctct\\Components\\Contacts\\Address' => $vendorDir . '/constantcontact/constantcontact/src/Ctct/Components/Contacts/Address.php',
21
- 'Ctct\\Components\\Contacts\\Contact' => $vendorDir . '/constantcontact/constantcontact/src/Ctct/Components/Contacts/Contact.php',
22
- 'Ctct\\Components\\Contacts\\ContactList' => $vendorDir . '/constantcontact/constantcontact/src/Ctct/Components/Contacts/ContactList.php',
23
- 'Ctct\\Components\\Contacts\\CustomField' => $vendorDir . '/constantcontact/constantcontact/src/Ctct/Components/Contacts/CustomField.php',
24
- 'Ctct\\Components\\Contacts\\EmailAddress' => $vendorDir . '/constantcontact/constantcontact/src/Ctct/Components/Contacts/EmailAddress.php',
25
- 'Ctct\\Components\\Contacts\\Note' => $vendorDir . '/constantcontact/constantcontact/src/Ctct/Components/Contacts/Note.php',
26
- 'Ctct\\Components\\EmailMarketing\\Campaign' => $vendorDir . '/constantcontact/constantcontact/src/Ctct/Components/EmailMarketing/Campaign.php',
27
- 'Ctct\\Components\\EmailMarketing\\CampaignPreview' => $vendorDir . '/constantcontact/constantcontact/src/Ctct/Components/EmailMarketing/CampaignPreview.php',
28
- 'Ctct\\Components\\EmailMarketing\\ClickThroughDetails' => $vendorDir . '/constantcontact/constantcontact/src/Ctct/Components/EmailMarketing/ClickThroughDetails.php',
29
- 'Ctct\\Components\\EmailMarketing\\MessageFooter' => $vendorDir . '/constantcontact/constantcontact/src/Ctct/Components/EmailMarketing/MessageFooter.php',
30
- 'Ctct\\Components\\EmailMarketing\\Schedule' => $vendorDir . '/constantcontact/constantcontact/src/Ctct/Components/EmailMarketing/Schedule.php',
31
- 'Ctct\\Components\\EmailMarketing\\TestSend' => $vendorDir . '/constantcontact/constantcontact/src/Ctct/Components/EmailMarketing/TestSend.php',
32
- 'Ctct\\Components\\Library\\File' => $vendorDir . '/constantcontact/constantcontact/src/Ctct/Components/Library/File.php',
33
- 'Ctct\\Components\\Library\\FileUploadStatus' => $vendorDir . '/constantcontact/constantcontact/src/Ctct/Components/Library/FileUploadStatus.php',
34
- 'Ctct\\Components\\Library\\Folder' => $vendorDir . '/constantcontact/constantcontact/src/Ctct/Components/Library/Folder.php',
35
- 'Ctct\\Components\\Library\\Thumbnail' => $vendorDir . '/constantcontact/constantcontact/src/Ctct/Components/Library/Thumbnail.php',
36
- 'Ctct\\Components\\ResultSet' => $vendorDir . '/constantcontact/constantcontact/src/Ctct/Components/ResultSet.php',
37
- 'Ctct\\Components\\Tracking\\BounceActivity' => $vendorDir . '/constantcontact/constantcontact/src/Ctct/Components/Tracking/BounceActivity.php',
38
- 'Ctct\\Components\\Tracking\\ClickActivity' => $vendorDir . '/constantcontact/constantcontact/src/Ctct/Components/Tracking/ClickActivity.php',
39
- 'Ctct\\Components\\Tracking\\ForwardActivity' => $vendorDir . '/constantcontact/constantcontact/src/Ctct/Components/Tracking/ForwardActivity.php',
40
- 'Ctct\\Components\\Tracking\\OpenActivity' => $vendorDir . '/constantcontact/constantcontact/src/Ctct/Components/Tracking/OpenActivity.php',
41
- 'Ctct\\Components\\Tracking\\SendActivity' => $vendorDir . '/constantcontact/constantcontact/src/Ctct/Components/Tracking/SendActivity.php',
42
- 'Ctct\\Components\\Tracking\\TrackingActivity' => $vendorDir . '/constantcontact/constantcontact/src/Ctct/Components/Tracking/TrackingActivity.php',
43
- 'Ctct\\Components\\Tracking\\TrackingSummary' => $vendorDir . '/constantcontact/constantcontact/src/Ctct/Components/Tracking/TrackingSummary.php',
44
- 'Ctct\\Components\\Tracking\\UnsubscribeActivity' => $vendorDir . '/constantcontact/constantcontact/src/Ctct/Components/Tracking/UnsubscribeActivity.php',
45
- 'Ctct\\ConstantContact' => $vendorDir . '/constantcontact/constantcontact/src/Ctct/ConstantContact.php',
46
- 'Ctct\\Exceptions\\CtctException' => $vendorDir . '/constantcontact/constantcontact/src/Ctct/Exceptions/CtctException.php',
47
- 'Ctct\\Exceptions\\IllegalArgumentException' => $vendorDir . '/constantcontact/constantcontact/src/Ctct/Exceptions/IllegalArgumentException.php',
48
- 'Ctct\\Exceptions\\OAuth2Exception' => $vendorDir . '/constantcontact/constantcontact/src/Ctct/Exceptions/OAuth2Exception.php',
49
- 'Ctct\\Services\\AccountService' => $vendorDir . '/constantcontact/constantcontact/src/Ctct/Services/AccountService.php',
50
- 'Ctct\\Services\\ActivityService' => $vendorDir . '/constantcontact/constantcontact/src/Ctct/Services/ActivityService.php',
51
- 'Ctct\\Services\\BaseService' => $vendorDir . '/constantcontact/constantcontact/src/Ctct/Services/BaseService.php',
52
- 'Ctct\\Services\\CampaignScheduleService' => $vendorDir . '/constantcontact/constantcontact/src/Ctct/Services/CampaignScheduleService.php',
53
- 'Ctct\\Services\\CampaignTrackingService' => $vendorDir . '/constantcontact/constantcontact/src/Ctct/Services/CampaignTrackingService.php',
54
- 'Ctct\\Services\\ContactService' => $vendorDir . '/constantcontact/constantcontact/src/Ctct/Services/ContactService.php',
55
- 'Ctct\\Services\\ContactTrackingService' => $vendorDir . '/constantcontact/constantcontact/src/Ctct/Services/ContactTrackingService.php',
56
- 'Ctct\\Services\\EmailMarketingService' => $vendorDir . '/constantcontact/constantcontact/src/Ctct/Services/EmailMarketingService.php',
57
- 'Ctct\\Services\\LibraryService' => $vendorDir . '/constantcontact/constantcontact/src/Ctct/Services/LibraryService.php',
58
- 'Ctct\\Services\\ListService' => $vendorDir . '/constantcontact/constantcontact/src/Ctct/Services/ListService.php',
59
- 'Ctct\\SplClassLoader' => $vendorDir . '/constantcontact/constantcontact/src/Ctct/SplClassLoader.php',
60
- 'Ctct\\Util\\Config' => $vendorDir . '/constantcontact/constantcontact/src/Ctct/Util/Config.php',
61
- 'Ctct\\WebHooks\\CTCTWebhookUtil' => $vendorDir . '/constantcontact/constantcontact/src/Ctct/WebHooks/CTCTWebhookUtil.php',
62
- 'Defuse\\Crypto\\Core' => $vendorDir . '/defuse/php-encryption/src/Core.php',
63
- 'Defuse\\Crypto\\Crypto' => $vendorDir . '/defuse/php-encryption/src/Crypto.php',
64
- 'Defuse\\Crypto\\DerivedKeys' => $vendorDir . '/defuse/php-encryption/src/DerivedKeys.php',
65
- 'Defuse\\Crypto\\Encoding' => $vendorDir . '/defuse/php-encryption/src/Encoding.php',
66
- 'Defuse\\Crypto\\Exception\\BadFormatException' => $vendorDir . '/defuse/php-encryption/src/Exception/BadFormatException.php',
67
- 'Defuse\\Crypto\\Exception\\CryptoException' => $vendorDir . '/defuse/php-encryption/src/Exception/CryptoException.php',
68
- 'Defuse\\Crypto\\Exception\\EnvironmentIsBrokenException' => $vendorDir . '/defuse/php-encryption/src/Exception/EnvironmentIsBrokenException.php',
69
- 'Defuse\\Crypto\\Exception\\IOException' => $vendorDir . '/defuse/php-encryption/src/Exception/IOException.php',
70
- 'Defuse\\Crypto\\Exception\\WrongKeyOrModifiedCiphertextException' => $vendorDir . '/defuse/php-encryption/src/Exception/WrongKeyOrModifiedCiphertextException.php',
71
- 'Defuse\\Crypto\\File' => $vendorDir . '/defuse/php-encryption/src/File.php',
72
- 'Defuse\\Crypto\\Key' => $vendorDir . '/defuse/php-encryption/src/Key.php',
73
- 'Defuse\\Crypto\\KeyOrPassword' => $vendorDir . '/defuse/php-encryption/src/KeyOrPassword.php',
74
- 'Defuse\\Crypto\\KeyProtectedByPassword' => $vendorDir . '/defuse/php-encryption/src/KeyProtectedByPassword.php',
75
- 'Defuse\\Crypto\\RuntimeTests' => $vendorDir . '/defuse/php-encryption/src/RuntimeTests.php',
76
- 'GuzzleHttp\\BatchResults' => $vendorDir . '/guzzlehttp/guzzle/src/BatchResults.php',
77
- 'GuzzleHttp\\Client' => $vendorDir . '/guzzlehttp/guzzle/src/Client.php',
78
- 'GuzzleHttp\\ClientInterface' => $vendorDir . '/guzzlehttp/guzzle/src/ClientInterface.php',
79
- 'GuzzleHttp\\Collection' => $vendorDir . '/guzzlehttp/guzzle/src/Collection.php',
80
- 'GuzzleHttp\\Cookie\\CookieJar' => $vendorDir . '/guzzlehttp/guzzle/src/Cookie/CookieJar.php',
81
- 'GuzzleHttp\\Cookie\\CookieJarInterface' => $vendorDir . '/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php',
82
- 'GuzzleHttp\\Cookie\\FileCookieJar' => $vendorDir . '/guzzlehttp/guzzle/src/Cookie/FileCookieJar.php',
83
- 'GuzzleHttp\\Cookie\\SessionCookieJar' => $vendorDir . '/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php',
84
- 'GuzzleHttp\\Cookie\\SetCookie' => $vendorDir . '/guzzlehttp/guzzle/src/Cookie/SetCookie.php',
85
- 'GuzzleHttp\\Event\\AbstractEvent' => $vendorDir . '/guzzlehttp/guzzle/src/Event/AbstractEvent.php',
86
- 'GuzzleHttp\\Event\\AbstractRequestEvent' => $vendorDir . '/guzzlehttp/guzzle/src/Event/AbstractRequestEvent.php',
87
- 'GuzzleHttp\\Event\\AbstractRetryableEvent' => $vendorDir . '/guzzlehttp/guzzle/src/Event/AbstractRetryableEvent.php',
88
- 'GuzzleHttp\\Event\\AbstractTransferEvent' => $vendorDir . '/guzzlehttp/guzzle/src/Event/AbstractTransferEvent.php',
89
- 'GuzzleHttp\\Event\\BeforeEvent' => $vendorDir . '/guzzlehttp/guzzle/src/Event/BeforeEvent.php',
90
- 'GuzzleHttp\\Event\\CompleteEvent' => $vendorDir . '/guzzlehttp/guzzle/src/Event/CompleteEvent.php',
91
- 'GuzzleHttp\\Event\\Emitter' => $vendorDir . '/guzzlehttp/guzzle/src/Event/Emitter.php',
92
- 'GuzzleHttp\\Event\\EmitterInterface' => $vendorDir . '/guzzlehttp/guzzle/src/Event/EmitterInterface.php',
93
- 'GuzzleHttp\\Event\\EndEvent' => $vendorDir . '/guzzlehttp/guzzle/src/Event/EndEvent.php',
94
- 'GuzzleHttp\\Event\\ErrorEvent' => $vendorDir . '/guzzlehttp/guzzle/src/Event/ErrorEvent.php',
95
- 'GuzzleHttp\\Event\\EventInterface' => $vendorDir . '/guzzlehttp/guzzle/src/Event/EventInterface.php',
96
- 'GuzzleHttp\\Event\\HasEmitterInterface' => $vendorDir . '/guzzlehttp/guzzle/src/Event/HasEmitterInterface.php',
97
- 'GuzzleHttp\\Event\\HasEmitterTrait' => $vendorDir . '/guzzlehttp/guzzle/src/Event/HasEmitterTrait.php',
98
- 'GuzzleHttp\\Event\\ListenerAttacherTrait' => $vendorDir . '/guzzlehttp/guzzle/src/Event/ListenerAttacherTrait.php',
99
- 'GuzzleHttp\\Event\\ProgressEvent' => $vendorDir . '/guzzlehttp/guzzle/src/Event/ProgressEvent.php',
100
- 'GuzzleHttp\\Event\\RequestEvents' => $vendorDir . '/guzzlehttp/guzzle/src/Event/RequestEvents.php',
101
- 'GuzzleHttp\\Event\\SubscriberInterface' => $vendorDir . '/guzzlehttp/guzzle/src/Event/SubscriberInterface.php',
102
- 'GuzzleHttp\\Exception\\BadResponseException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/BadResponseException.php',
103
- 'GuzzleHttp\\Exception\\ClientException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/ClientException.php',
104
- 'GuzzleHttp\\Exception\\ConnectException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/ConnectException.php',
105
- 'GuzzleHttp\\Exception\\CouldNotRewindStreamException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/CouldNotRewindStreamException.php',
106
- 'GuzzleHttp\\Exception\\ParseException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/ParseException.php',
107
- 'GuzzleHttp\\Exception\\RequestException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/RequestException.php',
108
- 'GuzzleHttp\\Exception\\ServerException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/ServerException.php',
109
- 'GuzzleHttp\\Exception\\StateException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/StateException.php',
110
- 'GuzzleHttp\\Exception\\TooManyRedirectsException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/TooManyRedirectsException.php',
111
- 'GuzzleHttp\\Exception\\TransferException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/TransferException.php',
112
- 'GuzzleHttp\\Exception\\XmlParseException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/XmlParseException.php',
113
- 'GuzzleHttp\\HasDataTrait' => $vendorDir . '/guzzlehttp/guzzle/src/HasDataTrait.php',
114
- 'GuzzleHttp\\Message\\AbstractMessage' => $vendorDir . '/guzzlehttp/guzzle/src/Message/AbstractMessage.php',
115
- 'GuzzleHttp\\Message\\AppliesHeadersInterface' => $vendorDir . '/guzzlehttp/guzzle/src/Message/AppliesHeadersInterface.php',
116
- 'GuzzleHttp\\Message\\FutureResponse' => $vendorDir . '/guzzlehttp/guzzle/src/Message/FutureResponse.php',
117
- 'GuzzleHttp\\Message\\MessageFactory' => $vendorDir . '/guzzlehttp/guzzle/src/Message/MessageFactory.php',
118
- 'GuzzleHttp\\Message\\MessageFactoryInterface' => $vendorDir . '/guzzlehttp/guzzle/src/Message/MessageFactoryInterface.php',
119
- 'GuzzleHttp\\Message\\MessageInterface' => $vendorDir . '/guzzlehttp/guzzle/src/Message/MessageInterface.php',
120
- 'GuzzleHttp\\Message\\MessageParser' => $vendorDir . '/guzzlehttp/guzzle/src/Message/MessageParser.php',
121
- 'GuzzleHttp\\Message\\Request' => $vendorDir . '/guzzlehttp/guzzle/src/Message/Request.php',
122
- 'GuzzleHttp\\Message\\RequestInterface' => $vendorDir . '/guzzlehttp/guzzle/src/Message/RequestInterface.php',
123
- 'GuzzleHttp\\Message\\Response' => $vendorDir . '/guzzlehttp/guzzle/src/Message/Response.php',
124
- 'GuzzleHttp\\Message\\ResponseInterface' => $vendorDir . '/guzzlehttp/guzzle/src/Message/ResponseInterface.php',
125
- 'GuzzleHttp\\Mimetypes' => $vendorDir . '/guzzlehttp/guzzle/src/Mimetypes.php',
126
- 'GuzzleHttp\\Pool' => $vendorDir . '/guzzlehttp/guzzle/src/Pool.php',
127
- 'GuzzleHttp\\Post\\MultipartBody' => $vendorDir . '/guzzlehttp/guzzle/src/Post/MultipartBody.php',
128
- 'GuzzleHttp\\Post\\PostBody' => $vendorDir . '/guzzlehttp/guzzle/src/Post/PostBody.php',
129
- 'GuzzleHttp\\Post\\PostBodyInterface' => $vendorDir . '/guzzlehttp/guzzle/src/Post/PostBodyInterface.php',
130
- 'GuzzleHttp\\Post\\PostFile' => $vendorDir . '/guzzlehttp/guzzle/src/Post/PostFile.php',
131
- 'GuzzleHttp\\Post\\PostFileInterface' => $vendorDir . '/guzzlehttp/guzzle/src/Post/PostFileInterface.php',
132
- 'GuzzleHttp\\Query' => $vendorDir . '/guzzlehttp/guzzle/src/Query.php',
133
- 'GuzzleHttp\\QueryParser' => $vendorDir . '/guzzlehttp/guzzle/src/QueryParser.php',
134
- 'GuzzleHttp\\RequestFsm' => $vendorDir . '/guzzlehttp/guzzle/src/RequestFsm.php',
135
- 'GuzzleHttp\\RingBridge' => $vendorDir . '/guzzlehttp/guzzle/src/RingBridge.php',
136
- 'GuzzleHttp\\Ring\\Client\\ClientUtils' => $vendorDir . '/guzzlehttp/ringphp/src/Client/ClientUtils.php',
137
- 'GuzzleHttp\\Ring\\Client\\CurlFactory' => $vendorDir . '/guzzlehttp/ringphp/src/Client/CurlFactory.php',
138
- 'GuzzleHttp\\Ring\\Client\\CurlHandler' => $vendorDir . '/guzzlehttp/ringphp/src/Client/CurlHandler.php',
139
- 'GuzzleHttp\\Ring\\Client\\CurlMultiHandler' => $vendorDir . '/guzzlehttp/ringphp/src/Client/CurlMultiHandler.php',
140
- 'GuzzleHttp\\Ring\\Client\\Middleware' => $vendorDir . '/guzzlehttp/ringphp/src/Client/Middleware.php',
141
- 'GuzzleHttp\\Ring\\Client\\MockHandler' => $vendorDir . '/guzzlehttp/ringphp/src/Client/MockHandler.php',
142
- 'GuzzleHttp\\Ring\\Client\\StreamHandler' => $vendorDir . '/guzzlehttp/ringphp/src/Client/StreamHandler.php',
143
- 'GuzzleHttp\\Ring\\Core' => $vendorDir . '/guzzlehttp/ringphp/src/Core.php',
144
- 'GuzzleHttp\\Ring\\Exception\\CancelledException' => $vendorDir . '/guzzlehttp/ringphp/src/Exception/CancelledException.php',
145
- 'GuzzleHttp\\Ring\\Exception\\CancelledFutureAccessException' => $vendorDir . '/guzzlehttp/ringphp/src/Exception/CancelledFutureAccessException.php',
146
- 'GuzzleHttp\\Ring\\Exception\\ConnectException' => $vendorDir . '/guzzlehttp/ringphp/src/Exception/ConnectException.php',
147
- 'GuzzleHttp\\Ring\\Exception\\RingException' => $vendorDir . '/guzzlehttp/ringphp/src/Exception/RingException.php',
148
- 'GuzzleHttp\\Ring\\Future\\BaseFutureTrait' => $vendorDir . '/guzzlehttp/ringphp/src/Future/BaseFutureTrait.php',
149
- 'GuzzleHttp\\Ring\\Future\\CompletedFutureArray' => $vendorDir . '/guzzlehttp/ringphp/src/Future/CompletedFutureArray.php',
150
- 'GuzzleHttp\\Ring\\Future\\CompletedFutureValue' => $vendorDir . '/guzzlehttp/ringphp/src/Future/CompletedFutureValue.php',
151
- 'GuzzleHttp\\Ring\\Future\\FutureArray' => $vendorDir . '/guzzlehttp/ringphp/src/Future/FutureArray.php',
152
- 'GuzzleHttp\\Ring\\Future\\FutureArrayInterface' => $vendorDir . '/guzzlehttp/ringphp/src/Future/FutureArrayInterface.php',
153
- 'GuzzleHttp\\Ring\\Future\\FutureInterface' => $vendorDir . '/guzzlehttp/ringphp/src/Future/FutureInterface.php',
154
- 'GuzzleHttp\\Ring\\Future\\FutureValue' => $vendorDir . '/guzzlehttp/ringphp/src/Future/FutureValue.php',
155
- 'GuzzleHttp\\Ring\\Future\\MagicFutureTrait' => $vendorDir . '/guzzlehttp/ringphp/src/Future/MagicFutureTrait.php',
156
- 'GuzzleHttp\\Stream\\AppendStream' => $vendorDir . '/guzzlehttp/streams/src/AppendStream.php',
157
- 'GuzzleHttp\\Stream\\AsyncReadStream' => $vendorDir . '/guzzlehttp/streams/src/AsyncReadStream.php',
158
- 'GuzzleHttp\\Stream\\BufferStream' => $vendorDir . '/guzzlehttp/streams/src/BufferStream.php',
159
- 'GuzzleHttp\\Stream\\CachingStream' => $vendorDir . '/guzzlehttp/streams/src/CachingStream.php',
160
- 'GuzzleHttp\\Stream\\DroppingStream' => $vendorDir . '/guzzlehttp/streams/src/DroppingStream.php',
161
- 'GuzzleHttp\\Stream\\Exception\\CannotAttachException' => $vendorDir . '/guzzlehttp/streams/src/Exception/CannotAttachException.php',
162
- 'GuzzleHttp\\Stream\\Exception\\SeekException' => $vendorDir . '/guzzlehttp/streams/src/Exception/SeekException.php',
163
- 'GuzzleHttp\\Stream\\FnStream' => $vendorDir . '/guzzlehttp/streams/src/FnStream.php',
164
- 'GuzzleHttp\\Stream\\GuzzleStreamWrapper' => $vendorDir . '/guzzlehttp/streams/src/GuzzleStreamWrapper.php',
165
- 'GuzzleHttp\\Stream\\InflateStream' => $vendorDir . '/guzzlehttp/streams/src/InflateStream.php',
166
- 'GuzzleHttp\\Stream\\LazyOpenStream' => $vendorDir . '/guzzlehttp/streams/src/LazyOpenStream.php',
167
- 'GuzzleHttp\\Stream\\LimitStream' => $vendorDir . '/guzzlehttp/streams/src/LimitStream.php',
168
- 'GuzzleHttp\\Stream\\MetadataStreamInterface' => $vendorDir . '/guzzlehttp/streams/src/MetadataStreamInterface.php',
169
- 'GuzzleHttp\\Stream\\NoSeekStream' => $vendorDir . '/guzzlehttp/streams/src/NoSeekStream.php',
170
- 'GuzzleHttp\\Stream\\NullStream' => $vendorDir . '/guzzlehttp/streams/src/NullStream.php',
171
- 'GuzzleHttp\\Stream\\PumpStream' => $vendorDir . '/guzzlehttp/streams/src/PumpStream.php',
172
- 'GuzzleHttp\\Stream\\Stream' => $vendorDir . '/guzzlehttp/streams/src/Stream.php',
173
- 'GuzzleHttp\\Stream\\StreamDecoratorTrait' => $vendorDir . '/guzzlehttp/streams/src/StreamDecoratorTrait.php',
174
- 'GuzzleHttp\\Stream\\StreamInterface' => $vendorDir . '/guzzlehttp/streams/src/StreamInterface.php',
175
- 'GuzzleHttp\\Stream\\Utils' => $vendorDir . '/guzzlehttp/streams/src/Utils.php',
176
- 'GuzzleHttp\\Subscriber\\Cookie' => $vendorDir . '/guzzlehttp/guzzle/src/Subscriber/Cookie.php',
177
- 'GuzzleHttp\\Subscriber\\History' => $vendorDir . '/guzzlehttp/guzzle/src/Subscriber/History.php',
178
- 'GuzzleHttp\\Subscriber\\HttpError' => $vendorDir . '/guzzlehttp/guzzle/src/Subscriber/HttpError.php',
179
- 'GuzzleHttp\\Subscriber\\Mock' => $vendorDir . '/guzzlehttp/guzzle/src/Subscriber/Mock.php',
180
- 'GuzzleHttp\\Subscriber\\Prepare' => $vendorDir . '/guzzlehttp/guzzle/src/Subscriber/Prepare.php',
181
- 'GuzzleHttp\\Subscriber\\Redirect' => $vendorDir . '/guzzlehttp/guzzle/src/Subscriber/Redirect.php',
182
- 'GuzzleHttp\\ToArrayInterface' => $vendorDir . '/guzzlehttp/guzzle/src/ToArrayInterface.php',
183
- 'GuzzleHttp\\Transaction' => $vendorDir . '/guzzlehttp/guzzle/src/Transaction.php',
184
- 'GuzzleHttp\\UriTemplate' => $vendorDir . '/guzzlehttp/guzzle/src/UriTemplate.php',
185
- 'GuzzleHttp\\Url' => $vendorDir . '/guzzlehttp/guzzle/src/Url.php',
186
- 'GuzzleHttp\\Utils' => $vendorDir . '/guzzlehttp/guzzle/src/Utils.php',
187
- 'Monolog\\ErrorHandler' => $vendorDir . '/monolog/monolog/src/Monolog/ErrorHandler.php',
188
- 'Monolog\\Formatter\\ChromePHPFormatter' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/ChromePHPFormatter.php',
189
- 'Monolog\\Formatter\\ElasticaFormatter' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/ElasticaFormatter.php',
190
- 'Monolog\\Formatter\\FlowdockFormatter' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/FlowdockFormatter.php',
191
- 'Monolog\\Formatter\\FluentdFormatter' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/FluentdFormatter.php',
192
- 'Monolog\\Formatter\\FormatterInterface' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/FormatterInterface.php',
193
- 'Monolog\\Formatter\\GelfMessageFormatter' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/GelfMessageFormatter.php',
194
- 'Monolog\\Formatter\\HtmlFormatter' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/HtmlFormatter.php',
195
- 'Monolog\\Formatter\\JsonFormatter' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/JsonFormatter.php',
196
- 'Monolog\\Formatter\\LineFormatter' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/LineFormatter.php',
197
- 'Monolog\\Formatter\\LogglyFormatter' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/LogglyFormatter.php',
198
- 'Monolog\\Formatter\\LogstashFormatter' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/LogstashFormatter.php',
199
- 'Monolog\\Formatter\\MongoDBFormatter' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/MongoDBFormatter.php',
200
- 'Monolog\\Formatter\\NormalizerFormatter' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/NormalizerFormatter.php',
201
- 'Monolog\\Formatter\\ScalarFormatter' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/ScalarFormatter.php',
202
- 'Monolog\\Formatter\\WildfireFormatter' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/WildfireFormatter.php',
203
- 'Monolog\\Handler\\AbstractHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/AbstractHandler.php',
204
- 'Monolog\\Handler\\AbstractProcessingHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php',
205
- 'Monolog\\Handler\\AbstractSyslogHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/AbstractSyslogHandler.php',
206
- 'Monolog\\Handler\\AmqpHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/AmqpHandler.php',
207
- 'Monolog\\Handler\\BrowserConsoleHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/BrowserConsoleHandler.php',
208
- 'Monolog\\Handler\\BufferHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/BufferHandler.php',
209
- 'Monolog\\Handler\\ChromePHPHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/ChromePHPHandler.php',
210
- 'Monolog\\Handler\\CouchDBHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/CouchDBHandler.php',
211
- 'Monolog\\Handler\\CubeHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/CubeHandler.php',
212
- 'Monolog\\Handler\\Curl\\Util' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/Curl/Util.php',
213
- 'Monolog\\Handler\\DeduplicationHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/DeduplicationHandler.php',
214
- 'Monolog\\Handler\\DoctrineCouchDBHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/DoctrineCouchDBHandler.php',
215
- 'Monolog\\Handler\\DynamoDbHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/DynamoDbHandler.php',
216
- 'Monolog\\Handler\\ElasticSearchHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/ElasticSearchHandler.php',
217
- 'Monolog\\Handler\\ErrorLogHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/ErrorLogHandler.php',
218
- 'Monolog\\Handler\\FilterHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/FilterHandler.php',
219
- 'Monolog\\Handler\\FingersCrossedHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/FingersCrossedHandler.php',
220
- 'Monolog\\Handler\\FingersCrossed\\ActivationStrategyInterface' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/FingersCrossed/ActivationStrategyInterface.php',
221
- 'Monolog\\Handler\\FingersCrossed\\ChannelLevelActivationStrategy' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/FingersCrossed/ChannelLevelActivationStrategy.php',
222
- 'Monolog\\Handler\\FingersCrossed\\ErrorLevelActivationStrategy' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/FingersCrossed/ErrorLevelActivationStrategy.php',
223
- 'Monolog\\Handler\\FirePHPHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/FirePHPHandler.php',
224
- 'Monolog\\Handler\\FleepHookHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/FleepHookHandler.php',
225
- 'Monolog\\Handler\\FlowdockHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/FlowdockHandler.php',
226
- 'Monolog\\Handler\\GelfHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/GelfHandler.php',
227
- 'Monolog\\Handler\\GroupHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/GroupHandler.php',
228
- 'Monolog\\Handler\\HandlerInterface' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/HandlerInterface.php',
229
- 'Monolog\\Handler\\HandlerWrapper' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/HandlerWrapper.php',
230
- 'Monolog\\Handler\\HipChatHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/HipChatHandler.php',
231
- 'Monolog\\Handler\\IFTTTHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/IFTTTHandler.php',
232
- 'Monolog\\Handler\\InsightOpsHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/InsightOpsHandler.php',
233
- 'Monolog\\Handler\\LogEntriesHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/LogEntriesHandler.php',
234
- 'Monolog\\Handler\\LogglyHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/LogglyHandler.php',
235
- 'Monolog\\Handler\\MailHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/MailHandler.php',
236
- 'Monolog\\Handler\\MandrillHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/MandrillHandler.php',
237
- 'Monolog\\Handler\\MissingExtensionException' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/MissingExtensionException.php',
238
- 'Monolog\\Handler\\MongoDBHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/MongoDBHandler.php',
239
- 'Monolog\\Handler\\NativeMailerHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/NativeMailerHandler.php',
240
- 'Monolog\\Handler\\NewRelicHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/NewRelicHandler.php',
241
- 'Monolog\\Handler\\NullHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/NullHandler.php',
242
- 'Monolog\\Handler\\PHPConsoleHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/PHPConsoleHandler.php',
243
- 'Monolog\\Handler\\PsrHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/PsrHandler.php',
244
- 'Monolog\\Handler\\PushoverHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/PushoverHandler.php',
245
- 'Monolog\\Handler\\RavenHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/RavenHandler.php',
246
- 'Monolog\\Handler\\RedisHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/RedisHandler.php',
247
- 'Monolog\\Handler\\RollbarHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/RollbarHandler.php',
248
- 'Monolog\\Handler\\RotatingFileHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/RotatingFileHandler.php',
249
- 'Monolog\\Handler\\SamplingHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/SamplingHandler.php',
250
- 'Monolog\\Handler\\SlackHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/SlackHandler.php',
251
- 'Monolog\\Handler\\SlackWebhookHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/SlackWebhookHandler.php',
252
- 'Monolog\\Handler\\Slack\\SlackRecord' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/Slack/SlackRecord.php',
253
- 'Monolog\\Handler\\SlackbotHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/SlackbotHandler.php',
254
- 'Monolog\\Handler\\SocketHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/SocketHandler.php',
255
- 'Monolog\\Handler\\StreamHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/StreamHandler.php',
256
- 'Monolog\\Handler\\SwiftMailerHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/SwiftMailerHandler.php',
257
- 'Monolog\\Handler\\SyslogHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/SyslogHandler.php',
258
- 'Monolog\\Handler\\SyslogUdpHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/SyslogUdpHandler.php',
259
- 'Monolog\\Handler\\SyslogUdp\\UdpSocket' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/SyslogUdp/UdpSocket.php',
260
- 'Monolog\\Handler\\TestHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/TestHandler.php',
261
- 'Monolog\\Handler\\WhatFailureGroupHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/WhatFailureGroupHandler.php',
262
- 'Monolog\\Handler\\ZendMonitorHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/ZendMonitorHandler.php',
263
- 'Monolog\\Logger' => $vendorDir . '/monolog/monolog/src/Monolog/Logger.php',
264
- 'Monolog\\Processor\\GitProcessor' => $vendorDir . '/monolog/monolog/src/Monolog/Processor/GitProcessor.php',
265
- 'Monolog\\Processor\\IntrospectionProcessor' => $vendorDir . '/monolog/monolog/src/Monolog/Processor/IntrospectionProcessor.php',
266
- 'Monolog\\Processor\\MemoryPeakUsageProcessor' => $vendorDir . '/monolog/monolog/src/Monolog/Processor/MemoryPeakUsageProcessor.php',
267
- 'Monolog\\Processor\\MemoryProcessor' => $vendorDir . '/monolog/monolog/src/Monolog/Processor/MemoryProcessor.php',
268
- 'Monolog\\Processor\\MemoryUsageProcessor' => $vendorDir . '/monolog/monolog/src/Monolog/Processor/MemoryUsageProcessor.php',
269
- 'Monolog\\Processor\\MercurialProcessor' => $vendorDir . '/monolog/monolog/src/Monolog/Processor/MercurialProcessor.php',
270
- 'Monolog\\Processor\\ProcessIdProcessor' => $vendorDir . '/monolog/monolog/src/Monolog/Processor/ProcessIdProcessor.php',
271
- 'Monolog\\Processor\\ProcessorInterface' => $vendorDir . '/monolog/monolog/src/Monolog/Processor/ProcessorInterface.php',
272
- 'Monolog\\Processor\\PsrLogMessageProcessor' => $vendorDir . '/monolog/monolog/src/Monolog/Processor/PsrLogMessageProcessor.php',
273
- 'Monolog\\Processor\\TagProcessor' => $vendorDir . '/monolog/monolog/src/Monolog/Processor/TagProcessor.php',
274
- 'Monolog\\Processor\\UidProcessor' => $vendorDir . '/monolog/monolog/src/Monolog/Processor/UidProcessor.php',
275
- 'Monolog\\Processor\\WebProcessor' => $vendorDir . '/monolog/monolog/src/Monolog/Processor/WebProcessor.php',
276
- 'Monolog\\Registry' => $vendorDir . '/monolog/monolog/src/Monolog/Registry.php',
277
- 'Monolog\\ResettableInterface' => $vendorDir . '/monolog/monolog/src/Monolog/ResettableInterface.php',
278
- 'Monolog\\SignalHandler' => $vendorDir . '/monolog/monolog/src/Monolog/SignalHandler.php',
279
- 'Monolog\\Utils' => $vendorDir . '/monolog/monolog/src/Monolog/Utils.php',
280
- 'Psr\\Log\\AbstractLogger' => $vendorDir . '/psr/log/Psr/Log/AbstractLogger.php',
281
- 'Psr\\Log\\InvalidArgumentException' => $vendorDir . '/psr/log/Psr/Log/InvalidArgumentException.php',
282
- 'Psr\\Log\\LogLevel' => $vendorDir . '/psr/log/Psr/Log/LogLevel.php',
283
- 'Psr\\Log\\LoggerAwareInterface' => $vendorDir . '/psr/log/Psr/Log/LoggerAwareInterface.php',
284
- 'Psr\\Log\\LoggerAwareTrait' => $vendorDir . '/psr/log/Psr/Log/LoggerAwareTrait.php',
285
- 'Psr\\Log\\LoggerInterface' => $vendorDir . '/psr/log/Psr/Log/LoggerInterface.php',
286
- 'Psr\\Log\\LoggerTrait' => $vendorDir . '/psr/log/Psr/Log/LoggerTrait.php',
287
- 'Psr\\Log\\NullLogger' => $vendorDir . '/psr/log/Psr/Log/NullLogger.php',
288
- 'Psr\\Log\\Test\\DummyTest' => $vendorDir . '/psr/log/Psr/Log/Test/LoggerInterfaceTest.php',
289
- 'Psr\\Log\\Test\\LoggerInterfaceTest' => $vendorDir . '/psr/log/Psr/Log/Test/LoggerInterfaceTest.php',
290
- 'Psr\\Log\\Test\\TestLogger' => $vendorDir . '/psr/log/Psr/Log/Test/TestLogger.php',
291
- 'ReCaptcha\\ReCaptcha' => $vendorDir . '/google/recaptcha/src/ReCaptcha/ReCaptcha.php',
292
- 'ReCaptcha\\RequestMethod' => $vendorDir . '/google/recaptcha/src/ReCaptcha/RequestMethod.php',
293
- 'ReCaptcha\\RequestMethod\\Curl' => $vendorDir . '/google/recaptcha/src/ReCaptcha/RequestMethod/Curl.php',
294
- 'ReCaptcha\\RequestMethod\\CurlPost' => $vendorDir . '/google/recaptcha/src/ReCaptcha/RequestMethod/CurlPost.php',
295
- 'ReCaptcha\\RequestMethod\\Post' => $vendorDir . '/google/recaptcha/src/ReCaptcha/RequestMethod/Post.php',
296
- 'ReCaptcha\\RequestMethod\\Socket' => $vendorDir . '/google/recaptcha/src/ReCaptcha/RequestMethod/Socket.php',
297
- 'ReCaptcha\\RequestMethod\\SocketPost' => $vendorDir . '/google/recaptcha/src/ReCaptcha/RequestMethod/SocketPost.php',
298
- 'ReCaptcha\\RequestParameters' => $vendorDir . '/google/recaptcha/src/ReCaptcha/RequestParameters.php',
299
- 'ReCaptcha\\Response' => $vendorDir . '/google/recaptcha/src/ReCaptcha/Response.php',
300
- 'React\\Promise\\CancellablePromiseInterface' => $vendorDir . '/react/promise/src/CancellablePromiseInterface.php',
301
- 'React\\Promise\\CancellationQueue' => $vendorDir . '/react/promise/src/CancellationQueue.php',
302
- 'React\\Promise\\Deferred' => $vendorDir . '/react/promise/src/Deferred.php',
303
- 'React\\Promise\\Exception\\LengthException' => $vendorDir . '/react/promise/src/Exception/LengthException.php',
304
- 'React\\Promise\\ExtendedPromiseInterface' => $vendorDir . '/react/promise/src/ExtendedPromiseInterface.php',
305
- 'React\\Promise\\FulfilledPromise' => $vendorDir . '/react/promise/src/FulfilledPromise.php',
306
- 'React\\Promise\\LazyPromise' => $vendorDir . '/react/promise/src/LazyPromise.php',
307
- 'React\\Promise\\Promise' => $vendorDir . '/react/promise/src/Promise.php',
308
- 'React\\Promise\\PromiseInterface' => $vendorDir . '/react/promise/src/PromiseInterface.php',
309
- 'React\\Promise\\PromisorInterface' => $vendorDir . '/react/promise/src/PromisorInterface.php',
310
- 'React\\Promise\\RejectedPromise' => $vendorDir . '/react/promise/src/RejectedPromise.php',
311
- 'React\\Promise\\UnhandledRejectionException' => $vendorDir . '/react/promise/src/UnhandledRejectionException.php',
312
  );
6
  $baseDir = dirname($vendorDir);
7
 
8
  return array(
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9
  );
vendor/composer/autoload_real.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
- class ComposerAutoloaderInitb96901d3471276ce8fb7d93b66af66b6
6
  {
7
  private static $loader;
8
 
@@ -22,39 +22,48 @@ class ComposerAutoloaderInitb96901d3471276ce8fb7d93b66af66b6
22
  return self::$loader;
23
  }
24
 
25
- spl_autoload_register(array('ComposerAutoloaderInitb96901d3471276ce8fb7d93b66af66b6', 'loadClassLoader'), true, true);
26
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
27
- spl_autoload_unregister(array('ComposerAutoloaderInitb96901d3471276ce8fb7d93b66af66b6', 'loadClassLoader'));
28
 
29
  $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
30
  if ($useStaticLoader) {
31
  require_once __DIR__ . '/autoload_static.php';
32
 
33
- call_user_func(\Composer\Autoload\ComposerStaticInitb96901d3471276ce8fb7d93b66af66b6::getInitializer($loader));
34
  } else {
 
 
 
 
 
 
 
 
 
 
35
  $classMap = require __DIR__ . '/autoload_classmap.php';
36
  if ($classMap) {
37
  $loader->addClassMap($classMap);
38
  }
39
  }
40
 
41
- $loader->setClassMapAuthoritative(true);
42
  $loader->register(true);
43
 
44
  if ($useStaticLoader) {
45
- $includeFiles = Composer\Autoload\ComposerStaticInitb96901d3471276ce8fb7d93b66af66b6::$files;
46
  } else {
47
  $includeFiles = require __DIR__ . '/autoload_files.php';
48
  }
49
  foreach ($includeFiles as $fileIdentifier => $file) {
50
- composerRequireb96901d3471276ce8fb7d93b66af66b6($fileIdentifier, $file);
51
  }
52
 
53
  return $loader;
54
  }
55
  }
56
 
57
- function composerRequireb96901d3471276ce8fb7d93b66af66b6($fileIdentifier, $file)
58
  {
59
  if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
60
  require $file;
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
+ class ComposerAutoloaderInitf2903cb4a158f118c169e3c417a0d958
6
  {
7
  private static $loader;
8
 
22
  return self::$loader;
23
  }
24
 
25
+ spl_autoload_register(array('ComposerAutoloaderInitf2903cb4a158f118c169e3c417a0d958', 'loadClassLoader'), true, true);
26
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
27
+ spl_autoload_unregister(array('ComposerAutoloaderInitf2903cb4a158f118c169e3c417a0d958', 'loadClassLoader'));
28
 
29
  $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
30
  if ($useStaticLoader) {
31
  require_once __DIR__ . '/autoload_static.php';
32
 
33
+ call_user_func(\Composer\Autoload\ComposerStaticInitf2903cb4a158f118c169e3c417a0d958::getInitializer($loader));
34
  } else {
35
+ $map = require __DIR__ . '/autoload_namespaces.php';
36
+ foreach ($map as $namespace => $path) {
37
+ $loader->set($namespace, $path);
38
+ }
39
+
40
+ $map = require __DIR__ . '/autoload_psr4.php';
41
+ foreach ($map as $namespace => $path) {
42
+ $loader->setPsr4($namespace, $path);
43
+ }
44
+
45
  $classMap = require __DIR__ . '/autoload_classmap.php';
46
  if ($classMap) {
47
  $loader->addClassMap($classMap);
48
  }
49
  }
50
 
 
51
  $loader->register(true);
52
 
53
  if ($useStaticLoader) {
54
+ $includeFiles = Composer\Autoload\ComposerStaticInitf2903cb4a158f118c169e3c417a0d958::$files;
55
  } else {
56
  $includeFiles = require __DIR__ . '/autoload_files.php';
57
  }
58
  foreach ($includeFiles as $fileIdentifier => $file) {
59
+ composerRequiref2903cb4a158f118c169e3c417a0d958($fileIdentifier, $file);
60
  }
61
 
62
  return $loader;
63
  }
64
  }
65
 
66
+ function composerRequiref2903cb4a158f118c169e3c417a0d958($fileIdentifier, $file)
67
  {
68
  if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
69
  require $file;
vendor/composer/autoload_static.php CHANGED
@@ -4,7 +4,7 @@
4
 
5
  namespace Composer\Autoload;
6
 
7
- class ComposerStaticInitb96901d3471276ce8fb7d93b66af66b6
8
  {
9
  public static $files = array (
10
  'ad155f8f1cf0d418fe49e248db8c661b' => __DIR__ . '/..' . '/react/promise/src/functions_include.php',
@@ -81,319 +81,12 @@ class ComposerStaticInitb96901d3471276ce8fb7d93b66af66b6
81
  ),
82
  );
83
 
84
- public static $classMap = array (
85
- 'Ctct\\Auth\\CtctDataStore' => __DIR__ . '/..' . '/constantcontact/constantcontact/src/Ctct/Auth/CtctDataStore.php',
86
- 'Ctct\\Auth\\CtctOAuth2' => __DIR__ . '/..' . '/constantcontact/constantcontact/src/Ctct/Auth/CtctOAuth2.php',
87
- 'Ctct\\Auth\\SessionDataStore' => __DIR__ . '/..' . '/constantcontact/constantcontact/src/Ctct/Auth/SessionDataStore.php',
88
- 'Ctct\\Components\\Account\\AccountInfo' => __DIR__ . '/..' . '/constantcontact/constantcontact/src/Ctct/Components/Account/AccountInfo.php',
89
- 'Ctct\\Components\\Account\\VerifiedEmailAddress' => __DIR__ . '/..' . '/constantcontact/constantcontact/src/Ctct/Components/Account/VerifiedEmailAddress.php',
90
- 'Ctct\\Components\\Activities\\Activity' => __DIR__ . '/..' . '/constantcontact/constantcontact/src/Ctct/Components/Activities/Activity.php',
91
- 'Ctct\\Components\\Activities\\ActivityError' => __DIR__ . '/..' . '/constantcontact/constantcontact/src/Ctct/Components/Activities/ActivityError.php',
92
- 'Ctct\\Components\\Activities\\AddContacts' => __DIR__ . '/..' . '/constantcontact/constantcontact/src/Ctct/Components/Activities/AddContacts.php',
93
- 'Ctct\\Components\\Activities\\AddContactsImportData' => __DIR__ . '/..' . '/constantcontact/constantcontact/src/Ctct/Components/Activities/AddContactsImportData.php',
94
- 'Ctct\\Components\\Activities\\ExportContacts' => __DIR__ . '/..' . '/constantcontact/constantcontact/src/Ctct/Components/Activities/ExportContacts.php',
95
- 'Ctct\\Components\\Component' => __DIR__ . '/..' . '/constantcontact/constantcontact/src/Ctct/Components/Component.php',
96
- 'Ctct\\Components\\Contacts\\Address' => __DIR__ . '/..' . '/constantcontact/constantcontact/src/Ctct/Components/Contacts/Address.php',
97
- 'Ctct\\Components\\Contacts\\Contact' => __DIR__ . '/..' . '/constantcontact/constantcontact/src/Ctct/Components/Contacts/Contact.php',
98
- 'Ctct\\Components\\Contacts\\ContactList' => __DIR__ . '/..' . '/constantcontact/constantcontact/src/Ctct/Components/Contacts/ContactList.php',
99
- 'Ctct\\Components\\Contacts\\CustomField' => __DIR__ . '/..' . '/constantcontact/constantcontact/src/Ctct/Components/Contacts/CustomField.php',
100
- 'Ctct\\Components\\Contacts\\EmailAddress' => __DIR__ . '/..' . '/constantcontact/constantcontact/src/Ctct/Components/Contacts/EmailAddress.php',
101
- 'Ctct\\Components\\Contacts\\Note' => __DIR__ . '/..' . '/constantcontact/constantcontact/src/Ctct/Components/Contacts/Note.php',
102
- 'Ctct\\Components\\EmailMarketing\\Campaign' => __DIR__ . '/..' . '/constantcontact/constantcontact/src/Ctct/Components/EmailMarketing/Campaign.php',
103
- 'Ctct\\Components\\EmailMarketing\\CampaignPreview' => __DIR__ . '/..' . '/constantcontact/constantcontact/src/Ctct/Components/EmailMarketing/CampaignPreview.php',
104
- 'Ctct\\Components\\EmailMarketing\\ClickThroughDetails' => __DIR__ . '/..' . '/constantcontact/constantcontact/src/Ctct/Components/EmailMarketing/ClickThroughDetails.php',
105
- 'Ctct\\Components\\EmailMarketing\\MessageFooter' => __DIR__ . '/..' . '/constantcontact/constantcontact/src/Ctct/Components/EmailMarketing/MessageFooter.php',
106
- 'Ctct\\Components\\EmailMarketing\\Schedule' => __DIR__ . '/..' . '/constantcontact/constantcontact/src/Ctct/Components/EmailMarketing/Schedule.php',
107
- 'Ctct\\Components\\EmailMarketing\\TestSend' => __DIR__ . '/..' . '/constantcontact/constantcontact/src/Ctct/Components/EmailMarketing/TestSend.php',
108
- 'Ctct\\Components\\Library\\File' => __DIR__ . '/..' . '/constantcontact/constantcontact/src/Ctct/Components/Library/File.php',
109
- 'Ctct\\Components\\Library\\FileUploadStatus' => __DIR__ . '/..' . '/constantcontact/constantcontact/src/Ctct/Components/Library/FileUploadStatus.php',
110
- 'Ctct\\Components\\Library\\Folder' => __DIR__ . '/..' . '/constantcontact/constantcontact/src/Ctct/Components/Library/Folder.php',
111
- 'Ctct\\Components\\Library\\Thumbnail' => __DIR__ . '/..' . '/constantcontact/constantcontact/src/Ctct/Components/Library/Thumbnail.php',
112
- 'Ctct\\Components\\ResultSet' => __DIR__ . '/..' . '/constantcontact/constantcontact/src/Ctct/Components/ResultSet.php',
113
- 'Ctct\\Components\\Tracking\\BounceActivity' => __DIR__ . '/..' . '/constantcontact/constantcontact/src/Ctct/Components/Tracking/BounceActivity.php',
114
- 'Ctct\\Components\\Tracking\\ClickActivity' => __DIR__ . '/..' . '/constantcontact/constantcontact/src/Ctct/Components/Tracking/ClickActivity.php',
115
- 'Ctct\\Components\\Tracking\\ForwardActivity' => __DIR__ . '/..' . '/constantcontact/constantcontact/src/Ctct/Components/Tracking/ForwardActivity.php',
116
- 'Ctct\\Components\\Tracking\\OpenActivity' => __DIR__ . '/..' . '/constantcontact/constantcontact/src/Ctct/Components/Tracking/OpenActivity.php',
117
- 'Ctct\\Components\\Tracking\\SendActivity' => __DIR__ . '/..' . '/constantcontact/constantcontact/src/Ctct/Components/Tracking/SendActivity.php',
118
- 'Ctct\\Components\\Tracking\\TrackingActivity' => __DIR__ . '/..' . '/constantcontact/constantcontact/src/Ctct/Components/Tracking/TrackingActivity.php',
119
- 'Ctct\\Components\\Tracking\\TrackingSummary' => __DIR__ . '/..' . '/constantcontact/constantcontact/src/Ctct/Components/Tracking/TrackingSummary.php',
120
- 'Ctct\\Components\\Tracking\\UnsubscribeActivity' => __DIR__ . '/..' . '/constantcontact/constantcontact/src/Ctct/Components/Tracking/UnsubscribeActivity.php',
121
- 'Ctct\\ConstantContact' => __DIR__ . '/..' . '/constantcontact/constantcontact/src/Ctct/ConstantContact.php',
122
- 'Ctct\\Exceptions\\CtctException' => __DIR__ . '/..' . '/constantcontact/constantcontact/src/Ctct/Exceptions/CtctException.php',
123
- 'Ctct\\Exceptions\\IllegalArgumentException' => __DIR__ . '/..' . '/constantcontact/constantcontact/src/Ctct/Exceptions/IllegalArgumentException.php',
124
- 'Ctct\\Exceptions\\OAuth2Exception' => __DIR__ . '/..' . '/constantcontact/constantcontact/src/Ctct/Exceptions/OAuth2Exception.php',
125
- 'Ctct\\Services\\AccountService' => __DIR__ . '/..' . '/constantcontact/constantcontact/src/Ctct/Services/AccountService.php',
126
- 'Ctct\\Services\\ActivityService' => __DIR__ . '/..' . '/constantcontact/constantcontact/src/Ctct/Services/ActivityService.php',
127
- 'Ctct\\Services\\BaseService' => __DIR__ . '/..' . '/constantcontact/constantcontact/src/Ctct/Services/BaseService.php',
128
- 'Ctct\\Services\\CampaignScheduleService' => __DIR__ . '/..' . '/constantcontact/constantcontact/src/Ctct/Services/CampaignScheduleService.php',
129
- 'Ctct\\Services\\CampaignTrackingService' => __DIR__ . '/..' . '/constantcontact/constantcontact/src/Ctct/Services/CampaignTrackingService.php',
130
- 'Ctct\\Services\\ContactService' => __DIR__ . '/..' . '/constantcontact/constantcontact/src/Ctct/Services/ContactService.php',
131
- 'Ctct\\Services\\ContactTrackingService' => __DIR__ . '/..' . '/constantcontact/constantcontact/src/Ctct/Services/ContactTrackingService.php',
132
- 'Ctct\\Services\\EmailMarketingService' => __DIR__ . '/..' . '/constantcontact/constantcontact/src/Ctct/Services/EmailMarketingService.php',
133
- 'Ctct\\Services\\LibraryService' => __DIR__ . '/..' . '/constantcontact/constantcontact/src/Ctct/Services/LibraryService.php',
134
- 'Ctct\\Services\\ListService' => __DIR__ . '/..' . '/constantcontact/constantcontact/src/Ctct/Services/ListService.php',
135
- 'Ctct\\SplClassLoader' => __DIR__ . '/..' . '/constantcontact/constantcontact/src/Ctct/SplClassLoader.php',
136
- 'Ctct\\Util\\Config' => __DIR__ . '/..' . '/constantcontact/constantcontact/src/Ctct/Util/Config.php',
137
- 'Ctct\\WebHooks\\CTCTWebhookUtil' => __DIR__ . '/..' . '/constantcontact/constantcontact/src/Ctct/WebHooks/CTCTWebhookUtil.php',
138
- 'Defuse\\Crypto\\Core' => __DIR__ . '/..' . '/defuse/php-encryption/src/Core.php',
139
- 'Defuse\\Crypto\\Crypto' => __DIR__ . '/..' . '/defuse/php-encryption/src/Crypto.php',
140
- 'Defuse\\Crypto\\DerivedKeys' => __DIR__ . '/..' . '/defuse/php-encryption/src/DerivedKeys.php',
141
- 'Defuse\\Crypto\\Encoding' => __DIR__ . '/..' . '/defuse/php-encryption/src/Encoding.php',
142
- 'Defuse\\Crypto\\Exception\\BadFormatException' => __DIR__ . '/..' . '/defuse/php-encryption/src/Exception/BadFormatException.php',
143
- 'Defuse\\Crypto\\Exception\\CryptoException' => __DIR__ . '/..' . '/defuse/php-encryption/src/Exception/CryptoException.php',
144
- 'Defuse\\Crypto\\Exception\\EnvironmentIsBrokenException' => __DIR__ . '/..' . '/defuse/php-encryption/src/Exception/EnvironmentIsBrokenException.php',
145
- 'Defuse\\Crypto\\Exception\\IOException' => __DIR__ . '/..' . '/defuse/php-encryption/src/Exception/IOException.php',
146
- 'Defuse\\Crypto\\Exception\\WrongKeyOrModifiedCiphertextException' => __DIR__ . '/..' . '/defuse/php-encryption/src/Exception/WrongKeyOrModifiedCiphertextException.php',
147
- 'Defuse\\Crypto\\File' => __DIR__ . '/..' . '/defuse/php-encryption/src/File.php',
148
- 'Defuse\\Crypto\\Key' => __DIR__ . '/..' . '/defuse/php-encryption/src/Key.php',
149
- 'Defuse\\Crypto\\KeyOrPassword' => __DIR__ . '/..' . '/defuse/php-encryption/src/KeyOrPassword.php',
150
- 'Defuse\\Crypto\\KeyProtectedByPassword' => __DIR__ . '/..' . '/defuse/php-encryption/src/KeyProtectedByPassword.php',
151
- 'Defuse\\Crypto\\RuntimeTests' => __DIR__ . '/..' . '/defuse/php-encryption/src/RuntimeTests.php',
152
- 'GuzzleHttp\\BatchResults' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/BatchResults.php',
153
- 'GuzzleHttp\\Client' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Client.php',
154
- 'GuzzleHttp\\ClientInterface' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/ClientInterface.php',
155
- 'GuzzleHttp\\Collection' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Collection.php',
156
- 'GuzzleHttp\\Cookie\\CookieJar' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Cookie/CookieJar.php',
157
- 'GuzzleHttp\\Cookie\\CookieJarInterface' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php',
158
- 'GuzzleHttp\\Cookie\\FileCookieJar' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Cookie/FileCookieJar.php',
159
- 'GuzzleHttp\\Cookie\\SessionCookieJar' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php',
160
- 'GuzzleHttp\\Cookie\\SetCookie' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Cookie/SetCookie.php',
161
- 'GuzzleHttp\\Event\\AbstractEvent' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Event/AbstractEvent.php',
162
- 'GuzzleHttp\\Event\\AbstractRequestEvent' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Event/AbstractRequestEvent.php',
163
- 'GuzzleHttp\\Event\\AbstractRetryableEvent' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Event/AbstractRetryableEvent.php',
164
- 'GuzzleHttp\\Event\\AbstractTransferEvent' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Event/AbstractTransferEvent.php',
165
- 'GuzzleHttp\\Event\\BeforeEvent' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Event/BeforeEvent.php',
166
- 'GuzzleHttp\\Event\\CompleteEvent' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Event/CompleteEvent.php',
167
- 'GuzzleHttp\\Event\\Emitter' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Event/Emitter.php',
168
- 'GuzzleHttp\\Event\\EmitterInterface' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Event/EmitterInterface.php',
169
- 'GuzzleHttp\\Event\\EndEvent' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Event/EndEvent.php',
170
- 'GuzzleHttp\\Event\\ErrorEvent' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Event/ErrorEvent.php',
171
- 'GuzzleHttp\\Event\\EventInterface' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Event/EventInterface.php',
172
- 'GuzzleHttp\\Event\\HasEmitterInterface' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Event/HasEmitterInterface.php',
173
- 'GuzzleHttp\\Event\\HasEmitterTrait' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Event/HasEmitterTrait.php',
174
- 'GuzzleHttp\\Event\\ListenerAttacherTrait' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Event/ListenerAttacherTrait.php',
175
- 'GuzzleHttp\\Event\\ProgressEvent' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Event/ProgressEvent.php',
176
- 'GuzzleHttp\\Event\\RequestEvents' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Event/RequestEvents.php',
177
- 'GuzzleHttp\\Event\\SubscriberInterface' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Event/SubscriberInterface.php',
178
- 'GuzzleHttp\\Exception\\BadResponseException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/BadResponseException.php',
179
- 'GuzzleHttp\\Exception\\ClientException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/ClientException.php',
180
- 'GuzzleHttp\\Exception\\ConnectException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/ConnectException.php',
181
- 'GuzzleHttp\\Exception\\CouldNotRewindStreamException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/CouldNotRewindStreamException.php',
182
- 'GuzzleHttp\\Exception\\ParseException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/ParseException.php',
183
- 'GuzzleHttp\\Exception\\RequestException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/RequestException.php',
184
- 'GuzzleHttp\\Exception\\ServerException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/ServerException.php',
185
- 'GuzzleHttp\\Exception\\StateException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/StateException.php',
186
- 'GuzzleHttp\\Exception\\TooManyRedirectsException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/TooManyRedirectsException.php',
187
- 'GuzzleHttp\\Exception\\TransferException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/TransferException.php',
188
- 'GuzzleHttp\\Exception\\XmlParseException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/XmlParseException.php',
189
- 'GuzzleHttp\\HasDataTrait' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/HasDataTrait.php',
190
- 'GuzzleHttp\\Message\\AbstractMessage' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Message/AbstractMessage.php',
191
- 'GuzzleHttp\\Message\\AppliesHeadersInterface' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Message/AppliesHeadersInterface.php',
192
- 'GuzzleHttp\\Message\\FutureResponse' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Message/FutureResponse.php',
193
- 'GuzzleHttp\\Message\\MessageFactory' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Message/MessageFactory.php',
194
- 'GuzzleHttp\\Message\\MessageFactoryInterface' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Message/MessageFactoryInterface.php',
195
- 'GuzzleHttp\\Message\\MessageInterface' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Message/MessageInterface.php',
196
- 'GuzzleHttp\\Message\\MessageParser' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Message/MessageParser.php',
197
- 'GuzzleHttp\\Message\\Request' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Message/Request.php',
198
- 'GuzzleHttp\\Message\\RequestInterface' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Message/RequestInterface.php',
199
- 'GuzzleHttp\\Message\\Response' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Message/Response.php',
200
- 'GuzzleHttp\\Message\\ResponseInterface' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Message/ResponseInterface.php',
201
- 'GuzzleHttp\\Mimetypes' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Mimetypes.php',
202
- 'GuzzleHttp\\Pool' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Pool.php',
203
- 'GuzzleHttp\\Post\\MultipartBody' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Post/MultipartBody.php',
204
- 'GuzzleHttp\\Post\\PostBody' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Post/PostBody.php',
205
- 'GuzzleHttp\\Post\\PostBodyInterface' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Post/PostBodyInterface.php',
206
- 'GuzzleHttp\\Post\\PostFile' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Post/PostFile.php',
207
- 'GuzzleHttp\\Post\\PostFileInterface' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Post/PostFileInterface.php',
208
- 'GuzzleHttp\\Query' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Query.php',
209
- 'GuzzleHttp\\QueryParser' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/QueryParser.php',
210
- 'GuzzleHttp\\RequestFsm' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/RequestFsm.php',
211
- 'GuzzleHttp\\RingBridge' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/RingBridge.php',
212
- 'GuzzleHttp\\Ring\\Client\\ClientUtils' => __DIR__ . '/..' . '/guzzlehttp/ringphp/src/Client/ClientUtils.php',
213
- 'GuzzleHttp\\Ring\\Client\\CurlFactory' => __DIR__ . '/..' . '/guzzlehttp/ringphp/src/Client/CurlFactory.php',
214
- 'GuzzleHttp\\Ring\\Client\\CurlHandler' => __DIR__ . '/..' . '/guzzlehttp/ringphp/src/Client/CurlHandler.php',
215
- 'GuzzleHttp\\Ring\\Client\\CurlMultiHandler' => __DIR__ . '/..' . '/guzzlehttp/ringphp/src/Client/CurlMultiHandler.php',
216
- 'GuzzleHttp\\Ring\\Client\\Middleware' => __DIR__ . '/..' . '/guzzlehttp/ringphp/src/Client/Middleware.php',
217
- 'GuzzleHttp\\Ring\\Client\\MockHandler' => __DIR__ . '/..' . '/guzzlehttp/ringphp/src/Client/MockHandler.php',
218
- 'GuzzleHttp\\Ring\\Client\\StreamHandler' => __DIR__ . '/..' . '/guzzlehttp/ringphp/src/Client/StreamHandler.php',
219
- 'GuzzleHttp\\Ring\\Core' => __DIR__ . '/..' . '/guzzlehttp/ringphp/src/Core.php',
220
- 'GuzzleHttp\\Ring\\Exception\\CancelledException' => __DIR__ . '/..' . '/guzzlehttp/ringphp/src/Exception/CancelledException.php',
221
- 'GuzzleHttp\\Ring\\Exception\\CancelledFutureAccessException' => __DIR__ . '/..' . '/guzzlehttp/ringphp/src/Exception/CancelledFutureAccessException.php',
222
- 'GuzzleHttp\\Ring\\Exception\\ConnectException' => __DIR__ . '/..' . '/guzzlehttp/ringphp/src/Exception/ConnectException.php',
223
- 'GuzzleHttp\\Ring\\Exception\\RingException' => __DIR__ . '/..' . '/guzzlehttp/ringphp/src/Exception/RingException.php',
224
- 'GuzzleHttp\\Ring\\Future\\BaseFutureTrait' => __DIR__ . '/..' . '/guzzlehttp/ringphp/src/Future/BaseFutureTrait.php',
225
- 'GuzzleHttp\\Ring\\Future\\CompletedFutureArray' => __DIR__ . '/..' . '/guzzlehttp/ringphp/src/Future/CompletedFutureArray.php',
226
- 'GuzzleHttp\\Ring\\Future\\CompletedFutureValue' => __DIR__ . '/..' . '/guzzlehttp/ringphp/src/Future/CompletedFutureValue.php',
227
- 'GuzzleHttp\\Ring\\Future\\FutureArray' => __DIR__ . '/..' . '/guzzlehttp/ringphp/src/Future/FutureArray.php',
228
- 'GuzzleHttp\\Ring\\Future\\FutureArrayInterface' => __DIR__ . '/..' . '/guzzlehttp/ringphp/src/Future/FutureArrayInterface.php',
229
- 'GuzzleHttp\\Ring\\Future\\FutureInterface' => __DIR__ . '/..' . '/guzzlehttp/ringphp/src/Future/FutureInterface.php',
230
- 'GuzzleHttp\\Ring\\Future\\FutureValue' => __DIR__ . '/..' . '/guzzlehttp/ringphp/src/Future/FutureValue.php',
231
- 'GuzzleHttp\\Ring\\Future\\MagicFutureTrait' => __DIR__ . '/..' . '/guzzlehttp/ringphp/src/Future/MagicFutureTrait.php',
232
- 'GuzzleHttp\\Stream\\AppendStream' => __DIR__ . '/..' . '/guzzlehttp/streams/src/AppendStream.php',
233
- 'GuzzleHttp\\Stream\\AsyncReadStream' => __DIR__ . '/..' . '/guzzlehttp/streams/src/AsyncReadStream.php',
234
- 'GuzzleHttp\\Stream\\BufferStream' => __DIR__ . '/..' . '/guzzlehttp/streams/src/BufferStream.php',
235
- 'GuzzleHttp\\Stream\\CachingStream' => __DIR__ . '/..' . '/guzzlehttp/streams/src/CachingStream.php',
236
- 'GuzzleHttp\\Stream\\DroppingStream' => __DIR__ . '/..' . '/guzzlehttp/streams/src/DroppingStream.php',
237
- 'GuzzleHttp\\Stream\\Exception\\CannotAttachException' => __DIR__ . '/..' . '/guzzlehttp/streams/src/Exception/CannotAttachException.php',
238
- 'GuzzleHttp\\Stream\\Exception\\SeekException' => __DIR__ . '/..' . '/guzzlehttp/streams/src/Exception/SeekException.php',
239
- 'GuzzleHttp\\Stream\\FnStream' => __DIR__ . '/..' . '/guzzlehttp/streams/src/FnStream.php',
240
- 'GuzzleHttp\\Stream\\GuzzleStreamWrapper' => __DIR__ . '/..' . '/guzzlehttp/streams/src/GuzzleStreamWrapper.php',
241
- 'GuzzleHttp\\Stream\\InflateStream' => __DIR__ . '/..' . '/guzzlehttp/streams/src/InflateStream.php',
242
- 'GuzzleHttp\\Stream\\LazyOpenStream' => __DIR__ . '/..' . '/guzzlehttp/streams/src/LazyOpenStream.php',
243
- 'GuzzleHttp\\Stream\\LimitStream' => __DIR__ . '/..' . '/guzzlehttp/streams/src/LimitStream.php',
244
- 'GuzzleHttp\\Stream\\MetadataStreamInterface' => __DIR__ . '/..' . '/guzzlehttp/streams/src/MetadataStreamInterface.php',
245
- 'GuzzleHttp\\Stream\\NoSeekStream' => __DIR__ . '/..' . '/guzzlehttp/streams/src/NoSeekStream.php',
246
- 'GuzzleHttp\\Stream\\NullStream' => __DIR__ . '/..' . '/guzzlehttp/streams/src/NullStream.php',
247
- 'GuzzleHttp\\Stream\\PumpStream' => __DIR__ . '/..' . '/guzzlehttp/streams/src/PumpStream.php',
248
- 'GuzzleHttp\\Stream\\Stream' => __DIR__ . '/..' . '/guzzlehttp/streams/src/Stream.php',
249
- 'GuzzleHttp\\Stream\\StreamDecoratorTrait' => __DIR__ . '/..' . '/guzzlehttp/streams/src/StreamDecoratorTrait.php',
250
- 'GuzzleHttp\\Stream\\StreamInterface' => __DIR__ . '/..' . '/guzzlehttp/streams/src/StreamInterface.php',
251
- 'GuzzleHttp\\Stream\\Utils' => __DIR__ . '/..' . '/guzzlehttp/streams/src/Utils.php',
252
- 'GuzzleHttp\\Subscriber\\Cookie' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Subscriber/Cookie.php',
253
- 'GuzzleHttp\\Subscriber\\History' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Subscriber/History.php',
254
- 'GuzzleHttp\\Subscriber\\HttpError' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Subscriber/HttpError.php',
255
- 'GuzzleHttp\\Subscriber\\Mock' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Subscriber/Mock.php',
256
- 'GuzzleHttp\\Subscriber\\Prepare' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Subscriber/Prepare.php',
257
- 'GuzzleHttp\\Subscriber\\Redirect' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Subscriber/Redirect.php',
258
- 'GuzzleHttp\\ToArrayInterface' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/ToArrayInterface.php',
259
- 'GuzzleHttp\\Transaction' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Transaction.php',
260
- 'GuzzleHttp\\UriTemplate' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/UriTemplate.php',
261
- 'GuzzleHttp\\Url' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Url.php',
262
- 'GuzzleHttp\\Utils' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Utils.php',
263
- 'Monolog\\ErrorHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/ErrorHandler.php',
264
- 'Monolog\\Formatter\\ChromePHPFormatter' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Formatter/ChromePHPFormatter.php',
265
- 'Monolog\\Formatter\\ElasticaFormatter' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Formatter/ElasticaFormatter.php',
266
- 'Monolog\\Formatter\\FlowdockFormatter' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Formatter/FlowdockFormatter.php',
267
- 'Monolog\\Formatter\\FluentdFormatter' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Formatter/FluentdFormatter.php',
268
- 'Monolog\\Formatter\\FormatterInterface' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Formatter/FormatterInterface.php',
269
- 'Monolog\\Formatter\\GelfMessageFormatter' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Formatter/GelfMessageFormatter.php',
270
- 'Monolog\\Formatter\\HtmlFormatter' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Formatter/HtmlFormatter.php',
271
- 'Monolog\\Formatter\\JsonFormatter' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Formatter/JsonFormatter.php',
272
- 'Monolog\\Formatter\\LineFormatter' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Formatter/LineFormatter.php',
273
- 'Monolog\\Formatter\\LogglyFormatter' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Formatter/LogglyFormatter.php',
274
- 'Monolog\\Formatter\\LogstashFormatter' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Formatter/LogstashFormatter.php',
275
- 'Monolog\\Formatter\\MongoDBFormatter' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Formatter/MongoDBFormatter.php',
276
- 'Monolog\\Formatter\\NormalizerFormatter' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Formatter/NormalizerFormatter.php',
277
- 'Monolog\\Formatter\\ScalarFormatter' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Formatter/ScalarFormatter.php',
278
- 'Monolog\\Formatter\\WildfireFormatter' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Formatter/WildfireFormatter.php',
279
- 'Monolog\\Handler\\AbstractHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/AbstractHandler.php',
280
- 'Monolog\\Handler\\AbstractProcessingHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php',
281
- 'Monolog\\Handler\\AbstractSyslogHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/AbstractSyslogHandler.php',
282
- 'Monolog\\Handler\\AmqpHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/AmqpHandler.php',
283
- 'Monolog\\Handler\\BrowserConsoleHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/BrowserConsoleHandler.php',
284
- 'Monolog\\Handler\\BufferHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/BufferHandler.php',
285
- 'Monolog\\Handler\\ChromePHPHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/ChromePHPHandler.php',
286
- 'Monolog\\Handler\\CouchDBHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/CouchDBHandler.php',
287
- 'Monolog\\Handler\\CubeHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/CubeHandler.php',
288
- 'Monolog\\Handler\\Curl\\Util' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/Curl/Util.php',
289
- 'Monolog\\Handler\\DeduplicationHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/DeduplicationHandler.php',
290
- 'Monolog\\Handler\\DoctrineCouchDBHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/DoctrineCouchDBHandler.php',
291
- 'Monolog\\Handler\\DynamoDbHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/DynamoDbHandler.php',
292
- 'Monolog\\Handler\\ElasticSearchHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/ElasticSearchHandler.php',
293
- 'Monolog\\Handler\\ErrorLogHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/ErrorLogHandler.php',
294
- 'Monolog\\Handler\\FilterHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/FilterHandler.php',
295
- 'Monolog\\Handler\\FingersCrossedHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/FingersCrossedHandler.php',
296
- 'Monolog\\Handler\\FingersCrossed\\ActivationStrategyInterface' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/FingersCrossed/ActivationStrategyInterface.php',
297
- 'Monolog\\Handler\\FingersCrossed\\ChannelLevelActivationStrategy' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/FingersCrossed/ChannelLevelActivationStrategy.php',
298
- 'Monolog\\Handler\\FingersCrossed\\ErrorLevelActivationStrategy' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/FingersCrossed/ErrorLevelActivationStrategy.php',
299
- 'Monolog\\Handler\\FirePHPHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/FirePHPHandler.php',
300
- 'Monolog\\Handler\\FleepHookHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/FleepHookHandler.php',
301
- 'Monolog\\Handler\\FlowdockHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/FlowdockHandler.php',
302
- 'Monolog\\Handler\\GelfHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/GelfHandler.php',
303
- 'Monolog\\Handler\\GroupHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/GroupHandler.php',
304
- 'Monolog\\Handler\\HandlerInterface' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/HandlerInterface.php',
305
- 'Monolog\\Handler\\HandlerWrapper' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/HandlerWrapper.php',
306
- 'Monolog\\Handler\\HipChatHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/HipChatHandler.php',
307
- 'Monolog\\Handler\\IFTTTHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/IFTTTHandler.php',
308
- 'Monolog\\Handler\\InsightOpsHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/InsightOpsHandler.php',
309
- 'Monolog\\Handler\\LogEntriesHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/LogEntriesHandler.php',
310
- 'Monolog\\Handler\\LogglyHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/LogglyHandler.php',
311
- 'Monolog\\Handler\\MailHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/MailHandler.php',
312
- 'Monolog\\Handler\\MandrillHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/MandrillHandler.php',
313
- 'Monolog\\Handler\\MissingExtensionException' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/MissingExtensionException.php',
314
- 'Monolog\\Handler\\MongoDBHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/MongoDBHandler.php',
315
- 'Monolog\\Handler\\NativeMailerHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/NativeMailerHandler.php',
316
- 'Monolog\\Handler\\NewRelicHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/NewRelicHandler.php',
317
- 'Monolog\\Handler\\NullHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/NullHandler.php',
318
- 'Monolog\\Handler\\PHPConsoleHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/PHPConsoleHandler.php',
319
- 'Monolog\\Handler\\PsrHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/PsrHandler.php',
320
- 'Monolog\\Handler\\PushoverHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/PushoverHandler.php',
321
- 'Monolog\\Handler\\RavenHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/RavenHandler.php',
322
- 'Monolog\\Handler\\RedisHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/RedisHandler.php',
323
- 'Monolog\\Handler\\RollbarHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/RollbarHandler.php',
324
- 'Monolog\\Handler\\RotatingFileHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/RotatingFileHandler.php',
325
- 'Monolog\\Handler\\SamplingHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/SamplingHandler.php',
326
- 'Monolog\\Handler\\SlackHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/SlackHandler.php',
327
- 'Monolog\\Handler\\SlackWebhookHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/SlackWebhookHandler.php',
328
- 'Monolog\\Handler\\Slack\\SlackRecord' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/Slack/SlackRecord.php',
329
- 'Monolog\\Handler\\SlackbotHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/SlackbotHandler.php',
330
- 'Monolog\\Handler\\SocketHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/SocketHandler.php',
331
- 'Monolog\\Handler\\StreamHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/StreamHandler.php',
332
- 'Monolog\\Handler\\SwiftMailerHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/SwiftMailerHandler.php',
333
- 'Monolog\\Handler\\SyslogHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/SyslogHandler.php',
334
- 'Monolog\\Handler\\SyslogUdpHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/SyslogUdpHandler.php',
335
- 'Monolog\\Handler\\SyslogUdp\\UdpSocket' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/SyslogUdp/UdpSocket.php',
336
- 'Monolog\\Handler\\TestHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/TestHandler.php',
337
- 'Monolog\\Handler\\WhatFailureGroupHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/WhatFailureGroupHandler.php',
338
- 'Monolog\\Handler\\ZendMonitorHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/ZendMonitorHandler.php',
339
- 'Monolog\\Logger' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Logger.php',
340
- 'Monolog\\Processor\\GitProcessor' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Processor/GitProcessor.php',
341
- 'Monolog\\Processor\\IntrospectionProcessor' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Processor/IntrospectionProcessor.php',
342
- 'Monolog\\Processor\\MemoryPeakUsageProcessor' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Processor/MemoryPeakUsageProcessor.php',
343
- 'Monolog\\Processor\\MemoryProcessor' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Processor/MemoryProcessor.php',
344
- 'Monolog\\Processor\\MemoryUsageProcessor' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Processor/MemoryUsageProcessor.php',
345
- 'Monolog\\Processor\\MercurialProcessor' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Processor/MercurialProcessor.php',
346
- 'Monolog\\Processor\\ProcessIdProcessor' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Processor/ProcessIdProcessor.php',
347
- 'Monolog\\Processor\\ProcessorInterface' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Processor/ProcessorInterface.php',
348
- 'Monolog\\Processor\\PsrLogMessageProcessor' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Processor/PsrLogMessageProcessor.php',
349
- 'Monolog\\Processor\\TagProcessor' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Processor/TagProcessor.php',
350
- 'Monolog\\Processor\\UidProcessor' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Processor/UidProcessor.php',
351
- 'Monolog\\Processor\\WebProcessor' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Processor/WebProcessor.php',
352
- 'Monolog\\Registry' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Registry.php',
353
- 'Monolog\\ResettableInterface' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/ResettableInterface.php',
354
- 'Monolog\\SignalHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/SignalHandler.php',
355
- 'Monolog\\Utils' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Utils.php',
356
- 'Psr\\Log\\AbstractLogger' => __DIR__ . '/..' . '/psr/log/Psr/Log/AbstractLogger.php',
357
- 'Psr\\Log\\InvalidArgumentException' => __DIR__ . '/..' . '/psr/log/Psr/Log/InvalidArgumentException.php',
358
- 'Psr\\Log\\LogLevel' => __DIR__ . '/..' . '/psr/log/Psr/Log/LogLevel.php',
359
- 'Psr\\Log\\LoggerAwareInterface' => __DIR__ . '/..' . '/psr/log/Psr/Log/LoggerAwareInterface.php',
360
- 'Psr\\Log\\LoggerAwareTrait' => __DIR__ . '/..' . '/psr/log/Psr/Log/LoggerAwareTrait.php',
361
- 'Psr\\Log\\LoggerInterface' => __DIR__ . '/..' . '/psr/log/Psr/Log/LoggerInterface.php',
362
- 'Psr\\Log\\LoggerTrait' => __DIR__ . '/..' . '/psr/log/Psr/Log/LoggerTrait.php',
363
- 'Psr\\Log\\NullLogger' => __DIR__ . '/..' . '/psr/log/Psr/Log/NullLogger.php',
364
- 'Psr\\Log\\Test\\DummyTest' => __DIR__ . '/..' . '/psr/log/Psr/Log/Test/LoggerInterfaceTest.php',
365
- 'Psr\\Log\\Test\\LoggerInterfaceTest' => __DIR__ . '/..' . '/psr/log/Psr/Log/Test/LoggerInterfaceTest.php',
366
- 'Psr\\Log\\Test\\TestLogger' => __DIR__ . '/..' . '/psr/log/Psr/Log/Test/TestLogger.php',
367
- 'ReCaptcha\\ReCaptcha' => __DIR__ . '/..' . '/google/recaptcha/src/ReCaptcha/ReCaptcha.php',
368
- 'ReCaptcha\\RequestMethod' => __DIR__ . '/..' . '/google/recaptcha/src/ReCaptcha/RequestMethod.php',
369
- 'ReCaptcha\\RequestMethod\\Curl' => __DIR__ . '/..' . '/google/recaptcha/src/ReCaptcha/RequestMethod/Curl.php',
370
- 'ReCaptcha\\RequestMethod\\CurlPost' => __DIR__ . '/..' . '/google/recaptcha/src/ReCaptcha/RequestMethod/CurlPost.php',
371
- 'ReCaptcha\\RequestMethod\\Post' => __DIR__ . '/..' . '/google/recaptcha/src/ReCaptcha/RequestMethod/Post.php',
372
- 'ReCaptcha\\RequestMethod\\Socket' => __DIR__ . '/..' . '/google/recaptcha/src/ReCaptcha/RequestMethod/Socket.php',
373
- 'ReCaptcha\\RequestMethod\\SocketPost' => __DIR__ . '/..' . '/google/recaptcha/src/ReCaptcha/RequestMethod/SocketPost.php',
374
- 'ReCaptcha\\RequestParameters' => __DIR__ . '/..' . '/google/recaptcha/src/ReCaptcha/RequestParameters.php',
375
- 'ReCaptcha\\Response' => __DIR__ . '/..' . '/google/recaptcha/src/ReCaptcha/Response.php',
376
- 'React\\Promise\\CancellablePromiseInterface' => __DIR__ . '/..' . '/react/promise/src/CancellablePromiseInterface.php',
377
- 'React\\Promise\\CancellationQueue' => __DIR__ . '/..' . '/react/promise/src/CancellationQueue.php',
378
- 'React\\Promise\\Deferred' => __DIR__ . '/..' . '/react/promise/src/Deferred.php',
379
- 'React\\Promise\\Exception\\LengthException' => __DIR__ . '/..' . '/react/promise/src/Exception/LengthException.php',
380
- 'React\\Promise\\ExtendedPromiseInterface' => __DIR__ . '/..' . '/react/promise/src/ExtendedPromiseInterface.php',
381
- 'React\\Promise\\FulfilledPromise' => __DIR__ . '/..' . '/react/promise/src/FulfilledPromise.php',
382
- 'React\\Promise\\LazyPromise' => __DIR__ . '/..' . '/react/promise/src/LazyPromise.php',
383
- 'React\\Promise\\Promise' => __DIR__ . '/..' . '/react/promise/src/Promise.php',
384
- 'React\\Promise\\PromiseInterface' => __DIR__ . '/..' . '/react/promise/src/PromiseInterface.php',
385
- 'React\\Promise\\PromisorInterface' => __DIR__ . '/..' . '/react/promise/src/PromisorInterface.php',
386
- 'React\\Promise\\RejectedPromise' => __DIR__ . '/..' . '/react/promise/src/RejectedPromise.php',
387
- 'React\\Promise\\UnhandledRejectionException' => __DIR__ . '/..' . '/react/promise/src/UnhandledRejectionException.php',
388
- );
389
-
390
  public static function getInitializer(ClassLoader $loader)
391
  {
392
  return \Closure::bind(function () use ($loader) {
393
- $loader->prefixLengthsPsr4 = ComposerStaticInitb96901d3471276ce8fb7d93b66af66b6::$prefixLengthsPsr4;
394
- $loader->prefixDirsPsr4 = ComposerStaticInitb96901d3471276ce8fb7d93b66af66b6::$prefixDirsPsr4;
395
- $loader->prefixesPsr0 = ComposerStaticInitb96901d3471276ce8fb7d93b66af66b6::$prefixesPsr0;
396
- $loader->classMap = ComposerStaticInitb96901d3471276ce8fb7d93b66af66b6::$classMap;
397
 
398
  }, null, ClassLoader::class);
399
  }
4
 
5
  namespace Composer\Autoload;
6
 
7
+ class ComposerStaticInitf2903cb4a158f118c169e3c417a0d958
8
  {
9
  public static $files = array (
10
  'ad155f8f1cf0d418fe49e248db8c661b' => __DIR__ . '/..' . '/react/promise/src/functions_include.php',
81
  ),
82
  );
83
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
84
  public static function getInitializer(ClassLoader $loader)
85
  {
86
  return \Closure::bind(function () use ($loader) {
87
+ $loader->prefixLengthsPsr4 = ComposerStaticInitf2903cb4a158f118c169e3c417a0d958::$prefixLengthsPsr4;
88
+ $loader->prefixDirsPsr4 = ComposerStaticInitf2903cb4a158f118c169e3c417a0d958::$prefixDirsPsr4;
89
+ $loader->prefixesPsr0 = ComposerStaticInitf2903cb4a158f118c169e3c417a0d958::$prefixesPsr0;
 
90
 
91
  }, null, ClassLoader::class);
92
  }
vendor/constantcontact/constantcontact/.travis.yml DELETED
@@ -1,20 +0,0 @@
1
- language: php
2
-
3
- php:
4
- - 5.4
5
- - 5.5
6
- - 5.6
7
- - hhvm
8
-
9
- env:
10
- - GUZZLE_VERSION="5.1.0"
11
-
12
- before_script: composer install
13
-
14
- install:
15
- - composer require guzzlehttp/guzzle:${GUZZLE_VERSION}
16
-
17
- matrix:
18
- allow_failures:
19
- - php: hhvm
20
- fast_finish: true
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/constantcontact/constantcontact/composer.json DELETED
@@ -1,28 +0,0 @@
1
- {
2
- "name": "constantcontact/constantcontact",
3
- "type": "library",
4
- "description": "Constant Contact PHP SDK for v2",
5
- "keywords": ["constantcontact", "ctct", "email marketing", "constant contact"],
6
- "homepage": "http://developer.constantcontact.com",
7
- "license": "MIT",
8
- "require": {
9
- "php": ">=5.4.0",
10
- "ext-curl": "*",
11
- "guzzlehttp/guzzle": "^5.1.0"
12
- },
13
- "require-dev": {
14
- "phpunit/phpunit": "4.4.1"
15
- },
16
- "authors": [
17
- {
18
- "name": "Constant Contact Web Services",
19
- "email": "webservices@constantcontact.com",
20
- "homepage": "http://developer.constantcontact.com"
21
- }
22
- ],
23
- "autoload": {
24
- "psr-0": {
25
- "Ctct": "src"
26
- }
27
- }
28
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/defuse/php-encryption/composer.json DELETED
@@ -1,35 +0,0 @@
1
- {
2
- "name": "defuse/php-encryption",
3
- "description": "Secure PHP Encryption Library",
4
- "license": "MIT",
5
- "keywords": ["security", "encryption", "AES", "openssl", "cipher", "cryptography", "symmetric key cryptography", "crypto", "encrypt", "authenticated encryption"],
6
- "authors": [
7
- {
8
- "name": "Taylor Hornby",
9
- "email": "taylor@defuse.ca",
10
- "homepage": "https://defuse.ca/"
11
- },
12
- {
13
- "name": "Scott Arciszewski",
14
- "email": "info@paragonie.com",
15
- "homepage": "https://paragonie.com"
16
- }
17
- ],
18
- "autoload": {
19
- "psr-4": {
20
- "Defuse\\Crypto\\": "src"
21
- }
22
- },
23
- "require": {
24
- "paragonie/random_compat": ">= 2",
25
- "ext-openssl": "*",
26
- "php": ">=5.4.0"
27
- },
28
- "require-dev": {
29
- "phpunit/phpunit": "^4|^5",
30
- "nikic/php-parser": "^2.0|^3.0|^4.0"
31
- },
32
- "bin": [
33
- "bin/generate-defuse-key"
34
- ]
35
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/google/recaptcha/.travis.yml DELETED
@@ -1,33 +0,0 @@
1
- dist: trusty
2
-
3
- language: php
4
-
5
- sudo: false
6
-
7
- php:
8
- - '5.5'
9
- - '5.6'
10
- - '7.0'
11
- - '7.1'
12
- - '7.2'
13
- - '7.3'
14
-
15
- before_script:
16
- - composer install
17
- - phpenv version-name | grep ^5.[34] && echo "extension=apc.so" >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini ; true
18
- - phpenv version-name | grep ^5.[34] && echo "apc.enable_cli=1" >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini ; true
19
-
20
- script:
21
- - mkdir -p build/logs
22
- - composer run-script lint
23
- - composer run-script test
24
-
25
- after_success:
26
- - travis_retry php vendor/bin/php-coveralls
27
-
28
- cache:
29
- directories:
30
- - "$HOME/.composer/cache/files"
31
-
32
- git:
33
- depth: 5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/google/recaptcha/composer.json DELETED
@@ -1,39 +0,0 @@
1
- {
2
- "name": "google/recaptcha",
3
- "description": "Client library for reCAPTCHA, a free service that protects websites from spam and abuse.",
4
- "type": "library",
5
- "keywords": ["recaptcha", "captcha", "spam", "abuse"],
6
- "homepage": "https://www.google.com/recaptcha/",
7
- "license": "BSD-3-Clause",
8
- "support": {
9
- "forum": "https://groups.google.com/forum/#!forum/recaptcha",
10
- "source": "https://github.com/google/recaptcha"
11
- },
12
- "require": {
13
- "php": ">=5.5"
14
- },
15
- "require-dev": {
16
- "phpunit/phpunit": "^4.8.36|^5.7.27|^6.59|^7.5.11",
17
- "friendsofphp/php-cs-fixer": "^2.2.20|^2.15",
18
- "php-coveralls/php-coveralls": "^2.1"
19
- },
20
- "autoload": {
21
- "psr-4": {
22
- "ReCaptcha\\": "src/ReCaptcha"
23
- }
24
- },
25
- "extra": {
26
- "branch-alias": {
27
- "dev-master": "1.2.x-dev"
28
- }
29
- },
30
- "scripts": {
31
- "lint": "vendor/bin/php-cs-fixer -vvv fix --using-cache=no --dry-run .",
32
- "lint-fix": "vendor/bin/php-cs-fixer -vvv fix --using-cache=no .",
33
- "test": "vendor/bin/phpunit --colors=always",
34
- "serve-examples": "@php -S localhost:8080 -t examples"
35
- },
36
- "config": {
37
- "process-timeout": 0
38
- }
39
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/google/recaptcha/phpunit.xml.dist DELETED
@@ -1,20 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3
- xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/4.4/phpunit.xsd"
4
- colors="true"
5
- verbose="true"
6
- bootstrap="src/autoload.php">
7
- <testsuites>
8
- <testsuite name="reCAPTCHA Test Suite">
9
- <directory>tests/ReCaptcha/</directory>
10
- </testsuite>
11
- </testsuites>
12
- <filter>
13
- <whitelist>
14
- <directory suffix=".php">src/ReCaptcha/</directory>
15
- </whitelist>
16
- </filter>
17
- <logging>
18
- <log type="coverage-clover" target="build/logs/clover.xml"/>
19
- </logging>
20
- </phpunit>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/guzzlehttp/guzzle/.travis.yml DELETED
@@ -1,52 +0,0 @@
1
- language: php
2
-
3
- php:
4
- - 5.4
5
- - 5.5
6
- - 5.6
7
- - 7.0
8
- - 7.1
9
- - 7.2
10
- - hhvm
11
- - nightly
12
-
13
- env:
14
- global:
15
- - TEST_COMMAND="composer test"
16
-
17
- before_script:
18
- - curl --version
19
- - pear config-set php_ini ~/.phpenv/versions/`php -r 'echo phpversion();'`/etc/php.ini || echo 'Error modifying PEAR'
20
- - pecl install uri_template || echo 'Error installing uri_template'
21
- # To be removed when this issue will be resolved: https://github.com/composer/composer/issues/5355
22
- - if [[ "$COMPOSER_FLAGS" == *"--prefer-lowest"* ]]; then travis_retry composer update --prefer-dist --no-interaction --prefer-stable --quiet; fi
23
- - travis_retry composer update ${COMPOSER_FLAGS} --prefer-dist --no-interaction
24
- - ~/.nvm/nvm.sh install v0.6.14
25
- - ~/.nvm/nvm.sh run v0.6.14
26
-
27
- script: $TEST_COMMAND
28
-
29
- matrix:
30
- allow_failures:
31
- - php: hhvm
32
- - php: nightly
33
- fast_finish: true
34
- include:
35
- - php: 5.4
36
- env: COMPOSER_FLAGS="--prefer-stable --prefer-lowest" COVERAGE=true TEST_COMMAND="composer test-ci"
37
-
38
- before_deploy:
39
- - make package
40
-
41
- deploy:
42
- provider: releases
43
- api_key:
44
- secure: UpypqlYgsU68QT/x40YzhHXvzWjFwCNo9d+G8KAdm7U9+blFfcWhV1aMdzugvPMl6woXgvJj7qHq5tAL4v6oswCORhpSBfLgOQVFaica5LiHsvWlAedOhxGmnJqMTwuepjBCxXhs3+I8Kof1n4oUL9gKytXjOVCX/f7XU1HiinU=
45
- file:
46
- - build/artifacts/guzzle.phar
47
- - build/artifacts/guzzle.zip
48
- on:
49
- repo: guzzle/guzzle
50
- tags: true
51
- all_branches: true
52
- php: 5.4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/guzzlehttp/guzzle/CHANGELOG.md DELETED
@@ -1,1071 +0,0 @@
1
- # CHANGELOG
2
-
3
- ## 5.3.3 - 2018-07-31
4
-
5
- * Fix bug parsing 0 epoch expiry times
6
- * Fix PHP 7.3 compatibility
7
-
8
- ## 5.3.2 - 2018-01-15
9
-
10
- * Improve tests
11
- * Fix react promise dependency
12
- * Fix PHP 7 compatibility
13
-
14
- ## 5.3.1 - 2016-07-18
15
-
16
- * Address HTTP_PROXY security vulnerability, CVE-2016-5385:
17
- https://httpoxy.org/
18
- * Event name fix: https://github.com/guzzle/guzzle/commit/fcae91ff31de41e312fe113ec3acbcda31b2622e
19
- * Response header case sensitivity fix: https://github.com/guzzle/guzzle/commit/043eeadf20ee40ddc6712faee4d3957a91f2b041
20
-
21
- ## 5.3.0 - 2015-05-19
22
-
23
- * Mock now supports `save_to`
24
- * Marked `AbstractRequestEvent::getTransaction()` as public.
25
- * Fixed a bug in which multiple headers using different casing would overwrite
26
- previous headers in the associative array.
27
- * Added `Utils::getDefaultHandler()`
28
- * Marked `GuzzleHttp\Client::getDefaultUserAgent` as deprecated.
29
- * URL scheme is now always lowercased.
30
-
31
- ## 5.2.0 - 2015-01-27
32
-
33
- * Added `AppliesHeadersInterface` to make applying headers to a request based
34
- on the body more generic and not specific to `PostBodyInterface`.
35
- * Reduced the number of stack frames needed to send requests.
36
- * Nested futures are now resolved in the client rather than the RequestFsm
37
- * Finishing state transitions is now handled in the RequestFsm rather than the
38
- RingBridge.
39
- * Added a guard in the Pool class to not use recursion for request retries.
40
-
41
- ## 5.1.0 - 2014-12-19
42
-
43
- * Pool class no longer uses recursion when a request is intercepted.
44
- * The size of a Pool can now be dynamically adjusted using a callback.
45
- See https://github.com/guzzle/guzzle/pull/943.
46
- * Setting a request option to `null` when creating a request with a client will
47
- ensure that the option is not set. This allows you to overwrite default
48
- request options on a per-request basis.
49
- See https://github.com/guzzle/guzzle/pull/937.
50
- * Added the ability to limit which protocols are allowed for redirects by
51
- specifying a `protocols` array in the `allow_redirects` request option.
52
- * Nested futures due to retries are now resolved when waiting for synchronous
53
- responses. See https://github.com/guzzle/guzzle/pull/947.
54
- * `"0"` is now an allowed URI path. See
55
- https://github.com/guzzle/guzzle/pull/935.
56
- * `Query` no longer typehints on the `$query` argument in the constructor,
57
- allowing for strings and arrays.
58
- * Exceptions thrown in the `end` event are now correctly wrapped with Guzzle
59
- specific exceptions if necessary.
60
-
61
- ## 5.0.3 - 2014-11-03
62
-
63
- This change updates query strings so that they are treated as un-encoded values
64
- by default where the value represents an un-encoded value to send over the
65
- wire. A Query object then encodes the value before sending over the wire. This
66
- means that even value query string values (e.g., ":") are url encoded. This
67
- makes the Query class match PHP's http_build_query function. However, if you
68
- want to send requests over the wire using valid query string characters that do
69
- not need to be encoded, then you can provide a string to Url::setQuery() and
70
- pass true as the second argument to specify that the query string is a raw
71
- string that should not be parsed or encoded (unless a call to getQuery() is
72
- subsequently made, forcing the query-string to be converted into a Query
73
- object).
74
-
75
- ## 5.0.2 - 2014-10-30
76
-
77
- * Added a trailing `\r\n` to multipart/form-data payloads. See
78
- https://github.com/guzzle/guzzle/pull/871
79
- * Added a `GuzzleHttp\Pool::send()` convenience method to match the docs.
80
- * Status codes are now returned as integers. See
81
- https://github.com/guzzle/guzzle/issues/881
82
- * No longer overwriting an existing `application/x-www-form-urlencoded` header
83
- when sending POST requests, allowing for customized headers. See
84
- https://github.com/guzzle/guzzle/issues/877
85
- * Improved path URL serialization.
86
-
87
- * No longer double percent-encoding characters in the path or query string if
88
- they are already encoded.
89
- * Now properly encoding the supplied path to a URL object, instead of only
90
- encoding ' ' and '?'.
91
- * Note: This has been changed in 5.0.3 to now encode query string values by
92
- default unless the `rawString` argument is provided when setting the query
93
- string on a URL: Now allowing many more characters to be present in the
94
- query string without being percent encoded. See http://tools.ietf.org/html/rfc3986#appendix-A
95
-
96
- ## 5.0.1 - 2014-10-16
97
-
98
- Bugfix release.
99
-
100
- * Fixed an issue where connection errors still returned response object in
101
- error and end events event though the response is unusable. This has been
102
- corrected so that a response is not returned in the `getResponse` method of
103
- these events if the response did not complete. https://github.com/guzzle/guzzle/issues/867
104
- * Fixed an issue where transfer statistics were not being populated in the
105
- RingBridge. https://github.com/guzzle/guzzle/issues/866
106
-
107
- ## 5.0.0 - 2014-10-12
108
-
109
- Adding support for non-blocking responses and some minor API cleanup.
110
-
111
- ### New Features
112
-
113
- * Added support for non-blocking responses based on `guzzlehttp/guzzle-ring`.
114
- * Added a public API for creating a default HTTP adapter.
115
- * Updated the redirect plugin to be non-blocking so that redirects are sent
116
- concurrently. Other plugins like this can now be updated to be non-blocking.
117
- * Added a "progress" event so that you can get upload and download progress
118
- events.
119
- * Added `GuzzleHttp\Pool` which implements FutureInterface and transfers
120
- requests concurrently using a capped pool size as efficiently as possible.
121
- * Added `hasListeners()` to EmitterInterface.
122
- * Removed `GuzzleHttp\ClientInterface::sendAll` and marked
123
- `GuzzleHttp\Client::sendAll` as deprecated (it's still there, just not the
124
- recommended way).
125
-
126
- ### Breaking changes
127
-
128
- The breaking changes in this release are relatively minor. The biggest thing to
129
- look out for is that request and response objects no longer implement fluent
130
- interfaces.
131
-
132
- * Removed the fluent interfaces (i.e., `return $this`) from requests,
133
- responses, `GuzzleHttp\Collection`, `GuzzleHttp\Url`,
134
- `GuzzleHttp\Query`, `GuzzleHttp\Post\PostBody`, and
135
- `GuzzleHttp\Cookie\SetCookie`. This blog post provides a good outline of
136
- why I did this: http://ocramius.github.io/blog/fluent-interfaces-are-evil/.
137
- This also makes the Guzzle message interfaces compatible with the current
138
- PSR-7 message proposal.
139
- * Removed "functions.php", so that Guzzle is truly PSR-4 compliant. Except
140
- for the HTTP request functions from function.php, these functions are now
141
- implemented in `GuzzleHttp\Utils` using camelCase. `GuzzleHttp\json_decode`
142
- moved to `GuzzleHttp\Utils::jsonDecode`. `GuzzleHttp\get_path` moved to
143
- `GuzzleHttp\Utils::getPath`. `GuzzleHttp\set_path` moved to
144
- `GuzzleHttp\Utils::setPath`. `GuzzleHttp\batch` should now be
145
- `GuzzleHttp\Pool::batch`, which returns an `objectStorage`. Using functions.php
146
- caused problems for many users: they aren't PSR-4 compliant, require an
147
- explicit include, and needed an if-guard to ensure that the functions are not
148
- declared multiple times.
149
- * Rewrote adapter layer.
150
- * Removing all classes from `GuzzleHttp\Adapter`, these are now
151
- implemented as callables that are stored in `GuzzleHttp\Ring\Client`.
152
- * Removed the concept of "parallel adapters". Sending requests serially or
153
- concurrently is now handled using a single adapter.
154
- * Moved `GuzzleHttp\Adapter\Transaction` to `GuzzleHttp\Transaction`. The
155
- Transaction object now exposes the request, response, and client as public
156
- properties. The getters and setters have been removed.
157
- * Removed the "headers" event. This event was only useful for changing the
158
- body a response once the headers of the response were known. You can implement
159
- a similar behavior in a number of ways. One example might be to use a
160
- FnStream that has access to the transaction being sent. For example, when the
161
- first byte is written, you could check if the response headers match your
162
- expectations, and if so, change the actual stream body that is being
163
- written to.
164
- * Removed the `asArray` parameter from
165
- `GuzzleHttp\Message\MessageInterface::getHeader`. If you want to get a header
166
- value as an array, then use the newly added `getHeaderAsArray()` method of
167
- `MessageInterface`. This change makes the Guzzle interfaces compatible with
168
- the PSR-7 interfaces.
169
- * `GuzzleHttp\Message\MessageFactory` no longer allows subclasses to add
170
- custom request options using double-dispatch (this was an implementation
171
- detail). Instead, you should now provide an associative array to the
172
- constructor which is a mapping of the request option name mapping to a
173
- function that applies the option value to a request.
174
- * Removed the concept of "throwImmediately" from exceptions and error events.
175
- This control mechanism was used to stop a transfer of concurrent requests
176
- from completing. This can now be handled by throwing the exception or by
177
- cancelling a pool of requests or each outstanding future request individually.
178
- * Updated to "GuzzleHttp\Streams" 3.0.
179
- * `GuzzleHttp\Stream\StreamInterface::getContents()` no longer accepts a
180
- `maxLen` parameter. This update makes the Guzzle streams project
181
- compatible with the current PSR-7 proposal.
182
- * `GuzzleHttp\Stream\Stream::__construct`,
183
- `GuzzleHttp\Stream\Stream::factory`, and
184
- `GuzzleHttp\Stream\Utils::create` no longer accept a size in the second
185
- argument. They now accept an associative array of options, including the
186
- "size" key and "metadata" key which can be used to provide custom metadata.
187
-
188
- ## 4.2.2 - 2014-09-08
189
-
190
- * Fixed a memory leak in the CurlAdapter when reusing cURL handles.
191
- * No longer using `request_fulluri` in stream adapter proxies.
192
- * Relative redirects are now based on the last response, not the first response.
193
-
194
- ## 4.2.1 - 2014-08-19
195
-
196
- * Ensuring that the StreamAdapter does not always add a Content-Type header
197
- * Adding automated github releases with a phar and zip
198
-
199
- ## 4.2.0 - 2014-08-17
200
-
201
- * Now merging in default options using a case-insensitive comparison.
202
- Closes https://github.com/guzzle/guzzle/issues/767
203
- * Added the ability to automatically decode `Content-Encoding` response bodies
204
- using the `decode_content` request option. This is set to `true` by default
205
- to decode the response body if it comes over the wire with a
206
- `Content-Encoding`. Set this value to `false` to disable decoding the
207
- response content, and pass a string to provide a request `Accept-Encoding`
208
- header and turn on automatic response decoding. This feature now allows you
209
- to pass an `Accept-Encoding` header in the headers of a request but still
210
- disable automatic response decoding.
211
- Closes https://github.com/guzzle/guzzle/issues/764
212
- * Added the ability to throw an exception immediately when transferring
213
- requests in parallel. Closes https://github.com/guzzle/guzzle/issues/760
214
- * Updating guzzlehttp/streams dependency to ~2.1
215
- * No longer utilizing the now deprecated namespaced methods from the stream
216
- package.
217
-
218
- ## 4.1.8 - 2014-08-14
219
-
220
- * Fixed an issue in the CurlFactory that caused setting the `stream=false`
221
- request option to throw an exception.
222
- See: https://github.com/guzzle/guzzle/issues/769
223
- * TransactionIterator now calls rewind on the inner iterator.
224
- See: https://github.com/guzzle/guzzle/pull/765
225
- * You can now set the `Content-Type` header to `multipart/form-data`
226
- when creating POST requests to force multipart bodies.
227
- See https://github.com/guzzle/guzzle/issues/768
228
-
229
- ## 4.1.7 - 2014-08-07
230
-
231
- * Fixed an error in the HistoryPlugin that caused the same request and response
232
- to be logged multiple times when an HTTP protocol error occurs.
233
- * Ensuring that cURL does not add a default Content-Type when no Content-Type
234
- has been supplied by the user. This prevents the adapter layer from modifying
235
- the request that is sent over the wire after any listeners may have already
236
- put the request in a desired state (e.g., signed the request).
237
- * Throwing an exception when you attempt to send requests that have the
238
- "stream" set to true in parallel using the MultiAdapter.
239
- * Only calling curl_multi_select when there are active cURL handles. This was
240
- previously changed and caused performance problems on some systems due to PHP
241
- always selecting until the maximum select timeout.
242
- * Fixed a bug where multipart/form-data POST fields were not correctly
243
- aggregated (e.g., values with "&").
244
-
245
- ## 4.1.6 - 2014-08-03
246
-
247
- * Added helper methods to make it easier to represent messages as strings,
248
- including getting the start line and getting headers as a string.
249
-
250
- ## 4.1.5 - 2014-08-02
251
-
252
- * Automatically retrying cURL "Connection died, retrying a fresh connect"
253
- errors when possible.
254
- * cURL implementation cleanup
255
- * Allowing multiple event subscriber listeners to be registered per event by
256
- passing an array of arrays of listener configuration.
257
-
258
- ## 4.1.4 - 2014-07-22
259
-
260
- * Fixed a bug that caused multi-part POST requests with more than one field to
261
- serialize incorrectly.
262
- * Paths can now be set to "0"
263
- * `ResponseInterface::xml` now accepts a `libxml_options` option and added a
264
- missing default argument that was required when parsing XML response bodies.
265
- * A `save_to` stream is now created lazily, which means that files are not
266
- created on disk unless a request succeeds.
267
-
268
- ## 4.1.3 - 2014-07-15
269
-
270
- * Various fixes to multipart/form-data POST uploads
271
- * Wrapping function.php in an if-statement to ensure Guzzle can be used
272
- globally and in a Composer install
273
- * Fixed an issue with generating and merging in events to an event array
274
- * POST headers are only applied before sending a request to allow you to change
275
- the query aggregator used before uploading
276
- * Added much more robust query string parsing
277
- * Fixed various parsing and normalization issues with URLs
278
- * Fixing an issue where multi-valued headers were not being utilized correctly
279
- in the StreamAdapter
280
-
281
- ## 4.1.2 - 2014-06-18
282
-
283
- * Added support for sending payloads with GET requests
284
-
285
- ## 4.1.1 - 2014-06-08
286
-
287
- * Fixed an issue related to using custom message factory options in subclasses
288
- * Fixed an issue with nested form fields in a multi-part POST
289
- * Fixed an issue with using the `json` request option for POST requests
290
- * Added `ToArrayInterface` to `GuzzleHttp\Cookie\CookieJar`
291
-
292
- ## 4.1.0 - 2014-05-27
293
-
294
- * Added a `json` request option to easily serialize JSON payloads.
295
- * Added a `GuzzleHttp\json_decode()` wrapper to safely parse JSON.
296
- * Added `setPort()` and `getPort()` to `GuzzleHttp\Message\RequestInterface`.
297
- * Added the ability to provide an emitter to a client in the client constructor.
298
- * Added the ability to persist a cookie session using $_SESSION.
299
- * Added a trait that can be used to add event listeners to an iterator.
300
- * Removed request method constants from RequestInterface.
301
- * Fixed warning when invalid request start-lines are received.
302
- * Updated MessageFactory to work with custom request option methods.
303
- * Updated cacert bundle to latest build.
304
-
305
- 4.0.2 (2014-04-16)
306
- ------------------
307
-
308
- * Proxy requests using the StreamAdapter now properly use request_fulluri (#632)
309
- * Added the ability to set scalars as POST fields (#628)
310
-
311
- ## 4.0.1 - 2014-04-04
312
-
313
- * The HTTP status code of a response is now set as the exception code of
314
- RequestException objects.
315
- * 303 redirects will now correctly switch from POST to GET requests.
316
- * The default parallel adapter of a client now correctly uses the MultiAdapter.
317
- * HasDataTrait now initializes the internal data array as an empty array so
318
- that the toArray() method always returns an array.
319
-
320
- ## 4.0.0 - 2014-03-29
321
-
322
- * For more information on the 4.0 transition, see:
323
- http://mtdowling.com/blog/2014/03/15/guzzle-4-rc/
324
- * For information on changes and upgrading, see:
325
- https://github.com/guzzle/guzzle/blob/master/UPGRADING.md#3x-to-40
326
- * Added `GuzzleHttp\batch()` as a convenience function for sending requests in
327
- parallel without needing to write asynchronous code.
328
- * Restructured how events are added to `GuzzleHttp\ClientInterface::sendAll()`.
329
- You can now pass a callable or an array of associative arrays where each
330
- associative array contains the "fn", "priority", and "once" keys.
331
-
332
- ## 4.0.0.rc-2 - 2014-03-25
333
-
334
- * Removed `getConfig()` and `setConfig()` from clients to avoid confusion
335
- around whether things like base_url, message_factory, etc. should be able to
336
- be retrieved or modified.
337
- * Added `getDefaultOption()` and `setDefaultOption()` to ClientInterface
338
- * functions.php functions were renamed using snake_case to match PHP idioms
339
- * Added support for `HTTP_PROXY`, `HTTPS_PROXY`, and
340
- `GUZZLE_CURL_SELECT_TIMEOUT` environment variables
341
- * Added the ability to specify custom `sendAll()` event priorities
342
- * Added the ability to specify custom stream context options to the stream
343
- adapter.
344
- * Added a functions.php function for `get_path()` and `set_path()`
345
- * CurlAdapter and MultiAdapter now use a callable to generate curl resources
346
- * MockAdapter now properly reads a body and emits a `headers` event
347
- * Updated Url class to check if a scheme and host are set before adding ":"
348
- and "//". This allows empty Url (e.g., "") to be serialized as "".
349
- * Parsing invalid XML no longer emits warnings
350
- * Curl classes now properly throw AdapterExceptions
351
- * Various performance optimizations
352
- * Streams are created with the faster `Stream\create()` function
353
- * Marked deprecation_proxy() as internal
354
- * Test server is now a collection of static methods on a class
355
-
356
- ## 4.0.0-rc.1 - 2014-03-15
357
-
358
- * See https://github.com/guzzle/guzzle/blob/master/UPGRADING.md#3x-to-40
359
-
360
- ## 3.8.1 - 2014-01-28
361
-
362
- * Bug: Always using GET requests when redirecting from a 303 response
363
- * Bug: CURLOPT_SSL_VERIFYHOST is now correctly set to false when setting `$certificateAuthority` to false in
364
- `Guzzle\Http\ClientInterface::setSslVerification()`
365
- * Bug: RedirectPlugin now uses strict RFC 3986 compliance when combining a base URL with a relative URL
366
- * Bug: The body of a request can now be set to `"0"`
367
- * Sending PHP stream requests no longer forces `HTTP/1.0`
368
- * Adding more information to ExceptionCollection exceptions so that users have more context, including a stack trace of
369
- each sub-exception
370
- * Updated the `$ref` attribute in service descriptions to merge over any existing parameters of a schema (rather than
371
- clobbering everything).
372
- * Merging URLs will now use the query string object from the relative URL (thus allowing custom query aggregators)
373
- * Query strings are now parsed in a way that they do no convert empty keys with no value to have a dangling `=`.
374
- For example `foo&bar=baz` is now correctly parsed and recognized as `foo&bar=baz` rather than `foo=&bar=baz`.
375
- * Now properly escaping the regular expression delimiter when matching Cookie domains.
376
- * Network access is now disabled when loading XML documents
377
-
378
- ## 3.8.0 - 2013-12-05
379
-
380
- * Added the ability to define a POST name for a file
381
- * JSON response parsing now properly walks additionalProperties
382
- * cURL error code 18 is now retried automatically in the BackoffPlugin
383
- * Fixed a cURL error when URLs contain fragments
384
- * Fixed an issue in the BackoffPlugin retry event where it was trying to access all exceptions as if they were
385
- CurlExceptions
386
- * CURLOPT_PROGRESS function fix for PHP 5.5 (69fcc1e)
387
- * Added the ability for Guzzle to work with older versions of cURL that do not support `CURLOPT_TIMEOUT_MS`
388
- * Fixed a bug that was encountered when parsing empty header parameters
389
- * UriTemplate now has a `setRegex()` method to match the docs
390
- * The `debug` request parameter now checks if it is truthy rather than if it exists
391
- * Setting the `debug` request parameter to true shows verbose cURL output instead of using the LogPlugin
392
- * Added the ability to combine URLs using strict RFC 3986 compliance
393
- * Command objects can now return the validation errors encountered by the command
394
- * Various fixes to cache revalidation (#437 and 29797e5)
395
- * Various fixes to the AsyncPlugin
396
- * Cleaned up build scripts
397
-
398
- ## 3.7.4 - 2013-10-02
399
-
400
- * Bug fix: 0 is now an allowed value in a description parameter that has a default value (#430)
401
- * Bug fix: SchemaFormatter now returns an integer when formatting to a Unix timestamp
402
- (see https://github.com/aws/aws-sdk-php/issues/147)
403
- * Bug fix: Cleaned up and fixed URL dot segment removal to properly resolve internal dots
404
- * Minimum PHP version is now properly specified as 5.3.3 (up from 5.3.2) (#420)
405
- * Updated the bundled cacert.pem (#419)
406
- * OauthPlugin now supports adding authentication to headers or query string (#425)
407
-
408
- ## 3.7.3 - 2013-09-08
409
-
410
- * Added the ability to get the exception associated with a request/command when using `MultiTransferException` and
411
- `CommandTransferException`.
412
- * Setting `additionalParameters` of a response to false is now honored when parsing responses with a service description
413
- * Schemas are only injected into response models when explicitly configured.
414
- * No longer guessing Content-Type based on the path of a request. Content-Type is now only guessed based on the path of
415
- an EntityBody.
416
- * Bug fix: ChunkedIterator can now properly chunk a \Traversable as well as an \Iterator.
417
- * Bug fix: FilterIterator now relies on `\Iterator` instead of `\Traversable`.
418
- * Bug fix: Gracefully handling malformed responses in RequestMediator::writeResponseBody()
419
- * Bug fix: Replaced call to canCache with canCacheRequest in the CallbackCanCacheStrategy of the CachePlugin
420
- * Bug fix: Visiting XML attributes first before visiting XML children when serializing requests
421
- * Bug fix: Properly parsing headers that contain commas contained in quotes
422
- * Bug fix: mimetype guessing based on a filename is now case-insensitive
423
-
424
- ## 3.7.2 - 2013-08-02
425
-
426
- * Bug fix: Properly URL encoding paths when using the PHP-only version of the UriTemplate expander
427
- See https://github.com/guzzle/guzzle/issues/371
428
- * Bug fix: Cookie domains are now matched correctly according to RFC 6265
429
- See https://github.com/guzzle/guzzle/issues/377
430
- * Bug fix: GET parameters are now used when calculating an OAuth signature
431
- * Bug fix: Fixed an issue with cache revalidation where the If-None-Match header was being double quoted
432
- * `Guzzle\Common\AbstractHasDispatcher::dispatch()` now returns the event that was dispatched
433
- * `Guzzle\Http\QueryString::factory()` now guesses the most appropriate query aggregator to used based on the input.
434
- See https://github.com/guzzle/guzzle/issues/379
435
- * Added a way to add custom domain objects to service description parsing using the `operation.parse_class` event. See
436
- https://github.com/guzzle/guzzle/pull/380
437
- * cURL multi cleanup and optimizations
438
-
439
- ## 3.7.1 - 2013-07-05
440
-
441
- * Bug fix: Setting default options on a client now works
442
- * Bug fix: Setting options on HEAD requests now works. See #352
443
- * Bug fix: Moving stream factory before send event to before building the stream. See #353
444
- * Bug fix: Cookies no longer match on IP addresses per RFC 6265
445
- * Bug fix: Correctly parsing header parameters that are in `<>` and quotes
446
- * Added `cert` and `ssl_key` as request options
447
- * `Host` header can now diverge from the host part of a URL if the header is set manually
448
- * `Guzzle\Service\Command\LocationVisitor\Request\XmlVisitor` was rewritten to change from using SimpleXML to XMLWriter
449
- * OAuth parameters are only added via the plugin if they aren't already set
450
- * Exceptions are now thrown when a URL cannot be parsed
451
- * Returning `false` if `Guzzle\Http\EntityBody::getContentMd5()` fails
452
- * Not setting a `Content-MD5` on a command if calculating the Content-MD5 fails via the CommandContentMd5Plugin
453
-
454
- ## 3.7.0 - 2013-06-10
455
-
456
- * See UPGRADING.md for more information on how to upgrade.
457
- * Requests now support the ability to specify an array of $options when creating a request to more easily modify a
458
- request. You can pass a 'request.options' configuration setting to a client to apply default request options to
459
- every request created by a client (e.g. default query string variables, headers, curl options, etc.).
460
- * Added a static facade class that allows you to use Guzzle with static methods and mount the class to `\Guzzle`.
461
- See `Guzzle\Http\StaticClient::mount`.
462
- * Added `command.request_options` to `Guzzle\Service\Command\AbstractCommand` to pass request options to requests
463
- created by a command (e.g. custom headers, query string variables, timeout settings, etc.).
464
- * Stream size in `Guzzle\Stream\PhpStreamRequestFactory` will now be set if Content-Length is returned in the
465
- headers of a response
466
- * Added `Guzzle\Common\Collection::setPath($path, $value)` to set a value into an array using a nested key
467
- (e.g. `$collection->setPath('foo/baz/bar', 'test'); echo $collection['foo']['bar']['bar'];`)
468
- * ServiceBuilders now support storing and retrieving arbitrary data
469
- * CachePlugin can now purge all resources for a given URI
470
- * CachePlugin can automatically purge matching cached items when a non-idempotent request is sent to a resource
471
- * CachePlugin now uses the Vary header to determine if a resource is a cache hit
472
- * `Guzzle\Http\Message\Response` now implements `\Serializable`
473
- * Added `Guzzle\Cache\CacheAdapterFactory::fromCache()` to more easily create cache adapters
474
- * `Guzzle\Service\ClientInterface::execute()` now accepts an array, single command, or Traversable
475
- * Fixed a bug in `Guzzle\Http\Message\Header\Link::addLink()`
476
- * Better handling of calculating the size of a stream in `Guzzle\Stream\Stream` using fstat() and caching the size
477
- * `Guzzle\Common\Exception\ExceptionCollection` now creates a more readable exception message
478
- * Fixing BC break: Added back the MonologLogAdapter implementation rather than extending from PsrLog so that older
479
- Symfony users can still use the old version of Monolog.
480
- * Fixing BC break: Added the implementation back in for `Guzzle\Http\Message\AbstractMessage::getTokenizedHeader()`.
481
- Now triggering an E_USER_DEPRECATED warning when used. Use `$message->getHeader()->parseParams()`.
482
- * Several performance improvements to `Guzzle\Common\Collection`
483
- * Added an `$options` argument to the end of the following methods of `Guzzle\Http\ClientInterface`:
484
- createRequest, head, delete, put, patch, post, options, prepareRequest
485
- * Added an `$options` argument to the end of `Guzzle\Http\Message\Request\RequestFactoryInterface::createRequest()`
486
- * Added an `applyOptions()` method to `Guzzle\Http\Message\Request\RequestFactoryInterface`
487
- * Changed `Guzzle\Http\ClientInterface::get($uri = null, $headers = null, $body = null)` to
488
- `Guzzle\Http\ClientInterface::get($uri = null, $headers = null, $options = array())`. You can still pass in a
489
- resource, string, or EntityBody into the $options parameter to specify the download location of the response.
490
- * Changed `Guzzle\Common\Collection::__construct($data)` to no longer accepts a null value for `$data` but a
491
- default `array()`
492
- * Added `Guzzle\Stream\StreamInterface::isRepeatable`
493
- * Removed `Guzzle\Http\ClientInterface::setDefaultHeaders(). Use
494
- $client->getConfig()->setPath('request.options/headers/{header_name}', 'value')`. or
495
- $client->getConfig()->setPath('request.options/headers', array('header_name' => 'value'))`.
496
- * Removed `Guzzle\Http\ClientInterface::getDefaultHeaders(). Use $client->getConfig()->getPath('request.options/headers')`.
497
- * Removed `Guzzle\Http\ClientInterface::expandTemplate()`
498
- * Removed `Guzzle\Http\ClientInterface::setRequestFactory()`
499
- * Removed `Guzzle\Http\ClientInterface::getCurlMulti()`
500
- * Removed `Guzzle\Http\Message\RequestInterface::canCache`
501
- * Removed `Guzzle\Http\Message\RequestInterface::setIsRedirect`
502
- * Removed `Guzzle\Http\Message\RequestInterface::isRedirect`
503
- * Made `Guzzle\Http\Client::expandTemplate` and `getUriTemplate` protected methods.
504
- * You can now enable E_USER_DEPRECATED warnings to see if you are using a deprecated method by setting
505
- `Guzzle\Common\Version::$emitWarnings` to true.
506
- * Marked `Guzzle\Http\Message\Request::isResponseBodyRepeatable()` as deprecated. Use
507
- `$request->getResponseBody()->isRepeatable()` instead.
508
- * Marked `Guzzle\Http\Message\Request::canCache()` as deprecated. Use
509
- `Guzzle\Plugin\Cache\DefaultCanCacheStrategy->canCacheRequest()` instead.
510
- * Marked `Guzzle\Http\Message\Request::canCache()` as deprecated. Use
511
- `Guzzle\Plugin\Cache\DefaultCanCacheStrategy->canCacheRequest()` instead.
512
- * Marked `Guzzle\Http\Message\Request::setIsRedirect()` as deprecated. Use the HistoryPlugin instead.
513
- * Marked `Guzzle\Http\Message\Request::isRedirect()` as deprecated. Use the HistoryPlugin instead.
514
- * Marked `Guzzle\Cache\CacheAdapterFactory::factory()` as deprecated
515
- * Marked 'command.headers', 'command.response_body' and 'command.on_complete' as deprecated for AbstractCommand.
516
- These will work through Guzzle 4.0
517
- * Marked 'request.params' for `Guzzle\Http\Client` as deprecated. Use [request.options][params].
518
- * Marked `Guzzle\Service\Client::enableMagicMethods()` as deprecated. Magic methods can no longer be disabled on a Guzzle\Service\Client.
519
- * Marked `Guzzle\Service\Client::getDefaultHeaders()` as deprecated. Use $client->getConfig()->getPath('request.options/headers')`.
520
- * Marked `Guzzle\Service\Client::setDefaultHeaders()` as deprecated. Use $client->getConfig()->setPath('request.options/headers/{header_name}', 'value')`.
521
- * Marked `Guzzle\Parser\Url\UrlParser` as deprecated. Just use PHP's `parse_url()` and percent encode your UTF-8.
522
- * Marked `Guzzle\Common\Collection::inject()` as deprecated.
523
- * Marked `Guzzle\Plugin\CurlAuth\CurlAuthPlugin` as deprecated. Use `$client->getConfig()->setPath('request.options/auth', array('user', 'pass', 'Basic|Digest');`
524
- * CacheKeyProviderInterface and DefaultCacheKeyProvider are no longer used. All of this logic is handled in a
525
- CacheStorageInterface. These two objects and interface will be removed in a future version.
526
- * Always setting X-cache headers on cached responses
527
- * Default cache TTLs are now handled by the CacheStorageInterface of a CachePlugin
528
- * `CacheStorageInterface::cache($key, Response $response, $ttl = null)` has changed to `cache(RequestInterface
529
- $request, Response $response);`
530
- * `CacheStorageInterface::fetch($key)` has changed to `fetch(RequestInterface $request);`
531
- * `CacheStorageInterface::delete($key)` has changed to `delete(RequestInterface $request);`
532
- * Added `CacheStorageInterface::purge($url)`
533
- * `DefaultRevalidation::__construct(CacheKeyProviderInterface $cacheKey, CacheStorageInterface $cache, CachePlugin
534
- $plugin)` has changed to `DefaultRevalidation::__construct(CacheStorageInterface $cache,
535
- CanCacheStrategyInterface $canCache = null)`
536
- * Added `RevalidationInterface::shouldRevalidate(RequestInterface $request, Response $response)`
537
-
538
- ## 3.6.0 - 2013-05-29
539
-
540
- * ServiceDescription now implements ToArrayInterface
541
- * Added command.hidden_params to blacklist certain headers from being treated as additionalParameters
542
- * Guzzle can now correctly parse incomplete URLs
543
- * Mixed casing of headers are now forced to be a single consistent casing across all values for that header.
544
- * Messages internally use a HeaderCollection object to delegate handling case-insensitive header resolution
545
- * Removed the whole changedHeader() function system of messages because all header changes now go through addHeader().
546
- * Specific header implementations can be created for complex headers. When a message creates a header, it uses a
547
- HeaderFactory which can map specific headers to specific header classes. There is now a Link header and
548
- CacheControl header implementation.
549
- * Removed from interface: Guzzle\Http\ClientInterface::setUriTemplate
550
- * Removed from interface: Guzzle\Http\ClientInterface::setCurlMulti()
551
- * Removed Guzzle\Http\Message\Request::receivedRequestHeader() and implemented this functionality in
552
- Guzzle\Http\Curl\RequestMediator
553
- * Removed the optional $asString parameter from MessageInterface::getHeader(). Just cast the header to a string.
554
- * Removed the optional $tryChunkedTransfer option from Guzzle\Http\Message\EntityEnclosingRequestInterface
555
- * Removed the $asObjects argument from Guzzle\Http\Message\MessageInterface::getHeaders()
556
- * Removed Guzzle\Parser\ParserRegister::get(). Use getParser()
557
- * Removed Guzzle\Parser\ParserRegister::set(). Use registerParser().
558
- * All response header helper functions return a string rather than mixing Header objects and strings inconsistently
559
- * Removed cURL blacklist support. This is no longer necessary now that Expect, Accept, etc. are managed by Guzzle
560
- directly via interfaces
561
- * Removed the injecting of a request object onto a response object. The methods to get and set a request still exist
562
- but are a no-op until removed.
563
- * Most classes that used to require a `Guzzle\Service\Command\CommandInterface` typehint now request a
564
- `Guzzle\Service\Command\ArrayCommandInterface`.
565
- * Added `Guzzle\Http\Message\RequestInterface::startResponse()` to the RequestInterface to handle injecting a response
566
- on a request while the request is still being transferred
567
- * The ability to case-insensitively search for header values
568
- * Guzzle\Http\Message\Header::hasExactHeader
569
- * Guzzle\Http\Message\Header::raw. Use getAll()
570
- * Deprecated cache control specific methods on Guzzle\Http\Message\AbstractMessage. Use the CacheControl header object
571
- instead.
572
- * `Guzzle\Service\Command\CommandInterface` now extends from ToArrayInterface and ArrayAccess
573
- * Added the ability to cast Model objects to a string to view debug information.
574
-
575
- ## 3.5.0 - 2013-05-13
576
-
577
- * Bug: Fixed a regression so that request responses are parsed only once per oncomplete event rather than multiple times
578
- * Bug: Better cleanup of one-time events across the board (when an event is meant to fire once, it will now remove
579
- itself from the EventDispatcher)
580
- * Bug: `Guzzle\Log\MessageFormatter` now properly writes "total_time" and "connect_time" values
581
- * Bug: Cloning an EntityEnclosingRequest now clones the EntityBody too
582
- * Bug: Fixed an undefined index error when parsing nested JSON responses with a sentAs parameter that reference a
583
- non-existent key
584
- * Bug: All __call() method arguments are now required (helps with mocking frameworks)
585
- * Deprecating Response::getRequest() and now using a shallow clone of a request object to remove a circular reference
586
- to help with refcount based garbage collection of resources created by sending a request
587
- * Deprecating ZF1 cache and log adapters. These will be removed in the next major version.
588
- * Deprecating `Response::getPreviousResponse()` (method signature still exists, but it'sdeprecated). Use the
589
- HistoryPlugin for a history.
590
- * Added a `responseBody` alias for the `response_body` location
591
- * Refactored internals to no longer rely on Response::getRequest()
592
- * HistoryPlugin can now be cast to a string
593
- * HistoryPlugin now logs transactions rather than requests and responses to more accurately keep track of the requests
594
- and responses that are sent over the wire
595
- * Added `getEffectiveUrl()` and `getRedirectCount()` to Response objects
596
-
597
- ## 3.4.3 - 2013-04-30
598
-
599
- * Bug fix: Fixing bug introduced in 3.4.2 where redirect responses are duplicated on the final redirected response
600
- * Added a check to re-extract the temp cacert bundle from the phar before sending each request
601
-
602
- ## 3.4.2 - 2013-04-29
603
-
604
- * Bug fix: Stream objects now work correctly with "a" and "a+" modes
605
- * Bug fix: Removing `Transfer-Encoding: chunked` header when a Content-Length is present
606
- * Bug fix: AsyncPlugin no longer forces HEAD requests
607
- * Bug fix: DateTime timezones are now properly handled when using the service description schema formatter
608
- * Bug fix: CachePlugin now properly handles stale-if-error directives when a request to the origin server fails
609
- * Setting a response on a request will write to the custom request body from the response body if one is specified
610
- * LogPlugin now writes to php://output when STDERR is undefined
611
- * Added the ability to set multiple POST files for the same key in a single call
612
- * application/x-www-form-urlencoded POSTs now use the utf-8 charset by default
613
- * Added the ability to queue CurlExceptions to the MockPlugin
614
- * Cleaned up how manual responses are queued on requests (removed "queued_response" and now using request.before_send)
615
- * Configuration loading now allows remote files
616
-
617
- ## 3.4.1 - 2013-04-16
618
-
619
- * Large refactoring to how CurlMulti handles work. There is now a proxy that sits in front of a pool of CurlMulti
620
- handles. This greatly simplifies the implementation, fixes a couple bugs, and provides a small performance boost.
621
- * Exceptions are now properly grouped when sending requests in parallel
622
- * Redirects are now properly aggregated when a multi transaction fails
623
- * Redirects now set the response on the original object even in the event of a failure
624
- * Bug fix: Model names are now properly set even when using $refs
625
- * Added support for PHP 5.5's CurlFile to prevent warnings with the deprecated @ syntax
626
- * Added support for oauth_callback in OAuth signatures
627
- * Added support for oauth_verifier in OAuth signatures
628
- * Added support to attempt to retrieve a command first literally, then ucfirst, the with inflection
629
-
630
- ## 3.4.0 - 2013-04-11
631
-
632
- * Bug fix: URLs are now resolved correctly based on http://tools.ietf.org/html/rfc3986#section-5.2. #289
633
- * Bug fix: Absolute URLs with a path in a service description will now properly override the base URL. #289
634
- * Bug fix: Parsing a query string with a single PHP array value will now result in an array. #263
635
- * Bug fix: Better normalization of the User-Agent header to prevent duplicate headers. #264.
636
- * Bug fix: Added `number` type to service descriptions.
637
- * Bug fix: empty parameters are removed from an OAuth signature
638
- * Bug fix: Revalidating a cache entry prefers the Last-Modified over the Date header
639
- * Bug fix: Fixed "array to string" error when validating a union of types in a service description
640
- * Bug fix: Removed code that attempted to determine the size of a stream when data is written to the stream
641
- * Bug fix: Not including an `oauth_token` if the value is null in the OauthPlugin.
642
- * Bug fix: Now correctly aggregating successful requests and failed requests in CurlMulti when a redirect occurs.
643
- * The new default CURLOPT_TIMEOUT setting has been increased to 150 seconds so that Guzzle works on poor connections.
644
- * Added a feature to EntityEnclosingRequest::setBody() that will automatically set the Content-Type of the request if
645
- the Content-Type can be determined based on the entity body or the path of the request.
646
- * Added the ability to overwrite configuration settings in a client when grabbing a throwaway client from a builder.
647
- * Added support for a PSR-3 LogAdapter.
648
- * Added a `command.after_prepare` event
649
- * Added `oauth_callback` parameter to the OauthPlugin
650
- * Added the ability to create a custom stream class when using a stream factory
651
- * Added a CachingEntityBody decorator
652
- * Added support for `additionalParameters` in service descriptions to define how custom parameters are serialized.
653
- * The bundled SSL certificate is now provided in the phar file and extracted when running Guzzle from a phar.
654
- * You can now send any EntityEnclosingRequest with POST fields or POST files and cURL will handle creating bodies
655
- * POST requests using a custom entity body are now treated exactly like PUT requests but with a custom cURL method. This
656
- means that the redirect behavior of POST requests with custom bodies will not be the same as POST requests that use
657
- POST fields or files (the latter is only used when emulating a form POST in the browser).
658
- * Lots of cleanup to CurlHandle::factory and RequestFactory::createRequest
659
-
660
- ## 3.3.1 - 2013-03-10
661
-
662
- * Added the ability to create PHP streaming responses from HTTP requests
663
- * Bug fix: Running any filters when parsing response headers with service descriptions
664
- * Bug fix: OauthPlugin fixes to allow for multi-dimensional array signing, and sorting parameters before signing
665
- * Bug fix: Removed the adding of default empty arrays and false Booleans to responses in order to be consistent across
666
- response location visitors.
667
- * Bug fix: Removed the possibility of creating configuration files with circular dependencies
668
- * RequestFactory::create() now uses the key of a POST file when setting the POST file name
669
- * Added xmlAllowEmpty to serialize an XML body even if no XML specific parameters are set
670
-
671
- ## 3.3.0 - 2013-03-03
672
-
673
- * A large number of performance optimizations have been made
674
- * Bug fix: Added 'wb' as a valid write mode for streams
675
- * Bug fix: `Guzzle\Http\Message\Response::json()` now allows scalar values to be returned
676
- * Bug fix: Fixed bug in `Guzzle\Http\Message\Response` where wrapping quotes were stripped from `getEtag()`
677
- * BC: Removed `Guzzle\Http\Utils` class
678
- * BC: Setting a service description on a client will no longer modify the client's command factories.
679
- * BC: Emitting IO events from a RequestMediator is now a parameter that must be set in a request's curl options using
680
- the 'emit_io' key. This was previously set under a request's parameters using 'curl.emit_io'
681
- * BC: `Guzzle\Stream\Stream::getWrapper()` and `Guzzle\Stream\Stream::getSteamType()` are no longer converted to
682
- lowercase
683
- * Operation parameter objects are now lazy loaded internally
684
- * Added ErrorResponsePlugin that can throw errors for responses defined in service description operations' errorResponses
685
- * Added support for instantiating responseType=class responseClass classes. Classes must implement
686
- `Guzzle\Service\Command\ResponseClassInterface`
687
- * Added support for additionalProperties for top-level parameters in responseType=model responseClasses. These
688
- additional properties also support locations and can be used to parse JSON responses where the outermost part of the
689
- JSON is an array
690
- * Added support for nested renaming of JSON models (rename sentAs to name)
691
- * CachePlugin
692
- * Added support for stale-if-error so that the CachePlugin can now serve stale content from the cache on error
693
- * Debug headers can now added to cached response in the CachePlugin
694
-
695
- ## 3.2.0 - 2013-02-14
696
-
697
- * CurlMulti is no longer reused globally. A new multi object is created per-client. This helps to isolate clients.
698
- * URLs with no path no longer contain a "/" by default
699
- * Guzzle\Http\QueryString does no longer manages the leading "?". This is now handled in Guzzle\Http\Url.
700
- * BadResponseException no longer includes the full request and response message
701
- * Adding setData() to Guzzle\Service\Description\ServiceDescriptionInterface
702
- * Adding getResponseBody() to Guzzle\Http\Message\RequestInterface
703
- * Various updates to classes to use ServiceDescriptionInterface type hints rather than ServiceDescription
704
- * Header values can now be normalized into distinct values when multiple headers are combined with a comma separated list
705
- * xmlEncoding can now be customized for the XML declaration of a XML service description operation
706
- * Guzzle\Http\QueryString now uses Guzzle\Http\QueryAggregator\QueryAggregatorInterface objects to add custom value
707
- aggregation and no longer uses callbacks
708
- * The URL encoding implementation of Guzzle\Http\QueryString can now be customized
709
- * Bug fix: Filters were not always invoked for array service description parameters
710
- * Bug fix: Redirects now use a target response body rather than a temporary response body
711
- * Bug fix: The default exponential backoff BackoffPlugin was not giving when the request threshold was exceeded
712
- * Bug fix: Guzzle now takes the first found value when grabbing Cache-Control directives
713
-
714
- ## 3.1.2 - 2013-01-27
715
-
716
- * Refactored how operation responses are parsed. Visitors now include a before() method responsible for parsing the
717
- response body. For example, the XmlVisitor now parses the XML response into an array in the before() method.
718
- * Fixed an issue where cURL would not automatically decompress responses when the Accept-Encoding header was sent
719
- * CURLOPT_SSL_VERIFYHOST is never set to 1 because it is deprecated (see 5e0ff2ef20f839e19d1eeb298f90ba3598784444)
720
- * Fixed a bug where redirect responses were not chained correctly using getPreviousResponse()
721
- * Setting default headers on a client after setting the user-agent will not erase the user-agent setting
722
-
723
- ## 3.1.1 - 2013-01-20
724
-
725
- * Adding wildcard support to Guzzle\Common\Collection::getPath()
726
- * Adding alias support to ServiceBuilder configs
727
- * Adding Guzzle\Service\Resource\CompositeResourceIteratorFactory and cleaning up factory interface
728
-
729
- ## 3.1.0 - 2013-01-12
730
-
731
- * BC: CurlException now extends from RequestException rather than BadResponseException
732
- * BC: Renamed Guzzle\Plugin\Cache\CanCacheStrategyInterface::canCache() to canCacheRequest() and added CanCacheResponse()
733
- * Added getData to ServiceDescriptionInterface
734
- * Added context array to RequestInterface::setState()
735
- * Bug: Removing hard dependency on the BackoffPlugin from Guzzle\Http
736
- * Bug: Adding required content-type when JSON request visitor adds JSON to a command
737
- * Bug: Fixing the serialization of a service description with custom data
738
- * Made it easier to deal with exceptions thrown when transferring commands or requests in parallel by providing
739
- an array of successful and failed responses
740
- * Moved getPath from Guzzle\Service\Resource\Model to Guzzle\Common\Collection
741
- * Added Guzzle\Http\IoEmittingEntityBody
742
- * Moved command filtration from validators to location visitors
743
- * Added `extends` attributes to service description parameters
744
- * Added getModels to ServiceDescriptionInterface
745
-
746
- ## 3.0.7 - 2012-12-19
747
-
748
- * Fixing phar detection when forcing a cacert to system if null or true
749
- * Allowing filename to be passed to `Guzzle\Http\Message\Request::setResponseBody()`
750
- * Cleaning up `Guzzle\Common\Collection::inject` method
751
- * Adding a response_body location to service descriptions
752
-
753
- ## 3.0.6 - 2012-12-09
754
-
755
- * CurlMulti performance improvements
756
- * Adding setErrorResponses() to Operation
757
- * composer.json tweaks
758
-
759
- ## 3.0.5 - 2012-11-18
760
-
761
- * Bug: Fixing an infinite recursion bug caused from revalidating with the CachePlugin
762
- * Bug: Response body can now be a string containing "0"
763
- * Bug: Using Guzzle inside of a phar uses system by default but now allows for a custom cacert
764
- * Bug: QueryString::fromString now properly parses query string parameters that contain equal signs
765
- * Added support for XML attributes in service description responses
766
- * DefaultRequestSerializer now supports array URI parameter values for URI template expansion
767
- * Added better mimetype guessing to requests and post files
768
-
769
- ## 3.0.4 - 2012-11-11
770
-
771
- * Bug: Fixed a bug when adding multiple cookies to a request to use the correct glue value
772
- * Bug: Cookies can now be added that have a name, domain, or value set to "0"
773
- * Bug: Using the system cacert bundle when using the Phar
774
- * Added json and xml methods to Response to make it easier to parse JSON and XML response data into data structures
775
- * Enhanced cookie jar de-duplication
776
- * Added the ability to enable strict cookie jars that throw exceptions when invalid cookies are added
777
- * Added setStream to StreamInterface to actually make it possible to implement custom rewind behavior for entity bodies
778
- * Added the ability to create any sort of hash for a stream rather than just an MD5 hash
779
-
780
- ## 3.0.3 - 2012-11-04
781
-
782
- * Implementing redirects in PHP rather than cURL
783
- * Added PECL URI template extension and using as default parser if available
784
- * Bug: Fixed Content-Length parsing of Response factory
785
- * Adding rewind() method to entity bodies and streams. Allows for custom rewinding of non-repeatable streams.
786
- * Adding ToArrayInterface throughout library
787
- * Fixing OauthPlugin to create unique nonce values per request
788
-
789
- ## 3.0.2 - 2012-10-25
790
-
791
- * Magic methods are enabled by default on clients
792
- * Magic methods return the result of a command
793
- * Service clients no longer require a base_url option in the factory
794
- * Bug: Fixed an issue with URI templates where null template variables were being expanded
795
-
796
- ## 3.0.1 - 2012-10-22
797
-
798
- * Models can now be used like regular collection objects by calling filter, map, etc.
799
- * Models no longer require a Parameter structure or initial data in the constructor
800
- * Added a custom AppendIterator to get around a PHP bug with the `\AppendIterator`
801
-
802
- ## 3.0.0 - 2012-10-15
803
-
804
- * Rewrote service description format to be based on Swagger
805
- * Now based on JSON schema
806
- * Added nested input structures and nested response models
807
- * Support for JSON and XML input and output models
808
- * Renamed `commands` to `operations`
809
- * Removed dot class notation
810
- * Removed custom types
811
- * Broke the project into smaller top-level namespaces to be more component friendly
812
- * Removed support for XML configs and descriptions. Use arrays or JSON files.
813
- * Removed the Validation component and Inspector
814
- * Moved all cookie code to Guzzle\Plugin\Cookie
815
- * Magic methods on a Guzzle\Service\Client now return the command un-executed.
816
- * Calling getResult() or getResponse() on a command will lazily execute the command if needed.
817
- * Now shipping with cURL's CA certs and using it by default
818
- * Added previousResponse() method to response objects
819
- * No longer sending Accept and Accept-Encoding headers on every request
820
- * Only sending an Expect header by default when a payload is greater than 1MB
821
- * Added/moved client options:
822
- * curl.blacklist to curl.option.blacklist
823
- * Added ssl.certificate_authority
824
- * Added a Guzzle\Iterator component
825
- * Moved plugins from Guzzle\Http\Plugin to Guzzle\Plugin
826
- * Added a more robust backoff retry strategy (replaced the ExponentialBackoffPlugin)
827
- * Added a more robust caching plugin
828
- * Added setBody to response objects
829
- * Updating LogPlugin to use a more flexible MessageFormatter
830
- * Added a completely revamped build process
831
- * Cleaning up Collection class and removing default values from the get method
832
- * Fixed ZF2 cache adapters
833
-
834
- ## 2.8.8 - 2012-10-15
835
-
836
- * Bug: Fixed a cookie issue that caused dot prefixed domains to not match where popular browsers did
837
-
838
- ## 2.8.7 - 2012-09-30
839
-
840
- * Bug: Fixed config file aliases for JSON includes
841
- * Bug: Fixed cookie bug on a request object by using CookieParser to parse cookies on requests
842
- * Bug: Removing the path to a file when sending a Content-Disposition header on a POST upload
843
- * Bug: Hardening request and response parsing to account for missing parts
844
- * Bug: Fixed PEAR packaging
845
- * Bug: Fixed Request::getInfo
846
- * Bug: Fixed cases where CURLM_CALL_MULTI_PERFORM return codes were causing curl transactions to fail
847
- * Adding the ability for the namespace Iterator factory to look in multiple directories
848
- * Added more getters/setters/removers from service descriptions
849
- * Added the ability to remove POST fields from OAuth signatures
850
- * OAuth plugin now supports 2-legged OAuth
851
-
852
- ## 2.8.6 - 2012-09-05
853
-
854
- * Added the ability to modify and build service descriptions
855
- * Added the use of visitors to apply parameters to locations in service descriptions using the dynamic command
856
- * Added a `json` parameter location
857
- * Now allowing dot notation for classes in the CacheAdapterFactory
858
- * Using the union of two arrays rather than an array_merge when extending service builder services and service params
859
- * Ensuring that a service is a string before doing strpos() checks on it when substituting services for references
860
- in service builder config files.
861
- * Services defined in two different config files that include one another will by default replace the previously
862
- defined service, but you can now create services that extend themselves and merge their settings over the previous
863
- * The JsonLoader now supports aliasing filenames with different filenames. This allows you to alias something like
864
- '_default' with a default JSON configuration file.
865
-
866
- ## 2.8.5 - 2012-08-29
867
-
868
- * Bug: Suppressed empty arrays from URI templates
869
- * Bug: Added the missing $options argument from ServiceDescription::factory to enable caching
870
- * Added support for HTTP responses that do not contain a reason phrase in the start-line
871
- * AbstractCommand commands are now invokable
872
- * Added a way to get the data used when signing an Oauth request before a request is sent
873
-
874
- ## 2.8.4 - 2012-08-15
875
-
876
- * Bug: Custom delay time calculations are no longer ignored in the ExponentialBackoffPlugin
877
- * Added the ability to transfer entity bodies as a string rather than streamed. This gets around curl error 65. Set `body_as_string` in a request's curl options to enable.
878
- * Added a StreamInterface, EntityBodyInterface, and added ftell() to Guzzle\Common\Stream
879
- * Added an AbstractEntityBodyDecorator and a ReadLimitEntityBody decorator to transfer only a subset of a decorated stream
880
- * Stream and EntityBody objects will now return the file position to the previous position after a read required operation (e.g. getContentMd5())
881
- * Added additional response status codes
882
- * Removed SSL information from the default User-Agent header
883
- * DELETE requests can now send an entity body
884
- * Added an EventDispatcher to the ExponentialBackoffPlugin and added an ExponentialBackoffLogger to log backoff retries
885
- * Added the ability of the MockPlugin to consume mocked request bodies
886
- * LogPlugin now exposes request and response objects in the extras array
887
-
888
- ## 2.8.3 - 2012-07-30
889
-
890
- * Bug: Fixed a case where empty POST requests were sent as GET requests
891
- * Bug: Fixed a bug in ExponentialBackoffPlugin that caused fatal errors when retrying an EntityEnclosingRequest that does not have a body
892
- * Bug: Setting the response body of a request to null after completing a request, not when setting the state of a request to new
893
- * Added multiple inheritance to service description commands
894
- * Added an ApiCommandInterface and added `getParamNames()` and `hasParam()`
895
- * Removed the default 2mb size cutoff from the Md5ValidatorPlugin so that it now defaults to validating everything
896
- * Changed CurlMulti::perform to pass a smaller timeout to CurlMulti::executeHandles
897
-
898
- ## 2.8.2 - 2012-07-24
899
-
900
- * Bug: Query string values set to 0 are no longer dropped from the query string
901
- * Bug: A Collection object is no longer created each time a call is made to `Guzzle\Service\Command\AbstractCommand::getRequestHeaders()`
902
- * Bug: `+` is now treated as an encoded space when parsing query strings
903
- * QueryString and Collection performance improvements
904
- * Allowing dot notation for class paths in filters attribute of a service descriptions
905
-
906
- ## 2.8.1 - 2012-07-16
907
-
908
- * Loosening Event Dispatcher dependency
909
- * POST redirects can now be customized using CURLOPT_POSTREDIR
910
-
911
- ## 2.8.0 - 2012-07-15
912
-
913
- * BC: Guzzle\Http\Query
914
- * Query strings with empty variables will always show an equal sign unless the variable is set to QueryString::BLANK (e.g. ?acl= vs ?acl)
915
- * Changed isEncodingValues() and isEncodingFields() to isUrlEncoding()
916
- * Changed setEncodeValues(bool) and setEncodeFields(bool) to useUrlEncoding(bool)
917
- * Changed the aggregation functions of QueryString to be static methods
918
- * Can now use fromString() with querystrings that have a leading ?
919
- * cURL configuration values can be specified in service descriptions using `curl.` prefixed parameters
920
- * Content-Length is set to 0 before emitting the request.before_send event when sending an empty request body
921
- * Cookies are no longer URL decoded by default
922
- * Bug: URI template variables set to null are no longer expanded
923
-
924
- ## 2.7.2 - 2012-07-02
925
-
926
- * BC: Moving things to get ready for subtree splits. Moving Inflection into Common. Moving Guzzle\Http\Parser to Guzzle\Parser.
927
- * BC: Removing Guzzle\Common\Batch\Batch::count() and replacing it with isEmpty()
928
- * CachePlugin now allows for a custom request parameter function to check if a request can be cached
929
- * Bug fix: CachePlugin now only caches GET and HEAD requests by default
930
- * Bug fix: Using header glue when transferring headers over the wire
931
- * Allowing deeply nested arrays for composite variables in URI templates
932
- * Batch divisors can now return iterators or arrays
933
-
934
- ## 2.7.1 - 2012-06-26
935
-
936
- * Minor patch to update version number in UA string
937
- * Updating build process
938
-
939
- ## 2.7.0 - 2012-06-25
940
-
941
- * BC: Inflection classes moved to Guzzle\Inflection. No longer static methods. Can now inject custom inflectors into classes.
942
- * BC: Removed magic setX methods from commands
943
- * BC: Magic methods mapped to service description commands are now inflected in the command factory rather than the client __call() method
944
- * Verbose cURL options are no longer enabled by default. Set curl.debug to true on a client to enable.
945
- * Bug: Now allowing colons in a response start-line (e.g. HTTP/1.1 503 Service Unavailable: Back-end server is at capacity)
946
- * Guzzle\Service\Resource\ResourceIteratorApplyBatched now internally uses the Guzzle\Common\Batch namespace
947
- * Added Guzzle\Service\Plugin namespace and a PluginCollectionPlugin
948
- * Added the ability to set POST fields and files in a service description
949
- * Guzzle\Http\EntityBody::factory() now accepts objects with a __toString() method
950
- * Adding a command.before_prepare event to clients
951
- * Added BatchClosureTransfer and BatchClosureDivisor
952
- * BatchTransferException now includes references to the batch divisor and transfer strategies
953
- * Fixed some tests so that they pass more reliably
954
- * Added Guzzle\Common\Log\ArrayLogAdapter
955
-
956
- ## 2.6.6 - 2012-06-10
957
-
958
- * BC: Removing Guzzle\Http\Plugin\BatchQueuePlugin
959
- * BC: Removing Guzzle\Service\Command\CommandSet
960
- * Adding generic batching system (replaces the batch queue plugin and command set)
961
- * Updating ZF cache and log adapters and now using ZF's composer repository
962
- * Bug: Setting the name of each ApiParam when creating through an ApiCommand
963
- * Adding result_type, result_doc, deprecated, and doc_url to service descriptions
964
- * Bug: Changed the default cookie header casing back to 'Cookie'
965
-
966
- ## 2.6.5 - 2012-06-03
967
-
968
- * BC: Renaming Guzzle\Http\Message\RequestInterface::getResourceUri() to getResource()
969
- * BC: Removing unused AUTH_BASIC and AUTH_DIGEST constants from
970
- * BC: Guzzle\Http\Cookie is now used to manage Set-Cookie data, not Cookie data
971
- * BC: Renaming methods in the CookieJarInterface
972
- * Moving almost all cookie logic out of the CookiePlugin and into the Cookie or CookieJar implementations
973
- * Making the default glue for HTTP headers ';' instead of ','
974
- * Adding a removeValue to Guzzle\Http\Message\Header
975
- * Adding getCookies() to request interface.
976
- * Making it easier to add event subscribers to HasDispatcherInterface classes. Can now directly call addSubscriber()
977
-
978
- ## 2.6.4 - 2012-05-30
979
-
980
- * BC: Cleaning up how POST files are stored in EntityEnclosingRequest objects. Adding PostFile class.
981
- * BC: Moving ApiCommand specific functionality from the Inspector and on to the ApiCommand
982
- * Bug: Fixing magic method command calls on clients
983
- * Bug: Email constraint only validates strings
984
- * Bug: Aggregate POST fields when POST files are present in curl handle
985
- * Bug: Fixing default User-Agent header
986
- * Bug: Only appending or prepending parameters in commands if they are specified
987
- * Bug: Not requiring response reason phrases or status codes to match a predefined list of codes
988
- * Allowing the use of dot notation for class namespaces when using instance_of constraint
989
- * Added any_match validation constraint
990
- * Added an AsyncPlugin
991
- * Passing request object to the calculateWait method of the ExponentialBackoffPlugin
992
- * Allowing the result of a command object to be changed
993
- * Parsing location and type sub values when instantiating a service description rather than over and over at runtime
994
-
995
- ## 2.6.3 - 2012-05-23
996
-
997
- * [BC] Guzzle\Common\FromConfigInterface no longer requires any config options.
998
- * [BC] Refactoring how POST files are stored on an EntityEnclosingRequest. They are now separate from POST fields.
999
- * You can now use an array of data when creating PUT request bodies in the request factory.
1000
- * Removing the requirement that HTTPS requests needed a Cache-Control: public directive to be cacheable.
1001
- * [Http] Adding support for Content-Type in multipart POST uploads per upload
1002
- * [Http] Added support for uploading multiple files using the same name (foo[0], foo[1])
1003
- * Adding more POST data operations for easier manipulation of POST data.
1004
- * You can now set empty POST fields.
1005
- * The body of a request is only shown on EntityEnclosingRequest objects that do not use POST files.
1006
- * Split the Guzzle\Service\Inspector::validateConfig method into two methods. One to initialize when a command is created, and one to validate.
1007
- * CS updates
1008
-
1009
- ## 2.6.2 - 2012-05-19
1010
-
1011
- * [Http] Better handling of nested scope requests in CurlMulti. Requests are now always prepares in the send() method rather than the addRequest() method.
1012
-
1013
- ## 2.6.1 - 2012-05-19
1014
-
1015
- * [BC] Removing 'path' support in service descriptions. Use 'uri'.
1016
- * [BC] Guzzle\Service\Inspector::parseDocBlock is now protected. Adding getApiParamsForClass() with cache.
1017
- * [BC] Removing Guzzle\Common\NullObject. Use https://github.com/mtdowling/NullObject if you need it.
1018
- * [BC] Removing Guzzle\Common\XmlElement.
1019
- * All commands, both dynamic and concrete, have ApiCommand objects.
1020
- * Adding a fix for CurlMulti so that if all of the connections encounter some sort of curl error, then the loop exits.
1021
- * Adding checks to EntityEnclosingRequest so that empty POST files and fields are ignored.
1022
- * Making the method signature of Guzzle\Service\Builder\ServiceBuilder::factory more flexible.
1023
-
1024
- ## 2.6.0 - 2012-05-15
1025
-
1026
- * [BC] Moving Guzzle\Service\Builder to Guzzle\Service\Builder\ServiceBuilder
1027
- * [BC] Executing a Command returns the result of the command rather than the command
1028
- * [BC] Moving all HTTP parsing logic to Guzzle\Http\Parsers. Allows for faster C implementations if needed.
1029
- * [BC] Changing the Guzzle\Http\Message\Response::setProtocol() method to accept a protocol and version in separate args.
1030
- * [BC] Moving ResourceIterator* to Guzzle\Service\Resource
1031
- * [BC] Completely refactored ResourceIterators to iterate over a cloned command object
1032
- * [BC] Moved Guzzle\Http\UriTemplate to Guzzle\Http\Parser\UriTemplate\UriTemplate
1033
- * [BC] Guzzle\Guzzle is now deprecated
1034
- * Moving Guzzle\Common\Guzzle::inject to Guzzle\Common\Collection::inject
1035
- * Adding Guzzle\Version class to give version information about Guzzle
1036
- * Adding Guzzle\Http\Utils class to provide getDefaultUserAgent() and getHttpDate()
1037
- * Adding Guzzle\Curl\CurlVersion to manage caching curl_version() data
1038
- * ServiceDescription and ServiceBuilder are now cacheable using similar configs
1039
- * Changing the format of XML and JSON service builder configs. Backwards compatible.
1040
- * Cleaned up Cookie parsing
1041
- * Trimming the default Guzzle User-Agent header
1042
- * Adding a setOnComplete() method to Commands that is called when a command completes
1043
- * Keeping track of requests that were mocked in the MockPlugin
1044
- * Fixed a caching bug in the CacheAdapterFactory
1045
- * Inspector objects can be injected into a Command object
1046
- * Refactoring a lot of code and tests to be case insensitive when dealing with headers
1047
- * Adding Guzzle\Http\Message\HeaderComparison for easy comparison of HTTP headers using a DSL
1048
- * Adding the ability to set global option overrides to service builder configs
1049
- * Adding the ability to include other service builder config files from within XML and JSON files
1050
- * Moving the parseQuery method out of Url and on to QueryString::fromString() as a static factory method.
1051
-
1052
- ## 2.5.0 - 2012-05-08
1053
-
1054
- * Major performance improvements
1055
- * [BC] Simplifying Guzzle\Common\Collection. Please check to see if you are using features that are now deprecated.
1056
- * [BC] Using a custom validation system that allows a flyweight implementation for much faster validation. No longer using Symfony2 Validation component.
1057
- * [BC] No longer supporting "{{ }}" for injecting into command or UriTemplates. Use "{}"
1058
- * Added the ability to passed parameters to all requests created by a client
1059
- * Added callback functionality to the ExponentialBackoffPlugin
1060
- * Using microtime in ExponentialBackoffPlugin to allow more granular backoff strategies.
1061
- * Rewinding request stream bodies when retrying requests
1062
- * Exception is thrown when JSON response body cannot be decoded
1063
- * Added configurable magic method calls to clients and commands. This is off by default.
1064
- * Fixed a defect that added a hash to every parsed URL part
1065
- * Fixed duplicate none generation for OauthPlugin.
1066
- * Emitting an event each time a client is generated by a ServiceBuilder
1067
- * Using an ApiParams object instead of a Collection for parameters of an ApiCommand
1068
- * cache.* request parameters should be renamed to params.cache.*
1069
- * Added the ability to set arbitrary curl options on requests (disable_wire, progress, etc.). See CurlHandle.
1070
- * Added the ability to disable type validation of service descriptions
1071
- * ServiceDescriptions and ServiceBuilders are now Serializable
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/guzzlehttp/guzzle/composer.json DELETED
@@ -1,38 +0,0 @@
1
- {
2
- "name": "guzzlehttp/guzzle",
3
- "type": "library",
4
- "description": "Guzzle is a PHP HTTP client library and framework for building RESTful web service clients",
5
- "keywords": ["framework", "http", "rest", "web service", "curl", "client", "HTTP client"],
6
- "homepage": "http://guzzlephp.org/",
7
- "license": "MIT",
8
- "authors": [
9
- {
10
- "name": "Michael Dowling",
11
- "email": "mtdowling@gmail.com",
12
- "homepage": "https://github.com/mtdowling"
13
- }
14
- ],
15
- "require": {
16
- "php": ">=5.4.0",
17
- "guzzlehttp/ringphp": "^1.1",
18
- "react/promise": "^2.2"
19
- },
20
- "require-dev": {
21
- "ext-curl": "*",
22
- "phpunit/phpunit": "^4.0"
23
- },
24
- "autoload": {
25
- "psr-4": {
26
- "GuzzleHttp\\": "src/"
27
- }
28
- },
29
- "autoload-dev": {
30
- "psr-4": {
31
- "GuzzleHttp\\Tests\\": "tests/"
32
- }
33
- },
34
- "scripts": {
35
- "test": "make test",
36
- "test-ci": "make coverage"
37
- }
38
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/guzzlehttp/ringphp/.editorconfig DELETED
@@ -1,12 +0,0 @@
1
- root = true
2
-
3
- [*]
4
- charset = utf-8
5
- end_of_line = lf
6
- indent_size = 4
7
- indent_style = space
8
- insert_final_newline = true
9
- trim_trailing_whitespace = true
10
-
11
- [{Makefile,*.mk}]
12
- indent_style = tab
 
 
 
 
 
 
 
 
 
 
 
 
vendor/guzzlehttp/ringphp/.travis.yml DELETED
@@ -1,43 +0,0 @@
1
- language: php
2
-
3
- cache:
4
- directories:
5
- - $HOME/.composer/cache/files
6
-
7
- php:
8
- - 5.4
9
- - 5.5
10
- - 5.6
11
- - 7.0
12
- - 7.1
13
- - 7.2
14
- - hhvm
15
- - nightly
16
-
17
- env:
18
- global:
19
- - TEST_COMMAND="composer test"
20
-
21
- matrix:
22
- allow_failures:
23
- - php: hhvm
24
- - php: nightly
25
- fast_finish: true
26
- include:
27
- - php: 5.4
28
- env: COMPOSER_FLAGS="--prefer-stable --prefer-lowest"
29
-
30
- before_install:
31
- - if [[ $COVERAGE != true ]]; then phpenv config-rm xdebug.ini || true; fi
32
-
33
- install:
34
- # To be removed when this issue will be resolved: https://github.com/composer/composer/issues/5355
35
- - if [[ "$COMPOSER_FLAGS" == *"--prefer-lowest"* ]]; then travis_retry composer update --prefer-dist --no-interaction --prefer-stable --quiet; fi
36
- - travis_retry composer update ${COMPOSER_FLAGS} --prefer-dist --no-interaction
37
-
38
- before_script:
39
- - ~/.nvm/nvm.sh install v0.6.14
40
- - ~/.nvm/nvm.sh run v0.6.14
41
-
42
- script:
43
- - $TEST_COMMAND
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/guzzlehttp/ringphp/CHANGELOG.md DELETED
@@ -1,118 +0,0 @@
1
- # Changelog
2
-
3
-
4
- All notable changes to this project will be documented in this file.
5
-
6
- The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
7
- and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
8
-
9
-
10
- ## [Unreleased]
11
-
12
-
13
- ## [1.1.1] - 2018-07-31
14
-
15
- ### Fixed
16
-
17
- - `continue` keyword usage on PHP 7.3
18
-
19
-
20
- ## [1.1.0] - 2015-05-19
21
-
22
- ### Added
23
-
24
- - Added `CURL_HTTP_VERSION_2_0`
25
-
26
- ### Changed
27
-
28
- - The PHP stream wrapper handler now sets `allow_self_signed` to `false` to
29
- match the cURL handler when `verify` is set to `true` or a certificate file.
30
- - Ensuring that a directory exists before using the `save_to` option.
31
- - Response protocol version is now correctly extracted from a response.
32
-
33
- ### Fixed
34
-
35
- - Fixed a bug in which the result of `CurlFactory::retryFailedRewind` did not
36
- return an array.
37
-
38
-
39
- ## [1.0.7] - 2015-03-29
40
-
41
- ### Fixed
42
-
43
- - PHP 7 fixes.
44
-
45
-
46
- ## [1.0.6] - 2015-02-26
47
-
48
- ### Changed
49
-
50
- - The multi handle of the CurlMultiHandler is now created lazily.
51
-
52
- ### Fixed
53
-
54
- - Bug fix: futures now extend from React's PromiseInterface to ensure that they
55
- are properly forwarded down the promise chain.
56
-
57
-
58
- ## [1.0.5] - 2014-12-10
59
-
60
- ### Added
61
-
62
- - Adding more error information to PHP stream wrapper exceptions.
63
- - Added digest auth integration test support to test server.
64
-
65
-
66
- ## [1.0.4] - 2014-12-01
67
-
68
- ### Added
69
-
70
- - Added support for older versions of cURL that do not have CURLOPT_TIMEOUT_MS.
71
- - Added a fix to the StreamHandler to return a `FutureArrayInterface` when an
72
-
73
- ### Changed
74
-
75
- - Setting debug to `false` does not enable debug output. error occurs.
76
-
77
-
78
- ## [1.0.3] - 2014-11-03
79
-
80
- ### Fixed
81
-
82
- - Setting the `header` stream option as a string to be compatible with GAE.
83
- - Header parsing now ensures that header order is maintained in the parsed
84
- message.
85
-
86
-
87
- ## [1.0.2] - 2014-10-28
88
-
89
- ### Fixed
90
-
91
- - Now correctly honoring a `version` option is supplied in a request.
92
- See https://github.com/guzzle/RingPHP/pull/8
93
-
94
-
95
- ## [1.0.1] - 2014-10-26
96
-
97
- ### Fixed
98
-
99
- - Fixed a header parsing issue with the `CurlHandler` and `CurlMultiHandler`
100
- that caused cURL requests with multiple responses to merge repsonses together
101
- (e.g., requests with digest authentication).
102
-
103
-
104
- ## 1.0.0 - 2014-10-12
105
-
106
- - Initial release
107
-
108
-
109
- [Unreleased]: https://github.com/guzzle/RingPHP/compare/1.1.1...HEAD
110
- [1.1.1]: https://github.com/guzzle/RingPHP/compare/1.1.0...1.1.1
111
- [1.1.0]: https://github.com/guzzle/RingPHP/compare/1.0.7...1.1.0
112
- [1.0.7]: https://github.com/guzzle/RingPHP/compare/1.0.6...1.0.7
113
- [1.0.6]: https://github.com/guzzle/RingPHP/compare/1.0.5...1.0.6
114
- [1.0.5]: https://github.com/guzzle/RingPHP/compare/1.0.4...1.0.5
115
- [1.0.4]: https://github.com/guzzle/RingPHP/compare/1.0.3...1.0.4
116
- [1.0.3]: https://github.com/guzzle/RingPHP/compare/1.0.2...1.0.3
117
- [1.0.2]: https://github.com/guzzle/RingPHP/compare/1.0.1...1.0.2
118
- [1.0.1]: https://github.com/guzzle/RingPHP/compare/1.0.0...1.0.1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/guzzlehttp/ringphp/composer.json DELETED
@@ -1,43 +0,0 @@
1
- {
2
- "name": "guzzlehttp/ringphp",
3
- "description": "Provides a simple API and specification that abstracts away the details of HTTP into a single PHP function.",
4
- "license": "MIT",
5
- "authors": [
6
- {
7
- "name": "Michael Dowling",
8
- "email": "mtdowling@gmail.com",
9
- "homepage": "https://github.com/mtdowling"
10
- }
11
- ],
12
- "require": {
13
- "php": ">=5.4.0",
14
- "guzzlehttp/streams": "~3.0",
15
- "react/promise": "~2.0"
16
- },
17
- "require-dev": {
18
- "ext-curl": "*",
19
- "phpunit/phpunit": "~4.0"
20
- },
21
- "suggest": {
22
- "ext-curl": "Guzzle will use specific adapters if cURL is present"
23
- },
24
- "autoload": {
25
- "psr-4": {
26
- "GuzzleHttp\\Ring\\": "src/"
27
- }
28
- },
29
- "autoload-dev": {
30
- "psr-4": {
31
- "GuzzleHttp\\Tests\\Ring\\": "tests/"
32
- }
33
- },
34
- "scripts": {
35
- "test": "make test",
36
- "test-ci": "make coverage"
37
- },
38
- "extra": {
39
- "branch-alias": {
40
- "dev-master": "1.1-dev"
41
- }
42
- }
43
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/guzzlehttp/ringphp/phpunit.xml.dist DELETED
@@ -1,14 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <phpunit bootstrap="./tests/bootstrap.php"
3
- colors="true">
4
- <testsuites>
5
- <testsuite>
6
- <directory>tests</directory>
7
- </testsuite>
8
- </testsuites>
9
- <filter>
10
- <whitelist>
11
- <directory suffix=".php">src</directory>
12
- </whitelist>
13
- </filter>
14
- </phpunit>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/guzzlehttp/streams/.travis.yml DELETED
@@ -1,17 +0,0 @@
1
- language: php
2
-
3
- php:
4
- - 5.4
5
- - 5.5
6
- - 5.6
7
- - hhvm
8
-
9
- before_script:
10
- - composer self-update
11
- - composer install --no-interaction --prefer-source --dev
12
-
13
- script: vendor/bin/phpunit
14
-
15
- matrix:
16
- allow_failures:
17
- - php: hhvm
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/guzzlehttp/streams/composer.json DELETED
@@ -1,28 +0,0 @@
1
- {
2
- "name": "guzzlehttp/streams",
3
- "description": "Provides a simple abstraction over streams of data",
4
- "homepage": "http://guzzlephp.org/",
5
- "keywords": ["stream", "guzzle"],
6
- "license": "MIT",
7
- "authors": [
8
- {
9
- "name": "Michael Dowling",
10
- "email": "mtdowling@gmail.com",
11
- "homepage": "https://github.com/mtdowling"
12
- }
13
- ],
14
- "require": {
15
- "php": ">=5.4.0"
16
- },
17
- "require-dev": {
18
- "phpunit/phpunit": "~4.0"
19
- },
20
- "autoload": {
21
- "psr-4": { "GuzzleHttp\\Stream\\": "src/" }
22
- },
23
- "extra": {
24
- "branch-alias": {
25
- "dev-master": "3.0-dev"
26
- }
27
- }
28
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/guzzlehttp/streams/phpunit.xml.dist DELETED
@@ -1,17 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <phpunit bootstrap="./vendor/autoload.php"
3
- colors="true">
4
- <testsuites>
5
- <testsuite>
6
- <directory>tests</directory>
7
- </testsuite>
8
- </testsuites>
9
- <filter>
10
- <whitelist>
11
- <directory suffix=".php">src</directory>
12
- <exclude>
13
- <file>src/functions.php</file>
14
- </exclude>
15
- </whitelist>
16
- </filter>
17
- </phpunit>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/monolog/monolog/CHANGELOG.md DELETED
@@ -1,370 +0,0 @@
1
- ### 1.24.0 (2018-11-05)
2
-
3
- * Added a `ResettableInterface` in order to reset/reset/clear/flush handlers and processors
4
- * Added a `ProcessorInterface` as an optional way to label a class as being a processor (mostly useful for autowiring dependency containers)
5
- * Added a way to log signals being received using Monolog\SignalHandler
6
- * Added ability to customize error handling at the Logger level using Logger::setExceptionHandler
7
- * Added InsightOpsHandler to migrate users of the LogEntriesHandler
8
- * Added protection to NormalizerHandler against circular and very deep structures, it now stops normalizing at a depth of 9
9
- * Added capture of stack traces to ErrorHandler when logging PHP errors
10
- * Added RavenHandler support for a `contexts` context or extra key to forward that to Sentry's contexts
11
- * Added forwarding of context info to FluentdFormatter
12
- * Added SocketHandler::setChunkSize to override the default chunk size in case you must send large log lines to rsyslog for example
13
- * Added ability to extend/override BrowserConsoleHandler
14
- * Added SlackWebhookHandler::getWebhookUrl and SlackHandler::getToken to enable class extensibility
15
- * Added SwiftMailerHandler::getSubjectFormatter to enable class extensibility
16
- * Dropped official support for HHVM in test builds
17
- * Fixed normalization of exception traces when call_user_func is used to avoid serializing objects and the data they contain
18
- * Fixed naming of fields in Slack handler, all field names are now capitalized in all cases
19
- * Fixed HipChatHandler bug where slack dropped messages randomly
20
- * Fixed normalization of objects in Slack handlers
21
- * Fixed support for PHP7's Throwable in NewRelicHandler
22
- * Fixed race bug when StreamHandler sometimes incorrectly reported it failed to create a directory
23
- * Fixed table row styling issues in HtmlFormatter
24
- * Fixed RavenHandler dropping the message when logging exception
25
- * Fixed WhatFailureGroupHandler skipping processors when using handleBatch
26
- and implement it where possible
27
- * Fixed display of anonymous class names
28
-
29
- ### 1.23.0 (2017-06-19)
30
-
31
- * Improved SyslogUdpHandler's support for RFC5424 and added optional `$ident` argument
32
- * Fixed GelfHandler truncation to be per field and not per message
33
- * Fixed compatibility issue with PHP <5.3.6
34
- * Fixed support for headless Chrome in ChromePHPHandler
35
- * Fixed support for latest Aws SDK in DynamoDbHandler
36
- * Fixed support for SwiftMailer 6.0+ in SwiftMailerHandler
37
-
38
- ### 1.22.1 (2017-03-13)
39
-
40
- * Fixed lots of minor issues in the new Slack integrations
41
- * Fixed support for allowInlineLineBreaks in LineFormatter when formatting exception backtraces
42
-
43
- ### 1.22.0 (2016-11-26)
44
-
45
- * Added SlackbotHandler and SlackWebhookHandler to set up Slack integration more easily
46
- * Added MercurialProcessor to add mercurial revision and branch names to log records
47
- * Added support for AWS SDK v3 in DynamoDbHandler
48
- * Fixed fatal errors occuring when normalizing generators that have been fully consumed
49
- * Fixed RollbarHandler to include a level (rollbar level), monolog_level (original name), channel and datetime (unix)
50
- * Fixed RollbarHandler not flushing records automatically, calling close() explicitly is not necessary anymore
51
- * Fixed SyslogUdpHandler to avoid sending empty frames
52
- * Fixed a few PHP 7.0 and 7.1 compatibility issues
53
-
54
- ### 1.21.0 (2016-07-29)
55
-
56
- * Break: Reverted the addition of $context when the ErrorHandler handles regular php errors from 1.20.0 as it was causing issues
57
- * Added support for more formats in RotatingFileHandler::setFilenameFormat as long as they have Y, m and d in order
58
- * Added ability to format the main line of text the SlackHandler sends by explictly setting a formatter on the handler
59
- * Added information about SoapFault instances in NormalizerFormatter
60
- * Added $handleOnlyReportedErrors option on ErrorHandler::registerErrorHandler (default true) to allow logging of all errors no matter the error_reporting level
61
-
62
- ### 1.20.0 (2016-07-02)
63
-
64
- * Added FingersCrossedHandler::activate() to manually trigger the handler regardless of the activation policy
65
- * Added StreamHandler::getUrl to retrieve the stream's URL
66
- * Added ability to override addRow/addTitle in HtmlFormatter
67
- * Added the $context to context information when the ErrorHandler handles a regular php error
68
- * Deprecated RotatingFileHandler::setFilenameFormat to only support 3 formats: Y, Y-m and Y-m-d
69
- * Fixed WhatFailureGroupHandler to work with PHP7 throwables
70
- * Fixed a few minor bugs
71
-
72
- ### 1.19.0 (2016-04-12)
73
-
74
- * Break: StreamHandler will not close streams automatically that it does not own. If you pass in a stream (not a path/url), then it will not close it for you. You can retrieve those using getStream() if needed
75
- * Added DeduplicationHandler to remove duplicate records from notifications across multiple requests, useful for email or other notifications on errors
76
- * Added ability to use `%message%` and other LineFormatter replacements in the subject line of emails sent with NativeMailHandler and SwiftMailerHandler
77
- * Fixed HipChatHandler handling of long messages
78
-
79
- ### 1.18.2 (2016-04-02)
80
-
81
- * Fixed ElasticaFormatter to use more precise dates
82
- * Fixed GelfMessageFormatter sending too long messages
83
-
84
- ### 1.18.1 (2016-03-13)
85
-
86
- * Fixed SlackHandler bug where slack dropped messages randomly
87
- * Fixed RedisHandler issue when using with the PHPRedis extension
88
- * Fixed AmqpHandler content-type being incorrectly set when using with the AMQP extension
89
- * Fixed BrowserConsoleHandler regression
90
-
91
- ### 1.18.0 (2016-03-01)
92
-
93
- * Added optional reduction of timestamp precision via `Logger->useMicrosecondTimestamps(false)`, disabling it gets you a bit of performance boost but reduces the precision to the second instead of microsecond
94
- * Added possibility to skip some extra stack frames in IntrospectionProcessor if you have some library wrapping Monolog that is always adding frames
95
- * Added `Logger->withName` to clone a logger (keeping all handlers) with a new name
96
- * Added FluentdFormatter for the Fluentd unix socket protocol
97
- * Added HandlerWrapper base class to ease the creation of handler wrappers, just extend it and override as needed
98
- * Added support for replacing context sub-keys using `%context.*%` in LineFormatter
99
- * Added support for `payload` context value in RollbarHandler
100
- * Added setRelease to RavenHandler to describe the application version, sent with every log
101
- * Added support for `fingerprint` context value in RavenHandler
102
- * Fixed JSON encoding errors that would gobble up the whole log record, we now handle those more gracefully by dropping chars as needed
103
- * Fixed write timeouts in SocketHandler and derivatives, set to 10sec by default, lower it with `setWritingTimeout()`
104
- * Fixed PHP7 compatibility with regard to Exception/Throwable handling in a few places
105
-
106
- ### 1.17.2 (2015-10-14)
107
-
108
- * Fixed ErrorHandler compatibility with non-Monolog PSR-3 loggers
109
- * Fixed SlackHandler handling to use slack functionalities better
110
- * Fixed SwiftMailerHandler bug when sending multiple emails they all had the same id
111
- * Fixed 5.3 compatibility regression
112
-
113
- ### 1.17.1 (2015-08-31)
114
-
115
- * Fixed RollbarHandler triggering PHP notices
116
-
117
- ### 1.17.0 (2015-08-30)
118
-
119
- * Added support for `checksum` and `release` context/extra values in RavenHandler
120
- * Added better support for exceptions in RollbarHandler
121
- * Added UidProcessor::getUid
122
- * Added support for showing the resource type in NormalizedFormatter
123
- * Fixed IntrospectionProcessor triggering PHP notices
124
-
125
- ### 1.16.0 (2015-08-09)
126
-
127
- * Added IFTTTHandler to notify ifttt.com triggers
128
- * Added Logger::setHandlers() to allow setting/replacing all handlers
129
- * Added $capSize in RedisHandler to cap the log size
130
- * Fixed StreamHandler creation of directory to only trigger when the first log write happens
131
- * Fixed bug in the handling of curl failures
132
- * Fixed duplicate logging of fatal errors when both error and fatal error handlers are registered in monolog's ErrorHandler
133
- * Fixed missing fatal errors records with handlers that need to be closed to flush log records
134
- * Fixed TagProcessor::addTags support for associative arrays
135
-
136
- ### 1.15.0 (2015-07-12)
137
-
138
- * Added addTags and setTags methods to change a TagProcessor
139
- * Added automatic creation of directories if they are missing for a StreamHandler to open a log file
140
- * Added retry functionality to Loggly, Cube and Mandrill handlers so they retry up to 5 times in case of network failure
141
- * Fixed process exit code being incorrectly reset to 0 if ErrorHandler::registerExceptionHandler was used
142
- * Fixed HTML/JS escaping in BrowserConsoleHandler
143
- * Fixed JSON encoding errors being silently suppressed (PHP 5.5+ only)
144
-
145
- ### 1.14.0 (2015-06-19)
146
-
147
- * Added PHPConsoleHandler to send record to Chrome's PHP Console extension and library
148
- * Added support for objects implementing __toString in the NormalizerFormatter
149
- * Added support for HipChat's v2 API in HipChatHandler
150
- * Added Logger::setTimezone() to initialize the timezone monolog should use in case date.timezone isn't correct for your app
151
- * Added an option to send formatted message instead of the raw record on PushoverHandler via ->useFormattedMessage(true)
152
- * Fixed curl errors being silently suppressed
153
-
154
- ### 1.13.1 (2015-03-09)
155
-
156
- * Fixed regression in HipChat requiring a new token to be created
157
-
158
- ### 1.13.0 (2015-03-05)
159
-
160
- * Added Registry::hasLogger to check for the presence of a logger instance
161
- * Added context.user support to RavenHandler
162
- * Added HipChat API v2 support in the HipChatHandler
163
- * Added NativeMailerHandler::addParameter to pass params to the mail() process
164
- * Added context data to SlackHandler when $includeContextAndExtra is true
165
- * Added ability to customize the Swift_Message per-email in SwiftMailerHandler
166
- * Fixed SwiftMailerHandler to lazily create message instances if a callback is provided
167
- * Fixed serialization of INF and NaN values in Normalizer and LineFormatter
168
-
169
- ### 1.12.0 (2014-12-29)
170
-
171
- * Break: HandlerInterface::isHandling now receives a partial record containing only a level key. This was always the intent and does not break any Monolog handler but is strictly speaking a BC break and you should check if you relied on any other field in your own handlers.
172
- * Added PsrHandler to forward records to another PSR-3 logger
173
- * Added SamplingHandler to wrap around a handler and include only every Nth record
174
- * Added MongoDBFormatter to support better storage with MongoDBHandler (it must be enabled manually for now)
175
- * Added exception codes in the output of most formatters
176
- * Added LineFormatter::includeStacktraces to enable exception stack traces in logs (uses more than one line)
177
- * Added $useShortAttachment to SlackHandler to minify attachment size and $includeExtra to append extra data
178
- * Added $host to HipChatHandler for users of private instances
179
- * Added $transactionName to NewRelicHandler and support for a transaction_name context value
180
- * Fixed MandrillHandler to avoid outputing API call responses
181
- * Fixed some non-standard behaviors in SyslogUdpHandler
182
-
183
- ### 1.11.0 (2014-09-30)
184
-
185
- * Break: The NewRelicHandler extra and context data are now prefixed with extra_ and context_ to avoid clashes. Watch out if you have scripts reading those from the API and rely on names
186
- * Added WhatFailureGroupHandler to suppress any exception coming from the wrapped handlers and avoid chain failures if a logging service fails
187
- * Added MandrillHandler to send emails via the Mandrillapp.com API
188
- * Added SlackHandler to log records to a Slack.com account
189
- * Added FleepHookHandler to log records to a Fleep.io account
190
- * Added LogglyHandler::addTag to allow adding tags to an existing handler
191
- * Added $ignoreEmptyContextAndExtra to LineFormatter to avoid empty [] at the end
192
- * Added $useLocking to StreamHandler and RotatingFileHandler to enable flock() while writing
193
- * Added support for PhpAmqpLib in the AmqpHandler
194
- * Added FingersCrossedHandler::clear and BufferHandler::clear to reset them between batches in long running jobs
195
- * Added support for adding extra fields from $_SERVER in the WebProcessor
196
- * Fixed support for non-string values in PrsLogMessageProcessor
197
- * Fixed SwiftMailer messages being sent with the wrong date in long running scripts
198
- * Fixed minor PHP 5.6 compatibility issues
199
- * Fixed BufferHandler::close being called twice
200
-
201
- ### 1.10.0 (2014-06-04)
202
-
203
- * Added Logger::getHandlers() and Logger::getProcessors() methods
204
- * Added $passthruLevel argument to FingersCrossedHandler to let it always pass some records through even if the trigger level is not reached
205
- * Added support for extra data in NewRelicHandler
206
- * Added $expandNewlines flag to the ErrorLogHandler to create multiple log entries when a message has multiple lines
207
-
208
- ### 1.9.1 (2014-04-24)
209
-
210
- * Fixed regression in RotatingFileHandler file permissions
211
- * Fixed initialization of the BufferHandler to make sure it gets flushed after receiving records
212
- * Fixed ChromePHPHandler and FirePHPHandler's activation strategies to be more conservative
213
-
214
- ### 1.9.0 (2014-04-20)
215
-
216
- * Added LogEntriesHandler to send logs to a LogEntries account
217
- * Added $filePermissions to tweak file mode on StreamHandler and RotatingFileHandler
218
- * Added $useFormatting flag to MemoryProcessor to make it send raw data in bytes
219
- * Added support for table formatting in FirePHPHandler via the table context key
220
- * Added a TagProcessor to add tags to records, and support for tags in RavenHandler
221
- * Added $appendNewline flag to the JsonFormatter to enable using it when logging to files
222
- * Added sound support to the PushoverHandler
223
- * Fixed multi-threading support in StreamHandler
224
- * Fixed empty headers issue when ChromePHPHandler received no records
225
- * Fixed default format of the ErrorLogHandler
226
-
227
- ### 1.8.0 (2014-03-23)
228
-
229
- * Break: the LineFormatter now strips newlines by default because this was a bug, set $allowInlineLineBreaks to true if you need them
230
- * Added BrowserConsoleHandler to send logs to any browser's console via console.log() injection in the output
231
- * Added FilterHandler to filter records and only allow those of a given list of levels through to the wrapped handler
232
- * Added FlowdockHandler to send logs to a Flowdock account
233
- * Added RollbarHandler to send logs to a Rollbar account
234
- * Added HtmlFormatter to send prettier log emails with colors for each log level
235
- * Added GitProcessor to add the current branch/commit to extra record data
236
- * Added a Monolog\Registry class to allow easier global access to pre-configured loggers
237
- * Added support for the new official graylog2/gelf-php lib for GelfHandler, upgrade if you can by replacing the mlehner/gelf-php requirement
238
- * Added support for HHVM
239
- * Added support for Loggly batch uploads
240
- * Added support for tweaking the content type and encoding in NativeMailerHandler
241
- * Added $skipClassesPartials to tweak the ignored classes in the IntrospectionProcessor
242
- * Fixed batch request support in GelfHandler
243
-
244
- ### 1.7.0 (2013-11-14)
245
-
246
- * Added ElasticSearchHandler to send logs to an Elastic Search server
247
- * Added DynamoDbHandler and ScalarFormatter to send logs to Amazon's Dynamo DB
248
- * Added SyslogUdpHandler to send logs to a remote syslogd server
249
- * Added LogglyHandler to send logs to a Loggly account
250
- * Added $level to IntrospectionProcessor so it only adds backtraces when needed
251
- * Added $version to LogstashFormatter to allow using the new v1 Logstash format
252
- * Added $appName to NewRelicHandler
253
- * Added configuration of Pushover notification retries/expiry
254
- * Added $maxColumnWidth to NativeMailerHandler to change the 70 chars default
255
- * Added chainability to most setters for all handlers
256
- * Fixed RavenHandler batch processing so it takes the message from the record with highest priority
257
- * Fixed HipChatHandler batch processing so it sends all messages at once
258
- * Fixed issues with eAccelerator
259
- * Fixed and improved many small things
260
-
261
- ### 1.6.0 (2013-07-29)
262
-
263
- * Added HipChatHandler to send logs to a HipChat chat room
264
- * Added ErrorLogHandler to send logs to PHP's error_log function
265
- * Added NewRelicHandler to send logs to NewRelic's service
266
- * Added Monolog\ErrorHandler helper class to register a Logger as exception/error/fatal handler
267
- * Added ChannelLevelActivationStrategy for the FingersCrossedHandler to customize levels by channel
268
- * Added stack traces output when normalizing exceptions (json output & co)
269
- * Added Monolog\Logger::API constant (currently 1)
270
- * Added support for ChromePHP's v4.0 extension
271
- * Added support for message priorities in PushoverHandler, see $highPriorityLevel and $emergencyLevel
272
- * Added support for sending messages to multiple users at once with the PushoverHandler
273
- * Fixed RavenHandler's support for batch sending of messages (when behind a Buffer or FingersCrossedHandler)
274
- * Fixed normalization of Traversables with very large data sets, only the first 1000 items are shown now
275
- * Fixed issue in RotatingFileHandler when an open_basedir restriction is active
276
- * Fixed minor issues in RavenHandler and bumped the API to Raven 0.5.0
277
- * Fixed SyslogHandler issue when many were used concurrently with different facilities
278
-
279
- ### 1.5.0 (2013-04-23)
280
-
281
- * Added ProcessIdProcessor to inject the PID in log records
282
- * Added UidProcessor to inject a unique identifier to all log records of one request/run
283
- * Added support for previous exceptions in the LineFormatter exception serialization
284
- * Added Monolog\Logger::getLevels() to get all available levels
285
- * Fixed ChromePHPHandler so it avoids sending headers larger than Chrome can handle
286
-
287
- ### 1.4.1 (2013-04-01)
288
-
289
- * Fixed exception formatting in the LineFormatter to be more minimalistic
290
- * Fixed RavenHandler's handling of context/extra data, requires Raven client >0.1.0
291
- * Fixed log rotation in RotatingFileHandler to work with long running scripts spanning multiple days
292
- * Fixed WebProcessor array access so it checks for data presence
293
- * Fixed Buffer, Group and FingersCrossed handlers to make use of their processors
294
-
295
- ### 1.4.0 (2013-02-13)
296
-
297
- * Added RedisHandler to log to Redis via the Predis library or the phpredis extension
298
- * Added ZendMonitorHandler to log to the Zend Server monitor
299
- * Added the possibility to pass arrays of handlers and processors directly in the Logger constructor
300
- * Added `$useSSL` option to the PushoverHandler which is enabled by default
301
- * Fixed ChromePHPHandler and FirePHPHandler issue when multiple instances are used simultaneously
302
- * Fixed header injection capability in the NativeMailHandler
303
-
304
- ### 1.3.1 (2013-01-11)
305
-
306
- * Fixed LogstashFormatter to be usable with stream handlers
307
- * Fixed GelfMessageFormatter levels on Windows
308
-
309
- ### 1.3.0 (2013-01-08)
310
-
311
- * Added PSR-3 compliance, the `Monolog\Logger` class is now an instance of `Psr\Log\LoggerInterface`
312
- * Added PsrLogMessageProcessor that you can selectively enable for full PSR-3 compliance
313
- * Added LogstashFormatter (combine with SocketHandler or StreamHandler to send logs to Logstash)
314
- * Added PushoverHandler to send mobile notifications
315
- * Added CouchDBHandler and DoctrineCouchDBHandler
316
- * Added RavenHandler to send data to Sentry servers
317
- * Added support for the new MongoClient class in MongoDBHandler
318
- * Added microsecond precision to log records' timestamps
319
- * Added `$flushOnOverflow` param to BufferHandler to flush by batches instead of losing
320
- the oldest entries
321
- * Fixed normalization of objects with cyclic references
322
-
323
- ### 1.2.1 (2012-08-29)
324
-
325
- * Added new $logopts arg to SyslogHandler to provide custom openlog options
326
- * Fixed fatal error in SyslogHandler
327
-
328
- ### 1.2.0 (2012-08-18)
329
-
330
- * Added AmqpHandler (for use with AMQP servers)
331
- * Added CubeHandler
332
- * Added NativeMailerHandler::addHeader() to send custom headers in mails
333
- * Added the possibility to specify more than one recipient in NativeMailerHandler
334
- * Added the possibility to specify float timeouts in SocketHandler
335
- * Added NOTICE and EMERGENCY levels to conform with RFC 5424
336
- * Fixed the log records to use the php default timezone instead of UTC
337
- * Fixed BufferHandler not being flushed properly on PHP fatal errors
338
- * Fixed normalization of exotic resource types
339
- * Fixed the default format of the SyslogHandler to avoid duplicating datetimes in syslog
340
-
341
- ### 1.1.0 (2012-04-23)
342
-
343
- * Added Monolog\Logger::isHandling() to check if a handler will
344
- handle the given log level
345
- * Added ChromePHPHandler
346
- * Added MongoDBHandler
347
- * Added GelfHandler (for use with Graylog2 servers)
348
- * Added SocketHandler (for use with syslog-ng for example)
349
- * Added NormalizerFormatter
350
- * Added the possibility to change the activation strategy of the FingersCrossedHandler
351
- * Added possibility to show microseconds in logs
352
- * Added `server` and `referer` to WebProcessor output
353
-
354
- ### 1.0.2 (2011-10-24)
355
-
356
- * Fixed bug in IE with large response headers and FirePHPHandler
357
-
358
- ### 1.0.1 (2011-08-25)
359
-
360
- * Added MemoryPeakUsageProcessor and MemoryUsageProcessor
361
- * Added Monolog\Logger::getName() to get a logger's channel name
362
-
363
- ### 1.0.0 (2011-07-06)
364
-
365
- * Added IntrospectionProcessor to get info from where the logger was called
366
- * Fixed WebProcessor in CLI
367
-
368
- ### 1.0.0-RC1 (2011-07-01)
369
-
370
- * Initial release
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/monolog/monolog/composer.json DELETED
@@ -1,66 +0,0 @@
1
- {
2
- "name": "monolog/monolog",
3
- "description": "Sends your logs to files, sockets, inboxes, databases and various web services",
4
- "keywords": ["log", "logging", "psr-3"],
5
- "homepage": "http://github.com/Seldaek/monolog",
6
- "type": "library",
7
- "license": "MIT",
8
- "authors": [
9
- {
10
- "name": "Jordi Boggiano",
11
- "email": "j.boggiano@seld.be",
12
- "homepage": "http://seld.be"
13
- }
14
- ],
15
- "require": {
16
- "php": ">=5.3.0",
17
- "psr/log": "~1.0"
18
- },
19
- "require-dev": {
20
- "phpunit/phpunit": "~4.5",
21
- "graylog2/gelf-php": "~1.0",
22
- "sentry/sentry": "^0.13",
23
- "ruflin/elastica": ">=0.90 <3.0",
24
- "doctrine/couchdb": "~1.0@dev",
25
- "aws/aws-sdk-php": "^2.4.9 || ^3.0",
26
- "php-amqplib/php-amqplib": "~2.4",
27
- "swiftmailer/swiftmailer": "^5.3|^6.0",
28
- "php-console/php-console": "^3.1.3",
29
- "phpunit/phpunit-mock-objects": "2.3.0",
30
- "jakub-onderka/php-parallel-lint": "0.9"
31
- },
32
- "_": "phpunit/phpunit-mock-objects required in 2.3.0 due to https://github.com/sebastianbergmann/phpunit-mock-objects/issues/223 - needs hhvm 3.8+ on travis",
33
- "suggest": {
34
- "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server",
35
- "sentry/sentry": "Allow sending log messages to a Sentry server",
36
- "doctrine/couchdb": "Allow sending log messages to a CouchDB server",
37
- "ruflin/elastica": "Allow sending log messages to an Elastic Search server",
38
- "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib",
39
- "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)",
40
- "ext-mongo": "Allow sending log messages to a MongoDB server",
41
- "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver",
42
- "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB",
43
- "rollbar/rollbar": "Allow sending log messages to Rollbar",
44
- "php-console/php-console": "Allow sending log messages to Google Chrome"
45
- },
46
- "autoload": {
47
- "psr-4": {"Monolog\\": "src/Monolog"}
48
- },
49
- "autoload-dev": {
50
- "psr-4": {"Monolog\\": "tests/Monolog"}
51
- },
52
- "provide": {
53
- "psr/log-implementation": "1.0.0"
54
- },
55
- "extra": {
56
- "branch-alias": {
57
- "dev-master": "2.0.x-dev"
58
- }
59
- },
60
- "scripts": {
61
- "test": [
62
- "parallel-lint . --exclude vendor",
63
- "phpunit"
64
- ]
65
- }
66
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/monolog/monolog/phpunit.xml.dist DELETED
@@ -1,19 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
-
3
- <phpunit bootstrap="vendor/autoload.php" colors="true">
4
- <testsuites>
5
- <testsuite name="Monolog Test Suite">
6
- <directory>tests/Monolog/</directory>
7
- </testsuite>
8
- </testsuites>
9
-
10
- <filter>
11
- <whitelist>
12
- <directory suffix=".php">src/Monolog/</directory>
13
- </whitelist>
14
- </filter>
15
-
16
- <php>
17
- <ini name="date.timezone" value="UTC"/>
18
- </php>
19
- </phpunit>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/paragonie/random_compat/composer.json DELETED
@@ -1,34 +0,0 @@
1
- {
2
- "name": "paragonie/random_compat",
3
- "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7",
4
- "keywords": [
5
- "csprng",
6
- "random",
7
- "polyfill",
8
- "pseudorandom"
9
- ],
10
- "license": "MIT",
11
- "type": "library",
12
- "authors": [
13
- {
14
- "name": "Paragon Initiative Enterprises",
15
- "email": "security@paragonie.com",
16
- "homepage": "https://paragonie.com"
17
- }
18
- ],
19
- "support": {
20
- "issues": "https://github.com/paragonie/random_compat/issues",
21
- "email": "info@paragonie.com",
22
- "source": "https://github.com/paragonie/random_compat"
23
- },
24
- "require": {
25
- "php": "^7"
26
- },
27
- "require-dev": {
28
- "vimeo/psalm": "^1",
29
- "phpunit/phpunit": "4.*|5.*"
30
- },
31
- "suggest": {
32
- "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes."
33
- }
34
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/paragonie/random_compat/lib/random.php ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Random_* Compatibility Library
4
+ * for using the new PHP 7 random_* API in PHP 5 projects
5
+ *
6
+ * @version 2.99.99
7
+ * @released 2018-06-06
8
+ *
9
+ * The MIT License (MIT)
10
+ *
11
+ * Copyright (c) 2015 - 2018 Paragon Initiative Enterprises
12
+ *
13
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
14
+ * of this software and associated documentation files (the "Software"), to deal
15
+ * in the Software without restriction, including without limitation the rights
16
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
17
+ * copies of the Software, and to permit persons to whom the Software is
18
+ * furnished to do so, subject to the following conditions:
19
+ *
20
+ * The above copyright notice and this permission notice shall be included in
21
+ * all copies or substantial portions of the Software.
22
+ *
23
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
24
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
25
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
26
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
27
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
28
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
29
+ * SOFTWARE.
30
+ */
31
+
32
+ // NOP
vendor/psr/log/composer.json DELETED
@@ -1,26 +0,0 @@
1
- {
2
- "name": "psr/log",
3
- "description": "Common interface for logging libraries",
4
- "keywords": ["psr", "psr-3", "log"],
5
- "homepage": "https://github.com/php-fig/log",
6
- "license": "MIT",
7
- "authors": [
8
- {
9
- "name": "PHP-FIG",
10
- "homepage": "http://www.php-fig.org/"
11
- }
12
- ],
13
- "require": {
14
- "php": ">=5.3.0"
15
- },
16
- "autoload": {
17
- "psr-4": {
18
- "Psr\\Log\\": "Psr/Log/"
19
- }
20
- },
21
- "extra": {
22
- "branch-alias": {
23
- "dev-master": "1.0.x-dev"
24
- }
25
- }
26
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/react/promise/.travis.yml DELETED
@@ -1,28 +0,0 @@
1
- language: php
2
-
3
- php:
4
- - 5.4
5
- - 5.5
6
- - 5.6
7
- - 7.0
8
- - 7.1
9
- - nightly # ignore errors, see below
10
- - hhvm # ignore errors, see below
11
-
12
- # lock distro so new future defaults will not break the build
13
- dist: trusty
14
-
15
- matrix:
16
- allow_failures:
17
- - php: hhvm
18
- - php: nightly
19
-
20
- install:
21
- - composer install
22
-
23
- script:
24
- - ./vendor/bin/phpunit -v --coverage-text --coverage-clover=./build/logs/clover.xml
25
-
26
- after_script:
27
- - if [ -f ./build/logs/clover.xml ]; then travis_retry composer require satooshi/php-coveralls --no-interaction --update-with-dependencies; fi
28
- - if [ -f ./build/logs/clover.xml ]; then php vendor/bin/coveralls -v; fi
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/react/promise/CHANGELOG.md DELETED
@@ -1,135 +0,0 @@
1
- CHANGELOG for 2.x
2
- =================
3
-
4
- * 2.7.1 (2018-01-07)
5
-
6
- * Fix: file_exists warning when resolving with long strings.
7
- (#130 by @sbesselsen)
8
- * Improve performance by prefixing all global functions calls with \ to skip the look up and resolve process and go straight to the global function.
9
- (#133 by @WyriHaximus)
10
-
11
- * 2.7.0 (2018-06-13)
12
-
13
- * Feature: Improve memory consumption for pending promises by using static internal callbacks without binding to self.
14
- (#124 by @clue)
15
-
16
- * 2.6.0 (2018-06-11)
17
-
18
- * Feature: Significantly improve memory consumption and performance by only passing resolver args
19
- to resolver and canceller if callback requires them. Also use static callbacks without
20
- binding to promise, clean up canceller function reference when they are no longer
21
- needed and hide resolver and canceller references from call stack on PHP 7+.
22
- (#113, #115, #116, #117, #118, #119 and #123 by @clue)
23
-
24
- These changes combined mean that rejecting promises with an `Exception` should
25
- no longer cause any internal circular references which could cause some unexpected
26
- memory growth in previous versions. By explicitly avoiding and explicitly
27
- cleaning up said references, we can avoid relying on PHP's circular garbage collector
28
- to kick in which significantly improves performance when rejecting many promises.
29
-
30
- * Mark legacy progress support / notification API as deprecated
31
- (#112 by @clue)
32
-
33
- * Recommend rejecting promises by throwing an exception
34
- (#114 by @jsor)
35
-
36
- * Improve documentation to properly instantiate LazyPromise
37
- (#121 by @holtkamp)
38
-
39
- * Follower cancellation propagation was originally planned for this release
40
- but has been reverted for now and is planned for a future release.
41
- (#99 by @jsor and #122 by @clue)
42
-
43
- * 2.5.1 (2017-03-25)
44
-
45
- * Fix circular references when resolving with a promise which follows
46
- itself (#94).
47
-
48
- * 2.5.0 (2016-12-22)
49
-
50
- * Revert automatic cancellation of pending collection promises once the
51
- output promise resolves. This was introduced in 42d86b7 (PR #36, released
52
- in [v2.3.0](https://github.com/reactphp/promise/releases/tag/v2.3.0)) and
53
- was both unintended and backward incompatible.
54
-
55
- If you need automatic cancellation, you can use something like:
56
-
57
- ```php
58
- function allAndCancel(array $promises)
59
- {
60
- return \React\Promise\all($promises)
61
- ->always(function() use ($promises) {
62
- foreach ($promises as $promise) {
63
- if ($promise instanceof \React\Promise\CancellablePromiseInterface) {
64
- $promise->cancel();
65
- }
66
- }
67
- });
68
- }
69
- ```
70
- * `all()` and `map()` functions now preserve the order of the array (#77).
71
- * Fix circular references when resolving a promise with itself (#71).
72
-
73
- * 2.4.1 (2016-05-03)
74
-
75
- * Fix `some()` not cancelling pending promises when too much input promises
76
- reject (16ff799).
77
-
78
- * 2.4.0 (2016-03-31)
79
-
80
- * Support foreign thenables in `resolve()`.
81
- Any object that provides a `then()` method is now assimilated to a trusted
82
- promise that follows the state of this thenable (#52).
83
- * Fix `some()` and `any()` for input arrays containing not enough items
84
- (#34).
85
-
86
- * 2.3.0 (2016-03-24)
87
-
88
- * Allow cancellation of promises returned by functions working on promise
89
- collections (#36).
90
- * Handle `\Throwable` in the same way as `\Exception` (#51 by @joshdifabio).
91
-
92
- * 2.2.2 (2016-02-26)
93
-
94
- * Fix cancellation handlers called multiple times (#47 by @clue).
95
-
96
- * 2.2.1 (2015-07-03)
97
-
98
- * Fix stack error when resolving a promise in its own fulfillment or
99
- rejection handlers.
100
-
101
- * 2.2.0 (2014-12-30)
102
-
103
- * Introduce new `ExtendedPromiseInterface` implemented by all promises.
104
- * Add new `done()` method (part of the `ExtendedPromiseInterface`).
105
- * Add new `otherwise()` method (part of the `ExtendedPromiseInterface`).
106
- * Add new `always()` method (part of the `ExtendedPromiseInterface`).
107
- * Add new `progress()` method (part of the `ExtendedPromiseInterface`).
108
- * Rename `Deferred::progress` to `Deferred::notify` to avoid confusion with
109
- `ExtendedPromiseInterface::progress` (a `Deferred::progress` alias is
110
- still available for backward compatibility)
111
- * `resolve()` now always returns a `ExtendedPromiseInterface`.
112
-
113
- * 2.1.0 (2014-10-15)
114
-
115
- * Introduce new `CancellablePromiseInterface` implemented by all promises.
116
- * Add new `cancel()` method (part of the `CancellablePromiseInterface`).
117
-
118
- * 2.0.0 (2013-12-10)
119
-
120
- New major release. The goal is to streamline the API and to make it more
121
- compliant with other promise libraries and especially with the new upcoming
122
- [ES6 promises specification](https://github.com/domenic/promises-unwrapping/).
123
-
124
- * Add standalone Promise class.
125
- * Add new `race()` function.
126
- * BC break: Bump minimum PHP version to PHP 5.4.
127
- * BC break: Remove `ResolverInterface` and `PromiseInterface` from
128
- `Deferred`.
129
- * BC break: Change signature of `PromiseInterface`.
130
- * BC break: Remove `When` and `Util` classes and move static methods to
131
- functions.
132
- * BC break: `FulfilledPromise` and `RejectedPromise` now throw an exception
133
- when initialized with a promise instead of a value/reason.
134
- * BC break: `Deferred::resolve()` and `Deferred::reject()` no longer return
135
- a promise.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/react/promise/composer.json DELETED
@@ -1,29 +0,0 @@
1
- {
2
- "name": "react/promise",
3
- "description": "A lightweight implementation of CommonJS Promises/A for PHP",
4
- "license": "MIT",
5
- "authors": [
6
- {"name": "Jan Sorgalla", "email": "jsorgalla@gmail.com"}
7
- ],
8
- "require": {
9
- "php": ">=5.4.0"
10
- },
11
- "require-dev": {
12
- "phpunit/phpunit": "~4.8"
13
- },
14
- "autoload": {
15
- "psr-4": {
16
- "React\\Promise\\": "src/"
17
- },
18
- "files": ["src/functions_include.php"]
19
- },
20
- "autoload-dev": {
21
- "psr-4": {
22
- "React\\Promise\\": "tests/fixtures"
23
- }
24
- },
25
- "keywords": [
26
- "promise",
27
- "promises"
28
- ]
29
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/react/promise/phpunit.xml.dist DELETED
@@ -1,28 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
-
3
- <phpunit backupGlobals="false"
4
- backupStaticAttributes="false"
5
- colors="true"
6
- convertErrorsToExceptions="true"
7
- convertNoticesToExceptions="true"
8
- convertWarningsToExceptions="true"
9
- processIsolation="false"
10
- stopOnFailure="false"
11
- syntaxCheck="false"
12
- bootstrap="tests/bootstrap.php"
13
- >
14
- <testsuites>
15
- <testsuite name="Promise Test Suite">
16
- <directory>./tests/</directory>
17
- </testsuite>
18
- </testsuites>
19
-
20
- <filter>
21
- <whitelist>
22
- <directory>./src/</directory>
23
- <exclude>
24
- <file>./src/functions_include.php</file>
25
- </exclude>
26
- </whitelist>
27
- </filter>
28
- </phpunit>